示例#1
0
 def Authorize(self, id):
     "Autoriza la factura cargada en memoria"
     try:
         # limpio errores
         self.Exception = self.Traceback = ""
         self.ErrCode = self.ErrMsg = ""
         # llamo al web service
         auth, events = wsfex.authorize(self.client, 
                                  self.Token, self.Sign, self.Cuit, 
                                  id=id, factura=self.factura.to_dict())
                    
         # Resultado: A: Aceptado, R: Rechazado
         self.Resultado = auth['resultado']
         # Obs:
         self.Obs = auth['obs'].strip(" ")
         self.Reproceso = auth['reproceso']
         self.CAE = auth['cae']
         self.CbteNro  = auth['cbte_nro']
         vto = str(auth['fch_venc_cae'])
         self.Vencimiento = "%s/%s/%s" % (vto[6:8], vto[4:6], vto[0:4])
         self.Eventos = ['%s: %s' % (evt['code'], evt['msg']) for evt in events]
         return self.CAE
     except wsfex.FEXError, e:
         self.ErrCode = unicode(e.code)
         self.ErrMsg = unicode(e.msg)
         if self.LanzarExcepciones:
             raise COMException(scode = vbObjectError + int(e.code),
                                desc=unicode(e.msg), source="WebService")
示例#2
0
    def Authorize(self, id):
        "Autoriza la factura cargada en memoria"
        try:
            # limpio errores
            self.Exception = self.Traceback = ""
            self.ErrCode = self.ErrMsg = ""
            # llamo al web service
            auth, events = wsfex.authorize(self.client,
                                           self.Token,
                                           self.Sign,
                                           self.Cuit,
                                           id=id,
                                           factura=self.factura.to_dict())

            # Resultado: A: Aceptado, R: Rechazado
            self.Resultado = auth['resultado']
            # Obs:
            self.Obs = auth['obs'].strip(" ")
            self.Reproceso = auth['reproceso']
            self.CAE = auth['cae']
            self.CbteNro = auth['cbte_nro']
            vto = str(auth['fch_venc_cae'])
            self.Vencimiento = "%s/%s/%s" % (vto[6:8], vto[4:6], vto[0:4])
            self.Eventos = [
                '%s: %s' % (evt['code'], evt['msg']) for evt in events
            ]
            return self.CAE
        except wsfex.FEXError, e:
            self.ErrCode = unicode(e.code)
            self.ErrMsg = unicode(e.msg)
            if self.LanzarExcepciones:
                raise COMException(scode=vbObjectError + int(e.code),
                                   desc=unicode(e.msg),
                                   source="WebService")
示例#3
0
def autorizar(client, token, sign, cuit, entrada, salida):
    # recupero el último número de transacción
    ##id = wsfex.ultnro(client, token, sign, cuit)

    detalles = []
    permisos = []
    cbtasocs = []
    encabezado = {}
    for linea in entrada:
        if str(linea[0]) == '0':
            encabezado = leer(linea, ENCABEZADO)
        elif str(linea[0]) == '1':
            detalle = leer(linea, DETALLE)
            detalles.append(detalle)
        elif str(linea[0]) == '2':
            permiso = leer(linea, PERMISO)
            permisos.append(permiso)
        elif str(linea[0]) == '3':
            cbtasoc = leer(linea, CMP_ASOC)
            cbtasocs.append(cbtasoc)
        else:
            print "Tipo de registro incorrecto:", linea[0]

    if not encabezado['id'].strip() or int(encabezado['id']) == 0:
        # TODO: habria que leer y/o grabar el id en el archivo
        ##id += 1 # incremento el nº de transacción
        # Por el momento, el id se calcula con el tipo, pv y nº de comprobant
        i = long(encabezado['cbte_nro'])
        i += (int(encabezado['cbte_nro']) * 10**4 +
              int(encabezado['punto_vta'])) * 10**8
        encabezado['id'] = wsfex.get_last_id(client, token, sign, cuit)[0] + 1

    factura = wsfex.FacturaEX(**encabezado)
    for detalle in detalles:
        it = wsfex.ItemFEX(**detalle)
        factura.add_item(it, calcular=False)
    for permiso in permisos:
        p = wsfex.PermisoFEX(**permiso)
        factura.add_permiso(p)
    for cbtasoc in cbtasocs:
        c = wsfex.CmpAsocFEX(**cbtasoc)
        factura.add_cmp_asoc(c)

    if DEBUG:
        #print f.to_dict()
        print '\n'.join(
            ["%s='%s'" % (k, str(v)) for k, v in factura.to_dict().items()])
        print 'id:', encabezado['id']
    if not DEBUG or raw_input("Facturar?") == "S":
        dic = factura.to_dict()
        auth, events = wsfex.authorize(client,
                                       token,
                                       sign,
                                       cuit,
                                       id=encabezado['id'],
                                       factura=dic)
        dic.update(auth)
        escribir_factura(dic, salida)
        print "ID:", dic['id'], "CAE:", dic['cae'], "Obs:", dic[
            'obs'], "Reproceso:", dic['reproceso']
示例#4
0
def autorizar(client, token, sign, cuit, entrada, salida):
    # recupero el último número de transacción
    ##id = wsfex.ultnro(client, token, sign, cuit)

    detalles = []
    permisos = []
    cbtasocs = []
    encabezado = {}
    for linea in entrada:
        if str(linea[0])=='0':
            encabezado = leer(linea, ENCABEZADO)
        elif str(linea[0])=='1':
            detalle = leer(linea, DETALLE)
            detalles.append(detalle)
        elif str(linea[0])=='2':
            permiso = leer(linea, PERMISO)
            permisos.append(permiso)
        elif str(linea[0])=='3':
            cbtasoc = leer(linea, CMP_ASOC)
            cbtasocs.append(cbtasoc)
        else:
            print "Tipo de registro incorrecto:", linea[0]

    if not encabezado['id'].strip() or int(encabezado['id'])==0:
        # TODO: habria que leer y/o grabar el id en el archivo
        ##id += 1 # incremento el nº de transacción 
        # Por el momento, el id se calcula con el tipo, pv y nº de comprobant
        i = long(encabezado['cbte_nro'])
        i += (int(encabezado['cbte_nro'])*10**4 + int(encabezado['punto_vta']))*10**8
        encabezado['id'] = wsfex.get_last_id(client, token, sign, cuit)[0] + 1
    
    factura = wsfex.FacturaEX(**encabezado)
    for detalle in detalles:
        it = wsfex.ItemFEX(**detalle)
        factura.add_item(it, calcular=False)
    for permiso in permisos:
        p = wsfex.PermisoFEX(**permiso)
        factura.add_permiso(p)
    for cbtasoc in cbtasocs:
        c = wsfex.CmpAsocFEX(**cbtasoc)
        factura.add_cmp_asoc(c)

    if DEBUG:
        #print f.to_dict()
        print '\n'.join(["%s='%s'" % (k,str(v)) for k,v in factura.to_dict().items()])
        print 'id:', encabezado['id']
    if not DEBUG or raw_input("Facturar?")=="S":
        dic = factura.to_dict()
        auth, events = wsfex.authorize(client, token, sign, cuit,
                                       id=encabezado['id'],
                                       factura=dic)
        dic.update(auth)
        escribir_factura(dic, salida)
        print "ID:", dic['id'], "CAE:",dic['cae'],"Obs:",dic['obs'],"Reproceso:",dic['reproceso']