mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 08:54:45 +00:00
test: validate negative stock with multiple inventory dimensions
(cherry picked from commit 1e2c56874f)
# Conflicts:
# erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py
This commit is contained in:
@@ -3,7 +3,11 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.custom.doctype.custom_field.custom_field import create_custom_field
|
from frappe.custom.doctype.custom_field.custom_field import create_custom_field
|
||||||
|
<<<<<<< HEAD
|
||||||
from frappe.tests.utils import FrappeTestCase
|
from frappe.tests.utils import FrappeTestCase
|
||||||
|
=======
|
||||||
|
from frappe.tests import IntegrationTestCase, change_settings
|
||||||
|
>>>>>>> 1e2c56874f (test: validate negative stock with multiple inventory dimensions)
|
||||||
from frappe.utils import nowdate, nowtime
|
from frappe.utils import nowdate, nowtime
|
||||||
|
|
||||||
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
||||||
@@ -504,6 +508,57 @@ class TestInventoryDimension(FrappeTestCase):
|
|||||||
|
|
||||||
self.assertEqual(site_name, "Site 1")
|
self.assertEqual(site_name, "Site 1")
|
||||||
|
|
||||||
|
@change_settings("Stock Settings", {"allow_negative_stock": 0})
|
||||||
|
def test_validate_negative_stock_with_multiple_dimension(self):
|
||||||
|
item_code = "Test Negative Multi Inventory Dimension Item"
|
||||||
|
create_item(item_code)
|
||||||
|
|
||||||
|
create_inventory_dimension(
|
||||||
|
apply_to_all_doctypes=1,
|
||||||
|
dimension_name="Inv Site",
|
||||||
|
reference_document="Inv Site",
|
||||||
|
document_type="Inv Site",
|
||||||
|
validate_negative_stock=1,
|
||||||
|
)
|
||||||
|
|
||||||
|
create_inventory_dimension(
|
||||||
|
apply_to_all_doctypes=1,
|
||||||
|
dimension_name="Rack",
|
||||||
|
reference_document="Rack",
|
||||||
|
document_type="Rack",
|
||||||
|
validate_negative_stock=1,
|
||||||
|
)
|
||||||
|
|
||||||
|
pr_doc = make_purchase_receipt(qty=30, do_not_submit=True)
|
||||||
|
pr_doc.items[0].inv_site = "Site 1"
|
||||||
|
pr_doc.items[0].rack = "Rack 1"
|
||||||
|
pr_doc.save()
|
||||||
|
pr_doc.submit()
|
||||||
|
|
||||||
|
pr_doc = make_purchase_receipt(qty=15, do_not_submit=True)
|
||||||
|
pr_doc.items[0].inv_site = "Site 1"
|
||||||
|
pr_doc.items[0].rack = "Rack 2"
|
||||||
|
pr_doc.save()
|
||||||
|
pr_doc.submit()
|
||||||
|
|
||||||
|
pr_doc = make_purchase_receipt(qty=30, do_not_submit=True)
|
||||||
|
pr_doc.items[0].inv_site = "Site 2"
|
||||||
|
pr_doc.items[0].rack = "Rack 1"
|
||||||
|
pr_doc.save()
|
||||||
|
pr_doc.submit()
|
||||||
|
|
||||||
|
pr_doc = make_purchase_receipt(qty=25, do_not_submit=True)
|
||||||
|
pr_doc.items[0].inv_site = "Site 2"
|
||||||
|
pr_doc.items[0].rack = "Rack 2"
|
||||||
|
pr_doc.save()
|
||||||
|
pr_doc.submit()
|
||||||
|
|
||||||
|
dn_doc = create_delivery_note(qty=35, do_not_submit=True)
|
||||||
|
dn_doc.items[0].inv_site = "Site 2"
|
||||||
|
dn_doc.items[0].rack = "Rack 1"
|
||||||
|
dn_doc.save()
|
||||||
|
self.assertRaises(InventoryDimensionNegativeStockError, dn_doc.submit)
|
||||||
|
|
||||||
|
|
||||||
def get_voucher_sl_entries(voucher_no, fields):
|
def get_voucher_sl_entries(voucher_no, fields):
|
||||||
return frappe.get_all(
|
return frappe.get_all(
|
||||||
@@ -593,7 +648,7 @@ def prepare_test_data():
|
|||||||
}
|
}
|
||||||
).insert(ignore_permissions=True)
|
).insert(ignore_permissions=True)
|
||||||
|
|
||||||
for rack in ["Rack 1"]:
|
for rack in ["Rack 1", "Rack 2"]:
|
||||||
if not frappe.db.exists("Rack", rack):
|
if not frappe.db.exists("Rack", rack):
|
||||||
frappe.get_doc({"doctype": "Rack", "rack_name": rack}).insert(ignore_permissions=True)
|
frappe.get_doc({"doctype": "Rack", "rack_name": rack}).insert(ignore_permissions=True)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user