Merge branch 'develop' into item-link-formatter
This commit is contained in:
		
						commit
						9cd79b6859
					
				| @ -195,88 +195,91 @@ def create_sales_invoice_record(qty=1): | ||||
| 
 | ||||
| def create_records(): | ||||
| 	# create a new loyalty Account | ||||
| 	if frappe.db.exists("Account", "Loyalty - _TC"): | ||||
| 		return | ||||
| 
 | ||||
| 	frappe.get_doc({ | ||||
| 		"doctype": "Account", | ||||
| 		"account_name": "Loyalty", | ||||
| 		"parent_account": "Direct Expenses - _TC", | ||||
| 		"company": "_Test Company", | ||||
| 		"is_group": 0, | ||||
| 		"account_type": "Expense Account", | ||||
| 	}).insert() | ||||
| 	if not frappe.db.exists("Account", "Loyalty - _TC"): | ||||
| 		frappe.get_doc({ | ||||
| 			"doctype": "Account", | ||||
| 			"account_name": "Loyalty", | ||||
| 			"parent_account": "Direct Expenses - _TC", | ||||
| 			"company": "_Test Company", | ||||
| 			"is_group": 0, | ||||
| 			"account_type": "Expense Account", | ||||
| 		}).insert() | ||||
| 
 | ||||
| 	# create a new loyalty program Single tier | ||||
| 	frappe.get_doc({ | ||||
| 		"doctype": "Loyalty Program", | ||||
| 		"loyalty_program_name": "Test Single Loyalty", | ||||
| 		"auto_opt_in": 1, | ||||
| 		"from_date": today(), | ||||
| 		"loyalty_program_type": "Single Tier Program", | ||||
| 		"conversion_factor": 1, | ||||
| 		"expiry_duration": 10, | ||||
| 		"company": "_Test Company", | ||||
| 		"cost_center": "Main - _TC", | ||||
| 		"expense_account": "Loyalty - _TC", | ||||
| 		"collection_rules": [{ | ||||
| 			'tier_name': 'Silver', | ||||
| 			'collection_factor': 1000, | ||||
| 			'min_spent': 1000 | ||||
| 		}] | ||||
| 	}).insert() | ||||
| 
 | ||||
| 	# create a new customer | ||||
| 	frappe.get_doc({ | ||||
| 		"customer_group": "_Test Customer Group", | ||||
| 		"customer_name": "Test Loyalty Customer", | ||||
| 		"customer_type": "Individual", | ||||
| 		"doctype": "Customer", | ||||
| 		"territory": "_Test Territory" | ||||
| 	}).insert() | ||||
| 
 | ||||
| 	# create a new loyalty program Multiple tier | ||||
| 	frappe.get_doc({ | ||||
| 		"doctype": "Loyalty Program", | ||||
| 		"loyalty_program_name": "Test Multiple Loyalty", | ||||
| 		"auto_opt_in": 1, | ||||
| 		"from_date": today(), | ||||
| 		"loyalty_program_type": "Multiple Tier Program", | ||||
| 		"conversion_factor": 1, | ||||
| 		"expiry_duration": 10, | ||||
| 		"company": "_Test Company", | ||||
| 		"cost_center": "Main - _TC", | ||||
| 		"expense_account": "Loyalty - _TC", | ||||
| 		"collection_rules": [ | ||||
| 			{ | ||||
| 	if not frappe.db.exists("Loyalty Program","Test Single Loyalty"): | ||||
| 		frappe.get_doc({ | ||||
| 			"doctype": "Loyalty Program", | ||||
| 			"loyalty_program_name": "Test Single Loyalty", | ||||
| 			"auto_opt_in": 1, | ||||
| 			"from_date": today(), | ||||
| 			"loyalty_program_type": "Single Tier Program", | ||||
| 			"conversion_factor": 1, | ||||
| 			"expiry_duration": 10, | ||||
| 			"company": "_Test Company", | ||||
| 			"cost_center": "Main - _TC", | ||||
| 			"expense_account": "Loyalty - _TC", | ||||
| 			"collection_rules": [{ | ||||
| 				'tier_name': 'Silver', | ||||
| 				'collection_factor': 1000, | ||||
| 				'min_spent': 10000 | ||||
| 			}, | ||||
| 			{ | ||||
| 				'tier_name': 'Gold', | ||||
| 				'collection_factor': 1000, | ||||
| 				'min_spent': 19000 | ||||
| 			} | ||||
| 		] | ||||
| 	}).insert() | ||||
| 				'min_spent': 1000 | ||||
| 			}] | ||||
| 		}).insert() | ||||
| 
 | ||||
| 	# create a new customer | ||||
| 	if not frappe.db.exists("Customer","Test Loyalty Customer"): | ||||
| 		frappe.get_doc({ | ||||
| 			"customer_group": "_Test Customer Group", | ||||
| 			"customer_name": "Test Loyalty Customer", | ||||
| 			"customer_type": "Individual", | ||||
| 			"doctype": "Customer", | ||||
| 			"territory": "_Test Territory" | ||||
| 		}).insert() | ||||
| 
 | ||||
| 	# create a new loyalty program Multiple tier | ||||
| 	if not frappe.db.exists("Loyalty Program","Test Multiple Loyalty"): | ||||
| 		frappe.get_doc({ | ||||
| 			"doctype": "Loyalty Program", | ||||
| 			"loyalty_program_name": "Test Multiple Loyalty", | ||||
| 			"auto_opt_in": 1, | ||||
| 			"from_date": today(), | ||||
| 			"loyalty_program_type": "Multiple Tier Program", | ||||
| 			"conversion_factor": 1, | ||||
| 			"expiry_duration": 10, | ||||
| 			"company": "_Test Company", | ||||
| 			"cost_center": "Main - _TC", | ||||
| 			"expense_account": "Loyalty - _TC", | ||||
| 			"collection_rules": [ | ||||
| 				{ | ||||
| 					'tier_name': 'Silver', | ||||
| 					'collection_factor': 1000, | ||||
| 					'min_spent': 10000 | ||||
| 				}, | ||||
| 				{ | ||||
| 					'tier_name': 'Gold', | ||||
| 					'collection_factor': 1000, | ||||
| 					'min_spent': 19000 | ||||
| 				} | ||||
| 			] | ||||
| 		}).insert() | ||||
| 
 | ||||
| 	# create an item | ||||
| 	item = frappe.get_doc({ | ||||
| 		"doctype": "Item", | ||||
| 		"item_code": "Loyal Item", | ||||
| 		"item_name": "Loyal Item", | ||||
| 		"item_group": "All Item Groups", | ||||
| 		"company": "_Test Company", | ||||
| 		"is_stock_item": 1, | ||||
| 		"opening_stock": 100, | ||||
| 		"valuation_rate": 10000, | ||||
| 	}).insert() | ||||
| 	if not frappe.db.exists("Item", "Loyal Item"): | ||||
| 		frappe.get_doc({ | ||||
| 			"doctype": "Item", | ||||
| 			"item_code": "Loyal Item", | ||||
| 			"item_name": "Loyal Item", | ||||
| 			"item_group": "All Item Groups", | ||||
| 			"company": "_Test Company", | ||||
| 			"is_stock_item": 1, | ||||
| 			"opening_stock": 100, | ||||
| 			"valuation_rate": 10000, | ||||
| 		}).insert() | ||||
| 
 | ||||
| 	# create item price | ||||
| 	frappe.get_doc({ | ||||
| 		"doctype": "Item Price", | ||||
| 		"price_list": "Standard Selling", | ||||
| 		"item_code": item.item_code, | ||||
| 		"price_list_rate": 10000 | ||||
| 	}).insert() | ||||
| 	if not frappe.db.exists("Item Price", {"price_list": "Standard Selling", "item_code": "Loyal Item"}): | ||||
| 		frappe.get_doc({ | ||||
| 			"doctype": "Item Price", | ||||
| 			"price_list": "Standard Selling", | ||||
| 			"item_code": "Loyal Item", | ||||
| 			"price_list_rate": 10000 | ||||
| 		}).insert() | ||||
|  | ||||
| @ -45,7 +45,7 @@ class TestPOSClosingEntry(unittest.TestCase): | ||||
| 		frappe.set_user("Administrator") | ||||
| 		frappe.db.sql("delete from `tabPOS Profile`") | ||||
| 
 | ||||
| def init_user_and_profile(): | ||||
| def init_user_and_profile(**args): | ||||
| 	user = 'test@example.com' | ||||
| 	test_user = frappe.get_doc('User', user) | ||||
| 
 | ||||
| @ -53,7 +53,7 @@ def init_user_and_profile(): | ||||
| 	test_user.add_roles(*roles) | ||||
| 	frappe.set_user(user) | ||||
| 
 | ||||
| 	pos_profile = make_pos_profile() | ||||
| 	pos_profile = make_pos_profile(**args) | ||||
| 	pos_profile.append('applicable_for_users', { | ||||
| 		'default': 1, | ||||
| 		'user': user | ||||
|  | ||||
| @ -139,7 +139,8 @@ class POSInvoice(SalesInvoice): | ||||
| 			frappe.throw(_("At least one mode of payment is required for POS invoice.")) | ||||
| 
 | ||||
| 	def validate_change_account(self): | ||||
| 		if frappe.db.get_value("Account", self.account_for_change_amount, "company") != self.company: | ||||
| 		if self.change_amount and self.account_for_change_amount and \ | ||||
| 			frappe.db.get_value("Account", self.account_for_change_amount, "company") != self.company: | ||||
| 			frappe.throw(_("The selected change account {} doesn't belongs to Company {}.").format(self.account_for_change_amount, self.company)) | ||||
| 
 | ||||
| 	def validate_change_amount(self): | ||||
|  | ||||
| @ -8,6 +8,7 @@ import unittest, copy, time | ||||
| from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile | ||||
| from erpnext.accounts.doctype.pos_invoice.pos_invoice import make_sales_return | ||||
| from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry | ||||
| from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt | ||||
| 
 | ||||
| class TestPOSInvoice(unittest.TestCase): | ||||
| 	def test_timestamp_change(self): | ||||
| @ -222,29 +223,29 @@ class TestPOSInvoice(unittest.TestCase): | ||||
| 		from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item | ||||
| 		from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos | ||||
| 
 | ||||
| 		se = make_serialized_item(company='_Test Company with perpetual inventory', | ||||
| 			target_warehouse="Stores - TCP1", cost_center='Main - TCP1', expense_account='Cost of Goods Sold - TCP1') | ||||
| 		se = make_serialized_item(company='_Test Company', | ||||
| 			target_warehouse="Stores - _TC", cost_center='Main - _TC', expense_account='Cost of Goods Sold - _TC') | ||||
| 
 | ||||
| 		serial_nos = get_serial_nos(se.get("items")[0].serial_no) | ||||
| 
 | ||||
| 		pos = create_pos_invoice(company='_Test Company with perpetual inventory', debit_to='Debtors - TCP1', | ||||
| 			account_for_change_amount='Cash - TCP1', warehouse='Stores - TCP1', income_account='Sales - TCP1', | ||||
| 			expense_account='Cost of Goods Sold - TCP1', cost_center='Main - TCP1', | ||||
| 		pos = create_pos_invoice(company='_Test Company', debit_to='Debtors - _TC', | ||||
| 			account_for_change_amount='Cash - _TC', warehouse='Stores - _TC', income_account='Sales - _TC', | ||||
| 			expense_account='Cost of Goods Sold - _TC', cost_center='Main - _TC', | ||||
| 			item=se.get("items")[0].item_code, rate=1000, do_not_save=1) | ||||
| 
 | ||||
| 		pos.get("items")[0].serial_no = serial_nos[0] | ||||
| 		pos.append("payments", {'mode_of_payment': 'Bank Draft', 'account': '_Test Bank - TCP1', 'amount': 1000}) | ||||
| 		pos.append("payments", {'mode_of_payment': 'Bank Draft', 'account': '_Test Bank - _TC', 'amount': 1000}) | ||||
| 
 | ||||
| 		pos.insert() | ||||
| 		pos.submit() | ||||
| 
 | ||||
| 		pos2 = create_pos_invoice(company='_Test Company with perpetual inventory', debit_to='Debtors - TCP1', | ||||
| 			account_for_change_amount='Cash - TCP1', warehouse='Stores - TCP1', income_account='Sales - TCP1', | ||||
| 			expense_account='Cost of Goods Sold - TCP1', cost_center='Main - TCP1', | ||||
| 		pos2 = create_pos_invoice(company='_Test Company', debit_to='Debtors - _TC', | ||||
| 			account_for_change_amount='Cash - _TC', warehouse='Stores - _TC', income_account='Sales - _TC', | ||||
| 			expense_account='Cost of Goods Sold - _TC', cost_center='Main - _TC', | ||||
| 			item=se.get("items")[0].item_code, rate=1000, do_not_save=1) | ||||
| 
 | ||||
| 		pos2.get("items")[0].serial_no = serial_nos[0] | ||||
| 		pos2.append("payments", {'mode_of_payment': 'Bank Draft', 'account': '_Test Bank - TCP1', 'amount': 1000}) | ||||
| 		pos2.append("payments", {'mode_of_payment': 'Bank Draft', 'account': '_Test Bank - _TC', 'amount': 1000}) | ||||
| 
 | ||||
| 		self.assertRaises(frappe.ValidationError, pos2.insert) | ||||
| 
 | ||||
| @ -286,7 +287,7 @@ class TestPOSInvoice(unittest.TestCase): | ||||
| 
 | ||||
| 		after_redeem_lp_details = get_loyalty_program_details_with_points(inv.customer, company=inv.company, loyalty_program=inv.loyalty_program) | ||||
| 		self.assertEqual(after_redeem_lp_details.loyalty_points, 9) | ||||
| 	 | ||||
| 
 | ||||
| 	def test_merging_into_sales_invoice_with_discount(self): | ||||
| 		from erpnext.accounts.doctype.pos_closing_entry.test_pos_closing_entry import init_user_and_profile | ||||
| 		from erpnext.accounts.doctype.pos_invoice_merge_log.pos_invoice_merge_log import merge_pos_invoices | ||||
| @ -295,7 +296,7 @@ class TestPOSInvoice(unittest.TestCase): | ||||
| 		test_user, pos_profile = init_user_and_profile() | ||||
| 		pos_inv = create_pos_invoice(rate=300, additional_discount_percentage=10, do_not_submit=1) | ||||
| 		pos_inv.append('payments', { | ||||
| 			'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 300 | ||||
| 			'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 270 | ||||
| 		}) | ||||
| 		pos_inv.submit() | ||||
| 
 | ||||
| @ -309,9 +310,9 @@ class TestPOSInvoice(unittest.TestCase): | ||||
| 
 | ||||
| 		pos_inv.load_from_db() | ||||
| 		rounded_total = frappe.db.get_value("Sales Invoice", pos_inv.consolidated_invoice, "rounded_total") | ||||
| 		self.assertEqual(rounded_total, 3500) | ||||
| 		self.assertEqual(rounded_total, 3470) | ||||
| 		frappe.set_user("Administrator") | ||||
| 	 | ||||
| 
 | ||||
| 	def test_merging_into_sales_invoice_with_discount_and_inclusive_tax(self): | ||||
| 		from erpnext.accounts.doctype.pos_closing_entry.test_pos_closing_entry import init_user_and_profile | ||||
| 		from erpnext.accounts.doctype.pos_invoice_merge_log.pos_invoice_merge_log import merge_pos_invoices | ||||
| @ -361,7 +362,7 @@ class TestPOSInvoice(unittest.TestCase): | ||||
| 		if not frappe.db.get_single_value("Selling Settings", "validate_selling_price"): | ||||
| 			frappe.db.set_value("Selling Settings", "Selling Settings", "validate_selling_price", 1) | ||||
| 
 | ||||
| 		make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=1, basic_rate=300) | ||||
| 		make_purchase_receipt(item_code="_Test Item", warehouse="_Test Warehouse - _TC", qty=1, rate=300) | ||||
| 		frappe.db.sql("delete from `tabPOS Invoice`") | ||||
| 		test_user, pos_profile = init_user_and_profile() | ||||
| 		pos_inv = create_pos_invoice(rate=300, do_not_submit=1) | ||||
| @ -413,8 +414,6 @@ def create_pos_invoice(**args): | ||||
| 	pos_inv.is_pos = 1 | ||||
| 	pos_inv.pos_profile = args.pos_profile or pos_profile.name | ||||
| 
 | ||||
| 	pos_inv.set_missing_values() | ||||
| 
 | ||||
| 	if args.posting_date: | ||||
| 		pos_inv.set_posting_time = 1 | ||||
| 	pos_inv.posting_date = args.posting_date or frappe.utils.nowdate() | ||||
| @ -428,6 +427,8 @@ def create_pos_invoice(**args): | ||||
| 	pos_inv.conversion_rate = args.conversion_rate or 1 | ||||
| 	pos_inv.account_for_change_amount = args.account_for_change_amount or "Cash - _TC" | ||||
| 
 | ||||
| 	pos_inv.set_missing_values() | ||||
| 
 | ||||
| 	pos_inv.append("items", { | ||||
| 		"item_code": args.item or args.item_code or "_Test Item", | ||||
| 		"warehouse": args.warehouse or "_Test Warehouse - _TC", | ||||
|  | ||||
| @ -651,12 +651,12 @@ class TestPurchaseOrder(unittest.TestCase): | ||||
| 		make_subcontracted_item(item_code) | ||||
| 
 | ||||
| 		po = create_purchase_order(item_code=item_code, qty=1, | ||||
| 			is_subcontracted="Yes", supplier_warehouse="_Test Warehouse 1 - _TC") | ||||
| 			is_subcontracted="Yes", supplier_warehouse="_Test Warehouse 1 - _TC", include_exploded_items=1) | ||||
| 
 | ||||
| 		name = frappe.db.get_value('BOM', {'item': item_code}, 'name') | ||||
| 		bom = frappe.get_doc('BOM', name) | ||||
| 
 | ||||
| 		exploded_items = sorted([d.item_code for d in bom.exploded_items]) | ||||
| 		exploded_items = sorted([d.item_code for d in bom.exploded_items if not d.get('sourced_by_supplier')]) | ||||
| 		supplied_items = sorted([d.rm_item_code for d in po.supplied_items]) | ||||
| 		self.assertEquals(exploded_items, supplied_items) | ||||
| 
 | ||||
| @ -664,7 +664,7 @@ class TestPurchaseOrder(unittest.TestCase): | ||||
| 			is_subcontracted="Yes", supplier_warehouse="_Test Warehouse 1 - _TC", include_exploded_items=0) | ||||
| 
 | ||||
| 		supplied_items1 = sorted([d.rm_item_code for d in po1.supplied_items]) | ||||
| 		bom_items = sorted([d.item_code for d in bom.items]) | ||||
| 		bom_items = sorted([d.item_code for d in bom.items if not d.get('sourced_by_supplier')]) | ||||
| 
 | ||||
| 		self.assertEquals(supplied_items1, bom_items) | ||||
| 
 | ||||
|  | ||||
| @ -9,7 +9,7 @@ import frappe | ||||
| from frappe.utils import nowdate | ||||
| from erpnext.stock.doctype.item.test_item import make_item | ||||
| from erpnext.templates.pages.rfq import check_supplier_has_docname_access | ||||
| from erpnext.buying.doctype.request_for_quotation.request_for_quotation import make_supplier_quotation | ||||
| from erpnext.buying.doctype.request_for_quotation.request_for_quotation import make_supplier_quotation_from_rfq | ||||
| from erpnext.buying.doctype.request_for_quotation.request_for_quotation import create_supplier_quotation | ||||
| from erpnext.crm.doctype.opportunity.test_opportunity import make_opportunity | ||||
| from erpnext.crm.doctype.opportunity.opportunity import make_request_for_quotation as make_rfq | ||||
| @ -22,7 +22,7 @@ class TestRequestforQuotation(unittest.TestCase): | ||||
| 		self.assertEqual(rfq.get('suppliers')[1].quote_status, 'Pending') | ||||
| 
 | ||||
| 		# Submit the first supplier quotation | ||||
| 		sq = make_supplier_quotation(rfq.name, rfq.get('suppliers')[0].supplier) | ||||
| 		sq = make_supplier_quotation_from_rfq(rfq.name, for_supplier=rfq.get('suppliers')[0].supplier) | ||||
| 		sq.submit() | ||||
| 
 | ||||
| 		# No Quote first supplier quotation | ||||
| @ -37,10 +37,10 @@ class TestRequestforQuotation(unittest.TestCase): | ||||
| 	def test_make_supplier_quotation(self): | ||||
| 		rfq = make_request_for_quotation() | ||||
| 
 | ||||
| 		sq = make_supplier_quotation(rfq.name, rfq.get('suppliers')[0].supplier) | ||||
| 		sq = make_supplier_quotation_from_rfq(rfq.name, for_supplier=rfq.get('suppliers')[0].supplier) | ||||
| 		sq.submit() | ||||
| 
 | ||||
| 		sq1 = make_supplier_quotation(rfq.name, rfq.get('suppliers')[1].supplier) | ||||
| 		sq1 = make_supplier_quotation_from_rfq(rfq.name, for_supplier=rfq.get('suppliers')[1].supplier) | ||||
| 		sq1.submit() | ||||
| 
 | ||||
| 		self.assertEqual(sq.supplier, rfq.get('suppliers')[0].supplier) | ||||
| @ -62,7 +62,7 @@ class TestRequestforQuotation(unittest.TestCase): | ||||
| 
 | ||||
| 		rfq = make_request_for_quotation(supplier_data=supplier_wt_appos) | ||||
| 
 | ||||
| 		sq = make_supplier_quotation(rfq.name, supplier_wt_appos[0].get("supplier")) | ||||
| 		sq = make_supplier_quotation_from_rfq(rfq.name, for_supplier=supplier_wt_appos[0].get("supplier")) | ||||
| 		sq.submit() | ||||
| 
 | ||||
| 		frappe.form_dict = frappe.local("form_dict") | ||||
|  | ||||
| @ -11,7 +11,7 @@ from erpnext.accounts.party import get_party_account_currency | ||||
| from erpnext.exceptions import InvalidCurrency | ||||
| from erpnext.stock.doctype.material_request.material_request import make_request_for_quotation | ||||
| from erpnext.buying.doctype.request_for_quotation.request_for_quotation import \ | ||||
| 			 make_supplier_quotation as make_quotation_from_rfq | ||||
| 			 make_supplier_quotation_from_rfq | ||||
| 
 | ||||
| def work(): | ||||
| 	frappe.set_user(frappe.db.get_global('demo_purchase_user')) | ||||
| @ -44,7 +44,7 @@ def work(): | ||||
| 				rfq = frappe.get_doc('Request for Quotation', rfq.name) | ||||
| 
 | ||||
| 				for supplier in rfq.suppliers: | ||||
| 					supplier_quotation = make_quotation_from_rfq(rfq.name, supplier.supplier) | ||||
| 					supplier_quotation = make_supplier_quotation_from_rfq(rfq.name, for_supplier=supplier.supplier) | ||||
| 					supplier_quotation.save() | ||||
| 					supplier_quotation.submit() | ||||
| 
 | ||||
|  | ||||
| @ -207,7 +207,6 @@ class TestBOM(unittest.TestCase): | ||||
| 		supplied_items = sorted([d.rm_item_code for d in po.supplied_items]) | ||||
| 		self.assertEquals(bom_items, supplied_items) | ||||
| 
 | ||||
| 
 | ||||
| def get_default_bom(item_code="_Test FG Item 2"): | ||||
| 	return frappe.db.get_value("BOM", {"item": item_code, "is_active": 1, "is_default": 1}) | ||||
| 
 | ||||
|  | ||||
| @ -347,8 +347,7 @@ class TestSalarySlip(unittest.TestCase): | ||||
| 
 | ||||
| 		# create additional salary of 150000 | ||||
| 		frappe.db.sql("""delete from `tabSalary Slip` where employee=%s""", (employee)) | ||||
| 		data["additional-1"] = create_additional_salary(employee, payroll_period, 50000) | ||||
| 		data["additional-2"] = create_additional_salary(employee, payroll_period, 100000) | ||||
| 		data["additional-1"] = create_additional_salary(employee, payroll_period, 150000) | ||||
| 		data["deducted_dates"] = create_salary_slips_for_payroll_period(employee, | ||||
| 			salary_structure.name, payroll_period) | ||||
| 
 | ||||
|  | ||||
| @ -577,8 +577,9 @@ class Item(WebsiteGenerator): | ||||
| 						# if barcode is getting updated , the row name has to reset. | ||||
| 						# Delete previous old row doc and re-enter row as if new to reset name in db. | ||||
| 						item_barcode.set("__islocal", True) | ||||
| 						item_barcode_entry_name = item_barcode.name | ||||
| 						item_barcode.name = None | ||||
| 						frappe.delete_doc("Item Barcode", item_barcode.name) | ||||
| 						frappe.delete_doc("Item Barcode", item_barcode_entry_name) | ||||
| 
 | ||||
| 	def validate_warehouse_for_reorder(self): | ||||
| 		'''Validate Reorder level table for duplicate and conditional mandatory''' | ||||
|  | ||||
| @ -471,7 +471,7 @@ class TestItem(unittest.TestCase): | ||||
| 		item_doc = frappe.get_doc('Item', item_code) | ||||
| 		new_barcode = item_doc.append('barcodes') | ||||
| 		new_barcode.update(barcode_properties_list[0]) | ||||
| 		self.assertRaises(frappe.DuplicateEntryError, item_doc.save) | ||||
| 		self.assertRaises(frappe.UniqueValidationError, item_doc.save) | ||||
| 
 | ||||
| 		# Add invalid barcode - should cause InvalidBarcode | ||||
| 		item_doc = frappe.get_doc('Item', item_code) | ||||
|  | ||||
| @ -180,18 +180,15 @@ class TestPurchaseReceipt(unittest.TestCase): | ||||
| 			is_subcontracted="Yes", supplier_warehouse="_Test Warehouse 1 - _TC") | ||||
| 
 | ||||
| 		#stock raw materials in a warehouse before transfer | ||||
| 		make_stock_entry(target="_Test Warehouse - _TC", | ||||
| 			item_code="_Test Item Home Desktop 100", qty=1, basic_rate=100) | ||||
| 		make_stock_entry(target="_Test Warehouse - _TC", | ||||
| 			item_code = "Test Extra Item 1", qty=1, basic_rate=100) | ||||
| 		make_stock_entry(target="_Test Warehouse - _TC", | ||||
| 			item_code = "_Test Item", qty=1, basic_rate=100) | ||||
| 
 | ||||
| 			item_code = "_Test FG Item", qty=1, basic_rate=100) | ||||
| 		rm_items = [ | ||||
| 			{ | ||||
| 				"item_code": item_code, | ||||
| 				"rm_item_code": po.supplied_items[0].rm_item_code, | ||||
| 				"item_name": "_Test Item", | ||||
| 				"item_name": "_Test FG Item", | ||||
| 				"qty": po.supplied_items[0].required_qty, | ||||
| 				"warehouse": "_Test Warehouse - _TC", | ||||
| 				"stock_uom": "Nos" | ||||
| @ -203,14 +200,6 @@ class TestPurchaseReceipt(unittest.TestCase): | ||||
| 				"qty": po.supplied_items[1].required_qty, | ||||
| 				"warehouse": "_Test Warehouse - _TC", | ||||
| 				"stock_uom": "Nos" | ||||
| 			}, | ||||
| 			{ | ||||
| 				"item_code": item_code, | ||||
| 				"rm_item_code": po.supplied_items[2].rm_item_code, | ||||
| 				"item_name": "_Test Item Home Desktop 100", | ||||
| 				"qty": po.supplied_items[2].required_qty, | ||||
| 				"warehouse": "_Test Warehouse - _TC", | ||||
| 				"stock_uom": "Nos" | ||||
| 			} | ||||
| 		] | ||||
| 		rm_item_string = json.dumps(rm_items) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user