diff --git a/erpnext/shopping_cart/__init__.py b/erpnext/shopping_cart/__init__.py index 656918b188..8660003cb8 100644 --- a/erpnext/shopping_cart/__init__.py +++ b/erpnext/shopping_cart/__init__.py @@ -9,6 +9,7 @@ from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings # TODO # validate stock of each item in Website Warehouse or have a list of possible warehouses in Shopping Cart Settings +# Below functions are used for test cases def get_quotation(user=None): if not user: @@ -22,7 +23,8 @@ def get_quotation(user=None): "order_type": "Shopping Cart", party.doctype.lower(): party.name, "docstatus": 0, - "contact_email": user + "contact_email": user, + "selling_price_list": "_Test Price List Rest of the World" } try: @@ -60,35 +62,11 @@ def set_item_in_cart(item_code, qty, user=None): quotation.save(ignore_permissions=True) return quotation -def set_address_in_cart(address_fieldname, address, user=None): - quotation = get_quotation(user=user) - validate_address(quotation, address_fieldname, address) - - if quotation.get(address_fieldname) != address: - quotation.set(address_fieldname, address) - if address_fieldname=="customer_address": - quotation.set("address_display", None) - else: - quotation.set("shipping_address", None) - - quotation.save(ignore_permissions=True) - - return quotation - def validate_item(item_code): item = frappe.db.get_value("Item", item_code, ["item_name", "show_in_website"], as_dict=True) if not item.show_in_website: frappe.throw(_("{0} cannot be purchased using Shopping Cart").format(item.item_name)) -def validate_address(quotation, address_fieldname, address): - party = get_party(quotation.contact_email) - address_doc = frappe.get_doc(address) - if address_doc.get(party.doctype.lower()) != party.name: - if address_fieldname=="customer_address": - frappe.throw(_("Invalid Billing Address")) - else: - frappe.throw(_("Invalid Shipping Address")) - def get_party(user): def _get_party(user): customer = frappe.db.get_value("Contact", {"email_id": user}, "customer") @@ -122,5 +100,4 @@ def guess_territory(): territory = None if frappe.session.get("session_country"): territory = frappe.db.get_value("Territory", frappe.session.get("session_country")) - return territory or get_default_territory() diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py index e39a54c070..692f27dde0 100644 --- a/erpnext/shopping_cart/cart.py +++ b/erpnext/shopping_cart/cart.py @@ -222,7 +222,6 @@ def apply_cart_settings(party=None, quotation=None): quotation = _get_cart_quotation(party) cart_settings = frappe.get_doc("Shopping Cart Settings") - billing_territory = get_address_territory(quotation.customer_address) or \ party.territory or get_root_of("Territory") @@ -237,7 +236,6 @@ def apply_cart_settings(party=None, quotation=None): def set_price_list_and_rate(quotation, cart_settings, billing_territory): """set price list based on billing territory""" quotation.selling_price_list = cart_settings.get_price_list(billing_territory) - # reset values quotation.price_list_currency = quotation.currency = \ quotation.plc_conversion_rate = quotation.conversion_rate = None @@ -359,76 +357,3 @@ def get_address_territory(address_name): break return territory - -import unittest -test_dependencies = ["Item", "Price List", "Contact", "Shopping Cart Settings"] - -class TestCart(unittest.TestCase): - def tearDown(self): - return - - cart_settings = frappe.get_doc("Shopping Cart Settings") - cart_settings.ignore_permissions = True - cart_settings.enabled = 0 - cart_settings.save() - - def enable_shopping_cart(self): - return - if not frappe.db.get_value("Shopping Cart Settings", None, "enabled"): - cart_settings = frappe.get_doc("Shopping Cart Settings") - cart_settings.ignore_permissions = True - cart_settings.enabled = 1 - cart_settings.save() - - def test_get_lead_or_customer(self): - frappe.session.user = "test@example.com" - party1 = get_lead_or_customer() - party2 = get_lead_or_customer() - self.assertEquals(party1.name, party2.name) - self.assertEquals(party1.doctype, "Lead") - - frappe.session.user = "test_contact_customer@example.com" - party = get_lead_or_customer() - self.assertEquals(party.name, "_Test Customer") - - def test_add_to_cart(self): - self.enable_shopping_cart() - frappe.session.user = "test@example.com" - - update_cart("_Test Item", 1) - - quotation = _get_cart_quotation() - quotation_items = quotation.get("quotation_details", {"item_code": "_Test Item"}) - self.assertTrue(quotation_items) - self.assertEquals(quotation_items[0].qty, 1) - - return quotation - - def test_update_cart(self): - self.test_add_to_cart() - - update_cart("_Test Item", 5) - - quotation = _get_cart_quotation() - quotation_items = quotation.get("quotation_details", {"item_code": "_Test Item"}) - self.assertTrue(quotation_items) - self.assertEquals(quotation_items[0].qty, 5) - - return quotation - - def test_remove_from_cart(self): - quotation0 = self.test_add_to_cart() - - update_cart("_Test Item", 0) - - quotation = _get_cart_quotation() - self.assertEquals(quotation0.name, quotation.name) - - quotation_items = quotation.get("quotation_details", {"item_code": "_Test Item"}) - self.assertEquals(quotation_items, []) - - def test_place_order(self): - quotation = self.test_update_cart() - sales_order_name = place_order() - sales_order = frappe.get_doc("Sales Order", sales_order_name) - self.assertEquals(sales_order.getone({"item_code": "_Test Item"}).prevdoc_docname, quotation.name) diff --git a/erpnext/utilities/repost_stock.py b/erpnext/utilities/repost_stock.py index 3a58d2b0a2..5f1864703f 100644 --- a/erpnext/utilities/repost_stock.py +++ b/erpnext/utilities/repost_stock.py @@ -179,6 +179,8 @@ def set_stock_balance_as_per_serial_no(item_code=None, posting_date=None, postin } sle_doc = frappe.get_doc(sle_dict) + sle_doc.ignore_validate = True + sle_doc.ignore_links = True sle_doc.insert() args = sle_dict.copy()