Commit 665cc915 by Angel MAS

Funcionando

parent 59915aa2
......@@ -28,101 +28,133 @@ PASSWORD_FACTURA_DIGITAL=password
# Como utilizar la libreria:
Registrar los datos generales de la factura
> $factura = FacturaDigital::setSerie('F')
> ->setFolio('71278')
> ->setFecha('AUTO')
> ->setFormaPago('01')
> ->setCondicionesDePago('CONDICIONES')
> ->setSubTotal('200'.00)
> ->setDescuento('50.00')
> ->setMoneda('MXN')
> ->setTipoCambio('1')
> ->setTotal('174.00')
> ->setTipoDeComprobante('I')
> ->setMetodoPago('PUE')
> ->setLugarExpedicion('67150')
> ->setLeyendaFolio('Factura');
Configurar regimen del emisor
> $emisor = FacturaDigital::emisor()
> ->setRegimenFiscal('612')
> ->getData();
Configurar datos del receptor
> $receptor = FacturaDigital::receptor()
> ->setRfc('NDI120326HF5')
> ->setNombre('Novatech Digital SA de CV')
> ->setNumRegIdTrib('')
> ->setUsoCFDI('G03')
> ->setCalle('Palmas')
> ->setNoExt('129')
> ->setColonia('Centro')
> ->setMunicipio('Guadalupe')
> ->setEstado('Nuevo León')
> ->setPais('Mexico')
> ->setCodigoPostal('98000')
> ->getData();
Registrar los conceptos a facturar
> $concepto = FacturaDigital::concepto()
> ->setClaveProdServ('01010101')
> ->setNoIdentificacion('01')
> ->setCantidad('1.00')
> ->setClaveUnidad('KGM')
> ->setUnidad('Kilo')
> ->setDescripcion('Pantalla LSC Sharp')
> ->setValorUnitario('100.00')
> ->setImporte('100')
> ->setDescuento('25')
> ->setImpuestoBase('75.00')
> ->setImpuesto('002')
> ->setImpuestoTipoFactor('Tasa')
> ->setImpuestoTasaOCuota('0.160000')
> ->setImpuestoImporte('12.00')
> ->getData();
> $concepto2 = FacturaDigital::concepto()
> ->setClaveProdServ('01010101')
> ->setNoIdentificacion('02')
> ->setCantidad('1.00')
> ->setClaveUnidad('KGM')
> ->setUnidad('PZA')
> ->setDescripcion('Memoria USB')
> ->setValorUnitario('100.00')
> ->setImporte('100.00')
> ->setDescuento('25.00')
> ->setImpuestoBase('75.00')
> ->setImpuesto('002')
> ->setImpuestoTipoFactor('Tasa')
> ->setImpuestoTasaOCuota('0.16000')
> ->setImpuestoImporte('12.00')
> ->getData();
Agregar los conceptos a la lista
> $lista = FacturaDigital::listaConceptos()
> ->setConceptos(array($concepto, $concepto2))
> ->getData();
Agregar información del impuesto
> $impuesto = FacturaDigital::impuesto()
> ->setTotalImpuestosTrasladados('24.00')
> ->setImpuesto('002')
> ->setTipoFactor('Tasa')
> ->setTasaOCuota('0.16000')
> ->setImporte('24.00')
> ->getData();
Agregar los atributos anteriores a la factura final
Configurar regimen fiscal del emisor
> $emisor = FacturaDigital::emisor()
> ->setRegimenFiscal('612')
> ->getData();
Configurar la información del receptor
> $receptor = FacturaDigital::receptor()
> ->setRfc('NDI120326HF5')
> ->setNombre('Novatech Digital SA de CV')
> //->setNumRegIdTrib('')
> ->setUsoCFDI('G03')
> ->setCalle('Palmas')
> ->setNoExt('129')
> ->setColonia('Centro')
> ->setMunicipio('Guadalupe')
> ->setEstado('Nuevo León')
> ->setPais('Mexico')
> ->setCodigoPostal('98000')
> ->getData();
Registrar los conceptos de la factura
> $concepto = FacturaDigital::concepto()
> ->setClaveProdServ('01010101')
> ->setNoIdentificacion('01')
> ->setCantidad('3.00')
> ->setClaveUnidad('KGM')
> ->setUnidad('Kilo')
> ->setDescripcion('Coca cola')
> ->setValorUnitario('15')
> ->getData();
> $concepto2 = FacturaDigital::concepto()
> ->setClaveProdServ('01010101')
> ->setNoIdentificacion('02')
> ->setCantidad('2')
> ->setClaveUnidad('KGM')
> ->setUnidad('PZA')
> ->setDescripcion('Hamburgruesa')
> ->setValorUnitario('70')
> ->getData();
> $concepto3 = FacturaDigital::concepto()
> ->setClaveProdServ('01010101')
> ->setNoIdentificacion('03')
> ->setCantidad('3')
> ->setClaveUnidad('KGM')
> ->setUnidad('PZA')
> ->setDescripcion('Alitas Personal')
> ->setValorUnitario('50')
> ->getData();
Agregar a la lista de los conceptos
> $lista = FacturaDigital::listaConceptos();
> $lista->setConceptos(array($concepto, $concepto2, $concepto3));
Obtener los totales (Impuestos y conceptos libres de impuestos)
> $totales = $lista->getTotalConceptos();
> retorna ['totalConceptos', 'totalImpuestos']
Registrar datos generales de la factura
> $factura = FacturaDigital::setSerie('F')
> ->setFolio('71278')
> ->setFecha('AUTO')
> ->setFormaPago('01')//01 Efectivo
> ->setCondicionesDePago('Pago de contado')
> ->setMoneda('MXN')
> ->setTipoCambio('1')
> ->setTipoDeComprobante('I')
> ->setMetodoPago('PUE')
> ->setLugarExpedicion('67150') //C.P.
> ->setLeyendaFolio('Factura')
> ->setSubTotal($totales['totalConceptos'])
> //->setDescuento('30.00')
> ->setTotal($totales['totalConceptos'] + $totales['totalImpuestos'] );
Registrar impuesto total
> $impuesto = FacturaDigital::impuesto()
> ->getData($totales['totalImpuestos']);
Agregar todos los datos a la factura
> $factura->setEmisor($emisor);
> $factura->setReceptor($receptor);
> $factura->setConceptos($lista);
> $factura->setConceptos($lista->getData());
> $factura->setImpuestos($impuesto);
Leer datos de la factura
> $factura->getData();
Enviar la factura
> $factura->enviar();
\ No newline at end of file
Generar factura
> $factura_final = $factura->enviar();
retorna el siguiente arreglo
> {
> mensaje: "Timbrado exitoso",
> codigo: 200,
> cfdi:
> {
> NoCertificado: "",
> UUID: "",
> FechaTimbrado: "2018-06-28T16:33:27",
> RfcProvCertif: "FEL100622S88",
> SelloCFD:"",
> NoCertificadoSAT: "20001000000300022323",
> SelloSAT: "",
> CadenaOrigTFD: "",
> CadenaQR: "",
> XmlBase64: "",
> PDF: "",
> XML: ""
> }
> }
Enviar factura por correo
> $enviar = $factura->enviarCorreo($uuid, '[email protected]');
Esto retorna un booleano
> if ($enviar) {
> return "Factura enviada por correo";
> } else {
> return "Errorsillo";
> }
Para cancelar un CFDI
> $cancela = $factura->cancelarCFDI('UUID');
\ No newline at end of file
......@@ -33,12 +33,14 @@ class FacturaConceptoLista
public function getTotalConceptos()
{
$total = 0;
$totalImpuestos = 0;
foreach ($this->conceptos as $concepto) {
$total = $total + $concepto['Importe'];
$total = $total + $concepto['Importe'];
$totalImpuestos = $totalImpuestos + $concepto['Impuestos']['Traslados'][0]['Importe'];
}
return $total;
return ['totalConceptos' => $total, 'totalImpuestos' => $totalImpuestos];
}
/**
......
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