hello all,

I felt the most difficult part in pygtk is to maintain tree view in an
application.After so much of googling i got a easy navigatable spreadsheet
which is written by Lorenzo Gil Sanchez in the following link
http://www.mail-archive.com/[email protected]/msg06091.html

When i used the module in my application, i stuck up with these issues

1) I cant add toggle signal to the check box and if i add it is showing
unknown signal

2)When i set the values in the cell it is not showing up but when i try to
retrive the value it is printing properly.I dont the problem behind this.

I am attaching the py file in which i used the module in the above url.

If anyone can help in this it would be of great help or if anyone have an
alternative for this please share with me.

Thanks in advance.

Njoy the share of Freedom,
Anusha Kadambala
"""
  This file is part of GNUKhata:A modular,robust and Free Accounting System.

  GNUKhata is Free Software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as
  published by the Free Software Foundation; either version 3 of
  the License, or (at your option) any later version.

  GNUKhata is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public
  License along with GNUKhata (COPYING); if not, write to the
  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  Boston, MA  02110-1301  USA59 Temple Place, Suite 330,


Contributor: "Anusha Kadambala"<[email protected]>
		    "Priyanka A Tawde"<[email protected]>
	            "Shruti A Surve"<[email protected]>

	    

"""
import pygtk
pygtk.require('2.0')
import os
import sys
import gtk,gobject
import gtk.glade,gnome,gnome.ui,datetime,time
import xmlrpclib
import report
import gnukhata_global
import locale
from time import strftime
import gridset
class purchase(gtk.Frame):

	def __init__(self,org_code,bill_no):
		"""
		[Purpose]
		 This is constructor for intialising purchase_master class.It has all frame widget defination and intialisation
		 
		[Arguments]
		 It passes orgcode(datatype:varchar) and billno(datatype:varchar)
		
		[Returns]
		 open window in glade format 		
		"""
		gtk.Frame.__init__(self)
		if os.path.exists(os.path.join(gnukhata_global.determine_path(), "data", "purchasebill.glade")):
            		self.wTreeFileName = os.path.join(gnukhata_global.determine_path(),"data", "purchasebill.glade")
        	else:
            		self.wTreeFileName = "/usr/share/gnukhata/data/purchasebill.glade"
		self.wTreebill = gtk.glade.XML(self.wTreeFileName)
		self.billno = bill_no
		self.orgcode = org_code
		payment_mode=''
		self.mode='n'
		
		self.scrolledwindow = self.wTreebill.get_widget('scrolledwindow')
		self.scrolledwindow.reparent(self)
		self.label_billno=self.wTreebill.get_widget('label_billno')
		self.entry_billno = self.wTreebill.get_widget('entry_billno')
		self.entry_billno.set_text("")
		self.label_billno.set_mnemonic_widget(self.entry_billno)
		self.entry_billno.set_text(str(bill_no))
		self.entry_billno.set_editable(False)

		self.label_ddno=self.wTreebill.get_widget('label_ddno')
		self.entry_ddno = self.wTreebill.get_widget('entry_ddno')
		self.label_ddno.set_mnemonic_widget(self.entry_ddno)
		self.label_ddno.hide()
		self.entry_ddno.hide()

		self.label_chequeno=self.wTreebill.get_widget('label_chequeno')
		self.entry_chequeno = self.wTreebill.get_widget('entry_chequeno')
		self.label_chequeno.set_mnemonic_widget(self.entry_chequeno)

		self.label_paymentmode = self.wTreebill.get_widget('label_paymentmode')
		self.combobox_paymentmode = self.wTreebill.get_widget('combobox_paymentmode')
		self.label_paymentmode.set_mnemonic_widget(self.combobox_paymentmode)
		self.combobox_paymentmode.connect('changed',self.paymentmode_change)
		
		self.label_transportername = self.wTreebill.get_widget('label_transportername')
		self.entry_transportername = self.wTreebill.get_widget('entry_transportername')
		self.label_transportername.set_mnemonic_widget(self.entry_transportername)


		self.label_vendorname = self.wTreebill.get_widget('label_vendorname')
		self.entry_vendorname = self.wTreebill.get_widget('entry_vendorname')
		self.label_vendorname.set_mnemonic_widget(self.entry_vendorname)

		self.label_bankname = self.wTreebill.get_widget('label_bankname')
		self.comboboxentry_bankname = self.wTreebill.get_widget('comboboxentry_bankname')
		self.label_bankname.set_mnemonic_widget(self.comboboxentry_bankname)

		self.label_date = self.wTreebill.get_widget('label_date')
		self.entry_date = self.wTreebill.get_widget('entry_date')
		self.label_date.set_mnemonic_widget(self.entry_date)
		self.entry_date.set_text(str(strftime("%d-%m-%Y %H:%M:%S")))
		self.entry_date.set_editable(False)

		self.label_netamount = self.wTreebill.get_widget('label_netamount')
		self.entry_netamount = self.wTreebill.get_widget('entry_netamount')
		self.label_netamount.set_mnemonic_widget(self.entry_netamount)
		self.entry_netamount.set_editable(False)

		self.label_discount = self.wTreebill.get_widget('label_discount')
		self.entry_discount = self.wTreebill.get_widget('entry_discount')
		self.label_discount.set_mnemonic_widget(self.entry_discount)
		#self.entry_discount.connect('changed',self.discount_change)

		self.label_flatdiscount = self.wTreebill.get_widget('label_flatdiscount')
		self.entry_flatdiscount = self.wTreebill.get_widget('entry_flatdiscount')
		self.label_flatdiscount.set_mnemonic_widget(self.entry_flatdiscount)
		#self.entry_flatdiscount.connect('changed',self.flatdiscount_change)

		
		self.label_othercharges = self.wTreebill.get_widget('label_othercharges')
		self.entry_othercharges = self.wTreebill.get_widget('entry_othercharges')
		self.label_othercharges.set_mnemonic_widget(self.entry_othercharges)
		#self.entry_othercharges.connect('changed',self.othercharges_change)
		


		self.label_amountpaid = self.wTreebill.get_widget('label_amountpaid')
		self.entry_amountpaid = self.wTreebill.get_widget('entry_amountpaid')
		self.label_amountpaid.set_mnemonic_widget(self.entry_amountpaid)
		
		self.dateedit_referencedate= self.wTreebill.get_widget('dateedit_referencedate')
		self.dateedit_referencedate.set_time(0)
		self.button_forward = self.wTreebill.get_widget('button_forward')
		self.button_cancel = self.wTreebill.get_widget('button_cancel')
		#self.button_cancel.connect('clicked',self.cancelclicked)
		
		#self.button_forward.connect('clicked',self.forwardclicked)

		self.scrolledwindow_treeview = self.wTreebill.get_widget('scrolledwindow_treeview')
		self.taxnames = gnukhata_global.serverProxy.tax.getTaxNames(gnukhata_global.client_id)
		self.billList = gtk.ListStore(*(([gobject.TYPE_STRING] * 7)+([gobject.TYPE_BOOLEAN] * 2)+([gobject.TYPE_STRING] * 2)+([gobject.TYPE_BOOLEAN]*len(self.taxnames))+([gobject.TYPE_STRING] * 2)))

		lst=['', '','','','','','',False,False,'','']
		for r in self.taxnames:
			lst.append(False)
		lst.append('')
		lst.append('')

		self.treeview_bill = gridset.Grid(self.billList)
		for i in range(10):
			iter = self.billList.append(tuple(lst))
		self.scrolledwindow_treeview.add(self.treeview_bill)
		self.scrolledwindow_treeview.show_all()
		self.editors = []
		
		column_labels=["Product code","Product name","Manufacturer/Publisher","Stock quantity","Quantity","Price/Product","Amount","Discount percentage/product","Flat discount","Discounted Amount","Total discount amount"]
		
		for i in range(0,7):
			renderer = gtk.CellRendererText()
			column = gtk.TreeViewColumn(column_labels[i], renderer, text=i)
			column.set_resizable(True)
			self.treeview_bill.append_column(column)
			self.editors.append(gridset.GridCellEditorText(self.treeview_bill, i))

		renderer = gtk.CellRendererToggle()
			
		#renderer.connect("toggled",self.discountpercentChanged,self.billList,6)
		column = gtk.TreeViewColumn(column_labels[7], renderer, active=7)
		column.set_resizable(True)
		self.treeview_bill.append_column(column)
		self.editors.append(gridset.GridCellEditorToggle(self.treeview_bill, 7))

		renderer = gtk.CellRendererToggle()
		#renderer.connect("toggled",self.flatdiscountChanged,self.billList,7)
		column = gtk.TreeViewColumn(column_labels[8], renderer, active=8)
		column.set_resizable(True)
		self.treeview_bill.append_column(column)
		self.editors.append(gridset.GridCellEditorToggle(self.treeview_bill, 8))


		renderer = gtk.CellRendererText()
		column = gtk.TreeViewColumn(column_labels[9], renderer, text=9)
		column.set_resizable(True)
		self.treeview_bill.append_column(column)
		self.editors.append(gridset.GridCellEditorText(self.treeview_bill, 9))

		renderer = gtk.CellRendererText()
		column = gtk.TreeViewColumn(column_labels[10], renderer, text=10)
		column.set_resizable(True)
		self.treeview_bill.append_column(column)
		self.editors.append(gridset.GridCellEditorText(self.treeview_bill, 10))

		for r in range(0,len(self.taxnames)):
			renderer = gtk.CellRendererToggle()
			column = gtk.TreeViewColumn(self.taxnames[r][0], renderer, active=11+r)
			column.set_resizable(True)
			self.treeview_bill.append_column(column)
			self.editors.append(gridset.GridCellEditorToggle(self.treeview_bill,11+r))

		
		renderer = gtk.CellRendererText()
		column = gtk.TreeViewColumn("Total Taxed amount", renderer, text=len(column_labels)+len(self.taxnames)+0)
		column.set_resizable(True)
		self.treeview_bill.append_column(column)
		self.editors.append(gridset.GridCellEditorText(self.treeview_bill, len(column_labels)+len(self.taxnames)+0))

		renderer = gtk.CellRendererText()
		column = gtk.TreeViewColumn("Total amount", renderer, text=len(column_labels)+len(self.taxnames)+1)
		column.set_resizable(True)
		self.treeview_bill.append_column(column)
		self.editors.append(gridset.GridCellEditorText(self.treeview_bill, len(column_labels)+len(self.taxnames)+1))
		
		self.treeview_bill.setEditors(self.editors)

		'''self.editors[4].setEditable(False)
		self.editors[5].setEditable(False)
		self.editors[8].setEditable(False)'''

		self.lst_allbanknames=[]
		self.lst_paymentmode=['Cash','Cheque','DD','To Be Paid']
		for l in self.lst_paymentmode:
			self.combobox_paymentmode.append_text(l)

		self.liststore = gtk.ListStore(str)
		self.completion = gtk.EntryCompletion()

		self.comboboxentry_bankname.append_text("")
		res=gnukhata_global.serverProxy.account.getAllAccountBank(gnukhata_global.client_id)
		if res != False:
			for l in range(0,len(res)):
				self.lst_allbanknames.append(res[l][0])
			for l in self.lst_allbanknames:
		
				self.comboboxentry_bankname.append_text(l)



		res=gnukhata_global.serverProxy.vendor.getAllVendorNames(gnukhata_global.client_id)
		if res==False:
			self.messagedialog_warning_validate = gtk.MessageDialog(type = gtk.MESSAGE_ERROR,buttons=gtk.BUTTONS_OK, message_format=("Vendors are not there !!!"))
			self.response = self.messagedialog_warning_validate.run()
			self.messagedialog_warning_validate.destroy()
			return
		else:
			for s in range(0,len(res)):
				self.liststore.append([res[s][0]])
			self.completion.set_model(self.liststore)
			self.entry_vendorname.set_completion(self.completion)
			self.completion.set_text_column(0)
			self.completion.connect('match-selected', self.match_cb)
			self.entry_vendorname.connect('activate', self.activate_cb)		

		if self.mode == 'f':
			
			
			queryParams =[self.billno]
			res=gnukhata_global.serverProxy.purchasebill.getPurchaseMaster(queryParams,gnukhata_global.client_id)
			
			if res == False:
				self.dialog_FindFail = gtk.MessageDialog(type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_OK, message_format=("Record doesnt exist!!!"))
				self.response = self.dialog_FindFail.run()
				self.dialog_FindFail.destroy()
	
				return
			else:
				
				#self.queryParams_master = res[0]
				result = gnukhata_global.serverProxy.vendor.getVendor(['code',res[2]],gnukhata_global.client_id)
				self.entry_vendorname.set_text(result[1])
				#self.entry_ddno.set_text(res[8])
				#self.entry_bankname.set_text(res[7])
				self.entry_chequeno.set_text(res[6])
				
				for paymentmode_index in range(0,len(self.lst_paymentmode)):
					if self.lst_paymentmode[paymentmode_index] == res[4]:
						self.combobox_paymentmode.set_active(paymentmode_index)
				self.entry_transportername.set_text(res[3])
				bill_date=time.mktime(time.strptime(str(res[1]),"%Y-%m-%d %H:%M:%S"))

				self.entry_date.set_time(int(bill_date))
				
				self.entry_vendorname.set_editable(False)
				self.entry_ddno.set_editable(False)
				self.entry_chequeno.set_editable(False)
				self.entry_transportername.set_editable(False)
				self.entry_date.set_sensitive(False)
				self.combobox_bankname.set_sensitive(False)
				self.queryParams_details = gnukhata_global.serverProxy.purchasebill.getPurchaseDetails([self.orgcode],queryParams,gnukhata_global.client_id)
				self.queryParams_finddetails = self.queryParams_details[0][5]
		#self.editors[6].connect("toggled",self.discountpercentChanged)
		#self.editors[7].connect("toggled",self.flatdiscountChanged)
		self.editors[0].connect("focus-out-event",self.prodcode_lostfocus)
		
		self.entry_vendorname.grab_focus()		
		self.show()

	def prodcode_lostfocus(self,widget,event):
		
		self.price=0
		if self.editors[0] == "" or self.editors[0] == " ":
			self.dialog_EntryFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Product Code cannot be empty"))
			self.response = self.dialog_EntryFail.run()
			self.dialog_EntryFail.destroy()
			self.editors[0].grabFocus()
			return
		else:

			
			res = gnukhata_global.serverProxy.product.getCategory(['code',self.editors[0].getValue()],gnukhata_global.client_id)
		
		
			if res == False:
				self.dialog_EntryFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Product Code doesnot exist"))
				#self.entry_prodcode.set_text("")
				self.response = self.dialog_EntryFail.run()
				self.dialog_EntryFail.destroy()
				#self.entry_prodcode.grab_focus()
				return
			else:
				self.category = res[1]
				result = gnukhata_global.serverProxy.product.getPurchaseProductDetails(['code',self.editors[0].getValue()],gnukhata_global.client_id)
				
				self.editors[1].setValue(result[1])
				self.editors[2].setValue(result[4])
				#self.editors[3].setValue(str(result[3]))
				#self.editors[5].setValue(str(result[2]))
				print result
				print self.editors[2].getValue()
				print self.editors[3].getValue()
				print self.editors[5].getValue()
				self.editors[2].setVisibility(True)
				#self.editors[2].setEditable(False)
				#self.editors[3].setEditable(False)
				#self.editors[5].setEditable(False)

				'''result2=gnukhata_global.serverProxy.tax.getTaxByProdCode([self.entry_prodcode.get_text()],gnukhata_global.client_id)
				if result2 == [] :
					self.taxpercent = 0.00
					self.taxlabel=""
				else :
					result3=gnukhata_global.serverProxy.vendor.getVendor(['code',self.vendorcode],gnukhata_global.client_id)
			
					for l in range(0,len(result2)) :
						if result2[l][2] == result3[5] and result2[l][3] == result3[3] :
							self.taxpercent=float(self.taxpercent)+float(result2[l][4])
							self.taxlabel=self.taxlabel+","+result2[l][1]
						
					self.taxlabel = "These are all taxes which are applied to this product ie"+ self.taxlabel + '.'
				
				#self.entry_taxpercent.set_text(str(self.taxpercent))
				self.label_taxpercent.set_text(self.taxlabel)		
				if result == False:
					self.dialog_EntryFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Product doesnt exists"))
					self.entry_prodcode.set_text("")
					self.response = self.dialog_EntryFail.run()
					self.dialog_EntryFail.destroy()
					self.entry_prodcode.grab_focus()
					return
				else:
					self.entry_prodname.set_text(result[1])
					self.price =result[2]
				
					self.entry_prodprice.set_text(str(self.price))
					self.vendorname=result[4]'''
			
	
	def prodname_lostfocus(self,widget,event):
		"""
		[Purpose]
		 This function is used for as type prodname automatically all details come

		[Arguments]
		 It passes event(Pointer) and prodcode(datatype:Varchar)

		[Returns]
		 It returns  and as type prodcode it returns a list of [prodname(datatype:Varchar),quantity(datatype:bigint),discount(datatype:float4),
		 tax(datatype:float4),account(datatype:float4)]
 
		"""
		
		if self.entry_prodname.get_text() == "" or self.entry_prodname.get_text() == " ":
			return
		else:
			res = gnukhata_global.serverProxy.product.getCategory(['name',self.entry_prodname.get_text()],gnukhata_global.client_id)
			
			if res == False:
				self.dialog_EntryFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Product name doesnt exists"))
				self.entry_prodname.set_text("")
				self.response = self.dialog_EntryFail.run()
				self.dialog_EntryFail.destroy()
				self.entry_prodname.grab_focus()
				return
			else:
				self.category = res[1]
				result = gnukhata_global.serverProxy.product.getPurchaseProductDetails(['name',self.entry_prodname.get_text()],gnukhata_global.client_id)
			
				if res == False:
					self.dialog_EntryFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Product doesnt exists"))
					self.entry_prodname.set_text("")
					self.response = self.dialog_EntryFail.run()
					self.dialog_EntryFail.destroy()
					self.entry_prodname.grab_focus()
					return
				else:
					self.entry_prodcode.set_text(result[0])
					self.price =result[2]
					
					self.entry_prodprice.set_text(str(result[2]))
					self.vendorname=str(result[4])



		#######################
		self.taxpercent=0.00
		self.taxlabel=""
		if self.entry_prodname.get_text() == "" or self.entry_prodname.get_text() == " ":
			return
		else:

			
			res = gnukhata_global.serverProxy.product.getCategory(['name',self.entry_prodname.get_text()],gnukhata_global.client_id)
		
		
			if res == False:
				self.dialog_EntryFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Product Code doesnot exist"))
				self.entry_prodcode.set_text("")
				self.response = self.dialog_EntryFail.run()
				self.dialog_EntryFail.destroy()
				self.entry_prodcode.grab_focus()
				return
			else:
				self.category = res[1]
				result = gnukhata_global.serverProxy.product.getPurchaseProductDetails(['code',self.entry_prodcode.get_text()],gnukhata_global.client_id)
				result2=gnukhata_global.serverProxy.tax.getTaxByProdCode([self.entry_prodcode.get_text()],gnukhata_global.client_id)
				if result2 == [] :
					self.taxpercent = 0.00
					self.taxlabel=""
				else :
					result3=gnukhata_global.serverProxy.vendor.getVendor(['code',self.vendorcode],gnukhata_global.client_id)
			
					for l in range(0,len(result2)) :
						if result2[l][2] == result3[5] and result2[l][3] == result3[3] :
							self.taxpercent=float(self.taxpercent)+float(result2[l][4])
							self.taxlabel=self.taxlabel+","+result2[l][1]
						
					self.taxlabel = "These are all taxes which are applied to this product ie"+ self.taxlabel + '.'
				
				self.entry_taxpercent.set_text(str(self.taxpercent))
				self.label_taxpercent.set_text(self.taxlabel)		
				if result == False:
					self.dialog_EntryFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Product doesnt exists"))
					self.entry_prodcode.set_text("")
					self.response = self.dialog_EntryFail.run()
					self.dialog_EntryFail.destroy()
					self.entry_prodcode.grab_focus()
					return
				else:
					self.entry_prodname.set_text(result[1])
					self.price =result[2]
				
					self.entry_prodprice.set_text(str(self.price))
					self.vendorname=result[4]

	def match_cb(self, completion, model, iter):
		"""
		[Purpose]
	         match_cb  function used for dictonary purpose
		
		[Arguments]
 		 completion, model

		[Returns]
 		 None
		"""
        	return

    	def activate_cb(self, entry):
		"""
		[Purpose] 		
		 This function used for upending list as dictonary

		[Arguments]
 		 entry

		[Returns]
	 	 None
		"""
        	self.text = self.entry_vendorname.get_text()
        	if self.text:
        	    if self.text not in [row[0] for row in self.liststore]:
        	        self.liststore.append([self.text])
        	        self.entry_vendorname.set_text('')
        	return

	
	def forwardclicked(self,widget):
		"""
		[Purpose]
		 This function used to ho next page of purchase bill discription and all types of validation
		
		[Arguments]
		 None

		[Returns]
		It forwarded to next page arguments like list of[pbillno(datatype:varchar),pbilldate(datatype:timestamp),
		vendorcode(datatype:varchar),transportname(datatype:varchar),ppaymentmode(datatype:varchar),chequeno(datatype:varchar),
		bankname(datatype:varchar),othercharges(datatype:numeric),discount(datatype:float4),tax(datatype:float4)]
		"""
		if self.entry_vendorname.get_text() == '' or self.entry_vendorname.get_text == ' ':
			self.dialog_FindFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Vendor name cant be empty"))
			self.response = self.dialog_FindFail.run()
			self.dialog_FindFail.destroy()
			self.entry_vendorname.grab_focus()
			return

		res = gnukhata_global.serverProxy.vendor.getVendor(['name',self.entry_vendorname.get_text()],gnukhata_global.client_id)
		self.vendorcode=res[0]

		if res == False:
			self.dialog_FindFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Vendor doesnt exist!!!Enter a proper vendor name"))
			self.response = self.dialog_FindFail.run()
			self.dialog_FindFail.destroy()
			self.entry_vendorname.grab_focus()
			return
		


		if self.entry_transportername.get_text() == '' or self.entry_transportername.get_text() == ' ':
			self.messagedialog_warning_validate = gtk.MessageDialog(type = gtk.MESSAGE_ERROR,buttons=gtk.BUTTONS_OK, message_format=("The transporter name cannot be empty!"))
			self.response = self.messagedialog_warning_validate.run()
			self.messagedialog_warning_validate.destroy()
			self.entry_transportername.grab_focus()
			return

		if len(self.entry_transportername.get_text())>30:
			self.messagedialog_warning_validate = gtk.MessageDialog(type = gtk.MESSAGE_ERROR,buttons=gtk.BUTTONS_OK, message_format=("The length of transporter name cannot exceed 30!"))
			self.response = self.messagedialog_warning_validate.run()
			self.messagedialog_warning_validate.destroy()
			self.entry_transportername.grab_focus()
			return

		self.getParent_notebook = self.get_parent()
		self.page =self.getParent_notebook.get_current_page()
		model_paymentmode = self.combobox_paymentmode.get_model()
		active_paymentmode = self.combobox_paymentmode.get_active()
		model_bankname = self.combobox_bankname.get_model()
		active_bankname = self.combobox_bankname.get_active()
		self.bill_date=str(strftime("%Y-%m-%d %H:%M:%S"))
		self.reff_date=time.strftime("%m-%d-%Y %H:%M", time.localtime(self.dateedit_referencedate.get_time()))
		
		res = gnukhata_global.serverProxy.vendor.getVendor(['name',self.entry_vendorname.get_text()],gnukhata_global.client_id)

		if res == False:
			self.dialog_FindFail = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK, message_format=("Vendor doesnt exist!!!Enter a proper vendor name"))
			self.response = self.dialog_FindFail.run()
			self.dialog_FindFail.destroy()
			return

			
		if self.mode == 'n':	
			if model_paymentmode[active_paymentmode][0]=='Cash':
				queryParams_master=[self.entry_billno.get_text(),self.bill_date,self.reff_date,res[0],self.entry_transportername.get_text(),model_paymentmode[active_paymentmode][0],self.entry_chequeno.get_text(),""]
			else :
				queryParams_master=[self.entry_billno.get_text(),self.bill_date,self.reff_date,res[0],self.entry_transportername.get_text(),model_paymentmode[active_paymentmode][0],self.entry_chequeno.get_text(),model_bankname[active_bankname][0]]
			self.bill_nextpage=purchase_details('n',self.orgcode,queryParams_master,self.entry_billno.get_text(),self.vendorcode)	
				
			self.eventbox=self.create_custom_tab('New purchase bill -page 2')
			self.page=self.getParent_notebook.insert_page(self.bill_nextpage, self.eventbox,-1)
			self.tabButton.connect('event',self.on_tabButton_clicked,self.bill_nextpage)
			self.getParent_notebook.set_current_page(self.page)
		
		if self.mode == 'f':
			
			self.bill_nextpage=purchase_details('f',self.orgcode,self.queryParams_details,self.entry_billno.get_text(),self.queryParams_finddetails)	
			self.getParent_notebook.insert_page(self.bill_nextpage,gtk.Label('Purchase bill-page 2'))
			self.getParent_notebook.next_page()
			
		if self.mode == 'e':
			self.bill_date=time.strftime("%m-%d-%Y  %H:%M:%S", time.localtime(self.entry_date.get_time()))	
			queryParams_master=[self.entry_billno.get_text(),self.bill_date,res[0],self.entry_transportername.get_text(),model_paymentmode[active_paymentmode][0],self.queryParams_details[1],self.entry_chequeno.get_text(),model_bankname[active_bankname][0],self.queryParams_details[0]]
			res = gnukhata_global.serverProxy.purchasebill.editPurchaseMaster(queryParams_master,gnukhata_global.client_id)
			if res == True:
				self.dialog_record_update = gtk.MessageDialog(type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_YES_NO, message_format=("Record updated successfully !!! Do you want to edit Purchase Details"))
				self.response_record_update = self.dialog_record_update.run()		
				if self.response_record_update == gtk.RESPONSE_YES :
					
					self.bill_nextpage=purchase_details('e',self.orgcode,self.queryParams_details,self.entry_billno.get_text(),self.queryParams_finddetails)	
					self.getParent_notebook.insert_page(self.bill_nextpage,gtk.Label('Purchase bill-page 2'))
					self.getParent_notebook.next_page()
					self.dialog_record_update.destroy()
					return
				else:
					self.bill_nextpage=purchase_details('f',self.orgcode,self.queryParams_details,self.entry_billno.get_text(),self.queryParams_finddetails)	
					self.getParent_notebook.insert_page(self.bill_nextpage,gtk.Label('Purchase bill-page 2')) 
					self.getParent_notebook.next_page()					
					self.dialog_record_update.destroy()


		
	def cancelclicked(self,widget):
			
		self.billno=gnukhata_global.serverProxy.voucher.getVoucherCode([gnukhata_global.orgcode],gnukhata_global.client_id)
			
		self.entry_billno.set_text(self.billno)
		self.entry_vendorname.set_text("")
		self.entry_ddno.set_text("")
		self.entry_chequeno.set_text("")
		self.entry_transportername.set_text("")
		self.entry_date.set_text(str(strftime("%d-%m-%Y %H:%M:%S")))

	def editclicked(self,widget):
				
		
		self.mode='e'
		self.entry_vendorname.set_editable(True)
		self.entry_ddno.set_editable(True)
		self.entry_chequeno.set_editable(True)
		self.entry_transportername.set_editable(True)
		self.entry_date.set_sensitive(True)
		self.combobox_bankname.set_sensitive(True)

	def paymentmode_change(self,widget):
		
		model_paymentmode = self.combobox_paymentmode.get_model()
		active_paymentmode = self.combobox_paymentmode.get_active()
		payment_mode=model_paymentmode[active_paymentmode][0]
		if payment_mode == 'Cash':
			self.entry_chequeno.set_sensitive(False)
			self.entry_ddno.set_sensitive(False)
			self.combobox_bankname.set_sensitive(False)
		if payment_mode == 'Cheque':
			self.entry_chequeno.set_sensitive(True)
			self.entry_ddno.set_sensitive(False)
			self.combobox_bankname.set_sensitive(True)
		if payment_mode == 'DD':
			self.entry_chequeno.set_sensitive(False)
			self.entry_ddno.set_sensitive(True)
			self.combobox_bankname.set_sensitive(True)
		if payment_mode == 'To Be Paid':
			self.entry_chequeno.set_sensitive(False)
			self.entry_ddno.set_sensitive(False)
			self.combobox_bankname.set_sensitive(False)



_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/

Reply via email to