2025-05-17 11:36:26 -04:00

63 lines
1.8 KiB
Go

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
//}