73 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # ERPNext - web based ERP (http://erpnext.com)
 | |
| # Copyright (C) 2012 Web Notes Technologies Pvt Ltd
 | |
| # 
 | |
| # This program is free software: you can redistribute it and/or modify
 | |
| # it under the terms of the GNU General Public License as published by
 | |
| # the Free Software Foundation, either version 3 of the License, or
 | |
| # (at your option) any later version.
 | |
| # 
 | |
| # This program is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| # GNU General Public License for more details.
 | |
| # 
 | |
| # You should have received a copy of the GNU General Public License
 | |
| # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| from __future__ import unicode_literals
 | |
| import webnotes
 | |
| from webnotes.utils import cint
 | |
| from setup.utils import get_company_currency
 | |
| from webnotes import msgprint, _
 | |
| 
 | |
| from controllers.stock_controller import StockController
 | |
| 
 | |
| class SellingController(StockController):
 | |
| 	def validate(self):
 | |
| 		super(SellingController, self).validate()
 | |
| 		self.set_total_in_words()
 | |
| 		
 | |
| 	def set_total_in_words(self):
 | |
| 		from webnotes.utils import money_in_words
 | |
| 		company_currency = get_company_currency(self.doc.company)
 | |
| 		
 | |
| 		disable_rounded_total = cint(webnotes.conn.get_value("Global Defaults", None, 
 | |
| 			"disable_rounded_total"))
 | |
| 			
 | |
| 		if self.meta.get_field("in_words"):
 | |
| 			self.doc.in_words = money_in_words(disable_rounded_total and 
 | |
| 				self.doc.grand_total or self.doc.rounded_total, company_currency)
 | |
| 		if self.meta.get_field("in_words_export"):
 | |
| 			self.doc.in_words_export = money_in_words(disable_rounded_total and 
 | |
| 				self.doc.grand_total_export or self.doc.rounded_total_export, self.doc.currency)
 | |
| 
 | |
| 	def set_buying_amount(self, stock_ledger_entries = None):
 | |
| 		from stock.utils import get_buying_amount
 | |
| 		if not stock_ledger_entries:
 | |
| 			stock_ledger_entries = self.get_stock_ledger_entries()
 | |
| 
 | |
| 		item_sales_bom = {}
 | |
| 		for d in self.doclist.get({"parentfield": "packing_details"}):
 | |
| 			new_d = webnotes._dict(d.fields.copy())
 | |
| 			new_d.total_qty = -1 * d.qty
 | |
| 			item_sales_bom.setdefault(d.parent_item, []).append(new_d)
 | |
| 		
 | |
| 		if stock_ledger_entries:
 | |
| 			for item in self.doclist.get({"parentfield": self.fname}):
 | |
| 				if item.item_code in self.stock_items or \
 | |
| 						(item_sales_bom and item_sales_bom.get(item.item_code)):
 | |
| 					buying_amount = get_buying_amount(item.item_code, item.warehouse, -1*item.qty, 
 | |
| 						self.doc.doctype, self.doc.name, item.name, stock_ledger_entries, 
 | |
| 						item_sales_bom)
 | |
| 					item.buying_amount = buying_amount > 0 and buying_amount or 0
 | |
| 					webnotes.conn.set_value(item.doctype, item.name, "buying_amount", 
 | |
| 						item.buying_amount)
 | |
| 						
 | |
| 	def check_expense_account(self, item):
 | |
| 		if item.buying_amount and not item.expense_account:
 | |
| 			msgprint(_("""Expense account is mandatory for item: """) + item.item_code, 
 | |
| 				raise_exception=1)
 | |
| 				
 | |
| 		if item.buying_amount and not item.cost_center:
 | |
| 			msgprint(_("""Cost Center is mandatory for item: """) + item.item_code, 
 | |
| 				raise_exception=1) |