Example #1
0
 def doStkQuery(self):
     callModule(self.opts["mf"],
                self.df,
                "st4010",
                coy=(self.opts["conum"], self.opts["conam"]),
                period=self.opts["period"],
                user=self.opts["capnm"])
Example #2
0
 def queryAss(self):
     callModule(self.opts["mf"],
                self.df,
                "ar4010",
                coy=(self.opts["conum"], self.opts["conam"]),
                period=self.opts["period"],
                user=self.opts["capnm"])
Example #3
0
 def doCrsQuery(self):
     callModule(self.opts["mf"],
                self.df,
                "cr4010",
                coy=(self.opts["conum"], self.opts["conam"]),
                period=None,
                user=self.opts["capnm"])
Example #4
0
 def queryDrs(self):
     callModule(self.opts["mf"],
                self.df,
                "dr4010",
                coy=(self.opts["conum"], self.opts["conam"]),
                period=None,
                user=self.opts["capnm"])
Example #5
0
 def doEnd(self):
     self.df.closeProcess()
     if self.opts["period"][0] == 1:
         self.sql.updRec("ctlynd", cols=["cye_start", "cye_end"],
             data=[self.s0, self.e0], where=[("cye_cono", "=",
             self.opts["conum"]), ("cye_period", "=", 0)])
     for per in self.pers:
         num = per[self.sql.ctlynd_col.index("cye_period")]
         if num == self.opts["period"][0]:
             self.start = self.s_per
             self.end = self.e_per
         else:
             self.start = self.getStartDate(self.end)
             self.end = self.getEndDate(self.start)
         self.sql.updRec("ctlynd", cols=["cye_start", "cye_end"],
             data=[self.start, self.end], where=[("cye_cono", "=",
             self.opts["conum"]), ("cye_period", "=", num)])
     spl = SplashScreen(self.opts["mf"].body,
         text="Running Year End Routine for Period %s" % num)
     per = getPeriods(self.opts["mf"], self.opts["conum"], num - 1)
     per = (num - 1, (per[0].work, per[0].disp), (per[1].work, per[1].disp))
     callModule(self.opts["mf"], None, "msy010", coy=(self.opts["conum"],
         self.opts["conam"]), period=per, user=self.opts["capnm"], args="N")
     spl.closeSplash()
     self.opts["mf"].dbm.commitDbase(ask=True)
     self.opts["mf"].closeLoop()
Example #6
0
 def maintainDrs(self):
     callModule(self.opts["mf"],
                self.df,
                "dr1010",
                coy=(self.opts["conum"], self.opts["conam"]),
                period=None,
                user=self.opts["capnm"])
Example #7
0
 def doPrint(self):
     if not self.newtyp:
         callModule(self.opts["mf"],
                    None,
                    "bc3080",
                    coy=[self.opts["conum"], self.opts["conam"]],
                    args=[self.ctype, self.cdesc])
         self.df.focusField(self.df.frt, self.df.pag, self.df.col)
Example #8
0
 def doStrMaint(self):
     state = self.df.disableButtonsTags()
     cf = PwdConfirm(self.opts["mf"],
                     conum=self.opts["conum"],
                     system="STR",
                     code="NewStr")
     if cf.flag == "yes":
         callModule(self.opts["mf"],
                    self.df,
                    "st1010",
                    coy=(self.opts["conum"], self.opts["conam"]),
                    period=None,
                    user=self.opts["capnm"])
     self.df.enableButtonsTags(state=state)
     self.df.focusField(self.df.frt, self.df.pag, self.df.col)
Example #9
0
 def doLonAcc(self, frt, pag, r, c, p, i, w):
     newacc = False
     if not w and self.opts["rtn"] == 1:
         yn = askQuestion(self.opts["mf"].body,
                          "New Account",
                          "Is This a New Account?",
                          default="no")
         if yn == "no":
             return "Invalid Account Number"
         newacc = True
         w = callModule(self.opts["mf"],
                        self.df,
                        "ln1010",
                        coy=(self.allcoy, self.allnam),
                        user=self.opts["capnm"],
                        args="auto",
                        ret="acno")
         self.df.loadEntry(frt, pag, p, data=w)
     acc = self.sql.getRec("lonmf1",
                           cols=["lm1_name"],
                           where=[("lm1_cono", "=", self.allcoy),
                                  ("lm1_acno", "=", w)],
                           limit=1)
     if not acc:
         return "Invalid Account Number"
     self.lonacc = w
     self.df.loadEntry(frt, pag, p + 1, data=acc[0])
     if newacc:
         self.lonnum = 1
         self.newlon = True
         self.df.loadEntry(frt, pag, p + 2, data=self.lonnum)
         return "sk2"
Example #10
0
 def doCode(self, frt, pag, r, c, p, i, w):
     if self.glint == "N" and not w:
         ok = askQuestion(self.opts["mf"].body,
                          "Code Maintenance",
                          "Do You Want to Add or Edit Codes?",
                          default="no")
         if ok == "no":
             return "rf"
         w = callModule(self.opts["mf"],
                        self.df,
                        "cs1010",
                        coy=[self.opts["conum"], self.opts["conam"]],
                        user=self.opts["capnm"],
                        args=True,
                        ret="acno")
         self.df.loadEntry(frt, pag, p, data=w)
     if self.glint == "Y":
         acc = self.sql.getRec("genmst",
                               cols=["glm_desc", "glm_vat"],
                               where=[("glm_cono", "=", self.opts["conum"]),
                                      ("glm_acno", "=", w)],
                               limit=1)
     else:
         acc = self.sql.getRec("cshmst",
                               cols=["ccm_desc", "ccm_vat"],
                               where=[("ccm_cono", "=", self.opts["conum"]),
                                      ("ccm_acno", "=", w)],
                               limit=1)
     if not acc:
         return "Invalid Code"
     self.code = w
     self.vcod = acc[1]
     self.df.loadEntry(frt, pag, p + 1, data=acc[0])
Example #11
0
 def doSecEnd(self):
     ccod = getNextCode(self.sql, "bwlcmp", "bcm_code",
         where=[("bcm_cono", "=", self.opts["conum"])], last=999)
     self.sql.updRec("bwlcmp", cols=["bcm_poff"], data=[ccod],
         where=[("bcm_cono", "=", self.opts["conum"]),
         ("bcm_code", "=", self.ccod)])
     cdes = self.cdes + " Play-Off"
     t = time.localtime()
     cdte = ((t[0] * 10000) + (t[1] * 100) + t[2])
     self.sql.insRec("bwlcmp", data=[self.opts["conum"],
         ccod, cdes, cdte, 0, ""])
     for skp in self.swin:
         self.sql.insRec("bwlent", data=[self.opts["conum"],
             ccod, skp, 0, "Y", ""])
     callModule(self.opts["mf"], self.df, "bc2050", coy=[self.opts["conum"],
         self.opts["conam"]], args=ccod)
Example #12
0
 def doEnd(self):
     self.df.closeProcess()
     # Headings and Mail subject
     self.cdes = "%-30s" % self.opts["conam"]
     start = self.getDate(self.start)
     end = self.getDate(projectDate(self.end, 1))
     if self.period == "D":
         self.hdes = "Arrivals for Weekdays %s to %s" % (start, end)
     elif self.period == "E":
         self.hdes = "Arrivals for Weekend %s to %s" % (start, end)
     else:
         self.hdes = "Arrivals for Period %s to %s" % (start, end)
     self.fpdf = MyFpdf(name=self.__class__.__name__, head=80, auto=True)
     self.fpdf.header = self.pageHeading
     self.rtyp = "A"
     self.doArrival()
     if self.house == "Y":
         self.rtyp = "H"
         self.hdes = self.hdes.replace("Arrivals", "Units")
         if self.fpdf.page:
             self.fpdf.add_page()
         self.doHKeeping()
     if self.fpdf.page:
         pdfnam = getModName(self.opts["mf"].rcdic["wrkdir"],
             self.__class__.__name__, self.opts["conum"], ext="pdf")
         self.fpdf.output(pdfnam, "F")
         subj = "%s - %s" % (self.cdes, self.hdes)
         doPrinter(mf=self.opts["mf"], conum=self.opts["conum"],
             pdfnam=pdfnam, header=subj, repprt=self.df.repprt,
             fromad=self.fromad, repeml=self.df.repeml)
     if self.prtinv == "Y" and self.docs:
         # Print Invoice
         self.docs.sort()
         PrintBookingInvoice(self.opts["mf"], self.opts["conum"],
             self.opts["conam"], "I", self.docs, tname=self.tname,
             repprt=self.df.repprt, repeml=self.df.repeml)
         # Print Statement
         self.book.sort()
         callModule(self.opts["mf"], None, "bk3070",
             coy=(self.opts["conum"], self.opts["conam"]),
             args=[self.book, self.df.repprt, self.df.repeml])
     if "wait" not in self.opts:
         self.opts["mf"].closeLoop()
Example #13
0
 def doDelivery(self, frt, pag, r, c, p, i, w):
     if w:
         acc = self.sql.getRec("drsdel",
                               where=[("del_code", "=", w)],
                               limit=1)
         if not acc:
             ok = askQuestion(self.opts["mf"].body, head="Delivery Address",
                 mess="This Delivery Address Does Not Exist, Would "\
                 "You Like to Create It Now?", default="no")
             if ok == "no":
                 return "rf"
             callModule(self.opts["mf"],
                        self.df,
                        "drc410",
                        coy=(self.opts["conum"], self.opts["conam"]),
                        period=None,
                        user=None,
                        args=w)
             acc = self.sql.getRec("drsdel",
                                   where=[("del_code", "=", w)],
                                   limit=1)
             if not acc:
                 return "rf"
Example #14
0
 def doVatCod(self, frt, pag, r, c, p, i, w):
     self.vat = w
     acc = self.doReadVat(self.vat)
     if not acc:
         ok = askQuestion(
             self.opts["mf"].body, "VAT Code",
             "This Code Does Not Exist, Do You Want to Create It?")
         if ok == "no":
             return "Invalid Code"
         state = self.df.disableButtonsTags()
         self.df.setWidget(self.df.mstFrame, state="hide")
         callModule(self.opts["mf"],
                    None,
                    "ms1040",
                    coy=(self.opts["conum"], self.opts["conam"]),
                    user=self.opts["capnm"],
                    args=self.vat)
         self.df.setWidget(self.df.mstFrame, state="show")
         self.df.enableButtonsTags(state=state)
         acc = self.doReadVat(self.vat)
         if not acc:
             self.df.loadEntry(frt, pag, p, data="")
             return "Invalid Code"
Example #15
0
 def doCmpTyp(self, frt, pag, r, c, p, i, w):
     if not w:
         ok = askQuestion(self.opts["mf"].body, head="New Type",
             mess="Is This a New Competition Type?")
         if ok == "yes":
             w = getNextCode(self.sql, "bwltyp", "bct_code",
                 where=[("bct_cono", "=", self.opts["conum"])], last=99)
             w = callModule(self.opts["mf"], self.df, "bc1040",
                 coy=(self.opts["conum"], self.opts["conam"]), args=w,
                 ret="ctype")
             self.df.loadEntry(frt, pag, p, data=w)
     self.typ = self.sql.getRec("bwltyp", where=[("bct_cono", "=",
         self.opts["conum"]), ("bct_code", "=", w)], limit=1)
     if not self.typ:
         return "Invalid Competition Type"
     self.cfmat = self.typ[self.sql.bwltyp_col.index("bct_cfmat")]
     self.tsize = self.typ[self.sql.bwltyp_col.index("bct_tsize")]
Example #16
0
 def strEnd(self):
     self.rs.closeProcess()
     col = self.sql.genstr_col
     for rep in self.strm:
         args = {"stream": True}
         args["end"] = self.end
         args["typ"] = rep[col.index("gls_typ")]
         args["cno"] = rep[col.index("gls_cno")]
         args["con"] = rep[col.index("gls_con")]
         args["dep"] = "N"
         args["dpl"] = [0]
         args["rep"] = rep[col.index("gls_rep")]
         args["gen"] = rep[col.index("gls_gen")]
         args["val"] = rep[col.index("gls_val")]
         args["det"] = rep[col.index("gls_det")]
         if args["typ"] == "M":
             args["var"] = "N"
         else:
             args["var"] = rep[col.index("gls_var")]
             if not args["var"]:
                 args["var"] = "B"
         args["zer"] = rep[col.index("gls_zer")]
         args["opt"] = rep[col.index("gls_opt")]
         if not args["opt"]:
             args["opt"] = "N"
         args["num"] = rep[col.index("gls_num")]
         if not args["num"]:
             args["num"] = "Y"
         var = callModule(self.opts["mf"], None, "gl3050",
             coy=(self.opts["conum"], self.opts["conam"]),
             period=self.opts["period"], args=args,
             ret=["fpdf", "emlhead"])
         if var:
             nam = os.path.join(self.tmp, "report%s.pdf" % self.count)
             self.fles.append(nam)
             var["fpdf"].output(nam)
             des = var["emlhead"].lower()
             des = " ".join(w.capitalize() for w in des.split())
             self.mess = "%s\n%2s) %s - %s" % (self.mess, self.count,
                 "General Ledger", des)
             self.count += 1
     if var:
         self.sql.insRec("rptstr", data=[self.opts["conum"],
             self.rgrp, "gl3050", str([[self.end, self.stno, "S", "N",
             "N", 1, "N", "V", "", "", "B", "Y", "Y", "Y"]])])
Example #17
0
 def doVCode(self, frt, pag, r, c, p, i, w):
     self.vatrte = getVatRate(self.sql, self.opts["conum"], w, self.date)
     if self.vatrte is None:
         ask = askQuestion(self.opts["mf"].body,
                           "New Code",
                           "Code Does Not Exist, Create a New Code?",
                           default="no")
         if ask == "no":
             return "Invalid VAT Code"
         w = callModule(self.opts["mf"],
                        self.df,
                        "ms1040",
                        coy=[self.opts["conum"], self.opts["conam"]],
                        user=self.opts["capnm"],
                        args=w,
                        ret="code")
         self.df.loadEntry(frt, pag, p, data=w)
     self.vatrte = getVatRate(self.sql, self.opts["conum"], w, self.date)
     if self.vatrte is None:
         return "Invalid VAT Code"
Example #18
0
 def doEnd(self):
     err = None
     if self.same == "Y":
         if self.mstart + 400 > self.nstart:
             err = "Invalid Range, Too Few Members Allowed For"
     elif self.mstart == self.fstart and self.same == "N":
         err = "Same Male and Female Starting Numbers"
     elif self.mstart < self.fstart:
         if self.fstart - self.mstart < 200:
             err = "Invalid Range, Too Few Male Numbers"
         elif self.nstart < self.fstart + 200:
             err = "Invalid Range, Too Few Female Numbers"
     elif self.mstart - self.fstart < 200:
         err = "Invalid Range, Too Few Female Numbers"
     elif self.nstart < self.mstart + 200:
         err = "Invalid Range, Too Few Male Numbers"
     if err:
         self.df.focusField("T", 0, 3, err=err)
     else:
         data = [self.opts["conum"]]
         if not self.memctl:
             data.extend(["N", "N"])
         for x in range(0, len(self.df.t_work[0][0])):
             data.append(self.df.t_work[0][0][x])
         if self.new:
             self.sql.insRec("bwlctl", data=data)
         elif data != self.acc[:len(data)]:
             col = self.sql.bwlctl_col
             data.append(self.acc[col.index("ctb_xflag")])
             self.sql.updRec("bwlctl",
                             data=data,
                             where=[("ctb_cono", "=", self.opts["conum"])])
             dte = int("%04i%02i%02i%02i%02i%02i" % time.localtime()[:-3])
             for num, dat in enumerate(self.acc):
                 if dat != data[num]:
                     self.sql.insRec("chglog",
                                     data=[
                                         "bwlctl", "U",
                                         "%03i" % self.opts["conum"],
                                         col[num], dte, self.opts["capnm"],
                                         str(dat),
                                         str(data[num]), "", 0
                                     ])
         if self.chgint and self.oldint == "Y":
             recs = self.sql.getRec("bwltab",
                                    cols=["btb_memno"],
                                    where=[("btb_cono", "=",
                                            self.opts["conum"])])
             for rec in recs:
                 data = self.doLoadMember(rec[0])
                 if data == [0, "", "", "", "", "", "", "", ""]:
                     continue
                 self.sql.updRec("bwltab",
                                 cols=[
                                     "btb_memno", "btb_add1", "btb_add2",
                                     "btb_add3", "btb_pcod", "btb_home",
                                     "btb_work", "btb_cell", "btb_mail"
                                 ],
                                 data=data,
                                 where=[("btb_cono", "=",
                                         self.opts["conum"]),
                                        ("btb_memno", "=", rec[0])])
         if not self.new and (self.mstart != self.oldm or \
                 self.fstart != self.oldf or self.nstart != self.oldn):
             # Tab ranges changed
             ok = askQuestion(self.opts["mf"].body, "Ranges", "Tab Ranges "\
                 "Have Changed, Do You Want to Change the Tabs to the "\
                 "New Ranges?", default="no")
             if ok == "yes":
                 mdif = self.mstart - self.oldm
                 fdif = self.fstart - self.oldf
                 ndif = self.nstart - self.oldn
                 recs = []
                 if ndif > 0:
                     recs.extend(self.getNon())
                 if self.oldm > self.oldf:
                     recs.extend(self.getWom())
                     recs.extend(self.getMen())
                 else:
                     recs.extend(self.getMen())
                     recs.extend(self.getWom())
                 if ndif < 0:
                     recs.extend(self.getNon())
                 self.df.setWidget(self.df.mstFrame, state="hide")
                 pb = ProgressBar(self.opts["mf"].body,
                                  typ="Changing Tabs",
                                  mxs=len(recs))
                 for num, rec in enumerate(recs):
                     pb.displayProgress(num)
                     tab = rec[self.sql.bwltab_col.index("btb_tab")]
                     gdr = rec[self.sql.bwltab_col.index("btb_gender")]
                     if tab < self.oldn:
                         if gdr == "M":
                             new = tab + mdif
                         else:
                             new = tab + fdif
                     else:
                         new = tab + ndif
                     callModule(
                         self.opts["mf"],
                         None,
                         "bc6010",
                         coy=[self.opts["conum"], self.opts["conam"]],
                         args=[tab, new])
                 pb.closeProgress()
                 self.df.setWidget(self.df.mstFrame, state="show")
         self.opts["mf"].dbm.commitDbase()
         self.doExit()
Example #19
0
 def doExit(self):
     if self.df.frt == "C" and self.df.col != 1:
         chk = self.sql.getRec("bwlgme", where=[("bcg_cono", "=",
             self.opts["conum"]), ("bcg_ccod", "=", self.ccod), ("bcg_game",
             "=", self.gcod), ("bcg_aflag", "in", ("", "D"))])
         for c in chk:
             scod = c[self.sql.bwlgme_col.index("bcg_scod")]
             ocod = c[self.sql.bwlgme_col.index("bcg_ocod")]
             if scod > 900000 or ocod > 900000:
                 continue
             if self.ponly == "Y":
                 fors = c[self.sql.bwlgme_col.index("bcg_points")]
                 agts = self.sql.getRec("bwlgme",
                     cols=["bcg_points"], where=[("bcg_cono", "=",
                     self.opts["conum"]), ("bcg_ccod", "=", self.ccod),
                     ("bcg_game", "=", self.gcod), ("bcg_scod",
                     "=", ocod)], limit=1)[0]
             else:
                 fors = c[self.sql.bwlgme_col.index("bcg_sfor")]
                 agts = c[self.sql.bwlgme_col.index("bcg_sagt")]
             if not fors and not agts:
                 self.df.focusField(self.df.frt, self.df.pag, self.df.col,
                     err="Missing Score Card for Skips %s and %s" % (scod,
                     ocod))
                 return
         if self.cfmat in ("D", "K") and self.gcod != self.games:
             # Delete Next Round's Records
             whr = [
                 ("bcg_cono", "=", self.opts["conum"]),
                 ("bcg_ccod", "=", self.ccod)]
             w = whr[:]
             w.append(("bcg_game", ">", self.gcod))
             self.sql.delRec("bwlgme", where=w)
             # Create Next Round's Records
             whr.append(("bcg_game", "=", self.gcod))
             odr = "bcg_group, bcg_pair, bcg_scod"
             g = self.sql.bwlgme_col
             for grp in range(1, 3):
                 w = whr[:]
                 w.append(("bcg_group", "=", grp))
                 recs = self.sql.getRec("bwlgme", where=w, order=odr)
                 for num in range(0, len(recs), 2):
                     pair = int(num / 2) + 1
                     rec1 = copyList(recs[num])
                     if len(recs) == 1:
                         w = whr[:]
                         w.append(("bcg_group", "=", 2))
                         rec2 = self.sql.getRec("bwlgme", where=w,
                             order=odr, limit=1)
                         grp = 2
                     else:
                         rec2 = copyList(recs[num + 1])
                     skp1 = rec1[g.index("bcg_scod")]
                     opp1 = rec1[g.index("bcg_ocod")]
                     for1 = rec1[g.index("bcg_sfor")]
                     agt1 = rec1[g.index("bcg_sagt")]
                     skp2 = rec2[g.index("bcg_scod")]
                     opp2 = rec2[g.index("bcg_ocod")]
                     for2 = rec2[g.index("bcg_sfor")]
                     agt2 = rec2[g.index("bcg_sagt")]
                     if opp1 > 900000:
                         pl1 = skp1
                     elif for1 > agt1:
                         pl1 = skp1
                     else:
                         pl1 = opp1
                     if opp2 > 900000:
                         pl2 = skp2
                     elif for2 > agt2:
                         pl2 = skp2
                     else:
                         pl2 = opp2
                     dat = [self.opts["conum"], self.ccod, pl1,
                         self.gcod + 1, "D", 0, pl2, "", grp, 0,
                         0, 0.0, 0, 0, 0.0, "", 0, pair]
                     self.sql.insRec("bwlgme", data=dat)
                 if len(recs) == 1:
                     break
             self.opts["mf"].dbm.commitDbase()
         if self.cfmat in ("D", "K"):
             callModule(self.opts["mf"], self.df, "bc2050",
                 coy=[self.opts["conum"], self.opts["conam"]],
                 args=self.ccod)
     self.df.closeProcess()
     self.opts["mf"].closeLoop()
Example #20
0
 def doEnd(self):
     self.df.closeProcess()
     if not self.new:
         self.sql.delRec("rptstm", where=[("rsm_cono", "=",
             self.opts["conum"]), ("rsm_rgrp", "=", self.rgrp)])
         self.sql.delRec("rptstr", where=[("rsr_cono", "=",
             self.opts["conum"]), ("rsr_rgrp", "=", self.rgrp)])
     self.sql.insRec("rptstm", data=[self.opts["conum"], self.rgrp,
         self.tadd])
     titl = "Report Stream"
     cols = (
         ("a", "", 0, "CB", "N"),
         ("b", "R-Code", 6, "NA", "N"),
         ("c", "System", 25, "NA", "N"),
         ("d", "Report", 30, "NA", "N"))
     data = []
     for mod in self.mods:
         if mod[0] in self.smod:
             data.append(["X", mod[0], mod[1], mod[2]])
         else:
             data.append(["", mod[0], mod[1], mod[2]])
     sc = SelectChoice(self.opts["mf"].body, titl, cols, data)
     if sc.selection:
         self.count = 1
         self.fles = []
         self.tmp = os.path.join(self.opts["mf"].rcdic["wrkdir"], "temp")
         if os.path.exists(self.tmp):
             shutil.rmtree(self.tmp)
         os.mkdir(self.tmp)
         if self.styp == "E":
             self.mess = "Attached please find the following reports:\n"
         else:
             self.mess = "Reports to Print:\n"
         for mod in sc.selection:
             if mod[1] == "gl3050":
                 self.doGetStream()
             if self.strm:
                 self.strm = None
                 continue
             self.opts["mf"].head.configure(text="")
             try:
                 if mod[1] in self.smod:
                     work = eval(self.smod[mod[1]])
                 else:
                     raise Exception
             except:
                 work = self.vars[mod[1]]
             var = callModule(self.opts["mf"], None, mod[1],
                 coy=(self.opts["conum"], self.opts["conam"]),
                 period=self.opts["period"], user=self.opts["capnm"],
                 args={"noprint": True, "work": work}, ret=["fpdf",
                 "t_work"])
             if var:
                 nam = os.path.join(self.tmp, "report%s.pdf" % self.count)
                 self.fles.append(nam)
                 var["fpdf"].output(nam)
                 self.mess = "%s\n%2s) %s - %s" % (self.mess, self.count,
                     mod[2], mod[3])
                 self.sql.insRec("rptstr", data=[self.opts["conum"],
                     self.rgrp, mod[1], str(var["t_work"])])
                 self.count += 1
         if self.fles:
             if self.styp == "E":
                 self.mess = "%s\n\nRegards" % self.mess
                 ok = askQuestion(self.opts["mf"].body, "Mail Reports",
                     self.mess, default="yes")
                 if ok == "yes":
                     self.doEmailReps()
             else:
                 ok = askQuestion(self.opts["mf"].body, "Print Reports",
                     self.mess, default="yes")
                 if ok == "yes":
                     self.doPrintReps()
             for fle in self.fles:
                 os.remove(fle)
     self.opts["mf"].dbm.commitDbase(True)
     self.closeProcess()
Example #21
0
 def doCalendar(self):
     self.number = 0
     self.ptyp = None
     self.newb = False
     udics = {}
     self.start = projectDate(self.sysdtw, -7)
     bkm = self.sql.getRec("bkmmst",
                           cols=["max(bkm_depart)"],
                           where=[("bkm_cono", "=", self.opts["conum"]),
                                  ("bkm_state", "<>", "X")],
                           limit=1)
     if not bkm or bkm[0] is None:
         days = 15
     else:
         days = dateDiff(self.start, bkm[0], "days") + 1
         if days < 15:
             days = 15
     bkmunm = self.sql.getRec("bkmunm",
                              where=[("bum_cono", "=", self.opts["conum"]),
                                     ("bum_maxg", "<>", 999)],
                              order="bum_btyp, bum_code")
     if not bkmunm:
         showError(self.opts["mf"].body, "Units",
                   "No Units in the Database")
         self.quit = True
         return
     col = self.sql.bkmunm_col
     for num, unit in enumerate(bkmunm):
         t = unit[col.index("bum_btyp")]
         c = unit[col.index("bum_code")]
         d = unit[col.index("bum_desc")]
         m = unit[col.index("bum_maxg")]
         if t == "A" and c == "ALL":
             continue
         udics["%s-%s" % (t, c)] = [d, CCD(m, "UI", 3).disp] + [""] * days
     for x in range(num, 10):
         t = "X"
         c = x - num
         d = ""
         m = "   "
         udics["%s-%s" % (t, c)] = [d, m] + [""] * days
     books = self.sql.getRec(tables="bkmmst",
                             cols=[
                                 "bkm_number", "bkm_btype", "bkm_arrive",
                                 "bkm_depart", "bkm_state"
                             ],
                             where=[("bkm_cono", "=", self.opts["conum"]),
                                    ("bkm_depart", ">=", self.start),
                                    ("bkm_state", "<>", "X")])
     for book in books:
         if book[2] < self.start:
             book[2] = self.start
         sday = dateDiff(self.start, book[2], "days")
         eday = dateDiff(self.start, book[3], "days")
         if book[1] == "O":
             eday += 1
         bkmrtt = self.sql.getRec("bkmrtt",
                                  cols=["brt_utype", "brt_ucode"],
                                  where=[("brt_cono", "=",
                                          self.opts["conum"]),
                                         ("brt_number", "=", book[0])])
         units = []
         for rtt in bkmrtt:
             units.append("%s-%s" % tuple(rtt))
         if "A-ALL" in units:
             units.remove("A-ALL")
             for unit in udics:
                 if unit[0] == "A":
                     units.append(unit)
         for unit in units:
             if unit not in udics:
                 continue
             for d in range(sday, eday):
                 if book[4] == "Q":
                     udics[unit][d + 2] = "Query|%s" % book[0]
                 elif book[4] == "C":
                     udics[unit][d + 2] = "Confirmed|%s" % book[0]
                 elif book[4] == "S":
                     udics[unit][d + 2] = "Settled|%s" % book[0]
     titl = ("%03i %s" % (self.opts["conum"], self.opts["conam"]),
             "Lodging and Function Bookings Calendar (bk1010)")
     labs = (("Code", 8), ("Description", 30), ("Qty", 4))
     tags = [("blank", ("black", "white")),
             ("label", ("black", "lightgray")),
             ("query", (self.opts["mf"].rcdic["qfg"],
                        self.opts["mf"].rcdic["qbg"])),
             ("confirm", (self.opts["mf"].rcdic["cfg"],
                          self.opts["mf"].rcdic["cbg"])),
             ("settle", (self.opts["mf"].rcdic["sfg"],
                         self.opts["mf"].rcdic["sbg"]))]
     cols = [[]]
     for x in range(days):
         d1 = CCD(projectDate(self.start, x), "D1", 10)
         d2 = time.strftime("%A", time.strptime(str(d1.work), "%Y%m%d"))
         txt = "%s\n%s" % ("{:^10}".format(d2), d1.disp)
         cols[0].append((txt, 10))
     keys = list(udics.keys())
     keys.sort()
     data = []
     for row, key in enumerate(keys):
         cod = ("%s" % key, "label")
         des = ("%s" % udics[key][0], "label")
         qty = ("%-s" % udics[key][1], "label")
         lab = (cod, des, qty)
         col = []
         lst = None
         tag = ""
         spn = 1
         for c, d in enumerate(udics[key][2:]):
             if d == lst:
                 spn += 1
                 continue
             if lst is not None:
                 col.append((txt, tag, spn))
                 spn = 1
             lst = d
             if not d:
                 num = 0
                 txt = "\n"
                 tag = "blank"
             else:
                 sta, num = d.split("|")
                 txt = "%s\n%s" % (num, sta)
                 if sta == ("Query"):
                     tag = "query"
                 elif sta == ("Confirmed"):
                     tag = "confirm"
                 elif sta == ("Settled"):
                     tag = "settle"
         if spn > 300:
             col.append((txt, tag, 300))
             col.append((txt, tag, spn - 300))
         else:
             col.append((txt, tag, spn))
         data.append((lab, col))
     butt = [("New Booking", self.doNew), ("Search Bookings", self.doSch),
             ("Deposits List", (self.doRep, "D")),
             ("Arrivals List", (self.doRep, "L")), ("Quit", self.doQuit)]
     cmds = [("<Double-1>", self.doBkm), ("<Button-3>", self.doEnq)]
     self.cal = ScrollGrid(
         **{
             "mf":
             self.opts["mf"],
             "titl":
             titl,
             "chgt":
             2,
             "tags":
             tags,
             "labs":
             labs,
             "cols":
             cols,
             "data":
             data,
             "butt":
             butt,
             "cmds":
             cmds,
             "font": (self.opts["mf"].rcdic["mft"],
                      self.opts["mf"].rcdic["dfs"]),
             "wait":
             False,
             "minc":
             14
         })
     self.opts["mf"].startLoop(deicon=False)
     if self.tt:
         self.tt.hideTip()
         self.tt = None
     self.cal.window.destroy()
     self.opts["mf"].setThemeFont()
     self.opts["mf"].window.deiconify()
     if not self.ptyp and not self.quit:
         callModule(self.opts["mf"],
                    None,
                    "bk1020",
                    coy=(self.opts["conum"], self.opts["conam"]),
                    user=self.opts["capnm"],
                    args=self.number)
     elif self.ptyp == "D":
         callModule(self.opts["mf"],
                    None,
                    "bk3010",
                    coy=(self.opts["conum"], self.opts["conam"]),
                    args=True)
     elif self.ptyp == "L":
         callModule(self.opts["mf"],
                    None,
                    "bk3030",
                    coy=(self.opts["conum"], self.opts["conam"]),
                    user=self.opts["capnm"],
                    args=True)
Example #22
0
 def updateTables1(self):
     if self.bh.multi == "Y":
         self.curdt = int(self.trndat / 100)
     else:
         self.curdt = self.bh.curdt
     self.amt = self.coyamt
     self.vat = self.trnvat
     if self.trnmov == 4:
         self.net = float(ASD(0) - ASD(self.coyamt))
         self.ror = float(ASD(0) - ASD(self.roramt))
     else:
         self.net = self.ror = float(ASD(self.coyamt) - ASD(self.trnvat))
     if self.opts["rtn"] == 1:  # Payments
         if self.coyamt == 0:
             self.recon = self.curdt
         else:
             self.recon = 0
         acc = self.assacc
         self.glt = 2
     elif self.opts["rtn"] == 2:  # Receipts
         if self.coyamt == 0:
             self.recon = self.curdt
         else:
             self.recon = 0
         self.amt = float(ASD(0) - ASD(self.amt))
         self.vat = float(ASD(0) - ASD(self.vat))
         self.net = float(ASD(0) - ASD(self.net))
         acc = self.assacc
         self.glt = 6
     elif self.opts["rtn"] == 3:  # Journal Entries
         self.recon = 0
         if self.trnmov == 4:
             acc = self.depacc
         else:
             acc = self.assacc
         self.glt = 4
     # Asset Register Transaction
     data = [
         self.opts["conum"], self.group, self.code, self.opts["rtn"],
         self.trnref, self.bh.batno, self.trndat, self.trnmov, self.net,
         self.ror, self.vat, self.curdt, self.trndet, self.vatcode, "N",
         self.opts["capnm"], self.sysdtw, 0
     ]
     self.sql.insRec("asstrn", data=data)
     if self.vatcode:
         # VAT Transaction (ctlvtf)
         data = (self.opts["conum"], self.vatcode, "I", self.curdt, "A",
                 self.opts["rtn"], self.bh.batno, self.trnref, self.trndat,
                 self.code, self.trndet, self.amt, self.vat, 0,
                 self.opts["capnm"], self.sysdtw, 0)
         self.sql.insRec("ctlvtf", data=data)
     if self.glint == "N":
         return
     # General Ledger Asset or Depreciation Account
     data = (self.opts["conum"], acc, self.curdt, self.trndat, self.glt,
             self.trnref, self.bh.batno, self.net, self.vat, self.trndet,
             self.vatcode, "", 0, self.opts["capnm"], self.sysdtw, 0)
     self.sql.insRec("gentrn", data=data)
     if self.vat:
         # General Ledger Control Transaction (V.A.T.)
         data = [
             self.opts["conum"], self.convat, self.curdt, self.trndat,
             self.glt, self.trnref, self.bh.batno, self.vat, 0.00,
             self.trndet, "N", "", 0, self.opts["capnm"], self.sysdtw, 0
         ]
         self.sql.insRec("gentrn", data=data)
     self.amt = float(ASD(0) - ASD(self.amt))
     if self.opts["rtn"] in (1, 2):
         # General Ledger Control Transaction (Bank)
         data = [
             self.opts["conum"], self.bh.acc, self.curdt, self.trndat,
             self.glt, self.trnref, self.bh.batno, self.amt, 0.00,
             self.trndet, "N", "", self.recon, self.opts["capnm"],
             self.sysdtw, 0
         ]
         self.sql.insRec("gentrn", data=data)
     elif self.trnmov == 4:
         # General Ledger Expense Account (Depreciation)
         data = [
             self.opts["conum"], self.expacc, self.curdt, self.trndat,
             self.glt, self.trnref, self.bh.batno, self.coyamt, self.vat,
             self.trndet, "N", "", self.recon, self.opts["capnm"],
             self.sysdtw, 0
         ]
         self.sql.insRec("gentrn", data=data)
     if self.trnmov == 5:
         # Sale of Asset
         # Raise Depreciation
         callModule(self.opts["mf"],
                    None,
                    "ar2030",
                    coy=(self.opts["conum"], self.opts["conam"]),
                    period=self.opts["period"],
                    user=self.opts["capnm"],
                    args=(self.curdt, self.group, self.code))
         # Generate Sale
         amt = self.sql.getRec("asstrn",
                               cols=["sum(ast_amt1)"],
                               where=[("ast_cono", "=", self.opts["conum"]),
                                      ("ast_group", "=", self.group),
                                      ("ast_code", "=", self.code)],
                               limit=1)
         if amt[0]:
             data = [
                 self.opts["conum"], self.slsac, self.curdt, self.trndat,
                 self.glt, self.trnref, self.bh.batno, amt[0], 0,
                 self.trndet, "N", "", 0, self.opts["capnm"], self.sysdtw, 0
             ]
             self.sql.insRec("gentrn", data=data)
             data[1] = acc
             data[7] = float(ASD(0) - ASD(amt[0]))
             self.sql.insRec("gentrn", data=data)
Example #23
0
 def doSkpCod(self, frt, pag, r, c, p, i, w):
     if not w:
         ok = askQuestion(self.opts["mf"].body,
                          head="New Player",
                          mess="Is This a New Player?",
                          default="yes")
         if ok == "no":
             return "Invalid Code"
         cod = getNextCode(self.sql,
                           "scpmem",
                           "scm_scod",
                           where=[("scm_cono", "=", self.opts["conum"])],
                           last=899999)
         callModule(self.opts["mf"],
                    self.df,
                    "sc1010",
                    coy=[self.opts["conum"], self.opts["conam"]],
                    args=(cod, ))
         self.df.loadEntry(frt, pag, p, data=cod)
     else:
         cod = w
     if i == 0:
         if cod in self.parts:
             return "Invalid Skip, Already a Partner"
         self.skips.append(cod)
         self.scod = cod
     else:
         if cod in self.skips:
             return "Invalid Partner, Already a Skip"
         self.parts.append(cod)
         self.pcod = cod
     chk = self.sql.getRec("scpmem",
                           cols=["scm_surname", "scm_names", "scm_gender"],
                           where=[("scm_cono", "=", self.opts["conum"]),
                                  ("scm_scod", "=", cod)],
                           limit=1)
     if not chk:
         return "Invalid Player Code"
     if self.tsex in ("M", "F") and chk[2] != self.tsex:
         return "Invalid Gender"
     self.df.loadEntry(frt, pag, p + 1, data=self.getName(chk=chk))
     if i == 0:
         ent = self.sql.getRec("scpent",
                               cols=["sce_pcod"],
                               where=[("sce_cono", "=", self.opts["conum"]),
                                      ("sce_ccod", "=", self.ccod),
                                      ("sce_scod", "=", self.scod)],
                               limit=1)
         if ent:
             self.newent = False
             if ent[0]:
                 ptr = self.sql.getRec("scpmem",
                                       cols=["scm_surname", "scm_names"],
                                       where=[("scm_cono", "=",
                                               self.opts["conum"]),
                                              ("scm_scod", "=", ent[0])],
                                       limit=1)
                 self.df.loadEntry(frt, pag, p + 2, data=ent[0])
                 self.df.loadEntry(frt,
                                   pag,
                                   p + 3,
                                   data=self.getName(chk=ptr))
         else:
             self.newent = True
         if self.tsiz != 2:
             self.pcod = 0
             return "sk3"
Example #24
0
 def doEnder(self):
     self.df.closeProcess()
     recs = self.sql.getRec("memmst",
                            cols=["mlm_memno"],
                            where=[("mlm_cono", "=", self.opts["conum"]),
                                   ("mlm_state", "=", "A")])
     if self.ynd:
         p = ProgressBar(self.opts["mf"].body,
                         typ="Checking Member Categories",
                         mxs=len(recs))
         for num, acc in enumerate(recs):
             p.displayProgress(num)
             self.memno = acc[0]
             data = doChkCatChg(self.opts["mf"], self.opts["conum"],
                                self.memno, self.nxtdt)
             if data:
                 if not data[3]:
                     self.doRaiseCharge("B",
                                        data[0],
                                        data[1],
                                        data[2],
                                        data[3],
                                        data[4],
                                        data[5],
                                        data[6],
                                        skip=True)
                 dte = int("%04i%02i%02i%02i%02i%02i" % \
                     time.localtime()[:-3])
                 self.sql.delRec("memcat",
                                 where=[("mlc_cono", "=",
                                         self.opts["conum"]),
                                        ("mlc_memno", "=", self.memno),
                                        ("mlc_type", "=", "B"),
                                        ("mlc_code", "=", data[0])])
                 self.sql.insRec(
                     "chglog",
                     data=[
                         "memcat", "D",
                         "%03i%06i%1s%02i" %
                         (self.opts["conum"], self.memno, "B", data[0]), "",
                         dte, self.opts["capnm"],
                         str(data[1]),
                         str(data[2]), "", 0
                     ])
                 self.sql.insRec("memcat",
                                 data=[
                                     self.opts["conum"], self.memno, "B",
                                     data[7], "", self.nxtdt, 0, 0
                                 ])
                 self.sql.insRec(
                     "chglog",
                     data=[
                         "memcat", "N",
                         "%03i%06i%1s%02i" %
                         (self.opts["conum"], self.memno, "B", data[7]), "",
                         dte, self.opts["capnm"],
                         str(self.nxtdt),
                         str(0), "", 0
                     ])
         p.closeProgress()
         ok = askQuestion(self.opts["mf"].body,
                          "Category Changes",
                          "Would You Like to Display Category Changes?",
                          default="yes")
         if ok == "yes":
             callModule(self.opts["mf"],
                        None,
                        "ml3060",
                        coy=(self.opts["conum"], self.opts["conam"]),
                        args=(projectDate(self.lme, 1), self.nxtdt))
             ok = askQuestion(
                 self.opts["mf"].body,
                 "Continue",
                 "Would You Like to Continue with the Month End?",
                 default="yes")
             if ok == "no":
                 self.opts["mf"].closeLoop()
                 return
     p = ProgressBar(self.opts["mf"].body, typ="F", mxs=len(recs))
     for num, acc in enumerate(recs):
         p.displayProgress(num)
         self.memno = acc[0]
         if self.penalty == "Y":
             amount = 0
             join = "left outer join memage on mta_cono=mlt_cono and "\
                 "mta_memno=mlt_memno and mta_type=mlt_type and "\
                 "mta_refno=mlt_refno"
             cols = ["mlt_ctyp", "mlt_ccod", "sum(mlt_tramt)"]
             wher = [("mlt_cono", "=", self.opts["conum"]),
                     ("mlt_memno", "=", self.memno),
                     ("mlt_trdt", "<=", self.cutoff)]
             grps = "mlt_ctyp, mlt_ccod"
             ordr = "mlt_trdt"
             recs = self.sql.getRec("memtrn",
                                    join=join,
                                    cols=cols,
                                    where=wher,
                                    group=grps,
                                    order=ordr)
             for rec in recs:
                 key = "%s%02i" % (rec[0], rec[1])
                 if key in self.pcodes:
                     amt = round(rec[2] * self.pcodes[key] / 100.0, 2)
                     if amt > 0:
                         amount = float(ASD(amount) + ASD(amt))
             if amount:
                 self.doUpdateTables("", "", "Penalty on Overdue Amounts",
                                     self.penctl, self.tme, amount)
         cols = [
             "mlc_type", "mlc_code", "mcc_desc", "mcc_freq", "mlc_start",
             "mlc_end", "mlc_last", "mcc_glac"
         ]
         wher = [("mlc_cono", "=", self.opts["conum"]),
                 ("mlc_memno", "=", self.memno), ("mlc_start", ">", 0),
                 ("mlc_start", "<=", self.nxtdt), ("mcc_cono=mlc_cono", ),
                 ("mcc_type=mlc_type", ), ("mcc_code=mlc_code", ),
                 ("mcc_freq", "<>", "N")]
         cats = self.sql.getRec(tables=["memcat", "memctc"],
                                cols=cols,
                                where=wher,
                                order="mlc_type, mlc_code")
         for ctyp, code, desc, freq, start, end, last, glac in cats:
             if start > self.nxtdt:
                 # Not yet Started
                 continue
             if last and end and end < self.nxtdt:
                 # Ended
                 continue
             if last and freq == "O":
                 # Once Off
                 continue
             if not self.ynd and last and freq == "A" and \
                     last >= self.opts["period"][1][0] and \
                     last <= self.opts["period"][2][0]:
                 # Out of Period
                 continue
             self.doRaiseCharge(ctyp, code, start, end, last, freq, desc,
                                glac)
     p.closeProgress()
     self.sql.updRec("memctl",
                     cols=["mcm_lme"],
                     data=[self.tme],
                     where=[("mcm_cono", "=", self.opts["conum"])])
     ok = askQuestion(self.opts["mf"].body,
                      "Audit Trail",
                      "Would You Like to Display an Audit Trail?",
                      default="yes")
     if ok == "yes":
         callModule(self.opts["mf"],
                    None,
                    "ml3020",
                    coy=(self.opts["conum"], self.opts["conam"]),
                    args=("F", 0, self.nxtcd, 1, self.batch))
     self.opts["mf"].dbm.commitDbase(ask=True,
         mess="Do You Want To Save All Entries?\n\nPlease Note That "\
         "Once The Entries Have Been Saved, There Is No Going Back "\
         "Without Restoring From Backup!")
     if self.ynd and self.opts["mf"].dbm.commit == "yes":
         callModule(self.opts["mf"],
                    None,
                    "msy010",
                    coy=(self.opts["conum"], self.opts["conam"]),
                    period=self.opts["period"],
                    user=self.opts["capnm"],
                    args="N")
     self.opts["mf"].closeLoop()
Example #25
0
 def doEnd(self):
     self.df.closeProcess()
     tabels = [("genmst", "glm")]
     if self.df.t_work[0][0][1] == "Y":
         tabels.append(("ctlctl", "ctl"))
     if self.df.t_work[0][0][2] == "Y":
         tabels.append(("genbal", "glo"))
     if self.df.t_work[0][0][3] == "Y":
         tabels.append(("gentrn", "glt"))
     if self.df.t_work[0][0][4] == "Y":
         tabels.append(("genbud", "glb"))
     if self.df.t_work[0][0][5] == "Y":
         tabels.append(("genjlm", "gjm"))
         tabels.append(("genjlt", "gjt"))
     if self.df.t_work[0][0][6] == "Y":
         tabels.append(("genrpt", "glr"))
     if self.df.t_work[0][0][7] == "Y":
         tabels.append(("gendtm", "gdm"))
         tabels.append(("gendtt", "gdt"))
     if self.df.t_work[0][0][8] == "Y":
         tabels.append(("genstr", "gls"))
     for tab, ref in tabels:
         self.sql.delRec(tab,
                         where=[("%s_cono" % ref, "=", self.opts["conum"])])
         recs = self.sql.getRec(tables=tab,
                                where=[("%s_cono" % ref, "=", self.oldco)])
         if recs:
             p = ProgressBar(self.opts["mf"].body,
                             mxs=len(recs),
                             typ="Copying %s" % tab)
             for num, acc in enumerate(recs):
                 p.displayProgress(num)
                 coy = "%s_cono" % ref
                 col = getattr(self.sql, "%s_col" % tab)
                 acc[col.index(coy)] = self.opts["conum"]
                 self.sql.insRec(tab, data=acc)
             p.closeProgress()
     if self.df.t_work[0][0][9] == "Y":
         self.sql.delRec("ctlynd",
                         where=[("cye_cono", "=", self.opts["conum"])])
         ynds = self.sql.getRec("ctlynd",
                                where=[("cye_cono", "=", self.oldco),
                                       ("cye_period", "in", (0, 1))],
                                order="cye_period")
         for ynd in ynds:
             ynd[0] = self.opts["conum"]
             self.sql.insRec("ctlynd", data=ynd)
         mxp = self.sql.getRec("ctlynd",
                               cols=["max(cye_period)"],
                               where=[("cye_cono", "=", self.oldco)],
                               limit=1)
         for p in range(1, mxp[0]):
             pr = getPeriods(self.opts["mf"], self.oldco, p)
             per = (p, (pr[0].work, pr[0].disp), (pr[1].work, pr[1].disp))
             callModule(self.opts["mf"],
                        None,
                        "msy010",
                        coy=(self.opts["conum"], self.opts["conam"]),
                        period=per,
                        user=self.opts["capnm"],
                        args=pr[2])
     self.opts["mf"].dbm.commitDbase(ask=True)
     self.opts["mf"].closeLoop()