This commit is contained in:
		
							parent
							
								
									dd32d6eb1f
								
							
						
					
					
						commit
						5b552b51f1
					
				| @ -11,7 +11,8 @@ from erpnext.setup.utils import get_company_currency | |||||||
| from erpnext.controllers.accounts_controller import AccountsController | from erpnext.controllers.accounts_controller import AccountsController | ||||||
| 
 | 
 | ||||||
| class JournalVoucher(AccountsController): | class JournalVoucher(AccountsController): | ||||||
| 
 | 	def __init__(self, arg1, arg2=None): | ||||||
|  | 		super(JournalVoucher, self).__init__(arg1, arg2) | ||||||
| 		self.master_type = {} | 		self.master_type = {} | ||||||
| 		self.credit_days_for = {} | 		self.credit_days_for = {} | ||||||
| 		self.credit_days_global = -1 | 		self.credit_days_global = -1 | ||||||
|  | |||||||
| @ -8,8 +8,6 @@ from frappe import _ | |||||||
| from erpnext.controllers.accounts_controller import AccountsController | from erpnext.controllers.accounts_controller import AccountsController | ||||||
| 
 | 
 | ||||||
| class PeriodClosingVoucher(AccountsController): | class PeriodClosingVoucher(AccountsController): | ||||||
| 		self.year_start_date = '' |  | ||||||
| 
 |  | ||||||
| 	def validate(self): | 	def validate(self): | ||||||
| 		self.validate_account_head() | 		self.validate_account_head() | ||||||
| 		self.validate_posting_date() | 		self.validate_posting_date() | ||||||
| @ -47,7 +45,7 @@ class PeriodClosingVoucher(AccountsController): | |||||||
| 			and t2.docstatus < 2 and t2.company = %s  | 			and t2.docstatus < 2 and t2.company = %s  | ||||||
| 			and t1.posting_date between %s and %s  | 			and t1.posting_date between %s and %s  | ||||||
| 			group by t1.account | 			group by t1.account | ||||||
| 		""", (self.company, self.year_start_date, self.posting_date), as_dict=1) | 		""", (self.company, self.get("year_start_date"), self.posting_date), as_dict=1) | ||||||
| 	  | 	  | ||||||
| 	def make_gl_entries(self): | 	def make_gl_entries(self): | ||||||
| 		gl_entries = [] | 		gl_entries = [] | ||||||
|  | |||||||
| @ -5,7 +5,6 @@ from __future__ import unicode_literals | |||||||
| import frappe | import frappe | ||||||
| 
 | 
 | ||||||
| from frappe.utils import cstr, flt | from frappe.utils import cstr, flt | ||||||
| from frappe.model.utils import getlist |  | ||||||
| from frappe import msgprint, _ | from frappe import msgprint, _ | ||||||
| 
 | 
 | ||||||
| from erpnext.stock.doctype.item.item import get_last_purchase_details | from erpnext.stock.doctype.item.item import get_last_purchase_details | ||||||
| @ -19,7 +18,7 @@ class PurchaseCommon(BuyingController): | |||||||
| 		import frappe.utils | 		import frappe.utils | ||||||
| 		this_purchase_date = frappe.utils.getdate(obj.get('posting_date') or obj.get('transaction_date')) | 		this_purchase_date = frappe.utils.getdate(obj.get('posting_date') or obj.get('transaction_date')) | ||||||
| 		 | 		 | ||||||
| 		for d in getlist(obj.doclist,obj.fname): | 		for d in obj.get(obj.fname): | ||||||
| 			# get last purchase details | 			# get last purchase details | ||||||
| 			last_purchase_details = get_last_purchase_details(d.item_code, obj.name) | 			last_purchase_details = get_last_purchase_details(d.item_code, obj.name) | ||||||
| 
 | 
 | ||||||
| @ -47,7 +46,7 @@ class PurchaseCommon(BuyingController): | |||||||
| 		doc_name = obj.name | 		doc_name = obj.name | ||||||
| 		conversion_rate = flt(obj.get('conversion_rate')) or 1.0 | 		conversion_rate = flt(obj.get('conversion_rate')) or 1.0 | ||||||
| 		 | 		 | ||||||
| 		for d in getlist(obj.doclist, obj.fname): | 		for d in obj.get(obj.fname): | ||||||
| 			if d.item_code: | 			if d.item_code: | ||||||
| 				last_purchase_details = get_last_purchase_details(d.item_code, doc_name) | 				last_purchase_details = get_last_purchase_details(d.item_code, doc_name) | ||||||
| 
 | 
 | ||||||
| @ -69,7 +68,7 @@ class PurchaseCommon(BuyingController): | |||||||
| 			 | 			 | ||||||
| 	def validate_for_items(self, obj): | 	def validate_for_items(self, obj): | ||||||
| 		check_list, chk_dupl_itm=[],[] | 		check_list, chk_dupl_itm=[],[] | ||||||
| 		for d in getlist( obj.doclist, obj.fname): | 		for d in obj.get(obj.fname): | ||||||
| 			# validation for valid qty	 | 			# validation for valid qty	 | ||||||
| 			if flt(d.qty) < 0 or (d.parenttype != 'Purchase Receipt' and not flt(d.qty)): | 			if flt(d.qty) < 0 or (d.parenttype != 'Purchase Receipt' and not flt(d.qty)): | ||||||
| 				frappe.throw("Please enter valid qty for item %s" % cstr(d.item_code)) | 				frappe.throw("Please enter valid qty for item %s" % cstr(d.item_code)) | ||||||
|  | |||||||
| @ -11,19 +11,19 @@ from frappe import msgprint | |||||||
| 	 | 	 | ||||||
| from erpnext.controllers.buying_controller import BuyingController | from erpnext.controllers.buying_controller import BuyingController | ||||||
| class PurchaseOrder(BuyingController): | class PurchaseOrder(BuyingController): | ||||||
| 		self.tname = 'Purchase Order Item' | 	tname = 'Purchase Order Item' | ||||||
| 		self.fname = 'po_details' | 	fname = 'po_details' | ||||||
| 		self.status_updater = [{ | 	status_updater = [{ | ||||||
| 			'source_dt': 'Purchase Order Item', | 		'source_dt': 'Purchase Order Item', | ||||||
| 			'target_dt': 'Material Request Item', | 		'target_dt': 'Material Request Item', | ||||||
| 			'join_field': 'prevdoc_detail_docname', | 		'join_field': 'prevdoc_detail_docname', | ||||||
| 			'target_field': 'ordered_qty', | 		'target_field': 'ordered_qty', | ||||||
| 			'target_parent_dt': 'Material Request', | 		'target_parent_dt': 'Material Request', | ||||||
| 			'target_parent_field': 'per_ordered', | 		'target_parent_field': 'per_ordered', | ||||||
| 			'target_ref_field': 'qty', | 		'target_ref_field': 'qty', | ||||||
| 			'source_field': 'qty', | 		'source_field': 'qty', | ||||||
| 			'percent_join_field': 'prevdoc_docname', | 		'percent_join_field': 'prevdoc_docname', | ||||||
| 		}] | 	}] | ||||||
| 		 | 		 | ||||||
| 	def validate(self): | 	def validate(self): | ||||||
| 		super(DocType, self).validate() | 		super(DocType, self).validate() | ||||||
|  | |||||||
| @ -342,20 +342,14 @@ class AccountsController(TransactionBase): | |||||||
| 	 | 	 | ||||||
| 	def _cleanup(self): | 	def _cleanup(self): | ||||||
| 		for tax in self.tax_doclist: | 		for tax in self.tax_doclist: | ||||||
| 			for fieldname in ("grand_total_for_current_item", |  | ||||||
| 				"tax_amount_for_current_item", |  | ||||||
| 				"tax_fraction_for_current_item",  |  | ||||||
| 				"grand_total_fraction_for_current_item"): |  | ||||||
| 				if fieldname in tax.fields: |  | ||||||
| 					del tax.get(fieldname) |  | ||||||
| 			 |  | ||||||
| 			tax.item_wise_tax_detail = json.dumps(tax.item_wise_tax_detail) | 			tax.item_wise_tax_detail = json.dumps(tax.item_wise_tax_detail) | ||||||
| 			 | 			 | ||||||
| 	def _set_in_company_currency(self, item, print_field, base_field): | 	def _set_in_company_currency(self, item, print_field, base_field): | ||||||
| 		"""set values in base currency""" | 		"""set values in base currency""" | ||||||
| 		item.set(base_field, flt((flt(item.get(print_field),) | 		value_in_company_currency = flt(self.conversion_rate *  | ||||||
| 			self.precision(print_field, item)) * self.conversion_rate), | 			flt(item.get(print_field), self.precision(print_field, item)), | ||||||
| 			self.precision(base_field, item)) | 			self.precision(base_field, item)) | ||||||
|  | 		item.set(base_field, value_in_company_currency) | ||||||
| 			 | 			 | ||||||
| 	def calculate_total_advance(self, parenttype, advance_parentfield): | 	def calculate_total_advance(self, parenttype, advance_parentfield): | ||||||
| 		if self.doctype == parenttype and self.docstatus < 2: | 		if self.doctype == parenttype and self.docstatus < 2: | ||||||
|  | |||||||
| @ -147,18 +147,6 @@ class BuyingController(StockController): | |||||||
| 			self.outstanding_amount = flt(self.total_amount_to_pay - self.total_advance, | 			self.outstanding_amount = flt(self.total_amount_to_pay - self.total_advance, | ||||||
| 				self.precision("outstanding_amount")) | 				self.precision("outstanding_amount")) | ||||||
| 			 | 			 | ||||||
| 	def _cleanup(self): |  | ||||||
| 		super(BuyingController, self)._cleanup() |  | ||||||
| 		 |  | ||||||
| 		if not self.meta.get_field("item_tax_amount", parentfield=self.fname): |  | ||||||
| 			for item in self.item_doclist: |  | ||||||
| 				del item.get("item_tax_amount") |  | ||||||
| 				 |  | ||||||
| 		if not self.meta.get_field("tax_amount_after_discount_amount",  |  | ||||||
| 				parentfield=self.other_fname): |  | ||||||
| 			for tax in self.tax_doclist: |  | ||||||
| 				del tax.get("tax_amount_after_discount_amount") |  | ||||||
| 				 |  | ||||||
| 	# update valuation rate | 	# update valuation rate | ||||||
| 	def update_valuation_rate(self, parentfield): | 	def update_valuation_rate(self, parentfield): | ||||||
| 		""" | 		""" | ||||||
|  | |||||||
| @ -10,6 +10,8 @@ from frappe import msgprint, _ | |||||||
| from frappe.model.document import Document | from frappe.model.document import Document | ||||||
| 
 | 
 | ||||||
| class ProductionPlanningTool(Document): | class ProductionPlanningTool(Document): | ||||||
|  | 	def __init__(self, arg1, arg2=None): | ||||||
|  | 		super(ProductionPlanningTool, self).__init__(arg1, arg2) | ||||||
| 		self.item_dict = {} | 		self.item_dict = {} | ||||||
| 
 | 
 | ||||||
| 	def get_so_details(self, so): | 	def get_so_details(self, so): | ||||||
|  | |||||||
| @ -12,21 +12,21 @@ from erpnext.stock.utils import get_valid_serial_nos | |||||||
| from erpnext.utilities.transaction_base import TransactionBase | from erpnext.utilities.transaction_base import TransactionBase | ||||||
| 
 | 
 | ||||||
| class InstallationNote(TransactionBase): | class InstallationNote(TransactionBase): | ||||||
| 		self.tname = 'Installation Note Item' | 	tname = 'Installation Note Item' | ||||||
| 		self.fname = 'installed_item_details' | 	fname = 'installed_item_details' | ||||||
| 		self.status_updater = [{ | 	status_updater = [{ | ||||||
| 			'source_dt': 'Installation Note Item', | 		'source_dt': 'Installation Note Item', | ||||||
| 			'target_dt': 'Delivery Note Item', | 		'target_dt': 'Delivery Note Item', | ||||||
| 			'target_field': 'installed_qty', | 		'target_field': 'installed_qty', | ||||||
| 			'target_ref_field': 'qty', | 		'target_ref_field': 'qty', | ||||||
| 			'join_field': 'prevdoc_detail_docname', | 		'join_field': 'prevdoc_detail_docname', | ||||||
| 			'target_parent_dt': 'Delivery Note', | 		'target_parent_dt': 'Delivery Note', | ||||||
| 			'target_parent_field': 'per_installed', | 		'target_parent_field': 'per_installed', | ||||||
| 			'source_field': 'qty', | 		'source_field': 'qty', | ||||||
| 			'percent_join_field': 'prevdoc_docname', | 		'percent_join_field': 'prevdoc_docname', | ||||||
| 			'status_field': 'installation_status', | 		'status_field': 'installation_status', | ||||||
| 			'keyword': 'Installed' | 		'keyword': 'Installed' | ||||||
| 		}] | 	}] | ||||||
| 
 | 
 | ||||||
| 	def validate(self): | 	def validate(self): | ||||||
| 		self.validate_fiscal_year() | 		self.validate_fiscal_year() | ||||||
|  | |||||||
| @ -11,7 +11,12 @@ from frappe import session | |||||||
| from erpnext.controllers.selling_controller import SellingController | from erpnext.controllers.selling_controller import SellingController | ||||||
| 
 | 
 | ||||||
| class Lead(SellingController): | class Lead(SellingController): | ||||||
|  | 	def onload(self): | ||||||
|  | 		customer = frappe.db.get_value("Customer", {"lead_name": self.name}) | ||||||
|  | 		if customer: | ||||||
|  | 			self.set("__is_customer", customer) | ||||||
| 	 | 	 | ||||||
|  | 	def validate(self): | ||||||
| 		self._prev = frappe._dict({ | 		self._prev = frappe._dict({ | ||||||
| 			"contact_date": frappe.db.get_value("Lead", self.name, "contact_date") if \ | 			"contact_date": frappe.db.get_value("Lead", self.name, "contact_date") if \ | ||||||
| 				(not cint(self.get("__islocal"))) else None, | 				(not cint(self.get("__islocal"))) else None, | ||||||
| @ -19,12 +24,6 @@ class Lead(SellingController): | |||||||
| 				(not cint(self.get("__islocal"))) else None, | 				(not cint(self.get("__islocal"))) else None, | ||||||
| 		}) | 		}) | ||||||
| 		 | 		 | ||||||
| 	def onload(self): |  | ||||||
| 		customer = frappe.db.get_value("Customer", {"lead_name": self.name}) |  | ||||||
| 		if customer: |  | ||||||
| 			self.set("__is_customer", customer) |  | ||||||
| 	 |  | ||||||
| 	def validate(self): |  | ||||||
| 		self.set_status() | 		self.set_status() | ||||||
| 		 | 		 | ||||||
| 		if self.source == 'Campaign' and not self.campaign_name and session['user'] != 'Guest': | 		if self.source == 'Campaign' and not self.campaign_name and session['user'] != 'Guest': | ||||||
|  | |||||||
| @ -86,7 +86,7 @@ class AuthorizationControl(TransactionBase): | |||||||
| 				add_cond = " and master_name = '"+make_esc("'")(cstr(customer))+"'" | 				add_cond = " and master_name = '"+make_esc("'")(cstr(customer))+"'" | ||||||
| 		if based_on == 'Itemwise Discount': | 		if based_on == 'Itemwise Discount': | ||||||
| 			if doc_obj: | 			if doc_obj: | ||||||
| 				for t in getlist(doc_obj.doclist, doc_obj.fname): | 				for t in doc_obj.get(doc_obj.fname): | ||||||
| 					self.validate_auth_rule(doctype_name, t.discount_percentage, based_on, add_cond, company,t.item_code ) | 					self.validate_auth_rule(doctype_name, t.discount_percentage, based_on, add_cond, company,t.item_code ) | ||||||
| 		else: | 		else: | ||||||
| 			self.validate_auth_rule(doctype_name, auth_value, based_on, add_cond, company) | 			self.validate_auth_rule(doctype_name, auth_value, based_on, add_cond, company) | ||||||
| @ -98,7 +98,7 @@ class AuthorizationControl(TransactionBase): | |||||||
| 		av_dis = 0 | 		av_dis = 0 | ||||||
| 		if doc_obj: | 		if doc_obj: | ||||||
| 			price_list_rate, base_rate = 0, 0 | 			price_list_rate, base_rate = 0, 0 | ||||||
| 			for d in getlist(doc_obj.doclist, doc_obj.fname): | 			for d in doc_obj.get(doc_obj.fname): | ||||||
| 				if d.base_price_list_rate and d.base_rate: | 				if d.base_price_list_rate and d.base_rate: | ||||||
| 					price_list_rate += flt(d.base_price_list_rate) | 					price_list_rate += flt(d.base_price_list_rate) | ||||||
| 					base_rate += flt(d.base_rate) | 					base_rate += flt(d.base_rate) | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ import frappe | |||||||
| from frappe.utils.nestedset import DocTypeNestedSet | from frappe.utils.nestedset import DocTypeNestedSet | ||||||
| 
 | 
 | ||||||
| class ItemGroup(DocTypeNestedSet): | class ItemGroup(DocTypeNestedSet): | ||||||
| 		self.nsm_parent_field = 'parent_item_group' | 	nsm_parent_field = 'parent_item_group' | ||||||
| 	 | 	 | ||||||
| 	def validate(self): | 	def validate(self): | ||||||
| 		if not self.parent_website_route: | 		if not self.parent_website_route: | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ from __future__ import unicode_literals | |||||||
| import frappe | import frappe | ||||||
| 
 | 
 | ||||||
| from frappe.utils import cstr, flt | from frappe.utils import cstr, flt | ||||||
| from frappe.model.utils import getlist |  | ||||||
| from frappe import msgprint, _ | from frappe import msgprint, _ | ||||||
| 
 | 
 | ||||||
| from erpnext.controllers.buying_controller import BuyingController | from erpnext.controllers.buying_controller import BuyingController | ||||||
|  | |||||||
| @ -32,7 +32,7 @@ def update_packing_list_item(obj, packing_item_code, qty, warehouse, line, packi | |||||||
| 
 | 
 | ||||||
| 	# check if exists | 	# check if exists | ||||||
| 	exists = 0 | 	exists = 0 | ||||||
| 	for d in getlist(obj.doclist, 'packing_details'): | 	for d in obj.get("packing_details"): | ||||||
| 		if d.parent_item == line.item_code and d.item_code == packing_item_code and d.parent_detail_docname == line.name: | 		if d.parent_item == line.item_code and d.item_code == packing_item_code and d.parent_detail_docname == line.name: | ||||||
| 			pi, exists = d, 1 | 			pi, exists = d, 1 | ||||||
| 			break | 			break | ||||||
|  | |||||||
| @ -70,7 +70,7 @@ class SmsControl(Document): | |||||||
| 	def send_via_gateway(self, arg): | 	def send_via_gateway(self, arg): | ||||||
| 		ss = frappe.get_doc('SMS Settings', 'SMS Settings') | 		ss = frappe.get_doc('SMS Settings', 'SMS Settings') | ||||||
| 		args = {ss.message_parameter : arg.get('message')} | 		args = {ss.message_parameter : arg.get('message')} | ||||||
| 		for d in getlist(ss.doclist, 'static_parameter_details'): | 		for d in ss.get("static_parameter_details"): | ||||||
| 			args[d.parameter] = d.value | 			args[d.parameter] = d.value | ||||||
| 		 | 		 | ||||||
| 		resp = [] | 		resp = [] | ||||||
|  | |||||||
| @ -13,8 +13,8 @@ class TransactionBase(StatusUpdater): | |||||||
| 	def load_notification_message(self): | 	def load_notification_message(self): | ||||||
| 		dt = self.doctype.lower().replace(" ", "_") | 		dt = self.doctype.lower().replace(" ", "_") | ||||||
| 		if int(frappe.db.get_value("Notification Control", None, dt) or 0): | 		if int(frappe.db.get_value("Notification Control", None, dt) or 0): | ||||||
| 			self.set("__notification_message", \) | 			self.set("__notification_message", | ||||||
| 				frappe.db.get_value("Notification Control", None, dt + "_message") | 				frappe.db.get_value("Notification Control", None, dt + "_message")) | ||||||
| 							 | 							 | ||||||
| 	def validate_posting_time(self): | 	def validate_posting_time(self): | ||||||
| 		if not self.posting_time: | 		if not self.posting_time: | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user