fix: internal transfer GLE validation

This commit is contained in:
Ankush Menat 2022-06-07 14:49:24 +05:30 committed by Ankush Menat
parent b29edb302c
commit 65b21ee7d6
3 changed files with 34 additions and 1 deletions

View File

@ -166,7 +166,7 @@ class StockController(AccountsController):
"against": warehouse_account[sle.warehouse]["account"], "against": warehouse_account[sle.warehouse]["account"],
"cost_center": item_row.cost_center, "cost_center": item_row.cost_center,
"remarks": self.get("remarks") or _("Accounting Entry for Stock"), "remarks": self.get("remarks") or _("Accounting Entry for Stock"),
"credit": flt(sle.stock_value_difference, precision), "debit": -1 * flt(sle.stock_value_difference, precision),
"project": item_row.get("project") or self.get("project"), "project": item_row.get("project") or self.get("project"),
"is_opening": item_row.get("is_opening") or self.get("is_opening") or "No", "is_opening": item_row.get("is_opening") or self.get("is_opening") or "No",
}, },

View File

@ -375,6 +375,12 @@ def create_internal_customer(
if not allowed_to_interact_with: if not allowed_to_interact_with:
allowed_to_interact_with = represents_company allowed_to_interact_with = represents_company
exisiting_representative = frappe.db.get_value(
"Customer", {"represents_company": represents_company}
)
if exisiting_representative:
return exisiting_representative
if not frappe.db.exists("Customer", customer_name): if not frappe.db.exists("Customer", customer_name):
customer = frappe.get_doc( customer = frappe.get_doc(
{ {

View File

@ -1064,6 +1064,33 @@ class TestDeliveryNote(FrappeTestCase):
self.assertEqual(dn.items[0].rate, rate) self.assertEqual(dn.items[0].rate, rate)
def test_internal_transfer_precision_gle(self):
from erpnext.selling.doctype.customer.test_customer import create_internal_customer
item = make_item(properties={"valuation_method": "Moving Average"}).name
company = "_Test Company with perpetual inventory"
warehouse = "Stores - TCP1"
target = "Finished Goods - TCP1"
customer = create_internal_customer(represents_company=company)
# average rate = 128.015
rates = [101.45, 150.46, 138.25, 121.9]
for rate in rates:
make_stock_entry(item_code=item, target=warehouse, qty=1, rate=rate)
dn = create_delivery_note(
item_code=item,
company=company,
customer=customer,
qty=4,
warehouse=warehouse,
target_warehouse=target,
)
self.assertFalse(
frappe.db.exists("GL Entry", {"voucher_no": dn.name, "voucher_type": dn.doctype})
)
def create_delivery_note(**args): def create_delivery_note(**args):
dn = frappe.new_doc("Delivery Note") dn = frappe.new_doc("Delivery Note")