示例#1
0
	def service_si(self,s):
		total_amt=0.00
		si=Document("Sales Invoice")
                si.customer=webnotes.conn.get_value("Customer",{"innoworth_id":(s['Customer Id']).strip()},"name")
                si.customer_name=webnotes.conn.get_value("Customer",{"innoworth_id":(s['Customer Id']).strip()},"name")
                si.posting_date=nowdate()
                si.due_date=nowdate()
                si.company='InnoWorth'
                si.conversion_rate=1.00
                si.customer_group='Individual'
                si.territory=s['Territory']
		si.charge=webnotes.conn.get_value("Applicable Territory",{"territory":s['Territory']},"parent")
                si.debit_to=webnotes.conn.get_value('Account',{"master_name":si.customer},'name')
                si.price_list_currency='INR'
                si.currency='INR'
                si.selling_price_list='Standard Selling'
                si.fiscal_year=webnotes.conn.get_value("Global Defaults", None, "current_fiscal_year")               
                si.docstatus=1
                si.save()
		html=""
		j=0
		item_list=[]
                for r in s['Child']:
			j=j+1
			child_data=sql("select name,item_name,item_group,description,stock_uom from `tabItem` where name='"+(r['Item Name']).strip()+"'",as_list=1)
                	sic=Document("Sales Invoice Item")
                        sic.parent=si.name
                        sic.item_code=child_data[0][0]
			sic.item_name=child_data[0][1]
                        sic.item_group=child_data[0][2]
                        sic.description=child_data[0][3]
                        sic.qty=(r['Qty']).strip()
                        sic.stock_uom=child_data[0][4]
                        sic.ref_rate=webnotes.conn.get_value("Item Price",{"item_code":(r['Item Name']).strip(),"price_list":"Standard Selling"},"ref_rate")
			sic.export_rate=webnotes.conn.get_value("Item Price",{"item_code":(r['Item Name']).strip(),"price_list":"Standard Selling"},"ref_rate")
			if child_data[0][1]:
                                sic.export_amount=cstr(flt(sic.ref_rate)*flt((r['Qty']).strip()))
                        else:
                                sic.export_amount=cstr((r['Qty']).strip())
			total_amt=cstr(flt(total_amt)+flt(sic.export_amount))
                        sic.income_account='Sales - innow'
                        sic.cost_center='Main - innow'
                        sic.docstatus=1
			item_list.append({"item_code":sic.item_code,"export_amt":sic.export_amount})
                        sic.save()
			html+=("<tr><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'>"+cstr(j)+"</td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'>"+cstr(sic.item_code)+"</td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'>"+cstr(sic.description)+"</td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;text-align:right;'><div>"+cstr(sic.qty)+"</div></td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'>"+cstr(sic.stock_uom)+"</td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'><div style='text-align:right'>₹ "+cstr(sic.ref_rate)+"</div></td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'><div style='text-align: right'>₹ "+cstr(sic.export_amount)+"</div></td></tr>")
		tax_total=0.00
		tax_html=""
                if si.charge:
                        tax_total=self.create_tax(si.charge,si.name,item_list,'Sales Invoice','Sales Taxes and Charges',total_amt)
			tax_html=self.sales_tax_html(si.name,None,0)
		si_=Document('Sales Invoice',si.name)
		si_.net_total_export=cstr(total_amt)	
		si_.other_charges_total_export=cstr(tax_total)
                si_.grand_total_export=cstr(flt(si_.net_total_export)+flt(si_.other_charges_total_export))
		si_.grand_total=cstr(si_.grand_total_export)
                si_.rounded_total_export=cstr(round(flt(si_.grand_total_export)))
		adv=c_amt=0.00
		flag=False
                check=0
                total=si_.grand_total_export
                parent_jv=[]
                advance_payment=sql("select credit,parent,name,against_account from `tabJournal Voucher Detail` where account='"+si.debit_to+"' and is_advance='Yes' and credit<>0 and ifnull(against_invoice,'')='' and docstatus=1 order by name asc",as_list=1)
		if advance_payment:
                	for s in advance_payment:
                        	if s[1] not in parent_jv:
                                	parent_jv.append(s[1])
                                if flt(total) < flt(s[0]) and flag==False:
                                	adv=cstr(si_.grand_total_export)
                                        update_jv=sql("update `tabJournal Voucher Detail` set against_invoice='"+si.name+"', credit='"+cstr(total)+"' where name='"+s[2]+"'")
                                        jv = Document("Journal Voucher Detail")
                                        jv.account=si.debit_to
                                        jv.cost_center= "Main - Frsh"
                                        jv.credit= cstr(flt(s[0])-flt(total))
                                        jv.is_advance= "Yes"
                                        jv.parent=s[1]
                                        jv.against_account=s[3]
                                        jv.docstatus=1
                                        jv.save()
                                        flag=True
                                elif flag==False:
                                	adv=cstr(flt(adv)+flt(s[0]))
                                        total=cstr(flt(total)-flt(s[0]))
                                        update_jv=sql("update `tabJournal Voucher Detail` set against_invoice='"+si.name+"' where name='"+s[2]+"'")
                                        if flt(total)==0:
                                        	flag=True
                                        else:
                                        	flag=False
		si_.total_advance=cstr(adv)
		si_.outstanding_amount=cstr(flt(si_.grand_total_export)-flt(adv))
                si_.docstatus=1
		si_.save()
		if parent_jv:
                	self.make_adv_payment_gl(parent_jv)
                data=[{"against_voucher":si.name,"account":si.debit_to,"debit":cstr(si_.grand_total_export),"credit":"0","against":"Sales - innow","against_voucher_type":"Sales Invoice","voucher_type":"Sales Invoice","voucher_no":si.name,"cost_center":""},{"against_voucher":"","account":'Sales - innow',"debit":"0","credit":cstr(total_amt),"against":si.debit_to,"against_voucher_type":"","voucher_type":"Sales Invoice","voucher_no":si.name,"cost_center":"Main - innow"}]
                self.create_gl(data)
		
		a=html_data({"posting_date":datetime.datetime.strptime(nowdate(),'%Y-%m-%d').strftime('%d/%m/%Y'),"due_date":datetime.datetime.strptime(nowdate(),'%Y-%m-%d').strftime('%d/%m/%Y'),"customer_name":si.customer_name,"net_total":si_.net_total_export,"grand_total":si_.grand_total_export,"rounded_total":si_.rounded_total_export,"table_data":html,"date_1":"Posting Date","date_2":"Due Date","doctype":"Sales Invoice","doctype_no":si.name,"company":si.company,"addr_name":"","address":"","tax_detail":tax_html})
                file_path_=attach_file(a,[si.name,"Account/Kirana","Sales Invoice"])
                return {"Sales Invoice":si.name,"File Copy":file_path_}
示例#2
0
	def make_si(self,args):
			parent=sql("select * from `tabSales Order` where name='"+(args['Sales Order No']).strip()+"'",as_dict=1)
			if parent:
				for r in parent:
					si=Document("Sales Invoice")
					si.customer=r['customer']
					si.customer_name=r['customer_name']
					si.posting_date=nowdate()
					si.due_date=nowdate()
					si.charge=r['charge']
               		 	        si.company='InnoWorth'
            	 			si.conversion_rate=1.00
                        		si.customer_group='Individual'
					si.territory=r['territory']
					si.debit_to=webnotes.conn.get_value('Account',{"master_name":r['customer']},'name')
					si.price_list_currency='INR'
                        		si.currency='INR'
                        		si.selling_price_list='Standard Selling'
					si.fiscal_year=webnotes.conn.get_value("Global Defaults", None, "current_fiscal_year")
					si.net_total_export=cstr(r['net_total_export'])
                        		si.grand_total_export=cstr(r['grand_total_export'])
					si.other_charges_total_export=cstr(r['other_charges_total_export'])
					si.grand_total=cstr(r['grand_total_export'])
                        		si.rounded_total_export=cstr(r['rounded_total_export'])
					si.save()
					si=Document("Sales Invoice",si.name)
					adv=c_amt=0.00
					flag=False
					check=0
					total=si.grand_total_export
					parent_jv=[]
					advance_payment=sql("select credit,parent,name,against_account from `tabJournal Voucher Detail` where account='"+si.debit_to+"' and is_advance='Yes' and credit<>0 and ifnull(against_invoice,'')='' and docstatus=1 order by name asc",as_list=1)
                			if advance_payment:
                        			for s in advance_payment:
							if s[1] not in parent_jv:
								parent_jv.append(s[1])
							if flt(total) < flt(s[0]) and flag==False:
								adv=cstr(si.grand_total_export)
								update_jv=sql("update `tabJournal Voucher Detail` set against_invoice='"+si.name+"', credit='"+cstr(total)+"' where name='"+s[2]+"'")
								jv = Document("Journal Voucher Detail")
           							jv.account=si.debit_to
           							jv.cost_center= "Main - Frsh"
       								jv.credit= cstr(flt(s[0])-flt(total))
           							jv.is_advance= "Yes"
           							jv.parent=s[1]
								jv.against_account=s[3]
								jv.docstatus=1
								jv.save()
								flag=True
							elif flag==False:
								adv=cstr(flt(adv)+flt(s[0]))
								total=cstr(flt(total)-flt(s[0]))
								update_jv=sql("update `tabJournal Voucher Detail` set against_invoice='"+si.name+"' where name='"+s[2]+"'")
								if flt(total)==0:
									flag=True
								else:
									flag=False
					si.total_advance=cstr(adv)
					si.outstanding_amount=cstr(flt(r['grand_total_export'])-flt(adv))
					si.docstatus=1	
					si.save()
					update=sql("update `tabSales Order` set per_billed='100' where name='"+cstr(r['name'])+"'")
					child=sql("select * from `tabSales Order Item` where parent='"+(args['Sales Order No']).strip()+"'",as_dict=1)
					html=""
					j=0
					credit_amt=0.00
					for s in child:
						j=j+1
						sic=Document("Sales Invoice Item")
						sic.parent=si.name
						sic.item_code=s['item_code']
						sic.item_name=s['item_name']
						sic.item_group=s['item_group']
						sic.description=s['description']
						sic.qty=s['qty']
						sic.stock_uom=s['stock_uom']
						sic.ref_rate=s['ref_rate']
						sic.amount=s['export_amount']
						c_amt=cstr(flt(c_amt)+flt(sic.amount))
						sic.export_rate=s['export_rate']
						sic.export_amount=s['export_amount']
						sic.income_account='Sales - innow'
						sic.cost_center='Main - innow'
						sic.warehouse=s['reserved_warehouse']
						sic.sales_order=r['name']
						sic.so_detail=s['name']
						sic.docstatus=1
						html+=("<tr><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'>"+cstr(j)+"</td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'>"+cstr(sic.item_code)+"</td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'>"+cstr(sic.description)+"</td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;text-align:right;'><div>"+cstr(sic.qty)+"</div></td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'>"+cstr(sic.stock_uom)+"</td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'><div style='text-align:right'>₹ "+cstr(sic.ref_rate)+"</div></td><td style='border:1px solid rgb(153, 153, 153);word-wrap: break-word;'><div style='text-align: right'>₹ "+cstr(sic.export_amount)+"</div></td></tr>")
						update=sql("update `tabSales Order Item` set billed_amt='"+cstr(s['export_amount'])+"' where name='"+cstr(s['name'])+"'")
						sic.save()
					
					tax_html=self.sales_tax_html((args['Sales Order No']).strip(),si.name,1)
					if parent_jv:
						self.make_adv_payment_gl(parent_jv)
					data=[{"against_voucher":si.name,"account":si.debit_to,"debit":cstr(si.grand_total_export),"credit":"0","against":"Sales - innow","against_voucher_type":"Sales Invoice","voucher_type":"Sales Invoice","voucher_no":si.name,"cost_center":""},{"account":'Sales - innow',"debit":"0","credit":cstr(c_amt),"against":si.debit_to,"against_voucher_type":"","voucher_type":"Sales Invoice","voucher_no":si.name,"cost_center":"Main - innow","against_voucher":""}]

					self.create_gl(data)

					a=html_data({"posting_date":datetime.datetime.strptime(nowdate(),'%Y-%m-%d').strftime('%d/%m/%Y'),"due_date":datetime.datetime.strptime(nowdate(),'%Y-%m-%d').strftime('%d/%m/%Y'),"customer_name":si.customer_name,"net_total":cstr(si.net_total_export),"grand_total":cstr(si.grand_total_export),"rounded_total":cstr(si.rounded_total_export),"table_data":html,"date_1":"Posting Date","date_2":"Due Date","doctype":"Sales Invoice","doctype_no":si.name,"company":si.company,"addr_name":"","address":"","tax_detail":tax_html})

                        		file_path_=attach_file(a,[si.name,"Account/Kirana","Sales Invoice"])
					return {"Sales Invoice":si.namek,"File Copy":file_path_}