def OnCallDoc(self, event): row = event.GetRow() dbmov = self.gridmov.dbmas.mov if 0 <= row < dbmov.RowsCount(): dbmov.MoveRow(row) import awc.util as awu wait = awu.WaitDialog(self, message="Caricamento documento in corso") try: import magazz Dialog = magazz.GetDataentryDialogClass() dlg = Dialog(self) dlg.SetOneDocOnly(dbmov.doc.id) dlg.CenterOnScreen() dbdoc = dlg.panel.dbdoc c = dbdoc.mov._GetFieldIndex('id_prod') p = dbmov.id_prod def TrovaRiga(r): return r[c] == p n = dbdoc.mov.LocateRS(TrovaRiga) if n: dlg.panel.gridbody.MakeCellVisible(n, 1) dlg.panel.gridbody.SetGridCursor(n, 1) dlg.panel.FindWindowByName('workzone').SetSelection(1) finally: wait.Destroy() r = dlg.ShowModal() if r in (magazz.DOC_MODIFIED, magazz.DOC_DELETED): self.GridUpdate(prod=p) if r == magazz.DOC_MODIFIED: wx.CallAfter(lambda: self.gridmov.gridmov.SelectRow(row)) dlg.Destroy() event.Skip()
def Stampa(self): reg = self.dbreg r = reg._riepaliq #per compatilibità alias tabelle con riep.iva fatto x lista mov. r.reg.regiva = r.reg.rei r.aliqiva = r.iva if self.FindWindowById(wdr.ID_GRIDZONE).GetSelection() == 2: name = 'Riepilogo IVA' db = r else: name = 'Registro IVA' db = reg def cn(x): return self.FindWindowByName(x) for c in 'tiposta intatt intdes intanno intpag'.split(): for o in (reg, r): setattr(o._info, c, cn(c).GetValue()) r._info.noperiodo = True #evita di stampare il periodo su riep. iva s = rpt.Report(self, db, name) if reg._tipostampa == "D": q = awu.MsgDialog(self, message=\ "Confermi l'aggiornamento del database con le "\ "informazioni stampate?", style=wx.YES_NO|wx.YES_DEFAULT|wx.ICON_QUESTION) if q == wx.ID_YES: wait = awu.WaitDialog(self, message=\ "Aggiornamento dati in corso", maximum=reg.RowsCount()) try: e = self.dbreg.ElaboraDefin( lambda n, reg: wait.SetValue(n)) ri = adb.DbTable(bt.TABNAME_REGIVA, 'rei') if ri.Get(reg._rivid): p = s.usedReport.oCanvas.userVariableList['intpag'] ri.intanno = cn('intanno').GetValue() ri.intpag = p.valore reg.MoveLast() ri.lastprtnum = reg.numiva ri.lastprtdat = reg._datmax ri.Save() finally: wait.Destroy() if e: awu.MsgDialog(self, "Aggiornamento correttamente effettuato") self.GetParent().Close()
def OnCallDoc(self, event): row = event.GetRow() dbmov = self.dbmov if 0 <= row < dbmov.RowsCount(): dbmov.MoveRow(row) if magazz.CheckPermUte(dbmov.doc.id_tipdoc, 'leggi'): wait = awu.WaitDialog(self.dlg, message="Caricamento documento in corso") try: Dialog = magazz.GetDataentryDialogClass() dlg = Dialog(self.dlg) dlg.SetOneDocOnly(dbmov.doc.id) dlg.CenterOnScreen() finally: wait.Destroy() r = dlg.ShowModal() if r in (magazz.DOC_MODIFIED, magazz.DOC_DELETED): self.UpdateMov() if r == magazz.DOC_MODIFIED: self.gridmov.SelectRow(row) dlg.Destroy() event.Skip()
def GetAgEntrPIvaDate(self): c = self.ctrpiva t = self.GetChildren()[0] piva = t.GetValue() c.SetPIva(piva) if c.Analizza() == c.PIVA_OK: if self.askforlink: r = awu.MsgDialog(self,\ """Confermi la connessione al sito dell'""" """Agenzia delle Entrate per verificare le """ """date di inizio e fine attività dell'""" """azienda con questa Partita IVA?""", style=wx.ICON_QUESTION|wx.YES_NO|wx.YES_DEFAULT) if r != wx.ID_YES: return wait = awu.WaitDialog(self, message="Controllo online in corso...") e = 'INDEFINITO' try: e = 'ESISTENTE' wx.BeginBusyCursor() try: try: if not c.CheckVies(): e = 'NON %s' % e err = None except FaultException, e: err = e.fault.args[1] except Exception, e: err = repr(e.args) finally: wx.EndBusyCursor() if err: err = "Problema di accesso al webservice del sistema comunitario VIES:\n%s\n\nE' possibile provare con l'accesso via web." % err awu.MsgDialog(self, err, style=wx.ICON_ERROR) e = "ERRORE" finally:
def UpdateData(self): ci = lambda x: self.FindWindowById(x) pdc, pcf = self.dbpdc, self.dbpcf tabs = (pdc, pcf) map(lambda tab: tab.ClearBaseFilters(), tabs) #escludi partite saldate nos0 = ci(wdr.ID_NOPCFSALD).GetValue() if nos0: for tab in tabs: tab.AddBaseFilter("pcf.imptot<>pcf.imppar") #clienti/fornitori cf = ci(wdr.ID_CLIFOR).GetValue() pdc.AddBaseFilter("tipana.tipo='%s'" % cf) #riba? riba = ci(wdr.ID_RIBA).GetValue() if riba != "T": if riba == "S": op = '=' else: op = '<>' pdc.AddBaseFilter("modpag.tipo%s'R'" % op) pcf.AddBaseFilter("modpag.tipo%s'R' OR pcf.riba=1" % op) #periodo d1, d2 = map(lambda x: ci(x).GetValue(), (wdr.ID_DATA1, wdr.ID_DATA2)) for dt, op in ((d1, '>='), (d2, '<=')): for tab in tabs: if dt: tab.AddBaseFilter("pcf.datscad%s%%s" % op, dt) #mostra solo le partite che hanno la stessa scadenza spm = ci(wdr.ID_SCADMULTI).GetValue() if spm: for tab in tabs: tab.AddBaseFilter(""" (SELECT COUNT(*) FROM pcf AS test WHERE test.id_pdc=pdc.id AND test.datscad=pcf.datscad)>1""") wait = awu.WaitDialog(self) try: if not pdc.Retrieve(): awu.MsgDialog(self, message=repr(pdc.GetError())) return if pdc.RowsCount() == 0: wait.Destroy() awu.MsgDialog(self, message="Nessuna partita trovata") return col = pdc._GetFieldIndex('id') rs = pdc.GetRecordset() pdcids = [rs[n][col] for n in range(pdc.RowsCount())] if not pcf.Retrieve( "pcf.id_pdc IN (%s)" % ','.join(map(str, pdcids))): wait.Destroy() awu.MsgDialog(self, message=repr(pcf.GetError())) return finally: wait.Destroy() lc = ci(wdr.ID_CLIENTI) lc.Clear() for pdc in pdc: lc.Append(pdc.descriz) self.gridpcf.ChangeData(()) if pdc.RowsCount() == 0: self.gridpcf.ChangeData(()) awu.MsgDialog(self, message="Nessuna scadenza da accorpare") else: lc.SetSelection(0) self.totrac.clear() self.wrirac.clear() del self.totacc[:] self.UpdatePcf() self.TestButton()
statit = False if filtersPanel: if messages: statit = awu.MsgDialog(parentWindow, "Vuoi stampare le selezioni?", style=wx.ICON_QUESTION | wx.YES_NO | wx.YES_DEFAULT) == wx.ID_YES if statit: self.AddFiltersPanelTitleElements(filtersPanel) else: statit = False if doprogress: re_enable = awu.GetParentFrame(parentWindow).Disable() wait = awu.WaitDialog(parentWindow, message=waitMessage, maximum=dbTable.RowsCount()) self.progressBar = progressBar = wait.progress if messages: focused_object = parentWindow.FindFocus() else: wait = None try: r = 0 if progressBar <> None: progressBar.SetRange(dbTable.RowsCount()) if pageCount <> None: pageCount.SetLabel("0") if not noMove:
def Contabilizza(self): datdist, idbanem, idcontoeff, idcaucont =\ self.GetValori(wdr.ID_DATDIST, wdr.ID_BANCA,\ wdr.ID_CONTOEFF, wdr.ID_CAUCONT) if datdist is None or\ idbanem is None or\ idcontoeff is None or\ idcaucont is None: return if awu.MsgDialog( self, message= "Confermi la contabilizzazione degli effetti selezionati?", style=wx.ICON_QUESTION | wx.YES_NO | wx.NO_DEFAULT) != wx.ID_YES: return noem = False s0 = False for eff in self.dbeff: if eff.f_effsele == 1: if eff.f_effemes != 1: noem = True if eff.saldo <= 0: s0 = True if noem: msg =\ """ATTENZIONE\n\nGli effetti selezionati non sono stati emessi, confermi comunque la loro contabilizzazione?\n"""\ """Procedendo, essi verranno contabilizzati ma non sarà possibile produrre il file da trasmettere alla banca,\n"""\ """se non con una successiva operazione di estrazione e filtro.\n\n"""\ """Confermi la contabilizzazione senza emissione?""" if awu.MsgDialog(self, message=msg, style=wx.ICON_QUESTION | wx.YES_NO | wx.NO_DEFAULT) != wx.ID_YES: return if s0: msg =\ """ATTENZIONE\n\nCi sono partite con saldo a zero o negativo, la loro contabilizzazione porterà\n"""\ """ad un saldo negativo pari all'importo del relativo effetto.\n\n"""\ """Si consiglia di contabilizzare solo effetti relativi a partite con saldo utile all'emissione,\n"""\ """ovvero togliendo dalle selezioni il flag relativo alle partite saldate e rieffettuando l'estrazione.\n"""\ """Confermi la contabilizzazione in queste condizioni?""" if awu.MsgDialog(self, message=msg, style=wx.ICON_QUESTION | wx.YES_NO | wx.NO_DEFAULT) != wx.ID_YES: return wait = awu.WaitDialog(self,\ message="Contabilizzazione effetti in corso",\ maximum=self.dbeff.RowsCount()) #oggetto usato per aggiornare su dbeff le colonne imptot/imppar #dopo la scittura della registrazione pcf = adb.DbTable(bt.TABNAME_PCF, "pcf") #contabilizzazione c*k = True reg = dbe.dbc.DbRegCon() for eff in self.dbeff: if eff.f_effsele == 1: #testata reg.Reset() reg.CreateNewRow() reg.esercizio = datdist.year reg.id_caus = idcaucont reg.tipreg = reg.config.tipo reg.datreg = datdist #dettaglio: riga1=cliente, riga2=conto effetti body = reg.body for riga, cpa, ccp, segno in\ ((1, eff.id_pdc, idcontoeff, reg.config.pasegno),\ (2, idcontoeff, eff.id_pdc, reg.GetSegnoCP() )): body.CreateNewRow() body.numriga = riga body.tipriga = reg.tipreg body.importo = eff.impeff body.segno = segno body.id_pdcpa = cpa body.id_pdccp = ccp #scadenze: quella della riba scad = reg.scad scad.CreateNewRow() scad.datscad = eff.datscad scad.importo = eff.impeff scad.abbuono = 0 scad.spesa = 0 scad.id_pcf = eff.id if reg.Save(): if pcf.Get(eff.id): #la registrazione contabile aggiorna la partita che #sto lavorando come effetto; adeguo importo e pareggiam. #dell'effetto così come risulta dopo tale aggiornamento eff.imptot = pcf.imptot eff.imppar = pcf.imppar else: awu.MsgDialog(\ self,\ "Problema durante la contabilizzazione dell'effetto:\n"\ % repr(reg.GetError())) c*k = False break eff.f_effsele = 0 eff.f_effcont = 1 eff.id_effreg = reg.id if not wait.SetValue(eff.RowNumber()): break wait.Destroy() if c*k: self.SaveEff() awu.MsgDialog(self, message="Contabilizzazione terminata.") self.UpdateEff(msg=False)