package sincronizacionDatos import ( "daemonService/internal/models" sd "daemonService/internal/models/sincronizacionDatos/request" "encoding/xml" "fmt" ) func GenerarSOAPRequest(s *models.ServiceModel, solicitud sd.SolicitudSincronizacion) (string, error) { // Validar datos de entrada //if err := validarSolicitud(solicitud); err != nil { // return "", err //} envelope := sd.SOAPRequestEnvelope{ XmlnsSoapenv: "http://schemas.xmlsoap.org/soap/envelope/", XmlnsSiat: "https://siat.impuestos.gob.bo/", Header: &sd.SOAPRequestHeader{}, Body: sd.SOAPRequestBody{ Operacion: sd.OperacionXML{ XMLName: xml.Name{Local: "siat:" + s.TagNames}, Solicitud: sd.SolicitudSincronizacion{ CodigoAmbiente: solicitud.CodigoAmbiente, CodigoPuntoVenta: solicitud.CodigoPuntoVenta, CodigoSistema: solicitud.CodigoSistema, CodigoSucursal: solicitud.CodigoSucursal, Cuis: solicitud.Cuis, Nit: solicitud.Nit, }, }, }, } // Se genera el XML con indentación para mayor legibilidad xmlBytes, err := xml.MarshalIndent(envelope, "", " ") if err != nil { return "", fmt.Errorf("error al generar XML: %w", err) } // Se concatena la cabecera XML soapRequest := xml.Header + string(xmlBytes) return soapRequest, nil } // validarSolicitud verifica que los campos requeridos estén presentes en la solicitud //func validarSolicitud(solicitud sd.SolicitudSincronizacionLeyendas) error { // if solicitud.CodigoSistema == "" { // return fmt.Errorf("código de sistema no puede estar vacío") // } // if solicitud.Nit == "0" { // return fmt.Errorf("NIT no puede ser cero") // } // if solicitud.Cuis == "" { // return fmt.Errorf("CUIS no puede estar vacío") // } // if solicitud.CodigoAmbiente == "0" { // return fmt.Errorf("código de ambiente no puede ser cero") // } // return nil //}