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()
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()
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()
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()
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()
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])
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()
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()
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"
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()
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()
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()
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)
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()
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()
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()
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()
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()
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()
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)
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()
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()
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()
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()