Package Onestartup Factura digital
onestartup/factura-digital es una libreria para consumir la api de facturadigital.com.mx
Instalación
-
Correr el siguiente comando en la terminal
composer require onestartup/factura-digital
-
Agregar la siguiente linea al arreglo de provider en el archivo configuracion en config/app.php
Onestartup\FacturaDigital\FacturaDigitalProvider::class,
-
Agregar la siguiente linea al arreglo de aliases en el archivo configuracion en config/app.php
'FacturaDigital' => Onestartup\FacturaDigital\Facades\Factura::class,
-
Agregar varaibles en archivo .env
USER_FACTURA_DIGITAL=usuario PASSWORD_FACTURA_DIGITAL=password
Como utilizar la libreria:
Consultar creditos
$creditos = FacturaDigital::creditos()
Retorna :
{ mensaje: "11565 creditos disponibles.", creditos: 11565, codigo: 200 }
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->getData()); $factura->setImpuestos($impuesto);
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]', 'tu mensaje adicional');
Esto retorna un booleano
if ($enviar) { return "Factura enviada por correo"; } else { return "Errorsillo"; }
Para cancelar un CFDI
$cancela = $factura->cancelarCFDI('UUID');