예제 #1
0
    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))
예제 #2
0
 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()
예제 #3
0
    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)
예제 #4
0
 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}
예제 #5
0
 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)))
예제 #6
0
    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))
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
    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))
예제 #10
0
 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)
예제 #11
0
    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()
예제 #12
0
    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)
예제 #13
0
파일: product.py 프로젝트: nazaninIT/amir
	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)))
예제 #14
0
    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)
예제 #15
0
    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()
예제 #16
0
    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()
예제 #17
0
    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
예제 #18
0
    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()
예제 #19
0
    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))
예제 #20
0
 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)
예제 #21
0
    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()
예제 #22
0
    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()
예제 #23
0
    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()
예제 #24
0
    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)
예제 #25
0
    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()
예제 #26
0
    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)
예제 #27
0
    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()
예제 #28
0
    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()
예제 #29
0
    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()
예제 #30
0
    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