def drawSubjectNotebook(self): self.pages = ((len(self.content) - 1) / (self.lines_per_page - 2)) + 1 debtsum = 0 creditsum = 0 diagnose = "" remaining = int(self.content[0][3].replace(",", "")) - int( self.content[0][4].replace(",", "")) if self.content[0][5] == _("deb"): remaining -= int(self.content[0][6].replace(",", "")) else: remaining += int(self.content[0][6].replace(",", "")) if remaining < 0: diagnose = _("deb") sr = utility.LN(-(remaining)) else: if remaining == 0: diagnose = _("equ") else: diagnose = _("cre") sr = utility.LN(remaining) for page_nr in range(1, self.pages + 1): temp = self.lines_per_page * page_nr self.content.insert(self.lines_per_page * (page_nr - 1), ("", "", _("Sum of previous page"), debtsum, creditsum, diagnose, sr)) for data in self.content[(self.lines_per_page * (page_nr - 1) + 1):temp - 1]: debtsum += int(data[3].replace(",", "")) creditsum += int(data[4].replace(",", "")) diagnose = data[5] sr = data[6] self.content.insert( temp - 1, ("", "", _("Sum"), debtsum, creditsum, diagnose, sr))
def selectPayBtn_clicked(self, sender): self.sltCheqListStore.clear() query = self.session.query(Cheque).filter( or_(Cheque.chqStatus == 3, Cheque.chqStatus == 6)).filter(Cheque.chqDelete == False) cheqlist = query.all() numcheqs = 0 for cheq in cheqlist: numcheqs += 1 order = utility.LN(numcheqs, False) ID = utility.LN(cheq.chqId) amount = utility.LN(cheq.chqAmount) wrtDate = dateentry.dateToString(cheq.chqWrtDate) dueDate = dateentry.dateToString(cheq.chqDueDate) status = self.chequeStatus[cheq.chqStatus] bank = self.bankaccounts_class.get_bank_name(cheq.chqAccount) customer = self.session.query(Customers).filter( Customers.custId == cheq.chqCust).first() if customer != None: customer = customer.custName else: continue self.sltCheqListStore.append( (ID, order, customer, amount, wrtDate, dueDate, bank, cheq.chqSerial, status, cheq.chqDesc)) self.chqSltWindow.show_all()
def fillChequeTable(self): total = 0 # # comment for test # query = self.session.query(Cheque, Customers.custName) # query = query.select_from(outerjoin(Cheque, Customers, Cheque.chqCust == Customers.custId)) print self.transId query = self.session.query(Cheque).select_from(Cheque) #TODO find why chqBillId and chqOrder has been removed and what must be do! #query = query.filter(and_(Cheque.chqTransId == self.transId, Cheque.chqBillId == self.billId)) query = query.filter(Cheque.chqTransId == self.transCode) cheqlist = query.order_by(Cheque.chqOrder.asc()).all() #cheqlist = query.all() for cheq in cheqlist: self.numcheqs += 1 total += cheq.chqAmount order = utility.LN(self.numcheqs, False) amount = utility.LN(cheq.chqAmount) wrtDate = dateentry.dateToString(cheq.chqWrtDate) dueDate = dateentry.dateToString(cheq.chqDueDate) status = self.chequeStatus[cheq.chqStatus] self.cheqListStore.append( (order, "in testing", amount, wrtDate, dueDate, "", cheq.chqSerial, status, cheq.chqDesc)) self.addToTotalAmount(total)
def createReport(self): report_data = [] remaining = 0 report_header = [_("Code") , _("Ledger name"), _("Debt"), _("Credit"), _("Remaining")] col_width = [25, 45, 40, 40 , 40] query = config.db.session.query(Subject).select_from(Subject) result = query.order_by(Subject.code).all() query1 = config.db.session.query(sum(Notebook.value)) # Check the report parameters if self.builder.get_object("allcontent1").get_active() == True: query1 = query1.select_from(outerjoin(Subject, Notebook, Subject.id == Notebook.subject_id)) else: query1 = query1.select_from(outerjoin(outerjoin(Notebook, Subject, Notebook.subject_id == Subject.id), Bill, Notebook.bill_id == Bill.id)) if self.builder.get_object("atdate1").get_active() == True: date = self.date.getDateObject() query1 = query1.filter(Bill.date == date) else: if self.builder.get_object("betweendates1").get_active() == True: fdate = self.fdate.getDateObject() tdate = self.tdate.getDateObject() if tdate < fdate: msgbox = Gtk.MessageDialog(self.window, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, _("Second date value shouldn't precede the first one.")) msgbox.set_title(_("Invalid date order")) msgbox.run() msgbox.destroy() return query1 = query1.filter(Bill.date.between(fdate, tdate)) for s in result: res = query1.filter(and_(Subject.lft >= s.lft, Subject.lft <= s.rgt, Notebook.value < 0)).first() if res[0] == None: debt_sum = 0 else: debt_sum = res[0] res = query1.filter(and_(Subject.lft >= s.lft, Subject.lft <= s.rgt, Notebook.value > 0)).first() if res[0] == None: credit_sum = 0 else: credit_sum = res[0] if self.builder.get_object("chbZero").get_active()==False: if credit_sum == 0 and debt_sum == 0: continue remain = credit_sum + debt_sum if remain < 0: remain = "( " + utility.LN(-remain) + " )" else: remain = utility.LN(remain) report_data.append((s.code, s.name, utility.LN(-debt_sum), utility.LN(credit_sum), remain)) return {"data":report_data, "col-width":col_width ,"heading":report_header}
def updateSum(self, window): iter = self.liststore.get_iter_first() self.debt_sum = 0 self.credit_sum = 0 while iter != None : self.debt_sum += int(unicode(self.liststore.get(iter, 3)[0].replace(",", ""))) self.credit_sum += int(unicode(self.liststore.get(iter, 4)[0].replace(",", ""))) iter = self.liststore.iter_next(iter) self.builder.get_object("debtsum").set_text (utility.LN(self.debt_sum)) self.builder.get_object("creditsum").set_text (utility.LN(self.credit_sum)) self.builder.get_object("difference").set_text (utility.LN(abs(self.credit_sum - self.debt_sum)))
def saveRow(self, code, amount, type, desc, iter=None): query = config.db.session.query(Subject).select_from(Subject) query = query.filter(Subject.code == code) sub = query.first() if sub == None: if config.digittype == 1: code = utility.convertToPersian(code) errorstr = _("No subject is registered with the code: %s") % code msgbox = Gtk.MessageDialog(self.window, Gtk.DialogFlags.MODAL, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, errorstr) msgbox.set_title(_("No subjects found")) msgbox.run() msgbox.destroy() return if sub.type != 2: type = sub.type debt = "0" credit = "0" if config.digittype == 1: debt = utility.convertToPersian(debt) credit = utility.convertToPersian(credit) code = utility.convertToPersian(code) if type == 0: debt = utility.LN(amount) self.debt_sum += amount elif type == 1: credit = utility.LN(amount) self.credit_sum += amount if iter != None: self.liststore.set(iter, 1, code, 2, sub.name, 3, debt, 4, credit, 5, desc) else: self.numrows += 1 numrows = str(self.numrows) if config.digittype == 1: numrows = utility.convertToPersian(numrows) self.liststore.append( (numrows, code, sub.name, debt, credit, desc, None)) self.builder.get_object("debtsum").set_text(utility.LN(self.debt_sum)) self.builder.get_object("creditsum").set_text( utility.LN(self.credit_sum)) if self.debt_sum > self.credit_sum: diff = self.debt_sum - self.credit_sum else: diff = self.credit_sum - self.debt_sum self.builder.get_object("difference").set_text(utility.LN(diff))
def editCheque(self, sender): self.getSelection() self.initChequeForm() cheque = config.db.session.query(Cheque).filter( Cheque.chqId == self.code).first() #payer_id = cheque.chqCust amount = utility.LN(cheque.chqAmount, False) serial = cheque.chqSerial wrtDate = cheque.chqWrtDate dueDate = cheque.chqDueDate desc = cheque.chqDesc self.builder.get_object("chequeStatusLbl").set_text( self.chequeStatus[cheque.chqStatus]) self.bankCombo.set_active(cheque.chqAccount - 1) #self.edtPymntFlg = True #self.edititer = iter self.addPymntDlg.set_title(_("Edit Non-Cash Payment")) self.builder.get_object("submitBtn").set_label(_("Save Changes...")) self.builder.get_object("paymentsStatusBar").push(1, "") self.pymntAmntEntry.set_text(amount) self.serialNoEntry.set_text(serial) self.writeDateEntry.showDateObject(wrtDate) self.dueDateEntry.showDateObject(dueDate) self.pymntDescEntry.set_text(desc)
def saveDocument(self, sender): sender.grab_focus() self.cl_document.date = self.date.getDateObject() #TODO if number is not equal to the maximum BigInteger value, prevent bill registration. iter = self.liststore.get_iter_first() while iter != None: code = utility.convertToLatin(self.liststore.get(iter, 1)[0]) debt = utility.getFloatNumber(self.liststore.get(iter, 3)[0]) value = -(debt) if (self.liststore.get(iter, 6)[0] != None): id = self.liststore.get(iter, 6)[0] else: id = 0 if value == 0: credit = utility.getFloatNumber(self.liststore.get(iter, 4)[0]) value = credit desctxt = unicode(self.liststore.get(iter, 5)[0]) query = config.db.session.query(Subject) query = query.filter(Subject.code == code) subject_id = query.first().id self.cl_document.add_notebook(subject_id, value, desctxt, int(id)) iter = self.liststore.iter_next(iter) result = self.cl_document.save(delete_items=self.deleted_items) self.deleted_items = [] if result == -1: msgbox = Gtk.MessageDialog(self.window, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, _("Document should not be empty")) msgbox.set_title(_("Can not save document")) msgbox.run() msgbox.destroy() self.cl_document.clear_notebook() return elif result == -2: msgbox = Gtk.MessageDialog( self.window, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, _("Debt sum and Credit sum should be equal")) msgbox.set_title(_("Can not save document")) msgbox.run() msgbox.destroy() self.cl_document.clear_notebook() return else: self.liststore.clear() self.deleted_items = [] self.cl_document.clear_notebook() self.showRows() docnum = utility.LN(self.cl_document.number) self.builder.get_object("docnumber").set_text(docnum) share.mainwin.silent_daialog( _("Document saved with number %s.") % docnum)
def insert(self, widget, text, pos): # the next three lines set up the text. this is done because we # can't use insert_text(): it always inserts at position zero. orig_text = unicode(widget.get_text( )) # **** unicode is neccessary for persian numbers!! **** text = unicode(text) new_text = orig_text[:pos] + text + orig_text[pos:] hadSlash = new_text.find('/') commasCount1 = new_text[:pos].count(',') new_text = new_text.replace(',', '').replace('/', '.') try: float(new_text) except ValueError: new_text = orig_text new_text = utility.LN(new_text) commasCount2 = new_text[:pos].count(',') pos += commasCount2 - commasCount1 if hadSlash != -1: new_text = new_text.replace('.', '/') # avoid recursive calls triggered by set_text widget.handler_block(self.insert_sig) # replace the text with some new text widget.set_text(new_text) widget.handler_unblock(self.insert_sig) # set the correct position in the widget widget.set_position(pos + len(text))
def addToTotalAmount(self, amount): self.totalAmount += amount ttlNonCashLabel = self.builder.get_object("ttlNonCashLabel") #lastAmnt = utility.getFloatNumber(ttlNonCashLabel.get_text()) total_str = utility.LN(self.totalAmount) ttlNonCashLabel.set_text(total_str) self.emit("payments-changed", total_str)
def onFreeChequeSelected(self, sender, path=None, col=0): treeiter = self.sltCheqListStore.get_iter(path) chequeId = utility.convertToLatin( self.sltCheqListStore.get_value(treeiter, 0)) cheque = self.session.query(Cheque).filter( Cheque.chqId == chequeId).first() cheque.chqStatus = 5 cheque.chqTransId = self.transId self.chequesList.append(cheque) self.numcheqs += 1 #chequeNo = self.sltCheqListStore.get_value(treeiter , 1) chequeCust = self.sltCheqListStore.get_value(treeiter, 2) chequeAmnt = self.sltCheqListStore.get_value(treeiter, 3) chequeWDate = self.sltCheqListStore.get_value(treeiter, 4) chequeDDate = self.sltCheqListStore.get_value(treeiter, 5) chequeBank = self.sltCheqListStore.get_value(treeiter, 6) chequeSerial = self.sltCheqListStore.get_value(treeiter, 7) chequeStatus = self.chequeStatus[ cheque.chqStatus] #self.sltCheqListStore.get_value(treeiter , 7) chequeDesc = self.sltCheqListStore.get_value(treeiter, 7) self.cheqListStore.append( (chequeId, utility.LN(self.numcheqs), chequeCust, chequeAmnt, chequeWDate, chequeDDate, chequeBank, chequeSerial, chequeStatus, chequeDesc)) self.addToTotalAmount(utility.getFloat(chequeAmnt)) #self.cheqListStore .append(cheque) self.closeSltChqWnd()
def removePay(self, sender): iter = self.cheqTreeView.get_selection().get_selected()[1] if iter == None: return number = utility.getInt(self.cheqListStore.get(iter, 1)[0]) msg = _("Are you sure to delete the cheque number %d?") % number msgBox = Gtk.MessageDialog(self.window, Gtk.DialogFlags.MODAL, Gtk.MessageType.QUESTION, Gtk.ButtonsType.OK_CANCEL, msg) msgBox.set_title(_("Confirm Deletion")) answer = msgBox.run() msgBox.destroy() if answer != Gtk.ResponseType.OK: return ID = utility.getInt(self.cheqListStore.get(iter, 0)[0]) cheque = self.session.query(Cheque).filter(Cheque.chqId == ID).first() self.removeCheque(cheque) self.numcheqs -= 1 liststore = self.cheqListStore del self.chequesList[number - 1] amount = utility.getInt(self.cheqListStore.get(iter, 3)[0]) #self.session.commit() self.addToTotalAmount(-(amount)) hasrow = liststore.remove(iter) # if there is a row after the deleted one if hasrow: # Decrease the order-number in next rows while iter != None: number_str = utility.LN(number, False) liststore.set_value(iter, 1, number_str) number += 1 iter = liststore.iter_next(iter)
def fillTreeview(self): self.treestore.clear(); query = config.db.session.query(ProductGroups, Products) query = query.select_from(outerjoin(ProductGroups, Products, ProductGroups.id == Products.accGroup)) query = query.order_by(ProductGroups.id.asc()) result = query.all() last_gid = 0 grouprow = None for g, p in result: if g.id != last_gid: grouprow = self.treestore.append(None, (g.code, g.name, "", "", "")) last_gid = g.id if p != None: self.treestore.append(grouprow, (p.code, p.name, utility.LN(p.quantity), utility.LN(p.purchacePrice), utility.LN(p.sellingPrice)))
def fillRecptTable(self): total = 0 query = self.session.query(Payment).select_from(Payment) query = query.filter(and_(Payment.paymntTransId == self.transCode)) paylist = query.order_by(Payment.paymntOrder.asc()).all() # print paylist for pay in paylist: self.numrecpts += 1 total += pay.paymntAmount order = utility.LN(self.numrecpts, False) amount = utility.LN(pay.paymntAmount) wrtDate = dateentry.dateToString(pay.paymntWrtDate) dueDate = dateentry.dateToString(pay.paymntDueDate) self.paysListStore.append( (order, "in testing", amount, wrtDate, dueDate, pay.paymntBank, pay.paymntSerial, pay.paymntTrckCode, pay.paymntDesc)) self.addToTotalAmount(total)
def deleteRow(self, sender): selection = self.treeview.get_selection() iter = selection.get_selected()[1] if iter != None: msgbox = Gtk.MessageDialog(self.window, Gtk.DialogFlags.MODAL, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK_CANCEL, _("Are you sure to remove this row?")) msgbox.set_title(_("Are you sure?")) result = msgbox.run() if result == Gtk.ResponseType.OK: id = int(unicode(self.liststore.get(iter, 6)[0])) code = int(unicode(self.liststore.get(iter, 1)[0])) debt = int( unicode(self.liststore.get(iter, 3)[0].replace(",", ""))) credit = int( unicode(self.liststore.get(iter, 4)[0].replace(",", ""))) index = int(unicode(self.liststore.get(iter, 0)[0])) res = self.liststore.remove(iter) self.deleted_items.append(id) #Update index of next rows if res: while iter != None: strindex = str(index) if config.digittype == 1: strindex = utility.convertToPersian(strindex) self.liststore.set_value(iter, 0, strindex) index += 1 iter = self.liststore.iter_next(iter) self.numrows -= 1 self.debt_sum -= debt self.credit_sum -= credit self.builder.get_object("debtsum").set_text( utility.LN(self.debt_sum)) self.builder.get_object("creditsum").set_text( utility.LN(self.credit_sum)) if self.debt_sum > self.credit_sum: diff = self.debt_sum - self.credit_sum else: diff = self.credit_sum - self.debt_sum self.builder.get_object("difference").set_text( utility.LN(diff)) msgbox.destroy()
def addNewCustomer(self, sender, pcode=""): self.editCustomer = False self.customerForm = self.builder.get_object("customersWindow") self.customerForm.set_title(_("Add New Customer")) self.builder.get_object("addCustSubmitBtn").set_label( _("Add Customer")) query = config.db.session.query(Subject.code).order_by( Subject.id.desc()) code = query.filter( Subject.parent_id == dbconf.get_int('custSubject')).first() if code == None: lastcode = "001" else: lastcode = "%03d" % (int(code[0][-2:]) + 1) self.builder.get_object("custCodeEntry").set_text(utility.LN(lastcode)) #self.custgrpentry.set_text("") self.builder.get_object("custNameEntry").set_text("") self.builder.get_object("custEcnmcsCodeEntry").set_text("") self.builder.get_object("custPrsnalCodeEntry").set_text("") self.builder.get_object("custPhoneEntry").set_text("") self.builder.get_object("custCellEntry").set_text("") self.builder.get_object("custFaxEntry").set_text("") self.builder.get_object("custWebPageEntry").set_text("") self.builder.get_object("custEmailEntry").set_text("") self.builder.get_object("custRepViaEmailChk").get_active() self.builder.get_object("custAddressEntry").set_text("") self.builder.get_object("cusPostalCodeEntry").set_text("") self.builder.get_object("callResponsibleEntry").set_text("") self.builder.get_object("custConnectorEntry").set_text("") self.builder.get_object("custDescEntry").set_text("") #---------------------------------- self.builder.get_object("custTypeBuyerChk").set_active(True) self.builder.get_object("custTypeSellerChk").set_active(True) self.builder.get_object("custTypeMateChk").set_active(False) self.builder.get_object("custTypeAgentChk").set_active(False) self.custIntroducerEntry.set_text("") self.boxCommissionRateEntry.set_text("") self.boxDiscRateEntry.set_text("") self.builder.get_object("markedChk").set_active(False) self.builder.get_object("markedReasonEntry").set_text("") #---------------------------------- self.builder.get_object("custAccName1Entry").set_text("") self.builder.get_object("custAccNo1Entry").set_text("") self.builder.get_object("custAccBank1Entry").set_text("") self.builder.get_object("custAccName2Entry").set_text("") self.builder.get_object("custAccNo2Entry").set_text("") self.builder.get_object("custAccBank2Entry").set_text("") self.customerForm.show_all()
def fillChequeTable(self): total = 0 if self.transId != 0: # from factors if self.sellFlag: #spendedCheuqesList =self.session.execute("select cheque.* from cheque join chequehistory on cheque.chqId = chequehistory.ChequeId where TransId = 4 and Status <>5 ") query = self.session.query(Cheque).select_from(ChequeHistory).filter(Cheque.chqId == ChequeHistory.ChequeId)\ .filter(Cheque.chqStatus==5).filter(ChequeHistory.TransId == self.transId).order_by(ChequeHistory.Id.desc()).distinct(Cheque.chqId) spendedCheuqesList = query.all() self.chequesList += spendedCheuqesList query = self.session.query(Cheque) query = query.filter(Cheque.chqTransId == self.transId).filter( Cheque.chqDelete == False) cheqlist = query.all() self.chequesList += cheqlist for cheq in self.chequesList: self.numcheqs += 1 total += cheq.chqAmount ID = utility.LN(cheq.chqId) order = utility.LN(self.numcheqs, False) ID = utility.LN(cheq.chqId) amount = utility.LN(cheq.chqAmount) wrtDate = dateentry.dateToString(cheq.chqWrtDate) dueDate = dateentry.dateToString(cheq.chqDueDate) status = self.chequeStatus[cheq.chqStatus] bank = self.bankaccounts_class.get_bank_name(cheq.chqAccount) customer = self.session.query(Customers).filter( Customers.custId == cheq.chqCust).first().custName self.cheqListStore.append( (ID, order, customer, amount, wrtDate, dueDate, bank, cheq.chqSerial, status, cheq.chqDesc)) self.addToTotalAmount(total) cheque = self.session.query(Cheque).order_by(desc( Cheque.chqId)).first() if cheque != None: self.lastChqID = cheque.chqId
def editPay(self, sender=0): model = self.bankCombo.get_model() if self.sellFlag: # other's cheque banks = self.bankaccounts_class.get_bank_names() else: banks = self.bankaccounts_class.get_all_accounts() for item in banks: iter = model.append() name = item.Name if self.sellFlag else item.accName model.set(iter, 0, name) iter = self.cheqTreeView.get_selection().get_selected()[1] if iter == None: return else: number = utility.convertToLatin(self.cheqListStore.get(iter, 1)[0]) number = utility.getInt(number) cheque = self.chequesList[ number - 1] # reads from cheques list that holds temporary changes in cheque table. for adding or edditing without effect on database before submiting factor form if cheque.chqStatus == 5: return self.editid = cheque.chqId #payer_id = cheque.chqCust amount = utility.LN(cheque.chqAmount, False) serial = cheque.chqSerial wrtDate = cheque.chqWrtDate dueDate = cheque.chqDueDate desc = cheque.chqDesc self.chequeStatusLbl.set_text(self.chequeStatus[cheque.chqStatus]) self.bankCombo.set_active(cheque.chqAccount - 1) self.edtPymntFlg = True self.edititer = iter self.addPymntDlg.set_title(_("Edit Non-Cash Payment")) self.builder.get_object("submitBtn").set_label(_("Save Changes...")) self.builder.get_object("paymentsStatusBar").push(1, "") self.pymntAmntEntry.set_text(amount) self.serialNoEntry.set_text(serial) self.writeDateEntry.showDateObject(wrtDate) self.dueDateEntry.showDateObject(dueDate) self.pymntDescEntry.set_text(desc) self.addPymntDlg.show_all()
def showRows(self): self.debt_sum = 0 self.credit_sum = 0 self.numrows = 0 self.date.showDateObject(self.cl_document.date) rows = self.cl_document.get_notebook_rows() for n, s in rows: self.numrows += 1 if n.value < 0: value = -(n.value) debt = utility.LN(value) credit = utility.LN(0) self.debt_sum += value else: credit = utility.LN(n.value) debt = utility.LN(0) self.credit_sum += n.value if s: code = s.code else: code = 0 s = Subject() numrows = str(self.numrows) if config.digittype == 1: code = utility.convertToPersian(code) numrows = utility.convertToPersian(numrows) self.liststore.append( (numrows, code, s.name, debt, credit, n.desc, str(n.id))) docnum = utility.LN(self.cl_document.number) self.builder.get_object("docnumber").set_text(docnum) self.builder.get_object("debtsum").set_text(utility.LN(self.debt_sum)) self.builder.get_object("creditsum").set_text( utility.LN(self.credit_sum)) if self.debt_sum > self.credit_sum: diff = self.debt_sum - self.credit_sum else: diff = self.credit_sum - self.debt_sum self.builder.get_object("difference").set_text(utility.LN(diff))
def delete_cb(self, widget, pos1, pos2): if pos1 <= 0: return text = widget.get_text() text2 = "" text1 = unicode( text )[:pos1] # **** unicode is neccessary for persian numbers!! **** if pos2 != -1: text2 = unicode(text)[pos2:] #print widget.get_float() text = text1 + text2 hadSlash = text.find('/') text = utility.getFloatNumber(text) text = utility.LN(text) if hadSlash: text.replace('.', '/') widget.emit_stop_by_name("delete_text") widget.handler_block(self.insert_sig) widget.set_text(text) widget.handler_unblock(self.insert_sig) widget.set_position(pos1)
def submitPayment(self, sender=0): if self.validatePayment() == False: return pymntAmnt = self.pymntAmntEntry.get_float() wrtDate = self.writeDateEntry.getDateObject() dueDte = self.dueDateEntry.getDateObject() bank = int(self.bankCombo.get_active()) + 1 # if self.sellFlag: # bank_name = self.bankaccounts_class.get_bank_name(bank) # else: # bank_name = self.bankaccounts_class.get_account(bank).accName serial = unicode(self.serialNoEntry.get_text()) pymntDesc = unicode(self.pymntDescEntry.get_text()) payer = self.payerEntry.get_text() pymnt_str = utility.LN(pymntAmnt) cheque = config.db.session.query(Cheque).filter( Cheque.chqId == self.code).first() cheque.chqAmount = pymntAmnt cheque.chqWrtDate = wrtDate cheque.chqDueDate = dueDte cheque.chqSerial = serial cheque.chqCust = int( self.builder.get_object("payerNameEntry").get_text()) cheque.chqAccount = bank cheque.chqDesc = pymntDesc ch = cheque ch_history = ChequeHistory(ch.chqId, ch.chqAmount, ch.chqWrtDate, ch.chqDueDate, ch.chqSerial, ch.chqStatus, ch.chqCust, ch.chqAccount, ch.chqTransId, ch.chqDesc, self.current_time) config.db.session.add(ch_history) config.db.session.commit() self.addPymntDlg.hide() self.searchFilter()
def submitPayment(self, sender=0): if self.validatePayment() == False: return pre_amnt = 0 pymntAmnt = self.pymntAmntEntry.get_float() wrtDate = self.writeDateEntry.getDateObject() dueDte = self.dueDateEntry.getDateObject() bank = int(self.bankCombo.get_active()) + 1 if self.sellFlag: bank_name = self.bankaccounts_class.get_bank_name(bank) else: bank_name = self.bankaccounts_class.get_account(bank).accName serial = unicode(self.serialNoEntry.get_text()) pymntDesc = unicode(self.pymntDescEntry.get_text()) payer = self.payerEntry.get_text() iter = None pymnt_str = utility.LN(pymntAmnt) wrtDate_str = dateentry.dateToString(wrtDate) dueDte_str = dateentry.dateToString(dueDte) status = 3 if self.sellFlag else 1 # buy -> pardakhti , sell -> daryafti if self.edtPymntFlg: iter = self.edititer number = utility.convertToLatin(self.cheqListStore.get(iter, 1)[0]) number = utility.getInt(number) cheque = self.chequesList[number - 1] if cheque.chqStatus == 5: return query = self.session.query(Cheque) cheque = query.filter( and_(Cheque.chqTransId == cheque.chqTransId)).first() pre_amnt = cheque.chqAmount cheque.chqAmount = pymntAmnt cheque.chqWrtDate = wrtDate cheque.chqDueDate = dueDte cheque.chqSerial = serial #cheque.chqStatus = status must edit from automatic accounting cheque.chqCust = None #self.payerEntry.get_text() cheque.chqAccount = bank # cheque.chqOwnerName = self.payerEntry.get_text() cheque.chqDesc = pymntDesc self.cheqListStore.set(iter, 2, self.customerNameLbl.get_text(), 3, pymnt_str, 4, wrtDate_str, 5, dueDte_str, 6, unicode(bank_name), 7, serial, 8, self.chequeStatus[status], 9, pymntDesc) self.lastChqID += 1 self.chequesList[number - 1] = Cheque( pymntAmnt, wrtDate, dueDte, serial, status, None, bank, self.transId, 0, #notebook ID pymntDesc, 0, #history chqId=cheque.chqId) else: # adding cheque self.numcheqs += 1 order = utility.LN(self.numcheqs) self.lastChqID += 1 cheque = Cheque( pymntAmnt, wrtDate, dueDte, serial, status, None, # customer Id . later after submiting factor or auto accounting will be updated bank, self.transId, 0, pymntDesc, 0, chqId=self.lastChqID) self.session.add(cheque) iter = self.cheqListStore.append( (unicode(self.lastChqID), order, self.customerNameLbl.get_text(), pymnt_str, wrtDate_str, dueDte_str, unicode(bank_name), serial, self.chequeStatus[status], pymntDesc)) self.chequesList.append(cheque) path = self.cheqListStore.get_path(iter) self.cheqTreeView.scroll_to_cell(path, None, False, 0, 0) self.cheqTreeView.set_cursor(path, None, False) #self.session.commit() self.addToTotalAmount(pymntAmnt - pre_amnt) # current pay value - prev pay value self.addPymntDlg.hide()
def drawDocument(self, page_nr): content = self.documents[page_nr] docnumber = content[0][6] datestr = content[0][7] self.fields = {_("Document Number"): docnumber, _("Date"): datestr} self.formatHeader() # RIGHT_EDGE = 570 #(table width + PAGE_MARGIN) RIGHT_EDGE = self.page_setup.get_page_width( Gtk.Unit.POINTS) - config.rightmargin HEADER_HEIGHT = self.header_height HEADING_HEIGHT = self.heading_height # PAGE_MARGIN = self.page_margin MARGIN = self.cell_margin TABLE_TOP = HEADER_HEIGHT + HEADING_HEIGHT + self.cell_margin ROW_HEIGHT = self.row_height LINE = self.line cr = self.cairo_context fontsize = config.contentfont fdesc = Pango.FontDescription("Sans") fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) self.drawTableHeading() #Draw table data offset = 0 self.debt_sum = 0 self.credit_sum = 0 addh = TABLE_TOP for row in content: cr.move_to(RIGHT_EDGE, addh) cr.line_to(RIGHT_EDGE, addh + ROW_HEIGHT) right_txt = RIGHT_EDGE dindex = 0 for data in row: right_txt -= MARGIN + LINE if dindex == 6 or dindex == 7 or dindex == 8 or dindex == 9: break elif dindex == 2 or dindex == 3: fontsize -= 1 fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) self.pangolayout.set_text(data, -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to( right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) fontsize = config.contentfont fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) else: self.pangolayout.set_text(data, -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to( right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[dindex] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) dindex += 1 # self.debt_sum += int(row[4].replace(",", "")) # self.credit_sum += int(row[5].replace(",", "")) addh += ROW_HEIGHT offset += 1 self.debt_sum = int(row[8]) self.credit_sum = int(row[9]) right_txt = RIGHT_EDGE cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) right_txt -= 4 * (MARGIN + LINE) + self.cols_width[ 0] + self.cols_width[1] + self.cols_width[2] self.pangolayout.set_text(_("Sum"), -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[3] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) cr.move_to(RIGHT_EDGE, addh) cr.line_to(right_txt, addh) right_txt -= MARGIN + LINE self.pangolayout.set_text(utility.LN(self.debt_sum), -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[4] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) right_txt -= MARGIN + LINE self.pangolayout.set_text(utility.LN(self.credit_sum), -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[5] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) #Table top line cr.move_to(right_txt, TABLE_TOP) cr.line_to(RIGHT_EDGE, TABLE_TOP) #Table bottom line cr.move_to(right_txt, addh + ROW_HEIGHT) cr.line_to(RIGHT_EDGE, addh + ROW_HEIGHT) cr.stroke()
def __init__(self, number=0, background=None): self.main_window_background = background self.new_items = [] self.deleted_items = [] self.edit_items = [] self.builder = get_builder("document") self.window = self.builder.get_object("window1") self.window.set_title(_("Register new document")) self.date = dateentry.DateEntry() box = self.builder.get_object("datebox") box.add(self.date) self.date.show() self.code = numberentry.NumberEntry() box = self.builder.get_object("codebox") box.add(self.code) self.code.show() self.code.connect("activate", self.selectSubject) self.code.set_tooltip_text(_("Press Enter to see available subjects.")) self.amount = numberentry.NumberEntry() box = self.builder.get_object("amountbox") box.add(self.amount) self.amount.set_activates_default(True) self.amount.show() self.treeview = self.builder.get_object("treeview") #self.treeview.set_direction(gtk.TEXT_DIR_LTR) if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL : halign = 1 else: halign = 0 self.liststore = gtk.ListStore(str, str, str, str, str, str, str) column = gtk.TreeViewColumn(_("Index"), gtk.CellRendererText(), text=0) column.set_spacing(5) column.set_resizable(True) self.treeview.append_column(column) column = gtk.TreeViewColumn(_("Subject Code"), gtk.CellRendererText(), text=1) column.set_spacing(5) column.set_resizable(True) self.treeview.append_column(column) column = gtk.TreeViewColumn(_("Subject Name"), gtk.CellRendererText(), text=2) column.set_spacing(5) column.set_resizable(True) money_cell_renderer = gtk.CellRendererText() #money_cell_renderer.set_alignment(1.0, 0.5) #incompatible with pygtk2.16 self.treeview.append_column(column) column = gtk.TreeViewColumn(_("Debt"), money_cell_renderer, text=3) column.set_spacing(5) column.set_resizable(True) self.treeview.append_column(column) column = gtk.TreeViewColumn(_("Credit"), money_cell_renderer, text=4) column.set_spacing(5) column.set_resizable(True) self.treeview.append_column(column) column = gtk.TreeViewColumn(_("Description"), gtk.CellRendererText(), text=5) column.set_spacing(5) column.set_resizable(True) self.treeview.append_column(column) #column = gtk.TreeViewColumn(_("Notebook ID") , gtk.CellRendererText(), text=6) #column.set_alignment(halign) #column.set_spacing(5) #column.set_resizable(True) #self.treeview.append_column(column) self.treeview.get_selection().set_mode(gtk.SELECTION_SINGLE) self.debt_sum = 0 self.credit_sum = 0 self.numrows = 0 self.auto_win = None self.cl_document = class_document.Document() if number > 0: if self.cl_document.set_bill(number): self.showRows() self.window.set_title(_("Edit document")) else: numstring = utility.LN(number) msg = _("No document found with number %s\nDo you want to register a document with this number?") % numstring msgbox = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK_CANCEL, msg) msgbox.set_title(_("No Documents found")) result = msgbox.run() msgbox.destroy() if result == gtk.RESPONSE_CANCEL: return else: self.builder.get_object("docnumber").set_text (numstring) self.treeview.set_model(self.liststore) self.window.show_all() if self.cl_document.permanent: self.builder.get_object("editable").hide() self.builder.get_object("non-editable").show() else: self.builder.get_object("editable").show() self.builder.get_object("non-editable").hide() self.builder.connect_signals(self)
def submitPayment(self, sender=0): if self.validatePayment() == False: return print 'validate paymanet is true' pre_amnt = 0 pymntAmnt = self.pymntAmntEntry.get_float() wrtDate = self.writeDateEntry.getDateObject() dueDte = self.dueDateEntry.getDateObject() bank = unicode(self.bankCombo.get_active_text()) serial = unicode(self.serialNoEntry.get_text()) pymntDesc = unicode(self.pymntDescEntry.get_text()) payer = unicode(self.payerEntry.get_text()) iter = None pymnt_str = utility.LN(pymntAmnt) wrtDate_str = dateentry.dateToString(wrtDate) dueDte_str = dateentry.dateToString(dueDte) if self.isCheque.get_active(): status = self.cheqStatusList.get_active() if self.edtPymntFlg: query = self.session.query(Cheque).select_from(Cheque) cheque = query.filter(Cheque.chqId == self.editid).first() pre_amnt = cheque.chqAmount cheque.chqAmount = pymntAmnt cheque.chqWrtDate = wrtDate cheque.chqDueDate = dueDte cheque.chqSerial = serial cheque.chqStatus = status #cheque.chqCust = self.payerEntry.get_text() cheque.chqOwnerName = self.payerEntry.get_text() cheque.chqDesc = pymntDesc iter = self.edititer self.cheqListStore.set(self.edititer, 1, cheque.chqCust, 2, pymnt_str, 3, wrtDate_str, 4, dueDte_str, 6, serial, 7, self.chequeStatus[status], 8, pymntDesc) else: self.numcheqs += 1 order = utility.LN(self.numcheqs) ##add cheque history self.chequeHistoryChequeId = 0 self.chequeHistoryAmount = pymntAmnt self.chequeHistoryWrtDate = wrtDate self.chequeHistoryDueDate = dueDte self.chequeHistorySerial = serial self.chequeHistoryStatus = status self.chequeHistoryCust = payer self.chequeHistoryAccount = None self.chequeHistoryDesc = pymntDesc self.chequeHistoryDate = wrtDate self.chequeHistoryTransId = self.transId # chequeHistory= ChequeHistory( # self.chequeHistoryChequeId , # self.chequeHistoryAmount , # self.chequeHistoryWrtDate , # self.chequeHistoryDueDate , # self.chequeHistorySerial , # self.chequeHistoryStatus , # self.chequeHistoryCust , # self.chequeHistoryAccount , # self.chequeHistoryTransId , # self.chequeHistoryDesc , # self.chequeHistoryDate ) cheque = Cheque( pymntAmnt, wrtDate, dueDte, serial, 0, #self.payerEntry.get_text() , #self.payerEntry.get_text() , None, None, self.transCode, self.billId, pymntDesc, self.numcheqs, self.billId, self.numcheqs) iter = self.cheqListStore.append( (order, self.payerEntry.get_text(), pymnt_str, wrtDate_str, dueDte_str, bank, serial, self.chequeStatus[status], pymntDesc)) #self.session.add(chequeHistory) self.session.add(cheque) self.session.commit() ## updat chequehistory id # query=self.session.query(ChequeHistory).select_from(ChequeHistory) # from sqlalchemy.sql.expression import desc # # chequeHistory=query.filter(ChequeHistory.TransId == self.transId).order_by(desc(ChequeHistory.Id)).first() # print chequeHistory.Id # # query = self.session.query(Cheque).select_from(Cheque) # tempCheque = query.filter(Cheque.chqTransId == self.transId).order_by(desc(Cheque.chqId)).first() # # tempCheque.chqHistoryId=chequeHistory.Id # chequeHistory.ChequeId=tempCheque.chqId # # self.session.commit() # # # # self.session.commit() # # # # # path = self.cheqListStore.get_path(iter) self.cheqTreeView.scroll_to_cell(path, None, False, 0, 0) self.cheqTreeView.set_cursor(path, None, False) else: trackCode = unicode(self.trackingCodeEntry.get_text()) if self.edtPymntFlg: query = self.session.query(Payment).select_from(Payment) payment = query.filter(Payment.paymntId == self.editid).first() pre_amnt = payment.paymntAmount payment.paymntDueDate = dueDte payment.paymntBank = bank payment.paymntSerial = serial payment.paymntAmount = pymntAmnt payment.paymntNamePayer = self.payerEntry.get_text() payment.paymntPayer = self.payerEntry.get_text() payment.paymntWrtDate = wrtDate payment.paymntDesc = pymntDesc payment.paymntTrckCode = trackCode iter = self.edititer self.paysListStore.set(self.edititer, 1, self.payerEntry.get_text(), 2, pymnt_str, 3, wrtDate_str, 4, dueDte_str, 5, bank, 6, serial, 7, trackCode, 8, pymntDesc) else: self.numrecpts += 1 order = utility.LN(self.numrecpts) payment = Payment(dueDte, bank, serial, pymntAmnt, self.payerEntry.get_text(), wrtDate, pymntDesc, self.transCode, self.billId, trackCode, self.numrecpts) iter = self.paysListStore.append( (order, self.payerEntry.get_text(), pymnt_str, wrtDate_str, dueDte_str, bank, serial, trackCode, pymntDesc)) self.session.add(payment) self.session.commit() path = self.paysListStore.get_path(iter) self.paysTreeView.scroll_to_cell(path, None, False, 0, 0) self.paysTreeView.set_cursor(path, None, False) self.addToTotalAmount(pymntAmnt - pre_amnt) self.addPymntDlg.hide()
def removePay(self, sender): iter = self.paysTreeView.get_selection().get_selected()[1] if iter == None: iter = self.cheqTreeView.get_selection().get_selected()[1] if iter == None: return else: number = utility.getInt(self.cheqListStore.get(iter, 0)[0]) print number msg = _( "Are you sure to delete the cheque number %d?") % number msgBox = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, msg) msgBox.set_title(_("Confirm Deletion")) answer = msgBox.run() msgBox.destroy() if answer != gtk.RESPONSE_OK: return query = self.session.query(Cheque).select_from(Cheque) query = query.filter( and_(Cheque.chqTransId == self.transId, Cheque.chqBillId == self.billId, Cheque.chqOrder == number)) cheque = query.first() amount = cheque.chqAmount self.session.delete(cheque) # Decrease the order-number in next rows query = self.session.query(Cheque) #.select_from(Cheque) query = query.filter( and_(Cheque.chqTransId == self.transId, Cheque.chqBillId == self.billId, Cheque.chqOrder > number)) query.update({Cheque.chqOrder: Cheque.chqOrder - 1}) self.numcheqs -= 1 liststore = self.cheqListStore else: number = utility.getInt(self.paysListStore.get(iter, 0)[0]) msg = _("Are you sure to delete the receipt number %d?") % number msgBox = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, msg) msgBox.set_title(_("Confirm Deletion")) answer = msgBox.run() msgBox.destroy() if answer != gtk.RESPONSE_OK: return query = self.session.query(Payment).select_from(Payment) query = query.filter( and_(Payment.paymntTransId == self.transId, Payment.paymntBillId == self.billId, Payment.paymntOrder == number)) payment = query.first() amount = payment.paymntAmount self.session.delete(payment) # Decrease the order-number in next rows query = self.session.query(Payment) #.select_from(Payment) query = query.filter( and_(Payment.paymntTransId == self.transId, Payment.paymntBillId == self.billId, Payment.paymntOrder > number)) query.update({Payment.paymntOrder: Payment.paymntOrder - 1}) self.numrecpts -= 1 liststore = self.paysListStore self.session.commit() self.addToTotalAmount(-(amount)) hasrow = liststore.remove(iter) # if there is a row after the deleted one if hasrow: # Decrease the order-number in next rows while iter != None: number_str = utility.LN(number, False) liststore.set_value(iter, 0, number_str) number += 1 iter = liststore.iter_next(iter)
def viewCustomers(self, readonly=False): self.window = self.builder.get_object("viewCustomersWindow") if readonly: self.costmenu = self.builder.get_object("customersToolbar") self.costmenu.hide() self.treeview = self.builder.get_object("customersTreeView") self.treestore = Gtk.TreeStore(str, str, str, str, str) self.treestore.clear() self.treeview.set_model(self.treestore) column = Gtk.TreeViewColumn(_("Code"), Gtk.CellRendererText(), text=0) column.set_spacing(5) column.set_resizable(True) column.set_sort_column_id(0) column.set_sort_indicator(True) self.treeview.append_column(column) column = Gtk.TreeViewColumn(_("Name"), Gtk.CellRendererText(), text=1) column.set_spacing(5) column.set_resizable(True) column.set_sort_column_id(1) column.set_sort_indicator(True) self.treeview.append_column(column) column = Gtk.TreeViewColumn(_("Debt"), Gtk.CellRendererText(), text=2) column.set_spacing(5) column.set_resizable(True) self.treeview.append_column(column) column = Gtk.TreeViewColumn(_("Credit"), Gtk.CellRendererText(), text=3) column.set_spacing(5) column.set_resizable(True) self.treeview.append_column(column) column = Gtk.TreeViewColumn(_("Balance"), Gtk.CellRendererText(), text=4) column.set_spacing(5) column.set_resizable(True) self.treeview.append_column(column) self.treeview.get_selection().set_mode(Gtk.SelectionMode.SINGLE) #self.treestore.set_sort_func(0, self.sortGroupIds) self.treestore.set_sort_column_id(0, Gtk.SortType.ASCENDING) #Fill groups treeview query = config.db.session.query(CustGroups, Customers) query = query.select_from( outerjoin(CustGroups, Customers, CustGroups.custGrpId == Customers.custGroup)) query = query.order_by(CustGroups.custGrpId.asc()) result = query.all() #Fill groups treeview query = config.db.session.query(Notebook) notes = query.all() creditNote = {} debtNote = {} for n in notes: if n.value > 0: try: creditNote[n.subject_id] += n.value except KeyError: creditNote[n.subject_id] = n.value else: try: debtNote[n.subject_id] += n.value except KeyError: debtNote[n.subject_id] = n.value last_gid = 0 grouprow = None for g, c in result: if g.custGrpId != last_gid: grouprow = self.treestore.append( None, (utility.readNumber(g.custGrpCode), utility.readNumber(g.custGrpName), "", "", "")) last_gid = g.custGrpId if c != None: try: credit = creditNote[c.custSubj] except KeyError: credit = 0 try: debt = abs(debtNote[c.custSubj]) except KeyError: debt = 0 balance = credit - debt if balance < 0: showBalance = "(" + utility.LN(abs(balance)) + ")" else: showBalance = utility.LN(balance) self.treestore.append( grouprow, (utility.readNumber(c.custCode), unicode(c.custName), utility.LN(debt), utility.LN(credit), showBalance)) self.window.show_all()
def drawSubjectNotebook(self, page_nr): self.formatHeader() # RIGHT_EDGE = 570 #(table width + PAGE_MARGIN) RIGHT_EDGE = self.page_setup.get_page_width( Gtk.Unit.POINTS) - config.rightmargin HEADER_HEIGHT = self.header_height HEADING_HEIGHT = self.heading_height # PAGE_MARGIN = self.page_margin MARGIN = self.cell_margin TABLE_TOP = HEADER_HEIGHT + HEADING_HEIGHT + self.cell_margin ROW_HEIGHT = self.row_height LINE = self.line cr = self.cairo_context fontsize = config.contentfont fdesc = Pango.FontDescription("Sans") fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) # #Table top line # cr.move_to(PAGE_MARGIN, TABLE_TOP) # cr.line_to(RIGHT_EDGE, TABLE_TOP) self.drawTableHeading() #Draw table data rindex = page_nr * self.lines_per_page offset = 0 right_txt = RIGHT_EDGE cr.move_to(right_txt, TABLE_TOP) cr.line_to(right_txt, TABLE_TOP + ROW_HEIGHT) self.pangolayout.set_text("----", -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) for i in range(0, 2): right_txt -= MARGIN + LINE cr.move_to(right_txt - (width / Pango.SCALE), TABLE_TOP + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[i] cr.move_to(right_txt, TABLE_TOP) cr.line_to(right_txt, TABLE_TOP + ROW_HEIGHT) right_txt -= MARGIN + LINE fontsize -= 1 fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) self.pangolayout.set_text(_("Sum of previous page"), -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), TABLE_TOP + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[2] cr.move_to(right_txt, TABLE_TOP) cr.line_to(right_txt, TABLE_TOP + ROW_HEIGHT) right_txt -= MARGIN + LINE fontsize = config.contentfont fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) if page_nr == 0: self.pangolayout.set_text(utility.LN(0), -1) self.debt_sum = 0 else: self.pangolayout.set_text(utility.LN(self.debt_sum), -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), TABLE_TOP + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[3] cr.move_to(right_txt, TABLE_TOP) cr.line_to(right_txt, TABLE_TOP + ROW_HEIGHT) right_txt -= MARGIN + LINE if page_nr == 0: self.pangolayout.set_text(utility.LN(0), -1) self.credit_sum = 0 else: self.pangolayout.set_text(utility.LN(self.credit_sum), -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), TABLE_TOP + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[4] cr.move_to(right_txt, TABLE_TOP) cr.line_to(right_txt, TABLE_TOP + ROW_HEIGHT) if page_nr == 0: remaining = int(self.content[0][3].replace(",", "")) - int( self.content[0][4].replace(",", "")) if self.content[0][5] == _("deb"): remaining -= int(self.content[0][6].replace(",", "")) else: remaining += int(self.content[0][6].replace(",", "")) if remaining < 0: self.diagnose = _("deb") self.remaining = utility.LN(-(remaining)) else: if remaining == 0: self.diagnose = _("equ") else: self.diagnose = _("cre") self.remaining = utility.LN(remaining) right_txt -= MARGIN + LINE self.pangolayout.set_text(self.diagnose, -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), TABLE_TOP + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[5] cr.move_to(right_txt, TABLE_TOP) cr.line_to(right_txt, TABLE_TOP + ROW_HEIGHT) right_txt -= MARGIN + LINE self.pangolayout.set_text(self.remaining, -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), TABLE_TOP + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[6] cr.move_to(right_txt, TABLE_TOP) cr.line_to(right_txt, TABLE_TOP + ROW_HEIGHT) addh = ROW_HEIGHT + TABLE_TOP try: while (offset < self.lines_per_page): row = self.content[rindex + offset] cr.move_to(RIGHT_EDGE, addh) cr.line_to(RIGHT_EDGE, addh + ROW_HEIGHT) right_txt = RIGHT_EDGE dindex = 0 for data in row: right_txt -= MARGIN + LINE if dindex == 2: fontsize -= 1 fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) self.pangolayout.set_text(data, -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to( right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) fontsize = config.contentfont fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) else: self.pangolayout.set_text(data, -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to( right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[dindex] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) dindex += 1 self.debt_sum += int(row[3].replace(",", "")) self.credit_sum += int(row[4].replace(",", "")) addh += ROW_HEIGHT offset += 1 except IndexError: pass self.diagnose = self.content[rindex + offset - 1][5] self.remaining = self.content[rindex + offset - 1][6] right_txt = RIGHT_EDGE cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) self.pangolayout.set_text("----", -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) for i in range(0, 2): right_txt -= MARGIN + LINE cr.move_to(right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[i] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) right_txt -= MARGIN + LINE fontsize -= 1 fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) self.pangolayout.set_text(_("Sum"), -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[2] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) right_txt -= MARGIN + LINE fontsize = config.contentfont fdesc.set_size(fontsize * Pango.SCALE) self.pangolayout.set_font_description(fdesc) self.pangolayout.set_text(utility.LN(self.debt_sum), -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[3] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) right_txt -= MARGIN + LINE self.pangolayout.set_text(utility.LN(self.credit_sum), -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[4] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) right_txt -= MARGIN + LINE self.pangolayout.set_text(self.diagnose, -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[5] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) right_txt -= MARGIN + LINE self.pangolayout.set_text(self.remaining, -1) (width, height) = self.pangolayout.get_size() self.pangolayout.set_alignment(Pango.Alignment.RIGHT) cr.move_to(right_txt - (width / Pango.SCALE), addh + (ROW_HEIGHT - (height / Pango.SCALE)) / 2) PangoCairo.show_layout(cr, self.pangolayout) right_txt -= self.cols_width[6] cr.move_to(right_txt, addh) cr.line_to(right_txt, addh + ROW_HEIGHT) #Table top line cr.move_to(right_txt, TABLE_TOP) cr.line_to(RIGHT_EDGE, TABLE_TOP) #Table bottom line # cr.move_to(self.page_margin, addh + ROW_HEIGHT) cr.move_to(right_txt, addh + ROW_HEIGHT) cr.line_to(RIGHT_EDGE, addh + ROW_HEIGHT) cr.stroke()
def editPay(self, sender=0): iter = self.paysTreeView.get_selection().get_selected()[1] if iter == None: iter = self.cheqTreeView.get_selection().get_selected()[1] if iter == None: return else: number = utility.convertToLatin( self.cheqListStore.get(iter, 0)[0]) query = self.session.query(Cheque).select_from(Cheque) query = query.filter( and_(Cheque.chqTransId == self.transId, Cheque.chqBillId == self.billId, Cheque.chqOrder == number)) cheque = query.first() self.editid = cheque.chqId payer_id = cheque.chqCust amount = utility.LN(cheque.chqAmount, False) serial = cheque.chqSerial wrtDate = cheque.chqWrtDate dueDate = cheque.chqDueDate desc = cheque.chqDesc self.isCheque.set_active(True) self.isCheque.set_sensitive(True) self.isRecpt.set_sensitive(False) self.cheqStatusList.set_active(cheque.chqStatus) self.trackingCodeEntry.set_text("") else: number = utility.convertToLatin(self.paysListStore.get(iter, 0)[0]) query = self.session.query(Payment).select_from(Payment) query = query.filter( and_(Payment.paymntTransId == self.transId, Payment.paymntBillId == self.billId, Payment.paymntOrder == number)) payment = query.first() self.editid = payment.paymntId payer_id = payment.paymntNamePayer amount = utility.LN(payment.paymntAmount, False) serial = payment.paymntSerial wrtDate = payment.paymntWrtDate dueDate = payment.paymntDueDate desc = payment.paymntDesc self.isRecpt.set_active(True) self.isRecpt.set_sensitive(True) self.isCheque.set_sensitive(False) self.trackingCodeEntry.set_text(payment.paymntTrckCode) #self.bankEntry.set_text(payment.paymntBank) #self.bankCombo.set_text(payment.paymntBank) self.edtPymntFlg = True self.edititer = iter self.addPymntDlg = self.builder.get_object("addPaymentDlg") self.addPymntDlg.set_title(_("Edit Non-Cash Payment")) self.builder.get_object("submitBtn").set_label(_("Save Changes...")) self.builder.get_object("paymentsStatusBar").push(1, "") query = self.session.query(Customers).select_from(Customers) self.payer = query.filter(Customers.custId == payer_id).first() #self.payerEntry.set_text(self.payer.custCode) #self.builder.get_object("chqPayerLbl").set_text(self.payer.custName) self.pymntAmntEntry.set_text(amount) self.serialNoEntry.set_text(serial) self.writeDateEntry.showDateObject(wrtDate) self.dueDateEntry.showDateObject(dueDate) self.pymntDescEntry.set_text(desc) self.addPymntDlg.show_all()
def editCustAndGrps(self, sender): selection = self.treeview.get_selection() iter = selection.get_selected()[1] if self.treestore.iter_parent(iter) == None: #Iter points to a customer group self.editCustomerGroup(sender) else: code = self.treestore.get_value(iter, 0) code = utility.convertToLatin(code) query = config.db.session.query(Customers, CustGroups.custGrpCode) query = query.select_from( outerjoin(CustGroups, Customers, CustGroups.custGrpId == Customers.custGroup)) result = query.filter(Customers.custCode == code).first() customer = result[0] groupcode = result[1] custCode = utility.LN(customer.custCode, False) custGrp = utility.LN(groupcode, False) custPhone = utility.LN(customer.custPhone, False) custCell = utility.LN(customer.custCell, False) custFax = utility.LN(customer.custFax, False) custPostalCode = utility.LN(customer.custPostalCode, False) self.customerForm = self.builder.get_object("customersWindow") self.customerForm.set_title(_("Edit Customer")) self.builder.get_object("addCustSubmitBtn").set_label( _("Save Customer")) self.builder.get_object("custCodeEntry").set_text(custCode) self.builder.get_object("custNameEntry").set_text( customer.custName) self.custgrpentry.set_text(groupcode) self.builder.get_object("custEcnmcsCodeEntry").set_text( customer.custEcnmcsCode) self.builder.get_object("custPrsnalCodeEntry").set_text( customer.custPersonalCode) self.builder.get_object("custPhoneEntry").set_text(custPhone) self.builder.get_object("custCellEntry").set_text(custCell) self.builder.get_object("custFaxEntry").set_text(custFax) self.builder.get_object("custWebPageEntry").set_text( customer.custWebPage) self.builder.get_object("custEmailEntry").set_text( customer.custEmail) self.builder.get_object("custRepViaEmailChk").set_active( customer.custRepViaEmail) self.builder.get_object("custAddressEntry").set_text( customer.custAddress) self.builder.get_object("callResponsibleEntry").set_text( customer.custResposible) self.builder.get_object("custConnectorEntry").set_text( customer.custConnector) self.builder.get_object("custDescEntry").set_text( customer.custDesc) self.builder.get_object("custTypeBuyerChk").set_active( customer.custTypeBuyer) #---------------------------------- self.builder.get_object("custTypeSellerChk").set_active( customer.custTypeSeller) self.builder.get_object("custTypeMateChk").set_active( customer.custTypeMate) self.builder.get_object("custTypeAgentChk").set_active( customer.custTypeAgent) #self.custIntroducerEntry.set_text(customer.custIntroducer) self.boxCommissionRateEntry.set_text(customer.custCommission) self.boxDiscRateEntry.set_text(customer.custDiscRate) self.builder.get_object("markedChk").set_active( customer.custMarked) self.builder.get_object("markedReasonEntry").set_text( customer.custReason) #----------------------------------aaaaaaaaaaaaaa self.builder.get_object("custAccName1Entry").set_text( customer.custAccName1) self.builder.get_object("custAccNo1Entry").set_text( customer.custAccNo1) self.builder.get_object("custAccBank1Entry").set_text( customer.custAccBank1) self.builder.get_object("custAccName2Entry").set_text( customer.custAccName2) self.builder.get_object("custAccNo2Entry").set_text( customer.custAccNo2) self.builder.get_object("custAccBank2Entry").set_text( customer.custAccBank2) self.builder.get_object("cusPostalCodeEntry").set_text( utility.LN(customer.custPostalCode, False)) self.builder.get_object("markedReasonEntry").set_sensitive( self.builder.get_object("markedChk").get_active()) self.customerForm.show_all() self.editCustomer = True self.customerId = customer.custId self.editIter = iter