用于生成版本 3.3 的税务凭证的库
1.0
2019-02-12 00:14 UTC
Requires
- php: ^7.0
Requires (Dev)
- phpunit/phpunit: ^4.8|^5.0
This package is not auto-updated.
Last update: 2024-10-02 03:56:00 UTC
README
有关项目的信息
此项目由Orlando Charles创建,并包含一些由Christian Castro实现的特性,如“Total Impuestos Traslados”。
有关更多信息,请查看许可证
互联网数字税务凭证 (CFDI v3.3)
安装
注意:该项目处于开发中。
要使用 Composer 安装此包。
composer require christiancastrorios/cfdi
使用
CFDI
use Charles\CFDI\CFDI; $cer = file_get_contents('.../csd/AAA010101AAA.cer.pem'); $key = file_get_contents('.../csd/AAA010101AAA.key.pem'); $cfdi = new CFDI([ 'Serie' => 'A', 'Folio' => 'A0101', 'Fecha' => '2017-06-17T03:00:00', 'FormaPago' => '01', 'NoCertificado' => '00000000000000000000', 'CondicionesDePago' => '', 'Subtotal' => '', 'Descuento' => '0.00', 'Moneda' => 'MXN', 'TipoCambio' => '1.0', 'Total' => '', 'TipoDeComprobante' => 'I', 'MetodoPago' => 'PUE', 'LugarExpedicion' => '64000', ], $cer, $key);
相关 CFDI
在此节点中,必须表达与正在生成的税务凭证相关的税务凭证信息,必须表达与需要关联的凭证数量相等的 CfdiRelacionado 节点编号。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Relacionado; $cfdi = new CFDI([...]); $cfdi->add(new Relacionado([ 'UUID' => 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', ], [ 'TipoRelacion' => '01', ]));
<cfdi:CfdiRelacionados TipoRelacion="01"> <cfdi:CfdiRelacionado UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"/> </cfdi:CfdiRelacionados>
发票发出方
在此节点中,必须表达发出税务凭证的纳税人的信息。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Emisor; $cfdi = new CFDI([...]); $cfdi->add(new Emisor([ 'Rfc' => 'XAXX010101000', 'Nombre' => 'Florería SA de CV', 'RegimenFiscal' => '601', ]));
<cfdi:Emisor Rfc="XAXX010101000" Nombre="Florería SA de CV" RegimenFiscal="601"/>
发票接收方
在此节点中,必须表达接收税务凭证的纳税人的信息。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Receptor; $cfdi = new CFDI([...]); $cfdi->add(new Receptor([ 'Rfc' => 'XEXX010101000', 'Nombre' => 'Orlando Charles', 'ResidenciaFiscal' => 'USA', 'NumRegIdTrib' => '121585958', 'UsoCFDI' => 'G01', ]));
<cfdi:Receptor Rfc="XEXX010101000" Nombre="Orlando Charles" ResidenciaFiscal="USA" NumRegIdTrib="121585958" UsoCFDI="G01"/>
概念
在此节点中,必须表达在凭证中描述的货物或服务的详细信息。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Concepto; $cfdi = new CFDI([...]); $cfdi->add(new Concepto([ 'ClaveProdServ' => '10317331', 'NoIdentificacion' => 'UT421511', 'Cantidad' => '24', 'ClaveUnidad' => 'H87', 'Unidad' => 'Pieza', 'Descripcion' => 'Arreglo de 24 tulipanes rosadas recién cortados', 'ValorUnitario' => '56.00', 'Importe' => '1344.00', 'Descuento' => '10.00', ])); $cfdi->add(new Concepto([ 'ClaveProdServ' => '10317352', 'NoIdentificacion' => 'UT421510', 'Cantidad' => '12', 'ClaveUnidad' => 'H87', 'Unidad' => 'Pieza', 'Descripcion' => 'Arreglo de 12 tulipanes rojos recién cortados', 'ValorUnitario' => '66.00', 'Importe' => '792.00', 'Descuento' => '5.00', ]));
<cfdi:Conceptos> <cfdi:Concepto ClaveProdServ="10317331" NoIdentificacion="UT421511" Cantidad="24" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Arreglo de 24 tulipanes rosadas recién cortados" ValorUnitario="56.00" Importe="1344.00" Descuento="10.00"/> <cfdi:Concepto ClaveProdServ="10317352" NoIdentificacion="UT421510" Cantidad="12" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Arreglo de 12 tulipanes rojos recién cortados" ValorUnitario="66.00" Importe="792.00" Descuento="5.00"/> </cfdi:Conceptos>
税收
保留
凭证中的保留
在此节点中,必须表达特定税收的保留的详细信息。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Impuesto\Retencion; $cfdi->add(new Retencion([ 'Impuesto' => '002', 'Importe' => '35000', ]));
概念中的保留
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Concepto; use Charles\CFDI\Node\Impuesto\Retencion; $cfdi = new CFDI([...]); $concepto = new Concepto([ 'ClaveProdServ' => '10317331', 'NoIdentificacion' => 'UT421511', 'Cantidad' => '24', 'ClaveUnidad' => 'H87', 'Unidad' => 'Pieza', 'Descripcion' => 'Arreglo de 24 tulipanes rosadas recién cortados', 'ValorUnitario' => '56.00', 'Importe' => '1344.00', 'Descuento' => '10.00', ]); $concepto->add(new Retencion([ ])); $cfdi->add($concepto);
转移
凭证中的转移(新)
在此节点中,必须表达特定税收转移的详细信息,仅限于总额。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Impuesto\TrasladoTotal; use Charles\CFDI\Node\Impuesto\TotalImpuestosTraslado; $impuesto = new TotalImpuestosTraslado([ 'TotalImpuestosTrasladados' => '420.64' ]); $traslado = new TrasladoTotal([ 'Importe' => '420.64', 'TasaOCuota' => '0.160000', 'TipoFactor' => 'Tasa', 'Impuesto' => '002' ]); $impuesto->add($traslado); $cfdi->add($impuesto);
概念中的转移
在此节点中,信息可以省略基数,因为它是概念级的。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Concepto; use Charles\CFDI\Node\Impuesto\Traslado; $cfdi = new CFDI([...]); $concepto = new Concepto([ 'ClaveProdServ' => '10317331', 'NoIdentificacion' => 'UT421511', 'Cantidad' => '24', 'ClaveUnidad' => 'H87', 'Unidad' => 'Pieza', 'Descripcion' => 'Arreglo de 24 tulipanes rosadas recién cortados', 'ValorUnitario' => '56.00', 'Importe' => '1344.00', 'Descuento' => '10.00', ]); $concepto->add(new Traslado([ ])); $cfdi->add($concepto);
海关信息
在此节点中,当涉及进口商品的第一手销售时,必须表达与每个概念相关的海关信息。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Concepto; use Charles\CFDI\Node\InformacionAduanera; $cfdi = new CFDI([...]); $concepto = new Concepto([ 'ClaveProdServ' => '10317331', 'NoIdentificacion' => 'UT421511', 'Cantidad' => '24', 'ClaveUnidad' => 'H87', 'Unidad' => 'Pieza', 'Descripcion' => 'Arreglo de 24 tulipanes rosadas recién cortados', 'ValorUnitario' => '56.00', 'Importe' => '1344.00', 'Descuento' => '10.00', ]); $concepto->add(new InformacionAduanera([ 'NumeroPedimento' => '00 00 0000 0000000', ])); $cfdi->add($concepto);
<cfdi:Conceptos> <cfdi:Concepto ClaveProdServ="10317331" NoIdentificacion="UT421511" Cantidad="24" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Arreglo de 24 tulipanes rosadas recién cortados" ValorUnitario="56.00" Importe="1344.00" Descuento="10.00"> <cfdi:InformacionAduanera NumeroPedimento="00 00 0000 0000000"/> </cfdi:Concepto> </cfdi:Conceptos>
土地登记册
在此节点中,可以表达用于在联邦实体的地籍系统中登记不动产的账户编号,或者用于包含不可赎回的不动产参与证书的识别数据。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Concepto; use Charles\CFDI\Node\CuentaPredial; $cfdi = new CFDI([...]); $concepto = new Concepto([...]); $concepto->add(new CuentaPredial([ 'Numero' => '00000', ])); $cfdi->add($concepto);
部分
在此节点中,可以表达构成通过互联网税务凭证中表达的概念的整体的组成部分或组件。
use Charles\CFDI\CFDI; use Charles\CFDI\Node\Concepto; use Charles\CFDI\Node\Parte; $cfdi = new CFDI([...]); $concepto = new Concepto([ 'ClaveProdServ' => '27113201', 'NoIdentificacion' => 'UT421456', 'Cantidad' => '1', 'ClaveUnidad' => 'KT', 'Unidad' => 'Kit', 'Descripcion' => 'Kit de destornillador', 'ValorUnitario' => '217.30', 'Importe' => '217.30', 'Descuento' => '0.00', ]); $tornillo = new Parte([ 'ClaveProdServ' => '31161500', 'NoIdentificacion' => 'UT367898', 'Cantidad' => '34', 'ClaveUnidad' => 'H87', 'Unidad' => 'Pieza', 'Descripcion' => 'Tornillo', 'ValorUnitario' => '00.20', 'Importe' => '6.80', ]); $tornilloPerno = new Parte([ 'ClaveProdServ' => '31161501', 'NoIdentificacion' => 'UT367899', 'Cantidad' => '14', 'ClaveUnidad' => 'H87', 'Unidad' => 'Pieza', 'Descripcion' => 'Tornillo de Perno', 'ValorUnitario' => '00.75', 'Importe' => '10.50', ]); $destornillador = new Parte([ 'ClaveProdServ' => '27111701', 'NoIdentificacion' => 'UT367900', 'Cantidad' => '2', 'ClaveUnidad' => 'H87', 'Unidad' => 'Pieza', 'Descripcion' => 'Destornillador', 'ValorUnitario' => '100.00', 'Importe' => '200.00', ]); $concepto->add($tornillo); $concepto->add($tornilloPerno); $concepto->add($destornillador); $cfdi->add($concepto);
<cfdi:Conceptos> <cfdi:Concepto ClaveProdServ="27113201" NoIdentificacion="UT421456" Cantidad="1" ClaveUnidad="KT" Unidad="Kit" Descripcion="Kit de destornillador" ValorUnitario="217.30" Importe="217.30" Descuento="0.00"> <cfdi:Parte ClaveProdServ="31161500" NoIdentificacion="UT367898" Cantidad="34" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Tornillo" ValorUnitario="00.20" Importe="6.80"/> <cfdi:Parte ClaveProdServ="31161501" NoIdentificacion="UT367899" Cantidad="14" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Tornillo de Perno" ValorUnitario="00.75" Importe="10.50"/> <cfdi:Parte ClaveProdServ="27111701" NoIdentificacion="UT367900" Cantidad="2" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Destornillador" ValorUnitario="100.00" Importe="200.00"/> </cfdi:Concepto> </cfdi:Conceptos>
许可证
此包不属于任何公司或政府机构,并受 MIT 许可证约束。如果您想了解更多信息,可以查看位于此存储库中的 许可证 文件。