コード例 #1
0
    def generate_parameters(self, cr, uid, ids, data, context):
        val = {}
        rec = self.pool.get('kg.sale.cr.note').browse(cr, uid, ids[0])

        val['credit_note_id'] = ids[0]
        val['net_amt'] = rec.net_amt
        print "net_amtnet_amtnet_amtnet_amt", val['net_amt']
        text_amount = number_to_text_convert_india.amount_to_text_india(
            val['net_amt'], "INR: ")
        val['net_amt'] = text_amount
        print "val....................", val

        return val
コード例 #2
0
	def wkf_approve_order(self, cr, uid, ids, context=None):
		logger.info('[KG OpenERP] Class: kg_purchase_order, Method: wkf_approve_order called...')
		obj = self.browse(cr,uid,ids[0])
		"""Raj
		if obj.confirmed_by.id == uid:
			raise osv.except_osv(
					_('Warning'),
					_('Approve cannot be done by Confirmed user'))
		else:
		"""
		if obj.payment_mode.term_category == 'advance':
			cr.execute("""select * from kg_po_advance where state='approved' and po_id= %s"""  %(str(ids[0])))
			data = cr.dictfetchall()
			if not data:
				raise osv.except_osv(
					_('Warning'),
					_('Advance is mandate for this PO'))
			else:
				pass		
		print obj.order_line
		text_amount = number_to_text_convert_india.amount_to_text_india(obj.amount_total,"INR:")
		self.write(cr,uid,ids[0],{'text_amt':text_amount})
		line_obj = self.pool.get('purchase.order.line')
		line_rec = line_obj.search(cr, uid, [('order_id','=',obj.id)])
		for order_line in line_rec:
			order_line_rec = line_obj.browse(cr, uid, order_line)
			product_tax_amt = self._amount_line_tax(cr, uid, order_line_rec, context=context)
			cr.execute("""update purchase_order_line set product_tax_amt = %s where id = %s"""%(product_tax_amt,order_line_rec.id))
			line_obj.write(cr,uid,order_line,{'cancel_flag':'True','line_flag':'True'})
				
		self.write(cr, uid, ids, {'state': 'approved', 'date_approve': fields.date.context_today(self,cr,uid,context=context),'order_line.line_state' : 'confirm'})
		self.write(cr, uid, ids, {'approve_flag':'True',
								  'approved_by':uid,
								  'approved_date':today})
								  
		po_order_obj=self.pool.get('purchase.order')
		po_id=obj.id
		po_lines = obj.order_line
		cr.execute("""select piline_id from kg_poindent_po_line where po_order_id = %s"""  %(str(ids[0])))
		data = cr.dictfetchall()
		val = [d['piline_id'] for d in data if 'piline_id' in d] # Get a values form list of dict if the dict have with empty values
		for i in range(len(po_lines)):
			if obj.po_type == 'frompi':
				if po_lines[i].pi_line_id and po_lines[i].group_flag == False:
					pi_line_id=po_lines[i].pi_line_id
					product = po_lines[i].product_id.name
					po_qty=po_lines[i].product_qty
					po_pending_qty=po_lines[i].pi_qty
					pi_pending_qty= po_pending_qty - po_qty
					if po_qty > po_pending_qty:
						raise osv.except_osv(
						_('If PO from Purchase Indent'),
						_('PO Qty should not be greater than purchase indent Qty. You can raise this PO Qty upto %s --FOR-- %s.'
									%(po_pending_qty, product)))
													
					pi_obj=self.pool.get('purchase.requisition.line')
					pi_line_obj=pi_obj.search(cr, uid, [('id','=',val[i])])
					pi_obj.write(cr,uid,pi_line_id.id,{'draft_flag' : False})
					sql = """ update purchase_requisition_line set pending_qty=%s where id = %s"""%(pi_pending_qty,pi_line_id.id)
					cr.execute(sql)
					
					if pi_pending_qty == 0:
						pi_obj.write(cr,uid,pi_line_id.id,{'line_state' : 'noprocess'})
					
					if po_lines[i].group_flag == True:
							self.update_product_pending_qty(cr,uid,ids,line=po_lines[i])
					else:
						print "All are correct Values and working fine"
			else:
				# Tax Updation #
				tax_struct_obj =  self.pool.get('kg.tax.structure')
				if po_lines[i].tax_structure_id:
					stru_rec = tax_struct_obj.browse(cr, uid,po_lines[i].tax_structure_id.id)					
					for line in stru_rec.tax_line:
						tax_id = line.tax_id.id
						sql = """ insert into purchase_order_taxe (ord_id,tax_id) VALUES(%s,%s) """ %(po_lines[i].id,tax_id)
						cr.execute(sql)
					
				line_obj.write(cr,uid,po_lines[i].id,{'pending_qty':po_lines[i].product_qty})
				
		#self.send_email(cr,uid,ids)
		#cr.execute("""select all_transaction_mails('Purchase Order Approval',%s)"""%(ids[0]))
		"""Raj
コード例 #3
0
	def get_data(self,form):
		res = {}
		where_sql = []
				
		if form['order']:
			for ids1 in form['order']:
				where_sql.append("so.id = %s"%(ids1))
		if form['supplier']:
			for ids2 in form['supplier']:
				where_sql.append("so.partner_id = %s"%(ids2))
		if form['delivery_id']:
			delivery_id = form['delivery_id']
			where_sql.append("so.delivery_type = %s"%(delivery_id[0]))
			
				
		if where_sql:
			where_sql = ' and '+' or '.join(where_sql)
			print "where_sql.............................", where_sql
		else:
			where_sql=''
		
				
		self.cr.execute('''
				SELECT  distinct on (so.id) so.id as so_id, 
				to_char(so.date,'dd/mm/yyyy') as date, 
				so.name as so_number,
				so.partner_id as part_id,
				so.state as so_state,
				so.amount_total as total,
				so.amount_tax as tax,
				so.note as remarks,
				so.discount as discount,
				master.name as delivery,
				so.delivery_mode as mode,
				so.payment_mode as pay_mode,
				so.note as remark,
				part.name as name,
				part.street as str1,
				part.city as city,
				part.zip as zip,
				st.name as state,
				coun.name as country,
				part.phone as phone,
				part.mobile as cell,
				part.fax as fax,
				part.email as email,
				si.name as si_no,
				to_char(si.date, 'dd/mm/yyyy') as si_date,
				dep.dep_name as dep_name
			
				
				FROM  kg_service_order so
				join res_partner part on (part.id=so.partner_id)
				join res_country_state st on(st.id=part.state_id)
				join res_country as coun on(coun.id=part.country_id)
				join kg_deliverytype_master as master on(master.id=so.delivery_type)
				join kg_service_order_line as so_line on(so_line.service_id = so.id)
				join kg_service_indent_line as si_line on(si_line.id = so_line.soindent_line_id)
				join kg_service_indent as si on(si.id = si_line.service_id)
				join kg_depmaster as dep on(dep.id=si.dep_name)

								
				where so.state = %s and so.date >=%s and so.date <=%s  '''+ where_sql + '''
				''',('done', form['date_from'],form['date_to']))
				
		data = self.cr.dictfetchall()
		print "Data ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", data

		for i in data:
			if i['pay_mode'] == 'ap':
				i['pay_mode'] = 'Advance Paid'
			elif i['pay_mode'] == 'on_receipt':
				i['pay_mode'] = 'On Receipt of Goods and Acceptance'
		for j in data:
			if j['mode'] == 'direct':
				j['mode'] = 'DIRECT'
			elif j['mode'] == 'door':
				j['mode'] = 'DOOR DELIVERY'
		for k in data:
			if k['so_state'] == 'draft':
				k['so_state'] = 'DRAFT'
			elif k['so_state'] == 'done':
				k['so_state'] = 'Done'

				
		for so in data:
			so_id = so['so_number']
			partner_id = so['part_id']
			so_id=so['so_id']
			so_record = self.pool.get('kg.service.order').browse(self.cr, self.uid,so_id)
			text_amount = number_to_text_convert_india.amount_to_text_india(so['total'],"INR: ")
			so['total_in_text']=text_amount
			#print "total_in_text ::::::::::::::::::::::::::::::::", so['total_in_text']
			print "other change =========================>>>", so_record
			charges = so_record.other_charge
			so['charges']=charges
			print "charges ()()()()()()())()()()()()() -------------->>", charges
		return data
コード例 #4
0
	def get_po_data(self,datas):
		
		form = datas['form']
		print "form =================>>>>>>.",form				
		po_id = form['id']
		print "po_id **************************", po_id		
		
		sql = """
				SELECT  distinct on (po.id)
				po.id as po_id,
				to_char(po.date_order,'dd/mm/yyyy') as date, 
				po.name as po_number,
				po.origin as origin,
				po.partner_id as part_id,
				po.state as postate,
				po.amount_total as total,
				po.amount_tax as tax,
				po.notes as remarks,
				po.discount as discount,
				master.name as delivery,
				po.delivery_mode as mode,
				po.payment_mode as pay_mode,			
				part.name as name,
				part.street as str1,
				ct.name as city,
				part.zip as zip,
				st.name as state,
				coun.name as country,
				part.phone as phone,
				part.mobile as cell,
				part.fax as fax,
				part.email as email,
				po.id as order_id
				
				FROM  purchase_order po
				
				join res_partner part on (part.id=po.partner_id)
				left join res_country_state st on(st.id=part.state_id)
				left join res_city ct on(ct.id=part.city)
				left join res_country as coun on(coun.id=part.country_id)
				join kg_deliverytype_master as master on(master.id=po.delivery_type)
				join purchase_order_line as po_line on(po_line.order_id = po.id)
				join purchase_requisition_line as pi_line on(pi_line.id = po_line.pi_line_id)
				join purchase_requisition as pi on(pi.id = pi_line.requisition_id)
				join kg_depindent_line as dep_line on(dep_line.id = pi_line.depindent_line_id)
				join kg_depindent as indent on(indent.id = dep_line.indent_id)
				where po.id=%s """ %(po_id)
		self.cr.execute(sql)				
		data = self.cr.dictfetchall()
		print "Data ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", data
		for i in data:
			if i['pay_mode'] == 'ap':
				i['pay_mode'] = 'Advance Paid'
			elif i['pay_mode'] == 'on_receipt':
				i['pay_mode'] = 'On Receipt of Goods and Acceptance'
		for j in data:
			if j['mode'] == 'direct':
				j['mode'] = 'DIRECT'
			elif j['mode'] == 'door':
				j['mode'] = 'DOOR DELIVERY'
		for k in data:
			if k['postate'] == 'draft':
				k['postate'] = 'DRAFT'
			elif k['postate'] == 'approved':
				k['postate'] = 'APPROVED'
				
		for po in data:
			po_id = po['po_number']
			order_id = po['order_id']
			partner_id = po['part_id']
			print "order_id,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", order_id
			po_record = self.pool.get('purchase.order').browse(self.cr, self.uid,order_id)
			text_amount = number_to_text_convert_india.amount_to_text_india(po['total'],"INR: ")
			po['total_in_text']=text_amount
			charges = po_record.other_charge
			po['charges']=charges
			pi_data = []
			dep_ids = []
			fmt = '%Y-%m-%d %H:%M:%S'
			if po_record.order_line:
				for line in po_record.order_line:
					pil_id = line.pi_line_id
					pi_id = pil_id.requisition_id.name
					pi_date = pil_id.requisition_id.date_start
					d = datetime.strptime(pi_date, fmt)
					day_string = d.strftime('%d/%m/%Y')
					dep_id = pil_id.dep_id.dep_name
					pi_data.append(pi_id)
					pi_data.append(day_string)
					dep_ids.append(dep_id)
					print "pi_data -----------------------", pi_data
					print "dep_ids ------------------------->>>", dep_ids
					pi_new_data =  [x for x, y in collections.Counter(pi_data).items()]
					new_data = (', '.join('"' + item + '"' for item in pi_new_data))											
					#pi_new_dep =  [x for x, y in collections.Counter(dep_ids).items()]
					#new_dep_id = (', '.join('"' + item + '"' for item in pi_new_dep))
				#po_dep_id = [ item.encode('ascii') for item in ast.literal_eval(new_dep_id)]							
				print "new_data ----------------------->>>", new_data
				po_pi_data = [ item.encode('ascii') for item in ast.literal_eval(new_data) ]				
				a = ', '.join(po_pi_data)
				#b = ', '.join(po_dep_id)			
				print "list --- to --- string -------->>>", a
				po['pi_data'] = a
				po['dep_name'] = dep_id
					
		return data
コード例 #5
0
	def approve_order(self, cr, uid, ids,context=None):
		rec = self.browse(cr,uid,ids[0])
		if rec.state == 'confirm':
			if rec.payment_type == 'advance':
				obj = rec
				self.advance_creation(cr,uid,obj)
			
			if rec.payment_mode.term_category == 'advance':
				cr.execute("""select * from kg_supplier_advance where state='confirmed' and so_id= %s"""  %(str(ids[0])))
				data = cr.dictfetchall()
				if not data:
					raise osv.except_osv(
						_('Warning'),
						_('Advance is mandate for this SO'))
				else:
					pass
			text_amount = number_to_text_convert_india.amount_to_text_india(rec.amount_total,"INR:")
			self.write(cr,uid,ids,{'state':'approved','approved_by':uid,'text_amt':text_amount,'approved_date':time.strftime('%Y-%m-%d %H:%M:%S')})
			obj = self.browse(cr,uid,ids[0])
			product_obj = self.pool.get('product.product')
			cr.execute(""" select serindent_line_id from kg_serindent_so_line where so_id = %s """ %(str(ids[0])))
			data = cr.dictfetchall()
			val = [d['serindent_line_id'] for d in data if 'serindent_line_id' in d] # Get a values form list of dict if the dict have with empty values
			so_lines = obj.service_order_line
			if not so_lines:
				raise osv.except_osv(
						_('Empty Service Order'),
						_('System not allow to approve without Service Order Line'))
			else:
				for i in range(len(so_lines)):
					self.pool.get('kg.service.order.line').write(cr, uid,so_lines[i].id,{'so_type_flag':'True','service_flag':'True','state':'approved'})
					product_id = so_lines[i].product_id.id
					product_record = product_obj.browse(cr, uid, product_id)
					product = so_lines[i].product_id.name
					if rec.so_type == 'service':
						if so_lines[i].soindent_line_id:
							soindent_line_id=so_lines[i].soindent_line_id
							orig_soindent_qty = so_lines[i].soindent_qty
							so_used_qty = so_lines[i].product_qty
							pending_soindent_qty = orig_soindent_qty -  so_used_qty
							sql = """ update kg_service_indent_line set pending_qty=%s where id = %s """%(pending_soindent_qty,
														soindent_line_id.id)
							cr.execute(sql)

							sql1 = """ update kg_gate_pass_line set so_pending_qty=(so_pending_qty - %s),so_flag = 't' where si_line_id = %s and gate_id = %s"""%(so_used_qty,
														soindent_line_id.id,obj.gp_id.id)
							cr.execute(sql1)
							
							sql2 = """ update kg_service_order_line set gp_line_id=(select id from kg_gate_pass_line where si_line_id = %s and gate_id = %s limit 1)"""%(soindent_line_id.id,obj.gp_id.id)
							cr.execute(sql2)
						else:
							raise osv.except_osv(
								_('Direct Service Order Not Allow'),
								_('System not allow to raise a Service Order with out Service Indent for %s' %(product)))
					else:
						rec.write({'button_flag':True})
			for line in rec.service_order_line:
				product_tax_amt = self._amount_line_tax(cr, uid, line, context=context)
				cr.execute("""update kg_service_order_line set product_tax_amt = %s where id = %s"""%(product_tax_amt,line.id))
			
		return True
		cr.close()
コード例 #6
0
	def get_data(self,form):
		res = {}
		order = []
		partner = []
		where_sql = []
				
		if form['order']:
			for ids1 in form['order']:
				order.append("po.id = %s"%(ids1))
				
		if form['supplier']:
			for ids2 in form['supplier']:
				partner.append("po.partner_id = %s"%(ids2))
				
		if form['delivery_id']:
			delivery_id = form['delivery_id']
			where_sql.append("po.delivery_type = %s"%(delivery_id[0]))
		
		if order:
			order = 'and ('+' or '.join(order)
			order =  order+')'
		else:
			order = ''
		
		if partner:
			partner = 'and ('+' or '.join(partner)
			partner =  partner+')'
		else:
			partner = ''			
				
		if where_sql:
			where_sql = ' and '+' or '.join(where_sql)
		else:
			where_sql=''
		
		print "order ==========================>>>", order
		print "partner ==========================>>>", partner
		print "where_sql ==========================>>>", where_sql
		
		self.cr.execute('''
				SELECT  distinct on (po.id) po.id as po_id, 
				to_char(po.date_order,'dd/mm/yyyy') as date, 
				po.name as po_number,
				po.origin as origin,
				po.partner_id as part_id,
				po.state as postate,
				po.amount_total as total,
				po.amount_tax as tax,
				po.note as remarks,
				po.discount as discount,
				master.name as delivery,
				po.delivery_mode as mode,
				po.payment_mode as pay_mode,
				po.notes as remark,
				part.name as name,
				part.street as str1,
				city.name as city,
				part.zip as zip,
				st.name as state,
				coun.name as country,
				part.phone as phone,
				part.mobile as cell,
				part.fax as fax,
				part.email as email,
				pi.name as pi_no,
				to_char(pi.date_start, 'dd/mm/yyyy') as pi_date,
				dep_line.indent_id as indent,
				depmaster.dep_name as dep_name,
				po.id as order_id
				
				FROM  purchase_order po
				join res_partner part on (part.id=po.partner_id)
				join res_country_state st on(st.id=part.state_id)
				join res_country as coun on(coun.id=part.country_id)
				left join res_city as city on(city.id=part.city)
				join kg_deliverytype_master as master on(master.id=po.delivery_type)
				join purchase_order_line as po_line on(po_line.order_id = po.id)
				join purchase_requisition_line as pi_line on(pi_line.id = po_line.pi_line_id)
				join purchase_requisition as pi on(pi.id = pi_line.requisition_id)
				join kg_depindent_line as dep_line on(dep_line.id = pi_line.depindent_line_id)
				join kg_depindent as indent on(indent.id = dep_line.indent_id)
				join kg_depmaster as depmaster on(depmaster.id = indent.dep_name)
								
				where po.state = %s and po_line.line_state != %s and po.date_order >=%s and po.date_order <=%s  '''+ where_sql + order + partner + '''
				''',('approved','cancel', form['date_from'],form['date_to']))
				
		data = self.cr.dictfetchall()
		print "Data ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", data
		for i in data:
			if i['pay_mode'] == 'ap':
				i['pay_mode'] = 'Advance Paid'
			elif i['pay_mode'] == 'on_receipt':
				i['pay_mode'] = 'On Receipt of Goods and Acceptance'
		for j in data:
			if j['mode'] == 'direct':
				j['mode'] = 'DIRECT'
			elif j['mode'] == 'door':
				j['mode'] = 'DOOR DELIVERY'
		for k in data:
			if k['postate'] == 'draft':
				k['postate'] = 'DRAFT'
			elif k['postate'] == 'approved':
				k['postate'] = 'APPROVED'
				
		for po in data:
			po_id = po['po_number']
			order_id = po['order_id']
			partner_id = po['part_id']
			po_record = self.pool.get('purchase.order').browse(self.cr, self.uid,order_id)
			text_amount = number_to_text_convert_india.amount_to_text_india(po['total'],"INR: ")
			po['total_in_text']=text_amount
			charges = po_record.other_charge
			po['charges']=charges
			pi_data = []
			dep_ids = []
			fmt = '%Y-%m-%d %H:%M:%S'			
			if po_record.order_line:
				for line in po_record.order_line:
					pil_id = line.pi_line_id
					pi_id = pil_id.requisition_id.name
					pi_date = pil_id.requisition_id.date_start
					d = datetime.strptime(pi_date, fmt)
					day_string = d.strftime('%d/%m/%Y')				
					dep_id = pil_id.dep_id.dep_name
					pi_data.append(pi_id)
					pi_data.append(day_string)					
					dep_ids.append(dep_id)
					pi_new_data =  [x for x, y in collections.Counter(pi_data).items()]
					new_data = (', '.join('"' + item + '"' for item in pi_new_data))
					#new_dep_id = (', '.join('"' + item + '"' for item in dep_ids))
					#po_dep_id = [ item.encode('ascii') for item in ast.literal_eval(new_dep_id) ]							
				po_pi_data = [ item.encode('ascii') for item in ast.literal_eval(new_data) ]				
				a = ', '.join(po_pi_data)
				#b = ', '.join(po_dep_id)			
				po['pi_data'] = a
				po['dep_name'] = dep_id
					
		return data
コード例 #7
0
    def get_data(self, form):
        res = {}
        order = []
        partner = []
        where_sql = []

        if form['order']:
            for ids1 in form['order']:
                order.append("po.id = %s" % (ids1))

        if form['supplier']:
            for ids2 in form['supplier']:
                partner.append("po.partner_id = %s" % (ids2))

        if form['delivery_id']:
            delivery_id = form['delivery_id']
            where_sql.append("po.delivery_type = %s" % (delivery_id[0]))

        if order:
            order = 'and (' + ' or '.join(order)
            order = order + ')'
        else:
            order = ''

        if partner:
            partner = 'and (' + ' or '.join(partner)
            partner = partner + ')'
        else:
            partner = ''

        if where_sql:
            where_sql = ' and ' + ' or '.join(where_sql)
        else:
            where_sql = ''

        print "order ==========================>>>", order
        print "partner ==========================>>>", partner
        print "where_sql ==========================>>>", where_sql

        self.cr.execute(
            '''
				SELECT  distinct on (po.id) po.id as po_id, 
				to_char(po.date_order,'dd/mm/yyyy') as date, 
				po.name as po_number,
				po.origin as origin,
				po.partner_id as part_id,
				po.state as postate,
				po.amount_total as total,
				po.amount_tax as tax,
				po.note as remarks,
				po.discount as discount,
				master.name as delivery,
				po.delivery_mode as mode,
				po.payment_mode as pay_mode,
				po.notes as remark,
				part.name as name,
				part.street as str1,
				city.name as city,
				part.zip as zip,
				st.name as state,
				coun.name as country,
				part.phone as phone,
				part.mobile as cell,
				part.fax as fax,
				part.email as email,
				pi.name as pi_no,
				to_char(pi.date_start, 'dd/mm/yyyy') as pi_date,
				dep_line.indent_id as indent,
				depmaster.dep_name as dep_name,
				po.id as order_id
				
				FROM  purchase_order po
				join res_partner part on (part.id=po.partner_id)
				join res_country_state st on(st.id=part.state_id)
				join res_country as coun on(coun.id=part.country_id)
				left join res_city as city on(city.id=part.city)
				join kg_deliverytype_master as master on(master.id=po.delivery_type)
				join purchase_order_line as po_line on(po_line.order_id = po.id)
				join purchase_requisition_line as pi_line on(pi_line.id = po_line.pi_line_id)
				join purchase_requisition as pi on(pi.id = pi_line.requisition_id)
				join kg_depindent_line as dep_line on(dep_line.id = pi_line.depindent_line_id)
				join kg_depindent as indent on(indent.id = dep_line.indent_id)
				join kg_depmaster as depmaster on(depmaster.id = indent.dep_name)
								
				where po.state = %s and po_line.line_state != %s and po.date_order >=%s and po.date_order <=%s  '''
            + where_sql + order + partner + '''
				''', ('approved', 'cancel', form['date_from'], form['date_to']))

        data = self.cr.dictfetchall()
        print "Data ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", data
        for i in data:
            if i['pay_mode'] == 'ap':
                i['pay_mode'] = 'Advance Paid'
            elif i['pay_mode'] == 'on_receipt':
                i['pay_mode'] = 'On Receipt of Goods and Acceptance'
        for j in data:
            if j['mode'] == 'direct':
                j['mode'] = 'DIRECT'
            elif j['mode'] == 'door':
                j['mode'] = 'DOOR DELIVERY'
        for k in data:
            if k['postate'] == 'draft':
                k['postate'] = 'DRAFT'
            elif k['postate'] == 'approved':
                k['postate'] = 'APPROVED'

        for po in data:
            po_id = po['po_number']
            order_id = po['order_id']
            partner_id = po['part_id']
            po_record = self.pool.get('purchase.order').browse(
                self.cr, self.uid, order_id)
            text_amount = number_to_text_convert_india.amount_to_text_india(
                po['total'], "INR: ")
            po['total_in_text'] = text_amount
            charges = po_record.other_charge
            po['charges'] = charges
            pi_data = []
            dep_ids = []
            fmt = '%Y-%m-%d %H:%M:%S'
            if po_record.order_line:
                for line in po_record.order_line:
                    pil_id = line.pi_line_id
                    pi_id = pil_id.requisition_id.name
                    pi_date = pil_id.requisition_id.date_start
                    d = datetime.strptime(pi_date, fmt)
                    day_string = d.strftime('%d/%m/%Y')
                    dep_id = pil_id.dep_id.dep_name
                    pi_data.append(pi_id)
                    pi_data.append(day_string)
                    dep_ids.append(dep_id)
                    pi_new_data = [
                        x for x, y in collections.Counter(pi_data).items()
                    ]
                    new_data = (', '.join('"' + item + '"'
                                          for item in pi_new_data))
                    #new_dep_id = (', '.join('"' + item + '"' for item in dep_ids))
                    #po_dep_id = [ item.encode('ascii') for item in ast.literal_eval(new_dep_id) ]
                po_pi_data = [
                    item.encode('ascii') for item in ast.literal_eval(new_data)
                ]
                a = ', '.join(po_pi_data)
                #b = ', '.join(po_dep_id)
                po['pi_data'] = a
                po['dep_name'] = dep_id

        return data
コード例 #8
0
    def get_data(self, form):
        res = {}
        where_sql = []
        dep = []
        print "form   ", form
        print "form [form]", form['form']['date_start']
        print "form [form]", form['form']['date_end']

        self.cr.execute(
            '''
					SELECT
								distinct on (emp.id)
								emp.name_related as emp_name,
								dept.name as dept_name,
								emp.emp_code as code,
								to_char(emp.join_date,'dd-mm-yyyy') as join_date,
								br.name as branch,
								pay.con_cross_amt as cont_gross,
								pay.cross_amt as gross_amt,
								pay.round_val as net_sal,
								job.name as designation,
								mob.name as mob_num,
								pay.tot_paid_days as pre_days,
								att.working_days as tot_days,
								pay.id as slip_id,
								cont.payment_mode as payment_mode,
								cont.acc_no as account_no,
								cont.pf_status as pf_status,
								cont.pf_acc_no as pf_acc_no,
								cont.esi as esi_status,
								cont.esi_acc_no as esi_acc_no,
								pay.month as month_year,
								pay.tot_deduction as tot_deduction,
								cont.gross_salary as gross_salary
								
								
								FROM  hr_payslip pay
								
								
								left JOIN hr_employee emp ON (emp.id=pay.employee_id)
								left JOIN kg_mobile_master mob ON (emp.mobile_number = mob.id)
								left JOIN hr_department dept ON (emp.department_id=dept.id)
								left JOIN hr_job job ON (emp.job_id=job.id)
								left JOIN hr_contract cont ON (cont.employee_id=emp.id)
								left join kg_branch br on (emp.branch = br.id)
								left join kg_monthly_attendance att on(pay.employee_id= att.employee_id)
								where pay.date_from = %s  and pay.date_to = %s
								and att.start_date = %s and att.end_date = %s
								and pay.state= 'done'
								
								 ''', (form['form']['date_start'], form['form']['date_end'],
               form['form']['date_start'], form['form']['date_end']))

        data = self.cr.dictfetchall()
        print "data ::::::::::::::>>>>", data

        empr_cont_obj = self.pool.get('kg.emp.contribution')
        empr_cont_ids = empr_cont_obj.search(self.cr, self.uid,
                                             [('active', '=', 'True')])
        empr_cont_ids = self.pool.get('kg.employee.contribution').search(
            self.cr, self.uid, [('active', '=', 'True')])
        empr_cont_rec = self.pool.get('kg.employee.contribution').browse(
            self.cr, self.uid, empr_cont_ids[0])

        empr_line_obj = self.pool.get('kg.emp.contribution.line')
        empr_cont_lne = empr_line_obj.search(
            self.cr, self.uid,
            [('emp_cont_line_entry', '=', empr_cont_ids[0])])

        for item in data:
            line_ids = self.pool.get('hr.payslip.line').search(
                self.cr, self.uid, [('slip_id', '=', item['slip_id'])])
            for ids in empr_cont_lne:

                basic_ids = self.pool.get('hr.payslip.line').search(
                    self.cr, self.uid, [('slip_id', '=', item['slip_id']),
                                        ('code', '=', 'BASIC')])
                basic_rec = self.pool.get('hr.payslip.line').browse(
                    self.cr, self.uid, basic_ids[0])

                da_ids = self.pool.get('hr.payslip.line').search(
                    self.cr, self.uid, [('slip_id', '=', item['slip_id']),
                                        ('code', '=', 'DA')])
                da_rec = self.pool.get('hr.payslip.line').browse(
                    self.cr, self.uid, da_ids[0])

                pf_wages = basic_rec.amount + da_rec.amount

                if pf_wages >= empr_cont_rec.pf_max_amt:
                    pf_wages = empr_cont_rec.pf_max_amt
                else:
                    pf_wages = pf_wages

                empr_pf_ids = empr_line_obj.search(
                    self.cr, self.uid,
                    [('emp_cont_line_entry', '=', empr_cont_ids[0]),
                     ('emp_contribution', '=', 'pf')])
                empr_pf_rec = empr_line_obj.browse(self.cr, self.uid,
                                                   empr_pf_ids[0])
                if empr_pf_rec.cont_type == 'percent':
                    empr_pf = ((pf_wages * empr_pf_rec.emp_cont_value) / 100)
                else:
                    empr_pf = empr_line_rec.emp_cont_value

                empr_esi_ids = empr_line_obj.search(
                    self.cr, self.uid,
                    [('emp_cont_line_entry', '=', empr_cont_ids[0]),
                     ('emp_contribution', '=', 'esi')])
                empr_esi_rec = empr_line_obj.browse(self.cr, self.uid,
                                                    empr_esi_ids[0])
                if empr_esi_rec.cont_type == 'percent':
                    empr_esi = (
                        (item['gross_salary'] * empr_esi_rec.emp_cont_value) /
                        100)
                else:
                    empr_esi = empr_line_rec.emp_cont_value

                if item['pf_status'] == True and empr_pf_rec.emp_contribution == 'pf':
                    item['empr_pf'] = (round(empr_pf, 0))
                    print "item['empr_pf']", item['empr_pf']

                if item['esi_status'] == True and empr_esi_rec.emp_contribution == 'esi':
                    item['empr_esi'] = (round(empr_esi, 0))
                    print "item['empr_esi']", item['empr_esi']

            for ids in line_ids:
                line_rec = self.pool.get('hr.payslip.line').browse(
                    self.cr, self.uid, ids)
                print "line_recs           ............    ", line_rec.code
                if item['pre_days'] < item['tot_days']:
                    abs_days = item['tot_days'] - item['pre_days']
                    item['lop_days'] = abs_days
                    one_day = item['gross_salary'] / item['tot_days']
                    lop_amt = one_day * abs_days
                    item['lop_amt'] = (round(lop_amt, 0))
                if item['mob_num']:
                    if len(item['mob_num']) >= 10:
                        item['mob_num_1'] = item['mob_num'][:10]
                        item['mob_num_2'] = item['mob_num'][11:]
                else:
                    item['mob_num'] = ' '
                if line_rec.code == 'BASIC':
                    item['basic'] = line_rec.amount
                if line_rec.code == 'DA':
                    item['da'] = line_rec.amount
                if line_rec.code == 'HRA':
                    item['hra'] = line_rec.amount
                if line_rec.code == 'CON':
                    item['con'] = line_rec.amount
                if line_rec.code == 'TA':
                    item['ta'] = line_rec.amount
                if line_rec.code == 'SPA':
                    item['spa_code'] = line_rec.name
                    item['spa'] = line_rec.amount
                if line_rec.code == 'MA':
                    item['ma_code'] = line_rec.name
                    item['ma'] = line_rec.amount
                if line_rec.code == 'OA':
                    item['oa_code'] = line_rec.name
                    item['oa'] = line_rec.amount
                if line_rec.code == 'PF':
                    item['pf'] = line_rec.amount
                if line_rec.code == 'ESI':
                    item['esi'] = line_rec.amount
                if line_rec.code == 'OD':
                    item['oth_ded'] = line_rec.amount
                if line_rec.code == 'ADVDED':
                    item['sal_adv'] = line_rec.amount
                if line_rec.code == 'MD':
                    item['mob_ded'] = line_rec.amount
                if line_rec.code == 'ITAX':
                    item['itax'] = line_rec.amount
                if line_rec.code == 'EMP_PF':
                    item['emp_pf'] = line_rec.amount
                if line_rec.code == 'EMP_ESI':
                    item['emp_esi'] = line_rec.amount
                if line_rec.code == 'PT':
                    item['pt'] = line_rec.amount

                text_amount = number_to_text_convert_india.amount_to_text_india(
                    item['net_sal'], "INR:")
                item['amt_in_words'] = text_amount

        return data
コード例 #9
0
    def get_data(self, form):
        print ">>>>>>>>>>>", form
        res = {}
        where_sql = []
        dep = []
        print ">>>>>>>>>>form['employee']....................", form['form'][
            'employee']

        if form['form']['employee']:
            ids2 = form['form']['employee'][0]
            where_sql.append("pay.employee_id = %s" % (ids2))
        if where_sql:
            where_sql = ' and ' + ' or '.join(where_sql)
        else:
            where_sql = ''

        print "where_sql --------------------------->>>", where_sql
        self.cr.execute(
            '''
		
					SELECT 
							distinct on (emp.id)
							emp.name_related as emp_name,
							emp.join_date as join_date,
							emp.emp_code as emp_code,
							job.name as deisgnation,
							dept.name as dept_name,
							cont.acc_no as account_no,
							cont.pf_acc_no as pf_acc_no,
							cont.pf_percentage as pf_percent,
							cont.esi_percentage as esi_percent,
							slip.slip_id as slip_id,
							mon_att.mon_tot_days as total_days,
							mon_att.leave as lop_days,
							pay.cross_amt as gross_amt,
							pay.tot_sal as total_salary,
							pay.round_val as round_value,
							pay.id as pay_id
							
						FROM  hr_payslip pay
					
						left JOIN hr_employee emp ON (emp.id=pay.employee_id)
						left JOIN hr_department dept ON (dept.id=emp.department_id)
						left JOIN hr_contract cont ON(emp.id = cont.employee_id)
						left JOIN kg_monthly_attendance mon_att ON (emp.id = mon_att.employee_id)
						left JOIN hr_job job ON (job.id = emp.job_id) 
						left JOIN hr_payslip_line slip ON(pay.id = slip.slip_id)
													  
					  where pay.date_from = %s and pay.date_to =%s and pay.state =%s''' +
            where_sql + '''
			   order by emp.id''',
            (form['form']['date_from'], form['form']['date_to'], 'done'))

        data = self.cr.dictfetchall()
        print "len(data)....................", len(data)
        print "data ::::::::::::::>>>>", data
        for item in data:
            #basic amount
            basic_ids = self.pool.get('hr.payslip.line').search(
                self.cr, self.uid, [('slip_id', '=', item['pay_id']),
                                    ('code', '=', 'BASIC')])
            if basic_ids:
                basic_rec = self.pool.get('hr.payslip.line').browse(
                    self.cr, self.uid, basic_ids[0])
                item['basic'] = basic_rec.amount
                print "item[basic']..................", item['basic']

            #HRA amount
            hra_ids = self.pool.get('hr.payslip.line').search(
                self.cr, self.uid, [('slip_id', '=', item['pay_id']),
                                    ('name', '=', 'HRA')])
            if hra_ids:
                hra_rec = self.pool.get('hr.payslip.line').browse(
                    self.cr, self.uid, hra_ids[0])
                item['hra'] = hra_rec.amount
                print "item['hra']>>>>>>>>>>>>>>>>>", item['hra']

            #Special Allowance
            spa_ids = self.pool.get('hr.payslip.line').search(
                self.cr, self.uid, [('slip_id', '=', item['pay_id']),
                                    ('name', '=', 'Special Allowance')])
            if spa_ids != []:
                spa_rec = self.pool.get('hr.payslip.line').browse(
                    self.cr, self.uid, spa_ids[0])
                item['spa'] = spa_rec.amount
                print "spa>>>>>>>>>", item['spa']

            #PF Amount
            pf_ids = self.pool.get('hr.payslip.line').search(
                self.cr, self.uid, [('slip_id', '=', item['pay_id']),
                                    ('code', '=', 'PF')])
            if pf_ids != []:
                pf_rec = self.pool.get('hr.payslip.line').browse(
                    self.cr, self.uid, pf_ids[0])
                item['pf'] = pf_rec.amount
                print "pf....................", item['pf']
                #Employer PF Contribution
                empr_pf_ids = self.pool.get('kg.emp.contribution').search(
                    self.cr, self.uid,
                    [('from_date', '>=', form['form']['date_from']),
                     ('to_date', '<=', form['form']['date_to']),
                     ('active', '=', True)])
                print "empr_pf_ids.....", empr_pf_ids
                em_rec = self.pool.get('kg.emp.contribution').browse(
                    self.cr, self.uid, empr_pf_ids[0])
                print "em_rec.............", em_rec
                if empr_pf_ids != []:
                    empr_pf_line_ids = self.pool.get(
                        'kg.emp.contribution.line').search(
                            self.cr, self.uid,
                            [('line_entry', '=', empr_pf_ids[0])])
                    print "empr_pf_line_ids////", empr_pf_line_ids
                    for line in empr_pf_line_ids:
                        empr_pf_rec = self.pool.get(
                            'kg.emp.contribution.line').browse(
                                self.cr, self.uid, line)
                        print "empr_pf_rec", empr_pf_rec.emp_contribution
                        if empr_pf_rec.emp_contribution == 'pf':
                            print "empr_pf_rec.contribution_percentage....", empr_pf_rec.contribution_percentage
                            item['empr_pf_con'] = item['basic'] * (
                                empr_pf_rec.contribution_percentage / 100)
                            print "item['empr_pf_con'] ", item['empr_pf_con']

            #ESI Amount
            esi_ids = self.pool.get('hr.payslip.line').search(
                self.cr, self.uid, [('slip_id', '=', item['pay_id']),
                                    ('code', '=', 'ESI')])
            print "esi ................", esi_ids
            if esi_ids != []:
                esi_rec = self.pool.get('hr.payslip.line').browse(
                    self.cr, self.uid, esi_ids[0])
                item['esi'] = esi_rec.amount
                print "esi.......................", item['esi']
                #Employer ESI Contribution
                empr_esi_ids = self.pool.get('kg.emp.contribution').search(
                    self.cr, self.uid,
                    [('from_date', '>=', form['form']['date_from']),
                     ('to_date', '<=', form['form']['date_to']),
                     ('active', '=', True)])
                print "empr_esi_ids.....", empr_esi_ids
                empr_pf_rec = self.pool.get('kg.emp.contribution').browse(
                    self.cr, self.uid, empr_esi_ids[0])
                print "em_rec.............", empr_pf_rec
                if empr_esi_ids != []:
                    empr_esi_line_ids = self.pool.get(
                        'kg.emp.contribution.line').search(
                            self.cr, self.uid,
                            [('line_entry', '=', empr_pf_ids[0])])

                    for line in empr_esi_line_ids:
                        empr_esi_rec = self.pool.get(
                            'kg.emp.contribution.line').browse(
                                self.cr, self.uid, line)
                        print "empr_esi_rec", empr_esi_rec.emp_contribution
                        if empr_esi_rec.emp_contribution == 'esi':
                            print "empr_pf_rec.contribution_percentage....", empr_esi_rec.contribution_percentage
                            item['empr_esi_con'] = item['basic'] * (
                                empr_esi_rec.contribution_percentage / 100)
                            print "item['empr_pf_con'] ", item['empr_esi_con']
                        else:
                            continue
            #PT Amount
            print "item['pay_id'].....................", item['pay_id']

            pt_ids = self.pool.get('hr.payslip.line').search(
                self.cr, self.uid, [('slip_id', '=', item['pay_id']),
                                    ('code', '=', 'PT')])
            print "pt_ids>>>>>>>>>>>>>>>>>>>>", pt_ids

            if pt_ids != []:
                pt_rec = self.pool.get('hr.payslip.line').browse(
                    self.cr, self.uid, pt_ids[0])
                item['pt'] = pt_rec.amount
                print "item['pt']>>>>>>>>>", item['pt']

            if hra_ids and basic_ids and spa_ids:
                gro_amt_list = [item['basic'], item['hra'], item['spa']]
                item['gross_amt'] = sum(gro_amt_list)
            else:
                gro_amt_list = []
            print "gross_amt...............", item['gross_amt']
            ded_amt_list = []
            if pf_ids:
                ded_amt_list.append(item['pf'])
                if empr_pf_ids:
                    item['empr_pf_amt'] = item['empr_pf_con']
                else:
                    item['empr_pf_amt'] = 0

            if esi_ids:
                ded_amt_list.append(item['esi'])
                if empr_esi_ids:
                    item['empr_esi_amt'] = item['empr_esi_con']
                else:
                    item['empr_pf_amt'] = 0

            item['ded_amt'] = sum(ded_amt_list)
            print "ded_amt_list.........", item['ded_amt']
            item['net_salary'] = item['gross_amt'] - item['ded_amt']
            text_amount = number_to_text_convert_india.amount_to_text_india(
                item['net_salary'], "INR:")
            item['amt_in_words'] = text_amount

        return data
コード例 #10
0
    def approve_order(self, cr, uid, ids, context=None):
        rec = self.browse(cr, uid, ids[0])
        if rec.state == 'confirm':
            if rec.payment_type == 'advance':
                obj = rec
                self.advance_creation(cr, uid, obj)
            if rec.payment_mode.term_category == 'advance':
                cr.execute(
                    """select * from kg_supplier_advance where state='confirmed' and so_id= %s"""
                    % (str(ids[0])))
                data = cr.dictfetchall()
                if not data:
                    raise osv.except_osv(_('Warning'),
                                         _('Advance is mandate for this SO'))
                else:
                    pass
            text_amount = number_to_text_convert_india.amount_to_text_india(
                rec.amount_total, "INR:")
            self.write(
                cr, uid, ids, {
                    'state': 'approved',
                    'approved_by': uid,
                    'text_amt': text_amount,
                    'approved_date': time.strftime('%Y-%m-%d %H:%M:%S')
                })
            obj = self.browse(cr, uid, ids[0])
            product_obj = self.pool.get('product.product')
            cr.execute(
                """ select serindent_line_id from kg_serindent_so_line where so_id = %s """
                % (str(ids[0])))
            data = cr.dictfetchall()
            val = [
                d['serindent_line_id'] for d in data
                if 'serindent_line_id' in d
            ]  # Get a values form list of dict if the dict have with empty values
            so_lines = obj.service_order_line
            if not so_lines:
                raise osv.except_osv(
                    _('Warning !'),
                    _('System not allow to approve without Service Order Line')
                )
            else:
                for i in range(len(so_lines)):
                    self.pool.get('kg.service.order.line').write(
                        cr, uid, so_lines[i].id, {
                            'so_type_flag': 'True',
                            'service_flag': 'True',
                            'state': 'approved'
                        })
                    product_id = so_lines[i].product_id.id
                    product_record = product_obj.browse(cr, uid, product_id)
                    product = so_lines[i].product_id.name
                    if rec.so_type == 'service':
                        if so_lines[i].soindent_line_id:
                            soindent_line_id = so_lines[i].soindent_line_id
                            orig_soindent_qty = so_lines[i].soindent_qty
                            so_used_qty = so_lines[i].product_qty
                            pending_soindent_qty = orig_soindent_qty - so_used_qty
                            sql = """ update kg_service_indent_line set pending_qty=%s where id = %s """ % (
                                pending_soindent_qty, soindent_line_id.id)
                            cr.execute(sql)
                            sql1 = """ update kg_gate_pass_line set so_pending_qty=(so_pending_qty - %s),so_flag = 't' where si_line_id = %s and gate_id = %s""" % (
                                so_used_qty, soindent_line_id.id, obj.gp_id.id)
                            cr.execute(sql1)

                            sql2 = """ update kg_service_order_line set gp_line_id=(select id from kg_gate_pass_line where si_line_id = %s and gate_id = %s limit 1)""" % (
                                soindent_line_id.id, obj.gp_id.id)
                            cr.execute(sql2)
                        else:
                            raise osv.except_osv(
                                _('Direct Service Order Not Allow'),
                                _('System not allow to raise a Service Order with out Service Indent for %s'
                                  % (product)))
                    else:
                        rec.write({'button_flag': True})
            for line in rec.service_order_line:
                product_tax_amt = self._amount_line_tax(cr,
                                                        uid,
                                                        line,
                                                        context=context)
                cr.execute(
                    """update kg_service_order_line set product_tax_amt = %s where id = %s"""
                    % (product_tax_amt, line.id))
        return True
        cr.close()
コード例 #11
0
	def get_data(self,form):
		print ">>>>>>>>>>>",form
		res = {}
		where_sql = []
		dep = []
		print ">>>>>>>>>>form['employee']....................",form['form']['employee']
		
		if form['form']['employee']:
			ids2=form['form']['employee'][0]
			where_sql.append("pay.employee_id = %s"%(ids2))
		if where_sql:
			where_sql = ' and '+' or '.join(where_sql)
		else:
			where_sql=''
					
		print "where_sql --------------------------->>>", where_sql 
		self.cr.execute('''
		
					SELECT 
							distinct on (emp.id)
							emp.name_related as emp_name,
							emp.join_date as join_date,
							emp.emp_code as emp_code,
							job.name as deisgnation,
							dept.name as dept_name,
							cont.acc_no as account_no,
							cont.pf_acc_no as pf_acc_no,
							cont.pf_percentage as pf_percent,
							cont.esi_percentage as esi_percent,
							slip.slip_id as slip_id,
							mon_att.mon_tot_days as total_days,
							mon_att.leave as lop_days,
							pay.cross_amt as gross_amt,
							pay.tot_sal as total_salary,
							pay.round_val as round_value,
							pay.id as pay_id
							
						FROM  hr_payslip pay
					
						left JOIN hr_employee emp ON (emp.id=pay.employee_id)
						left JOIN hr_department dept ON (dept.id=emp.department_id)
						left JOIN hr_contract cont ON(emp.id = cont.employee_id)
						left JOIN kg_monthly_attendance mon_att ON (emp.id = mon_att.employee_id)
						left JOIN hr_job job ON (job.id = emp.job_id) 
						left JOIN hr_payslip_line slip ON(pay.id = slip.slip_id)
													  
					  where pay.date_from = %s and pay.date_to =%s and pay.state =%s'''+ where_sql+ '''
			   order by emp.id''',(form['form']['date_from'],form['form']['date_to'],'done'))
		
		
		data=self.cr.dictfetchall()
		print "len(data)....................",len(data)
		print "data ::::::::::::::>>>>", data
		for item in data:
			#basic amount
			basic_ids = self.pool.get('hr.payslip.line').search(self.cr, self.uid, 
								 [('slip_id','=',item['pay_id']),('code','=','BASIC')])
			if basic_ids:
				basic_rec = self.pool.get('hr.payslip.line').browse(self.cr, self.uid, basic_ids[0])
				item['basic'] = basic_rec.amount
				print "item[basic']..................",item['basic']
				
			#HRA amount
			hra_ids = self.pool.get('hr.payslip.line').search(self.cr, self.uid, 
								 [('slip_id','=',item['pay_id']),('name','=','HRA')])
			if hra_ids:
				hra_rec = self.pool.get('hr.payslip.line').browse(self.cr, self.uid, hra_ids[0])
				item['hra'] = hra_rec.amount
				print "item['hra']>>>>>>>>>>>>>>>>>",item['hra']
			 
			#Special Allowance
			spa_ids = self.pool.get('hr.payslip.line').search(self.cr, self.uid, 
								 [('slip_id','=',item['pay_id']),('name','=','Special Allowance')])
			if spa_ids != []:
				spa_rec = self.pool.get('hr.payslip.line').browse(self.cr, self.uid, spa_ids[0])
				item['spa'] = spa_rec.amount
				print "spa>>>>>>>>>",item['spa']
			
			#PF Amount
			pf_ids = self.pool.get('hr.payslip.line').search(self.cr, self.uid,
								  [('slip_id','=',item['pay_id']),('code','=','PF')])
			if pf_ids != []:
				pf_rec = self.pool.get('hr.payslip.line').browse(self.cr, self.uid, pf_ids[0])
				item['pf'] = pf_rec.amount
				print "pf....................",item['pf']
				#Employer PF Contribution
				empr_pf_ids = self.pool.get('kg.emp.contribution').search(self.cr , self.uid ,
								  [('from_date','>=',form['form']['date_from']),('to_date','<=',form['form']['date_to']),
								  ('active','=',True)])
				print "empr_pf_ids.....",empr_pf_ids
				em_rec = self.pool.get('kg.emp.contribution').browse(self.cr,self.uid,empr_pf_ids[0])
				print "em_rec.............",em_rec
				if empr_pf_ids !=[]:
					empr_pf_line_ids = self.pool.get('kg.emp.contribution.line').search(self.cr, self.uid, [('line_entry','=',empr_pf_ids[0])])
					print "empr_pf_line_ids////",empr_pf_line_ids
					for line in empr_pf_line_ids:
						empr_pf_rec = self.pool.get('kg.emp.contribution.line').browse(self.cr,self.uid,line)
						print "empr_pf_rec",empr_pf_rec.emp_contribution
						if empr_pf_rec.emp_contribution == 'pf':
							print "empr_pf_rec.contribution_percentage....",empr_pf_rec.contribution_percentage
							item['empr_pf_con'] = item['basic']*(empr_pf_rec.contribution_percentage/100)
							print "item['empr_pf_con'] ",item['empr_pf_con'] 
			
				
			#ESI Amount
			esi_ids = self.pool.get('hr.payslip.line').search(self.cr , self.uid ,
								  [('slip_id','=',item['pay_id']),('code','=','ESI')])
			print "esi ................",esi_ids
			if esi_ids != []:
				esi_rec = self.pool.get('hr.payslip.line').browse(self.cr, self.uid, esi_ids[0])
				item['esi'] = esi_rec.amount
				print "esi.......................",item['esi']
				#Employer ESI Contribution
				empr_esi_ids = self.pool.get('kg.emp.contribution').search(self.cr , self.uid ,
								  [('from_date','>=',form['form']['date_from']),('to_date','<=',form['form']['date_to']),
								  ('active','=',True)])
				print "empr_esi_ids.....",empr_esi_ids
				empr_pf_rec = self.pool.get('kg.emp.contribution').browse(self.cr,self.uid,empr_esi_ids[0])
				print "em_rec.............",empr_pf_rec
				if empr_esi_ids !=[]:
					empr_esi_line_ids = self.pool.get('kg.emp.contribution.line').search(self.cr, self.uid, [('line_entry','=',empr_pf_ids[0])])
		
					for line in empr_esi_line_ids:
						empr_esi_rec = self.pool.get('kg.emp.contribution.line').browse(self.cr,self.uid,line)
						print "empr_esi_rec",empr_esi_rec.emp_contribution
						if empr_esi_rec.emp_contribution == 'esi':
							print "empr_pf_rec.contribution_percentage....",empr_esi_rec.contribution_percentage
							item['empr_esi_con'] = item['basic']*(empr_esi_rec.contribution_percentage/100)
							print "item['empr_pf_con'] ",item['empr_esi_con'] 
						else:
							continue
			#PT Amount
			print "item['pay_id'].....................", item['pay_id']
			
			pt_ids = self.pool.get('hr.payslip.line').search(self.cr , self.uid ,
								  [('slip_id','=',item['pay_id']),('code','=','PT')])
			print "pt_ids>>>>>>>>>>>>>>>>>>>>",pt_ids
			
			if pt_ids != []:
				pt_rec = self.pool.get('hr.payslip.line').browse(self.cr, self.uid, pt_ids[0])
				item['pt'] = pt_rec.amount
				print "item['pt']>>>>>>>>>",item['pt']
			
		
			if hra_ids and basic_ids and spa_ids:
				gro_amt_list = [item['basic'],item['hra'],item['spa']] 
				item['gross_amt'] = sum(gro_amt_list)
			else:
				gro_amt_list = []
			print "gross_amt...............",item['gross_amt']
			ded_amt_list = []
			if pf_ids:
				ded_amt_list.append(item['pf'])
				if empr_pf_ids:
					item['empr_pf_amt'] = item['empr_pf_con'] 
				else:
					item['empr_pf_amt']=0
					
			if esi_ids:
				ded_amt_list.append(item['esi'])
				if empr_esi_ids:
					item['empr_esi_amt'] = item ['empr_esi_con']
				else:
					item['empr_pf_amt'] = 0
			
			item['ded_amt'] = sum(ded_amt_list)
			print "ded_amt_list.........",item['ded_amt']
			item['net_salary'] = item['gross_amt'] - item['ded_amt']
			text_amount = number_to_text_convert_india.amount_to_text_india(item['net_salary'],"INR:")
			item['amt_in_words']=text_amount
			
		return data
コード例 #12
0
	def get_data(self,form):
		res = {}
		where_sql = []
		dep = []
		print "form   ",form
		print "form [form]",form['form']['date_from']
					
		self.cr.execute('''
					SELECT
							distinct on (emp.id)
							emp.name_related as emp_name,
							dept.name as dept_name,
							emp.emp_code as code,
							to_char(emp.join_date,'dd-mm-yyyy') as join_date,
							br.name as branch,
							pay.con_cross_amt as cont_gross,
							pay.cross_amt as gross_amt,
							pay.round_val as net_sal,
							job.name as designation,
							emp.work_phone as mob_num,
							att.worked as pre_days,
							line.slip_id as slip_id,
							cont.payment_mode as payment_mode,
							cont.acc_no as account_no,
							cont.pf_status as pf_status,
							cont.pf_acc_no as pf_acc_no,
							cont.esi as esi_status,
							cont.esi_acc_no as esi_acc_no,
							pay.month as month_year,
							att.leave as lop_days,
							cont.gross_salary as gross_salary
							
							
							FROM  hr_payslip pay
							
							
							
							left JOIN hr_employee emp ON (emp.id=pay.employee_id)
							left JOIN hr_department dept ON (emp.department_id=dept.id)
							left JOIN hr_job job ON (emp.job_id=job.id)
							left JOIN hr_contract cont ON (cont.employee_id=emp.id)
							left join kg_branch br on (emp.branch = br.id)
							left join hr_payslip_line line on (pay.employee_id=line.employee_id)
							left join kg_monthly_attendance att on(pay.employee_id= att.employee_id)
							
							
							where date_from = %s  and date_to = %s
							and pay.id = %s and pay.state= 'done' 
							order by emp.id''',(form['form']['date_from'],form['form']['date_to'],form['form']['id']))
		
		
		data=self.cr.dictfetchall()
		print "data ::::::::::::::>>>>", data
		
		empr_cont_obj = self.pool.get('kg.emp.contribution')
		empr_cont_ids = empr_cont_obj.search(self.cr,self.uid,[('active','=','True')])
		
		empr_line_obj = self.pool.get('kg.emp.contribution.line')
		empr_cont_lne = empr_line_obj.search(self.cr,self.uid,[('emp_cont_line_entry','=',empr_cont_ids[0])])
		 
		for item in data:
			line_ids = self.pool.get('hr.payslip.line').search(self.cr,self.uid,[('slip_id','=',item['slip_id'])])
			for ids in empr_cont_lne:
				empr_line_rec =  empr_line_obj.browse(self.cr,self.uid,ids)
				print "empr_line_rec",empr_line_rec.cont_type
				if empr_line_rec.emp_contribution == 'pf':
					if empr_line_rec.cont_type == 'percent':
						empr_pf = (item['gross_salary'] * empr_line_rec.emp_cont_value)/100
					else:
						empr_pf = empr_line_rec.emp_cont_value
				if empr_line_rec.emp_contribution == 'esi':
					if empr_line_rec.cont_type == 'percent':
						empr_esi = (item['gross_salary'] * empr_line_rec.emp_cont_value)/100
					else:
						empr_esi = empr_line_rec.emp_cont_value
						 
				if item['pf_status'] == True and empr_line_rec.emp_contribution == 'pf':
					item['empr_pf'] = empr_pf
					print "item['empr_pf']",item['empr_pf']
				
				if item['esi_status'] == True and empr_line_rec.emp_contribution == 'esi':
					item['empr_esi'] = empr_esi
					print "item['empr_esi']",item['empr_esi']
				
			
			
			for ids in line_ids:
				line_rec = self.pool.get('hr.payslip.line').browse(self.cr,self.uid,ids)
				print "line_recs           ............    ",line_rec.code
				if item['mob_num']:
					if len(item['mob_num']) >= 10:
						item['mob_num_1'] = item['mob_num'][:10]
						item['mob_num_2'] = item['mob_num'][11:]
				else:
					item['mob_num'] = ' ' 
				if line_rec.code == 'BASIC':
					item['basic'] = line_rec.amount
				if line_rec.code == 'DA':
					item['da'] = line_rec.amount
				if line_rec.code == 'HRA':
					item['hra'] = line_rec.amount
				if line_rec.code == 'CON':
					item['con'] = line_rec.amount
				if line_rec.code == 'TA':
					item['ta'] = line_rec.amount
				if line_rec.code == 'PF':
					item['pf'] = line_rec.amount
					print "pf     ",item['pf']
				
				if line_rec.code == 'ESI':
					item['esi'] = line_rec.amount
					print "esi     ",item['esi']
								
					
 				if line_rec.code == 'ADVDED':
					item['sal_adv'] = line_rec.amount
					print "item['sal_adv']",item['sal_adv']
					
				if line_rec.code == 'MD':
					item['mob_ded'] = line_rec.amount
					print "mob_ded     ",item['mob_ded']
				else:
					item['mob_ded'] = 0
					
					
				if line_rec.code == 'ITAX':
					item['itax'] = line_rec.amount
					
					
				if line_rec.code == 'EMP_PF':
					item['emp_pf'] = line_rec.amount
					
					
				if line_rec.code == 'EMP_ESI':
					item['emp_esi'] = line_rec.amount
				
				if line_rec.code == 'PT':
					item['pt'] = line_rec.amount
			
				
				text_amount = number_to_text_convert_india.amount_to_text_india(item['net_sal'],"INR:")
				item['amt_in_words']=text_amount
			
	
		return data
コード例 #13
0
    def get_data(self, form):
        res = {}
        where_sql = []
        print "form =================>>>>>>.", form

        if form['order']:
            for ids1 in form['order']:
                where_sql.append("po.id = %s" % (ids1))
                print "sql before IFFFFFFFFFFFFFFF", where_sql
        if form['supplier']:
            for ids2 in form['supplier']:
                where_sql.append("po.partner_id = %s" % (ids2))

        if where_sql:
            where_sql = ' and ' + ' or '.join(where_sql)
            print "where_sql.............................", where_sql
        else:
            where_sql = ''

        self.cr.execute(
            '''
				SELECT  distinct on (po.id) po.id as po_id, to_char(po.date_order,'dd/mm/yyyy') as date, 
				po.name as po_number,po.origin as origin,po.partner_id as part_id,
				po.state as postate,po.other_charge as chagres,	po.amount_total as total,
				po.amount_tax as tax,po.note as remarks,po.discount as discount,
				master.name as delivery,po.delivery_mode as mode,po.payment_mode as pay_mode,
				po.note as remark,part.name as name,part.street as str1,part.city as city,
				part.zip as zip,st.name as state,coun.name as country,part.phone as phone,
				part.mobile as cell,part.fax as fax,part.email as email,
				pi.name as pi_no,to_char(pi.date_start, 'dd/mm/yyyy') as pi_date,
				dep_line.indent_id as indent,depmaster.dep_name as dep_name
				
				FROM  purchase_order po
				join res_partner part on (part.id=po.partner_id)
				join res_country_state st on(st.id=part.state_id)
				join res_country as coun on(coun.id=part.country_id)
				join kg_deliverytype_master as master on(master.id=po.delivery_type)
				join purchase_order_line as po_line on(po_line.order_id = po.id)
				join purchase_requisition_line as pi_line on(pi_line.id = po_line.pi_line_id)
				join purchase_requisition as pi on(pi.id = pi_line.requisition_id)
				join kg_depindent_line as dep_line on(dep_line.id = pi_line.depindent_line_id)
				join kg_depindent as indent on(indent.id = dep_line.indent_id)
				join kg_depmaster as depmaster on(depmaster.id = indent.dep_name)
								
				where po.state = %s and po.date_order >=%s and po.date_order <=%s  ''' +
            where_sql + '''
				''', ('approved', form['date_from'], form['date_to']))

        data = self.cr.dictfetchall()
        print "Data ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", data
        for i in data:
            if i['pay_mode'] == 'ap':
                i['pay_mode'] = 'Advance Paid'
            elif i['pay_mode'] == 'on_receipt':
                i['pay_mode'] = 'On Receipt of Goods and Acceptance'
        for j in data:
            if j['mode'] == 'direct':
                j['mode'] = 'DIRECT'
            elif j['mode'] == 'door':
                j['mode'] = 'DOOR DELIVERY'
        for k in data:
            if k['postate'] == 'draft':
                k['postate'] = 'DRAFT'
            elif k['postate'] == 'approved':
                k['postate'] = 'APPROVED'

        for po in data:
            po_id = po['po_number']
            po_record = self.pool.get('purchase.order').browse(
                self.cr, self.uid, po_id)
            text_amount = number_to_text_convert_india.amount_to_text_india(
                po['total'], "INR: ")
            po['total_in_text'] = text_amount
            print "total_in_text ::::::::::::::::::::::::::::::::", po[
                'total_in_text']
        return data
コード例 #14
0
    def get_data(self, form):
        res = {}
        where_sql = []

        if form['order']:
            for ids1 in form['order']:
                where_sql.append("so.id = %s" % (ids1))
        if form['supplier']:
            for ids2 in form['supplier']:
                where_sql.append("so.partner_id = %s" % (ids2))
        if form['delivery_id']:
            delivery_id = form['delivery_id']
            where_sql.append("so.delivery_type = %s" % (delivery_id[0]))

        if where_sql:
            where_sql = ' and ' + ' or '.join(where_sql)
            print "where_sql.............................", where_sql
        else:
            where_sql = ''

        self.cr.execute(
            '''
				SELECT  distinct on (so.id) so.id as so_id, 
				to_char(so.date,'dd/mm/yyyy') as date, 
				so.name as so_number,
				so.partner_id as part_id,
				so.state as so_state,
				so.amount_total as total,
				so.amount_tax as tax,
				so.note as remarks,
				so.discount as discount,
				master.name as delivery,
				so.delivery_mode as mode,
				so.payment_mode as pay_mode,
				so.note as remark,
				part.name as name,
				part.street as str1,
				part.city as city,
				part.zip as zip,
				st.name as state,
				coun.name as country,
				part.phone as phone,
				part.mobile as cell,
				part.fax as fax,
				part.email as email,
				si.name as si_no,
				to_char(si.date, 'dd/mm/yyyy') as si_date,
				dep.dep_name as dep_name
			
				
				FROM  kg_service_order so
				join res_partner part on (part.id=so.partner_id)
				join res_country_state st on(st.id=part.state_id)
				join res_country as coun on(coun.id=part.country_id)
				join kg_deliverytype_master as master on(master.id=so.delivery_type)
				join kg_service_order_line as so_line on(so_line.service_id = so.id)
				join kg_service_indent_line as si_line on(si_line.id = so_line.soindent_line_id)
				join kg_service_indent as si on(si.id = si_line.service_id)
				join kg_depmaster as dep on(dep.id=si.dep_name)

								
				where so.state = %s and so.date >=%s and so.date <=%s  ''' + where_sql +
            '''
				''', ('done', form['date_from'], form['date_to']))

        data = self.cr.dictfetchall()
        print "Data ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", data

        for i in data:
            if i['pay_mode'] == 'ap':
                i['pay_mode'] = 'Advance Paid'
            elif i['pay_mode'] == 'on_receipt':
                i['pay_mode'] = 'On Receipt of Goods and Acceptance'
        for j in data:
            if j['mode'] == 'direct':
                j['mode'] = 'DIRECT'
            elif j['mode'] == 'door':
                j['mode'] = 'DOOR DELIVERY'
        for k in data:
            if k['so_state'] == 'draft':
                k['so_state'] = 'DRAFT'
            elif k['so_state'] == 'done':
                k['so_state'] = 'Done'

        for so in data:
            so_id = so['so_number']
            partner_id = so['part_id']
            so_id = so['so_id']
            so_record = self.pool.get('kg.service.order').browse(
                self.cr, self.uid, so_id)
            text_amount = number_to_text_convert_india.amount_to_text_india(
                so['total'], "INR: ")
            so['total_in_text'] = text_amount
            #print "total_in_text ::::::::::::::::::::::::::::::::", so['total_in_text']
            print "other change =========================>>>", so_record
            charges = so_record.other_charge
            so['charges'] = charges
            print "charges ()()()()()()())()()()()()() -------------->>", charges
        return data
コード例 #15
0
    def get_data(self, form):
        res = {}
        where_sql = []
        print "form =================>>>>>>.", form

        if form["order"]:
            for ids1 in form["order"]:
                where_sql.append("po.id = %s" % (ids1))
                print "sql before IFFFFFFFFFFFFFFF", where_sql
        if form["supplier"]:
            for ids2 in form["supplier"]:
                where_sql.append("po.partner_id = %s" % (ids2))

        if where_sql:
            where_sql = " and " + " or ".join(where_sql)
            print "where_sql.............................", where_sql
        else:
            where_sql = ""

        self.cr.execute(
            """
				SELECT  distinct on (po.id) po.id as po_id, to_char(po.date_order,'dd/mm/yyyy') as date, 
				po.name as po_number,po.origin as origin,po.partner_id as part_id,
				po.state as postate,po.other_charge as chagres,	po.amount_total as total,
				po.amount_tax as tax,po.note as remarks,po.discount as discount,
				master.name as delivery,po.delivery_mode as mode,po.payment_mode as pay_mode,
				po.note as remark,part.name as name,part.street as str1,part.city as city,
				part.zip as zip,st.name as state,coun.name as country,part.phone as phone,
				part.mobile as cell,part.fax as fax,part.email as email,
				pi.name as pi_no,to_char(pi.date_start, 'dd/mm/yyyy') as pi_date,
				dep_line.indent_id as indent,depmaster.dep_name as dep_name
				
				FROM  purchase_order po
				join res_partner part on (part.id=po.partner_id)
				join res_country_state st on(st.id=part.state_id)
				join res_country as coun on(coun.id=part.country_id)
				join kg_deliverytype_master as master on(master.id=po.delivery_type)
				join purchase_order_line as po_line on(po_line.order_id = po.id)
				join purchase_requisition_line as pi_line on(pi_line.id = po_line.pi_line_id)
				join purchase_requisition as pi on(pi.id = pi_line.requisition_id)
				join kg_depindent_line as dep_line on(dep_line.id = pi_line.depindent_line_id)
				join kg_depindent as indent on(indent.id = dep_line.indent_id)
				join kg_depmaster as depmaster on(depmaster.id = indent.dep_name)
								
				where po.state = %s and po.date_order >=%s and po.date_order <=%s  """
            + where_sql
            + """
				""",
            ("approved", form["date_from"], form["date_to"]),
        )

        data = self.cr.dictfetchall()
        print "Data ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", data
        for i in data:
            if i["pay_mode"] == "ap":
                i["pay_mode"] = "Advance Paid"
            elif i["pay_mode"] == "on_receipt":
                i["pay_mode"] = "On Receipt of Goods and Acceptance"
        for j in data:
            if j["mode"] == "direct":
                j["mode"] = "DIRECT"
            elif j["mode"] == "door":
                j["mode"] = "DOOR DELIVERY"
        for k in data:
            if k["postate"] == "draft":
                k["postate"] = "DRAFT"
            elif k["postate"] == "approved":
                k["postate"] = "APPROVED"

        for po in data:
            po_id = po["po_number"]
            po_record = self.pool.get("purchase.order").browse(self.cr, self.uid, po_id)
            text_amount = number_to_text_convert_india.amount_to_text_india(po["total"], "INR: ")
            po["total_in_text"] = text_amount
            print "total_in_text ::::::::::::::::::::::::::::::::", po["total_in_text"]
        return data
コード例 #16
0
	def approve_order(self, cr, uid, ids,context=None):
		rec = self.browse(cr,uid,ids[0])
		#if rec.confirmed_by.id == uid:
		#	raise osv.except_osv(
		#			_('Warning'),
		#			_('Approve cannot be done by Confirmed user'))
		#else:
		if rec.payment_mode.term_category == 'advance':
			cr.execute("""select * from kg_so_advance where state='approved' and so_id= %s"""  %(str(ids[0])))
			data = cr.dictfetchall()
			if not data:
				
				raise osv.except_osv(
					_('Warning'),
					_('Advance is mandate for this SO'))
			else:
				pass	
		text_amount = number_to_text_convert_india.amount_to_text_india(rec.amount_total,"INR:")
		self.write(cr,uid,ids,{'state':'approved','approved_by':uid,'text_amt':text_amount,'approved_date':fields.date.context_today(self,cr,uid,context=context)})
		obj = self.browse(cr,uid,ids[0])
		product_obj = self.pool.get('product.product')
		cr.execute(""" select serindent_line_id from kg_serindent_so_line where so_id = %s """ %(str(ids[0])))
		data = cr.dictfetchall()
		val = [d['serindent_line_id'] for d in data if 'serindent_line_id' in d] # Get a values form list of dict if the dict have with empty values
		so_lines = obj.service_order_line
		if not so_lines:
			raise osv.except_osv(
					_('Empty Service Order'),
					_('System not allow to approve without Service Order Line'))
		else:
			for i in range(len(so_lines)):
				self.pool.get('kg.service.order.line').write(cr, uid,so_lines[i].id,{'so_type_flag':'True','service_flag':'True','state':'approved'})
				product_id = so_lines[i].product_id.id
				product_record = product_obj.browse(cr, uid, product_id)
				product = so_lines[i].product_id.name
				if rec.so_type == 'service':
					if so_lines[i].soindent_line_id:
						soindent_line_id=so_lines[i].soindent_line_id
						orig_soindent_qty = so_lines[i].soindent_qty
						so_used_qty = so_lines[i].product_qty
						pending_soindent_qty = orig_soindent_qty -  so_used_qty
						sql = """ update kg_service_indent_line set pending_qty=%s where id = %s """%(pending_soindent_qty,
													soindent_line_id.id)
						cr.execute(sql)

						sql1 = """ update kg_gate_pass_line set so_pending_qty=(so_pending_qty - %s),so_flag = 't' where si_line_id = %s and gate_id = %s"""%(so_used_qty,
													soindent_line_id.id,obj.gp_id.id)
						cr.execute(sql1)
						
						sql2 = """ update kg_service_order_line set gp_line_id=(select id from kg_gate_pass_line where si_line_id = %s and gate_id = %s limit 1)"""%(soindent_line_id.id,obj.gp_id.id)
						cr.execute(sql2)
					else:
						raise osv.except_osv(
							_('Direct Service Order Not Allow'),
							_('System not allow to raise a Service Order with out Service Indent for %s' %(product)))
				else:
					rec.write({'button_flag':True})
		for line in rec.service_order_line:
			product_tax_amt = self._amount_line_tax(cr, uid, line, context=context)
			cr.execute("""update kg_service_order_line set product_tax_amt = %s where id = %s"""%(product_tax_amt,line.id))
		#cr.execute("""select all_transaction_mails('Serive Order Approval',%s)"""%(ids[0]))
		"""Raj
		data = cr.fetchall();
		vals = self.email_ids(cr,uid,ids,context = context)
		if (not vals['email_to']) and (not vals['email_cc']):
			pass
		else:
			ir_mail_server = self.pool.get('ir.mail_server')
			msg = ir_mail_server.build_email(
					email_from = vals['email_from'][0],
					email_to = vals['email_to'],
					subject = "	Service order - Approved",
					body = data[0][0],
					email_cc = vals['email_cc'],
					object_id = ids[0] and ('%s-%s' % (ids[0], 'kg.service.order')),
					subtype = 'html',
					subtype_alternative = 'plain')
			res = ir_mail_server.send_email(cr, uid, msg,mail_server_id=1, context=context)		
		"""
		return True
		cr.close()