63 lines
1.8 KiB
Go
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
|
|
//}
|