Pregunta:
Fecha: 05-06-2015 08:06:14
(En Español)
Factura Electrónica en Argentina[No resuelta]
Hola alguien sabe como implementar la factura electrónica de la AFIP en argentina, para poder hacerlos con PHP. Gracias Votos: 3 - Respuestas: 915 - Vistas: 226 Compartir en: Google Facebook Twitter LinkedIn LinkRespuestas:
-
Fecha: 09-06-2015 04:15:00 Hola Sebastian, tenes que seguir las indicaciones de la AFIP, aquí tienes toda la info:
http://www.afip.gob.ar/ws/
Basicamente necesitarás implementar el webservice de Autenticación y Autorización "WSAA" para obtener el Ticket de Acceso (TA).
Luego deberás conectarte con el webservice que te corresponda segun la regulación general. Si es para facturar seguramente será "wsfe". De este ultimo webservice debes implementar la solicitud de CAE.
Espero que mi respuesta te sea de ayuda.
Saludos,
Fernando Votos: 3 - Link respuesta -
Fecha: 09-06-2015 10:05:18 Pero PyAfipWs no es PHP.
Desde PHP es 100% posible.
Si alguien mas quiere aportar sobre este tema la pregunta sigue abierta.
Saludos,
Fernando Votos: 2 - Link respuesta -
Fecha: 10-06-2015 13:05:29 Hola encontre este codigo para conectarse con el web service. Si alguien puede agregar algo por la implementación seria de gran ayuda. por lo que estuve leyendo la impresión de la factura no tiene validez al cliente solo le sirve el numero de autorización, importe para ser discriminada, por lo que lleva que la factura impresa no tiene porque ser algo estandarizado es meramente informativa.
<?php # Ejemplo de Uso de Interface COM con Web Services AFIP (PyAfipWs) # 2009 (C) Mariano Reingart <mariano@nsis.com.ar> try { # Crear objeto interface Web Service Autenticación y Autorización $WSAA = new COM('WSAA'); # Generar un Ticket de Requerimiento de Acceso (TRA) $tra = $WSAA->CreateTRA() ; # Especificar la ubicacion de los archivos certificado y clave privada $path = getcwd() . "\\"; # Certificado: certificado es el firmado por la AFIP # ClavePrivada: la clave privada usada para crear el certificado $Certificado = "ghf.crt"; // certificado de prueba $ClavePrivada = "ghf.key"; // clave privada de prueba # Generar el mensaje firmado (CMS) ; $cms = $WSAA->SignTRA($tra, $path . $Certificado, $path . $ClavePrivada); # Llamar al web service para autenticar $ta = $WSAA->CallWSAA($cms); // homologación #$$ta = $WSAA->CallWSAA($cms, "https://wsaa.afip.gov.ar/ws/services/LoginCms") # producción echo "Token de Acceso: $WSAA->Token \n"; echo "Sing de Acceso: $WSAA->Sign \n"; # Crear objeto interface Web Service de Factura Electrónica $WSFE = new COM('WSFE') ; # Setear tocken y sing de autorización (pasos previos) Y CUIT del emisor $WSFE->Token = $WSAA->Token; $WSFE->Sign = $WSAA->Sign; $WSFE->Cuit = "23111111113"; # Conectar al Servicio Web de Facturación $ok = $WSFE->Conectar(); // pruebas #$ok = WSFE.Conectar("https://wsw.afip.gov.ar/wsfev1/service.asmx"); # producción # Llamo a un servicio nulo, para obtener el estado del servidor (opcional) $WSFE->Dummy(); echo "appserver status $WSFE->AppServerStatus \n"; echo "dbserver status $WSFE->DbServerStatus \n"; echo "authserver status $WSFE->AuthServerStatus \n"; # Recupera cantidad máxima de registros (opcional) $qty = $WSFE->RecuperarQty(); # Recupera último número de secuencia ID $LastId = $WSFE->UltNro(); # Recupero último número de comprobante para un punto de venta y tipo (opcional) $tipo_cbte = 1; $punto_vta = 1; $LastCBTE = $WSFE->RecuperaLastCMP($punto_vta, $tipo_cbte); # Establezco los valores de la factura o lote a autorizar: $Fecha = date("Ymd"); echo "Fecha $Fecha \n"; $id = $LastId + 1; $presta_serv = 1; $tipo_doc = 80; $nro_doc = "23111111113"; $cbt_desde = $LastCBTE + 1; $cbt_hasta = $LastCBTE + 1; $imp_total = "121.00"; $imp_tot_conc = "0.00"; $imp_neto = "100.00"; $impto_liq = "21.00"; $impto_liq_rni = "0.00"; $imp_op_ex = "0.00"; $fecha_cbte = $Fecha; $fecha_venc_pago = $Fecha; # Fechas del período del servicio facturado (solo si presta_serv = 1) $fecha_serv_desde = $Fecha; $fecha_serv_hasta = $Fecha; # Llamo al WebService de Autorización para obtener el CAE $cae = $WSFE->Aut($id, $presta_serv, $tipo_doc, $nro_doc, $tipo_cbte, $punto_vta, $cbt_desde, $cbt_hasta, $imp_total, $imp_tot_conc, $imp_neto, $impto_liq, $impto_liq_rni, $imp_op_ex, $fecha_cbte, $fecha_venc_pago, $fecha_serv_desde, $fecha_serv_hasta); echo "LastId=$LastId \n"; echo "LastCBTE=$LastCBTE \n"; echo "CAE=$cae \n"; echo "Vencimiento $WSFE->Vencimiento"; # Fecha de vencimiento o vencimiento de la autorización # Verifico que no haya rechazo o advertencia al generar el CAE if ($cae=="") { echo "La página esta caida o la respuesta es inválida\n"; } elseif ($cae=="NULL" || $WSFE->Resultado!="A") { echo "No se asignó CAE (Rechazado). Motivos: $WSFE->Motivo \n"; } elseif ($WSFE->Motivo!="NULL" && $WSFE->Motivo!="00") { echo "Se asignó CAE pero con advertencias. Motivos: $WSFE->Motivos \n"; } } catch (Exception $e) { echo 'Excepción: ', $e->getMessage(), "\n"; } ?>Votos: 0 - Link respuesta -
Fecha: 20-07-2015 11:59:06 Hola dani la verdad que abandone un poco, estaba con otras y no llego a buen puerto, espero retomar pronto. Si tenes alguna novedad avisame. saludos Votos: 0 - Link respuesta
-
Fecha: 20-07-2015 12:33:28 Gente, si ingresan a la URL que les mencione anteriormente podran ver una explicación detallada de como implementar: http://www.afip.gob.ar/ws/
Básicamente hay que implementar el webservice de Autenticación y Autorización WSAA y el webservice para Factura Electrónica WSFE.
Aquí un ejemplo de código PHP para implementar el WSAA: http://www.afip.gob.ar/ws/WSAA/ejemplos/wsaa-client-php.zip
Aquí el manual de WSFE actualizado(versión 2.6): http://www.afip.gob.ar/fe/documentos/manualdesarrolladorCOMPGv26.pdf
No se bién cual es la duda o problema que estan teniendo para implementar estos servicios, tal vez si se explican les pueda ayudar.
Saludos,
Fernando
--------------------------------
Actualización 01/04/2021:
Nuevo manual para Factura Electrónica WSFE (versión 2.20): Manual para el desarollador V.2.20
Saludos y buen código! Votos: 2 - Link respuesta -
Fecha: 21-07-2015 17:38:56 La idea esta excelente, yo podría ayudar en lo que pueda en PHP no soy un experto pero trato de aprender día a día. En cuanto este con mas tiempo me pondré hacer pruebas, la realidad que quiero hacer algo para empezar a utilizarlo personalmente y luego si se puede hacer algo global todo es posible. La idea es compartir conocimientos es una manera de aprender. Votos: 0 - Link respuesta
-
Fecha: 26-08-2015 12:53:01 hola soy analista de sistemas y tengo un sistema de stock y facturación tradicional en php, el tema de la factura electrónica me rompió la cabeza, me prendo en este grupo para llegar a buen puerto. Quería saber si ya alguien pudo hacer algunas pruebas y cómo le ha ido. En el caso de que alguien quiera dedicarle como trabajo y necesita recursos ($) creo que somos varios los que podríamos aportar. Saludos.... Votos: 0 - Link respuesta
-
Fecha: 27-08-2015 16:14:49 Daniel, no entiendo tu comentario, estas sugiriendo que yo no quiero compartir algún conocimiento? si relees mis respuestas verás que ya indique como se hace, con manuales, etc etc, estoy colaborando dentro de lo que puedo... Votos: 4 - Link respuesta
-
Fecha: 28-08-2015 03:31:39 Daniel, como profesor doy los medios para que el alumno llegue a un buen resultado y me siento a su lado para ayudarle cuando se encuentra atascado, en este caso (por encontrarnos remotos) no me puedo "sentar al lado de nadie", pero me pongo a disposición para ayudarles en lo que puedan estar atascados, transcribo de mi respuesta anterior "No se bién cual es la duda o problema que estan teniendo para implementar estos servicios, tal vez si se explican les pueda ayudar.".
En Internet, en la AFIP, foros, etc etc, podrás encontrar muchos "datos", pero aquí te estoy "cantando la justa", dando "información", los pasos y manuales para que llegues a un buen puerto.
Si alguien esta esperando "que le haga la tarea", que siga esperando.... :)
Daniel, no estoy de acuerdo con tus comentarios, no me los tomo personales ni me enojan porque no me doy por aludido, pero si me parecen un tanto injusto hacia mi persona.
Saludos a todos y espero que comenten "en que se estan atascando" para que pueda seguir ayudandolos. Votos: 4 - Link respuesta -
Fecha: 28-08-2015 12:26:27 No nos desviemos del tema...
El que no sabe de xml y/o webservices que cargue una pregunta concreta y vemos todos de dar una buena respuesta.
Saludos y buen código! Votos: 3 - Link respuesta -
Fecha: 12-10-2015 11:46:41 Hola a todos,
Hay un ERP libre: Libertya www.libertya.org (está hecho en java) que entre sus características tiene:
Módulo de punto de venta con manejo de impresores fiscales (solo Argentina).
Facturación electrónica (solo Argentina y España por el momento).
http://www.libertya.org/producto/funcionalidad
No tiene POS
Pero lo bueno es hacerlo de cero, si Daniel es contador puede aportar mucho en cuanto a conocimiento de leyes fiscales y aplicaciones y todas las modificaciones habidas y por haber (que son muchas!!!).
Yo programo en PHP, con js, css3 y bootstrap, he programado aplicaciones de escritorio en python + pygtk, luego en pygobject, base de datos prefiero postgres por cuestiones de licencia, y ahora estoy probando con meteor.js, pero a PHP no lo dejo por nada!
Si quieren podemos hacer algo para ver en que se puede avanzar, me prendo.
Yo recién ahora estoy empezando a ver la lógica de la facturación electrónica (es decir, que se pide al servidor, de que forma, que devuelve, etc), y por lo que estoy viendo no es tan complicado, pero sí o sí hay trabajar web services!! no queda otra.
Saludos! Votos: 1 - Link respuesta -
Fecha: 12-10-2015 15:46:48 Hola, dejo un ejemplo en php de como usar el servicio de web service de factura electronica.
Lo publico como material de estudio. Es una adaptacion de fuentes encontrados en internet.
Factura Electronica
Saludos! Votos: 2 - Link respuesta -
Fecha: 13-10-2015 02:23:18 Gracias Pablo!
Muy bueno! Es simple y claro!
Daniel, te contesté por e-mail (servtdf)!
Saludos a todos! Votos: 0 - Link respuesta -
Fecha: 31-10-2015 12:22:50 hola Pablo bajé servtdf pero no me puedo conectar por nada al servidor de la afip, me sale
"Esta página web no está disponible
ERR_NAME_NOT_RESOLVED este error"
Qué puede ser? Desde ya muchas gracias.... Votos: 0 - Link respuesta -
Fecha: 17-12-2015 05:43:49 Hola, cómo va este tema? Actualmente tengo un sistema de gestion en Codeigniter y tengo que agregarle para realizar la facturacion electronica. Alguien tiene idea como implementarlo?
He encontrado una libreria, pero no se como implementarla en codeigniter https://bitbucket.org/tordek/afiphp/src
gracias Votos: 0 - Link respuesta -
Fecha: 08-01-2016 09:36:23 Hola:
Hay un código fuente muy simple de implementar que es pago pero tiene buen soporte. Lo ofrece Bit Ingeniería y es 100% php. Consiste en una clase y un ejemplo de su implementación. Quien les habla es el autor y se que muchos colegas buscan algo gratis pero realmente se requiere muchas horas de concimiento y experiencia para manejar las situaciones que se pueden presentar. Si alguno llega a considerar una opción valida un producto pago les dejo el link www.bitingenieria.com.ar.
Saludos Votos: 2 - Link respuesta -
Fecha: 09-01-2016 11:14:46 Yo actualmente uso Codeigniter, pero nunca hice nada con webservices, es por eso que no entiendo mucho. Votos: 0 - Link respuesta
-
Fecha: 21-01-2016 07:59:22 Como va el tema ? lo quiero implementar en Symfony viendo por donde arrancar ... Votos: 0 - Link respuesta
-
Fecha: 11-08-2016 11:09:23 Hola gente, me interesaria saber como va este hilo, actualmente tengo que implementar para un cliente toda la parte de la facturacion electronica, me gustaria saber como va, si alguien tiene codigo, etc..
Seguro que alguien ya renego como siempre pasa, si en algo puedo dar una mano bienvenido sea, ningun problema, quedo a disposicion, saludos ! Votos: 0 - Link respuesta -
Fecha: 10-09-2016 06:18:46 Hola a todos, les escribo este comentario para enlazar la reciente noticia sobre los certificados SSL para Factura Electrónica de AFIP. El día 01/11/2016 se renovarán los certificados SSL utilizados por los Webservices de AFIP. Los nuevos certificados utilizarán el algoritmo de encripción SHA-2.
Aquí la noticia completa: https://www.phpcentral.com/pregunta/694/renovacion-de-certificados-ssl-sha2-para-factura-electronica-en-argentina-afip
Saludos! Votos: 4 - Link respuesta -
Fecha: 04-10-2016 14:29:57 EL codigo de Pablo Funciona bien. y esta bastante comentado
No olviden cambiar el contenido de la variable $path a su conveniencia
Empiecen entrando en su pagina de AFIP ( nivel 3) y agreguen el ROL WSASS - Autogestion de Certificados - Homologacion y obtengan un certificado de desarrollador- Con ese no importa su calidad frente al iva pueden probar cualquier documento y tienen acceso a solicitar cualquier servicio web incluido el del padron de contribuyentes para obtener los datos a partir del cuit
(los certificados duran una semana + o - ) pero lo pueden volver a sacar con el mismo CSR
en el archivo index.php ( de pablo ) esta la parte que deben vincular con la logica de sus sistemas, con un poco de maña pueden encerralo todo en una funcion ( obtener CAE por ej, ) y con ese resultado actualizar sus bases de datos.
Esta faltando en el objeto la logica que permite tener la lista de las facturas enviadas a AFIP. ( cuando la tenga la publico )
si van a empezar probando con el wsaa-client.php ( el que te da AFIP para obtener el ticket de acceso) quiten las lineas que hacen referencia al proxy ( salvo que tengan uno )
hay otra forma de controlar los cuit y no necesita ticket de acceso enviando la consulta a este link
https://soa.afip.gob.ar/sr-padron/v2/persona/ ** numero de cuit o documento ****
retorna datos basicos en formato json pero para controlar y tomar nombre , domicilio , sirve
Suerte y no se rindan ! Votos: 2 - Link respuesta -
Fecha: 03-11-2016 16:45:03 Buenos dias.
Implementé el ejemplo que publico Pablo, y me esta dando el error 10008 y no se como solucionarlo.
Esta es el resultado
Error al obtener CAE Code: 10008 Msg: Campo CbteDesde se encuentre entre entre 1 y 99999999. Obs: Msg:
Ya he modificado el campo CbteDesde con distintos valores y el error sigue.
Alguna sugerencia:
Gracias. Votos: 0 - Link respuesta -
Fecha: 04-11-2016 04:15:35 Buenos Días.
Siguiendo con este tema, estuve analizando el código fuente y me encuentro lo siguiente en el modulo : de wsfev1.class.php:
array( 'Concepto' => $regfe['Concepto'], 'DocTipo' => $regfe['DocTipo'], 'DocNro' => $regfe['DocNro'], 'CbteDesde' => $cbte, 'CbteHasta' => $cbte, 'CbteFch' => $regfe['CbteFch'], 'ImpNeto' => $regfe['ImpNeto'], 'ImpTotConc' => $regfe['ImpTotConc'],
Todas la variables salen del array $regfe, menos CbteDesde y CbteHasta, las de mi problema, entonces me fui al index.php y me encuentro con los siguiente:
$regfe['DocNro']=12000000003; //$regfe['CbteDesde']=$cbte; // nro de comprobante desde (para cuando es lote) //$regfe['CbteHasta']=$cbte; // nro de comprobante hasta (para cuando es lote) $regfe['CbteFch']=date('Ymd'); // fecha emision de factura
Están comentadas las dos lineas, no se porque!!, entonces habilité estas lineas de index.php con:
$regfe['CbteDesde']=6; // $cbte; // nro de comprobante desde (para cuando es lote) $regfe['CbteHasta']=6; // $cbte; // nro de comprobante hasta (para cuando es lote)
y en el modulo wsfe1.class.php con
'CbteDesde' => $regfe['CbteDesde'], // $cbte, 'CbteHasta' => $regfe['CbteHasta'], //$cbte,
y de esta forma cambio la situación, el error que me da ahora es el siguiente:
TA expiration:2016-11-04T00:16:12.275-03:00 Error al obtener el ultimo numero autorizado Code: 600 Msg: ValidacionDeToken: No validaron las fechas del token GenTime, ExpTime, NowUTC: 1478186112 (11/3/2016 3:14:42 PM), 1478229372 (11/4/2016 3:16:12 AM), 11/4/2016 12:52:33 PM Obs: Msg:
Aclaro que estas son mis primeras pruebas con este tema, tengo conocimientos básicos de php, soy programador cobol y la idea es interactuar entre cobol y php para incorporar la facturación electrónica a mis sistemas.
Compartiré mis avance con ustedes.
Espero sus comentario.
Saludos. Votos: 0 - Link respuesta -
Fecha: 04-11-2016 04:55:04 Hola Julio.
Si programas Cobol podrías usar un ocx como feafip. Hay ejemplos de código en el paquete de pruebas muy sencillos. Tenelo en cuenta.
Sobre el problema que tenes verifica que la fecha de expiracion no supere en 12 horas la fecha de generación en el ticket.
Saludos
Abel Miranda
Bit Ingeniería Votos: 1 - Link respuesta -
Fecha: 04-11-2016 05:41:42 Julio,
primero deberias hacer funcionar el ejemplo tal como esta y ahi depurar todos los posibles errores.
Solo como aclaracion, ese nro de comprobante es el ultimo comprobante (registrado en el servidor de la afip) mas uno.
En el ejemplo lo calcula en esta linea:
$nro = $wsfev1->FECompUltimoAutorizado($ptovta, $tipocbte); $nro1 = $nro + 1;
y despues llama a la funcion para la obtencion del CAE utilizando es numero de comprobante:
$cae = $wsfev1->FECAESolicitar($nro1, // ultimo numero de comprobante autorizado mas uno $ptovta, // el punto de venta $regfe, // los datos a facturar $regfeasoc, $regfetrib, $regfeiva );
Saludos,
Pablo Votos: 3 - Link respuesta -
Fecha: 04-11-2016 08:08:49 Gracias Abel y Pablo, ambos tenían razón.
En el caso de la expiración del TA, hay un error en la pregunta por la fecha de hoy, y en cuanto al numero de comprobante, Pablo, por ser la primera vez que mi CUIT pide una autorización, entiendo que por ese motivo NO ENCUENTRA el UltimoComprobanteAutorizado en cuyo caso el Numero de comprobante debería ser el 1, y según mi razonamiento el campo CbteDesde y CbteHasta, también debería ser 1, pero aparentemente mi razonamiento no es el correcto, pero yo creo que por ahí anda el tema del ultimo error.
Error al obtener CAE
Code:
Msg:
Obs: 10015
Msg: El campo DocNro es invalido. Votos: 0 - Link respuesta -
Fecha: 04-11-2016 12:22:25 Pablo. Para el caso del error que me preguntabas es porque el servicio web afip esta esperando un valor numerico ( el $regfe no llega como valor numerico), puedes tranformarlo con intval(), yo no lo uso dado que pido CAE unico para c/ factura ( nunca podras pedir lote cuando sea Factura A que es el caso del ejemplo de pablo), por lo que te conviene ingresarle un valor 1 para CbteDesde y CbteHasta directamente. Para el comprobante nro 1 siempre va a dar error si usas la funcion de ultimo aprobado para iniciar el siguiente, pero en ese caso puedes jugarte a la factura 1 o usar la funcion de consulta
******* Manual del desarrollador 2.8 AFIP *******(imprescindible leer este manual)*******
4.19 Método para consultar Comprobantes Emitidos y su código (FECompConsultar)
Esta operación permite consultar mediante tipo, numero de comprobante y punto de venta los datos
de un comprobante ya emitido. Dentro de los datos del comprobante resultante se obtiene el tipo de
emisión utilizado para generar el código de autorización.
********************************************************
que todavia tengo pendiente de desarrollar pero que es muy necesaria dado que en algun el servicio web puede otorgarte CAE pero darte un timeout en la respuesta y como a vos te termina dando error en tu sistema la volves a solicitar y terminas haciendo 2 facturas iguales ( no repetidas porque van a tener numeros consecutivos ) - que en rigor de verdad quedaron duplicadas y eso te puede ocasionar una reclamacion de AFIP por el iva no ingresado ( ojo !) por eso no se si es saludable usar directamente ese metodo de asignacion sin verificar ( por lo menos para caso de error ) o llevar un control propio para advertir esa situacion,
El otro problema que te vas a encontrar es pasarle varias alicuotas de iva....
Rompete un poco la cabeza a ver si lo resolves, yo lo resolvi -- un poco desprolijo--- pero si no podes hacerlo te cuento como. Votos: 1 - Link respuesta -
Fecha: 04-11-2016 15:31:05 RESUELTOOOOO!!!!!!!!
Gracias Pablo, Abel y Carlos.
Yo estaba confundiendo Numero de Comprobante con Numero de documento (DocNro), pensaba que este numero era el numero de factura que la afip le asignaba a mi solicitud, cuendo en realidad DocNro se refiere al CUIT DEL COMPRADORRRR.
Aquí la respuesta:
Ok
Nro: 1
Cae: 66450436705814
Fecha Vto: 20161115
Ahora, este CAE, se tiene que imprimir en la factura y traducirlo a código de barras?
Saludos. Votos: 1 - Link respuesta -
Fecha: 04-11-2016 19:05:06 Julio, no sé si lo resolviste pero podes hacerlo con Zend Framework el código de barras (Zend/Barcode):
$barcodeOptions = array( 'text' => $codigo, 'barHeight' => 24, 'factor' => 1.2, 'fontSize' => 12, 'drawText' => true ); $rendererOptions = array(); $imageRenderer = Barcode::factory( 'code25interleaved', 'image', $barcodeOptions, $rendererOptions )->draw();
Despues el generado del pdf lo haces con domPdf por ej.
Espero te sirva... Yo lo estoy implementando sobre un proyecto en Symfony 1.4 (viejito) pero mi idea es migrar esta parte a Symfony 2.8|3.0 y convertirlo en un pequeño servicio Rest para usarlo desde cualquier otro desarrollo.
Saludos,
Diego Votos: 1 - Link respuesta -
Fecha: 05-11-2016 06:37:44 Una vez que obtuviste el CAE y la fecha de vencimiento, el codigo de barras que hay que imprimir en el comprobante esta conformado por:
cuit del cliente + tipo de comprobante + prefijo punto de venta + cae + vencimiento de cae + digito veriticador (hay una funcion para calcular este digito).
Para imprimir el codigo de barras uso la clase fpdf y la fuente interleaved 2 of 5 (i25).
Hay varios ejemplos en internet sobre fpdf y i25.
Ahora no lo tengo a mano, pero si necesitas vemos la forma de pasarte la rutina que arma el codigo de barras una vez que tenes el cae.
Saludos,
Pablo Votos: 1 - Link respuesta -
Fecha: 05-11-2016 07:55:43 Gracias Pablo por la info, como comenté antes, estoy interactuando con cobol+php, el codigo de barras la armo como indicaste e imprimo la factura con PowerForm.
Gracias por la colaboracion. Votos: 1 - Link respuesta -
Fecha: 10-11-2016 06:33:59 Buenos días gente.
Continuando con este tema de la factura electrónica, estoy parametrizando los procedimientos para introducirlos en mi sistema.
Les cuento, en el archivo index.php, incluí en la cabecera include('factura.php');, bien, este archivo es generado por el sistema de facturación con todas las variables cargadas con valores de la factura a imprimir, y esta funcionando bien, en el caso del CUIT del emisor de la factura, esta variable se usa en la clase wsfev1.class.php, y cuando hago referencia a la variable incluida en factura.php, me da un error, yo supongo que por ser una clase tengo que referenciarla de otra manera, de todas maneras para mis pruebas lo dejo con un valor fijo, ustedes que son expertos en php me dirán como hacerlo, mientras sigo estudiando este lenguaje que cada vez me atrapa mas.
Saludos. Votos: 0 - Link respuesta -
Fecha: 10-11-2016 12:28:07 Pablo , no se si entiendo bien lo que estas haciendo, pero me da la impresion que queres hacerle llegar tus variables dinamicas desde un include y esa no es la forma para php, se las podes hacer llegar desde un $_POST, $_GET o en todo caso como variable $_SESSION Votos: 0 - Link respuesta
-
Fecha: 14-11-2016 10:43:34 Es posible, con este código que anda dando vueltas, que en la factura figuren varios conceptos (que queden discriminados en la factura).
Por ej:
1 - Tarjeta de memoria - $100
1 - Pendrive - $200
2 - Resmas de papel - $100 c/u
...
Gracias,
César. Votos: 0 - Link respuesta -
Fecha: 14-11-2016 12:17:39 Cesar , la factura que hagas es independiente de la data que te solicita AFIP. Esta es la modalidad para contribuyentes normales ( factura sin detalle ), claro que vas a tener que conservar la informacion que emitas en las facturas , pero al servicio web le vas a enviar una informacion resumida ( especifica de las alicuotas de iva, cuits comprador ... etc ). El "codigo que anda dando vueltas " es la conexion con el web service, no la logica de la factura en si Votos: 1 - Link respuesta
-
Fecha: 14-11-2016 15:52:59 Gracias Carlos por la pronta respuesta. Y con el tema del iva como sería si dentro de una misma factura tenes productos con dos ivas diferentes y se hace la factura con la información resumida.
Para tener el detalle se puede utilizar esta conexión con el web service, haciéndole alguna modificación, o utiliza otra modalidad/forma de manejar los datos.
Gracias,
César. Votos: 0 - Link respuesta -
Fecha: 15-11-2016 02:46:43 Cesar, lo que el sistema web te va requerir son totales de iva por alicuota utilizada y sus valores netos, retenciones ...etc.
El almacenamiento de la factura en esta modalidad ( recel creo) corresponde al contribuyente.
En dos palabras , vos te haces cargo de almacenar tus copias digitales (detalladas claro), lo que hace el sistema es otorgarte un CAE para esa factura que vos lo estampas.
Existe una lista en afip que vos podes consultar acerca de los datos basicos de la factura (nro , cuit comprador, importes... ) pero es a efectos restrictivos ( que no hagas copias no autorizadas), Se puede consultar con un servicio web pero no esta desarrollado en la rutina de pablo Votos: 1 - Link respuesta -
Fecha: 15-11-2016 05:04:33 Cesar,
el codigo que esta armado como ejemplo solo toma un IVA, si necesitas pasar a la afip mas de un IVA hay que modificar el codigo. Lo mismo con los items de la factura, si necesitas discriminar cada producto y cantidad hay que modificar el ejemplo.
Para estas modificaciones hay que leer el manual que provee la afip del webservice y agregar los campos al ejemplo.
Saludos,
Pablo Votos: 1 - Link respuesta -
Fecha: 15-11-2016 05:08:54 Carlos,
esta perfecto y muy claro lo que explicaste en cuanto al ejemplo del web service.
Aunque segun el tipo de contribuyente hay casos en que hay que detallar los items y discriminar mas de un IVA.
Lo mismo si la factura es de exportacion, hay que detallar varios campos mas.
Saludos,
Pablo Votos: 1 - Link respuesta -
Fecha: 16-11-2016 02:05:42 Es cierto Pablo, aunque son casos algo mas especificos, incluso algunos son por orden especifica de AFIP y utilizan otros servicios web y no usan cae sino CAEA u otras locas siglas.
Para los que quieran ( deben... ) profundizar les dejo la fuente.
****************************************
Todos son numero de RG.AFIP.
***************************************
Regimen General ( 2485)
Exportadore (2758)
incentivos inversion local (2754)
Bienes de Capital (2557)
Polizas de Caucion (2668)
Sujetos Nominados obligados a factura electronica (2904)
Codigo de Autorizacion anticipada CAEA (2926 y 2969 )
Sujeto que contratan con la Administracion Nacional ( 2853)
Sujetos con control estatal (2918)
Sujetos que presten servicios de reservas de Hoteleria y..... por cta de 3ros (2959)
Importadores (2975)
Regimenes de Promocion (3056)
Determinados Monotributistas (3067)
Prestadores de Servicios postales (3253)
Comercializacion de Bienes Usados no registrables (3411)
Determinadas Actividades y Sujetos alcanzados (3571)
Compraventa primaria de pescado y moluscos (3608)
Exportadores de servicios (3689)
Empresas Mineras y proveedores de ellas (3692)
Fabricantes y proveedores de Silobolsa (3745)
Temas generales de Facturacion (3749 y 3779 )
(1415) Esta es la norma madre de facturacion.
(100) -Codigos de Comprobantes admitidos
Deben saber que la facturas y todo su contenido esta sometido a medidas minimas y/o maximas que deben se respetadas
Creo que esto es basicamente la Ensalada a la que se deberia someter quien juegue a la facturacion Digital -creo que es valioso por eso se los dejo para que tengan en cuenta ante una solicitud el tipo al que esta sometido su cliente.
Como valor agregado de su trabajo deberian tener en cuenta la RG AFIP 3.685/2014 que establece un regimen de informacion de las facturas emitidas (y recibidas ) corre bajo SIAP y el diseño de registro del TXT de importacion esta a la vista y se puede imprimir. Si en sus bases de almacenamiento guardan los datos necesarios para la generacion de este archivo ( que basicamente son los que pide la Fac. electronica ) le daran un gran adicional a su sistema
Espero les sirva. Votos: 0 - Link respuesta -
Fecha: 29-11-2016 02:46:10 Hola, buenos días gente.
Y Carlos me encontré con lo que me comentabas:
"El otro problema que te vas a encontrar es pasarle varias alicuotas de iva...."
Tengo el caso de facturas con productos al 10,5% y otros al 21% de iva, se lo informo de distintas maneras y obtengo distintas respuesta, pero todas con error
Caso 1.
$impneto=00000028.84; $imptotconc=00000000.00; $impiva=00000004.15; $imptrib=00000000.00; $impopex=00000000.00; $imptotal=00000033.00; $fchservdesde=null ; $fchservhasta=null ; $fchvtopago=null ; $monid='PES'; $moncotiz=1; $idtrib=1; $desctrib='impuesto'; $baseimptrib=00000000.00; $alictrib=000.00; $importetrib=00000000.00; $idiva=4; $baseimpiva=00000018.10; $importeiva=00000001.90; $idiva=5; $baseimpiva=00000010.74; $importeiva=00000002.25;
Es este caso me informa que la suma de los netos no corresponde con el total informado, pero observo que en el xml del pedido (request) solo veo el ultimo iva informado (5).
La otra forma que usé es la siguiente:
$impneto=00000028.84; $imptotconc=00000000.00; $impiva=00000004.15; $imptrib=00000000.00; $impopex=00000000.00; $imptotal=00000033.00; $fchservdesde=null ; $fchservhasta=null ; $fchvtopago=null ; $monid='PES'; $moncotiz=1; $idtrib=1; $desctrib='impuesto'; $baseimptrib=00000000.00; $alictrib=000.00; $importetrib=00000000.00; $idiva[0]=4; $baseimpiva[0]=00000018.10; $importeiva[0]=00000001.90; $idiva[1]=5; $baseimpiva[1]=00000010.74; $importeiva[1]=00000002.25; ?>
En este caso me responde
<Msg>El campo Id en AlicIVA es obligatorio y debe ser alguno de los devueltos por el metodo FEParamGetTiposIva.</Msg>
Alguna sugerencia para solucionar este problema.
Gracias. Votos: 0 - Link respuesta -
Fecha: 29-11-2016 03:36:11 Julio,
modificaste la funcion FECAESolicitar para que reciba mas de un IVA?
'Iva' => array ( 'AlicIva' => array ( 'Id' => $regfeiva['Id'], 'BaseImp' => $regfeiva['BaseImp'], 'Importe' => $regfeiva['Importe'] ), ), ),
Me tengo que fijar bien, pero creo que la base imponible ($baseimpiva) tiene que ser igual al neto ($impneto).
Saludos,
Pablo Votos: 1 - Link respuesta -
Fecha: 30-11-2016 01:22:34 Gracias Pablo, en realidad no se me había ocurrido revisar lo que estaba funcionando, pensé que el error lo tenia en mis agregados.
Lo veo y les comento como fué.
Gracias. Votos: 1 - Link respuesta -
Fecha: 30-11-2016 03:09:59 Buen dia gente.
Estuve revisando en FECAESolicitar el tratamiento del iva, y a mi entender, ya esta contemplando la posibilidad de recibir varios IVA, les explico la mecánica que estoy usando, a lo mejor de esta manera puedan darme una mano para resolver esta situación:
1. En index.php coloque un "include('factura.php');", este archivo es generado dinámicamente por un sistema de facturación desarrollado en cobol.
2. Cuando la factura a imprimir tiene un solo iva, todo sale perfecto, obtengo el CAE sin problemas.
·. Cuando la factura a imprimir tiene MAS de un iva, me da el suguiente error:
Error al obtener CAE Code: Msg: Obs: 10019 Msg: El campo Id en AlicIVA es obligatorio y debe ser alguno de los devueltos por el metodo FEParamGetTiposIva.
Esta es lo que contiene el archivo factura.php:
<?php $ptovta=0123; $tipocbte=6; $concepto=1; $doctipo=99; $docnro=00000000000; $impneto=00000028.84; $imptotconc=00000000.00; $impiva=00000004.15; $imptrib=00000000.00; $impopex=00000000.00; $imptotal=00000032.99; $fchservdesde=null ; $fchservhasta=null ; $fchvtopago=null ; $monid='PES'; $moncotiz=1; $idtrib=1; $desctrib='impuesto'; $baseimptrib=00000000.00; $alictrib=000.00; $importetrib=00000000.00; $idiva=4; $baseimpiva=00000018.10; $importeiva=00000001.90; $idiva=5; $baseimpiva=00000010.74; $importeiva=00000002.25; ?>
Espero me puedan dar una mano con este tema.
Gracias. Votos: 0 - Link respuesta -
Fecha: 30-11-2016 04:15:09 Julio,
soy el autor de esa libreria afipfev1 y el ejemplo contempla solo un IVA.
La idea cuando publiqué ese ejemplo era ofrecer una base funcional como material de estudio y a partir de ahí, cada uno leyendo el manual de la afip pueda adaptarlo a sus necesidades.
Este webservice es un nivel avanzado de php.
Voy a tratar de armar y postear un ejemplo que contemple mas de un IVA.
Saludos,
Pablo Votos: 0 - Link respuesta -
Fecha: 02-12-2016 07:45:56 En realidad Pablo tu liberia potencialmente tiene posibilidades de enviar multiples alicuotas. Solo hay que enviarle la estructura correcta. Yo estuve cerca, pero como no lo logre y sabiendo lo que debia enviar, le hice trampa a tu objeto en forma transitoria, que como lo transitorio dura mas que lo definitivo, todavia no lo cambie. Aca va !
lo primero a saber Julio es que tus datos de iva deben llegar como una estructura ( array en este caso)
foreach($rows as $row) { $tneto += floatval($row['neto']); $tiva += floatval($row['iva']); $i++; $r_alic[$i]=floatval($row['alic_iva']); $r_base[$i]=floatval($row['neto']); $r_iva[$i]=floatval($row['iva']); }
como ves en esta rutina yo los cargo desde la base de datos porque la factura ya la tengo guardada ( solo me falta el CAI ) . En los primeros renglones aprovecho para obtener bien los totales neto e iva que te los pide el sistema y si no da igual ( tolerancia 0.001) te lo rechaza, abajo lo que guardo son los TOTALES de valores para cada alicuota (y TOTAL base imponible ) y el id_
(esto es para que arregles tu include ...)
con eso los descargo en las variales array que voy a enviar al objeto FECAESolicitar ....
asi ....
$regfeiva_id = array_values($r_alic); $regfeiva_BaseImp = array_values($r_base); $regfeiva_Importe = array_values($r_iva);
ahora lo llamo
$cae = $wsfev1->FECAESolicitar($nro1, // ultimo numero de comprobante autorizado mas uno $ptovta, // el punto de venta $regfe, // los datos a facturar $regfeasoc, $regfetrib, $regfeiva_id, $regfeiva_BaseImp, $regfeiva_Importe ); //<-- fijate que le agregue parametros !Votos: 0 - Link respuesta -
Fecha: 02-12-2016 07:52:00 Ahora estamos en wsfev1.class .... ( aca viene el zafarrancho que funciona pero .... )
public function FECAESolicitar($cbte, $ptovta, $regfe, $regfeasoc, $regfetrib, $regfeiva_id, $regfeiva_BaseImp, $regfeiva_Importe) { $k_alik=count($regfeiva_id); // Cantidad de alicuotas de iva que envio ( maximo 3) switch(intval($k_alik)){ case 1:{ ---------------------- break; } case 2:{ ---------------------- break; } case 3:{ $params = array( 'Auth' => array( 'Token' => $this->TA->credentials->token, 'Sign' => $this->TA->credentials->sign, 'Cuit' => self::CUIT ), 'FeCAEReq' => array( 'FeCabReq' => array( 'CantReg' => 1, 'PtoVta' => $ptovta, 'CbteTipo' => $regfe['CbteTipo'] ), 'FeDetReq' => array( 'FECAEDetRequest' => array( 'Concepto' => $regfe['Concepto'], 'DocTipo' => $regfe['DocTipo'], 'DocNro' => $regfe['DocNro'], 'CbteDesde' => $cbte, 'CbteHasta' => $cbte, 'CbteFch' => $regfe['CbteFch'], 'ImpNeto' => $regfe['ImpNeto'], 'ImpTotConc' => $regfe['ImpTotConc'], 'ImpIVA' => $regfe['ImpIVA'], 'ImpTrib' => $regfe['ImpTrib'], 'ImpOpEx' => $regfe['ImpOpEx'], 'ImpTotal' => $regfe['ImpTotal'], 'FchServDesde' => $regfe['FchServDesde'], //null 'FchServHasta' => $regfe['FchServHasta'], //null 'FchVtoPago' => $regfe['FchVtoPago'], //null 'MonId' => $regfe['MonId'], //PES 'MonCotiz' => $regfe['MonCotiz'], //1 'Tributos' => array( 'Tributo' => array ( 'Id' => $regfetrib['Id'], 'Desc' => $regfetrib['Desc'], 'BaseImp' => $regfetrib['BaseImp'], 'Alic' => $regfetrib['Alic'], 'Importe' => $regfetrib['Importe'] ), ), 'Iva' => array ( 'AlicIva' => array (array ( 'Id' => $regfeiva_id[0], 'BaseImp' => $regfeiva_BaseImp[0], 'Importe' => $regfeiva_Importe[0] ), array ( 'Id' => $regfeiva_id[1], 'BaseImp' => $regfeiva_BaseImp[1], 'Importe' => $regfeiva_Importe[1] ), array ( 'Id' => $regfeiva_id[2], 'BaseImp' => $regfeiva_BaseImp[2], 'Importe' => $regfeiva_Importe[2] ), ), ), ), ), ), ); break; } // fin 3 } // sin switch $results = $this->client->FECAESolicitar($params); $e = $this->_checkErrors($results, 'FECAESolicitar'); //asigno respuesta $resp_cae = $results->FECAESolicitarResult->FeDetResp->FECAEDetResponse->CAE; $resp_caefvto = $results->FECAESolicitarResult->FeDetResp->FECAEDetResponse->CAEFchVto; return $e == false ? Array( 'cae' => $resp_cae, 'fecha_vencimiento' => $resp_caefvto ): false; } //end function FECAESolicitarVotos: 0 - Link respuesta -
Fecha: 02-12-2016 08:03:05 bien ..... el case 1 y el case 2 son iguales al case 3 salvo por el array adicional en el iva ( [0], [1], [2]), si la estructura no es exacta al numero de alcuota da error asi que tuve que recurrir a repetir todo menos esas lineas
y son 3 porque en realidad las alicuotas usuales son 3 porque las otras 2 ( 5% y 2.5% ) corresponden a editores y vendedores de diarios y revistas asi que con 21$ - 10.5% - 27% alcanza. ( como se todo eso ... primero me recibi de Contador y despues de Analista programador )
Yo se que es feo, pero ya estaba excedido en los plazos y tenia que funcionar si o si.
Espero les sirva Votos: 1 - Link respuesta -
Fecha: 02-12-2016 09:52:35 Que bien Carlos!!! gracias por tomarte el tiempo y compartir una solución.
Hiciste la version para una, dos y tres alícuotas ivas. Solución temporaria para siempre.
Saludos,
Pablo Votos: 0 - Link respuesta -
Fecha: 29-12-2016 04:34:50 Por lo que entiendo, el código de conexión al web service (afipfev1), utiliza wsfev1, y quería saber si se puede utilizar el mismo código, haciéndole las modificaciones pertinentes, para utilizarlo con wsmtxca?.
Es muy complejo hacerlo?.
Gracias,
César. Votos: 0 - Link respuesta -
Fecha: 30-12-2016 06:46:52 Buenos dias gente.
Ya tengo listo el sistema con las pruebas realizadas en homologacion, ahora lo tengo que pasar a produccion.
Mi sistema va ha reemplazar a otro que tiene instalado mi cliente y por el cual no esta conforme, la duda mía es si pueden convivir por algunos días los dos sistemas en producción o NO?
Los Certificados que usé en homologacion, ya no sirven, tengo que generar unos nuevos con los datos de mi cliente, pero para ellos, tengo que dar de alta un nuevo certificado con los datos de mi cliente y una nueva autorización? Votos: 0 - Link respuesta -
Fecha: 30-12-2016 16:22:55 Consulta, para generar notas de creditos y debitos, tienen idea si es simplemente usar el mismo metodo pero con el codigo correspondiente? Votos: 0 - Link respuesta
-
Fecha: 01-01-2017 04:44:56 Tipos de comprobantes
Código Denominación 001 FACTURAS A 002 NOTAS DE DEBITO A 003 NOTAS DE CREDITO A 004 RECIBOS A 005 NOTAS DE VENTA AL CONTADO A 006 FACTURAS B 007 NOTAS DE DEBITO B 008 NOTAS DE CREDITO B 009 RECIBOS B 010 NOTAS DE VENTA AL CONTADO B 011 FACTURAS C 012 NOTAS DE DEBITO C 013 NOTAS DE CREDITO C 014 DOCUMENTO ADUANERO 015 RECIBOS C 016 NOTAS DE VENTA AL CONTADO C 019 FACTURAS DE EXPORTACION 020 NOTAS DE DEBITO POR OPERACIONES CON EL EXTERIOR 021 NOTAS DE CREDITO POR OPERACIONES CON EL EXTERIOR 022 FACTURAS - PERMISO EXPORTACION SIMPLIFICADO - DTO. 855/97 030 COMPROBANTES DE COMPRA DE BIENES USADOS 031 MANDATO - CONSIGNACION 032 COMPROBANTES PARA RECICLAR MATERIALES 034 COMPROBANTES A DEL APARTADO A INCISO F R G N 1415 035 COMPROBANTES B DEL ANEXO I, APARTADO A, INC. F), RG N° 1415 036 COMPROBANTES C DEL Anexo I, Apartado A, INC.F), R.G. N° 1415 037 NOTAS DE DEBITO O DOCUMENTO EQUIVALENTE QUE CUMPLAN CON LA R.G. N° 1415 038 NOTAS DE CREDITO O DOCMENTO EQUIVALENTE QUE CUMPLAN CON LA R.G. N° 1415 039 OTROS COMPROBANTES A QUE CUMPLEN CON LA R G 1415 040 OTROS COMPROBANTES B QUE CUMPLAN CON LA R.G. N° 1415 041 OTROS COMPROBANTES C QUE CUMPLAN CON LA R.G. N° 1415 050 RECIBO FACTURA A REGIMEN DE FACTURA DE CREDITO 051 FACTURAS M 052 NOTAS DE DEBITO M 053 NOTAS DE CREDITO M 054 RECIBOS M 055 NOTAS DE VENTA AL CONTADO M 056 COMPROBANTES M DEL ANEXO I APARTADO A INC F R G N 1415 057 OTROS COMPROBANTES M QUE CUMPLAN CON LA R G N 1415 058 CUENTAS DE VENTA Y LIQUIDO PRODUCTO M 059 LIQUIDACIONES M 060 CUENTAS DE VENTA Y LIQUIDO PRODUCTO A 061 CUENTAS DE VENTA Y LIQUIDO PRODUCTO B 063 LIQUIDACIONES A 064 LIQUIDACIONES B 065 NOTAS DE CREDITO DE COMPROBANTES CON COD. 34, 39, 58, 59, 60, 63, 96, 97 066 DESPACHO DE IMPORTACION 067 IMPORTACION DE SERVICIOS 068 LIQUIDACION C 070 RECIBOS FACTURA DE CREDITO 071 CREDITO FISCAL POR CONTRIBUCIONES PATRONALES 073 FORMULARIO 1116 RT 074 CARTA DE PORTE PARA EL TRANSPORTE AUTOMOTOR PARA GRANOS 075 CARTA DE PORTE PARA EL TRANSPORTE FERROVIARIO PARA GRANOS 077 078 079 080 COMPROBANTE DIARIO DE CIERRE (ZETA) 081 TIQUE FACTURA A CONTROLADORES FISCALES 082 TIQUE - FACTURA B 083 TIQUE 084 COMPROBANTE FACTURA DE SERVICIOS PUBLICOS INTERESES FINANCIEROS 085 NOTA DE CREDITO SERVICIOS PUBLICOS NOTA DE CREDITO CONTROLADORES FISCALES 086 NOTA DE DEBITO SERVICIOS PUBLICOS 087 OTROS COMPROBANTES - SERVICIOS DEL EXTERIOR 088 OTROS COMPROBANTES - DOCUMENTOS EXCEPTUADOS / REMITO ELECTRONICO 089 OTROS COMPROBANTES - DOCUMENTOS EXCEPTUADOS - NOTAS DE DEBITO / RESUMEN DE DATOS 090 OTROS COMPROBANTES - DOCUMENTOS EXCEPTUADOS - NOTAS DE CREDITO 091 REMITOS R 092 AJUSTES CONTABLES QUE INCREMENTAN EL DEBITO FISCAL 093 AJUSTES CONTABLES QUE DISMINUYEN EL DEBITO FISCAL 094 AJUSTES CONTABLES QUE INCREMENTAN EL CREDITO FISCAL 095 AJUSTES CONTABLES QUE DISMINUYEN EL CREDITO FISCAL 096 FORMULARIO 1116 B 097 FORMULARIO 1116 C 099 OTROS COMP QUE NO CUMPLEN CON LA R G 3419 Y SUS MODIF 101 AJUSTE ANUAL PROVENIENTE DE LA D J DEL IVA POSITIVO 102 AJUSTE ANUAL PROVENIENTE DE LA D J DEL IVA NEGATIVO 103 NOTA DE ASIGNACION 104 NOTA DE CREDITO DE ASIGNACION
Comprobantes Electrónico Pre-Impreso
Facturas A, B, C Si Para la copia original impresa si, para el electrónico no Remitos A, B, C No Sigue igual que ahora, por talonario numerado, con CAI y vencimiento Remitos X No Sigue igual que ahora, por talonario numerado, con CAI y vencimiento Recibos A, B, C Si Para la copia original impresa si, para el electrónico no Recibo X No Sigue igual que ahora, por talonario numerado, con CAI y vencimiento
Nota de crédito A, B, C Si Sigue igual que ahora, por talonario numerado, con CAI y vencimiento
Noda de débito A, B, C Si Sigue igual que ahora, por talonario numeado, con CAI Y vencimiento Votos: 1 - Link respuesta -
Fecha: 09-01-2017 04:15:23 Hola, estoy luchando con la factura con detalle wsmtxca. Estoy adaptando el código que se utiliza para wsfe. Me está tirando este error cuando quiero enviar el detalle de los items: "Elemento inválido: por favor verifique el nombre y/o ubicación del elemento key"
Tengo este código php en el que envío los datos:
'arrayItems' => array( 'item' => array ( 'unidadesMtx' => 123456, 'codigoMtx' => 0123456789913, 'codigo' => 'P0001', 'descripcion' => 'Descripcion del producto P0001', 'cantidad' => 1, 'codigoUnidadMedida' => 7, 'precioUnitario' => 100.00, 'importeBonificacion' => 0, 'codigoCondicionIVA' => 5, 'importeIVA' => 21.00, 'importeItem' => 121.00 ), ),
y me debería aparecer esto en el xml que se genera
<arrayItems> <item> <unidadesMtx>123456</unidadesMtx> <codigoMtx>0123456789913</codigoMtx> <codigo>P0001</codigo> <descripcion>Descripción del producto P0001<descripcion> <cantidad>1.00</cantidad> <codigoUnidadMedida>7</codigoUnidadMedida> <precioUnitario>100.00</precioUnitario> <importeBonificacion>0.00</importeBonificacion> <codigoCondicionIVA>5</codigoCondicionIVA> <importeIVA>21.00</importeIVA> <importeItem>121.00</importeItem> </item> </arrayItems>
pero genera este código xml:
<arrayItems> <item> <key>item</key> <value> <item> <key>unidadesMtx</key> <value>1</value> </item> <item> <key>codigoMtx</key> <value>342391</value> </item> . . . . </value> </item> </arrayItems>
Yo creo que estoy enviando algo mal, pero no se que.
Cualquier ayuda será bienvenida.
Gracias,
César. Votos: 0 - Link respuesta -
Fecha: 10-01-2017 08:18:48 Hola a todos estube leyendo todo la info que fueron poniendo y no puedo hacer que funcione!
si alguien me puedo decir donde esta el problema se lo voy a agradecer! Saludos a todos buen año!
este es el error que me da:
TA expiration:2017-01-10T14:54:02-03:00 Error al obtener el ultimo numero autorizado Code: 600 Msg: ValidacionDeToken: Error al verificar hash: VerificacionDeHash: Error al convertir de Base64 al token: Obs: Msg: Notice: Undefined variable: regfeasoc in C:\xampp\htdocs\Facturacion\facelec\index.php on line 93 Notice: Undefined property: stdClass::$FeDetResp in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 92 Notice: Trying to get property of non-object in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 92 Notice: Trying to get property of non-object in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 92 Notice: Trying to get property of non-object in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 92 Notice: Trying to get property of non-object in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 92 Notice: Undefined property: stdClass::$FeDetResp in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 212 Notice: Trying to get property of non-object in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 212 Notice: Trying to get property of non-object in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 212 Notice: Undefined property: stdClass::$FeDetResp in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 213 Notice: Trying to get property of non-object in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 213 Notice: Trying to get property of non-object in C:\xampp\htdocs\Facturacion\facelec\wsfev1.class.php on line 213 Error al obtener CAE Code: 600 Msg: ValidacionDeToken: Error al verificar hash: VerificacionDeHash: Error al convertir de Base64 al token: Obs: Msg: Error al obtener CAE Nro: 1 Cae: Fecha Vto:
Votos: 0 - Link respuesta -
Fecha: 16-01-2017 06:38:45 yo le compre el código a Abel Miranda <amiranda@bitingenieria.com.ar> hace casi un año y medio y no he tenido ningún problema. Siempre me dio soporte y respondio a las preguntas.
Esta desarrollado 100% sobre php por lo cual se puede ejecutar tanto en windows como en linux.
solamente tuve que modificar el php.ini por algunas librerías que se deben habilitar.
La pagina es http://www.bitingenieria.com.ar/ Votos: 0 - Link respuesta -
Fecha: 17-01-2017 13:49:19 Hola Matías yo también le compré el código a Miranda y facturo sin problema, el tema es que puedo realizar la Nota de Crédito, y le envío el código 003 pero me devuelve como si fuera una factura. Sigue la numeración de la facturación y supuestamente debería empezar con otra numeración. Te agradecería que me comentes si pudiste resolverlo y como. Votos: 0 - Link respuesta
-
Fecha: 19-01-2017 05:15:23 Hola, quería saber si alguno tenía idea si en la factura con detalle wsmtxca es necesario generar un código GTIN específico (para colocar en el codigoMtx) para cada producto o si se puede poner uno general para todos.
Gracias,
César. Votos: 0 - Link respuesta -
Fecha: 20-01-2017 09:50:56 Hola lalo.
No tuve ningún problema con la nota de crédito.
De echo para asegurarme que es certificado funcione bien siempre hago una factura y después una nota de crédito.
Los códigos ($TipoComp) que le paso son 3 para la A, 7 para la B y 12 para la C.
con esta sentencia recupero el ultimo numero
if (!$wsfe->RecuperaLastCMP($PtoVta, $TipoComp))
con esta sentencia relleno el pedido
$wsfe->AgregaFactura($TipoServicio, $tipoDocumento, $cabecera_cuit, $wsfe->RespUltNro + 1, $wsfe->RespUltNro + 1, $FechaComp, $cabecera_total, 0.00, $linea_importe, 0.00, $FechaDesde, $FechaHasta, $FechaVencimiento, "PES", 1);
y con esta pido la autorización
if ($wsfe->Autorizar($PtoVta, $TipoComp)) Votos: 0 - Link respuesta -
Fecha: 25-01-2017 06:09:39 Bueno dias.
Sigo lidiando con el pase a produccion.
Ya solucioné el tema de certificados (con intervención de la mesa de ayuda de afip), me faltaba crear la relación con mi cliente.
Después de eso me genera el ticket de autorización, pero después me da el siguiente error:
TA expiration:2017-01-25T21:21:01.567-03:00D:\wamp\www\ejemplo1\wsfev1.class.php:80 WSFE class. FaultString: soapenv:Server.userException org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
Pasé esta consulta a la mesa de ayuda y me dicen que esto puede ser un mensaje de error del aplicativos que estoy usando y no del ws.
Cualquier ayuda o sugerencia!!!!
Gracias. Votos: 0 - Link respuesta -
Fecha: 26-01-2017 04:33:07 Julio,
para produccion tenes que configurar lo siguiente:
1) Obtener la llave y certificado de produccion
2) Obtener archivo wsdl de produccion y guardarlo como wsfev1.wsdl (hay que sobreescribir el actual)
https://servicios1.afip.gov.ar/wsfev1/service.asmx?WSDL // obtencion archivo WSDL produccion
3) Obtener archivo wsdl de produccion y guardarlo como wsaa.wsdl (hay que sobreescribir el actual)
https://wsaa.afip.gov.ar/ws/services/LoginCms?WSDL para obtener WSDL produccion
4) en el archivo wsfev1.class.php modificar la variable WSFEURL con la url de produccion
const WSFEURL = "https://servicios1.afip.gov.ar/wsfev1/service.asmx"; // produccion
5) en el archivo wsaa.class.php modificar la variable URL con la url de produccion
const URL = "https://wsaa.afip.gov.ar/ws/services/LoginCms"; // produccion
6) Sincronizar la hora de la maquina con la de la afip time.afip.gov.ar
Si funcionaba en testing, haciendo estos cambios deberia funcionar en produccion.
Saludos,
Pablo Votos: 2 - Link respuesta -
Fecha: 26-01-2017 06:24:02 Asegúrate que la hora de la maquina de donde pedís la autorización sea correcta.A me ha dado error por diferencia menores a un minuto.
Saludos Votos: 2 - Link respuesta -
Fecha: 26-01-2017 07:08:04 Gracias Pablo.
Esta tarde aplico tus recomendaciones y les comento
Gracias.
Saludos. Votos: 1 - Link respuesta -
Fecha: 31-01-2017 04:18:53 Buenos días gente.
Pablo, implementé los cambios que sugeriste, y en principio, está funcionando, si bien todavía no obtengo un CAE, estoy seguro que esta funcionando, solo me está faltando un tramite administrativo para que quede bien.
Obtengo el TA sin problemas, pero al gestionar el CAE me responde lo siguiente:
TA expiration:2017-01-31T19:44:12.585-03:00
Error al obtener el ultimo numero autorizado
Code: 600
Msg: ValidacionDeToken: No apareció CUIT en lista de relaciones: 11223344556
Obs:
Msg:
Error al obtener CAE
Code: 600
Msg: ValidacionDeToken: No apareció CUIT en lista de relaciones: 11223344556
Obs:
Msg:
Error al obtener CAE
Nro: 1
Cae:
Fecha Vto:
El cuit 11223344556 es de mi cliente, el que está en WSFEV1.CLASS.PHP (const CUIT = 11223344556;), el que emite la factura y sinceramente ya estoy muy confundido con el "Administrador de Relaciones de clave Fiscal", la factura la estoy emitiendo desde mi maquina, generé la clave privada, generé el CSR, entré a la pagina de AFIP con el cuit de mi cliente, generé certificado, subiendo el CSR generado, después entré a "Administrador de Relaciones", "Nueva Relación", y relacioné. Autorizante: mi cliente, Representado: mis datos, Servicio: Factura Electrónica, después seleccioné en "Computador Fiscal", el certificado generado, y me dan los errores comentados arriba, después ingresé a la AFIP con mi cuit, hice lo mismo y me siguen dando el mismo error, algo estoy haciendo mal.
Yo se que esto es un error puramente administrativo y no de la aplicación, quiero hacerlo funcinar en mi maquina primero y luego ir a la maquina de mi cliente y hacer lo mismo, entiendo que lo generado con el openssl lo tengo que volver a hacer en esa maquina.
Cualquier sugerencia, bienvenida sea.
Gracias.
el cuit 11223344556 es ilustrativo. Votos: 0 - Link respuesta -
Fecha: 31-01-2017 05:02:15 a mi me daba error por el tipo de variable y lo solucione asi :
$cuit = (double) $cuit_facturador; Votos: 0 - Link respuesta -
Fecha: 31-01-2017 10:53:45 Gracias Matias, SOLUCIONADO!!!!!!!
el cuit de FEAuthRequest, debe quedar como string y el de FECabResponse debe quedar como Long.
Ya probe una factura A y una B.
Estoy EUFORICOOOO!!!!!!
Gracias Pablo, Matias y todos los que aportaron algo.
Ahora, como puede ser que la AFIP te entregue los WSDL con ese error!!!!.
Me falta resolver el tema de mas de un iva en el mismo comprobante, me voy a poner a estudiar el arreglo de Carlos, por ahora le recomendé a mi cliente que si aparecían productos con distintos ivas que realizen dos facturas hasta que solucione ese tema.
Saludos. Votos: 2 - Link respuesta -
Fecha: 31-01-2017 11:28:04 Yo tengo una función que es agregar factura y otra que es agregar IVA.
Cuando leo la factura, armo una tabla con los distintos IVA que tenga esa factura y después agrego uno por cada uno.
después pido la autorización.
En resumen
1 - agregar los datos de la factura - con el importe total y el (total - los ivas)
2 - agregar los distintos tipos de iva (una linea de iva por cada uno con su correspondiente importe e impuesto).
3 - Pedir autorización. Votos: 0 - Link respuesta -
Fecha: 14-02-2017 08:15:37 Buenos días gente, soy nuevo acá y tengo que implementar facturación electrónica. Por lo que veo, Julio modifico el código que compartió Pablo. Julio, habrá alguna posibilidad de que compartas el código completo?
Muchas gracias Votos: 0 - Link respuesta -
Fecha: 14-02-2017 19:05:37 Si Alejandro, mañana lo comparto, fueron dos o tres toques que los comente en su momento, pero mañana los comparto. Saludos. Votos: 1 - Link respuesta
-
Fecha: 16-02-2017 06:06:16 Dale, te encargo, ya que no estoy pudiendo hacer andar el original de Pablo. Votos: 0 - Link respuesta
-
Fecha: 20-02-2017 12:28:34 Muchas gracias a todos por los aportes... Pude hacerlo funcionar... obtuve el primer CAE... pero a la hora de obtener un segundo CAE me sale el siguiente error:
Error al obtener CAE
Code: 10016
Msg: El número o fecha del comprobante no se corresponde con el próximo a autorizar. Consultar metodo FECompUltimoAutorizado.
Obs:
Msg:
Alguien podria ayudarme? Saludos! Votos: 0 - Link respuesta -
Fecha: 20-02-2017 17:23:27 Hola a todos. Tengo un cliente que necesita que un sistema existente pueda emitir facturas legales de forma automatizada. Desconozco los procesos del lado Argentino y no tengo la experiencia en desarrollo que toque temas fiscales teniendo además poco tiempo para resolver con exactitud, por tanto les solicito en la mejor actitud lo siguiente:
Enviarle tres datos mínimos a una función: a) Total a pagar (float), b) concepto (texto), c) datos del cliente que hace la compra (un array), para lo cual necesitaría que la función se conecte al WS y me devuelva el ID del documento legal creado. (obviamente entiendo las implicaciones de certificados, llamadas asincronas y temas xml, estoy tratando de sintetizar lo que necesito)
Debido a que desconozco los procesos legales que me aseguren una factura legal válida les pido saber quien puede proveer este código y cuanto costaría, enviandome esta información a mi correo: christiansalazarh@gmail.com, o whatsapp +569 96493840
muchas gracias de antemano. Votos: 0 - Link respuesta -
Fecha: 21-02-2017 02:21:52 Cristian buen día, pontee en contacto con Abel de bitingenieria, yo se lo compre a el :
Abel Miranda
Bit Ingeniería
Haefreigue 1686 - Morón, Buenos Aires
Tel: +54(11) 4696 2162
cel: +54(911) 6937 5707 Votos: 1 - Link respuesta -
Fecha: 21-02-2017 03:17:55 Buen día gente.
Comparto lo prometido y como dije en su momento yo estoy usando estos módulos desde un sistema cobol, el cual genera un archivo (factura.php) el cual está incluido en el index.php, esto me está funcionando en homologación, para producción solo hay que cambiar las url's correspondientes y obtener los nuevos WSDL y tener en cuenta lo siguiente: el cuit de FEAuthRequest, debe quedar como string y el de FECabResponse debe quedar como Long.
https://drive.google.com/file/d/0B8gX3dJgU88bSFBwYkd4OE4xSVE/view?usp=sharing
Saludos. Votos: 2 - Link respuesta -
Fecha: 21-02-2017 03:43:50 Julio... en dónde cambias el tipo de datos de FEAuthRequest a string y el de FECabResponse a long?
Muchas gracias! Votos: 0 - Link respuesta -
Fecha: 21-02-2017 03:48:22 Muchas gracias por compartir el codigo. Saludos Votos: 0 - Link respuesta
-
-
Fecha: 21-02-2017 04:31:55 Aprovecho de agradecer a don @MatiasWernikle, y a otros (que como yo en otros foros) han ayudado a comprender esto, mi objetivo acá es aclarar puntos para que otros entiendan también, por tanto, si alguien puede responder a la enumeración que acá dejo sería de gran ayuda para otros también:
Todas las enumeraciones acá harán referencia al código que propuso don Sebastian,
codigo de ejemplo que usaré como referencia bajo la palabra codigo en negrita
1. Se necesita obtener credenciales para usar el ambiente de pruebas y desarrollo. Para lo cual se necesita que el cliente se inscriba en la AFIP con su "código fiscal". Podría alguien enumerar los pasos exactos para obtener las credenciales ? Se que los han puesto pero de forma muy separada y algo ambigua, por tanto colocarlos acá ayudará a que este sea un paso "atómico" que debe cumplirse y de éste obtener algo: "un par de archivos, las credenciales y un CODIGO de cliente".
2. De nuevo en referencia al codigo que ofrece don Sebas: donde dice que "la impresión de la factura no tiene validez". Esto me ha confundido. Si yo uso ese codigo para que el sistema cree una factura fiscal en la AFIP entonces: "no es valida" ? o en cambio "si lo es pero el hecho de imprimirla no es valido para presentarla como referencia de que la factura existe". En este último punto podria entender viendo el caso Chileno, en donde la impresión contiene un código de barras con un formato que incluye firmas etc para asegurar que lo impreso no ha sido alterado. En síntesis, este paso (generar un objeto remoto usando este código, generará un objeto válido ?
3. Para don @Antuan, quien tiene el conocimiento fiscal/contable, dado su respetable conocimiento contable, qué error(es) podria(n) invalidar la factura generada con este codigo.
4. Quienes opinen que el código no sirve. Podrian argumentar la razón de una manera clara ?
Bien, según el avance iré escribiendo un código en github para que sea utilizable por otros, haciendo siempre y respetando la referencia a este Post.
.) Votos: 0 - Link respuesta -
Fecha: 21-02-2017 05:00:18 En wsfev1.wsdl
<s:complexType name="FEAuthRequest"> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="Token" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="Sign" type="s:string" /> <s:element minOccurs="1" maxOccurs="1" name="Cuit" type="s:string" /> </s:sequence> </s:complexType>
Y
<s:complexType name="FECabResponse"> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="Cuit" type="s:long" /> <s:element minOccurs="1" maxOccurs="1" name="PtoVta" type="s:int" /> <s:element minOccurs="1" maxOccurs="1" name="CbteTipo" type="s:int" /> <s:element minOccurs="0" maxOccurs="1" name="FchProceso" type="s:string" /> <s:element minOccurs="1" maxOccurs="1" name="CantReg" type="s:int" /> <s:element minOccurs="0" maxOccurs="1" name="Resultado" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="Reproceso" type="s:string" /> </s:sequence> </s:complexType>Votos: 1 - Link respuesta -
Fecha: 21-02-2017 07:16:23 Muchas gracias Julio!
Ahora tengo otra duda... como hago para enviar el detalle de productos de la factura a AFIP? Es necesario o con solo obtener el CAE a través del monto total es suficiente?
Saludos! Votos: 0 - Link respuesta -
Fecha: 07-03-2017 12:13:53 Buenas tardes Julio, estoy haciendo mi "jardín de infantes" en PHP. Imaginate...Te quería preguntar si podés compartime un ejemplo de tu factura.php para usarla como el input que creo estas usando. Obvio con datos falsos, para yo poder poner alguno de mis clientes. Asimismo, para ejecutar tu código estoy usando PHP desktop Chrome, ya que según leí, eso me evita tener que instalar por ejemplo wampserver. Por ello te pido me digas, si es correcto el modo de ejecución que estoy usando. Por ultimo, en la ejecución me salen los siguientes errores:
Warning: include(factura.php): failed to open stream: No such file or directory in C:\ganancias\A2017\PHP\Instalador de PHP desktop\phpdesktop-chrome-47.5-rc-php-5.4.33\www\index.php on line 8 Warning: include(): Failed opening 'factura.php' for inclusion (include_path='.;C:\php\pear') in C:\ganancias\A2017\PHP\Instalador de PHP desktop\phpdesktop-chrome-47.5-rc-php-5.4.33\www\index.php on line 8 Warning: include(exceptionhandler.php): failed to open stream: No such file or directory in C:\ganancias\A2017\PHP\Instalador de PHP desktop\phpdesktop-chrome-47.5-rc-php-5.4.33\www\index.php on line 9 Warning: include(): Failed opening 'exceptionhandler.php' for inclusion (include_path='.;C:\php\pear') in C:\ganancias\A2017\PHP\Instalador de PHP desktop\phpdesktop-chrome-47.5-rc-php-5.4.33\www\index.php on line 9 Fatal error: Uncaught exception 'Exception' with message 'WSAA class. Faltan archivos necesarios para el funcionamiento' in C:\ganancias\A2017\PHP\Instalador de PHP desktop\phpdesktop-chrome-47.5-rc-php-5.4.33\www\wsaa.class.php:61 Stack trace: #0 C:\ganancias\A2017\PHP\Instalador de PHP desktop\phpdesktop-chrome-47.5-rc-php-5.4.33\www\index.php(16): WSAA->__construct() #1 {main} thrown in C:\ganancias\A2017\PHP\Instalador de PHP desktop\phpdesktop-chrome-47.5-rc-php-5.4.33\www\wsaa.class.php on line 61
Los primeros, entiendo que los solucionaría con tu ejemplo de factura.php. Los restantes, la verdad ni idea. Cualquier pista que me puedas dar, agradecido.
Muchas gracias, y eternamente agradecido por la ayuda que puedan brindarme Votos: 0 - Link respuesta -
Fecha: 07-04-2017 08:21:16 Buenas tardes a todos.
Estoy con un problema.
La rutina que tengo armada para obtener CAE funciona perfectamente hasta la versión 5.5.35 en la 5.6.2 ya no funciona.
Alguno tuvo este problema. alguien sabe que puede ser.
Dejo el codigo.
function Login($certificado, $clave, $urlWsaa) { ini_set("soap.wsdl_cache_enabled", "0"); if (!file_exists($certificado)) { exit("Failed to open " . $certificado . "\n"); // Si no tiene certificado } if (!file_exists($clave)) { exit("Failed to open " . $clave . "\n"); // Si no tiene clave } if (!file_exists(WSDLWSAA)) { exit("Failed to open " . WSDLWSAA . "\n"); // si no tiene direccion } $SERVICE = "wsfe"; $this->CreateTRA($SERVICE); echo('Service = '.$SERVICE);echo('</br>'); $CMS = $this->SignTRA($certificado, $clave); echo('CMS = '.$CMS);echo('</br>'); echo('urlWsaa = '.$urlWsaa);echo('</br>'); echo('Linea 115');echo('</br>'); $TA = simplexml_load_string($this->CallWSAA($CMS, $urlWsaa)); echo('Linea 117');echo('</br>'); echo('TA = '.$this->CallWSAA($CMS, $urlWsaa));echo('</br>'); $this->Token = $TA->credentials->token; $this->Sign = $TA->credentials->sign; echo('token = '.$TA->credentials->token);echo('</br>'); echo('sign = '.$TA->credentials->sign);echo('</br>'); return true; }
llega hasta donde dice echo('Linea 115');echo('</br>'), el simplexml_load_string da un error de SOAP Fault: (87)HTTP Could not connect to host
Saludos y gracias de antemano. Votos: 0 - Link respuesta -
Fecha: 07-04-2017 09:20:24 Hola Matias, por el error que comentas el problema lo tienes en los parámetros $CMS y $urlWsaa o dentro del método CallWSAA().
Por favor copia y pega el error completo.
Puedes simplificar la línea:
$TA = simplexml_load_string($this->CallWSAA($CMS, $urlWsaa));
Reemplazando con:
$stringXML = $this->CallWSAA($CMS, $urlWsaa); $TA = simplexml_load_string($stringXML);
De esta forma también podrás ver que devuelve el método CallWSAA(), analizando la variable $stringXML (idealmente con XDebug o con un simple var_dump())
Saludos y buen código! Votos: 1 - Link respuesta -
Fecha: 07-04-2017 10:50:26 Gracias Frenando por la pronta respuesta.
Separe la linea como sugeriste y indudablemente el error esta en callWSAA. llega hasta esa rutina y después da el error.
private function CallWSAA($CMS, $urlWsaa) { echo('entre');echo('</br>'); $wsaaClient = new SoapClient(WSDLWSAA, array( 'soap_version' => SOAP_1_2, 'location' => $urlWsaa, 'trace' => 1, 'exceptions' => 0 )); echo('entre 2');echo('</br>'); $results = $wsaaClient->loginCms(array('in0' => $CMS)); var_dump($results); echo('entre 3');echo('</br>'); file_put_contents("request-loginCms.xml", $wsaaClient->__getLastRequest()); file_put_contents("response-loginCms.xml", $wsaaClient->__getLastResponse()); if (is_soap_fault($results)) { exit("SOAP Fault: (87)" . $results->faultcode . "\n" . $results->faultstring . "\n"); } return ($results->loginCmsReturn); }
el dump muestra lo siguiente :
object(SoapFault)#4 (9) { ["message":protected]=> string(25) "Could not connect to host" ["string":"Exception":private]=> string(0) "" ["code":protected]=> int(0) ["file":protected]=> string(38) "/www/wgts/htdocs/abel/wsfe-client2.php" ["line":protected]=> int(85) ["trace":"Exception":private]=> array(5) { [0]=> array(4) { ["function"]=> string(11) "__doRequest" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(5) { [0]=> string(2666) " MIIG8wYJKoZIhvcNAQcCoIIG5DCCBuACAQExCzAJBgUrDgMCGgUAMIIBLwYJKoZI hvcNAQcBoIIBIASCARw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt OCI/Pg0KPGxvZ2luVGlja2V0UmVxdWVzdCB2ZXJzaW9uPSIxLjAiPjxoZWFkZXI+ PHVuaXF1ZUlkPjE0OTE1OTMzNDY8L3VuaXF1ZUlkPjxn......WJTGA== " [1]=> &string(49) "https://wsaahomo.afip.gov.ar/ws/services/LoginCms" } } [4]=> array(6) { ["file"]=> string(33) "/www/wgts/htdocs/abel/prueba2.php" ["line"]=> int(25) ["function"]=> string(5) "Login" ["class"]=> string(4) "WsFE" ["type"]=> string(2) "->" ["args"]=> array(3) { [0]=> &string(15) "certificado.crt" [1]=> &string(9) "clave.key" [2]=> &string(49) "https://wsaahomo.afip.gov.ar/ws/services/LoginCms" } } } ["previous":"Exception":private]=> NULL ["faultstring"]=> string(25) "Could not connect to host" ["faultcode"]=> string(4) "HTTP" }
En mi PC que tiene windows 10 y PHP 5.6.30 funciona bien. En el servidor que tengo contratado (elserver.com) no funciona y ellos dicen que es problema de version de PHP.
Lo de ellos es linux Votos: 0 - Link respuesta -
Fecha: 07-04-2017 13:36:05 Y que versión tienen ellos? PHP 7? seguramente te pueden habilitar una rama de 5.6.xx., perguntales....
Pudiste inspeccionar si los parametros $CMS y $urlWsaa son correctos?
Se llegan a generar los archivos request-loginCms.xml y response-loginCms.xml? Votos: 1 - Link respuesta -
Fecha: 08-04-2017 05:59:03 Ellos tienen diferentes versiones y en este momento lo tengo funcionando bien con la 5.5.35. Yo las puedo elegir en la consola.
Empieza a fallar en la 5.6.2.
Personalmente soy de la idea de que si algo funciona y cumple el objetivo no hay que tocarlo pero también me gusta estar actualizado en cuanto a las versiones de los lenguajes. En algún momento van a dejar de estar disponibles las versiones viejas.
Si se generan los xml pero el response-loginCms.xml lo genera vació.
http://wgts.com.ar/prueba/TRA.xml
http://wgts.com.ar/prueba/request-loginCms.xml
http://wgts.com.ar/prueba/response-loginCms.xml
estos son los modulos que utilizo.
el programa php que llama a la clase
<?php set_time_limit(0) ; echo('Autorizacion de factura ');echo('</br>'); include('wsfe-client2.php'); $nro = 0; $PtoVta = 004; $TipoComp = 1; // Factura A //$TipoComp = 11; // Factura C $FechaComp = date("Ymd"); $certificado = "certificado.crt"; // es el certificado obtendio de administrador del webservice a conectarse $clave = "clave.key"; // Es la clave generada an el open_ssl $cuit = 20939802593; $urlwsaa = URLWSAA; // La direccion a donde se conecta $wsfe = new WsFE(); $wsfe->CUIT = $cuit; $wsfe->setURL(URLWSW); // Importe total 900 // Bruto = 743.81 // iva = 156.20 if ($wsfe->Login($certificado, $clave, $urlwsaa)) { if (!$wsfe->RecuperaLastCMP($PtoVta, $TipoComp)) { echo ('error linea 23 '.$wsfe->ErrorDesc); } else { $wsfe->Reset(); //AgregaFactura ==> 1 , 80 , 30654633343 , 360 , 360 , 20170207 , 750.00 , 0.00 , 750 , 0 , , , , PES, 1) $wsfe->AgregaFactura(1, 80, 21111111113, $wsfe->RespUltNro + 1, $wsfe->RespUltNro + 1, $FechaComp, 12100.0, 0.0, 10000.0, 0.0, "", "", "", "PES", 1); $wsfe->AgregaIVA(5, 10000, 2100); if ($wsfe->Autorizar($PtoVta, $TipoComp)) { // echo ('linea 29 '.$wsfe->getXMLRequest()); die; // echo "Felicitaciones! CAE y Vencimiento y Numero:" . $wsfe->RespCAE . " " . $wsfe->RespVencimiento.' Fac '.$wsfe->RespUltNro; $nuevo_numero = $wsfe->RespUltNro; echo('*****************************************************************************************');echo('</br>'); echo('Tipo comp = '.$TipoComp);echo('</br>'); echo('C.U.I.T. Solicitante = '.$cuit);echo('</br>'); echo('Numero anterior = '.$nuevo_numero);echo('</br>'); $nuevo_numero = $nuevo_numero + 1; echo('CAE = '.$wsfe->RespCAE);echo('</br>'); echo('Vencimiento = '.$wsfe->RespVencimiento);echo('</br>'); //echo('Nro Factura = '.$wsfe->RespUltNro);echo('</br>'); echo('Nro Factura = '.$PtoVta.'-'.$nuevo_numero);echo('</br>'); } else { echo ('Error linea 41 '.' Error ('.$wsfe->ErrorCode.') '.$wsfe->ErrorDesc); } } } else { echo ('error linea 45 '.$wsfe->ErrorDesc); } /* (87)HTTP Internal Server Error */ ?>
y la clase completa.
<?php #============================================================================== define ("WSDLWSAA", "wsaa.wsdl"); define ("WSDLWSW", "wsfe.wsdl"); # cambiar para prueba define ("URLWSAA", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms"); define ("URLWSW", "https://wswhomo.afip.gov.ar/wsfev1/service.asmx"); # Cambiar para produccion #define ("URLWSAA", "https://wsaa.afip.gov.ar/ws/services/LoginCms"); #define ("URLWSW", "https://servicios1.afip.gov.ar/wsfev1/service.asmx"); #============================================================================== date_default_timezone_set('America/Buenos_Aires'); class WsFE { private $Token; private $Sign; public $CUIT; public $ErrorCode; public $ErrorDesc; public $RespCAE; public $RespVencimiento; public $RespResultado; public $RespUltNro; public $mw_comprobante; private $client; private $Request; private $Response; private function CreateTRA($SERVICE) { $TRA = new SimpleXMLElement( '<?xml version="1.0" encoding="UTF-8"?>' . '<loginTicketRequest version="1.0">' . '</loginTicketRequest>'); $TRA->addChild('header'); $TRA->header->addChild('uniqueId', date('U')); $TRA->header->addChild('generationTime', date('c', date('U') - 60)); $TRA->header->addChild('expirationTime', date('c', date('U') + 60)); $TRA->addChild('service', $SERVICE); $TRA->asXML('TRA.xml'); } private function SignTRA($certificado, $clave) { $currentPath = getcwd() . "/"; $STATUS = openssl_pkcs7_sign($currentPath . "TRA.xml", $currentPath . "TRA.tmp", "file://" . $currentPath . $certificado, array("file://" . $currentPath . $clave, ""), array(), !PKCS7_DETACHED ); if (!$STATUS) { exit("ERROR generating PKCS#7 signature\n"); } $inf = fopen($currentPath . "TRA.tmp", "r"); $i = 0; $CMS = ""; while (!feof($inf)) { $buffer = fgets($inf); if ($i++ >= 4) { $CMS .= $buffer; } } fclose($inf); unlink($currentPath . "TRA.tmp"); return ($CMS); } private function CallWSAA($CMS, $urlWsaa) { echo('entre');echo('</br>'); $wsaaClient = new SoapClient(WSDLWSAA, array( 'soap_version' => SOAP_1_2, 'location' => $urlWsaa, 'trace' => 1, 'exceptions' => 0 )); echo('entre 2');echo('</br>'); $results = $wsaaClient->loginCms(array('in0' => $CMS)); var_dump($results); echo('entre 3');echo('</br>'); file_put_contents("request-loginCms.xml", $wsaaClient->__getLastRequest()); file_put_contents("response-loginCms.xml", $wsaaClient->__getLastResponse()); if (is_soap_fault($results)) { exit("SOAP Fault: (87)" . $results->faultcode . "\n" . $results->faultstring . "\n"); } return ($results->loginCmsReturn); } private function ProcesaErrores($Errors) { $this->ErrorCode = $Errors->Err->Code; $this->ErrorDesc = $Errors->Err->Msg; } function Login($certificado, $clave, $urlWsaa) { ini_set("soap.wsdl_cache_enabled", "0"); if (!file_exists($certificado)) { exit("Failed to open " . $certificado . "\n"); // Si no tiene certificado } if (!file_exists($clave)) { exit("Failed to open " . $clave . "\n"); // Si no tiene clave } if (!file_exists(WSDLWSAA)) { exit("Failed to open " . WSDLWSAA . "\n"); // si no tiene direccion } $SERVICE = "wsfe"; $this->CreateTRA($SERVICE); echo('Service = '.$SERVICE);echo('</br>'); $CMS = $this->SignTRA($certificado, $clave); echo('CMS = '.$CMS);echo('</br>'); echo('urlWsaa = '.$urlWsaa);echo('</br>'); echo('Linea 115');echo('</br>'); //$TA = simplexml_load_string($this->CallWSAA($CMS, $urlWsaa)); $stringXML = $this->CallWSAA($CMS, $urlWsaa); echo('********************** var_dump ********************************');echo('</br>'); var_dump($stringXML); $TA = simplexml_load_string($stringXML); echo('Linea 117');echo('</br>'); echo('TA = '.$this->CallWSAA($CMS, $urlWsaa));echo('</br>'); $this->Token = $TA->credentials->token; $this->Sign = $TA->credentials->sign; echo('token = '.$TA->credentials->token);echo('</br>'); echo('sign = '.$TA->credentials->sign);echo('</br>'); return true; } function RecuperaLastCMP($PtoVta, $TipoComp) { $results = $this->client->FECompUltimoAutorizado( array('Auth' => array('Token' => $this->Token, 'Sign' => $this->Sign, 'Cuit' => $this->CUIT), 'PtoVta' => $PtoVta, 'CbteTipo' => $TipoComp)); if (isset($results->FECompUltimoAutorizadoResult->Errors)) { $this->procesaErrores($results->FECompUltimoAutorizadoResult->Errors); return false; } $this->RespUltNro = $results->FECompUltimoAutorizadoResult->CbteNro; return true; } function Reset() { $this->Request = array(); return; } function AgregaFactura($Concepto, $DocTipo, $DocNro, $CbteDesde, $CbteHasta, $CbteFch, $ImpTotal, $ImpTotalConc, $ImpNeto, $ImpOpEx, $FchServDesde, $FchServHasta, $FchVtoPago, $MonId, $MonCotiz) { $this->Request['Concepto'] = $Concepto; $this->Request['DocTipo'] = $DocTipo; $this->Request['DocNro'] = $DocNro; $this->Request['CbteDesde'] = $CbteDesde; $this->Request['CbteHasta'] = $CbteHasta; $this->Request['CbteFch'] = $CbteFch; $this->Request['ImpTotal'] = $ImpTotal; $this->Request['ImpTotConc'] = $ImpTotalConc; $this->Request['ImpNeto'] = $ImpNeto; $this->Request['ImpOpEx'] = $ImpOpEx; $this->Request['ImpTrib'] = 0; $this->Request['ImpIVA'] = 0; $this->Request['FchServDesde'] = $FchServDesde; $this->Request['FchServHasta'] = $FchServHasta; $this->Request['FchVtoPago'] = $FchVtoPago; $this->Request['MonId'] = $MonId; $this->Request['MonCotiz'] = $MonCotiz; } function AgregaIVA($Id, $BaseImp, $Importe) { $AlicIva = array('Id' => $Id, 'BaseImp' => $BaseImp, 'Importe' => $Importe); if (!isset($this->Request['Iva'])) { $this->Request['Iva'] = array('AlicIva' => array()); } $this->Request['Iva']['AlicIva'][] = $AlicIva; } //--------------------------------------- function AgregaTributo($Id, $Desc, $BaseImp, $Alic, $Importe) { $Tributo = array('Id' => $Id, 'Desc' => $Desc, 'BaseImp' => $BaseImp, 'Alic' => $Alic, 'Importe' => $Importe); if (!isset($this->Request['Tributos'])) { $this->Request['Tributos'] = array('Tributo' => array()); } $this->Request['Tributos']['Tributo'][] = $Tributo; foreach ($this->Request['Tributos']['Tributo'] as $key => $value) { $this->Request['ImpTrib'] = $this->Request['ImpTrib'] + $value['Importe']; } } //--------------------------------------- function Autorizar($PtoVta, $TipoComp) { //echo('Tipo comp = '.$TipoComp); if($TipoComp < 11){ foreach ($this->Request['Iva']['AlicIva'] as $key => $value) { $this->Request['ImpIVA'] = $this->Request['ImpIVA'] + $value['Importe']; } } $Request = array('Auth' => array( 'Token' => $this->Token, 'Sign' => $this->Sign, 'Cuit' => $this->CUIT), 'FeCAEReq' => array( 'FeCabReq' => array( 'CantReg' => 1, 'PtoVta' => $PtoVta, 'CbteTipo' => $TipoComp), 'FeDetReq' => array( 'FECAEDetRequest' => $this->Request) ) ); $results = $this->client->FECAESolicitar($Request); if (isset($results->FECAESolicitarResult->Errors)) { $this->ProcesaErrores($results->FECAESolicitarResult->Errors); return; } $this->RespResultado = $results->FECAESolicitarResult->FeCabResp->Resultado; if ($this->RespResultado == "A") { $this->RespCAE = $results->FECAESolicitarResult->FeDetResp->FECAEDetResponse->CAE; $this->RespVencimiento = $results->FECAESolicitarResult->FeDetResp->FECAEDetResponse->CAEFchVto; } if (isset($results->FECAESolicitarResult->FeDetResp->FECAEDetResponse->Observaciones) and sizeof($results->FECAESolicitarResult->FeDetResp->FECAEDetResponse->Observaciones->Obs) > 0) { $this->ErrorCode = $results->FECAESolicitarResult->FeDetResp->FECAEDetResponse->Observaciones->Obs->Code; $this->ErrorDesc = $results->FECAESolicitarResult->FeDetResp->FECAEDetResponse->Observaciones->Obs->Msg; } return ($this->RespResultado == "A"); } //------------------------------------------------- function CmpConsultar($TipoComp, $PtoVta, $nro, &$cbte) { $results = $this->client->FECompConsultar( array('Auth' => array('Token' => $this->Token, 'Sign' => $this->Sign, 'Cuit' => $this->CUIT), 'FeCompConsReq' => array('PtoVta' => $PtoVta, 'CbteTipo' => $TipoComp, 'CbteNro' => $nro) ) ); if (isset($results->FECompConsultarResult->Errors)) { $this->procesaErrores($results->FECompConsultarResult->Errors); return false; } $cbte = $results->FECompConsultarResult->ResultGet; $this->mw_comprobante = $results->FECompConsultarResult->CbteDesde; // matias return true; } function getXMLRequest() { return ($this->client->__getLastRequest()); } function setURL($URL) { $this->client = new SoapClient(WSDLWSW, array( 'soap_version' => SOAP_1_2, 'location' => $URL, 'trace' => 1, 'exceptions' => 0 ) ); } } ?>
estos son los wsdl que utiliza.
http://wgts.com.ar/prueba/wsfe.wsdl
http://wgts.com.ar/prueba/wsaa.wsdl Votos: 0 - Link respuesta -
-
Fecha: 08-04-2017 12:39:40 Hola Matías, por ser un tema de conexión lo primer que hice es ir a ver la documentación de la clase SoapClient y me encuentro con este comentario votado 9 veces, veamos:
Comentario transcrito:
After migrating to PHP 5.6.5, the soap 1.2 did not work anymore. So I solved the problem by adding optional parameters SSL.
My error: failed to load external entity
How to solve:
// options for ssl in php 5.6.5
$opts = array(
'ssl' => array('ciphers'=>'RC4-SHA', 'verify_peer'=>false, 'verify_peer_name'=>false)
);
// SOAP 1.2 client
$params = array ('encoding' => 'UTF-8', 'verifypeer' => false, 'verifyhost' => false, 'soap_version' => SOAP_1_2, 'trace' => 1, 'exceptions' => 1, "connection_timeout" => 180, 'stream_context' => stream_context_create($opts) );
$oSoapClient = new SoapClient ( $url . "?WSDL", $params );
Si bien el comentario no dice mucho, viendo los parametros opcionales verify_peer y verify_peer_name uno puede delucidar que la solución fue deshabilitar la verificación del certificado SSL utilizado, que esta habilitada por defecto desde PHP 5.6.0
5.6.0 Added peer_fingerprint and verify_peer_name. verify_peer default changed to TRUE., fuente Changelog PHP
Aquí la función con la modificación.
private function CallWSAA($CMS, $urlWsaa) { echo('entre'); echo('</br>'); $opts = array( 'ssl' => array('verify_peer' => false, 'verify_peer_name' => false) ); $wsaaClient = new SoapClient(WSDLWSAA, array( 'soap_version' => SOAP_1_2, 'location' => $urlWsaa, 'trace' => 1, 'exceptions' => 1, 'stream_context' => stream_context_create($opts) )); echo('entre 2'); echo('</br>'); $results = $wsaaClient->loginCms(array('in0' => $CMS)); var_dump($results); echo('entre 3'); echo('</br>'); file_put_contents("request-loginCms.xml", $wsaaClient->__getLastRequest()); file_put_contents("response-loginCms.xml", $wsaaClient->__getLastResponse()); if (is_soap_fault($results)) { exit("SOAP Fault: (87)" . $results->faultcode . "\n" . $results->faultstring . "\n"); } return ($results->loginCmsReturn); }
Nota: también cambie el parámetro 'exceptions' => 1 para poder tener mayor detalle del problema.
Espero que mi respuesta sea de ayuda.
Saludos y buen código! Votos: 1 - Link respuesta -
Fecha: 09-04-2017 09:06:52 Gracias Fernando. Ahora da errores en otros lugares.
Lo revisare más tranquilo y luego subo la solución y/o consultas. Votos: 2 - Link respuesta -
Fecha: 26-05-2017 11:40:14 Hola que tal, tengo hecho un sistema de stock con punto de venta etc en php mysql, estoy tratando de implementar lo de la factura electronica para sacar la ticketeadora manual, al momento de implementar el código de pablo con las mejoras que le van haciendo me da el error siguiente
Warning: file(/Applications/XAMPP/xamppfiles/htdocs/abmventas/factura_electronica/TA.xml): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/abmventas/factura_electronica/wsaa.class.php on line 172 Warning: openssl_pkcs7_sign(): error getting private key in /Applications/XAMPP/xamppfiles/htdocs/abmventas/factura_electronica/wsaa.class.php on line 102 /Applications/XAMPP/xamppfiles/htdocs/abmventas/factura_electronica/wsaa.class.php:105 ERROR generating PKCS#7 signature
está todo configurado donde están las keys y los dll, al principio ni me generaba el tra.xml pero con algunas modificaciones me lo genera sin problemas.
necesito ayuda u orientación ya que me urge, lo que me llama la atención es que el tra.xml me aparece esto
<?xml version="1.0" encoding="UTF-8"?> <loginTicketRequest version="1.0"> <header> <uniqueId>1495829907</uniqueId> <generationTime>2017-05-26T22:17:27+02:00</generationTime> <expirationTime>2017-05-26T22:19:27+02:00</expirationTime> </header> <service>wsfe</service> </loginTicketRequest>
el unique id no es el cuit de mi cliente y la hora no es correcta y no se como gestionar esto, no soy experto en php soy autodidacta y me está costando bastante.
necesito una guía para seguir que cambiar, tengan en cuenta que trabaja sobre un servidor xampp y estoy haciendo las pruebas a través de una mac
julio espero tu ayuda veo que lograste bastante, saludos
muchas gracias a todos Votos: 0 - Link respuesta -
Fecha: 30-05-2017 03:51:08 Hola Mariano. Por lo que puedo ver en la primera linea de tu error
Warning: file(/Applications/XAMPP/xamppfiles/htdocs/abmventas/factura_electronica/TA.xml): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/abmventas/factura_electronica/wsaa.class.php on line 172
hay un archivo o directorio que no existe. Esta linea de esta diciendo que el TA.xml o la ruta no existe o no es accesible (revisa los permisos).
Por otro lado decís que el "tra.xml" te lo genera. esto es un error de tipeo o están mal los nombres, no bebería ser TA.xml? También tené en cuenta que en php se diferencian las mayúsculas de las minúsculas. No es lo mismo TA.xml que ta.xml.
Saludos Votos: 1 - Link respuesta -
Fecha: 30-05-2017 04:20:54 Mariano,
me parece que es de configuracion el error.
"Sincronización de Clocks
La fecha y hora del computador que genera el TRA y recibe el TA deberá estar sincronizada.
Dicha sincronización se podrá realizar a través del protocolo NTP con el servidor “time.afip.gov.ar” u
otro servidor que preste dicho servicio."
Saludos,
Pablo Votos: 1 - Link respuesta -
Fecha: 30-05-2017 16:44:27 Hola Mariano, estuve leyendo tu consulta y veo que en la linea 172 de wsaa.class.php tiene "if(empty($this->TA)) {", yo no soy experto en php, pero lo que entiendo es que no puede generar TA a partir del TRA, tu dices que el TRA, existe, es porque la clase usa este archivo para obtener el TA.
Fijate que en la linea 18 de esta clase, tienes
const TA = "mixml/TA.xml"; # Archivo con el Token y Sign
en mi caso yo tengo generada la carpeta "mixml" en la capeta donde esta los *.php, tu problema puede estar en esta carpeta.
Después lo que también, es el warning:
Warning: openssl_pkcs7_sign(): error getting private key in
esto se puede deber a un problema de certificado, en que ambiente estas?
Saludos y suerte. Votos: 1 - Link respuesta -
Fecha: 31-05-2017 11:13:03 Hola que tal, estoy bajo mac, corriendo un servidor xampp, estuve toqueteando tanto que ahora no me funciona nada, voy a empezar de nuevo y vuelvo acá para, gracias por las respuestas seguro que voy a estar pronto por de regreso. Votos: 1 - Link respuesta
-
Fecha: 31-05-2017 17:23:52 Bueno, volví a revisar todo,
Primero: Matias no son necesarios los TRA.xml y TA.xml?
Segundo: desde mac generé la sincronizacion NTP con time.afip.gov.ar y agregue el codigo
date_default_timezone_set('America/Argentina/Buenos_Aires');
setlocale(LC_ALL, "es_RA");
para generar el time zone en el archivo ME DEJA UN MINUTO ATRASADO CON LA AFIP
Tercero: sigo con el mismo problema que antes jaja
el TRA.xml que se me genera es:
<?xml version="1.0" encoding="UTF-8"?> <loginTicketRequest version="1.0"> <header> <uniqueId>1496283408</uniqueId> <generationTime>2017-05-31T23:15:48-03:00</generationTime> <expirationTime>2017-05-31T23:17:48-03:00</expirationTime> </header> <service>wsfe</service> </loginTicketRequest>
el TA.xml no se me llega a generar y por lo pronto me da el error :
Warning: file(/Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/xml/TA.xml): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsaa.class.php on line 172
y el error
Warning: openssl_pkcs7_sign(): error getting private key in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsaa.class.php on line 102 /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsaa.class.php:105 ERROR generating PKCS#7 signature
por que no llega a este paso ya que no genera el TA.xml
estoy perdido necesito una manito si quieren les subo los archivos para que lo revisen
Tengo fe de que con su ayuda lo voy a terminar logrando, espero no causarles mucha molestia, no quiero terminar pagandole a alguien siempre logre resolverlo solo o por medio de estos maravillosos foros, saludos
Desde ya muchas gracias Matias Pablo y Julio
Saludos Votos: 0 - Link respuesta -
Fecha: 01-06-2017 04:28:06 Nunca trabaje con Mac.
En cuanto a la Hora, tengo un cliente que se le corre la hora sola un minuto y no encontre otro camino que corregirla en la PC. Votos: 1 - Link respuesta -
Fecha: 01-06-2017 05:32:42 Mariano,
me parece que tenés mal configurado la variable $path en los archivos wsaa.class.php y wsfev1.class.php.
Según lo que veo debería quedar así:
//path real del directorio principal terminado en / private $path = '/Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/';
Según entiendo no hace falta la instrucción setlocale, tratá de hacerlo funcionar siguiendo los pasos del archivo leeme.txt
Otra cosa, revisá los permisos de los directorios. No sé como es en MAC pero en linux hay que darle permisos para que la aplicacion pueda acceder al mismo.
Saludos,
Pablo Votos: 0 - Link respuesta -
Fecha: 01-06-2017 06:52:29 genial, gracias a todos el problema era el clock como dice matias, el problema es otro ahora
les muestro
TA expiration:2017-06-01T12:48:34-03:00
Error al obtener el ultimo numero autorizado
Code: 600
Msg: ValidacionDeToken: Parametro nulo o vacio (token)
Obs:
Msg:
voy a repetir los pasos de la registracion del crt y el key desde afip a ver que tal y les cuento, muchas gracias a todos Votos: 0 - Link respuesta -
Fecha: 01-06-2017 09:56:51 Si estas en modo prueba asegúrate que el crt y el key sean para prueba. No te sirven los que obtenes por los canales normales en la AFIP. Votos: 0 - Link respuesta
-
Fecha: 02-06-2017 12:54:20 Hola a todos, estoy usando el script de pablo y me costó un poco pero ya lo tengo funcionando. Ayer recien empecé con este tema de factura electrónica y tengo algunas dudas. Primero que nada genero bien el CAE (en testing) y tambien genero el codigo de barras. El script me da muchisimos erroresy surgen de la funcion _checkErrors del archivo wsfev1.class.php:
TA expiration:2017-06-02T21:22:57.880-03:00 Notice: Undefined property: stdClass::$Errors in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 85 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 85 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 85 Notice: Undefined property: stdClass::$Errors in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 102 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 102 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 102 Notice: Undefined property: stdClass::$Errors in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 103 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 103 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 103 Notice: Undefined property: stdClass::$Errors in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 106 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 106 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 106 FECompUltimoAutorizado: 1 Notice: Undefined property: stdClass::$Errors in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 85 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 85 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 85 Notice: Undefined property: stdClass::$Observaciones in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 92 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 92 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 92 Notice: Undefined property: stdClass::$Errors in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 102 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 102 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 102 Notice: Undefined property: stdClass::$Errors in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 103 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 103 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 103 Notice: Undefined property: stdClass::$Errors in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 106 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 106 Notice: Trying to get property of non-object in C:\xampp\htdocs\administ\afip\wsfev1.class.php on line 106 Ok Nro: 2 Cae: 67226485048828 Fecha Vto: 20170612 2729389204611000367226485048828201706126
Si comento las lineas que me generan errores, obviamente funciona todo OK pero pierdo la capacidad de mostrar error al usuario.
Agradecería cualquier tipo de ayuda, asimismo espero serles de ayuda yo también!
Saludos. Votos: 0 - Link respuesta -
Fecha: 02-06-2017 13:09:54 Mariano, ese problema lo tuve, no se me generaba el TA.xml. Di vueltas ayer hasta que esta mañana mas tranqui volví a generar los crt y key y empezó a andar.
Primero tenes que generar la clave privada:
openssl genrsa -out privada.key 2048
Despues el requerimiento de certificado:
openssl req -new -key privada.key -subj "/C=AR/O=subj_o/CN=subj_cn/serialNumber=CUIT subj_cuit" -out pedido.csr
Fijate usar el mismo nombre las dos veces (hay ejemplos erroneos que usan dos nombres de clave distintas)
El primer archivo (privada.key) lo pones en la carpeta de tu app donde estan los certificados. El contenido del segundo, lo copias y lo pegas en la pagina de afip y el resultado lo pegas en un archivo.crt.
Con eso debería solucionarse seguramente.
Saludos. Votos: 0 - Link respuesta -
Fecha: 04-06-2017 09:53:38 Hola como estan, nuevamente gracias por su tiempo y ayuda, sigo igual los genero los subo a la afip le doy permisos de wsfe . en https://wsass-homo.afip.gob.ar/wsass/portal/main.aspx, hay algo que me falta seguramente y no estoy viendo les pego la totalidad de lo que me aparece
Nuevo TA
Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 87 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 87 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 87 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 104 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 104 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 104 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 105 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 105 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 105 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 108 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 108 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 108
Error al obtener el ultimo numero autorizado
Code:
Msg:
Obs:
Msg:
Notice: Undefined variable: regfeasoc in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/index.php on line 92 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 87 Notice: Undefined property: stdClass::$Observaciones in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 94 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 94 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 94 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 104 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 105 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 108
Error al obtener CAE
Code:
Msg:
Obs:
Msg:
Error al obtener CAE
Nro: 1
Cae:
Fecha Vto:
en un momento me dio el error
/Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsaa.class.php:135 SOAP Fault: ns1:xml.generationTime.invalid: generationTime posee formato o dato inválido (ej: en el futuro o más de 24 horas de antigüedad) Votos: 0 - Link respuesta -
Fecha: 04-06-2017 11:15:09 Fijate en la carpeta xml la hora de generacion del TRA. Tiene 2 minutos de vida creo por ahi tenes el apache configurado en otra zona horaria. En el index.php usa set_locale y elegí buenos aires. busca en el manual de php como usarlo porque no me acuerdo no estoy en mi pc. Saludos.
pd: Si queres mandame ls archivos por mail y te los reviso. gustavoandriuolo@gmail.com Votos: 0 - Link respuesta -
Fecha: 04-06-2017 11:32:26 Bueno se me genera el tra y el ta.xml y funciona al obtener el CAE !!!! estoy muy feliz, el problema es que me siguen apareciendo errores alguien sabe que puede ser?
muchas gracias a todos por su ayuda y tiempo.
gustavo te comparti los archivos en drive, fijate si podes a lo mejor terminamos de solucionar el tema
TA expiration:2017-06-05T05:40:33.698-03:00
Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 85 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 85 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 85 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 102 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 102 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 102 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 103 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 103 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 103 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 106 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 106 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 106
FECompUltimoAutorizado: 18
Notice: Undefined variable: regfeasoc in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/index.php on line 92 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 85 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 85 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 85 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 102 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 102 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 102 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 103 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 103 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 103 Notice: Undefined property: stdClass::$Errors in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 106 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 106 Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/abmventas/feafip/wsfev1.class.php on line 106
Ok
Nro: 19
Cae: 67234485159677
Fecha Vto: 20170614 Votos: 0 - Link respuesta -
Fecha: 04-06-2017 12:54:53 Mariano, lo revisé y tenia muy poquitos errores. Te mando mail con el detalle... ya está andando. Primero tenias que poner la zona horaria argentina por la diferencia de hora, tamien estabas usando la el mismo cuit para facturar y emitir. Por ultimo la variable $cbte, cuando es el primero que se emite con ese tipo de comprobante o punto de venta, figura en 0. Afip pide que combrobante desde y hasta sea entre 1 y 999999. Asi que yo agregue este code al principio de la funcion FECAESolicitar en el wsfev1:
if ($cbte == "0") { $cbte = "1"; }
Saludos! Votos: 1 - Link respuesta -
Fecha: 04-06-2017 13:20:23 Una genialidad
ya lo tengo funcionando un genio la verdad 1000 puntos Votos: 0 - Link respuesta -
Fecha: 06-06-2017 05:21:17 Hola de nuevo, no se si hay alguien leyendo... pero estoy haciendo un script para consultar al padron de afip. Si uno hace la factura desde la web de afip, pide aclarar si el cliente es inscripto en iva, excento, etc. En los datos que enviamos por wsfev1 no veo que se requieran... es así?
En la consulta del padrón puedo ver que impuestos tiene activo pero no se como catalogarlos, o sea, se los códigos que trae (20- monotributo por ejemplo) pero a veces trae 4 o 5 impuestos distintos y aunque busque los equivalentes codigo/descripcion, no se como ponerlos como condicion frente al iva. Soy programados, no contador...
Saludos Votos: 0 - Link respuesta -
Fecha: 06-06-2017 11:23:49 Buenas tardes Gustavo. Yo utilizo la siguiente sentencia
https://soa.afip.gob.ar/sr-padron/v2/persona/30685849751
que me devuelve el siguinte json
{"success":true, "data": {"idPersona":30685849751,"tipoPersona":"JURIDICA", "tipoClave":"CUIT", "estadoClave":"ACTIVO", "nombre":"DIA ARGENTINA S A", "domicilioFiscal": {"direccion":"RIVADAVIA AV. 8875 Piso:1", "codPostal":"1407", "idProvincia":0}, "idDependencia":20, "mesCierre":12, "fechaInscripcion":"1995-10-27", "fechaContratoSocial":"1995-07-13", "impuestos":[10,25,30,103,211,218,301,353,461,466], "actividades":[472190], "caracterizaciones":[68,72,246,255,337]}}
dentro de este están todos los impuestos a los que esta inscripto. Por lo tanto si tu intención en saber si es responsable inscripto para generarle factura "A" debes contemplar que este el numero 30. Si no no esta inscripto en IVA y lleva factura "B".
Igual mi consejo es que siempre se de la opción de cambiarlo al dar de alta el cliente. Podes proponer pero yo no pondría las manos en el fuego y menos que son nuestra herramienta de trabajo Votos: 0 - Link respuesta -
Fecha: 06-06-2017 12:40:40 Gracias Matías, yo leo la respuesta y la formateo en campos editables, digamos para ahorrar un paso (es mas facil corroborar que cargar todo desde 0). La app esta pensada para mi y para algunos pequeños comercios que facturan frente al cliente. Sabrías como ver si es "excento" por ejemplo?
Saludos. Votos: 0 - Link respuesta -
Fecha: 06-06-2017 12:41:48 gustavo aca hay un feed cerrado resuelto aca mismo en phpcentral
http://www.phpcentral.com/pregunta/885/afip-argentina-consulta-a-la-api-del-padron-de-contribuyentes Votos: 0 - Link respuesta -
Fecha: 06-06-2017 15:08:23 Lo que no encuentro es para buscar info por dni, alguien sabe?
Digo por que si necesitamos facturar B mas de 1000$ afip pide que pidamos dni
saludos Votos: 0 - Link respuesta -
Fecha: 06-06-2017 16:52:52 Si pones https://soa.afip.gob.ar/sr-padron/v2/personas/13881508 te trae el cuil con el siguiente formato.
{"success":true,"data":[20138815081]}.
la diferencia con el metodo de DNI es la palabra personas en lugar de persona
(13881508 es el numero de dni lo reemplazas por el que necesites y luego buscas los datos por CUIL qu es igual que por DNI)
Saludos Votos: 1 - Link respuesta -
Fecha: 07-06-2017 06:21:28 Mariano, yo lo que busco es "personas" en vez de persona, si success:true, te devuelve cuit o cuil. Entonces se dispara la otra consulta a "persona" con ese cuit. Si tipoClave es CUIL, le asigno DNI, nombre y apellido. Si es tipoClave es CUIT, le saco numero de cuit, direccion, impuestos, etc, todo para que se rellene automáticamente los campos de la factura. Obvio que los campos los dejo editables, dejo que se llenen solos y luego corroboro antes de cerrar la factura.
Saludos.
Esta funcion consulta por numero cuil/cuit. Tenes que hacer otra que segun el resultado te dispare esta.
Abajo tengo el form con los compos de los datos. El form se llama "datos" (los reseteo cada vez que disparo la funcion). Cada campo tiene el nombre como figura en la funcion.
function padronafip(cuit) { $('#datos')[0].reset(); $('#error').html(""); $.ajax({ url: 'https://soa.afip.gob.ar/sr-padron/v2/persona/'+$('#cuit_dest').val(), datatype: 'json', success: function(data) { if (data.success == false) { $("#error").html(data.error.mensaje); } if (data.success == true) { $("#nombre").val(data.data.nombre); var tipoClave = data.data.tipoClave; if (tipoClave == "CUIT") { var tipoClave = "80"}; if (tipoClave == "DNI") { var tipoClave = "96"}; $("#tipoClave").val(tipoClave); $("#idPersona").val(data.data.idPersona); $("#direccion").val(data.data.domicilioFiscal.direccion); $("#localidad").val(data.data.domicilioFiscal.localidad); $("#codPostal").val(data.data.domicilioFiscal.codPostal); }; // if success true fin } }); }Votos: 1 - Link respuesta -
Fecha: 07-06-2017 09:12:15 Gustavo, yo lo estoy tratando de hacer mas didactico APB "a prueba de boludos" ya que donde lo estoy implementando y a futuro implementarlo en otras pymes no son gente tan ducha con la computadora, estoy jugando con ingresar DNI y que busque en personas el CUIT/CUIL a partir de ahi con una variable php la paso a ver los datos en el padron de persona y asi encontrar datos necesarios, pero no logro sacar el dato de la respuesta de https://soa.afip.gob.ar/sr-padron/v2/personas/30719272 que trae a traves del dni que es {"success":true,"data":[20307192721]}
por que desconozco la nomenclatura que se usa, el script que mencionaba arriba son para datos que trae de persona ->data->idPersona me trae el dato del numero CUIT quiero en el de personas me traiga el CUIT/DNI y no lo logro Votos: 0 - Link respuesta -
-
Fecha: 07-06-2017 09:40:43 Expongo por si a alguien le sirve, si o si el cliente nos tiene que dar el dni si la compra es mayor a 1000$ con lo cual al darte el dni podemos buscar el cuil y de esa manera nos hacemos con los datos para buscarlo en el padron de la afip como persona y obtener el nombre o los datos que nos de la seleccion, ejemplo:
$dni = '30729272'; //dni al azar que use $buscar = 'https://soa.afip.gob.ar/sr-padron/v2/personas/'.$dni; $respuesta = file_get_contents($buscar); $respuesta = json_decode($respuesta); $cuit= $respuesta->data[0]; echo"CUIL/CUIT : ".$cuit.'</br>'; $buscar = 'https://soa.afip.gob.ar/sr-padron/v2/persona/'.$cuit; $respuesta = file_get_contents($buscar); $respuesta = json_decode($respuesta); echo("DNI/CUIT : ".$respuesta->data->idPersona);echo('</br>'); // Impuestos inscriptos $tabla = $respuesta->data->impuestos; $elementos = count ($tabla); for($i=0;$i<$elementos;$i++){ echo('Impuesto = '.$respuesta->data->impuestos[$i]);echo('</br>'); }
Nos da la respuesta:
CUIL/CUIT : 27307292721
DNI/CUIT : 27307292721
Nombre : SALCEDO GISELA PAOLA
Para la factura A con el script que mencionamos mas arriba funciona perfectamente, saludos espero haber sido de ayuda. Votos: 1 - Link respuesta -
Fecha: 07-06-2017 10:30:34 Tal vez les interese este otro tema tratado en la comunidad AFIP Argentina: Consulta a la API del padrón de Contribuyentes
Saludos y buen código para todos! Votos: 0 - Link respuesta -
Fecha: 07-06-2017 10:31:53 Yo no lo haría así. Vos pones el dni de la persona. Si esa persona tiene cuit lo buscas y sacas los datos y el iva. si tipoClave = CUIL , lo tratas como consumidor final y adjuntas DNI que sale en "tipoDocumento":"DNI","numeroDocumento":"14234567".
Lee el script que puse yo. Esta armado para consultar en vivo desde un input y completar los input mas abajo.
Saludos. Votos: 1 - Link respuesta -
Fecha: 07-06-2017 11:19:51 Hola Gustavo y Mariano. Tengan en cuenta que la persona puede tener CUIT (responsable inscripto), pero la compra que este realizando no la quiera o no la pueda pasar como gasto de la actividad.
También puede ir una empresa (persona física) a comprar por lo cual solamente tiene CUIT.
Por tal motivo no puede ser automática la selección del CUIT a partir del DNI.
Yo no soy contador pero en todos mis clientes me encontré con esos casos y mi contador hay gastos que no me los deja pasar.
Saludos Votos: 1 - Link respuesta -
Fecha: 07-06-2017 12:34:20 Matias, todos mis campos son editables, como dije antes. Lo cierto es que si el cliente tiene CUIT, y si yo a la afip le mando su DNI, me devuelve error y no obtengo CAE. Si el cliente quiere consumidor final, entonces no hay necesidad de pedirle datos.
Saludos. Votos: 0 - Link respuesta -
Fecha: 07-06-2017 15:39:19 Gustavo, si lo vi pero estoy armando 2 por separado
1 para factura a
uno para factura B consumidor final y factura B con DNI (mas de $1000)
por eso lo hice asi, ahora me encuentro con un problema, en la linea
$regfe['ImpNeto']=100; // neto gravado
quiero poner la variable $total pero me da error obteniendo cae, como hago para darle el importe que traigo del sistema si no me deja poner variables?
será por que estoy en modo homologacion?
gracias de nuevo Votos: 0 - Link respuesta -
Fecha: 08-06-2017 01:47:43 No se para que vas a hacer varios sistemas, si podes hacer todo en uno solo. Tendrías que mirar el xml para ver que error te da, ya que hay mensajes que el script original no muestra. Muchas veces afip manda mas de una linea de error o de observaciones, yo modifique mi code para que las muestre.
Lo que imagino es que la variable no esta definida, que esta vacía.
hace esto:
$regfe['ImpNeto']=$total;
echo $total;
y fijate que pasa... Votos: 0 - Link respuesta -
Fecha: 08-06-2017 04:50:35 Si lo había probado y me pasa la variable bien, me tengo que fijar en el xml Votos: 0 - Link respuesta
-
Fecha: 08-06-2017 16:57:47 Listo era un problema de mi estupidez con las condiciones contables, saludos Votos: 0 - Link respuesta
-
Fecha: 09-06-2017 17:03:09 Hola Gente, muchas gracias a todos, estoy terminando mi script y necesito de su ayuda una vez mas, ya no con respecto a la cnx con afip ni con este codigo.
les paso a contar, hice una factura.php que toma los datos de diferentes mysql y de este codigo bendito, con un diseño con css y html exquisito jeje, loque quiero es que esa factura.php se me guarde en el servidor como factura.pdf asi otro scritp la agarra y la manda por mail, estuve leyendo sobre librerias php fpdf y cosas asi pero no encuentro lo que busco
ejemplifico:
quisiera un codigo que pueda insertar de esta manera:
archivo factura.php
<aqui el inicio del pdf >
mi codigo php mysql y factura online con scritps en javascritp para el codigo,
<aqui el fin del pdf> --> y que se guarde en el servidor
me explico?
si me pueden dar esta ultima mano me comprometo a compartir todo el codigo finalizado y generico para que todos podamos seguir creciondo.
muchas gracias a los que puedan dar una mano Votos: 0 - Link respuesta -
Fecha: 10-06-2017 04:14:10 Encontré la libreria TCPDF que permite funciones, pero no me descarga nada, a lo mejor alguien me puede dar una mano, el código es:
<!-- Empieza factura --> <?PHP if(isset($_POST['create_pdf'])){ require_once('tcpdf/tcpdf.php'); $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('Miguel Caro'); $pdf->SetTitle($_POST['reporte_name']); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetMargins(20, 20, 20, false); $pdf->SetAutoPageBreak(true, 20); $pdf->SetFont('Helvetica', '', 10); $pdf->addPage(); $content = ''; $content .= ' <div align="center" style="width: 1184px;; height: 100%"> <div id="encabezado" align="center" style="width: 80%; background-color: white; height: 910px; border: 2px solid black;"> <div style="width: 40%; float: left; margin-top: 30px; " id="encabezado-izquierda"> <div align="center" style="float: "><img src="../feafip2/img/logo.jpg" height="170px" alt=""/><br>'.$lema.'<br>de '.$nombrelegal.'</div>'.$direccionfiscal.'<br>'.$telefono.'<br> ('.$codigopostal.') '.$provincia.'<br>I.V.A '.$iva.' </div> <div style=" float: right; margin-top: 30px; margin-right: 10%;" id="encabezado-derecha" > <div align="left"><br><p><h1>Factura<br>Nº '.$factura.'</h1><h3><br>Fecha '.$fechad.'<br> C.U.I.T.: '.$cuit_f.'<br>ING. BRUTOS: '.$ingresosbrutos.'<br>Inicio de Actividades: '.$iniciodeactividades.'</h3></p></div> </div> <div style="width: 10%; border: 2px solid black; height: 80px; font-size: 50px;" align="center" id="tipo de factura">A<p style="font-size: 20px">Cod. 06</p></div> <div style="height: 2px; width: 100%; margin-top: 22%; "></div> <p></p> <div align="left" style="margin-left: 10%; margin-right: 10%;"> <div style="height: 2px; width: 100%; border: 2px solid black;"></div> <h3> Señores: '.$nombre.' <br> Domicilio: '.$direccion.' <br> Provincia: '.$pv.' <br> Código Postal: '.$cp.' <br> I.V.A.: '.$r.' C.U.I.T.: '.$dni.'<br> Condicion de venta: '.$ef.' / '.$tj.' <br> </h3> <div style="height: 3%; width: 100%; margin-top: 30px; font-weight: bold; background: silver; border: 2px solid black;"> <div> <div style="float: left; margin-left: 10px; width: 10%; ">Cantidad</div> <div style="float: left; margin-left: 10px; width: 10%; ">Código</div> <div style="float: left; margin-left: 10px; width: 45%; ">Detalle</div> <div style="float: left; margin-left: 10px; width: 15%; ">Precio Unitario</div> <div style="float: left; margin-left: 10px; width: 10%; ">Importe</div> </div> </div> '.$linea1.' '.$linea2.' '.$linea3.' '.$linea4.' '.$linea5.' '.$linea6.' '.$linea7.' '.$linea8.' '.$linea9.' '.$linea10.' <div style="height: 5%; width: 100%; margin-top: 25%; background-color: silver; border: 2px solid black;font-weight: bold"> <div> <div style="float: left; margin-left: 10px; width: 10%; margin-top: 1% ">Subtotal</div> <div style="float: left; margin-left: 10px; width: 10%; margin-top: 1% ">Impuesto</div> <div style="float: left; margin-left: 10px; width: 25%; margin-top: 1% ">I.V.A. Insc. 21% </div> <div style="float: left; margin-left: 10px; width: 25%; margin-top: 1% ">I.V.A. No Insc. 10.5%</div> <div style="float: left; margin-left: 10px; width: 10%; margin-top: 1% ">Subtotal</div> <div style="float: left; margin-left: 10px; width: 10%; margin-top: 1% ">Total</div> </div> </div> <div style="margin-top: 1%"> <div style="float: left; margin-left: 10px; width: 10%; ">'.$tmenosiva.'</div> <div style="float: left; margin-left: 10px; width: 10%; ">'.$tiva.'</div> <div align="center" style="float: left; margin-left: 10px; width: 25%; ">x</div> <div style="float: left; margin-left: 10px; width: 25%; ">.</div> <div style="float: left; margin-left: 10px; width: 10%; ">'.$total.'</div> <div style="float: left; margin-left: 10px; width: 10%; ">$ '.$total.'</div> </div> <div style="margin-top: 7%"> <div style="margin-left: 10px; width: 100%; "> <div align="center" style=""> <?PHP echo "Cae: ", $caenum." "; echo "Fecha Vto: ", date( "d/m/Y", strtotime( $caefvt ) ).""; ?> <div id="bcTarget"></div> </div> </div> </div> </div> </div>' ;$pdf->writeHTML($content, true, 0, true, 0); $pdf->lastPage(); $pdf->output('Reporte.pdf', 'D'); } ?>
No me da error de codigo ni nada solamente no me descarga el pdf no se donde tengo el problema, desde ya y como siempre muchas gracias Votos: 0 - Link respuesta -
Fecha: 10-06-2017 08:52:07 No es tan fácil. Tenes que hacer linea por linea: vos tenes dos vacias en tu code:
$content = ''; $content .= ' (';) $pdf->writeHTML($content, true, 0, true, 0);
$content esta vacio! Votos: 0 - Link respuesta -
Fecha: 12-06-2017 07:29:06 Mariano,
te recomiendo la librería fpdf, es bastante fácil de usar y hay mucha documentación en internet.
Esta librería te permite almacenar el pdf en disco o mostrarlo por pantalla.
También admite generar código de barras, que vas a necesitar para el CAE.
Saludos,
Pablo Votos: 0 - Link respuesta -
Fecha: 14-06-2017 11:32:09 Hola a todos, agradecería una ayuda sobre la función de recuperar datos de facturas ya emitidas, veo que el archivo wsfev1.wsdl ya lo tiene agregado pero no el archivo php que envía los datos. No logra hacer que genere el xml correctamente. Gracias. Votos: 0 - Link respuesta
-
Fecha: 14-06-2017 13:16:33 Estoy sin nada de tiempo, el formato del xml que tenes que generar es el siguiente:
<ar:FECompConsultar> <ar:Auth> <ar:Token>?</ar:Token> <ar:Sign>?</ar:Sign> <ar:Cuit>?</ar:Cuit> </ar:Auth> <ar:FeCompConsReq> <ar:CbteTipo>?</ar:CbteTipo> <ar:CbteNro>?</ar:CbteNro> <ar:PtoVta>?</ar:PtoVta> </ar:FeCompConsReq> </ar:FECompConsultar>
Mira la funcion de ultimoautorizado y trata de modificarla con ese formato. La primera parte de Auth es igual. Suerte! Votos: 1 - Link respuesta -
Fecha: 15-06-2017 05:04:31 Gracias Gustavo, me sirvió un montón, ya me genera el xml con los datos del comprobante consultado, solo me queda que el sistema me lo lea. Votos: 0 - Link respuesta
-
Fecha: 15-06-2017 07:22:49 Hola gente amiga, termine de gestionar todo el script php para que 1 tome los datos de mi sistema php mysql de facturacion stock y demas, y pueda facturar como factura a y b
automaticamente genera el pdf de la factura y se la envia al cliente,
proximamente cuando tenga oportunidad lo subo entero para que quien lo necesite lo pueda usar,
saludos y muchas gracias a todos. Votos: 0 - Link respuesta -
Fecha: 15-06-2017 16:34:01 hago una pregunta para saber si se puede hacer ya para hacer menos problematico el tema del path a la hora de generar los ta y tra.xml
private $path = 'c:// etc/ etc/';
se podria hacer private $path =$_SERVER['DOCUMENT_ROOT']; pero como esta dentro de el class WSAA me da error y quisiera saber de que forma poder solucionarlo para hacerlo mas general para todo el mundo, sea que use ubuntu mac windows etc
gracias lo tiro como para ver si lo podemos generalizar mejor saludos Votos: 0 - Link respuesta -
-
Fecha: 18-07-2017 17:13:39 Hola que tal, como andan, necesito saber cuales son los codigos de nota de credito y nota de debito par la facturacion electronica encontré el listado de la afip pero no queda claro, muchas gracias nuevamente, saludos. Votos: 0 - Link respuesta
-
Fecha: 18-07-2017 17:20:12 puede que sean estos?
Código Denominación
001 FACTURAS A
002 NOTAS DE DEBITO A
003 NOTAS DE CREDITO A
004 RECIBOS A
005 NOTAS DE VENTA AL CONTADO A
006 FACTURAS B
007 NOTAS DE DEBITO B
008 NOTAS DE CREDITO B Votos: 1 - Link respuesta -
Fecha: 18-07-2017 17:35:04 Si Mariano, son esos! Siempre podes consultar al webservice todos los parametros que podes enviar. Saludos. Votos: 2 - Link respuesta
-
Fecha: 19-07-2017 05:49:01 Esto es lo que devuelve el webservice, perdón por no hacerlo en una tabla, no tengo nada de tiempo!
<CbteTipo> <Id>1</Id> <Desc>Factura A</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>2</Id> <Desc>Nota de Débito A</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>3</Id> <Desc>Nota de Crédito A</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>6</Id> <Desc>Factura B</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>7</Id> <Desc>Nota de Débito B</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>8</Id> <Desc>Nota de Crédito B</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>4</Id> <Desc>Recibos A</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>5</Id> <Desc>Notas de Venta al contado A</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>9</Id> <Desc>Recibos B</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>10</Id> <Desc>Notas de Venta al contado B</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>63</Id> <Desc>Liquidacion A</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>64</Id> <Desc>Liquidacion B</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>34</Id> <Desc>Cbtes. A del Anexo I, Apartado A,inc.f),R.G.Nro. 1415</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>35</Id> <Desc>Cbtes. B del Anexo I,Apartado A,inc. f),R.G. Nro. 1415</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>39</Id> <Desc>Otros comprobantes A que cumplan con R.G.Nro. 1415</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>40</Id> <Desc>Otros comprobantes B que cumplan con R.G.Nro. 1415</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>60</Id> <Desc>Cta de Vta y Liquido prod. A</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>61</Id> <Desc>Cta de Vta y Liquido prod. B</Desc> <FchDesde>20100917</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>11</Id> <Desc>Factura C</Desc> <FchDesde>20110330</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>12</Id> <Desc>Nota de Débito C</Desc> <FchDesde>20110330</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>13</Id> <Desc>Nota de Crédito C</Desc> <FchDesde>20110330</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>15</Id> <Desc>Recibo C</Desc> <FchDesde>20110330</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>49</Id> <Desc>Comprobante de Compra de Bienes Usados a Consumidor Final</Desc> <FchDesde>20130401</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>51</Id> <Desc>Factura M</Desc> <FchDesde>20150522</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>52</Id> <Desc>Nota de Débito M</Desc> <FchDesde>20150522</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>53</Id> <Desc>Nota de Crédito M</Desc> <FchDesde>20150522</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo> <CbteTipo> <Id>54</Id> <Desc>Recibo M</Desc> <FchDesde>20150522</FchDesde> <FchHasta>NULL</FchHasta> </CbteTipo>Votos: 1 - Link respuesta -
Fecha: 20-07-2017 02:52:14 Adjunto un link en mega donde subí un word con las tablas de la afip para factura electrónica.
Tablas codigos AFIP
Saludos a todos y buen día del amigo Votos: 1 - Link respuesta -
Fecha: 20-07-2017 17:12:19 buen dia del amigo para todosss!!!
y otra consulta
al momento de las notas de -
se genera como si fuera una factura normal pero activamos esto?
// Comprobantes asociados (solo notas de crédito y débito): //$regfeasoc['Tipo'] = 91; //91; //tipo 91|5 //$regfeasoc['PtoVta'] = 1; //$regfeasoc['Nro'] = 1;
obviamente con sus codigos pertinentes y valores correspondientes?
salute Votos: 0 - Link respuesta -
Fecha: 30-07-2017 08:27:39 Hola Mariano, para notas de crédito/débito podés llegar a enviar los comprobantes asociados pero no es obligatorio. Se puede hacer como una factura común, cambiando el tipo de comprobante. Votos: 0 - Link respuesta
-
Fecha: 21-08-2017 06:39:07 Buenas, alguien tiene algo armado o alguna base para poder armar el ex citi ventas? Yo no se mucho del tema, se que desde la pagina de afip se puede descargar solo de los comprobantes generados desde ahí, pero no los comprobantes generados desde el webservice.
Cualquier info se agradede. Saludos! Votos: 0 - Link respuesta -
Fecha: 21-08-2017 07:28:01 Te adjunto el que yo arme para ventas.
te paso algunos codigos que son de mi sistema
$fila[vfc_tipo] ==> es el tipo de comprobante 1=Factura 2=Credito 3=Debito
vtafaccab ==> Cabecera de la factura
vtafaclin ==> Lineas de factura
vtafacimp ==> Impuestos de la factura (IVA y Percepciones)
contactos ==> Son los clientes
monedas ==> El tipo de moneda utilizada.
/********************* *** Generar ventas *** *********************/ $carpeta = 'clientes/'.$empresa_base.'/afip/'; if (!file_exists($carpeta)){mkdir($carpeta, 0777, true);} $archivo_ventas = $carpeta."/ventas_3685_".$desde.'_'.$hasta.".txt"; $archivo_ventas_nombre = $empresa_base."_ventas_3685_".$desde.'_'.$hasta.".txt"; $id_afip=fopen($archivo_ventas,'w'); $consulta = "select *"; $consulta .= " from vtafaccab,contactos,monedas"; $consulta .= " where vfc_estado = 'A'"; $consulta .= " and vfc_cli_id = co_id"; $consulta .= " and vfc_origen = 'FA'"; $consulta .= " and vfc_tipo < 90"; $consulta .= " and vfc_sucu < 9000"; $consulta .= " and vfc_moneda = mon_codigo"; $consulta .= " and vfc_fecha >= '$fec_desde'"; $consulta .= " and vfc_fecha <= '$fec_hasta'"; $consulta .= " order by vfc_fecha,vfc_tipo,vfc_letra,vfc_sucu,vfc_numero"; $auditar=$consulta;include('includes/auditar.php'); $resultado = mysql_query($consulta); while($fila = mysql_fetch_array($resultado)){ $linea = ''; $linea .= substr($fila[vfc_fecha],0,4).substr($fila[vfc_fecha],5,2).substr($fila[vfc_fecha],8,2); //1 // Tipo de comprobante if($fila[vfc_tipo] == 1 and $fila[vfc_letra] == 'A'){$linea .= '001';} if($fila[vfc_tipo] == 2 and $fila[vfc_letra] == 'A'){$linea .= '003';} if($fila[vfc_tipo] == 3 and $fila[vfc_letra] == 'A'){$linea .= '002';} if($fila[vfc_tipo] == 1 and $fila[vfc_letra] == 'B'){$linea .= '006';} if($fila[vfc_tipo] == 2 and $fila[vfc_letra] == 'B'){$linea .= '008';} if($fila[vfc_tipo] == 3 and $fila[vfc_letra] == 'B'){$linea .= '007';} if($fila[vfc_tipo] == 1 and $fila[vfc_letra] == 'C'){$linea .= '011';} if($fila[vfc_tipo] == 2 and $fila[vfc_letra] == 'C'){$linea .= '013';} if($fila[vfc_tipo] == 3 and $fila[vfc_letra] == 'C'){$linea .= '012';} if($fila[vfc_tipo] == 1 and $fila[vfc_letra] == 'M'){$linea .= '051';} if($fila[vfc_tipo] == 2 and $fila[vfc_letra] == 'M'){$linea .= '053';} if($fila[vfc_tipo] == 3 and $fila[vfc_letra] == 'M'){$linea .= '052';} /**************************** *** buscar otros tributos *** ****************************/ $tributo = "select im_codigo,sum(vfi_importe) as imp_tributo from vtafacimp,impuestos"; $tributo .= " where vfi_tipo = '$fila[vfc_tipo]' "; $tributo .= " and vfi_letra = '$fila[vfc_letra]' "; $tributo .= " and vfi_sucu = '$fila[vfc_sucu]' "; $tributo .= " and vfi_numero = '$fila[vfc_numero]' "; $tributo .= " and im_id = vfi_concepto"; $tributo .= " and im_tipo = 2"; $tributo .= " group by im_codigo"; $auditar='Tributos ==> '.$tributo;include('includes/auditar.php'); $resul_tributo = mysql_query($tributo); while($fila_tributo = mysql_fetch_array($resul_tributo)){ $otro_tributo[$fila_tributo[im_codigo]] = $fila_tributo[imp_tributo]; $auditar='Tributo ==> '.$fila_tributo[im_codigo].' ==> '.$fila_tributo[imp_tributo];include('includes/auditar.php'); } //---------------------------------------- $linea .= '0'.$fila[vfc_sucu];//3 $linea .= '000000000000'.$fila[vfc_numero];//4 $linea .= '000000000000'.$fila[vfc_numero];//5 $linea .= $fila[co_tipo_doc]; // 6 $cuit_aux = '00000000000000000000'.substr($fila[co_cuit],0,2).substr($fila[co_cuit],3,8).substr($fila[co_cuit],12,1);//7 $linea .= substr($cuit_aux,-20); $nombre_aux = $fila[co_nombre]; /*********************************** *** cambiar carcteres especiales *** ***********************************/ $nombre_aux = str_replace('ñ', 'n',$nombre_aux); // Este es el texto original $nombre_aux = str_replace('Ñ', 'N',$nombre_aux); // Este es el texto cambiado /**************************************/ $nombre = $nombre_aux.str_repeat(" ",30); $linea .= substr($nombre,0,30);//8 $aux_1 = round(($fila[vfc_total] * $fila[vfc_cotiza]),2) * 100; $aux_2 = '000000000000000'.$aux_1; $linea .= substr($aux_2,-15);//total de la operacion (9) $linea .= '000000000000000'; // Neto no gravado (10) $aux_1 = round(($otro_tributo[11]),2) * 100;// No categorizados $aux_2 = '000000000000000'.$aux_1; $linea .= substr($aux_2,-15); $aux_1 = round(($otro_tributo[12]),2) * 100;// excentas $aux_2 = '000000000000000'.$aux_1; $linea .= substr($aux_2,-15); $aux_1 = round(($otro_tributo[13]),2) * 100;// Impuestos nacionales (13) $aux_2 = '000000000000000'.$aux_1; $linea .= substr($aux_2,-15); $aux_1 = round(($otro_tributo[14]),2) * 100;// Percepcion de Ingresos Brutos (14) $aux_2 = '000000000000000'.$aux_1; $linea .= substr($aux_2,-15); $aux_1 = round(($otro_tributo[15]),2) * 100;// Impuestos Municipales (15) $aux_2 = '000000000000000'.$aux_1; $linea .= substr($aux_2,-15); $aux_1 = round(($otro_tributo[16]),2) * 100;// Impuestos Internos (16) $aux_2 = '000000000000000'.$aux_1; $linea .= substr($aux_2,-15); $linea .= $fila[mon_sigla]; // Codificacion de la AFIP para el tipo de moneda $aux_1 = $fila[vfc_cotiza]*1000000; $aux_2 = '0000000000'.$aux_1; $linea .= substr($aux_2,-10);// Cotizacion $linea .= '1'; $linea .= '0'; $linea .= '000000000000000'; if($fila[vfc_letra] == 'M'){$veto = '00000000';}else{$veto = substr($fila[vfc_fec_vto],0,4).substr($fila[vfc_fec_vto],5,2).substr($fila[vfc_fec_vto],8,2);} $linea .= $veto; fwrite($id_afip,$linea); //fwrite($id_afip , chr(13).chr(10));//Para el salto de linea fwrite($id_afip , "\r\n");//Para el salto de linea } /****************************** *** Generar Alicuota ventas *** ******************************/ //$carpeta = 'afip/'.$empresa_base; $carpeta = 'clientes/'.$empresa_base.'/afip/'; if (!file_exists($carpeta)){mkdir($carpeta, 0777, true);} $alicuota_ventas = $carpeta."/ventas_alicuotas_3685_".$desde.'_'.$hasta.".txt"; $alicuota_ventas_nombre = $empresa_base."_ventas_alicuotas_3685_".$desde.'_'.$hasta.".txt"; $id_afip=fopen($alicuota_ventas,'w'); $consulta = "select *"; $consulta .= " from vtafaccab,vtafacimp,impuestos"; $consulta .= " where vfc_estado = 'A'"; $consulta .= " and vfc_origen = 'FA'"; $consulta .= " and vfc_tipo < 90"; $consulta .= " and vfc_sucu < 9000"; $consulta .= " and im_id = vfi_concepto"; $consulta .= " and im_tipo = 1"; $consulta .= " and vfc_fecha >= '$fec_desde'"; $consulta .= " and vfc_fecha <= '$fec_hasta'"; $consulta .= " and vfc_tipo = vfi_tipo"; $consulta .= " and vfc_letra = vfi_letra"; $consulta .= " and vfc_sucu = vfi_sucu"; $consulta .= " and vfc_numero = vfi_numero"; $consulta .= " order by vfc_fecha,vfc_tipo,vfc_letra,vfc_sucu,vfc_numero"; $auditar=$consulta;include('includes/auditar.php'); $resultado = mysql_query($consulta); while($fila = mysql_fetch_array($resultado)){ $Total = $fila[vfc_total] * $fila[vfc_cotiza]; $iva = $fila[vfi_importe] * $fila[vfi_cotiza]; $net_gravado =round( ($Total - $iva),2); $net_gravado2 =round($Total,2) - round($iva,2); $auditar='Total = '.$Total.' - IVA = '.$iva.' Neto = '.$net_gravado.' // '.$net_gravado2;include('includes/auditar.php'); $linea = ''; if($fila[vfi_tipo] == 1 and $fila[vfi_letra] == 'A'){$linea .= '001';} if($fila[vfi_tipo] == 2 and $fila[vfi_letra] == 'A'){$linea .= '003';} if($fila[vfi_tipo] == 3 and $fila[vfi_letra] == 'A'){$linea .= '002';} if($fila[vfi_tipo] == 1 and $fila[vfi_letra] == 'B'){$linea .= '006';} if($fila[vfi_tipo] == 2 and $fila[vfi_letra] == 'B'){$linea .= '008';} if($fila[vfi_tipo] == 3 and $fila[vfi_letra] == 'B'){$linea .= '007';} if($fila[vfc_tipo] == 1 and $fila[vfi_letra] == 'M'){$linea .= '051';} if($fila[vfc_tipo] == 2 and $fila[vfi_letra] == 'M'){$linea .= '053';} if($fila[vfc_tipo] == 3 and $fila[vfi_letra] == 'M'){$linea .= '052';} $linea .= '0'.$fila[vfi_sucu];// Sucursal $linea .= '000000000000'.$fila[vfi_numero];// Numero de comprobante $aux_1 = $net_gravado*100; $aux_1 = (string)$net_gravado*100; $aux_2 = '000000000000000'.$aux_1; //echo($net_gravado.' <==> '.$aux_1.' <===> '.$aux_2);echo('</br>'); $linea .= substr($aux_2,-15);// Importe neto Gravado if($fila[vfi_tasa] == 0){$linea .= '0003';} // Alicuota de IVA if($fila[vfi_tasa] == 10.50){$linea .= '0004';} // Alicuota de IVA if($fila[vfi_tasa] == 21.00){$linea .= '0005';} // Alicuota de IVA if($fila[vfi_tasa] == 27.00){$linea .= '0006';} // Alicuota de IVA if($fila[vfi_tasa] == 5.00){$linea .= '0008';} // Alicuota de IVA if($fila[vfi_tasa] == 2.50){$linea .= '0009';} // Alicuota de IVA $aux_1 = round(($fila[vfi_importe] * $fila[vfi_cotiza]),2) * 100; $aux_2 = '000000000000000'.$aux_1; $linea .= substr($aux_2,-15);// Impuesto Liquidado fwrite($id_afip,$linea); //fwrite($id_afip , chr(13).chr(10));//Para el salto de linea fwrite($id_afip , "\r\n");//Para el salto de linea } mysql_close($con_php);
Si te instalas el SIAP y después el compras/ventas, podrás ver el formato de txt que tenes que utilizar Votos: 0 - Link respuesta -
Fecha: 21-08-2017 07:29:35 Y para compras
$archivo_compras = $carpeta."/compras_3685_".$desde.'_'.$hasta.".txt";
$id_afip=fopen($archivo_compras,'w');
$consulta = "select *";
$consulta .= " from profaccab,contactos";
$consulta .= " where pfc_estado = 'A'";
$consulta .= " and pfc_letra <> 'X'";
$consulta .= " and pfc_tipo < 90 ";
$consulta .= " and pfc_prov_id = co_id";
$consulta .= " and pfc_fec_con >= '$fec_desde'";
$consulta .= " and pfc_fec_con <= '$fec_hasta'";
$consulta .= " order by pfc_fecha,pfc_tipo,pfc_letra,pfc_sucu,pfc_numero";
$auditar=$consulta;include('includes/auditar.php');
$resultado = mysql_query($consulta);
while($fila = mysql_fetch_array($resultado)){
/***************************************
*** Leer lineas de la factura *********
***************************************/
$consulta_linea = "select pfl_concepto,im_codigo,count(pfl_id) as cantidad,sum(pfl_importe) as importe,im_tipo,im_discrimina ";
$consulta_linea .= " from profaclin,impuestos";
$consulta_linea .= " where pfl_tipo = '$fila[pfc_tipo]'";
$consulta_linea .= " and pfl_letra = '$fila[pfc_letra]'";
$consulta_linea .= " and pfl_sucu = '$fila[pfc_sucu]'";
$consulta_linea .= " and pfl_numero = '$fila[pfc_numero]'";
$consulta_linea .= " and pfl_prov_id = '$fila[pfc_prov_id]'";
$consulta_linea .= " and pfl_concepto = im_id";
$consulta_linea .= " group by pfl_concepto,im_discrimina";
$consulta_linea .= " union";
$consulta_linea .= " select pfi_concepto,im_codigo,count(pfi_id) as cantidad,sum(pfi_importe) as importe,im_tipo,im_discrimina";
$consulta_linea .= " from profacimp,impuestos ";
$consulta_linea .= " where pfi_tipo = '$fila[pfc_tipo]'";
$consulta_linea .= " and pfi_letra = '$fila[pfc_letra]' ";
$consulta_linea .= " and pfi_sucu = '$fila[pfc_sucu]' ";
$consulta_linea .= " and pfi_numero = '$fila[pfc_numero]' ";
$consulta_linea .= " and pfi_prov_id = '$fila[pfc_prov_id]'";
$consulta_linea .= " and pfi_concepto = im_id ";
$consulta_linea .= " and im_tipo = 2";
$consulta_linea .= " group by pfi_concepto,im_discrimina";
$auditar='Compras == > '.$consulta_linea;include('includes/auditar.php');
$resultado_linea = mysql_query($consulta_linea);
$no_gravado = 0;
$cantidad_alicuotas = 0;
$valor_agregado = 0;
$ingresos_bruto = 0;
$otros_impuestos = 0;
$impuestos_internos = 0;
$impuestos_municipales = 0;
$excentas = 0;
while($fila_linea = mysql_fetch_array($resultado_linea)){
if($fila_linea[im_codigo] == 0 and $fila_linea[im_discrimina] == 'S'){$cantidad_alicuotas += 1;$importe_gravado = $fila_linea[importe];}
if($fila_linea[im_codigo] == 10 and $fila[pfc_letra] == 'A'){$no_gravado = $fila_linea[importe];}
if($fila_linea[im_codigo] == 11 and $fila[pfc_letra] == 'A'){$excentas = $fila_linea[importe];}
if($fila_linea[im_codigo] == 12){$valor_agregado = $fila_linea[importe];}
if($fila_linea[im_codigo] == 13){$otros_impuestos = $fila_linea[importe];}
if($fila_linea[im_codigo] == 14){$ingresos_bruto += $fila_linea[importe];}
if($fila_linea[im_codigo] == 15){$impuestos_municipales = $fila_linea[importe];}
if($fila_linea[im_codigo] == 16){$impuestos_internos = $fila_linea[importe];}
}
$linea = '';
$linea .= substr($fila[pfc_fecha],0,4).substr($fila[pfc_fecha],5,2).substr($fila[pfc_fecha],8,2); // Fecha AAAAMMDD
//-------------------------------------------------------------
// Tipo de comprobante
if($fila[pfc_tipo] == 1 and $fila[pfc_letra] == 'A'){$linea .= '001';}
if($fila[pfc_tipo] == 2 and $fila[pfc_letra] == 'A'){$linea .= '003';}
if($fila[pfc_tipo] == 3 and $fila[pfc_letra] == 'A'){$linea .= '002';}
if($fila[pfc_tipo] == 4 and $fila[pfc_letra] == 'A'){$linea .= '081';}
if($fila[pfc_tipo] == 6 and $fila[pfc_letra] == 'A'){$linea .= '004';}
if($fila[pfc_tipo] == 1 and $fila[pfc_letra] == 'B'){$linea .= '006';$cantidad_alicuotas = 0;}
if($fila[pfc_tipo] == 2 and $fila[pfc_letra] == 'B'){$linea .= '008';$cantidad_alicuotas = 0;}
if($fila[pfc_tipo] == 3 and $fila[pfc_letra] == 'B'){$linea .= '007';$cantidad_alicuotas = 0;}
if($fila[pfc_tipo] == 4 and $fila[pfc_letra] == 'B'){$linea .= '082';$cantidad_alicuotas = 0;}
if($fila[pfc_tipo] == 6 and $fila[pfc_letra] == 'B'){$linea .= '009';$cantidad_alicuotas = 0;}
if($fila[pfc_tipo] == 1 and $fila[pfc_letra] == 'C'){$linea .= '011';$cantidad_alicuotas = 0;}
if($fila[pfc_tipo] == 2 and $fila[pfc_letra] == 'C'){$linea .= '013';$cantidad_alicuotas = 0;}
if($fila[pfc_tipo] == 3 and $fila[pfc_letra] == 'C'){$linea .= '012';$cantidad_alicuotas = 0;}
if($fila[pfc_tipo] == 4 and $fila[pfc_letra] == 'C'){$linea .= '083';$cantidad_alicuotas = 0;}
if($fila[pfc_tipo] == 6 and $fila[pfc_letra] == 'C'){$linea .= '015';$cantidad_alicuotas = 0;}
$linea .= '0'.$fila[pfc_sucu];//Punto de venta
$linea .= '000000000000'.$fila[pfc_numero];//Numero de comprobante
$linea .= ' ';//Despacho de importacion
$linea .= $fila[co_tipo_doc]; // Tipo de documento
$documento = '00000000000000000000'.substr($fila[co_cuit],0,2).substr($fila[co_cuit],3,8).substr($fila[co_cuit],12,1);//CUIT + 9
$linea .= substr($documento,-20);
//$linea .= '000000000'.substr($fila[co_cuit],0,2).substr($fila[co_cuit],3,8).substr($fila[co_cuit],12,1);//CUIT
$nombre = $fila[co_nombre].str_repeat(" ",30); //
$linea .= substr($nombre,0,30);// Razon Social
$aux_1 = $fila[pfc_total]*100;
$aux_2 = '000000000000000'.$aux_1;
$linea .= substr($aux_2,-15);// Importe total de la operacion
$aux_1 = $no_gravado*100;
$aux_2 = '000000000000000'.$aux_1;
$linea .= substr($aux_2,-15);// Importe total de conceptos no gravados
$aux_1 = $excentas*100;
$aux_2 = '000000000000000'.$aux_1;
$linea .= substr($aux_2,-15);// Importe total de operaciones excentas
$aux_1 = $valor_agregado*100;
$aux_2 = '000000000000000'.$aux_1;
$linea .= substr($aux_2,-15);// percepciones del I.V.A.
$aux_1 = $otros_impuestos*100;
$aux_2 = '000000000000000'.$aux_1;
$linea .= substr($aux_2,-15);// Otros impuestos nacionales
$aux_1 = $ingresos_bruto*100;
$aux_2 = '000000000000000'.$aux_1;
$linea .= substr($aux_2,-15);// Ingresos Brutos
$aux_1 = $impuestos_municipales*100;
$aux_2 = '000000000000000'.$aux_1;
$linea .= substr($aux_2,-15);// impuestos municipales
$aux_1 = $impuestos_internos*100;
$aux_2 = '000000000000000'.$aux_1;
$linea .= substr($aux_2,-15);// impuestos Internos
$linea .= 'PES';
$linea .= '0001000000';
$linea .= $cantidad_alicuotas;
$linea .= '0';
$linea .= '000000000000000'; // Credito fiscal computable
$linea .= '000000000000000'; // Otros tributos
$linea .= '00000000000'; // CUIT del emisor tributos
$linea .= str_repeat(" ",30);
$linea .= '000000000000000'; // IVA comision
fwrite($id_afip,$linea);
fwrite($id_afip , chr(13).chr(10));//Para el salto de linea
}
/******************************
*** Generar Alicuota compras ***
******************************/
$carpeta = 'clientes/'.$empresa_base.'/afip/';
if (!file_exists($carpeta)){mkdir($carpeta, 0777, true);}
$alicuota_compras = $carpeta."/compras_alicuotas_3685_".$desde.'_'.$hasta.".txt";
$id_afip=fopen($alicuota_compras,'w');
$consulta = "select pfi_letra,pfi_tipo,pfi_sucu,pfi_numero,co_tipo_doc,co_cuit,sum(pfl_importe) as importe,pfi_impuesto,pfi_importe";
$consulta .= " from profaclin,profacimp,contactos";
$consulta .= " where pfl_fec_con >= '$fec_desde'";
$consulta .= " and pfl_fec_con <= '$fec_hasta'";
$consulta .= " and pfl_tipo = pfi_tipo";
$consulta .= " and pfl_letra = pfi_letra";
$consulta .= " and pfl_sucu = pfi_sucu";
$consulta .= " and pfl_numero = pfi_numero";
$consulta .= " and pfl_prov_id = pfi_prov_id";
$consulta .= " and pfl_prov_id = co_id";
$consulta .= " and pfl_concepto = pfi_concepto";
$consulta .= " and pfl_tipo < 90";
$consulta .= " and pfl_letra <> 'X'";
$consulta .= " group by pfi_prov_id,pfi_tipo,pfi_letra,pfi_sucu,pfi_numero,pfi_concepto";
$consulta .= " order by pfi_fecha,pfi_tipo,pfi_letra,pfi_sucu,pfi_numero,pfi_concepto";
$auditar='Alicuotas == > '.$consulta;include('includes/auditar.php');
$resultado = mysql_query($consulta);
while($fila = mysql_fetch_array($resultado)){
//$net_gravado = $fila[pfc_total] - $fila[pfi_importe];
$linea = '';
if($fila[pfi_tipo] == 1 and $fila[pfi_letra] == 'A'){$linea .= '001';}
if($fila[pfi_tipo] == 2 and $fila[pfi_letra] == 'A'){$linea .= '003';}
if($fila[pfi_tipo] == 3 and $fila[pfi_letra] == 'A'){$linea .= '002';}
if($fila[pfi_tipo] == 4 and $fila[pfi_letra] == 'A'){$linea .= '081';}
if($fila[pfi_tipo] == 6 and $fila[pfi_letra] == 'A'){$linea .= '004';}
if($fila[pfi_tipo] == 1 and $fila[pfi_letra] == 'B'){$linea .= '006';}
if($fila[pfi_tipo] == 2 and $fila[pfi_letra] == 'B'){$linea .= '008';}
if($fila[pfi_tipo] == 3 and $fila[pfi_letra] == 'B'){$linea .= '007';}
if($fila[pfi_tipo] == 4 and $fila[pfi_letra] == 'B'){$linea .= '082';}
if($fila[pfi_tipo] == 6 and $fila[pfi_letra] == 'B'){$linea .= '009';}
if($fila[pfi_tipo] == 1 and $fila[pfi_letra] == 'C'){$linea .= '011';}
if($fila[pfi_tipo] == 2 and $fila[pfi_letra] == 'C'){$linea .= '013';}
if($fila[pfi_tipo] == 3 and $fila[pfi_letra] == 'C'){$linea .= '012';}
if($fila[pfi_tipo] == 4 and $fila[pfi_letra] == 'C'){$linea .= '083';}
if($fila[pfi_tipo] == 6 and $fila[pfi_letra] == 'C'){$linea .= '015';}
$linea .= '0'.$fila[pfi_sucu];// Sucursal
$linea .= '000000000000'.$fila[pfi_numero];// Numero de comprobante
$linea .= $fila[co_tipo_doc]; // Tipo de documento
$documento = '00000000000000000000'.substr($fila[co_cuit],0,2).substr($fila[co_cuit],3,8).substr($fila[co_cuit],12,1);//CUIT + 9
$linea .= substr($documento,-20);
//$linea .= '000000000'.substr($fila[co_cuit],0,2).substr($fila[co_cuit],3,8).substr($fila[co_cuit],12,1);//CUIT
$aux_1 = (string)$fila[importe]*100;
$aux_2 = '000000000000000'.$aux_1;
//echo($net_gravado.' <==> '.$aux_1.' <===> '.$aux_2);echo('</br>');
$linea .= substr($aux_2,-15);// Importe neto Gravado
if($fila[pfi_impuesto] == 0){$linea .= '0003';} // Alicuota de IVA
if($fila[pfi_impuesto] == 10.50){$linea .= '0004';} // Alicuota de IVA
if($fila[pfi_impuesto] == 21.00){$linea .= '0005';} // Alicuota de IVA
if($fila[pfi_impuesto] == 27.00){$linea .= '0006';} // Alicuota de IVA
if($fila[pfi_impuesto] == 5.00){$linea .= '0008';} // Alicuota de IVA
if($fila[pfi_impuesto] == 2.50){$linea .= '0009';} // Alicuota de IVA
$aux_1 = $fila[pfi_importe]*100;
$aux_2 = '000000000000000'.$aux_1;
$linea .= substr($aux_2,-15);// Impuesto Liquidado
//echo($linea);echo('</br>');
fwrite($id_afip,$linea);
fwrite($id_afip , chr(13).chr(10));//Para el salto de linea
} Votos: 0 - Link respuesta -
Fecha: 22-08-2017 03:00:52 Recuerden que mysql_query esta como deprecated a partir de php 5.5 y fue quitado en php 7 - deberian usar objetos o el nuevo formato que propone esa version Votos: 0 - Link respuesta
-
Fecha: 13-09-2017 09:26:19 Estuve leyendo algunas respuestas y vi que algunos tenían problemas informando varias alicuotas de iva en la misma factura. Hay un método muy sencillo de enviar solo lo que hay en la factura, sin usar switch ni if. Simplemente hay que armar el array multidimensional y enviarlo a la funcion en la clase wsfev1, no enviar los datos y armar el array ahi:
Primero se hace la consulta a la base, tomando los importes de los ivas agrupados por alicuota (por si hay por ejemplo 10 items, algunos al 10.5 y otros al 21). Luego hacemos algo así:
$i = 0; while ($ivas = $arrayiva->fetch_array()) { $regfeiva[$i]['Id'] = intval($ivas['Id']); $regfeiva[$i]['BaseImp'] = $ivas['BaseImp']; $regfeiva[$i]['Importe'] = $ivas['Importe']; $i++; }
esto nos da como resultado un array, el cual mandamos por FECAESOLICITAR:
FECAESolicitar($nro1, $ptovta, $regfe, $regfeasoc, $regfeiva)
Y en el array de la funcion, en la clase wsfev1:
'Iva' => array ( 'AlicIva' => $regfeiva),
Espero que se entienda, Saludos. Votos: 0 - Link respuesta -
Fecha: 22-09-2017 21:05:09 Hola amigos, les dejo el link de un SDK en PHP de los web services de la AFIP que les va a facilitar la vida https://github.com/ivanalemunioz/afip-php Votos: 3 - Link respuesta
-
-
-
Fecha: 23-09-2017 04:47:46 IVAN
Estuve analizando tu codigo, te queria hacer unas consultas, pero tanto en la licencia como en el Readme, no leo ninguna direccion de correo desde donde se de soporte tecnico. Votos: 0 - Link respuesta -
Fecha: 23-09-2017 07:53:14 Tenes razon Antuan, ya lo actualize, lo podes encontrar al comienzo del Afip.php Votos: 0 - Link respuesta
-
Fecha: 11-10-2017 19:18:50 Hola a todos.
Para Mariano Lema: ¿serías tan amable de pasarme los archivos para la facturación electrónica en PHP?
Hace rato que estoy peleando con eso y vi que lo pudiste hacer funcionar, te agradecería si me podés enviar o publicar un enlace para descargar.
Gracias! Votos: 0 - Link respuesta -
Fecha: 13-10-2017 09:58:55 Hola Marcelo, ni bien pueda los subo, me surgió un problemita con el afip, según la resolución bla bla que mencionaron el comercio debe imprimir con el controlador fiscal todos los comprobantes menores a 999$ y el restante con factura electrónica alguno tiene idea de esto?
Gracias a todo Votos: 0 - Link respuesta -
Fecha: 13-10-2017 10:35:08 Anexo I - Resolución General Ný 4.104 (DGI), texto sustituido
por la Resolución General Ný 259,
texto según Resolución General Ný 705
....
1.2.2.El total de IVA. A estos efectos se incluirá únicamente el débito fiscal determinado por aplicación de las alícuotas correspondientes al precio neto conforme a lo normado en el artículo 11 de la Ley de Impuesto al Valor Agregado, texto ordenado en 1997 y sus modificaciones. El tamaño mínimo de este registro será tal que pueda almacenar un valor con numeración decimal de hasta NUEVE (9) dígitos (999.999.999).
....
1.2.4.Número consecutivo de los últimos Comprobantes Fiscales emitidos (contador de tiques, tique facturas "B" o "C" y facturas "B" o "C"; y contador de facturas "A" y tique facturas "A") antes de la totalización diaria. Este es un número que se incrementa en UNO (1)cuando se emite un comprobante fiscal. Capacidad mínima SEIS (6) dígitos (999.999) y capacidad máxima de OCHO (8) dígitos (99.999.999).
http://biblioteca.afip.gob.ar/pdfp/rg_dgi_4104_1998_a001_v001.htm Votos: 0 - Link respuesta -
Fecha: 13-10-2017 11:14:34 Mariano: tengo entendido que en comercios de venta al detalle o minorista es así, las ventas menores de $1000 se imprimen en controlador fiscal y las mayores a ese monto por factura electrónica y se debe identificar al comprador con nombre, domicilio y CUIT, CUIL o DNI sin importar la condición. Las ventas telefónicas o por internet se hacen todas por factura electrónica.
En el caso donde yo tengo que aplicar el sistema es una droguería y el 100% de la facturación es por factura electrónica. Votos: 0 - Link respuesta -
Fecha: 13-10-2017 11:39:10 Existe un mínimo de $10 por el cuál no se encuentra obligado a emitir comprobantes, siempre y cuando cumpla con los siguientes requisitos:
· Que no revistan la calidad de responsables inscriptos en el IVA
· Que las operaciones se realicen exclusivamente con consumidores finales.
· Que la operación fuere al contado
· Que no posean controladores fiscales y en el caso de monotributistas máquinas registradoras, informados ante este organismo, que permitan la emisión de tiques.
- Que el comprobante no sea exigido por el comprador
> de $10 < a $1000 se esta obligado a emitir comprobante NO ESTA OBLIGADO A identificar al comprador
> de $1000 debe emitir comprobante identificando al comprador sea o no RI o comprador Nacional / Extranjero Votos: 0 - Link respuesta -
Fecha: 21-10-2017 04:11:11 Hola, alguien puede aportar un ejemplo de como generar e imprimir el código de barras con fpdf ?.
Saludos, excelentes los aportes. Votos: 0 - Link respuesta -
Fecha: 21-10-2017 04:45:12 No se puede hacer. Tenes que generarlo con alguna clase externa y luego imprimirlo en el PDF:
$this->write1DBarcode($codigo, 'I25', '', '', '', 15, 0.3, $style ,'N');
$codigo es la estructura completa del codigo de barras previamente generado.
TCPDF y otros similares generan codigo de barras pero no el dígito verificador.
Saludos. Votos: 0 - Link respuesta -
Fecha: 21-10-2017 13:20:27 Podes hacerlo con PHP Barcode Generator y luego imprimirlo en el PDF.
Te dejo un ejemplo completo:
function GetChecksumChar($code) { //Step one $number_odd = 0; for ($i=0; $i < strlen($code); $i+=2) { $number_odd+=$code[$i]; } //Step two $number_odd *= 3; //Step three $number_even = 0; for ($i=1; $i < strlen($code); $i+=2) { $number_even+=$code[$i]; } //Step four $sum = $number_odd+$number_even; //Step five $checksum_char = 10 - ($sum % 10); return $checksum_char == 10 ? 0 : $checksum_char; } $barcode = '20111111112' //CUIL/CUIT (11 caracteres) .'01' //Tipo de factura (2 caracteres) .'0001' //Punto de venta (4 caracteres) .'12345678912345' //CAE (14 caracteres) .'20170921'; //Fecha de expiracion del CAE (8 caracteres); $barcode .= GetChecksumChar($barcode); require('fpdf/fpdf.php'); $pdf = new FPDF(); $pdf->AddPage(); $x = 60; $y = 30; $pdf->Image('http://localhost/barcode?code='.$barcode,$x,$y,NULL,NULL,'PNG'); $pdf->Output();
Como puedes notar la imagen la pide a la url http://localhost/barcode debes cambiar localhost por la url de tu sitio y dentro de la ruta /barcode el siguiente codigo
$code = isset($_GET['code']) ? $_GET['code'] : NULL; if ($code === NULL || strlen($code) !== 40) { exit('Codigo incorrecto'); } //Barcode generator include 'barcode/BarcodeGenerator.php'; include 'barcode/BarcodeGeneratorPNG.php'; $generator = new Picqer\Barcode\BarcodeGeneratorPNG(); $barcode = $generator->getBarcode($code, $generator::TYPE_INTERLEAVED_2_5, 1.25, 50); header('Pragma: '); header('Accept-Ranges: bytes'); header('Content-Length: '.strlen($barcode)); header('Content-Type: image/png'); echo $barcode;
Espero que te sea de ayuda :) Votos: 0 - Link respuesta -
Fecha: 21-10-2017 15:32:18 En la función GetChecksumChar hay un error en la determinación del dígito cuando el resultado del módulo es igual a 0:
$checksum_char = 10 - ($sum % 10);
si $sum % 10 es igual a cero, retorna 10 como dígito verificador lo que es incorrecto.
Solo hay que verificar si el dígito verificador es 10, en ese caso debe retornar 0.
if ($checksum_char == 10) {$checksum_char = 0;}Votos: 0 - Link respuesta -
Fecha: 21-10-2017 17:34:55 Muchas gracias por el aporte Marcelo, no lo había notado, ya lo modifique para que quede bien. Votos: 0 - Link respuesta
-
Fecha: 22-10-2017 04:38:04 Gracias chicos, había empezado a analizar la opción de Gustavo, pero esta última opción me va mejor dado que estoy readaptando el diseño de la factura ya esta desarrollada en fpdf. Votos: 0 - Link respuesta
-
Fecha: 23-10-2017 03:10:13 Marcelo V. descargate el archivo i25.php , es una clase que genera el codigo de barras y se puede extender en fpdf Votos: 0 - Link respuesta
-
Fecha: 23-10-2017 05:46:24 Marcelo,
te copio el código de la clase para generar código de barras (interleaved 2 of 5) con fpdf.
////////////////////////////////////////////////////////////// //INTERLEAVED 2 OF 5 ////////////////////////////////////////////////////////////// class PDF_i25 extends PDF { function i25($xpos, $ypos, $code, $basewidth=1, $height=10){ $wide = $basewidth; $narrow = $basewidth / 3 ; // wide/narrow codes for the digits $barChar['0'] = 'nnwwn'; $barChar['1'] = 'wnnnw'; $barChar['2'] = 'nwnnw'; $barChar['3'] = 'wwnnn'; $barChar['4'] = 'nnwnw'; $barChar['5'] = 'wnwnn'; $barChar['6'] = 'nwwnn'; $barChar['7'] = 'nnnww'; $barChar['8'] = 'wnnwn'; $barChar['9'] = 'nwnwn'; $barChar['A'] = 'nn'; $barChar['Z'] = 'wn'; // add leading zero if code-length is odd if(strlen($code) % 2 != 0){ $code = '0' . $code; } $this->SetFont('Arial', '', 10); $this->Text($xpos, $ypos + $height + 4, $code); $this->SetFillColor(0); // add start and stop codes $code = 'AA'.strtolower($code).'ZA'; for($i=0; $i<strlen($code); $i=$i+2){ // choose next pair of digits $charBar = $code{$i}; $charSpace = $code{$i+1}; // check whether it is a valid digit if(!isset($barChar[$charBar])){ $this->Error('Invalid character in barcode: '.$charBar); } if(!isset($barChar[$charSpace])){ $this->Error('Invalid character in barcode: '.$charSpace); } // create a wide/narrow-sequence (first digit=bars, second digit=spaces) $seq = ''; for($s=0; $s<strlen($barChar[$charBar]); $s++){ $seq .= $barChar[$charBar]{$s} . $barChar[$charSpace]{$s}; } for($bar=0; $bar<strlen($seq); $bar++){ // set lineWidth depending on value if($seq{$bar} == 'n'){ $lineWidth = $narrow; }else{ $lineWidth = $wide; } // draw every second value, because the second digit of the pair is represented by the spaces if($bar % 2 == 0){ $this->Rect($xpos, $ypos, $lineWidth, $height, 'F'); } $xpos += $lineWidth; } } } } //end class ////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// $pdf=new PDF_i25(); //$barcode = cuit 11 posiciones + tipo de comprobante 2 posiciones + punto de venta 4 posiciones + CAE 14 posiciones + fecha vencimiento cae 8 posiciones; $pdf->i25($xpos, $ypos, $barcode, $baseline, $height);
Espero te sirva
Saludos,
Pablo Votos: 0 - Link respuesta -
Fecha: 26-10-2017 04:36:31 Hola a todos. Estoy nuevamente con problemas en las consultas al padrón. Yo estoy utilizando https://soa.afip.gob.ar/sr-padron/v2/persona/xxxxxxxxxxx y https://soa.afip.gob.ar/sr-padron/v2/personas/xxxxxxx dependiendo si es cuit o documento.
Desde hace dos días o tres ya no funcion. Alquien sabe que pasa o tiene desarrollado una consulta al web service de la AFIP.
Desde ya muchas gracias Votos: 0 - Link respuesta -
Fecha: 26-10-2017 05:46:45 Hola Matías, me parece que murió definitivamente. Lo recomendable sería usar directo el webservice y listo. Saludos. Votos: 0 - Link respuesta
-
Fecha: 26-10-2017 06:20:19 Si, murio.
Por eso si alguien ya lo tiene desarrollado seria un ahorro de tiempo. sino hay que ponerse a desarrollarlo :) Votos: 0 - Link respuesta -
Fecha: 26-10-2017 06:52:54 El servicio https://soa.afip.gob.ar/sr-padron/v1/constancia/xxxxxxxxxxx que retorna el PDF del CUIT dado está funcionando. Votos: 0 - Link respuesta
-
Fecha: 26-10-2017 07:21:15 Si, ese funciona pero no lo puedo usar para completar los datos de la tabla Votos: 0 - Link respuesta
-
Fecha: 26-10-2017 10:12:59 Hola que tal a mi me sigue funcionando ok les dejo como lo hago yo para recuperar info
este es para factura A
$dni = $_GET['dni']; $mail_cliente = $_GET['mail_cliente']; //$dni='30685849751'; $d_cliente=$dni; // Se evalúa a true ya que $var está vacia if (empty($dni)) { $td_cliente=""; }else{$td_cliente="80";} //80=CUIL/CUIT 96=DNI 99=Consumidor Final $tfe= "1";//1=Factura A 6=Factura B $buscar = 'https://soa.afip.gob.ar/sr-padron/v2/persona/'.$dni; $respuesta = file_get_contents($buscar); $respuesta = json_decode($respuesta); $error=$respuesta->error->mensaje; $cuit_cliente=$respuesta->data->idPersona; $razonsocial=$respuesta->data->nombre; $direccion=$respuesta->data->domicilioFiscal->direccion; $cp=$respuesta->data->domicilioFiscal->codPostal; $prov=$respuesta->data->domicilioFiscal->idProvincia; // Impuestos inscriptos $tabla = $respuesta->data->impuestos; $elementos = count ($tabla); for($i=0;$i<$elementos;$i++){ $impuesto=$respuesta->data->impuestos[$i]; } $tabla = $respuesta->data->impuestos; $elementos = count ($tabla); for($i=0;$i<$elementos;$i++){ $impuesto=$respuesta->data->impuestos[$i]; if ($impuesto == 30){ $iva="Responsable Inscripto";}else{echo "";}} if ($iva == ""){echo " <br>No es responsable inscripto, no se puede hacer factura A debe hacerse tiket factura B"; }else{ if ($prov == '0'){$pv='Capital Federal';}else{ echo " ";} if ($prov == '1'){$pv="Buenos Aires";}else{} if ($prov == '2'){$pv="Catamara";}else{} if ($prov == '3'){$pv="Córdoba";}else{} if ($prov == 4){$pv="Corrientes";}else{} if ($prov == 5){$pv="Entre Ríos";}else{} if ($prov == 6){$pv="Jujuy";}else{} if ($prov == 7){$pv="Mendoza";}else{} if ($prov == 8){$pv="La Rioja";}else{} if ($prov == 9){$pv="CABA";}else{} if ($prov == 10){$pv="Salta";}else{} if ($prov == 11){$pv="San Juan";}else{} if ($prov == 12){$pv="San Luis";}else{} if ($prov == 13){$pv="Santa Fe";}else{} if ($prov == 14){$pv="Santiago del Estero";}else{} if ($prov == 15){$pv="Tucumán";}else{} if ($prov == 16){$pv="Chaco";}else{} if ($prov == 17){$pv="Chubut";}else{} if ($prov == 18){$pv="Formosa";}else{} if ($prov == 19){$pv="Misiones";}else{} if ($prov == 20){$pv="Neuquén";}else{} if ($prov == 21){$pv="La Pampa";}else{} if ($prov == 22){$pv="Río Negro";}else{} if ($prov == 23){$pv="Santa Cruz";}else{} if ($prov == 24){$pv="Tierra del Fuego";}else{} setlocale(LC_ALL, "es_RA");$dia=date("l"); if ($dia=="Monday") $dia="Lunes"; if ($dia=="Tuesday") $dia="Martes"; if ($dia=="Wednesday") $dia="Miércoles"; if ($dia=="Thursday") $dia="Jueves"; if ($dia=="Friday") $dia="Viernes"; if ($dia=="Saturday") $dia="Sabado"; if ($dia=="Sunday") $dia="Domingo"; $mes=date("F"); if ($mes=="January") $mes="Enero"; if ($mes=="February") $mes="Febrero"; if ($mes=="March") $mes="Marzo"; if ($mes=="April") $mes="Abril"; if ($mes=="May") $mes="Mayo"; if ($mes=="June") $mes="Junio"; if ($mes=="July") $mes="Julio"; if ($mes=="August") $mes="Agosto"; if ($mes=="September") $mes="Setiembre"; if ($mes=="October") $mes="Octubre"; if ($mes=="November") $mes="Noviembre"; if ($mes=="December") $mes="Diciembre"; $ano=date("Y"); $dia2=date("d"); $mes2=date("m"); $hora=date('H:i:s a'); $hora2=date('his'); $cod_venta=$dia2.$mes2.$ano.$hora2; $dia_d2 = date('d'); $mes_d2 = date('m'); $ano_d2 = date('Y'); $fecha2=date('d - m - Y'); $fechad=$dia." ".$dia_d2." ".$mes." de ".$ano; include('exceptionhandler.php'); include('wsaa.class.php'); include('wsfev1.class.php'); /***************** //WSAA ****************/ //echo date('c',date('U')); $wsaa = new WSAA(); if($wsaa->get_expiration() < date('c',date('U'))) {if ($wsaa->generar_TA()) {echo '';} else {echo '<br>Error al obtener el TA';}} else {$wsaa->get_expiration();} /***************** //WSFEV1 ****************/ $wsfev1 = new WSFEV1(); // Carga el archivo TA.xml $wsfev1->openTA(); $ptovta = 4; //Punto de Venta $tipocbte = $tfe; //1=Factura A 6=Factura B $regfe['CbteTipo']=$tipocbte; $regfe['Concepto']=1; $regfe['DocTipo']=$td_cliente; //80=CUIL/CUIT 96=DNI 99=Consumidor Final $regfe['DocNro']=$d_cliente; // tipo de Documento DNI //$regfe['CbteDesde']=$cbte; // nro de comprobante desde (para cuando es lote) //$regfe['CbteHasta']=$cbte; // nro de comprobante hasta (para cuando es lote) $regfe['CbteFch']=date('Ymd'); // fecha emision de factura //La suma de los campos Importe en IVA debe ser igual al valor ingresado en ImpIVA // La suma de los campos BaseImp en AlicIva debe ser igual al valor ingresado en ImpNeto. $regfe['ImpNeto']=$tmenosiva; // neto gravado $regfe['ImpTotConc']=0; // no gravado $regfe['ImpIVA']=$tiva; // IVA liquidado $regfe['ImpTrib']=0; // otros tributos $regfe['ImpOpEx']=0; // operacion exentas $regfe['ImpTotal']=$total; // total de la factura. ImpNeto + ImpTotConc + ImpIVA + ImpTrib + ImpOpEx $regfe['FchServDesde']=null; // solo concepto 2 o 3 $regfe['FchServHasta']=null; // solo concepto 2 o 3 $regfe['FchVtoPago']=null; // solo concepto 2 o 3 $regfe['MonId']='PES'; // Id de moneda 'PES' $regfe['MonCotiz']=1; // Cotizacion moneda. Solo exportacion // Comprobantes asociados (solo notas de crédito y débito): //$regfeasoc['Tipo'] = 91; //91; //tipo 91|5 //$regfeasoc['PtoVta'] = 1; //$regfeasoc['Nro'] = 1; // Detalle de otros tributos $regfetrib['Id'] = 1; $regfetrib['Desc'] = 'impuesto'; $regfetrib['BaseImp'] = 0; $regfetrib['Alic'] = 0; $regfetrib['Importe'] = 0; // Detalle de iva $regfeiva['Id'] = 5; $regfeiva['BaseImp'] = $tmenosiva; $regfeiva['Importe'] = $tiva; $nro = $wsfev1->FECompUltimoAutorizado($ptovta, $tipocbte); if($nro == false) { echo "<br>Error al obtener el ultimo numero autorizado<br>"; $nro=0; $nro1 = 0; echo "Code: ", $wsfev1->Code, "<br>"; echo "Msg: ", $wsfev1->Msg, "<br>"; echo "Obs: ", $wsfev1->ObsCode, "<br>"; echo "Msg: ", $wsfev1->ObsMsg, "<br>"; } else { "<br>FECompUltimoAutorizado: $nro <br>"; $nro1 = $nro + 1; } $cae = $wsfev1->FECAESolicitar($nro1, // ultimo numero de comprobante autorizado mas uno $ptovta, // el punto de venta $regfe, // los datos a facturar $regfeasoc, $regfetrib, $regfeiva ); if($cae == false || $cae['cae'] <= 0) { echo "<br>Error al obtener CAE<br>"; echo "Code: ", $wsfev1->Code, "<br>"; echo "Msg: ", $wsfev1->Msg, "<br>"; echo "Obs: ", $wsfev1->ObsCode, "<br>"; echo "Msg: ", $wsfev1->ObsMsg, "<br>"; } $caenum = $cae['cae']; $caefvt = $cae['fecha_vencimiento']; if($caenum <= 0 || $caenum == '' || $caenum == false){ echo "<br>"; echo "Error al obtener CAE"; echo "<br>"; } else { echo "<br>"; //echo "Ok"; echo "<br>"; } ?> <?PHP header("Content-type: text/html; charset=iso-8859-2"); ?> <?PHP $numero = $nro+1; $cuit= '20181005964'; $comprob = str_pad($tipocbte, 2, "0", STR_PAD_LEFT); $punto = str_pad($ptovta, 4, "0", STR_PAD_LEFT); $factura=$punto." ".str_pad($numero, 6, "0", STR_PAD_LEFT); $barras=$cuit.$comprob.$punto.$caenum.$caefvt; $condiciondeventa=$ef." | ".$tj; //verificamos que todo levantó bien en las variables y lo subo a la base de datos echo $razonsocial."<br>"; echo $direccion."<br>"; echo $pv."<br>"; echo $cp."<br>"; echo $iva."<br>"; echo $cuit_cliente."<br>"; echo $condiciondeventa."<br>"; echo $caenum."<br>"; echo $factura."<br>"; echo $barras."<br>"; echo $tmenosiva."<br>"; echo $tiva."<br>"; echo $total."<br>"; $conn=$_SERVER['DOCUMENT_ROOT']."/conn.php"; include ($conn);
Subo todo a una base de datos y luego lo presento en un php para imprimir / guardar el pdf
y este para personas fisicas factura B
$dni =$_GET['dni']; //echo "aca ".$dni; // Se evalúa a true ya que $var está vacia if (empty($dni)) { $td_cliente="99"; }else{$td_cliente="96";} //80=CUIL/CUIT 96=DNI 99=Consumidor Final //echo "Tipo de dni: ".$td_cliente."<br>"; if (empty($dni)) { $d_cliente='0'; }else{$d_cliente=$dni;} //echo "Numero de DNI: ".$d_cliente."<br>"; $tfe= "6";//1=Factura A 6=Factura B $buscar = 'https://soa.afip.gob.ar/sr-padron/v2/personas/'.$dni; $respuesta = file_get_contents($buscar); $respuesta = json_decode($respuesta); $cuit= $respuesta->data[0]; //echo"CUIL/CUIT : ".$cuit.'</br>'; $buscar = 'https://soa.afip.gob.ar/sr-padron/v2/persona/'.$cuit; $respuesta = file_get_contents($buscar); $respuesta = json_decode($respuesta); $cuil=$respuesta->data->idPersona; $nombre=$respuesta->data->nombre; date_default_timezone_set('America/Argentina/Buenos_Aires'); $dia=date("l"); if ($dia=="Monday") $dia="Lunes"; if ($dia=="Tuesday") $dia="Martes"; if ($dia=="Wednesday") $dia="Miércoles"; if ($dia=="Thursday") $dia="Jueves"; if ($dia=="Friday") $dia="Viernes"; if ($dia=="Saturday") $dia="Sabado"; if ($dia=="Sunday") $dia="Domingo"; $mes=date("F"); if ($mes=="January") $mes="Enero"; if ($mes=="February") $mes="Febrero"; if ($mes=="March") $mes="Marzo"; if ($mes=="April") $mes="Abril"; if ($mes=="May") $mes="Mayo"; if ($mes=="June") $mes="Junio"; if ($mes=="July") $mes="Julio"; if ($mes=="August") $mes="Agosto"; if ($mes=="September") $mes="Setiembre"; if ($mes=="October") $mes="Octubre"; if ($mes=="November") $mes="Noviembre"; if ($mes=="December") $mes="Diciembre"; $ano=date("Y"); $dia2=date("d"); $mes2=date("m"); $hora=date('H:i:s a'); $hora2=date('his'); $cod_venta=$dia2.$mes2.$ano.$hora2; $dia_d2 = date('d'); $mes_d2 = date('m'); $ano_d2 = date('Y'); $fecha2=date('d - m - Y'); $fechad=$dia." ".$dia_d2." ".$mes." de ".$ano; header('Content-Type: text/html; charset=UTF-8'); //datos ingresados en la venta include('config_b.php'); // datos de facturacion de empresa include('exceptionhandler.php'); include('wsaa.class.php'); include('wsfev1.class.php'); /***************** //WSAA ****************/ //echo date('c',date('U')); $wsaa = new WSAA(); if($wsaa->get_expiration() < date('c',date('U'))) {if ($wsaa->generar_TA()) {echo '';} else {echo '<br>Error al obtener el TA';}} else {$wsaa->get_expiration();} /***************** //WSFEV1 ****************/ $wsfev1 = new WSFEV1(); // Carga el archivo TA.xml $wsfev1->openTA(); $ptovta = 4; //Punto de Venta $tipocbte = $tfe; //1=Factura A 6=Factura B $regfe['CbteTipo']=$tipocbte; $regfe['Concepto']=1; $regfe['DocTipo']=$td_cliente; //80=CUIL/CUIT 96=DNI 99=Consumidor Final $regfe['DocNro']=$d_cliente; // tipo de Documento DNI //$regfe['CbteDesde']=$cbte; // nro de comprobante desde (para cuando es lote) //$regfe['CbteHasta']=$cbte; // nro de comprobante hasta (para cuando es lote) $regfe['CbteFch']=date('Ymd'); // fecha emision de factura $regfe['ImpNeto']=$tmenosiva_b; // neto gravado $regfe['ImpTotConc']=0; // no gravado $regfe['ImpIVA']=$tiva_b; // IVA liquidado $regfe['ImpTrib']=0; // otros tributos $regfe['ImpOpEx']=0; // operacion exentas $regfe['ImpTotal']=$total_b; // total de la factura. ImpNeto + ImpTotConc + ImpIVA + ImpTrib + ImpOpEx $regfe['FchServDesde']=null; // solo concepto 2 o 3 $regfe['FchServHasta']=null; // solo concepto 2 o 3 $regfe['FchVtoPago']=null; // solo concepto 2 o 3 $regfe['MonId']='PES'; // Id de moneda 'PES' $regfe['MonCotiz']=1; // Cotizacion moneda. Solo exportacion // Comprobantes asociados (solo notas de crédito y débito): //$regfeasoc['Tipo'] = 91; //91; //tipo 91|5 //$regfeasoc['PtoVta'] = 1; //$regfeasoc['Nro'] = 1; // Detalle de otros tributos $regfetrib['Id'] = 1; $regfetrib['Desc'] = 'impuesto'; $regfetrib['BaseImp'] = 0; $regfetrib['Alic'] = 0; $regfetrib['Importe'] = 0; // Detalle de iva $regfeiva['Id'] = 5; $regfeiva['BaseImp'] = $tmenosiva_b; $regfeiva['Importe'] = $tiva_b; $nro = $wsfev1->FECompUltimoAutorizado($ptovta, $tipocbte); if($nro == false) { echo "<br>Error al obtener el ultimo numero autorizado<br>"; $nro=0; $nro1 = 0; echo "Code: ", $wsfev1->Code, "<br>"; echo "Msg: ", $wsfev1->Msg, "<br>"; echo "Obs: ", $wsfev1->ObsCode, "<br>"; echo "Msg: ", $wsfev1->ObsMsg, "<br>"; } else { "<br>FECompUltimoAutorizado: $nro <br>"; $nro1 = $nro + 1; } $cae = $wsfev1->FECAESolicitar($nro1, // ultimo numero de comprobante autorizado mas uno $ptovta, // el punto de venta $regfe, // los datos a facturar $regfeasoc, $regfetrib, $regfeiva ); if($cae == false || $cae['cae'] <= 0) { echo "<br>Error al obtener CAE<br>"; echo "Code: ", $wsfev1->Code, "<br>"; echo "Msg: ", $wsfev1->Msg, "<br>"; echo "Obs: ", $wsfev1->ObsCode, "<br>"; echo "Msg: ", $wsfev1->ObsMsg, "<br>"; } $caenum = $cae['cae']; $caefvt = $cae['fecha_vencimiento']; if($caenum <= 0 || $caenum == '' || $caenum == false){ echo "<br>"; echo "Error al obtener CAE"; echo "<br>"; } else { echo "<br>"; //echo "Ok"; echo "<br>"; } ?> <script type="text/javascript"> function imprimir() { if (window.print) { window.print(); } else { alert("La función de impresion no esta soportada por su navegador."); } } </script> </head> <body onload="imprimir();"> <!-- onload="imprimir();" --> <?PHP echo "<div align='center' style=''>"; $numero = $nro+1; $cuit= '20181005964'; $comprob = str_pad($tipocbte, 2, "0", STR_PAD_LEFT); $punto = str_pad($ptovta, 4, "0", STR_PAD_LEFT); echo "<img height='140px' src='../feafip2/pdf/examples/images/logo.jpg'><br>"; echo ".............................................................................<br>"; echo "<br>"; echo "Talla Antigua de Piñeiro Oscar Anibal<br>"; echo "Ingresos Brutos: $ingresosbrutos<br>"; echo "Inicio Act. $iniciodeactividades <br> "; echo "C.U.I.T.: $cuit_f<br>"; echo "Av. Rivadavia 6433 (1406) Capital Federal<br>"; echo "Tel.: 4632-6882 <br>"; echo ".............................................................................<br>"; echo "<br>"; $factura_b= $punto." ".str_pad($numero, 6, "0", STR_PAD_LEFT); echo "Ticket Factura tipo B ".$factura_b."<br>Fecha ".date('d-m-Y')." - ".date('H:i:s')."<br>"; echo ".............................................................................<br>"; echo "A Consumidor Final<br>"; echo "DNI: ".$d_cliente."<br>"; echo "Nombre: ".$nombre."<br>"; echo "Domicilio: Sin Domicilio<br>"; echo "Localidad: Sin Localidad<br>"; echo ".............................................................................<br>"; echo "<br>"; echo "Cond. de venta ............. Subtotal<br>"; $var = ''; if($efe_p == $var AND $tar_p == $var ) { echo ""; }elseif($efe_p > $var AND $tar_p == $var ){echo "efectivo ............. $ ".$t."<br>"; }elseif($efe_p == $var AND $tar_p > $var ){echo "tarjeta ............. $ ".$t."<br>"; }elseif($efe_p > $var AND $tar_p > $var ){echo "tarjeta y efectivo ............. $ ".$t."<br>"; } if($efe_p1 == $var AND $tar_p1 == $var ) { echo ""; }elseif($efe_p1> $var AND $tar_p1 == $var ){echo "efectivo ............. $ ".$t1."<br>"; }elseif($efe_p1 == $var AND $tar_p1 > $var ){echo "tarjeta ............. $ ".$t1."<br>"; }elseif($efe_p > $var AND $tar_p1 > $var ){echo "tarjeta y efectivo ............. $ ".$t1."<br>"; } if($efe_p2 == $var AND $tar_p2 == $var ) { echo ""; }elseif($efe_p2 > $var AND $tar_p2 == $var ){echo "efectivo ............. $ ".$t2."<br>"; }elseif($efe_p2 == $var AND $tar_p2 > $var ){echo "tarjeta ............. $ ".$t2."<br>"; }elseif($efe_p > $var AND $tar_p2 > $var ){echo "tarjeta y efectivo ............. $ ".$t2."<br>"; } if($efe_p3 == $var AND $tar_p3 == $var ) { echo ""; }elseif($efe_p3 > $var AND $tar_p3 == $var ){echo "efectivo ............. $ ".$t3."<br>"; }elseif($efe_p3 == $var AND $tar_p3 > $var ){echo "tarjeta ............. $ ".$t3."<br>"; }elseif($efe_p > $var AND $tar_p3 > $var ){echo "tarjeta y efectivo ............. $ ".$t3."<br>"; } if($efe_p4 == $var AND $tar_p4 == $var ) { echo ""; }elseif($efe_p4 > $var AND $tar_p4 == $var ){echo "efectivo ............. $ ".$t4."<br>"; }elseif($efe_p4 == $var AND $tar_p4 > $var ){echo "tarjeta ............. $ ".$t4."<br>"; }elseif($efe_p > $var AND $tar_p4 > $var ){echo "tarjeta y efectivo ............. $ ".$t4."<br>"; } if($efe_p5 == $var AND $tar_p5 == $var ) { echo ""; }elseif($efe_p5 > $var AND $tar_p5 == $var ){echo "efectivo ............. $ ".$t5."<br>"; }elseif($efe_p5 == $var AND $tar_p5 > $var ){echo "tarjeta ............. $ ".$t4."<br>"; }elseif($efe_p > $var AND $tar_p5 > $var ){echo "tarjeta y efectivo ............. $ ".$t5."<br>"; } if($efe_p6 == $var AND $tar_p6 == $var ) { echo ""; }elseif($efe_p6 > $var AND $tar_p6 == $var ){echo "efectivo ............. $ ".$t6."<br>"; }elseif($efe_p6 == $var AND $tar_p6 > $var ){echo "tarjeta ............. $ ".$t6."<br>"; }elseif($efe_p > $var AND $tar_p6 > $var ){echo "tarjeta y efectivo ............. $ ".$t6."<br>"; } if($efe_p7 == $var AND $tar_p7 == $var ) { echo ""; }elseif($efe_p7 > $var AND $tar_p7 == $var ){echo "efectivo ............. $ ".$t7."<br>"; }elseif($efe_p7 == $var AND $tar_p7 > $var ){echo "tarjeta ............. $ ".$t7."<br>"; }elseif($efe_p > $var AND $tar_p7 > $var ){echo "tarjeta y efectivo ............. $ ".$t7."<br>"; } if($efe_p8 == $var AND $tar_p8 == $var ) { echo ""; }elseif($efe_p8 > $var AND $tar_p8 == $var ){echo "efectivo ............. $ ".$t8."<br>"; }elseif($efe_p8 == $var AND $tar_p8 > $var ){echo "tarjeta ............. $ ".$t8."<br>"; }elseif($efe_p > $var AND $tar_p8 > $var ){echo "tarjeta y efectivo ............. $ ".$t8."<br>"; } echo "<br>"; echo "<div style=''><br><br></div>"; echo "<br>"; echo "Total ...................... $".$total_b; echo "<br>"; echo ".............................................................................<br>"; echo "Cae: ", $caenum." "; echo "Fecha Vto: ", date( "d/m/Y", strtotime( $caefvt ) ).""; ?> <div id="bcTarget"></div> <script type="text/javascript"> $( document ).ready(function() { $("#bcTarget").barcode("<?php echo $cuit.$comprob.$punto.$caenum.$caefvt;?>", "int25"); }); </script> <?PHP echo "</div>"; $factb=str_pad($numero, 6, "0", STR_PAD_LEFT); $barras=$cuit.$comprob.$punto.$caenum.$caefvt; ?>
Por el momento no tuve problemas con https://soa.afip.gob.ar/sr-padron/v2/persona/ ni
https://soa.afip.gob.ar/sr-padron/v2/personas/ // pero bueno no se quizás falle en algún momento, espero haber sido de ayuda, de todas maneras cuando pueda estoy con muy poco tiempo subo un script pelado para que luego lo moldeen a su gusto, saludos. Votos: 0 - Link respuesta -
Fecha: 27-10-2017 04:31:33 Muchas gracias Mariano.
Hoy esta funcionando nuevamente. Votos: 0 - Link respuesta -
Fecha: 04-11-2017 13:43:25 Hola gente!!! estoy trabajando con el GRAN aporte de Julio.
Siguiendo las instrucciones logre obtener el CAE para tipo 1, 6 y 7 (Factura A, B y ND B), pero cuando quiero obtener el segundo comprobante de cualquiera de los tipos antes mencionados me da el siguiente error:
Error al obtener CAE
Code: 10016
Msg: El numero o fecha del comprobante no se corresponde con el próximo a autorizar. Consultar método FECompUltimoAutorizado.
Ademas, cuando anduvo y cuando no, siempre me tira errores que anteriormente han mencionado:
Notice: Undefined property: stdClass::$Errors in C:\wamp\www\afipfev1\wsfev1.class.php on line 87
Notice: Trying to get property of non-object in C:\wamp\www\afipfev1\wsfev1.class.php on line 87
etc etc son varias lineas
Al index.php le agregue por si era problemas de sincronización
setlocale(LC_ALL,"es_RA");
date_default_timezone_set ('America/Argentina/Buenos_Aires');
estoy perdido, agradecería su ayuda. Saludos Votos: 0 - Link respuesta -
Fecha: 04-11-2017 14:14:11 A mi me pasaba, fijate que tengas la fecha time.afip.gov.ar en la pc servidor, o el ultimo comprobante +1 saludos Votos: 0 - Link respuesta
-
Fecha: 04-11-2017 14:47:01 Mariano, como hago para verificar time.afip.gov.ar en mi PC ? gracias Votos: 0 - Link respuesta
-
Fecha: 04-11-2017 15:22:21 Si tenes mac entras a preferencias del sistema > fecha y hora > y en establecer fecha y hora pones time.afip.gov.ar
si tenes win te dejo algunos tutos
https://juliorestrepo.wordpress.com/2014/06/26/ntp-windows-sincronizando-la-hora-del-computador/
saludos Votos: 0 - Link respuesta -
Fecha: 05-11-2017 06:05:17 Hola nuevamente, hice la sincronización con afip, por las dudas genere nuevamente el certificado y sigo con el mismo problema Votos: 0 - Link respuesta
-
Fecha: 05-11-2017 06:44:26 Debe ser entonces por el próximo comprobante a autorizar, fíjate tú variable de sumarle 1 $ultcomp=$ultimocomp+1;
Suerte Votos: 0 - Link respuesta -
Fecha: 05-11-2017 10:06:36 Si Mariano, ya la rutina lo tenía implementado. Votos: 0 - Link respuesta
-
Fecha: 05-11-2017 11:06:57 fijate de sacar date_default_timezone_set ('America/Argentina/Buenos_Aires'); pero no setlocale(LC_ALL,"es_RA");
a mi me trababa eso en algun momento ahora que tenes el NTP configurado quizás te lo esté trabando, sino publicá el codigo y lo revisamos entre todos, saludos Votos: 1 - Link respuesta -
Fecha: 05-11-2017 13:44:58 Hola a todos. Una consulta para quien sepa: debo cambiar la computadora de un cliente que tiene el sistema de facturación, y desde donde autoriza la factura electrónica.
La pregunta es: ¿debo volver a generar las claves openssl para obtener un nuevo crt de AFIP? ¿o funciona igual solo instalando el sistema en la nueva PC con los mismos certificados?
Gracias. Votos: 0 - Link respuesta -
Fecha: 05-11-2017 13:55:59 Marcelo, yo creo que debería funcionar sin problemas con los mismos certificados en otra PC, ya que por ejemplo yo eh utilizado el mismo certificado desde mi PC y desde un servidor, la cual seria otra PC diferente, y funciono sin problemas. Votos: 2 - Link respuesta
-
Fecha: 05-11-2017 15:54:17 Ok gracias Ivan. Si, yo también cuando probé el sistema usé los mismos certificados en mi oficina y en la empresa del cliente. Pero mi duda era por un tema de seguridad o auditoría, porque el certificado que se genera en cada PC obviamente difiere, y como la AFIP identifica el punto de venta con el crt, quería asegurarme escuchando otra opinión. Votos: 0 - Link respuesta
-
Fecha: 06-11-2017 03:28:02 Hola MArcelo. Yo genero los certificados desde mi pc, los pruebo y despues los paso a un servidro.
No deberias tener problema
Saludos Votos: 0 - Link respuesta -
Fecha: 24-11-2017 12:52:36 Hola Gente,
La consulta para validar el CUIT/CUIL/DNI (https://soa.afip.gob.ar/sr-padron/v2/persona/xxxxxxx' funcionaba perfectamente y hace un par de días que me tira el siguiente error Warning: file_get_contents(https://soa.afip.gob.ar/sr-padron/v2/persona/xxxxxx): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in .......
Todavía estoy en ambiente de homologación. Alguna idea ?
Saludos y Gracias Votos: 0 - Link respuesta -
Fecha: 24-11-2017 14:26:56 Está fallando la consulta del padron, cada tanto se cae, pero no es algo primordial, con enviar el dni del cliente pasa igual, el problema es la factura A pero ya va a estar en linea nuevamente Marcelo tranqui, saludos Votos: 0 - Link respuesta
-
Fecha: 24-11-2017 14:51:35 habria que investigar este manual de padron tambien
http://www.afip.gob.ar/ws/ws_sr_padron_a5/manual_ws_sr_padron_a5_v1.0.pdf
saludos Votos: 0 - Link respuesta -
Fecha: 25-11-2017 06:57:15 Hola a todos. Una consulta.
Mi cliente hace factura electrónica y utiliza remito R (es responsable inscripto) para el transporte de mercadería.
Creé un punto de venta (los remitos llevan un punto de venta diferente a las facturas) y solicité el CAI para 500 remitos, pero la duda que tengo es si puedo imprimir estos remitos (respetando la numeración obviamente) desde el mismo sistema de facturación, o si debe imprimirlos obligatoriamente una imprenta? Votos: 0 - Link respuesta -
Fecha: 30-11-2017 03:32:17 buen dia a todos.
Estoy tratando de entender el tema de la consulta a los padrones de la AFIP:
http://www.afip.gob.ar/ws/ws_sr_padron_a4/manual_ws_sr_padron_a4_v1.1.pdf
http://www.afip.gob.ar/ws/ws_sr_padron_a5/manual_ws_sr_padron_a5_v1.0.pdf
http://www.afip.gob.ar/ws/ws_sr_padron_a10/manual_ws_sr_padron_a10_v1.1.pdf
http://www.afip.gob.ar/ws/ws_sr_padron_a100/manual_ws_sr_padron_a100_v1.0a.pdf
Todos estos métodos me parece que son iguales, salvo la respuesta que contiene mas datos unos que otros.
hasta ahora todo lo que logre fue obtener el token y el sign (que no es gran cosa ya que se utiliza el mismo que para factura electrónica.
Hay que habilitar los servicios en la pagina de la AFIP igual que hicieron con factura electronica.
Mi problema es que soy prácticamente nulo en el manejo del SOAP.
les dejo el codigo PHP para obtener el token y el sign. (que no es otro que el que se obtiene de la afip pero con algunas modificaciones ($currentPath) ya que no me tomaba el directorio.
Programa bajo windows 10 con AppServ Open Project - 8.6.0 for Windows / PHP 5.2.6.
Otro agregado son las últimas líneas para poder obtener el token y el sign por separado.
Espero que entre todos podamos llegar a un buen final.
Saludos y gracias
<?php # Author: Gerardo Fisanotti - DvSHyS/DiOPIN/AFIP - 13-apr-07 # Function: Get an authorization ticket (TA) from AFIP WSAA # Input: # WSDL, CERT, PRIVATEKEY, PASSPHRASE, SERVICE, URL # Check below for its definitions # Output: # TA.xml: the authorization ticket as granted by WSAA. #============================================================================== $certificado = "ghf.crt"; // es el certificado obtendio de administrador del webservice a conectarse $clave = "ghf.key"; // Es la clave generada an el open_ssl define ("WSDL", "wsaa.wsdl"); # The WSDL corresponding to WSAA define ("CERT", "ghf.crt"); # The X.509 certificate in PEM format define ("PRIVATEKEY", "ghf.key"); # The private key correspoding to CERT (PEM) define ("PASSPHRASE", "xxxxx"); # The passphrase (if any) to sign define ("URL", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms"); #define ("URL", "https://wsaa.afip.gov.ar/ws/services/LoginCms"); #------------------------------------------------------------------------------ # You shouldn't have to change anything below this line!!! #============================================================================== function CreateTRA($SERVICE) { $TRA = new SimpleXMLElement( '<?xml version="1.0" encoding="UTF-8"?>' . '<loginTicketRequest version="1.0">'. '</loginTicketRequest>'); $TRA->addChild('header'); $TRA->header->addChild('uniqueId',date('U')); $TRA->header->addChild('generationTime',date('c',date('U')-60)); $TRA->header->addChild('expirationTime',date('c',date('U')+60)); $TRA->addChild('service',$SERVICE); $TRA->asXML('TRA.xml'); } #============================================================================== # This functions makes the PKCS#7 signature using TRA as input file, CERT and # PRIVATEKEY to sign. Generates an intermediate file and finally trims the # MIME heading leaving the final CMS required by WSAA. function SignTRA() { $currentPath = getcwd() . "/"; if (!file_exists("TRA.xml")) {exit("Failed to open TRA.xml\n");} $STATUS=openssl_pkcs7_sign($currentPath ."TRA.xml", $currentPath ."TRA.tmp", "file://". $currentPath . CERT, array("file://". $currentPath . PRIVATEKEY, PASSPHRASE), array(), !PKCS7_DETACHED ); if (!$STATUS) {exit("ERROR generating PKCS#7 signature ". $currentPath . CERT."\n" );} $inf=fopen($currentPath ."TRA.tmp", "r"); $i=0; $CMS=""; while (!feof($inf)) { $buffer=fgets($inf); //echo('buffer ('.$i.') = '.$buffer);echo('</br>'); if ( $i++ >= 4 ) {$CMS.=$buffer;} } fclose($inf); # unlink("TRA.xml"); unlink("TRA.tmp"); return $CMS; } #============================================================================== function CallWSAA($CMS) { $client=new SoapClient(WSDL, array( 'soap_version' => SOAP_1_2, 'location' => URL, 'trace' => 1, 'exceptions' => 0 )); $results=$client->loginCms(array('in0'=>$CMS)); file_put_contents("request-loginCms.xml",$client->__getLastRequest()); file_put_contents("response-loginCms.xml",$client->__getLastResponse()); if (is_soap_fault($results)) {exit("SOAP Fault: ".$results->faultcode."\n".$results->faultstring."\n");} return $results->loginCmsReturn; } #============================================================================== function ShowUsage($MyPath) { printf("Uso : %s Arg#1 Arg#2\n", $MyPath); printf("donde: Arg#1 debe ser el service name del WS de negocio.\n"); printf(" Ej.: %s wsfe\n", $MyPath); } #============================================================================== function CreateGetPersona($SERVICE) { $TRA = new SimpleXMLElement( '<?xml version="1.0" encoding="UTF-8"?>' . '<loginTicketRequest version="1.0">'. '</loginTicketRequest>'); $TRA->addChild('header'); $TRA->header->addChild('uniqueId',date('U')); $TRA->header->addChild('generationTime',date('c',date('U')-60)); $TRA->header->addChild('expirationTime',date('c',date('U')+60)); $TRA->addChild('service',$SERVICE); $TRA->asXML('GetPersona.xml'); } #============================================================================== ini_set("soap.wsdl_cache_enabled", "0"); if (!file_exists(CERT)) {exit("Failed to open ".$certificado."\n");} if (!file_exists(PRIVATEKEY)) {exit("Failed to open ".$clave."\n");} if (!file_exists(WSDL)) {exit("Failed to open ".WSDL."\n");} $SERVICE = 'ws_sr_padron_a5'; CreateTRA($SERVICE); $CMS=SignTRA(); $TA=CallWSAA($CMS); if (!file_put_contents("TA.xml", $TA)) {exit();} echo('--------------------------------------------------------');echo('</br>'); echo('TA = '.$TA);echo('</br>'); echo('--------------------------------------------------------');echo('</br>'); $TA = simplexml_load_string(CallWSAA($CMS)); echo('Token = '.$TA->credentials->token);echo('</br>'); echo('Sign = '.$TA->credentials->sign);echo('</br>'); ?>Votos: 1 - Link respuesta -
Fecha: 30-11-2017 04:22:24 de esta direccion se descargan el wsdl
https://awshomo.afip.gov.ar/sr-padron/webservices/personaServiceA5?WSDL Votos: 1 - Link respuesta -
Fecha: 02-12-2017 12:48:04 ws_sr_padron_a4
<?php $modo = 'P'; // valores posibles H = Homologacion -- P = Produccion $certificado = "ghf.crt"; // es el certificado obtendio de administrador del webservice a conectarse $clave = "ghf.key"; // Es la clave generada an el open_ssl $persona = 20138815081; // Es el cuit que busco define ("WSDL", "wsaa.wsdl"); # The WSDL corresponding to WSAA //define ("CERT", "claves/swci/ghf.crt"); # The X.509 certificate in PEM format //define ("PRIVATEKEY", "claves/swci/ghf.key"); # The private key correspoding to CERT (PEM) define ("PASSPHRASE", "xxxxx"); # The passphrase (if any) to sign ######################################################## ### Pregunto si esta en modo homologacion o ### ### produccion para buscar la clave y el certificado ### ### en el directorio correspondiente y la url ### ######################################################## if($modo == 'H'){echo('homologacion');echo('</br>'); define ("URL", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms"); define ("CERT", "claves/homologacion/ghf.crt"); define ("PRIVATEKEY", "claves/homologacion/ghf.key");} else {echo('produccion');echo('</br>'); define ("URL", "https://wsaa.afip.gov.ar/ws/services/LoginCms"); define ("CERT", "claves/produccion/ghf.crt"); define ("PRIVATEKEY", "claves/produccion/ghf.key");} define ("CUIT", "20138815081"); #********************************************** #** No hay que cambiar nada en estas lineas *** #********************************************** function CreateTRA($SERVICE) { $TRA = new SimpleXMLElement( '<?xml version="1.0" encoding="UTF-8"?>' . '<loginTicketRequest version="1.0">'. '</loginTicketRequest>'); $TRA->addChild('header'); $TRA->header->addChild('uniqueId',date('U')); $TRA->header->addChild('generationTime',date('c',date('U')-10)); $TRA->header->addChild('expirationTime',date('c',date('U')+10)); $TRA->addChild('service',$SERVICE); $TRA->asXML('TRA.xml'); } #************************************************************************************** #** Esta función hace que la firma PKCS # 7 use TRA como archivo de entrada, CERT y *** #** PRIVATEKEY para firmar. Genera un archivo intermedio y finalmente ajusta el *** #** Encabezado MIME dejando el CMS final requerido por WSAA *** #************************************************************************************** function SignTRA() { $currentPath = getcwd() . "/"; if (!file_exists("TRA.xml")) {exit("Failed to open TRA.xml\n");} $STATUS=openssl_pkcs7_sign($currentPath ."TRA.xml", $currentPath ."TRA.tmp", "file://". $currentPath . CERT, array("file://". $currentPath . PRIVATEKEY, PASSPHRASE), array(), !PKCS7_DETACHED ); if (!$STATUS) {exit("ERROR generating PKCS#7 signature ". $currentPath . CERT."\n" );} $inf=fopen($currentPath ."TRA.tmp", "r"); $i=0; $CMS=""; while (!feof($inf)) { $buffer=fgets($inf); if ( $i++ >= 4 ) {$CMS.=$buffer;} } fclose($inf); unlink("TRA.tmp"); return $CMS; } #============================================================================== function CallWSAA($CMS) { $client=new SoapClient(WSDL, array( 'soap_version' => SOAP_1_2, 'location' => URL, 'trace' => 1, 'exceptions' => 0 )); $results=$client->loginCms(array('in0'=>$CMS)); file_put_contents("request-loginCms.xml",$client->__getLastRequest()); file_put_contents("response-loginCms.xml",$client->__getLastResponse()); if (is_soap_fault($results)) {exit("SOAP Fault: ".$results->faultcode."\n".$results->faultstring."\n");} return $results->loginCmsReturn; } #============================================================================== function ShowUsage($MyPath) { printf("Uso : %s Arg#1 Arg#2\n", $MyPath); printf("donde: Arg#1 debe ser el service name del WS de negocio.\n"); printf(" Ej.: %s wsfe\n", $MyPath); } ini_set("soap.wsdl_cache_enabled", "0"); if (!file_exists(CERT)) {exit("Failed to open ".$certificado."\n");} if (!file_exists(PRIVATEKEY)) {exit("Failed to open ".$clave."\n");} if (!file_exists(WSDL)) {exit("Failed to open ".WSDL."\n");} $SERVICE = 'ws_sr_padron_a4'; CreateTRA($SERVICE); $CMS=SignTRA(); $TA = simplexml_load_string(CallWSAA($CMS)); #var_dump($TA); #************************************ #*** Invocar al metodo getPersona *** #************************************ ######################################################## ### Pregunto si esta en modo homologacion o ### ### produccion para poner la url correspondiente ### ######################################################## if($modo == 'H'){$wservice = "https://awshomo.afip.gov.ar/sr-padron/webservices/personaServiceA4"; $wsdl_p4 = "https://awshomo.afip.gov.ar/sr-padron/webservices/personaServiceA4?WSDL";} else {$wservice = "https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA4"; $wsdl_p4 = "https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA4?WSDL";} #echo('======================================= padron=======================================');echo('</br>'); $padron = new SoapClient($wsdl_p4, array( 'soap_version' => SOAP_1_1, 'location' => $wservice, 'exceptions' => 0, 'trace' => 1) ); #echo('======================================= resultado=======================================');echo('</br>'); $resultado = $padron->getPersona( array( 'token' => $TA->credentials->token, 'sign' => $TA->credentials->sign, 'cuitRepresentada' => 20138815081, // es el cuit con el que pedi el certificao 'idPersona' => $persona ) ); #var_dump($resultado); #echo('=======================================Datos en json=======================================');echo('</br>'); $datos = json_encode($resultado); # echo(json_encode($resultado));echo('</br>'); // Muestra el resultado de la consulta #echo('=======================================Desgloce de datos=======================================');echo('</br>'); $recibo = json_decode($datos); echo('Apellido y Nombre= '.$recibo->personaReturn->persona->apellido.'; '.$recibo->personaReturn->persona->nombre);echo('</br>'); echo('Razon Social = '.$recibo->personaReturn->persona->razonSocial);echo('</br>'); echo('direccion = '.$recibo->personaReturn->persona->domicilio[0]->direccion);echo('</br>'); echo('Localidad = '.$recibo->personaReturn->persona->domicilio[0]->localidad);echo('</br>'); echo('C.P. = '.$recibo->personaReturn->persona->domicilio[0]->codPostal);echo('</br>'); echo('Provincia = '.$recibo->personaReturn->persona->domicilio[0]->descripcionProvincia);echo('</br>'); echo('ID Provincia = '.$recibo->personaReturn->persona->domicilio[0]->idProvincia);echo('</br>'); echo('Telefono = '.$recibo->personaReturn->persona->telefono->numero.' '.$recibo->personaReturn->persona->telefono->tipoLinea);echo('</br>'); echo('Mail = '.$recibo->personaReturn->persona->email->direccion);echo('</br>'); ################# ### Impuestos ### ################# $tabla = $recibo->personaReturn->persona->impuesto; $elementos = count ($tabla); $iva = '99'; for($i=0;$i<$elementos;$i++){ if($recibo->personaReturn->persona->impuesto[$i]->estado == 'ACTIVO'){ if($recibo->personaReturn->persona->impuesto[$i]->idImpuesto == '30'){ $iva = '30'; $descripcion = $recibo->personaReturn->persona->impuesto[$i]->descripcionImpuesto;} if($recibo->personaReturn->persona->impuesto[$i]->idImpuesto == '20'){ $iva = '20'; $descripcion = $recibo->personaReturn->persona->impuesto[$i]->descripcionImpuesto;} if($recibo->personaReturn->persona->impuesto[$i]->idImpuesto == '30'){ $iva = '30'; $descripcion = $recibo->personaReturn->persona->impuesto[$i]->descripcionImpuesto;} } } echo('ID Impuesto. = '.$iva);echo('</br>'); echo('Impuesto. = '.$descripcion);echo('</br>'); ?>Votos: 1 - Link respuesta -
Fecha: 02-12-2017 12:48:49 ws_sr_padron_a5
<?php $modo = 'P'; // valores posibles H = Homologacion -- P = Produccion $certificado = "ghf.crt"; // es el certificado obtendio de administrador del webservice a conectarse $clave = "ghf.key"; // Es la clave generada an el open_ssl $persona = 20138815081; // Es el cuit que busco define ("WSDL", "wsaa.wsdl"); # The WSDL corresponding to WSAA //define ("CERT", "claves/swci/ghf.crt"); # The X.509 certificate in PEM format //define ("PRIVATEKEY", "claves/swci/ghf.key"); # The private key correspoding to CERT (PEM) define ("PASSPHRASE", "xxxxx"); # The passphrase (if any) to sign if($modo == 'H'){echo('homologacion');echo('</br>'); define ("URL", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms"); define ("CERT", "claves/homologacion/ghf.crt"); define ("PRIVATEKEY", "claves/homologacion/ghf.key");} else {echo('produccion');echo('</br>'); define ("URL", "https://wsaa.afip.gov.ar/ws/services/LoginCms"); define ("CERT", "claves/produccion/ghf.crt"); define ("PRIVATEKEY", "claves/produccion/ghf.key");} define ("CUIT", "20138815081"); #********************************************** #** No hay que cambiar nada en estas lineas *** #********************************************** function CreateTRA($SERVICE) { $TRA = new SimpleXMLElement( '<?xml version="1.0" encoding="UTF-8"?>' . '<loginTicketRequest version="1.0">'. '</loginTicketRequest>'); $TRA->addChild('header'); $TRA->header->addChild('uniqueId',date('U')); $TRA->header->addChild('generationTime',date('c',date('U')-10)); $TRA->header->addChild('expirationTime',date('c',date('U')+10)); $TRA->addChild('service',$SERVICE); $TRA->asXML('TRA.xml'); } #************************************************************************************** #** Esta función hace que la firma PKCS # 7 use TRA como archivo de entrada, CERT y *** #** PRIVATEKEY para firmar. Genera un archivo intermedio y finalmente ajusta el *** #** Encabezado MIME dejando el CMS final requerido por WSAA *** #************************************************************************************** function SignTRA() { $currentPath = getcwd() . "/"; if (!file_exists("TRA.xml")) {exit("Failed to open TRA.xml\n");} $STATUS=openssl_pkcs7_sign($currentPath ."TRA.xml", $currentPath ."TRA.tmp", "file://". $currentPath . CERT, array("file://". $currentPath . PRIVATEKEY, PASSPHRASE), array(), !PKCS7_DETACHED ); if (!$STATUS) {exit("ERROR generating PKCS#7 signature ". $currentPath . CERT."\n" );} $inf=fopen($currentPath ."TRA.tmp", "r"); $i=0; $CMS=""; while (!feof($inf)) { $buffer=fgets($inf); if ( $i++ >= 4 ) {$CMS.=$buffer;} } fclose($inf); unlink("TRA.tmp"); return $CMS; } #============================================================================== function CallWSAA($CMS) { $client=new SoapClient(WSDL, array( 'soap_version' => SOAP_1_2, 'location' => URL, 'trace' => 1, 'exceptions' => 0 )); $results=$client->loginCms(array('in0'=>$CMS)); file_put_contents("request-loginCms.xml",$client->__getLastRequest()); file_put_contents("response-loginCms.xml",$client->__getLastResponse()); if (is_soap_fault($results)) {exit("SOAP Fault: ".$results->faultcode."\n".$results->faultstring."\n");} return $results->loginCmsReturn; } #============================================================================== function ShowUsage($MyPath) { printf("Uso : %s Arg#1 Arg#2\n", $MyPath); printf("donde: Arg#1 debe ser el service name del WS de negocio.\n"); printf(" Ej.: %s wsfe\n", $MyPath); } ini_set("soap.wsdl_cache_enabled", "0"); if (!file_exists(CERT)) {exit("Failed to open ".$certificado."\n");} if (!file_exists(PRIVATEKEY)) {exit("Failed to open ".$clave."\n");} if (!file_exists(WSDL)) {exit("Failed to open ".WSDL."\n");} $SERVICE = 'ws_sr_padron_a5'; CreateTRA($SERVICE); $CMS=SignTRA(); $TA = simplexml_load_string(CallWSAA($CMS)); #var_dump($TA); #************************************ #*** Invocar al metodo getPersona *** #************************************ #testing if($modo == 'H'){$wservice = "https://awshomo.afip.gov.ar/sr-padron/webservices/personaServiceA5"; $wsdl_p4 = "https://awshomo.afip.gov.ar/sr-padron/webservices/personaServiceA5?WSDL";} else {$wservice = "https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA5"; $wsdl_p4 = "https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA5?WSDL";} #echo('======================================= padron=======================================');echo('</br>'); $padron = new SoapClient($wsdl_p4, array( 'soap_version' => SOAP_1_1, 'location' => $wservice, 'exceptions' => 0, 'trace' => 1) ); #echo('======================================= resultado=======================================');echo('</br>'); $resultado = $padron->getPersona( array( 'token' => $TA->credentials->token, 'sign' => $TA->credentials->sign, 'cuitRepresentada' => 20138815081, // es el cuit con el que pedi el certificao 'idPersona' => $persona ) ); #var_dump($resultado); #echo('</br>'); #echo('=======================================Datos en json=======================================');echo('</br>'); $datos = json_encode($resultado); #echo(json_encode($resultado));echo('</br>'); // Muestra el resultado de la consulta #echo('=======================================Desgloce de datos=======================================');echo('</br>'); $recibo = json_decode($datos); echo('Apellido y Nombre= '.$recibo->personaReturn->datosGenerales->apellido.'; '.$recibo->personaReturn->datosGenerales->nombre);echo('</br>'); echo('Razon Social = '.$recibo->personaReturn->datosGenerales->razonSocial);echo('</br>'); echo('direccion = '.$recibo->personaReturn->datosGenerales->domicilioFiscal->direccion);echo('</br>'); echo('Localidad = '.$recibo->personaReturn->datosGenerales->domicilioFiscal->localidad);echo('</br>'); echo('C.P. = '.$recibo->personaReturn->datosGenerales->domicilioFiscal->codPostal);echo('</br>'); echo('Provincia = '.$recibo->personaReturn->datosGenerales->domicilioFiscal->descripcionProvincia);echo('</br>'); echo('ID Provincia = '.$recibo->personaReturn->datosGenerales->domicilioFiscal->idProvincia);echo('</br>'); ################# ### Impuestos ### ################# $tabla = $recibo->personaReturn->datosRegimenGeneral->impuesto; $elementos = count ($tabla); $iva = '99'; for($i=0;$i<$elementos;$i++){ #echo($recibo->personaReturn->datosRegimenGeneral->impuesto[$i]->descripcionImpuesto);echo('</br>'); if($recibo->personaReturn->datosRegimenGeneral->impuesto[$i]->idImpuesto == '30'){ $iva = '30'; $descripcion = $recibo->personaReturn->datosRegimenGeneral->impuesto[$i]->descripcionImpuesto;} if($recibo->personaReturn->datosRegimenGeneral->impuesto[$i]->idImpuesto == '20'){ $iva = '20'; $descripcion = $recibo->personaReturn->datosRegimenGeneral->impuesto[$i]->descripcionImpuesto;} if($recibo->personaReturn->datosRegimenGeneral->impuesto[$i]->idImpuesto == '30'){ $iva = '30'; $descripcion = $recibo->personaReturn->datosRegimenGeneral->impuesto[$i]->descripcionImpuesto;} } echo('ID Impuesto. = '.$iva);echo('</br>'); echo('Impuesto. = '.$descripcion);echo('</br>'); # si es monotributo echo('ID Impuesto. = '.$recibo->personaReturn->datosMonotributo->categoriaMonotributo->idImpuesto);echo('</br>'); echo('Categoria. = '.$recibo->personaReturn->datosMonotributo->categoriaMonotributo->descripcionCategoria);echo('</br>'); echo('ID Categoria. = '.$recibo->personaReturn->datosMonotributo->categoriaMonotributo->idCategoria);echo('</br>'); ?>Votos: 0 - Link respuesta -
Fecha: 02-12-2017 19:08:00 Matias, un genio funciona, trae datos pero el problema es que trae cualquier dato, será que es en modo testing?
por ejemplo para el cuit 30685849751 dia sa trae esto
Apellido y Nombre= ;
Razon Social = CANTA CON HECTOR GABRIEL MMXVI-IV-XXX
direccion = RIVADAVIA AV. 7801 Piso:7
Localidad =
C.P. = 1407
Provincia = CIUDAD AUTONOMA BUENOS AIRES
ID Provincia = 0
ID Impuesto. = 30
Impuesto. = IVA
ID Impuesto. =
Categoria. =
ID Categoria. =
que podrà ser?
saludos Votos: 0 - Link respuesta -
Fecha: 03-12-2017 02:58:35 Si, en el modo testing trae cualquier cosa, solicitando mi cuit solo coincida la dirección fiscal pero en "producción" trae los datos correctos.
A diferencia con el metodo https://soa.afip.gob.ar/sr-padron/v2/persona/xxxxxx trae por separado el Nombre y apellido (para los monotributos) y para las empresas trae razon social.
No lo probé para CUIL ni para DNI
En mi caso prefiero utilizar el a4 que trae mas datos. Los impuestos estan todos juntos sin importar si es monotributo o responsable inscripto y ademas trae telefono y mail.
Igual revisen la respuesta, $resultado en formato array o $dato en formato json yo solo tome los datos que a mi me sirven pero trae un montón.
Con mi cuit no me dejo usar el a10 en real.
Saludos Votos: 0 - Link respuesta -
Fecha: 03-12-2017 03:11:01 El problema que tengo es que me da muy seguido que ya poseo un TA valido y no me trae respuesta.
Dejo un json pedido al cuit 30-54669426-3 en modo produccion que que pertenece a Gendarmeria con el a4
{"personaReturn":{"metadata":{"fechaHora":"2017-12-03T10:07:16.244-03:00","servidor":"aws.afip.gov.ar"},"persona":{"actividad":{"descripcionActividad":"SERVICIOS PARA EL ORDEN P\u00daBLICO Y LA SEGURIDAD","idActividad":842300,"nomenclador":883,"orden":1,"periodo":201311},"domicilio":[{"codPostal":"1104","descripcionProvincia":"CIUDAD AUTONOMA BUENOS AIRES","direccion":"ANTARTIDA ARGENTINA AV. 1480","idProvincia":0,"tipoDomicilio":"FISCAL"},{"codPostal":"1104","descripcionProvincia":"CIUDAD AUTONOMA BUENOS AIRES","direccion":"ANTARTIDA ARGENTINA AV. 1480","idProvincia":0,"tipoDomicilio":"LEGAL\/REAL"}],"email":[{"direccion":"movfon@gendarmeria.gov.ar","estado":"No Verificado","tipoEmail":"TRIBUTARIO"},{"direccion":"movfon@gendarmeria.gov.ar","estado":"No Verificado","tipoEmail":"SICNEA"},{"direccion":"gabrielrearte@gna.gob.ar","estado":"No Confirmado por Aplicacion","tipoEmail":"TRIBUTARIO"}],"estadoClave":"ACTIVO","fechaContratoSocial":"1901-01-01T12:00:00-04:16","fechaInscripcion":"1988-07-20T12:00:00-03:00","formaJuridica":"ORGAN. PUBLICO","idPersona":30546694263,"impuesto":[{"descripcionImpuesto":"RETENCIONES CONTRIB.SEG.SOCIAL","diaPeriodo":1,"estado":"ACTIVO","ffInscripcion":"2005-08-31T12:17:22-03:00","idImpuesto":353,"periodo":200507},{"descripcionImpuesto":"SICORE-IMPTO.AL VALOR AGREGADO","diaPeriodo":1,"estado":"ACTIVO","ffInscripcion":"2005-08-31T12:17:22-03:00","idImpuesto":767,"periodo":200507},{"descripcionImpuesto":"GANANCIAS SOCIEDADES","diaPeriodo":17,"estado":"EXENTO ","ffInscripcion":"1901-01-01T12:00:00-04:16","idImpuesto":10,"periodo":201005},{"descripcionImpuesto":"IVA EXENTO","diaPeriodo":1,"estado":"ACTIVO","ffInscripcion":"1992-06-01T12:00:00-03:00","idImpuesto":32,"periodo":199206},{"descripcionImpuesto":"SICORE-IMPTO.A LAS GANANCIAS","diaPeriodo":1,"estado":"ACTIVO","ffInscripcion":"1994-04-01T12:00:00-03:00","idImpuesto":217,"periodo":200001},{"descripcionImpuesto":"EMPLEADOR-APORTES SEG. SOCIAL","diaPeriodo":1,"estado":"ACTIVO","ffInscripcion":"1901-01-01T12:00:00-04:16","idImpuesto":301,"periodo":190101}],"mesCierre":12,"porcentajeCapitalNacional":100,"razonSocial":"GENDARMERIA NACIONAL","regimen":[{"descripcionRegimen":"REG.RET.A LAS GANANCIAS - ENAJENACION DE LOS BIENES DE CAMBIO MENCIONADOS EN LOS INCISOS A,B,C,D Y E DEL ART. 52 Y DE LOS BIENES MUEBLES COMPRENDIDOS EN LOS ART. 58 Y 65 DE LA LEY DEL IMPUESTO A LAS GANANCIAS.","estado":"ACTIVO","idImpuesto":217,"idRegimen":78,"periodo":200001,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"REG.RET.A LAS GANANCIAS - LOCACIONES DE OBRAS Y\/O SERVICIOS, NO EJECUTADOS EN RELACION DE DEPENDENCIA, QUE NO SE ENCUENTREN TAXATIVAMENTE MENCIONADOS EN LOS INCISOS I Y J.","estado":"ACTIVO","idImpuesto":217,"idRegimen":94,"periodo":200001,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"REG.RET.A LAS GANANCIAS - RENTAS DEL TRABAJO PERSONAL EN RELACION DE DEPENDENCIA,JUBILACIONES,PENSIONES Y OTRAS","estado":"BAJA DEFINITIVA","idImpuesto":217,"idRegimen":160,"periodo":199605,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"RETENCI\u00d3N DE PRESTADORES DE SERVICIOS DE LIMPIEZA DE INMUEBLES","estado":"ACTIVO","idImpuesto":353,"idRegimen":748,"periodo":200507,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"RETENCI\u00d3N GENERAL DE CONTRIBUCIONES","estado":"ACTIVO","idImpuesto":353,"idRegimen":755,"periodo":200507,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"LOCACIONES O PRESTACIONES DE SERVICIOS, NO COMPRENDIDAS EN EL ART. 8, INC. B).","estado":"ACTIVO","idImpuesto":767,"idRegimen":212,"periodo":200507,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"COMPRAVENTA DE COSAS MUEBLES Y LOCACIONES COMPRENDIDAS EN EL INCISO C) DEL ARTICULO 3\u00b0 DE LA LEY DE IVA - ART. 8>, INC. A)","estado":"ACTIVO","idImpuesto":767,"idRegimen":214,"periodo":200507,"tipoRegimen":"RETENCION"}],"relacion":{"ffRelacion":"2016-11-30T12:00:00-03:00","ffVencimiento":"2019-12-10T12:00:00-03:00","idPersona":30546694263,"idPersonaAsociada":20169602507,"subtipoRelacion":"DIRECTOR TITULAR","tipoRelacion":"SOCIEDAD CON INTEGRANTES"},"telefono":[{"numero":41143503,"tipoLinea":"FIJO","tipoTelefono":"DEL ASESOR"},{"numero":43102721,"tipoLinea":"FIJO","tipoTelefono":"DEL ASESOR"}],"tipoClave":"CUIT","tipoPersona":"JURIDICA"}}} Votos: 0 - Link respuesta -
Fecha: 03-12-2017 03:13:20 Dejo un json pedido al cuit 30-54669426-3 en modo produccion que que pertenece a Gendarmeria con el a5
{"personaReturn":{"datosGenerales":{"domicilioFiscal":{"codPostal":"1104","descripcionProvincia":"CIUDAD AUTONOMA BUENOS AIRES","direccion":"ANTARTIDA ARGENTINA AV. 1480","idProvincia":0,"tipoDomicilio":"FISCAL"},"estadoClave":"ACTIVO","fechaContratoSocial":"1901-01-01T12:00:00-04:16","idPersona":30546694263,"mesCierre":12,"razonSocial":"GENDARMERIA NACIONAL","tipoClave":"CUIT","tipoPersona":"JURIDICA"},"datosRegimenGeneral":{"actividad":{"descripcionActividad":"SERVICIOS PARA EL ORDEN P\u00daBLICO Y LA SEGURIDAD","idActividad":842300,"nomenclador":883,"orden":1,"periodo":201311},"impuesto":[{"descripcionImpuesto":"GANANCIAS SOCIEDADES","idImpuesto":10,"periodo":201005},{"descripcionImpuesto":"IVA EXENTO","idImpuesto":32,"periodo":199206},{"descripcionImpuesto":"SICORE-IMPTO.A LAS GANANCIAS","idImpuesto":217,"periodo":200001},{"descripcionImpuesto":"EMPLEADOR-APORTES SEG. SOCIAL","idImpuesto":301,"periodo":190101},{"descripcionImpuesto":"RETENCIONES CONTRIB.SEG.SOCIAL","idImpuesto":353,"periodo":200507},{"descripcionImpuesto":"SICORE-IMPTO.AL VALOR AGREGADO","idImpuesto":767,"periodo":200507}],"regimen":[{"descripcionRegimen":"REG.RET.A LAS GANANCIAS - ENAJENACION DE LOS BIENES DE CAMBIO MENCIONADOS EN LOS INCISOS A,B,C,D Y E DEL ART. 52 Y DE LOS BIENES MUEBLES COMPRENDIDOS EN LOS ART. 58 Y 65 DE LA LEY DEL IMPUESTO A LAS GANANCIAS.","idImpuesto":217,"idRegimen":78,"periodo":200001,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"REG.RET.A LAS GANANCIAS - LOCACIONES DE OBRAS Y\/O SERVICIOS, NO EJECUTADOS EN RELACION DE DEPENDENCIA, QUE NO SE ENCUENTREN TAXATIVAMENTE MENCIONADOS EN LOS INCISOS I Y J.","idImpuesto":217,"idRegimen":94,"periodo":200001,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"REG.RET.A LAS GANANCIAS - RENTAS DEL TRABAJO PERSONAL EN RELACION DE DEPENDENCIA,JUBILACIONES,PENSIONES Y OTRAS","idImpuesto":217,"idRegimen":160,"periodo":199605,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"RETENCI\u00d3N DE PRESTADORES DE SERVICIOS DE LIMPIEZA DE INMUEBLES","idImpuesto":353,"idRegimen":748,"periodo":200507,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"RETENCI\u00d3N GENERAL DE CONTRIBUCIONES","idImpuesto":353,"idRegimen":755,"periodo":200507,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"LOCACIONES O PRESTACIONES DE SERVICIOS, NO COMPRENDIDAS EN EL ART. 8, INC. B).","idImpuesto":767,"idRegimen":212,"periodo":200507,"tipoRegimen":"RETENCION"},{"descripcionRegimen":"COMPRAVENTA DE COSAS MUEBLES Y LOCACIONES COMPRENDIDAS EN EL INCISO C) DEL ARTICULO 3\u00b0 DE LA LEY DE IVA - ART. 8>, INC. A)","idImpuesto":767,"idRegimen":214,"periodo":200507,"tipoRegimen":"RETENCION"}]},"metadata":{"fechaHora":"2017-12-03T10:12:13.320-03:00","servidor":"aws.afip.gov.ar"}}} Votos: 0 - Link respuesta -
Fecha: 03-12-2017 07:02:24 Tenes que poner el certificado y la clave correspondiente al de produccion y los web de produccion que son sin el "homo" Votos: 0 - Link respuesta
-
-
Fecha: 03-12-2017 12:51:54 encontre para consulta via cuil = dni ojo no ==
Consulta a Padrón Constancia de Inscripción (ws_sr_constancia_inscripcion)
Consulta a Padrón Constancia de Inscripción. El servicio de Consulta de la Constancia de Inscripción de Padrón, antes llamado de Alcance 5 (ws_sr_padron_a5), permite que un organismo externo acceda a los datos de la constancia de un contribuyente registrado en el Padrón de AFIP.
Manual para el desarrollador - V. 2.0 Votos: 0 - Link respuesta -
Fecha: 07-12-2017 06:34:01 Buenas a todos, queria informarles que me puse manos a la obra e incluí en el SDK de AFIP la consulta a padrón alcance 4,5 y 10 lo pueden encontrar en https://github.com/ivanalemunioz/Afip.php
Ademas hubo un cambio importante en el código para facilitar la inclusión de nuevos web services dentro del SDK con lo cual los que utilizaban las versión anterior para la Facturación Electrónica deberán hacer unos pequeños cambios que encontraran aquí https://github.com/ivanalemunioz/Afip.php/wiki/Migrar-de-v0.1-a-v0.5 Votos: 0 - Link respuesta -
Fecha: 07-12-2017 09:36:12 Muchas gracias Ivan por tu valiosísimo aporte.
Una pregunta: ¿Es obligatorio hacer ese cambio o el anterior puede seguir funcionando?
Mi cliente no usa otro webservice que no sea el de obtención de CAE, ¿igual tiene que actualizar? Votos: 0 - Link respuesta -
-
-
Fecha: 08-12-2017 05:57:51 No Marcelo mientras no cambie a la nueva versión puede seguir funcionando con normalidad Votos: 0 - Link respuesta
-
-
Fecha: 19-12-2017 03:38:16 Alguien sabe si se puede consultar por dni de alguna manera? Antes usaba la Api Rest sr-padron, porque podia consultar tanto dni y cuit, porque la mayoría son clientes normales, pero está caída parece definitivamente. En un principio iba a usar los WS y parece que va a ser la opcion final... Votos: 0 - Link respuesta
-
Fecha: 19-12-2017 06:20:26 No se si los ws de padron tengan datos que no sean de contribuyentes, osea los CUIT.
Si usas los web services podes darte una vuelta por esta libreria que te va a facilitar el desarrollo https://github.com/ivanalemunioz/Afip.php Votos: 0 - Link respuesta -
Fecha: 19-12-2017 08:19:20 Ivan, ya lo tengo todo desarrollado, te agradezco. Si se puede consultar a los no contribuyentes, siempre que tengas el numero de CUIL. Se obtiene al menos Nombre, apellido y direccion. Votos: 0 - Link respuesta
-
Fecha: 19-12-2017 11:48:00 En cual Web Service Gustavo? Yo intente con mi CUIL y no me daba nada :( Votos: 0 - Link respuesta
-
Fecha: 19-12-2017 12:53:44 En padrón A4. Se puede calcular el cuil con el DNI. No te muestra nada porque debe haber error en el código. Los datos vienen de manera diferente. Por ejemplo, en domicilio fiscal en vez de devolver un array con los dos domicilios, solo devuelve los datos sin el array.
Yo lo que hago es enviar el numero de consulta. Si tiene 11 numeros consulto directo, si tiene menos le calculo el cuil y luego chequeo la respuesta... si el tipoClave es cuil, entonces chequeo si el documento es DNI, LE, LC etc y formateo el resto de los datos para enviar la respuesta.
Saludos. Votos: 0 - Link respuesta -
Fecha: 21-12-2017 05:25:14 Matías, el error de que ya posees un TA válido es porque no estas volcando el ticket a un archivo y verificando si la fecha de expiracion ya pasó o sigue vigente. Tendrías que generar un XML con el contenido de $TA:
file_put_contents("TAA4.xml", $TA)
luego abrirlo y leer la fecha de expiracion. La generacion del TA la tenes que meter en una funcion, entonces si caducó llamas a la generacion de un ticket nuevo.
Saludos. Votos: 0 - Link respuesta -
-
Fecha: 13-01-2018 13:06:00 Hola gente como va, les escribo de nuevo por que me encontre con un problema, actualizando el sistema a php 7.x cuando trato de facturar no me tira ningun error pero tampoco me factura, que podrà ser, no recuerdo bien si en el servidor en php.ini deberia activar alguna dll, me dan una manito? gracias.-
saludos Votos: 0 - Link respuesta -
Fecha: 13-01-2018 14:10:23 Mariano,
tenes que habilitar php_soap y php_openssl.
Si estas usando la libreria mía tenés que actualizar 'exception_handler'
Saludos,
Pablo Votos: 0 - Link respuesta -
Fecha: 16-01-2018 11:30:58 Gracias Pablo era eso, no me acordaba.
estoy haciendo una nota de crédito y me da el siguiente error
--\feafip2\wsfev1.class.php:83 WSFE class. FaultString: soap:Sender Server was unable to read request. ---> There is an error in XML document (2, 1529). ---> Input string was not in a correct format.
Se que es un error en la linea 2 caracter 1529, el problema de esto es que no se donde buscar, deberia ser en wsfev1.class.php o en el archivo que trae xml?
que puede ser?
gracias.-
DIXIT: ya lo solucione era un problema mio que no pasaba bien las variables, al estar programando en php con un servidor xampp en mac las etiquetas <? me las leia ok pero cuando pase a php xampp con windows tuve que reemplazar por <?php ya que sino no me lo leia, y no pasaba las variables, saludos.
por si a alguien le sirve Votos: 0 - Link respuesta -
Fecha: 02-02-2018 05:52:31 Una pregunta para aquellos que desarrollen la facturación para sus clientes. Como hacen para obtener los certificados de los clientes, les piden su clave fiscal? les piden que ellos los obtengan y se los dan? los pueden obtener ustedes mismos sin problemas? o como? Gracias. Votos: 0 - Link respuesta
-
Fecha: 02-02-2018 06:23:51 Si el contador ya lo sabe hacer mejor que lo hagan ellos pero generalmente no sabe todos los pasos.
yo les pido la clave fiscal y se lo genero todo.
Si no me dan la clave siempre les falta algo y tenes muchas consultas. Votos: 0 - Link respuesta -
-
-
-
Fecha: 02-02-2018 10:21:06 Yo les pido la clave fiscal, porque en general a mis clientes también les manejo la renovación de dominios, que desde el año pasado se hace por la AFIP. Votos: 0 - Link respuesta
-
Fecha: 02-02-2018 12:27:05 Gracias Marcelo, al parecer lo más conveniente es pedir la clave Votos: 0 - Link respuesta
-
Fecha: 06-02-2018 12:02:04 Chicos. Pedir la clave es la manera mas facil, pero conlleva una gran responsabilidad, sobretodo cuando entran a acumular clientes. Existe una manera de actuar en representacion de... dirigida a la aplicacion especifica, en ella una vez que su cliente los auoriza, Uds. con "su" clave fiscal pueden gestionar renovaciones de dominio, y/o realizar los tramites de autorizacion para ellos. No olviden que el cliente tiene la razon, pero nosotros tenemos la culpa Votos: 0 - Link respuesta
-
Fecha: 07-02-2018 05:57:35 Hola gente, estoy de acuerdo con Carlos, por un lado pero generalmente género las claves directo con el cliente frente a él, por otro lado me surge una duda, cuando se factura a extranjeros como se hace ya que en el padrón no figura nada.
Gracias Votos: 0 - Link respuesta -
Fecha: 08-02-2018 09:57:59 Gente experta me acaba de surgir una duda y la contadora anda de vacaciones :c aver si alguien me ayuda. Para facturas A siempre agrego los importes de IVA segun correspondan, pero para consumidor final pongo el IVA en cero y todo el precio como no gravado, esta bien o deberia declarar el IVA de todas formas para que la AFIP lo sepa, por que por ejemplo si vendo una pelota y un libro ambos tienen distinto porcentaje de IVA, como se declara?
Gracias de antemano Votos: 0 - Link respuesta -
Fecha: 08-02-2018 17:27:03 Ivan: Un responsable inscripto solo puede hacer facturas A (a otro responsable inscripto) o B (a monotributistas y consumidores finales).
En las facturas A el IVA y DGR (si corresponde) se discriminan y el total de la factura es el importe neto más los impuestos (DGR e IVA).
En las facturas B se discrimina solo DGR (si corresponde) y el total incluye el IVA.
Facturas C (a consumidor final) solo pueden ser hechas por monotributistas o exentos y el IVA no se incluye en la factura porque en el régimen de monotributo no existen débitos y créditos fiscales. Votos: 0 - Link respuesta -
Fecha: 08-02-2018 18:09:49 Gracias por tu respuesta Marcelo, ósea que en factura B el total incluye el IVA y no hace falta declararlo aparte? Votos: 0 - Link respuesta
-
-
Fecha: 09-02-2018 02:02:24 Hola Ivan.
El IVA siempre se declara aparte si el emisor del comprobante es responsable inscripto o algun otra categoria que le corresponda discriminar el iva (no se si existe)
Al hacer la solicitud del CAE de la factura, el I.V.A., SIEMPRE debe estar discriminado salvo que el solicitante sea monotributista o exento de IVA, los cuales deben generar factura "C" que no lleva IVA (por lo menos discriminado).
Ahora si el que emite la factura es un responsable inscripto, siempre debe discriminar el iva por tipo de alícuota al solicita el CAE. Al momento de imprimirla, si es comprobante tipo "A" se muestra el IVA DISCRIMINADO, si el comprobante es tipo "B" se muestra el valor FINAL.
Si no lo haces de esta forma, estas omitiendo información a la AFIP lo cual puede traer problemas para tu cliente. No podrás emitir el LIBRO IVA (En el cual siempre debes mostrar el iva discriminado) ni los archivos necesarios para la declaración del COMPRA/VENTAS también exigido por la AFIP. En cuanto presenten la declaración de IVA, no va a ser congruente con las facturas electrónicas.
Ajunto links de PDF de muestra de un cliente que vende con IVA al 10.5
FActura A
FAC_B
Libro IVA
Igual te aconsejo que lo hables con el contador de tu cliente (Yo no soy contador. Desarrolla sistemas de gestión hace 30 años) . Sino los analistas de sistema / Programadores, terminamos siendo responsables de lo que les pasa a los clientes.
Saludos a todos Votos: 0 - Link respuesta -
Fecha: 09-02-2018 05:17:57 Gracias Matias, ósea que a la AFIP hay que declararle el iva de todas formas, la diferencia está en que la factura que se le da (pdf o papel) al consumidor final no va a estar discriminado? Votos: 0 - Link respuesta
-
Fecha: 09-02-2018 05:49:01 Exacto.
Si tenes iva al 21 y al 10.5 le tenes que declarar los dos Votos: 0 - Link respuesta -
Fecha: 09-02-2018 06:35:20 Mmm entonces no concuerda con lo que dice Marcelo o yo le entendí mal, vos Marcelo también crees que es como dice Matías? Votos: 0 - Link respuesta
-
Fecha: 09-02-2018 07:50:55 Iván: Lo que puso Matías es exactamente lo que yo puse pero más detallado. En la factura C cuando puse que no se incluye el IVA, quise poner que no se discrimina, pero el IVA está incluido en el total. Votos: 0 - Link respuesta
-
-
Fecha: 09-02-2018 08:21:54 Marcelo, Ivan.
La factura C no lleva I.V.A. (no se declara ya que no existe este impuesto en estas facturas)
Los monotributiusta y excentos no tiene que declara el I.V.A. ni pagarlo a fin de mes.
La factura A lleva I.V.A. y se muestra discriminado.
La factura B lleva I.V.A. y no se muestra discriminado. Votos: 0 - Link respuesta -
-
Fecha: 09-02-2018 13:04:24 Tenés razón Matías, yo me corregí mal. Estaba bien como puse en un principio. Gracias. Votos: 0 - Link respuesta
-
Fecha: 09-02-2018 14:18:49 Esta bastante aclarado como para volver a decir lo mismo, solo les recuerdo que las alicuotas actuales son 0% 2.5% 5% 10.5 y 21% , por ello conviene que el libro de iva lleve solo una columna Iva y al final un cuadro de composicion de valores por alicuota. ( yo soy analista, pero tambien soy contador) Votos: 0 - Link respuesta
-
Fecha: 27-03-2018 07:04:07 Buen dia, alguno utilizo y tiene una rutina para presentar un bloque de facturas, tengo un cliente que realiza mas de 300 facturas todas juntas.
Se que hay un método que es por bloque pero nunca lo utilice.
Saludos Votos: 0 - Link respuesta -
Fecha: 03-05-2018 13:55:49 Hola gente, estoy probando un codigo que encontre para la afip, y me tira este error: -Script de prueba de AFIP WSFEV1---------- ERROR al generar la firma PKCS#7 -
Alguna idea que puede ser? Votos: 0 - Link respuesta -
Fecha: 03-05-2018 23:22:38 ¿Tenes habilitadas las siguientes extensión en el php.ini?
extension=php_openssl.dll
extension=php_soap.dll
para que esten habilitadas tenes que sacar el ; (punto y coma ) que esta delante de la linea
;extension=php_openssl.dll ==> Deshabilitada
extension=php_openssl.dll ==> Habilitada Votos: 0 - Link respuesta -
Fecha: 04-05-2018 04:26:23 Si igual ya encontre el error, todavía hay que enviar un email a la afip para que te envien los certificados de homologacion no? creo que es eso....
Por otro lado, alguno tiene un sistema de gestión y facturación que trabaje con los webservices de la afip? obviamente estoy dispuesto a pagar, pero me solucionaria muchos problemas si me sirve!! Votos: 0 - Link respuesta -
Fecha: 04-05-2018 04:51:31 No. Los generas vos desde la página de la AFIP.
Yo tengo una completo. Votos: 0 - Link respuesta -
Fecha: 04-05-2018 05:46:04 Tendrás una demo para ver si se adapta a lo que necesito? y skype o email para tener un contacto mas fluido?
Por otro lado, yo genere los certificados en la página de la afip, pero como me doy cuenta si son de homologación o producción? o son lo mismo y lo unico que cambia es la url? Votos: 0 - Link respuesta -
Fecha: 04-05-2018 05:55:12 Hola Cristian,
te puedo ofrecer una facturador realizado en php, podés ver una demo en bairesoft.com.ar en Demo factura eletrónica.
Saludos,
Pablo Votos: 0 - Link respuesta -
Fecha: 04-05-2018 06:34:22 Hola Pablo, sinceramente busco algo un poco más completo, pensaba hacerlo yo el sistema que tengo, pero hace bastante que no programo, y me estoy volviendo loco con el tema de la afip! jajaja
Por otro lado si alguno me puede sacar esta duda:
Genere los certificados en la página de la afip, pero como me doy cuenta si son de homologación o producción? o son lo mismo y lo unico que cambia es la url? Votos: 0 - Link respuesta -
Fecha: 04-05-2018 06:48:33 No son los mismos.
Tenes que entrar por afip y buscar "WSASS - Autogestión Certificados Homologación".
si no lo tenes tenes que ir a "administrador de relaciones" --> Servicios interacivos -->WSASS - Autogestión Certificados Homologación (es el ultimo de la lista)
https://wsass-homo.afip.gob.ar/wsass/portal/main.aspx Votos: 0 - Link respuesta -
Fecha: 04-05-2018 06:48:51 Cristian, es sólo un demo, la idea es presentar algo mínimo para que puedan evaluar la interface de usuario, manejo de datos, validaciones y consistencia antes de pasar de pantalla, generación de pdf, administración de usuarios, auditoría de acceso, etc.
Lo que ofrezco es software a medida en php que puede correr en una intranet con muy pocos requisitos.
En cuanto a homologacón y produccion lo que cambia es la url, los archivos .wsdl y los certificados son distintos. Votos: 0 - Link respuesta -
Fecha: 04-05-2018 11:31:59 Hola Cristian, en caso de que lo programes vos podes usar esta librería para conectarte a los web Services de AFIP sin dolores de cabeza https://github.com/ivanalemunioz/Afip.php Votos: 0 - Link respuesta
-
Fecha: 04-05-2018 12:33:24 Hola Ivan, si estoy usando tu libreria, el problema que tenia era que no sabia que el certificado para el modo homologación era otro.
Espero no tener que molestar mucho por aca, por ahora logre la conexión y todo va encaminandose, gracias por todos los consejos! Votos: 0 - Link respuesta -
Fecha: 08-05-2018 04:39:23 Hola gente!
Estuve leyendo atentamente este hilo y gracias a ustedes pude comenzar a generar facturas eléctrónicas (por ahora en testing). Sobre todo gracias Pablo por publicar el código de afipfev1, ese código me sirvió como puntapié para comenzar a programar mi propia librería de factura eléctónica.
Voy a hacer una contribución publicando una función para obtener el digito verificador que se utiliza en el código de barras. Es una traducción a PHP de lo publicado en este link.
Aprovecho para consultarles si ven algún error, porque si lo pruebo con el ejemplo de AFIP (01234567890) obtengo el mismo digito verificador, pero si lo verifico con un código generado por la propia afip cuando descargo el PDF que se genera al crear una factura electrónica a través de su web, entonces el digito es distinto.
Aclaro que todo lo que encontré acerca del digito verificador para código de barras se basa en CAI y no en CAE. ¿Es lo mismo o hay alguna diferencia?
Aquí dejo el código:
function calculoDigitoVerificador($cuit, $comprobante, $puntoVenta, $cae, $vencimientoCae) { $codigo = $cuit . $comprobante . $puntoVenta . $cae . $vencimientoCae; $pares = 0; $impares = 0; for($i = 0; $i < strlen($codigo); $i++) { if($i % 2 == 0) { $pares += $codigo[$i]; } else { $impares += $codigo[$i]; } } $impares = $impares * 3; $total = $pares + $impares; $digito = 10 - ($total % 10); if($digito == 10) { $digito = 0; } return $codigo . $digito; }Votos: 0 - Link respuesta -
Fecha: 08-05-2018 07:07:20 Hola tocayo.
No encuentro ningún error. Asegurate que el largo de cada variable sea el que corresponda.
Te adjunto mi rutina en PHP que anda bien con los que se generan a través de la página de la afip. Está probado con comprobantes reales tipo C.
Dijito verificador base 10.
<?php /* Clave Unica de Identificación Tributaria (C.U.I.T.) del emisor de la factura (11 caracteres) Código de tipo de comprobante (2 caracteres) Punto de venta (4 caracteres) Código de Autorización de Electrónica (C.A.E.) o Código de Autorización de Impresión (C.A.I.) (14 caracteres) Fecha de vencimiento (8 caracteres) (AAAAMMDD) Dígito verificador (1 carácter) */ // Ejemplo $dv_cuit = '27167654431'; $dv_comp = '11'; $dv_sucu = '0001'; $dv_cae = '68161010844634'; $dv_veto = '20180428'; $aux_1 = 0; $aux_2 = 0; //-------------------------- $base_calc = $dv_cuit.$dv_comp.$dv_sucu.$dv_cae.$dv_veto; //5n $base_calc = '123456789012345678901234567890123456789'; echo('Base = '.$base_calc);echo('</br>'); $largo = strlen(trim($base_calc)); //echo('Largo = '.$largo);echo('</br>'); For($i=0;$i<$largo+1;$i = $i + 2){$aux_1 = $aux_1 + substr($base_calc,$i,1);} For($i=1;$i<$largo+1;$i = $i + 2){$aux_2 = $aux_2 + substr($base_calc,$i,1);} $aux_3 = $aux_1 * 3; $aux_4 = $aux_3 + $aux_2; echo('Final = '.$aux_4);echo('</br>'); $largo_final = strlen(trim($aux_4)); $digito = 10 - substr($aux_4,$largo_final-1,1); echo('Digito Verificador = '.$digito.' Aux4 '.substr($aux_4,$largo_final-1,1)); ?>
Saludos Votos: 1 - Link respuesta -
Fecha: 08-05-2018 07:54:43 Gracias mati, viendo tu código me di cuenta donde estaba el error en el mío.
Estaba mal el for! estaba mezclando el índice donde arranca el array (0) con el índice natural como contamos las personas (1)
Debe ser así:
for($i = 0; $i < strlen($codigo); $i++) { if($i % 2 == 0) { $impares += (int)$codigo[$i]; } else { $pares += (int)$codigo[$i]; } }
o así:
for($i = 1; $i <= strlen($codigo); $i++) { if($i % 2 == 0) { $pares += (int)$codigo[($i - 1)]; } else { $impares += (int)$codigo[($i - 1)]; } }Votos: 0 - Link respuesta -
Fecha: 13-06-2018 17:47:10 Hola, tengo un problema y no se bien que debo modificar
Quiero hacer una factura A con iva de 21% y recibo este error:
10070: Si ImpNeto es mayor a 0 el objeto IVA es obligatorio.
Pero yo estoy pasando iva de este modo:
"IVA" => [ "AlicIva" => [ "Id" => 5, "BaseImp" => 21, "Importe" => $data["ImpNeto"] ] ]
¿Cómo debería ser el array para 1 iva?
¿Y para varios iva? (21,10.5, etc) Votos: 0 - Link respuesta -
Fecha: 14-06-2018 06:11:10 Tenes que agregar tantos ivas como tengas.
Yo lo hago asi :
For($i=0;$i<$cantidad;$i++){
$impuesto_importe = $mat_iva_importe[$i] ;
$impuesto_bruto = $mat_iva_bruto[$i] ;
if($mat_iva_tasa[$i] == 21){$cod_impuesto = 5;}
if($mat_iva_tasa[$i] == 10.5){$cod_impuesto = 4;}
if($mat_iva_tasa[$i] == 0){$cod_impuesto = 13;}
$wsfe->AgregaIVA($cod_impuesto, $impuesto_bruto, $impuesto_importe);
$auditar='AgregaIVA ==> Codigo= '.$cod_impuesto.' Importe= '.$impuesto_bruto.' Impuesto= '.$impuesto_importe;include('../includes/auditar.php');
} Votos: 0 - Link respuesta -
Fecha: 14-06-2018 07:24:06 Hola Mati, gracias por responderme
¿Podrías pasarme un ejemplo de como te queda finalmente un array con varios ivas?
Te pido un print_r() del array que armas... Votos: 0 - Link respuesta -
Fecha: 20-06-2018 16:36:50 Hola gente, alguien sabe como imprimir la misma plantilla de factura de AFIP con FPDF? Intenté hacerla pero no me queda, y los ejemplos que hay en la web no se parecen en nada. Votos: 0 - Link respuesta
-
Fecha: 21-06-2018 03:38:29 Yo formateo las facturas con HTML y div's o tablas según el caso, se me hace mucho más fácil modificarlas después, adaptarlas y agregarle código de barras, logos y demás elementos. Las tengo funcionando así hace años. Si necesitás guardarlas como PDF, podés convertir la página html (codificada como utf-8) con mpdf (Documentación: https://packagist.org/packages/mpdf/mpdf Descarga: https://github.com/mpdf/mpdf) que es un script PHP que guarda páginas html como PDF. Votos: 0 - Link respuesta
-
Fecha: 21-06-2018 04:04:01 También tenés API´s para convertir online, como https://pdfshift.io/features?lang=php que ter permite convertir gratis hasta 250 pdf's por mes. Votos: 1 - Link respuesta
-
Fecha: 21-06-2018 05:37:02 Hola Deimon!
En dónde se te complica con fpdf?
Básicamente es elegir fuente, posicionar x,y, y luego escribir.
Obviamente lleva un tiempo y hay que probar un poco.
Yo suelo escribir una línea completa con guiones y un punto cada 10 caracteres, lo uso como referencia y así ver cuantos caracteres aprox entran en un renglón (tener en cuenta que no ocupa lo mismo una i que una x en una fuente que no es proporcional)
Quizás los recuadros son un poco a ojo, prueba y error.
También hay un tipo de fuente para hacer el código de barra que va al final del comprobante.
Acá te dejo un ejemplo de la plantilla que tengo armada, es sólo una prueba, se puede organizar y modificar según necesite el cliente
Comprobante fpdf
Saludos,
Pablo Votos: 0 - Link respuesta -
Fecha: 24-06-2018 15:48:40 Tengo un sistema en php y esta en la nube pero localmente tengo 03 ticketeras no se como hacerlas imprimir localmente en dichas ticketeras gracias Votos: 0 - Link respuesta
-
Fecha: 29-06-2018 14:37:13 Gracias Marcelo Mozzi, me voy a fijar lo de las librerías, soy malo maquetando en html pero por ahi me ahorra el trabajo de codificar remitos y presupuestos.
Pablo Gaston ya la llevo más o menos con el FPDF, estoy clonando el modelo que da AFIP en el Rece y marcha bien pero es muy trabajoso. Pensé que podía existir ya un modelo diseñado pero no encontré nada. Votos: 0 - Link respuesta -
Fecha: 02-07-2018 10:23:30 Estimados...
Tengo todo andando perfectamente en testing.
Llegó el momento de hacer el pasaje a producción * y tengo algunas dudas
Yo hasta acá hice lo del Administrador de Relaciones de Clave Fiscal y Adherir servicio y luego generar los certificados
Para que una empresa utilice mi sistema, alguien de la empresa deberia entrar a su cuenta de AFIP y autorizarme a mi y luego yo hago los certificados normalmente?
Alguien podria explicarme un poco el paso a paso para que mi sistema pueda emitir facturas en nombre de una empresa x?
* en el ambiente de testing siempre use mi cuit para simular facturacion, en este ambiente tambien se puede simular lo que quiero hacer para produccion?
gracias de antemano! Votos: 0 - Link respuesta -
Fecha: 02-07-2018 11:05:05 Tenes que generar los certificados en la AFIP con la cuenta de la empresa o ellos te deben autorizar.
El archivo que utilizas de clave y el que subís a la afip deben estar con el CUIT de la empresa.
1 - Alta de punto de venta.
El punto de venta a utilizar para generar facturas electrónicas debe ser uno distinto a los usados para emitir facturas con talonarios preimpresos. Al ser otro punto de venta, la numeración de cada comprobante comenzará desde el número 1.
? Ir a la opción "Administración de puntos de venta y domicilios".
Si no está, hay que habilitarla. Esto se hace desde "Administrador de relaciones de clave fiscal" del menú principal de AFIP, "Adherir servicio", AFIP, "Servicios interactivos", y seleccionar "Administración de puntos de venta y domicilios".
? Luego seleccionar la empresa o contribuyente a representar.
? Seguido a eso, hacer clic en la opción "A/B/M de puntos de venta"
? Clic en el botón "Agregar".
? Completar el número del punto de venta y el nombre de fantasía.
? En el siguiente desplegable, seleccione la opción "RECE para aplicativo y web services".
? Por último, seleccione el "nuevo domicilio" y presione Aceptar.
2 - Agregar el servicio "Administración de Certificados Digitales".
Para autorizar las facturas electrónicas y obtener el CAE, es necesario activar éste servicio
? Bajo la opción "Servicios Administrativos Clave Fiscal", ingresar en "Administrador de Relaciones de Clave Fiscal"
? Ingresar en "Adherir servicio"
? En servicio, cliquear en "Buscar"
? Bajo la categoría "AFIP", elegir "Servicios Interactivos" y por último "Administración de Certificados Digitales"
? Al volver a la pantalla anterior, puede pasar que el Represntante lo ponga AFIP en forma automática, si es así, clic en "Confirmar"
? Si AFIP no pone automáticamente al Representante, clic en "Buscar"
? En CUIT/CUIL/CDI/Usuario, debe ingresar el su CUIT y presionar "Buscar"
? Por último, clic en "Confirmar" para finalizar la operación
3 - Descargar el certificado digital.
Para poder descargar el certificado digital que se va a utilizar para enviar la información a AFIP, es necesario subir el archivo .csr generado con el asistente en el paso 1.
? Bajo la opción "Servicios Administrativos Clave Fiscal", ingresar en "Administración de Certificados Digitales"
? Ingresar en "Nueva relación"
? Luego cliquear "Agregar alias"
? En el campo Alias, seleccionar el existente
? Mediante el botón "Seleccionar archivo", examinar y seleccionar el certificado .csr generado en el paso 1, clic en "Agregar alias"
? Al realizar el paso anterior, vuelve a la pantalla inicial
? Hacer clic en la opción "Ver"
? Descargar el archivo (.crt)
? Dentro de ir a Parámetros y configurar los campos "Clave privada" (archivo .key generado en el paso 1) y Certificado digital producción (.crt recién descargado de AFIP)
4 - Asociar el certificado descargado al servicio web "Factura electrónica".
Para que todo funcione, es importante no olvidar éste paso, que consisten en relacionar el certificado digital recién descargado al servicio web que se va a utilizar, en éste caso "Factura electrónica".
• Bajo la opción "Servicios Administrativos Clave Fiscal", ingresar en "Administrador de Relaciones de Clave Fiscal"
• Ingresar en "Nueva relación"
• En servicio, cliquear en "Buscar"
• Bajo la categoría "AFIP", elegir "Webservices" y luego "Facturación Electrónica"
• El siguiente paso es, en la opción "Representante", presionar "Buscar"
• En "Computador Fiscal", seleccionar el existente
• Por último, asociar el certificado generado desde el administrador de certificados Votos: 1 - Link respuesta -
Fecha: 03-07-2018 11:47:27 Hola amig@s vengo a comentarles que por la buena acogida que ha tenido la librería para el uso de los web services eh decidido crear la pagina Afip SKD donde pronto estaré agregando también la libreria en JavaScript para quien lo necesite
Saludos. Votos: 2 - Link respuesta -
Fecha: 04-07-2018 03:08:13 Matías Canepa,
la direferencia entre producción y homologacion / testing son los certificados que generás en la afip, las url del webservice y los archivos .wsdl
1) Lo referente a certificado en afip es lo que detalló Matias Wernicke después de tu pregunta
2) Direcciones URL
En el archivo wsaa.class.php
const URL = "https://wsaahomo.afip.gov.ar/ws/services/LoginCms"; //homologacion - testing
const URL = "https://wsaa.afip.gov.ar/ws/services/LoginCms"; //produccion
En el archivo wsfev1.class.php
const WSFEURL = "https://wswhomo.afip.gov.ar/wsfev1/service.asmx"; //homologacion - testing
const WSFEURL = "https://servicios1.afip.gov.ar/wsfev1/service.asmx"; // produccion
3) archivos wsdl
obtención archivo wsaa.wsdl de produccion
https://wsaa.afip.gov.ar/ws/services/LoginCms?WSDL
obtención archivo wsfev1.wsdl de produccion
https://servicios1.afip.gov.ar/wsfev1/service.asmx?WSDL
Eso es todo
Saludos,
Pablo Votos: 1 - Link respuesta -
Fecha: 17-07-2018 12:04:11 Hola muchachos, una consulta sobre los Remitos. Es posible obtener el CAI de la misma forma que lo hacemos con el CAE? Quiero automatizar la impresión. Votos: 0 - Link respuesta
-
Fecha: 24-07-2018 08:35:31 Hola a todos. Tengo una duda similar a Deimon Stark. Entre los comprobantes que me devuelve $afip->ElectronicBilling->GetVoucherTypes() no están los remitos.
Hay 4 tipos de comprobantes que tengo dudas si son para remitos:
[Id] => 34
[Desc] => Cbtes. A del Anexo I, Apartado A,inc.f),R.G.Nro. 1415
[Id] => 35
[Desc] => Cbtes. B del Anexo I,Apartado A,inc. f),R.G. Nro. 1415
[Id] => 39
[Desc] => Otros comprobantes A que cumplan con R.G.Nro. 1415
[Id] => 40
[Desc] => Otros comprobantes B que cumplan con R.G.Nro. 1415
¿Alguien sabe si alguno corresponde a "Remitos R"?
Gracias Votos: 0 - Link respuesta -
Fecha: 24-07-2018 09:23:00 @Pablo Gaston
Claro, más allá de las diferencias en las URLs...mi duda pasaba por si la empresa me tiene que autorizar explícitamente.
Lo veo como un paso medio tosco tener que decirle a mi cliente que haga tal o cual cosa, me esperaba poder resolverlo de una forma más automática
Como escribió Matías Wernicke: Tenes que generar los certificados en la AFIP con la cuenta de la empresa o ellos te deben autorizar.
Entonces sí o sí la empresa que quiera usar mi sistema tiene que autorizarme a través de su cuenta de AFIP, ya sea que me dejen entrar desde su computadora (o me pasen las credenciales) o que quien sepa del asunto me autorice a facturar en su nombre.
¿Estoy en lo cierto?
Lo anterior referido a la parte de la autorización...
Pero la parte de la generación de certificados, upload de los mismos y etc....eso ya lo hago desde mi cuenta, verdad? Votos: 0 - Link respuesta -
Fecha: 24-07-2018 12:56:12 Respondo mi pregunta:
Para los remitos "R" no se genera CAE asi que no se usan con el script PHP. Hay que hacer el trámite en la página de AFIP entrando a "Autorización de impresión de comprobantes" y generar desde ahi el CAI para la imprenta. Todos los remitos "R" llevan un solo código CAI. Votos: 1 - Link respuesta -
Fecha: 24-07-2018 15:39:13 Gracias por el aporte Marcelo, para que quede bien claro, generas el CAI desde la pagina de la AFIP y ese numero se pone en todos los remitos R? Votos: 0 - Link respuesta
-
Fecha: 24-07-2018 17:53:04 Asi es Ivan. Al finalizar el trámite en la página sale un formulario con la cantidad de remitos para imprimir y el CAI, que hay que llevar a la imprenta. Ese CAI es para los remitos autorizados, al finalizar el talonario, hay que generar un nuevo CAI y repetir el proceso.
Si o si tiene que ser impreso en imprenta autorizada, sino hay que darse de alta como impresor, pero es un trámite más complicado, la verdad nunca lo exploré. Votos: 2 - Link respuesta -
-
Fecha: 02-08-2018 12:25:24 Hola a todos, a ver si alguien sabe sobre esto. Necesito info sobre los webservices para obtener el CRE (Código de Remito Electrónico) para gestionar el nuevo remito Cárnico (REC) de la AFIP.
Cualquier ayuda será bienvenida. Gracias! Votos: 0 - Link respuesta -
Fecha: 04-08-2018 10:32:34 Hola colegas, en las facturas de compra y venta, las retenciones y percepciones se añaden como tributos de tipo 99? No encuentro el id correspondiente... Votos: 0 - Link respuesta
-
Fecha: 07-08-2018 16:01:12 Hola Deimon te subi un archivo capaz te sirva son los codigos de afip
Tablas generales afip Votos: 0 - Link respuesta -
Fecha: 07-08-2018 19:00:26 Estimados les paso un algoritmo para encontrar el a partir del dni el cuil del cliente por si a alguien le sirve, (como comentario afip esta pidiendo a contadores que al momento de presentar las facturas realizadas por webservices/factura electronica se identifique con dni y nombre y apellido)
<?php $dni=$_GET['dni']; $sexo=$_GET['sexo']; if(isset( $_GET['dni'] ) && isset( $_GET['sexo'] ) ) { if( $sexo == '1' ) { //M $Primero = '20'; $calculo='10';} else if( $sexo == '2' ) { //F $Primero = '27'; $calculo='38';} $multiplicadores = Array('3', '2', '7','6', '5', '4', '3', '2'); for($i=0;$i<8;$i++) { $calculo += substr($dni,$i,1) * $multiplicadores[$i]; } echo "Cálculo ".$calculo."<br> "; $a=($calculo)/11; $entero = intval($a); echo "Entero ".$entero."<br>"; $resultado= $entero*11; echo "Resultado ".$resultado."<br>"; $diferencia= $calculo-$resultado; echo "Diferencia ".$diferencia."<br>"; $dv=11-$diferencia; echo "diferencia valores: ".$dv."<br>"; if($diferencia == '0'){$dv='0'; echo "1 CUIL: ".$Primero.$dni.$dv;} elseif($diferencia == '1' AND $sexo = '1'){$dv='9'; $Primero='23'; $cuil=$Primero.$dni.$dv; echo "2 CUIL: ".$cuil; } elseif($diferencia == '1' AND $sexo = '2'){$dv='4'; $Primero='23'; $cuil=$Primero.$dni.$dv; echo "3 CUIL: ".$cuil; } elseif($diferencia >= '10'){echo "CUIL: es posible que el DNI ingresado no corresponda al sexo seleccionado";} else{ $cuil=$Primero.$dni.$dv; echo "4 CUIL: ".$cuil; } } ?>
Asi luego usar el padron v_4 y encontrar datos de la persona
Saludos Votos: 0 - Link respuesta -
-
Fecha: 08-08-2018 17:59:39 buenas, alguien me explica como se saca el digito verificador para el codigo de barras de la factura ?
muchas gracias Votos: 0 - Link respuesta -
Fecha: 09-08-2018 02:18:29 Hay un post de Ivan Muñoz donde está el código: GetChecksumChar Votos: 0 - Link respuesta
-
Fecha: 09-08-2018 04:04:40
<?php /* Ejemplo $dv_cuit = '20138815081'; Clave Unica de Identificación Tributaria (C.U.I.T.) del emisor de la factura (11 caracteres) $dv_comp = '11'; Código de tipo de comprobante (2 caracteres) $dv_sucu = '0002'; Punto de venta (4 caracteres) $dv_cae = '65081943183018'; Código de Autorización de Electrónica (C.A.E.) o Código de Autorización de Impresión (C.A.I.) (14 caracteres) $dv_veto = '20150305'; Fecha de vencimiento (8 caracteres) (AAAAMMDD) */ $aux_1 = 0; $aux_2 = 0; //-------------------------- $base_calc = $dv_cuit.$dv_comp.$dv_sucu.$dv_cae.$dv_veto; //echo('Base = '.$base_calc);echo('</br>'); $largo = strlen(trim($base_calc)); //echo('Largo = '.$largo);echo('</br>'); For($i=0;$i<$largo+1;$i = $i + 2){$aux_1 = $aux_1 + substr($base_calc,$i,1);} For($i=1;$i<$largo+1;$i = $i + 2){$aux_2 = $aux_2 + substr($base_calc,$i,1);} $aux_3 = $aux_1 * 3; $aux_4 = $aux_3 + $aux_2; //echo('Final = '.$aux_4);echo('</br>'); $largo_final = strlen(trim($aux_4)); $digito = 10 - substr($aux_4,$largo_final-1,1); //echo('Digito Verificador = '.$digito.' '.substr($aux_4,$largo_final-1,1)); ?>Votos: 1 - Link respuesta -
Fecha: 09-08-2018 06:11:25 Estimados colegas, alguno que tenga algún conocimiento de contador.. me explica la nueva resolución de AFIP para factura electrónica, valores minimos a facturar ...
Antes se podía hacer facturas electrónicas desde 1000 para arriba y 999 para abajo con el controlador fiscal, ahora como es?
Según el contador de mi cliente subieron ese importe a 5000 puede ser que sea así?
Muchas gracias Votos: 0 - Link respuesta -
Fecha: 09-08-2018 06:42:26 Mariano, vos podes hacer factura electrónica por cualquier importe. el tema del limite anterior de $ 999.99 es que hasta ese importe lo podías hacer a consumidor final sin informar quien es el cliente. Para facturar a consumidor final tenes que mandar tipo de documento '99' y el Nro de documento = 0 o nada.
Creo, no soy contador, pero el limite de $1000 lo van a subir a $5000 por lo cual se podría hacer una factura a consumidor final por 4999.99.
Habría que probarlo
Saludos Votos: 0 - Link respuesta -
Fecha: 09-08-2018 10:33:19 Gracias Matias esperamos a ver si algún contador nos saca la duda.
según lo que estaba leyendo en la resolución de afip es lo siguiente
Resolución General AFIP N° 4290/2018
Contraer Artículo 6:
a) Los responsables inscriptos en el impuesto al valor agregado.
b) Los sujetos adheridos al Régimen Simplificado para Pequeños Contribuyentes (RS) -con excepción de quienes permanezcan en el Régimen de Inclusión Social y Promoción del Trabajo Independiente y de pequeños contribuyentes inscriptos en el Registro Nacional de Efectores de Desarrollo Local y Economía Social del Ministerio de Desarrollo Social-.
c) Los exentos en el impuesto al valor agregado.
ARTÍCULO 7°.- Los sujetos mencionados en el artículo precedente, podrán optar por una de las DOS (2) modalidades de emisión de comprobantes mencionadas en el mismo, o ambas en forma conjunta, sin necesidad de informar previamente a este Organismo el ejercicio de dicha opción.
dice que puede hacer cualquier importe factura electronica o usar controlador fiscal o usar las dos en conjunto.
bueno nada a ver si algun contador nos ayuda, gracias Votos: 0 - Link respuesta -
Fecha: 09-08-2018 15:55:23 Hola a todos!
Hasta el momento estoy utilizando sin problemas el WSFEv1, el cual no informa detalle. Pero veo que existe el WSMTXCA que a mi entender es igual al otro pero pasando el detalle de los productos vendidos.
Mis preguntas serían:
1) ¿Por qué existen esos dos WS? (en el sentido si no sería más fácil que exista uno solo y que el detalle sea opcional)
2) ¿Hay algún inconveniente en utilizar el ws sin detalle, informando sólo totales? (a nivel contable...)
Saludos! Votos: 0 - Link respuesta -
Fecha: 10-08-2018 05:52:55 Matías, ciertas actividades tienen que facturar y obtener CAE con detalle de productos, y otras no, por eso hay dos webservices. El que debe saber cual actividad debe informar detalle es el contador. Votos: 0 - Link respuesta
-
Fecha: 27-08-2018 07:01:14 Buen día , alquilen tiene problemas con el padrón a4.
Hoy no me deja consultar
el error que me da es :
SoapClient::SoapClient(https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA4?WSDL): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
Hasta el viernes andaba sin problemas.
Saludos Votos: 0 - Link respuesta -
Fecha: 28-08-2018 08:32:10 Les aporto la librería que utilizamos en mi empresa, la pueden utilizar libremente: https://github.com/neocomplexx/neofactura Votos: 1 - Link respuesta
-
Fecha: 28-08-2018 09:38:31 Muchas gracias Mauro.
Lo voy a revisar y ver que utilizan para sacar los datos del padron.
El problema es que si bien el padronA5, si no tiene CUIT solo trae el apeelido y el nombre. Votos: 0 - Link respuesta -
Fecha: 28-08-2018 10:28:18 Hola! estoy probando el ejemplo de "pablo gaston" y la verdad todo muy bien en el modo testing.. ahora cuando voy a modo producción genera la TA pero no genera la CAE.. no muestra error nada.. no genera directamente los xml..
solo esto
"TA expiration:2018-08-29T04:09:20.580-03:00"
mostrando los errores.. me arroja esto
/usr/local/www/htdocs/afipfev1/wsfev1.class.php:66 SOAP-ERROR: Parsing WSDL: Couldn't load from '/usr/local/www/htdocs/afipfev1/wsfev1.wsdl' : Input is not proper UTF-8, indicate encoding ! Bytes: 0xF3 0x64 0x69 0x67
alguien me puede orientar? muchas gracias Votos: 0 - Link respuesta -
Fecha: 28-08-2018 12:21:48 Alguien sabe si a la factura le puedo dar cualquier formato? quiero imprimirla en una comandera termica que tengo.
gracias. Votos: 0 - Link respuesta -
Fecha: 28-08-2018 14:14:54 Gracias Mauro.
¿Sabes si con esos webservices se puede pedir el nuevo REC (registro electrónico cárnico) para frigoríficos? Votos: 0 - Link respuesta -
Fecha: 28-08-2018 15:03:13 Si Insert Host, le podés dar cualquier formato siempre que incluya la información obligatoria, que es:
- Nombre, dirección, teléfono y tipo de inscripción frente al IVA del comercio (Resp. Inscripto, monotributo, etc)
- N° de punto de venta y N° de factura
- N° de CUIT e Ingresos brutos
- Tipo de factura y código de la misma (por ejemplo factura A, código 03 - factura B, código 06, etc)
- Nombre, dirección y CUIT del comprador (si no es factura C)
- Detalle de la factura y total
- Código de barras (CAE) y fecha de vencimiento. Votos: 1 - Link respuesta -
Fecha: 04-09-2018 04:16:12 Hola a todos!
Me surgió un problemita con el siguiente escenario:
Hago una factura a un NO responsable inscripto, con una sola unidad que cuesta $100. Entonces:
neto $121
iva no grabado
total $121
Finalmente informo de la siguiente manera
Array ( [FeCAEReq] => Array ( [FeCabReq] => Array ( [CantReg] => 1 [CbteTipo] => 1 [PtoVta] => 1 ) [FeDetReq] => Array ( [FECAEDetRequest] => Array ( [Concepto] => 1 [DocTipo] => 80 [DocNro] => xxx [CbteDesde] => 1 [CbteHasta] => 1 [CbteFch] => 20180902 [ImpNeto] => 121 [ImpTotConc] => 0 [ImpIVA] => 0 [ImpTrib] => 0 [ImpOpEx] => 0 [ImpTotal] => 121 [FchServDesde] => [FchServHasta] => [FchVtoPago] => [MonId] => PES [MonCotiz] => 1 [Iva] => Array ( [AlicIva] => Array ( [0] => Array ( [Id] => 1 [BaseImp] => 121 [Importe] => 0 ) ) ) ) ) ) )
Pero recibo este error
error: 10018: Si ImpIva es igual a 0 el objeto Iva y AlicIva son obligatorios. Id iva = 3 (iva 0)
Por lo que leí, si ImpIva = 0 (mi caso), sólo debo informar IVA si el IVA es 0%. Como no es mi caso, dejo de informar el IVA pero ahora el error pasa a ser
error: 10070: Si ImpNeto es mayor a 0 el objeto IVA es obligatorio.
No se como debería resolverlo ya que si informo IVA o no siempre recibo un error. Votos: 0 - Link respuesta -
Fecha: 04-09-2018 05:06:25 Hola Matias, creo que el campo ImpNeto deberia quedar en 0 (cero) ya que la operacion no lleva I.V.A. y el importe ese lo deberias poner en ImpOpEx que es donde se debe informar las operaciones exentas de I.V.A. Te dejo abja el codigo corregido.
Array ( [FeCAEReq] => Array ( [FeCabReq] => Array ( [CantReg] => 1 [CbteTipo] => 1 [PtoVta] => 1 ) [FeDetReq] => Array ( [FECAEDetRequest] => Array ( [Concepto] => 1 [DocTipo] => 80 [DocNro] => xxx [CbteDesde] => 1 [CbteHasta] => 1 [CbteFch] => 20180902 [ImpNeto] => 0 [ImpTotConc] => 0 [ImpIVA] => 0 [ImpTrib] => 0 [ImpOpEx] => 121 [ImpTotal] => 121 [FchServDesde] => [FchServHasta] => [FchVtoPago] => [MonId] => PES [MonCotiz] => 1 [Iva] => Array ( [AlicIva] => Array ( [0] => Array ( [Id] => 1 [BaseImp] => 121 [Importe] => 0 ) ) ) ) ) ) ) EXPANDIR CÓDIGOVotos: 0 - Link respuesta -
Fecha: 04-09-2018 05:37:39 Hol Matías. Las facturas a y b se hacen igual, solo que al cliente no le discriminas iva pero lo paga igual. Saludos! Votos: 0 - Link respuesta
-
Fecha: 06-09-2018 15:32:54 Mati, tenías razón! El importe va en ImpOpEx, pero con la salvedad que no debo informar el IVA; o sea que este parte no va:
[Iva] => Array ( [AlicIva] => Array ( [0] => Array ( [Id] => 1 [BaseImp] => 121 [Importe] => 0 ) ) )
muchas gracias! Votos: 0 - Link respuesta -
Fecha: 07-09-2018 02:51:09 Si, Matías, esa parte del IVA no va.
Ahora fíjate bien que sea exento de IVA ya que esos clientes ya no existen prácticamente. Si es consumidor final, mono-tributos, fundación ,,,,,,, llevan IVA pero la factura es 'B' y no se discrimina, como te comenta Gustavo.
Lo que normalmente pasa es que hay algunos productos o actividades que no llevan I.V.A.
Yo no soy contador pero ante cualquier duda consultalo con un contador.
Saludos Votos: 0 - Link respuesta -
Fecha: 07-09-2018 04:19:02 Matias. Si el artículo no lleva iva, usas el id 3 que es iva 0% Votos: 0 - Link respuesta
-
Fecha: 07-09-2018 04:52:25 Puede que también sea valido. Pero en la empresa que tiene esos productos me dijeron que lo ponga como no gravado.
Cada contador con su librito. Votos: 0 - Link respuesta -
Fecha: 10-09-2018 05:28:32 Hola a todos. Tengo un problema que necesito resolver: el sistema de facturación de la empresa autorizó y generó el CAE de una nota de débito a través del webservice, pero la base de datos (por un problema puntual que ya fue corregido) no guardó los datos (CAE, n° factura y fecha vto.).
¿Como puedo consultar en AFIP comprobantes generados por webservices para saber cual fue el CAE? Votos: 0 - Link respuesta -
Fecha: 10-09-2018 05:51:52 Ya lo resolví, usando la función GetVoucherInfo del webservice. Disculpas y gracias. Votos: 0 - Link respuesta
-
Fecha: 10-09-2018 10:07:57 Baje los archivos de pablo y me da el siguiente error:
wsaa.class.php:60 WSAA class. Faltan archivos necesarios para el funcionamiento
Ojala puedan ayudarme. Votos: 0 - Link respuesta -
Fecha: 11-09-2018 11:47:51 Hola a todos!
Tengo todo funcionando ok en homologacion bajo el cuit de mi cliente.
Mi cliente me autorizó a facturar en su nombre, acepté la designación y generé y descargué el certificado desde "Administración de Certificados Digitales"
Ahora quisimos hacer la primer factura en producción y recibo este error:
ns1:coe.notAuthorized: Computador no autorizado a acceder al servicio
Qué está fallando?
Me falta configurar algo a mi en la web de AFIP o a mi cliente? Votos: 0 - Link respuesta -
Fecha: 11-09-2018 11:57:15 no me pregunten que hice, pero despues de publicar la pregunta volvi a la web de afip, entre en Administración de Certificados Digitales y de algun modo al entrar en nueva relacion o nuevo servicio (ya no me acuerdo) me aparecio mi cliente y un dropdown para seleccionar un computador fiscal y el unico item era el alias que le di a mi cliente. lo elegi, confirme y anduvo todo! Votos: 0 - Link respuesta
-
Fecha: 10-10-2018 09:03:41 Hola gente!
En esta oportunidad les quiero consultar sobre una situación que me ocurrió, de la cual creo que saber la solución pero igualmente quisiera confirmarlo con la comunidad. También creo que les puede servir para corregir sus códigos si es que no tienen en cuenta lo que voy a describir.
Mi cliente, al intentar hacer una factura recibía el siguiente error:
10017: Factura individual, DocTipo: 80, DocNro XXXXXXXXX no se encuentra registrado en los padrones de AFIP o se encuentra inactivo.
Intentó varias veces, hasta que me consultó que sucedía. Luego de corregir el cuit de su cliente todo anduvo perfecto pero notamos que hubo un salto en la secuencia.
Me comuniqué con la mesa de ayuda pero no me responden nada concreto y básicamente me dicen que vaya a una dependencia y pregunte.
Pero volviendo a leer la documentación más detenidamente me encuento con esto (página 38):
Validaciones No Excluyentes y los códigos 10017, 10041, 10063
Si recibía un error asumía que el proceso falló, pero entonces ahora entiendo que si recibo alguno de esos tres códigos las factura se genera correctamente pero igualmente recibo un advertencia. estoy en lo cierto? Votos: 0 - Link respuesta -
Fecha: 10-10-2018 10:07:14 Hola Matías!
Qué? Te dicen que aunque dé error, si ese error es del tipo 10017, 10041 o 10063 se confecciona igual la factura?
No sabía esto. Votos: 0 - Link respuesta -
Fecha: 10-10-2018 16:08:12 No me dicen eso explícitamente, pero estoy entendiendo lo que ocurrió y luego de probar el método FECompConsultar() puedo confirmar que efectivamente la factura se confecciona igual.
La respuesta que recibo al consultar es:
stdClass Object ( [FECompConsultarResult] => stdClass Object ( [ResultGet] => stdClass Object ( [Concepto] => 1 [DocTipo] => 80 [DocNro] => xxx [CbteDesde] => xxx [CbteHasta] => xxx [CbteFch] => xxx [ImpTotal] => xxx [ImpTotConc] => 0 [ImpNeto] => xxx [ImpOpEx] => 0 [ImpTrib] => 0 [ImpIVA] => xxx [FchServDesde] => [FchServHasta] => [FchVtoPago] => [MonId] => PES [MonCotiz] => 1 [CbtesAsoc] => stdClass Object ( [CbteAsoc] => stdClass Object ( [Tipo] => xxx [PtoVta] => xxx [Nro] => xxx ) ) [Iva] => stdClass Object ( [AlicIva] => stdClass Object ( [Id] => xxx [BaseImp] => xxx [Importe] => xxx ) ) [Resultado] => A [CodAutorizacion] => XXXXXXXXXXXXX [EmisionTipo] => CAE [FchVto] => xxx [FchProceso] => xxx [Observaciones] => stdClass Object ( [Obs] => stdClass Object ( [Code] => 10017 [Msg] => Factura (CbteDesde igual a CbteHasta), DocTipo, DocNro, no se encuentra registrado en los padrones de AFIP o se encuentra inactivo. ) ) [PtoVta] => xxx [CbteTipo] => xxx ) ) )
Con el CAE y los datos de facturación, los verifiqué via "Constatación de Comprobantes con CAE" y efectivamente "Los datos ingresados coinciden con una autorización otorgada por la AFIP."
Así que ojo al piojo! si tienen mal el CUIT del cliente la factura se genera igual pero se recibe un mensaje de error.
Yo personalmente me equivoqué en el proceso de lectura de la respuesta, ahora hago algo tipo
if($hayError) { throw new Exception($mensaje); } actualizarFactura($cae);
cuando en realidad habría que hacer algo tipo:
if($hayCAE) { actualizarFactura($cae); } if($hayError) { throw new Exception($mensaje); }
Espero que les sirva la info! Votos: 0 - Link respuesta -
Fecha: 10-10-2018 17:13:18 Matías, puede pasar unicamente si el CUIT ingresado, a pesar de estar mal escrito, casualmente da correcto el dígito verificador, porque el sistema de AFIP verifica ese número para validar el CUIT, si el dígito verificador es erróneo rechaza el CUIT y no permite la factura.
Por eso pone que el CUIT no está registrado en el padrón, es un CUIT a todas luces correcto, pero inexistente. Votos: 0 - Link respuesta -
Fecha: 11-10-2018 04:08:32 En mi caso era un cuit invalido, justamente estaba mal el digito verificador. Por eso me sorprende que se haya generado la factura.
Aun no tuve tiempo pero voy a generar el caso en homologacion para hacer una doble confirmacion, pero al menos en produccion ocurrió lo que expliqué.
Se quiso hacer una factura utilizando un cuit invalido (estaba mal el digito verificador) se recibio el código 10017 pero igualmente se realiza la factura de la cual pude consultar el CAE a través de FECompConsultar() Votos: 0 - Link respuesta -
Fecha: 11-10-2018 09:12:23 Buenas tardes, la consulta del padron me esta dando el siguiente error
ORA-06508: PL/SQL: could not find program unit being called Votos: 0 - Link respuesta -
Fecha: 11-10-2018 11:27:44 Matías, no se si tendrá que ver con tu problema, pero salió en las noticias que los proveedores de dominios hoy iban a actualizar las claves criptográficas que usan para trasladar las IP a DNS, y que el tráfico podría verse afectado ocasionalmente. Votos: 0 - Link respuesta
-
Fecha: 11-10-2018 15:18:03 Gracias Marcelo por tu respuesta.
Ahora con un poco mas de tiempo me puse a probar y es solo con este cuit 30716150654
El dump de la respuesta es
object(stdClass)#7 (1) { ["personaReturn"]=> object(stdClass)#8 (2) { ["errorConstancia"]=> object(stdClass)#9 (2) { ["error"]=> string(59) "ORA-06508: PL/SQL: could not find program unit being called" ["idPersona"]=> float(30716150654) } ["metadata"]=> object(stdClass)#10 (2) { ["fechaHora"]=> string(29) "2018-10-11T21:12:53.697-03:00" ["servidor"]=> string(15) "aws.afip.gov.ar" } } }
Pero lo raro es que aveces, y muy pocas lo trae bien.
Cualquier otro cuit o cuil lo trae bien.
voy a reportar el error y si reponden comparto la respuesta.
Saludos Votos: 0 - Link respuesta -
Fecha: 12-10-2018 06:47:21 Hola Matías, a mi me da el mismo error si pongo mal el CUIT, pero no me general la factura. Mi sistema ante un error borra todo el comprobante, pero luego genero uno válido y el número de factura es el correcto, no me saltea ninguno por lo tanto la factura no se genera.
Saludos. Votos: 0 - Link respuesta -
Fecha: 12-10-2018 07:44:16 Hola Gustavo, podras probar con este cuit? 30-71009540-4
Yo ahora estoy probando en homologacion y me genera el CAE pero al mismo tiempo me devuelve una observacion: "10017: Factura individual, DocTipo: 80, DocNro 30710095404 no se encuentra registrado en los padrones de AFIP o se encuentra inactivo."
Por ejemplo si mando fruta y pongo un cuit tipo 313131321, entonces ahi no tengo error, tampoco tengo CAE pero tengo la siguiente observacion "10015 El campo DocNro es invalido" Votos: 0 - Link respuesta -
Fecha: 12-10-2018 11:11:32 Matías ese CUIT es incorrecto. El correcto (si el DNI está bien) es 30-71009540-6 Votos: 0 - Link respuesta
-
Fecha: 12-10-2018 11:35:15 Sí Marcelo, justamente ese es al asunto. Hay que poner un CUIT incorrecto
30-71009540-6: todo va a andar bien
30-71009540-4: deberia generar CAE y devolver observacion Votos: 0 - Link respuesta -
Fecha: 12-10-2018 13:01:29 Buenas tardes Matias y Marcelo
Si pruebo con el terminado en 4 me devuelve
Error linea 82 Error (10015) Factura B (CbteDesde igual a CbteHasta), DocTipo: 86, DocNro 30710095404 no se encuentra registrado en los padrones de AFIP. y no me genera el comprobante Votos: 0 - Link respuesta -
Fecha: 12-10-2018 13:06:43 Lo estas pasando como CUIT (80) o CUIL (89) o como DNI. (96).
Como DNI pasa sin problemas ya que no valida que el numero exista Votos: 0 - Link respuesta -
Fecha: 12-10-2018 13:33:08 como CUIT (80) y el tipo de comprobante es Factura A Votos: 0 - Link respuesta
-
Fecha: 12-10-2018 14:47:09 hoy también te pasa lo mismo?.
A mi me da error 10015 y no genera el comprobante en homologacion
El error que me daba ayer al consultar el padron a5 ya no me da. Votos: 0 - Link respuesta -
Fecha: 12-10-2018 16:04:52 Sí, hoy me pasa también
De hecho ahora mismo estoy haciendo las notas de crédito correspondientes a las facturas erróneas y estoy recibiendo este error: "10017: Factura individual, DocTipo: 80, DocNro 30710095404 no se encuentra registrado en los padrones de AFIP o se encuentra inactivo."
Y obtengo el CAE y secuencia correspondiente.
A ninguno de ustedes le sucede lo mismo!? Votos: 0 - Link respuesta -
Fecha: 14-10-2018 06:23:31 Matías, más que un mensaje de error, parece ser solo una advertencia ya que el proceso se realiza. También podría ser un error interno del sistema AFIP. Yo en los sistemas que hago solo dejo que muestre el mensaje de error cuando no se pudo generar el CAE, ya que si este se generó, junto con la fecha de vencimiento y el número de factura consecutivo, significa que la factura fue aceptada por AFIP. Votos: 0 - Link respuesta
-
Fecha: 16-10-2018 09:42:24 Es lo que supongo porque como comentaba cuando inicié esta parte de la discusión, en la documentación está tratado como "Validaciones No Excluyentes", por lo que parece que en esos casos el CAE se genera (aunque me resulta llamativo que dejen facturar con un CUIT inexistente)
Igualmente me gustaría saber si alguien más puede reproducir el caso.
Aprovecho para hacer una consulta, los remitos asociados a una factura A van con código 991? intenté utilizar 91 (remito R) pero recibía un mensaje de error y me sugiere varios códigos y entre ellos el 991 Votos: 0 - Link respuesta -
Fecha: 16-10-2018 09:46:46 aclaracion sobre lo anterior: para una factura A quiero asociar un remito de papel, no electrónico Votos: 0 - Link respuesta
-
Fecha: 16-10-2018 11:37:16 Y otra cosa que hago, que debería ser normal en cualquier sistema, es validar el CUIT que ingresa un cliente antes de guardarlo en la base de datos o usarlo para una factura, de esa forma se evitan esos errores. Votos: 0 - Link respuesta
-
Fecha: 16-10-2018 12:16:00 Matías perdón que no pude entrar. Con el cuit que me pasaste genera ok la factura, AFIP devuelve observación que no contemplo en mi sistema pero esta aprobada.
http://www.detec.com.ar/30710095404.PNG Votos: 0 - Link respuesta -
Fecha: 23-10-2018 10:01:03 Hola Estoy iniciandome con la factura electronica tipo T. Agradeceré quien pueda brindarme una librería o código ya resulto. Ya hice la el tipo de facturas A, B pero necesito hacerla tipo T (WSCT). Agradeceré la ayuda. Gracias Votos: 0 - Link respuesta
-
Fecha: 23-10-2018 11:22:13 Hola Esteban, yo tuve que hacerlo para un cliente que tenia hoteles en el sur... creo que no usé nada del codigo que uso para wsfev1. Lamentablemente por mi parte en este webservice no puedo darte el código completo, si puedo ayudarte una vez que lo tengas medianamente funcional.
mandame mail a gustavoandriuolo de gmail Votos: 0 - Link respuesta -
Fecha: 25-10-2018 07:54:53 Buenas, alguien esta teniendo problemas con el padron A5? Quise implementarlo pero me da error "Servicio informado inexistente"...
Agradezco cualquier info al respecto. Saludos! Votos: 0 - Link respuesta -
Fecha: 25-10-2018 08:43:14 Si es el que usa el servicio https://soa.afip.gob.ar/sr-padron/v1/constancia/(Nro CUIT) que retorna el PDF con los datos de inscripción AFIP, recien lo probé y está funcionando.
El que retorna los datos XML no lo probé. Votos: 0 - Link respuesta -
Fecha: 10-11-2018 14:03:45 Hola gente... soy nuevo por aca, encontre este thread despues de mucho buscar, y creo que ya lo lei completo de punta a punta. Trate de implementar algunos de los cambios que van mencionando para solucionar el problema que tengo, pero no logro arreglarlo, asi que me aventuro a preguntar a riesgo de que me digan "Pero bolu... esto ya lo respondimos 30 veces, lee todo el hilo de nuevo"...
Esto viene asi. Tengo que implementar FE y adaptarlo al opensource weberp. Ese es otro tema, pero el asunto es que no tengo experiencia con los lios de AFIP (solo tengo experiencia pagandoles, de eso se un monton)...
Asi que despues de mucho buscar encontre el codigo de ejemplo que subio Pablo Gaston. Con ese codigo pude generar al token, y ahora estoy en el paso de generar el CAE. Y ahi es donde surgen los problemas...
Esto el lo que me devuelve el ws
TA expiration:2018-11-11T07:40:11.228-03:00
Error al obtener el ultimo numero autorizado
Code:
Msg:
Obs:
Msg:
Error al obtener CAE
Code: 10008
Msg: Campo CbteDesde se encuentre entre entre 1 y 99999999.
Obs:
Msg:
Error al obtener CAE
Nro: 1
Cae:
Fecha Vto:
Primer problema: no puedo obtener el ultimo numero autorizado. Segundo problema, no estoy recibiendo el codigo de error, ni mensajes, ni nada mas... El error del CAE calculo que tiene dependencia con el de arriba
Entonces mi pregunta concreta es esta. Para estos metodos que estoy llamando en el ws de homologacion, que punto de venta tengo que usar? El certificado y clave los genere usando mi cuit. Yo soy monotributista y hago facturas por medio de Xubio, asi que tengo generado un punto de venta mio, asi que probe poniendo ese (1), y ademas como tipo de comprobante puse 11 (factura C)...
Es todo lo que modifique ademas de las variables de cuit, path, y demas...
Desde ya les agradezco... Votos: 0 - Link respuesta -
Fecha: 11-11-2018 07:43:07 Hola Juan, primero no necesitas tener puntos de venta para prueba. De hacho siendo moinotributista podes hacer facturas A de prueba tambien.
Con respecto al error que no recibis, lo que tenes que hacer directamente es revisar los XML que le envias y los que te devuelve afip. De ahí tenes que arrancar, despues vemos que pasa. Votos: 0 - Link respuesta -
Fecha: 12-11-2018 04:04:54 Gracias Gustavo!! capo total, ni me habia dado cuenta que quedaban logueados los requests y los responses... Asi que mirando y toqueteando lo logre! Lo que tuve que hacer en primera instancia fue forzar el ultimo numero autorizado (traia 0 y por alguna razon no le gustaba), y despues ir viendo en los logs que errores me devolvia afip (el CUIT no existia, el tipo de comprobante requeria que algunos campos estuvieran o no, etc)... y listo!
Groso, estoy en deuda... "Nos has salvado, estamos agradecidos" .. :D Votos: 0 - Link respuesta -
Fecha: 12-11-2018 05:49:21 Si, mi clase comprueba si es el primero, porque da error. Tenes que ver antes de solicitar el comprobante, si tu variable de ultimo comprobante esta en "0" pasala a "1".
algo así sencillo:
if ($cbte == "0") { // para el primer comprobante $cbte = "1"; }
Eso lo hago porque tengo muchos clientes con un solo sistema multiusuario.
Saludos! Votos: 0 - Link respuesta -
Fecha: 21-11-2018 09:39:27 Hola les cuento que estoy en la generación del archivo txt para enviar el régimen informativo (turiva) de las facturas "T" a extranjeros. AFIP te brinda sólo un ejemplo:
http://www.afip.gob.ar/fe/documentos/F8089.20111111112.20170100.0000.txt
Alguien que ya haya hecho este tipo de archivos para subirlos a la AFIP sobre todo para ver como debe ir presentado todo un período. La documentación la obtuve http://www.afip.gob.ar/fe/documentos/ManualRegimenInformativoAlojamientoTuristasExtranjerosV1_3Modificado06072017.pdf
Saludos! Votos: 0 - Link respuesta -
Fecha: 10-12-2018 17:06:44 Hola que tal alguien mas le dejo de funcionar el padron? gracias saludos Votos: 0 - Link respuesta
-
-
Fecha: 11-12-2018 10:24:18 Estimados, disculpen que reitere lo siguiente, pero es algo que me quedó colgado desde mi última consulta
Los remitos asociados a una factura A van con código 991? intenté utilizar 91 (remito R) pero recibía un mensaje de error y me sugiere varios códigos y entre ellos el 991
Quiero asociar un remito de papel, no electrónico Votos: 0 - Link respuesta -
Fecha: 11-12-2018 11:10:50 Matías gracias, había metido mano yo je, suele pasar Votos: 0 - Link respuesta
-
Fecha: 13-12-2018 00:20:58 Buenas!
Quería preguntar si alguien sabe, porque ya le pregunte a dos contadores y no me supieron decir.
Tengo la necesidad por una cuestion de espacio de utilizar la impresora de ticket térmica; lo que no sé es si puedo adaptar el formato de la factura a formato ticket poniendo los datos requeridos obligatorios, es para ahorrar la impresion de una hoja a4 ya que para comercios con venta mostrador necesitan seguir entregando la factura en papel, pero generada electrónica, y segun la categoria, me toca la obligacion a partir del 1 de febrero.
Si alguien conoce si se puede customizar el formato, sería ideal.
Gracias. Votos: 0 - Link respuesta -
Fecha: 14-12-2018 03:59:54 Diego, la factura electrónica debe llevar código de barras legible por lector, ¿la impresora térmica que tenés puede imprimir código de barras? ¿que modelo de impresora es? Votos: 0 - Link respuesta
-
Fecha: 14-12-2018 04:29:01 Marcelo, si, imprime gráficos.
Aún no compre ninguna, pero estaba entre estas dos, siempre y cuando alguien me confirme que voy por el camino correcto.
Impresora Epson Tm T20
Impresora Tickeadora Termica 3nstar Rpt005 Votos: 0 - Link respuesta -
Fecha: 14-12-2018 05:50:11 Ok, entonces no habría problema siempre que el ticket factura tenga los datos del vendedor con CUIT, los del comprador con CUIT, CAE con código de barras y fecha de vencimiento y el detalle de artículos.
No hay un formato ni tamaño establecido de factura, solo debe contener los datos obligatorios.
La Epson es un poco más cara que la 3nStar, pero es mejor impresora, más resistente. Fijate que no sea marca Xprinter (simil Epson TM-T20). Votos: 1 - Link respuesta -
Fecha: 14-12-2018 06:35:39 Perfecto Marcelo! Muchas gracias!
La idea de la comandera era para usar la misma impresora para todo, ya que con la misma cambiando el rollo puedo imprimir las etiquetas adhesivas para los productos, luego el rollo papel para imprimir la factura, ticket de cambio, etc. Votos: 0 - Link respuesta -
Fecha: 08-01-2019 08:17:44 disculpen la insistencia....
Los remitos asociados a una factura A van con código 991? intenté utilizar 91 (remito R) pero recibía un mensaje de error y me sugiere varios códigos y entre ellos el 991
Quiero asociar un remito de papel, no electrónico Votos: 0 - Link respuesta -
Fecha: 14-02-2019 09:00:52 Hola gente, dos temitas...
1) repito mi consulta anterior (la del codigo 991)
2) Dentro de "Administración de Certificados Digitales" en la web de AFIP...como se puede eliminar un alias? Votos: 0 - Link respuesta -
Fecha: 21-02-2019 02:56:33 Buenos Dias, tengo una consulta.
Hace un par de aos habia comenzado un desarrollo de FCE que quedo trunco. ahora lo estoy reviviendo.
En su momento encontre unos ejemplos en php, y creo que me funciono.
Ahora tengo funcionando el WSAA ( obtengo credenciales ) y me funciona por ejemplo el metodo "fcegettiposdoc", pero el FCEDummy observo el mensaje :
SoapFault Object ( [message:protected] => Could not connect to host
Y si quiero obtener un CAE de Homologacion, no consigo obtener nada.
Supuestamente esta es la URL del WebSerive, y por navegador accedo bien.
https://wswhomo.afip.gov.ar/wsfev1/service.asmx
pongo parte del codigo que hace el consumo del web Service:
private function _FCESolicitarCAE($prefijo, $TOKEN, $SIGN, $cuit_emisor, &$recibo, &$error) { define ("WSFEV1", "wsfev1.wsdl"); # The WSDL corresponding to WSFEV1 $opts = array( 'ssl' => array('ciphers' => 'RC4-SHA') ); $client_wsfe = new SoapClient($prefijo.WSFEV1, array( //WSDL 'trace' => true, 'encoding' => 'UTF-8', 'cache_wsdl' => WSDL_CACHE_BOTH, //'ssl_method' => SOAP_SSL_METHOD_SSLv3, 'stream_context' => stream_context_create($opts), "exceptions" => false )); .... $results_AutRequest = $client_wsfe->FECAESolicitar( array( 'Auth' => array ( 'Token' => $TOKEN, 'Sign' => $SIGN, 'Cuit' => (float) $cuit_emisor, ), 'FeCAEReq' => array ( 'FeCabReq' => array ( 'CantReg' => 1, 'PtoVta' => $ptoVta, 'CbteTipo' => 15 // Value Id: 15 Value // Desc: Recibo C // Value Fecha desde : 20110330 ), 'FeDetReq' => array ( 'FECAEDetRequest' => array ( 'Concepto' => 2, // Productos y servicios /* 1 Productos 2 Servicios 3 Productos y Servicios */ 'DocTipo' => $docTipo, //96, //80 (CUIT) - 96 DNI 'DocNro' => (float) $docNro, //21604338, 'CbteDesde' => $recibo->numero_afip , //2, 'CbteHasta' => $recibo->numero_afip , //2, 'CbteFch' => date('Ymd', strtotime($cbteFch)), //TODO: cambiar fecha. 'ImpTotal' => round($imp_total, 2), 'ImpTotConc' => round($imp_total_conceptos, 2), 'ImpNeto' => round($imp_neto, 2), 'ImpOpEx' => round($imp_operaciones_exentas, 2), 'ImpTrib' => round($imp_trib, 2), 'ImpIVA' => $imp_iva, 'FchServDesde' => date('Ymd', strtotime($recibo->fecha)), //date('Ym').'01', //Servicio! 'FchServHasta' => date('Ymd', strtotime($recibo->fecha)), //date('Ym').'28', //Servicio ! tipo Abono 'FchVtoPago' => date('Ymd', strtotime($recibo->fecha)),//date('Ym').'28', 'MonId' => 'PES', 'MonCotiz' => 1, // 'Tributos' => array( // 'Tributo' => array( // 'Id' => 99, // 'Desc' => 'Impuesto municipal matanza', // 'BaseImp' => 150, // 'Alic' => 5.2, // 'Importe' => 7.8 // ) // ), /* 'Iva' => array( 'AlicIva' => array( 'Id' => 5, 'BaseImp' => 125, 'Importe' => 26.25 ) ), */ 'Opcionales' => array( 'Opcional' => array( array( 'Id' => 10, 'Valor' => 1, ), array( 'Id' => 1011, 'Valor' => $docTipo ), array( 'Id' => 1012, 'Valor' => (float) $docNro ), ) ), ) ) ) ) );
Alguna idea de por donde buscar!
gracias Votos: 0 - Link respuesta -
Fecha: 21-02-2019 06:30:47 Tengo un cliente que mesta pidiendo factura electrónica de exportación.
Alguien lo utilizo alguna vez?
Tengo entendido que es otro webservice,puede ser o se utiliza el mismo?
Alguien tiene algún ejemplo para e,empezar a desgranar el tema?
Saludos a todos. Votos: 0 - Link respuesta -
Fecha: 21-02-2019 10:58:44 Si, el servicio es WSFEX
entiendo que tiene algunas diferencias con WSFEV1 Votos: 0 - Link respuesta -
Fecha: 26-02-2019 10:05:20 Hola a todos, agrego un temita e insisto con otros...
el tema nuevo: estoy jugando con el padron (wspa5), pero si antes utilizo wsfe/wsfe1, entonces obtengo este error:
Token recibido es para el servicio [wsfe], deberia ser para servicio [ws_sr_padron_a5,ws_sr_constancia_inscripcion]
Si veo el TRA.xml, veo que efectivamente hay un nodo
<service>wsfe</service>
Entonces mi pregunta es, como puedo consultar ambos ws uno atras del otro?
ej:
$objFE = new WSFE(); $x = $objFE->FEParamGetTiposIva(); print_r($x); $objPA5 = new WSPA5(); $x = $objPA5->getPersona($cuit); print_r($x);
o tengo que usar TA/TRA distintos por cada web service?
lo otro que vuelvo a consultar es:
1) lo de codigo 991 alguien tiene alguna respuesta?
2) Dentro de "Administración de Certificados Digitales" en la web de AFIP...como se puede eliminar un alias? Votos: 0 - Link respuesta -
-
Fecha: 10-04-2019 13:11:26 Hola Matías, yo uso otros nombres para los xml. Los mismos que wsfev pero le agrego un a5 al final para diferenciarlos y que no se pisen.
Tanto el tra como los de login. Lo del error ni idea, perdí el hilo.
Saludos. Votos: 0 - Link respuesta -
Fecha: 10-04-2019 13:15:23 Ahi encontre lo que decias del 991. En el webservice wsfe no hay, que yo sepa, remitos electrónicos. Te fijaste en el facturador de afip si te deja hacer remitos? Votos: 0 - Link respuesta
-
Fecha: 17-04-2019 06:01:06 Gracias Gustavo, al final hice lo que haces vos.... genero un TA_X y un TRA_X, donde la X es el nombre del servicio (wsfe, pa5, etc). Al final voy a tener tantos TA/TRA como servicios habilitados.
No es lo que más me guste pero funciona. Escucho otras propuestas si alguien tiene una!!
Saludos! Votos: 0 - Link respuesta -
Fecha: 18-04-2019 04:16:32 Matias no lo pense mucho pero no hay otra. Tenes que generar un archivo por cada servicio. Sino hay que hacerlo sin xml, pero no es algo que yo quiera, no tengo ni cerca tiempo para cambiarlo y son solo unos xml que los podes meter en una carpeta. Mi sistema de factura multiusuario genera cientos de xml por día y cada usuario tiene los suyos en su propia carpeta... Votos: 0 - Link respuesta
-
Fecha: 18-04-2019 12:05:23 Gustavo, por favor no creas que hice una crítica a tu solución!! Si así lo creíste te pido disculpas.
Cuando decía que no me gustaba me refería a la arquitectura planteada por AFIP.
Saludos! Votos: 0 - Link respuesta -
Fecha: 03-05-2019 07:33:43 Buen dia a todos. Puede ser que la AFIP este con problemas.
Me sale el cartel "Could not connect to host" Votos: 0 - Link respuesta -
Fecha: 09-05-2019 05:52:18 Buen dia.
Necesito obtener la cotización de la moneda utilizada en la facturación.
Por lo que pude ver existe el webservice "FEParamGetCotizacion".
Alguien lo utilizó o sabe como obtener la cotización ? Votos: 0 - Link respuesta -
Fecha: 09-05-2019 06:34:21 Hola Matías. Yo lo hice, el webservice es el wsfev1 tenes que llamar con token, sign, cuit e id de moneda. Estoy viajando ahora, a la tarde te paso la funcion si no podes. Saludos. Votos: 0 - Link respuesta
-
Fecha: 09-05-2019 07:04:37 Si podes pasarmela te lo agradesco.
Muchas gracias Votos: 0 - Link respuesta -
Fecha: 09-05-2019 14:07:49 Matias la tenia hecha pero para factura de Exportación. El manual dice esto:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <FEParamGetCotizacion xmlns="http://ar.gov.afip.dif.FEV1/"> <Auth> <Token>string</Token> <Sign>string</Sign> <Cuit>long</Cuit> </Auth> <MonId>string</MonId> </FEParamGetCotizacion> </soap:Body> </soap:Envelope>
Depende como esté armada tu clase, depende como se llame la funcion que chequea errores, debe quedar algo así:
public function FEParamGetCotizacion($idmoneda){ $results = $this->client->FEParamGetCotizacion(array( 'Auth'=>array( 'Token' => $this->TA->credentials->token, 'Sign' => $this->TA->credentials->sign, 'Cuit' => self::CUIT), 'MonId' => $idmoneda)); $e = $this->_checkErrors($results, 'FEParamGetCotizacion'); return $e == false ? $results->FEParamGetCotizacion->MonCotiz : false; }
Es todo lo que te puedo decir, estoy sin nada de tiempo. Saludos. Votos: 0 - Link respuesta -
Fecha: 09-05-2019 14:37:32 Matías, yo uso para obtener cotización una api gratuita de mercadolibre que devuelve un jason, sin necesidad de tokens ni CUIT, ejemplo:
dólares a pesos:
https://api.mercadolibre.com/currency_conversions/search?from=USD&to=ARS#json
devuelve:
{
"ratio": 45.25
}
reales a pesos:
https://api.mercadolibre.com/currency_conversions/search?from=BRL&to=ARS#json
{
"ratio": 11.4057419
} Votos: 0 - Link respuesta -
Fecha: 09-05-2019 15:07:06 Hola, desde las 18hs aprox. el webservice me tira el siguiente error.
/usr/local/www/htdocs/afipfev1/wsfev1.class.php:134 Service Unavailable
que pude ser? desde noviembre funciona sin problemas.
muchas gracias Votos: 0 - Link respuesta -
Fecha: 09-05-2019 15:26:12 Marcelo si necesitas la cotizacion como referencia digamos podes usar externos pero para automatizar un sistema no lo recomendaría para nada. Afip no recibe cualquier cotización, solo la oficial con algun tipo de tolerancia en porcentaje. Si vas a usar para facturar en dolares la unica es usar la cotización y sumarle o restarle la tolerancia máxima si es que esa cotización no te sirve. Saludos. Votos: 0 - Link respuesta
-
Fecha: 09-05-2019 15:27:57 Sebastián usa la funcion dummy para vee el estado de los servicios de afip o mira los xmls si es que usas log. Yo tengo un sistema multiusuarios y no tuve queja. Saludos. Votos: 0 - Link respuesta
-
Fecha: 10-05-2019 04:00:46 Sebastian a mi me paso lo mismo la semana pasad. Hera solo desde mi servidor que esta en un cloud en EEUU. Desde mi PC me andaba bien. Yo tambie tengo un servicio mutiusuario y no he tenido ninguna queja.
Gracias a todos por contestarme la pregunta con respecto a la cotizacion.
Saludos Votos: 0 - Link respuesta -
Fecha: 10-05-2019 05:30:08 Matías y Marcelo. Estuve haciendo pruebas en afip con cotización y al menos en homologación no hay problemas con la cotización que se envía. Mandé una factura con cotización 55p y me la aprobó.
El tema es que la API de ML devuelve 45.25 y el dolar BNA esta 45.90 ahora, yo en un cliente mayorista tengo hecho cotización del BNA para que tenga como referencia, aunque factura en pesos, los pedidos los recibe en dolares y pesifica. Votos: 0 - Link respuesta -
Fecha: 10-05-2019 06:11:04 Yo estoy usando la api de dolarsi.

se lo muestro en un dashboard al admin

y ellos editan su "precio" dolar, entonces el cliente siempre ve el precio en $ y le factura en pesos.
https://www.dolarsi.com/api/api.php?type=ultima
https://www.dolarsi.com/api/api.php?type=valoresprincipales
public function get_cnt_dolar($url) { $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_USERAGENT, CURL_FAKE_AGENT); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); $contents = curl_exec($ch); if (curl_errno($ch)) { echo curl_error($ch); echo "\n<br />"; $contents = ''; } else { curl_close($ch); } if (!is_string($contents) || !strlen($contents)) { echo "Failed to get contents."; $contents = ''; } return json_decode($contents); }Votos: 0 - Link respuesta -
-
Fecha: 03-06-2019 14:19:56 Alguien tiene para comprartir un codigo bien basico para hacer una factura electronica, para poder entenderlo y despues poder agregarle funcionalidades?
Gracias Votos: 0 - Link respuesta -
Fecha: 03-06-2019 14:43:45 En el enlace que compartió Pablo Gaston no hay ningun codigo, se habrá borrado?
https://groups.google.com/forum/?hl=es-419#!forum/factura-electronica-afip---web-service-en-php---2015 Votos: 0 - Link respuesta -
Fecha: 04-06-2019 05:54:10 Hola Marcela, podes utilizar Afip.php, te simplifica el uso a unas pocas lineas de codigo. Votos: 0 - Link respuesta
-
Fecha: 04-06-2019 06:26:05 Marcela, creo que el link que estas buscando esta acá:
https://groups.google.com/forum/?hl=es-419#!topic/factura-electronica-afip---web-service-en-php---2015/oaxjA-_9ZK4
También acá tenes código en PHP:
https://www.afip.gob.ar/ws/documentacion/wsaa.asp
que sumado al link anterior te va a servir para armar tu propia lógica.
saludos! Votos: 0 - Link respuesta -
Fecha: 07-06-2019 09:38:18 Gracias, ya pude generar facturas
Para consultar un comprobante ya emitido, como se utiliza FECompConsultar?
Gracias Votos: 0 - Link respuesta -
Fecha: 08-06-2019 03:57:23 Esto es lo que yo hago.
CmpConsultar($TipoComp, $PtoVta, $NroFactura, $cbte)) {
echo (json_encode($cbte));
///---------------------------------------------------------------
function CmpConsultar($TipoComp, $PtoVta, $nro, &$cbte)
{
$results = $this->client->FECompConsultar(
array('Auth' => array('Token' => $this->Token,
'Sign' => $this->Sign,
'Cuit' => $this->CUIT),
'FeCompConsReq' => array('PtoVta' => $PtoVta,
'CbteTipo' => $TipoComp,
'CbteNro' => $nro)
)
);
if (isset($results->FECompConsultarResult->Errors)) {
$this->procesaErrores($results->FECompConsultarResult->Errors);
return false;
}
$cbte = $results->FECompConsultarResult->ResultGet;
$this->mw_comprobante = $results->FECompConsultarResult->CbteDesde; // matias
return true;
} Votos: 0 - Link respuesta -
Fecha: 10-06-2019 04:59:26 Buenas, yo almaceno en la db primero, luego tomo esos datos y los envío a afip. Para consultar, lo hago directo de la db. La funcion del webservice es correcta, pero hay datos que no envias y que luego vas a necesitar como por ejemplo los items de los comprobantes o los datos del cliente (mas alla de tipo y numero de documento).
Saludos. Votos: 0 - Link respuesta -
Fecha: 10-06-2019 05:29:36 Gracias Gustavo por tu aclaración.
Yo no estoy solicitando el cae con la información de los ítems. Solamente con los totales de factura y con respecto a los datos del cliente, en la respuesta me trae el C.U.I.T con lo cual obtengo el cliente y sus datos.
Saludos Votos: 0 - Link respuesta -
Fecha: 10-06-2019 09:53:44 Claro Matías, cada uno lo hace a la medida de lo que necesita. En mi caso me sirve almacenar, porque tambien tengo la busqueda por cuit y dni, pero los clientes de dni solo trae nombre y apellido, y al generar la factura existe la posibilidad de que el usuario complete los datos restantes y eso va a la base de datos.
Lo aclaré por experiencia, para que el que se está iniciando tenga un panorama mas amplio.
Saludos. Votos: 0 - Link respuesta -
Fecha: 18-06-2019 15:34:18 Quiero reutilizar el codigo para distintos cuit, pero tengo un problema aca:
Asi funciona bien:
class WSFEV1 {
const CUIT = 20000000001;
Pero usando una variable para el cuit:
class WSFEV1 {
const CUIT = $_SESSION['CUIT'];
Pero asi no funciona, da este error
Parse error: syntax error, unexpected '$_SESSION' (T_VARIABLE)
Cual es el problema? Gracias Votos: 0 - Link respuesta -
Fecha: 20-06-2019 17:25:37 Yo le lo solucione con (double) $cuit = (double) $cuit_facturador;
Antes de ponerle double, me cambiaba el numero de cuit por cualquier cosa.
proba con
const CUIT = (double) $_SESSION['CUIT']; Votos: 0 - Link respuesta -
Fecha: 21-06-2019 05:46:19 Hola Marcela, estas adentro de una clase, no te va a tomar variables externas salvo que las hagas globales adentro de la clase... hay otras maneras pero si tu sistema no esta expuesto, usar global no tiene riesgo.
Primero definis la variable fuera de la clase:
$cuit = $_SESSION['cuit'];
despues:
public function __construct()
{
global $cuit;
this->cuit = $cuit;
}
cada vez que queres llamarlo, usas this->cuit. Votos: 0 - Link respuesta -
Fecha: 22-06-2019 04:42:41 Buen dia, alguien tiene problemas con la parte de testing.
me sale este error
SOAP Fault: (87)HTTP Service Temporarily Unavailable
Saludos Votos: 0 - Link respuesta -
Fecha: 22-06-2019 05:39:40 Hola Matías, está caído parece... me da el mismo error. Producción anda OK. Votos: 0 - Link respuesta
-
Fecha: 22-06-2019 07:37:28 Si, produccion anda bien.
Gracias por la respuesta. Votos: 0 - Link respuesta -
Fecha: 10-07-2019 10:38:54 Hola de vuelta, que sucede si no queremos informar "otros tributos", solo el iva:
https://www.phpcentral.com/question/174/factura-electronica-en-argentina#resp_06f2e099b4f87109d52e15d7c05f0084
public function FECAESolicitar($cbte, $ptovta, $regfe, $regfeiva_id, $regfeiva_BaseImp, $regfeiva_Importe) { $params = array( 'Auth' => array( 'Token' => $this->TA->credentials->token, 'Sign' => $this->TA->credentials->sign, 'Cuit' => self::CUIT ), 'FeCAEReq' => array( 'FeCabReq' => array( 'CantReg' => 1, 'PtoVta' => $ptovta, 'CbteTipo' => $regfe['CbteTipo'] ), 'FeDetReq' => array( 'FECAEDetRequest' => array( 'Concepto' => $regfe['Concepto'], 'DocTipo' => $regfe['DocTipo'], 'DocNro' => $regfe['DocNro'], 'CbteDesde' => $cbte, 'CbteHasta' => $cbte, 'CbteFch' => $regfe['CbteFch'], 'ImpNeto' => $regfe['ImpNeto'], 'ImpTotConc' => $regfe['ImpTotConc'], 'ImpIVA' => $regfe['ImpIVA'], 'ImpTrib' => $regfe['ImpTrib'], 'ImpOpEx' => $regfe['ImpOpEx'], 'ImpTotal' => $regfe['ImpTotal'], 'FchServDesde' => $regfe['FchServDesde'], //null 'FchServHasta' => $regfe['FchServHasta'], //null 'FchVtoPago' => $regfe['FchVtoPago'], //null 'MonId' => $regfe['MonId'], //PES 'MonCotiz' => $regfe['MonCotiz'], //1 'Tributos' => array( 'Iva' => array ( 'AlicIva' => array (array ( 'Id' => $regfeiva_id[0], 'BaseImp' => $regfeiva_BaseImp[0], 'Importe' => $regfeiva_Importe[0] ), array ( 'Id' => $regfeiva_id[1], 'BaseImp' => $regfeiva_BaseImp[1], 'Importe' => $regfeiva_Importe[1] ), array ( 'Id' => $regfeiva_id[2], 'BaseImp' => $regfeiva_BaseImp[2], 'Importe' => $regfeiva_Importe[2] ), ), ), ), ), ), ), );
quise sacar el array otros tributos pero no funciono. Para pasar null que debo hacer? Votos: 0 - Link respuesta -
Fecha: 10-07-2019 11:27:31 Hola Giuliano, comentá trubutos, sacalo directo porque asi como lo pusiste está incompleto y te va a dar error el codigo:
'MonCotiz' => $regfe['MonCotiz'], //1 //'Tributos' => // array( 'Iva' => array ( 'AlicIva' => array (array ...... (Votos: 1 - Link respuesta -
Fecha: 10-07-2019 11:31:27 Giuliano, por qué informas iva así? estas enviando siempre 3 ivas? porque al dejar estáticos los indices del array te arriesgas a que si envias dos te de error. Tendrías que formarlo así:
'Iva' => array ( 'AlicIva' => $regfeiva ),
$regfeiva debería ser un array multidimensional formado por un loop donde le vayas cambiando el indice a medida que informas mas ivas. Votos: 1 - Link respuesta -
Fecha: 10-07-2019 22:09:00 Gracias, ya lo logre. Lo que me sucede ahora es que la funcion del ticket dejo de funcionar, es decir no me sobrescribe el archivo xml.
function CreateTRA($SERVICE) { $TRA = new SimpleXMLElement( '<?xml version="1.0" encoding="UTF-8"?>' . '<loginTicketRequest version="1.0">'. '</loginTicketRequest>'); $TRA->addChild('header'); $TRA->header->addChild('source','SERIALNUMBER=CUIT 20357161178, CN=ultracompu'); $TRA->header->addChild('destination','cn=wsaahomo,o=afip,c=ar,serialNumber=CUIT 33693450239'); $TRA->header->addChild('uniqueId',date('U')); $TRA->header->addChild('generationTime',date('c',date('U')-60)); $TRA->header->addChild('expirationTime',date('c',date('U')+60)); $TRA->addChild('service',$SERVICE); $TRA->asXML('TRAFE.xml'); }
Me doy cuenta por la fecha de modificacion que windows me da del archivo, hay algun permiso en el php.ini? Es decir si una vez lo hizo porque ahora no, probe buscar en todas las carpeta de windows y no esta en otro lugar Votos: 0 - Link respuesta -
Fecha: 11-07-2019 04:32:46 $TRA->asXML('TRAFE.xml') indica que el archivo xml se tiene que crear en la misma carpeta donde está el script php, no tiene asignado otro path. Debe haber un error en la función. Votos: 0 - Link respuesta
-
Fecha: 12-07-2019 01:09:39 Bueno adjunto script completo. Supongo que el problema esta en la funcion principal, porque se realiza solo si el archivo existe, aunque deberia sobreescribirse como sucede con la ocnsulta al padron que si me funciona. Es decir copie el archivo de autenticacion de wsaa para wsfe.. Cmabiando el nombre del servicio pero no se porque no sobreescribe el fichero.
<?php #============================================================================== define ("WSDL", dirname(dirname(__FILE__))."/facta/wsaa.wsdl"); # The WSDL corresponding to WSAA define ("WSDLFE", dirname(dirname(__FILE__))."/facta/wsfev1.wsdl"); define("CERT", dirname(dirname(__FILE__))."/facta/certificado.crt"); # The X.509 certificate in PEM format define ("PRIVATEKEY", dirname(dirname(__FILE__))."/facta/privada.key"); # The private key correspoding to CERT (PEM) define ("PASSPHRASE", "caruso12021991"); # The passphrase (if any) to sign define ("PROXY_HOST", "10.20.152.112"); # Proxy IP, to reach the Internet define ("PROXY_PORT", "80"); # Proxy TCP port define ("URL", "https://wsaahomo.afip.gov.ar/ws/services/LoginCms"); #define ("URL", "https://wsaa.afip.gov.ar/ws/services/LoginCms"); #------------------------------------------------------------------------------ # You shouldn't have to change anything below this line!!! #============================================================================== function CreateTRA($SERVICE) { $TRA = new SimpleXMLElement( '<?xml version="1.0" encoding="UTF-8"?>' . '<loginTicketRequest version="1.0">'. '</loginTicketRequest>'); $TRA->addChild('header'); $TRA->header->addChild('source','SERIALNUMBER=CUIT 20357161178, CN=ultracompu'); $TRA->header->addChild('destination','cn=wsaahomo,o=afip,c=ar,serialNumber=CUIT 33693450239'); $TRA->header->addChild('uniqueId',date('U')); $TRA->header->addChild('generationTime',date('c',date('U')-60)); $TRA->header->addChild('expirationTime',date('c',date('U')+60)); $TRA->addChild('service',$SERVICE); $TRA->asXML('TRAFE.xml'); } #============================================================================== # This functions makes the PKCS#7 signature using TRA as input file, CERT and # PRIVATEKEY to sign. Generates an intermediate file and finally trims the # MIME heading leaving the final CMS required by WSAA. function SignTRA() { $certificado="file://".realpath("../gestionn/views/modules/facta/certificado.crt"); $privatekey="file://".realpath("../gestionn/views/modules/facta/private.key"); $args = array( 'extracerts' => $certificado, 'friendly_name' => 'My signed cert by CA certificate' ); $pedido="file://".realpath("../gestionn/views/modules/facta/pedido.csr"); // $STA=openssl_pkcs12_export($pedido,$certificado,$privatekey, "caruso12021991", $args); $tra="../gestionn/views/modules/facta/TRAFE.xml"; $STATUS=openssl_pkcs7_sign("C://xampp/htdocs/gestionn/views/modules/facta/TRAFE.xml", "C://xampp/htdocs/gestionn/views/modules/facta/TRAFE.tmp", "file://".realpath(CERT), array("file://".realpath(PRIVATEKEY), PASSPHRASE), array(), !PKCS7_DETACHED ); if (!$STATUS) {exit("ERROR generating PKCS#7 signature\n");} $inf=fopen("C://xampp/htdocs/gestionn/views/modules/facta/TRAFE.tmp" , "r"); $i=0; $CMS=""; while (!feof($inf)) { $buffer=fgets($inf); if ( $i++ >= 4 ) {$CMS.=$buffer;} } fclose($inf); # unlink("TRA.xml"); unlink("C://xampp/htdocs/gestionn/views/modules/facta/TRAFE.tmp"); return $CMS; } #============================================================================== function CallWSAA($CMS) { $client=new SoapClient(WSDL, array( 'soap_version' => SOAP_1_2, 'location' => URL, 'trace' => 1, 'exceptions' => 0 )); $results=$client->loginCms(array('in0'=>base64_encode($CMS))); file_put_contents("request-loginCms.xml",$client->__getLastRequest()); file_put_contents("response-loginCms.xml",$client->__getLastResponse()); if (is_soap_fault($results)) {exit("SOAP Fault: ".$results->faultcode."\n".$results->faultstring."\n");} return $results->loginCmsReturn; } #============================================================================== function ShowUsage($MyPath) { printf("Uso : %s Arg#1 Arg#2\n", $MyPath); printf("donde: Arg#1 debe ser el service name del WS de negocio.\n"); printf(" Ej.: %s wsfe\n", $MyPath); } #============================================================================== ini_set("soap.wsdl_cache_enabled", "0"); if (!file_exists(CERT)) {exit("Failed to open ".CERT."\n");} if (!file_exists(PRIVATEKEY)) {exit("Failed to open ".PRIVATEKEY."\n");} if (!file_exists(WSDL)) {exit("Failed to open ".WSDL."\n");} //if ( $argc < 2 ) {ShowUsage($argv[0]); exit();} date_default_timezone_set('America/Argentina/Buenos_Aires'); $hoy = date("Y-m-j H:i:s"); if (file_exists("C:\\xampp\htdocs\gestionn\views\modules\facta\TAFE.xml")){ $TA=simplexml_load_file("C:\\xampp\htdocs\gestionn\views\modules\facta\TAFE.xml"); $expira=substr($TA->header->expirationTime,0,-10); $ec=str_replace('T',' ',$expira); echo $ec; if ($ec<$hoy){ $SERVICE="wsfe"; CreateTRA($SERVICE); $CMS=SignTRA(); $TA=CallWSAA(base64_decode($CMS)); if (!file_put_contents("TAFE.xml", $TA)); {exit();} }} ?>
Y despues pregunto: la constante URL del servicio es esa? Votos: 0 - Link respuesta -
Fecha: 12-07-2019 10:38:37 Hola alguien sabe que es el error 500.
En algunos lugares dice que es un error de AFIP y en notros que es un problema del xml.
El textoqu me devuelve es:
(500)ERROR INTERNO DE APLICACION. FECAESolicitar
Saludos Votos: 1 - Link respuesta -
Fecha: 12-07-2019 11:12:31 Hola. Es un error del servidor de AFIP. Están todos en la misma situación. Votos: 1 - Link respuesta
-
-
Fecha: 15-07-2019 07:20:12 Chicos como va, al querer facturar me está tirando certificado expirado, que puede ser?
Muchas gracias Votos: 0 - Link respuesta -
Fecha: 15-07-2019 08:37:57 El certificad vence a los dos años.
Tenes que renovarlo en la afip.
Si pulsas botón derecho sobre el certificad y le das en abrir abajo te indica las fechas entre las que es valido.
Saludos Votos: 1 - Link respuesta -
Fecha: 15-07-2019 09:27:49 Hay un programa gratuito de administra.net, que genera los archivos csr y key para obtener el crt en el sitio de AFIP. Instala también el openssl, no importa si ya está instalado.
Lo comparto: Generador de clave Key y archivo csr Votos: 0 - Link respuesta -
Fecha: 15-07-2019 13:43:56 Hola Marcelo gracias, ya los volví a generar y hora me tiró problema con el psk7 ya estando funcionando, algo más cambió?
Gracias Votos: 0 - Link respuesta -
Fecha: 15-07-2019 14:05:19 Mariano creo que los archivos para AFIP hay que generarlo con 1024bits (el programa por defecto genera claves de 2048bits). Si alguien tiene más certeza sobre esto por favor cuenten, un error pkcs7 tiene que ver con la seguridad de la clave. Votos: 0 - Link respuesta
-
Fecha: 15-07-2019 14:12:01 Marcelo va con 2048.
Lo cambiaron en febrero del 2017 aproximadamente. Votos: 0 - Link respuesta -
-
Fecha: 15-07-2019 14:28:41 Gracias sigo dándole vueltas, ya dejo de tirarme ese error, ahora no me tira ningún error ya no se Votos: 0 - Link respuesta
-
Fecha: 15-07-2019 14:33:12 El certificado tarda en impactar? Gracias y saludos Votos: 0 - Link respuesta
-
Fecha: 15-07-2019 16:01:57 Mariano, los generas, lo autorizas y listo, es instantáneo. Saludos. Votos: 0 - Link respuesta
-
Fecha: 15-07-2019 19:24:02 gustavo gracias, pero estoy en algun problema no puedo terminar
pasos que sigo
1 - genero el privada key
genrsa -out privada.key 2048
2 -despues hago el archivo csr
req -new -key privada.key -subj "/C=AR/O=empresa/CN=empresa/serialNumber=CUIT 11111001111" -out pedido.csr
3 - voy a afip a WSASS Autoservicio de Acceso a WebServices
"Nuevo Certificado"-> pego el archivo pedido.csr y me da un archivo pem que me guardo
4 - voy a "Crear autorización a servicio" wsfe + padrones
5 - voy a "Administración de Certificados Digitales" y agrego alias, despues me bajo el archivo.
6 cual archivo debo usar para que funcione??
lamento volver a molestar se que me pueden ayudar estoy con una urgencia con todo esto, muchas gracias Votos: 0 - Link respuesta -
Fecha: 16-07-2019 03:08:54 Para renovar un certificado vencido es un paso diferente:
Con el archivo .CSR obtenido te dirigís a https://auth.afip.gov.ar/contribuyente/.
Ingresar al servicio Administración de Certificados Digitales y presionar el botón "ver" del Alias con el que ya venías trabajando.
Aparecerá una lista de certificados con su estado "Vencido". Presionar "Agregar certificado" al final de dicha lista.
La siguiente pantalla presentará el botón "Seleccionar el archivo", clickear sobre este y apuntar a tu .CSR, luego clickear "Agregar certificado" nuevamente.
Una vez agregado el alias se agregará al listado de certificados un nuevo certificado con estado "Válido". Presionar el ícono de "descargar" para bajar el certificado (archivo .CRT). Votos: 0 - Link respuesta -
Fecha: 16-07-2019 03:21:34 Te pongo un link a un video donde en una parte explica el proceso:
Fijate a partir de 3' 30" hasta 5' 30", el resto no importa.
Proceso renovación certificado vencido
Votos: 0 - Link respuesta -
Fecha: 16-07-2019 04:00:54 gracias por el comentario y la ayuda sigo sin poder destrabar el tema, me aparece
wsaa.class.php:104 ERROR generating PKCS#7 signature
no se que es lo que pasa.
Solucionado había metido yo mano, volví atras todo y funciona ok saludos Votos: 0 - Link respuesta -
Fecha: 20-08-2019 06:04:56 Hola a todos, tengo una duda con el IVA asignado a un cheque rechazado en una nota de débito. Por lo que tengo entendido, contablemente lleva un IVA "no gravado", cuyo código de afip es 1
Asi guardo en tablas y exporto archivo de alicuotas, pero a la hora de procesar el archivo en el citi/siap salta un error de código de alícuota, y para salvar el error se le pone un código 3
Queria confirmar con ustedes esta situacion
Ahora uso esta tablita de códigos:
Nombre, Código
=================
No Gravado, 1
Exento, 2
0%, 3
Y por lo que veo deberia reemplazarla por esta:
Nombre, Código
=================
No Gravado, 3
Exento, 3
0%, 3
Es decir, cualquier IVA que no influya en el precio/valor termina con código 3 (0%) Votos: 0 - Link respuesta -
Fecha: 03-09-2019 07:17:41 Alguien tiene algo respecto a Facturacion de Exporetacion? no logro conectar con el web service Votos: 0 - Link respuesta
-
Fecha: 08-10-2019 06:41:23 Hola gente, por un lado repito mi pregunta anterior (apenas arriba) y por otro pregunto sobre un tema relacionado.
Parece que el SIAP no procesa bien las alicuotas de las facturas B, las cuales tienen un código 1 (no gravado).
Acá ocurre lo mismo que la pregunta anterior? Debería ir un código 3 (0%) en lugar del 1? Votos: 0 - Link respuesta -
Fecha: 21-10-2019 04:07:58 Hola, alguien sabe si se puede hacer una factura electrónica en afip con el 100% de descuento ?
Estoy enviando facturas sin problemas, pero me llega este error de afip al intentar hacer una factura con 100% de descuento:
Error codigo: 10018, Error: Si ImpIva es igual a 0 el objeto Iva y AlicIva son obligatorios. Id iva = 3 (iva 0)
Estaba enviando esto:
$neto = 0;
$importeIva = 0;
$detalleiva = array(
'AlicIva' => array(
'Id' => 5,
'BaseImp' => round($neto, 2),
'Importe' => round($importeIva, 2)
)
);
Luego intento corregir el error y agrego esto:
if ($importeIva > 0) {
$detalleiva = array(
'AlicIva' => array(
'Id' => 5,
'BaseImp' => round($neto, 2),
'Importe' => round($importeIva, 2)
)
);
} else {
$detalleiva = array(
'AlicIva' => array(
'Id' => 3,
'BaseImp' => round($neto, 2),
'Importe' => round($importeIva, 2)
)
);
}
a lo que me llega ahora este error:
Error codigo: 10020, Error: El campo BaseImp en AlicIVA es obligatorio y debe ser mayor a 0 cero. Votos: 0 - Link respuesta -
Fecha: 31-10-2019 04:40:49 Matías Wernicke, como andas ? estoy utilizando el código que dejas mas arriba relacionado al servicio: ws_sr_padron_a5, y me arroja el siguiente error:
produccion
Failed to open wsaa.wsdl
Alguien sabe a que se debe ? Votos: 0 - Link respuesta -
Fecha: 01-11-2019 03:00:45 No. nunca me dio ese error. Empezaria por revisa los certificado Votos: 0 - Link respuesta
-
Fecha: 01-11-2019 03:04:29 Buen día, alguien implemento el utlizo el servicio para FACTURA DE CRÉDITO ELECTRÓNICA MiPyMEs (FCE) A.
Solo debería poner el código 201 que es el que le corresponde a este comprobante.?
Un cliente tiene que realizar una factura mayor a 120.000 y le da error por ley 27440.
Saludos Votos: 0 - Link respuesta -
Fecha: 20-11-2019 08:25:36 Buenas tardes, necesito ayuda con factura electrónica de crédito MyPyme.
Mi cliente tiene que facturar 109512.99 iva incluid y al solicitar el C.A.E. me devuelve
"(10192) 1 - No es un comprobante valido bajo el Regimen de la Ley n? 27.440"
Fui a la tbala de comprobantes y le agregue el comprobante 201 que es 'FACTURA DE CRÉDITO ELECTRÓNICA MiPyMEs (FCE) A'.
Cuando vuelvo a solicitar el cae me pide fecha de vencimiento a lo cuyal no hay problema y se la agrego y luego me dice devuelve
"(10162) Si el comprobante es MiPyMEs (FCE) es obligatorio informar opcionales. Ver metodo FEParamGetTiposOpcional()".
En mi rutina no tengo definida esa opción ni se cuales deben ser.
Si alguien me puede dar una mano se lo agradecería. Votos: 0 - Link respuesta -
Fecha: 18-12-2019 12:16:43 Alguien sabe como crear el CSR con openssl_csr_new con php?
desde una pagina sin tener que instalar openssl.
Gracias Votos: 0 - Link respuesta -
Fecha: 18-12-2019 13:32:27 Marcela, en este enlace tenes un programa gratuito que te genera las claves de AFIP.
PD.: ah, no había visto que pedías hacer desde PHP... Votos: 0 - Link respuesta -
Fecha: 18-12-2019 13:41:13 Matías, no se si lo tenés pero acá está el manual de desarrollador para FCE.
En el punto 4.9 habla de FEParamGetTiposOpcional Votos: 0 - Link respuesta -
Fecha: 19-12-2019 01:37:34 Matías, un cliente me llamó con el mismo error. Estuve averiguando y es una recategorización que la AFIP fue haciendo gradualmente desde mayo. Desde diciembre las facturas superiores a $100.000 pasan al régimen MiPymes (FCE) y cambia el código como vos indicaste. Lo del error 10162 tengo que investigar más. Votos: 0 - Link respuesta
-
Fecha: 19-12-2019 04:21:32 Con el método GetOptionsTypes se obtienen los nuevos datos que hay que informar para FCE:
$option_types = $afip->ElectronicBilling->GetOptionsTypes(); echo 'Los tipos de datos opcionales disponibles son:'; echo '<pre>'; print_r($option_types); echo '</pre>';
Ver desde el ID 2101, hay que informar CBU del emisor, que debe ser el CBU de la cuenta donde la empresa recibe el pago de la factura. Votos: 0 - Link respuesta -
Fecha: 19-12-2019 05:39:58 Ya lo logré:
Para los que usan el código de Ivan Muñoz, el item que se agrega al array informado es:
'Opcionales' => array( array( 'Id' => 2101, 'Desc' => 'Factura de Crédito Electrónica MiPyMEs (FCE) - CBU del Emisor', 'Valor' => $CBU, //CBU del emisor 22 cifras 'FchDesde' => intval($desde), //fecha de alta del CBU (puede ser la fecha actual) 'FchHasta' => NULL ) )
Si es nota de crédito, también hay que agregar al array informado:
'Opcionales' => array( array( 'Id' => 22, 'Desc' => 'Factura de Crédito Electrónica MiPyMEs (FCE) - Anulación', 'Valor' => 'N', // N o S dependiendo si la factura fue anulada antes de ser enviada al cliente (N) o fue anulada porque fue rechazada por el cliente (S) 'FchDesde' => intval($desde), //fecha de anulación (puede ser la fecha actual) 'FchHasta' => NULL )
Si la factura con nota de crédito anulada tenía comprobantes asociados (remitos), también hay que informarlos. Votos: 0 - Link respuesta -
Fecha: 31-01-2020 15:35:42 Hola a todos!! Parece que voy a estrenar los posteos del 2020....
Me topé con una situación que no se bien como se debe resolver, es sobre la generación de achivos REGINFO_CV_COMPRAS_CBTE y REGINFO_CV_COMPRAS_ALICUOTAS para el aplicativo "SIAp"
El caso es así:
Cargo un comprobante de compra que sea Factura A. Tiene dos items en el detalle: item A de 15 unidades a $89 con 0% de descuento. Aplica IVA de 21%. subtotal 1.615,35 y un item B de 1 unidad a $2800 con 10% de descuento. Aplica IVA exento. subtotal 2.520,00
En la parte de impuestos hay dos de ellos: percepciones de ingresos brutos Bs As por $254 e impuestos internos por $250
En el archivo REGINFO_CV_COMPRAS_CBTE que genero yo, en el campo correspondiente al "Código de operación" (posición 239) estoy poniendo un 0 pero en el mismo archivo de otro sistema que uso para comparar ponen una E
En el mismo sentido, en el archivo REGINFO_CV_COMPRAS_ALICUOTAS, en el archivo que genero yo , en el campo correspondiente a "Importe neto gravado" (posición 51) y para lo que sería el item B estoy poniendo esos $2520, y el otro sistema está poniendo 0
Creo que yo le estoy errando en el archivo de alicuotas, pero no termino de entender porque en el de comprobantes se pondría una E
Según la doc de AFIP....
Campo 20: Código de Operación.
Si la alícuota de IVA es igual a cero, este campo se deberá completar de acuerdo con la siguiente codificación:
Z- Importaciones de la zona franca.
X- Importaciones del Exterior.
E- Operaciones Exentas.
N- No gravado.
C- Operaciones de Canje
En caso contrario se completará con espacio.
Pero para ese registro yo cuento con 2 alicuotas, una de 21% y la otra exenta.....gana la que es 0?!?
Me podrán dar una mano para saber que valores van en cada archivo? muchas gracias! Votos: 0 - Link respuesta -
Fecha: 01-02-2020 04:13:56 En "Importe neto gravado" del segundo item debe ir 0, porque si es exento no hay importe gravado.
En cuanto al código de operación, yo uso E- (Operaciones Exentas) cuando el item es exento por el tipo de rubro (medicamentos por ejemplo) y N (No gravado) cuando el item es exento por otros motivos. Votos: 0 - Link respuesta -
Fecha: 01-02-2020 09:02:18 Que tal soy nuevo en la facturación electrónica, me gustaría saber como puedo obtener el Token y el Sign. Se lo agradecería mucho. Votos: 0 - Link respuesta
-
Fecha: 02-02-2020 13:38:36 Marcelo, muchas gracias por tu aporte!!
Entendido lo de las alicuotas, lo voy a poner en 0!
Pero me sigue quedando la duda en el de comprobantes....como seria? basta que exista un item exento para que toda la operación sea exenta?
Porque en el caso planteado tengo un item exento, sí....pero también tengo otro con 21%. Si fuera un registro por item sería más fácil, pero al ser un registro por operación, no entiendo como la información condensada termina en una E
Espero que pueda entenderlo! Votos: 0 - Link respuesta -
Fecha: 03-02-2020 13:21:27 Si, te entiendo. Yo hice para un cliente la generación de los archivos de texto para IVA y Alicuotas para el Siap, que es una droguería donde una factura puede tener items exentos (medicamentos) y otros no (cosméticos), pero no recuerdo ahora como lo está informando. Me tengo que fijar. Votos: 0 - Link respuesta
-
Fecha: 04-02-2020 06:22:33 Hola Matías, no termino de entender cuál es tu duda, si en el libro de iva o en el PDF de la factura. En ambos casos el IVA va en 0 con el id que le corresponde. En el libro de iva o en el txt de ventas, va un registro por cada iva de la factura agrupado, y en cada una el total de la factura. O sea que si 7na factura tiene dos items al 21 y al 0, haces dos líneas informando en cada una el IVA y en ambas pones el total general de la factura.
Saludos. Votos: 0 - Link respuesta -
Fecha: 10-02-2020 03:45:18 Hola Gustavo,
El ejemplo simplificado es el siguiente: tenes un comprobante de compras con dos items en el detalle. Para uno aplica un IVA de 21%, para el otro exento.
Al momento de generar el archivo REGINFO_CV_COMPRAS_CBTE, en la parte donde se pone "código de operación", aparentemente debe ir una "E".
Si yo tuviera un solo item exento lo entendería, lo que no entiendo es porque va una "E", si tengo más de un item, y encima tiene un iva de 21%.
Una de las preguntas que hago es si al menos una de los items está exento de iva...¿Entonces toda la operación es exenta? Votos: 0 - Link respuesta -
-
Fecha: 22-04-2020 02:33:30 Hola a todos! necesito aprender. ¿Alguien me puede decir cómo es el formato xml para enviar la peticion al WS de afip? es la primera vez que utilizo un web service soap
Por favor quien pueda brindarme asesoramiento y me diga cuanto me cobra para asesorarme. muchas gracias Votos: 0 - Link respuesta -
Fecha: 22-04-2020 08:00:10 Hola Leandro.
Te paso los enlaces al proyecto de Ivan Muñoz, que anda perfectamente y tiene las funciones para generar los XML:
https://github.com/AfipSDK/afip.php
Y toda la documentación de la AFIP, donde está como estan construidos los XML
http://www.afip.gob.ar/ws/documentacion/ws-factura-electronica.asp Votos: 0 - Link respuesta -
Fecha: 22-04-2020 08:00:10 Hola Leandro.
Te paso los enlaces al proyecto de Ivan Muñoz, que anda perfectamente y tiene las funciones para generar los XML:
https://github.com/AfipSDK/afip.php
Y toda la documentación de la AFIP, donde está como está construidos los XML
http://www.afip.gob.ar/ws/documentacion/ws-factura-electronica.asp Votos: 0 - Link respuesta -
Fecha: 11-08-2020 06:08:39 Estimados, buen día!
Estoy con el tema de "libro iva digital" y por lo que veo, el archivo es igual a los que se generaban antes para usar en el SIAP.
Ejemplo: LIBRO_IVA_DIGITAL_VENTAS_CBTE = REGINFO_CV_VENTAS_CBTE
Pero lo que antes andaba bien en el SIAP veo que ahora falla en la web de afip. Recibo el error "código de operación inválido".
Mi duda es qué valor debe ir en esa posición del registro. Es la posición 243 y se debe completar con un caracter "Según tabla Código de Operación". Hasta acá le estaba poniendo "0", pero no se debe ir espacio (" ") o un "5" (IVA 21%)
¿Me podrán dar un mano? no entiendo bien que valor debería ir en ese lugar... Votos: 0 - Link respuesta -
Fecha: 14-08-2020 11:31:01 Matias el valor de codigo de operacion es A -No alcanzado
(blanco) - no corresponde
C - Operacion Canje
D - Devolucion Iva Turistas Extr.
E - Operaciones exentas
N - No gravado
T - decreto 1043/16
X importaciones exterior
I importaciones Zona Franca
El (Blanco) es el habitual, lo usas para las operaciones gravadas Votos: 0 - Link respuesta -
Fecha: 14-08-2020 11:44:54 Tengo un problema.... cada tanto el archivo de token me lo da como erroneo y termino reponiendolo desde una copia ( arch. TA.xml y TRA.xml ). a alguno le esta pasando esto ? Votos: 0 - Link respuesta
-
Fecha: 14-08-2020 13:10:54 A mi muchas veces me dice que el usuario ya tiene un token valido.
Ahora estoy guardando el xml de respuesta y antes de volver a solicitar el token valido que la fecha y hora todavía sea valida y uso ese token.
Dura 12 horas.
Saludos Votos: 0 - Link respuesta -
Fecha: 14-08-2020 14:03:13 Gracias Carlos.
Antes de ver tu respuesta le puse un 5 y funcionó tanto en el siap como en la web de afip. Voy a probar con un espacio en blanco a ver si todo sigue funcionando bien. Votos: 0 - Link respuesta -
Fecha: 15-08-2020 01:35:32 Matias googleate este pdf que te va a servir :
Libro-IVA-Digital-Tablas-del-Sistema.pdf Votos: 1 - Link respuesta -
Fecha: 15-08-2020 04:44:19 Muchas gracias Carlos Ferro por el dato, acá les dejo el link directo al PDF Libro-IVA-Digital-Tablas-del-Sistema.pdf
Saludos a todos y buen código! Votos: 0 - Link respuesta -
Fecha: 25-08-2020 18:01:07 Hola gente, estoy usando el sdk de ivan muñoz, en homologacion funciona perfecto, ahora quiero pasar a produccion. en homologacion creaba el certificado con WSASS - Autogestión Certificados Homologación. para pasar a produccion voy a Administracion de Certificados Digitales. genero el certificado. pero me tira el error SOAP Fault: ns1:coe.notAuthorized Computador no autorizado a acceder al servicio. debo autorizar el servicio de factura electronica y consulta de padron A5 como lo hice en homologacion? en ese caso donde lo hago? Votos: 0 - Link respuesta
-
Fecha: 26-08-2020 03:18:06 Luciano, te queda el ultimo paso . entra en afip. Administracion de Relaciones con clave fiscal - adherir servicio - pinchas en AFIP . seleccionas Web services - factura electronica. en la primera vuelta
y en la segunda todo igual y seleccionas Servicio Consulta Padron A5
-y A FACTURAR !!! Votos: 0 - Link respuesta -
Fecha: 21-09-2020 09:57:01 Estan llegando notificaciones de AFIP de que va a cambiar el protocolo TLS (v 1.0 y 1.1)
Tienen idea de que se trata y de como va a afectar esto? Votos: 1 - Link respuesta -
Fecha: 21-09-2020 14:04:47 Marcela, los servidores de homologación están trabajando con TLS 1.2, asi que si podés probar en homologación y no te da errores, entonces no habrá problema cuando lo implementen en producción.
El cambio de versión en producción es para el 1/1/2021.
PD.: en https://ssltools.godaddy.com/views/certChecker podés chequear si el entorno tiene TLS 1.2
PD2.: también podés descargar CURL para windows (si es tu SO) desde https://curl.haxx.se/windows/, lo descomprimís en la carpeta c:\curl, y en la línea de comandos ejecutar c:\curl\bin\curl.exe -k --verbose --http2 --tlsv1.2 https://localhost Votos: 1 - Link respuesta -
Fecha: 21-09-2020 14:52:10 Gracias Carlos! lo pude hacer andar, no encontraba la opcion en la afip, se ve que ya estaba quemado! jajaja ya estoy facturando!! Votos: 0 - Link respuesta
-
Fecha: 22-09-2020 06:05:42 Bue día. Alguien mas tiene problemas para facturar. Me esta tardando un monton de otorgar el CAE. Entre tres y cuatro minutos.
Saludos a todos Votos: 0 - Link respuesta -
Fecha: 22-09-2020 06:58:53 Buen dia.. A mi tambien me da problemas en homologacion al menos.. Error interno de base de datos. Es error del servicio de AFIP. Votos: 0 - Link respuesta
-
Fecha: 22-09-2020 07:02:38 Si Matías, un cliente me acaba de avisar que le aparece un error de "tiempo de ejecución exedido", desde hoy 10:30 aproximadamente, en la línea
$results = $this->soap_client->{$operation}($params);
Que pertenece a la función:
/** * Sends request to AFIP servers * * @since 1.0 * * @param string $operation SOAP operation to do * @param array $params Parameters to send * * @return mixed Operation results **/ public function ExecuteRequest($operation, $params = array()) { if (!isset($this->soap_client)) { $this->soap_client = new SoapClient($this->WSDL, array( 'soap_version' => $this->soap_version, 'location' => $this->URL, 'trace' => 1, 'exceptions' => 0 )); } $results = $this->soap_client->{$operation}($params); $this->_CheckErrors($operation, $results); return $results; }Votos: 0 - Link respuesta -
Fecha: 22-09-2020 07:21:52 Incluso el servicio de "Comprobantes en línea" entrando por la web de AFIP está dando errores ocasionales, lo acabo de comprobar. Votos: 1 - Link respuesta
-
-
Fecha: 19-10-2020 13:50:28 Estimados, para consultar datos de una persona por DNI, me valía de esta web:
https://serviciosweb.afip.gob.ar/consultas/data/accion/ingreso/verificarUsuario.aspx?tipo=96&nroDocumento={NRO_DOCUMENTO}&sexo={SEXO}
Pero últimamente fallaba bastante seguido y hoy me está dando la sensación que la bajaron.
La pregunta que quiero hacerles es si hay alguna manera de consultar por DNI tal como se consulta un CUIT en el padron alcance 5 por ejemplo...( getPersona() en WSPA5 ) Votos: 0 - Link respuesta -
Fecha: 20-10-2020 10:30:31 Yo no encontré ninguna que funcione. Lo que hago es calcular el cuil y consultar por ese lado pero si nunca se anoto en la AFIP no trae nada. No lo logre ni con el A5, ni con el A10. Antes lo hacía con el A4 Votos: 0 - Link respuesta
-
Fecha: 14-11-2020 09:46:39 Hola para consultar por DNI lo hago con A13, y cuando uso CUIT/ CUIL llamo a A5. Como uso un solo casillero para consultar, me fijo la longitud y dependediendo de ella llamo a A5 o al padrón A13. Al armarse el CUIL/ CUIT trae a más de una perosna por lo que hay que ver que con un id se tendrá a más de una persona en idPersona[0] idPersona[1]
En padrón A13
public function getPersonaByDocumento($documento) { $params = $this->buildBaseParams(); $params->documento = $documento; try { $results = $this->client->getIdPersonaListByDocumento($params); } catch (Exception $e) { throw new Exception(WsAFIP::MSG_AFIP_CONNECTION . $e->getMessage(), null, $e); } $this->logClientActivity('getIdPersonaListByDocumento'); $idPersona = 0; if (isset($results->idPersonaListReturn) && isset($results->idPersonaListReturn->idPersona)) { $cant_id=count($results->idPersonaListReturn->idPersona); for ($i = 0; $i < $cant_id; $i++) { $idPersona = $results->idPersonaListReturn->idPersona[$i]; echo "- i: " . $i . " persona " . $idPersona; } } return $this->getPersona($idPersona); }Votos: 0 - Link respuesta -
Fecha: 16-11-2020 11:27:52 Buenas Tardes
Estada Caido el servidor de afip para factura electronica ?? Votos: 0 - Link respuesta -
Fecha: 17-11-2020 06:11:34 Hola, buenas tardes.
Me me esta dando el siguiente error
wsfev1.class.php:83 WSFE class. FaultString: HTTP Could not connect to host
Esto será por la implementación del nuevo protocolo tls1.2?
Alguna sugerencia?
Gracias Votos: 0 - Link respuesta -
Fecha: 17-11-2020 07:50:44 Hola Julio. Hoy tuve problemas con un cliente. No se exactamente que error le daba pero lo pude solucionar cambiando en el navegador chrom la opcion "TLS 1.3 Early Data", la puse en "enable".
Aclaro que este cliente tiene instalado PHP 5.2.6.
en mi PC con windows y con PHP 5.6.3 / php 7.0 me anda bien dejando la opcion en defolut.
Espero que te ayude.
Saludos Votos: 0 - Link respuesta -
Fecha: 17-11-2020 08:53:35 Hola Julio, si es la implementacion de tls1.2, deja afuera a los anteriores, yo tenia un servidor flojo de seguridad y me salio ese error, me cambie de nube a una con esos protocolos y listo. el http simple ya no lo acepta Votos: 0 - Link respuesta
-
Fecha: 17-11-2020 11:46:54 Hola buenas tardes.
Gracias por sus comentarios, aparentemente, el problema era de AFIP.
Ya esta funcionando, yo tengo implementada la factura electrónica con las herramientas de pablo, y nunca había tenido este problema por eso pensaba que podía ser el protocolo nuevo, pero a primera hora de la tarde mi cliente arranco sin problemas.
Estoy usando el WAMP Server con php 5.4.3 y tengo entendido que ya viene con este protocolo incluido. Votos: 0 - Link respuesta -
Fecha: 18-11-2020 09:08:02 Gracias María, acabo de notar que el método getIdPersonaListByDocumento() está listado en wsdl pero no en la documentación.
Voy a probar de esa manera y posteo como me fue.
Ya que estamos pregunto: alguien sabe cual es la diferencia entre todos los padrones que exiten? veo que hay alcance 4, 5, 10, 13 y 100 Votos: 0 - Link respuesta -
Fecha: 18-11-2020 10:33:05 Manuales:
Padrón Alcance 4
Padrón Alcance 5
Padrón Alcance 10
Padrón Alcance 13
Padrón Alcance 100
En la introducción de cada manual está la explicación para que sirve cada uno. Votos: 0 - Link respuesta -
Fecha: 19-11-2020 07:47:25 Buenas tardes a todos. Les adjunto un link donde figura el estado de migracion de los servidores de la
AFIP
https://www.afip.gob.ar/ws/documentacion/cronograma-TLS.asp
Espero que les sea de utilidad
Saludos Votos: 0 - Link respuesta -
Fecha: 20-11-2020 05:15:33 Hola Matías cuando empieces a implementar por ejemplo los get persona, te vas a dar cuenta que para un tipo de persona vas a necesitar unos datos que aparecen en un padrón y para otros en otro padrón.
Para los tipos de datos me hice una tabla a cual consulto y en un formilario voy analizando los tipos de datos que voy ingresando. Te paso la "idea" (no el código pq es un lio por las consultas de las tablas y requerimientos) de como lo fui implementando. El código lo copias y pegas en un archivo php y te muestra la idea. En la función algo es donde llamarías a getPersona(), en los selects el tipo de dato y en vez de usar un casillero texto para domicilio te convendría un datalist porque te puede tirar más de una dirección para los casos de que no son inscriptos y quizás debas modificar algún dato.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form name="f3"> Tipo: <select name=tipo_doc onchange="selecc_tipo()" > <option value="0" selected>Seleccione... <option value="1">CUIT <option value="2">LC <option value="3">LE <option value="4">DNI </select> Nro. Doc.: <input id="nro_doc" disabled="disabled"> Nombre: <input id="nombre"> </form> <script> function selecc_tipo(){ document.getElementById("nro_doc").disabled = false; } $('#nro_doc').keyup(function(e) { if($(this).val().length>3 ){ tipo = document.f3.tipo_doc[document.f3.tipo_doc.selectedIndex].value if(tipo==7){ document.getElementById("nombre").value = '<?php echo "DNI" ?> '; } else{ document.getElementById("nombre").value = '<?php algo(); ?> '; } } }); </script> <?php function algo() { echo "algo";} ?>Votos: 0 - Link respuesta -
Fecha: 01-12-2020 02:31:27 Buen dia. esta funcionando normalmente factura electronica? . me esta generando este error afipfev1/wsfev1.class.php:80 WSFE class. FaultString: HTTP Error Fetching http headers Votos: 0 - Link respuesta
-
Fecha: 01-12-2020 04:56:55 Buen dia A mi me esta dando erro 500.
Quise entrar a la pagina de ellos "comprobantesen linea" y no pude.
Me parece que esta con problemas de congestion.
Saludos Votos: 0 - Link respuesta -
Fecha: 01-12-2020 05:46:19 no, hoy presentó algunas fallas. algunos clientes mios me reportaron que el sistema informaba de errores al momento de facturar y tambien tiró error el sistema que usa la carnicería del barrio!! Votos: 0 - Link respuesta
-
Fecha: 01-12-2020 11:18:00 Lo que yo pude notar es un servicio de internet deficiente en muchos lados y eso puede provocar error 500 o error de carga. Votos: 0 - Link respuesta
-
Fecha: 01-12-2020 11:51:14 Todo lo relacionado a factura electronica, servicio web y comp. en linea daba un error de timeout similar, luego de unas 6 horas por suerte todo empezo a normalizarse. Algo se les cayo o no les salio bien ! Votos: 0 - Link respuesta
-
Fecha: 01-12-2020 14:02:05 Les consulto algo relacionado a los fallos de los servicios de AFIP...
Hoy muchos clientes me reportaron errores, y los que me pasaron alguna captura se veia que el error estaba en FECompUltimoAutorizado ([HTTP] Error Fetching http headers)
Cuando el servicio se restableció, uno de ellos me reportó un salto en la secuencia...la numeración de las facturas.
Estos saltos los he visto anteriormente y quisiera saber si es un problema común, si les ha pasado y si hay alguna solución para evitar que ocurran.
Gracias a todos Votos: 0 - Link respuesta -
Fecha: 02-12-2020 02:04:56 A mi me paso muy pocas veces pero creo que no se puede evitar.
La unica opcion para solucionarlo, seriaque que si el ultimo número otorgado es mayor a los del sistema, que no genere CAE y buscar a cual le corresponde ese numero (siempre y cuando tengas grabada la factura antes de solicitar el C.A.E.) Votos: 0 - Link respuesta -
Fecha: 02-12-2020 03:29:00 Mi sistema por ejemplo, aunque esté caido el sistema de AFIP, genera y guarda la factura sin CAE para autorizar en otro momento. Sin embargo si AFIP entrega una numeración no correlativa, es porque su sistema por algún fallo anuló esas facturas y no las toma en cuenta para un balance, ya me había pasado en algun momento. Votos: 0 - Link respuesta
-
Fecha: 09-12-2020 10:18:24 Buenas trades.
Alguin sabe algo del codigo QR para las facturas.
Es obligatorio?
https://www.afip.gob.ar/fe/qr/especificaciones.asp Votos: 0 - Link respuesta -
Fecha: 09-12-2020 11:32:43 Matías, por el ejemplo de factura electrónica que figura en esa misma página, que tiene incorporado el código QR y no el código de barras estandar, es evidente que aunque aun no sea obligatorio, dentro de un tiempo lo va a ser así que habría que ver de ir cambiando para adecuarse, antes que lo exijan como obligatorio.
PD.: Envié consulta a AFIP para saber como se va a implementar Votos: 0 - Link respuesta -
-
Fecha: 11-12-2020 05:57:58 Buen dia. Alguien mas tiene problemas con la facturación?
Saludos Votos: 0 - Link respuesta -
Fecha: 28-12-2020 03:39:16 Matías, me contestaron la consulta sobre el QR:
---------------------------------------------------------------------
Le informamos que la RG 4892 establece la obligación de incorporar en los comprobantes electrónicos tramitados según la RG 4291 y sus modificaciones, la identificación de un código de respuesta rápida “QR”, que codificará los datos indicados en el micrositio “Factura Electrónica” (https://www.afip.gob.ar/fe/qr).
Finalmente, tenga en cuenta que los sujetos que tramiten la autorización de emisión de comprobantes electrónicos mediante el intercambio de información basado en el “WebService”, la obligatoriedad de incorporar el código “QR” será conforme se indica a continuación:
Para responsables inscriptos en el impuesto al valor agregado que hayan efectuado operaciones (gravadas, exentas y no gravadas) declaradas en el impuesto durante el año calendario 2020 por un importe total neto de impuestos y tasas:
1.1. Superior a PESOS DIEZ MILLONES ($10.000.000.-): desde el 1 de marzo de 2021.
1.2. Superior a PESOS DOS MILLONES ($2.000.000.-) e inferior o igual a PESOS DIEZ MILLONES ($10.000.000.-): desde el 1 de abril de 2021.
1.3. Superior a PESOS QUINIENTOS MIL ($500.000.-) e inferior o igual a PESOS DOS MILLONES ($2.000.000.-): desde el 1 de mayo de 2021.
Para el resto de los responsables inscriptos en el impuesto al valor agregado, sujetos exentos ante dicho gravamen y pequeños contribuyentes inscriptos en el Régimen Simplificado (Monotributo): a partir del 1 junio de 2021.
Podrá consultar la normativa citada en “Biblioteca Electrónica” ingresando en nuestra página Web:
www.afip.gob.ar
. Adicionalmente, podrá consultar la misma en “Infoleg” accediendo a través del siguiente link:
http://www.infoleg.gob.ar/
N.G.B.
---------------------------------------------------------------------
Así que parece que hay que implementarlo ya que será obligatorio en algún momento del 2021. Votos: 0 - Link respuesta -
Fecha: 28-12-2020 05:03:47 Como ayuda adjunto script PHP que uso para generar el QR
Descargar
El formato es:index.php?d=[https://www.afip.gob.ar/fe/qr/?p=eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOjMwMDAwMDAwMDA3LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxLCJucm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE9MIiwiY3R6Ijo2NSwidGlwb0RvY1JlYyI6ODAsIm5yb0RvY1JlYyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQXV0Ijo3MDQxNzA1NDM2NzQ3Nn0=]&e=L&s=4&t=P
Ejemplo:
(clic derecho y abrir imagen en nueva pestaña)
Donde:
d=[] data y p= es el código de AFIP en base 64
e= nivel ECC L o M o Q o H (default M)
s= tamaño del módulo (default PNG:4 JPEG:8)
v= version 1-40 o Auto select si no se setea.
t= tipo de imagen J:jpeg , P: PNG Votos: 1 - Link respuesta -
Fecha: 28-12-2020 05:18:29 Muy buena info! Gracias Matías por ponernos al tanto de lo del QR y gracias Marcelo por las novedades.
Ya me voy poniendo a actualizar código. Votos: 0 - Link respuesta -
-
Fecha: 11-01-2021 01:59:04 Nueva info implementación código QR:
https://tn.com.ar/economia/2021/01/10/afip-las-facturas-electronicas-tendran-que-tener-un-codigo-qr-cuales-son-los-plazos-de-implementacion/ Votos: 1 - Link respuesta -
Fecha: 25-01-2021 12:27:34 Buenas tardes a todos. Alguno pudo implementar el codigo QR.
A mi me va siempre a la pagina https://www.afip.gob.ar/fe/qr/conceptos-generales.asp.
El codgo que utilizo es:
#################
### Codigo qr ###
#################
# Genero el nombre de la imagen ($filename) y lo guardo en la carpeta correspondiente
if($tipo == 1){$comprobante = 'FACTURA ' ;}
if($tipo == 2){$comprobante = 'CREDITO ' ;}
if($tipo == 3){$comprobante = 'DEBITO ' ;}
$comprobante .= $letra.'-'.$sucursal.'-'.$numero;
$filename = 'clientes/'.$empresa_base.'/facturas/'.$comprobante.'.png';
$fechaAFIP = substr($fecha_factura,6,4).'-'.substr($fecha_factura,3,2).'-'.substr($fecha_factura,0,2);
$cuitCliente = str_replace("-", "", $co_cuit);
str_replace("/", "-", $fecha_factura);
$httpAfip = 'https://www.afip.gob.ar/fe/qr/?';
$datos_afip = array("ver"=>1,"fecha"=>$fechaAFIP,"cuit"=>$cuit_facturador,"ptoVta"=>$sucursal,"tipoCmp"=>$tipo,"nroCmp"=>$numero,"importe"=>$totalQr,"moneda"=>$monAFIP, "ctz"=>$mon_cotiza,"tipoDocRec"=>$co_tipo_doc,"nroDocRec"=>$cuitCliente,"tipoCodAut"=>"E","codAut"=>$cae);
$jsonAfip = json_encode($datos_afip);
echo('Json AFIP '.$jsonAfip);
$afip64 = base64_encode($jsonAfip);
$codigoQr = $httpAfip.$afip64;
$errorCorrectionLevel = 'H'; // Calidad L,M,Q,H
$matrixPointSize = 3 ; // Tamaño del qr
//$filename = 'prueba_'.$tipo.'-'.$letra.'-'.$sucu.'-'.$numero.'.png';
QRcode::png($codigoQr, $filename, $errorCorrectionLevel, $matrixPointSize,2 );
Desde ya muchs gracias.
Saludos Votos: 1 - Link respuesta -
Fecha: 25-01-2021 13:00:04 A mi tampoco me toma la URL, asumo que quizá quede habilitado a partir del 1 de marzo que es cuando debería entrar en vigencia (en la nota que linkeó Marcelo están las fechas)
Incluso tampoco funciona el link de ejemplo que está en https://www.afip.gob.ar/fe/qr/especificaciones.asp Votos: 0 - Link respuesta -
Fecha: 25-01-2021 13:00:30 Matías, en las facturas generadas en "Comprobantes en línea" del sitio de AFIP también va a esa URl al escanear el código. Parece que aun no actualizaron el sistema para dirigir el QR correctamente, así que yo te diría que no te preocupes aún. Votos: 0 - Link respuesta
-
Fecha: 25-01-2021 13:09:42 Se puede ahorrar unas líneas en tu código, generando el json directamente al asignar las variables. Yo lo hago así:
$data = '{"ver":1,"fecha":$fechaQR,"cuit":$cuitQR,"ptoVta":$pvtaQR,"tipoCmp":$tcQR,"nroCmp":$nfc,"importe":$tfinalQR,"moneda":"PES","ctz":1,"tipoDocRec":80,"nroDocRec":$cuitQR,"tipoCodAut":"E","codAut":$cae}'; $data64 = "https://www.afip.gob.ar/fe/qr/?p=".base64_encode($data);Votos: 0 - Link respuesta -
Fecha: 25-01-2021 15:33:59 Es así te redirecciona, lo importante es que los datos se pasen correctamente en base_64 que es lo que hiciste aparentemente. Votos: 0 - Link respuesta
-
-
Fecha: 26-01-2021 11:39:53 Buenas tardes, adjunto la respuesta de la afip a mi duda.
Estimado/a
Segun lo tratado con las areas intervinientes se remite lo informado a efectos de brindar una solucion al presente requerimiento.
Atento a su consulta, según la RG 4892/2020 el comportamiento que usted informa es el adecuado, oportunamente se brindará mas información en el micrositio del organismo.
Saludos Votos: 0 - Link respuesta -
Fecha: 01-02-2021 10:49:53 Hola Matias..quise implementar tu codigo para generar la imagen del QR. Pero me faltaria la clase QRcode.
Por otro lado llamando a la url de AFIP te devuelve una imagen lista?
Gracias a todos Votos: 0 - Link respuesta -
Fecha: 02-02-2021 02:47:52 Hola Guuliano. La clase la podes descargar de http://phpqrcode.sourceforge.net/.
La AFIP no te devuelve ninguna imagen. La imagen la generas con la clase.
La url que se genera es para que terceras personas puedan comprobar que la factura es real
Saludos Votos: 0 - Link respuesta -
Fecha: 19-02-2021 11:08:32 Buenas tardes.
¿Alguno logro que el código QR no vaya a la página de especificaciones de la AFIP?.
Saludos Votos: 0 - Link respuesta -
Fecha: 19-02-2021 12:05:15 No Matías, sigue yendo a esa página, y supongo que será así hasta el 1ro de Marzo, cuando entre en vigencia con obligatoriedad para el primer grupo (los que facturaron más de $10 millones en el período 2020). Votos: 0 - Link respuesta
-
Fecha: 19-02-2021 13:18:28 Gracias Marcelo por la arespuesta.
No queda mas remedio que esperar al el primero de marzo y esperar que ande todo bien.
Por lo menos en mi sistema el Codigo ya se genra pero se empieza a imprimir el primero.
Si alguno lo necesita me lo pide.
Saludos Votos: 0 - Link respuesta -
Fecha: 19-02-2021 14:02:27 Matías, a mis clientes ya les hago imprimir el código, por la sencilla razón que las facturas realizadas por el sistema online (comprobantes en línea) de AFIP ya salen con código QR, es decir que la misma AFIP ya reemplazó el código de barras por el nuevo código. Votos: 0 - Link respuesta
-
Fecha: 23-02-2021 11:21:33 Siempre es mejor tener la libreria a mano, pero si a alguno le interesa una forma mas directa
y usa fpdf , puede usar
$pdf->Image("https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=".$data64.".png",5,251, 30,30);
( $data64 es la variable que uso Marcelo ) Votos: 0 - Link respuesta -
-
Fecha: 28-02-2021 17:00:38 Gracias Carlos.
Incluso esa API de google puede usarse para generar el QR sin necesidad de ninguna librería:
<img src="https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=<php echo $data64; ?>">
Votos: 0 - Link respuesta -
Fecha: 01-03-2021 01:56:31 Hasta donde se, esa librería de google para qr esta deprecada. No sería conveniente hacer uso de ella Votos: 0 - Link respuesta
-
Fecha: 01-03-2021 02:41:49 Estimados, como se estuvo hablando en el hilo, hoy debería ser el día en que entraba en vigencia lo del QR pero hasta el momento no ha sucedido....
¿Alguien tiene info al respecto? Votos: 0 - Link respuesta -
Fecha: 01-03-2021 02:53:46 No. Yo lo implemente a partir de hoy en todos mis clientes pero sigue dirigiendose a la pagina de "Conceptos Generales" Votos: 0 - Link respuesta
-
Fecha: 01-03-2021 09:31:18 Duda
¿Como me quedo tranquilo de que el QR que hice, esté bien hecho?
¿Que pasa si el QR no tiene la info correcta?
¿Que se supone que debe mostrar la web adonde apunta el Link? Votos: 0 - Link respuesta -
Fecha: 01-03-2021 11:29:36 Marco, me parece que todavia la AFIP no habilito el link. Por ahora a mi me manda a la pagina de la AFIP https://www.afip.gob.ar/fe/qr/conceptos-generales.asp.
Hoy a la mañana les envie un mail consultando y todavia no me contestaron.
El mismo mail se los habia mandado el 26/01/21 y me dijeron que ese era el comportamiento correcto.
Lamentablemente no nos queda mas que esperar. Votos: 0 - Link respuesta -
Fecha: 02-03-2021 08:12:51 Les hago otra consulta, a ver Uds como interpretan, los dos campos: Importe y Cotizacion, que mirando la ayuda de AFIP no me queda del todo claro.
Para Importe dice:
Decimal hasta 13 enteros y 2 decimales. Y el ejemplo es 12100
Mi duda aca es : ¿que representa el numero $12100.00 o $121.00?
Si mi importe es $15,200.50 ¿que pongo? ¿1520050? o ¿15200.50?
Y Para Cotizacion dice
Decimal hasta 13 enteros y 6 decimales. Y el ejemplo es 65
¿en este caso de la cotizacion, que es el 65 del ejemplo? ¿$65.00?
Osea que si la cotizacion es $83.65 yo pondria 83.65 (¿o pondria 8365?)
Y la ultima ... ¿el caracter decimal será punto o será coma ?
Gracias Votos: 0 - Link respuesta -
Fecha: 02-03-2021 09:58:46 Marco, hasta tu consulta yo estaba seguro que esos 12100, eran $121,00 ya que AFIP maneja numeros de 15 dígitos sin punto decimal para los datos del tipo "moneda": 13 para la parte entera y 2 para los decimales.
$121,00 en el libro iva digital, se completaría con ceros a la izquierda hasta llegar a los 15 dígitos, ejemplo 000000000012100
Pero como bien marcás, luego en la parte de cotización habla de 6 dígitos decimales y el ejemplo que da es 65, entonces mi interpretación anterior ya no sé si es válida.
Estuve pensando y creo que coincido con vos, que los 12100 en realidad representan $12.100, por lo que tus $15.200,50 deberían expresarse como 15200.50
Lo que tampoco queda claro es que separador decimal hay que usar, pero creo que deberia ser un punto.
Entre todos le podemos dar cabeza a este asunto! jeje
Quizá cuando AFIP se digne a habilitar la web del QR nos podremos dar una mejor idea porque alguna validación habrá entre los datos que uno pasa como parámetros en la URL contra lo que AFIP tiene registrado. Votos: 0 - Link respuesta -
Fecha: 02-03-2021 10:03:49 Buenas tardes a todos.
Marco, tus preguntas son muy importantes y yo no me atreberia a darte un respuesta segura. Por ahora estoy pasando el importe como lo saco de la base de dartos 0 sea con dos decimales 15200.50.
Adjunto respuesta de la AFIP ante la consulta que se dirige a la pagina de espesificaciones.
Consulta :
Buenos días. He implementado en mis clientes el código QR para las facturas electrónicas del WebService que según la página debería comenzar a implementarse en el día de hoy y siempre me manda a la pagina https://www.afip.gob.ar/fe/qr/conceptos-generales.asp.
Respuesta:
Segun lo tratado con las areas intervinientes se remite lo informado a efectos de brindar una solucion al presente requerimiento.
Atento a su consulta, el comportamiento que usted informa es el adecuado, por el momento hay que preparar el QR según las especificaciones que cita la RG 4892/2020. Cabe destacar que la información se debe encontrar en la url que el QR genera, la información esta dentro del QR en si, no en la respuesta del mismo.
Saludos. Votos: 0 - Link respuesta -
Fecha: 02-03-2021 11:18:24 Hola, decodifiqué el QR de unas facturas hechas online desde la página de la AFIP, lo hice en diciembre, por lo que chequié recién (ya no lo recordaba) y usan como separador de decimales el '.' (punto). Copio lo decodificado habiendo cambiado por '1' los datos de importancia (CUIT, nroDocRec, codAut ).
{"ver":1,"fecha":"2021-01-04","cuit":27111111118,"ptoVta":1,"tipoCmp":1,"nroCmp":3372,"importe":9356.8,"moneda":"PES","ctz":1,"tipoDocRec":80,"nroDocRec":20111111117,"tipoCodAut":"E","codAut":11111111111111})
otro ejemplo pero con monto redondo
{"ver":1,"fecha":"2020-12-30","cuit":27111111118,"ptoVta":1,"tipoCmp":6,"nroCmp":1452,"importe":2936,"moneda":"PES","ctz":1,"tipoDocRec":80,"nroDocRec":27111111119,"tipoCodAut":"E","codAut":11111111111111}
Ejemplo de factura sin declarar número de documento
{"ver":1,"fecha":"2020-12-29","cuit":2111111118,"ptoVta":1,"tipoCmp":6,"nroCmp":1450,"importe":4550,"moneda":"PES","ctz":1,"tipoCodAut":"E","codAut":11111111111111}Votos: 0 - Link respuesta -
Fecha: 02-03-2021 11:48:15 Deduzco por el ejemplo de factura de AFIP(Ejemplo factura) que el separador de decimales es una coma.
Y a la izquierda del total dice: "El total de este comprobante expresado en moneda de curso legal - Pesos Argentinos - considerando un tipo de cambio consignado de 65,000000 asciende a:", y en el string del QR el monto solo dice 65, así que en cotización los decimales no se ponen si es 0 (cero). Votos: 0 - Link respuesta -
Fecha: 02-03-2021 12:29:46 @MaríaTabeni. Buenisimo ese pensamiento lateral! Entonces queda confirmado que el separador de decimales es un punto y el valor del ejemplo es $12.100 (uso el punto como separador de miles)
Asumo que también que los 12100 se podría expresar como 12100.00
@MarceloMozzi Me parece que en el ejempo la coma obedece a la configuración regional y como manejamos los decimales en argentina Votos: 0 - Link respuesta -
Fecha: 08-03-2021 12:54:21 Estimados, creo que el redireccionamiento del QR no va a a suceder, al menos en el corto y mediano plazo.
Le escribí a AFIP y me dieron una respuesta similar a la que publicó @MatiasWernicke
Segun lo tratado con las areas intervinientes se remite lo informado a efectos de brindar una solucion al presente requerimiento.
Atento a su consulta, según la RG 4892/2020 y las especificaciones detalladas en ella, la información se debe encontrar en la url que el QR genera, la información esta dentro del QR en si, no en la respuesta del mismo, por ello para ver los datos, una aplicación debe decodificar la información de la URL que el QR le brinda. El sentido el este QR es que se puedan obtener sistemicamente los datos del comprobante para que un sistema distinto lo consuma y realice operaciones con el mismo. En principio, se redirige a la pagina de las especificaciones para orientar a los desarrolladores con la información necesaria para que sus aplicaciones puedan consumir los datos del QR. Es importante remarcar que en los comprobantes electrónicos el QR reemplaza al código de barras, dado que la RG 4892/20 eliminó del artículo 1° de la RG 1702/04 lo previsto respecto de Factura Electrónica.
Nosotros esperabamos que ese QR llevara a una URL que mostrara información sobre el comprobante, pero parece que la idea de AFIP es que ese QR sea leído entre distintas aplicaciones.
No entiendo entonces para que armar una URL con parametros codificados entonces... Votos: 0 - Link respuesta -
Fecha: 09-03-2021 02:30:48 Osea va a estar bueno ( en teoria ) para poder ser usado como un importador de comprobantes a los sistemas informaticos
Seria mas facil escanear el QR, que tipear los datos
Pero habiendo estas discrepancias, en el formato del mismo, y no siendo homologado por ellos, ese QR podria tener cualquier cosa, y hacer fallar al importador
:-( Votos: 1 - Link respuesta -
Fecha: 09-03-2021 02:56:42 Claro con un lector de codigos qr se pueden obtener todos los datos.
Esto es muy util para cargar facturas de compra a provedores en los sistemas de gestion y armar el libro de IVA. Votos: 0 - Link respuesta -
Fecha: 09-03-2021 03:15:26 Marco, así es, pienso lo mismo. Estamos esperando respuesta aun sobre el formato de los datos del json, decimales y demás (porque el instructivo no es claro al respecto) y mientras tanto nuestros clientes deben emitir las facturas con el QR, con la posibilidad que tengan errores. Es un poco desprolijo todo esto. Votos: 1 - Link respuesta
-
Fecha: 09-03-2021 03:53:52 Creo que la AFIP debe estar con problemas internos o muy recargada de trabajo ya que tampoco terminaron la migracion de los servidores por el tema de seguridad del TLS V1.2. que debia estar para el 01/01/2021
Si la idea realmente es como contesta la AFIP
....El sentido el este QR es que se puedan obtener sistemicamente los datos del comprobante para que un sistema distinto lo consuma y realice operaciones con el mismo.....
Entonces falta un monton de informacion en el QR. Tipos de IVA, impuestos internos, percepciones.....
Saludos a todos. Votos: 1 - Link respuesta -
Fecha: 19-03-2021 04:22:04 Hola buenos dias, estoy tratando de implementar la nota de credito usando el codigo del post, dado que la factura ya me funciono y bueno me lo requirieron.
Lo primero que el ultimo comprobante autorizado es 0 o me devuelve 0.
$nro = $wsfev1->FECompUltimoAutorizado(1,3 ); if($nro == false) { } else { $nro1 = $nro + 1; }
como veran le paso el tipo 3 de comprobante:
public function FECompUltimoAutorizado($ptovta, $tipo_cbte) { $results = $this->client->FECompUltimoAutorizado( array('Auth'=>array('Token' => $this->TA->credentials->token, 'Sign' => $this->TA->credentials->sign, 'Cuit' => (float) self::CUIT), 'PtoVta' => $ptovta, 'CbteTipo' => $tipo_cbte)); $e = $this->_checkErrors($results, 'FECompUltimoAutorizado'); return $e == false ? $results->FECompUltimoAutorizadoResult->CbteNro : false; }
De hecho para la factura A por ejemplo uso el mismo codigo solo que con el valor "1" obviamente.
Pero el error que tengo es: Si el comprobante es Debito o Credito, enviar estructura CbteAsoc o PeriodoAsoc.
En que momento debo pasar el array:
$regfeasoc['Tipo'] = 1; //91; //tipo 91|5 $regfeasoc['PtoVta'] = 1; $regfeasoc['Nro'] = 1074;
¿el nro es el CAE o el nro de factura? Votos: 0 - Link respuesta -
Fecha: 19-03-2021 04:52:06 Hola Giuliano.
Si no me equivoco es el numero de factura.
A mi ese error me da en prueba pero en produccion anda bien sin pasarle el numero de comprobante. Votos: 0 - Link respuesta -
Fecha: 19-03-2021 05:17:10 Matías, si no me equivoco, cuando se hace una nota de crédito de una factura emitida por facturación electrónica (sea tanto por webservices como por el sitio AFIP), obligatoriamente hay que ingresar el comprobante asociado, es decir el número de factura. El instructivo dice:
En la nota de débito o crédito que se emita, tendrán que informarse los datos del documento que se ajusta considerándolo como "comprobante asociado" al que se está emitiendo.
https://www.afip.gob.ar/genericos/guiavirtual/consultas_detalle.aspx?id=6490326 Votos: 0 - Link respuesta -
Fecha: 19-03-2021 05:56:38 Ok.. Gracias a los dos. Otra cuestion es si la factura se anula al 100 por ciento o si se puede anular 1 item por ejemplo. Votos: 0 - Link respuesta
-
Fecha: 19-03-2021 07:58:14 Si marcelo tenes razon pero en produccion no me da error.
Yo no lo asocio a ninguna y por ahora no da error. Lo correcto seria asociarla.
Giuliano nunca probe hacer notas de credito asociandolas pero calculo que no es obligatorio anular la factura completa. Tambien puede ser que la nota de credito sea por diferencia de precio y podria abarcar mas de una factura. Votos: 0 - Link respuesta -
Fecha: 19-03-2021 08:14:21 Giuliano, a pesar de lo que dice el instructivo, mis clientes con mi sistema hacen notas de crédito por items "sueltos" de una factura, sin asociar la factura, y AFIP la aprueba igual, tal como dice Matías, así que debe ser un comportamiento aceptable. Votos: 0 - Link respuesta
-
Fecha: 19-03-2021 09:00:20 Bueno entonces lo probare en produccion como dijiste mas arriba.
El caso es que probe en la web de afip y te pide si o si un comprobante asociado.
Lo q si hay q informar son los array de IVA.
Muchas gracias Votos: 0 - Link respuesta -
Fecha: 19-03-2021 09:25:15 Giulano, la nota de crédito debería tener asociada una factura.
Creo que el WS valida eso, pero aunque no lo hiciera, por un tema de prolijidad en tu sistema debería estar dicha asociación.
Y en cuanto a la anulación total o parcial, tené en cuenta que a AFIP no le informas detalle (no hay items), sino montos totales de operación. Por lo que podrías tener los mismos montos totales que la factura asociada (100%) o montos menores (asumiendo que es por un "item" suelto) Votos: 1 - Link respuesta -
Fecha: 20-03-2021 14:03:15 Buenas , convendría echaran un ojo a la Resolución General AFIP N° 4540/2019, que entro en vigencia
en julio 2020 (Resolución General 4701/2020) , sobre todo a este articulo
ARTÍCULO 3°.- Las notas de crédito y/o débito deberán cumplir con los requisitos y las formalidades exigidos para los comprobantes emitidos por las operaciones originarias. Asimismo serán emitidas únicamente al mismo receptor de los comprobantes originales para modificar las facturas o documentos equivalentes generados con anterioridad, consignándose el número de las facturas o documentos equivalentes asociados o el período al cual ajustan, referenciando los datos comerciales consignados o vinculados a los comprobantes originales, de corresponder (vg. artículos comercializados, notas de pedido, órdenes de compra u otro documento no fiscal de ajuste emitido entre las partes, etc.).
No obstante lo indicado en el párrafo precedente, cuando la nota de débito o crédito se emita por un ajuste vinculado a diferencias de precio y/o cantidad entre lo pautado por las partes, lo documentado en el comprobante original y lo efectivamente entregado, la citada nota de crédito y/o débito deberá identificar individualmente a la factura o documento equivalente que ajusta, referenciando asimismo, los datos comerciales consignados o vinculados a los comprobantes originales conforme lo indicado en el párrafo anterior.
Las respectivas notas de crédito y/o débito deberán emitirse dentro de los QUINCE (15) días corridos desde que surja el hecho o situación que requiera su documentación mediante los citados comprobantes.
****Este ultimo párrafo es importante también, porque indica que afip no estaría reconociendo las que se pasen de fecha, en pocas palabras no se pueden tomar el iva que intentan anular ****** Votos: 1 - Link respuesta -
Fecha: 20-03-2021 17:51:39 Gracias Carlos.
Evidentemente la normativa es estricta, y los que permitimos la nota de crédito sin informar el comprobante asociado estamos en falta, pero lo que no entiendo es, siendo un item obligatorio, que la AFIP apruebe, genere el CAE y no entregue un mensaje tipo "No fue informado el comprobante asociado". Votos: 0 - Link respuesta -
Fecha: 21-03-2021 02:42:29 Marcelo, algo le debes estar enviando que confunde al sistema de afip, en mi caso sino completo la NC con la factura asociada no me da CAE Votos: 0 - Link respuesta
-
Fecha: 21-03-2021 04:33:01 Carlos buen dia. En mi caso en prueba no me funciona si no paso la factura asociada. En produccion si funciona.
Por otro lado la normativa de la AFIP (Artiulo 3) dice que debe figurara el numero de factura (... consignándose el número de las facturas o documentos equivalentes asociados o el período al cual ajustan,....) . No hay dentro nada, por lo menos que yo encuentre, que obligue a poner el numero de factura en la informacion digital. Por lo mencionado en el articulo me parece si hay que mencionarla en el texto.
Por otro lado en el sistema de AFIP (Comprobantes en Linea) he realizado notas de credito sin poner el numero de factura asociada.
Lamentablemente no hay normas claras y hay muchos espacios a la interpretacion de cada uno.
Saludos Votos: 0 - Link respuesta -
Fecha: 21-03-2021 12:13:08 Matías, en ningún caso quise decir que tu sistema esta cometiendo un error, sino que lo aborda de alguna forma que supera ese control.
El art.3 habla en realidad del contenido (justificación) que el contribuyente debe indicar al confeccionar el documento dejando en claro por ej. si es una devolución, un error o un descargo/recargo financiero y que documentación o periodo refiere o ajusta . Hay que leerlo en sentido amplio ya que instruye sobre cuestiones de facturación pero en realidad apunta a consecuencias impositivas, por ello lo mas preocupante para mi son esos 15 días corridos
A nivel del servicio web lo único que veo es que tenemos es ese array para listar los documentos afectados que no nos deja mucho campo de implementación.
Saludos y gracias porque siempre estas aportando y avisando de temas importantes Votos: 0 - Link respuesta -
Fecha: 27-03-2021 12:00:19 Una pregunta: ¿Alguien hizo funcionar o conoce como cargar en PHP la ddl EpsonFiscalInterface.dll de las impresoras de 2da generación de Epson, como la TM-T900?, yo ya lo hice en VB, pero quería probar en PHP ya que ultimamente he estado desarrollando los sistemas como intranet, en PHP, que se hace estéticamente mas fluido y funciona mejor en red. Votos: 0 - Link respuesta
-
Fecha: 28-03-2021 04:31:58 Marcelo
No se si ya lo viste ( yo no hice nada, pero por otro motivo me cruce con esto), revisa este link, a lo mejor te da ideas, talvez, no sea lo ideal php, a lo mejor lo deberias pensar como javascript que tenes a mano la salida usb local
https://es.stackoverflow.com/questions/286263/imprimir-desde-php-a-impresora-fiscal-epson-tm-h6 Votos: 0 - Link respuesta -
Fecha: 28-03-2021 05:34:42 Gracias Carlos. Si, entre todo lo que busqué vi ese post de stackoverflow.
Podría ser en Javascript también, por supuesto.
El tema es que en realidad se como cargar la dll en PHP, lo que no se es como instanciarlo y acceder a los comandos (AbrirComprobante, ImprimirItem, etc). Votos: 0 - Link respuesta -
Fecha: 09-04-2021 05:54:28 Hola Carlos. Quería hacerte una pregunta ya que vos lidiaste con este tema.
Hasta ahora, a mi cliente le dejaba hacer nota de crédito sin asociar factura (la verdad no se porqué, ya que el procedimiento correcto es asociar factura), pero desde hace unos días ya no le deja, le pide si o si asociar la/s factura para la nota de crédito.
La pregunta es: ¿serías tan amable de decirme como asocias una factura a una nota de crédito?
El código que uso para obtener el CAE es:
$data = array( 'CantReg' => 1, // Cantidad de items del/los comprobante/s 'PtoVta' => $puntoVenta, // Punto de venta 'CbteTipo' => $tpivaVta, // Tipo de comprobante (ver tipos disponibles) 'Concepto' => 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios 'DocTipo' => 80, // Tipo de documento del comprador (ver tipos disponibles) 'DocNro' => $cuitVta, // Numero de documento del comprador 'CbteDesde' => $last_voucher+1, // Numero de comprobante o numero del primer comprobante en caso de ser mas de uno 'CbteHasta' => $last_voucher+1, // Numero de comprobante o numero del ultimo comprobante en caso de ser mas de uno 'CbteFch' => intval(date('Ymd')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo 'ImpTotal' => $total, // Importe total del comprobante - 267.9 'ImpTotConc' => $ngraVta, // Importe neto no gravado - 0 'ImpNeto' => $gravVta, // Importe neto gravado - 150 'ImpOpEx' => $exento, // Importe exento de IVA - 78.6 'ImpIVA' => $ivaVta, //Importe total de IVA - 31.5 'ImpTrib' => $dgrVta, //Importe total de tributos - 7.8 'FchServDesde' => NULL, // (Opcional) Fecha de inicio del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchServHasta' => NULL, // (Opcional) Fecha de fin del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchVtoPago' => NULL, // (Opcional) Fecha de vencimiento del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'MonId' => 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'Tributos' => array( // (Opcional) Tributos asociados al comprobante array( 'Id' => 99, // Id del tipo de tributo (ver tipos disponibles) 'Desc' => 'DGR', // (Opcional) Descripcion 'BaseImp' => $tgrav, // Base imponible para el tributo 'Alic' => $alicuota, // Alícuota 'Importe' => $dgrVta // Importe del tributo ) ), 'Iva' => array( // (Opcional) Alícuotas asociadas al comprobante array( 'Id' => 5, // Id del tipo de IVA (ver tipos disponibles) 'BaseImp' => $gravVta, // Base imponible 'Importe' => $ivaVta // Importe ) ) );Votos: 0 - Link respuesta -
Fecha: 09-04-2021 06:03:45 ¿Puede ser que sea así? (a continuación de IVA):
'Opcionales' => array( array( 'CbteTipo' => $tipoasoc, 'CbteFch' => intval($feac), 'PtoVta' => $puntoVenta, 'Nro' => $nrocbte, 'Cuit' => $CUIT ) )
En ese caso, ¿el "Nro" es el CAE o el número de factura asociado? Votos: 0 - Link respuesta -
Fecha: 09-04-2021 07:33:59 Hola Marcelo, es así como pusiste el código. Nro, es el número de comprobante (solo el número sin el número de punto de venta). $CUIT, // (es Opcional) Cuit del emisor del comprobante. Votos: 0 - Link respuesta
-
Fecha: 09-04-2021 07:58:20 Gracias María. ¿Incluyendo la leyenda 'opcionales' en el array, no?
Otra duda: en las notas de crédito, al agregar el comprobante asociado, la nota de crédito debe ser por el mismo importe del comprobante asociado, o puede ser por un importe parcial (algún producto) de ese comprobante? Votos: 0 - Link respuesta -
Fecha: 09-04-2021 14:31:34 Marcelo: Con tipo, pto de venta y nro alcanza, el cuit y la fecha del comprobante son para el caso de facturas de crédito (cod. 201)
El caso que para mi cuando llegaba con el array vacio al pedido de Cae no me funcionaba, así que hice algo muy trucho,... analizo el tipo de comprobante y le hice un case, así si es 3,8 lo envío con el array y sino no ( feo, pero funciona )
Vos podes hacer notas de crédito parciales, eso no es problema, pero a nivel documental ( Afip. impositivo me refiero ) debes aclarar bien que cuestiones del documento están afectados a tu NC, porque siempre tratándose de disminución de ventas la presunción es que estas evadiendo (y en AFIP sos culpable aunque demuestres lo contrario ). lo ideal si podes es hacerla por el total y empezar de nuevo Votos: 0 - Link respuesta -
Fecha: 10-04-2021 03:33:05 Gracias Carlos. Si, pensaba lo mismo, que tienen que hacer la nota de crédito por el total del comprobante asociado, porque sino es para problemas. Les voy a explicar algo como lo que dijiste, que la forma correcta para AFIP es esa, porque incluir solo ítems parciales puede provocar más adelante algún reclamo de AFIP. Votos: 0 - Link respuesta
-
Fecha: 19-04-2021 11:55:56 Una consulta por si a alguien le pasó: Al autorizar la factura, en ocasiones me saltea un número, por ejemplo hoy me llamaron para avisarme que de la factura 1799 saltó a la 1801. Cuando hago una consulta a AFIP sobre la factura 1800, es una copia de la 1801, es decir que la duplica, pero no encuentro en el PHP nada que haga ese proceso. ¿A alguien le pasó? Votos: 0 - Link respuesta
-
Fecha: 19-04-2021 12:53:34 Si, el problema es que se corta la comunicacion (o la afip no responde en tiempo) y no te llega el C.A.E. ni el numero de factura. Yo genero la factura perdida y genero una nota de credito con la opcion de consultar comprobantes el Metodo es FECompConsultar.
$results = $this->client->FECompConsultar(
array('Auth' => array('Token' => $this->Token,
'Sign' => $this->Sign,
'Cuit' => $this->CUIT),
'FeCompConsReq' => array('PtoVta' => $PtoVta,
'CbteTipo' => $TipoComp,
'CbteNro' => $nro)
)
Saludos Votos: 0 - Link respuesta -
Fecha: 19-04-2021 13:01:02 Hola Marcelo, lo que puede estar sucediendo es que entre que le das generar la factura y que ese botón se convierta en por ejemplo imprimir factura, haya un lapso en el que pueda tomarte dos click (uno instintivamente clickea más de una vez si siente que tarda) y te genere dos facturas iguales pero con distinto cae, te crea la factura por ejemplo 10001 y factura 10002. Si este este es el caso te conviene usar un flag que se active con el primer click. haciendo que el botón quede bloqueado.
Para que te suceda lo que dice Matías alguien le tiene que estar pasando otro número de comprobante. si enviás generar comprobante 10001 ("numeroComprobantedesde" => $ultimocomp, // $CbteDesde, Debe estar sincronizado con el último número de AFIP "numeroComprobantehasta" => $ultimocomp, // $CbteHasta, Debe estar sincronizado
) No debe generarte el 10002 sin que se lo pidas mediante otro click que te traiga el último número de comprobante (10001).
Votos: 0 - Link respuesta -
Fecha: 19-04-2021 13:52:04 María, en principio esa fue una de las sospechas, e hice efectivamente eso, al hacer clic en el botón "Autorizar", lo primero que hace la función javascript es desabilitar el botón hasta que finaliza totalmente en proceso. Pero volvió a suceder, así que descarté esa posibilidad.
Lo del número de comprobante se genera una sola vez con:
$last_voucher = $afip->ElectronicBilling->GetLastVoucher($puntoVenta,$tpivaVta);
y dentro del array pongo:
'CbteDesde' => $last_voucher+1, // Numero de comprobante o numero del primer comprobante en caso de ser mas de uno 'CbteHasta' => $last_voucher+1, // Numero de comprobante o numero del ultimo comprobante en caso de ser mas de uno
Todo ese proceso no se repite, sino que AFIP genera internamente (quizás por algún problema como el que menciona Matías) otra factura y automáticamente asigna el siguiente número de factura. Votos: 0 - Link respuesta -
Fecha: 19-04-2021 14:09:26 Si la creación de la factura se hace por ejemplo por pasos como en la afip, donde el último paso es confirmar los datos cargados para su creación, este último paso tiene la opción de refresh? Si salís del la última opción de confirmar podes volver a ese paso? Si eso sucede la opción de deshabilitar queda anulada. El cliente puede sentir que se le colgó y refrescar la página o el paso. Si esto es posible vuelve aparentemente al mismo punto pero con un nuevo número de comprobante. Votos: 0 - Link respuesta
-
Fecha: 19-04-2021 14:27:43 No María, no hay un refresh. En mi sistema todo el proceso queda bloqueado sin opción de interacción con el usuario hasta que llega respuesta de AFIP, justamente para hacerlo "a prueba de tontos" (siempre está el que quiere apretar lo que no debe) ;-) Votos: 0 - Link respuesta
-
Fecha: 19-04-2021 14:59:03 Si no hay forma de volver al paso anterior, no hay para refresh, no hay posibilidad de doble click. nada que genere una recarga de la página por error que anule el deshabilitado, no queda otra que sea la AFIP, aunque raro porque para que genere el comprobante uno debe enviarle el número de comprobante a generar y ellos envian la respuesta, es decir hay una respuesta que no envian o se sobre escribe antes de llegar a leerla. Votos: 0 - Link respuesta
-
Fecha: 19-04-2021 15:08:50 Si, es algo raro, pero me queda el "aliciente" (por decirlo de alguna manera) que Matías confirma que a el también le sucede y que no es un error en mi proceso, que lo revisé muchas veces. Así que para "corregirlo", hasta que sepa el trasfondo real (¿problema de comunicación? ¿bug del webservice? etc) le dije a mi cliente que genere la factura solo en el sistema con el número faltante, el CAE y fecha de vencimiento (trayéndolos de AFIP) y después una nota de crédito. Votos: 0 - Link respuesta
-
Fecha: 19-04-2021 15:46:04 lo del salto en la secuencia, creo que es algo "esperable" ya que nos ha pasado a varios...dentro y fuera de este foro
a mi entender, en AFIP se genera el comprobante, pero por alguna razón el servicio no devuelve CAE ni tampoco error aparentemente (***)
en mi caso, el comprobante queda a la espera de otro intento y al hacerlo puede volver a "fallar" o finalmente obtener CAE
el problema es que en cada intento/fallo se siguen generando comprobantes, y, ante esta situación hay que dar aviso al contador de la empresa para que haga las correcciones pertinentes porque se estan generando N comprobantes iguales
(***)me queda por ver si en la respuesta hay alguna observacion que no esté capturando correctamente. hace un tiempo me comuniqué con la mesa de ayuda por este tema y para variar no me dieron ninguna respuesta concreta y me pidieron los datos de envio y los de respuesta. entonces lo que hice fue dejar un log de estos eventos a la espera que vuelva a haber un salto en la secuencia, detectarlo y tener a mano los mensajes de ida y vuelta para enviarle la info a afip a ver que me dicen Votos: 0 - Link respuesta -
Fecha: 19-04-2021 16:06:56 Claro Matías, ahí está el bucle que genera el nuevo comprobante. Eso sí suena lógico. Votos: 0 - Link respuesta
-
Fecha: 19-04-2021 16:58:35 Si se establece la conexión, se consulta el último número de comprobante al cual se le suma 1, este número se guarda en la base de datos y ahí se cierra la conexión para establecer una nueva conexión para solicitar la factura con el número de comprobante guardado, calculo que para el siguiente intento tirará error porque ese número de comprobante ya se encontraría generado. De quedar en reintentos sería sobre un mismo número de comprobante, Podría ser una posible solución? Sería un proceso un poquito más lento. Votos: 0 - Link respuesta
-
Fecha: 19-04-2021 17:08:09 Podría ser una solución para otro tipo de fallo.
En mi caso lo que sucede es lo siguiente: el operador crea la factura, pide autorización a AFIP (no hay bucles de ningún tipo, la autorización se pide por única vez), y si da error, se vuelve a pedir. En estos casos que se saltea el número no salta ningún error, AFIP devuelve el CAE normalmente y un número de factura salteado. Al hacer un chequeo en AFIP, el número de factura que salteó tiene exactamente los mismos datos de la factura que autoriza (solo que con un CAE y número diferente), es decir procesa dos autorizaciones en una sola llamada, y cuando eso pasa se demora más de lo normal.
No es algo que sucede todo el tiempo, pero si lo suficiente para que el cliente se moleste. Votos: 0 - Link respuesta -
Fecha: 26-04-2021 06:55:57 Buen dia. Alguien mas tiene problemas para generar facturas? aproximadamente desde las 11:00 no puedo generar facturas.
Saludos Votos: 0 - Link respuesta -
Fecha: 26-04-2021 12:01:44 Matías, esta mañana no tuve quejas de ningún cliente al respecto. Recién hice una prueba y el webservice de AFIP, por lo menos ahora, está funcionando. Votos: 0 - Link respuesta
-
Fecha: 26-04-2021 12:07:26 En esta página tenés los accesos a los webservices para ver si están online:
https://sites.google.com/site/facturaelectronicax/Home/test-conexion Votos: 0 - Link respuesta -
Fecha: 26-04-2021 13:10:12 Gracias Marcelo. Yo encontré esta página que te testea cualquier URL (dejo link) y te avisa por mail si hay problemas. Con el usuario gratis podés testear cada minuto.
https://uptimerobot.com/
A mí me llamaron tres clientes.
Y si estuvo caído o muy lento desde las 10:30 hasta las 13:00 aproximadamente. Votos: 0 - Link respuesta -
-
Fecha: 02-05-2021 06:24:23 Colegas, no logro autorizar las notas de crédito, me sale contínuamente el error:
(10197) Si el comprobante es Debito o Credito, enviar estructura CbteAsoc o PeriodoAsoc.
Probé con:
'Opcionales' => array( array( 'CbteTipo' => $asoctipo, 'CbteFch' => intval($asocfecha), 'PtoVta' => $asocpvta, 'Nro' => $asocfac ) )
Y también con:
'CbteAsoc' => array( array( 'Tipo' => $asoctipo, 'PtoVta' => $asocpvta, 'Nro' => $asocfac ) )
Votos: 0 - Link respuesta -
Fecha: 02-05-2021 07:00:57 Ahi lo logré, todos los items tiene que ir como int:
'CbtesAsoc' => array( // (Opcional) Comprobantes asociados array( 'Tipo' => intval($asoctipo), 'PtoVta' => intval($asocpvta), 'Nro' => intval($asocfac) 'Cuit' => floatval($cuitVta), //opcional ) )
Votos: 0 - Link respuesta -
Fecha: 04-05-2021 05:37:29 A un cliente le pasó que no puede generar facturas "A", por lo que temporalmente le estoy forzando a emitir facturas "M"
El mensaje de error que recibía es: NO AUTORIZADO A EMITIR COMPROBANTES - LA CUIT INFORMADA NO SE ENCUENTRA AUTORIZADA A EMITIR COMPROBANTES CLASE 'A'
Ese error es el código 10000
Pero por lo que veo en la documentacion, ese código se presenta en diversos escenarios, no necesariamente para el caso que les estoy comentando.
Mi idea es hacer algo transparente para el usuario, que siga haciendo facturas A, pero que en el servidor haya un proceso que la cambie a M....y el día de mañana cuando su situación de regularice todo siga su flujo normal.
Mi pregunta es, hay algún método (ya sea en wsfe u otro ws) que me permita saber en que situación está un responsable inscripto, y, de esa forma pueda determinar si una A la debo convertir en M antes de llamar a FECAESolicitar()? Votos: 0 - Link respuesta -
Fecha: 04-05-2021 08:48:14 Matías, en "Comprobantes en Línea" de AFIP, ¿tampoco le deja? Para saber si es un problema fiscal del cliente, o de webservices. Votos: 0 - Link respuesta
-
Fecha: 04-05-2021 10:40:54 Matias a mi y ame psso en tres clientes y no encontre nada que lo pueda hacer automatico. No se que pasa si queres hacer una "M" pudiendo haceruna "A" ya que la forma seria probar y si te rebota la A probar la M.
Por otro lado tene en cuenta que hay muchas empresas que no quieren recibir factura "M" ya que deben realizar la retencion por el 100% del I.V.A. y los otros impuestos al momento de pagar. Para muchos es una complicacion. Votos: 0 - Link respuesta -
Fecha: 21-05-2021 06:18:46 Buenas tardes, queria saber si se pueden enviar facturas con fechas anterior a 5 dias.
Al enviar una me da este error:
Error codigo: 10016, Error: Campo CbteFch Debe estar comprendido en el rango N-5 y N+5 siendo N la fecha de envio del pedido de autorizacion para 1 - Productos
Muchas gracias. Saludos Votos: 0 - Link respuesta -
Fecha: 21-05-2021 06:21:36 Hola!!
Estoy tratando de agregar el período asociado, ya sumé los comprobantes asociados (mi cliente requiere las dos opciones) sin problemas pero al parecer hay algo más en mi estructura ya que no me la reconoce. Me podrían ayudar con un ejemplo?
Esta es una de las tantas formas que he probado:
$this->Request['PeriodoAsoc'] = array('FchDesde' => '20210501', 'FchHasta' => '20210510');
Pero sigue tirandome el error: ERROR L220210520Si el comprobante es Debito o Credito, enviar estructura CbteAsoc o PeriodoAsoc.
Gracias!! Votos: 0 - Link respuesta -
Fecha: 21-05-2021 07:21:02 Hola, me siento confusa con tu consulta, 'FchDesde' y 'FchHasta' son para los cromprobantes. también necesitas poner un período cuando es servicios o productos y servicios , pero para comprobantes asociados es solo la fecha de emisión más los datos del comprobante.
Si es de comprobantes asociados sería así, [$i] porque lo tengo adentro de un bucle
$ctes_asociados[$i]= Array //Alic Iva
(
'Tipo' => $tipo, // Tipo de comprobante (ver tipos disponibles)
'PtoVta' => $cbteAsoc_PtoVta, // Punto de venta
'Nro' => nro, // Numero de comprobante
'Cuit' => $CUIT, // (Opcional) Cuit del emisor del comprobante
'CbteFch' => $fecha
); Votos: 0 - Link respuesta -
Fecha: 21-05-2021 10:17:51 Buenas tardsa a todos.
Silvia, con respecto a las fechas desde y hasta, yo tambien lei en algun lado que se podian informar pero no forma parte de CbteAsoc. Yo no encuentroi en la documentacion donde deberias agregarse. Te dejo el link para descargar el manual del desarrollador : https://www.afip.gob.ar/fe/ayuda//documentos/Manual_Desarrollador_COMPG_v2_20_transferencias-1.pdf
Juan la fecha limite para generar una factura es de % dias par atras o para adelante y siempre igual o mayor a la ultima. Si no se cumple el sistema lo rechaza.
Saludos Votos: 0 - Link respuesta -
Fecha: 21-05-2021 11:10:33 Ojo con la info que van a poner ahì .... recuerden que el iva se liquida cuando se presta, se remite o se facture - el que fuere anterior - y si uds. declaran una factura con iva de un (mes) anterior, se están arriesgando a que afip, se los reclame en la posición pasada ! Votos: 0 - Link respuesta
-
Fecha: 22-05-2021 10:57:20 Hola a todos, gracias por las respuestas!
María, la estructura a la que me refiero es del Periodo Asociado sólo para las Notas de Crédito y Débito que la AFIP ahora pide como obligatoria, puede ser el Periodo Asociado o el Comprobante Asociado. En mi caso, requiero enviar el Periodo Asociado.
Por lo que veo en la documentación de la AFIP el PeriodoAsoc no está dentro de CbteAsoc, de hecho se lo ve al mismo nivel pero por más que lo envio es como si no lo hiciera..
<ar:PeriodoAsoc>
<ar:FchDesde>string</ar:FchDesde>
<ar:FchHasta>string</ar:FchHasta>
</ar:PeriodoAsoc>
Quizá hay alguna otro dato o cosa que no estoy teniendo en cuenta ya que no conozco mucho sobre facturación..
Gracias nuevamente! Votos: 0 - Link respuesta -
Fecha: 22-05-2021 14:07:15 Fijate cuando te genera la consulta si te está enviando correctamente
<PeriodoAsoc><FchDesde>20210501</FchDesde><FchHasta>20210510</FchHasta></PeriodoAsoc>
Cuando usás período no debés enviar por comprobante, es uno u otro (si mal no recuerdo). Así que también deberías chequear que no aparezca el número de comprobante ni vacio. Votos: 0 - Link respuesta -
Fecha: 31-05-2021 07:16:52 Gracias María pero cómo reviso que esté enviandome correctamente la estructura?
El error que me tira es como que no encuentra ninguno de los dos:ERROR L220210520Si el comprobante es Debito o Credito, enviar estructura CbteAsoc o PeriodoAsoc. Votos: 0 - Link respuesta -
Fecha: 01-06-2021 06:08:23 Así me queda armado:
[FeCAEReq] => Array
(
[FeCabReq] => Array
(
[CantReg] => 1
[PtoVta] => 111
[CbteTipo] => 3
)
[FeDetReq] => Array
(
[FECAEDetRequest] => Array
(
[0] => Array
(
[Concepto] => 1
[DocTipo] => 80
[DocNro] => 30712060561
[CbteDesde] => 17
[CbteHasta] => 17
[CbteFch] => 20210601
[ImpTotal] => 1111
[ImpTotConc] => 1111
[ImpNeto] => 0
[ImpOpEx] => 0
[ImpTrib] => 0
[ImpIVA] => 0
[FchServDesde] =>
[FchServHasta] =>
[FchVtoPago] =>
[MonId] => PES
[MonCotiz] => 1
[PeriodoAsoc] => Array
(
[FchDesde] => 01052021
[FchHasta] => 30052021
)
)
)
)
)
) Votos: 0 - Link respuesta -
Fecha: 01-06-2021 06:48:27 Ya encontré el problema, tenía que actualizar el archivo wsdl con la nueva estructura.
La verdad que no tenía idea de eso.. mi conocimiento es muy básico :(
Gracias a todos los que me ayudaron! Votos: 0 - Link respuesta -
Fecha: 07-06-2021 11:17:46 Buenas tardes. Desde hace un rato a un cliente (no se los demás) le está dando el error: "(501) error interno de base de datos - metadato FECAEsolicitar"
¿Puede ser que se un error temporal de AFIP? Votos: 0 - Link respuesta -
Fecha: 07-06-2021 11:54:05 Hola a todos!
Hoy me llegó esta información: Los responsables inscriptos deberán emitir comprobantes clase “A” a los monotributistas a partir del 1º de julio.
Más info acá: https://blogdelcontador.com.ar/los-responsables-inscriptos-deberan-emitir-comprobantes-clase-a-a-los-monotributistas-a-partir-del-1o-de-julio/ Votos: 2 - Link respuesta -
-
Fecha: 07-06-2021 12:23:46 Hola Marcelo, sí mismo error hoy. Entré a la página de AFIP y tampoco funciona. Votos: 0 - Link respuesta
-
-
-
-
Fecha: 30-06-2021 06:32:58 Buen día, en principio mañana entraría en vigencia la emisión de factura "A" a los inscriptos en monotributo. Alguien probo hacer una factura "A" a un monotributo y solicitar el CAE en prueba?
A mí me lo está rechazando. Votos: 0 - Link respuesta -
Fecha: 30-06-2021 06:56:56 Ya lo solucione. Me estaba facturando a mi mismo y no se puede. Funciona bien.
Saludos y perdon por las molestias Votos: 0 - Link respuesta -
Fecha: 30-06-2021 10:34:36 Matías, ya que está te pregunto, a ver si me podés sacar la duda: ¿Desde mañana solo a exentos o consumidor final se le puede hacer factura B? Votos: 0 - Link respuesta
-
Fecha: 30-06-2021 12:06:50 Letra ‘A’: por operaciones realizadas con otros responsables inscriptos o con sujetos adheridos al Régimen Simplificado para Pequeños Contribuyentes (Monotributo).
Los comprobantes emitidos a sujetos monotributistas deberán contener la leyenda: ‘El crédito fiscal discriminado en el presente comprobante, sólo podrá ser computado a efectos del Régimen de Sostenimiento e Inclusión Fiscal para Pequeños Contribuyentes de la Ley Nº 27.618’.”.
https://www.argentina.gob.ar/normativa/nacional/resoluci%C3%B3n-5003-2021-350574/texto Votos: 0 - Link respuesta -
Fecha: 15-07-2021 12:19:47 Hola a todos necesito una mano tengo que autorizar una Nota de Credito MiPyme, este es mi código:
'CbtesAsoc' => array(
array(
'Tipo' => intval($tipodocumento),
'PtoVta' => intval("4"),
'Nro' => intval($nroFacturaElectronica),
'Cuit' => intval("30500000000"),
'CbteFch' => intval("20210715")
)
)
Y me devuelve el siguiente error:
Codigo de error: 10151
Si el tipo de comprobante que esta autorizando es MiPyMEs (FCE) del tipo Debito o Credito, el campo CbtesAsoc.Cuit debe informarlo.
Probe mandar los datos como string, long, double, etc,etc pero siempre el mismo error me devuelve. Si me pudieran dar alguna sugerencia que pueda probar le agradeceria. Votos: 0 - Link respuesta -
Fecha: 15-07-2021 13:07:55 Hola 'Tipo' => es tipo de comprobante. El resto tiene buena pinta. Votos: 0 - Link respuesta
-
Fecha: 15-07-2021 14:45:05 'Tipo' => 201 en este caso para factura de crédito electrónica que es el dato del comprobante asociado. No encuentro porque no toma el CUIT, si es un error de sintaxis o declarativo. Votos: 0 - Link respuesta
-
Fecha: 15-07-2021 15:21:58 'Cuit' => intval("30500000000") debe ser 'Cuit' => floatval("30500000000")
Porque el valor máximo de intval es 2147483647
intval("30500000000") retorna 2147483647, lo que da un CUIT inválido. Votos: 0 - Link respuesta -
Fecha: 16-07-2021 03:46:51 Deberias revisar que es lo que se envía en el request, quizás en alguna función se está cambiando el tipo de valor o realmente no enviando. En mi caso se generan request y response en una carpeta
if ($this->log_xmls) { file_put_contents($this->base_dir . "/" . $this->cuit . '/' . $this->service . "/tmp/request-loginCms.xml", $client->__getLastRequest()); file_put_contents($this->base_dir . "/" . $this->cuit . '/' . $this->service . "/tmp/response-loginCms.xml", $client->__getLastResponse()); }Votos: 0 - Link respuesta -
Fecha: 26-07-2021 01:50:28 Marcelo y Maria, he probado las sugerencias y he revisado el request. Haciendo los cambios sugeridos para los tipos de datos pero en cualquier a de las formas que pruebe me devuelve:
"Si el tipo de comprobante que esta autorizando es MiPyMEs (FCE) del tipo Débito o Crédito, el campo CbtesAsoc.Cuit debe informarlo."
He enviado el CUIT como string, int, float, etc etc, he reemplazado el CUIT por el del remitente de la factura en vez del emisor y el error es el mismo, Si solicito una nota de cerdito común no tengo problemas pero al hacerlo sobre una factura de electrónica de crédito MiPyme no puedo obtener el CAE. Agradecería cualquier otra sugerencia que pueda probar. Desde ya gracias.
Aqui dejo el código que estoy utilizando para solictar la nota de credtito
'FeCabReq' => array
(
'CantReg' => 1,
'PtoVta' => 4,
'CbteTipo' => 203 //1 factura A - 6 factura B - 2 nota debito A - 3 nota credito A - 203 nota credito mipyme
),
'FeDetReq' => array
(
'FECAEDetRequest' => array
(
'Concepto' => 1, // Productos y servicios
'DocTipo' => $doc_tipo, //80 (CUIT) - 96 DNI - 99 CF
'DocNro' => str_replace("-","",$cCUIT),
'CbteDesde' => $res_cbtenro_suma,
'CbteHasta' => $res_cbtenro_suma,
'CbteFch' => $cbte_fecha, //date('Ymd'),
'ImpTotal' => round($importe_total,2),
'ImpTotConc' => 0,
'ImpNeto' => round($importe_neto,2),
'ImpOpEx' => 0, //round($imp_operaciones_exentas, 2),
'ImpTrib' => round($tt_iibb,2), //round($imp_trib, 2),
'ImpIVA' => round($total_iva,2), //$imp_iva,
'FchServDesde' => ' ',
'FchServHasta' => ' ',
'FchVtoPago' => ' ',
'MonId' => 'PES',
'MonCotiz' => 1,
'Tributos' => array(
'Tributo' => array(
'Id' => $id_tributo,
'Desc' => $ley_iibb,
'BaseImp' => 0,
'Alic' => 0,
'Importe' => round($tt_iibb,2)),
),
'Iva' => array(
'AlicIva' => array(
'Id' => $id_ali,
'BaseImp' => round($importe_neto,2),
'Importe' => round($total_iva,2)
)
),
'CbtesAsoc' => array(
'CbteAsoc' => array(
'Tipo' => 201,
'PtoVta' => 4,
'Nro' => 1,
'Cuit' => 3000000003,
'CbteFch' => "20210708"
)
),
'Opcionales' => array(
array(
'Id' => 22,
'Valor' => "N" //S o N. Indica si el comprobante fue rechazado por el receptor.
)
)
)
)
) Votos: 0 - Link respuesta -
Fecha: 26-07-2021 04:12:30 Danie, para FCE (crédito) yo lo informo así:
'Opcionales' => array( array( 'Id' => 22, 'Desc' => 'Factura de Crédito Electrónica MiPyMEs (FCE) - Anulación', 'Valor' => 'N', 'FchDesde' => intval($fechadesde), 'FchHasta' => NULL ), array( 'CbteTipo' => intval($asoctipo), 'CbteFch' => intval($fechadesde), 'PtoVta' => intval($asocpvta), 'Nro' => intval($asocfac), 'Cuit' => floatval($CUIT) ) )
Votos: 0 - Link respuesta -
-
Fecha: 29-07-2021 01:03:53 Buenos días.
¿alguien sabe si se puede o no pedir CAE por webservice para remito cod. 91? Votos: 0 - Link respuesta -
Fecha: 12-08-2021 10:08:35 Buenos días.
Tengo un cliente que dicta cursos y en este caso vino un cliente uruguayo al cual hay que hacerle una factura.
En la AFIP dice que hay que ponerle como condición deI VA "cliente del exterior" y el numero de cuit del pais pero me da error.
¿Alguien sabe como se deberia hacer?
Saludos Votos: 0 - Link respuesta -
Fecha: 12-08-2021 15:25:51 Matías, la verdad no estoy seguro, pero al "cliente del exterior" no le sirve la factura para discriminar IVA en su país, por lo tanto supongo que una factura a consumidor final tendría que servirle. Votos: 0 - Link respuesta
-
Fecha: 15-08-2021 04:14:15 Matias, tenes que hacerle una Factura E por el servicio.
Les paso los codigos de <Opcionales> di bastante vueltas para encontrarlos, asi no pierde tiempo el que los necesite
Tipos de datos opcionales
2 RG Empresas Promovidas - Indentificador de proyecto vinculado a Régimen de Promoción Industrial
91 RG Bienes Usados 3411 - Nombre y Apellido o Denominación del vendedor del bien usado.
92 RG Bienes Usados 3411 - Nacionalidad del vendedor del bien usado.
93 RG Bienes Usados 3411 - Domicilio del vendedor del bien usado.
5 Excepcion computo IVA Credito Fiscal
61 RG 3668 Impuesto al Valor Agregado - Art.12 IVA Firmante Doc Tipo
62 RG 3668 Impuesto al Valor Agregado - Art.12 IVA Firmante Doc Nro
7 |RG 3668 Impuesto al Valor Agregado - Art.12 IVA Carácter del Firmante
10 RG 3.368 Establecimientos de educación pública de gestión privada - Actividad Comprendida
1011 RG 3.368 Establecimientos de educación pública de gestión privada - Tipo de Docum
1012 RG 3.368 Establecimientos de educación pública de gestión privada - Número de Documento
11 RG 2.820 Operaciones económicas vinculadas con bienes inmuebles - Actividad Comprendida
12 RG 3.687 Locación temporaria de inmuebles con fines turísticos - Actividad Comprendida
13 RG 2.863 Representantes de Modelos
14 RG 2.863 Agencias de publicidad
15 RG 2.863 Personas físicas que desarrollen actividad de modelaje
17 RG 4004-E Locación de inmuebles destino 'casa-habitación'. Dato 2 (dos) = facturación directa / Dato 1 (uno) = facturación a través de intermediario
1801 RG 4004-E Locación de inmuebles destino 'casa-habitación'. Clave Única de Identificación Tributaria (CUIT).
1802 RG 4004-E Locación de inmuebles destino 'casa-habitación'. Apellido y nombres, denominación y/o razón social.
2101 RG 4367 Factura de Crédito Electrónica MiPyMEs (FCE) - CBU del Emisor
2102 RG 4367 Factura de Crédito Electrónica MiPyMEs (FCE) - Alias del Emisor
22 RG 4367 Factura de Crédito Electrónica MiPyMEs (FCE) - Anulación 20181226
23 RG 4367 Factura de Crédito Electrónica MiPyMEs (FCE) - Referencia Comercial
27 RG 4919 Factura de Crédito Electrónica MiPyMEs (FCE) - Sistema de transmisión Votos: 0 - Link respuesta -
Fecha: 27-10-2021 09:19:59 estimados...esta caido el servicio de afip de facturacion electronica?
varios clientes me están diciendo que no pueden facturar pero no estoy capturando ningún error
o mejor dicho, algo está sucediendo en la respuesta de AFIP (no satisfactoria) y el error que maneja el sistema es "Type is not supported" Votos: 0 - Link respuesta -
Fecha: 27-10-2021 09:52:25 Hola Matías y comunidad.
Por ahora no tengo reportes de fallas en mis clientes y los servicios de AFIP están levantados.
Yo tengo armado un alerta en https://uptimerobot.com.
Si me entero de algo aviso.
Saludos Votos: 0 - Link respuesta -
Fecha: 27-10-2021 11:23:56 parece que fue algo temporal, porque ahora estan facturando sin problemas
el entorno de homologación funcionaba, pero producción no
lo llamativo es que no había mensaje de respuesta, bueno...gracias mati y gracias a todos Votos: 0 - Link respuesta -
Fecha: 09-11-2021 01:10:31 Buenos Dias
Alguno hizo recibos C, en modo test no da error, pero tampoco responde nada Votos: 0 - Link respuesta -
Fecha: 09-11-2021 08:39:46 Buenas tardes Carlos.
Acabo de generar una y no tuve problemas. Votos: 0 - Link respuesta -
-
Fecha: 13-12-2021 02:08:18 Buen día para todos
Al momento de generar una factura, no estaba pasando el campo CbteFch, entonces AFIP considera la fecha de hoy como fecha de emisión.
Ahora quiero pasar una fecha pasada en CbteFch, supongamos de ayer....lo hago y aparentemente funciona, pero noto que en la respuesta de AFIP, la fecha devuelta es la de hoy (FECAESolicitarResult->FeDetResp->FECAEDetResponse->CbteFch)
¿Es ese el comportamiento esperado? ¿O hay algo mal y en realidad la respuesta debería darme la misma fecha que yo envío? Votos: 0 - Link respuesta -
Fecha: 13-12-2021 03:17:59 Buen dia. No deberias tener problema de esa manera, el tema esta en que si ya tenes facturacion con fecha actual no vas a poder retroceder en las siguiente, no podes alterar la cronología
Tene en consideracion la cantidad de dias en la que podes retroceder a partir de tu fecha actual que creo que son 5 dias corridos ( que coincide con el tiempo que tenes para confeccionarla ) Votos: 0 - Link respuesta -
Fecha: 13-12-2021 03:51:27 Hola Carlos, estoy teniendo en cuenta que no haya facturas posteriores a la fecha que estoy poniendo. Igualmentre por lo que vi, AFIP no hace esa validación sino que depende de mi hacerla.
Pero no me quedó clara la respuesta, estoy recibiendo correctamente el resultado de AFIP, o debería devolverme la fecha que yo le envío? Votos: 0 - Link respuesta -
Fecha: 13-12-2021 05:33:21 Matias, verifica en la pagina afip en documentos emitidos de tu cliente para ver la fecha que te esta dando como emision de la factura para asegurarte de que este funcionando correctamente, a mi me muestra la que el operador ingreso Votos: 0 - Link respuesta
-
Fecha: 13-12-2021 06:25:58 perdón!!
parece que está funcionando, había un trait que me estaba pisando la fecha y no me habia dado cuenta!
ahora quise poner una fecha pasada y efectivamente afip me validó la cronologia: "Refencia: 10016: El numero o fecha del comprobante no se corresponde con el proximo a autorizar. Consultar metodo FECompUltimoAutorizado."
mañana haré otra prueba con fecha de hoy pero todo indica que va a funcionar...
muchas gracias Votos: 0 - Link respuesta -
Fecha: 27-01-2022 05:19:02 Estimados, puede un monotributista realizar facturas A ?
Actualmente mis clientes son responsables inscriptos, utilizan el punto de venta configurado como : "Factura Electrónica - RI IVA - Aplicativo y Webservices", pero hoy en dia preciso agregar monotributistas y entiendo que el punto de venta debe ser: "Factura Electrónica - Monotributo - Webservices".
Entiendo que para facturas tipo C debo enviar tipo comprobante 11 para venta a consumo final y 13 para notas de credito.
La duda es si los monotributistas estan habilitados a realizar facturas A ? Votos: 0 - Link respuesta -
Fecha: 27-01-2022 05:59:57 Buen día.
Los monotributistas solo pueden generar comprobantes tipo "C" y Tipo "E" si facturan al exterior.
https://www.afip.gob.ar/facturacion/regimen-general/comprobantes.asp
Saludos Votos: 0 - Link respuesta -
Fecha: 27-01-2022 07:52:52 Con que el punto de venta sea "RECE para aplicativo y web services" ya te sirve, independientemente de la condicion frente al IVA de quien emite el comprobante Votos: 0 - Link respuesta
-
Fecha: 27-01-2022 07:53:02 Gracias Matias, me pareció entender eso mismo, que solo pueden generar comprobantes tipo "C" y tipo "E", pero tenía la duda. Votos: 0 - Link respuesta
-
-
Fecha: 01-04-2022 03:32:55 Hola Buenos días tanto tiempo!
Una pregunta que recién se me plantea ahora, ya que ninguno de mis clientes, hasta ahora había hecho facturas a consumidor final (C).
¿Se puede hacer factura electrónica con el webservice a consumidor final (factura C) sin informar CUIT del comprador, ni otros datos?
El cliente que quiere hacer la factura C (además de A y B) es responsable inscripto.
Gracias! Votos: 0 - Link respuesta -
Fecha: 01-04-2022 04:19:27 Hola Marcelo, una factura a consumidor final no es "C" necesariamente
Si la emite un responsable inscripto a un consumidor final, es "B", por lo que tu cliente no va a poder hacer una "C"
Una factura "C" es emitida por un monotributista a cualquier otro (consumidor final, resp. inscripto, etc)
Y sí, podes hacer una factura a consumidor final sin especificar datos, para ello emitila para un DNI 11111111 (pero en tu caso será "B") Votos: 0 - Link respuesta -
Fecha: 01-04-2022 04:41:47 Marcelo es como señala Matias , la clases de facturas dependen de la condición del vendedor y no del comprador ( responsable inscriptos A y B ) y los demás C. Para emitir a consumidor final yo no informo el cuit y cambio el tipo de documento ( que por ej, es 80 para cuit por 99 ). Hoy la limitación de montos para este tipo de emision es $ 31590 Votos: 0 - Link respuesta
-
Fecha: 01-04-2022 05:28:27 Perdón, una corrección. El cliente que quiere hacer factura C (Consumidor Final) es monotributista, no RI.
Es decir que tipo de documento iría 99, y en Nro de doc. 0
Por otro lado, entiendo que un monotributista solo puede hacer factura C, ¿cierto? Votos: 0 - Link respuesta -
Fecha: 01-04-2022 05:57:54 En ese caso el único tipo de factura que puede emitir es "C"
Con tipo de documento 96 (DNI) y numero 11111111 ya es un consumidor final según tengo entendido (así lo hago yo) Votos: 0 - Link respuesta -
Fecha: 01-04-2022 06:14:38 Gracias Matías.
Recien probé con código 99 y DNI 0 y me devolvió el CAE correctamente. Votos: 0 - Link respuesta -
Fecha: 01-04-2022 06:14:49 https://www.afip.gob.ar/libro-iva-digital/documentos/Libro-IVA-Digital-Tablas-del-Sistema.pdf
en este enlace tenes las tablas - en la tabla 5 estan tus codigos Votos: 0 - Link respuesta -
Fecha: 01-04-2022 07:38:14 Gracias Carlos! ya está funcionando correctamente. Votos: 0 - Link respuesta
-
Fecha: 05-04-2022 15:50:22 Hola!
¿Alguien conoce algún modelo de impresora de tickets no fiscal, para imprimir tickets de factura electrónica como si fuera una impresora de Windows?.
Tiene que poder imprimir QR. Votos: 0 - Link respuesta -
Fecha: 06-04-2022 03:20:46 Marcelo yo estoy usando con un cliente ELIPRINTER-SOL802 pero para imprimir presupuesto de tramites ingresado, Es una impresora térmica, tuve que adaptar el pdf porque algunos tipos de letras se ven mal, la uso con un ancho de 80mm, la uso con win 10, yo la uso USB pero tiene LAN también y tiene automática una cuchilla de corte al terminar la impresión Votos: 1 - Link respuesta
-
Fecha: 06-04-2022 08:05:38 Ok, gracias Carlos. ¿Imprime como una impresora normal, adaptando el contenido a 80mm?
¿Sabes si imprime QR? Votos: 0 - Link respuesta -
Fecha: 06-04-2022 10:42:19 Se comporta como una impresora normal, no reduce el contenido a 80mm, yo tuve que armar un pdf de 80mm de ancho y vas a tener que incluir el QR en el pdf, porque no vi una opción para que lo genere, es muy rápida pero a su vez muy simple Votos: 1 - Link respuesta
-
Fecha: 31-05-2022 08:22:49 Hola a todos, estuve haciendo una integración con TANGO y ellos hacen una validación que AFIP no realiza.
En concreto, no dejan facturar un item con descuento del 100%, cuyo subtotal terminará siendo $0 y tampoco permite facturar un item cuyo subtotal sea por ejemplo $0,01....como que el mínimo a facturar es $1. Del lado de TANGO aducen que es por disposición de AFIP, pero cuando facturo directamente contra AFIP no recibo ningún error y puedo obtener CAE sin problemas.
No estoy hablando de totales finales, sino de totales a nivel item. Yo puedo poner N items, cada uno con valores "normales", pero si meto un item con 100% de descuento ($0) o cuyo total no legue a $1 entonces salta el error
La pregunta que les quiero hacer es si alguien sabe acerca de este tipo de reglas, si es tan así o no Votos: 0 - Link respuesta -
Fecha: 01-06-2022 12:09:46 Hola Matías Cánepa, paso a contestarte en base a mi experiencia:
Te paso una URL con ejemplos de facturación, ahí hay un ejemplo de descuento que te puede servir.
https://www.afip.gob.ar/genericos/guiavirtual/archivos/Ejemplos para autorizar comprobantes clase A y B.pdf
En cuanto a los tipos de documentos a utilizar para indicar los datos del contribuyente, sería de la siguiente forma:
CUIT: 80
DNI: 96
Consumidor final: 99 (cuando se especifica este tipo de documento se debe informar 0 como número de documento)
Saludos Votos: 0 - Link respuesta -
Fecha: 01-06-2022 13:27:44 Matías, debe ser una limitación del sistema TANGO que le impide hacer un ítem de valor 0, no hay nada escrito que haga ilegal eso que vos quieres hacer, de hecho he recibido hace muy poco una factura de valor 0 Votos: 0 - Link respuesta
-
Fecha: 08-08-2022 15:06:09 hola a todos!
yo ya me había olvidado de este asunto...pero hoy me di cuenta que la URL del QR está andando!
ahora te lleva a la verificación de CAE con los datos de la factura ya cargados en el formulario Votos: 0 - Link respuesta -
-
Fecha: 09-08-2022 10:02:27 Hola Matías Cánepa. Lo probé y nada, por un espacio al lado de la E en tipoCodAut, me mandaba a https://www.afip.gob.ar/fe/qr/conceptos-generales.asp. Si no era por vos ni me enteraba. Gracias por estar siempre! Votos: 0 - Link respuesta
-
Fecha: 09-08-2022 10:58:13 A mi no me andaba por que pasaba todos los datos como string. Lo cambie y funciona perfecto. Gracias Matias por el aviso. Votos: 0 - Link respuesta
-
Fecha: 09-08-2022 19:04:19 Una consulta, media tonta quizás: Para generar un nuevo punto de venta para un CUIT donde ya había ingresado el certificado csr y obtenido el crt para el primer punto de venta, ¿hay que generar un nuevo certificado csr y obtener un nuevo crt?
Mi cliente va a abrir sucursales (con el mismo CUIT) y tengo que crear puntos de venta para cada una. Votos: 0 - Link respuesta -
Fecha: 10-08-2022 01:42:33 Hola Marcelo, tanto el csr como crt no dependen del punto de venta.
Igualmente como hay que renovarlos cada 2 años, dependiendo el tiempo que tengas el anterior, te convenga renovar para desligar por 2 años. Votos: 0 - Link respuesta -
Fecha: 10-08-2022 14:33:43 Ok, gracias María. Ese crt lo gestioné hace un par de meses nomás, así que por lo que entendí solo tengo que crear nuevos puntos de venta y usar el mismo crt y key. Votos: 0 - Link respuesta
-
Fecha: 11-08-2022 08:43:17 Otra consulta: Cuando quiero hacer un pedido de datos de un CUIT con:
$taxpayer_details = $afip->RegisterScopeFive->GetTaxpayerDetails(floatval($cuit));
me da el error:
SOAP Fault: ns1:coe.notAuthorizedComputador no autorizado a acceder al servicio
Sin embargo puedo obtener cae, número de último comprobante, etc. ¿hace falta habilitar algún otro servicio en Afip? ¿o que puede ser? Votos: 0 - Link respuesta -
Fecha: 11-08-2022 09:51:54 Ya lo resolví, me faltó adherir el servicio "Servicio de Consulta Padrón A5” en Webservices de AFIP. Votos: 0 - Link respuesta
-
Fecha: 13-08-2022 11:03:20 Gracias Matías por el aviso.
A mi me quedó una duda: En el campo "Importe" del QR, (Decimal hasta 13 enteros y 2 decimales), ¿se informa con el punto decimal, o como en los archivos de percepciones el número completo con los decimales, pero sin el punto?
Por ejemplo, con un importe de $123.00, se debe poner 12300, o 123? Votos: 0 - Link respuesta -
Fecha: 13-08-2022 11:54:06 Ups... es con el punto decimal. Cuando consultaba los datos luego de escanear me mostraba todos los datos del comprobante, pero al hacer la consulta luego de poner el captcha me decía que había un error. Era que estaba informando el importe sin el punto decimal... menos mal que el QR es solo informativo... Votos: 0 - Link respuesta
-
Fecha: 16-08-2022 08:20:02 alguien sabe que significa este error?
10121: Campo Cmp.Cmps_asoc: El comprobante del tipo 991 y nro. 7185 aun no fue confirmado
Y venia generando facturas con un remito de papel como comprobante asociado. Ese comprobante asociado lo enviaba sin cuit y sin fecha
Ahora actualicé el wsdl, y le estoy pasando esos dos datos, pero recibo ese error.
La verdad no recuerdo de donde saque ese código 991, entonces lo reemplacé por 91 (remitos R), pero en ese caso el error pasa a ser
10040: Campo CbtesAsoc con tipo invalido, Tipo Valido 88, 991.
No probé aún pasar el código 88, pero como corresponde a "OTROS COMPROBANTES - DOCUMENTOS EXCEPTUADOS / REMITO ELECTRONICO" no se si deberia usarlo...
En fin, por que puede ser que el error que me da afip para el 991 es "aun no fue confirmado"? el CAI está vigente y el comprobante lo puedo validar online... Votos: 0 - Link respuesta -
Fecha: 17-08-2022 10:39:50 Hola Matías, los códigos esos son:
88 – Remito de Tabaco
91 - Remito
991 – Remito de Tabaco en Hebras,
Acá podés buscar el error WSFEV1
TIPOS DE COMPROBANTES Y OTROS Votos: 0 - Link respuesta -
Fecha: 05-09-2022 12:52:38 Hola a todos.
La AFIP está recategorizando y pasando clientes a factura de crédito electrónica.
Un cliente quiso hacer factura de crédito electrónica y no puede, tampoco retorna ningun error.
Estoy usando este código:
$data = array( 'CantReg' => 1, // Cantidad de items del/los comprobante/s 'PtoVta' => $puntoVenta, // Punto de venta 'CbteTipo' => $tpivaVta, // Tipo de comprobante (ver tipos disponibles) 'Concepto' => 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios 'DocTipo' => 80, // Tipo de documento del comprador (ver tipos disponibles) 'DocNro' => $cuitVta, // Numero de documento del comprador 'CbteDesde' => $last_voucher+1, // Numero de comprobante o numero del primer comprobante en caso de ser mas de uno 'CbteHasta' => $last_voucher+1, // Numero de comprobante o numero del ultimo comprobante en caso de ser mas de uno 'CbteFch' => intval(date('Ymd')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo 'ImpTotal' => $total, // Importe total del comprobante - 267.9 'ImpTotConc' => $ngraVta, // Importe neto no gravado - 0 'ImpNeto' => $gravVta, // Importe neto gravado - 150 'ImpOpEx' => $exento, // Importe exento de IVA - 78.6 'ImpIVA' => $ivaVta, //Importe total de IVA - 31.5 'ImpTrib' => $dgrVta, //Importe total de tributos - 7.8 'FchServDesde' => NULL, // (Opcional) Fecha de inicio del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchServHasta' => NULL, // (Opcional) Fecha de fin del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchVtoPago' => intval($fven), // (Opcional) Fecha de vencimiento del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'MonId' => 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'Tributos' => array( // (Opcional) Tributos asociados al comprobante array( 'Id' => 99, // Id del tipo de tributo (ver tipos disponibles) 'Desc' => 'DGR', // (Opcional) Descripcion 'BaseImp' => $tgrav, // Base imponible para el tributo 'Alic' => $alicuota, // Alícuota 'Importe' => $dgrVta // Importe del tributo ) ), 'Iva' => array( // (Opcional) Alícuotas asociadas al comprobante array( 'Id' => 5, // Id del tipo de IVA (ver tipos disponibles) 'BaseImp' => $gravVta, // Base imponible 'Importe' => $ivaVta // Importe ) ), 'Opcionales' => array( array( 'Id' => 2101, 'Desc' => 'Factura de Crédito Electrónica MiPyMEs (FCE) - CBU del Emisor', 'Valor' => $CBU, 'FchDesde' => intval($feac), 'FchHasta' => NULL ) ) );Votos: 0 - Link respuesta -
Fecha: 05-09-2022 14:21:31 Hola por lo que estuve viendo en el array de opcionales se envía solo id y valor.
Manual_Desarrollador_COMPG_v2_20
'Opcionales' => array( array( 'Id' => 2101, 'Valor' => $CBU, /* numérico de 22 caracteres ) )Votos: 0 - Link respuesta -
-
Fecha: 07-09-2022 08:26:22 Hola a todos. otra consulta sobre un caso que se me presenta por primera vez.
Tengo un cliente que en una factura tiene artículos al 10.5% de IVA y otros al 21%.
En el script:
$data = array( 'CantReg' => 1, // Cantidad de items del/los comprobante/s 'PtoVta' => $puntoVenta, // Punto de venta 'CbteTipo' => $tpivaVta, // Tipo de comprobante (ver tipos disponibles) 'Concepto' => 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios 'DocTipo' => $DocTipo, // Tipo de documento del comprador (ver tipos disponibles) 'DocNro' => $cuitVta, // Numero de documento del comprador 'CbteDesde' => $last_voucher+1, // Numero de comprobante o numero del primer comprobante en caso de ser mas de uno 'CbteHasta' => $last_voucher+1, // Numero de comprobante o numero del ultimo comprobante en caso de ser mas de uno 'CbteFch' => intval(date('Ymd')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo 'ImpTotal' => $total, // Importe total del comprobante 'ImpTotConc' => $ngraVta, // Importe neto no gravado 'ImpNeto' => $gravVta, // Importe neto gravado 'ImpOpEx' => $exento, // Importe exento de IVA 'ImpIVA' => $ivaVta, //Importe total de IVA 'ImpTrib' => $ttdgr, //Importe total de tributos 'FchServDesde' => NULL, // (Opcional) Fecha de inicio del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchServHasta' => NULL, // (Opcional) Fecha de fin del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchVtoPago' => NULL, // (Opcional) Fecha de vencimiento del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'MonId' => 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'Iva' => array( // (Opcional) Alícuotas asociadas al comprobante array( 'Id' => 4, // Id del tipo de IVA (1: no gravado, 2: exento, 3: 0%, 4: 10.5% 5: 21%) 'BaseImp' => $total4, // Base imponible 'Importe' => $ivaVta4 // Importe ), array( 'Id' => 5, // Id del tipo de IVA (1: no gravado, 2: exento, 3: 0%, 4: 10.5% 5: 21%) 'BaseImp' => $total5, // Base imponible 'Importe' => $ivaVta5 // Importe ) ) );
En el array IVA discrimino lo que es 10.5% o 21%, ¿pero en 'ImpNeto' y 'ImpIVA' como se informa? se suma el importe neto de los items al 10.5 y 21% en ImpNeto, y en ImpIVA la suma del IVA? Votos: 0 - Link respuesta -
Fecha: 07-09-2022 09:27:10 Hola Marcelo sí se suma el importe neto de los items al 10.5 y 21% en ImpNeto, y en ImpIVA la suma del IVA. Votos: 0 - Link respuesta
-
Fecha: 07-09-2022 12:28:25 Gracias María, siempre tan amable.
Una pregunta más: en los item IVA, si solo tengo productos con el 10.5% por ejemplo, en el otro array en BaseImp e Importe pongo 0, ¿y en Id que debería poner? ¿1 (No gravado), o 3 (0%)? Votos: 0 - Link respuesta -
Fecha: 07-09-2022 13:12:55 En mi caso solo mando lo que tengo, con un for recorro mi base de datos donde guardo las alicuotas de cada venta, solo mando los que uso. 10.5 y/ o 21
# SUBTOTALES DE ALICUOTAS $i=0; foreach($codigo_alic as $id_alic => $val_alic){ $alicuotas[$i]= Array ( "codigo" => $codigo_alic[$id_alic], "Alic" => $desc[$codigo_alic[$id_alic]], "importe" => $importe_alic[$id_alic], "BaseImp" => $baseImp_alic[$id_alic], ); $i++; }Votos: 0 - Link respuesta -
Fecha: 07-09-2022 15:28:33 Si, lo solucioné con un array multidimensional que se crea dinámicamente según exista el concepto. Votos: 0 - Link respuesta
-
Fecha: 23-09-2022 02:13:28 Buen día a todos.
Tengo una consulta: yo no soy contador, tengo una duda respecto al IVA que el contador de una empresa donde le hago el sistema me hizo una observación: Me dijo que cuando se factura a un sujeto IVA exento, se debe informar igual el IVA a la AFIP porque ellos como empresa pagan el IVA por todas las ventas, entonces mi duda es ¿en el array IVA, cuando corresponde código 2 (porque el cliente es Exento), se debe informar igual los items BaseImp e Importe? Votos: 0 - Link respuesta -
Fecha: 23-09-2022 02:52:12 Hola Marcelo, sí debes hacer una factura B como siempre informando el valor de IVA que le corresponde a cada artículo, la única diferencia es en el tipo de Responsable, que en este caso es IVA exento, porque el que es exento es él, no vos. Vos debes pagar el IVA de dicha factura normalmente. Votos: 1 - Link respuesta
-
Fecha: 23-09-2022 03:05:01 Marcelo, eso es verdad ( yo soy contador ). vos tenes que pensar siempre del lado de tu cliente no del receptor del documento. En ese razonamiento el emisor del documento -responsable inscripto- siempre va a tener que informar iva independientemente del receptor( porque nunca pierde esa condición). Las diferencias entre A o B es solo al efector del tratamiento que de ese impuesto puede realizar el receptor Votos: 1 - Link respuesta
-
Fecha: 23-09-2022 03:55:20 Ok, eso entendí perfectamente, muchas gracias a los dos.
La duda que se me presenta ahora es que en el array:
$data = array( 'CantReg' => 1, // Cantidad de items del/los comprobante/s 'PtoVta' => $puntoVenta, // Punto de venta 'CbteTipo' => $tpivaVta, // Tipo de comprobante (ver tipos disponibles) 'Concepto' => 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios 'DocTipo' => $DocTipo, // Tipo de documento del comprador (ver tipos disponibles) 'DocNro' => $cuitVta, // Numero de documento del comprador 'CbteDesde' => $last_voucher+1, // Numero de comprobante o numero del primer comprobante en caso de ser mas de uno 'CbteHasta' => $last_voucher+1, // Numero de comprobante o numero del ultimo comprobante en caso de ser mas de uno 'CbteFch' => intval(date('Ymd')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo 'ImpTotal' => $total, // Importe total del comprobante 'ImpTotConc' => $ngraVta, // Importe neto no gravado 'ImpNeto' => $gravVta, // Importe neto gravado 'ImpOpEx' => $exento, // Importe exento de IVA 'ImpIVA' => $ivaVta, //Importe total de IVA 'ImpTrib' => $ttdgr, //Importe total de tributos 'FchServDesde' => NULL, // (Opcional) Fecha de inicio del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchServHasta' => NULL, // (Opcional) Fecha de fin del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchVtoPago' => NULL, // (Opcional) Fecha de vencimiento del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'MonId' => 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'Iva' => array( // (Opcional) Iva asociado al comprobante array( 'Id' => intval($id), // Id del tipo de tributo (ver tipos disponibles) 'BaseImp' => $gravVta, // Base imponible para el tributo 'Importe' => $ivaVta // Importe del tributo ) ) );
Entonces como ImpTotal debe ser igual a la suma de todos los demás importes, y el cliente es exento, en el item ImpOpEx debo poner lo mismo que en ImpTotal, y en ImpIVA debo poner 0 (cero), ¿pero en el array Iva si debo poner el total en BaseImp y el IVA correspondiente en Importe?
¿o para todos los conceptos debo pensar en el cliente y no en el receptor? Votos: 0 - Link respuesta -
Fecha: 23-09-2022 04:17:18 Marcelo, es una factura normal. No se pone 0 en ningún lado. Lo único que cambia que en vez de poner por ejemplo Consumidor Final, debés poner IVA Sujeto Exento. Votos: 1 - Link respuesta
-
-
Fecha: 22-10-2022 04:05:18 Hola buenos días a todos.
La AFIP establece que el comprador deberá identificarse cuando el importe de una factura sea igual o superior (al día de la fecha) a $43.010 y su receptor sea un consumidor final, o cuando el importe de la operación sea igual o superior a $21.505 y no se haya pagado con tarjetas de crédito o de débito, tarjetas prepagas no bancarias u otros medios de pago equivalentes.
La pregunta es: ¿hay alguna forma, por webservice u otro, de detectar cual es el monto máximo vigente actual? De esa forma el sistema de facturación puede alertar al cajero cuando supera ese monto, sin tener que cambiar en la configuración del sistema cada vez que se actualiza. Votos: 0 - Link respuesta -
Fecha: 22-10-2022 04:54:03 Marcelo:
Buenos dias
Debes seguir las modificaciones que se hacen a la Resolución General N° 4444/19 de AFIP
Estas se hacen mediante el indice del IPC
No hay otra forma Votos: 0 - Link respuesta -
Fecha: 22-10-2022 05:41:59 Hola buen dia. Estoy arrancando con Factura electronica y tengo una serie de dudas.
Voy con la primera :
Mi cliente necesita hacer remitos, se hacen mediante web service ?
hay algun ejemplo de como hacerlos ?
Muchas gracias Votos: 0 - Link respuesta -
Fecha: 22-10-2022 13:39:52 Hola Leandro, hasta donde tengo entendido no se hacen remitos via ws.
En teoría AFIP los dejó exclusivamente para ser impresos con CAI, vencimiento y numeración correlativa preimpresa, lo que le daría validez en caso de tener que presentar documentación de transporte en un control policial.
Podrias "copiarlos" digitalmente en tu sistema por si queres que te quede todo registrado, pero finalmente lo que vale realmente es el papel-papel Votos: 1 - Link respuesta -
Fecha: 22-10-2022 16:54:41 Matias
A lo que vos haces referencia es a lo que se denomina HOJA GUIA no es un REMITO ...
Un REMITO estan en condiciones de hacerlo cualquiera quetraslada un producto o varios de un lugar a otro, siendo inclusive hasta un deposito propio sin realizar venta alguna.
RG 1414 AFIP y sus Modificaciones Votos: 0 - Link respuesta -
Fecha: 22-10-2022 17:01:15 Fecha de publicación: 24/07/2017
Para realizar la solicitud del remito electrónico o resumen de datos, se deberá previamente generar el alta de un punto de venta específico, para ello se deberá ingresar al servicio con clave fiscal: "Administración de puntos de venta y domicilios", opción "ABM puntos de venta/emisión" y elegir entre los domicilios declarados como comerciales previamente en el "Sistema Registral", aquél desde el cual se efectuará el traslado.
Luego, se deberá autorizar/aceptar la remisión o el movimiento del tabaco. Para autorizar/aceptar el traslado, o en su caso denegarlo, tanto el titular como el destinatario deberán acceder servicio con clave fiscal "Remitos electrónicos" seleccionando el perfil correspondiente a "Titular de la mercadería" o "Receptor de remitos", donde se podrá consultar los "Remitos electrónicos" o "Resúmenes de datos" pendientes de autorización y/o aceptación.
Una vez que los sujetos obligados autoricen y/o acepten la remisión o movimiento del tabaco, se habilitará al emisor a generar el "Remito electrónico" o, en su caso el documento "Resumen de datos". Para generarlos se deberá acceder al servicio con clave fiscal "Remitos electrónicos" seleccionando el perfil correspondiente a "Emisor de Remitos".
Asimismo, se podrá optar por el uso de un webservices el cual deberá cumplir con las especificaciones técnicas que se detallaran en el manual que se publicará en www.afip.gob.ar.
Los citados comprobantes vencerán en los siguientes plazos, según corresponda:
- Remito electrónico: a los 15 días corridos contados desde su emisión
- Resumen de datos: a los 45 días corridos contados desde la fecha de su emisión.
Vencidos los plazos mencionados, los documentos no tendrán validez.
Fuente: Arts. 19, 20, 22 y 23 RG 4075/17 Votos: 0 - Link respuesta -
Fecha: 24-10-2022 08:43:27 No, a lo que yo hago referencia es justamente a un remito (albarán)
Los remitos electrónicos que vos mencionas son para la industria tabacalera que dudo mucho sea el caso que plantea Leandro. Para el 99% de los remitos no queda otra que hacerlos en papel.
Igualmente me gustaría conocer la opinión de otra gente del foro... Votos: 0 - Link respuesta -
Fecha: 24-10-2022 10:07:51 Matias
CONSULTA AFIP Nº 364752
Los contribuyentes que revistan el carácter de Responsables Inscriptos en el impuesto al Valor Agregado están obligados a emitir remitos clase "R".
Cuando utilicen remitos para respaldar el traslado y/o entrega de productos dentro de un mismo predio, polo o parque industrial, dichos documentos estarán identificados con la letra "X".
Serán considerados válidos los remitos identificados con la letra "X" que se emitan mediante la utilización del equipamiento electrónico denominado "Controlador Fiscal Vieja Tecnología", siempre que los aludidos comprobantes revistan el carácter de "Documento No Fiscal Homologado" en los términos de la RG 3561/14.
Fuente: Art. 28 RG 1415/03 Votos: 1 - Link respuesta -
Fecha: 25-10-2022 00:41:12 Hola buenos dias..estoy programando para un monotributista..y FECompUltimoAutorizado devuelve siempre 0. alguien sabe que puede ser? Votos: 0 - Link respuesta
-
Fecha: 26-10-2022 15:45:38 Y te devuelve el CAE correctamente al genera un comprobante ? Votos: 0 - Link respuesta
-
Fecha: 27-10-2022 03:17:45 Giuliano, si se trata del primer comprobante del punto de ventas, el servicio web te envia 0 y debes forzar al envio del doc. nro 1 para la solicitud de CAE Votos: 0 - Link respuesta
-
Fecha: 28-10-2022 06:28:27 Buen día a todos.
Estoy teniendo un problema facturando a grandes contribuyentes con Factura de Crédito Electrónica.
Me da el error "No es un comprobante válido bajo el Régimen la ley N° 27440".
El script que uso es el siguiente:
$data = array( 'CantReg' => 1, // Cantidad de items del/los comprobante/s 'PtoVta' => $puntoVenta, // Punto de venta 'CbteTipo' => $tpivaVta, // Tipo de comprobante (ver tipos disponibles) 'Concepto' => 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios 'DocTipo' => 80, // Tipo de documento del comprador (ver tipos disponibles) 'DocNro' => $cuitVta, // Numero de documento del comprador 'CbteDesde' => $last_voucher+1, // Numero de comprobante o numero del primer comprobante en caso de ser mas de uno 'CbteHasta' => $last_voucher+1, // Numero de comprobante o numero del ultimo comprobante en caso de ser mas de uno 'CbteFch' => intval(date('Ymd')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo 'ImpTotal' => $total, // Importe total del comprobante - 267.9 'ImpTotConc' => $ngraVta, // Importe neto no gravado - 0 'ImpNeto' => $gravVta, // Importe neto gravado - 150 'ImpOpEx' => $exento, // Importe exento de IVA - 78.6 'ImpIVA' => $ivaVta, //Importe total de IVA - 31.5 'ImpTrib' => $dgrVta, //Importe total de tributos - 7.8 'FchServDesde' => NULL, // (Opcional) Fecha de inicio del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchServHasta' => NULL, // (Opcional) Fecha de fin del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'FchVtoPago' => intval($fven), // (Opcional) Fecha de vencimiento del servicio (yyyymmdd), obligatorio para Concepto 2 y 3 'MonId' => 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'Tributos' => array( // (Opcional) Tributos asociados al comprobante array( 'Id' => 99, // Id del tipo de tributo (ver tipos disponibles) 'Desc' => 'DGR', // (Opcional) Descripcion 'BaseImp' => $tgrav, // Base imponible para el tributo 'Alic' => $alicuota, // Alícuota 'Importe' => $dgrVta // Importe del tributo ) ), 'Iva' => array( // (Opcional) Alícuotas asociadas al comprobante array( 'Id' => 5, // Id del tipo de IVA (ver tipos disponibles) 'BaseImp' => $gravVta, // Base imponible 'Importe' => $ivaVta // Importe ) ), 'Opcionales' => array( array( 'Id' => 2101, 'Valor' => floatval($CBU) ) ) );
¿Alguien sabría porque? ¿como están haciendo FCE?
Gracias Votos: 0 - Link respuesta -
Fecha: 28-10-2022 11:20:47 No se si te hará alguna diferencia, yo las estoy enviando así y por el momento están funcionando
array (
array (
'Id' => 2101,
'Desc' => 'Factura de Crédito Electrónica MiPyMEs (FCE) ',
'Valor' => $row['cuit_asoc'] ),
array(
'Id' => 27,
'Desc' => 'Factura de Crédito Electrónica MiPyMEs (FCE) - Transmision',
'Valor' => 'SCA',
),
); Votos: 0 - Link respuesta -
Fecha: 28-10-2022 12:00:37 Gracias Carlos.
¿En el item 2101 lo que se informa no es el CBU? porque según tu script informás un CUIT.
"Si el tipo de comprobante que está
autorizando es MiPyMEs (FCE),
informa opcionales, el valor
correcto para el código 2101 es un
CBU numérico de 22 caracteres."
¿Que es el item 27 y el valor "SCA"? Votos: 0 - Link respuesta -
Fecha: 28-10-2022 12:39:05 Ahi corregí, me estaba faltando el item 27, y estaba informando mal el CBU, yo puse floatval como si fuese un CUIT, pero los CBU empiezan la mayoría con 0 y floatval quita los ceros a la izquierda.
El item 2101 es un CBU.
Gracias Carlos. Votos: 0 - Link respuesta -
Fecha: 28-10-2022 13:09:24 Marcelo, disculpa que te hice una copia directa del codigo, $row['cuit_asoc'] es en realidad el CBU lo que pasa que utilice el registro de la base de datos para varias opciones y me quedo asi de feo Votos: 0 - Link respuesta
-
Fecha: 28-10-2022 15:15:02 Todo bien, tu respuesta me sirvió para saber que me faltaba el item con el código 27.
Saludos y gracias nuevamente. Votos: 0 - Link respuesta -
Fecha: 01-12-2022 04:26:28 Saben porque los nuevos certificados nuevos salen con vencimiento el 26/09/2024 en lugar de ser por 2 años? Votos: 0 - Link respuesta
-
Fecha: 01-12-2022 05:08:04 MARCELA
Buenas tardes
Ver: https://www.afip.gob.ar/ws/documentacion/ws-factura-electronica.asp Votos: 0 - Link respuesta -
Fecha: 01-12-2022 14:20:29 El tema es que el certificado maestro de afip, que usan para firmar los certificados de los contribuyentes, vence el 26/09/2024.
Por ese motivo, NINGUN certificado firmado con el certificado maestro de AFIP puede vencer luego de esa fecha, una vez que AFIP renueve su certificado, los que se emitan con posterioridad volveran a tener 2 años de vigencia. Votos: 0 - Link respuesta -
Fecha: 06-12-2022 19:09:47 Buen dia, alguien sabe si se puede informar tarjeta de debito y/o credito con su numero como medio de pago de la factura a traves del web service de AFIP? No lo veo en las especificaciones o manual para el desarrollador. A traves de la web si se puede. Votos: 0 - Link respuesta
-
Fecha: 07-12-2022 02:02:37 Giuliano
No es OBLIGATORIO, ya que las Tarjetas y los bancos son Agentes de Informacion y se ocupan de ello.
Si vos queres manejar esa informacion para la empresa debe ser muy discrecional, ya que tendria el Nro de Trajeta, Fecha de Vto y Codigo ... elementos que cualquiera puede utilizar para hacer fraude electronico.
Un saludo Votos: 0 - Link respuesta -
Fecha: 07-12-2022 05:21:26 Como bien dice Antuan, la AFIP no requiere informar la forma en que se abona una factura. En la web de "Comprobantes en línea" de AFIP está la opción, pero es solo informativa a fines de control del usuario. Esa info la podés ingresar y controlar desde tu sistema de facturación, si necesitas guardar con que medio de pago se canceló cada factura, e imprimir la info junto con la factura, pero obviamente no el CVC ni el número completo de la tarjeta. Votos: 0 - Link respuesta
-
Fecha: 11-12-2022 07:39:38 ok muchas gracias a los 2! Ahora me devuelve el CAE, pero en "Mis comprobantes" en la pagina de AFIP no veo el comprobante en emitidos...que puede ser?
Ya di de alta un punto de venta y tengo configuradas las url de WSAA y WSFE de produccion. Votos: 0 - Link respuesta -
Fecha: 11-12-2022 10:10:58 Si estás usando la librería de Ivan Muñoz, podes consultar el comprobante con:
$afip = new Afip(array('CUIT' => $CUIT,'production' => TRUE)); $voucher_info = $afip->GetVoucherInfo($nrocomprobante,$puntoventa,$tipo); if($voucher_info === NULL){ echo "No se encontró comprobante con esos datos"; } else { echo "fecha =". $voucher_info->CbteFch; echo "<br>vence =". $voucher_info->FchVto; echo "<br>cuit =". $voucher_info->DocNro; echo "<br>neto =". $voucher_info->ImpNeto; echo "<br>exen =". $voucher_info->ImpOpEx; echo "<br>trib =". $voucher_info->ImpTrib; echo "<br>iva =". $voucher_info->ImpIVA; echo "<br>total =". $voucher_info->ImpTotal; echo "<br>cae =". $voucher_info->CodAutorizacion; }
$tipo es:
1 (Factura A)
6 (Factura B)
3 (Nota de credito A)
8 (Nota de credito B)
2 (Nota de debito A)
7 (Nota de debito B)
Si está registrado en AFIP, te va a devolver los datos. Votos: 0 - Link respuesta -
Fecha: 12-12-2022 17:36:12 ok gracias Marcelo Mozzi igual en la pagina de AFIP se pueden constatar comprobantes. Lo que lei que al dar de alta un punto de venta para aplicativo rece o webservice hay que esperar 72hs para que se habilite. En ABM de puntos de venta no tengo el tilde en "Usado" como que no esta habilitado seria? Votos: 0 - Link respuesta
-
Fecha: 14-12-2022 08:44:06 Otra consulta.. Es necesario entrar en el administrador de relaciones en afip y autorizar un computador fiscal para usarlo en producción?
PD: acabo de leer todos los pasos solo que obtengo error al dar de alta el computador cunado pego el contenido del .crt para obtener el .pem Votos: 0 - Link respuesta -
Fecha: 16-12-2022 09:30:09 Otra consulta: el certificado que se descarga desde: Administración de Certificados Digitales, en modo produccion seria, como genero un .pfx a partir de es .crt? Votos: 0 - Link respuesta
-
Fecha: 16-12-2022 10:19:57 El archivo que cargas en el administrador de certificados digitales en AFIP tiene extensión csr, y el que descargas tiene extensión crt. Ese archivo que descargás mas el archivo con extensión .key son los tenes que usar para auntentificar el webservice. Votos: 0 - Link respuesta
-
Fecha: 03-02-2023 03:09:22 Hola a todos.
Estoy teniendo problemas con AFIP, no retorna CAE, como si hubiese falta de comunicación
A alguien más le está pasando? Votos: 0 - Link respuesta -
Fecha: 03-02-2023 03:52:47 Marcelo, esta caído el servicio web desde las 8.00 a.m. aproximadamente y en su pagina también ! Votos: 0 - Link respuesta
-
Fecha: 03-02-2023 03:57:53 Ups!!!! ya estaba pensando que hicieron un cambio en la programación y tenía que revisar los códigos.
Muchas gracias Carlos por avisar, ¿cual es el link para verificar el estado de los servidores de AFIP? Votos: 0 - Link respuesta -
Fecha: 03-02-2023 04:52:54 Marcelo el mismo servicio web te envia el mensaje de "servicio no disponible " ( en ingles obvio ) , y tambien me conecto con https://groups.google.com/g/pyafipws que es el de los que tienen facturacion con pyton y se vuelven locos como nosotros. 11:30 revivio el servicio Votos: 0 - Link respuesta
-
Fecha: 03-02-2023 05:11:32 Si Carlos, en mi sistema puse que capture y muestre el error cuando no conecta, pero aparecía vacío.
Gracias nuevamente. Votos: 0 - Link respuesta -
Fecha: 06-03-2023 13:54:56 Hola, buenas tardes.
Esta tarde me empezó a salir un error al hacer recibos electrónicos, sin haber hecho ningún cambio en el sistema, el error es el siguiente:
TA
expiration:2023-03-06T21:51:54.609-03:00C:\wamp64\www\recibos\wsfev1.c
lass.php:83 WSFE class. FaultString: HTTP Failed Sending HTTP SOAP
request
Alguna ayuda? Grcias. Votos: 0 - Link respuesta -
Fecha: 06-03-2023 15:03:03 Estas seguro que la fecha de la PC o servidor que ejecuta el script es correcta? Votos: 0 - Link respuesta
-
Fecha: 06-03-2023 15:47:52 Si, es lo primero que controlé. Pero aparentemente fue un problema de AFIP, porque a partir de una hora determinada (21+-), los mismos recibo que antes no salían, empezaron a salir bien. Cosa de locos esta AFIP!!!! Gracias Marcelo por tu respuesta. Votos: 0 - Link respuesta
-
Fecha: 21-03-2023 09:24:52 Hola, buenas tardes
Tengo clientes RI que venden alimentos y se ven afectados por esta nueva resolucion de AFIP que salio el 13/02 (RG 5329) por la cual partir del 1 de abril tienen que ser agentes de percepcion, por eso cuando emitan una factura a otro RI deberan cobrarle una percepcion de 3% del total. Entiendo que esto hay que pasarselo a la afip en el campo de tributos con el ID 6, pero mi duda es si al enviar este campo tributos informando percepciones tengo que enviar tambien el periodo asociado y en ese caso que fechas serian la que hay que pasar? Votos: 0 - Link respuesta -
Fecha: 14-04-2023 06:51:46 Hola, tengo este problema en este momento, a ustedes les pasa:
[Code] => 600
[Msg] => ValidacionDeToken: No validaron las fechas del token GenTime, ExpTime, NowUTC: 1681486770 (4/14/2023 3:39:00 PM), 1681530030 (4/15/2023 3:40:30 AM), 4/14/2023 12:44:46 PM Votos: 0 - Link respuesta -
Fecha: 14-04-2023 07:02:33 El problema anterior fue resuelto por AFIP, se ve que es un problema temporal. Votos: 0 - Link respuesta
-
Fecha: 09-05-2023 09:02:14 Buen día.
¿Alguien sabe si se eliminó el padronA5. Hoya tuve que renovar el certificado de un cliente y al querer asociarlo no figura en la lista de webservice.?
De ser así, ¿el único que queda es el A10? Votos: 0 - Link respuesta -
Fecha: 17-05-2023 06:37:13 Hola a todos, que tal?
Un cliente me pidió poder factura de crédito desde el sistema. La verdad que no estaba al tanto de esos comprobantes.
¿Se pueden hacer con wsfe? veo que hay un ws FECredSCAService también...
¿Alguien hizo este tipo de facturas? ¿Qué me pueden comentar al respecto? Votos: 0 - Link respuesta -
Fecha: 17-05-2023 08:35:09 Si te referís a FCE (Factura de Crédito Electrónica), si, se puede.
Yo uso la librería de Ivan Muñoz.
Para Factura de Crédito Electrónica le agrego el siguiente "Opcional":
'Opcionales' => array( array( 'Id' => 2101, 'Valor' => $CBU ), array( 'Id' => 27, 'Valor' => 'SCA' ) )
El id 2101 indica que se ingresa un CBU, el id 2102 indica que se ingresa un Alias.
El ID 27 indica si es "Sistema de Circulación Abierto” (SCA) o por un “Agente de Depósito Colectivo” (ADC).
Normalmente se usa "SCA"
Y si es Nota de Crédito Electrónica:
'Opcionales' => array( array( 'Id' => 22, 'Valor' => 'N' ), array( 'CbteTipo' => intval($asoctipo), 'CbteFch' => intval($fechaCompAsoc), 'PtoVta' => intval($asocpvta), 'Nro' => intval($asocfac), 'Cuit' => floatval($CUIT) ) )
En el id 22, el valor indica si la factura asociada fue rechazado por el comprador (S) o es iniciativa del emisor (N). Normalmente se usa N, nunca usé S.
En el segundo Array se ponen los datos de la Factura Asociada.
Recordá que el tipo de comprobante de FCE es diferente a la factura común.
Acá tenés una descripción de los códigos y tipos de comprobante: FCE Votos: 0 - Link respuesta -
Fecha: 17-05-2023 10:19:27 O sea que sigue siendo una factura A? pero con esos datos en "opcionales" como si pasara CbtesAsoc o Tributos...a ese nivel...
Estoy viendo en la documentación que esos códigos deberían venir en FEParamGetTiposOpcional() Votos: 0 - Link respuesta -
Fecha: 17-05-2023 11:39:07 Si, la diferencia es que FCE tiene otro código.
Factura A a Resp. Inscripto es código 01, y FCE es código 201. Se le agrega un dos delante del código estandar.
La Factura FCE debe llevar la leyenda "Factura de Crédito Electrónica" y tiene su propio Nro de Pto de venta, diferente a la factura común. Votos: 0 - Link respuesta -
Fecha: 14-06-2023 08:08:45 Amigos, les pongo una curiosidad.
Le pregunté a ChatGPT, la inteligencia artifical, que me haga un código en PHP para obtener CAE, fecha de vencimiento y número de comprobante con un webservice de AFIP.
Me puso lo siguiente:
// AFIP Web Service URL $wsdlUrl = 'https://wswhomo.afip.gov.ar/wsfev1/service.asmx?WSDL'; // AFIP CUIT (tax identification number) $cuit = 'YOUR_CUIT'; // AFIP Certificate path $certificatePath = 'path/to/your/certificate.pfx'; // AFIP Certificate password $certificatePassword = 'YOUR_CERTIFICATE_PASSWORD'; // Create SOAP client $client = new SoapClient($wsdlUrl, array('soap_version' => SOAP_1_2)); // Load certificate $cert = file_get_contents($certificatePath); $pkcs12 = openssl_pkcs12_read($cert, $key, $certificatePassword); // Set authorization header $authHeader = array( 'token' => 'YOUR_LOGIN_TICKET', 'sign' => 'YOUR_LOGIN_TICKET_SIGN', 'cuitRepresentada' => $cuit ); // Request CAE $params = array( 'Auth' => $authHeader, 'FeCAEReq' => array( 'FeCabReq' => array( 'CantReg' => 1, // Number of invoices to authorize 'PtoVta' => 1, // Sales point number 'CbteTipo' => 6 // Invoice type (e.g., 6 for Factura B) ), 'FeDetReq' => array( 'FECAEDetRequest' => array( 'Concepto' => 1, // Invoice concept (e.g., 1 for Productos) 'DocTipo' => 80, // Buyer's document type (e.g., 80 for CUIT) 'DocNro' => '12345678901', // Buyer's document number 'CbteDesde' => 1, // Invoice number (starting from) 'CbteHasta' => 1, // Invoice number (ending at) 'ImpTotal' => 100.00, // Total invoice amount 'ImpNeto' => 81.97, // Net amount 'ImpIVA' => 18.03, // VAT amount 'FchServDesde' => date('Ymd'), // Service start date 'FchServHasta' => date('Ymd'), // Service end date 'FchVtoPago' => date('Ymd', strtotime('+15 days')), // Payment due date 'Tributos' => array( 'Tributo' => array( 'Id' => 1, // ID of the tax (e.g., 1 for IVA) 'Desc' => 'IVA', // Description of the tax 'BaseImp' => 81.97, // Taxable base amount 'Alic' => 21.00, // Tax rate (e.g., 21% for IVA) 'Importe' => 17.21 // Tax amount ), 'Tributo' => array( 'Id' => 2, // ID of another tax 'Desc' => 'Otro Impuesto', // Description of the tax 'BaseImp' => 81.97, // Taxable base amount 'Alic' => 10.00, // Tax rate 'Importe' => 8.20 // Tax amount ) ) ) ) ) ); $result = $client->__soapCall('FECAESolicitar', $params); // Extract the CAE number from the result $cae = $result->FeDetResp->FECAEDetResponse->CAE; // Print the CAE number echo 'CAE: ' . $cae; // Extract the due date from the result $dueDate = $result->FeDetResp->FECAEDetResponse->FchVtoPago; // Print the due date echo 'Due Date: ' . $dueDate; // Extract the voucher number from the result $voucherNumber = $result->FeDetResp->FECAEDetResponse->CbteDesde; // Print the voucher number echo 'Voucher Number: ' . $voucherNumber;
No lo probé pero el código se ve correcto, es impresionante. Votos: 0 - Link respuesta -
Fecha: 14-06-2023 08:17:36 Y acá les dejo un programa gratuito para generar los certificados csr, key y pfx.
Lo descargan desde: https://afipcert.logico.ar/
Descripción y forma de uso: afipcert Votos: 0 - Link respuesta -
Fecha: 14-06-2023 08:29:47 Este es el acceso al chat que tuve con la inteligencia artifical, para que vean como pregunté (en inglés que es donde mejor se desempeña ChatGPT):
ChatGPT Votos: 0 - Link respuesta -
Fecha: 22-06-2023 08:42:31 Hola Gente buenos dias, de nuevo aca lance la pregunta hace un par de anos y luego abandone jaja.
Me puse a implementarlo de una vez y me surgieron algunas dudas. todo en homologacion funciona y obtengo el CAE, Genero el QR segun lo que me solicita AFIP en un json en base64. hasta ahi todo bien, mi duda es que valor debo conservar ademas del CAE, todo el json para el QR y con eso basta?
Me queda aun realizar el pdf con php para entregar a los clientes, se copia algo parecido a la que genera Afip? alguien armo alguna estructura no quiero meter la pata que sea error al imprimirla.
Otra duda que me surge es al generarla por el webservice si uno entra a la afip puede imprimir la factura o solamente la va a ver en comprobantes emitidos.
Perdon tantas consultas. Saludos Votos: 0 - Link respuesta -
Fecha: 22-06-2023 10:19:52 Hola Sebastián. Además de la data de fecha, productos, impuestos, cantidades, etc típicos de una venta, los datos emitidos por AFIP que guardo de cada factura son: CAE, fecha de vencimiento y número de comprobante. Esos tres datos, más el QR, punto de venta y tipo de factura (A, B, nota de crédito, etc) deben ir en la factura.
La factura (o ticket) debe llevar un encabezado con el nombre del comercio, CUIT, inicio de actividades, dirección y teléfono, y si es Resp. Inscripto, Monotributo, etc. Votos: 0 - Link respuesta -
Fecha: 22-06-2023 10:51:34 Respecto de imprimir facturas en AFIP, generadas por Webservice, hasta donde yo se no se podía, solo se puede listar las facturas emitidas. Desconozco si ahora se puede. De todos modos desde tu sistema, con todos los datos correctos guardados de cada factura, tendrías que poder imprimir o reimprimir cuando desees. Votos: 0 - Link respuesta
-
Fecha: 22-06-2023 15:34:16 Hola Marcelo genial entonces no hay una normativa de como tiene que ir impresa solo el pie donde esta el CAE, fecha de vencimiento y QR. el QR lo genero y me lleva a la web de afip con los datos hasta en homologcion, si el QR estaria mal no mostraria no? eso es correcto.
el importe Total en el QR es el total final con impuestos no? esa eran las dudas. desde ya muchas gracias Votos: 0 - Link respuesta -
Fecha: 22-06-2023 17:13:26 La verdad, nunca probé el QR en homologación.
El total debe ser el total final de la factura con todos los impuestos. Votos: 0 - Link respuesta -
Fecha: 23-06-2023 00:55:23 El qr te lleva a la verificación de la factura en afip. Luego "creo que hay un captcha" y ahí certificas la factura Votos: 0 - Link respuesta
-
Fecha: 23-06-2023 04:05:12 Genial muchas gracias por las respuesta, armar el pdf entonces.
Leandro si vi lo del lcaptcha hoy pruebo a ver qué me sale Votos: 0 - Link respuesta -
Fecha: 23-06-2023 05:02:15 Así se conforma el json con los datos para el QR (en PHP):
$data = '{"ver":1,"fecha":"'.$fecha.'","cuit":'.$cuit.',"ptoVta":'.$pvta.',"tipoCmp":'.$tc.',"nroCmp":'.$nfc.',"importe":'.$totalfinal.',"moneda":"PES","ctz":1,"tipoDocRec":'.$tipodoc.',"nroDocRec":'.$cuit.',"tipoCodAut":"E","codAut":'.$cae.'}'; $datos = base64_encode($data);
$fecha es la fecha que se generó la factura, no la fecha de vencimiento emitida por AFIP, en formato AAAA-MM-DD
$tipodoc es 99 para consumidor final (se informa 0 como nro de documento), y 80 para cuit
y este es el string que debés usar para generar el QR:
https://www.afip.gob.ar/fe/qr/?p=".$datos; Votos: 0 - Link respuesta -
Fecha: 23-06-2023 06:08:37 Genial en la base de datos guardas el json en campo json o la data en base 64 en caso de este bajo con que tipo de dato. creo que ambas son validas. Fecha seria la respuesta CbteFech?
Ahora otro duda los los tributos los tienes en la misma tabla de la base de datos o otra tabla tributo ejemplo si una factura tiene ida 10,5 y 21 el importe lo relacionas en otra tabla o todo en la misma? Votos: 0 - Link respuesta -
Fecha: 23-06-2023 06:19:17 No guardo el json, lo genero en PHP cada vez que sea necesario, con los datos de la factura que estan guardados en la DB.
La fecha es la misma que CbteFech, no estoy seguro ahora si el formato devuelto es el mismo (AAAA-MM-DD).
Los tributos, yo los guardo en el mismo campo de los productos vendidos, porque hay productos en una misma factura que pueden tener diferente iVA, porejemplo tengo de clientes carnicerías, que pagan 10.5% por la carne, pero 21% por el resto (bebidas, carbón, etc).
Uso dos tablas, una llamada "facturas" donde están todos los productos con precios, cantidad, impuestos, etc, y otra llamada "ivaventa" donde hay un campo por factura, con el total de la factura y los totales de IVA, retenciones, percepciones, CAE, Vencimiento del CAE, número de comprobante, etc.
Cada quien lo hace a su gusto y comodidad según el sistema que tenga hecho. Votos: 0 - Link respuesta -
Fecha: 23-06-2023 07:43:06 Si marcelo tal cual el iva lo calculas cada vez que lo necesitas. Yo tengo en venta detalle cada producto con su IVA a donde tb tengo algunos al 10.5 y otros al 21. Creo que tengo todo funcionando por separado queda unir todo y pasar a producción. Gracias por todo el dato. Votos: 0 - Link respuesta
-
Fecha: 23-06-2023 07:45:39 Sobre la fecha la devuelve con el formato pero sin el Guion medio y el json lo pide así. Lo que hice los formateo y veré que sale Votos: 0 - Link respuesta
-
Fecha: 28-06-2023 08:09:29 Hola buenas tardes, Sigo con algunas dudas. Al generar la factura no me devuelve la razón social ni el domicilio,y tampoco nos solicita al pedir el CAE.
Estuve haciendo pruebas con el padron A5 pero en test con los cuit que consulte me dice que no existen.
Como lo hacen habitualmente en producción el padron funciona bien? o le solicitan la constancia de inscripción al cliente y cargan los datos directo en la base de datos para luego imprimir la factura?. Desde ya muchas Gracias Saludos Votos: 0 - Link respuesta -
Fecha: 28-06-2023 09:06:59 Hola Sebastián. El padronA5 en producción trae todos los dato. En prueba a mi me trae datos incompletos o que no son correctos. Por otra parte el padrón A5 ya no esta disponible en las opciones de "Administración de Relaciones" (o yo no lo encuentro). Yo utilizo "Consulta de constancia de inscripción". Votos: 0 - Link respuesta
-
Fecha: 28-06-2023 09:59:19 El padrón A5 no funciona. Tenes que apuntar a constancia de inscripción como dijo matias.
Creo que funciona solo el producción Votos: 0 - Link respuesta -
Fecha: 28-06-2023 11:12:11 Gracias por responder, hay algún ejemplo dando vuelta de la consulta de inscripción? Votos: 0 - Link respuesta
-
Fecha: 28-06-2023 12:11:34 Fíjate acá si te sirve. Yo uso afip sdk
https://github.com/AfipSDK/afip.php/issues/147 Votos: 0 - Link respuesta -
Fecha: 28-06-2023 14:15:57 Ahi encontre un manual y hay una nueva versión. el metodo getPersona cambio a getPersona_v2.
según el manual el anterior sigue funcionando pero se alienta a cambiar.
En homologación no me esta trayendo los datos pero me informa que no existe el id. Cuando pase a producción probare y comento.
si alguien ya lo esta usando cualquier cosa que comente.
gracias Votos: 0 - Link respuesta -
Fecha: 07-09-2023 08:01:00 Buenas tardes a todos.
Me está dando un cliente un error:
"Error: (600) ValidacionDeToken: No aparecio CUIT en lista de relaciones"
Pero hasta que apareció ese error, estaba imprimiendo bien, y en AFIP el certificado vence en el 2024.
¿A alguien le pasó algo parecido? Votos: 0 - Link respuesta -
Fecha: 07-09-2023 11:18:05 Marcelo, cada tanto me pasa algo parecido y lo que hago es reemplazar el ticket xml que envías con cuit , la hora y Credencial anterior y todo regresa a la normalidad ( de hecho tuve que inventarme una opcion en el sistema que la llame generar Token ) Votos: 0 - Link respuesta
-
Fecha: 07-09-2023 11:40:19 Gracias Carlos, pero yo uso la librería de Ivan Muñoz, ¿sabés como se haría eso con esa librería?
PD.: borré el xml que se había generado y empezó a funcionar normalemte Votos: 0 - Link respuesta -
Fecha: 07-09-2023 15:20:39 Marcelo, no conozco esa librería, pero si sabes la ubicacion relativa de ese xml en tu servidor, hace una opción que simplemente la elimine y reinicie, porque lo que te esta pasando es que no se renueva porque lo mas probable es que el sistema no lo considere vencido y vos a borrarlo lo obligas a reenviar una nueva autorización Votos: 0 - Link respuesta
-
Fecha: 11-09-2023 12:41:55 Hola a todos!
Ya que se dio de baja el PadronA5, tengo que asociarle a todos mis clientes este nuevo servicio de consulta (ws_sr_constancia_inscripcion)
El tema es que me resulta super engorroso hacerlo por cada uno, hay alguna forma de masivamente editar los ws asociados a los cuits para los que tengo autorizacion via certificados digitales? Votos: 0 - Link respuesta -
Fecha: 12-09-2023 04:16:58 Buen día a todos.
El padrón A5 sigue funcionando. Lo que no se puede hacer es asociar nuevos certificados. Yo lo que hice fue que si el A5 no responde busque en el constancia de Inscripción y si no en el A13.
Saludos Votos: 0 - Link respuesta -
Fecha: 13-09-2023 05:07:18 Se que sigue funcionando, pero lo que pregunto es si alguien conoce una forma mas sencilla de editar los ws asociados a un cuit
Si el dia de mañana quiero agregar un nuevo ws a mi sistema, tengo que ir cliente por cliente y adherirlo al nuevo servicio, busco la forma de hacerlo masivamente ya sea desde la propia interfaz de afip a traves de algun ws que se pueda automatizar Votos: 0 - Link respuesta -
Fecha: 21-09-2023 06:06:46 Buen día a todos.
¿Alguien sabe como se puede comprobar en tiempo real si se recibió una transferencia hecha a un alias o CBU de un banco?
La pregunta viene porque tengo comercios que han sido estafados en varias oportunidas cuando les pagan con UALA, Brubank, MercadoPago, etc y necesitan saber si el pago fue realizado antes de entregar la mercadería.
Gracias! Votos: 0 - Link respuesta -
Fecha: 21-09-2023 08:48:06 Hola Marcelo, revisando la cuenta. En mi caso hay veces que las transferencias al banco tardan varias horas en aparecer dependiendo del banco. En mercadopago suele aparecer rápido. Igualmente lo recomendable es no entregar hasta que no se refleje el pago, eso depende de la tolerancia que se tenga al perder. A parte de eso yo les hago firmar un comprobante de entrega con el número de transferencia. Tanto la cuenta bancaria como la de mercadopago se puede ver desde la app o bien desde la web. Como te digo es la tolerancia, en mi caso que esperen, pero en un kiosco no van a esperar una hora por un pago. Votos: 0 - Link respuesta
-
Fecha: 21-09-2023 09:28:15 Gracias María.
El cliente que tengo que implementarle una solución es una cadena de carnicerías, con mucha rotación por lo que no pueden esperar a ver si se acredita si demora.
Con Mercadopago lo implementé relativamente fácil usando el API y las herramientas que provee, pero con otros servicios hasta ahora la única forma que encontré es que abran un browser al homebanking del banco y chequeen luego de un pago si se acreditó.
Lo que pasa es que mi cliente me contó que otro comercio conocido de ellos tuvieron el mismo problema y le implementaron en su sistema un control para chequear las transferencias, no se hasta que punto será cierto, o si será así como el dice, y no quiero correr el riesgo que siquiera piensen en usar otro sistema... Votos: 0 - Link respuesta -
Fecha: 21-09-2023 11:45:59 Eso calculo que dependerá del banco que tenga el dueño de la cadena. Igualmente eso no va a garantizar que el pago se acredite, lo primero que se ve es el código de que está en proceso. Pero me ha pasado de que que pasado un cierto tiempo la transferencia sea rechazada no se porque, me paso a mi entre cuentas. Santander se puede consultar a través de web service. Votos: 0 - Link respuesta
-
Fecha: 17-01-2024 04:06:02 Bueno, vamos a reactivar un poco este hilo!!!
Me está pasando con un cliente, el cual me ha autorizado para la administración de certificados digitales, que no le puedo asociar el wsfe
El error es:
Ha ocurrido un error en la ejecución del sistema. El mensaje del error es :
No esta autorizado a delegar ese servicio
Para obtener ayuda respecto a este error, envie un correo electronico a mayuda@afip.gov.ar mencionando el Número de Ticket XXXXXXX como referencia a su situación.
El correo no funciona más, te dicen de usar el formulario de ayuda de la web pero no me responde nadie
Alguien sabe que puede estar pasando? Votos: 0 - Link respuesta -
Fecha: 17-01-2024 05:48:19 Hola Matías. Feliz año para todos.
Tengo entendido que hace falta clave fiscal nivel 3 para certificados digitales. ¿Verificaste que la CUIT de tu cliente tenga ese nivel?
Por otro lado, si el cliente tiene deudas fiscales también puede tener impedimentos.
En AFIP aclaran también lo siguiente:
-Si se está habilitando un servicio en representación de otra persona se debe acceder por el ítem “Administrador de Relaciones de Clave Fiscal” y luego seleccionar el botón “Nueva Relación”. Asimismo, en la pantalla donde se encuentran estas opciones están los detalles de cada botón explicando el uso de cada uno de ellos.
Acá puede haber algo que quizás ayude: https://servicioscf.afip.gob.ar/publico/abc/ABCpaso2.aspx?id=5614418 Votos: 0 - Link respuesta -
Fecha: 17-01-2024 10:22:25 Matias , los servicios web no se pueden delegar, lo que te falta es asociar el servicio al certificado que seguramente creaste. o le pedis la clave y lo haces ( total la puede cambiar cuando quiera ) o le das las instrucciones Votos: 0 - Link respuesta
-
Fecha: 17-01-2024 12:17:49 yo lo que hago es un engaña pichanga
1) voy a "Administrador de Relaciones de Clave Fiscal"
2) apreto "Adherir servicio" y dejo la pestaña abierta (dice Actuando en representación de [yo])
3) vuelvo al menu principal y voy a "Administración de Certificados Digitales"
4) elijo el cuit de mi cliente (previamente me autorizó y le cree el certificado)
5) ahora la sesion queda para ese cliente, entonces vuelvo al paso 2 y le doy F5 (ahora dice Actuando en representación de [cliente])
6) ahora puedo asociar ws para el cuit de mi cliente Votos: 0 - Link respuesta -
Fecha: 17-01-2024 13:11:58 Según lei, desde el Cuit del Representante hay que poner VINCULAR NUEVA RELACIÓN en lugar de ADHERIR SERVICIO Votos: 0 - Link respuesta
-
Fecha: 17-01-2024 15:46:10 Es como vos decis Marcelo, se debe vincular como nueva relacion y eso funciona con Servicios AFIP. el tema esta cuando queres hacer lo mismo pero para servicios web, eso no se puede. el punto es que tenes que vincular el primer certificado al Servicio web como computador1 ( por ejemplo ) y después si con administración de Certificados digitales lo vas renovando Votos: 0 - Link respuesta
-
Fecha: 22-01-2024 07:04:36 (esta semana doy de alta un nuevo cliente, ahi me voy a enterar si el problema viene por el cuit o por el procedimiento)
Les hago otra consulta, estoy implementando la factura de crédito electrónica. Ya tengo todo armado pero tengo hardcodeado el tope de facturación a $546.737 (hoy 2024-01-22)
https://servicioscf.afip.gob.ar/facturadecreditoelectronica/conceptos/caracteristicas.asp
Hay forma de obtener ese valor dinámicamente? Votos: 0 - Link respuesta -
Fecha: 24-01-2024 10:43:23 Hola Matías.
No encontré la forma de obtenerlo por webservices, "temporalmente" lo solucioné en forma muy chapucera parseando esa página que pusiste para obtener el valor. Desde hace 3 años al menos en esa página solo se actualiza el monto, así que por ahora funciona. Votos: 0 - Link respuesta -
Fecha: 24-01-2024 13:09:45 Gracias Marcelo, también lo había pensado así que te voy a seguir en la idea!!
Muy pobre lo de afip con este tipo de cosas... Votos: 0 - Link respuesta -
Fecha: 24-01-2024 13:13:03 En otro orden de cosas, di de alta un nuevo cliente y pude asociarle los servicios con el procedimiento que les comenté Votos: 0 - Link respuesta
-
Fecha: 17-05-2024 12:10:23 Hola a todos
Les hago una consulta...yo tenia entendido que si pasaba DNI 11111111, AFIP lo tomaba como consumidor final.
Pero un contador me dice que esto no es así y que en AFIP los comprobantes están saliendo a nombre de LOPEZ GLADYS AZUCENA con CUIT 24-11111111-8
Entonces la pregunta sería, como generar una factura a consumidor final sin pasar identificación?
Según la documentación, es obligatorio especificar la identificación del cliente...así estoy en duda de como debo hacer.... Votos: 0 - Link respuesta -
Fecha: 17-05-2024 13:54:35 Matías, para DocTipo = 99 (consumidor final) yo paso 0 (cero) como número de DNI.
Siempre funcionó así.
Te muestro un ticket que hice, autorizado por AFIP como Consumidor Final:
Imagen Afip Votos: 0 - Link respuesta -
Fecha: 17-05-2024 14:40:18 Matías coincido con Marcelo, uso DocTipo = 99 (consumidor final) y paso 0 (cero) como número de DNI. Votos: 0 - Link respuesta
-
Fecha: 17-05-2024 15:59:50 Muchas gracias Marcelo y María!
Voy a hacer los ajustes en el sistema... Votos: 0 - Link respuesta -
Fecha: 19-06-2024 10:46:21 El error: Could not connect to host
Como lo solucionaron? o es falla de AFIP? Votos: 0 - Link respuesta -
Fecha: 19-06-2024 14:09:26 Desde donde te conectas? xampp en Windows? Ubuntu? un hosting web?
Lo estabas usando bien y empezó a dar ese error, o es el primer uso?
Votos: 0 - Link respuesta -
Fecha: 20-06-2024 06:45:26 Hola a todos,
A mi me empezo a pasar ayer tambien en un hosting web. Dejo de funcionar de un dia para el otro en un servidor y hoy ya no me anda en ningun servidor, la empresa de hosting me dijo que puede ser debido a un problema con el handshake del certificado SSL del sitio de Afip, lo que recomendaban era momentaneamente bajar al nivel de seguridad minima en caso de conectarse con el servicio por curl, o sea algo asi:
curl_setopt($curl,CURLOPT_SSL_CIPHER_LIST,'DEFAULT@SECLEVEL=1');
Yo uso SoapClient no curl, lo que hice fue agregar en new SoapClient esto:
'stream_context' => stream_context_create(['ssl' => [ 'ciphers' => 'AES256-SHA', 'verify_peer' => false, 'verify_peer_name' => false ] ])
Me quedo asi:
new SoapClient($servicio, array( 'soap_version' => SOAP_1_2, 'location' => self::WSFEURL, 'exceptions' => 0, 'trace' => 1, 'stream_context' => stream_context_create([ 'ssl' => [ 'ciphers' => 'AES256-SHA', 'verify_peer' => false, 'verify_peer_name' => false ] ]) ));
Dejo la direccion donde saque la informacion por si a alguien le sirve:
https://github.com/AfipSDK/afip.php/issues/5 Votos: 1 - Link respuesta -
Fecha: 20-06-2024 08:10:48 Hola Pablo verificaste que no se haya vencido el certificado. Para verificar debes ir desde AFIP a Mis servicios -> ADMINISTRACIÓN DE CERTIFICADOS DIGITALES -> ver Detalle Votos: 0 - Link respuesta
-
Fecha: 20-06-2024 09:23:12 Pablo, con ese agregado solucionaste el error "Could not connect to host", u otro error? Votos: 0 - Link respuesta
-
Fecha: 20-06-2024 09:26:01 María, no creo que sean los certificados porque el error en ese caso es más específico, algo así como:
"SOAP Fault: ns1:cms.cert.expired Certificado expirado" Votos: 0 - Link respuesta -
Fecha: 20-06-2024 10:03:26 Hola Marcelo,
Si en principio pense que tenia que ver con el certificado del cliente puntual que me reporto el problema pero despues me di cuenta que no le funcionaba a ningun cliente de todos los que estan alojados en ese servidor, en los otros servidores seguia funcionando normalmente. Hoy directamente ya no funcionaba en ningun servidor en todos tiraba el mismo error de conexion. Votos: 0 - Link respuesta -
Fecha: 27-06-2024 02:27:09 Hola, a mi tambien me acaba de pasar en uno de los host , me da FaultString: HTTP Could not connect to host, lo raro es que tengo otros 5 que funcionan normalmente Votos: 0 - Link respuesta
-
Fecha: 27-06-2024 02:38:59 Agregue lo que dijo pablo y MAGIA --- ahora funciona ! --- Gracias Pablo por tu aporte Votos: 0 - Link respuesta
-
Fecha: 01-07-2024 06:31:28 Hola a todos.
¿A alguien le está dando el error "10000 - No autorizado a emitir comprobantes. La CUIT informada no se encuentra autorizada a emitir comprobantes clase A"?
Puede ser un tema puntual con un cliente, pero me quiero asegurar que no haya un problema generalizado. Votos: 0 - Link respuesta -
Fecha: 01-07-2024 07:19:38 Efectivamente es un problema con el cuit del emisor y lo que tenes que hacer hasta que se resuelva es o dejar de facturar o emitir comprobantes clase M
Si optas por los M, luego cuando se resuelva volvés a generar A
Hasta donde sé no hay una manera automática de cambiar de comprobantes según el estado del cuit
Acá hablo sobre el tema: https://www.phpcentral.com/pregunta/174/factura-electronica-en-argentina#resp_2cb274e6ce940f47beb8011d8ecb1462 Votos: 0 - Link respuesta -
Fecha: 01-07-2024 07:42:05 Gracías Matías, nunca trabajé con "M".
¿Como se informa desde el código? ¿igual que las "A"? Votos: 0 - Link respuesta -
Fecha: 01-07-2024 08:22:56 Es exactamente igual que la A, pero al código le sumas 50. Es decir:
Factura A = 1 / Factura M = 51
Nota de débito A = 2 / Nota de débito M = 52
Nota de crédito A = 3 / Factura M = 53
Después no cambia nada, informás todo tal cual como lo haces con la A
Ahora no recuerdo bien, pero creo que en la factura debe salir una leyenda que haga mención de esta situación. Yo particularmente no lo hago.
En cuanto tu cliente regularice su cuit volves a la A y listo (por lo genera pasa no presentar declaraciones jurada y esas cosas) Votos: 0 - Link respuesta -
Fecha: 01-07-2024 08:42:22 Muchas gracias Matías, si el cliente no regulariza su situación voy a ver si le implemto la M para que pueda seguir facturando mientras. Votos: 0 - Link respuesta
-
Fecha: 01-07-2024 10:16:43 Hola a todos.
Esto lo saque de la AFIP
Los comprobantes clase "M" deben cumplir con las condiciones y contener los requisitos previstos para los comprobantes clase "A", con las adecuaciones que a continuación se establecen:
a) La letra "M", en sustitución de la letra "A".
Tiene que tener debajo de la letra la siguinete leyenda .
"LA OPERACIÓN IGUAL O MAYOR A UN MIL PESOS ($ 1.000.-) ESTÁ SUJETA A RETENCIÓN".
A la mayoría de los clientes ( o sea los que reciben la factura) no les gusta que les entreguen un comprobante M por que tienen que actuar como agentes de retención. Deben retener I.V.A. Votos: 0 - Link respuesta -
Fecha: 01-07-2024 12:01:07 Así es,según lei el comprador tiene que retener el IVA y el 6% del monto restante a modo de Ganancias, que luego tiene que pagar a AFIP.
Es decir que de un ticket de $1210, solo le pagan al vendedor $940, es decir que el comprador retiene $210 de IVA y $60 del monto para rendir a AFIP.
En pocas palabras UN EMBOLE para el comprador... Votos: 0 - Link respuesta -
Fecha: 09-08-2024 14:17:37 Hola a todos!
Tengo un cliente que necesita hacer facturas A con cbu informado, por lo que hable con mi contadora es exactamente igual que la factura A normal, incluso continua la numeración, solo cambia que tiene que estar visible el cbu del emisor
Esto es tan así? Hay algo más que deba enviar a afip como información? o es meramente visual el cambio? Votos: 0 - Link respuesta -
Fecha: 09-08-2024 18:47:59 Según el art. 21 de la resol. Gral. 1575, la factura debe llevar la leyenda "PAGO EN C.B.U. INFORMADA" impresa debajo de la letra del comprobante.
Tengo entendido que el NRO de CBU no se informa en la factura, sino que se anexa una copia del comprobante de CBU que emite el banco.
Esa CBU tiene que estar informada en AFIP por el emisor. Votos: 0 - Link respuesta -
Fecha: 10-08-2024 04:18:40 Tal como dice Marcelo, solo debe llevar la leyenda, es otra de las estúpidas formas de Afip que no sirve para nada y especifica que toda operación en ese periodo debe ser depositada en la cuenta bancaria, no afecta ni a correlatividad, ni la operatoria Votos: 0 - Link respuesta
-
Fecha: 11-08-2024 11:24:04 Gracias chicos!
Bueno, entonces puedo dejar todo como está, total... Votos: 0 - Link respuesta -
Fecha: 18-09-2024 13:59:12 Buenas estoy arrancando con el webservice, hice una prueba segun el ejemplo de la web de afip para crear un TA WsaaClient::CreateTRA('wsfe'), genero el TA con Exito, modo prueba y produccion.
Ahora queria ver el padron x ej el ws_sr_padron_a13 o ws_sr_padron_a100, pero me indica q mi TA es para wsfe, entonces intento hacer lo mismo pero con CreateTRA('ws_sr_padron_a100'); pero no me devuelve ningun error, tampoco me crea un TA . alguna luz q me puedan dar sobre el tema, les estoy agradecido.
WsaaClient::CreateTRA('wsfe');
WsaaClient::CreateTRA('ws_sr_padron_a100');
Chat GPT me dio la respuesta, habilitar el servicio en la web de afip. Votos: 0 - Link respuesta -
Fecha: 27-09-2024 12:28:56 Hola a todos.
Pregunta: cuando quiero asociar el servicio de consulta a Padron A10 (con el A13 es igual), me da el error: "La persona no se encuentra habilitada para operar el servicio".
A la AFIP ingreso con otro CUIT, no el que estoy intentando asociar al servicio. ¿alguien sabe que me falta hacer? Votos: 0 - Link respuesta -
Fecha: 21-10-2024 05:52:10 Buen día. Desde las 11:10 aproxim. me está dando error el servicio de AFIP para autorizar las facturas A. ¿A alguien más le pasa?
Me tira:
(501) Error interno de base de datos: - Metodo FECompUltimoAutorizado
(500) Error interno de aplicación: - Metodo FECAESolicitar Votos: 0 - Link respuesta -
Fecha: 21-10-2024 07:22:58 Si, al menos tuve un reporte con respecto al primer error
Pero cada tanto pasa, no te preocupes. Y se arregla solo al cabo de unos minutos Votos: 0 - Link respuesta -
Fecha: 21-10-2024 07:31:45 Sí hoy me pasó, pero recién pude emitir con normalidad. Votos: 0 - Link respuesta
-
-
Fecha: 21-10-2024 09:45:37 Yo todavía tengo todas mis facturadores caídos: Service Unavailable Votos: 0 - Link respuesta
-
Fecha: 21-10-2024 10:26:22 No sé que tan temporal va a ser, acaban de anunciar que disuelven la AFIP y crean el ya no me acuerdo que. Como seguirá todo una incertidumbre. Votos: 0 - Link respuesta
-
Fecha: 21-10-2024 10:36:35 crean la Agencia de Recaudación y Control Aduanero (ARCA) Votos: 0 - Link respuesta
-
Fecha: 21-10-2024 10:59:49 https://tn.com.ar/economia/2024/10/21/el-gobierno-disolvio-la-afip-como-hago-una-factura-electronica-ahora/ Votos: 0 - Link respuesta
-
-
Fecha: 21-10-2024 11:25:04 Espero que si cambian el sistema, informen primero y den un tiempo prudencial para adaptar los sistemas antes de dar de baja el actual. Sería una catástrofe sino... Votos: 0 - Link respuesta
-
Fecha: 08-11-2024 10:37:36 Consulto por si le sucedio este caso y como lo resolvieron.
Segun mi proveedor de internet afip ha bloqueado los servicios de autenticacion: https://wsaa.afip.gob.ar/ws/services/LoginCms
y tambien el de testing
https://wsaahomo.afip.gov.ar/ws/services/LoginCms
y hasta la pagina web de afip
https://www.afip.gob.ar/
Gracias por su tiempo Votos: 0 - Link respuesta -
Fecha: 08-11-2024 12:34:02 Hasta ahora mismo mis clientes estan facturando normalmente con esos servicios, y la página de AFIP recien ingresé y funciona. Votos: 0 - Link respuesta
-
Fecha: 08-11-2024 14:10:49 parece q es algo con la ip publica de mi proveedor, voy a probar con una vpn Votos: 0 - Link respuesta
-
Fecha: 21-11-2024 02:48:50 Buenas, como estan utilizando el metodo
FECompConsultar
para un rango de comprobantes , por ej del 100 al 200, ya q CbteNro x lo q estuve leyendo puede enviar solo de a 1 comprobante, si envio 100 veces al servidor de afip, podria suponer un ataque y bloquear mi ip, y no pude encontrar otro metodo en la doc, alguna sugerencia?
gracias por las respuestas. Votos: 0 - Link respuesta -
Fecha: 21-11-2024 03:54:55 Buen día. Yo consulto por comprobante.
En el manual de AFIP especifica que la llamada FECompConsultar se hace de a un comprobante.
Manual_Desarrollador_COMPG_v2_20_transferencias-1.pdf
Página 140 Votos: 1 - Link respuesta -
Fecha: 04-12-2024 02:51:27 Hola a todos,
Queria consultar si ustedes en las facturas ya cambiaron el logo de AFIP por el de ARCA, porque me llegaron algunas con un logo pero no encuentro si es el logo oficial ni de donde sacarlo
Gracias Votos: 0 - Link respuesta -
Fecha: 04-12-2024 03:57:52 Pablo: lo vas a tener que cambiar, y seguramente no va a ser la única, yo lo saque de una factura del facturador de la pagina de ARCA Votos: 0 - Link respuesta
-
Fecha: 04-12-2024 04:00:07 Yo cambié el logo y el enlace del QR, basándome en una factura que me pasaron. En el enlace es solo reemplazar AFIP por ARCA. Votos: 0 - Link respuesta
-
Fecha: 04-12-2024 04:06:54 yo estoy en proceso de cambiar el logo...
lo que yo hice fue extraer las imagenes del pdf y ahi esta el logo (pone en google extract images from pdf y ahi un monton de herramientas online)
aprovecho el hilo, ademas del logo, todo el namespace lo tengo en AFIP, mas algunas variables que incluyen AFIP en su nombre.....vale la pena renombrar todo? Votos: 0 - Link respuesta -
Fecha: 04-12-2024 05:47:59 Comparto el logo
logo ARCA
Clic derecho en la imagen, "guardar imagen como..." Votos: 0 - Link respuesta -
Fecha: 17-02-2025 03:32:01 Hola, buen día al foro.
Acabo de genera un certificado para hacer una pruebas en homologación, hace mucho tiempo que no lo hacia, y me da el siguiente error:
D:\wamp64\www\lavene\wsaa.class.php:134 SOAP Fault: ns1:cms.cert.untrusted: Certificado no emitido por AC de confianza
Aparentemente ha cambiado algo ARCA, pero no logro descubrir que cambió. Actualicé los WSDL y me dice los mismo.
Alguna ayuda (Estoy usando el modulo de Pablo) Votos: 0 - Link respuesta -
Fecha: 17-02-2025 04:11:18 Buen día Julio.
En homologación siempre tuve problemas para hacer pruebas. En producción también podés "probar", porque si hay un error no se genera factura y te indica el error.
Yo lo que hago es generar factura por montos irrisorios, $10, $50 y usar producción. Luego una vez que está funcionando, si es necesario hago las notas de crédito. Votos: 0 - Link respuesta -
Fecha: 17-02-2025 06:19:04 El error "Certificado no emitido por AC de confianza" aparece cuando se intenta usar un certificado de produccion en homologacion o viceversa Votos: 0 - Link respuesta
-
Fecha: 17-02-2025 06:48:38 Hola a todos,
Queria comentar hablando de cambios en el ambiente de homologacion de un campo nuevo que agregaron que es obligatorio, se trata del campo CondicionIVAReceptorId, tambien agregaron un metodo para consultar los valores que toma ese campo FEParamGetCondicionIvaReceptor.
Estos cambios van a ser obligatorios en produccion a partir del 15 de abril. Votos: 0 - Link respuesta -
Fecha: 17-02-2025 06:59:55 Ivan, solo hay que agregar el campo CondicionIVAReceptorId a la data del comprobante?
Por ejemplo:
$data = array( 'CantReg' => 1, // Cantidad de items del/los comprobante/s 'PtoVta' => 3, // Punto de venta 'CbteTipo' => 1, // Tipo de comprobante 'Concepto' => 1, // Concepto del Comprobante 'DocTipo' => 80, // Tipo de documento del comprador 'DocNro' => 12345678900, // Numero de documento del comprador 'CondicionIVAReceptorId' => 1, // Condicion IVA del receptor ...
Votos: 1 - Link respuesta -
Fecha: 17-02-2025 07:53:21 Si, solo hay que agregar el campo CondicionIVAReceptorId https://afipsdk.com/blog/factura-electronica-solucion-a-error-10242/ Votos: 2 - Link respuesta
-
Fecha: 17-02-2025 08:11:38 Hola foro.
Gracias Ivan, estaba usando un certificado producción en homologado.
Quería probar en homologados, porque tengo entendido que los campos nuevos solo se los está controlando en homologados y no en producción. Después del 15 de abril, si se tendrán en cuenta los campos nuevos en producción. Votos: 0 - Link respuesta -
-
Fecha: 18-02-2025 02:00:10 Buenos dias, tengo el siguiente escenario,
Varios puntos de venta con distintos cuit de distintas empresas, van a conectarse a un hosting, ese hosting en su backend va a hacer las peticiones SOAP a ARCA, la pregunta es la siguiente, si realizo todas las peticiones a ARCA desde mi hosting, no tendre bloqueos o restricciones por parte del servidor de ARCA, ya que todas las peticiones de las distintas cuit y puntos de ventas salen de una misma direccion ip(mi hosting). si envio 50 a 100 solicitudes de distintos cuit en un minuto el servidor de ARCA las va a procesar o puede que me rechace pensando q es un ataque ddos? Votos: 0 - Link respuesta -
Fecha: 18-02-2025 03:03:04 Fabian, en Afip SDK enviamos +1 millon de request al mes y no genera ningun problema, deberias poder hacerlo Votos: 1 - Link respuesta
-
Fecha: 18-02-2025 03:21:35 Fabian, cada CUIT tiene sus propios cerficados, para ARCA no son llamadas desde "la misma IP", son llamadas desde diferentes "negocios". En una zona donde hay varios locales, y todos están conectados a Personal (por ejemplo) ARCA los ve a todos con la misma IP (salvo que alguno haya contratado IP fija) y no tiene porqué bloquearlos. Votos: 1 - Link respuesta
-
Fecha: 18-02-2025 03:58:38 Fabian, yo utilizo un mismo servidor para todos mis cliente y no tengo ningún problema. Varios mandan a facturar 500 o 600 facturas a la vez Votos: 1 - Link respuesta
-
Fecha: 18-02-2025 04:21:32 Gracias, por las respuestas, me estaba quitando el sueño esa inquietud, jaja- Votos: 0 - Link respuesta
-
Fecha: 24-02-2025 09:36:09 Hola a todos.
Estoy intentando usar el webservice de "constancia de inscripción" (que antes era Padron alcance 5) para recuperar los datos de condición IVA del CUIT, pero no lo puedo hacer funcionar.
El padron alcance 13 funciona perfectamente, pero no tiene ese dato, cuando hago la nueva relación al webservice "constancia de inscripcion", y luego de asociarlo al computador fiscal (exactamente igual que con el padron 13), al probar me da el error:
SOAP Fault: ns1:coe.notAuthorized Computador no autorizado a acceder al servicio
Pero lo revisé una y otra vez y son los mismos pasos para el Padron 13, que si funciona.
¿Alguien usa ese servicio? Votos: 0 - Link respuesta -
Fecha: 24-02-2025 10:15:16 Autorizaste el web service del padron de constancia de inscripcion? Tenes que hacer la autorizacion en la pagina de ARCA para poder usarlo Votos: 0 - Link respuesta
-
Fecha: 24-02-2025 12:17:46 Si, lo hice, por las dudas dos veces, la segunda me mostro una advertencia "La autorización ya existe". Lo hice con el mismo cuit y el mismo computador fiscal que para el padrón 13. Votos: 0 - Link respuesta
-
Fecha: 24-02-2025 12:24:54 El código es (obviamente los CUITs son otros):
$cuitemisor = 12345678900; $cuit = 12345678901; include './Afip.php'; $afip = new Afip(array('CUIT' => $cuitemisor,'production' => TRUE)); /**** PADRON ALCANCE 13 ****/ //$details = $afip->RegisterScopeThirteen->GetTaxpayerDetails($cuit); /**** CONSTANCIA DE INSCRIPCION ****/ $details = $afip->RegisterInscriptionProof->GetTaxpayerDetails($cuit);
En el padrón 13 funciona perfectamente, en la constancia de inscripción da el error que conté. Votos: 0 - Link respuesta -
Fecha: 24-02-2025 15:16:15 Si usas una version vieja de Afip SDK el problema es porque antes el padron de constancia de inscripcion era el mismo que el a5 y ahora lo cambiaron, tenes que actualizar en la libreria para que utilice el de constancia de inscripcion Votos: 0 - Link respuesta
-
Fecha: 25-02-2025 02:34:42 Gracias Ivan.
¿Que es lo que tengo que actualizar en la librería para poder usar RegisterInscriptionProof? Votos: 0 - Link respuesta -
Fecha: 25-02-2025 06:13:18 En la clade RegisterInscriptionProof cambiar para que utilice el ID de dicho web service, cambiar las URL por las correspondientes y tambien los WSDL Votos: 0 - Link respuesta
-
Fecha: 25-02-2025 09:40:28 Hola si es para consultar si es IVA inscripto,MONOTRIBUTO,.. Con el padrón alcance 5 podés consultar <descripcionImpuesto> con getPersona. Votos: 0 - Link respuesta
-
Fecha: 27-02-2025 10:33:03 Hola ivan, seria utilizar este código enRegisterINscriptionProof.php ?? porque me sucede lo mismo que Marcelo y si fuerzo el id por ejemplo
'CondicionIVAReceptorId' => 1,
me dice: El campo Condicion IVA receptor no es un valor valido. Consular metodo FEParamGetCondicionIvaRecepto
<?php /** * SDK for AFIP Register Inscription Proof (ws_sr_constancia_inscripcion) **/ class RegisterInscriptionProof extends AfipWebService { var $soap_version = SOAP_1_1; var $WSDL = 'ws_sr_padron_a5-production.wsdl'; var $URL = 'https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA5'; var $WSDL_TEST = 'ws_sr_padron_a5.wsdl'; var $URL_TEST = 'https://awshomo.afip.gov.ar/sr-padron/webservices/personaServiceA5'; function __construct($afip) { parent::__construct($afip, array('service' => 'ws_sr_constancia_inscripcion')); } /** * Asks to web service for servers status {@see WS * Specification item 3.1} * * @since 1.0 * * @return object { appserver => Web Service status, * dbserver => Database status, authserver => Autentication * server status} **/ public function GetServerStatus() { return $this->ExecuteRequest('dummy'); } /** * Asks to web service for taxpayer details {@see WS * Specification item 3.2} * * @since 1.0 * * @throws Exception if exists an error in response * * @return object|null if taxpayer does not exists, return null, * if it exists, returns full response {@see * WS Specification item 3.2.2} **/ public function GetTaxpayerDetails($identifier) { $ta = $this->afip->GetServiceTA('ws_sr_constancia_inscripcion'); $params = array( 'token' => $ta->token, 'sign' => $ta->sign, 'cuitRepresentada' => $this->afip->CUIT, 'idPersona' => $identifier ); try { return $this->ExecuteRequest('getPersona_v2', $params); } catch (Exception $e) { if (strpos($e->getMessage(), 'No existe') !== FALSE) return NULL; else throw $e; } } /** * Asks to web service for taxpayers details * * @throws Exception if exists an error in response * * @return [object] returns web service full response **/ public function GetTaxpayersDetails($identifiers) { $ta = $this->afip->GetServiceTA('ws_sr_constancia_inscripcion'); $params = array( 'token' => $ta->token, 'sign' => $ta->sign, 'cuitRepresentada' => $this->afip->CUIT, 'idPersona' => $identifiers ); return $this->ExecuteRequest('getPersonaList_v2', $params)->persona; } /** * Sends request to AFIP servers * * @since 1.0 * * @param string $operation SOAP operation to do * @param array $params Parameters to send * * @return mixed Operation results **/ public function ExecuteRequest($operation, $params = array()) { $this->options = array('service' => 'ws_sr_constancia_inscripcion'); $results = parent::ExecuteRequest($operation, $params); return $results->{ $operation === 'getPersona_v2' ? 'personaReturn' : ($operation === 'getPersonaList_v2' ? 'personaListReturn': 'return') }; } }Votos: 0 - Link respuesta -
Fecha: 27-02-2025 12:47:39 Leandro, en el archivo RegisterInscriptionProof tenés que cambiar
donde dice:
ws_sr_padron_a5
a:
ws_sr_constancia_inscripcion Votos: 0 - Link respuesta -
Fecha: 28-02-2025 16:24:26 el problema que estoy teniendo es que me dice: Computador no autorizado a acceder al servicio, pero en arca dice que si esta autorizado

dejo link de la imagen https://imgur.com/a/2nZhztm Votos: 0 - Link respuesta -
Fecha: 01-03-2025 03:33:59
Computador no autorizado a acceder al servicio, pero en arca dice que si esta autorizado
esto lo resolvi desde WSASS Autoservicio de Acceso a WebServices
ahora me queda por resolver
$data = array( 'CantReg' => 1, 'PtoVta' => $contribuyente[$sucursal]['punto_de_venta'], 'CbteTipo' => $tipo_de_comprobante, 'Concepto' => $contribuyente[$sucursal]['concepto'], 'DocTipo' => $tipo_de_documento, 'EstadoAnteIva' => $estado_ante_iva, 'DocNro' => $numero_de_documento, 'CondicionIVAReceptorId' => 6, 'CbteDesde' => $numero_de_factura, 'CbteHasta' => $numero_de_factura, 'CbteFch' => intval(str_replace('-', '', $contribuyente[$sucursal]['fecha'])), 'FchServDesde' => $contribuyente[$sucursal]['fecha_servicio_desde'], 'FchServHasta' => $contribuyente[$sucursal]['fecha_servicio_hasta'], 'FchVtoPago' => $contribuyente[$sucursal]['fecha_vencimiento_pago'],
y me responde :El campo Condicion IVA receptor no es un valor valido. Consular metodo FEParamGetCondicionIvaReceptor Votos: 0 - Link respuesta -
Fecha: 01-03-2025 04:06:29 El campo Condicion IVA receptor va a ser obligatorio a partir del 15 de abril.
La implementación actual es errática aún.
Puede ser que funcione en homologación, yo no lo probé en ese entorno. Votos: 0 - Link respuesta -
Fecha: 01-03-2025 05:57:25 Gracias Marcelo, pero estoy en homologación y me pide ese parámetro para poder emitir factura Votos: 0 - Link respuesta
-
Fecha: 03-03-2025 12:02:02 con respecto a 'CondicionIVAReceptorId' si el emisor es R.I. , se da el caso que una persona física sea 1 ( Responsable .Inscripto ). , pero que consume un servicio que no corresponde a su actividad y pide Fc. B. Deben ajustar 'CondicionIVAReceptorId' a 5 ( consumidor final ) para evitar el error Votos: 0 - Link respuesta
-
Fecha: 03-03-2025 12:59:53 Hola Carlos.
No entendí bien tu aclaración, pero el item CondicionIVAReceptorId no tiene que ver con la condición del emisor, sino pura y exclusivamente del receptor de la factura.
Por otro lado, si un RI requiere una factura B, se le tendría que hacer como consumidor final, con el campo CondicionIVAReceptorId correspondiente a CF.
Es lo que yo entiendo como debería ser. Votos: 0 - Link respuesta -
Fecha: 03-03-2025 13:54:28 Gracias, pero ponga el número que ponga me dice que es invalido. No se que hacer para poder emitir. Repito que estoy en testing. Pero no me deja emitir comprobante Votos: 0 - Link respuesta
-
Fecha: 03-03-2025 16:22:21 Si necesitas si o si emitir comprobante, no uses aún CondicionIVAReceptorId, yo no lo estoy usando aún (en producción) y emito factura normalmente. Es obligatorio a partir del 15 de abril, puede ser que durante marzo normalicen el webservice. En homologación es posible que ARCA no lo tenga implementado 100%. Votos: 0 - Link respuesta
-
Fecha: 03-03-2025 17:10:06 Tengo un demo de facturación el cual uso los certificados de test, pero me da error con cualquier id en CondicionIVAReceptorId.
En producción no tengo ese problema, pero para mostrar a los clientes necesito hacerlo en testing Votos: 0 - Link respuesta -
Fecha: 04-03-2025 01:31:31 Buenas , tengo una incertidumbre con el combustible o p bebidas cigarrillos , con enviar solamente el valor o importe en no gravado es suficiente?,
"ImpTotalNoGravado":1321.4,
o tambien es necesario enviar la estructura como el iva o Tributos
"iva":[{"Id":5,"BaseImp":7172.39,"Importe":1506.2}], "ImpuestosInternos":[{"Id":6,"Desc":"IMP INT FIJOS","BaseImp":0,"Alic":0,"Importe":1321.40}]}
y en el caso que tenga que enviar la estructura de impuestosInterno, deberia especificar:
ITC y Dioxido de carbono ? , tampoco tengo info de sus id en el caso que corresponda.
No pude encontrar informacion sobre el id, me paso chatgpt y deepseek que 6 es el id de combustibles, pero no estoy encontrando esta info en ARCA.
Desde ya muchas gracias.
//id segun AI ID 4: Impuestos Internos Fijos (ejemplo: cigarrillos, bebidas alcohólicas). ID 5: Impuestos Internos Ad Valorem (porcentaje sobre el valor del producto). ID 6: Impuestos Internos sobre Combustibles. ID 7: Impuestos Internos sobre Servicios de Telecomunicaciones. ID 8: Impuestos Internos sobre Seguros. ID 9: Impuestos Internos sobre Vehículos. ID 10: Impuestos Internos sobre Bebidas Alcohólicas. ID 11: Impuestos Internos sobre Tabacos.
Votos: 0 - Link respuesta -
Fecha: 05-03-2025 04:47:57 Necesito, si alguien a trabajado con los cambios, sobre La lista de posibles condiciones frente al IVA? Votos: 0 - Link respuesta
-
Fecha: 05-03-2025 08:03:35 Error 10242 de la AFIP: El campo Condicion IVA receptor no es un valor valido. Consular metodo FEParamGetCondicionIvaReceptor., alguien le a dado solucion a este error, que me pueda orientar. saludos Votos: 0 - Link respuesta
-
Fecha: 05-03-2025 10:34:24 Hola Pablo
acá https://afipsdk.com/blog/factura-electronica-solucion-a-error-10242/ Iván puso las condiciones Receptor IVA existentes Votos: 0 - Link respuesta -
Fecha: 05-03-2025 10:44:28 Pero a mi no me funciona, me dice que el id es invalido Votos: 0 - Link respuesta
-
Fecha: 06-03-2025 01:07:48 alguien a podido implementar lo del iva receptor q pueda compartir su experiencia. de como implemento la solución. saludos Votos: 0 - Link respuesta
-
Fecha: 06-03-2025 01:54:43 Pablo: de momento a mi no me funciona, pero hay que agregar el parametro en el voucher por ejemplo
'CondicionIVAReceptorId' => 6, // ID 6 = Responsable Monotributo
ponga cualquier id, me da le mismo error : El campo Condicion IVA receptor no es un valor valido. Consular metodo FEParamGetCondicionIvaReceptor
$datos = array( 'CantReg' => 1, 'PtoVta' => $contribuyente[$sucursal]['punto_de_venta'], 'CbteTipo' => $tipo_de_comprobante, 'Concepto' => $contribuyente[$sucursal]['concepto'], 'DocTipo' => $tipo_de_documento, 'CondicionIVAReceptorId' => 6, 'EstadoAnteIva' => $estado_ante_iva, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_factura, 'CbteHasta' => $numero_de_factura, 'CbteFch' => intval(str_replace('-', '', $contribuyente[$sucursal]['fecha'])), 'FchServDesde' => $contribuyente[$sucursal]['fecha_servicio_desde'], 'FchServHasta' => $contribuyente[$sucursal]['fecha_servicio_hasta'], 'FchVtoPago' => $contribuyente[$sucursal]['fecha_vencimiento_pago'], 'ImpTotal' => number_format($importe_total, 2,".",""), 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => number_format($impNeto, 2,".",""), // Importe neto 'ImpOpEx' => number_format($importe_exento_iva, 2,".",""), // Importe exento al IVA 'ImpIVA' => number_format($ImpIVA, 2,".",""), // Importe de IVA 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' => 1 // Cotización de la moneda usada (1 para pesos argentinos) );
la lista de condiciones frente al iva las encontras en https://afipsdk.com/blog/factura-electronica-solucion-a-error-10242/ Votos: 0 - Link respuesta -
Fecha: 06-03-2025 06:25:22 En el aplicativo https://www.afip.gob.ar/fe/ayuda/homologacion-externa/documentos/WSBFEV1-ManualParaElDesarrollador_ARCA_V3_0.pdf dice:
Identificador de la condición frente al IVA del receptor. Campo opcional hasta el 1de Octubre 2025, de informarse debe corresponder a la tabla “Condición frente al IVA del receptor”.
Las condiciones con su valor están al final del aplicativo. Votos: 0 - Link respuesta -
Fecha: 07-03-2025 02:38:51 alguien tiene los codigos json del padron13 de las condiciones frente al iva del receptor. Donde puedo encontrar esos codigos? Votos: 0 - Link respuesta
-
Fecha: 07-03-2025 08:53:39 Pablo, el padrón alcance 13 no tiene info de las condiciones frente al IVA. Las tiene el padrón "constancia de inscripción" (ex padrón alcance 5). Votos: 0 - Link respuesta
-
Fecha: 07-03-2025 08:58:24 Te aclaro por las dudas que los códigos que retorna este padrón no coinciden con los códigos para el nuevo campo "CondicionIVAReceptorId".
El padrón "Constancia de Inscripción" retorna el siguiente json de ejemplo:
array(3) { ["datosGenerales"]=> array(8) { ["apellido"]=> string(5) "MILEI" ["domicilioFiscal"]=> array(5) { ["codPostal"]=> string(4) "1190" ["descripcionProvincia"]=> string(28) "CIUDAD AUTONOMA BUENOS AIRES" ["direccion"]=> string(32) "LAVALLE 3340 Piso:10 Dpto:2 T:1" ["idProvincia"]=> int(0) ["tipoDomicilio"]=> string(6) "FISCAL" } ["estadoClave"]=> string(6) "ACTIVO" ["idPersona"]=> float(20218346414) ["mesCierre"]=> int(12) ["nombre"]=> string(14) "JAVIER GERARDO" ["tipoClave"]=> string(4) "CUIT" ["tipoPersona"]=> string(6) "FISICA" } ["datosRegimenGeneral"]=> array(3) { ["actividad"]=> array(5) { ["descripcionActividad"]=> string(68) "SERVICIOS DE ASESORAMIENTO, DIRECCIÓN Y GESTIÓN EMPRESARIAL N.C.P." ["idActividad"]=> int(702099) ["nomenclador"]=> int(883) ["orden"]=> int(1) ["periodo"]=> int(201311) } ["categoriaAutonomo"]=> array(4) { ["descripcionCategoria"]=> string(32) "T2 CAT II INGRESOS DESDE $20.001" ["idCategoria"]=> int(202) ["idImpuesto"]=> int(308) ["periodo"]=> int(201501) } ["impuesto"]=> array(3) { [0]=> array(3) { ["descripcionImpuesto"]=> string(26) "GANANCIAS PERSONAS FISICAS" ["idImpuesto"]=> int(11) ["periodo"]=> int(201501) } [1]=> array(3) { ["descripcionImpuesto"]=> string(3) "IVA" ["idImpuesto"]=> int(30) ["periodo"]=> int(201501) } [2]=> array(3) { ["descripcionImpuesto"]=> string(28) "APORTES SEG.SOCIAL AUTONOMOS" ["idImpuesto"]=> int(308) ["periodo"]=> int(201501) } } } ["metadata"]=> array(2) { ["fechaHora"]=> string(29) "2025-03-07T15:54:50.355-03:00" ["servidor"]=> string(8) "linux11b" } }
Donde ["datosRegimenGeneral"]["impuesto"][1]["descripcionImpuesto"] es la condición frente al IVA. (IVA = Responsable Inscripto)
Para monotributo el json que retorna es diferente, y la categoría está en: ["datosMonotributo"]["categoriaMonotributo"] Votos: 0 - Link respuesta -
Fecha: 07-03-2025 10:10:29 https://afipsdk.com/blog/padron-obtener-condicion-frente-al-iva-de-un-cuit/ Votos: 0 - Link respuesta
-
Fecha: 07-03-2025 10:52:27 Ivan, sabrás decirme porque al enviar el id. Me dice que es invalido
Ponga cual ponga, dice lo mismo Votos: 0 - Link respuesta -
Fecha: 11-03-2025 04:48:31 buenas alguien a podido solucionar lo del envio de nuevo parametro "CondicionIVAReceptorId". Neceisto si alguien tiene de todas las descripciones el Id del impuesto. ejemplo ["descripcionImpuesto"]=> string(3) "IVA"
["idImpuesto"]=> int(30)
de los demas descripciones alguien conoce eso id que los pueda compartir. saludos Votos: 0 - Link respuesta -
-
-
Fecha: 11-03-2025 10:40:02 es necesario para obtener el id de la CondicionIVAReceptorId implementar el FEParamGetCondicionIvaReceptor? Votos: 0 - Link respuesta
-
Fecha: 11-03-2025 14:36:15 Bunas tardes. Les dejo el json que devuelve FEParamGetCondicionIvaReceptor.
{"FEParamGetCondicionIvaReceptorResult":{"ResultGet":{"CondicionIvaReceptor":[{"Id":1,"Desc":"IVA Responsable Inscripto","Cmp_Clase":"A\/M\/C"},{"Id":6,"Desc":"Responsable Monotributo","Cmp_Clase":"A\/M\/C"},{"Id":13,"Desc":"Monotributista Social","Cmp_Clase":"A\/M\/C"},{"Id":16,"Desc":"Monotributo Trabajador Independiente Promovido","Cmp_Clase":"A\/M\/C"},{"Id":4,"Desc":"IVA Sujeto Exento","Cmp_Clase":"B\/C"},{"Id":5,"Desc":"Consumidor Final","Cmp_Clase":"B\/C"},{"Id":7,"Desc":"Sujeto No Categorizado","Cmp_Clase":"B\/C"},{"Id":8,"Desc":"Proveedor del Exterior","Cmp_Clase":"B\/C"},{"Id":9,"Desc":"Cliente del Exterior","Cmp_Clase":"B\/C"},{"Id":10,"Desc":"IVA Liberado \u2013 Ley N\u00b0 19.640","Cmp_Clase":"B\/C"},{"Id":15,"Desc":"IVA No Alcanzado","Cmp_Clase":"B\/C"}]}}} Votos: 0 - Link respuesta -
Fecha: 11-03-2025 16:31:09 Fijate en tu código donde tengas guardado el WSDL y reemplazalo por este https://wswhomo.afip.gov.ar/wsfev1/service.asmx?wsdl Votos: 0 - Link respuesta
-
Fecha: 12-03-2025 05:33:14 Hola ivan, anteriormente tenia
class ElectronicBilling extends AfipWebService { var $soap_version = SOAP_1_2; var $WSDL = 'wsfe-production.wsdl'; var $URL = 'https://servicios1.afip.gov.ar/wsfev1/service.asmx'; var $WSDL_TEST = 'wsfe.wsdl'; var $URL_TEST = 'https://wswhomo.afip.gov.ar/wsfev1/service.asmx';
y por mas que cmabie ahttps://wswhomo.afip.gov.ar/wsfev1/service.asmx?wsdl
me sigue devolviendo
El campo Condicion IVA receptor no es un valor valido. Consular metodo FEParamGetCondicionIvaReceptor
estoy enviando :'CondicionIVAReceptorId' => intval(1), o cualquier valor y devuelve lo mismo
$data = array( 'CantReg' => 1, 'PtoVta' => $contribuyente[$sucursal]['punto_de_venta'], 'CbteTipo' => $tipo_de_comprobante, 'Concepto' => $contribuyente[$sucursal]['concepto'], 'DocTipo' => $tipo_de_documento, 'EstadoAnteIva' => $estado_ante_iva, 'DocNro' => $numero_de_documento, 'CondicionIVAReceptorId' => intval(1), 'CbteDesde' => $numero_de_factura, 'CbteHasta' => $numero_de_factura, 'CbteFch' => intval(str_replace('-', '', $contribuyente[$sucursal]['fecha'])), 'FchServDesde' => $contribuyente[$sucursal]['fecha_servicio_desde'], 'FchServHasta' => $contribuyente[$sucursal]['fecha_servicio_hasta'], 'FchVtoPago' => $contribuyente[$sucursal]['fecha_vencimiento_pago'], 'ImpTotal' => number_format($importe_total, 2,".",""), 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => number_format($impNeto, 2,".",""), // Importe neto 'ImpOpEx' => number_format($importe_exento_iva, 2,".",""), // Importe exento al IVA 'ImpIVA' => number_format($ImpIVA, 2,".",""), // Importe de IVA 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' => 1 // Cotización de la moneda usada (1 para pesos argentinos) );
Gracias ! Votos: 0 - Link respuesta -
Fecha: 12-03-2025 07:09:29 Descargaste el archivo WSDL de test https://wswhomo.afip.gov.ar/wsfev1/service.asmx?wsdl y lo actualizaste en tu código? Votos: 0 - Link respuesta
-
-
Fecha: 13-03-2025 05:09:49 Necesito ayuda, si alguien a podido hacer alguna facturación, con la inclusión del nuevo campo CondicionIVAReceptorId. Pq a mi me esta dando error al facturar. Votos: 0 - Link respuesta
-
-
Fecha: 13-03-2025 06:04:15 este es mi correo pablochoymiguel@gmail.com si crees que podamos intercambiar alguna idea. me escribes, para ver si damo solución a esto. A mi me esta dando ahora q el El servicio de facturación electrónica del lado de la AFIP no está disponible en este momento. Votos: 0 - Link respuesta
-
-
Fecha: 13-03-2025 10:04:04 Hola !. a mi me esta funcionando, el problema es que no estoy usando el programa que usan Ud. Pero hicieron lo que dice IVAN ?, yo tuve que reemplazar el WSDL. ingresen en el link que puso Ivan y bajense ese archivo con los nombres wsfe.wsdl y wsfe-production.wsdl busquen en su server y reemplacen los que tienen por estos. a lo mejor es eso Votos: 0 - Link respuesta
-
Fecha: 13-03-2025 11:01:35 Yo hice lo que dices carlos pero me dan otros errores, no doy con la solución Votos: 0 - Link respuesta
-
Fecha: 13-03-2025 11:17:53 Yo estoy usando la librería vieja de Ivan, la 0.6. Los Wsdl son del 2017, y me está funcionando todo bien en producción, incluso el nuevo item CondicionIVAReceptorId:
$data = array( 'CantReg' => 1, 'PtoVta' => $puntoVenta, 'CbteTipo' => $tpivaVta, 'Concepto' => 1, 'DocTipo' => $DocTipo, 'DocNro' => $cuitVta, 'CondicionIVAReceptorId' => $ivacliente, // Condicion frente al IVA del comprador 'CbteDesde' => $last_voucher+1, 'CbteHasta' => $last_voucher+1, 'CbteFch' => intval(date('Ymd')), 'ImpTotal' => $total, 'ImpTotConc' => $ngraVta, ...
PD.: recien reemplacé el archivo wsfe-production.wsdl por el wsdl que puso Ivan, y también funciona sin ningún error.
Si copian el contenido del wsdl desde la pantalla del browser, recuerden agregar en la primera línea:
<?xml version="1.0" encoding="UTF-8"?> Votos: 0 - Link respuesta -
Fecha: 13-03-2025 11:31:37 Buenas Marcelo y estas usuando el metodo FEParamGetCondicionIvaReceptor. para cargar la CondicionIVAReceptorId Votos: 0 - Link respuesta
-
Fecha: 13-03-2025 11:48:23 No, lo creo según los datos que tengo cargados del cliente.
Este es un ejemplo que uso con un cliente, la variable $tpv la lee de la base de datos de clientes ingresados al sistema:
if ($tpv == "Respon. Inscripto") { $tpv = "RI"; $ivacliente = 1; } elseif ($tpv == "Respon. Monotributo") { $tpv = "MO"; $ivacliente = 6; } elseif ($tpv == "Respon. No Inscripto") { $tpv = "MO"; $ivacliente = 6; } elseif ($tpv == "Consumidor Final") { $tpv = "CF"; $ivacliente = 5; } elseif ($tpv == "IVA Exento") { $tpv = "EX"; $ivacliente = 4; } else { $tpv = "CF"; $ivacliente = 5; }
Este cliente usa esos, si alguien usa más condiciones se agregan. Votos: 1 - Link respuesta -
-
Fecha: 13-03-2025 12:21:48 Perdón aclaro una cosa:
El WSDL que puso Ivan es el de homologación, que tiene el parámetro CondicionIVAReceptorId, el WSDL de producción aún no incorpora ese parámetro, pero no da error si se informa. Votos: 0 - Link respuesta -
Fecha: 17-03-2025 05:41:46 Buenos días.
Les está dando error el sistema de AFIP?
Aleatoriamente me está dando los errores:
SOAP Fault: HTTPError Fetching http headers
(501) Error interno de base de datos: - Metodo FECompUltimoAutorizado
(500) Error interno de aplicación: - Metodo FECAESolicitar
SOAP Fault: HTTPService Unavailable Votos: 0 - Link respuesta -
-
Fecha: 17-03-2025 07:50:07 Si, estuvo caído por aprox. una hora. Pueden ver el monitor de estado en https://status.afipsdk.com/ Votos: 0 - Link respuesta
-
Fecha: 17-03-2025 12:16:48 Parece que no se solucionó del todo aún.
Con algunos clientes me sigue dando errores.
PD.: Luego de borrar el archivo TA_*.* (ticket), en las computadoras que estaba fallando, empezó a funcionar normalmente Votos: 0 - Link respuesta -
Fecha: 17-03-2025 16:56:19 Buenas noches, en mi sistema actualmente tengo registrado varias condiciones impositivas, dichas condiciones se las asigno a los constribuyentes, una vez que consulto el padron 5 (constancia de inscripción), a través del id del impuesto, por ejemplo:
1 Consumidor Final [0]
2 IVA Responsable Inscripto[30]
3 IVA Sujeto Exento [32]
4 Responsable Monotributo [5243, 20]
5 IVA No Alcanzado [34]
Si alguien sabe los id de los impuestos de las demás condiciones que falta, me las puede hacer saber, ya que quiero registrar todas las condiciones impositivas.
Desde ya muchas gracias. Votos: 0 - Link respuesta -
Fecha: 18-03-2025 03:09:37 Pablo acá tenes las tablas del sistema. tipo responsable es la que necesitas
https://www.afip.gob.ar/fe/ayuda/tablas.asp Votos: 0 - Link respuesta -
Fecha: 18-03-2025 10:50:18 Buenas carlos gracias por la información, pero en el tipo de responsable se muestran los id de la condicion impositiva del nuevo metodo ha consultar el FEParamGetCondicionIvaReceptor. y lo que deseo es el id del impuesto que se muestra de en la constancia de inscripción. muchas Gracias. Si alguien posee esos id de todas las condiciones impositivas. Desde ya muchas gracias Votos: 0 - Link respuesta
-
Fecha: 18-03-2025 12:39:28 https://www.afip.gob.ar/ws/documentacion/manuales/manual-desarrollador-ARCA-COMPG-v4-0.pdf
pagina 196 Votos: 0 - Link respuesta -
Fecha: 03-04-2025 15:58:57 Hola gente buenas noches una consulta, cuando se vencen los certificados que procedimiento es el correcto. Se me vencieron genere uno nuevo lo valide en relación de Certificados en cada alias. Me dice validado pero me da error el webService, hay que hacer algo mas que solo generar el certificado?. Gracias Votos: 0 - Link respuesta
-
Fecha: 04-04-2025 09:15:54 Buenas gente, les dejo algo de info de lo nuevo:
ARCA (anteriormente AFIP) de Argentina ha incorporado recientemente el campo CondicionIVAReceptorId en la solicitud FECAESolicitar. Este campo es obligatorio a partir del 15 de abril de 2025 y debe incluirse al emitir comprobantes electrónicos.
A continuación, se detallan los posibles valores para CondicionIVAReceptorId, junto con sus descripciones y las clases de comprobante correspondientes:
Les comparto una tabla con los Id's:
Id Descripción Clase de Comprobante 1 IVA Responsable Inscripto A/M/C 6 Responsable Monotributo A/M/C 13 Monotributista Social A/M/C 16 Monotributo Trabajador Independiente Promovido A/M/C 4 IVA Sujeto Exento B/C 5 Consumidor Final B/C 7 Sujeto No Categorizado B/C 8 Proveedor del Exterior B/C 9 Cliente del Exterior B/C 10 IVA Liberado – Ley N° 19.640 B/C 15 IVA No Alcanzado B/C
Es importante asegurarse de enviar el valor correcto de CondicionIVAReceptorId según la condición frente al IVA del receptor del comprobante para evitar errores en la validación de la solicitud.
Un extra:
El campo CondicionIVAReceptorId se utiliza en el método FECAESolicitar del webservice wsfev1 de AFIP para especificar la condición frente al IVA del receptor del comprobante. Este campo es obligatorio desde el 15 de abril de 2025.
Además, existe el método FEParamGetCondicionIvaReceptor en el webservice wsfev1, que permite recuperar la lista de condiciones frente al IVA del receptor. Este método es útil para obtener los posibles valores que puede tener el campo CondicionIVAReceptorId.
Por lo tanto, el campo CondicionIVAReceptorId se utiliza exclusivamente en el método FECAESolicitar del webservice wsfev1. Es obligatorio incluirlo en las solicitudes de comprobantes electrónicos a partir de la fecha mencionada. Para obtener la lista de posibles valores, se puede utilizar el método FEParamGetCondicionIvaReceptor.
Saludos y buenos códigos
PD: yo también note que no están incluidos estos campos en el WSDL de producción.
<s:element minOccurs="0" maxOccurs="1" name="CanMisMonExt" type="s:string"/> <s:element minOccurs="0" maxOccurs="1" name="CondicionIVAReceptorId" type="s:int"/>
PD2: me gusto el chiste de la página 196 jajaja (pero hablando en serio, revisar última página 194, ahí esta la tabla completa Enlace al MANUAL ARCA) Votos: 0 - Link respuesta -
Fecha: 04-04-2025 09:54:29 IMPORTANTE:
A partir del domingo 6 de abril de 2025, se actualizará la version del Web Service (WS) y se permitira enviar, de forma opcional, el campo Condicion Frente al IVA del receptor hasta tanto entre en vigencia su obligatoriedad reglamentada por la Resolucion General N 5616.
Adicionalmente, la misma se postergara excepcionalmente de la fecha del 15/04/2025 y se dara aviso cuando pase a ser obligatorio informar el citado campo, en cuyo momento pasara a rechazarse la emision de comprobantes sin este dato.
Para mas informacion, consultar el manual en: https://www.arca.gob.ar/fe/ayuda/webservice.asp, https://www.arca.gob.ar/ws/documentacion/ws-factura-electronica.asp Votos: 0 - Link respuesta -
Fecha: 04-04-2025 10:53:45 Demasiado ocupado en ver si me había equivocado en el numero de pagina, lo único que hiciste es copiar y pegar todo lo que ya estaba dicho. no aportando absolutamente nada mas que tu inútil ego. y la pregunta de Sebastian la dejaste sin contestar. Tenes la oportunidad de hacerlo ahora, o sino cuando yo lo ayude podes cancheriar, copiar y pegar lo que yo deje haciendo pensar a los demás que entandes de o que hablas Votos: -1 - Link respuesta
-
Fecha: 04-04-2025 11:34:52 A bueno, pensé que era un chiste que nos mandabas a la hoja 196, como diciendo "info que no nos dan desde ARCA" porque es algo que siempre falto, como por ejemplo por que en homologación estan los campos en el WSDL y no en producción, etc... (siempre hay que estas adivinando la hoja 196, no se si ahora se entiende lo que interprete), me parece que mal interpretaste mi respuesta y te tomaste algo personal y nada que ver de mi parte, ni de mi comentario.
Al margen de lo dicho, lo que hice fue resumir en un comentario la información, si, correcto, entonces? cual es el problema... ego? no se de que hablas.
Respecto a lo que comentó Sebastian, no se que contestarle, sino con gusto le ayudo... tal vez debería incluir el error que obtiene, porque si ya pudo renovar los certificados, no mucho más por hacer... ya los tiene... restaría ver el error (Seba, subí el error así comentamos), y también parece que habla de un tema distinto del que se venía hablando, y que se nos viene encima a todos los que desarrollamos integración con ARCA (por ahora no esta informada una prorroga para la fecha 15/04, así que hay que meterle a eso).
Saludos y buenos códigos para todos! Votos: 1 - Link respuesta -
Fecha: 04-04-2025 11:34:57 Sebastián: asociaste los certificados al computador fiscal?
Tenés que ir a "Administrador de relaciones con Clave Fiscal", luego "Nueva Relación" y en "AFIP -> WebServices" seleccionar "Factura Electrónica".
Verificar que los datos son correctos y presionar en la tercera opción (Representante) el botón "Buscar", y seleccionar en Computador Fiscal la opción que aparece al desplegar.
Al final guardar y cerrar. Votos: 1 - Link respuesta -
Fecha: 04-04-2025 12:15:25 Hola gente, lo tenia funcionando en test la generación y producción para consultar constancia de inscripción, la constancia me trae los datos bien, genere los 2 certificados de igual manera los subi y baje el que genera la afip. Ademas de cambiar a certificados validos hay que hacer otra cosa mas? llevo desde ayer ya volvi a generar otros y nada, cuando quiero ya en la autenticacion me dice no autorizado por afip y si quiero generar un comprobante me sale en blanco, lo raro que antes de que vencieran todo el codigo funcionaba. Segun ese error es cuando se invierten los certificados pero por eso volvi a generar nuevos. Bueno gracias por la ayuda Votos: 0 - Link respuesta
-
Fecha: 04-04-2025 12:19:08 Marcelo ahi hice los paso y me da un error la autorizacion ya existe Votos: 0 - Link respuesta
-
Fecha: 04-04-2025 12:25:57 Sebastian, vos decís "...genere los 2 certificados de igual manera los subi..." El que se sube es uno solo, el que tiene extensión csr.
El otro archivo generado (extensión key) y el que descargás de AFIP (extensión crt) son los que tenés que actualizar en el archivo Afip_Wfe.php (o el archivo en el que indiques la ubicación de los certificados) Votos: 0 - Link respuesta -
Fecha: 04-04-2025 12:45:22 si subi el generado para que brinde el crt. Ahi cambie a producción y genere un comprobante sin problema, el que me esta dando dolor de cabeza es el de test. Afip te bloquea algo?
reemplace los certificados y coloque el mismo nombre, el codigo que uso me pide el alias_test o alias_prod. cuando quiero conectar en test con el certifiado de test me dice certificado no emitido por AC de confianza. Votos: 0 - Link respuesta -
Fecha: 04-04-2025 13:38:30 ¿Habilitaste el servicio WSASS (Autogestión de certificados para Servicios Web en los ambientes de homologación) en AFIP?
Ahi se gestionan los certificados para homologación o prueba. Votos: 0 - Link respuesta -
Fecha: 04-04-2025 14:09:48 Si ya lo tenia funcionando, ahi entre y me figura
21/06/2023 09:59:00 p.m. 20/06/2025 09:59:00 p.m. VALIDO Votos: 0 - Link respuesta -
Fecha: 04-04-2025 14:32:10 Sebastian, te recomiendo que hagas la consulta en el grupo de Discord: https://discord.gg/6RdfyNMN Votos: 0 - Link respuesta
-
Fecha: 04-04-2025 14:36:08 Listo solucionado, genere nuevamente en autoservicio para el mismo alias un certificado desde ahi y ya funciona en test. Gracias Marcelo por la ayuda. Para el que le pase en homologación deben generar la autorización nuevamente, a esa conclusión llegue. Abrazo Votos: 1 - Link respuesta
-
Fecha: 06-04-2025 06:27:29 Buenas tardes, esto comenzo a pasar hoy en produccion:
Error codigo: 10245, Error: El campo Condicion Frente al IVA del receptor resultara obligatorio conforme lo reglamentado por la Resolución General Nro 5616. Para mas informacion consular metodo FEParamGetCondicionIvaReceptor
Por lo que lei mas arriba segun ustedes iba a entrar en vigencia el 15 de Abril pero comenzo hoy.
A alguno mas le pasa ?
Capaz es una advertencia pero los comprobantes me quedan observados ...
Saludos ! Votos: 0 - Link respuesta -
Fecha: 06-04-2025 11:19:59 Hoy se incorporaba el campo CondicionIVAReceptorId al WSDL de producción, pero no es obligatorio aún. Seguramente hay que actualizar el WSDL.
Este es el wsdl de producción nuevo, que incluye ese campo y otros: https://servicios1.afip.gov.ar/wsfev1/service.asmx?WSDL Votos: 0 - Link respuesta -
Fecha: 07-04-2025 05:37:43 Buen día, estoy recibiendo : Service unavailable. alguien mas ? Gracias ! Votos: 0 - Link respuesta
-
Fecha: 07-04-2025 07:03:52 Buenas tardes Marcelo, este wsdl : https://servicios1.afip.gov.ar/wsfev1/service.asmx?WSDL no es nuevo existe desde hace varios años, o sea que la url del webservice no cambio, es la misma de siempre. Si se ha actualizado el mismo.
Por otro lado Leandro en las ultimas 2 horas y hasta ahora, no hemos tenido problemas con el servicio.
De mi lado el domingo agregue el campo CondicionIVAReceptorId en la llamada y no tuve mas problemas.
Saludos ! Votos: 0 - Link respuesta -
Fecha: 07-04-2025 07:17:38 Claro Juan, el acceso es el mismo. Me refiero al contenido del WSDL que desde ayer incluye CondicionIVAReceptorId entre un par de ítems más.
En algunos sistemas el WSDL no se carga desde el acceso sino que desde un archivo wsfe.wsdl Votos: 0 - Link respuesta -
Fecha: 07-04-2025 07:24:49 Leandro, yo tuve reporte de un par de clientes está mañana con el servicio caído por media hora más o menos. Parece que no afectó a todos. Votos: 0 - Link respuesta
-
Fecha: 07-04-2025 07:53:10 Gracias Juan y Marcelo. Ya funciona nuevamente OK Votos: 0 - Link respuesta
-
Fecha: 08-04-2025 04:30:21 Hola Marce Juan, yo agregue el CondicionIVAReceptorId. Si lo envio en Test me da un msj en observación de que es obligatorio y en producción me sale error. Quizas es cuestión de esperar y ver cuando comience a ser obligatorio. Estaremos preguntando jaja Votos: 0 - Link respuesta
-
Fecha: 08-04-2025 07:44:21 Hola colegas, yo para comprobantes tipo B o C o sus notas de credito tengo resuelto en produccion que cuando el que compra es consumidor final, el valor es 5 ('CondicionIVAReceptorId' => 5)
Ahora me gustaria consultarles a todos ...
El metodo FEParamGetCondicionIvaReceptor recibe los parametros de Auth y el tipo de clase de comprobante, ejemplo para tipo comprobante 1, recibe "A".
Ese metodo no funciona actualmente en produccion, pero me va a devolver los posibles tipos de CondicionIVAReceptorId.
En este caso para tipos de comprobantes A, me va devolver los ids: 1 = Responsable inscripto, 6 = Responsable monotributo, 13 = Monotributista social, 16 = Monotributo Trabajador
Independiente Promovido
Sin embargo cuando yo genero un CAE para tipo comprobante 1 y tengo el rut del receptor, no veo la forma de obtener el id correcto (CondicionIVAReceptorId) para ese rut receptor, es decir no tengo forma de saber si ese rut es 1, 6, 13 o 16 ?
¿ Alguno tiene idea de como obtener dicha informacion ? Votos: 0 - Link respuesta -
Fecha: 08-04-2025 08:43:00 Disculpen, en produccion el metodo FEParamGetCondicionIvaReceptor si ya esta funcionando.
Esto devuelve si enviamos como parametro de ClaseCmp el valor A
[data] => stdClass Object
(
[FEParamGetCondicionIvaReceptorResult] => stdClass Object
(
[ResultGet] => stdClass Object
(
[CondicionIvaReceptor] => Array
(
[0] => stdClass Object
(
[Id] => 1
[Desc] => IVA Responsable Inscripto
[Cmp_Clase] => A
)
[1] => stdClass Object
(
[Id] => 6
[Desc] => Responsable Monotributo
[Cmp_Clase] => A
)
[2] => stdClass Object
(
[Id] => 13
[Desc] => Monotributista Social
[Cmp_Clase] => A
)
[3] => stdClass Object
(
[Id] => 16
[Desc] => Monotributo Trabajador Independiente Promovido
[Cmp_Clase] => A
)
)
)
[Events] => stdClass Object
(
[Evt] => stdClass Object
(
[Code] => 39
[Msg] => IMPORTANTE: El dia 6 de abril de 2025, se actualizo la version del Web Service (WS) que permite enviar, de forma opcional, el campo Condicion Frente al IVA del receptor. Cabe destacar que la Resolucion General Nro 5616 indica que ese dato debe enviarse de manera obligatoria a partir del 15/04/2025. No obstante, se mantendra como un dato no excluyente hasta el 30/06/2025, inclusive. A partir del 1/07/2025 se rechazaran las solicitudes de emision de comprobantes sin este dato. Para mas informacion, consultar el manual en: https://www.arca.gob.ar/fe/ayuda/webservice.asp, https://www.arca.gob.ar/ws/documentacion/ws-factura-electronica.asp
)
)
)
)
Estuve viendo sobre lo que habia consultado que la info se obtiene en :
https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA5?WSDL
Si obtengo mas informacion la comparto. Votos: 0 - Link respuesta -
Fecha: 08-04-2025 12:45:45 Sebastián, yo lo estoy usando en producción sin errores. Actualízaste el wfe.wsdl de pruducción? Votos: 0 - Link respuesta
-
Fecha: 09-04-2025 08:06:19 Estuve avanzando con la obtencion del parametro CondicionIVAReceptorId.
Siguiendo con la informacion de Ivan (https://afipsdk.com/blog/padron-obtener-condicion-frente-al-iva-de-un-cuit/)
Para obtener el id, primero debemos en administrador de relaciones, adherir al servicio, arca -> web services ->consulta de constancia de inscripcion (Servicio de Consulta de la Constancia de Inscripción de Padrón)
Con eso vamos a evitar el error de computador no autorizado.
El wsdl de homologacion es: https://awshomo.afip.gov.ar/sr-padron/webservices/personaServiceA5?WSDL
El wsdl de produccion es: https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA5?WSDL
Como comentario, les paso un ejemplo de respuesta ya que me llama la atencion la cantidad de impuestos de un cuit, seria recorrerla y buscar el id 30 para confirmar que es IVA Responsable Inscripto, que en este caso para el CondicionIVAReceptorId seria el valor 1 ...
[personaReturn] => stdClass Object
(
[datosGenerales] => stdClass Object
(
[domicilioFiscal] => stdClass Object
(
[codPostal] => 1640
[descripcionProvincia] => BUENOS AIRES
[direccion] => SANTIAGO DEL ESTERO 1....
[idProvincia] => 1
[localidad] => MARTINEZ
[tipoDomicilio] => FISCAL
)
[esSucesion] => NO
[estadoClave] => ACTIVO
[fechaContratoSocial] => 1970-08-20T12:00:00-03:00
[idPersona] => 305...
[mesCierre] => 4
[razonSocial] => BLA BLA
[tipoClave] => CUIT
[tipoPersona] => JURIDICA
)
[datosRegimenGeneral] => stdClass Object
(
[actividad] => Array
(
...
)
[impuesto] => Array
(
[0] => stdClass Object
(
[descripcionImpuesto] => GANANCIAS SOCIEDADES
[estadoImpuesto] => AC
[idImpuesto] => 10
[motivo] => INSCRIPCIÓN TRAMITADA EN AGENCIA
[periodo] => 198812
)
[1] => stdClass Object
(
[descripcionImpuesto] => IVA
[estadoImpuesto] => AC
[idImpuesto] => 30
[motivo] => INSCRIPCIÓN TRAMITADA EN AGENCIA
[periodo] => 198903
)
[2] => stdClass Object
(
[descripcionImpuesto] => REGIMENES DE INFORMACIÓN
[estadoImpuesto] => AC
[idImpuesto] => 103
[motivo] => INSCRIPCIÓN NO TRAMITADA EN AGENCIA
[periodo] => 200701
)
[3] => stdClass Object
(
[descripcionImpuesto] => BP-ACCIONES O PARTICIPACIONES
[estadoImpuesto] => AC
[idImpuesto] => 211
[motivo] => INSCRIPCIÓN NO TRAMITADA EN AGENCIA
[periodo] => 200305
)
[4] => stdClass Object
(
[descripcionImpuesto] => SICORE-IMPTO.A LAS GANANCIAS
[estadoImpuesto] => AC
[idImpuesto] => 217
[periodo] => 200001
)
[5] => stdClass Object
(
[descripcionImpuesto] => IMP.A LAS GAN.- BENEF.DEL EXT.
[estadoImpuesto] => AC
[idImpuesto] => 218
[periodo] => 202209
)
[6] => stdClass Object
(
[descripcionImpuesto] => EMPLEADOR-APORTES SEG. SOCIAL
[estadoImpuesto] => AC
[idImpuesto] => 301
[motivo] => INSCRIPCIÓN TRAMITADA EN AGENCIA
[periodo] => 197206
)
[7] => stdClass Object
(
[descripcionImpuesto] => RETENCIONES CONTRIB.SEG.SOCIAL
[estadoImpuesto] => AC
[idImpuesto] => 353
[periodo] => 200311
)
)
[regimen] => Array
(
...
)
)
[metadata] => stdClass Object
(
[fechaHora] => 2025-04-09T12:55:55.492-03:00
[servidor] => linux11
)
) Votos: 0 - Link respuesta -
Fecha: 09-04-2025 08:35:29 Alguien podria darme algun ejemplo en que el valor es 13 o 16 para el valor de CondicionIVAReceptorId, o si tienen un cuit de ejemplo tambien puedo hacer pruebas y ver que datos me devuelve el metodo getPersona. Saludos ! Votos: 0 - Link respuesta
-
Fecha: 09-04-2025 10:19:21 En realidad son variantes de monotributo que te permiten un abono (o un tiempo para el pago de los componentes o bonificaciones sobre estos) diferencial al regimen general. Deben identificarse como tal debido a los controles o para darle valor al monto de su pago, pero en el largo plazo terminan por ser monotributistas. Es una especie de "oportunidad" de no estar en negro ( y del estado en decir que no son desocupados ) Votos: 0 - Link respuesta
-
Fecha: 09-04-2025 17:27:50 Hola Marcelo no, cambiar la url? o el xml. yo tengo un codigo que consegui y adapte nunca modifique el xml. Tal cual como lo tengo en homolacion lo envio y no da problema pero en producción me lanza observación que es obligatorio. Logre consultar iva receptor y luego hay que comparar con la constancia de inscripcion no queda otra por lo que vi. Votos: 0 - Link respuesta
-
Fecha: 09-04-2025 17:49:44 Sebastián, yo uso la versión original de Iván, donde en el archivo Afip_wfe.php (el que tiene las clases para obtener ticket de acceso y token) tiene las dos referencias, el archivo xml, y la url. Votos: 0 - Link respuesta
-
Fecha: 11-04-2025 05:47:00 Ok voy a mirarlo y probarlo, cualquier duda consulto. Gracias como siempre Votos: 0 - Link respuesta
-
Fecha: 11-04-2025 06:31:59 Estimados, alguno esta recibiendo este error ahora :
Error codigo: 500, Error: Error interno de aplicación: - Metodo FECAESolicitar
Me estan llegando varios, agradeceria si alguno me comenta si tiene el mismo error ? Votos: 0 - Link respuesta -
Fecha: 11-04-2025 07:09:32 Si un cliente mío lo recibió pero ya se soluciono solo. WSF1 Estuvo caído casi 20 minutos entre 11:40 y 12:15 Votos: 0 - Link respuesta
-
Fecha: 11-04-2025 07:18:14 Ok, gracias Matias, creo que sigue caido, el problema fue concretamente en este metodo:
FECompUltimoAutorizado
Saludos ! Votos: 0 - Link respuesta -
Fecha: 11-04-2025 07:21:00 El ultimo error fue a las 13:12, ya mis clientes pudieron hacer varios comprobantes. Votos: 0 - Link respuesta
-
Fecha: 11-04-2025 07:34:33 Sigue muy inestable, falla de vez en cuando, alguien tiene algun lugar donde se pueda enviar o comentar el error para que lo tengan en cuenta en ARCA (afip) ? Votos: 0 - Link respuesta
-
Fecha: 11-04-2025 07:50:26 Después del paro de ayer, al que adhirieron los empleados de arca con un apagón informático, no me extrañaría que esto no sea un "simple" error... Votos: 0 - Link respuesta
-
Fecha: 11-04-2025 11:41:54 Hola Juan si por la mañana estuvo caido esta desde la pagina web no se podia facturar. Votos: 0 - Link respuesta
-
Fecha: 14-04-2025 04:45:06 La Agencia de Recaudación y Control Aduanero (ARCA) de Argentina ha notificado en el mensaje de respuesta de sus servicios web, que, ha postergado la obligatoriedad del uso del nodo ”Condición Frente al IVA del Receptor”.
¿Qué ocurrió con los plazos de implementación?
A contar del 6 de abril de 2025 el campo “Condición Frente al IVA del Receptor” pasó a ser opcional, más la fecha de obligatoriedad inicialmente fijada para el 15 de abril de 2025 por la Resolución General N°5616 fue postergada hasta el 30 de junio de 2025, inclusive, de forma tal, que el uso del nodo se volverá obligatorio a partir del 01 de julio de 2025, y las solicitudes de emisión de comprobantes que no contemplen este campo, serán rechazadas. Votos: 1 - Link respuesta -
Fecha: 04-05-2025 10:03:48 Hola a todos!
Estoy experimentando con Python, intentando hacer el proceso de obtención de token y Sign para obtener el Ticket TA, pero no lo estoy logrando aún. PyAfipWs está desactualizado.
¿Alguien tiene un código funcional que quiera compartir?
PD.: Ya lo logré Votos: 0 - Link respuesta -
Fecha: 27-05-2025 05:03:22 Buenos días!
Subieron el monto a partir del cual hay que informar datos del comprador:
(Res Gral 5700/2025)
Régimen general:
Antes: $417.000
Ahora: $10 millones
Monotributistas: $500.000 Votos: 2 - Link respuesta -
Fecha: 24-06-2025 05:48:18 Buenos dias, les queria hacer una consulta sobre lo nuevo que se viene a produccion el 30 de Junio o 1 de Julio de este año.
Y es sobre esto :
IMPORTANTE: El dia 6 de abril de 2025, se actualizo la version del Web Service (WS) que permite enviar, de forma opcional, el campo Condicion Frente al IVA del receptor. Cabe destacar que la Resolucion General Nro 5616 indica que ese dato debe enviarse de manera obligatoria a partir del 15/04/2025. No obstante, se mantendra como un dato no excluyente hasta el 30/06/2025, inclusive. A partir del 1/07/2025 se rechazaran las solicitudes de emision de comprobantes sin este dato. Para mas informacion, consultar el manual en: https://www.arca.gob.ar/fe/ayuda/webservice.asp, https://www.arca.gob.ar/ws/documentacion/ws-factura-electronica.asp
Que hacemos en estos casos, por ejemplo hice unas pruebas con algunas empresas que tengo de clientes, imaginemos una empresa de cuit X hace una factura A a una empresa de cuit Z
Cuando voy a buscar la condicion de iva de Z el sistema me tira la siguiente informacion ....
[dataReceptor] => stdClass Object
(
[personaReturn] => stdClass Object
(
[errorConstancia] => stdClass Object
(
[error] => La CUIT registra requerimientos pendientes de verificaciones.
[idPersona] => Z...
)
[metadata] => stdClass Object
(
[fechaHora] => 2025-06-24T11:35:47.994-03:00
[servidor] => linux11b
)
)
)
En este caso CondicionIVAReceptorId no podemos obtenerlo, la consulta es mandamos el parametro en cero o ni siquiera lo mandamos ?
Porque entiendo que desde la semana proxima no vamos a poder enviar una factura A sin este dato.
Si alguno sabe por favor le agradeceria.
Saludos ! Votos: 0 - Link respuesta -
Fecha: 24-06-2025 08:50:08 En el siguiente link tenés los ID para los diferentes tipos de contribuyentes:
AFIP códigos CondicionIVAReceptorId Votos: 0 - Link respuesta -
Fecha: 24-06-2025 09:25:18 Gracias Marcelo, pero el caso que yo te doy es diferente (es una factura A y la condicion de iva del cuit comprador responde: "La CUIT registra requerimientos pendientes de verificaciones" , afip me devuelve que esa empresa no tiene condicion de iva. Votos: 0 - Link respuesta
-
Fecha: 24-06-2025 09:57:39 Si, entiendo, pero el cuit no está inhabilitado, tiene observaciones, por lo que se supone que podes facturarle (si el webservice no te da error), y si es responsable inscripto el ID=1 Votos: 0 - Link respuesta
-
Fecha: 24-06-2025 09:59:46 En esos casos la empresa receptora no estaría en condiciones para que le factures A. Tu cliente va a perderse la venta? - no lo creo. Lo que deberías hacer es una factura B( a consumidor final ), pero si eso no es posible, lo que podrías hacer es introducir manualmente la condición que manifiesta el comprador debido a que de todas maneras tu obligación por el pago de los impuestos lo vas a cumplir. El problema que le queda solucionar a tu cliente es probar que no facturo en NEGRO ( que no vendió la factura ) para ello debe asegurarse que el cobro NO sea en efectivo Votos: 0 - Link respuesta
-
Fecha: 27-06-2025 05:02:02 Hola, buen día a todos.
Me están reportando seguido este error:SoapClient::__doRequest(): SSL: Connection reset by peer
Como es temporal y del lado de AFIP, les digo que prueben de nuevo y anda.
Les pasa lo mismo? saben por que ocurre? Votos: 0 - Link respuesta -
Fecha: 27-06-2025 07:00:36 No me da ese error, pero ocasionalmente me da el error:
SOAP Fault: HTTPFailed Sending HTTP SOAP request
Aleatoriamente, en cualquier CUIT y punto de venta.
La parte técnica de ARCA está dejando mucho que desear, quizás hicieron un saneamiento y echaron a mucha gente, y pasan estas cosas. Votos: 0 - Link respuesta -
Fecha: 27-06-2025 07:14:50 La Agencia de Recaudación y Control Aduanero (ARCA) publicó este viernes 27 de junio de 2025 la Resolución General 5716/25, que modificó el procedimiento para autorizar la emisión de comprobantes clase “A”, con el objetivo de facilitar el cumplimiento voluntario y prevenir irregularidades en materia fiscal. La medida entró en vigencia el mismo día de su publicación en el Boletín Oficial.
¿Algun contador en el grupo que sepa algo más al respecto y como puede afectar a los webservices? Votos: 0 - Link respuesta -
Fecha: 08-08-2025 06:56:15 Hola a todos!
Cada vez que hago una factura, ARCA me devuelve la observacion 10245 El campo Condición Frente al IVA del receptor resultará obligatorio conforme lo reglamentado por la Resolución General N° 5616. Para mas información consular método FEParamGetCondicionIvaReceptor.
La factura se genera bien y obtengo un CAE (al wsfe le envío el dato del receptor)
Tengo entendido que postergaron la implementación de ese cambio
A alguien más le sucede también que recibe ese mensaje? Se sabe cuando entra en vigencia? Votos: 0 - Link respuesta -
Fecha: 08-08-2025 09:25:57 Buenas tardes a todos. Me parece que lo postergaron hasta el 01/10/2025 Votos: 0 - Link respuesta
-
Fecha: 29-08-2025 07:34:41 ¿Alguien sabe en que estado se encuentra lo de la CondicionIVAReceptorId en el ambiente de test de ARCA?
Quise hacer una demostración de facturación y me falló el servicio.
10246: Campo Condicion Frente al IVA del receptor es obligatorio conforme a lo reglamentado por la Resolucion General Nro 5616. Para mas informacion consular metodo FEParamGetCondicionIvaReceptor
El tema es que ese dato se está enviando y en producción funciona, por lo que me hace suponer que en el ambiente de test de ARCA esto no está implementado.
¿Alguien me podrá confirmar esto? ¿Alguna sugerencia para poder facturar? Votos: 0 - Link respuesta -
Fecha: 26-09-2025 05:17:53 Buenas alguien que tenga implementado en php el facturados automático de ventas en mercado libre. Le está dando algún error?. Pq desde ayer el sistema que tengo me esta dando error con esas ventas a la hora de facturar Votos: 0 - Link respuesta
-
Fecha: 27-09-2025 17:43:31 Buenas. Estoy teniendo problemas a partir del DNI obtener el CUIT para poder facturar. Alguien tiene algun metodo o me puede dar alguna sugerencia. Votos: 0 - Link respuesta
-
-
Fecha: 01-10-2025 10:03:39 Te paso uno que uso yo, en PHP. Son dos archivos, un html con el form para ingresar DNI y sexo o sociedad:
<!doctype html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>.::Generar CUIT::.</title> <script src="https://code.jquery.com/jquery-1.11.3.min.js" type="text/javascript"></script> <script type="text/javascript"> function Generar() { var doc = $( "#nro_documento" ).val () ; var sex = ( sexo.options[sexo.selectedIndex].value ) ; var cant_doc = $( "#nro_documento" ).val().length; /*verifico que haya seleccionado un sexo y completado el dni*/ if ( doc == '' || sex == 0 ) { $( "#result" ).html( '' ) ; $( "#error" ).html( '<center><font color="red" size=4>Campos vacios..!!</font></center>' ); } else { /* verifico la longitud del campo documento sea >= 7*/ if ( cant_doc >= 7 ) { /* verifico que solo se hayan ingresado numeros. Que el campo sea entero.*/ if (isNaN(doc)) { $( "#error" ).html( '<center><font color="red" size=4>Documento debe ser solo numeros...!!</font></center>' ); } else { doc = doc.toString().padStart(8, '0'); $.ajax({ type: 'GET', url: "generarcuit.php?dni="+doc+"&sexo="+sex, success: function(data){ $( "#error" ).html( ' ' ); $( "#result" ).html( "<center><font color='black' size=4>CUIT: "+data+"</font></center>" ); } }); } } else { $( "#error" ).html( '<center><font color="red" size=4>Documento Incorrecto..!!</font></center>' ); } } } </script> </head> <body> <div class="contenido"> <fieldset> <legend>Formulario</legend> <input type="text" size="20" name="nro_documento" id="nro_documento" value="" placeholder="Nro de documento"/> <select name="sexo" id="sexo"> <option value="0">Seleccione...</option> <option value="1">Masculino</option> <option value="2">Femenino</option> <option value="3">Sociedad</option> </select> <div id="error"> </div> <input type="submit" name="mysubmit" value="Generar" onclick="Generar()"/> <div id="result"></div> </fieldset> </div> </body> </html>
Y un archivo PHP para el cálculo (generarcuit.php):
<?php $dni = $_GET["dni"]; //8 numeros $sexo = $_GET["sexo"]; //1: masculino, 2: femenino, 3: sociedad function CUIT($sex,$doc) { if ($sex == 1) { $tipo = "20"; } elseif ($sex == 2) { $tipo = "27"; } else { $tipo = "30"; } $multiplicadores = Array("3", "2", "7","6", "5", "4", "3", "2"); $calculo = (substr($tipo,0,1)*5)+(substr($tipo,1,1)*4); for ($i=0;$i<8;$i++) { $calculo += substr($doc,$i,1) * $multiplicadores[$i]; } $resto = ($calculo)%11; if ($sex != 3 && $resto <= 1) { if ($resto == 0) { $dv = 0; } else { if ($sex == 1) { $dv = 9; } else { $dv = 4; } $tipo = "23"; } } else { $dv = 11 - $resto; } if ($tipo == "30" && $dv == 10) { $tipo = "33"; $dv = 9; } return $tipo."-".$doc."-".$dv; } echo CUIT($sexo,$dni); ?>
Detecta y calcula los cuits 20,23,27,30 y 33
Los cuits 24 y 34 no se pueden calcular con fórmulas, porque se asignan a documentos repetidos. Votos: 1 - Link respuesta -
Fecha: 01-10-2025 16:32:36 En el blog de mi sitio web hay un artículo sobre cálculo de CUIT solo con javascript:
Calcular CUIT desde DNI Votos: 1 - Link respuesta -
-
Fecha: 12-11-2025 09:26:57 Hola a todos, vuelvo sobre lo que pregunté hace unos meses
aquí más arriba está el post original
¿Alguna sugerencia? Votos: 0 - Link respuesta -
Fecha: 12-11-2025 10:14:08 Hola Matias, buenas tardes
En el ambiente de test a mi me funciona, puede ser que no tengas actualizado el wsdl de homologacion
https://wswhomo.afip.gov.ar/wsfev1/service.asmx?WSDL Votos: 1 - Link respuesta -
Fecha: 12-11-2025 10:49:21 Yo nunca lo usé en homologación, lo implemente directo a producción. Pero el WSDL se actualizó en Marzo para incluir los nuevos parámetros (MonCotiz, CanMisMonExt, CondicionIVAReceptorId), así que creo que Pablo está en lo correcto, quizás te faltó actualizar el wsdl. Votos: 1 - Link respuesta
-
Fecha: 13-11-2025 02:56:44 era eso!! tenia actualizado el wsdl de produccion, pero no el de testing... =(
me centré en el código y no tuve en cuenta esos archivos
gracias pablo y marcelo Votos: 1 - Link respuesta -
Fecha: 16-12-2025 14:18:20 Buenas noches.
Se vencio mi certificado de Homologacion y al quere entrar en
WSASS - AUTOGESTIÓN CERTIFICADOS HOMOLOGACIÓN me da error.
Es a mi solo o le pasa a algun otro
Me dirige a esta pagina https://wsass-homo.afip.gob.ar/wsass/token.aspx
Voy a mis servicio y dentro de ellos busco WSASS - AUTOGESTIÓN CERTIFICADOS HOMOLOGACIÓN
Gracias Votos: 0 - Link respuesta -
Fecha: 16-12-2025 15:04:47 Recién probé: HTTP Error 503. The service is unavailable. Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
