Skip to content

Commit

Permalink
Se crea parseador de documentos Nota de credito
Browse files Browse the repository at this point in the history
  • Loading branch information
leip1493 committed Oct 11, 2019
1 parent ea117ee commit 91ea4a8
Show file tree
Hide file tree
Showing 8 changed files with 1,258 additions and 35 deletions.
20 changes: 18 additions & 2 deletions FacturaParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public function getDetalles(){
$detalle = $this->getNodes($this->dom, 'detalle');
$detalleHeaders = [
'codigoPrincipal', 'descripcion', 'cantidad', 'precioUnitario', 'precioSinSubsidio', 'descuento', 'precioTotalSinImpuesto',
'impuestos'
'impuestos', 'detallesAdicionales'
];
$detallesContent = [];
foreach ($detalle as $index => $d) {
Expand All @@ -47,12 +47,12 @@ public function getDetalles(){
$rowDetalle[$header] = $this->getNodeData($d, $header, 0);
}
$rowDetalle['impuestos'] = $this->getDetallesImpuestos($index);
$rowDetalle['detallesAdicionales'] = $this->getDetallesAdicionales($index);
$detallesContent[$index] = $rowDetalle;
}
return $detallesContent;
}


////////////////////////////////////////
// INFO FACTURA - TOTAL CON IMPUESTOS //
////////////////////////////////////////
Expand Down Expand Up @@ -115,4 +115,20 @@ private function getDetallesImpuestos($position){
return $impuestoContent;
}

/////////////////////////////////////
// DETALLES - DETALLES ADICIONALES //
/////////////////////////////////////
private function getDetallesAdicionales($position){
$infoAdicional = $this->getNode($this->dom, 'detallesAdicionales', $position);
$campoAdicional = $this->getNodes($this->dom, 'detAdicional');
$detallesContent = [];
foreach ($campoAdicional as $index => $campo) {
$detallesContent[$index] = [
'name' => $campo->getAttribute('nombre'),
'value' => $campo->getAttribute('valor')
];
}
return $detallesContent;
}

}
67 changes: 65 additions & 2 deletions NotaCreditoParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,73 @@ public function getInfoNotaCredito(){
foreach ($infoFacturaContent as $content) {
$infoFacturaData[$content] = $this->getNodeData($infoFactura, $content, 0);
}
// $infoFacturaData['totalConImpuestos'] = getInfoFacturaImpuestos();
// $infoFacturaData['pagos'] = getInfoFacturaPagos();
$infoFacturaData['totalConImpuestos'] = $this->getInfoNotaCreditoImpuestos();
return $infoFacturaData;
}

public function getDetalles(){
$detalles = $this->getNode($this->dom, 'detalles', 0);
$detalle = $this->getNodes($this->dom, 'detalle');
$detalleHeaders = [
'codigoInterno', 'descripcion', 'cantidad', 'precioUnitario', 'descuento', 'precioTotalSinImpuesto', 'impuestos',
];
$detallesContent = [];
foreach ($detalle as $index => $d) {
$rowDetalle = [];
foreach ($detalleHeaders as $header) {
$rowDetalle[$header] = $this->getNodeData($d, $header, 0);
}
$rowDetalle['impuestos'] = $this->getDetallesImpuestos($index);
$detallesContent[$index] = $rowDetalle;
}
return $detallesContent;
}
public function getInfoAdicional(){
$infoAdicional = $this->getNode($this->dom, 'infoAdicional', 0);
$campoAdicional = $this->getNodes($this->dom, 'campoAdicional');
$detallesContent = [];
foreach ($campoAdicional as $index => $campo) {
$detallesContent[$index] = [
'name' => $campo->getAttribute('nombre'),
'value' => $campo->nodeValue
];
}
return $detallesContent;
}
// PRIVATE
private function getInfoNotaCreditoImpuestos(){
$totalConImpuestos = $this->getNode($this->dom, 'totalConImpuestos', 0);
$totalImpuestos = $this->getNodes($this->dom, 'totalImpuesto');
$totalImpuestoHeaders = [
'codigo', 'codigoPorcentaje', 'baseImponible', 'valor'
];
$totalImpuestoContent = [];
foreach ($totalImpuestos as $index => $totalImpuesto) {
$rowImpuesto = [];
foreach ($totalImpuestoHeaders as $header) {
$rowImpuesto[$header] = $this->getNodeData($totalImpuesto, $header, 0);
}
$totalImpuestoContent[$index] = $rowImpuesto;
}

return $totalImpuestoContent;
}
private function getDetallesImpuestos($position){
$impuestos = $this->getNode($this->dom, 'impuestos', $position);
$impuesto = $this->getNodes($this->dom, 'impuesto');
$impuestoHeaders = [
'codigo', 'codigoPorcentaje', 'tarifa', 'baseImponible', 'valor'
];
$impuestoContent = [];
foreach ($impuesto as $index => $i) {
$rowImpuesto = [];
foreach ($impuestoHeaders as $header) {
$rowImpuesto[$header] = $this->getNodeData($i, $header, 0);
}
$impuestoContent[$index] = $rowImpuesto;
}
return $impuestoContent;
}


}
4 changes: 4 additions & 0 deletions XmlParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ public function __construct(DOMDocument $dom){
$this->dom = $dom;
}

const FACTURA = '01';
const NOTA_CREDITO = '04';
const COMPROBANTE_RETENCION = '07';

/////////////////////
// INFO TRIBUTARIA //
/////////////////////
Expand Down
File renamed without changes.
82 changes: 82 additions & 0 deletions factura2.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<factura id="comprobante" version="1.1.0">
<infoTributaria>
<ambiente>2</ambiente>
<tipoEmision>1</tipoEmision>
<razonSocial>ECOSYNC S.A.</razonSocial>
<nombreComercial>ECOSYNC S.A.</nombreComercial>
<ruc>1792063761471</ruc>
<claveAcceso>0509201901179206376147120020052050754120054076917</claveAcceso>
<codDoc>01</codDoc>
<estab>002</estab>
<ptoEmi>005</ptoEmi>
<secuencial>205075412</secuencial>
<dirMatriz>6 de Diciembre N32-525 Belgica El Batan</dirMatriz>
</infoTributaria>
<infoFactura>
<fechaEmision>05/09/2019</fechaEmision>
<dirEstablecimiento>6 de Diciembre N32-525 Belgica El Batan</dirEstablecimiento>
<contribuyenteEspecial>571</contribuyenteEspecial>
<obligadoContabilidad>SI</obligadoContabilidad>
<tipoIdentificacionComprador>04</tipoIdentificacionComprador>
<razonSocialComprador>ROBERTO AMAGUAYO</razonSocialComprador>
<identificacionComprador>0602775405001</identificacionComprador>
<direccionComprador> </direccionComprador>
<totalSinImpuestos>17.96</totalSinImpuestos>
<totalSubsidio>6.97</totalSubsidio>
<totalDescuento>0.00</totalDescuento>
<totalConImpuestos>
<totalImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<baseImponible>17.96</baseImponible>
<valor>2.15</valor>
</totalImpuesto>
</totalConImpuestos>
<propina>0</propina>
<importeTotal>20.11</importeTotal>
<moneda>DOLAR</moneda>
<pagos>
<pago>
<formaPago>20</formaPago>
<total>20.11</total>
<plazo>1</plazo>
<unidadTiempo>dias</unidadTiempo>
</pago>
</pagos>
</infoFactura>
<detalles>
<detalle>
<codigoPrincipal>Extra</codigoPrincipal>
<codigoAuxiliar>Extra</codigoAuxiliar>
<descripcion>Extra</descripcion>
<cantidad>10.868900</cantidad>
<precioUnitario>1.652000</precioUnitario>
<precioSinSubsidio>2.224696</precioSinSubsidio>
<descuento>0.00</descuento>
<precioTotalSinImpuesto>17.96</precioTotalSinImpuesto>
<detallesAdicionales>
<detAdicional nombre="Unidad" valor="Unidad">
</detAdicional>
<detAdicional nombre="PorcentajeDescuento" valor="0">
</detAdicional>
</detallesAdicionales>
<impuestos>
<impuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<tarifa>12.00</tarifa>
<baseImponible>17.96</baseImponible>
<valor>2.15</valor>
</impuesto>
</impuestos>
</detalle>
</detalles>
<infoAdicional>
<campoAdicional nombre="Direccion"> </campoAdicional>
<campoAdicional nombre="Email">[email protected]</campoAdicional>
<campoAdicional nombre="FechaVencimiento">06/09/2019</campoAdicional>
<campoAdicional nombre="Vendedor">isla001 isla001</campoAdicional>
<campoAdicional nombre="Ciudad">QUITO</campoAdicional>
<campoAdicional nombre="CondPago">1 DIA</campoAdicional>
</infoAdicional>
</factura>
Loading

0 comments on commit 91ea4a8

Please sign in to comment.