mgesuitti / neofactura Goto Github PK
View Code? Open in Web Editor NEWImplementación simple para interactuar con WebService de AFIP y realizar Factura Electrónica Argentina en PHP
License: MIT License
Implementación simple para interactuar con WebService de AFIP y realizar Factura Electrónica Argentina en PHP
License: MIT License
Hola Estimados, parece que AFIP ahora solicita obligatoriamente se pase en el voucher el dato "Fecha_pago" para los comprobantes que sean de tipo servicio.
aquí paso el enlace del último manual, actualizado hace 2 semanas (8 de noviembre de 2019).
http://www.afip.gob.ar/ws/documentacion/manuales/WSFEX-Manualparaeldesarrollador_V1_6_0.pdf
aquí copio la parte del instructivo en la página 3
Se agrega fecha de pago en autorización y consulta de
comprobantes que son del tipo Factura de Servicios u Otros.
Validaciones 1671, 1672, 1673, 1674. Para dar soporte al
requerimiento se modifican los complexType ClsFEXRequest
y ClsFEXGetCMPR. La fecha de pago debe informarse, a
partir del 01/11/2019 será obligatorio.
y aquí el campo:
<Cmp><Fecha_pago> 1671 Si informa fecha de pago <Cmp><Fecha_pago> debe tener formato válido YYYYMMDD.
Podrán agregar este campo a la librería de exportación ?
Gracias
Hola, tengo el siguiente problema en producción. Me devuelve siempre la info de la FAC E (cod 19) para las NC E (cod 21)
[cae] => 68301363773186 [fechaVencimientoCAE] => 20180726
Envío esta info:
array(14) { ["fechaComprobante"]=> string(8) "20181214" ["numeroPuntoVenta"]=> string(1) "3" ["codigoTipoComprobante"]=> int(21) ["numeroComprobante"]=> int(1) ["codigoConcepto"]=> int(2) ["codigoPais"]=> string(3) "426" ["nombreCliente"]=> string(54) "CSM Sport and Entertainment Llp, Trading as CSM Brands" ["domicilioCliente"]=> string(41) " PO BOX 70693, 62 Buckingham Gate, London" ["numeroDocumento"]=> float(0) ["codigoMoneda"]=> string(3) "DOL" ["cotizacionMoneda"]=> string(6) "38.000" ["importeTotal"]=> string(6) "504.60" ["idiomaComprobante"]=> string(1) "2" ["items"]=> array(1) { [0]=> array(7) { ["codigo"]=> string(3) "665" ["descripcion"]=> string(32) "Nota de credito sobre FC E Nro 9" ["cantidad"]=> int(1) ["codigoUnidadMedida"]=> int(7) ["precioUnitario"]=> string(6) "504.60" ["importeItem"]=> string(6) "504.60" ["impBonif"]=> int(0) } } }
Devuelve:
Array ( [code] => 0 [msg] => OK [cae] => 68301363773186 [fechaVencimientoCAE] => 20180726 )
Amplio, Le paso los datos para tipo comprobante=21 NC E y me devuelve los datos del tipo 19 FAC E
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://ar.gov.afip.dif.fexv1/">env:Bodyns1:FEXAuthorizens1:Authns1:TokenPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8c3NvIHZlcnNpb249IjIuMCI+CiAgICA8aWQgc3JjPSJDTj13c2FhLCBPPUFGSVAsIEM9QVIsIFNFUklBTE5VTUJFUj1DVUlUIDMzNjkzNDUwMjM5IiBkc3Q9IndzZmV4IiB1bmlxdWVfaWQ9IjQ4ODUzMTc1OSIgZ2VuX3RpbWU9IjE1NDQ4MDU0ODciIGV4cF90aW1lPSIxNTQ0ODQ4NzQ3Ii8+CiAgICA8b3BlcmF0aW9uIHR5cGU9ImxvZ2luIiB2YWx1ZT0iZ3JhbnRlZCI+CiAgICAgICAgPGxvZ2luIGVudGl0eT0iMzM2OTM0NTAyMzkiIHNlcnZpY2U9IndzZmV4IiB1aWQ9IlNFUklBTE5VTUJFUj1DVUlUIDMwNzEwMDEzNzAxLCBDTj1jb29sMyIgYXV0aG1ldGhvZD0iY21zIiByZWdtZXRob2Q9IjIyIj4KICAgICAgICAgICAgPHJlbGF0aW9ucz4KICAgICAgICAgICAgICAgIDxyZWxhdGlvbiBrZXk9IjMwNzEwMDEzNzAxIiByZWx0eXBlPSI0Ii8+CiAgICAgICAgICAgIDwvcmVsYXRpb25zPgogICAgICAgIDwvbG9naW4+CiAgICA8L29wZXJhdGlvbj4KPC9zc28+Cg==</ns1:Token>ns1:SignawX/cgGG5VnKuQ62X6g2/VAdtfsRcgwkj/2viiSWhpB02RrkuhYWOh8Cr2p6VM93vJmxyAIFLOTWH+uMWMiWllE6S2ZavciDAEXmFru6+65aIRQkwOLxJLIelqEN/aPaqfY+Uk0MieC54MkEx/p2uZjbGgD3KL67iKufl9pvvyY=</ns1:Sign>ns1:Cuit30710013701</ns1:Cuit></ns1:Auth>ns1:Cmpns1:Id31</ns1:Id>ns1:Fecha_cbte20181214</ns1:Fecha_cbte>ns1:Cbte_Tipo21</ns1:Cbte_Tipo>ns1:Punto_vta3</ns1:Punto_vta>ns1:Cbte_nro1</ns1:Cbte_nro>ns1:Tipo_expo2</ns1:Tipo_expo>ns1:Permiso_existente</ns1:Permiso_existente>ns1:Dst_cmp426</ns1:Dst_cmp>ns1:ClienteCSM Sport and Entertainment Llp, Trading as CSM Brands</ns1:Cliente>ns1:Cuit_pais_cliente0</ns1:Cuit_pais_cliente>ns1:Domicilio_cliente PO BOX 70693, 62 Buckingham Gate, London</ns1:Domicilio_cliente>ns1:Id_impositivo0</ns1:Id_impositivo>ns1:Moneda_IdDOL</ns1:Moneda_Id>ns1:Moneda_ctz38.000</ns1:Moneda_ctz>ns1:Imp_total504.60</ns1:Imp_total>ns1:Idioma_cbte2</ns1:Idioma_cbte>ns1:Itemsns1:Itemns1:Pro_codigo665</ns1:Pro_codigo>ns1:Pro_dsNota de credito sobre FC E Nro 9</ns1:Pro_ds>ns1:Pro_qty1</ns1:Pro_qty>ns1:Pro_umed7</ns1:Pro_umed>ns1:Pro_precio_uni504.60</ns1:Pro_precio_uni>ns1:Pro_bonificacion0</ns1:Pro_bonificacion>ns1:Pro_total_item504.60</ns1:Pro_total_item></ns1:Item></ns1:Items></ns1:Cmp></ns1:FEXAuthorize></env:Body></env:Envelope>
Produccion - Coa2018-12-14T19:07:47.7034959-03:001.4.0.031307100137011931683013637731862018072620180726AS0OK0Ok
Las facturas E no tienen problema. Las facturas locales las estoy generando con el punto de venta 2 sin ningún problema.
Agradezco alguna pista de cual puede ser el problema.
Muchas gracias. Saludos. Guillermo
puede ser que la carpeta se deba llamar temp en lugar de tmp?
Gracias por el trabajo realizado! Consulta: el arreglo de items que tiene en la factura C por ejemplo, realmente se guarda en afip? es necesario enviarlo? como se supone que manejemos los items/conceptos de la factura? por que si genero una factura C por ejemplo con items, cuando pido los datos no veo ninguno de los items que le envío.
Gracias.
Buenas!
Tenes algun ejemplo del array?
Saludos!
Hola, estimados antes que nada GRACIAS por la librería, me ha sido de gran ayuda.
He podido implementar todo a excepción de Notas de Crédito de Exportación tipo 21
El problema es que al armarle y enviarle correctamente el voucher, no arroja error, sino que devuelve siempre el mismo CAE con la info de correspondiente a una Factura de tipo E (cod. 19) mientras que en realidad debería informar un CAE y devolver el código 21 correspondiente a una Nota de Crédito.
Array
(
[cae] => 69384006546466
[fechaVencimientoCAE] => 20190919
[Array Completo: ] => stdClass Object
(
[Id] => 41
[Cuit] => 20304318954
[Cbte_tipo] => 19
[Punto_vta] => 4
[Cbte_nro] => 1
[Cae] => 69384006546466
[Fch_venc_Cae] => 20190919
[Fch_cbte] => 20190919
[Resultado] => A
[Reproceso] => S
[Motivos_Obs] =>
)
)
$voucher = Array
(
"idVoucher" => 1,
"numeroComprobante" =>$ultimocomp,
"numeroPuntoVenta" => 4,
"codigoTipoComprobante" =>21,
"cae" => 0,
"letra" => "NCE",
"fechaVencimientoCAE" => "",
"tipoResponsable" => "Cliente del Exterior",
"nombreCliente" => "The New Corporation",
"domicilioCliente" => "8200 Ghost Street, #520D",
"fechaComprobante" => $fecha,
"TipoComprobante" => "Nota de Crédito por Operaciones con el Exterior",
"codigoConcepto" => 2,
"codigoMoneda" => "DOL",
"cotizacionMoneda" => $dolar,
"fechaDesde" => $fecha,
"fechaHasta" => $fecha,
"fechaVtoPago" => $fecha,
"codigoTipoDocumento" => 91,
"Tipo_expo" => 1,
"Dst_cmp" =>203,
"Permiso_existente" => "S",
"TipoDocumento" => "CI Extranjera",
"numeroDocumento" => 123456789, // IDCARD
"importeTotal" => 1.000,
"importeOtrosTributos" => 0.000,
"importeGravado" => 0.000,
"importeNoGravado" => 0.000,
"importeExento" => 1.000,
"importeIVA" => 0.000,
"codigoPais" => 438, //212 = ESTADOS UNIDOS
"idiomaComprobante" => 2, // 2 = Ingles
"NroRemito" => 0,
"CondicionVenta" => "Transferencia",
"items" => Array
(
0 => Array
(
"codigo" => 100,
"scanner" => 100,
"descripcion" => "TEST PRODUCT",
"codigoUnidadMedida" => 7, // 7 = Unidad
"UnidadMedida" => "Unidades",
"codigoCondicionIVA" => 2, // 2 = exento
"Alic" => 0,
"cantidad" => 1.00,
"porcBonif" => 0.000,
"impBonif" => 0.000,
"precioUnitario" => 1.00,
"importeIVA" => 0.000,
"importeItem" => 1.00,
)
),
"subtotivas" => Array(0),
"Tributos" => Array(0),
"Cmp_asoc" => Array
(
0 => Array(
"Cbte_tipo" => 19,
"Cbte_punto_vta" => 4,
"Cbte_nro" => 3,
"Cbte_cuit" => "55000004382")
)
);
Ojalá puedan ayudarme.
Gracias Miles
Estimados tengo una pc que ya venia usando factura electronica con otro sistema, al querer consultar el padro a13 o a5 me da siempre noautorizado, hay que habilitar algo en afip para que deje consultar ?
como realizar varias notas de credito asociadas a un mismo cliente??
Estimados, buen dia. Dejo de funcionarme tanto en homologacion como en produccion y con distintos cuit y con distintos proveedores de internet la conexion con afip. A alguien mas le paso?
Estimados antes que nada felicidades por el proyecto la verdad que me ayudó mucho a la hora de desarrollar el proyecto en el que estoy trabajando.
En esta ocacion queria consultarles si alguno logró ejecutar el modo Homologacion pero para mas de un CUIT? les consulto esto porque el sistema que estoy armando la idea es que sea multiusuario (para varios clientes) y cada uno de estos tiene un CUIT diferente.
A la hora de realizar las pruebas con un cliente funciona todo de 10 ya que lo hago con los certificados que están asociados a mi CUIT, el problema es que no se como armar la configuración para un segundo cliente con un CUIT distinto. Alguien lo pudo resolver?
Muchas gracias de antemano por los aportes.
Hola, antes que nada muchas gracias por compartir este proyecto, estuve haciendo algunas pruebas simples y conseguí generar mis facturas.
Te quería comentar acerca de esto:
"La estructura esperada es un arreglo que contiene todos los campos con los mismos nombres indicados en el manual de afip"
No se si a lo mejor refactoreaste y te quedó desactualizada la documentación, pero en realidad la mayoría de los índices del array que espera el método emitirComprobante() son diferentes a los utilizados por la AFIP, ejemplo:
numeroDocumento / DocNro
numeroComprobante / CbteDesde
etc.
Es muy fácil de detectar pero por ahí para alguien con poca experiencia le puede dar algún dolor de cabeza.
Un abrazo y gracias nuevamente.
Javier
Buenas, excelente aporte. Estoy tratando de generar mi primer factura pero me da el siguiente error:
Warning: Invalid argument supplied for foreach() cuando le paso el parametro $regfac['CbtesAsoc'] = 0; dentro de $voucher.
como se pasa ese valor de CbtesAsoc y que hay que pasar en CAEA?
Muchas gracias. Saludos. Guillermo
cuando para el voucher ejemplo de "factura C" modifico el concepto de 1 a 2 (parametro "codigoConcepto" => 1 a "codigoConcepto" => 2, que es, entiendo, el de servicios, obtengo este error:
PHP Catchable fatal error: Object of class DateTime could not be converted to string in /opt/afip/neofactura/wsfev1.php on line 534
la linea 534 es una llamada al webservice: $results = $this->client->FECAESolicitar($params);
Saludos!!
Intente usar nuevamente su código en un nuevo proyecto, esta vez en Symfony5 con Php7.4. Todo parecía correcto, pero persistía el error "500 - HTTP Could not connect to host" en modo Homologación.
Lo solucione gracias a este comentario AfipSDK/afip.php#5 (comment).
En el archivo wsaa.php agregue
'ciphers' => 'AES256-SHA',
Quedaría el $context de la funcion callWSAA($cms) de la siguiente manera.
$context = stream_context_create(array(
'ssl' => array(
'ciphers' => 'AES256-SHA',
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
));
Estimados, en el día de hoy, en el entorno de producción se envió una factura a AFIP con fecha de ayer '20200706' pero en Mis Comprobantes de AFIP figura con el día de hoy. Les ha pasado?
Quisiera probar en el entorno de desarrollo, pero no se como ver la forma que impacta en afip el modo homologación.
Desde ya, Muchas Gracias
Saludos
podrian incluir archivos de ejemplo para notas de credito A y B (ej. testnotadecreditoA.php)
muchas gracias
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.