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
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
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
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
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()
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
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
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
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
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()
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
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
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
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
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
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()