AbstractLibroComprasVentasArrayLoaderStrategy
extends AbstractArrayLoaderStrategy
in package
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']
RATES
Campos del detalle que son tasas o factores: números.
private
array<int, string>
RATES
= ['TasaImp', 'FctProp']
Properties
$repositoryManager read-only
private
RepositoryManagerInterface
$repositoryManager
Methods
__construct()
public
__construct(RepositoryManagerInterface $repositoryManager) : mixed
Parameters
- $repositoryManager : RepositoryManagerInterface
load()
{@inheritDoc}
public
load(BookBagInterface $bag) : BookBagInterface
Parameters
- $bag : BookBagInterface
Return values
BookBagInterfacenormalize()
{@inheritDoc}
protected
normalize(BookBagInterface $bag) : BookBagInterface
Parameters
- $bag : BookBagInterface
Return values
BookBagInterfacenormalizeCaratula()
Normaliza la carátula del libro.
protected
normalizeCaratula(BookBagInterface $bag) : array<string, mixed>
Normaliza la carátula del libro de compra/venta.
Parameters
- $bag : BookBagInterface
Return values
array<string, mixed>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
TpoDocyNroDocdel 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>