[test] fixes
This commit is contained in:
parent
c4d4c7feb0
commit
c9bacedbfe
@ -181,99 +181,99 @@ class TestDeliveryNote(unittest.TestCase):
|
|||||||
serial_no = frappe.get_doc("Serial No", serial_no)
|
serial_no = frappe.get_doc("Serial No", serial_no)
|
||||||
for field, value in field_values.items():
|
for field, value in field_values.items():
|
||||||
self.assertEquals(cstr(serial_no.get(field)), value)
|
self.assertEquals(cstr(serial_no.get(field)), value)
|
||||||
|
|
||||||
def test_sales_return_for_non_bundled_items(self):
|
def test_sales_return_for_non_bundled_items(self):
|
||||||
set_perpetual_inventory()
|
set_perpetual_inventory()
|
||||||
|
|
||||||
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, basic_rate=100)
|
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, basic_rate=100)
|
||||||
|
|
||||||
actual_qty_0 = get_qty_after_transaction()
|
actual_qty_0 = get_qty_after_transaction()
|
||||||
|
|
||||||
dn = create_delivery_note(qty=5, rate=500)
|
dn = create_delivery_note(qty=5, rate=500)
|
||||||
|
|
||||||
actual_qty_1 = get_qty_after_transaction()
|
actual_qty_1 = get_qty_after_transaction()
|
||||||
self.assertEquals(actual_qty_0 - 5, actual_qty_1)
|
self.assertEquals(actual_qty_0 - 5, actual_qty_1)
|
||||||
|
|
||||||
# outgoing_rate
|
# outgoing_rate
|
||||||
outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
|
outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
|
||||||
"voucher_no": dn.name}, "stock_value_difference") / 5
|
"voucher_no": dn.name}, "stock_value_difference") / 5
|
||||||
|
|
||||||
# return entry
|
# return entry
|
||||||
dn1 = create_delivery_note(is_return=1, return_against=dn.name, qty=-2, rate=500)
|
dn1 = create_delivery_note(is_return=1, return_against=dn.name, qty=-2, rate=500)
|
||||||
|
|
||||||
actual_qty_2 = get_qty_after_transaction()
|
actual_qty_2 = get_qty_after_transaction()
|
||||||
|
|
||||||
self.assertEquals(actual_qty_1 + 2, actual_qty_2)
|
self.assertEquals(actual_qty_1 + 2, actual_qty_2)
|
||||||
|
|
||||||
incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
|
incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
|
||||||
{"voucher_type": "Delivery Note", "voucher_no": dn1.name},
|
{"voucher_type": "Delivery Note", "voucher_no": dn1.name},
|
||||||
["incoming_rate", "stock_value_difference"])
|
["incoming_rate", "stock_value_difference"])
|
||||||
|
|
||||||
self.assertEquals(flt(incoming_rate, 3), abs(flt(outgoing_rate, 3)))
|
self.assertEquals(flt(incoming_rate, 3), abs(flt(outgoing_rate, 3)))
|
||||||
|
|
||||||
gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note",
|
gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note",
|
||||||
"voucher_no": dn1.name, "account": "_Test Warehouse - _TC"}, "debit")
|
"voucher_no": dn1.name, "account": "_Test Warehouse - _TC"}, "debit")
|
||||||
|
|
||||||
self.assertEquals(gle_warehouse_amount, stock_value_difference)
|
self.assertEquals(gle_warehouse_amount, stock_value_difference)
|
||||||
|
|
||||||
set_perpetual_inventory(0)
|
set_perpetual_inventory(0)
|
||||||
|
|
||||||
def test_return_single_item_from_bundled_items(self):
|
def test_return_single_item_from_bundled_items(self):
|
||||||
set_perpetual_inventory()
|
set_perpetual_inventory()
|
||||||
|
|
||||||
create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, rate=100)
|
create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, rate=100)
|
||||||
create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
|
create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
|
||||||
qty=50, rate=100)
|
qty=50, rate=100)
|
||||||
|
|
||||||
dn = create_delivery_note(item_code="_Test Product Bundle Item", qty=5, rate=500)
|
dn = create_delivery_note(item_code="_Test Product Bundle Item", qty=5, rate=500)
|
||||||
|
|
||||||
# Qty after delivery
|
# Qty after delivery
|
||||||
actual_qty_1 = get_qty_after_transaction()
|
actual_qty_1 = get_qty_after_transaction()
|
||||||
self.assertEquals(actual_qty_1, 25)
|
self.assertEquals(actual_qty_1, 25)
|
||||||
|
|
||||||
# outgoing_rate
|
# outgoing_rate
|
||||||
outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
|
outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
|
||||||
"voucher_no": dn.name, "item_code": "_Test Item"}, "stock_value_difference") / 25
|
"voucher_no": dn.name, "item_code": "_Test Item"}, "stock_value_difference") / 25
|
||||||
|
|
||||||
# return 'test item' from packed items
|
# return 'test item' from packed items
|
||||||
dn1 = create_delivery_note(is_return=1, return_against=dn.name, qty=-10, rate=500)
|
dn1 = create_delivery_note(is_return=1, return_against=dn.name, qty=-10, rate=500)
|
||||||
|
|
||||||
# qty after return
|
# qty after return
|
||||||
actual_qty_2 = get_qty_after_transaction()
|
actual_qty_2 = get_qty_after_transaction()
|
||||||
self.assertEquals(actual_qty_2, 35)
|
self.assertEquals(actual_qty_2, 35)
|
||||||
|
|
||||||
# Check incoming rate for return entry
|
# Check incoming rate for return entry
|
||||||
incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
|
incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
|
||||||
{"voucher_type": "Delivery Note", "voucher_no": dn1.name},
|
{"voucher_type": "Delivery Note", "voucher_no": dn1.name},
|
||||||
["incoming_rate", "stock_value_difference"])
|
["incoming_rate", "stock_value_difference"])
|
||||||
|
|
||||||
self.assertEquals(flt(incoming_rate, 3), abs(flt(outgoing_rate, 3)))
|
self.assertEquals(flt(incoming_rate, 3), abs(flt(outgoing_rate, 3)))
|
||||||
|
|
||||||
# Check gl entry for warehouse
|
# Check gl entry for warehouse
|
||||||
gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note",
|
gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note",
|
||||||
"voucher_no": dn1.name, "account": "_Test Warehouse - _TC"}, "debit")
|
"voucher_no": dn1.name, "account": "_Test Warehouse - _TC"}, "debit")
|
||||||
|
|
||||||
self.assertEquals(gle_warehouse_amount, stock_value_difference)
|
self.assertEquals(gle_warehouse_amount, stock_value_difference)
|
||||||
|
|
||||||
set_perpetual_inventory(0)
|
set_perpetual_inventory(0)
|
||||||
|
|
||||||
def test_return_entire_bundled_items(self):
|
def test_return_entire_bundled_items(self):
|
||||||
set_perpetual_inventory()
|
set_perpetual_inventory()
|
||||||
|
|
||||||
create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, rate=100)
|
create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, rate=100)
|
||||||
create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
|
create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
|
||||||
qty=50, rate=100)
|
qty=50, rate=100)
|
||||||
|
|
||||||
dn = create_delivery_note(item_code="_Test Product Bundle Item", qty=5, rate=500)
|
dn = create_delivery_note(item_code="_Test Product Bundle Item", qty=5, rate=500)
|
||||||
|
|
||||||
# return bundled item
|
# return bundled item
|
||||||
dn1 = create_delivery_note(item_code='_Test Product Bundle Item', is_return=1,
|
dn1 = create_delivery_note(item_code='_Test Product Bundle Item', is_return=1,
|
||||||
return_against=dn.name, qty=-2, rate=500)
|
return_against=dn.name, qty=-2, rate=500)
|
||||||
|
|
||||||
# qty after return
|
# qty after return
|
||||||
actual_qty = get_qty_after_transaction()
|
actual_qty = get_qty_after_transaction()
|
||||||
self.assertEquals(actual_qty, 35)
|
self.assertEquals(actual_qty, 35)
|
||||||
|
|
||||||
# Check incoming rate for return entry
|
# Check incoming rate for return entry
|
||||||
incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
|
incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
|
||||||
{"voucher_type": "Delivery Note", "voucher_no": dn1.name},
|
{"voucher_type": "Delivery Note", "voucher_no": dn1.name},
|
||||||
@ -284,11 +284,11 @@ class TestDeliveryNote(unittest.TestCase):
|
|||||||
# Check gl entry for warehouse
|
# Check gl entry for warehouse
|
||||||
gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note",
|
gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note",
|
||||||
"voucher_no": dn1.name, "account": "_Test Warehouse - _TC"}, "debit")
|
"voucher_no": dn1.name, "account": "_Test Warehouse - _TC"}, "debit")
|
||||||
|
|
||||||
self.assertEquals(gle_warehouse_amount, 1400)
|
self.assertEquals(gle_warehouse_amount, 1400)
|
||||||
|
|
||||||
set_perpetual_inventory(0)
|
set_perpetual_inventory(0)
|
||||||
|
|
||||||
def test_return_for_serialized_items(self):
|
def test_return_for_serialized_items(self):
|
||||||
se = make_serialized_item()
|
se = make_serialized_item()
|
||||||
serial_no = get_serial_nos(se.get("items")[0].serial_no)[0]
|
serial_no = get_serial_nos(se.get("items")[0].serial_no)[0]
|
||||||
@ -301,65 +301,68 @@ class TestDeliveryNote(unittest.TestCase):
|
|||||||
})
|
})
|
||||||
|
|
||||||
# return entry
|
# return entry
|
||||||
dn1 = create_delivery_note(item_code="_Test Serialized Item With Series",
|
dn1 = create_delivery_note(item_code="_Test Serialized Item With Series",
|
||||||
is_return=1, return_against=dn.name, qty=-1, rate=500, serial_no=serial_no)
|
is_return=1, return_against=dn.name, qty=-1, rate=500, serial_no=serial_no)
|
||||||
|
|
||||||
self.check_serial_no_values(serial_no, {
|
self.check_serial_no_values(serial_no, {
|
||||||
"warehouse": "_Test Warehouse - _TC",
|
"warehouse": "_Test Warehouse - _TC",
|
||||||
"delivery_document_no": ""
|
"delivery_document_no": ""
|
||||||
})
|
})
|
||||||
|
|
||||||
dn1.cancel()
|
dn1.cancel()
|
||||||
|
|
||||||
self.check_serial_no_values(serial_no, {
|
self.check_serial_no_values(serial_no, {
|
||||||
"warehouse": "",
|
"warehouse": "",
|
||||||
"delivery_document_no": dn.name
|
"delivery_document_no": dn.name
|
||||||
})
|
})
|
||||||
|
|
||||||
dn.cancel()
|
dn.cancel()
|
||||||
|
|
||||||
self.check_serial_no_values(serial_no, {
|
self.check_serial_no_values(serial_no, {
|
||||||
"warehouse": "_Test Warehouse - _TC",
|
"warehouse": "_Test Warehouse - _TC",
|
||||||
"delivery_document_no": "",
|
"delivery_document_no": "",
|
||||||
"purchase_document_no": se.name
|
"purchase_document_no": se.name
|
||||||
})
|
})
|
||||||
|
|
||||||
def test_delivery_of_bundled_items_to_target_warehouse(self):
|
def test_delivery_of_bundled_items_to_target_warehouse(self):
|
||||||
set_perpetual_inventory()
|
set_perpetual_inventory()
|
||||||
|
|
||||||
create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, rate=100)
|
create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC",
|
||||||
create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
|
|
||||||
qty=50, rate=100)
|
qty=50, rate=100)
|
||||||
|
create_stock_reconciliation(item_code="_Test Item Home Desktop 100",
|
||||||
|
target="_Test Warehouse - _TC",
|
||||||
|
qty=50, rate=100)
|
||||||
|
|
||||||
opening_qty_test_warehouse_1 = get_qty_after_transaction(warehouse="_Test Warehouse 1 - _TC")
|
opening_qty_test_warehouse_1 = get_qty_after_transaction(warehouse="_Test Warehouse 1 - _TC")
|
||||||
|
|
||||||
dn = create_delivery_note(item_code="_Test Product Bundle Item",
|
dn = create_delivery_note(item_code="_Test Product Bundle Item",
|
||||||
qty=5, rate=500, target_warehouse="_Test Warehouse 1 - _TC")
|
qty=5, rate=500, target_warehouse="_Test Warehouse 1 - _TC")
|
||||||
|
|
||||||
# qty after delivery
|
# qty after delivery
|
||||||
actual_qty = get_qty_after_transaction(warehouse="_Test Warehouse - _TC")
|
actual_qty = get_qty_after_transaction(warehouse="_Test Warehouse - _TC")
|
||||||
self.assertEquals(actual_qty, 25)
|
self.assertEquals(actual_qty, 25)
|
||||||
|
|
||||||
actual_qty = get_qty_after_transaction(warehouse="_Test Warehouse 1 - _TC")
|
actual_qty = get_qty_after_transaction(warehouse="_Test Warehouse 1 - _TC")
|
||||||
self.assertEquals(actual_qty, opening_qty_test_warehouse_1 + 25)
|
self.assertEquals(actual_qty, opening_qty_test_warehouse_1 + 25)
|
||||||
|
|
||||||
# stock value diff for source warehouse
|
# stock value diff for source warehouse
|
||||||
stock_value_difference = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
|
stock_value_difference = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
|
||||||
"voucher_no": dn.name, "item_code": "_Test Item", "warehouse": "_Test Warehouse - _TC"},
|
"voucher_no": dn.name, "item_code": "_Test Item", "warehouse": "_Test Warehouse - _TC"},
|
||||||
"stock_value_difference")
|
"stock_value_difference")
|
||||||
|
|
||||||
# stock value diff for target warehouse
|
# stock value diff for target warehouse
|
||||||
stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
|
stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
|
||||||
"voucher_no": dn.name, "item_code": "_Test Item", "warehouse": "_Test Warehouse 1 - _TC"},
|
"voucher_no": dn.name, "item_code": "_Test Item", "warehouse": "_Test Warehouse 1 - _TC"},
|
||||||
"stock_value_difference")
|
"stock_value_difference")
|
||||||
|
|
||||||
self.assertEquals(abs(stock_value_difference), stock_value_difference1)
|
self.assertEquals(abs(stock_value_difference), stock_value_difference1)
|
||||||
|
|
||||||
# Check gl entries
|
# Check gl entries
|
||||||
gl_entries = get_gl_entries("Delivery Note", dn.name)
|
gl_entries = get_gl_entries("Delivery Note", dn.name)
|
||||||
self.assertTrue(gl_entries)
|
self.assertTrue(gl_entries)
|
||||||
|
|
||||||
stock_value_difference = abs(frappe.db.sql("""select sum(stock_value_difference)
|
stock_value_difference = abs(frappe.db.sql("""select sum(stock_value_difference)
|
||||||
from `tabStock Ledger Entry` where voucher_type='Delivery Note' and voucher_no=%s
|
from `tabStock Ledger Entry` where voucher_type='Delivery Note' and voucher_no=%s
|
||||||
and warehouse='_Test Warehouse - _TC'""", dn.name)[0][0])
|
and warehouse='_Test Warehouse - _TC'""", dn.name)[0][0])
|
||||||
|
|
||||||
expected_values = {
|
expected_values = {
|
||||||
@ -368,9 +371,9 @@ class TestDeliveryNote(unittest.TestCase):
|
|||||||
}
|
}
|
||||||
for i, gle in enumerate(gl_entries):
|
for i, gle in enumerate(gl_entries):
|
||||||
self.assertEquals([gle.debit, gle.credit], expected_values.get(gle.account))
|
self.assertEquals([gle.debit, gle.credit], expected_values.get(gle.account))
|
||||||
|
|
||||||
set_perpetual_inventory(0)
|
set_perpetual_inventory(0)
|
||||||
|
|
||||||
def create_delivery_note(**args):
|
def create_delivery_note(**args):
|
||||||
dn = frappe.new_doc("Delivery Note")
|
dn = frappe.new_doc("Delivery Note")
|
||||||
args = frappe._dict(args)
|
args = frappe._dict(args)
|
||||||
|
|||||||
@ -10,6 +10,7 @@ from frappe.utils import flt, nowdate, nowtime
|
|||||||
from erpnext.accounts.utils import get_fiscal_year, get_stock_and_account_difference
|
from erpnext.accounts.utils import get_fiscal_year, get_stock_and_account_difference
|
||||||
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
|
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
|
||||||
from erpnext.stock.stock_ledger import get_previous_sle, update_entries_after
|
from erpnext.stock.stock_ledger import get_previous_sle, update_entries_after
|
||||||
|
from erpnext.stock.doctype.stock_reconciliation.stock_reconciliation import EmptyStockReconciliationItemsError
|
||||||
|
|
||||||
class TestStockReconciliation(unittest.TestCase):
|
class TestStockReconciliation(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@ -107,7 +108,10 @@ def create_stock_reconciliation(**args):
|
|||||||
"valuation_rate": args.rate
|
"valuation_rate": args.rate
|
||||||
})
|
})
|
||||||
|
|
||||||
sr.submit()
|
try:
|
||||||
|
sr.submit()
|
||||||
|
except EmptyStockReconciliationItemsError:
|
||||||
|
pass
|
||||||
return sr
|
return sr
|
||||||
|
|
||||||
def repost_stock_as_per_valuation_method(valuation_method):
|
def repost_stock_as_per_valuation_method(valuation_method):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user