orlandocharles / cfdi
用于生成3.3版本税务发票的库
dev-master
2018-02-05 02:16 UTC
Requires
- php: ^7.0
Requires (Dev)
- phpunit/phpunit: ^4.8|^5.0
This package is not auto-updated.
Last update: 2024-09-29 04:31:19 UTC
README
安装
注意:该项目处于开发中。
通过Composer安装此软件包。
composer require orlandocharles/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\Traslado; $cfdi->add(new Traslado([ 'Impuesto' => '001', 'TipoFactor' => 'Tasa', 'TasaOCuota' => '0.160000', 'Importe' => '23000', ]));
概念中的税项转移
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许可协议保护,如需了解更多信息,请参阅此存储库中的许可文件。
捐赠
此项目帮助其他开发者节省了大量工作时间。