def on_mostra_storico_button_clicked(self, widget):
        if self.ana.dao.id:

            my_page_data = {
                'file': 'storico_documenti.html',
                'padre': get_padre(self.ana.dao.id),
                'figli': get_figli(self.ana.dao.id),
                'dao': self.ana.dao
            }

            html = renderTemplate(pageData=my_page_data)
            self.web_view.load_html_string(html, "file:///"+sys.path[0]+os.sep)
        else:
            messageWarning("E' necessario salvare il documento prima di mostrarne lo storico.")
def ricerca_movimenti_spedizione(da_data, al_data, progress=None):
    tipi_ddt_figlio = ['DDT vendita', 'DDT vendita diretta']
    # Tutti i documenti (ordini) non saldati dall'inizio dell'anno
    ordini = session.query(TestataDocumento).filter(TestataDocumento.data_documento >= da_data,
                                                    TestataDocumento.operazione == 'Ordine da cliente',
                                                    TestataDocumento.documento_saldato == False).all()
    res = []

    for ordine in ordini:
        if progress:
            pbar(progress, parziale=ordini.index(ordine), totale=len(ordini),
                text="Attendere...", noeta=True)
        # ottengo tutti i figli di questo ordine
        figli = get_figli(ordine.id)
        for figlio in figli:
            if figlio.operazione in tipi_ddt_figlio:
                figlio._padre = get_padre(figlio.id)
                res.append(figlio)

    if progress:
        pbar(progress, stop=True)

    return res
def controlla_quantita(ordine):

    # costruisco un dizionario con gli id articolo e le quantità richieste per ciascun articolo
    qta_ordine = {}

    tipo = Operazione().getRecord(id=ordine.operazione)
    if tipo.segno != '' and tipo.segno is not None:
        tipoDOC = "MOV"
    else:
        tipoDOC = "DOC"

    for r in ordine.righe:
        if (tipoDOC == "MOV" and r.id_articolo == None) or tipoDOC == "DOC":
            continue
        else:
            # riga movimento
            qta_ordine[r.id_articolo] = r.quantita

    # raccolgo le quantità già inserite nei precedenti DDT
    qta_richieste = {}
    objs_figli = get_figli(ordine.id)
    for figlio in objs_figli:
        if figlio.operazione not in ['DDT vendita', 'DDT vendita diretta']:
            continue
        for r in figlio.righe:
            if r.id_articolo not in qta_richieste.keys():
                qta_richieste[r.id_articolo] = r.quantita
            else:
                qta_richieste[r.id_articolo] += r.quantita

    posso_chiudere = True
    for k in qta_ordine:
        tmpp = D(qta_ordine[k] - qta_richieste[k])
        if tmpp > D(3) or tmpp < D(-3):
            posso_chiudere = False

    return posso_chiudere