Beispiel #1
0
def aut(client, token, sign, cuit, id, tipo_doc=80, nro_doc=23111111113,
    tipo_cbte=1, punto_vta=1, cbt_desde=0, cbt_hasta=0,
    imp_total=0, imp_neto=0, impto_liq=0.0,
    imp_tot_conc=0, impto_liq_rni=0.00, imp_op_ex=0.00, 
    fecha_cbte=None, fecha_venc_pago=None, 
    presta_serv = 0, fecha_serv_desde=None, fecha_serv_hasta=None, **kwargs ):
    "Facturador (Solicitud de Autorización de Factura Electrónica)"
    
    if fecha_cbte is None: fecha_cbte = date('Ymd')
    if fecha_venc_pago is None: fecha_venc_pago = date('Ymd')
    
    detalle = {
        'tipo_doc': tipo_doc,
        'nro_doc':  nro_doc,
        'tipo_cbte': tipo_cbte,
        'punto_vta': punto_vta,
        'cbt_desde': cbt_desde,
        'cbt_hasta': cbt_hasta,
        'imp_total': imp_total,
        'imp_tot_conc': imp_tot_conc,
        'imp_neto': imp_neto,
        'impto_liq': impto_liq,
        'impto_liq_rni': impto_liq_rni,
        'imp_op_ex': imp_op_ex,
        'fecha_cbte': fecha_cbte,
        'fecha_venc_pago': fecha_venc_pago
    }

    if fecha_serv_desde and fecha_serv_hasta:
        detalle['fecha_serv_desde'] = fecha_serv_desde
        detalle['fecha_serv_hasta'] = fecha_serv_hasta
        
    results = client.FEAutRequest(
            argAuth={'Token': token, 'Sign': sign, 'cuit': long(cuit)},
            Fer={
                'Fecr': {'id': id, 'cantidadreg': 1, 'presta_serv': presta_serv},
                'Fedr': {'FEDetalleRequest': detalle}
            }
        )

    if int(results.FEAutRequestResult.RError.percode) != 0:
        raise WSFEError(results.RError)

    # Resultado: Aceptado o Rechazado
    resultado = str(results.FEAutRequestResult.resultado)
    # Motivo general/del detalle:
    motivo = str(results.FEAutRequestResult.motivo)
    if motivo in ("NULL", '00'):
        motivo = str(results.FEAutRequestResult.FedResp.FEDetalleResponse.motivo)
    reproceso = str(results.FEAutRequestResult.reproceso)
    cae = str(results.FEAutRequestResult.FedResp.FEDetalleResponse.cae)
    fecha_vto = str(results.FEAutRequestResult.FedResp.FEDetalleResponse.fecha_vto)
    #fecha_vto = "%s/%s/%s" % (vto[6:8], vto[4:6], vto[0:4])
    
    return dict(cae=cae, fecha_vto=fecha_vto, resultado=resultado,
                motivo=motivo, reproceso=reproceso)
Beispiel #2
0
def aut(client, token, sign, cuit, id, tipo_doc=80, nro_doc=23111111113,
    tipo_cbte=1, punto_vta=1, cbt_desde=0, cbt_hasta=0,
    imp_total=0, imp_neto=0, impto_liq=0.0,
    imp_tot_conc=0, impto_liq_rni=0.00, imp_op_ex=0.00, 
    fecha_cbte=None, fecha_venc_pago=None, 
    presta_serv = 0, fecha_serv_desde=None, fecha_serv_hasta=None, **kwargs ):
    "Facturador (Solicitud de Autorización de Factura Electrónica)"
    
    if fecha_cbte is None: fecha_cbte = date('Ymd')
    if fecha_venc_pago is None: fecha_venc_pago = date('Ymd')
    
    detalle = {
        'tipo_doc': tipo_doc,
        'nro_doc':  nro_doc,
        'tipo_cbte': tipo_cbte,
        'punto_vta': punto_vta,
        'cbt_desde': cbt_desde,
        'cbt_hasta': cbt_hasta,
        'imp_total': imp_total,
        'imp_tot_conc': imp_tot_conc,
        'imp_neto': imp_neto,
        'impto_liq': impto_liq,
        'impto_liq_rni': impto_liq_rni,
        'imp_op_ex': imp_op_ex,
        'fecha_cbte': fecha_cbte,
        'fecha_venc_pago': fecha_venc_pago
    }

    if fecha_serv_desde and fecha_serv_hasta:
        detalle['fecha_serv_desde'] = fecha_serv_desde
        detalle['fecha_serv_hasta'] = fecha_serv_hasta
        
    results = client.FEAutRequest(
            argAuth={'Token': token, 'Sign': sign, 'cuit': long(cuit)},
            Fer={
                'Fecr': {'id': id, 'cantidadreg': 1, 'presta_serv': presta_serv},
                'Fedr': {'FEDetalleRequest': detalle}
            }
        )

    if int(results.FEAutRequestResult.RError.percode) != 0:
        raise WSFEError(results.RError)

    # Resultado: Aceptado o Rechazado
    resultado = str(results.FEAutRequestResult.resultado)
    # Motivo general/del detalle:
    motivo = str(results.FEAutRequestResult.motivo)
    if motivo in ("NULL", '00'):
        motivo = str(results.FEAutRequestResult.FedResp.FEDetalleResponse.motivo)
    reproceso = str(results.FEAutRequestResult.reproceso)
    cae = str(results.FEAutRequestResult.FedResp.FEDetalleResponse.cae)
    fecha_vto = str(results.FEAutRequestResult.FedResp.FEDetalleResponse.fecha_vto)
    #fecha_vto = "%s/%s/%s" % (vto[6:8], vto[4:6], vto[0:4])
    
    return dict(cae=cae, fecha_vto=fecha_vto, resultado=resultado,
                motivo=motivo, reproceso=reproceso)
Beispiel #3
0
def create_tra(service=SERVICE, ttl=2400):
    "Crear un Ticket de Requerimiento de Acceso (TRA)"
    tra = SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>'
                           '<loginTicketRequest version="1.0">'
                           '</loginTicketRequest>')
    tra.add_child('header')
    # El source es opcional. Si falta, toma la firma (recomendado).
    #tra.header.addChild('source','subject=...')
    #tra.header.addChild('destination','cn=wsaahomo,o=afip,c=ar,serialNumber=CUIT 33693450239')
    tra.header.add_child('uniqueId', str(date('U')))
    tra.header.add_child('generationTime', str(date('c', date('U') - ttl)))
    tra.header.add_child('expirationTime', str(date('c', date('U') + ttl)))
    tra.add_child('service', service)
    return tra.as_xml()
Beispiel #4
0
def create_tra(service=SERVICE,ttl=2400):
    "Crear un Ticket de Requerimiento de Acceso (TRA)"
    tra = SimpleXMLElement(
        '<?xml version="1.0" encoding="UTF-8"?>'
        '<loginTicketRequest version="1.0">'
        '</loginTicketRequest>')
    tra.add_child('header')
    # El source es opcional. Si falta, toma la firma (recomendado).
    #tra.header.addChild('source','subject=...')
    #tra.header.addChild('destination','cn=wsaahomo,o=afip,c=ar,serialNumber=CUIT 33693450239')
    tra.header.add_child('uniqueId',str(date('U')))
    tra.header.add_child('generationTime',str(date('c',date('U')-ttl)))
    tra.header.add_child('expirationTime',str(date('c',date('U')+ttl)))
    tra.add_child('service',service)
    return tra.as_xml()
Beispiel #5
0
def main():
    "Función principal de pruebas (obtener CAE)"
    import os, time
    import sys, codecs, locale
    if sys.stdout.encoding is None:
        sys.stdout = codecs.getwriter("latin1")(sys.stdout, "replace")

    url = len(sys.argv) > 2 and sys.argv[2].startswith(
        "http") and sys.argv[2] or WSBFEURL

    # cliente soap del web service
    client = SoapClient(url,
                        action=SOAP_ACTION,
                        namespace=SOAP_NS,
                        trace="--trace" in sys.argv)

    # obteniendo el TA
    TA = "TA.xml"
    if not os.path.exists(TA) or os.path.getmtime(TA) + (60 * 60 *
                                                         5) < time.time():
        import wsaa
        tra = wsaa.create_tra(service="wsbfe")
        cms = wsaa.sign_tra(tra, "reingart.crt", "reingart.key")
        ta_string = wsaa.call_wsaa(cms)
        open("TA.xml", "w").write(ta_string)
    ta_string = open(TA).read()
    ta = SimpleXMLElement(ta_string)
    token = str(ta.credentials.token)
    sign = str(ta.credentials.sign)
    # fin TA

    CUIT = len(sys.argv) > 1 and sys.argv[1] or "20267565393"

    if "--dummy" in sys.argv:
        print dummy(client)

    # Recuperar parámetros:
    if "--params" in sys.argv:

        print "=== Monedas ==="
        monedas = get_param_mon(client, token, sign, CUIT)
        for m in monedas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % m
        monedas = dict([(m['id'], m['ds']) for m in monedas])

        print "=== NCM ==="
        productos = get_param_ncm(client, token, sign, CUIT)
        for p in productos:
            print "||%(codigo)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % p
        productos = dict([(m['codigo'], m['ds']) for m in productos])

        print "=== Tipos de Comprobante ==="
        cbtes = get_param_tipo_cbte(client, token, sign, CUIT)
        for c in cbtes:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % c
        cbtes = dict([(c['id'], c['ds']) for c in cbtes])

        print "=== Tipos de IVA ==="
        ivas = get_param_tipo_iva(client, token, sign, CUIT)
        for i in ivas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % i
        ivas = dict([(i['id'], i['ds']) for i in ivas])

        print "=== Unidades de Medida ==="
        umedidas = get_param_umed(client, token, sign, CUIT)
        for u in umedidas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % u
        umeds = dict([(u['id'], u['ds']) for u in umedidas])

        ##zonas = get_param_zonas(client, token, sign, CUIT)
        ##print dict([(z['id'],z['ds']) for z in zonas])

    else:

        monedas = {
            'DOL': u'D\xf3lar Estadounidense',
            'PES': u'Pesos Argentinos',
            '010': u'Pesos Mejicanos',
            '011': u'Pesos Uruguayos',
            '012': u'Real',
            '014': u'Coronas Danesas',
            '015': u'Coronas Noruegas',
            '016': u'Coronas Suecas',
            '019': u'Yens',
            '018': u'D\xf3lar Canadiense',
            '033': u'Peso Chileno',
            '056': u'Forint (Hungr\xeda)',
            '031': u'Peso Boliviano',
            '036': u'Sucre Ecuatoriano',
            '051': u'D\xf3lar de Hong Kong',
            '034': u'Rand Sudafricano',
            '053': u'D\xf3lar de Jamaica',
            '057': u'Baht (Tailandia)',
            '043': u'Balboas Paname\xf1as',
            '042': u'Peso Dominicano',
            '052': u'D\xf3lar de Singapur',
            '032': u'Peso Colombiano',
            '035': u'Nuevo Sol Peruano',
            '061': u'Zloty Polaco',
            '060': u'Euro',
            '063': u'Lempira Hondure\xf1a',
            '062': u'Rupia Hind\xfa',
            '064': u'Yuan (Rep. Pop. China)',
            '025': u'Dinar Yugoslavo',
            '002': u'D\xf3lar Libre EEUU',
            '027': u'Dracma Griego',
            '026': u'D\xf3lar Australiano',
            '007': u'Florines Holandeses',
            '023': u'Bol\xedvar Venezolano',
            '047': u'Riyal Saudita',
            '046': u'Libra Egipcia',
            '045': u'Dirham Marroqu\xed',
            '044': u'C\xf3rdoba Nicarag\xfcense',
            '029': u'G\xfcaran\xed',
            '028': u'Flor\xedn (Antillas Holandesas)',
            '054': u'D\xf3lar de Taiwan',
            '040': u'Lei Rumano',
            '024': u'Corona Checa',
            '030': u'Shekel (Israel)',
            '021': u'Libra Esterlina',
            '055': u'Quetzal Guatemalteco',
            '059': u'Dinar Kuwaiti'
        }
        comprobantes = {
            1: u'Factura A',
            2: u'Nota de D\xe9bito A',
            3: u'Nota de Cr\xe9dito A',
            4: u'Recibo A',
            6: u'Factura B',
            7: u'Nota de D\xe9bito B',
            8: u'Nota de Cr\xe9dito B',
            9: u'Recibo B',
            11: u'Factura C',
            12: u'Nota de D\xe9bito C',
            13: u'Nota de Cr\xe9dito C',
            15: u'Recibo C',
            51: u'Factura M',
            52: u'Nota de D\xe9bito M',
            53: u'Nota de Cr\xe9dito M',
            54: u'Recibo M'
        }
        ivas = {
            1: u'No gravado',
            2: u'Exento',
            3: u'0%',
            4: u'10.5%',
            5: u'21%',
            6: u'27%'
        }
        umeds = {
            1: u'kilogramos',
            2: u'metros',
            3: u'metros cuadrados',
            4: u'metros c\xfabicos',
            5: u'litros',
            6: u'1000 kWh',
            7: u'unidades',
            8: u'pares',
            9: u'docenas',
            10: u'quilates',
            11: u'millares',
            14: u'gramos',
            15: u'milimetros',
            16: u'mm c\xfabicos',
            17: u'kil\xf3metros',
            18: u'hectolitros',
            20: u'cent\xedmetros',
            25: u'jgo. pqt. mazo naipes',
            27: u'cm c\xfabicos',
            29: u'toneladas',
            30: u'dam c\xfabicos',
            31: u'hm c\xfabicos',
            32: u'km c\xfabicos',
            33: u'microgramos',
            34: u'nanogramos',
            35: u'picogramos',
            41: u'miligramos',
            47: u'mililitros',
            48: u'curie',
            49: u'milicurie',
            50: u'microcurie',
            51: u'uiacthor',
            52: u'muiacthor',
            53: u'kg base',
            54: u'gruesa',
            61: u'kg bruto',
            62: u'uiactant',
            63: u'muiactant',
            64: u'uiactig',
            65: u'muiactig',
            66: u'kg activo',
            67: u'gramo activo',
            68: u'gramo base',
            96: u'packs',
            97: u'hormas',
            98: u'bonificaci\xf2n',
            99: u'otras unidades'
        }

    # ncm=7308.10.00, 7308.20.00

    if "--prueba" in sys.argv:

        # recupero ultimo comprobante y id
        tipo_cbte = 1
        punto_vta = 5
        cbte_nro, cbte_fecha, events = get_last_cmp(client, token, sign, CUIT,
                                                    tipo_cbte, punto_vta)
        id, events = get_last_id(client, token, sign, CUIT)

        #cbte_nro = 1
        #id = 1002 # 99000000000098

        # creo una factura de prueba
        f = FacturaBF()
        f.punto_vta = punto_vta
        f.cbte_nro = cbte_nro + 1
        f.imp_moneda_id = 'PES'
        f.fecha_cbte = date('Ymd')
        it = ItemBF(ncm='7308.10.00',
                    sec='',
                    ds=u'prueba Anafe económico',
                    qty=2.0,
                    precio=100.0,
                    bonif=0.0,
                    iva_id=5)
        f.add_item(it)
        it = ItemBF(ncm='7308.20.00',
                    sec='',
                    ds='prueba 2',
                    qty=4.0,
                    precio=50.0,
                    bonif=10.0,
                    iva_id=5)
        f.add_item(it)
        print f.to_dict()

        try:
            # autorizar...
            auth, events = authorize(client,
                                     token,
                                     sign,
                                     CUIT,
                                     id=id + 1,
                                     factura=f.to_dict())
            cae = auth['cae']
            print "auth", auth
            print "events", events
            auth, events = get_cmp(client, token, sign, CUIT, f.tipo_cbte,
                                   f.punto_vta, f.cbte_nro)
            print "get_cmp: auth", auth
            print "get_cmp: events", events
        except:
            raise
            ##l= client.xml_request.splitlines()
            ##print l[4][1150:1200]
            ##import pdb; pdb.set_trace()

    sys.exit(0)
Beispiel #6
0
def main():
    "Función principal de pruebas (obtener CAE)"
    import os, time

    url = len(sys.argv)>2 and sys.argv[2].startswith("http") and sys.argv[2] or WSFEXURL

    # cliente soap del web service
    client = SoapClient(url, 
        action = SOAP_ACTION, 
        namespace = SOAP_NS,
        trace = "--trace" in sys.argv)

    # obteniendo el TA
    TA = "TA.xml"
    if not os.path.exists(TA) or os.path.getmtime(TA)+(60*60*5)<time.time():
        import wsaa
        tra = wsaa.create_tra(service="wsfex")
        cms = wsaa.sign_tra(tra,"reingart.crt","reingart.key")
        ta_string = wsaa.call_wsaa(cms)
        open("TA.xml","w").write(ta_string)
    ta_string=open(TA).read()
    ta = SimpleXMLElement(ta_string)
    token = str(ta.credentials.token)
    sign = str(ta.credentials.sign)
    # fin TA

    CUIT = len(sys.argv)>1 and sys.argv[1] or "20267565393"

    if "--dummy" in sys.argv:
        print dummy(client)
    
    # Recuperar parámetros:
    if "--params" in sys.argv:
        import codecs, locale
        sys.stdout = codecs.getwriter('latin1')(sys.stdout); 
    
        print "=== Monedas ==="
        monedas = get_param_mon(client, token, sign, CUIT)    
        for m in monedas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % m
        monedas = dict([(m['id'],m['ds']) for m in monedas])
        
        print "=== Tipos Comprobante ==="
        cbtes = get_param_tipo_cbte(client, token, sign, CUIT)
        for c in cbtes:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % c
        comprobantes =  dict([(c['id'],c['ds']) for c in cbtes])

        print u"=== Tipos Exportación ==="
        tipos = get_param_tipo_expo(client, token, sign, CUIT)
        for t in tipos:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % t
        tipos_expo = dict([(t['id'],t['ds']) for t in tipos])

        print "=== Idiomas ==="
        tipos = get_param_idiomas(client, token, sign, CUIT)
        for t in tipos:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % t
        idiomas = dict([(t['id'],t['ds']) for t in tipos])
           
        print "=== Unidades de medida ==="
        umedidas = get_param_umed(client, token, sign, CUIT)    
        for u in umedidas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % u
        umeds = dict([(u['id'],u['ds']) for u in umedidas])

        print "=== INCOTERMs ==="
        incoterms = get_param_incoterms(client, token, sign, CUIT)
        for i in incoterms:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % i
        incoterms = dict([(t['id'],t['ds']) for t in incoterms])

        print "=== Pais Destino ==="
        pais = get_param_dst_pais(client, token, sign, CUIT)    
        for p in pais:
            print "||%(codigo)s||%(ds)s||" % p
        paises = dict([(p['codigo'],p['ds']) for p in pais])

        print "=== CUIT Pais Destino ==="
        pais = get_param_dst_cuit(client, token, sign, CUIT)    
        for p in pais:
            print "||%(cuit)s||%(ds)s||" % p
        cuits = dict([(p['cuit'],p['ds']) for p in pais])

        ctz = get_param_ctz(client, token, sign, CUIT, 'DOL')
        print ctz
        
        print get_param_pto_venta(client, token, sign, CUIT)
        

    else:
        monedas = {'DOL': u'D\xf3lar Estadounidense', 'PES': u'Pesos Argentinos', '010': u'Pesos Mejicanos', '011': u'Pesos Uruguayos', '012': u'Real', '014': u'Coronas Danesas', '015': u'Coronas Noruegas', '016': u'Coronas Suecas', '019': u'Yens', '018': u'D\xf3lar Canadiense', '033': u'Peso Chileno', '056': u'Forint (Hungr\xeda)', '031': u'Peso Boliviano', '036': u'Sucre Ecuatoriano', '051': u'D\xf3lar de Hong Kong', '034': u'Rand Sudafricano', '053': u'D\xf3lar de Jamaica', '057': u'Baht (Tailandia)', '043': u'Balboas Paname\xf1as', '042': u'Peso Dominicano', '052': u'D\xf3lar de Singapur', '032': u'Peso Colombiano', '035': u'Nuevo Sol Peruano', '061': u'Zloty Polaco', '060': u'Euro', '063': u'Lempira Hondure\xf1a', '062': u'Rupia Hind\xfa', '064': u'Yuan (Rep. Pop. China)', '009': u'Franco Suizo', '025': u'Dinar Yugoslavo', '002': u'D\xf3lar Libre EEUU', '027': u'Dracma Griego', '026': u'D\xf3lar Australiano', '007': u'Florines Holandeses', '023': u'Bol\xedvar Venezolano', '047': u'Riyal Saudita', '046': u'Libra Egipcia', '045': u'Dirham Marroqu\xed', '044': u'C\xf3rdoba Nicarag\xfcense', '029': u'G\xfcaran\xed', '028': u'Flor\xedn (Antillas Holandesas)', '054': u'D\xf3lar de Taiwan', '040': u'Lei Rumano', '024': u'Corona Checa', '030': u'Shekel (Israel)', '021': u'Libra Esterlina', '055': u'Quetzal Guatemalteco', '059': u'Dinar Kuwaiti'}
        comprobantes = {19: u'Facturas de Exportaci\xf3n\n', 20: u'Nota de D\xe9bito por Operaciones con el Exterior\n', 21: u'Nota de Cr\xe9dito por Operaciones con el Exterior\n'}
        tipos_expo = {1: u'Exportaci\xf3n definitiva de Bienes', 2: u'Servicios', 4: u'Otros'}
        idiomas = {1: u'Espa\xf1ol', 2: u'Ingl\xe9s', 3: u'Portugu\xe9s'}
        umeds = {0: u' ', 1: u'kilogramos', 2: u'metros', 3: u'metros cuadrados', 4: u'metros c\xfabicos', 5: u'litros', 6: u'1000 kWh', 7: u'unidades', 8: u'pares', 9: u'docenas', 10: u'quilates', 11: u'millares', 14: u'gramos', 15: u'milimetros', 16: u'mm c\xfabicos', 17: u'kil\xf3metros', 18: u'hectolitros', 20: u'cent\xedmetros', 25: u'jgo. pqt. mazo naipes', 27: u'cm c\xfabicos', 29: u'toneladas', 30: u'dam c\xfabicos', 31: u'hm c\xfabicos', 32: u'km c\xfabicos', 33: u'microgramos', 34: u'nanogramos', 35: u'picogramos', 41: u'miligramos', 47: u'mililitros', 48: u'curie', 49: u'milicurie', 50: u'microcurie', 51: u'uiacthor', 52: u'muiacthor', 53: u'kg base', 54: u'gruesa', 61: u'kg bruto', 62: u'uiactant', 63: u'muiactant', 64: u'uiactig', 65: u'muiactig', 66: u'kg activo', 67: u'gramo activo', 68: u'gramo base', 96: u'packs', 97: u'hormas', 98: u'bonificaci\xf3n', 99: u'otras unidades'}
        incoterms = {'DAF': u'DAF', 'DDP': u'DDP', 'CIF': u'CIF', 'FCA': u'FCA', 'FAS': u'FAS', 'DES': u'DES', 'CPT': u'CPT', 'EXW': u'EXW', 'CIP': u'CIP', 'DDU': u'DDU', 'FOB': u'FOB', 'DEQ': u'DEQ', 'CFR': u'CFR'}

    if "--prueba" in sys.argv:

        # recupero ultimo comprobante y id
        tipo_cbte = 19
        punto_vta = 1
        cbte_nro, cbte_fecha, events = get_last_cmp(client, token, sign, CUIT, tipo_cbte, punto_vta)
        id, events = get_last_id(client, token, sign, CUIT)

        print "last_cmp", cbte_nro, cbte_fecha
        print "last_id", id
        
        cbte_nro +=1
        id += 1

        if False: # prueba a mano
            f = {
                'Id': id,
                'Fecha_cbte': date('Ymd'),
                'Tipo_cbte': tipo_cbte, 
                'Punto_vta': punto_vta, 
                'Cbte_nro': cbte_nro,
                'Tipo_expo': 1,
                'Permiso_existente': 'N',
                'Dst_cmp': 225,
                'Cliente': 'Jose Yorugua',
                'Cuit_pais_cliente': 50000000016,
                'Domicilio_cliente': 'Montevideo, UY',
                'Id_impositivo': 'RUC 123123',
                'Moneda_Id': 'DOL',
                'Moneda_ctz': 3.85,
                'Obs_comerciales': 'Observaciones comerciales',
                'Imp_total': 60.00,
                'Obs': 'Observaciones',
                'Forma_pago': 'Taka taka',
                'Incoterms': 'FOB',
                'Idioma_cbte': 2,
                'Items': [{
                   'Item': {
                     'Pro_codigo': "kbd",
                     'Pro_ds': "Keyboard (uruguayan layout)",
                     'Pro_qty': 1,
                     'Pro_umed': 7,
                     'Pro_precio_uni': 50.000049,
                     'Pro_total_item': 50.000049}
                   },{
                   'Item': {
                     'Pro_codigo': "mice",
                     'Pro_ds': "Optical Mouse",
                     'Pro_qty': 1,
                     'Pro_umed': 7,
                     'Pro_precio_uni': 10.50,
                     'Pro_total_item': 10.50}
                   }]
                }
        else:
            # creo una factura de prueba
            f = FacturaEX()
            f.punto_vta = punto_vta
            f.cbte_nro = cbte_nro
            f.fecha_cbte = date('Ymd')
            f.tipo_expo = 1
            f.permiso_existente = 'S'
            f.dst_cmp = 203
            f.cliente = 'Joao Da Silva'
            f.cuit_pais_cliente = 50000000016
            f.domicilio_cliente = 'Rua 76 km 34.5 Alagoas'
            f.id_impositivo = 'PJ54482221-l'
            f.moneda_id = '012'
            f.moneda_ctz = 0.5
            f.obs_comerciales = 'Observaciones comerciales'
            f.obs = 'Sin observaciones'
            f.forma_pago = '30 dias'
            f.incoterms = 'FOB'
            f.idioma_cbte = 1
            # agrego los items
            it = ItemFEX(codigo='PRO1', ds=u'Producto Tipo 1 Exportacion MERCOSUR ISO 9001', 
                         qty=1, precio=125)
            f.add_item(it)
            it = ItemFEX(codigo='PRO2', ds=u'Producto Tipo 2 Exportacion MERCOSUR ISO 9001', 
                         qty=1, precio=125)
            f.add_item(it)
            permiso = PermisoFEX(id_permiso="99999AAXX999999A",dst_merc=225)
            f.add_permiso(permiso)
            permiso = PermisoFEX(id_permiso="99999AAXX999999B",dst_merc=225)
            f.add_permiso(permiso)
            if f.tipo_cbte!=19: 
                cmp_asoc = CmpAsocFEX(tipo=19, punto_vta=2, cbte_nro=1)
                f.add_cmp_asoc(cmp_asoc)
                cmp_asoc = CmpAsocFEX(tipo=19, punto_vta=2, cbte_nro=2)
                f.add_cmp_asoc(cmp_asoc)
            f = f.to_dict()
            print f

        try:
            auth, events = authorize(client, token, sign, CUIT, id=id, factura=f)
        except FEXError, fex:
            print "FEX_error:", fex.msg
            print client.xml_response
            sys.exit(1)
        cae = auth['cae']
        print "auth", auth
        print "events", events
        try:
            auth, events = get_cmp(client, token, sign, CUIT, tipo_cbte, punto_vta, cbte_nro)
        except:
            print client.xml_response
            sys.exit(1)
        print "get_cmp: auth", auth
        print "get_cmp: events", events        
Beispiel #7
0
def main():
    "Función principal de pruebas (obtener CAE)"
    import os, time
    import sys, codecs, locale
    if sys.stdout.encoding is None:
        sys.stdout = codecs.getwriter("latin1")(sys.stdout,"replace");

    url = len(sys.argv)>2 and sys.argv[2].startswith("http") and sys.argv[2] or WSBFEURL

    # cliente soap del web service
    client = SoapClient(url, 
        action = SOAP_ACTION, 
        namespace = SOAP_NS,
        trace = "--trace" in sys.argv)

    # obteniendo el TA
    TA = "TA.xml"
    if not os.path.exists(TA) or os.path.getmtime(TA)+(60*60*5)<time.time():
        import wsaa
        tra = wsaa.create_tra(service="wsbfe")
        cms = wsaa.sign_tra(tra,"reingart.crt","reingart.key")
        ta_string = wsaa.call_wsaa(cms)
        open("TA.xml","w").write(ta_string)
    ta_string=open(TA).read()
    ta = SimpleXMLElement(ta_string)
    token = str(ta.credentials.token)
    sign = str(ta.credentials.sign)
    # fin TA

    CUIT = len(sys.argv)>1 and sys.argv[1] or "20267565393"

    if "--dummy" in sys.argv:
        print dummy(client)
    
    # Recuperar parámetros:
    if "--params" in sys.argv:
    
        print "=== Monedas ==="
        monedas = get_param_mon(client, token, sign, CUIT)    
        for m in monedas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % m
        monedas = dict([(m['id'],m['ds']) for m in monedas])
        
        print "=== NCM ==="
        productos = get_param_ncm(client, token, sign, CUIT)
        for p in productos:
            print "||%(codigo)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % p
        productos = dict([(m['codigo'],m['ds']) for m in productos])
        
        print "=== Tipos de Comprobante ==="
        cbtes = get_param_tipo_cbte(client, token, sign, CUIT)
        for c in cbtes:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % c
        cbtes = dict([(c['id'],c['ds']) for c in cbtes])
        
        print "=== Tipos de IVA ==="
        ivas = get_param_tipo_iva(client, token, sign, CUIT)
        for i in ivas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % i
        ivas = dict([(i['id'],i['ds']) for i in ivas])

        print "=== Unidades de Medida ==="
        umedidas = get_param_umed(client, token, sign, CUIT)    
        for u in umedidas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % u
        umeds = dict([(u['id'],u['ds']) for u in umedidas])

        ##zonas = get_param_zonas(client, token, sign, CUIT)    
        ##print dict([(z['id'],z['ds']) for z in zonas])

    else:

        monedas = {'DOL': u'D\xf3lar Estadounidense', 'PES': u'Pesos Argentinos', '010': u'Pesos Mejicanos', '011': u'Pesos Uruguayos', '012': u'Real', '014': u'Coronas Danesas', '015': u'Coronas Noruegas', '016': u'Coronas Suecas', '019': u'Yens', '018': u'D\xf3lar Canadiense', '033': u'Peso Chileno', '056': u'Forint (Hungr\xeda)', '031': u'Peso Boliviano', '036': u'Sucre Ecuatoriano', '051': u'D\xf3lar de Hong Kong', '034': u'Rand Sudafricano', '053': u'D\xf3lar de Jamaica', '057': u'Baht (Tailandia)', '043': u'Balboas Paname\xf1as', '042': u'Peso Dominicano', '052': u'D\xf3lar de Singapur', '032': u'Peso Colombiano', '035': u'Nuevo Sol Peruano', '061': u'Zloty Polaco', '060': u'Euro', '063': u'Lempira Hondure\xf1a', '062': u'Rupia Hind\xfa', '064': u'Yuan (Rep. Pop. China)', '025': u'Dinar Yugoslavo', '002': u'D\xf3lar Libre EEUU', '027': u'Dracma Griego', '026': u'D\xf3lar Australiano', '007': u'Florines Holandeses', '023': u'Bol\xedvar Venezolano', '047': u'Riyal Saudita', '046': u'Libra Egipcia', '045': u'Dirham Marroqu\xed', '044': u'C\xf3rdoba Nicarag\xfcense', '029': u'G\xfcaran\xed', '028': u'Flor\xedn (Antillas Holandesas)', '054': u'D\xf3lar de Taiwan', '040': u'Lei Rumano', '024': u'Corona Checa', '030': u'Shekel (Israel)', '021': u'Libra Esterlina', '055': u'Quetzal Guatemalteco', '059': u'Dinar Kuwaiti'}
        comprobantes = {1: u'Factura A', 2: u'Nota de D\xe9bito A', 3: u'Nota de Cr\xe9dito A', 4: u'Recibo A', 6: u'Factura B', 7: u'Nota de D\xe9bito B', 8: u'Nota de Cr\xe9dito B', 9: u'Recibo B', 11: u'Factura C', 12: u'Nota de D\xe9bito C', 13: u'Nota de Cr\xe9dito C', 15: u'Recibo C', 51: u'Factura M', 52: u'Nota de D\xe9bito M', 53: u'Nota de Cr\xe9dito M', 54: u'Recibo M'}
        ivas = {1: u'No gravado', 2: u'Exento', 3: u'0%', 4: u'10.5%', 5: u'21%', 6: u'27%'}
        umeds = {1: u'kilogramos', 2: u'metros', 3: u'metros cuadrados', 4: u'metros c\xfabicos', 5: u'litros', 6: u'1000 kWh', 7: u'unidades', 8: u'pares', 9: u'docenas', 10: u'quilates', 11: u'millares', 14: u'gramos', 15: u'milimetros', 16: u'mm c\xfabicos', 17: u'kil\xf3metros', 18: u'hectolitros', 20: u'cent\xedmetros', 25: u'jgo. pqt. mazo naipes', 27: u'cm c\xfabicos', 29: u'toneladas', 30: u'dam c\xfabicos', 31: u'hm c\xfabicos', 32: u'km c\xfabicos', 33: u'microgramos', 34: u'nanogramos', 35: u'picogramos', 41: u'miligramos', 47: u'mililitros', 48: u'curie', 49: u'milicurie', 50: u'microcurie', 51: u'uiacthor', 52: u'muiacthor', 53: u'kg base', 54: u'gruesa', 61: u'kg bruto', 62: u'uiactant', 63: u'muiactant', 64: u'uiactig', 65: u'muiactig', 66: u'kg activo', 67: u'gramo activo', 68: u'gramo base', 96: u'packs', 97: u'hormas', 98: u'bonificaci\xf2n', 99: u'otras unidades'}

    # ncm=7308.10.00, 7308.20.00 

    if "--prueba" in sys.argv:

        # recupero ultimo comprobante y id
        tipo_cbte = 1
        punto_vta = 5
        cbte_nro, cbte_fecha, events = get_last_cmp(client, token, sign, CUIT, tipo_cbte, punto_vta)
        id, events = get_last_id(client, token, sign, CUIT)    
        
        #cbte_nro = 1
        #id = 1002 # 99000000000098

        # creo una factura de prueba
        f = FacturaBF()
        f.punto_vta = punto_vta
        f.cbte_nro = cbte_nro+1
        f.imp_moneda_id = 'PES'
        f.fecha_cbte = date('Ymd')
        it = ItemBF(ncm='7308.10.00', sec='', ds=u'prueba Anafe económico', qty=2.0, precio=100.0, bonif=0.0, iva_id=5)
        f.add_item(it)
        it = ItemBF(ncm='7308.20.00', sec='', ds='prueba 2', qty=4.0, precio=50.0, bonif=10.0, iva_id=5)
        f.add_item(it)
        print f.to_dict()

        try:
            # autorizar...
            auth, events = authorize(client, token, sign, CUIT, id=id+1, factura=f.to_dict())
            cae = auth['cae']
            print "auth", auth
            print "events", events
            auth, events = get_cmp(client, token, sign, CUIT, f.tipo_cbte, f.punto_vta, f.cbte_nro)
            print "get_cmp: auth", auth
            print "get_cmp: events", events        
        except:
            raise
            ##l= client.xml_request.splitlines()
            ##print l[4][1150:1200]
            ##import pdb; pdb.set_trace()

    sys.exit(0)
Beispiel #8
0
def main():
    "Función principal de pruebas (obtener CAE)"
    import os, time

    url = len(sys.argv) > 2 and sys.argv[2].startswith(
        "http") and sys.argv[2] or WSFEXURL

    # cliente soap del web service
    client = SoapClient(url,
                        action=SOAP_ACTION,
                        namespace=SOAP_NS,
                        trace="--trace" in sys.argv)

    # obteniendo el TA
    TA = "TA.xml"
    if not os.path.exists(TA) or os.path.getmtime(TA) + (60 * 60 *
                                                         5) < time.time():
        import wsaa
        tra = wsaa.create_tra(service="wsfex")
        cms = wsaa.sign_tra(tra, "reingart.crt", "reingart.key")
        ta_string = wsaa.call_wsaa(cms)
        open("TA.xml", "w").write(ta_string)
    ta_string = open(TA).read()
    ta = SimpleXMLElement(ta_string)
    token = str(ta.credentials.token)
    sign = str(ta.credentials.sign)
    # fin TA

    CUIT = len(sys.argv) > 1 and sys.argv[1] or "20267565393"

    if "--dummy" in sys.argv:
        print dummy(client)

    # Recuperar parámetros:
    if "--params" in sys.argv:
        import codecs, locale
        sys.stdout = codecs.getwriter('latin1')(sys.stdout)

        print "=== Monedas ==="
        monedas = get_param_mon(client, token, sign, CUIT)
        for m in monedas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % m
        monedas = dict([(m['id'], m['ds']) for m in monedas])

        print "=== Tipos Comprobante ==="
        cbtes = get_param_tipo_cbte(client, token, sign, CUIT)
        for c in cbtes:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % c
        comprobantes = dict([(c['id'], c['ds']) for c in cbtes])

        print u"=== Tipos Exportación ==="
        tipos = get_param_tipo_expo(client, token, sign, CUIT)
        for t in tipos:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % t
        tipos_expo = dict([(t['id'], t['ds']) for t in tipos])

        print "=== Idiomas ==="
        tipos = get_param_idiomas(client, token, sign, CUIT)
        for t in tipos:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % t
        idiomas = dict([(t['id'], t['ds']) for t in tipos])

        print "=== Unidades de medida ==="
        umedidas = get_param_umed(client, token, sign, CUIT)
        for u in umedidas:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % u
        umeds = dict([(u['id'], u['ds']) for u in umedidas])

        print "=== INCOTERMs ==="
        incoterms = get_param_incoterms(client, token, sign, CUIT)
        for i in incoterms:
            print "||%(id)s||%(ds)s||%(vig_desde)s||%(vig_hasta)s||" % i
        incoterms = dict([(t['id'], t['ds']) for t in incoterms])

        print "=== Pais Destino ==="
        pais = get_param_dst_pais(client, token, sign, CUIT)
        for p in pais:
            print "||%(codigo)s||%(ds)s||" % p
        paises = dict([(p['codigo'], p['ds']) for p in pais])

        print "=== CUIT Pais Destino ==="
        pais = get_param_dst_cuit(client, token, sign, CUIT)
        for p in pais:
            print "||%(cuit)s||%(ds)s||" % p
        cuits = dict([(p['cuit'], p['ds']) for p in pais])

        ctz = get_param_ctz(client, token, sign, CUIT, 'DOL')
        print ctz

        print get_param_pto_venta(client, token, sign, CUIT)

    else:
        monedas = {
            'DOL': u'D\xf3lar Estadounidense',
            'PES': u'Pesos Argentinos',
            '010': u'Pesos Mejicanos',
            '011': u'Pesos Uruguayos',
            '012': u'Real',
            '014': u'Coronas Danesas',
            '015': u'Coronas Noruegas',
            '016': u'Coronas Suecas',
            '019': u'Yens',
            '018': u'D\xf3lar Canadiense',
            '033': u'Peso Chileno',
            '056': u'Forint (Hungr\xeda)',
            '031': u'Peso Boliviano',
            '036': u'Sucre Ecuatoriano',
            '051': u'D\xf3lar de Hong Kong',
            '034': u'Rand Sudafricano',
            '053': u'D\xf3lar de Jamaica',
            '057': u'Baht (Tailandia)',
            '043': u'Balboas Paname\xf1as',
            '042': u'Peso Dominicano',
            '052': u'D\xf3lar de Singapur',
            '032': u'Peso Colombiano',
            '035': u'Nuevo Sol Peruano',
            '061': u'Zloty Polaco',
            '060': u'Euro',
            '063': u'Lempira Hondure\xf1a',
            '062': u'Rupia Hind\xfa',
            '064': u'Yuan (Rep. Pop. China)',
            '009': u'Franco Suizo',
            '025': u'Dinar Yugoslavo',
            '002': u'D\xf3lar Libre EEUU',
            '027': u'Dracma Griego',
            '026': u'D\xf3lar Australiano',
            '007': u'Florines Holandeses',
            '023': u'Bol\xedvar Venezolano',
            '047': u'Riyal Saudita',
            '046': u'Libra Egipcia',
            '045': u'Dirham Marroqu\xed',
            '044': u'C\xf3rdoba Nicarag\xfcense',
            '029': u'G\xfcaran\xed',
            '028': u'Flor\xedn (Antillas Holandesas)',
            '054': u'D\xf3lar de Taiwan',
            '040': u'Lei Rumano',
            '024': u'Corona Checa',
            '030': u'Shekel (Israel)',
            '021': u'Libra Esterlina',
            '055': u'Quetzal Guatemalteco',
            '059': u'Dinar Kuwaiti'
        }
        comprobantes = {
            19: u'Facturas de Exportaci\xf3n\n',
            20: u'Nota de D\xe9bito por Operaciones con el Exterior\n',
            21: u'Nota de Cr\xe9dito por Operaciones con el Exterior\n'
        }
        tipos_expo = {
            1: u'Exportaci\xf3n definitiva de Bienes',
            2: u'Servicios',
            4: u'Otros'
        }
        idiomas = {1: u'Espa\xf1ol', 2: u'Ingl\xe9s', 3: u'Portugu\xe9s'}
        umeds = {
            0: u' ',
            1: u'kilogramos',
            2: u'metros',
            3: u'metros cuadrados',
            4: u'metros c\xfabicos',
            5: u'litros',
            6: u'1000 kWh',
            7: u'unidades',
            8: u'pares',
            9: u'docenas',
            10: u'quilates',
            11: u'millares',
            14: u'gramos',
            15: u'milimetros',
            16: u'mm c\xfabicos',
            17: u'kil\xf3metros',
            18: u'hectolitros',
            20: u'cent\xedmetros',
            25: u'jgo. pqt. mazo naipes',
            27: u'cm c\xfabicos',
            29: u'toneladas',
            30: u'dam c\xfabicos',
            31: u'hm c\xfabicos',
            32: u'km c\xfabicos',
            33: u'microgramos',
            34: u'nanogramos',
            35: u'picogramos',
            41: u'miligramos',
            47: u'mililitros',
            48: u'curie',
            49: u'milicurie',
            50: u'microcurie',
            51: u'uiacthor',
            52: u'muiacthor',
            53: u'kg base',
            54: u'gruesa',
            61: u'kg bruto',
            62: u'uiactant',
            63: u'muiactant',
            64: u'uiactig',
            65: u'muiactig',
            66: u'kg activo',
            67: u'gramo activo',
            68: u'gramo base',
            96: u'packs',
            97: u'hormas',
            98: u'bonificaci\xf3n',
            99: u'otras unidades'
        }
        incoterms = {
            'DAF': u'DAF',
            'DDP': u'DDP',
            'CIF': u'CIF',
            'FCA': u'FCA',
            'FAS': u'FAS',
            'DES': u'DES',
            'CPT': u'CPT',
            'EXW': u'EXW',
            'CIP': u'CIP',
            'DDU': u'DDU',
            'FOB': u'FOB',
            'DEQ': u'DEQ',
            'CFR': u'CFR'
        }

    if "--prueba" in sys.argv:

        # recupero ultimo comprobante y id
        tipo_cbte = 19
        punto_vta = 1
        cbte_nro, cbte_fecha, events = get_last_cmp(client, token, sign, CUIT,
                                                    tipo_cbte, punto_vta)
        id, events = get_last_id(client, token, sign, CUIT)

        print "last_cmp", cbte_nro, cbte_fecha
        print "last_id", id

        cbte_nro += 1
        id += 1

        if False:  # prueba a mano
            f = {
                'Id':
                id,
                'Fecha_cbte':
                date('Ymd'),
                'Tipo_cbte':
                tipo_cbte,
                'Punto_vta':
                punto_vta,
                'Cbte_nro':
                cbte_nro,
                'Tipo_expo':
                1,
                'Permiso_existente':
                'N',
                'Dst_cmp':
                225,
                'Cliente':
                'Jose Yorugua',
                'Cuit_pais_cliente':
                50000000016,
                'Domicilio_cliente':
                'Montevideo, UY',
                'Id_impositivo':
                'RUC 123123',
                'Moneda_Id':
                'DOL',
                'Moneda_ctz':
                3.85,
                'Obs_comerciales':
                'Observaciones comerciales',
                'Imp_total':
                60.00,
                'Obs':
                'Observaciones',
                'Forma_pago':
                'Taka taka',
                'Incoterms':
                'FOB',
                'Idioma_cbte':
                2,
                'Items': [{
                    'Item': {
                        'Pro_codigo': "kbd",
                        'Pro_ds': "Keyboard (uruguayan layout)",
                        'Pro_qty': 1,
                        'Pro_umed': 7,
                        'Pro_precio_uni': 50.000049,
                        'Pro_total_item': 50.000049
                    }
                }, {
                    'Item': {
                        'Pro_codigo': "mice",
                        'Pro_ds': "Optical Mouse",
                        'Pro_qty': 1,
                        'Pro_umed': 7,
                        'Pro_precio_uni': 10.50,
                        'Pro_total_item': 10.50
                    }
                }]
            }
        else:
            # creo una factura de prueba
            f = FacturaEX()
            f.punto_vta = punto_vta
            f.cbte_nro = cbte_nro
            f.fecha_cbte = date('Ymd')
            f.tipo_expo = 1
            f.permiso_existente = 'S'
            f.dst_cmp = 203
            f.cliente = 'Joao Da Silva'
            f.cuit_pais_cliente = 50000000016
            f.domicilio_cliente = 'Rua 76 km 34.5 Alagoas'
            f.id_impositivo = 'PJ54482221-l'
            f.moneda_id = '012'
            f.moneda_ctz = 0.5
            f.obs_comerciales = 'Observaciones comerciales'
            f.obs = 'Sin observaciones'
            f.forma_pago = '30 dias'
            f.incoterms = 'FOB'
            f.idioma_cbte = 1
            # agrego los items
            it = ItemFEX(codigo='PRO1',
                         ds=u'Producto Tipo 1 Exportacion MERCOSUR ISO 9001',
                         qty=1,
                         precio=125)
            f.add_item(it)
            it = ItemFEX(codigo='PRO2',
                         ds=u'Producto Tipo 2 Exportacion MERCOSUR ISO 9001',
                         qty=1,
                         precio=125)
            f.add_item(it)
            permiso = PermisoFEX(id_permiso="99999AAXX999999A", dst_merc=225)
            f.add_permiso(permiso)
            permiso = PermisoFEX(id_permiso="99999AAXX999999B", dst_merc=225)
            f.add_permiso(permiso)
            if f.tipo_cbte != 19:
                cmp_asoc = CmpAsocFEX(tipo=19, punto_vta=2, cbte_nro=1)
                f.add_cmp_asoc(cmp_asoc)
                cmp_asoc = CmpAsocFEX(tipo=19, punto_vta=2, cbte_nro=2)
                f.add_cmp_asoc(cmp_asoc)
            f = f.to_dict()
            print f

        try:
            auth, events = authorize(client,
                                     token,
                                     sign,
                                     CUIT,
                                     id=id,
                                     factura=f)
        except FEXError, fex:
            print "FEX_error:", fex.msg
            print client.xml_response
            sys.exit(1)
        cae = auth['cae']
        print "auth", auth
        print "events", events
        try:
            auth, events = get_cmp(client, token, sign, CUIT, tipo_cbte,
                                   punto_vta, cbte_nro)
        except:
            print client.xml_response
            sys.exit(1)
        print "get_cmp: auth", auth
        print "get_cmp: events", events
Beispiel #9
0
            for msg, formato in [('Encabezado', ENCABEZADO),
                                 ('Detalle', DETALLE)]:
                comienzo = 1
                print "== %s ==" % msg
                for (clave, longitud, tipo) in formato:
                    print " * Campo: %-20s Posición: %3d Longitud: %4d Tipo: %s" % (
                        clave, comienzo, longitud, tipo)
                    comienzo += longitud
            sys.exit(0)

        # TODO: esto habría que guardarlo en un archivo y no tener que autenticar cada vez
        token, sign = autenticar(cert, privatekey, wsaa_url)

        if '/prueba' in sys.argv or False:
            # generar el archivo de prueba para la próxima factura
            fecha = date('Ymd')
            tipo_cbte = 1
            punto_vta = 2
            ult_cbte, fecha, events = wsbfe.get_last_cmp(
                client, token, sign, cuit, punto_vta, tipo_cbte)
            ult_id, events = wsbfe.get_last_id(client, token, sign, cuit)

            f_entrada = open(entrada, "w")

            f = wsbfe.FacturaBF()
            f.punto_vta = punto_vta
            f.cbte_nro = ult_cbte + 1
            f.imp_moneda_id = 'PES'
            f.fecha_cbte = date('Ymd')
            it = wsbfe.ItemBF(ncm='7308.10.00',
                              sec='',
Beispiel #10
0
                            action=wsfe.SOAP_ACTION,
                            namespace=wsfe.SOAP_NS,
                            trace=DEBUG,
                            exceptions=True)

        if '/dummy' in sys.argv:
            print "Consultando estado de servidores..."
            wsfe.dummy(client)
            sys.exit(0)

        # TODO: esto habría que guardarlo en un archivo y no tener que autenticar cada vez
        token, sign = autenticar(cert, privatekey, wsaa_url)

        if '/prueba' in sys.argv or False:
            # generar el archivo de prueba para la próxima factura
            fecha = date('Ymd')
            tipo_cbte = 1
            punto_vta = 2
            ult_cbte = wsfe.recuperar_last_cmp(client, token, sign, cuit,
                                               punto_vta, tipo_cbte)
            f_entrada = open(entrada, "w")
            for cbte in range(ult_cbte + 1, ult_cbte + 4):
                dic = dict(fecha=fecha,
                           presta_serv=1,
                           tipo_doc=80,
                           nro_doc="23111111114",
                           tipo_cbte=tipo_cbte,
                           punto_vta=punto_vta,
                           cbt_desde=cbte,
                           cbt_hasta=cbte,
                           imp_total="121.00",
Beispiel #11
0
                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)

        # TODO: esto habría que guardarlo en un archivo y no tener que autenticar cada vez
        token, sign = autenticar(cert, privatekey, wsaa_url)

        if '/prueba' in sys.argv:
            # generar el archivo de prueba para la próxima factura
            fecha = date('Ymd')
            tipo_cbte = 19
            punto_vta = 3
            ult_cbte, fecha, events = wsfex.get_last_cmp(client, token, sign, cuit, tipo_cbte, punto_vta)

            ult_id, events = wsfex.get_last_id(client, token, sign, cuit)

            f_entrada = open(entrada,"w")

            f = wsfex.FacturaEX()
            f.punto_vta = punto_vta
            f.cbte_nro = ult_cbte+1
            f.imp_moneda_id = 'PES'
            f.fecha_cbte = date('Ymd')
            f.tipo_expo = 1
            f.permiso_existente = 'S'
Beispiel #12
0
        print "wsaa_url %s\nwsfe_url %s" % (wsaa_url, wsfe_url)

    try:
        client = SoapClient(wsfe_url, action=wsfe.SOAP_ACTION, namespace=wsfe.SOAP_NS, trace=DEBUG, exceptions=True)

        if "/dummy" in sys.argv:
            print "Consultando estado de servidores..."
            wsfe.dummy(client)
            sys.exit(0)

        # TODO: esto habría que guardarlo en un archivo y no tener que autenticar cada vez
        token, sign = autenticar(cert, privatekey, wsaa_url)

        if "/prueba" in sys.argv or False:
            # generar el archivo de prueba para la próxima factura
            fecha = date("Ymd")
            tipo_cbte = 1
            punto_vta = 2
            ult_cbte = wsfe.recuperar_last_cmp(client, token, sign, cuit, punto_vta, tipo_cbte)
            f_entrada = open(entrada, "w")
            for cbte in range(ult_cbte + 1, ult_cbte + 4):
                dic = dict(
                    fecha=fecha,
                    presta_serv=1,
                    tipo_doc=80,
                    nro_doc="23111111114",
                    tipo_cbte=tipo_cbte,
                    punto_vta=punto_vta,
                    cbt_desde=cbte,
                    cbt_hasta=cbte,
                    imp_total="121.00",