importaremx/facturapuntocom
Composer 安装命令:
composer require importaremx/facturapuntocom
包简介
Api Client para la api de factura.com
README 文档
README
[![Latest Version on Packagist][ico-version]][link-packagist] [![Total Downloads][ico-downloads]][link-downloads] [![Build Status][ico-travis]][link-travis] [![StyleCI][ico-styleci]][link-styleci]
Api Client para la api de factura.com
Instalación
Via Composer
$ composer require importaremx/facturapuntocom
Configuracion
En config/app.php agregar el service provider:
Importaremx\Facturapuntocom\FacturapuntocomServiceProvider::class,
Para modificar la configuracion por default del paquete corra en la consola de php el siguiente comando:
php artisan vendor:publish --provider='Importaremx\Facturapuntocom\FacturapuntocomServiceProvider'
Se publicarán los siguientes archivos: XXXXXXXXXXX_create_cfdi_tables.php En la carpeta de migraciones facturapuntocom.php en la carpeta 'config'
###Variables de configuración
El archivo facturapuntocom.php contiene las siguientes variables:
'api_key', valor por default '', esta variable debe contener el api key de la cuenta de factura.com, se debe agregar la variable FACTURACOM_API_KEY en el archivo .env
'secret_key', valor por default '', esta variable debe contener el secret key de la cuenta de factura.com, se debe agregar la variable FACTURACOM_SECRET_KEY en el archivo .env
'fplugin', valor por default '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed', esta variable es una constante determinada por factura.com, en caso de que en el futuro ese valor cambie, se puede modificar usando la variable FACTURACOM_FPLUGIN en el archivo env
'is_sandbox', valor por default true, Esta variable indica si el paquete funcionará o no en el sandbox de pruebas de factura.com, se debe usar la variable FACTURACOM_SANDBOX en el archivo .env
'serie_default', valor por default 1, Esta variable indica en que serie se estarán creando los CFDI's que genera el paquete, este valor debe ser obtenido desde la cuenta de factura.com, se debe usar la variable FACTURACOM_SERIE_DEFAULT en el archivo .env
'path_pdf', valor por default "cfdi_files/pdf", esta variable indica la ruta de almacenamiento dentro de la carpeta storage donde se guardarán los archivos pdf de los CFDIs, se debe usar la variable FACTURACOM_PATH_PDF en el archivo .env
'path_xml', valor por default "cfdi_files/xml", esta variable indica la ruta de almacenamiento dentro de la carpeta storage donde se guardarán los archivos xml de los CFDIs, se debe usar la variable FACTURACOM_PATH_XML en el archivo .env
'queue_connection' variable que define la conexión al controlador de colas para la facturacion por lotes, si no se ocupará ningun driver diferente a la configuracion default de laravel esta variable se deja vacía
'queue_name' variable que define el nombre de la cola en donde se publicarán los trabajos para la facturacion por lotes, si no se ocupará ningun driver diferente a la configuracion default de laravel esta variable se deja vacía ###Tablas en la DB
para correr la migracion del paquete una vez instalado se debe ejecutar el siguiente comando.
php artisan migrate
(Se puede especificar el path del archivo publicado por el paquete para migrar solo las tablas de este paquete si fuera necesario)
Uso
Este paquete provee dos traits y el helper completo de factura.com
Traits
IsTaxPayer
Este trait proporciona metodos para el modelo que funcione como contribuyente dentro del sistema.
Se deben agregar la siguiente linea al modelo deseado:
use \Importaremx\Facturapuntocom\Traits\isTaxPayer;
Para modificar los valores por default del trait se puede agregar en el modelo la siguiente función:
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";
}
Para mapear los datos del modelo hacia factura.com, se usa la siguiente funcion en el modelo:
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"
];
}
El trait provee el siguiente método para el modelo:
createOrUpdateTaxPayer : Crea en factura.com el contribuyente y lo asigna a este modelo, una vez configurado el trait basta con llamarlo de la siguiente manera:
$model = \App\Model\SomeModel::first(); $model->createOrUpdateTaxPayer();
Relacion cfdis() : Contiene todos los cfdis relacionados a este modelo, es necesario configurar la relacion polimórfica mencionada arriba.
Relacion taxpayer() : Contiene los datos del contribuyente del SAT relacionado al modelo.
HasCfdi
Este trait permite agregar a un modelo los metodos necesarios para crear un cfdi relacionado al modelo.
Se deben agregar la siguiente linea al modelo deseado:
use \Importaremx\Facturapuntocom\Traits\HasCfdi;
Para modificar los valores por default del trait se puede agregar en el modelo la siguiente función:
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",
];
}
El trait provee el siguiente método para el modelo:
createCfdi()
Despues de configurar el trait como se menciona arriba, basta con ejecutar el metodo createCfdi() en el modelo para crear y guardar el cfdi en la base de datos.
El modelo Importaremx\Facturapuntocom\Models\Cfdi contiene los metodos necesarios para la administracion del cfdi:
downloadPdf = Descarga el pdf, lo almacena en la carpeta del storage y guarda la ubicacion en la base de datos
downloadXml = Descarga el xml, lo almacena en la carpeta del storage y guarda la ubicacion en la base de datos
sendMail = Envia mail a los correos registrados del contribuyente
sendCancelRequest = solicita la cancelacion del CFDI, en algunas ocasiones la respuesta es automatica, pero es recomendable usar el metodo siguiente para revisar el status del cfdi ante el sat
checkCancelRequestStatus = Revisa el estatus de la cancelacion del CFDI
Creacion de cfdis por lotes
El paquete ofrece un modelo para facturar por lotes:
\Importaremx\Facturapuntocom\Models\CfdiBatch
Espera los siguientes parametros:
elements: es un array de enteros, Id's de los elementos a generar cfdi element_class: es la clase del modelo en la que se generarán los cfdi (Es obligatorio que la clase use el Trait hasCfdi del paquete, para que se puedan generar correctamente los cfdi)
El modelo contiene un atributo llamado stats que contiene información del procesamiento de datos:
total_elements : El total de cfdis en el batch total_pending : Total de cfdis pendientes de generar total_processed : Total de cfdis procesados percentage_pending : Porcentaje de cfdis pendientes percentage_processed : Porcentaje de cfdis procesados
El modelo contiene un atributo llamado finished que indica si se ha completado o no el procesamiento del batch
Nota: El procesamiento del batch funciona con Jobs y hereda la configuracion de colas que tenga el proyecto, adicionalmente se pueden configurar en el archivo config/facturapuntocom.php las variables queue_connnection y queue_name para indicar la configuracion o driver de colas que usará el cfdibatch
importaremx/facturapuntocom 适用场景与选型建议
importaremx/facturapuntocom 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 97 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 06 月 07 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「Facturapuntocom」 「factura.com」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 importaremx/facturapuntocom 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 importaremx/facturapuntocom 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 importaremx/facturapuntocom 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Alfabank REST API integration
Laravel package for Accurate Online API integration.
Shared RCX Laravel DataTables UI and configuration helpers.
Boot a Laravel project on any machine with one command: app:serve installs missing tools (PHP, Node, Composer, Herd, Docker), creates .env, sets up the database, runs migrations, builds assets, starts a queue worker and serves via Herd, Sail or artisan serve; app:down cleanly stops everything it sta
Branded, diagnostic error pages (500, 403, 404, 419, 503) for Filament — native Filament UI, dark mode and translations out of the box.
Turn any PDF into a Pingen-ready A4 letter (generated address cover page + A4 normalisation + safe margins) and send it through the Pingen print & mail API. Laravel-first.
统计信息
- 总下载量: 97
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 18
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-1.0-or-later
- 更新时间: 2021-06-07