def dati_file_conad_terron(testata): """ """ from promogest.dao.TestataDocumento import TestataDocumento from promogest.dao.InformazioniFatturazioneDocumento import InformazioniFatturazioneDocumento from promogest.dao.Azienda import Azienda if testata: #Scriviamo la testata della fattura dati_differita = InformazioniFatturazioneDocumento().select(id_fattura=testata.id, batchSize=None) azienda = Azienda().getRecord(id=Environment.azienda) if not azienda: messageError('Inserire le informazioni sull\' azienda in Dati azienda') return None if azienda.ragione_sociale == '': messageError('Inserire la ragione sociale dell\'azienda in Dati azienda') return None dati2 = [] if dati_differita: for ddtt in dati_differita: ddt = TestataDocumento().getRecord(id=ddtt.id_ddt) codice = '' if ddt.DM is not None: codice = ddt.DM.codice or '' dati = {'testata': { 'numero_progressivo': '0', 'codice_cliente': str(codice), 'data_bolla': ddt.data_documento, 'numero_bolla': str(ddt.numero), 'data_fattura': testata.data_documento, 'numero_fattura': str(testata.numero), }, 'dettaglio': [] } for riga in ddt.righe: if riga.id_articolo: art = leggiArticolo(riga.id_articolo) unitaBase = 'NR' if str(art["unitaBase"]).upper() == 'N' else str(art["unitaBase"]).upper() dati['dettaglio'].append( { 'numero_progressivo':'0', 'codice_articolo': str(art["codice"]), 'descrizione': str(art["denominazione"].replace("à", "a")), 'unita_misura': unitaBase, 'qta_fatturata': str(mN(Decimal(riga.quantita * (riga.moltiplicatore or 1)), 2)), 'prezzo_unitario': str(mN(Decimal(riga.valore_unitario_netto), 3)), 'aliquota_iva': str(mN(riga.percentuale_iva,0)) }) dati2.append(dati) return dati2
def refresh(self): # Aggiornamento TreeView idArticolo = self.id_articolo_filter_customcombobox1.getId() if idArticolo is None: self._treeViewModel.clear() messageInfo(transient=self._visualizzazione.getTopLevel(), msg='Selezionare un articolo !') return idListino = findIdFromCombobox(self.id_listino_filter_combobox1) daDataListino = stringToDate(self.da_data_listino_filter_entry.get_text()) aDataListino = stringToDate(self.a_data_listino_filter_entry.get_text()) self.numRecords = ListinoArticolo().count(idArticolo=idArticolo, idListino=idListino, listinoAttuale=None, # daDataListino =daDataListino, # aDataListino=aDataListino ) self._refreshPageCount() liss = ListinoArticolo().select(orderBy=self.orderBy, idArticolo=idArticolo, idListino=idListino, listinoAttuale=None, # daDataListino=daDataListino, # aDataListino=aDataListino, offset = self.offset, batchSize = self.batchSize) self._treeViewModel.clear() for l in liss: przDet = mN(l.prezzo_dettaglio or 0) przIngr = mN(l.prezzo_ingrosso or 0) ricDett = '%-6.3f' % calcolaRicarico(float(l.ultimo_costo or 0), float(l.prezzo_dettaglio or 0), float(l.percentuale_iva or 0)) margDett = '%-6.3f' % calcolaMargine(float(l.ultimo_costo or 0), float(l.prezzo_dettaglio or 0), float(l.percentuale_iva or 0)) ricIngr = '%-6.3f' % calcolaRicarico(float(l.ultimo_costo or 0), float(l.prezzo_ingrosso or 0)) margIngr = '%-6.3f' % calcolaMargine(float(l.ultimo_costo or 0), float(l.prezzo_ingrosso or 0)) self._treeViewModel.append((l, (l.denominazione or ''), dateToString(l.data_listino), przDet, ricDett, margDett, przIngr, ricIngr, margIngr, (l.ultimo_costo or 0)))
def on_aggiorna_button_clicked(self, widget): # Alcuni controlli sull'input if self.periodo_checkbutton.get_active() and \ (self.inizio_periodo_date.get_text() == '' or \ self.fine_periodo_date.get_text() == ''): messageWarning('Inserire una data valida') return model = self.scadenzario_treeview.get_model() model.clear() if self.periodo_checkbutton.get_active(): # Mostra le scadenze nel periodo tds = TestataDocumentoScadenza().select(orderBy=TestataDocumentoScadenza.data, complexFilter=(and_(TestataDocumentoScadenza.data_pagamento==None, TestataDocumentoScadenza.data.between(stringToDateTime(self.inizio_periodo_date.get_text()), stringToDateTime(self.fine_periodo_date.get_text()))))) else: # Mostra le prossime scadenze tds = TestataDocumentoScadenza().select(orderBy=TestataDocumentoScadenza.data, complexFilter=(and_(TestataDocumentoScadenza.data_pagamento==None, TestataDocumentoScadenza.data>=datetime.now()))) tipo_doc = '' for t in tds: doc = TestataDocumento().getRecord(id=t.id_testata_documento) if doc.operazione not in Environment.hapag: continue if doc.documento_saldato: continue if doc.id_fornitore and self.da_pagare: tipo_doc = 'A' if doc.id_cliente and self.da_incassare: tipo_doc = 'V' model.append([None, "%s" % dateToString(t.data), "%s" % doc.intestatario, tipo_doc, "%s" % doc.numero, # numero documento "€ %s" % mN(t.importo, 2), # importo "", # descrizione t.pagamento])
def refresh(self): # Aggiornamento TreeView denominazione = prepareFilterString(self.denominazione_filter_entry.get_text()) pagamento = Pagamento() def filterCountClosure(): return pagamento.count(denominazione=denominazione) self._filterCountClosure = filterCountClosure self.numRecords = self.countFilterResults() self._refreshPageCount() # Let's save the current search as a closure def filterClosure(offset, batchSize): return pagamento.select(orderBy=self.orderBy, denominazione=denominazione, offset=offset, batchSize=batchSize) self._filterClosure = filterClosure pagamenti = self.runFilter() self._treeViewModel.clear() for p in pagamenti: self._treeViewModel.append((p, (p.denominazione or ''), (p.tipo or ''), str(mN(p.spese, 2)), str(p.aliquota_iva), (p.codice or '') )) self._anagrafica.anagrafica_filter_treeview.set_model(self._treeViewModel)
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
def dati_file_buffetti(testata): """ """ #from promogest.dao.TestataDocumento import TestataDocumento from promogest.dao.Azienda import Azienda if testata: azienda = Azienda().getRecord(id=Environment.azienda) if not azienda: messageError('nessuna informazione azienda') return None if azienda.ragione_sociale == '': messageError('nessuna ragione sociale impostata') return None scadenze = testata.scadenze dati_generazione_scadenze = 'S' if len(scadenze) == 0: dati_generazione_scadenze = 'N' if testata.operazione == 'Fattura Accompagnatoria': tipo_documento = 'A' elif 'Fattura Differita' in testata.operazione: tipo_documento = 'D' elif 'Fattura' in testata.operazione: tipo_documento = 'F' tipo_registro = 'F' totale_fattura = mN(testata._totaleScontato + testata._totaleSpese, 2) if testata.id_fornitore is not None: tipo_nominativo = 'F' cognome_cli_for = testata.cognome_fornitore or '' nome_cli_for = testata.nome_fornitore or '' codice_fiscale_cli_for = testata.codice_fiscale_fornitore partita_iva_cli_for = testata.partita_iva_fornitore indirizzo_cli_for = testata.indirizzo_fornitore localita_cli_for = testata.localita_fornitore cap_cli_for = testata.cap_fornitore provincia_cli_for = testata.provincia_fornitore codice_cli_for = testata.codice_fornitore elif testata.id_cliente is not None: tipo_nominativo = 'C' cognome_cli_for = testata.cognome_cliente or '' nome_cli_for = testata.nome_cliente or '' codice_fiscale_cli_for = testata.codice_fiscale_cliente partita_iva_cli_for = testata.partita_iva_cliente indirizzo_cli_for = testata.indirizzo_cliente localita_cli_for = testata.localita_cliente cap_cli_for = testata.cap_cliente provincia_cli_for = testata.provincia_cliente codice_cli_for = testata.codice_cliente dati = [{ 'testata': { 'ragione_sociale_ditta': azienda.ragione_sociale, 'cod_fisc_piva_ditta': azienda.codice_fiscale or azienda.partita_iva, 'dati_generazione_scadenze': dati_generazione_scadenze, 'tipo_piano': '2', 'da_data': testata.data_documento, 'a_data': testata.data_documento, 'no_data': '' }, 'scadenze':{}, 'testata_pagamento': [{ 'codice': '0', #inseire il codice con cui identifichiamo il tipo di pagamento (es. ID RIba 30 gg) 'numero_rate': str(len(scadenze)), 'descrizione': testata.pagamento, 'tipo': '1', 'determinazione_tipo': '31', 'numero_rate': '1', 'giorni_prima': '30' # recuperare il numero di giorni dal pagamento }], 'fine_scadenza': {}, 'record0': [{ 'tipo_nominativo': tipo_nominativo, 'cognome': cognome_cli_for, 'nome': nome_cli_for, 'codice_fiscale': codice_fiscale_cli_for, 'partita_iva': partita_iva_cli_for, 'indirizzo': indirizzo_cli_for, 'localita': localita_cli_for, 'cap': cap_cli_for, 'provincia': provincia_cli_for, 'incluso_elenchi_bl': 'N' }], 'record1': [{ 'tipo_documento': tipo_documento, 'totale_fattura': str(totale_fattura), 'cf_piva': codice_fiscale_cli_for or partita_iva_cli_for, 'codice': codice_cli_for, 'tipo_registro': tipo_registro, 'data_doc': testata.data_documento }], 'record2': [{ 'imponibile_iva': str(mN(testata._totaleImponibileScontato)), 'importo_iva': str(mN(testata._totaleImpostaScontata)), }], 'recordB': [{ 'posizione': 'A' # controllare scadenze.data_pagamento se None mettere A, altrimenti P (pagato) }], }] # for scadenza in testata.scadenze: # dati['dettaglio_rate'].append({ # 'numero_rata': testata.scadenze.index(scadenza) + 1 # }) return dati