Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
 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()
Exemplo n.º 4
0
 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:
Exemplo n.º 5
0
    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()
Exemplo n.º 6
0
            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:
Exemplo n.º 7
0
    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)