예제 #1
0
    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)
예제 #2
0
 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
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
    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()
예제 #7
0
 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
예제 #8
0
 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()