コード例 #1
0
ファイル: rt3040.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.closeProcess()
     self.emadd = self.df.repeml[2]
     if self.whole == "N":
         recs = getSingleRecords(self.opts["mf"],
                                 "rtlmst",
                                 ("rtm_code", "rtm_acno", "rtm_name"),
                                 where=[("rtm_cono", "=",
                                         self.opts["conum"])])
     else:
         whr = [("rtm_cono", "=", self.opts["conum"])]
         odr = "rtm_code, rtm_acno"
         recs = self.sql.getRec("rtlmst", where=whr, order=odr)
         if not recs:
             showError(self.opts["mf"].body, "Error",
                       "No Accounts Selected")
     if recs:
         self.form = DrawForm(self.opts["mf"].dbm,
                              self.tname,
                              wrkdir=self.opts["mf"].rcdic["wrkdir"])
         self.doLoadStatic()
         self.form.doNewDetail()
         p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
         for num, rec in enumerate(recs):
             p.displayProgress(num)
             if p.quit:
                 break
             self.doProcess(rec)
         p.closeProgress()
         if p.quit or not self.form.page:
             pass
         elif self.df.repeml[1] == "N" or not self.emadd:
             self.df.repeml[2] = self.emadd
             self.doPrint()
     self.opts["mf"].closeLoop()
コード例 #2
0
ファイル: st3050.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.closeProcess()
     if not self.group:
         self.sgrp = ""
         self.egrp = "zzz"
     else:
         self.sgrp = self.group
         self.egrp = self.group
     whr = [
         ("st1_cono", "=", self.opts["conum"]),
         ("st1_group", ">=", self.sgrp),
         ("st1_group", "<=", self.egrp),
         ("st1_type", "=", "R")]
     odr = "st1_group, st1_code"
     if self.whole == "S":
         recs = getSingleRecords(self.opts["mf"], "strmf1",
             ("st1_group", "st1_code", "st1_desc"), where=whr, order=odr)
     else:
         recs = self.sql.getRec("strmf1", where=whr, order=odr)
     if not recs:
         showError(self.opts["mf"].body, "Processing Error",
             "No Records Selected")
     else:
         self.printReport(recs)
     self.closeProcess()
コード例 #3
0
ファイル: gl3030.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.closeProcess()
     if self.whole == "S":
         self.recs = getSingleRecords(self.opts["mf"],
                                      "genmst", ("glm_acno", "glm_desc"),
                                      where=[("glm_cono", "=",
                                              self.opts["conum"])],
                                      items=[0, self.accs])
     elif self.whole == "R":
         self.recs = self.sql.getRec("genmst",
                                     where=[("glm_cono", "=",
                                             self.opts["conum"]),
                                            ("glm_acno", "between",
                                             self.sacno, self.eacno)],
                                     order="glm_acno")
     else:
         self.recs = self.sql.getRec("genmst",
                                     where=[("glm_cono", "=",
                                             self.opts["conum"])],
                                     order="glm_acno")
     if not self.recs:
         showError(self.opts["mf"].body, "Error", "No Accounts Selected")
     elif self.df.repprt[2] == "export":
         self.exportReport(self.recs)
     else:
         self.printReport(self.recs)
     self.doExit()
コード例 #4
0
ファイル: gl2050.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.closeProcess()
     if self.alljnl == "N":
         recs = getSingleRecords(self.opts["mf"],
                                 "genjlm", ("gjm_num", "gjm_desc"),
                                 where=self.wher)
     else:
         recs = self.sql.getRec("genjlm", where=self.wher)
     if not recs:
         self.opts["mf"].closeLoop()
         return
     for gjm in recs:
         self.trnref = gjm[self.sql.genjlm_col.index("gjm_num")]
         self.trndet = gjm[self.sql.genjlm_col.index("gjm_desc")]
         start = gjm[self.sql.genjlm_col.index("gjm_start")]
         last = gjm[self.sql.genjlm_col.index("gjm_last")]
         dates = []
         while start <= self.bh.curdt:
             if start < self.s_per or start <= last:
                 pass
             elif self.allper == "N" and start == self.bh.curdt:
                 dates.append(start)
             elif self.allper == "Y" and start <= self.bh.curdt:
                 dates.append(start)
             start = self.nextPeriod(start)
         for self.curdt in dates:
             self.trndat = mthendDate((self.curdt * 100))
             data = self.sql.getRec(
                 "genjlt",
                 cols=["gjt_acno", "gjt_amnt", "gjt_vatc"],
                 where=[("gjt_cono", "=", self.opts["conum"]),
                        ("gjt_num", "=", self.trnref),
                        ("gjt_amnt", "<>", 0)])
             if not data:
                 continue
             for tran in data:
                 self.acno = tran[0]
                 self.trnamt = tran[1]
                 self.vatcod = tran[2]
                 vrte = getVatRate(self.sql, self.opts["conum"],
                                   self.vatcod, self.trndat)
                 if vrte is None:
                     vrte = 0.0
                 self.vatamt = round((self.trnamt * vrte / (vrte + 100)), 2)
                 self.updateTables()
                 self.updateBatch()
             self.sql.updRec("genjlm",
                             cols=["gjm_last"],
                             data=[self.curdt],
                             where=[("gjm_cono", "=", self.opts["conum"]),
                                    ("gjm_num", "=", self.trnref),
                                    ("gjm_freq", "=", self.freq)])
     self.opts["mf"].dbm.commitDbase()
     self.opts["mf"].closeLoop()
コード例 #5
0
ファイル: sl3040.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.closeProcess()
     if self.whole == "S":
         col = [
             "wlm_empno", "wgm_sname", "wgm_fname", "wlm_loan", "wlm_desc"
         ]
         whr = [("wlm_cono", "=", self.opts["conum"]),
                ("wgm_cono=wlm_cono", ), ("wgm_empno=wlm_empno", )]
         dic = {}
         dic["wlm_empno"] = self.sql.waglmf_dic["wlm_empno"]
         dic["wlm_loan"] = self.sql.waglmf_dic["wlm_loan"]
         dic["wlm_desc"] = self.sql.waglmf_dic["wlm_desc"]
         dic["wgm_sname"] = self.sql.wagmst_dic["wgm_sname"]
         dic["wgm_fname"] = self.sql.wagmst_dic["wgm_fname"]
         dat = self.sql.getRec(tables=["waglmf", "wagmst"],
                               cols=col,
                               where=whr,
                               order="wlm_empno, wlm_loan")
         get = getSingleRecords(self.opts["mf"],
                                "waglmf",
                                col,
                                where=dat,
                                ttype="D",
                                dic=dic)
         if get:
             acc = []
             for g in get:
                 acc.append(g[0])
             whr = [("wlm_cono", "=", self.opts["conum"]),
                    ("wlm_empno", "in", acc)]
             odr = "wlm_empno, wlm_loan"
             recs = self.sql.getRec("waglmf", where=whr, order=odr)
         else:
             recs = None
     else:
         whr = [("wlm_cono", "=", self.opts["conum"])]
         odr = "wlm_empno, wlm_loan"
         recs = self.sql.getRec("waglmf", where=whr, order=odr)
     if not recs:
         showError(self.opts["mf"].body, "Error", "No Accounts Selected")
     else:
         p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
         for num, emp in enumerate(recs):
             p.displayProgress(num)
             if p.quit:
                 break
             self.doProcess(emp)
         p.closeProgress()
         if self.fpdf.page and not p.quit and self.df.repeml[1] == "N":
             self.doPrint()
     self.opts["mf"].closeLoop()
コード例 #6
0
 def doDrsAcc(self, frt, pag, r, c, p, i, w):
     self.acno = []
     if w == "Y":
         return
     whr = [("drm_cono", "=", self.opts["conum"])]
     if self.chain:
         whr.append(("drm_chain", "=", self.chain))
     acc = getSingleRecords(self.opts["mf"],
                            "drsmst", ("drm_acno", "drm_name"),
                            where=whr,
                            order="drm_chain, drm_acno",
                            items=[0, self.accs])
     for a in acc:
         self.acno.append(a[2])
コード例 #7
0
ファイル: si3080.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.closeProcess()
     tab = ["slsiv1", "drsmst"]
     col = ["si1_docno", "si1_date", "si1_chain", "si1_acno", "drm_name"]
     dic = {}
     for c in col:
         for t in tab:
             d = getattr(self.sql, "%s_dic" % t)
             if c in d:
                 dic[c] = d[c]
     if self.select == "S":
         recs = self.sql.getRec(tables=tab,
                                cols=col,
                                where=[("si1_cono", "=",
                                        self.opts["conum"]),
                                       ("si1_rtn", "=", self.typ),
                                       ("si1_invno", "<>", "cancel"),
                                       ("drm_cono=si1_cono", ),
                                       ("drm_chain=si1_chain", ),
                                       ("drm_acno=si1_acno", )],
                                order="si1_docno")
         recs = getSingleRecords(self.opts["mf"],
                                 tab,
                                 col,
                                 dic=dic,
                                 where=recs,
                                 ttype="D")
         iv1 = []
         if recs:
             for rec in recs:
                 iv1.append([rec[0]])
     else:
         iv1 = self.sql.getRec("slsiv1",
                               cols=["si1_docno"],
                               where=[("si1_cono", "=", self.opts["conum"]),
                                      ("si1_rtn", "=", self.typ),
                                      ("si1_docno", ">=", self.frm),
                                      ("si1_docno", "<=", self.to)])
     if iv1:
         PrintInvoice(self.opts["mf"],
                      self.opts["conum"],
                      self.opts["conam"],
                      self.typ,
                      iv1,
                      tname=self.tname,
                      repprt=self.df.repprt,
                      repeml=self.df.repeml,
                      copy=self.copy)
     self.opts["mf"].closeLoop()
コード例 #8
0
 def doEnd(self):
     self.df.closeProcess()
     self.emadd = self.df.repeml[2]
     if not self.echn:
         self.echn = 999
     if not self.eacc:
         self.eacc = "zzzzzzz"
     whr = [("drm_cono", "=", self.opts["conum"]),
            ("drm_chain", ">=", self.schn), ("drm_acno", ">=", self.sacc),
            ("drm_chain", "<=", self.echn), ("drm_acno", "<=", self.eacc)]
     if self.stops == "N":
         whr.append(("drm_stop", "<>", "Y"))
     if self.redu == "N":
         whr.append(("drm_stat", "<>", "X"))
     if self.whole == "S":
         recs = getSingleRecords(self.opts["mf"],
                                 "drsmst",
                                 ("drm_chain", "drm_acno", "drm_name"),
                                 where=whr)
     else:
         if self.sort == "N":
             odr = "drm_chain, drm_acno"
         elif self.sort == "M":
             odr = "drm_name"
         else:
             odr = "drm_pcod"
         recs = self.sql.getRec("drsmst", where=whr, order=odr)
     if not recs:
         showError(self.opts["mf"].body, "Error", "No Accounts Selected")
     else:
         self.form = DrawForm(self.opts["mf"].dbm,
                              self.tname,
                              wrkdir=self.opts["mf"].rcdic["wrkdir"])
         self.doLoadStatic()
         self.form.doNewDetail()
         p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
         for num, rec in enumerate(recs):
             p.displayProgress(num)
             if p.quit:
                 break
             self.doProcess(rec)
         p.closeProgress()
         if p.quit or not self.form.page:
             pass
         elif self.df.repeml[1] == "N" or self.emadd:
             self.df.repeml[2] = self.emadd
             self.doPrint()
     self.opts["mf"].closeLoop()
コード例 #9
0
 def doCoySel(self, frt, pag, r, c, p, i, w):
     if w == "A":
         self.coys = []
         for coy in self.sql.getRec("ctlmst",
                                    cols=["ctm_cono"],
                                    order="ctm_cono"):
             self.coys.append(coy[0])
         return "sk4"
     elif w == "S":
         self.coys = []
         coys = getSingleRecords(self.opts["mf"], "ctlmst",
                                 ("ctm_cono", "ctm_name"))
         for coy in coys:
             self.coys.append(coy[0])
         if not self.coys:
             return "No Company Selected"
         return "sk4"
コード例 #10
0
 def doProcess(self):
     self.df.closeProcess()
     if self.whole == "Y":
         self.tables = self.sql.getRec("ftable",
                                       cols=["ft_tabl"],
                                       where=[("ft_seq", "=", 1)],
                                       order="ft_tabl")
     else:
         self.tables = getSingleRecords(self.opts["mf"],
                                        "ftable", ("ft_tabl", "ft_desc"),
                                        where=[("ft_seq", "=", 1)],
                                        order="ft_tabl")
     if not self.tables:
         showError(self.opts["mf"].body, "Table Error", "No Tables "\
             "Selected for Copying %s" % self.opts["mf"].rcdic["dbname"])
     else:
         self.doCopyTables()
     self.doCloseProcess()
コード例 #11
0
 def doEnd(self):
     self.df.closeProcess()
     self.prnt = False
     tab = ["bkmcon"]
     whr = [("bkc_cono", "=", self.opts["conum"])]
     if self.sort == "N":
         odr = "bkc_ccode"
     elif self.sort == "M":
         odr = "bkc_name"
     else:
         odr = "bkc_pcod"
     if self.whole == "S":
         recs = getSingleRecords(self.opts["mf"],
                                 "bkmcon", ("bkc_ccode", "bkc_name"),
                                 where=whr,
                                 order=odr)
     else:
         recs = self.sql.getRec(tables=tab, where=whr, order=odr)
     if not recs:
         showError(self.opts["mf"].body, "Error", "No Accounts Selected")
     else:
         self.fpdf = TartanLabel(self.label, posY=self.srow, posX=self.scol)
         self.fpdf.add_page()
         p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
         for num, dat in enumerate(recs):
             p.displayProgress(num)
             if p.quit:
                 break
             self.doProcess(dat)
         p.closeProgress()
         if self.fpdf.page and not p.quit:
             pdfnam = getModName(self.opts["mf"].rcdic["wrkdir"],
                                 self.__class__.__name__,
                                 self.opts["conum"],
                                 ext="pdf")
             self.fpdf.output(pdfnam, "F")
             doPrinter(mf=self.opts["mf"],
                       conum=self.opts["conum"],
                       pdfnam=pdfnam,
                       header=self.tit,
                       repprt=self.df.repprt)
     self.closeProcess()
コード例 #12
0
 def doEnd(self):
     self.df.closeProcess()
     # Export File for Bank
     if self.bestac:
         self.export = open(
             os.path.join(
                 self.opts["mf"].rcdic["wrkdir"],
                 "best%03d_%s.txt" % (self.opts["conum"], self.sysdtw)),
             "w")
         self.export.write("%1s%4s%-40s%8s%1s%8s%-15s%1s%2s%1s%9s%2s%4s"\
             "\r\n" % ("*", self.bestac, self.opts["conam"], self.sysdtw,
             "Y", "", "SALARIES EFT", "+", self.besttp, 0, "", "01",
             "LIVE"))
     else:
         self.export = None
     whr = [("wgm_cono", "=", self.opts["conum"]),
            ("wgm_freq", "=", self.freq),
            ("wgm_term", "=", 0, "or", "wgm_term", ">=", self.rundt)]
     if self.dept:
         whr.append(("wgm_dept", "=", self.dept))
     if self.whole == "N":
         recs = getSingleRecords(self.opts["mf"],
                                 "wagmst", ("wgm_empno", "wgm_sname"),
                                 where=whr)
         for emp in recs:
             self.empnos.append(emp[1])
     else:
         recs = self.sql.getRec("wagmst",
                                cols=["wgm_empno"],
                                where=whr,
                                order="wgm_empno")
         for emp in recs:
             self.empnos.append(emp[0])
     if self.empnos:
         self.doPrint()
         if self.export:
             value = int(round((self.etotal * 100), 0))
             self.export.write("%1s%4s%1s%30s%013u%47s\r\n" % \
                 (2, self.bestac, "T", "", value, ""))
             self.export.close()
     self.opts["mf"].closeLoop()
コード例 #13
0
ファイル: cr3070.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.setWidget(self.df.mstFrame, state="hide")
     self.prnt = "N"
     if self.whole == "S":
         recs = getSingleRecords(self.opts["mf"],
                                 "crsmst", ("crm_acno", "crm_name"),
                                 where=[("crm_cono", "=",
                                         self.opts["conum"])])
     else:
         recs = self.sql.getRec("crsmst",
                                where=[("crm_cono", "=", self.opts["conum"])
                                       ],
                                order=self.sort)
         if not recs:
             showError(self.opts["mf"].body, "Error",
                       "No Accounts Available")
     if recs:
         p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
         for num, rec in enumerate(recs):
             p.displayProgress(num)
             if p.quit:
                 break
             self.doProcess(rec)
         p.closeProgress()
     if self.prnt == "Y" and self.fpdf.page and not p.quit:
         pdfnam = getModName(self.opts["mf"].rcdic["wrkdir"],
                             self.__class__.__name__,
                             self.opts["conum"],
                             ext="pdf")
         self.fpdf.output(pdfnam, "F")
         doPrinter(mf=self.opts["mf"],
                   conum=self.opts["conum"],
                   pdfnam=pdfnam,
                   header=self.tit,
                   repprt=self.df.repprt,
                   fromad=self.fromad,
                   repeml=self.df.repeml)
     self.df.setWidget(self.df.mstFrame, state="show")
     self.df.focusField("T", 0, 1)
コード例 #14
0
ファイル: bk3080.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.closeProcess()
     tab = ["bkmtrn", "bkmmst", "bkmcon"]
     col = ["bkt_refno", "bkt_date", "bkc_sname", "bkc_names"]
     dic = {}
     for c in col:
         for t in tab:
             d = getattr(self.sql, "%s_dic" % t)
             if c in d:
                 dic[c] = d[c]
     if self.dtyp == "I":
         ttp = 2
     else:
         ttp = 6
     if self.select == "S":
         recs = self.sql.getRec(tables=tab, cols=col, where=[("bkt_cono",
             "=", self.opts["conum"]), ("bkt_type", "=", ttp),
             ("bkm_cono=bkt_cono",), ("bkm_number=bkt_number",),
             ("bkc_cono=bkt_cono",), ("bkc_ccode=bkm_ccode",)],
             group="bkt_refno, bkt_date, bkc_sname, bkc_names")
         recs = getSingleRecords(self.opts["mf"], tab, col, dic=dic,
             where=recs, ttype="D", selcol="bkc_sname")
     else:
         recs = self.sql.getRec("bkmtrn", cols=["bkt_refno"],
             where=[("bkt_cono", "=", self.opts["conum"]),
             ("bkt_type", "=", ttp), ("bkt_refno", ">=", self.frm),
             ("bkt_refno", "<=", self.to)], group="bkt_refno",
             order="bkt_refno")
     docs = []
     if recs:
         for rec in recs:
             docs.append(rec[0])
     if docs:
         PrintBookingInvoice(self.opts["mf"], self.opts["conum"],
             self.opts["conam"], self.dtyp, docs, tname=self.tname,
             repprt=self.df.repprt, repeml=self.df.repeml, copy=self.copy)
     self.opts["mf"].closeLoop()
コード例 #15
0
ファイル: cr3080.py プロジェクト: paulmalherbe/Tartan
    def doEnd(self):
        self.df.closeProcess()
        if self.excepts == "Y":
            self.doExceptions()
        self.emadd = self.df.repeml[2]
        if self.bestac:
            self.export = open(
                os.path.join(
                    self.opts["mf"].rcdic["wrkdir"],
                    "best%03d_%s.txt" % (self.opts["conum"], self.paydtw)),
                "w")
            # Header for BEST
            self.export.write("%1s%4s%-40s%8s%1s%8s%-15s%1s%2s%1s%9s%2s%4s"\
                "\r\n" % ("*", self.bestac, self.opts["conam"], self.paydtw,
                "Y", "", "CREDITORS EFT", "+", self.besttp, 0, "", "01",
                "LIVE"))
        else:
            self.export = None
        if self.whole == "S":
            recs = getSingleRecords(self.opts["mf"],
                                    "crsmst", ("crm_acno", "crm_name"),
                                    where=[("crm_cono", "=",
                                            self.opts["conum"]),
                                           ("crm_termsb", "=", self.freq),
                                           ("crm_pyind", "<>", "N"),
                                           ("crm_stat", "<>", "X")])
        else:
            if not self.eacc:
                self.eacc = "zzzzzzz"
            whr = [("crm_cono", "=", self.opts["conum"]),
                   ("crm_acno", "between", self.sacc, self.eacc),
                   ("crm_termsb", "=", self.freq), ("crm_pyind", "<>", "N"),
                   ("crm_stat", "<>", "X")]
            if self.sort == "N":
                odr = "crm_acno"
            elif self.sort == "M":
                odr = "crm_name"
            else:
                odr = "crm_pcod"
            recs = self.sql.getRec("crsmst", where=whr, order=odr)
            if not recs:
                showError(self.opts["mf"].body, "Error",
                          "No Accounts Selected")
        if recs:
            self.form = DrawForm(self.opts["mf"].dbm,
                                 self.tname,
                                 wrkdir=self.opts["mf"].rcdic["wrkdir"])
            self.doLoadStatic()
            self.form.doNewDetail()
            p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
            for num, rec in enumerate(recs):
                p.displayProgress(num)
                if p.quit:
                    self.opts["mf"].dbm.rollbackDbase()
                    break
                self.doProcess(rec)
            p.closeProgress()
            if p.quit or not self.form.page:
                pass
            elif self.df.repeml[1] == "N" or self.emadd:
                self.df.repeml[2] = self.emadd
                self.doPrint()
            if self.bestac:
                # Trailer for BEST
                value = int(round((self.etotal * 100), 0))
                self.export.write("%1s%4s%1s%30s%013u%47s\r\n" % \
                    (2, self.bestac, "T", "", value, ""))
                self.export.close()
                if self.glint == "Y" and self.etotal:
                    # Create total transactions in GL
                    data = [
                        self.opts["conum"], self.crsctl, self.curdt,
                        self.paydtw, 2, self.refno, self.batno, self.etotal,
                        0.0,
                        "Payment EFT%06i to EFT%06i" % (self.refs, self.cats),
                        "", "", 0, self.opts["capnm"], self.sysdtw, 0
                    ]
                    self.sql.insRec("gentrn", data=data)
                    data[1] = self.bankac
                    data[7] = float(ASD(0) - ASD(self.etotal))
                    self.sql.insRec("gentrn", data=data)
                self.opts["mf"].dbm.commitDbase(
                    ask=True,
                    mess="""Would you like to commit all elecronic payments?

If you decide to do this, you must remember to upload the BEST file to the Bank otherwise you are NOT going to Reconcile!""",
                    default="no")
        if "wait" not in self.opts:
            self.opts["mf"].closeLoop()
コード例 #16
0
ファイル: ml3040.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     if "args" in self.opts:
         self.whole = "S"
         self.current = "N"
         self.zeros = "Y"
         self.paid = "Y"
         self.minus = "Y"
         self.mes = None
         self.mes = self.sql.getRec("ctlmes",
                                    cols=["mss_detail"],
                                    where=[("mss_system", "=", "MEM"),
                                           ("mss_message", "=", 1)],
                                    limit=1)
         self.curdt = int(self.opts["args"][1] / 100)
         self.dated = CCD(self.opts["args"][1], "D1", 10).disp
         self.pro = False
         self.repprt = self.opts["args"][2]
         self.repeml = self.opts["args"][3]
         recs = [self.opts["args"][0]]
     else:
         self.df.closeProcess()
         self.repprt = self.df.repprt
         self.repeml = self.df.repeml
         whr = [("mlm_cono", "=", self.opts["conum"])]
         if self.status != "Z":  # Not All
             whr.append(("mlm_state", "=", self.status))
         if self.sort == "N":
             odr = "mlm_memno"
         else:
             odr = "mlm_surname"
         if self.whole == "S":
             recs = getSingleRecords(
                 self.opts["mf"],
                 "memmst", ("mlm_memno", "mlm_surname", "mlm_names"),
                 head=["X", "Number", "Surname", "Names"],
                 where=whr,
                 order=odr,
                 selcol="mlm_surname")
         else:
             if self.whole == "R":
                 whr.append(("mlm_memno", "between", self.start, self.to))
             recs = self.sql.getRec("memmst", where=whr, order=odr)
             if not recs:
                 showError(self.opts["mf"].body, "Error",
                           "No Accounts Selected")
                 if "wait" not in self.opts:
                     self.opts["mf"].closeLoop()
                 return
         # Remove all linked accounts
         col = self.sql.memmst_col
         nos = []
         for acc in recs:
             nos.append(acc[col.index("mlm_memno")])
         chk = copyList(recs)
         for acc in chk:
             whr = [("mll_cono", "=", self.opts["conum"]),
                    ("mll_lnkno", "=", acc[col.index("mlm_memno")])]
             lnk = self.sql.getRec("memlnk", where=whr, limit=1)
             if lnk and lnk[1] in nos:
                 recs.remove(acc)
     if recs:
         self.emadd = self.repeml[2]
         self.form = DrawForm(self.opts["mf"].dbm,
                              self.tname,
                              wrkdir=self.opts["mf"].rcdic["wrkdir"])
         self.doLoadStatic()
         self.form.doNewDetail()
         if self.repeml[1] == "N":
             mess = "Printing Statements"
         else:
             mess = "Printing and Emailing Statements"
         p = ProgressBar(self.opts["mf"].body,
                         typ=mess,
                         mxs=len(recs),
                         esc=True)
         for num, rec in enumerate(recs):
             p.displayProgress(num)
             if p.quit:
                 break
             if self.pro:
                 self.doProForma(rec)
             self.doProcess(rec)
         p.closeProgress()
         if self.pro:
             self.opts["mf"].dbm.rollbackDbase()
         if p.quit or not self.form.page:
             pass
         elif self.repeml[1] == "N" or self.emadd:
             self.repeml[2] = self.emadd
             self.doPrint()
     if "wait" not in self.opts:
         self.opts["mf"].closeLoop()
コード例 #17
0
ファイル: wg2020.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.closeProcess()
     if self.bestac:
         self.export = open(
             os.path.join(
                 self.opts["mf"].rcdic["wrkdir"],
                 "best%03d_%s.txt" % (self.opts["conum"], self.paydt)), "w")
         # Header for BEST
         self.export.write("%1s%4s%-40s%8s%1s%8s%-15s%1s%2s%1s%9s%2s%4s"\
             "\r\n" % ("*", self.bestac, self.opts["conam"], self.paydt,
             "Y", "", "SALARIES EFT", "+", self.besttp, 0, "", "01","LIVE"))
     else:
         self.export = None
     whr = [("wgm_cono", "=", self.opts["conum"]),
            ("wgm_freq", "=", self.freq)]
     if self.dept:
         whr.append(("wgm_dept", "=", self.dept))
     if self.whole == "S":
         whr.extend([("wcp_cono", "=", self.opts["conum"]),
                     ("wcp_empno=wgm_empno", ), ("wcp_paid", "=", "N")])
         col = ["wgm_empno", "wgm_sname", "wgm_fname"]
         recs = getSingleRecords(self.opts["mf"], ["wagmst", "wagcap"],
                                 col,
                                 where=whr,
                                 group=True)
     else:
         recs = self.sql.getRec("wagmst", where=whr, order="wgm_empno")
         if not recs:
             showError(self.opts["mf"].body, "Error",
                       "No Records Available")
     if recs:
         if self.preview == "Y":
             pb = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
         else:
             pb = ProgressBar(self.opts["mf"].body, mxs=len(recs))
         for num, emp in enumerate(recs):
             pb.displayProgress(num)
             if self.preview == "Y" and pb.quit:
                 break
             self.doProcess(emp)
         pb.closeProgress()
         if self.preview == "Y" and pb.quit:
             self.opts["mf"].closeLoop()
             return
         if self.glint == "Y":
             chk = self.doIntegration()
         else:
             chk = True
         if chk:
             self.doPrint()
             if self.export:
                 # Trailer for BEST
                 value = int(round((self.etotal * 100), 0))
                 self.export.write("%1s%4s%1s%30s%013u%47s\r\n" % \
                     (2, self.bestac, "T", "", value, ""))
                 self.export.close()
             if self.preview == "Y":
                 self.opts["mf"].dbm.rollbackDbase()
             else:
                 self.opts["mf"].dbm.commitDbase()
     self.opts["mf"].closeLoop()
コード例 #18
0
 def doEnd(self):
     self.df.closeProcess()
     if self.allc == "N":
         recs = getSingleRecords(self.opts["mf"], "drsrcm", ("dcm_num",
             "dcm_desc"), where=self.wher)
     else:
         recs = self.sql.getRec("drsrcm", where=self.wher)
     if recs:
         if self.inv == "Y" and self.df.repeml[1] == "N":
             self.fpdf = MyFpdf(orientation="L", fmat="A4",
                 name=self.__class__.__name__, head=128)
         for dcm in recs:
             num = dcm[self.sql.drsrcm_col.index("dcm_num")]
             desc = dcm[self.sql.drsrcm_col.index("dcm_desc")]
             day = dcm[self.sql.drsrcm_col.index("dcm_day")]
             if day == 30:
                 self.trdt = mthendDate((self.bh.curdt * 100) + 1)
             else:
                 self.trdt = (self.bh.curdt * 100) + day
             vat = dcm[self.sql.drsrcm_col.index("dcm_vat")]
             self.vatrte = getVatRate(self.sql, self.opts["conum"],
                 vat, self.trdt)
             glac = dcm[self.sql.drsrcm_col.index("dcm_glac")]
             nxt = self.sql.getRec("drstrn", cols=["max(drt_ref1)"],
                 where=[("drt_cono", "=", self.opts["conum"]), ("drt_ref1",
                 "like", "RC%03i%s" % (num, "%"))], limit=1)
             if not nxt[0]:
                 nxt = 0
             else:
                 nxt = int(nxt[0][5:])
             tot_val = 0
             tot_vat = 0
             rec = self.sql.getRec("drsrct", where=[("dct_cono", "=",
                 self.opts["conum"]), ("dct_num", "=", num), ("dct_start",
                 "<=", self.bh.curdt), ("dct_end", ">=", self.bh.curdt)])
             col = self.sql.drsrct_col
             for dct in rec:
                 self.chain = dct[col.index("dct_chain")]
                 self.acno = dct[col.index("dct_acno")]
                 # Check for Redundancy
                 chk = self.sql.getRec("drsmst", cols=["drm_stat"],
                     where=[("drm_cono", "=", self.opts["conum"]),
                     ("drm_chain", "=", self.chain), ("drm_acno", "=",
                     self.acno)], limit=1)
                 if chk[0] == "X":
                     continue
                 # Check for Valid Period
                 charge = False
                 start = dct[col.index("dct_start")]
                 year = int(start / 100)
                 month = start % 100
                 while start <= self.bh.curdt:
                     if start == self.bh.curdt:
                         charge = True
                         break
                     month += self.mths
                     if month > 12:
                         year += 1
                         month -= 12
                     start = (year * 100) + month
                 if not charge:
                     continue
                 # Create Transactions
                 nxt += 1
                 self.ref = "RC%03i%04i" % (num, nxt)
                 self.detail = textFormat(dct[col.index("dct_detail")], 73)
                 self.amnt = dct[col.index("dct_amnt")]
                 self.vmnt = round(self.amnt * self.vatrte / 100, 2)
                 self.tmnt = float(ASD(self.amnt) + ASD(self.vmnt))
                 tot_val = float(ASD(tot_val) + ASD(self.amnt))
                 tot_vat = float(ASD(tot_vat) + ASD(self.vmnt))
                 # Debtors (drstrn)
                 self.sql.insRec("drstrn", data=[self.opts["conum"],
                     self.chain, self.acno, 1, self.ref, self.bh.batno,
                     self.trdt, self.ref2, self.tmnt, self.vmnt,
                     self.bh.curdt, self.detail[0], vat, "Y",
                     self.opts["capnm"], self.sysdtw, 0])
                 if self.inv == "Y":
                     # Create Invoice
                     self.doInvoice()
                 # VAT (ctlvtf)
                 amnt = float(ASD(0) - ASD(self.amnt))
                 vmnt = float(ASD(0) - ASD(self.vmnt))
                 data = [self.opts["conum"], vat, "O", self.bh.curdt,
                     "D", 1, self.bh.batno, self.ref, self.trdt, self.acno,
                     self.detail[0], amnt, vmnt, 0, self.opts["capnm"],
                     self.sysdtw, 0]
                 self.sql.insRec("ctlvtf", data=data)
             if self.glint == "Y":
                 ref = "RC%07i" % num
                 # Update Debtors Control
                 amnt = float(ASD(tot_val) + ASD(tot_vat))
                 data = (self.opts["conum"], self.drsctl, self.bh.curdt,
                     self.trdt, 1, ref, self.bh.batno, amnt, 0, desc,
                     "", "", 0, self.opts["capnm"], self.sysdtw, 0)
                 self.sql.insRec("gentrn", data=data)
                 # Update Sales Account
                 amnt = float(ASD(0) - ASD(tot_val))
                 data = (self.opts["conum"], glac, self.bh.curdt, self.trdt,
                     1, ref, self.bh.batno, amnt, 0, desc, "", "", 0,
                     self.opts["capnm"], self.sysdtw, 0)
                 self.sql.insRec("gentrn", data=data)
                 amnt = float(ASD(0) - ASD(tot_vat))
                 if amnt:
                     # Update VAT Control
                     data = (self.opts["conum"], self.vatctl, self.bh.curdt,
                         self.trdt, 1, ref, self.bh.batno, amnt, 0, desc,
                         "", "", 0, self.opts["capnm"], self.sysdtw, 0)
                     self.sql.insRec("gentrn", data=data)
             # Update Recurring Charge (drsrcm)
             self.sql.updRec("drsrcm", cols=["dcm_last"],
                 data=[self.bh.curdt], where=[("dcm_cono", "=",
                 self.opts["conum"]), ("dcm_num", "=", num), ("dcm_freq",
                 "=", self.freq)])
         self.opts["mf"].dbm.commitDbase()
         if self.inv == "Y" and self.df.repeml[1] == "N":
             self.doPrint()
     self.opts["mf"].closeLoop()
コード例 #19
0
 def doEnd(self):
     self.df.closeProcess()
     col = [
         "mlm_memno", "mlm_surname", "mlm_names", "mlm_payplan", "mlc_code"
     ]
     whr = [("mlm_cono", "=", self.opts["conum"]), ("mlm_state", "=", "A")]
     if self.plan == "N":
         whr.append(("mlm_payplan", "=", "N"))
     whr.extend([("mlc_cono=mlm_cono", ), ("mlc_memno=mlm_memno", ),
                 ("mlc_type", "=", "B")])
     grp = "mlm_memno, mlm_surname, mlm_names, mlm_payplan, mlc_code"
     if self.sort == "N":
         odr = "mlm_memno"
     else:
         odr = "mlm_surname"
     sp = SplashScreen(self.opts["mf"].body,
                       "Preparing Report ... Please Wait")
     recs = self.sql.getRec(tables=["memmst", "memcat"],
                            cols=col,
                            where=whr,
                            group=grp,
                            order=odr)
     sp.closeSplash()
     if not recs:
         self.opts["mf"].closeLoop()
         return
     p = ProgressBar(self.opts["mf"].body,
                     typ="Generating the Report",
                     mxs=len(recs),
                     esc=True)
     data = []
     for num, rec in enumerate(recs):
         p.displayProgress(num)
         if p.quit:
             break
         whr = [("mlt_cono", "=", self.opts["conum"]),
                ("mlt_memno", "=", rec[0])]
         trn = getTrn(self.opts["mf"].dbm, "mem", whr=whr, zer="N")
         bal = 0
         inv = 0
         for t in trn[1]:
             c = trn[0]
             bal = float(ASD(bal) + ASD(t[c.index("mlt_tramt")]))
             if t[c.index("mlt_type")] == 1 and \
                     t[c.index("mlt_curdt")] >= self.s_per:
                 inv = float(ASD(inv) + ASD(t[c.index("mlt_tramt")]))
         if not bal or bal < inv:
             continue
         cat = self.sql.getRec(tables=["memctc", "memctp"],
                               cols=["mcc_desc", "mcp_rate_01"],
                               where=[("mcc_cono", "=", self.opts["conum"]),
                                      ("mcc_type", "=", "B"),
                                      ("mcc_code", "=", rec[4]),
                                      ("mcp_cono=mcc_cono", ),
                                      ("mcp_type=mcc_type", ),
                                      ("mcp_code=mcc_code", )],
                               order="mcp_date desc",
                               limit=1)
         if not cat or bal < cat[1]:
             continue
         rec[1] = "%s, %s" % (rec[1], rec[2])
         del rec[2]
         rec[3] = cat[0]
         rec.append(cat[1])
         rec.append(inv)
         rec.append(bal)
         data.append(rec)
     p.closeProgress()
     if p.quit:
         self.opts["mf"].closeLoop()
         return
     name = self.__class__.__name__
     head = ["Members Suspension Report"]
     cols = [["a", "NA", 7, "Mem-No", "y"], ["b", "NA", 50, "Name", "y"],
             ["d", "UA", 1, "P", "y"],
             ["c", "NA", 30, "Active-Category", "y"],
             ["e", "SD", 13.2, "Subscription", "y"],
             ["f", "SD", 13.2, "Tot-Invoiced", "y"],
             ["g", "SD", 13.2, "Tot-Balance", "y"]]
     rep = RepPrt(self.opts["mf"],
                  conum=self.opts["conum"],
                  conam=self.opts["conam"],
                  name=name,
                  tables=data,
                  heads=head,
                  cols=cols,
                  gtots=("e", "f", "g"),
                  ttype="D",
                  repprt=self.df.repprt,
                  repeml=self.df.repeml,
                  fromad=self.fromad)
     if not rep.xits:
         ask = askChoice(self.opts["mf"].body,
                         "Suspend Members",
                         "Select Members to Suspend",
                         butt=(("All", "A"), ("Some", "S"), ("None", "N")),
                         default="None")
         if ask in ("A", "S"):
             if ask == "S":
                 cols = ["memno", "name"]
                 dics = {
                     "memno": ("", 0, "UI", 6, "Member Number", "Mem-No"),
                     "name": ("", 1, "NA", 50, "Member Name", "Name")
                 }
                 newd = []
                 for dat in data:
                     newd.append((dat[0], dat[1]))
                 data = getSingleRecords(self.opts["mf"],
                                         "",
                                         cols,
                                         where=newd,
                                         ttype="D",
                                         dic=dics)
             if data:
                 p = ProgressBar(self.opts["mf"].body,
                                 typ="Suspending Members",
                                 mxs=len(data))
                 for num, rec in enumerate(data):
                     p.displayProgress(num)
                     self.sql.updRec("memmst",
                                     cols=["mlm_state", "mlm_sdate"],
                                     data=["S", self.sysdtw],
                                     where=[("mlm_cono", "=",
                                             self.opts["conum"]),
                                            ("mlm_memno", "=", rec[0])])
                     self.sql.insRec("memsta",
                                     data=[
                                         self.opts["conum"], rec[0], "S",
                                         self.sysdtw, self.opts["capnm"],
                                         self.sysdtw, 0
                                     ])
                 self.opts["mf"].dbm.commitDbase()
     p.closeProgress()
     self.opts["mf"].closeLoop()
コード例 #20
0
 def printReport(self):
     if self.seltab == "X":
         tabs = getSingleRecords(self.opts["mf"],
                                 "ftable", ("ft_tabl", "ft_desc"),
                                 where=[("ft_seq", "=", 1)])
     else:
         whr = [("ft_seq", "=", 1)]
         if self.seltab == "S":
             whr.append(("ft_tabl", "like", self.sys.lower() + "%"))
         tabs = self.sql.getRec("ftable",
                                cols=["ft_tabl", "ft_desc"],
                                where=whr,
                                order="ft_tabl")
     if not tabs:
         return
     self.fpdf = MyFpdf(name=self.__class__.__name__, head=80)
     self.pgnum = 0
     p = ProgressBar(self.opts["mf"].body, mxs=len(tabs), esc=True)
     for num, tab in enumerate(tabs):
         p.displayProgress(num)
         if p.quit:
             break
         recs = self.sql.getRec("ffield",
                                where=[("ff_tabl", "=", tab[0])],
                                order="ff_seq")
         if not recs:
             continue
         self.doHeading("F", tab[0])
         for rec in recs:
             a = CCD(rec[1], "UI", 3).disp
             b = CCD(rec[2], "NA", 20).disp
             c = CCD(rec[3], "NA", 2).disp
             d = CCD(rec[4], "UD", 6.1).disp
             e = CCD(rec[5], "NA", 30).disp
             f = CCD(rec[6], "NA", 30).disp
             self.fpdf.drawText("%3s %-20s %2s %6s %-30s %-30s" % \
                 (a, b, c, d, e, f))
         recs = self.sql.getRec("ftable",
                                where=[("ft_tabl", "=", tab[0])],
                                order="ft_seq")
         if not recs:
             continue
         self.doHeading("I", tab[0])
         for rec in recs:
             a = CCD(rec[1], "NA", 20).disp
             b = CCD(rec[2], "UI", 1).disp
             c = CCD(rec[3], "NA", 1).disp
             d = CCD(rec[4], "NA", 10).disp
             e = CCD(rec[5], "NA", 10).disp
             f = CCD(rec[6], "NA", 10).disp
             g = CCD(rec[7], "NA", 10).disp
             h = CCD(rec[8], "NA", 10).disp
             i = CCD(rec[9], "NA", 10).disp
             j = CCD(rec[10], "NA", 10).disp
             self.fpdf.drawText("%-20s %2s %1s %-10s %-10s %-10s %-10s "\
                 "%-10s %-10s %-10s" % (a, b, c, d, e, f, g, h, i, j))
     p.closeProgress()
     if self.fpdf.page and not p.quit:
         pdfnam = getModName(self.opts["mf"].rcdic["wrkdir"],
                             self.__class__.__name__,
                             0,
                             ext="pdf")
         self.fpdf.output(pdfnam, "F")
         doPrinter(mf=self.opts["mf"],
                   conum=1,
                   pdfnam=pdfnam,
                   header="Table Fields and Indexes",
                   repprt=self.df.repprt,
                   repeml=self.df.repeml)
コード例 #21
0
 def doEnd(self):
     if "args" in self.opts:
         self.cancel = "Y"
         self.tname = self.stpl
         self.whole = "A"
         self.snum = 0
         self.enum = 0
         if len(self.opts["args"]) == 1:
             self.repprt = ["N", "V", "view"]
             self.repeml = ["N", "N", "", "", "Y"]
         else:
             self.repprt = self.opts["args"][1]
             self.repeml = self.opts["args"][2]
     else:
         self.df.closeProcess()
         self.repprt = self.df.repprt
         self.repeml = self.df.repeml
         if not self.enum:
             self.enum = 9999999
     self.emadd = self.repeml[2]
     tab = ["bkmmst"]
     whr = [("bkm_cono", "=", self.opts["conum"])]
     if self.cancel == "N":
         whr.append(("bkm_state", "<>", "X"))
     odr = "bkm_number"
     if self.whole == "A":
         if type(self.opts["args"][0]) == int:
             whr.append(("bkm_number", "=", self.opts["args"][0]))
         else:
             whr.append(("bkm_number", "in", self.opts["args"][0]))
         recs = self.sql.getRec("bkmmst", where=whr, order=odr)
     elif self.whole == "S":
         tab.append("bkmcon")
         col = ["bkm_number", "bkc_sname", "bkc_names"]
         whr.extend([("bkc_cono=bkm_cono", ), ("bkc_ccode=bkm_ccode", )])
         dic = {}
         for c in col:
             for t in tab:
                 d = getattr(self.sql, "%s_dic" % t)
                 if c in d:
                     dic[c] = d[c]
         data = self.sql.getRec(tables=tab, cols=col, where=whr, order=odr)
         data = getSingleRecords(self.opts["mf"],
                                 tab,
                                 col,
                                 dic=dic,
                                 where=data,
                                 ttype="D")
         recs = []
         for dat in data:
             acc = self.sql.getRec("bkmmst",
                                   where=[("bkm_cono", "=",
                                           self.opts["conum"]),
                                          ("bkm_number", "=", dat[0])])
             recs.append(acc[0])
     else:
         if self.whole == "R":
             whr.extend([("bkm_number", ">=", self.snum),
                         ("bkm_number", "<=", self.enum)])
         recs = self.sql.getRec("bkmmst", where=whr, order=odr)
     if not recs:
         showError(self.opts["mf"].body, "Error", "No Bookings Selected")
     else:
         self.form = DrawForm(self.opts["mf"].dbm,
                              self.tname,
                              wrkdir=self.opts["mf"].rcdic["wrkdir"])
         self.doLoadStatic()
         self.form.doNewDetail()
         p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
         for num, rec in enumerate(recs):
             p.displayProgress(num)
             if p.quit:
                 break
             self.doProcess(rec)
         p.closeProgress()
         if p.quit or not self.form.page:
             pass
         elif self.repeml[1] == "N" or self.emadd:
             self.repeml[2] = self.emadd
             self.doPrint()
     if "wait" not in self.opts:
         self.opts["mf"].closeLoop()
コード例 #22
0
 def doEnd(self):
     self.df.closeProcess()
     dat = []
     tps = []
     if self.drawn == "Y":
         tps.extend(["B", "D"])
     if self.bounce == "Y":
         tps.append("A")
     if self.teams == "Y":
         tps.append("C")
     where = [("bdt_cono", "=", self.opts["conum"]),
              ("bdt_tab", "<", self.nstart), ("bdt_flag", "in", tps)]
     if self.start.work:
         where.append(("bdt_date", ">=", self.start.work))
     if self.end.work:
         where.append(("bdt_date", "<=", self.end.work))
     whr = copyList(where)
     if self.whole == "N":
         tab = []
         rec = getSingleRecords(self.opts["mf"],
                                "bwldrt", ("bdt_tab", "bdt_name"),
                                head=["X", "Tab-No", "Name"],
                                where=whr,
                                group="bdt_tab, bdt_name",
                                order="bdt_name",
                                selcol="bdt_name")
         if not rec:
             self.opts["mf"].closeLoop()
             return
         for r in rec:
             tab.append(r[1])
         whr.append(("bdt_tab", "in", tab))
     odr = "bdt_name, bdt_date"
     rec = self.sql.getRec("bwldrt", where=whr, order=odr)
     c = self.sql.bwldrt_col
     l = ""
     self.dic = {}
     for r in rec:
         dte = CCD(r[c.index("bdt_date")], "D1", 10)
         tim = r[c.index("bdt_time")]
         bdm = self.sql.getRec("bwldrm",
                               where=[("bdm_cono", "=", self.opts["conum"]),
                                      ("bdm_date", "=", dte.work),
                                      ("bdm_time", "=", tim)],
                               limit=1)
         if bdm[self.sql.bwldrm_col.index("bdm_dhist")] == "N":
             continue
         self.clash = ""
         side = [["", ""], ["", ""], ["", ""], ["", ""]]
         self.tab = r[c.index("bdt_tab")]
         if self.tab not in self.dic:
             self.dic[self.tab] = []
         nam = self.getName(self.tab)
         pos = (0 - (r[c.index("bdt_pos")] - 4))
         side[pos] = ["", nam]
         for x in range(1, 4):
             tm = self.getName(r[c.index("bdt_team%s" % x)])
             if not tm:
                 continue
             if self.clash:
                 cl = "X"
             else:
                 cl = ""
             pos = (0 - (r[c.index("bdt_pos%s" % x)] - 4))
             side[pos] = [cl, tm]
         if self.tab != l:
             if l:
                 dat.append([])
             d = [nam]
         else:
             d = [""]
         d.extend([dte.disp, side[0], side[1], side[2], side[3]])
         dat.append(d)
         l = self.tab
     self.fpdf = MyFpdf(name=self.__class__.__name__, head=120, auto=True)
     self.fpdf.header = self.pageHeading
     if self.tots == "N":
         # Print teams
         self.heading = "main"
         self.fpdf.add_page()
         cwth = self.fpdf.get_string_width("X")
         for d in dat:
             if not d:
                 self.fpdf.drawText(txt="", w=0, h=5, border=0, ln=1)
             else:
                 self.fpdf.cell(w=cwth * 21, h=5, txt=d[0], border=0, ln=0)
                 self.fpdf.cell(w=cwth * 11, h=5, txt=d[1], border=0, ln=0)
                 if d[2][0]:
                     self.fpdf.cell(w=cwth * 21,
                                    h=5,
                                    txt=d[2][1],
                                    border=1,
                                    ln=0)
                 else:
                     self.fpdf.cell(w=cwth * 21,
                                    h=5,
                                    txt=d[2][1],
                                    border=0,
                                    ln=0)
                 if d[3][0]:
                     self.fpdf.cell(w=cwth * 21,
                                    h=5,
                                    txt=d[3][1],
                                    border=1,
                                    ln=0)
                 else:
                     self.fpdf.cell(w=cwth * 21,
                                    h=5,
                                    txt=d[3][1],
                                    border=0,
                                    ln=0)
                 if d[4][0]:
                     self.fpdf.cell(w=cwth * 21,
                                    h=5,
                                    txt=d[4][1],
                                    border=1,
                                    ln=0)
                 else:
                     self.fpdf.cell(w=cwth * 21,
                                    h=5,
                                    txt=d[4][1],
                                    border=0,
                                    ln=0)
                 if d[5][0]:
                     self.fpdf.cell(w=cwth * 21,
                                    h=5,
                                    txt=d[5][1],
                                    border=1,
                                    ln=1)
                 else:
                     self.fpdf.cell(w=cwth * 21,
                                    h=5,
                                    txt=d[5][1],
                                    border=0,
                                    ln=1)
     if self.whole == "Y" or self.tots == "Y":
         # Print top attendees
         self.heading = "summary"
         whr = copyList(where)
         whr.append(("bdt_tab", "<", self.nstart))
         self.cnt = self.sql.getRec("bwldrt",
                                    cols=["count(*) as count", "bdt_tab"],
                                    where=whr,
                                    group="bdt_tab",
                                    order="count desc, bdt_name")
         while self.cnt:
             self.fpdf.add_page()
             if len(self.cnt) < 26:
                 left = copyList(self.cnt)
                 self.cnt = []
                 right = []
             else:
                 left = self.cnt[:25]
                 self.cnt = self.cnt[25:]
                 if len(self.cnt) < 26:
                     right = copyList(self.cnt)
                     self.cnt = []
                 else:
                     right = self.cnt[:25]
                     self.cnt = self.cnt[25:]
             left = left + (25 - len(left)) * [["", ""]]
             right = right + (25 - len(right)) * [["", ""]]
             self.fpdf.set_font("Arial", "", 15)
             cwth = self.fpdf.get_string_width("X")
             for x in range(25):
                 if left[x][1]:
                     left[x][1] = self.getName(left[x][1], cls=False)
                 if right[x][1]:
                     right[x][1] = self.getName(right[x][1], cls=False)
                 self.fpdf.cell(cwth * 5, 8, "%5s " % left[x][0], 0, 0, "R")
                 self.fpdf.cell(cwth * 24, 8, left[x][1], 0, 0, "L")
                 self.fpdf.cell(cwth * 5, 8, "%5s " % right[x][0], 0, 0,
                                "R")
                 self.fpdf.cell(cwth * 20, 8, right[x][1], 0, 1, "L")
     pdfnam = getModName(self.opts["mf"].rcdic["wrkdir"],
                         self.__class__.__name__,
                         self.opts["conum"],
                         ext="pdf")
     self.fpdf.output(pdfnam, "F")
     head = "Tabs Draw Summary for the period %s to %s" % (self.start.disp,
                                                           self.end.disp)
     doPrinter(mf=self.opts["mf"],
               conum=self.opts["conum"],
               pdfnam=pdfnam,
               header=head,
               repprt=self.df.repprt,
               fromad=self.fromad,
               repeml=self.df.repeml)
     self.opts["mf"].closeLoop()
コード例 #23
0
 def doEnd(self):
     self.df.closeProcess()
     self.emldf = self.df.repeml[2]
     self.error = False
     self.doWriteHeader()
     if self.error:
         self.opts["mf"].dbm.rollbackDbase()
         self.closeProcess()
         return
     if self.df.repeml[1] == "N":
         self.printSetup()
     if not self.eemp:
         self.eemp = 99999
     if self.other == "Y":
         self.doSelCoy()
         if self.con == "X":
             return
         whr = [("wgm_cono", "in", tuple(self.con))]
     else:
         whr = [("wgm_cono", "=", self.opts["conum"])]
     whr.extend([("wgm_empno", "between", self.semp, self.eemp),
                 ("wgm_paye", "=", "Y"),
                 ("wgm_start", "<=", self.edate.work),
                 ("(", "wgm_term", "=", 0, "or", "wgm_term", ">",
                  self.sdate.work, ")")])
     if self.whole == "S":
         recs = getSingleRecords(self.opts["mf"],
                                 "wagmst", ("wgm_empno", "wgm_sname"),
                                 where=whr)
     else:
         recs = self.sql.getRec("wagmst",
                                where=whr,
                                order="wgm_cono, wgm_empno")
     if not recs:
         showError(self.opts["mf"].body, "Error", "No Employees Selected")
     else:
         p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
         for num, rec in enumerate(recs):
             p.displayProgress(num)
             if p.quit:
                 break
             self.doProcess(rec)
             if self.error:
                 break
         p.closeProgress()
         if p.quit or self.error:
             self.opts["mf"].dbm.rollbackDbase()
         else:
             # Employer Total
             total = CCD(self.totamnt, "UD", 15.2)
             self.irp5fl.write('6010,%015i,6020,%015i,6030,%015.2f,9999\n' \
                 % (self.totrecs, self.totcode, total.work))
             self.irp5fl.close()
             self.doCheckTotals()
             if self.error:
                 self.opts["mf"].dbm.rollbackDbase()
             else:
                 if self.preview == "Y":
                     self.opts["mf"].dbm.rollbackDbase()
                 else:
                     self.opts["mf"].dbm.commitDbase()
                 if self.df.repeml[1] == "N" or self.emldf:
                     self.df.repeml[2] = self.emldf
                     self.doPrint()
     self.closeProcess()
コード例 #24
0
ファイル: bk2010.py プロジェクト: paulmalherbe/Tartan
 def doEnd(self):
     self.df.closeProcess()
     tab = ["bkmmst", "bkmcon", "bkmrtt"]
     col = ["bkm_number", "bkc_sname", "bkc_names", "bkm_arrive"]
     whr = [("bkm_cono", "=", self.opts["conum"])]
     if self.bkmqry == "N":
         whr.append(("bkm_state", "in", ("C", "S")))
     else:
         whr.append(("bkm_state", "in", ("C", "Q", "S")))
     whr.extend([("bkm_arrive", "between", self.sdate, self.edate),
                 ("bkc_cono=bkm_cono", ), ("bkc_ccode=bkm_ccode", ),
                 ("brt_cono=bkm_cono", ), ("brt_number=bkm_number", ),
                 ("brt_invno", "=", 0)])
     grp = "bkm_number, bkm_arrive, bkm_ccode, bkc_sname, bkc_names"
     odr = "bkm_arrive, bkm_ccode"
     dic = {}
     for c in col:
         for t in tab:
             d = getattr(self.sql, "%s_dic" % t)
             if c in d:
                 dic[c] = d[c]
     if self.bkmdoc == "S":
         recs = self.sql.getRec(tables=tab,
                                cols=col,
                                where=whr,
                                group=grp,
                                order=odr)
         recs = getSingleRecords(self.opts["mf"],
                                 tab,
                                 col,
                                 dic=dic,
                                 where=recs,
                                 ttype="D")
     else:
         recs = self.sql.getRec(tables=tab,
                                cols=col,
                                where=whr,
                                group=grp,
                                order=odr)
     docs = []
     for rec in recs:
         # Raise the Invoice
         bkno = rec[0]
         trdt = rec[3]
         incamt = 0
         vatamt = 0
         curdt = int(trdt / 100)
         batno = "B%s" % curdt
         gls = {}
         trns = self.sql.getRec("bkmrtt",
                                where=[("brt_cono", "=",
                                        self.opts["conum"]),
                                       ("brt_number", "=", bkno),
                                       ("brt_invno", "=", 0)])
         if not trns:
             continue
         invno = self.getRef(bkno)
         for trn in trns:
             utyp = trn[self.sql.bkmrtt_col.index("brt_utype")]
             ucod = trn[self.sql.bkmrtt_col.index("brt_ucode")]
             rcod = trn[self.sql.bkmrtt_col.index("brt_rcode")]
             rbas = trn[self.sql.bkmrtt_col.index("brt_rbase")]
             quan = trn[self.sql.bkmrtt_col.index("brt_quant")]
             rate = trn[self.sql.bkmrtt_col.index("brt_arate")]
             days = trn[self.sql.bkmrtt_col.index("brt_bdays")]
             umst = self.sql.getRec("bkmunm",
                                    where=[("bum_cono", "=",
                                            self.opts["conum"]),
                                           ("bum_btyp", "=", utyp),
                                           ("bum_code", "=", ucod)],
                                    limit=1)
             vatc = umst[self.sql.bkmunm_col.index("bum_vatc")]
             if not vatc:
                 vatc = self.ctm_taxdf
             vrte = getVatRate(self.sql, self.opts["conum"], vatc, trdt)
             if vrte is None:
                 vrte = 0.0
             if rbas == "A":
                 inca = quan * days * rate
             elif rbas == "B":
                 inca = quan * rate
             elif rbas == "C":
                 inca = days * rate
             else:
                 inca = rate
             vata = round(inca * vrte / (100 + vrte), 2)
             exca = float(ASD(inca) - ASD(vata))
             incamt = float(ASD(incamt) + ASD(inca))
             vatamt = float(ASD(vatamt) - ASD(vata))
             if self.glint == "Y":
                 slsa = umst[self.sql.bkmunm_col.index("bum_slsa")]
                 if slsa not in gls:
                     gls[slsa] = [0, 0, vatc]
                 gls[slsa][0] = float(ASD(gls[slsa][0]) - ASD(exca))
                 gls[slsa][1] = float(ASD(gls[slsa][1]) - ASD(vata))
             data = [
                 self.opts["conum"], bkno, 2, invno, batno, trdt, inca,
                 vata, curdt,
                 "Booking %s-%s Raised" % (utyp, ucod), vatc, "",
                 self.opts["capnm"], self.sysdtw, 0
             ]
             self.sql.insRec("bkmtrn", data=data)
             self.sql.updRec("bkmrtt",
                             cols=["brt_vrate", "brt_invno", "brt_invdt"],
                             data=[vrte, invno, trdt],
                             where=[("brt_cono", "=", self.opts["conum"]),
                                    ("brt_number", "=", bkno),
                                    ("brt_utype", "=", utyp),
                                    ("brt_ucode", "=", ucod),
                                    ("brt_rcode", "=", rcod)])
             if vata:
                 exc = float(ASD(0) - ASD(exca))
                 vat = float(ASD(0) - ASD(vata))
                 data = [
                     self.opts["conum"], vatc, "O", curdt, "B", 1, batno,
                     invno, trdt, bkno,
                     "Booking %s" % bkno, exc, vat, 0, self.opts["capnm"],
                     self.sysdtw, 0
                 ]
                 self.sql.insRec("ctlvtf", data=data)
         if self.glint == "Y":
             data = [
                 self.opts["conum"], self.bkmctl, curdt, trdt, 1, invno,
                 batno, incamt, 0,
                 "Booking %s" % bkno, "", "", 0, self.opts["capnm"],
                 self.sysdtw, 0
             ]
             self.sql.insRec("gentrn", data=data)
             for acc in gls:
                 data = [
                     self.opts["conum"], acc, curdt, trdt, 1, invno, batno,
                     gls[acc][0], gls[acc][1],
                     "Booking %s" % bkno, gls[acc][2], "", 0,
                     self.opts["capnm"], self.sysdtw, 0
                 ]
                 self.sql.insRec("gentrn", data=data)
                 if gls[acc][1]:
                     data = [
                         self.opts["conum"], self.vatctl, curdt, trdt, 1,
                         invno, batno, gls[acc][1], 0,
                         "Booking %s" % bkno, "", "", 0, self.opts["capnm"],
                         self.sysdtw, 0
                     ]
                     self.sql.insRec("gentrn", data=data)
         if invno not in docs:
             docs.append(invno)
     self.opts["mf"].dbm.commitDbase()
     if docs:
         PrintBookingInvoice(self.opts["mf"],
                             self.opts["conum"],
                             self.opts["conam"],
                             "I",
                             docs,
                             tname=self.tname,
                             repprt=self.df.repprt,
                             repeml=self.df.repeml,
                             copy="O")
     self.doExit()