mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 08:54:45 +00:00
Merge pull request #16418 from nabinhait/stock_transfer_inter_company
Fix: Inter company stock transfer for serialised items
This commit is contained in:
@@ -302,6 +302,9 @@ def has_duplicate_serial_no(sn, sle):
|
|||||||
if sn.warehouse:
|
if sn.warehouse:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
if sn.company != sle.company:
|
||||||
|
return False
|
||||||
|
|
||||||
status = False
|
status = False
|
||||||
if sn.purchase_document_no:
|
if sn.purchase_document_no:
|
||||||
if sle.voucher_type in ['Purchase Receipt', 'Stock Entry', "Purchase Invoice"] and \
|
if sle.voucher_type in ['Purchase Receipt', 'Stock Entry', "Purchase Invoice"] and \
|
||||||
@@ -357,6 +360,7 @@ def auto_make_serial_nos(args):
|
|||||||
sr.warehouse = args.get('warehouse') if args.get('actual_qty', 0) > 0 else None
|
sr.warehouse = args.get('warehouse') if args.get('actual_qty', 0) > 0 else None
|
||||||
sr.batch_no = args.get('batch_no')
|
sr.batch_no = args.get('batch_no')
|
||||||
sr.location = args.get('location')
|
sr.location = args.get('location')
|
||||||
|
sr.company = args.get('company')
|
||||||
if sr.sales_order and args.get('voucher_type') == "Stock Entry" \
|
if sr.sales_order and args.get('voucher_type') == "Stock Entry" \
|
||||||
and not args.get('actual_qty', 0) > 0:
|
and not args.get('actual_qty', 0) > 0:
|
||||||
sr.sales_order = None
|
sr.sales_order = None
|
||||||
|
|||||||
@@ -7,6 +7,12 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe, unittest
|
import frappe, unittest
|
||||||
|
|
||||||
|
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
|
||||||
|
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
|
||||||
|
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
||||||
|
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
||||||
|
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
|
||||||
|
|
||||||
test_dependencies = ["Item"]
|
test_dependencies = ["Item"]
|
||||||
test_records = frappe.get_test_records('Serial No')
|
test_records = frappe.get_test_records('Serial No')
|
||||||
|
|
||||||
@@ -29,3 +35,21 @@ class TestSerialNo(unittest.TestCase):
|
|||||||
|
|
||||||
sr.warehouse = "_Test Warehouse - _TC"
|
sr.warehouse = "_Test Warehouse - _TC"
|
||||||
self.assertTrue(SerialNoCannotCannotChangeError, sr.save)
|
self.assertTrue(SerialNoCannotCannotChangeError, sr.save)
|
||||||
|
|
||||||
|
def test_inter_company_transfer(self):
|
||||||
|
se = make_serialized_item(target_warehouse="_Test Warehouse - _TC")
|
||||||
|
serial_nos = get_serial_nos(se.get("items")[0].serial_no)
|
||||||
|
|
||||||
|
create_delivery_note(item_code="_Test Serialized Item With Series", qty=1, serial_no=serial_nos[0])
|
||||||
|
|
||||||
|
wh = create_warehouse("_Test Warehouse", company="_Test Company 1")
|
||||||
|
make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=1, serial_no=serial_nos[0],
|
||||||
|
company="_Test Company 1", warehouse=wh)
|
||||||
|
|
||||||
|
serial_no = frappe.db.get_value("Serial No", serial_nos[0], ["warehouse", "company"], as_dict=1)
|
||||||
|
|
||||||
|
self.assertEqual(serial_no.warehouse, wh)
|
||||||
|
self.assertEqual(serial_no.company, "_Test Company 1")
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
frappe.db.rollback()
|
||||||
@@ -8,6 +8,7 @@ from erpnext import set_perpetual_inventory
|
|||||||
from frappe.test_runner import make_test_records
|
from frappe.test_runner import make_test_records
|
||||||
from erpnext.accounts.doctype.account.test_account import get_inventory_account, create_account
|
from erpnext.accounts.doctype.account.test_account import get_inventory_account, create_account
|
||||||
|
|
||||||
|
import erpnext
|
||||||
import frappe
|
import frappe
|
||||||
import unittest
|
import unittest
|
||||||
test_records = frappe.get_test_records('Warehouse')
|
test_records = frappe.get_test_records('Warehouse')
|
||||||
@@ -90,17 +91,24 @@ class TestWarehouse(unittest.TestCase):
|
|||||||
self.assertTrue(frappe.db.get_value("Warehouse",
|
self.assertTrue(frappe.db.get_value("Warehouse",
|
||||||
filters={"account": "Test Warehouse for Merging 2 - _TC"}))
|
filters={"account": "Test Warehouse for Merging 2 - _TC"}))
|
||||||
|
|
||||||
def create_warehouse(warehouse_name, properties=None):
|
def create_warehouse(warehouse_name, properties=None, company=None):
|
||||||
if not frappe.db.exists("Warehouse", warehouse_name + " - _TC"):
|
if not company:
|
||||||
|
company = "_Test Company"
|
||||||
|
|
||||||
|
warehouse_id = erpnext.encode_company_abbr(warehouse_name, company)
|
||||||
|
if not frappe.db.exists("Warehouse", warehouse_id):
|
||||||
w = frappe.new_doc("Warehouse")
|
w = frappe.new_doc("Warehouse")
|
||||||
w.warehouse_name = warehouse_name
|
w.warehouse_name = warehouse_name
|
||||||
w.parent_warehouse = "_Test Warehouse Group - _TC"
|
w.parent_warehouse = "_Test Warehouse Group - _TC"
|
||||||
w.company = "_Test Company"
|
w.company = company
|
||||||
make_account_for_warehouse(warehouse_name, w)
|
make_account_for_warehouse(warehouse_name, w)
|
||||||
w.account = warehouse_name + " - _TC"
|
w.account = warehouse_id
|
||||||
if properties:
|
if properties:
|
||||||
w.update(properties)
|
w.update(properties)
|
||||||
w.save()
|
w.save()
|
||||||
|
return w.name
|
||||||
|
else:
|
||||||
|
return warehouse_id
|
||||||
|
|
||||||
def make_account_for_warehouse(warehouse_name, warehouse_obj):
|
def make_account_for_warehouse(warehouse_name, warehouse_obj):
|
||||||
if not frappe.db.exists("Account", warehouse_name + " - _TC"):
|
if not frappe.db.exists("Account", warehouse_name + " - _TC"):
|
||||||
|
|||||||
Reference in New Issue
Block a user