Facturacion Electronica Argentina

740 views
Skip to first unread message

conelo

unread,
Aug 6, 2014, 11:59:31 AM8/6/14
to publice...@googlegroups.com
Buen dia colegas, me gustaria contactarme por el tema de Facturacion Electronica de Argentina, como se comienza y poder intercambiar ideas y experiencias.

saludos cordiales

Muchas GRACIAS

Mario A Becerra
A. de Sistemas.

Mauricio Gonzalez

unread,
Aug 6, 2014, 1:39:46 PM8/6/14
to publice...@googlegroups.com
Lo primero que haria yo en tu lugar es buscar si ya existen hilos sobre el tema, talvez puedes digitar facturacion electronica en buscar temas.

Antonio Meza

unread,
Aug 6, 2014, 3:37:00 PM8/6/14
to publice...@googlegroups.com
Date una vuelta por este foro aunque es para mexico te puede servir


saludos
Antonio Meza

Oscar Vogel

unread,
Aug 6, 2014, 4:23:01 PM8/6/14
to publice...@googlegroups.com
http://www.pyafipws.com.ar/ fijate ahi, estoy utilizando el objeto COM y al menos en homologacion esta funcionando segun lo esperado, ahora estoy por pasar a produccion y ahi te comento

saludos

Daniel Del Giudice

unread,
Aug 6, 2014, 5:19:39 PM8/6/14
to publice...@googlegroups.com
Hola Mario,

yo lo resolví hace unos meses comprando una dll a Abel Miranda, www.bitingenieria.com.ar

Mi consejo sería que antes de enrollarte con los cien mil detalles de hacerlo a pulmon compres esto por unos cuantos mangos y ya.

La cosa a grandes rasgos es así:

Con OPENSSL hay que generar un archivo (yo lo llamo clave.key) y con ese otro archivo más (ponele el nombre que quieras) que el contador lo "sube" en la página de la AFIP en uno de lo tantos pasos que debe hacer para registrar al cliente en el sistema RECE de Facturación Electrónica. La Afip le devuelve otro archivo que te lo debe pasar a vos. Yo lo llamo certificado.crt.- Estos 2 archivos son los que usa la dll para identificarse ante la Afip cuando va a emitir una Factura Electrónica. Vos te identificas, informas cuit, neto, iva, total, etc que vas a facturar, la Afip te dice si o no, y si te dice si te entrega un CAE y un VTO, que vos DEBES guardar con los demás datos de la factura y que deben ser impresos. Estos 2 datos son los que le dan la legalidad a la factura impresa, ya que la puedes imprimir en cualquier papel y no necesita nada más que esto, ni siquiera el famoso código de barras, aunque yo lo imprimo para que quede "profesional".

Aquí te adjunto la rutina completa de autorización para hacer una factura (una pelotudez). Hay más detalles, pero por ahora creo que te alcanza para comenzar. Suerte!!!

PARAMETERS _feptovta, _fetipocomp, _fetipodoc, _fenrodoc, _fefechacomp, _feneto1, _feneto2, _feiva1, _feiva2, _fetotal, _feexento
PRIVATE _feptovta, _fetipocomp, _fetipodoc, _fenrodoc, _fefechacomp, _feneto1, _feneto2, _feiva1, _feiva2, _fetotal, _feexento
PRIVATE _resultado

_resultado = .F.
IF FILE("certificado.crt") AND ;
    FILE("clave.key") AND ;
    FILE("feafip.dll") AND ;
    FILE("openssl.exe") AND ;
    FILE("licencia.lic") AND ;
    FILE("libeay32.dll") AND ;
    FILE("ssleay32.dll")

  PUBLIC wsfev1 as FEAFIPLib.wsfev1
  
  WAIT "Solicitando autorización a la AFIP..." WINDOW NOWAIT
  o.numero_comprobante = 0
  o.fecae = ""
  o.fevto = CTOD("  /  /  ")

  *_fefechacomp = TRANSFORM(YEAR(_fefechacomp),"@L 9999") + TRANSFORM(MONTH(_fefechacomp),"@L 99") + TRANSFORM(DAY(_fefechacomp),"@L 99")
  _fefechacomp = DTOC(_fefechacomp,1)

  * Tipos de comprobante (_fetipocomp)
  *  1 = FACTURAS A
  *  2 = NOTAS DE DEBITO A
  *  3 = NOTAS DE CREDITO A
  *  6 = FACTURAS B
  *  7 = NOTAS DE DEBITO B
  *  8 = NOTAS DE CREDITO B
  * 11 = FACTURAS C
  * 12 = NOTAS DE DEBITO C
  * 13 = NOTAS DE CREDITO C


  IF EMPTY(o.fe_urlwsaa)
    o.fe_urlwsaa = lee_registro("FE_URLWSAA", "C", "https://wsaa.afip.gov.ar/ws/services/LoginCms", .F.)
  ENDIF
  IF EMPTY(o.fe_urlwsw)
    o.fe_urlwsw = lee_registro("FE_URLWSW", "C", "https://servicios1.afip.gov.ar/wsfev1/service.asmx", .F.)
  ENDIF
  
* URLs de autenticacion y negocio. Cambiarlas por las de producción al implementarlas en el cliente(abajo)

* Enotorno de desarrollo

* Entorno de producción (en el cliente)

  wsfev1 = CREATEOBJECT("FEAFIPLib.wsfev1")
  wsfev1.cuit = INT(VAL(o.mi_cuit))
  wsfev1.url = o.fe_urlwsw

  * Si se identifica correctamente
  IF wsfev1.login("certificado.crt", "clave.key", o.fe_urlwsaa)

    * Si puede recuperar el último comprobante emitido
    IF wsfev1.sfrecuperalastcmp(_feptovta, _fetipocomp)
      o.numero_comprobante = wsfev1.sflastcmp + 1

      wsfev1.RESET()

      * Parametros
      * Concepto (Entero) : Concepto facturado. Si es producto o servicio.
      * (1=Producto / 2=Servicio / 3=Productos y Servicios)
      * Tipo de documento del cliente (80=Cuit / 96=DNI)
      * Número de documento. Debe coincidir según el tipo definido en el parámetro anterior.
      * Comprobante a autorizar (Desde)
      * Comprobante a autorizar (Hasta)
      * Fecha del comprobante (aaaammdd)
      * Importe total (Flotante)
      * Importe total de servicios.
      * Neto gravado.
      * Monto exento.
      * Fecha de servicio desde (solo requerido si concepto es servicio)
      * Fecha de servicio hasta (solo requerido si concepto es servicio)
      * Fecha de vencimiento del pago (solo requerido si concepto es servicio)
      * Id de moneda.
      * Cotización de la moneda.

      wsfev1.agregafactura(1, _fetipodoc, _fenrodoc, o.numero_comprobante, o.numero_comprobante, _fefechacomp, _fetotal, 0, ;
        _feneto1+_feneto2, _feexento, "", "", "", "PES", 1)

      * Código de Iva (5=21% / 4=10.5%)
      IF _feiva1 > 0
        wsfev1.agregaiva(5, _feneto1, _feiva1)
      ENDIF
      IF _feiva2 > 0
        wsfev1.agregaiva(4, _feneto2, _feiva2)
      ENDIF


      IF wsfev1.autorizar(_feptovta, _fetipocomp)
        IF wsfev1.sfresultado(0)="A"
          o.fecae = wsfev1.sfcae(0)
          c = wsfev1.sfvencimiento(0)
          o.fevto = CTOD(RIGHT(c,2) + "/" + SUBSTR(c,5,2) + "/" + LEFT(c,4))

          _resultado = .T.
        ELSE
          * observaciones
          MESSAGEBOX(wsfev1.autorizarrespuestaobs(0))
        ENDIF
      ELSE
        MESSAGEBOX(wsfev1.errordesc)
      ENDIF
    ELSE
      * Si no pudo recuperar el último comprobante emitido
      MESSAGEBOX(wsfev1.errordesc)
    ENDIF
  ELSE
    * Si no se identificó correctamente
    MESSAGEBOX(wsfev1.errordesc)
  ENDIF

  RELEASE wsfev1
  WAIT CLEAR
ELSE
  MESSAGEBOX("Falta alguno de los siete archivos necesarios para la emisión de la Factura Electrónica. Comuníquese con el personal de soporte de Zona de Precios.", 16, _VFP.msgbox_error)
ENDIF

RETURN _resultado

conelo

unread,
Aug 7, 2014, 11:37:34 AM8/7/14
to publice...@googlegroups.com
Muchas Gracias por sus valiosos aportes.

Mario A. Becerra
A. de Sistemas



El miércoles, 6 de agosto de 2014 12:59:31 UTC-3, conelo escribió:

Roxana

unread,
Oct 18, 2023, 8:19:12 AM10/18/23
to Comunidad de Visual Foxpro en Español

Hola! Buenos dias!
Con esta linea, como se le puede indicar previamente la ruta del certificado?

  IF wsfev1.login("certificado.crt", "clave.key", o.fe_urlwsaa)

Gracias!
Reply all
Reply to author
Forward
0 new messages