Пример #1
0
 def grandTotal(self):
     self.totind = "Y"
     self.pageHeading()
     tot = [0,0,0,0]
     for x, t in enumerate(rttrtp):
         qt = CCD(self.gqt[x], "SI", 8)
         am = CCD(self.gam[x], "SD", 13.2)
         vt = CCD(self.gvt[x], "SD", 13.2)
         if self.totsonly == "Y":
             self.fpdf.drawText("%-39s %s %s %s" % \
             (t[1], qt.disp, am.disp, vt.disp))
         else:
             self.fpdf.drawText("%-26s %s %s %s" % \
             (t[1], qt.disp, am.disp, vt.disp))
         tot[0] = tot[0] + qt.work
         tot[1] = float(ASD(tot[1]) + ASD(am.work))
         tot[3] = float(ASD(tot[3]) + ASD(vt.work))
     self.fpdf.drawText()
     qt = CCD(tot[0], "SI", 8)
     am = CCD(tot[1], "SD", 13.2)
     vt = CCD(tot[3], "SD", 13.2)
     if self.totsonly == "Y":
         self.fpdf.drawText("%-39s %s %s %s" % \
         ("Grand Totals", qt.disp, am.disp, vt.disp))
     else:
         self.fpdf.drawText("%-26s %s %s %s" % \
         ("Grand Totals", qt.disp, am.disp, vt.disp))
     self.fpdf.drawText()
Пример #2
0
 def doGenInt(self, cono, amnt):
     # General Ledger Transaction (Intercompany From)
     acc = self.sql.getRec("genint",
                           cols=["cti_acno"],
                           where=[("cti_cono", "=", self.opts["conum"]),
                                  ("cti_inco", "=", cono)],
                           limit=1)
     if not acc:
         showError(
             self.opts["mf"].body, "Inter Company Error",
             "Invalid Account %s for Company %s in %s" %
             (acc, cono, self.opts["conum"]))
         return "err"
     self.doGenTrn(self.opts["conum"], acc[0], amnt)
     # General Ledger Transaction (Intercompany To)
     acc = self.sql.getRec("genint",
                           cols=["cti_acno"],
                           where=[("cti_cono", "=", cono),
                                  ("cti_inco", "=", self.opts["conum"])],
                           limit=1)
     if not acc:
         showError(
             self.opts["mf"].body, "Inter Company Error",
             "Invalid Account %s for Company %s in %s" %
             (acc, self.opts["conum"], cono))
         return "err"
     amnt = float(ASD(0) - ASD(amnt))
     self.doGenTrn(cono, acc[0], amnt)
Пример #3
0
 def doTotal(self, tdc):
     for c in self.form.total:
         t = "%s_T00" % c
         if c in self.form.newdic:
             self.form.doDrawDetail(self.form.newdic[c])
         elif t in self.form.newdic:
             self.form.doDrawDetail(self.form.newdic[t])
         d = "%s_C00" % c
         if d in self.form.newdic:
             line = self.form.newdic[d]
             if c == "total_payment":
                 line[tdc.index("tpd_text")] = self.pay
             self.form.doDrawDetail(line)
     if self.ptype == "E" and self.bestac:
         value = int(round((self.pay * 100), 0))
         self.export.write("%1s%4s%06u%-7s%019u%1s%1s%011u%-20s%10s"\
             "%-15s%1s\r\n" % (2, self.bestac, self.bibt, self.acno,
             int(self.bacc), "", "1", value, self.bname, "",
             self.opts["conam"][:15], ""))
         self.etotal = float(ASD(self.etotal) + ASD(self.pay))
         # Create Payment and Ageing Transaction
         p = float(ASD(0) - ASD(self.pay))
         self.sql.insRec("crstrn",
                         data=[
                             self.opts["conum"], self.acno, 5, self.refno,
                             self.batno, self.paydtw, "", p, 0.0, 0.0,
                             self.curdt, 0, "", 0.0, "Electronic Payment",
                             "", "", self.opts["capnm"], self.sysdtw, 0
                         ])
         self.sql.insRec("crsage",
                         data=[
                             self.opts["conum"], self.acno, 5, self.refno,
                             self.curdt, 5, self.refno, p, 0
                         ])
Пример #4
0
 def printBody(self, wlt):
     for trn in wlt:
         dat = CCD(trn[0], "d1", 10)
         bat = CCD(trn[3], "Na", 7)
         typ = CCD(trn[1], "UI", 2)
         ref = CCD(trn[2], "Na", 9)
         per = CCD(trn[4], "UD", 7.2)
         amt = CCD(trn[5], "SD", 13.2)
         ded = CCD(trn[6], "SD", 13.2)
         des = CCD(trn[7], "NA", 30)
         if self.fdate and dat.work < self.fdate:
             continue
         if dat.work > self.ldate:
             continue
         if self.pglin > self.fpdf.lpp:
             self.printHeader()
             bal = CCD(self.obal, "SD", 13.2)
             if bal.work:
                 mess = "%-69s%s%-30s" % ("", bal.disp, " Brought Forward")
                 self.fpdf.drawText(mess)
                 self.pglin += 1
         self.obal = float(ASD(self.obal) + ASD(float(amt.work)))
         bal = CCD(self.obal, "SD", 13.2)
         mess = "%s %s %s %s %s %s %s %s %s" % \
             (dat.disp, sltrtp[typ.work - 1][0], ref.disp, bat.disp,
             per.disp, amt.disp, ded.disp, bal.disp, des.disp)
         self.fpdf.drawText(mess)
         self.pglin += 1
Пример #5
0
 def doTrnMov(self, frt, pag, r, c, p, i, w):
     if type(w) == list:
         w = w[0] + 1
     # Do some tests to see if not new again or already sold etc.
     if w == 4 and self.opts["rtn"] != 3:
         return "Depreciation Only Allowed with Journal Entries"
     if self.opts["rtn"] == 1 and w not in (1, 2):
         return "Invalid Choice For Payment"
     if self.opts["rtn"] == 2 and w not in (5, ):
         return "Invalid Choice For Receipt"
     if w == 1 and self.buydt:
         return "Asset Already Purchased"
     if w in (2, 3, 4, 5) and self.seldt:
         return "Asset Already Sold or Written Off"
     if w in (2, 3, 4, 5) and not self.buydt:
         return "Asset Not Yet Purchased"
     self.df.loadEntry(frt, pag, p, data=w)
     self.trnmov = w
     if self.trnmov == 3:
         bal = self.sql.getRec("asstrn",
                               cols=["sum(ast_amt1)", "sum(ast_amt2)"],
                               where=[("ast_cono", "=", self.opts["conum"]),
                                      ("ast_group", "=", self.group),
                                      ("ast_code", "=", self.code)],
                               limit=1)
         self.coyamt = float(ASD(0) - ASD(bal[0]))
         self.df.loadEntry(frt, pag, p + 1, data=self.coyamt)
         self.roramt = float(ASD(0) - ASD(bal[0]))
         self.df.loadEntry(frt, pag, p + 2, data=self.roramt)
         self.vatcode = ""
         self.trnvat = 0
         return "sk4"
Пример #6
0
 def loadBalances(self):
     rtl = 0
     rec = 0
     pmt = 0
     jnl = 0
     bal = self.sql.getRec("rtltrn",
                           cols=["rtt_type", "round(sum(rtt_tramt), 2)"],
                           where=[("rtt_cono", "=", self.opts["conum"]),
                                  ("rtt_code", "=", self.code),
                                  ("rtt_acno", "=", self.acno)],
                           group="rtt_type",
                           order="rtt_type")
     if bal:
         for a in bal:
             if a[0] == 1:
                 rtl = a[1]
             if a[0] == 2:
                 rec = a[1]
             if a[0] == 3:
                 pmt = a[1]
             if a[0] == 4:
                 jnl = a[1]
     bal = float(ASD(rtl) + ASD(rec) + ASD(pmt) + ASD(jnl))
     self.df.loadEntry("C", 3, 0, data=rtl)
     self.df.loadEntry("C", 3, 1, data=rec)
     self.df.loadEntry("C", 3, 2, data=pmt)
     self.df.loadEntry("C", 3, 3, data=jnl)
     self.df.loadEntry("C", 3, 4, data=bal)
     self.trn = self.sql.getRec("rtltrn",
                                where=[("rtt_cono", "=",
                                        self.opts["conum"]),
                                       ("rtt_code", "=", self.code),
                                       ("rtt_acno", "=", self.acno)],
                                order="rtt_trdt, rtt_type")
Пример #7
0
 def doProcess(self, dat):
     loc, group, code, desc, valind, vatcod = dat
     icost, bal = getCost(self.sql, self.opts["conum"], group, code,
         loc=loc, qty=1, ind="I", bal=True)
     if self.outs == "N" and not bal[0]:
         return
     if self.ccode:
         # Calculate cost price code
         cost = CCD(int(icost * 100), "UI", 9)
         ncost = " " * (9 - len(str(cost.work)))
         for x in str(cost.work):
             ncost = ncost + self.ccode[int(x)]
         lab = "%-30s %13s" % (self.df.t_disp[0][0][0], ncost)
     else:
         lab = "%-30s" % self.df.t_disp[0][0][0]
     ####################################################################
     lab = "%s\n%s %s %s" % (lab, loc, group, code)
     lab = "%s\n%s\n" % (lab, desc)
     prc = getSell(self.sql, self.opts["conum"], group, code, loc)
     price1 = CCD(prc, "UD", 9.2)
     vrte = getVatRate(self.sql, self.opts["conum"], vatcod, self.date)
     if vrte is None:
         vrte = CCD(0, "UD", 9.2)
     else:
         vrte = CCD(vrte, "UD", 9.2)
     price2 = CCD(round((price1.work * float(ASD(100) + \
         ASD(vrte.work)) / 100.0), 2), "OUD", 9.2)
     lab = "%s\n%s %s %s" % (lab, vatcod, price1.disp, price2.disp)
     self.fpdf.add_label(lab)
Пример #8
0
 def updateBatch(self, rev=False):
     if rev:
         self.bh.batqty = self.bh.batqty - 1
         self.bh.batval = float(ASD(self.bh.batval) - ASD(self.trnamt))
     else:
         self.bh.batqty = self.bh.batqty + 1
         self.bh.batval = float(ASD(self.bh.batval) + ASD(self.trnamt))
Пример #9
0
 def printReport(self, recs):
     self.pglin = 999
     p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
     self.head = "%03u %-101s" % (self.opts["conum"], self.opts["conam"])
     self.fpdf = MyFpdf(name=self.__class__.__name__, head=self.head)
     for seq, dat in enumerate(recs):
         p.displayProgress(seq)
         if p.quit:
             break
         self.acno, self.desc, acctot = self.getAccValues(dat)
         trn = self.sql.getRec("gentrn", where=[("glt_cono", "=",
             dat[0]), ("glt_acno", "=", dat[1]), ("glt_curdt", ">=",
             self.sdate.work), ("glt_curdt", "<=", self.edate.work)],
             order="glt_acno, glt_curdt, glt_trdt, glt_type, glt_refno, "\
             "glt_batch")
         if acctot or trn:
             if self.pglin == 999 or self.pages == "Y":
                 self.pageHeading()
             else:
                 self.newAccount()
         if acctot:
             w1 = CCD(acctot, "SD", 13.2)
             self.fpdf.drawText("%-10s %-9s %-3s %-7s %-30s %-13s %-13s "\
                 "%-13s" % (self.sdate.disp + "-01", "", "", "",
                 "Opening Balance", "", "", w1.disp))
             self.pglin += 1
         for acc in trn:
             trdt, refno, trtp, batch, amt, dbt, crt, detail, curdt, \
                 curmth = self.getTrnValues(acc)
             if self.pglin > self.fpdf.lpp:
                 self.pageHeading()
                 bf = CCD(acctot, "SD", 13.2)
                 if bf.work:
                     self.fpdf.drawText(
                         "%32s %-30s %27s %13s" %
                         ("", "Brought Forward", "", bf.disp))
                     self.pglin += 1
             acctot = float(ASD(acctot) + ASD(amt.work))
             w1 = CCD(acctot, "SD", 13.2)
             self.fpdf.drawText("%-10s %-9s %-3s %-7s %-30s %13s %13s %13s"\
                 % (trdt.disp, refno.disp, gltrtp[(trtp.work - 1)][0],
                 batch.disp, detail.disp, dbt.disp, crt.disp, w1.disp))
             self.pglin += 1
         if self.pages == "Y" and (acctot or trn):
             self.pglin = 999
     p.closeProgress()
     if p.quit or not self.fpdf.page:
         return
     if "args" not in self.opts or "noprint" not in self.opts["args"]:
         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,
                   repeml=self.df.repeml)
Пример #10
0
 def updateTables(self):
     # Stores Ledger Transaction
     data = [
         self.opts["conum"], self.group, self.code, self.loc, self.dte, 1,
         self.grv, self.batno, self.odr, self.qty, self.tcost, 0,
         self.curdt, self.desc, 0, "", "", "STR", self.trdis, "N",
         self.opts["capnm"], self.sysdtw, 0
     ]
     self.sql.insRec("strtrn", data=data)
     if self.glint == "N":
         return
     # General Ledger Control Transaction (Stock On Hand)
     data = [
         self.opts["conum"], self.stk_soh, self.curdt, self.dte, 5,
         self.grv, self.batno, self.tcost, 0, self.code, "N", "", 0,
         self.opts["capnm"], self.sysdtw, 0
     ]
     self.sql.insRec("gentrn", data=data)
     # General Ledger Control Transaction (Stock Suspense)
     val = float(ASD(0) - ASD(self.tcost))
     data = [
         self.opts["conum"], self.stk_susp, self.curdt, self.dte, 5,
         self.grv, self.batno, val, 0, self.code, "N", "", 0,
         self.opts["capnm"], self.sysdtw, 0
     ]
     self.sql.insRec("gentrn", data=data)
Пример #11
0
 def grandTotal(self):
     costsd = ""
     salesd = ""
     proftd = ""
     prperd = ""
     mchart = ["T", "Grand Totals"]
     for x in range(11,-1,-1):
         c = CCD(self.ctots[x], "SL", 11)
         s = CCD(self.stots[x], "SL", 11)
         prf = float(ASD(s.work) - ASD(c.work))
         prf = CCD(prf, "SL", 11)
         if s.work == 0:
             pcn = 0
         else:
             pcn = round((prf.work * 100.0 / s.work), 2)
         pcn = CCD(pcn, "SD", 11.2)
         self.ctots[x] = self.ctots[x] + c.work
         self.stots[x] = self.stots[x] + s.work
         costsd = costsd + c.disp
         salesd = salesd + s.disp
         proftd = proftd + prf.disp
         prperd = prperd + pcn.disp
         mchart.append(s.work)
     self.mchart.append(mchart)
     self.fpdf.drawText("%-3s %-6s %30s %s" % ("", "Totals", "Sales ",
         salesd))
     self.fpdf.drawText("%-34s %s %s" % ("", "Costs ", costsd))
     self.fpdf.drawText("%-34s %s %s" % ("", "Profit", proftd))
     self.fpdf.drawText("%-34s %s %s" % ("", "Prf-% ", prperd))
     self.fpdf.underLine(txt=self.head)
     self.fpdf.drawText()
Пример #12
0
 def doDisPer(self, frt, pag, r, c, p, i, w):
     self.trdis = w
     udis = round((self.ucost * self.trdis / 100), 2)
     tdis = round((self.tcost * self.trdis / 100), 2)
     self.ucost = float(ASD(self.ucost) - ASD(udis))
     self.tcost = float(ASD(self.tcost) - ASD(tdis))
     self.df.loadEntry(frt, pag, p + 1, data=self.tcost)
Пример #13
0
 def updateTables2(self):
     val = float(ASD(0) - ASD(self.allamt))
     # General Ledger Transaction (Allocation)
     data = (self.allcoy, self.genacc, self.curdt, self.trndat, self.glt,
             self.refno, self.bh.batno, val, 0.00, self.alldet, "", "", 0,
             self.opts["capnm"], self.sysdtw, 0)
     self.sql.insRec("gentrn", data=data)
     # General Ledger Transaction (Intercompany)
     if self.allcoy != self.opts["conum"]:
         # General Ledger Transaction (Intercompany From)
         acc = self.sql.getRec("genint",
                               cols=["cti_acno"],
                               where=[("cti_cono", "=", self.opts["conum"]),
                                      ("cti_inco", "=", self.allcoy)],
                               limit=1)[0]
         data = (self.opts["conum"], acc, self.curdt, self.trndat, self.glt,
                 self.refno, self.bh.batno, val, 0.00, self.alldet, "N", "",
                 0, self.opts["capnm"], self.sysdtw, 0)
         self.sql.insRec("gentrn", data=data)
         # General Ledger Transaction (Intercompany To)
         acc = self.sql.getRec("genint",
                               cols=["cti_acno"],
                               where=[("cti_cono", "=", self.allcoy),
                                      ("cti_inco", "=", self.opts["conum"])
                                      ],
                               limit=1)[0]
         val = float(ASD(0) - ASD(val))
         data = (self.allcoy, acc, self.curdt, self.trndat, self.glt,
                 self.refno, self.bh.batno, val, 0.00, self.alldet, "N", "",
                 0, self.opts["capnm"], self.sysdtw, 0)
         self.sql.insRec("gentrn", data=data)
Пример #14
0
 def exportReport(self, recs):
     p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
     expnam = getModName(self.opts["mf"].rcdic["wrkdir"],
         self.__class__.__name__, self.opts["conum"])
     self.expheads = [self.head + " %s" % self.sysdttm]
     self.expheads.append("Loans's Ledger Audit Trail for Period "\
         "%s to %s" % (self.sdatd, self.edatd))
     self.expcolsh = [self.colsh]
     self.expforms = self.forms
     self.expdatas = []
     self.gdrs = 0
     self.gcrs = 0
     for num, dat in enumerate(recs):
         p.displayProgress(num)
         if p.quit:
             p.closeProgress()
             return
         vals = self.getValues(dat)
         if not vals:
             continue
         acno, loan, batch, trtp, trdt, ref, drs, crs, desc = vals
         line = ["BODY", [trtp.work, batch.work, acno.work, loan.work,
             ref.work, trdt.work, desc.work, drs.work, crs.work]]
         self.expdatas.append(line)
         self.gdrs = float(ASD(self.gdrs) + ASD(drs.work))
         self.gcrs = float(ASD(self.gcrs) + ASD(crs.work))
     p.closeProgress()
     self.grandTotal()
     doWriteExport(xtype=self.df.repprt[1], name=expnam,
         heads=self.expheads, colsh=self.expcolsh, forms=self.expforms,
         datas=self.expdatas, rcdic=self.opts["mf"].rcdic)
Пример #15
0
 def endLon(self):
     if self.opts["rtn"] == 4:
         tramt = float(ASD(0.0) - ASD(self.lonamt))
     else:
         tramt = self.lonamt
     self.othtot = float(ASD(self.othtot) - ASD(self.lonamt))
     if self.newlon:
         # Loans Rate
         self.sql.insRec("lonrte",
                         data=[
                             self.allcoy, self.lonacc, self.lonnum,
                             self.trndat, self.newdri, self.newcri
                         ])
         # Loans Ledger Masterfile
         self.sql.insRec("lonmf2",
                         data=[
                             self.allcoy, self.lonacc, self.lonnum,
                             self.londes, self.trndat, self.lonmth,
                             self.lonpay, 0
                         ])
         self.othrtn = 2
     else:
         self.othrtn = 3
     # Loans Ledger Transaction
     data = [
         self.allcoy, self.lonacc, self.lonnum, self.bh.batno, self.othrtn,
         self.trndat, self.trnref, tramt, self.curdt, self.alldet, "",
         self.opts["capnm"], self.sysdtw, 0
     ]
     self.sql.insRec("lontrn", data=data)
     if self.othtot:
         self.df.loadEntry("T", self.lonpag, 0, data=self.othtot)
         self.df.advanceLine(self.lonpag)
     else:
         self.othvar.set(False)
Пример #16
0
 def getAccValues(self, data):
     dic = self.sql.genmst_dic
     acno = CCD(data[dic["glm_acno"][1]], "UI", 7)
     desc = CCD(str(data[dic["glm_desc"][1]]), "NA", 30)
     o = self.sql.getRec("genbal",
                         cols=["glo_cyr"],
                         where=[("glo_cono", "=", self.opts["conum"]),
                                ("glo_acno", "=", acno.work),
                                ("glo_trdt", "=", self.opts["period"][1][0])
                                ],
                         limit=1)
     if o:
         b = CCD(o[0], "SD", 13.2)
     else:
         b = CCD(0, "SD", 13.2)
     ob = b.work
     o = self.sql.getRec("gentrn",
                         cols=["round(sum(glt_tramt), 2)"],
                         where=[("glt_cono", "=", self.opts["conum"]),
                                ("glt_acno", "=", acno.work),
                                ("glt_curdt", ">=", self.s_per),
                                ("glt_curdt", "<", self.sdate.work)],
                         limit=1)
     if o and o[0]:
         b = CCD(o[0], "SD", 13.2)
     else:
         b = CCD(0, "SD", 13.2)
     acctot = float(ASD(ob) + ASD(b.work))
     return (acno, desc, acctot)
Пример #17
0
 def updateTables(self):
     if self.bh.multi == "Y":
         curdt = int(self.sdate / 100)
     else:
         curdt = self.bh.curdt
     self.sql.insRec("waglmf",
                     data=[
                         self.opts["conum"], self.empno, self.loan,
                         self.desc, self.code, self.rte, self.sdate,
                         self.ded
                     ])
     self.sql.insRec("wagltf",
                     data=[
                         self.opts["conum"], self.empno, self.loan,
                         self.bh.batno, 2, self.sdate, self.ref, self.amt,
                         self.amt, self.ded, self.rte, curdt, self.desc,
                         "N", self.opts["capnm"], self.sysdtw, 0
                     ])
     if self.glint == "N":
         return
     # General Ledger Staff Loans Control Account
     data = (self.opts["conum"], self.slnctl, curdt, self.sdate, 2,
             self.ref, self.bh.batno, self.amt, 0.00, self.name, "N", "", 0,
             self.opts["capnm"], self.sysdtw, 0)
     self.sql.insRec("gentrn", data=data)
     amt = float(ASD(0) - ASD(self.amt))
     # General Ledger Bank Account
     data = (self.opts["conum"], self.bh.acc, curdt, self.sdate, 2,
             self.ref, self.bh.batno, amt, 0.00,
             "Staff Loan - %s" % self.name, "N", "", 0, self.opts["capnm"],
             self.sysdtw, 0)
     self.sql.insRec("gentrn", data=data)
Пример #18
0
 def doEarningCode(self, trtp, trn):
     if not trtp:
         self.fpdf.setFont(style="B")
         self.fpdf.drawText("Income Sources")
         self.fpdf.drawText("Code    Description              "\
             "                        R/F-Ind         Amount")
         self.fpdf.setFont()
     # Earning Codes 3601-3617, 3651-3667, 3701-3718, 3751-3768
     # 3801-3816, 3851-3866, 3901-3922, 3951-3957
     trtp = "E"
     if trn[1] == 3601:
         rfund = self.rfund
     else:
         rfund = "N"
     if trn[1] == 3810:
         trn[4] = round((trn[4] / 3), 2)
     self.fpdf.drawText("%-4s    %-50s  %1s         %9s" % \
         (trn[1], trn[3], rfund, int(trn[4])))
     self.emprec = '%s,%04i,%015i' % (self.emprec, trn[1], int(trn[4]))
     self.totcode += trn[1]
     if trn[1] in (3602, 3604, 3609, 3612, 3703, 3705, 3709, 3714):
         # Non Taxable Income
         self.totntax = self.totntax + int(trn[4])
     else:
         if trn[2] == "O":
             # Annual Payment
             self.totannp = self.totannp + int(trn[4])
         if rfund == "Y":
             # Retirement Funding
             self.totyrfi = self.totyrfi + int(trn[4])
         else:
             self.totnrfi = self.totnrfi + int(trn[4])
         self.totincm = self.totincm + int(trn[4])
     self.totamnt = float(ASD(self.totamnt) + ASD(int(trn[4])))
     return trtp
Пример #19
0
 def printTrans(self):
     col = self.sql.rtltrn_col
     bal = 0
     for ct in self.trn:
         trdt = CCD(ct[col.index("rtt_trdt")], "D1", 10)
         refno = CCD(ct[col.index("rtt_refno")], "Na", 9)
         trtp = CCD(ct[col.index("rtt_type")], "UI", 1)
         batch = CCD(ct[col.index("rtt_batch")], "Na", 7)
         desc = CCD(ct[col.index("rtt_desc")], "NA", 30)
         tramt = ct[col.index("rtt_tramt")]
         if tramt < 0:
             debit = CCD(0, "SD", 13.2)
             credit = CCD(tramt, "SD", 13.2)
         else:
             debit = CCD(tramt, "SD", 13.2)
             credit = CCD(0, "SD", 13.2)
         bal = float(ASD(bal) + ASD(tramt))
         tot = CCD(bal, "SD", 13.2)
         taxamt = CCD(ct[col.index("rtt_taxamt")], "SD", 13.2)
         if self.pglin > self.fpdf.lpp:
             self.pageHeading()
             self.pageHeadingTrans()
         self.fpdf.drawText(
             "%s %s %s %s %s %s %s %s %s" %
             (trdt.disp, refno.disp, rttrtp[(trtp.work - 1)][0], batch.disp,
              desc.disp, debit.disp, credit.disp, tot.disp, taxamt.disp))
         self.pglin += 1
Пример #20
0
 def doDate(self, frt, pag, r, c, p, i, w):
     self.date = w
     rec = self.sql.getRec("cshana",
                           where=[("can_cono", "=", self.opts["conum"]),
                                  ("can_type", "=", "P"),
                                  ("can_date", "=", self.date)])
     if rec and self.trtp == "P":
         self.amend = True
     for rr in rec:
         self.etotal = float(ASD(self.etotal) + ASD(rr[7]))
     self.df.loadEntry(frt, pag, p + 1, data=self.etotal)
     rec = self.sql.getRec("cshana",
                           where=[("can_cono", "=", self.opts["conum"]),
                                  ("can_type", "=", "T"),
                                  ("can_date", "=", self.date)])
     if rec and self.trtp == "T":
         self.amend = True
     for rr in rec:
         self.itotal = float(ASD(self.itotal) + ASD(rr[7]))
     self.df.loadEntry(frt, pag, p + 2, data=self.itotal)
     self.rec = self.sql.getRec("cshcnt",
                                where=[("cct_cono", "=",
                                        self.opts["conum"]),
                                       ("cct_type", "=", "T"),
                                       ("cct_date", "=", self.date)],
                                limit=1)
     if self.rec and self.trtp == "C":
         self.amend = True
     if self.amend:
         return "nc"
Пример #21
0
 def printTrans(self):
     whr = [
         ("wlt_cono", "=", self.opts["conum"]),
         ("wlt_empno", "=", self.empno),
         ("wlt_loan", "=", self.loan)]
     odr = "wlt_trdt, wlt_type"
     if self.history == "N":
         whr.append(("wlt_curdt", ">=", int(self.opts["period"] / 100)))
     recs = self.sql.getRec("wagltf", where=whr, order=odr)
     for rec in recs:
         trd = CCD(rec[self.sql.wagltf_col.index("wlt_trdt")], "D1", 10)
         typ = CCD(rec[self.sql.wagltf_col.index("wlt_type")], "UI", 1)
         ref = CCD(rec[self.sql.wagltf_col.index("wlt_ref")], "Na", 9)
         bat = CCD(rec[self.sql.wagltf_col.index("wlt_batch")], "Na", 7)
         rte = CCD(rec[self.sql.wagltf_col.index("wlt_per")], "UD", 6.2)
         amt = CCD(rec[self.sql.wagltf_col.index("wlt_amt")], "SD", 13.2)
         ded = CCD(rec[self.sql.wagltf_col.index("wlt_ded")], "SD", 13.2)
         det = CCD(rec[self.sql.wagltf_col.index("wlt_desc")], "NA", 30)
         if self.pglin > self.fpdf.lpp:
             self.pageHeading()
             self.pageHeadingTrans()
         self.acctot = float(ASD(self.acctot) + ASD(amt.work))
         self.fpdf.drawText("%s %s %s %s %s %s %s %s" % (trd.disp,
             sltrtp[(typ.work - 1)][0], ref.disp, bat.disp,
             rte.disp, amt.disp, ded.disp, det.disp))
         self.pglin += 1
     self.fpdf.underLine(txt=self.head)
     b = CCD(self.acctot, "SD", 13.2)
     self.fpdf.drawText("%-39s %13s %13s %-30s" % \
         ("", b.disp, "", "Closing Balance"))
Пример #22
0
 def doEditPage3(self):
     titl = "Denominations"
     data = []
     for num, rec in enumerate(self.df.c_work[3]):
         data.append([self.denoms[num][0], rec[0], rec[1]])
     lin = {
         "stype": "C",
         "deco": True,
         "titl": titl,
         "head": ("Denom", "Qty", "Value"),
         "typs": (("NA", 4), ("UI", 5), ("SD", 13.2)),
         "data": data,
         "retn": "I"
     }
     state = self.df.disableButtonsTags()
     self.opts["mf"].updateStatus("Select a Denomination to Edit")
     chg = self.df.selChoice(lin)
     self.df.enableButtonsTags(state=state)
     if chg and chg.selection:
         self.edit = self.df.col
         qty, val = self.df.c_work[3][chg.selection[0]]
         self.ctotal = float(ASD(self.ctotal) - ASD(val))
         self.df.focusField("C", 3, (chg.selection[0] * 2) + 1)
     else:
         self.edit = None
         self.df.focusField("C", 3, self.df.col)
Пример #23
0
 def printReport(self, recs):
     p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
     self.head = "%03u %-77s" % (self.opts["conum"], self.opts["conam"])
     self.fpdf = MyFpdf(name=self.__class__.__name__, head=self.head)
     self.btot = [0, 0]
     self.pglin = 999
     bc = self.sql.ctlbat_col
     tc = self.sql.wagltf_col
     for num, dat in enumerate(recs):
         p.displayProgress(num)
         if p.quit:
             break
         self.rtyp = CCD(dat[bc.index("btm_rtyp")], "UI", 1)
         self.batno = CCD(dat[bc.index("btm_batno")], "Na", 7)
         self.curdt = CCD(dat[bc.index("btm_curdt")], "D2", 7)
         self.multi = CCD(dat[bc.index("btm_multi")], "UA", 1)
         self.trno = CCD(dat[bc.index("btm_trno")], "UI", 7)
         self.trval = CCD(dat[bc.index("btm_trval")], "SD", 13.2)
         whr = [
             ("wlt_cono", "=", self.opts["conum"]),
             ("wlt_type", "=", self.rtyp.work),
             ("wlt_batch", "=", self.batno.work),
             ("wlt_batind", "=", "N")]
         odr = "wlt_seq"
         trndat = self.sql.getRec("wagltf", where=whr, order=odr)
         if not trndat:
             continue
         if self.pglin > self.fpdf.lpp:
             self.pageHeading()
         else:
             self.batchHeading()
         for trn in trndat:
             empno = CCD(trn[tc.index("wlt_empno")], "UI", 5)
             loan = CCD(trn[tc.index("wlt_loan")], "UI", 2)
             trdt = CCD(trn[tc.index("wlt_trdt")], "D1", 10)
             ref = CCD(trn[tc.index("wlt_ref")], "Na", 9)
             amt = CCD(trn[tc.index("wlt_amt")], "SD", 13.2)
             ded = CCD(trn[tc.index("wlt_ded")], "SD", 13.2)
             per = CCD(trn[tc.index("wlt_per")], "UD", 6.2)
             desc = CCD(trn[tc.index("wlt_desc")], "NA", 15)
             if self.pglin > self.fpdf.lpp:
                 self.pageHeading()
             self.fpdf.drawText("%s %s %s %s %s %s %s %s" %
                 (empno.disp, loan.disp, trdt.disp, ref.disp,
                 per.disp, amt.disp, ded.disp, desc.disp))
             self.btot[0] = self.btot[0] + 1
             self.btot[1] = float(ASD(self.btot[1]) + ASD(amt.work))
             self.pglin += 1
         self.batchTotal()
     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,
             fromad=self.fromad, repeml=self.df.repeml)
     else:
         showError(self.opts["mf"].body, "Batch Errors",
             "No Batch Transactions")
Пример #24
0
 def doBody(self, rtc, rtt, tdc):
     text = self.form.sql.tpldet_col.index("tpd_text")
     count = 0
     bal = 0
     for trans in rtt:
         for cod in self.form.body:
             if cod == "type_code":
                 c = "rtt_type"
             else:
                 c = cod
             d = "%s_C%02i" % (cod, count)
             if cod == "type_code":
                 ttyp = trans[rtc.index(c)]
                 self.form.newdic[d][text] = rttrtp[ttyp - 1][0]
             elif cod in ("line_debit", "line_credit"):
                 tramt = trans[rtc.index(c)]
                 bal = float(ASD(bal) + ASD(tramt))
                 self.form.newdic[d][text] = trans[rtc.index(c)]
             elif c == "line_balance":
                 self.form.newdic[d][text] = bal
             else:
                 self.form.newdic[d][text] = trans[rtc.index(c)]
             self.form.doDrawDetail(self.form.newdic[d])
         count += 1
     for x in range(count, self.form.maxlines):
         for cod in self.form.body:
             d = "%s_C%02i" % (cod, x)
             self.form.newdic[d][tdc.index("tpd_text")] = "BLANK"
             self.form.doDrawDetail(self.form.newdic[d])
Пример #25
0
 def doGenTrn(self, cono, acno, amnt, edes=None):
     if not edes:
         edes = "Salaries and Wages"
     batno = CCD("%03i%04i" % (self.opts["conum"], (self.curdt % 10000)),
                 "Na", 7)
     refno = CCD(1, "Na", 9)
     whr = [("glt_cono", "=", cono), ("glt_acno", "=", acno),
            ("glt_curdt", "=", self.curdt), ("glt_trdt", "=", self.rundt),
            ("glt_type", "=", 4), ("glt_refno", "=", refno.work),
            ("glt_batch", "=", batno.work), ("glt_desc", "=", edes)]
     trn = self.sql.getRec("gentrn",
                           cols=["glt_seq", "glt_tramt"],
                           where=whr,
                           limit=1)
     if not trn:
         data = [
             cono, acno, self.curdt, self.rundt, 4, refno.work, batno.work,
             amnt, 0.00, edes, "", "", 0, self.opts["capnm"], self.sysdtw, 0
         ]
         self.sql.insRec("gentrn", data=data)
     else:
         newamt = float(ASD(trn[1]) + ASD(amnt))
         self.sql.updRec("gentrn",
                         cols=["glt_tramt"],
                         data=[newamt],
                         where=[("glt_seq", "=", int(trn[0]))])
Пример #26
0
 def endSln(self):
     if self.opts["rtn"] == 4:
         tramt = float(ASD(0.0) - ASD(self.slnamt))
     else:
         tramt = self.slnamt
     self.othtot = float(ASD(self.othtot) - ASD(self.slnamt))
     if self.newsln:
         # Staff Loans Ledger Masterfile
         self.sql.insRec("waglmf",
                         data=[
                             self.allcoy, self.empnum, self.slnnum,
                             self.slndes, self.slncod, self.newrte,
                             self.trndat, self.slnded
                         ])
         self.othrtn = 2
     else:
         self.othrtn = 3
     # Staff Loans Ledger Transaction
     data = [
         self.allcoy, self.empnum, self.slnnum, self.bh.batno, self.othrtn,
         self.trndat, self.trnref, tramt, tramt, self.slnded, self.newrte,
         self.curdt, self.alldet, "", self.opts["capnm"], self.sysdtw, 0
     ]
     self.sql.insRec("wagltf", data=data)
     if self.othtot:
         self.df.loadEntry("T", self.slnpag, 0, data=self.othtot)
         self.df.advanceLine(self.slnpag)
     else:
         self.othvar.set(False)
Пример #27
0
 def getValues(self, data):
     grp = CCD(data[0], "UA", 3)
     self.groupd = grp.disp
     code = CCD(data[1], "NA", 20)
     desc = CCD(data[2], "NA", 30)
     uoi = CCD(data[3], "NA", 10)
     whr = [("stt_cono", "=", self.opts["conum"]),
            ("stt_group", "=", grp.work), ("stt_code", "=", code.work)]
     if self.loc:
         whr.append(("stt_loc", "=", self.loc))
     whr.append(("stt_curdt", "<=", self.curdt))
     bal = self.sql.getRec(
         "strtrn",
         cols=["round(sum(stt_qty), 2)", "round(sum(stt_cost), 2)"],
         where=whr,
         limit=1)
     if not bal[0]:
         bal[0] = 0
     if not bal[1]:
         bal[1] = 0
     qbal = CCD(bal[0], "SD", 12.2)
     vbal = CCD(bal[1], "SD", 12.2)
     if self.zero == "Y" and qbal.work == 0 and vbal.work == 0:
         return
     self.gtot = float(ASD(self.gtot) + ASD(vbal.work))
     return (grp, code, desc, uoi, qbal, vbal)
Пример #28
0
 def endPage2(self):
     self.updateTables2()
     if self.loan and self.loan == "other":
         self.othtot = self.allamt
         self.df.selPage("LON")
         self.df.loadEntry("T", self.lonpag, 0, data=self.othtot)
         self.df.focusField("C", self.lonpag, 1)
         self.othvar.set(True)
         self.df.mstFrame.wait_variable(self.othvar)
         if self.cancel:
             return
     elif self.loan and self.loan == "staff":
         self.othtot = self.allamt
         self.df.selPage("SLN")
         self.df.loadEntry("T", self.slnpag, 0, data=self.othtot)
         self.df.focusField("C", self.slnpag, 1)
         self.othvar.set(True)
         self.df.mstFrame.wait_variable(self.othvar)
         if self.cancel:
             return
     self.allocated = float(ASD(self.allocated) + ASD(self.allamt) + \
         ASD(self.allvat))
     if self.allocated == self.trnamt:
         self.doCrsTrn()
         self.opts["mf"].dbm.commitDbase()
         self.df.clearFrame("C", 2)
         self.df.selPage("Transaction")
         self.df.advanceLine(1)
     else:
         bal = float(ASD(self.trnamt) - ASD(self.allocated))
         self.df.loadEntry("T", 2, 0, data=bal)
         self.df.advanceLine(2)
Пример #29
0
 def doPoints(self, frt, pag, r, c, p, i, w):
     if w and w % 1 not in (0.0, 0.5):
         return "Invalid Decimal in Points"
     if w > self.maxpts:
         return "Invalid Points, Exceed Maximum"
     if i == 3:
         self.p_for = w
         self.df.loadEntry(frt, pag, p + 1, data=self.opp)
         chk = self.sql.getRec("bwltab", cols=["btb_surname",
             "btb_names"], where=[("btb_cono", "=", self.opts["conum"]),
             ("btb_tab", "=", self.opp)], limit=1)
         if chk[1]:
             name = "%s, %s" % tuple(chk[:2])
         else:
             name = chk[0]
         self.df.loadEntry(frt, pag, p + 2, data=name)
         if self.ponly == "Y":
             self.s_for = w
             return "sk3"
         else:
             return "sk2"
     if not w:
         self.p_agt = float(ASD(self.mpts) - ASD(self.p_for))
         self.df.loadEntry(frt, pag, p, data=self.p_agt)
     else:
         self.p_agt = w
     if self.ponly == "Y":
         self.s_agt = self.p_agt
     tot = float(ASD(self.p_for) + ASD(self.p_agt))
     if tot != self.mpts:
         return "Invalid Total Points (%s s/b %s)" % (tot, self.mpts)
Пример #30
0
 def grandTotal(self):
     self.totind = "Y"
     self.pageHeading()
     tot = [0, 0, 0, 0]
     for x, t in enumerate(sltrtp):
         qt = CCD(self.gqt[x], "SI", 8)
         am = CCD(self.gam[x], "SD", 13.2)
         dd = CCD(self.gdd[x], "SD", 13.2)
         if self.totsonly == "Y":
             self.fpdf.drawText("%-44s %s %s %s" % \
             (t[1], qt.disp, am.disp, dd.disp))
         else:
             self.fpdf.drawText("%-30s %s %s %s" % \
             (t[1], qt.disp, am.disp, dd.disp))
         tot[0] = tot[0] + qt.work
         tot[1] = float(ASD(tot[1]) + ASD(am.work))
         tot[2] = float(ASD(tot[2]) + ASD(dd.work))
     self.fpdf.drawText()
     qt = CCD(tot[0], "SI", 8)
     am = CCD(tot[1], "SD", 13.2)
     dd = CCD(tot[2], "SD", 13.2)
     if self.totsonly == "Y":
         self.fpdf.drawText("%-44s %s %s %s" % \
         ("Grand Totals", qt.disp, am.disp, dd.disp))
     else:
         self.fpdf.drawText("%-30s %s %s %s" % \
         ("Grand Totals", qt.disp, am.disp, dd.disp))
     self.fpdf.drawText()