importaremx/facturapuntocom

factura.com API 客户端

dev-master 2022-06-17 15:32 UTC

This package is auto-updated.

Last update: 2024-09-17 20:05:28 UTC


README

[![Packagist 上的最新版本][ico-version]][link-packagist] [![总下载量][ico-downloads]][link-downloads] [![构建状态][ico-travis]][link-travis] [![StyleCI][ico-styleci]][link-styleci]

factura.com API 客户端

安装

通过 Composer

$ composer require importaremx/facturapuntocom

配置

在 config/app.php 中添加服务提供者

Importaremx\Facturapuntocom\FacturapuntocomServiceProvider::class,

要修改默认包的配置,请在 PHP 控制台中运行以下命令

php artisan vendor:publish --provider='Importaremx\Facturapuntocom\FacturapuntocomServiceProvider'

将发布以下文件:XXXXXXXX_create_cfdi_tables.php 在迁移文件夹 facturapuntocom.php 中,位于 'config' 文件夹

###配置变量

facturapuntocom.php 文件包含以下变量

'api_key',默认值为空字符串,此变量应包含 factura.com 账户的 API 密钥,应在 .env 文件中添加变量 FACTURACOM_API_KEY

'secret_key',默认值为空字符串,此变量应包含 factura.com 账户的秘密密钥,应在 .env 文件中添加变量 FACTURACOM_SECRET_KEY

'fplugin',默认值为 '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',此变量是由 factura.com 确定的一个常量,如果将来该值发生变化,则可以使用 .env 文件中的变量 FACTURACOM_FPLUGIN 进行修改

'is_sandbox',默认值为 true,此变量指示包是否在 factura.com 的测试沙箱中运行,应在 .env 文件中添加变量 FACTURACOM_SANDBOX

'serie_default',默认值为 1,此变量指示将创建哪些 CFDI 的序列,此值应从 factura.com 账户获取,应在 .env 文件中添加变量 FACTURACOM_SERIE_DEFAULT

'path_pdf',默认值为 "cfdi_files/pdf",此变量指示存储在 storage 文件夹中 PDF CFDI 文件的存储路径,应在 .env 文件中添加变量 FACTURACOM_PATH_PDF

'path_xml',默认值为 "cfdi_files/xml",此变量指示存储在 storage 文件夹中 XML CFDI 文件的存储路径,应在 .env 文件中添加变量 FACTURACOM_PATH_XML

'queue_connection' 变量定义了批量开具发票的控制器的连接,如果不会使用与 Laravel 默认配置不同的驱动程序,则此变量应留空

'queue_name' 变量定义了批量开具发票的工作将发布到的队列名称,如果不会使用与 Laravel 默认配置不同的驱动程序,则此变量应留空 ### 数据库中的表

安装后要运行包的迁移,必须执行以下命令。

php artisan migrate

(如果需要,可以指定由包发布的文件路径以仅迁移此包的表)

使用方法

Este paquete provee dos traits y el helper completo de factura.com

特质

IsTaxPayer

此特质为作为系统内纳税人工作的模型提供了方法。

必须在所需模型中添加以下行

use \Importaremx\Facturapuntocom\Traits\isTaxPayer;

要修改特质的默认值,可以在模型中添加以下函数

public function __construct(array $attributes = array())
{
    parent::__construct($attributes);

    //AQUI AGREGAR LOS VALORES MODIFICADOS DEL TRAIT
    //POR EJEMPLO:

    /*La variable $rfc_field indica qué atributo del modelo será tomado como RFC del contribuyente, por default tiene el valor 'rfc', pero lo puede modificar como se muestra en la siguiente linea*/
    
    $this->rfc_field = "rfc";

    /*Para hacer uso de la relacion "cfdis", que obtiene todos los CFDIS generados para este usuario, se debe configurar la relacion polimorfica,
    ejemplo*/

    /*Un User tiene una relacion 1 a muchos con el modelo Abonos, y cada abono a su vez tiene un cfdi. para indicar esta relacion se haría como se muestra en las siguientes lineas:*/

    /*(Esta variable indica el modelo de donde se obtendran los CFDI, es necesario que este modelo use el trait HasCfdi que se explicará mas adelante)*/
     $this->relatable_type = "App\Models\Abono";

     /*(Esta variable se refiere a la columna pivote de la tabla abono)*/
     $this->relatable_column = "user_id";
}

为了将模型数据映射到 factura.com,在模型中使用以下函数

protected function dataMapping(){
    
     /*Mapeo de datos del modelo
     El siguiente array contendrá un array clave valor con los atributos necesarios para crear un contribuyente en factura.com seguido del valor, funcion anonima, o atributo de donde el modelo proveerá dicha información*/

    $this->taxpayer_mapping = [
        "nombre" => $this->name,
        "apellidos" => "apellidos",
        "email" => "otrocorreo@servidor.com",
        "email2" => function(){
            return "funcion@anonima.com";
            },
        "email3" => "otroemail3@email.com",
        "telefono" => "9612547499",
        "razons" => "Desarrollador ImportareMX TESTER",
        "rfc" => "siag880723hi9",
        "calle" => "Diagonal peje de oro",
        "numero_exterior" => 5,
        "numero_interior" => "",
        "codpos" => 29230,
        "colonia" => "Cuxtitali",
        "estado" => "Chiapas",
        "ciudad" => "San Cristóbal de las Casas"
    ];

}

此特质为模型提供了以下方法

createOrUpdateTaxPayer : 在 factura.com 中创建纳税人并将其分配给此模型,一旦配置了特质,就可以通过以下方式调用它

$model = \App\Model\SomeModel::first(); $model->createOrUpdateTaxPayer();

关联cfdis():包含与该模型相关联的所有cfdis,需要配置上述提到的多态关系。

关联taxpayer():包含与模型相关联的SAT纳税人的数据。

HasCfdi

此trait允许向模型添加创建与模型相关联的cfdis所需的必要方法。

必须在所需模型中添加以下行

use \Importaremx\Facturapuntocom\Traits\HasCfdi;

要修改特质的默认值,可以在模型中添加以下函数

public function dataMapping(array $attributes = array())
{
     /*Mapeo de datos del modelo
     El siguiente array contendrá un array clave valor con los atributos necesarios para crear un cfdi en factura.com seguido del valor, funcion anonima, o atributo de donde el modelo proveerá dicha información*/

	$this->cfdi_mapping = [

		//El uid del receptor debe ser un valor agregado en la tabla de taxpayer creado por el paquete
		"Receptor" => "60c127b3ec916",
		"ClaveProdServ" => "01010101",
		"ValorUnitario" => 100,
		"Descripcion" => "Fctura de prueba, descirpción de prueba",
		"UsoCFDI" => "G03",
		"FormaPago" => "01",
		"MetodoPago" => "PUE",
		"CondicionesDePago" => "Condiciones de pago de pruebas",
	];

}

此特质为模型提供了以下方法

createCfdi()

如上所述配置了trait后,只需在模型中执行createCfdi()方法即可创建并保存cfdis到数据库中。

模型Importaremx\Facturapuntocom\Models\Cfdi包含管理cfdis所需的方法。

downloadPdf = 下载pdf,将其存储在storage文件夹中,并保存位置到数据库

downloadXml = 下载xml,将其存储在storage文件夹中,并保存位置到数据库

sendMail = 向注册的纳税人邮箱发送邮件

sendCancelRequest = 请求取消CFDI,有时响应是自动的,但建议使用以下方法检查CFDI在SAT的状态

checkCancelRequestStatus = 检查CFDI取消状态

批量创建CFDI

此包提供了一种批量开票的模型。

\Importaremx\Facturapuntocom\Models\CfdiBatch

期望以下参数

elements:是一个整数数组,包含要生成cfdis的元素ID's;element_class:是生成cfdis的模型类(该类必须使用包中的HasCfdi trait,以确保cfdis可以正确生成)

该模型包含一个名为stats的属性,其中包含数据处理信息。

total_elements:批量中的CFDI总数;total_pending:待生成CFDI总数;total_processed:已处理CFDI总数;percentage_pending:待处理CFDI百分比;percentage_processed:已处理CFDI百分比

该模型包含一个名为finished的属性,指示批量处理是否完成。

注意:批量处理使用作业(Jobs)进行,并继承项目的队列配置。此外,可以在config/facturapuntocom.php文件中配置queue_connection和queue_name变量,以指定cfdibatch使用的队列配置或驱动程序。