예제 #1
0
        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')
예제 #2
0
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
예제 #3
0
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
예제 #4
0
        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
예제 #5
0
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
예제 #6
0
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