package facturacionOperaciones

import "encoding/xml"

// SolicitudRegistroPuntoVenta representa los datos necesarios para registrar un punto de venta
type SolicitudRegistroPuntoVenta struct {
	CodigoAmbiente       string `xml:"codigoAmbiente"`
	CodigoModalidad      string `xml:"codigoModalidad"`
	CodigoSistema        string `xml:"codigoSistema"`
	CodigoSucursal       string `xml:"codigoSucursal"`
	CodigoTipoPuntoVenta string `xml:"codigoTipoPuntoVenta"`
	CUIS                 string `xml:"cuis"`
	Descripcion          string `xml:"descripcion"`
	NIT                  string `xml:"nit"`
	NombrePuntoVenta     string `xml:"nombrePuntoVenta"`
}

// RegistroPuntoVentaRequest es la estructura de petición SOAP
type RegistroPuntoVentaRequest struct {
	XMLName xml.Name `xml:"soapenv:Envelope"`
	SoapEnv string   `xml:"xmlns:soapenv,attr"`
	Siat    string   `xml:"xmlns:siat,attr"`
	Body    struct {
		RegistroPuntoVenta struct {
			Solicitud SolicitudRegistroPuntoVenta
		} `xml:"siat:registroPuntoVenta"`
	} `xml:"soapenv:Body"`
}

// Mensaje representa un mensaje de la respuesta SOAP
type Mensaje struct {
	Codigo      string `xml:"codigo"`
	Descripcion string `xml:"descripcion"`
}

// RespuestaRegistroPuntoVenta representa la respuesta del servicio SOAP
type RespuestaRegistroPuntoVenta struct {
	CodigoPuntoVenta string    `xml:"codigoPuntoVenta"`
	MensajesList     []Mensaje `xml:"mensajesList"`
	Transaccion      string    `xml:"transaccion"`
}

// RegistroPuntoVentaResponse es la estructura de respuesta SOAP
type RegistroPuntoVentaResponse struct {
	XMLName xml.Name `xml:"Envelope"`
	Body    struct {
		RegistroPuntoVentaResponse struct {
			Respuesta RespuestaRegistroPuntoVenta `xml:"RespuestaRegistroPuntoVenta"`
		} `xml:"registroPuntoVentaResponse"`
	} `xml:"Body"`
}
