print " /prueba: genera y autoriza una factura de prueba (no usar en producción!)" print " /ult: consulta último número de comprobante" print " /debug: modo depuración (detalla y confirma las operaciones)" print " /formato: muestra el formato de los archivos de entrada/salida" print " /get: recupera datos de un comprobante autorizado previamente (verificación)" print " /xml: almacena los requerimientos y respuestas XML (depuración)" print " /dbf: lee y almacena la información en tablas DBF" print print "Ver rece.ini para parámetros de configuración (URL, certificados, etc.)" sys.exit(0) if '/debug'in sys.argv: DEBUG = True print "VERSION", __version__, "H**O", H**O config = abrir_conf(CONFIG_FILE, DEBUG) cert = config.get('WSAA','CERT') privatekey = config.get('WSAA','PRIVATEKEY') cuit = config.get('WSFEv1','CUIT') if '/entrada' in sys.argv: entrada = sys.argv[sys.argv.index("/entrada")+1] else: entrada = config.get('WSFEv1','ENTRADA') salida = config.get('WSFEv1','SALIDA') if config.has_option('WSAA','URL') and not H**O: wsaa_url = config.get('WSAA','URL') else: wsaa_url = None if config.has_option('WSFEv1','URL') and not H**O: wsfev1_url = config.get('WSFEv1','URL')
def main(): "Función principal de pruebas (obtener CAE)" import os, time global CONFIG_FILE DEBUG = '--debug' in sys.argv if '--constancia' in sys.argv: padron = WSSrPadronA5() SECTION = 'WS-SR-PADRON-A5' service = "ws_sr_constancia_inscripcion" else: padron = WSSrPadronA4() SECTION = 'WS-SR-PADRON-A4' service = "ws_sr_padron_a4" config = abrir_conf(CONFIG_FILE, DEBUG) if config.has_section('WSAA'): crt = config.get('WSAA', 'CERT') key = config.get('WSAA', 'PRIVATEKEY') cuit = config.get(SECTION, 'CUIT') else: crt, key = "reingart.crt", "reingart.key" cuit = "20267565393" url_wsaa = url_ws = None if config.has_option('WSAA','URL'): url_wsaa = config.get('WSAA', 'URL') if config.has_option(SECTION,'URL') and not H**O: url_ws = config.get(SECTION, 'URL') # obteniendo el TA para pruebas from wsaa import WSAA cache = "" ta = WSAA().Autenticar(service, crt, key, url_wsaa) padron.SetTicketAcceso(ta) padron.Cuit = cuit padron.Conectar(cache, url_ws, cacert="conf/afip_ca_info.crt") if "--dummy" in sys.argv: print padron.client.help("dummy") wssrpadron4.Dummy() print "AppServerStatus", wssrpadron4.AppServerStatus print "DbServerStatus", wssrpadron4.DbServerStatus print "AuthServerStatus", wssrpadron4.AuthServerStatus try: if "--prueba" in sys.argv: id_persona = "20000000516" else: id_persona = len(sys.argv)>1 and sys.argv[1] or "20267565393" if "--testing" in sys.argv: padron.LoadTestXML("tests/xml/%s_resp.xml" % service) print "Consultando AFIP online via webservice...", ok = padron.Consultar(id_persona) if DEBUG: print "Persona", padron.Persona print padron.Excepcion print 'ok' if ok else "error", padron.Excepcion print "Denominacion:", padron.denominacion print "Tipo:", padron.tipo_persona, padron.tipo_doc, padron.nro_doc print "Estado:", padron.estado print "Direccion:", padron.direccion print "Localidad:", padron.localidad print "Provincia:", padron.provincia print "Codigo Postal:", padron.cod_postal print "Impuestos:", padron.impuestos print "Actividades:", padron.actividades print "IVA", padron.imp_iva print "MT", padron.monotributo, padron.actividad_monotributo print "Empleador", padron.empleador if padron.Excepcion: print "Excepcion:", padron.Excepcion # ver padron.errores para el detalle except: raise print padron.XmlRequest print padron.XmlResponse
def main(): "Función principal de pruebas (obtener CAE)" import os, time global CONFIG_FILE DEBUG = '--debug' in sys.argv sire = WSSIREc2005() SECTION = 'WSSIREc2005' service = "sire-ws" config = abrir_conf(CONFIG_FILE, DEBUG) if config.has_section('WSAA'): crt = config.get('WSAA', 'CERT') key = config.get('WSAA', 'PRIVATEKEY') cuit = config.get(SECTION, 'CUIT') else: crt, key = "reingart.crt", "reingart.key" cuit = "20267565393" url_wsaa = url_ws = None if config.has_option('WSAA', 'URL'): url_wsaa = config.get('WSAA', 'URL') if config.has_option(SECTION, 'URL') and not H**O: url_ws = config.get(SECTION, 'URL') # obteniendo el TA para pruebas from wsaa import WSAA cache = "" ta = WSAA().Autenticar(service, crt, key, url_wsaa) sire.SetTicketAcceso(ta) sire.Cuit = cuit sire.Conectar(cache, url_ws, cacert="conf/afip_ca_info.crt") if "--dummy" in sys.argv: print sire.client.help("dummy") sire.Dummy() print "AppServerStatus", sire.AppServerStatus print "DbServerStatus", sire.DbServerStatus print "AuthServerStatus", sire.AuthServerStatus try: if "--testing" in sys.argv: sire.LoadTestXML("tests/xml/%s_resp.xml" % service) print "Consultando AFIP online via webservice...", ok = sire.Emitir( version=100, impuesto=216, regimen=831, fecha_retencion='2020-07-11T11:16:00.000-03:00', importe_retencion=2100.00, importe_base_calculo=20000.00, regimen_exclusion=False, tipo_comprobante=1, fecha_comprobante='2020-07-11T11:15:53.000-03:00', importe_comprobante=22200.00, cuit_retenido='30500010912', fecha_retencion_certificado_original= '2020-07-11T11:16:00.000-03:00', codigo_trazabilidad=None, condicion=1, # 1: Inscripto, 2: No inscriptio imposibilidad_retencion=False, motivo_no_retencion=None, porcentaje_exclusion=None, fecha_publicacion=None, numero_comprobante='00003-00008497', coe=None, coe_original=None, cae=None, motivo_emision_nota_credito=None, numero_certificado_original=None, importe_certificado_original=None, motivo_anulacion=None, ) print "CertificadoNro: ", sire.CertificadoNro print "CodigoSeguridad: ", sire.CodigoSeguridad print 'ok' if ok else "error!" if sire.Excepcion: print "Excepcion:", sire.Excepcion except: raise print sire.XmlRequest print sire.XmlResponse
print " /prueba: genera y autoriza una factura de prueba (no usar en producción!)" print " /ult: consulta último número de comprobante" print " /id: consulta último ID" print " /debug: modo depuración (detalla y confirma las operaciones)" print " /formato: muestra el formato de los archivos de entrada/salida" print " /get: recupera datos de un comprobante autorizado previamente (verificación)" print " /xml: almacena los requerimientos y respuestas XML (depuración)" print print "Ver rece.ini para parámetros de configuración (URL, certificados, etc.)" sys.exit(0) if '/debug'in sys.argv: DEBUG = True print "VERSION", __version__, "H**O", H**O config = abrir_conf(CONFIG_FILE, DEBUG) cert = config.get('WSAA','CERT') privatekey = config.get('WSAA','PRIVATEKEY') cuit = config.get('WSBFE','CUIT') entrada = config.get('WSBFE','ENTRADA') salida = config.get('WSBFE','SALIDA') if config.has_option('WSAA','URL') and not H**O: wsaa_url = config.get('WSAA','URL') else: wsaa_url = wsaa.WSAAURL if config.has_option('WSBFE','URL') and not H**O: wsbfe_url = config.get('WSBFE','URL') else: wsbfe_url = None
def main(): "Función principal de pruebas (obtener CAE)" import os, time global CONFIG_FILE DEBUG = '--debug' in sys.argv if '--constancia' in sys.argv: padron = WSSrPadronA5() SECTION = 'WS-SR-PADRON-A5' service = "ws_sr_constancia_inscripcion" else: padron = WSSrPadronA4() SECTION = 'WS-SR-PADRON-A4' service = "ws_sr_padron_a4" config = abrir_conf(CONFIG_FILE, DEBUG) if config.has_section('WSAA'): crt = config.get('WSAA', 'CERT') key = config.get('WSAA', 'PRIVATEKEY') cuit = config.get(SECTION, 'CUIT') else: crt, key = "reingart.crt", "reingart.key" cuit = "20267565393" url_wsaa = url_ws = None if config.has_option('WSAA', 'URL'): url_wsaa = config.get('WSAA', 'URL') if config.has_option(SECTION, 'URL') and not H**O: url_ws = config.get(SECTION, 'URL') # obteniendo el TA para pruebas from wsaa import WSAA cache = "" ta = WSAA().Autenticar(service, crt, key, url_wsaa) padron.SetTicketAcceso(ta) padron.Cuit = cuit padron.Conectar(cache, url_ws, cacert="conf/afip_ca_info.crt") if "--dummy" in sys.argv: print padron.client.help("dummy") wssrpadron4.Dummy() print "AppServerStatus", wssrpadron4.AppServerStatus print "DbServerStatus", wssrpadron4.DbServerStatus print "AuthServerStatus", wssrpadron4.AuthServerStatus if '--csv' in sys.argv: csv_reader = csv.reader(open("entrada.csv", "rU"), dialect='excel', delimiter=",") csv_writer = csv.writer(open("salida.csv", "w"), dialect='excel', delimiter=",") encabezado = next(csv_reader) columnas = [ "cuit", "denominacion", "estado", "direccion", "localidad", "provincia", "cod_postal", "impuestos", "actividades", "imp_iva", "monotributo", "actividad_monotributo", "empleador", "imp_ganancias", "integrante_soc" ] csv_writer.writerow(columnas) for fila in csv_reader: cuit = (fila[0] if fila else "").replace("-", "") if cuit.isdigit(): print "Consultando AFIP online...", cuit, try: ok = padron.Consultar(cuit) except SoapFault as e: ok = None if e.faultstring != "No existe persona con ese Id": raise print 'ok' if ok else "error", padron.Excepcion # domicilio posiblemente esté en Latin1, normalizar csv_writer.writerow( [norm(getattr(padron, campo, "")) for campo in columnas]) sys.exit(0) try: if "--prueba" in sys.argv: id_persona = "20000000516" else: id_persona = len(sys.argv) > 1 and sys.argv[1] or "20267565393" if "--testing" in sys.argv: padron.LoadTestXML("tests/xml/%s_resp.xml" % service) print "Consultando AFIP online via webservice...", ok = padron.Consultar(id_persona) if DEBUG: print "Persona", padron.Persona print padron.Excepcion print 'ok' if ok else "error", padron.Excepcion print "Denominacion:", padron.denominacion print "Tipo:", padron.tipo_persona, padron.tipo_doc, padron.nro_doc print "Estado:", padron.estado print "Direccion:", padron.direccion print "Localidad:", padron.localidad print "Provincia:", padron.provincia print "Codigo Postal:", padron.cod_postal print "Impuestos:", padron.impuestos print "Actividades:", padron.actividades print "IVA", padron.imp_iva print "MT", padron.monotributo, padron.actividad_monotributo print "Empleador", padron.empleador if padron.Excepcion: print "Excepcion:", padron.Excepcion # ver padron.errores para el detalle except: raise print padron.XmlRequest print padron.XmlResponse
def main(): "Función principal de pruebas (obtener CAE)" import os, time global CONFIG_FILE DEBUG = '--debug' in sys.argv if '--constancia' in sys.argv: padron = WSSrPadronA5() SECTION = 'WS-SR-PADRON-A5' service = "ws_sr_constancia_inscripcion" else: padron = WSSrPadronA4() SECTION = 'WS-SR-PADRON-A4' service = "ws_sr_padron_a4" config = abrir_conf(CONFIG_FILE, DEBUG) if config.has_section('WSAA'): crt = config.get('WSAA', 'CERT') key = config.get('WSAA', 'PRIVATEKEY') cuit = config.get(SECTION, 'CUIT') else: crt, key = "reingart.crt", "reingart.key" cuit = "20267565393" url_wsaa = url_ws = None if config.has_option('WSAA','URL'): url_wsaa = config.get('WSAA', 'URL') if config.has_option(SECTION,'URL') and not H**O: url_ws = config.get(SECTION, 'URL') # obteniendo el TA para pruebas from wsaa import WSAA cache = "" ta = WSAA().Autenticar(service, crt, key, url_wsaa) padron.SetTicketAcceso(ta) padron.Cuit = cuit padron.Conectar(cache, url_ws, cacert="conf/afip_ca_info.crt") if "--dummy" in sys.argv: print padron.client.help("dummy") wssrpadron4.Dummy() print "AppServerStatus", wssrpadron4.AppServerStatus print "DbServerStatus", wssrpadron4.DbServerStatus print "AuthServerStatus", wssrpadron4.AuthServerStatus if '--csv' in sys.argv: csv_reader = csv.reader(open("entrada.csv", "rU"), dialect='excel', delimiter=",") csv_writer = csv.writer(open("salida.csv", "w"), dialect='excel', delimiter=",") encabezado = next(csv_reader) columnas = ["cuit", "denominacion", "estado", "direccion", "localidad", "provincia", "cod_postal", "impuestos", "actividades", "imp_iva", "monotributo", "actividad_monotributo", "empleador", "imp_ganancias", "integrante_soc"] csv_writer.writerow(columnas) for fila in csv_reader: cuit = (fila[0] if fila else "").replace("-", "") if cuit.isdigit(): print "Consultando AFIP online...", cuit, try: ok = padron.Consultar(cuit) except SoapFault as e: ok = None if e.faultstring != "No existe persona con ese Id": raise print 'ok' if ok else "error", padron.Excepcion # domicilio posiblemente esté en Latin1, normalizar csv_writer.writerow([norm(getattr(padron, campo, "")) for campo in columnas]) sys.exit(0) try: if "--prueba" in sys.argv: id_persona = "20000000516" else: id_persona = len(sys.argv)>1 and sys.argv[1] or "20267565393" if "--testing" in sys.argv: padron.LoadTestXML("tests/xml/%s_resp.xml" % service) print "Consultando AFIP online via webservice...", ok = padron.Consultar(id_persona) if DEBUG: print "Persona", padron.Persona print padron.Excepcion print 'ok' if ok else "error", padron.Excepcion print "Denominacion:", padron.denominacion print "Tipo:", padron.tipo_persona, padron.tipo_doc, padron.nro_doc print "Estado:", padron.estado print "Direccion:", padron.direccion print "Localidad:", padron.localidad print "Provincia:", padron.provincia print "Codigo Postal:", padron.cod_postal print "Impuestos:", padron.impuestos print "Actividades:", padron.actividades print "IVA", padron.imp_iva print "MT", padron.monotributo, padron.actividad_monotributo print "Empleador", padron.empleador if padron.Excepcion: print "Excepcion:", padron.Excepcion # ver padron.errores para el detalle except: raise print padron.XmlRequest print padron.XmlResponse