LibreDTE

AbstractLibroComprasVentasArrayLoaderStrategy extends AbstractArrayLoaderStrategy
in package

AbstractYes

Estrategia base de carga desde array para Libro de Compras/Ventas.

Normaliza cada registro de detalle según el esquema LibroCV_v10.xsd: añade valores por defecto, calcula IVA cuando falta, normaliza estructuras de IVA no recuperable y otros impuestos, y calcula el monto total.

Table of Contents

Constants

AMOUNTS  : array<int, string> = ['MntExe', 'MntNeto', 'MntIVA', 'MntActivoFijo'...
Campos del detalle que son montos: números enteros.
RATES  : array<int, string> = ['TasaImp', 'FctProp']
Campos del detalle que son tasas o factores: números.

Properties

$repositoryManager  : RepositoryManagerInterface

Methods

__construct()  : mixed
load()  : BookBagInterface
{@inheritDoc}
normalize()  : BookBagInterface
{@inheritDoc}
normalizeCaratula()  : array<string, mixed>
Normaliza la carátula del libro.
normalizeDetalle()  : array<string, mixed>
Normaliza un registro del detalle del libro.
assertNumbers()  : void
Verifica que los montos y las tasas de una fila sean números.
calcularIvaRetenidoDetalle()  : int
Calcula el IVA retenido del detalle.
percentOfNet()  : int
Calcula el porcentaje de la tasa sobre el monto neto del detalle, redondeado.

Constants

AMOUNTS

Campos del detalle que son montos: números enteros.

private array<int, string> AMOUNTS = ['MntExe', 'MntNeto', 'MntIVA', 'MntActivoFijo', 'MntIVAActivoFijo', 'IVAUsoComun', 'IVAFueraPlazo', 'IVAPropio', 'IVATerceros', 'Ley18211', 'MntSinCred', 'IVARetTotal', 'IVARetParcial', 'CredEC', 'DepEnvase', 'MntTotal', 'IVANoRetenido', 'MntNoFact', 'MntPeriodo', 'PsjNac', 'PsjInt', 'TabPuros', 'TabCigarrillos', 'TabElaborado', 'ImpVehiculo']

Properties

Methods

normalizeDetalle()

Normaliza un registro del detalle del libro.

protected normalizeDetalle(array<string, mixed> $detalle) : array<string, mixed>

Normaliza un registro de detalle del libro de compra/venta.

El orden de las claves determina el orden de los elementos en el XML, que debe respetar el esquema LibroCV_v10.xsd.

Los montos son números enteros y las tasas son números: el texto que llega de un CSV se acepta si se puede convertir, y uno que no es un número es un error que dice en qué documento y en qué campo está. Los valores del detalle no se reemplazan por los convertidos.

Parameters
$detalle : array<string, mixed>
Return values
array<string, mixed>

assertNumbers()

Verifica que los montos y las tasas de una fila sean números.

private assertNumbers(array<string|int, mixed> $row, array<int, string> $amounts, array<int, string> $rates) : void

Un valor que no está (false, vacío o null) no se verifica. Si uno no es un número, el error dice en qué documento y en qué campo está.

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

Fila con TpoDoc y NroDoc del documento.

$amounts : array<int, string>

Campos que son montos enteros.

$rates : array<int, string>

Campos que son tasas o factores.

calcularIvaRetenidoDetalle()

Calcula el IVA retenido del detalle.

private calcularIvaRetenidoDetalle(array<string, mixed> $detalle) : int

Se calcula revisando los "otros impuestos" y sumando todos aquellos que son retención de IVA.

Parameters
$detalle : array<string, mixed>

El detalle del libro de compra/venta.

Return values
int —

El IVA retenido del detalle.

percentOfNet()

Calcula el porcentaje de la tasa sobre el monto neto del detalle, redondeado.

private percentOfNet(array<string, mixed> $detalle) : int
Parameters
$detalle : array<string, mixed>
Return values
int
On this page

Search results