LibreDTE

BoletaExentaBuilder extends AbstractDocumentoBuilder
in package
uses BoletasNormalizationTrait, DetalleNormalizationTrait, DescuentosRecargosNormalizationTrait, IvaMntTotalNormalizationTrait

Constructor ("builder") del documento boleta exenta.

Table of Contents

Properties

$dataProvider  : DataProviderInterface
Proveedor de datos.
$documentoClass  : string
Clase del documento que este "builder" construirá.
$documentoBaseForNewBuilds  : AbstractDocumento
Instancia vacía del documento.
$impuestosAdicionalesRepository  : ImpuestosAdicionalesRepository
Repositorio de impuestos adicionales.
$normalizer  : DocumentoNormalizer
Normalizador de datos del documento a construir.
$sanitizer  : DocumentoSanitizer
Sanitizador de datos del documento a construir.
$tipoDocumento  : DocumentoTipo
Tipo de documento que normalizará esta instancia del normalizador.

Methods

__construct()  : mixed
Constructor de la clase.
applyDocumentoNormalization()  : array<string|int, mixed>
Normaliza los datos con reglas específicas para el tipo de documento.
build()  : AbstractDocumento
Construye el documentro tributario electrónico a partir de un arreglo con los datos del documento.
loadFromXml()  : AbstractDocumento
Construye el documento tributario electrónico a partir de los datos de un string XML.
applyBoletasNormalization()  : array<string|int, mixed>
Normaliza las boletas electrónicas.
applyDescuentosRecargosNormalization()  : array<string|int, mixed>
Aplica los descuentos y recargos generales respectivos a los montos que correspondan según el indicador del descuento o recargo.
applyDetalleNormalization()  : array<string|int, mixed>
Normaliza los detalles del documento.
applyIvaMntTotalNormalization()  : array<string|int, mixed>
Calcula el monto del IVA y el monto total del documento a partir del monto neto y la tasa de IVA si es que existe.
calcularNetoIVA()  : array<string|int, mixed>
Obtiene el monto neto y el IVA de ese neto a partir de un monto total.
getImpuestosAdicionalesRepository()  : ImpuestosAdicionalesRepository
Entrega el repositorio de impuestos adicionales que se pueden usar en un documento tributario.
getTipoDocumento()  : DocumentoTipo
Entrega el tipo de documento que este "builder" puede construir.
round()  : int|float
Redondea valores asociados a un tipo de moneda.

Properties

$documentoClass

Clase del documento que este "builder" construirá.

protected string $documentoClass = \libredte\lib\Core\Sii\Dte\Documento\BoletaExenta::class

$documentoBaseForNewBuilds

Instancia vacía del documento.

private AbstractDocumento $documentoBaseForNewBuilds

Se crea en el constructor y se deja vacía en el "builder". Luego, en cada llamada a build() esta instancia se clona para construir un nuevo documento.

Methods

applyDocumentoNormalization()

Normaliza los datos con reglas específicas para el tipo de documento.

public applyDocumentoNormalization(array<string|int, mixed> $data) : array<string|int, mixed>
Parameters
$data : array<string|int, mixed>

Arreglo con los datos del documento a normalizar.

Return values
array<string|int, mixed>

Arreglo con los datos normalizados.

build()

Construye el documentro tributario electrónico a partir de un arreglo con los datos del documento.

public build(array<string|int, mixed> $data[, bool $normalize = true ]) : AbstractDocumento
Parameters
$data : array<string|int, mixed>

Arreglo con los datos del documento a crear.

$normalize : bool = true

Si se deben normalizar los datos del arreglo.

Return values
AbstractDocumento

Documento tributario construído.

loadFromXml()

Construye el documento tributario electrónico a partir de los datos de un string XML.

public loadFromXml(string $xml) : AbstractDocumento

Este método es para cargar XML de documentos completos. O sea, con todos sus datos (normalizados), el documento timbrado (con su CAF asociado) y con su firma electrónica.

Parameters
$xml : string

String del XML del documento con todos sus datos.

Return values
AbstractDocumento

Instancia del documento construído con el XML.

applyBoletasNormalization()

Normaliza las boletas electrónicas.

protected applyBoletasNormalization(array<string|int, mixed> $data) : array<string|int, mixed>
Parameters
$data : array<string|int, mixed>

Arreglo con los datos del documento a normalizar.

Return values
array<string|int, mixed>

Arreglo con los datos normalizados.

applyDescuentosRecargosNormalization()

Aplica los descuentos y recargos generales respectivos a los montos que correspondan según el indicador del descuento o recargo.

protected applyDescuentosRecargosNormalization(array<string|int, mixed> $data) : array<string|int, mixed>
Parameters
$data : array<string|int, mixed>

Arreglo con los datos del documento a normalizar.

Tags
todo

Revisar si existen casos de boletas afectas con algún item exento donde el descuento se podría estar aplicando mal.

Return values
array<string|int, mixed>

Arreglo con los datos normalizados.

applyDetalleNormalization()

Normaliza los detalles del documento.

protected applyDetalleNormalization(array<string|int, mixed> $data) : array<string|int, mixed>
Parameters
$data : array<string|int, mixed>

Arreglo con los datos del documento a normalizar.

Tags
todo

Revisar cómo se aplican descuentos y recargos. ¿Debería ser un porcentaje del monto original?.

Return values
array<string|int, mixed>

Arreglo con los datos normalizados.

applyIvaMntTotalNormalization()

Calcula el monto del IVA y el monto total del documento a partir del monto neto y la tasa de IVA si es que existe.

protected applyIvaMntTotalNormalization(array<string|int, mixed> $data) : array<string|int, mixed>

WARNING: Si es una boleta y tiene impuestos adicionales, no se consideran los casos de esos impuestos adicionales. Se deberán indicar los campos de MntNeto e IVA y no usar esta parte de la normalización.

WARNING: Si el valor IndMntNeto es 2 indica que los montos de las líneas son netos en cuyo caso no aplica el cálculo de neto e IVA a partir del total y deberá venir informado de otra forma (aun no definido).

Parameters
$data : array<string|int, mixed>

Arreglo con los datos del documento a normalizar.

Tags
todo

Revisar si los WARNING de la descripción del método realmente son un problema y, si lo son, corregirlos.

Return values
array<string|int, mixed>

Arreglo con los datos normalizados.

calcularNetoIVA()

Obtiene el monto neto y el IVA de ese neto a partir de un monto total.

protected calcularNetoIVA(int $total[, int|false|null $tasa = null ]) : array<string|int, mixed>

NOTE: El IVA obtenido puede no ser el NETO * (TASA / 100). Se calcula el monto neto y luego se obtiene el IVA haciendo la resta entre el total y el neto. Hay casos de borde que generan problemas como:

  • BRUTO: 680 => NETO: 571 e IVA: 108 => TOTAL: 679
  • BRUTO: 86710 => NETO: 72866 e IVA: 13845 => TOTAL: 86711

Estos casos son "normales", pues por aproximaciones "no da".

Parameters
$total : int

Total que representa el monto neto más el IVA.

$tasa : int|false|null = null

Tasa del IVA.

Return values
array<string|int, mixed>

Arreglo con el neto y el IVA en índices 0 y 1.

round()

Redondea valores asociados a un tipo de moneda.

protected round(int|float $amount[, string|null|false $currency = null ][, int $decimals = 4 ]) : int|float

Si los valores son en pesos chilenos se redondea sin decimales. Si los valores están en otro tipo de moneda se mantienen los decimales, por defecto se mantienen 4 decimales.

Parameters
$amount : int|float

Valor que se desea redondear.

$currency : string|null|false = null

La moneda en la que está el valor.

$decimals : int = 4

Cantidad de decimales a mantener cuando la moneda no es peso chileno.

Return values
int|float

Valor redondeado según la moneda y decimales a usar.


        
On this page

Search results