blob: 538c5c1a7e0ee08a1b8f215f72ffbbcb3e9a7e16 [file] [log] [blame]
Nabin Haitec52db82013-01-22 11:53:14 +05301# ERPNext - web based ERP (http://erpnext.com)
2# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation, either version 3 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17from __future__ import unicode_literals
18import webnotes
Nabin Hait6f1a5ec2013-02-20 16:25:05 +053019from webnotes.utils import cint
Nabin Haitec52db82013-01-22 11:53:14 +053020from setup.utils import get_company_currency
21
Nabin Haitc3afb252013-03-19 12:01:24 +053022from controllers.stock_controller import StockController
Nabin Haitbf495c92013-01-30 12:49:08 +053023
Nabin Haitc3afb252013-03-19 12:01:24 +053024class SellingController(StockController):
Nabin Haitec52db82013-01-22 11:53:14 +053025 def validate(self):
Saurabh6f753182013-03-20 12:55:28 +053026 super(SellingController, self).validate()
Nabin Haitec52db82013-01-22 11:53:14 +053027 self.set_total_in_words()
28
29 def set_total_in_words(self):
30 from webnotes.utils import money_in_words
31 company_currency = get_company_currency(self.doc.company)
Nabin Hait6f1a5ec2013-02-20 16:25:05 +053032
33 disable_rounded_total = cint(webnotes.conn.get_value("Global Defaults", None,
34 "disable_rounded_total"))
35
Nabin Haitec52db82013-01-22 11:53:14 +053036 if self.meta.get_field("in_words"):
Nabin Hait6f1a5ec2013-02-20 16:25:05 +053037 self.doc.in_words = money_in_words(disable_rounded_total and
38 self.doc.grand_total or self.doc.rounded_total, company_currency)
Nabin Haitec52db82013-01-22 11:53:14 +053039 if self.meta.get_field("in_words_export"):
Nabin Hait6f1a5ec2013-02-20 16:25:05 +053040 self.doc.in_words_export = money_in_words(disable_rounded_total and
Nabin Hait8c7234f2013-03-11 16:32:33 +053041 self.doc.grand_total_export or self.doc.rounded_total_export, self.doc.currency)
Nabin Haita0e7c152013-03-21 18:37:06 +053042
43 def set_buying_amount(self):
Anand Doshi8c5844e2013-03-21 20:24:10 +053044 from stock.utils import get_buying_amount
Nabin Haita0e7c152013-03-21 18:37:06 +053045 stock_ledger_entries = self.get_stock_ledger_entries()
Anand Doshi8c5844e2013-03-21 20:24:10 +053046
47 item_sales_bom = {}
48 for d in self.doclist.get({"parentfield": "packing_details"}):
49 new_d = webnotes._dict(d.fields.copy())
50 new_d.total_qty = -1 * d.qty
51 item_sales_bom.setdefault(d.parent_item, []).append(new_d)
Nabin Haita0e7c152013-03-21 18:37:06 +053052
53 if stock_ledger_entries:
54 for item in self.doclist.get({"parentfield": self.fname}):
55 if item.item_code in self.stock_items or \
56 (item_sales_bom and item_sales_bom.get(item.item_code)):
57 buying_amount = get_buying_amount(item.item_code, item.warehouse, -1*item.qty,
58 self.doc.doctype, self.doc.name, item.name, stock_ledger_entries,
59 item_sales_bom)
60 item.buying_amount = buying_amount > 0 and buying_amount or 0
61 webnotes.conn.set_value(self.tname, item.name, "buying_amount",
62 item.buying_amount)