print "== %s ==" % msg for fmt in formato: clave, longitud, tipo = fmt[0:3] if isinstance(longitud, tuple): longitud, dec = longitud else: dec = len(fmt) > 3 and fmt[3] or 2 print " * Campo: %-20s Posición: %3d Longitud: %4d Tipo: %s Decimales: %s" % ( clave, comienzo, longitud, tipo, dec) comienzo += longitud sys.exit(0) # obteniendo el TA from wsaa import WSAA wsaa = WSAA() ta = wsaa.Autenticar("wsmtxca", cert, privatekey, wsaa_url) if not ta: sys.exit("Imposible autenticar con WSAA: %s" % wsaa.Excepcion) ws.SetTicketAcceso(ta) if '/puntosventa' in sys.argv: print "Consultando puntos de venta CAE..." print '\n'.join(ws.ConsultarPuntosVentaCAE()) print "Consultando puntos de venta CAEA..." print '\n'.join(ws.ConsultarPuntosVentaCAEA()) sys.exit(0) if '/prueba' in sys.argv: # generar el archivo de prueba para la próxima factura tipo_cbte = 6 punto_vta = 4000
else: conf_dbf = {} DEBUG = '--debug' in sys.argv XML = '--xml' in sys.argv if DEBUG: print "Usando Configuración:" print "WSAA_URL:", WSAA_URL print "WSLTV_URL:", WSLTV_URL print "CACERT", CACERT print "WRAPPER", WRAPPER # obteniendo el TA from wsaa import WSAA wsaa = WSAA() ta = wsaa.Autenticar("wsltv", CERT, PRIVATEKEY, wsdl=WSAA_URL, proxy=PROXY, wrapper=WRAPPER, cacert=CACERT) if not ta: sys.exit("Imposible autenticar con WSAA: %s" % wsaa.Excepcion) # cliente soap del web service wsltv = WSLTV() wsltv.LanzarExcepciones = True wsltv.Conectar(url=WSLTV_URL, proxy=PROXY, wrapper=WRAPPER, cacert=CACERT) wsltv.SetTicketAcceso(ta) wsltv.Cuit = CUIT if '--dummy' in sys.argv: ret = wsltv.Dummy() print "AppServerStatus", wsltv.AppServerStatus print "DbServerStatus", wsltv.DbServerStatus print "AuthServerStatus", wsltv.AuthServerStatus
print " * Campo: %-20s Posición: %3d Longitud: %4d Tipo: %s Decimales: %s" % ( clave, comienzo, longitud, tipo, dec) comienzo += longitud else: from formatos.formato_dbf import definir_campos filename = "%s.dbf" % msg.lower()[:8] print "==== %s (%s) ====" % (msg, filename) claves, campos = definir_campos(formato) for campo in campos: print " * Campo: %s" % (campo,) sys.exit(0) # obteniendo el TA from wsaa import WSAA wsaa = WSAA() ta = wsaa.Autenticar("wsfe", cert, privatekey, wsaa_url, proxy=proxy_dict, cacert=CACERT, wrapper=WRAPPER) if not ta: sys.exit("Imposible autenticar con WSAA: %s" % wsaa.Excepcion) ws.SetTicketAcceso(ta) if '/prueba' in sys.argv: # generar el archivo de prueba para la próxima factura tipo_cbte = 1 punto_vta = 4002 cbte_nro = ws.CompUltimoAutorizado(tipo_cbte, punto_vta) if not cbte_nro: cbte_nro=0 cbte_nro=int(cbte_nro) fecha = datetime.datetime.now().strftime("%Y%m%d") concepto = 1 tipo_doc = 80; nro_doc = "30500010912" cbt_desde = cbte_nro + 1; cbt_hasta = cbte_nro + 1
def main(): "Funcion principal para utilizar la interfaz por linea de comando" if '--formato' in sys.argv: print "Formato:" for msg, formato in [('Encabezado', ENCABEZADO), ('Observacion', OBSERVACION), ('Evento', EVENTO), ('Error', ERROR), ]: comienzo = 1 print "=== %s ===" % msg print "|| %-20s || %8s || %9s || %-12s || %-20s ||" % ( "Campo", "Posición", "Longitud", "Tipo", "Descripción") for fmt in formato: clave, longitud, tipo, desc = fmt print "|| %-20s || %8d || %9d || %-12s || %-20s ||" % ( clave, comienzo, longitud, tipo, desc.encode("latin1")) comienzo += longitud sys.exit(0) # leer configuracion global CONFIG_FILE if len(sys.argv)>1 and sys.argv[1][0] not in "-/": CONFIG_FILE = sys.argv.pop(1) config = SafeConfigParser() config.read(CONFIG_FILE) crt = config.get('WSAA', 'CERT') key = config.get('WSAA', 'PRIVATEKEY') cuit = config.get('WSCDC', 'CUIT') url_wsaa = config.get('WSAA', 'URL') if config.has_option('WSAA','URL') else "" url_wscdc = config.get('WSCDC', 'URL') if config.has_option('WSCDC','URL') else "" # leo configuración de archivos de intercambio ENTRADA = config.get('WSCDC','ENTRADA') SALIDA = config.get('WSCDC','SALIDA') if config.has_section('DBF'): conf_dbf = dict(config.items('DBF')) else: conf_dbf = {} # instanciar la interfaz con el webservice wscdc = WSCDC() ok = wscdc.Conectar("", url_wscdc) if "--dummy" in sys.argv: #print wscdc.client.help("ComprobanteDummy") wscdc.Dummy() print "AppServerStatus", wscdc.AppServerStatus print "DbServerStatus", wscdc.DbServerStatus print "AuthServerStatus", wscdc.AuthServerStatus sys.exit(0) # Gestionar credenciales de acceso con AFIP: from wsaa import WSAA wsaa = WSAA() ta = wsaa.Autenticar("wscdc", crt, key, url_wsaa) if not ta: sys.exit("Imposible autenticar con WSAA: %s" % wsaa.Excepcion) wscdc.SetTicketAcceso(ta) wscdc.Cuit = cuit if "--constatar" in sys.argv: if len(sys.argv) < 8: if "--prueba" in sys.argv: dic = dict( cbte_modo="CAE", cuit_emisor="20267565393", pto_vta=4002, cbte_tipo=1, cbte_nro=109, cbte_fch="20131227", imp_total="121.0", cod_autorizacion="63523178385550", doc_tipo_receptor=80 , doc_nro_receptor="30628789661", ) # escribir archivo de intercambio con datos de prueba: escribir_archivo(dic, ENTRADA) else: # leer archivo de intercambio: dic = leer_archivo(ENTRADA) # constatar el comprobante wscdc.ConstatarComprobante(**dic) # actualizar el diccionario con los datos de devueltos por AFIP dic.update({'resultado': wscdc.Resultado, 'fch_proceso': wscdc.FchProceso, }) dic['observaciones'] = wscdc.observaciones dic['errores'] = wscdc.errores escribir_archivo(dic, SALIDA) else: # usar los datos pasados por linea de comandos: wscdc.ConstatarComprobante(*sys.argv[sys.argv.index("--constatar")+1:]) print "Resultado:", wscdc.Resultado print "Mensaje de Error:", wscdc.ErrMsg print "Observaciones:", wscdc.Obs if "--params" in sys.argv: print "=== Modalidad Comprobantes ===" print u'\n'.join(wscdc.ConsultarModalidadComprobantes("||")) print "=== Tipo Comprobantes ===" print u'\n'.join(wscdc.ConsultarTipoComprobantes("||")) print "=== Tipo Documentos ===" print u'\n'.join(wscdc.ConsultarTipoDocumentos("||")) print "=== Tipo Opcionales ===" print u'\n'.join(wscdc.ConsultarTipoOpcionales("||")) print "Mensaje de Error:", wscdc.ErrMsg
conf_dbf = {} DEBUG = '--debug' in sys.argv XML = '--xml' in sys.argv if DEBUG: print "Usando Configuración:" print "wsaa_url:", wsaa_url print "wsremcarne_url:", wsremcarne_url # obteniendo el TA from wsaa import WSAA wsaa = WSAA() ta = wsaa.Autenticar("wsremcarne", CERT, PRIVATEKEY, wsaa_url, debug=DEBUG) if not ta: sys.exit("Imposible autenticar con WSAA: %s" % wsaa.Excepcion) # cliente soap del web service wsremcarne = WSRemCarne() wsremcarne.Conectar(wsdl=wsremcarne_url) wsremcarne.SetTicketAcceso(ta) wsremcarne.Cuit = CUIT ok = None if '--dummy' in sys.argv: ret = wsremcarne.Dummy() print "AppServerStatus", wsremcarne.AppServerStatus
conf_dbf = {} DEBUG = '--debug' in sys.argv XML = '--xml' in sys.argv if DEBUG: print "Usando Configuración:" print "wsaa_url:", wsaa_url print "wsfecred_url:", wsfecred_url # obteniendo el TA from wsaa import WSAA wsaa = WSAA() ta = wsaa.Autenticar("wsfecred", CERT, PRIVATEKEY, wsaa_url, debug=DEBUG) if not ta: sys.exit("Imposible autenticar con WSAA: %s" % wsaa.Excepcion) # cliente soap del web service wsfecred = WSFECred() wsfecred.Conectar(wsdl=wsfecred_url) wsfecred.SetTicketAcceso(ta) wsfecred.Cuit = CUIT ok = None if '--dummy' in sys.argv: ret = wsfecred.Dummy() print "AppServerStatus", wsfecred.AppServerStatus
print "Formato:" for msg, formato in [('Encabezado', ENCABEZADO), ('Detalle', DETALLE), ('Permiso', PERMISO), ('Comprobante Asociado', CMP_ASOC)]: comienzo = 1 print "== %s ==" % msg for fmt in formato: clave, longitud, tipo = fmt[0:3] dec = len(fmt)>3 and fmt[3] or (tipo=='I' and '2' or '') print " * Campo: %-20s Posición: %3d Longitud: %4d Tipo: %s Decimales: %s" % ( clave, comienzo, longitud, tipo, dec) comienzo += longitud sys.exit(0) # obteniendo el TA from wsaa import WSAA wsaa = WSAA() ta = wsaa.Autenticar("wsfex", cert, privatekey, wsaa_url) if not ta: sys.exit("Imposible autenticar con WSAA: %s" % wsaa.Excepcion) ws.SetTicketAcceso(ta) if '/prueba' in sys.argv: # generar el archivo de prueba para la próxima factura f_entrada = open(entrada,"w") tipo_cbte = 19 # FC Expo (ver tabla de parámetros) punto_vta = 7 # Obtengo el último número de comprobante y le agrego 1 cbte_nro = int(ws.GetLastCMP(tipo_cbte, punto_vta)) + 1 fecha_cbte = datetime.datetime.now().strftime("%Y%m%d") tipo_expo = 1 # tipo de exportación (ver tabla de parámetros) permiso_existente = "S"