Skip to content

absabbath/factura-digital

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Libreria facturación electrónica

absabbath/factura-digital es una libreria para consumir la api de https://www.facturadigital.com.mx/ en un proyecto de Laravel

Instalación

  • Correr el siguiente comando en la terminal
$ composer require absabbath/factura-digital
  • Agregar la siguiente linea al arreglo de provider en el archivo configuracion en config/app.php

Absabbath\FacturaDigital\FacturaDigitalProvider::class,

  • Agregar la siguiente linea al arreglo de aliases en el archivo configuracion en config/app.php

'FacturaDigital' => Absabbath\FacturaDigital\Facades\Factura::class,

Como utilizar la libreria:

  • Configurar credenciales y regimen del emisor
$emisor = \FacturaDigital::emisor()
	->setRegimenFiscal('612')
	->setUser('demo33')
    ->setPassword('demo')
	->getData();
  • Consultar creditos
$creditos =  \FacturaDigital::creditos()
  • Retorna :
{
    "mensaje":  "11565 creditos disponibles.",
    "creditos":  11565,
    "codigo":  200
}
  • 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') // Agregar clave sat en catalogo productos
            ->setNoIdentificacion('1')  // Id interno
            ->setCantidad(5) // Cantidad a facturar
            ->setClaveUnidad('LTR') // Clave del SAT
            ->setUnidad('Litro') // Descripcion unidad
            ->setDescripcion('Descripcion/nombre del producto')
            ->setValorUnitario(30); // Costo por unidad
  • Crear y agregar impuesto por cada concepto
$impuestos = []; // Recolecta la informacion de todos los impuestos
$impuesto_iva = \FacturaDigital::conceptoImpuesto()
            ->setBase(30) // Base gravable
            ->setImpuesto('002')
            ->setTipoFactor('Tasa')
            ->setTasaOCuota(0.16000)
            ->setImporte(30 * 0.16000) // Base gravable X tasaocuota
            ->getData();
  • Agregar los impuestos al concepto anterior y a la lista de impuestos
array_push($impuestos, $impuesto_iva);
$concepto->addTraslado($impuesto_iva);
  • Agregar la lista de conceptos a facturar y obtener los totales
$lista = \FacturaDigital::listaConceptos();
$lista->addConcepto($concepto->getData());
  • 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') // Folio Interno
	->setFecha('AUTO')
	->setFormaPago('01')// Catalogo SAT
	->setCondicionesDePago('Pago de contado')
	->setMoneda('MXN')
	->setTipoCambio('1')
	->setTipoDeComprobante('I')
	->setMetodoPago('PUE')
	->setLugarExpedicion('67150') //C.P.
	->setLeyendaFolio('Factura')
	->setSubTotal($totales['totalConceptos'])
	//->setDescuento('30.00') // Descuento opcional
	->setTotal($totales['totalConceptos'] + $totales['totalImpuestos'] );
  • Agregar listado de los impuestos
$impuestoFinal = \FacturaDigital::impuesto()
            ->setTraslados($impuestos);;

Agregar todos los datos a la factura

$factura->setEmisor($emisor);
$factura->setReceptor($receptor);
$factura->setConceptos($lista->getData());
$factura->setImpuestos($impuestoFinal->getData());

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, 'tucorreo@dominio.com', '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');

Fue probado en versiones de Laravel >= 5.1

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages