Dos empresas en un mismo servidor

196 views
Skip to first unread message

Walter Acuña

unread,
Apr 22, 2015, 11:02:13 AM4/22/15
to pyaf...@googlegroups.com

Estimados
Trabajo bajo linux, en un servidor que contiene un sistema de facturacion para dos empresas distintas, pero en ambientes separados.
Una de ellas usa factura electronica hace años, y el otro esta por ingresar al regimen.

En principio, dupliqué el directorio pyrece, asi cada empresa tiene su propio rece.ini. Tambien configuré variables de entorno como para que no se vean entre sí.
El tema es que al ejecutar el rece1.py /ult por ej, sobre el directorio duplicado, me trae los datos de la otra empresa.

En un momento determinado, me apareció un mensaje que decía algo como "El CEE ya posee un TA valido para el acceso al..."

Será posible que sigan conviviendo las dos empresas en el mismo servidor? Alguien tiene un caso similar?


Saludos,
Walter


Mariano Reingart

unread,
Apr 23, 2015, 1:20:12 AM4/23/15
to pyaf...@googlegroups.com
2015-04-22 12:02 GMT-03:00 Walter Acuña <wm...@hotmail.com>:

Estimados
Trabajo bajo linux, en un servidor que contiene un sistema de facturacion para dos empresas distintas, pero en ambientes separados.
Una de ellas usa factura electronica hace años, y el otro esta por ingresar al regimen.

En principio, dupliqué el directorio pyrece, asi cada empresa tiene su propio rece.ini. Tambien configuré variables de entorno como para que no se vean entre sí.

No hace falta que dupliques todo el directorio, con tener varios rece.ini distintos alcanzaría para emitir facturas electronicas de emisores diferentes.
Al llamar a rece1.py o rece1.exe , podes indicarlque que configuración usar como primer parámetro, por ej:

python rece1.py rece-mariano.ini /ult 1 99
 
El tema es que al ejecutar el rece1.py /ult por ej, sobre el directorio duplicado, me trae los datos de la otra empresa.

¿Estas seguro que rece1.py no esta en le PATH? (por lo que esta ejecutando el de otra carpeta)
Fijate ejecutando ./rece1.py o como comente arriba.

En un momento determinado, me apareció un mensaje que decía algo como "El CEE ya posee un TA valido para el acceso al..."

Eso es porque estás solicitando varios tickets de acceso:

 
En general, RECE1 los reutiliza, salvo que sea una versión muy antigua y estén en la misma carpeta.
Te recomiendo actualizar la instalación y verificar que se pueda escribir en la carpeta cache (donde justamente guarda los archivos temporales, incluyendo el ticket de acceso).

Será posible que sigan conviviendo las dos empresas en el mismo servidor? Alguien tiene un caso similar?

Técnicamente no hay ninguna imposibilidad (los certificados digitales que emite AFIP no están vinculados a la IP o hardware), por lo que no debería haber ninguna dificultad de este tipo.

Sds


 

Andres Misiak

unread,
Apr 23, 2015, 11:18:43 AM4/23/15
to pyafipws
Walter, yo tengo más de 100 empresas en un mismo servidor, tengo una carpeta con cada archivo .ini y lo llamo con el comando
python /path/to/rece1.py /path/to/cuit.ini

Recuerdo que tuve que modificar para que el sistema trabaje con distintas TA.xml porque no me funcionaba algo cuando varias empresas querían facturar a la vez.

Saludos.


Andres Misiak

--
Has recibido este mensaje porque estás suscrito al grupo "PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT" 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 pyafipws+u...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a pyaf...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/pyafipws.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Walter Acuña

unread,
Apr 23, 2015, 1:04:17 PM4/23/15
to pyaf...@googlegroups.com
Gracias Mariano, me sirve de mucha ayuda tu tip, no recordaba que le podia pasar como parametro el archivo de configuracion!
Con respecto al PATH en principio no se estarían viendo entre sí, pero el tema creo que pasa por el TA.xml
Me da la impresion de que como ya hay un ticket vigente, no se genera otro nuevo (por mas que yo llame al pyrece con otro .ini). Entonces sigo trabajando con la empresa del ticket vigente.
Voy a tratar de investigar bien el tema.

Gracias nuevamente!
Saludos

Walter Acuña

unread,
Apr 23, 2015, 1:07:54 PM4/23/15
to pyaf...@googlegroups.com
Gracias Andres, voy a modificar mi aplicacion para que trabaje de esa manera en forma variable con el .ini.
Con respecto al TA, si, es justamente lo que me temo que tengo que hacer. Recordas como hiciste, con un TA.xml por empresa digamos?
Sigo investigando.

Muchas gracias!

Andres Misiak

unread,
Apr 25, 2015, 12:32:34 PM4/25/15
to pyafipws
Walter, te copio y pego lo que creo que modifiqué, pero me puede faltar algo.
Mariano, si te parece que está bueno, puedo revisar bien todo el proyecto y comitearlo para que lo evalues de agregar

En rece1.py línea 36:

#MODIFICADO PARA SAAS ARGENTINA
if len(sys.argv)>1 and sys.argv[1].endswith(".ini"):
    CONFIG_FILE = sys.argv[1]
    print "USING", CONFIG_FILE
else:
    CONFIG_FILE = "rece.ini"

En rece1.py línea 244

def depurar_xml(client):
    fecha = time.strftime("%Y%m%d%H%M%S")
    f=open(wsfev1_xml_dir+"request-%s.xml" % fecha,"w") #MODIFICADO PARA SAAS ARGENTINA
    f.write(client.xml_request)
    f.close()
    f=open(wsfev1_xml_dir+"response-%s.xml" % fecha,"w") #MODIFICADO PARA SAAS ARGENTINA
    f.write(client.xml_response)
    f.close()

En rece1.py línea 285

TA = config.get('WSAA','TA') #MODIFICADO PARA SAAS ARGENTINA

Por cada cuit tengo un archivo 20123456783.ini (suponiendo que el cuit sea 20123456783)

[WSAA]
CERT=/path/to/wsfe/20123456783.crt
PRIVATEKEY=/path/to/wsfe/20123456783.key
TA=/path/to/wsfe/20123456783_TA.xml

[WSFEv1]
CUIT=20123456783
ENTRADA=/path/to/wsfe/20123456783.entrada
SALIDA=/path/to/wsfe/20123456783.salida
XML_DIR=/sites/saasargentina/customer/saasargentina/empresas/xml/

En wsaa.py línea 198:

            for filename in (crt, key):
                if not os.access(filename,os.R_OK):
                    raise RuntimeError("Imposible abrir %s\n" % filename)
            # creo el nombre para el archivo del TA (según credenciales y ws) 
            # fn = "TA-%s.xml" % hashlib.md5(service + crt + key).hexdigest() MODIFICADO POR SAAS ARGENTINA
            fn = TA
            if cache:
                fn = os.path.join(cache, fn)
            else:
                fn = os.path.join(self.InstallDir, "cache", fn)

Espero que te sirva de guía o como idea.

Saludos.

Andres Misiak
Reply all
Reply to author
Forward
0 new messages