Facturacion/daemonService/internal/services/procesar/codigoGenerarSoapRequest.go
2025-05-17 11:36:26 -04:00

108 lines
3.4 KiB
Go

package procesar
import (
"daemonService/internal/models/obtencionCodigos"
oc "daemonService/internal/models/obtencionCodigos/request"
"encoding/xml"
"fmt"
)
func codigoGenerarSOAPRequest(s obtencionCodigos.CuisServiceModel, solicitud oc.SolicitudCuisCufd) (string, error) {
var xmlBytes []byte
var err error
var envelope oc.SOAPRequestEnvelope
var envelopeCufd oc.SOAPRequestEnvelopeCufd
switch solicitud.Cuis {
case "":
envelope = oc.SOAPRequestEnvelope{
XmlnsSoapenv: "http://schemas.xmlsoap.org/soap/envelope/",
XmlnsSiat: "https://siat.impuestos.gob.bo/",
Header: &oc.SOAPRequestHeader{},
Body: oc.SOAPRequestBody{
Operacion: oc.OperacionXML{
XMLName: xml.Name{Local: "siat:" + s.TagNames},
Solicitud: oc.SolicitudCuisCufd{
CodigoAmbiente: solicitud.CodigoAmbiente,
CodigoModalidad: solicitud.CodigoModalidad,
CodigoPuntoVenta: solicitud.CodigoPuntoVenta,
CodigoSistema: solicitud.CodigoSistema,
CodigoSucursal: solicitud.CodigoSucursal,
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)
}
break
default:
envelopeCufd = oc.SOAPRequestEnvelopeCufd{
XmlnsSoapenv: "http://schemas.xmlsoap.org/soap/envelope/",
XmlnsSiat: "https://siat.impuestos.gob.bo/",
Header: &oc.SOAPRequestHeaderCufd{},
Body: oc.SOAPRequestBodyCufd{
Operacion: oc.OperacionXMLCufd{
XMLName: xml.Name{Local: "siat:" + s.TagNamesCufd},
Solicitud: oc.SolicitudCuisCufd{
CodigoAmbiente: solicitud.CodigoAmbiente,
CodigoModalidad: solicitud.CodigoModalidad,
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(envelopeCufd, "", " ")
if err != nil {
return "", fmt.Errorf("error al generar XML: %w", err)
}
break
}
// Se concatena la cabecera XML
soapRequest := xml.Header + string(xmlBytes)
return soapRequest, nil
}
//func codigoGenerarSOAPRequest(s obtencionCodigos.CuisServiceModel, solicitud oc.SolicitudCuisCufd) (string, error) {
//
// envelope := oc.SOAPRequestEnvelope{
// XmlnsSoapenv: "http://schemas.xmlsoap.org/soap/envelope/",
// XmlnsSiat: "https://siat.impuestos.gob.bo/",
// Header: &oc.SOAPRequestHeader{},
// Body: oc.SOAPRequestBody{
// Operacion: oc.OperacionXML{
// XMLName: xml.Name{Local: "siat:" + s.TagNames},
// Solicitud: oc.SolicitudCuisCufd{
// CodigoAmbiente: solicitud.CodigoAmbiente,
// CodigoModalidad: solicitud.CodigoModalidad,
// CodigoPuntoVenta: solicitud.CodigoPuntoVenta,
// CodigoSistema: solicitud.CodigoSistema,
// CodigoSucursal: solicitud.CodigoSucursal,
// 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
//}