Commit 59915aa2 by Angel MAS

calcula impuestos

parent ef060a8c
......@@ -7,42 +7,42 @@ use GuzzleHttp\Client as GuzzleClient;
class Factura
{
private $concepto;
private $listaConceptos;
private $receptor;
private $impuesto;
private $emisor;
private $Serie;
private $Folio;
private $Fecha;
private $FormaPago;
private $CondicionesDePago;
private $SubTotal;
private $Descuento;
private $Moneda;
private $TipoCambio;
private $Total;
private $TipoDeComprobante;
private $MetodoPago;
private $LugarExpedicion;
private $LeyendaFolio;
private $data;
public function __construct(
FacturaConcepto $concepto,
FacturaConceptoLista $listaConceptos,
FacturaReceptor $receptor,
FacturaImpuesto $impuesto,
FacturaEmisor $emisor)
{
$this->concepto = $concepto;
$this->listaConceptos = $listaConceptos;
$this->receptor = $receptor;
$this->impuesto = $impuesto;
$this->emisor = $emisor;
}
private $concepto;
private $listaConceptos;
private $receptor;
private $impuesto;
private $emisor;
private $Serie;
private $Folio;
private $Fecha;
private $FormaPago;
private $CondicionesDePago;
private $SubTotal;
private $Descuento;
private $Moneda;
private $TipoCambio;
private $Total;
private $TipoDeComprobante;
private $MetodoPago;
private $LugarExpedicion;
private $LeyendaFolio;
private $data;
public function __construct(
FacturaConcepto $concepto,
FacturaConceptoLista $listaConceptos,
FacturaReceptor $receptor,
FacturaImpuesto $impuesto,
FacturaEmisor $emisor)
{
$this->concepto = $concepto;
$this->listaConceptos = $listaConceptos;
$this->receptor = $receptor;
$this->impuesto = $impuesto;
$this->emisor = $emisor;
}
/**
......@@ -51,7 +51,7 @@ class Factura
public function concepto()
{
return $this->concepto;
return $this->concepto;
}
......@@ -60,7 +60,7 @@ class Factura
*/
public function listaConceptos()
{
return $this->listaConceptos;
return $this->listaConceptos;
}
......@@ -69,7 +69,7 @@ class Factura
*/
public function receptor()
{
return $this->receptor;
return $this->receptor;
}
......@@ -78,20 +78,20 @@ class Factura
*/
public function impuesto()
{
return $this->impuesto;
return $this->impuesto;
}
/**
* @var FacturaEmisor $emisro
*/
public function emisor()
{
return $this->emisor;
}
public function emisor()
{
return $this->emisor;
}
/**
* Consulta el numero de creditos restantes
* @return @array [mensaje, creditos, codigo] respuesta de la api
......@@ -110,6 +110,43 @@ class Factura
return $data;
}
public function enviar()
{
$res = null;
$data_cfdi = [];
try {
$data = $this->getData();
$part_headers = ['Accept' => 'application/json', 'jsoncfdi' => json_encode($data) ];
$headers = array_merge( $this->credenciales(), $part_headers);
$randomkey = rand(5, 9999999999999999);
$client = new GuzzleClient();
$res = $client->request('POST', $this->base_url().'/cfdi/generar/'.$randomkey, [
'headers' => $headers
]);
if ($res) {
$respuesta = $res->getBody()->getContents();
$data = json_decode($respuesta, true);
$data_cfdi = $data;
} else {
return "Error api";
}
} catch (\GuzzleHttp\Exception\ClientException $e) {
//dd($e->getResponse()->getBody()->getContents());
$error = json_decode($e->getResponse()->getBody()->getContents());
$error = (array)$error;
$data_cfdi = $error;
}
return $data_cfdi;
}
/**
* Obtiene la url base de la api
......@@ -135,6 +172,18 @@ class Factura
return $headers;
}
public function precioSinIva($precioConIva)
{
$data = [];
$precioSin = ($precioConIva * 100) / 116;
$iva = $precioSin * 0.16000;
$data = ['precioSin' => $precioSin, 'iva' => $iva];
return $data;
}
/**
* Devuelve el arreglo con los datos correctos
* @return Array
......@@ -145,12 +194,181 @@ class Factura
}
public function test()
{
# llenamos los datos de nuestro CFDI
# crearemos un xml de prueba
$d = array();
#$d['printxml'] = true; # nos permite imprimir el xml generado para debug
# datos basicos SAT
$d['Serie'] = 'F';
$d['Folio'] = '987750'; #'101';
$d['Fecha'] = 'AUTO';
$d['FormaPago'] = '01';
$d['CondicionesDePago'] = 'CONDICIONES';
$d['SubTotal'] = '200.00';
$d['Descuento'] = '50.00'; # o bien: null
$d['Moneda'] = 'MXN';
$d['TipoCambio'] = 1;
$d['Total'] = '174.00';
$d['TipoDeComprobante'] = 'I';
$d['MetodoPago'] = 'PUE';
$d['LugarExpedicion'] = '67150';
# opciones de personalización (opcionales)
$d['LeyendaFolio'] = "FACTURA"; # leyenda opcional para poner a lado del folio: FACTURA, RECIBO, NOTA DE CREDITO, ETC.
# codigo de confirmación PAC para cfdis mayores a $20 millones
# $d['Confirmacion'] = null;
# CFDIs relacionados
# $d['CfdiRelacionados']['TipoRelacion'] = null;
# $d['CfdiRelacionados'][0]['UUID'] = null;
# Regimen fiscal del emisor ligado al tipo de operaciones que representa este CFDI
$d['Emisor']['RegimenFiscal'] = '615'; # ver catálogo del SAT
# Datos del receptor
$d['Receptor']['Rfc'] = 'NDI120326HF5';
$d['Receptor']['Nombre'] = 'Novatech Digital SA de CV';
# $d['Receptor']['ResidenciaFiscal'] = 'MEX'; # solo se usa cuando el receptor no esté dado de alta en el SAT
$d['Receptor']['NumRegIdTrib'] = ''; # para extranjeros
$d['Receptor']['UsoCFDI'] = 'G03'; # uso que le dará el cliente al cfdi
# Receptor -> Domicilio (OPCIONAL)
$d["Receptor"]["Calle"] = "Palmas";
$d["Receptor"]["NoExt"] = "9810";
#$d["Receptor"]["NoInt"] = null;
$d["Receptor"]["Colonia"] = "Anahuac";
#$d["Receptor"]["Localidad"] = null;
#$d["Receptor"]["Referencia"] = null;
$d["Receptor"]["Municipio"] = "Apodaca";
$d["Receptor"]["Estado"] = "Nuevo Leon";
$d["Receptor"]["Pais"] = "México";
$d["Receptor"]["CodigoPostal"] = "67349";
# >> conceptos <<
# concepto 1
$d['Conceptos'][0]['ClaveProdServ'] = '01010101';
$d['Conceptos'][0]['NoIdentificacion'] = '01'; #codigo interno o SKU, GTIN, codigo de barras, etc.
$d['Conceptos'][0]['Cantidad'] = 1.00;
$d['Conceptos'][0]['ClaveUnidad'] = 'KGM'; # Clave SAT
$d['Conceptos'][0]['Unidad'] = 'Kilo'; # Unidad de Medida
$d['Conceptos'][0]['Descripcion'] = 'PANTALLA LCD SHARP'; #maximo 1000 caracteres
$d['Conceptos'][0]['ValorUnitario'] = '100.00';
$d['Conceptos'][0]['Importe'] = '100.00';
$d['Conceptos'][0]['Descuento'] = '25.00'; # no se permiten valores negativos
# concepto 1 -> impuestos
$d['Conceptos'][0]['Impuestos']['Traslados'][0]['Base'] = '75.00';
$d['Conceptos'][0]['Impuestos']['Traslados'][0]['Impuesto'] = '002';
$d['Conceptos'][0]['Impuestos']['Traslados'][0]['TipoFactor'] = 'Tasa';
$d['Conceptos'][0]['Impuestos']['Traslados'][0]['TasaOCuota'] = '0.160000';
$d['Conceptos'][0]['Impuestos']['Traslados'][0]['Importe'] = '12.00';
$d['Conceptos'][1]['ClaveProdServ'] = '01010101';
$d['Conceptos'][1]['NoIdentificacion'] = '01'; #codigo interno o SKU, GTIN, codigo de barras, etc.
$d['Conceptos'][1]['Cantidad'] = 1.00;
$d['Conceptos'][1]['ClaveUnidad'] = 'KGM'; # Clave SAT
$d['Conceptos'][1]['Unidad'] = 'PZA'; # Unidad de Medida
$d['Conceptos'][1]['Descripcion'] = 'MEMORIA USB'; #maximo 1000 caracteres
$d['Conceptos'][1]['ValorUnitario'] = '100.00';
$d['Conceptos'][1]['Importe'] = '100.00';
$d['Conceptos'][1]['Descuento'] = '25.00';
$d['Conceptos'][1]['Impuestos']['Traslados'][0]['Base'] = '75.00';
$d['Conceptos'][1]['Impuestos']['Traslados'][0]['Impuesto'] = '002';
$d['Conceptos'][1]['Impuestos']['Traslados'][0]['TipoFactor'] = 'Tasa';
$d['Conceptos'][1]['Impuestos']['Traslados'][0]['TasaOCuota'] = '0.160000';
$d['Conceptos'][1]['Impuestos']['Traslados'][0]['Importe'] = '12.00';
/*
$d['Concepto'][0]['Impuestos']['Retenciones'][0]['Base'] = 1;
$d['Concepto'][0]['Impuestos']['Retenciones'][0]['Impuesto'] = '002';
$d['Concepto'][0]['Impuestos']['Retenciones'][0]['TipoFactor'] = 'Tasa';
$d['Concepto'][0]['Impuestos']['Retenciones'][0]['TasaOCuota'] = 16.000;
$d['Concepto'][0]['Impuestos']['Retenciones'][0]['Importe'] = 150.00;
*/
/*
$d['Concepto'][0]['InformacionAduanera'][0]['NumeroPedimento'] = '10 47 4344 8783676';
$d['Concepto'][0]['InformacionAduanera'][1]['NumeroPedimento'] = '10 47 6564 1197423';
*/
# concepto 2
#$d['Conceptos'][1]['ClaveProdServ'] = '01010101';
#$d['Conceptos'][1]['NoIdentificacion'] = '01'; #codigo interno o SKU, GTIN, codigo de barras, etc.
#$d['Conceptos'][1]['Cantidad'] = 1.00;
#$d['Conceptos'][1]['ClaveUnidad'] = 'F52';
#$d['Conceptos'][1]['Unidad'] = 'TONELADA';
#$d['Conceptos'][1]['Descripcion'] = 'ESTRUCTURA DE ACERO INOXIDABLE SKX478'; #maximo 1000 caracteres
#$d['Conceptos'][1]['ValorUnitario'] = 500.00;
#$d['Conceptos'][1]['Importe'] = 500.00; # solo valores positivos si el tipo de comprobante es "I", "E", "N". Si es "T" puede ser mayor o igual a cero. Si es "P" (Pago), debe ser cero forzosamente.
#Conceptos$d['Concepto'][1]['Descuento'] = null; # no se permiten valores negativos
# concepto 2 -> impuestos
/*
$d['Concepto'][1]['Impuestos']['Traslados'][0]['Base'] = 1;
$d['Concepto'][1]['Impuestos']['Traslados'][0]['Impuesto'] = 'IVA';
$d['Concepto'][1]['Impuestos']['Traslados'][0]['TipoFactor'] = 'Tasa';
$d['Concepto'][1]['Impuestos']['Traslados'][0]['TasaOCuota'] = 1;
$d['Concepto'][1]['Impuestos']['Traslados'][0]['Importe'] = 85.00;
$d['Concepto'][1]['Impuestos']['Traslados'][1]['Base'] = 2;
$d['Concepto'][1]['Impuestos']['Traslados'][1]['Impuesto'] = 'ISR';
$d['Concepto'][1]['Impuestos']['Traslados'][1]['TipoFactor'] = 'Tasa';
$d['Concepto'][1]['Impuestos']['Traslados'][1]['TasaOCuota'] = 1;
$d['Concepto'][1]['Impuestos']['Traslados'][1]['Importe'] = 240.00;
$d['Concepto'][1]['Impuestos']['Traslados'][2]['Base'] = 2;
$d['Concepto'][1]['Impuestos']['Traslados'][2]['Impuesto'] = 'IEPS';
$d['Concepto'][1]['Impuestos']['Traslados'][2]['TipoFactor'] = 'Tasa';
$d['Concepto'][1]['Impuestos']['Traslados'][2]['TasaOCuota'] = 1;
$d['Concepto'][1]['Impuestos']['Traslados'][2]['Importe'] = 150.00;
$d['Concepto'][1]['Impuestos']['Retenciones'][0]['Base'] = 2;
$d['Concepto'][1]['Impuestos']['Retenciones'][0]['Impuesto'] = 'IVA';
$d['Concepto'][1]['Impuestos']['Retenciones'][0]['TipoFactor'] = 'Tasa';
$d['Concepto'][1]['Impuestos']['Retenciones'][0]['TasaOCuota'] = 1;
$d['Concepto'][1]['Impuestos']['Retenciones'][0]['Importe'] = 150.00;
$d['Concepto'][1]['InformacionAduanera'][0]['NumeroPedimento'] = '10 47 3807 8003832';
$d['Concepto'][1]['InformacionAduanera'][1]['NumeroPedimento'] = '10 47 3807 4322343';
$d['Concepto'][1]['CuentaPredial']['Numero'] = '4328942809'; */
# Impuestos
#$d['Impuestos']['TotalImpuestosRetenidos'] = 0.000000;
$d['Impuestos']['TotalImpuestosTrasladados'] = '24.00';
# Definimos a detalle las retenciones
#$d['Impuestos']['Retenciones'][0]['Impuesto'] = '001'; # 001=ISR, 002=IVA, 003=IEPS
#$d['Impuestos']['Retenciones'][0]['Importe'] = 0.00;
# Definimos a detalle los traslados
$d['Impuestos']['Traslados'][0]['Impuesto'] = '002'; # 001=ISR, 002=IVA, 003=IEPS
$d['Impuestos']['Traslados'][0]['TipoFactor'] = 'Tasa';
$d['Impuestos']['Traslados'][0]['TasaOCuota'] = '0.160000'; # 16%
$d['Impuestos']['Traslados'][0]['Importe'] = '24.00'; # Monto
return $d;
}
/**
* @return mixed
*/
public function getSerie()
{
return $this->Serie;
return $this->Serie;
}
/**
......@@ -160,9 +378,9 @@ class Factura
*/
public function setSerie($Serie)
{
$this->Serie = $Serie;
$this->data['Serie'] = $Serie;
return $this;
$this->Serie = $Serie;
$this->data['Serie'] = $Serie;
return $this;
}
/**
......@@ -170,7 +388,7 @@ class Factura
*/
public function getFolio()
{
return $this->Folio;
return $this->Folio;
}
/**
......@@ -180,9 +398,9 @@ class Factura
*/
public function setFolio($Folio)
{
$this->Folio = $Folio;
$this->data['Folio'] = $Folio;
return $this;
$this->Folio = $Folio;
$this->data['Folio'] = $Folio;
return $this;
}
/**
......@@ -190,7 +408,7 @@ class Factura
*/
public function getFecha()
{
return $this->Fecha;
return $this->Fecha;
}
/**
......@@ -200,9 +418,9 @@ class Factura
*/
public function setFecha($Fecha)
{
$this->Fecha = $Fecha;
$this->data['Fecha'] = $Fecha;
return $this;
$this->Fecha = $Fecha;
$this->data['Fecha'] = $Fecha;
return $this;
}
/**
......@@ -210,7 +428,7 @@ class Factura
*/
public function getFormaPago()
{
return $this->FormaPago;
return $this->FormaPago;
}
/**
......@@ -220,9 +438,9 @@ class Factura
*/
public function setFormaPago($FormaPago)
{
$this->FormaPago = $FormaPago;
$this->data['FormaPago'] = $FormaPago;
return $this;
$this->FormaPago = $FormaPago;
$this->data['FormaPago'] = $FormaPago;
return $this;
}
/**
......@@ -230,7 +448,7 @@ class Factura
*/
public function getCondicionesDePago()
{
return $this->CondicionesDePago;
return $this->CondicionesDePago;
}
/**
......@@ -240,9 +458,9 @@ class Factura
*/
public function setCondicionesDePago($CondicionesDePago)
{
$this->CondicionesDePago = $CondicionesDePago;
$this->data['CondicionesDePago'] = $CondicionesDePago;
return $this;
$this->CondicionesDePago = $CondicionesDePago;
$this->data['CondicionesDePago'] = $CondicionesDePago;
return $this;
}
/**
......@@ -250,7 +468,7 @@ class Factura
*/
public function getSubTotal()
{
return $this->SubTotal;
return $this->SubTotal;
}
/**
......@@ -260,9 +478,9 @@ class Factura
*/
public function setSubTotal($SubTotal)
{
$this->SubTotal = $SubTotal;
$this->data['SubTotal'] = $SubTotal;
return $this;
$this->SubTotal = $SubTotal;
$this->data['SubTotal'] = number_format($SubTotal, 2, '.', '');
return $this;
}
/**
......@@ -270,7 +488,7 @@ class Factura
*/
public function getDescuento()
{
return $this->Descuento;
return $this->Descuento;
}
/**
......@@ -280,9 +498,9 @@ class Factura
*/
public function setDescuento($Descuento)
{
$this->Descuento = $Descuento;
$this->data['Descuento'] = $Descuento;
return $this;
$this->Descuento = $Descuento;
$this->data['Descuento'] = number_format($Descuento, 2, '.', '');
return $this;
}
/**
......@@ -290,7 +508,7 @@ class Factura
*/
public function getMoneda()
{
return $this->Moneda;
return $this->Moneda;
}
/**
......@@ -300,9 +518,9 @@ class Factura
*/
public function setMoneda($Moneda)
{
$this->Moneda = $Moneda;
$this->data['Moneda'] = $Moneda;
return $this;
$this->Moneda = $Moneda;
$this->data['Moneda'] = $Moneda;
return $this;
}
/**
......@@ -310,7 +528,7 @@ class Factura
*/
public function getTipoCambio()
{
return $this->TipoCambio;
return $this->TipoCambio;
}
/**
......@@ -320,9 +538,9 @@ class Factura
*/
public function setTipoCambio($TipoCambio)
{
$this->TipoCambio = $TipoCambio;
$this->data['TipoCambio'] = $TipoCambio;
return $this;
$this->TipoCambio = $TipoCambio;
$this->data['TipoCambio'] = $TipoCambio;
return $this;
}
/**
......@@ -330,7 +548,7 @@ class Factura
*/
public function getTotal()
{
return $this->Total;
return $this->Total;
}
/**
......@@ -340,9 +558,9 @@ class Factura
*/
public function setTotal($Total)
{
$this->Total = $Total;
$this->data['Total'] = $Total;
return $this;
$this->Total = $Total;
$this->data['Total'] = number_format($Total, 2, '.', '');
return $this;
}
/**
......@@ -350,7 +568,7 @@ class Factura
*/
public function getTipoDeComprobante()
{
return $this->TipoDeComprobante;
return $this->TipoDeComprobante;
}
/**
......@@ -360,9 +578,9 @@ class Factura
*/
public function setTipoDeComprobante($TipoDeComprobante)
{
$this->TipoDeComprobante = $TipoDeComprobante;
$this->data['TipoDeComprobante'] = $TipoDeComprobante;
return $this;
$this->TipoDeComprobante = $TipoDeComprobante;
$this->data['TipoDeComprobante'] = $TipoDeComprobante;
return $this;
}
/**
......@@ -370,7 +588,7 @@ class Factura
*/
public function getMetodoPago()
{
return $this->MetodoPago;
return $this->MetodoPago;
}
/**
......@@ -380,9 +598,9 @@ class Factura
*/
public function setMetodoPago($MetodoPago)
{
$this->MetodoPago = $MetodoPago;
$this->data['MetodoPago'] = $MetodoPago;
return $this;
$this->MetodoPago = $MetodoPago;
$this->data['MetodoPago'] = $MetodoPago;
return $this;
}
/**
......@@ -390,7 +608,7 @@ class Factura
*/
public function getLugarExpedicion()
{
return $this->LugarExpedicion;
return $this->LugarExpedicion;
}
/**
......@@ -400,9 +618,9 @@ class Factura
*/
public function setLugarExpedicion($LugarExpedicion)
{
$this->LugarExpedicion = $LugarExpedicion;
$this->data['LugarExpedicion'] = $LugarExpedicion;
return $this;
$this->LugarExpedicion = $LugarExpedicion;
$this->data['LugarExpedicion'] = $LugarExpedicion;
return $this;
}
/**
......@@ -410,7 +628,7 @@ class Factura
*/
public function getLeyendaFolio()
{
return $this->LeyendaFolio;
return $this->LeyendaFolio;
}
/**
......@@ -420,9 +638,9 @@ class Factura
*/
public function setLeyendaFolio($LeyendaFolio)
{
$this->LeyendaFolio = $LeyendaFolio;
$this->data['LeyendaFolio'] = $LeyendaFolio;
return $this;
$this->LeyendaFolio = $LeyendaFolio;
$this->data['LeyendaFolio'] = $LeyendaFolio;
return $this;
}
public function setReceptor($receptor)
......
......@@ -14,13 +14,14 @@ class FacturaConcepto
private $ValorUnitario;
private $Importe;
private $Descuento;
private $Impuesto;
private $Impuesto='002';
private $ImpuestoBase;
private $ImpuestoTipoFactor;
private $ImpuestoTasaOCuota;
private $ImpuestoTipoFactor='Tasa';
private $ImpuestoTasaOCuota='0.160000';
private $ImpuestoImporte;
private $data;
private $traslado;
private $CalculoManual = false;
/**
* @return mixed
......@@ -78,7 +79,7 @@ class FacturaConcepto
public function setCantidad($Cantidad)
{
$this->Cantidad = $Cantidad;
$this->data['Cantidad'] = $Cantidad;
$this->data['Cantidad'] = number_format($Cantidad, 0, '.', '');
return $this;
}
......@@ -158,7 +159,21 @@ class FacturaConcepto
public function setValorUnitario($ValorUnitario)
{
$this->ValorUnitario = $ValorUnitario;
$this->data['ValorUnitario'] = $ValorUnitario;
$valor_final = $this->getCalculoManual() ? $this->ValorUnitario : $this->precioSinIva($ValorUnitario);
if (!$this->getCalculoManual()) {
$importe = $valor_final * $this->getCantidad();
$this->setImpuesto('002');
$this->setImpuestoTipoFactor('Tasa');
$this->setImporte($importe);
$this->setImpuestoBase($importe);
$this->setImpuestoTasaOCuota('0.160000');
$this->setImpuestoImporte($importe * $this->getImpuestoTasaOCuota());
}
$this->data['ValorUnitario'] = number_format($valor_final, 2, '.', '');
return $this;
}
......@@ -178,7 +193,7 @@ class FacturaConcepto
public function setImporte($Importe)
{
$this->Importe = $Importe;
$this->data['Importe'] = $Importe;
$this->data['Importe'] = number_format($Importe, 2, '.', '');
return $this;
}
......@@ -198,7 +213,7 @@ class FacturaConcepto
public function setDescuento($Descuento)
{
$this->Descuento = $Descuento;
$this->data['Descuento'] = $Descuento;
$this->data['Descuento'] = number_format($Descuento, 2, '.', '');
return $this;
}
......@@ -218,7 +233,7 @@ class FacturaConcepto
public function setImpuestoBase($Base)
{
$this->Base = $Base;
$this->traslado['Base'] = $Base;
$this->traslado['Base'] = number_format($Base, 2, '.', '');
return $this;
}
......@@ -278,15 +293,15 @@ class FacturaConcepto
public function setImpuestoTasaOCuota($TasaOCuota)
{
$this->TasaOCuota = $TasaOCuota;
$this->traslado['TasaOCuota'] = $TasaOCuota;
$this->traslado['TasaOCuota'] = number_format($TasaOCuota, 6, '.', '');
return $this;
}
/**
* @return mixed
*/
public function getImpuestoImporte()
{
public function getImpuestoImporte()
{
return $this->TasaOCuota;
}
......@@ -298,7 +313,7 @@ class FacturaConcepto
public function setImpuestoImporte($Importe)
{
$this->Importe = $Importe;
$this->traslado['Importe'] = $Importe;
$this->traslado['Importe'] = number_format($Importe, 2, '.', '');
return $this;
}
......@@ -309,11 +324,41 @@ class FacturaConcepto
public function getData()
{
return array_merge($this->data, [
'Impuestos'=>[
'Traslados'=> [$this->traslado]
]
]);
return array_merge($this->data, [
'Impuestos'=>[
'Traslados'=> [$this->traslado]
]
]);
}
/**
* @return mixed
*/
public function getCalculoManual()
{
return $this->CalculoManual;
}
/**
* @param boolean $CalculoManual
*
* @return self
*/
public function setCalculoManual($CalculoManual)
{
$this->CalculoManual = $CalculoManual;
return $this;
}
public function precioSinIva($precioConIva)
{
$data = [];
$precioSin = $precioConIva / 1.16;
return $precioSin;
}
}
......@@ -19,6 +19,28 @@ class FacturaConceptoLista
return $this;
}
public function getTotalImpuestos()
{
$total = 0;
foreach ($this->conceptos as $concepto) {
$total = $total + $concepto['Impuestos']['Traslados'][0]['Importe'];
}
return $total;
}
public function getTotalConceptos()
{
$total = 0;
foreach ($this->conceptos as $concepto) {
$total = $total + $concepto['Importe'];
}
return $total;
}
/**
* List of items.
*
......@@ -37,11 +59,11 @@ class FacturaConceptoLista
*/
public function addConcepto($concepto)
{
if (!$this->getConceptos()) {
if (!$this->getData()) {
return $this->setConceptos(array($concepto));
} else {
return $this->setConceptos(
array_merge($this->getConceptos(), array($concepto))
array_merge($this->getData(), array($concepto))
);
}
}
......
......@@ -13,8 +13,14 @@ class FacturaImpuesto
private $data;
private $traslado;
public function getData()
public function getData($impuestos)
{
$this->setTotalImpuestosTrasladados($impuestos);
$this->setImpuesto('002');
$this->setTipoFactor('Tasa');
$this->setTasaOCuota('0.16000');
$this->setImporte($impuestos);
return array_merge($this->data, ['Traslados'=>[$this->traslado]]);
}
......@@ -34,7 +40,7 @@ class FacturaImpuesto
public function setTotalImpuestosTrasladados($TotalImpuestosTrasladados)
{
$this->TotalImpuestosTrasladados = $TotalImpuestosTrasladados;
$this->data['TotalImpuestosTrasladados'] = $TotalImpuestosTrasladados;
$this->data['TotalImpuestosTrasladados'] = number_format($TotalImpuestosTrasladados, 2, '.', '');
return $this;
}
......@@ -94,7 +100,7 @@ class FacturaImpuesto
public function setTasaOCuota($TasaOCuota)
{
$this->TasaOCuota = $TasaOCuota;
$this->traslado['TasaOCuota'] = $TasaOCuota;
$this->traslado['TasaOCuota'] = number_format($TasaOCuota, 6, '.', '');
return $this;
}
......@@ -114,7 +120,7 @@ class FacturaImpuesto
public function setImporte($Importe)
{
$this->Importe = $Importe;
$this->traslado['Importe'] = $Importe;
$this->traslado['Importe'] = number_format($Importe, 2, '.', '');
return $this;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment