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
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
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)
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