Exemplo n.º 1
0
 def insertComboboxSearchCliente(self, combobox, idCliente,
                                                 clear=False, filter=True):
     res = leggiCliente(idCliente)
     denominazione = res["ragioneSociale"]
     if denominazione == '':
         denominazione = res["nome"] + ' ' + res["cognome"]
     combobox.refresh(idCliente, denominazione, res, clear, filter)
 def insertComboboxSearchPersonaGiuridica(self, combobox, id, clear=False, filter=True):
     if self._type == 'cliente':
         res = leggiCliente(id)
     elif self._type == 'fornitore':
         res = leggiFornitore(id)
     denominazione = res["ragioneSociale"] or (res["nome"] + ' ' + res["cognome"])
     combobox.refresh(id, denominazione, res, clear, filter)
     self._container = res
Exemplo n.º 3
0
            def refresh_entry(anagWindow):
                self._resultsCount = self._ricerca.getResultsCount()
                resultsElement = self._ricerca.getResultsElement()
                if not(self._resultsCount > 0):
                    self.set_active(0)
                    return

                if self._resultsCount == 1:
                    id = resultsElement.id
                    res = leggiCliente(id)
                    denominazione = res["ragioneSociale"]
                    if denominazione == '':
                        denominazione = res["nome"] + ' ' + res["cognome"]
                    self.set_text(denominazione)
                    self._id = id
Exemplo n.º 4
0
def do_genera_fatture_provvigioni(tipo_data, data_da, data_a, data_doc, progress=None):
    '''
    '''

    # definisco gli articoli da escludere
    articoli_esclusi = r"(.*)(sacchi|trasporto|contributo energetico|riempimento|commissioni|cappucci|europalette|big bag|commissione quantit)(.*)"

    documenti = []

    if tipo_data == TIPO_DATA_DOC:
        documenti = TestataDocumento().select(complexFilter=(and_(TestataDocumento.operazione=='DDT vendita diretto',
                TestataDocumento.data_documento.between(data_da, data_a))),
            batchSize=None,
            orderBy=TestataDocumento.id_fornitore)
    if tipo_data == TIPO_DATA_SPED:
        documenti = TestataDocumento().select(complexFilter=(and_(TestataDocumento.operazione=='DDT vendita diretto',
                TestataDocumento.fine_trasporto.between(data_da, data_a))),
            batchSize=None,
            orderBy=TestataDocumento.id_fornitore)

    if not documenti:
        messageInfo(msg="Non sono stati trovati documenti utili a completare l'operazione.")
    else:
        forn_totaledoc_dict = {}
        forn_provv_file = file(os.path.join(tempDir, 'riepilogo_provv.csv'), 'w')
        forn_provv_file.write('docNum;fornitore;cliente;articolo;totaleRiga;qta;tipo_provv;valore_provv;provv_articolo\n')
        for doc in documenti:
            if progress:
                pbar(progress, parziale=documenti.index(doc), totale=len(documenti), text="Elaborazione documenti...", noeta=False)
            totaleProvvDoc = Decimal(0)
            for riga in doc.righe:
                if riga.id_articolo is None or leggiArticolo(riga.id_articolo)['denominazione'] == '':
                    continue
                if re.match(articoli_esclusi, leggiArticolo(riga.id_articolo)['denominazione'], flags=re.IGNORECASE):
                    continue
                if Decimal(riga.totaleRiga) == Decimal(0) or Decimal(riga.quantita) == Decimal(0):
                    continue
                p = ProvvPgAzArt().select(id_persona_giuridica_to=doc.id_fornitore,
                                          id_persona_giuridica_from=doc.id_cliente,
                                          id_articolo=riga.id_articolo, batchSize=None)
                if p:
                    if p[0].provv.tipo_provv == "%":
                        provv_row = riga.totaleRiga * p[0].provv.valore_provv / 100
                    else:
                        provv_row = riga.quantita * p[0].provv.valore_provv
                    forn_provv_file.write("%s;%s;%s;%s;%s;%s;%s;%s;%s\n" % (doc.numero,
                        leggiFornitore(doc.id_fornitore)['ragioneSociale'],
                        leggiCliente(doc.id_cliente)['ragioneSociale'],
                        leggiArticolo(riga.id_articolo)['denominazione'],
                        mN(riga.totaleRiga, 2),
                        riga.quantita,
                        p[0].provv.tipo_provv,
                        mN(p[0].provv.valore_provv, 2),
                        mN(provv_row, 2)))
                    if doc.id_fornitore not in forn_totaledoc_dict:
                        forn_totaledoc_dict[doc.id_fornitore] = provv_row
                    else:
                        forn_totaledoc_dict[doc.id_fornitore] += provv_row
                else:
                    q = ProvvPgAzArt().select(id_persona_giuridica_to=doc.id_fornitore,
                                              id_persona_giuridica_from=doc.id_cliente,
                                              id_articolo=None, batchSize=None)
                    if q:
                        if q[0].provv.tipo_provv == "%":
                            provv_row = riga.totaleRiga * q[0].provv.valore_provv / 100
                        else:
                            provv_row = riga.quantita * q[0].provv.valore_provv
                        forn_provv_file.write("%s;%s;%s;%s;%s;%s;%s;%s;%s\n" % (doc.numero,
                            leggiFornitore(doc.id_fornitore)['ragioneSociale'],
                            leggiCliente(doc.id_cliente)['ragioneSociale'],
                            leggiArticolo(riga.id_articolo)['denominazione'],
                            mN(riga.totaleRiga, 2),
                            riga.quantita,
                            q[0].provv.tipo_provv,
                            mN(q[0].provv.valore_provv, 2),
                            mN(provv_row, 2)))
                        if doc.id_fornitore not in forn_totaledoc_dict:
                            forn_totaledoc_dict[doc.id_fornitore] = provv_row
                        else:
                            forn_totaledoc_dict[doc.id_fornitore] += provv_row

        forn_provv_file.close()

        operazione = "Fattura vendita"

        DESCR_RIGA = """Come convenuto Vi addebitiamo per nostre provvigioni su Vostre
forniture effettuate nel mese di %s l'importo di



FUORI CAMPO IVA ARTICOLO 7 ter D.P.R. 633/72""" % data_da.strftime('%B %Y')

        i = 0
        flag = False
        for k in forn_totaledoc_dict:

            if pbar:
                pbar(progress, parziale=i, totale=len(forn_totaledoc_dict), text="Creazione fatture...", noeta=False)

            forn = Fornitore().getRecord(id=k)
            if forn.ragione_sociale:
                cli = Cliente().select(ragioneSociale=forn.ragione_sociale, batchSize=None)

            if not cli and forn.cognome and forn.nome:
                cli = Cliente().select(cognomeNome=forn.cognome + ' ' + forn.nome, batchSize=None)

            if not cli:
                flag = True
                continue

            td = TestataDocumento()
            td.data_documento = data_doc
            td.operazione = operazione
            td.id_cliente = cli[0].id
            daoRiga = RigaDocumento()
            daoRiga.posizione = 0
            daoRiga.descrizione = DESCR_RIGA
            daoRiga.quantita = 1.0
            daoRiga.percentuale_iva = 0
            daoRiga.valore_unitario_lordo = forn_totaledoc_dict[k]
            daoRiga.moltiplicatore = 1
            daoRiga.valore_unitario_netto = forn_totaledoc_dict[k]
            daoRiga.scontiRigaDocumento = []
            td.righeDocumento = [daoRiga]
            td.persist()

            i += 1

        if progress:
            pbar(progress, stop=True)
        if flag:
            messageWarning(msg="Non è stato possibile creare alcune fatture!")
        messageInfo(msg="Operazione completata, sono state create %d nuove fatture." % i)
Exemplo n.º 5
0
    def analizza(self, data_inizio=None, data_fine=None, pageData=None):
        if not data_inizio:
            messageError(msg='Inserire una data d\'inizio periodo.')
            return 0
        if not data_fine:
            data_inizio_, data_fine = dataInizioFineMese(data_inizio)

        documenti = TestataDocumento().select(complexFilter=(and_(or_(TestataDocumento.operazione=='Fattura differita vendita', TestataDocumento.operazione=='Fattura accompagnatoria'), TestataDocumento.data_documento.between(data_inizio, data_fine))), batchSize=None)

        if not documenti:
            messageInfo(msg="Nessun risultato.")
            return 0

        righe = []

        buff = self.recordIB()

        i = 0
        totale_importi = Decimal(0)

        for documento in documenti:

            if self.progressbar:
                pbar(self.progressbar, parziale=i, totale=len(documenti))

            ope = leggiOperazione(documento.operazione)
            if ope:
                if ope['tipoPersonaGiuridica'] != 'cliente':
                    continue

            banca = None
            if documento.id_banca:
                banca = leggiBanca(documento.id_banca)
            else:
                continue

            cli = leggiCliente(documento.id_cliente)
            cli_ente = Cliente().getRecord(id=documento.id_cliente)
            cod_fisc_piva = ''
            if cli_ente:
                cod_fisc_piva = cli_ente.codice_fiscale or cli_ente.partita_iva
            else:
                cod_fisc_piva = documento.codice_fiscale_cliente
            debitore = Debitore(cod_fisc_piva, banca['abi'], banca['cab'])
            debitore.descrizione[0] = ''
            if cli['ragioneSociale']:
                debitore.descrizione[0] = cli['ragioneSociale']
            else:
                debitore.descrizione[0] = cli['cognome'] + ' ' + cli['nome']
            debitore.indirizzo = documento.indirizzo_cliente
            debitore.CAP = documento.cap_cliente
            debitore.provincia = documento.provincia_cliente
            debitore.comune = documento.localita_cliente

            for scadenza in documento.scadenze:
                if pagamentoLookup(scadenza.pagamento):

                    row = "%s N. %s a %s del %s \nImporto: %s data scadenza: %s" % (documento.operazione,
                                                     documento.numero,
                                                     documento.intestatario,
                                                     dateToString(documento.data_documento),
                                                     # scadenza.pagamento,
                                                     mN(scadenza.importo, 2),
                                                     dateToString(scadenza.data)
                                                     )

                    progressivo = i + 1
                    totale_importi += scadenza.importo
                    buff += self.record14(progressivo, scadenza.data, scadenza.importo, debitore)
                    buff += self.record20(progressivo)
                    buff += self.record30(progressivo, debitore)
                    buff += self.record40(progressivo, debitore)
                    buff += self.record50(progressivo, debitore, row.replace('\n', ''))
                    buff += self.record51(progressivo, progressivo)
                    buff += self.record70(progressivo)

                    riga = {
                        'destinatario': debitore.descrizione[0],
                        'indirizzo': debitore.indirizzo,
                        'CAP': debitore.CAP,
                        'comune': debitore.comune,
                        'provincia': debitore.provincia,
                        'cod_fisc_piva': cod_fisc_piva,
                        'banca_abi': banca['abi'],
                        'banca_cab': banca['cab'],
                        'importo': scadenza.importo,
                        'data_scadenza': scadenza.data,
                        'rif_debito': row
                    }
                    righe.append(riga)

                    i = i + 1

        buff += self.recordEF(i, totale_importi)

        pageData['righe'] = righe
        pageData['totale_importi'] = totale_importi
        pageData['disposizioni'] = i

        if self.progressbar:
            pbar(self.progressbar, stop=True)

        self._buffer = buff