Librería de PHP para trabajar con contabilidad electrónica.
🇺🇸 The documentation of this project is in spanish as this is the natural language for the intended audience.
En México, las personas físicas o morales requieren generar su contabilidad electrónica.
Esta librería permite generar, sellar y validar los XML para contabilidad electrónica 1.3.
Usa composer
composer require phpcfdi/ceutils
<?php
use PhpCfdi\CeUtils\BalanzaCreator13;
use PhpCfdi\Credentials\Credential;
$creator = new BalanzaCreator13([
'Mes' => '01',
'Anio' => '2021',
'TipoEnvio' => 'N',
'FechaModBal' => '2015-01-01',
]);
$credential = Credential::openFiles(
$this->filePath('fake-csd/EKU9003173C9.cer'),
$this->filePath('fake-csd/EKU9003173C9.key'),
trim($this->fileContents('fake-csd/EKU9003173C9-password.txt'))
);
$creator->addSello($credential);
$balanza = $creator->balanza();
$balanza->addCuenta([
'NumCta' => '602.01.01',
'SaldoIni' => '100.50',
'Debe' => '40',
'Haber' => '40',
'SaldoFin' => '100.50'
]);
$balanza->addCuenta([
'NumCta' => '602.01.02',
'SaldoIni' => '200.00',
'Debe' => '20',
'Haber' => '20',
'SaldoFin' => '200.00'
]);
$xml = $creator->asXml();
<?php
use PhpCfdi\CeUtils\CatalogoCreator13;
use PhpCfdi\Credentials\Credential;
$creator = new CatalogoCreator13([
'Mes' => '01',
'Anio' => '2021',
'TipoEnvio' => 'N',
'FechaModBal' => '2015-01-01',
]);
/** @var Credential $credential */
$creator->addSello($credential);
$catalogo = $creator->catalogo();
$catalogo->addCuenta([
'CodAgrup' => '602',
'NumCta' => '602.01.01',
'Desc' => 'Account description',
'SubCtaDe' => '602.01',
'Nivel' => '3',
'Natur' => 'A'
]);
$catalogo->addCuenta([
'CodAgrup' => '602',
'NumCta' => '602.01.02',
'Desc' => 'Account description',
'SubCtaDe' => '602.01',
'Nivel' => '3',
'Natur' => 'A'
]);
$xml = $creator->asXml();
<?php
use PhpCfdi\CeUtils\AuxiliarFoliosCreator13;
use PhpCfdi\Credentials\Credential;
$creator = new AuxiliarFoliosCreator13([
'Mes' => '01',
'Anio' => '2021',
'TipoSolicitud' => 'AF',
'NumTramite' => '123456',
]);
/** @var Credential $credential */
$creator->addSello($credential);
$reporteAuxiliarFolios = $creator->repAuxFol();
$detalleAuxiliarFolios = $reporteAuxiliarFolios->addDetalleAux([
'NumUnIdenPol' => '194756',
'Fecha' => '2021-03-25'
]);
$detalleAuxiliarFolios->addComprNal([
'UUID_CFDI' => 'fake uuid',
'MontoTotal' => '100',
'RFC' => 'fake rfc',
'MetPagoAux' => '',
'Moneda' => 'MXN',
]);
$xml = $creator->asXml();
<?php
use PhpCfdi\CeUtils\AuxiliarCuentasCreator13;
use PhpCfdi\Credentials\Credential;
$creator = new AuxiliarCuentasCreator13([
'Mes' => '01',
'Anio' => '2021',
'TipoSolicitud' => 'AF',
'NumTramite' => '123456',
]);
/** @var Credential $crcedential */
$creator->addSello($crcedential);
$auxiliarCuentas = $creator->auxiliarCuentas();
$cuenta = $auxiliarCuentas->addCuenta([
'NumCta' => '602.01.01',
'DesCta' => 'descripción',
'SaldoIni' => '100.00',
'SaldoFin' => '100.00'
]);
$cuenta->addDetalleAux([
'Fecha' => '2021-03-25',
'NumUnIdenPol' => '123456',
'Concepto' => 'concepto 1',
'Debe' => '50',
'Haber' => '0'
]);
$xml = $creator->asXml();
<?php
use PhpCfdi\CeUtils\PolizasCreator13;
use PhpCfdi\Credentials\Credential;
$creator = new PolizasCreator13([
'Mes' => '01',
'Anio' => '2021',
'TipoSolicitud' => 'AF',
'NumTramite' => '123456',
]);
/** @var Credential $credential */
$creator->addSello($credential);
$polizas = $creator->polizas();
$poliza = $polizas->addPoliza([
'NumUnIdenPol' => '123456',
'Fecha' => '2021-03-31',
'Concepto' => 'Concepto póliza'
]);
$transaccion = $poliza->addTransaccion([
'NumCta' => '123',
'DesCta' => 'Descripción cuenta',
'Concepto' => 'Concepto transacción',
'Debe' => '100.00',
'Haber' => '0.00',
]);
$transaccion->addCompNal([
'UUID_CFDI' => 'adf9d1d2-574d-4781-8874-a9fb1e79930a',
'RFC' => 'XAXX010101000',
'MontoTotal' => '100.00',
'Moneda' => 'MXN',
]);
$xml = $creator->asXml();
Los objetos creadores tienen oportunidad de validar el documento que están creando.
<?php
use PhpCfdi\CeUtils\BalanzaCreator13;
$creator = new BalanzaCreator13([]);
$asserts = $creator->validate();
if ($asserts->hasErrors()) {
echo 'No se han encontrado errores', PHP_EOL;
} else {
echo print_r($asserts->errors(), true), PHP_EOL;
}
Puedes obtener soporte abriendo un ticker en Github.
Adicionalmente, esta librería pertenece a la comunidad PhpCfdi, así que puedes usar los mismos canales de comunicación para obtener ayuda de algún miembro de la comunidad.
Esta librería se mantendrá compatible con al menos la versión con soporte activo de PHP más reciente.
También utilizamos Versionado Semántico 2.0.0 por lo que puedes usar esta librería sin temor a romper tu aplicación.
Las contribuciones con bienvenidas. Por favor lee CONTRIBUTING para más detalles y recuerda revisar el archivo de tareas pendientes TODO y el archivo CHANGELOG.
The phpcfdi/ceutils
library is copyright © PhpCfdi
and licensed for use under the MIT License (MIT). Please see LICENSE for more information.