paulabourlot / pyafipws

Automatically exported from code.google.com/p/pyafipws
GNU General Public License v3.0
0 stars 0 forks source link

PyRece falla con reprocesados #47

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
Py rece genera el id de la transacción a partir del numero de comprobante.

Pero el servicio de la AFIP no admite el mismo id para dos transacciones

La forma mas sencilla de solucionarlo, es generar el id a partir de un timestamp

diff --git a/pyrece b/pyrece
index 33c81a7..bcf5513 100755
--- a/pyrece
+++ b/pyrece
@@ -277,10 +277,12 @@ Para solicitar soporte comercial, escriba a 
pyafipws@nsis.com.ar
             self.progreso(0)
             for i, kargs in self.get_selected_items():
                 kargs['cbt_desde'] = kargs['cbt_hasta'] = kargs ['cbt_numero']
-                if 'id' not in kargs or kargs['id'] == "":
-                    id = long(kargs['cbt_desde'])
-                    id += (int(kargs['tipo_cbte'])*10**4 + 
int(kargs['punto_vta']))*1
-                    kargs['id'] = id
+                #if 'id' not in kargs or kargs['id'] == "":
+                #    id = long(kargs['cbt_desde'])
+                #    id += (int(kargs['tipo_cbte'])*10**4 + 
int(kargs['punto_vta']))*
+                #    kargs['id'] = id
+                id = int(time.time() * 100) % (2**63 -1)
+                
                 for key in kargs:
                     if isinstance(kargs[key], basestring):
                         kargs[key] = kargs[key].replace(",",".")

Original issue reported on code.google.com by sorias...@gmail.com on 17 May 2011 at 6:18

GoogleCodeExporter commented 8 years ago
¿Que versión de pyrece estas usando?

Este tema no influye más con WSFEv1 (obligatorio a partir de 1/7/2011), ya que 
no se toma en cuenta el campo ID.

La interfaz contempla un nuevo esquema propio para reprocesar comprobantes, que 
no utiliza el campo ID, sino que verifica todos los campos con la factura 
registrada en AFIP:
http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs#ReprocesoAutomático

Tampoco generar un ID aleatorio es recomendado para WSFE (v0) ya que en caso de 
perdida de información y falla de comunicación, es imposible recuperar el CAE 
(salvo que se genere exactamente el mismo ID aleatorio, para lo que habría que 
usar una semilla fija o similar, no time en este caso).

Lo correcto en estos casos sería generar un ID más previsible:
http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs#Funcionamientodelcampo
ID

Original comment by reingart@gmail.com on 18 May 2011 at 10:07

GoogleCodeExporter commented 8 years ago
ok, se ve que estoy trabajando con una version vieja.

Original comment by sorias...@gmail.com on 19 May 2011 at 3:21