예제 #1
0
 def mainProcess(self):
     data = []
     p = ProgressBar(self.opts["mf"].body,
                     typ="Generating the Report",
                     mxs=len(self.notes.data),
                     esc=True)
     for num, dat in enumerate(self.notes.data):
         p.displayProgress(num)
         if p.quit:
             break
         if len(dat[2].strip()) < 14:
             continue
         desc = textFormat(dat[5], width=50)
         for n, d in enumerate(desc):
             if not n:
                 own = dat[2][:7].strip()
                 cod = dat[2][7:14].strip()
                 acc = dat[2][14:].strip()
                 nam = self.sql.getRec("rcatnm",
                                       cols=["rtn_name"],
                                       where=[("rtn_cono", "=",
                                               self.opts["conum"]),
                                              ("rtn_owner", "=", own),
                                              ("rtn_code", "=", cod),
                                              ("rtn_acno", "=", acc)],
                                       limit=1)
                 if not nam:
                     continue
                 data.append([
                     own, cod, acc, nam[0], dat[4],
                     CCD(dat[3], "d1", 10).disp, dat[6],
                     CCD(dat[7], "d1", 10).disp, d
                 ])
             else:
                 data.append(["", "", "", "", "", "", "", "", d])
     p.closeProgress()
     if not p.quit:
         name = self.__class__.__name__
         head = ["Rental's Masterfile Notes Listing"]
         cols = [["a", "NA", 7, "Own-Cod", "y"],
                 ["b", "NA", 7, "Prm-Cod", "y"],
                 ["c", "NA", 7, "Acc-Num", "y"],
                 ["d", "NA", 30, "Acc-Name", "y"],
                 ["e", "NA", 20, "User-Name", "y"],
                 ["f", "NA", 10, "Cap-Date", "y"], ["g", "UA", 1, "F", "y"],
                 ["h", "NA", 10, "Act-Date", "y"],
                 ["i", "NA", 50, "Details", "y"]]
         RepPrt(self.opts["mf"],
                conum=self.opts["conum"],
                conam=self.opts["conam"],
                name=name,
                tables=data,
                heads=head,
                cols=cols,
                ttype="D",
                repprt=self.notes.df.repprt,
                repeml=self.notes.df.repeml,
                fromad=self.fromad)
예제 #2
0
 def mainProcess(self):
     data = []
     p = ProgressBar(self.opts["mf"].body,
                     typ="Generating the Report",
                     mxs=len(self.notes.data),
                     esc=True)
     for num, dat in enumerate(self.notes.data):
         p.displayProgress(num)
         if p.quit:
             break
         desc = textFormat(dat[5], width=50)
         for n, d in enumerate(desc):
             if not n:
                 bkn = dat[2]
                 des = self.sql.getRec(
                     tables=["bkmmst", "bkmcon"],
                     cols=["bkc_title", "bkc_sname", "bkc_names"],
                     where=[("bkm_cono", "=", self.opts["conum"]),
                            ("bkm_number", "=", int(bkn)),
                            ("bkc_cono=bkm_cono", ),
                            ("bkc_ccode=bkm_ccode", )],
                     limit=1)
                 data.append([
                     bkn,
                     "%s %s %s" % (des[0], des[2][0], des[1]), dat[4],
                     CCD(dat[3], "d1", 10).disp, dat[6],
                     CCD(dat[7], "d1", 10).disp, d
                 ])
             else:
                 data.append(["", "", "", "", "", "", d])
     p.closeProgress()
     if not p.quit:
         name = self.__class__.__name__
         head = ["Booking Master Notes Listing"]
         cols = [["a", "NA", 7, "Booking", "y"],
                 ["b", "NA", 30, "Name", "y"],
                 ["c", "NA", 20, "User-Name", "y"],
                 ["d", "NA", 10, "Capt-Date",
                  "y"], ["e", "UA", 1, "F", "y"],
                 ["f", "NA", 10, "Actn-Date", "y"],
                 ["g", "NA", 50, "Details", "y"]]
         RepPrt(self.opts["mf"],
                conum=self.opts["conum"],
                conam=self.opts["conam"],
                name=name,
                tables=data,
                heads=head,
                cols=cols,
                ttype="D",
                repprt=self.notes.df.repprt,
                repeml=self.notes.df.repeml,
                fromad=self.fromad)
예제 #3
0
 def mainProcess(self):
     data = []
     p = ProgressBar(self.opts["mf"].body,
                     typ="Generating the Report",
                     mxs=len(self.notes.data),
                     esc=True)
     for num, dat in enumerate(self.notes.data):
         p.displayProgress(num)
         if p.quit:
             break
         desc = textFormat(dat[5], width=50)
         for n, d in enumerate(desc):
             if not n:
                 chn = int(dat[2][:3])
                 acc = dat[2][3:].strip()
                 nam = self.sql.getRec("drsmst",
                                       cols=["drm_name"],
                                       where=[("drm_cono", "=",
                                               self.opts["conum"]),
                                              ("drm_chain", "=", chn),
                                              ("drm_acno", "=", acc)],
                                       limit=1)
                 if not nam:
                     nam = "Unknown"
                 data.append([
                     chn, acc, nam[0], dat[4],
                     CCD(dat[3], "d1", 10).disp, dat[6],
                     CCD(dat[7], "d1", 10).disp, d
                 ])
             else:
                 data.append(["", "", "", "", "", "", "", d])
     p.closeProgress()
     if not p.quit:
         name = self.__class__.__name__
         head = ["Debtor's Masterfile Notes Listing"]
         cols = [["a", "NA", 3, "Chn", "y"], ["b", "NA", 7, "Acc-Num", "y"],
                 ["c", "NA", 30, "Acc-Name", "y"],
                 ["d", "NA", 20, "User-Name", "y"],
                 ["e", "NA", 10, "Cap-Date", "y"], ["f", "UA", 1, "F", "y"],
                 ["g", "NA", 10, "Act-Date", "y"],
                 ["h", "NA", 50, "Details", "y"]]
         RepPrt(self.opts["mf"],
                conum=self.opts["conum"],
                conam=self.opts["conam"],
                name=name,
                tables=data,
                heads=head,
                cols=cols,
                ttype="D",
                repprt=self.notes.df.repprt,
                repeml=self.notes.df.repeml,
                fromad=self.fromad)
예제 #4
0
 def mainProcess(self):
     data = []
     p = ProgressBar(self.opts["mf"].body,
                     typ="Generating the Report",
                     mxs=len(self.notes.data),
                     esc=True)
     for num, dat in enumerate(self.notes.data):
         p.displayProgress(num)
         if p.quit:
             break
         desc = textFormat(dat[5], width=50)
         for n, d in enumerate(desc):
             if not n:
                 grp = dat[2][:3].strip()
                 cod = dat[2][3:].strip()
                 des = self.sql.getRec("strmf1",
                                       cols=["st1_desc"],
                                       where=[("st1_cono", "=",
                                               self.opts["conum"]),
                                              ("st1_group", "=", grp),
                                              ("st1_code", "=", cod)],
                                       limit=1)
                 data.append([
                     grp, cod, des[0], dat[4],
                     CCD(dat[3], "d1", 10).disp, dat[6],
                     CCD(dat[7], "d1", 10).disp, d
                 ])
             else:
                 data.append(["", "", "", "", "", "", "", d])
     p.closeProgress()
     if not p.quit:
         name = self.__class__.__name__
         head = ["Debtor's Masterfile Notes Listing"]
         cols = [["a", "NA", 3, "Grp", "y"],
                 ["b", "NA", 20, "Cod-Num", "y"],
                 ["c", "NA", 30, "Description", "y"],
                 ["d", "NA", 20, "User-Name", "y"],
                 ["e", "NA", 10, "Cap-Date", "y"], ["f", "UA", 1, "F", "y"],
                 ["g", "NA", 10, "Act-Date", "y"],
                 ["h", "NA", 50, "Details", "y"]]
         RepPrt(self.opts["mf"],
                conum=self.opts["conum"],
                conam=self.opts["conam"],
                name=name,
                tables=data,
                heads=head,
                cols=cols,
                ttype="D",
                repprt=self.notes.df.repprt,
                repeml=self.notes.df.repeml,
                fromad=self.fromad)
예제 #5
0
 def mainProcess(self):
     data = []
     p = ProgressBar(self.opts["mf"].body,
                     typ="Generating the Report",
                     mxs=len(self.notes.data),
                     esc=True)
     for num, dat in enumerate(self.notes.data):
         p.displayProgress(num)
         if p.quit:
             break
         desc = textFormat(dat[5], width=50)
         for n, d in enumerate(desc):
             if not n:
                 mem = int(dat[2].strip())
                 des = self.sql.getRec(
                     "memmst",
                     cols=["mlm_title", "mlm_initial", "mlm_surname"],
                     where=[("mlm_cono", "=", self.opts["conum"]),
                            ("mlm_memno", "=", mem)],
                     limit=1)
                 data.append([
                     mem,
                     "%s %s %s" % tuple(des), dat[4],
                     CCD(dat[3], "d1", 10).disp, dat[6],
                     CCD(dat[7], "d1", 10).disp, d
                 ])
             else:
                 data.append(["", "", "", "", "", "", d])
     p.closeProgress()
     if not p.quit:
         name = self.__class__.__name__
         head = ["Member's Ledger Notes Listing"]
         cols = [["a", "NA", 6, "Mem-No", "y"],
                 ["b", "NA", 30, "Name", "y"],
                 ["c", "NA", 20, "User-Name", "y"],
                 ["d", "NA", 10, "Cap-Date", "y"], ["e", "UA", 1, "F", "y"],
                 ["f", "NA", 10, "Act-Date", "y"],
                 ["g", "NA", 50, "Details", "y"]]
         RepPrt(self.opts["mf"],
                conum=self.opts["conum"],
                conam=self.opts["conam"],
                name=name,
                tables=data,
                heads=head,
                cols=cols,
                ttype="D",
                repprt=self.notes.df.repprt,
                repeml=self.notes.df.repeml,
                fromad=self.fromad)
예제 #6
0
 def printReport(self, recs):
     p = ProgressBar(self.opts["mf"].body, mxs=len(recs), esc=True)
     self.head = "%-3u %-71s" % (self.opts["conum"], self.opts["conam"])
     self.fpdf = MyFpdf(name=self.__class__.__name__, head=self.head)
     self.pglin = 999
     old_sys = recs[0][0]
     for num, dat in enumerate(recs):
         p.displayProgress(num)
         if p.quit:
             if self.fpdf.page:
                 self.fpdf.drawText()
                 self.fpdf.drawText("Print Job ABORTED")
             break
         self.sys = CCD(dat[0], "NA", 3)
         mes = CCD(dat[1], "UI", 3)
         det = CCD(dat[2], "NA", 150)
         fmt = textFormat(det.work, width=30)
         if len(fmt) > 5:
             l = 5
         else:
             l = len(fmt)
         if old_sys != self.sys.work:
             old_sys = self.sys.work
             self.pglin = self.fpdf.lpp
         if self.pglin > (self.fpdf.lpp - 5):
             self.pageHeading()
         self.fpdf.drawText("%-14s %s %-10s %s" %
                            ("", mes.disp, "", fmt[0]))
         self.pglin += 1
         for q in range(1, len(fmt)):
             self.fpdf.drawText("%-29s %s" % ("", fmt[q]))
             self.pglin += 1
         self.fpdf.drawText()
         for r in range(l, 5):
             fmt.append("")
         self.pglin += 1
     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"],
                   pdfnam=pdfnam,
                   header=self.tit,
                   repprt=self.df.repprt,
                   fromad=self.fromad,
                   repeml=self.df.repeml)
예제 #7
0
 def doEnd(self):
     self.df.closeProcess()
     data = []
     recs = self.sql.getRec(tables=["bwlflt", "bwlfls"], cols=["bft_skip",
         "bft_player", "bft_position", "bft_shotsf", "bft_shotsa",
         "bft_points", "bft_rating1", "bft_rating2", "bft_rating3",
         "bft_rating4", "bft_remarks"], where=[("bft_cono", "=",
         self.opts["conum"]), ("bft_fmat", "=", self.fmat), ("bft_type",
         "=", self.ftyp),
         ("bft_date", "=", self.date), ("bfs_cono=bft_cono",),
         ("bfs_fmat=bft_fmat",), ("bfs_league", "=", "M"),
         ("bfs_code=bft_team",)], order="bfs_code, bft_skip, bft_position")
     for player in recs:
         pos = player[2]
         his = player[5 + pos]
         if pos == 1:
             names = self.sql.getRec(tables=["bwlflt", "bwltab"],
                 cols=["btb_surname", "btb_names"], where=[("bft_cono",
                 "=", self.opts["conum"]), ("bft_fmat", "=", self.fmat),
                 ("bft_type", "=", self.ftyp), ("bft_date", "=", self.date),
                 ("bft_skip", "=", player[0]), ("btb_cono=bft_cono",),
                 ("btb_tab=bft_player",)], order="bft_position")
             for nm in names:
                 nm[0] = self.getName(nm[0], nm.pop(1))
         sc = self.sql.getRec("bwlflt", cols=["bft_rating%s" % pos],
             where=[("bft_cono", "=", self.opts["conum"]), ("bft_fmat", "=",
             self.fmat), ("bft_type", "=", self.ftyp), ('bft_date', '=',
             self.date), ("bft_skip", "=", player[0])])
         tot = sc[0][0] + sc[1][0] + sc[2][0] + sc[3][0]
         tav = self.getHistory(player[1])
         if tav == "error":
             break
         if not tav:
             tav = tot
         if self.forms == 1:
             if player[1] == player[0]:
                 desc = textFormat(player[10], width=70)
             if desc:
                 text = desc.pop(0)
             else:
                 text = ""
             data.append([names[player[2]-1][0], self.pos[pos], player[3],
                 player[4], player[5], sc[0][0], tav, text])
         else:
             if his:
                 div = 4.0
             else:
                 div = 3.0
             data.append([names[player[2]-1][0], self.pos[pos], player[3],
                 player[4], player[5], sc[0][0], sc[1][0], sc[2][0],
                 sc[3][0], round(tot / div, 1), his,
                 round((tot - his) / 3.0, 1), tav, player[10]])
         if pos == 4:
             data.append(["BLANK"])
     if tav != "error":
         head = ("Match Assessment for %s Match Played on %s" % \
             (self.fnam, self.disp),)
         cols = [
             ["a", "NA",  20, "Player",  "y"],
             ["b", "NA",   4, "Posn",    "y"],
             ["c", "UI",   3, "For",     "y"],
             ["d", "UI",   3, "Agt",     "y"],
             ["e", "UI",   1, "P",       "y"]]
         if self.forms == 1:
             cols.append(["f", "UD", 4.1, " Ass",    "y"])
         elif self.forms == 4:
             cols.extend([
                 ["f", "UD", 4.1, " Skp",    "y"],
                 ["g", "UD", 4.1, " 3rd",    "y"],
                 ["h", "UD", 4.1, " 2nd",    "y"],
                 ["i", "UD", 4.1, "Lead",    "y"],
                 ["j", "UD", 4.1, " Avg",    "y"],
                 ["k", "UD", 4.1, " Own",    "y"],
                 ["l", "UD", 4.1, " Adj",    "y"]])
         cols.extend([
             ["m", "UD", 4.1, " ATD",    "y"],
             ["n", "NA",  70, "Remarks", "y"]])
         RepPrt(self.opts["mf"], name=self.__class__.__name__, tables=data,
             heads=head, cols=cols, ttype="D", repprt=self.df.repprt,
             repeml=self.df.repeml, fromad=self.fromad)
     self.opts["mf"].closeLoop()
예제 #8
0
 def doPrint(self):
     titl = "Select the Required Print Options"
     cols = (("a", "C", 1, "UA", "N"), ("b", "Description", 30, "NA", "N"))
     if self.df.last[0][0] != 1:
         data = [("A", "Print Card")]
     else:
         data = []
     data.extend([("B", "Print Directory"), ("C", "Print Contacts"),
                  ("D", "Print Notes")])
     ss = SelectChoice(self.df.mstFrame, titl, cols, data, sort=False)
     self.opts["mf"].updateStatus("")
     if not ss.selection:
         self.df.focusField(self.df.frt, self.df.pag, self.df.col)
         return
     state = self.df.disableButtonsTags()
     self.df.setWidget(self.df.mstFrame, state="hide")
     if ss.selection[1] == "A":
         head = ["Card for %s" % self.name]
         whr = [("tdm_name", "=", self.name)]
         TabPrt(self.opts["mf"],
                name=self.__class__.__name__,
                tabs="telmst",
                head=head,
                where=whr)
     elif ss.selection[1] == "D":
         self.notes = NotesPrint(self.opts["mf"], 0, "", "TEL", loop=False)
         if not self.notes.data:
             pass
         else:
             data = []
             p = ProgressBar(self.opts["mf"].body,
                             typ="Generating the Report",
                             mxs=len(self.notes.data),
                             esc=True)
             for num, dat in enumerate(self.notes.data):
                 p.displayProgress(num)
                 if p.quit:
                     break
                 desc = textFormat(dat[5], width=50)
                 for n, d in enumerate(desc):
                     if not n:
                         data.append([
                             dat[2], dat[4],
                             CCD(dat[3], "d1", 10).disp, dat[6],
                             CCD(dat[7], "d1", 10).disp, d
                         ])
                     else:
                         data.append(["", "", "", "", "", d])
             p.closeProgress()
             if not p.quit:
                 name = self.__class__.__name__
                 head = ["Telephone Directory Notes Listing"]
                 cols = [["a", "NA", 30, "Name", "y"],
                         ["b", "NA", 20, "User-Name", "y"],
                         ["c", "NA", 10, "Cap-Date", "y"],
                         ["d", "UA", 1, "F", "y"],
                         ["e", "NA", 10, "Act-Date", "y"],
                         ["f", "NA", 50, "Details", "y"]]
                 RepPrt(self.opts["mf"],
                        name=name,
                        tables=data,
                        heads=head,
                        cols=cols,
                        ttype="D",
                        repprt=self.notes.df.repprt,
                        repeml=self.notes.df.repeml)
     else:
         tit = ["Telephone Directory"]
         grp = {
             "stype":
             "R",
             "tables": ("telgrp", ),
             "cols": (("tdg_group", "UA", 3, "Grp"), ("tdg_desc", "NA", 30,
                                                      "Description")),
             "order":
             "tdg_desc"
         }
         fld = ((("T", 0, 0, 0), "IUA", 3, "Group", "", "", "N", self.prGrp,
                 grp, None, ("efld", )), )
         self.pr = TartanDialog(self.opts["mf"],
                                tops=True,
                                title=tit,
                                eflds=fld,
                                tend=((self.prEnd, "y"), ),
                                txit=(self.prExit, ))
         self.pr.mstFrame.wait_window()
         if not self.prxit:
             if self.prgrp:
                 if ss.selection[1] == "B":
                     head = ["Details for Group %s" % self.prgrp]
                     whr = [("tdm_group", "=", self.prgrp)]
                 else:
                     head = ["Contacts for Group %s" % self.prgrp]
                     whr = [("tdm_group", "=", self.prgrp),
                            ("tdc_name=tdm_name", )]
             else:
                 if ss.selection[1] == "B":
                     head = ["Cards for All Groups"]
                     whr = []
                 else:
                     head = ["Contacts for All Groups"]
                     whr = []
             if ss.selection[1] == "B":
                 tab = ["telmst"]
                 col = [
                     "tdm_name", "tdm_telno", "tdm_faxno", "tdm_mobile",
                     "tdm_email"
                 ]
             else:
                 tab = ["telmst", "telcon"]
                 col = [
                     "tdm_name", "tdc_contact", "tdc_desig", "tdc_telno",
                     "tdc_celno", "tdc_email"
                 ]
             prtdia = (("Y", "V"), ("Y", "N"))
             RepPrt(self.opts["mf"],
                    name=self.__class__.__name__,
                    tables=tab,
                    heads=head,
                    cols=col,
                    where=whr,
                    order="tdm_name",
                    prtdia=prtdia)
     self.df.setWidget(self.df.mstFrame, state="show")
     self.df.enableButtonsTags(state=state)
     self.df.focusField(self.df.frt, self.df.pag, self.df.col)
예제 #9
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()