2017 © Pedro Peláez
 

library cfdi

Paquete para generar xml para cfdi 3.2

image

jorgeandrade/cfdi

Paquete para generar xml para cfdi 3.2

  • Thursday, March 15, 2018
  • by jAndradeDev
  • Repository
  • 1 Watchers
  • 0 Stars
  • 125 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

JorgeAndrade\CFDI

Este paquete te permite generar los xml para la generacion de cfdi en mexico., (*1)

Introducción

CFDI te permite generar el xml para el proceso de timbrado de un CFDI (Comprobante Fiscal Digital por Internet), facturacion electronica en mexio, (*2)

Instalación

Simplemente instala el paquete con composer:, (*3)

composer require jorgeandrade/cfdi

Una vez composer termine de instalar el paquete simplemente importa el paquete y crea una nueva instancia pasando los parametros correspondientes:, (*4)

require 'vendor/autoload.php';

use JorgeAndrade\Cfdi;
use JorgeAndrade\ConceptosData;
use JorgeAndrade\DomicilioFiscalData;
use JorgeAndrade\EmisorData;
use JorgeAndrade\Exceptions\CfdiException;
use JorgeAndrade\Factura;
use JorgeAndrade\GeneralData;
use JorgeAndrade\ImpuestosTrasladadosData;
use JorgeAndrade\ImpuestosRetenidosData;
use JorgeAndrade\ReceptorData;
use JorgeAndrade\RegimenFiscalData;

$key = getcwd() . "/csds/AAD990814BP7.key.pem";
$cer = getcwd() . "/csds/AAD990814BP7.cer.pem";
$cfdi = new Cfdi(new Factura, $cer, $key);

try {

} catch (CfdiException $e) {
    var_dump($e->getMessage());
}

Uso

Crear un xml es extremadamente facil. Si algo sale mal las funciones arrojaran una exception de tipo JorgeAndrade\Exceptions\CfdiException., (*5)

Crea una nueva instancia de Cfdi y pasale los parametros correspondientes: - tipo de comprobante: Factura; new Factura - cer: certificado en formato pem - key: llave privada en formato pem, (*6)

Por el momento solo tenemos Factura como tipo de comprobante, esta en desarrollo: Nomina, Contabilidad., (*7)

$key = getcwd() . "/csds/AAD990814BP7.key.pem";
$cer = getcwd() . "/csds/AAD990814BP7.cer.pem";
$cfdi = new Cfdi(new Factura, $cer, $key);

Agregando datos

Para agregar datos al xml, CFDI cuenta con un metodo llamado add, pasando 2 posibles parametros: - una instancia de algun objeto que extienda de CfdiData : ConceptosData, DomicilioFiscalData, EmisorData, GeneralData, ImpuestosTrasladadosData, ImpuestosRetenidosData, ReceptorData, RegimenFiscalData - Valor obligatorio solo para establecer el Domicio fiscal del emisor o receptor, valores permitidos: emisor y receptor, (*8)

$cfdi->add(
  new GeneralData([
    'serie' => 'F',
    'folio' => 1,
    'fecha' => date("Y-m-d\TH:i:s"),
    'formaDePago' => 'Pago en una sola Exhibición',
    'noCertificado' => '20001000000200000293',
    'subTotal' => '2000.00',
    'Moneda' => 'MXN',
    'total' => '2320.00',
    'tipoDeComprobante' => 'ingreso',
    'metodoDePago' => 'Efectivo',
    'LugarExpedicion' => 'CD de Mexico',
    'NumCtaPago' => 'No identificado',
  ]);
);

La informacion guardada en los objetos CfdiData debe ser del tipo (array), y estos deben ser acordes al anexo 20 del SAT., (*9)

Emisor

$cfdi->add(
  new EmisorData([
      'rfc' => 'AAD990814BP7',
      'nombre' => 'John Doe del Socorro',
  ])
);

Regimen Fiscal

$cfdi->add(
  new RegimenFiscalData([
    'Regimen' => 'Ley de pequeñas y medianas empresas',
  ])
);

Receptor

$cfdi->add(
  new ReceptorData([
    'rfc' => 'AAD990814BP7',
    'nombre' => 'Jane Doe',
  ])
);

Domicilio Fiscal

$tipo = 'emisor'; //'emisor' o 'receptor'
$cfdi->add(
  new DomicilioFiscalData([
    'calle' => 'Insurgente',
    'noExterior' => '600',
    'colonia' => 'Centro',
    'municipio' => 'CD de Mexico',
    'estado' => 'Mexico',
    'pais' => 'Mexico',
    'codigoPostal' => '99000',
  ])
  , 'emisor'
);

$cfdi->add(
  new DomicilioFiscalData([
    'calle' => 'Insurgente',
    'noExterior' => '600',
    'colonia' => 'Centro',
    'municipio' => 'CD de Mexico',
    'estado' => 'Mexico',
    'pais' => 'Mexico',
    'codigoPostal' => '99000',
  ])
  , 'receptor'
);

Conceptos

$cfdi->add(
  new ConceptosData([
    'cantidad' => '1',
    'unidad' => 'NO APLICA',
    'descripcion' => 'Dominio .com',
    'valorUnitario' => '2000.00',
    'importe' => '2000.00',
  ])
);

Impuestos Trasladados

$cfdi->add(
  new ImpuestosTrasladadosData([
    'impuesto' => 'IVA',
    'tasa' => '16.00',
    'importe' => '320.00',
  ])
);

Impuestos Retenidos

$cfdi->add(
  new ImpuestosRetenidosData([
    'impuesto' => 'IVA',
    'importe' => '320.00',
  ])
);

Crear xml

Paara generar el xml usaremos el metodo save, pasando dos parametros: - $path; requerido. La ruta donde se guardara el archivo: getcwd(). '/xmls/'; - $name; opcional. El nombre del xml: 'F1.xml'; Si este no se especifica el nombre seta tomado en base a la serie y el folio del xml si estan presentes, si no, se usara F y un numero aleatorio: F1234123431241.xml, (*10)

Valores devueltos

La ruta del archivo o false en caso de error., (*11)

if ($xml = $cfdi->save($path)) {
  echo 'Comprobante creado en: ' . $xml;
}

Todo list

  • [ ] Tipo de comprobante: Nomina
  • [ ] Tipo de comprobante: Contabilidad
  • [ ] Tipo de datos: Adendas
  • [ ] Tipo de datos: Complementos
  • [ ] Tipo de datos: Percepciones
  • [ ] Tipo de datos: Deducciones
  • [ ] Tipo de datos: Horas extras
  • [ ] Tipo de datos: Incapacidades

Licencia

Csd programa de codigo abierto bajo la licencia MIT license, (*12)

The Versions

15/03 2018

dev-master

9999999-dev

Paquete para generar xml para cfdi 3.2

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

The Development Requires

date time datetime

16/01 2016

2.0.2

2.0.2.0

Paquete para generar xml para cfdi 3.2

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

The Development Requires

date time datetime

15/01 2016

2.0.1

2.0.1.0

Paquete para generar xml para cfdi 3.2

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

The Development Requires

date time datetime

15/01 2016

2.0.0

2.0.0.0

Paquete para generar xml para cfdi 3.2

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

The Development Requires

date time datetime