def doExport(self): self.df.setWidget(self.df.mstFrame, state="hide") typ = askChoice(self.opts["mf"].window, "Type", "Select the File Type", butt=( ("CSV", "C", "Export to a csv file for Importing "\ "into e.g. 'Password Safe'"), ("XML", "X", "Export to a xml file for Importing "\ "into e.g. 'KeePassX'")), default="CSV") self.df.setWidget(self.df.mstFrame, state="show") if typ == "C": fle = os.path.join(self.opts["mf"].rcdic["wrkdir"], "secrets.csv") csvwrt = csv.writer(open(fle, "w"), delimiter=";", quotechar='"', quoting=csv.QUOTE_MINIMAL) csvwrt.writerow(["Title", "Category", "Username", "Password", "Website","Comments"]) else: fle = os.path.join(self.opts["mf"].rcdic["wrkdir"], "secrets.xml") xml = open(fle, "w") xml.write("""<!DOCTYPE KEEPASSX_DATABASE> <database> <group> <title>Secrets</title> <icon>0</icon>""") codes = list(self.data[self.opts["capnm"]].keys()) codes.sort() for code in codes: log, enc = self.data[self.opts["capnm"]][code] log = log.replace("&", "and").replace("<", "").replace(">","") enc = enc.replace("&", "and").replace("<", "").replace(">","") if typ == "C": csvwrt.writerow([code, "", log, enc, "", ""]) else: xml.write(""" <entry> <title>%s</title> <username>%s</username> <password>%s</password> <url></url> <comment></comment> <icon>0</icon> <creation>0</creation> <lastaccess>0</lastaccess> <lastmod>0</lastmod> <expire>Never</expire> </entry>""" % (code, log, enc)) if typ == "X": xml.write(""" </group> </database>""") xml.close() showInfo(self.opts["mf"].body, "Export", """The following file has been created: %s Please Note that this file is Unencrypted. This file will be treated as a Temporary File when Exiting Tartan.""" % fle) self.df.focusField("T", 0, 1)
def setVariables(self): self.sql = Sql(self.opts["mf"].dbm, ["ctlmst", "genmst", "genint"], prog=self.__class__.__name__) if self.sql.error: return chk = self.sql.getRec("ctlmst", cols=["count(*)"], limit=1) if chk[0] == 1: showInfo(self.opts["mf"].body, "Intercompany", "There is Only 1 Company Record") return return True
def doTotal(self): tot = self.sql.getRec("genjlt", cols=["round(sum(gjt_amnt),2)"], where=[("gjt_cono", "=", self.opts["conum"]), ("gjt_num", "=", self.num)], limit=1) if not tot[0]: tot = CCD(0, "SD", 15.2) else: tot = CCD(tot[0], "SD", 15.2) showInfo(self.opts["mf"].body, "Journal Total", tot.disp) self.df.focusField(self.df.frt, self.df.pag, self.df.col)
def doConvert(self): titl = "Enter Member's Tab Number" ent = SimpleDialog(parent=self.df.window, title=titl, cols=(("a", "Tab Number ", 6, "UI", "Tab"), )) ent.sframe.wait_window() try: self.merge = False if self.gender == "M": start = self.mstart if self.mstart < self.fstart: last = self.fstart - 1 else: last = self.nstart - 1 else: start = self.fstart if self.mstart < self.fstart: last = self.nstart - 1 else: last = self.mstart - 1 tab = ent.data[0] if not tab: tab = getNextCode(self.sql, "bwltab", "btb_tab", where=[("btb_cono", "=", self.opts["conum"]) ], start=start, last=last) if tab < start or tab > last: showInfo(self.opts["mf"].body, "Error", "Invalid Tab Number for Gender") raise Exception chk = self.sql.getRec("bwltab", where=[("btb_cono", "=", self.opts["conum"]), ("btb_tab", "=", tab)], limit=1) if chk: ok = askQuestion( self.opts["mf"].body, "Invalid", "This Tab is Already Allocated, Do You Want to Merge?") if ok == "no": raise Exception self.merge = True self.tabcvt = True self.old = self.tab self.tab = tab self.df.loadEntry(self.df.frt, self.df.pag, 0, data=self.tab) self.df.focusField(self.df.frt, self.df.pag, 6) except: self.df.focusField(self.df.frt, self.df.pag, self.df.col)
def doEnq(self, *args): number = args[1].split("\n") if number[0]: number = int(number[0]) else: return data = self.sql.getRec(tables=["bkmmst", "bkmcon"], cols=[ "bkc_sname", "bkc_names", "bkm_group", "bkm_guests", "bkm_state", "bkm_value", "bkm_stddep", "bkm_remarks" ], where=[("bkm_cono", "=", self.opts["conum"]), ("bkm_number", "=", number), ("bkc_cono=bkm_cono", ), ("bkc_ccode=bkm_ccode", )], limit=1) name = "%s, %s" % (data[0], data[1]) text = "%-10s %s" % ("Name:", name) if data[2]: text = "%s\n%-10s %s" % (text, "Group:", data[2]) text = "%s\n%-10s %s" % (text, "Guests:", data[3]) val = CCD(data[5], "SD", 13.2).disp text = "%s\n\n%-10s R%s" % (text, "Value:", val) if data[4] == "Q": dep = CCD(data[6], "SD", 13.2).disp text = "%s\n%-10s R%s" % (text, "Deposit:", dep) else: bal = self.sql.getRec("bkmtrn", cols=["sum(bkt_tramt)"], where=[("bkt_cono", "=", self.opts["conum"]), ("bkt_number", "=", number), ("bkt_type", "<>", 1)], limit=1) if bal[0] is None: if data[4] == "C": bal = CCD(data[5], "SD", 13.2).disp else: bal = CCD(0, "SD", 13.2).disp elif not bal[0] and data[4] == "C": bal = CCD(data[5], "SD", 13.2).disp else: bal = CCD(bal[0], "SD", 13.2).disp text = "%s\n%-10s R%s" % (text, "Balance:", bal) if data[7]: text = "%s\n\n%s" % (text, data[7]) # cp = list(args[2][1]) showInfo(args[2][0], "Booking %s" % number, text)
def exitData(self): bals = self.sql.getRec("genbal", cols=["sum(glo_cyr)"], where=[("glo_cono", "=", self.opts["conum"]), ("glo_trdt", "=", self.start)], limit=1) if bals[0]: diff = CCD(bals[0], "SD", 13.2) showError(self.opts["mf"].body, "Out of Balance", "Opening Balances Do Not Balance by %s" % diff.disp) self.df.focusField(self.df.frt, self.df.pag, self.df.col) else: showInfo( self.opts["mf"].body, "Year End", """A Year End for the Previous Period Must be Executed to Include These Opening Balances. If the Current Period is 1 then the Year End for Period 0 must be Executed.""") self.df.closeProcess() self.opts["mf"].closeLoop()
def doCode(self, frt, pag, r, c, p, i, w): self.code = w self.acc = self.sql.getRec("wagedc", where=[("ced_cono", "=", self.opts["conum"]), ("ced_type", "=", self.rtype), ("ced_code", "=", self.code)], limit=1) if not self.acc: self.new = True if self.rtype == "D" and self.code == 1: showInfo(self.opts["mf"].body, "PAYE", "This code is Reserved for PAYE Deductions") elif self.rtype == "D" and self.code == 2: showInfo(self.opts["mf"].body, "UIF", "This code is Reserved for UIF Deductions") else: self.new = False d = 3 self.df.loadEntry(frt, pag, p + 1, data=self.acc[d]) for pg in range(1, self.df.pgs + 1): for x in range(0, self.df.topq[pg]): if pg == 2 and x == 1: continue self.df.loadEntry("T", pg, x, data=self.acc[d]) if pg == 2 and not x: ror = self.sql.getRec("wagrcv", limit=1, cols=["rcv_desc"], where=[("rcv_code", "=", self.acc[d])]) if not ror: desc = "" else: desc = ror[0] self.df.loadEntry("T", 2, 1, data=desc) d = d + 1
def doEnd(self): self.df.closeProcess() recs = self.sql.getRec("cshana", where=[("can_cono", "=", self.opts["conum"]), ("can_trdt", "between", self.fm, self.to), ("can_gflag", "=", "N")], order="can_trdt") if not recs: showInfo(self.opts["mf"].window, "Merge", "There are No Records to Merge.") else: for rec in recs: # Expense and Income acc = self.sql.getRec("gentrn", cols=["max(glt_refno)"], where=[("glt_cono", "=", self.opts["conum"]), ("glt_acno", "=", self.cshctl), ("glt_type", "=", 4), ("glt_refno", "like", "CS_______")], limit=1) if acc: try: auto = int(acc[0][2:]) + 1 except: auto = 1 else: auto = 1 refno = "CS%07d" % auto ttyp = rec[self.sql.cshana_col.index("can_type")] iamnt = rec[self.sql.cshana_col.index("can_incamt")] vamnt = rec[self.sql.cshana_col.index("can_vatamt")] eamnt = float(ASD(iamnt) - ASD(vamnt)) if ttyp == "T": iamnt = float(ASD(0) - ASD(iamnt)) vamnt = float(ASD(0) - ASD(vamnt)) eamnt = float(ASD(0) - ASD(eamnt)) vcod = rec[self.sql.cshana_col.index("can_vatcod")] data = [rec[self.sql.cshana_col.index("can_cono")]] acno = rec[self.sql.cshana_col.index("can_code")] trdt = rec[self.sql.cshana_col.index("can_trdt")] curdt = int(trdt / 100) data.extend([acno, curdt, trdt, 4, refno, "CSHMRGE", eamnt, vamnt, "Cash Analysis", vcod]) data.extend(["", 0, self.opts["capnm"], self.sysdt]) self.sql.insRec("gentrn", data=data) # VAT Control data[1] = self.vatctl data[7] = vamnt data[8] = 0 self.sql.insRec("gentrn", data=data) # Cash Control data[1] = self.cshctl data[7] = float(ASD(0) - ASD(iamnt)) data[8] = 0 data[9] = rec[self.sql.cshana_col.index("can_desc")] self.sql.insRec("gentrn", data=data) # VAT Record data = [rec[self.sql.cshana_col.index("can_cono")]] data.append(vcod) if ttyp == "T": data.append("O") else: data.append("I") data.extend([curdt, "G", 4, "CSHMRG", refno, trdt, acno, "Cash Analysis", eamnt, vamnt, 0, self.opts["capnm"], self.sysdt]) self.sql.insRec("ctlvtf", data=data) # Update seq = rec[self.sql.cshana_col.index("can_seq")] self.sql.updRec("cshana", cols=["can_gflag"], data=["Y"], where=[("can_seq", "=", seq)]) self.opts["mf"].dbm.commitDbase(True) self.closeProcess()