Esempio n. 1
0
def libro_resumen(dicDocs, csv=False):
    firma = Firma(dicDocs["firma_electronica"])
    emisor = Emisor(dicDocs["Emisor"])
    libro = Libro(emisor, firma)
    libro.set_periodo_tributario(dicDocs["periodo_tributario"])
    libro.set_tipo_operacion(dicDocs["tipo_operacion"])
    libro.set_tipo_libro(dicDocs["tipo_libro"])
    test = dicDocs['test'] if 'test' in dicDocs else False
    envio = Envio(emisor, firma, test=test)
    respuesta = []
    if csv:
        libro = _libro_csv(libro, csv)
    else:
        for dteDoc in dicDocs["Documentos"]:
            for docData in dteDoc["documentos"]:
                docu = Documento(docData, dteDoc["TipoDTE"])
                libro.set_docu(docu)
    libro.validar()
    envio.setLibro(libro)
    respuesta = envio.do_libro_send()
    return respuesta
Esempio n. 2
0
def consumo_folios_resumen(data, folios=False):
    test = data['test'] if 'test' in data else False
    emisor = Emisor(data["Emisor"])
    firma = Firma(data["firma_electronica"])
    fechas = {}
    if folios:
        i = 0
        for row in folios:
            if i > 0:
                if row[0] not in fechas:
                    fechas[row[0]] = ConsumoFolios(emisor, firma)
                if 'Correlativo' in data:
                    fechas[row[0]].set_correlativo(data['Correlativo'])
                if 'SecEnvio' in data:
                    fechas[row[0]].set_sec_envio(data['SecEnvio'])
                docu = Documento(
                    {
                        'TasaImp': data["Emisor"]['ValorIva'],
                        'Fecha': row[0],
                        'Folio': int(row[2]),
                        'MntNeto': int(row[3]),
                        'MntIVA': int(row[4]),
                        'MntExento': int(row[5]),
                        'MntTotal': int(row[6]),
                        'Anulado': row[7],
                    },
                    int(row[1]),
                    resumen=True)
                fechas[row[0]].set_docu(docu)
            else:
                cabezera = row
            i += 1
    elif 'Documentos' in data:
        for r in data['Documentos']:
            for d in r['documentos']:
                fecha = d['Encabezado']['IdDoc']['Fecha']
                if fecha not in fechas:
                    fechas[fecha] = ConsumoFolios(emisor, firma)
                if 'Correlativo' in data:
                    fechas[fecha].set_correlativo(data['Correlativo'])
                if 'SecEnvio' in data:
                    fechas[fecha].set_sec_envio(data['SecEnvio'])
                docu = Documento(d, r['TipoDTE'])
                fechas[fecha].set_docu(docu)
    else:
        cf = ConsumoFolios(emisor, firma)
        cf.FchInicio = data['FechaInicio']
        cf.FchFinal = data['FechaFinal']
        if 'Correlativo' in data:
            cf.set_correlativo(data['Correlativo'])
        if 'SecEnvio' in data:
            cf.set_sec_envio(data['SecEnvio'])
        envio = Envio(emisor, firma, test=test)
        envio.setLibro(cf)
        res = envio.do_consumo_folios_send()
        res.update({
            'correlativo': cf.Correlativo,
            'fecha_inicio': cf.FchInicio,
            'fecha_final': cf.FchFinal,
            'total_neto': cf.total_neto,
            'total_exento': cf.total_exento,
            'total_iva': cf.total_iva,
            'total': cf.total,
            'total_boletas': cf.total_boletas,
        })
        return [res]
    cfs = []
    respuestas = []
    envio = Envio(emisor, firma, test=test)
    for key, cf in fechas.items():
        cf.validar()
        cfs.append(cf.sii_xml_request)
        envio.setLibro(cf)
        res = envio.do_consumo_folios_send()
        res.update({
            'correlativo': cf.Correlativo,
            'fecha_inicio': cf.FchInicio,
            'fecha_final': cf.FchFinal,
            'total_neto': cf.total_neto,
            'total_exento': cf.total_exento,
            'total_iva': cf.total_iva,
            'total': cf.total,
            'total_boletas': cf.total_boletas,
            'rangos': cf.get_rangos(),
        })
        respuestas.append(res)
    return respuestas