package response

import (
	"encoding/xml"
)

// Estructuras para la respuesta SOAP.
type SoapEnvelopePuntoVenta struct {
	XMLName xml.Name           `xml:"Envelope"`
	Body    SoapBodyPuntoVenta `xml:"Body"`
}

type SoapBodyPuntoVenta struct {
	Response SincronizarResponsePuntoVenta `xml:"sincronizarParametricaTipoPuntoVentaResponse"`
}

type SincronizarResponsePuntoVenta struct {
	RespuestaLista RespuestaListaParametricasPuntoVenta `xml:"RespuestaListaParametricas"`
}

type RespuestaListaParametricasPuntoVenta struct {
	Transaccion  bool         `xml:"transaccion"`
	ListaCodigos []PuntoVenta `xml:"listaCodigos"`
}

type PuntoVenta struct {
	CodigoClasificador string `xml:"codigoClasificador" json:"codigo"`
	Descripcion        string `xml:"descripcion" json:"descripcion"`
}

// Implementaciones para cada tipo de envelope
func (e SoapEnvelopePuntoVenta) IsTransactionSuccessful() bool {
	return e.Body.Response.RespuestaLista.Transaccion
}

func (e SoapEnvelopePuntoVenta) GetData() []PuntoVenta {
	return e.Body.Response.RespuestaLista.ListaCodigos
}
