Merge pull request #23120 from deepeshgarg007/sle_cancel
fix: Reverse SLE not created for fraction qty or qty less than 1
This commit is contained in:
commit
554e2c2eb7
@ -18,6 +18,28 @@ class TestPurchaseReceipt(unittest.TestCase):
|
|||||||
set_perpetual_inventory(0)
|
set_perpetual_inventory(0)
|
||||||
frappe.db.set_value("Buying Settings", None, "allow_multiple_items", 1)
|
frappe.db.set_value("Buying Settings", None, "allow_multiple_items", 1)
|
||||||
|
|
||||||
|
def test_reverse_purchase_receipt_sle(self):
|
||||||
|
|
||||||
|
frappe.db.set_value('UOM', '_Test UOM', 'must_be_whole_number', 0)
|
||||||
|
|
||||||
|
pr = make_purchase_receipt(qty=0.5)
|
||||||
|
|
||||||
|
sl_entry = frappe.db.get_all("Stock Ledger Entry", {"voucher_type": "Purchase Receipt",
|
||||||
|
"voucher_no": pr.name}, ['actual_qty'])
|
||||||
|
|
||||||
|
self.assertEqual(len(sl_entry), 1)
|
||||||
|
self.assertEqual(sl_entry[0].actual_qty, 0.5)
|
||||||
|
|
||||||
|
pr.cancel()
|
||||||
|
|
||||||
|
sl_entry_cancelled = frappe.db.get_all("Stock Ledger Entry", {"voucher_type": "Purchase Receipt",
|
||||||
|
"voucher_no": pr.name}, ['actual_qty'], order_by='creation')
|
||||||
|
|
||||||
|
self.assertEqual(len(sl_entry_cancelled), 2)
|
||||||
|
self.assertEqual(sl_entry_cancelled[1].actual_qty, -0.5)
|
||||||
|
|
||||||
|
frappe.db.set_value('UOM', '_Test UOM', 'must_be_whole_number', 1)
|
||||||
|
|
||||||
def test_make_purchase_invoice(self):
|
def test_make_purchase_invoice(self):
|
||||||
pr = make_purchase_receipt(do_not_save=True)
|
pr = make_purchase_receipt(do_not_save=True)
|
||||||
self.assertRaises(frappe.ValidationError, make_purchase_invoice, pr.name)
|
self.assertRaises(frappe.ValidationError, make_purchase_invoice, pr.name)
|
||||||
|
@ -31,7 +31,7 @@ def make_sl_entries(sl_entries, allow_negative_stock=False, via_landed_cost_vouc
|
|||||||
sle['posting_time'] = now_datetime().strftime('%H:%M:%S.%f')
|
sle['posting_time'] = now_datetime().strftime('%H:%M:%S.%f')
|
||||||
|
|
||||||
if cancel:
|
if cancel:
|
||||||
sle['actual_qty'] = -flt(sle.get('actual_qty'), 0)
|
sle['actual_qty'] = -flt(sle.get('actual_qty'))
|
||||||
|
|
||||||
if sle['actual_qty'] < 0 and not sle.get('outgoing_rate'):
|
if sle['actual_qty'] < 0 and not sle.get('outgoing_rate'):
|
||||||
sle['outgoing_rate'] = get_incoming_outgoing_rate_for_cancel(sle.item_code,
|
sle['outgoing_rate'] = get_incoming_outgoing_rate_for_cancel(sle.item_code,
|
||||||
|
Loading…
Reference in New Issue
Block a user