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

90 lines
4.0 KiB
Go

package models
import (
"time"
"github.com/shopspring/decimal"
)
type Factura struct {
ID string `json:"transaccion_id"`
CI string `json:"ci"`
NombreCliente string `json:"nombre_cliente"`
NumeroFactura string `json:"numero_factura"`
FechaEmision time.Time `json:"fecha_emision"`
Subtotal decimal.Decimal `json:"subtotal"`
IVA decimal.Decimal `json:"iva"`
Total decimal.Decimal `json:"total"`
Estado string `json:"estado"`
Cuf string `json:"cuf"`
UrlFactura string `json:"url"`
CodigoAutorizacion string `json:"codigo_autorizacion"`
FechaCreacion time.Time `json:"fecha_creacion"`
}
type DLQMessage struct {
ID int `json:"-"`
TransaccionID string `json:"transaccion_id"`
Mensaje string `json:"mensaje"`
FechaCreacion time.Time `json:"fecha_creacion"`
Reprocesado bool `json:"reprocesado"`
}
type RequestFacturacionModel struct {
Cabecera Cabecera `json:"cabecera"`
Detalle []Detalle `json:"detalle"`
}
type Cabecera struct {
NitEmisor int64 `json:"nitEmisor"`
RazonSocialEmisor string `json:"razonSocialEmisor"`
Municipio string `json:"municipio"`
Telefono *string `json:"telefono,omitempty"`
NumeroFactura string `json:"numeroFactura"`
CodigoSucursal int `json:"codigoSucursal"`
Direccion string `json:"direccion"`
CodigoPuntoVenta *int `json:"codigoPuntoVenta,omitempty"`
FechaEmision string `json:"fechaEmision"` // formato: "2021-10-07T09:01:24.178"
NombreRazonSocial *string `json:"nombreRazonSocial,omitempty"`
CodigoTipoDocumentoIdentidad int `json:"codigoTipoDocumentoIdentidad"`
NumeroDocumento string `json:"numeroDocumento"`
Complemento *string `json:"complemento,omitempty"`
CodigoCliente string `json:"codigoCliente"`
CodigoMetodoPago int `json:"codigoMetodoPago"`
NumeroTarjeta *string `json:"numeroTarjeta,omitempty"` // solo si MetodoPago == 2
MontoTotal float64 `json:"montoTotal"`
MontoTotalSujetoIva float64 `json:"montoTotalSujetoIva"`
TipoCambio float64 `json:"tipoCambio"`
CodigoMoneda int `json:"codigoMoneda"`
MontoTotalMoneda float64 `json:"montoTotalMoneda"`
MontoGiftCard *string `json:"montoGiftCard,omitempty"`
DescuentoAdicional *float64 `json:"descuentoAdicional,omitempty"`
CodigoExcepcion *int `json:"codigoExcepcion,omitempty"`
Cafc *string `json:"cafc,omitempty"`
Leyenda string `json:"leyenda"`
Usuario string `json:"usuario"`
CodigoDocumentoSector int `json:"codigoDocumentoSector"`
TipoEmision int `json:"tipoEmision" xml:"tipoEmision"`
TipoFactura int `json:"tipoFactura" xml:"tipoFactura"`
}
type Detalle struct {
ActividadEconomica string `json:"actividadEconomica"`
CodigoProductoSin int `json:"codigoProductoSin"`
CodigoProducto string `json:"codigoProducto"`
Descripcion string `json:"descripcion"`
Cantidad int `json:"cantidad"`
UnidadMedida int `json:"unidadMedida"`
PrecioUnitario float64 `json:"precioUnitario"`
MontoDescuento *float64 `json:"montoDescuento,omitempty"`
SubTotal float64 `json:"subTotal"`
NumeroSerie *string `json:"numeroSerie,omitempty"`
NumeroImei *string `json:"numeroImei,omitempty"`
}
type FacturaEventModel struct {
TransaccionID string `json:"transaccion_id"`
Estado string `json:"estado"`
Payload RequestFacturacionModel `json:"payload"`
}