Factura Electronica - Argentina

298 views
Skip to first unread message

Ruben Antunes

unread,
Jun 17, 2015, 7:21:00 PM6/17/15
to mundovis...@googlegroups.com

Buenas noches: a quien me pueda orientar. Me están pidiendo aplicar el tema de Facturación electrónica, pero por más que busco no alcanzo a entender el tema. Mi sistema es de cobro de cuotas de colegios, pero hay uno que tiene que empezar a aplicar la Factura Electronica. Si me pueden guiar lo agradezco.

 

Saludos

Ruben

Fidel Charny

unread,
Jun 17, 2015, 8:09:21 PM6/17/15
to mundovis...@googlegroups.com
http://www.sistemasagiles.com.ar/trac/wiki/PyAfipWs
Yo trabajo con esa librería desde agosto de 2014. Es de pago, pero te permite obtener el número de cae y generar la factura en PDF.
Tiene una versión de prueba que es gratuita.

Ruben Antunes

unread,
Jun 18, 2015, 7:56:03 AM6/18/15
to mundovis...@googlegroups.com

Buenos días Fidel: ahí estoy viendo el LINK que me pasastes. Te lo agradezco. Ahora, me podrías explicar en que consiste todo el trámite. Es decir: tengo mi sistema que tiene que empezar a emitir factura electrónica. Me tengo que inscribir en algún lado. O hacer algún trámite para empezar a utilizar dicho servicio. Por favor, si tenes un tiempito me vendría bien que me lo expliques. Gracias

 

RUBEN ANTUNES

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Fidel Charny

unread,
Jun 18, 2015, 7:40:21 PM6/18/15
to mundovis...@googlegroups.com
Rubén:
Estos son los pasos que tengo diagramados para mis clientes.

1) Conseguir la licencia de PyAfip (pago única vez) para conexion, factura electrónica nacional y generación de PDF. (Ultimo presupuesto conocido:
WSAA + WSFEv1 + PyFEPDF: $2250 + IVA (hasta 18hs, 3 meses de cobertura para consultas)

2) Hacer la adhesión del servicio de Factura Electrónica en la página de Afip (con clave fiscal). Llenar el formulario de Empadronamiento.
3) Crear dentro del servicio de factura electrónica los puntos de venta para factura electrónica (un punto por cada equipo que facture)
4) Crear con OpenSSL el key de conexión y un certificado de petición por OPenSSL (archivo .crs)
5) Enviar a firmar el certificado a través de la Página de Afip y descargar el certificado generado. (clave fiscal)
6) Asociar el certificado generado a los servicios de Afip (creación del facturador virtual) (clave fiscal)
7) Descargar e Instalar el sistema PyAfip en cada máquina que facture, cuando se tenga el usuario y la clave de acceso para la descarga.
8) Copiar los archivos key y crt al servidor
9) Copiar un archivo de instrucciones para la generación del PDF en el Servidor (factura.csv)
10) Habilitar el servicio de factura electrónica
en el sistema

Lógicamente tenés una etapa de desarrollo por delante cuya extensión dependerá de la pulcritud de los datos que tengas.
Dentro de VFP, se crean objetos (owsaa= newobject( )) a cuyos métodos se pasan los parámetros requeridos.
Podés pedir en la página del Afip un certificado para pruebas. No sé como es ahora, porque cuando yo lo pedí había que gestionarlo por email. Ahora tenés que entrar con tu cuit o la de algún cliente.

Para ejemplo de cómo se puede trabajar con PyAfip y Vfp, te pongo un ejemplo del acceso

* Referencias
* this.appdir    && ruta de carpeta raíz de archivos factura electrónica
* loMens.AddLine() && de la clase "Mensajero" para mostrar el avance (como si fuera:  ? "tal cosa está pasando")
* loFso = Newobject("Scripting.FileSystemObject")
* This.ShowError() && rutina que muestra los errores detectados por Catch
* Th_ReceProd        && Boolean que indica si se habilitó el modo producción (.T.) o se está en prueba (.F.)
* _CR_   #DEFINE _CR_  CHR(13)

*<Token_Sign_CallWsaa>

TRY
    LOCAL LOEX AS
Exception
    lcGranError
="Wsaa.Error"
    lcWsaaExcepcion
="No se creó el objeto WSAA"
    lcWsaaTraceBack
=""    
   
*-- Crear objeto interface Web Service Autenticación y Autorización
    loMens
.AddLine(" Creando objeto wsaa...")
    WSAA
= CREATEOBJECT("WSAA")    
    STORE
"" TO lcWsaaExcepcion,lcWsaaTRaceback

   
*<NewProcedure> **********************************************
    loMens
.AddLine("Gestionando acceso",.t.,.t.)
    tra
= WSAA.CreateTra("wsfe",36000)
    cms
= WSAA.SignTRA( tra , this.file_crt , this.file_key)    
    loMens
.AddLine("Gestionando Token y Sign...")
   
    STORE
"" TO lcToken,lcSign,ta_xml
    lcFileTicket
=ADDBS(this.appdir)+"ticket\ta.xml"

    IF
this.fso.fileExists(lcfileTicket)
        ta_xml
=FILETOSTR(lcFileTicket)
        ok
= WSAA.AnalizarXml(ta_xml)
        IF NOT WSAA
.EXPIRADO()
            lcToken
=Wsaa.ObtenerTagXml("token")
            lcSign
=Wsaa.ObtenerTagXml("sign")
        ENDIF
    ENDIF
    IF EMPTY
(lcToken) OR EMPTY(lcSign)
        loMens
.AddLine("Creando nuevo Token y Sign...")

        IF
!EMPTY(cms)
            IF
this.Th_ReceProd
                ok
= WSAA.Conectar("", "https://wsaa.afip.gov.ar/ws/services/LoginCms")
           
else
                ok
= WSAA.Conectar()
            endif            
            ta_xml
=WSAA.LoginCMS(cms)
            IF
!EMPTY(ta_xml)
                STRTOFILE
(ta_xml,lcFileTicket,0)
            ENDIF
            lcToken
=WSAA.Token
            lcSign
=WSAA.Sign
        endif
    ENDIF


   
*</NewProcedure> **********************************************    

   
CATCH TO loex
    lErrorWsaa
=.t.
    IF VARTYPE
(wsaa)="O"
        lcwsaaExcepcion
= WSAA.Excepcion
        lcWsaaTraceBack
= WSAA.Traceback
    ENDIF
   
   
*--? WSAA.XmlRequest
   
*--? WSAA.XmlResponse    
   
    lnafiperr
= ERROR() -2147221504
    lcAfipErr
="Código de Error Afip: "+IIF(BETWEEN(lnafipErr,1001,1999),TRANSFORM(lnafipErr),"0")
   
    lcMensaje
=PROGRAM()+ _CR_ +lcAfipErr
    lcMensaje
=lcMensaje+ _CR_ +lcWsaaExcepcion
    IF
!EMPTY(lcWsaaTraceBack)
        lcMensaje
=lcMensaje+ _CR_ +lcWsaaTraceback
    ENDIF
    lcmensaje
=lcmensaje+ _CR_ +lcGRanError
   
    loex
.UserValue=lcMensaje
   
this.ShowError(loEx)

   
* Se produjo un error: quitar el monitor de tareas.
    IF PEMSTATUS
(_screen,"Mensajero",5)
        _screen
.mensajero=null
    ENDIF
   
   
FINALLY
    lcGRanError
=""
ENDTRY
IF lErrorWsaa
    wsaa
=null
    RETURN NULL
ENDIF

Si la conexión se supera (no hay error), ya se puede acceder al objeto WSFE = CREATEOBJECT("WSFEv1"), dentro del cual podés consultar para un punto de venta, último comprobante utilizado, y enviar los parámetros de factura y recibir las respuestas (Número de cae, por ejemplo). Los despachos y las respuestas son cadenas xml que conviene analizar para saber por qué se rechaza un trámite. Igualmente el pyafip tiene varias respuestas que se pueden leer.

Fidel Charny

unread,
Jun 18, 2015, 7:47:36 PM6/18/15
to mundovis...@googlegroups.com
Por si no quedó claro, la adhesión a Factura electrónica la tiene que hacer cada cliente. Cada cliente usuario de tu sistema (y vos mismo si sos usuario) tendrán que efectuar toda la tramitación descripta. Con un solo certificado pueden trabajar en red.

Apostillas:
Uno de los temas que hay que resolver a nivel de sistema, es qué pasa cuando:
1) Se cayó la conexión a internet
2) Se cayó el servidor Afip
3) Una factura fué rechazada (problemas con la información despachada, bloqueo de cuit de cliente, etc.)

También conviene (aunque uno lleve su propio numerador) que el número de comprobante sea igual al último comprobante emitido según la Afip +1.
Por ese motivo, el número de comprobante no puede ser un campo autoincremental y además, tenés que tener una rutina para cambiar el número de factura antes de generar el pdf correspondiente, por si no coincide el actual con el secuencial de Afip.




El jueves, 18 de junio de 2015, 8:56:03 (UTC-3), rubenantunes escribió:

Ricardo Natella

unread,
Jun 24, 2015, 9:44:51 AM6/24/15
to mundovis...@googlegroups.com

Hola Rubén, en tu caso, cuando hay que facturar masivamente no tendrías que usar WebServices, sino RECE que es una alternativa que pone AFIP para tal fin.

Tendrías que generar un archivo plano (con cierta estructura), luego desde un aplicativo de AFIP que se instala sobre SIAP, importar el archivo plano.  Luego lanzar un proceso que hace que el aplicativo se conecte con el servidor de AFIP y obtenga todos los CAE y Vtos. De cada una de las facturas del lote.   Por último con el archivo obtenido, tendrías que ir pegando cada CAE a la factura que vas a imprimir y al final recién imprimir.

Espero se entienda y tengas una punta para comenzar.

Saludos.

 

Ricardo

 

De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Ruben Antunes


Enviado el: miércoles, 17 de junio de 2015 20:21
Para: mundovis...@googlegroups.com


No se encontraron virus en este mensaje.
Comprobado por AVG - www.avg.com
Versión: 2015.0.6030 / Base de datos de virus: 4365/10089 - Fecha de publicación: 06/24/15

Ruben Antunes

unread,
Jun 24, 2015, 10:22:09 AM6/24/15
to mundovis...@googlegroups.com

Gracias a todos por responderme sobre el tema. Y la verdad que ambos casos me van a ser necesarios.

Asi que me pondré manos a la obra. Mil gracias nuevamente.

 

Ruben Antunes

Jorge Benitez

unread,
Jun 24, 2015, 12:28:39 PM6/24/15
to mundovis...@googlegroups.com
Hola Ruben...yo lo resolvi usando una libreria que compre a terceros, la toque un poquito y anda de 10.
Con esa libreria en mi sistema hago click en el boton facturar e inmediatamente se comunica a los servidores del afip y obtengo el cae, fecha de vencimiento y numero de comprobante. El tema del codigo de barras lo resolvi solo..usando y modificando unas rutinas del maestro Luis Maria Guayan sin usar ningun aplicativo externo
Obvio que hay otras cosas que debes hacer como obtener el certificado digital..pero ese es tema de la parte contable del colegio

Ruben Antunes

unread,
Jun 24, 2015, 12:51:53 PM6/24/15
to mundovis...@googlegroups.com

Jorge: me podrías dar una mano entonces. Te lo agradecería.

Saludos

Ruben Antunes

unread,
Jul 14, 2015, 10:31:23 AM7/14/15
to mundovis...@googlegroups.com

Ricardo: gracias por la información enviada. Ahora tendrías algún ejemplo o algo ya implementado que me puedas asesorar o enviar. Saludos

 

Ruben Antunes

 

De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Ricardo Natella


Enviado el: miércoles, 24 de junio de 2015 10:44 a.m.
Para: mundovis...@googlegroups.com

Reply all
Reply to author
Forward
0 new messages