fixed test cases
This commit is contained in:
parent
60aee54c6c
commit
9d8154dd40
@ -5,6 +5,7 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
import frappe.permissions
|
import frappe.permissions
|
||||||
from erpnext.controllers.recurring_document import date_field_map
|
from erpnext.controllers.recurring_document import date_field_map
|
||||||
|
from frappe.utils import getdate
|
||||||
|
|
||||||
def test_recurring_document(obj, test_records):
|
def test_recurring_document(obj, test_records):
|
||||||
from frappe.utils import get_first_day, get_last_day, add_to_date, nowdate, getdate, add_days
|
from frappe.utils import get_first_day, get_last_day, add_to_date, nowdate, getdate, add_days
|
||||||
@ -132,19 +133,14 @@ def _test_recurring_document(obj, base_doc, date_field, first_and_last_day):
|
|||||||
obj.assertEquals(base_doc.get(fieldname),
|
obj.assertEquals(base_doc.get(fieldname),
|
||||||
new_doc.get(fieldname))
|
new_doc.get(fieldname))
|
||||||
|
|
||||||
obj.assertEquals(new_doc.get(date_field), unicode(next_date))
|
obj.assertEquals(new_doc.get(date_field), getdate(next_date))
|
||||||
|
|
||||||
obj.assertEquals(new_doc.from_date,
|
obj.assertEquals(new_doc.from_date, getdate(add_months(base_doc.from_date, no_of_months)))
|
||||||
unicode(add_months(base_doc.from_date, no_of_months)))
|
|
||||||
|
|
||||||
if first_and_last_day:
|
if first_and_last_day:
|
||||||
obj.assertEquals(new_doc.to_date,
|
obj.assertEquals(new_doc.to_date, getdate(get_last_day(add_months(base_doc.to_date, no_of_months))))
|
||||||
unicode(get_last_day(add_months(base_doc.to_date,
|
|
||||||
no_of_months))))
|
|
||||||
else:
|
else:
|
||||||
obj.assertEquals(new_doc.to_date,
|
obj.assertEquals(new_doc.to_date, getdate(add_months(base_doc.to_date, no_of_months)))
|
||||||
unicode(add_months(base_doc.to_date, no_of_months)))
|
|
||||||
|
|
||||||
|
|
||||||
return new_doc
|
return new_doc
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from erpnext.accounts.utils import validate_fiscal_year
|
from erpnext.accounts.utils import validate_fiscal_year
|
||||||
from frappe import _
|
from frappe import _
|
||||||
|
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
|
||||||
class LeaveBlockList(Document):
|
class LeaveBlockList(Document):
|
||||||
|
@ -5,32 +5,33 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
|
from frappe.utils import getdate
|
||||||
from erpnext.hr.doctype.leave_block_list.leave_block_list import get_applicable_block_dates
|
from erpnext.hr.doctype.leave_block_list.leave_block_list import get_applicable_block_dates
|
||||||
|
|
||||||
class TestLeaveBlockList(unittest.TestCase):
|
class TestLeaveBlockList(unittest.TestCase):
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
frappe.set_user("Administrator")
|
frappe.set_user("Administrator")
|
||||||
|
|
||||||
def test_get_applicable_block_dates(self):
|
def test_get_applicable_block_dates(self):
|
||||||
frappe.set_user("test@example.com")
|
frappe.set_user("test@example.com")
|
||||||
frappe.db.set_value("Department", "_Test Department", "leave_block_list",
|
frappe.db.set_value("Department", "_Test Department", "leave_block_list",
|
||||||
"_Test Leave Block List")
|
"_Test Leave Block List")
|
||||||
self.assertTrue("2013-01-02" in
|
self.assertTrue(getdate("2013-01-02") in
|
||||||
[d.block_date for d in get_applicable_block_dates("2013-01-01", "2013-01-03")])
|
[d.block_date for d in get_applicable_block_dates("2013-01-01", "2013-01-03")])
|
||||||
|
|
||||||
def test_get_applicable_block_dates_for_allowed_user(self):
|
def test_get_applicable_block_dates_for_allowed_user(self):
|
||||||
frappe.set_user("test1@example.com")
|
frappe.set_user("test1@example.com")
|
||||||
frappe.db.set_value("Department", "_Test Department 1", "leave_block_list",
|
frappe.db.set_value("Department", "_Test Department 1", "leave_block_list",
|
||||||
"_Test Leave Block List")
|
"_Test Leave Block List")
|
||||||
self.assertEquals([], [d.block_date for d in get_applicable_block_dates("2013-01-01", "2013-01-03")])
|
self.assertEquals([], [d.block_date for d in get_applicable_block_dates("2013-01-01", "2013-01-03")])
|
||||||
|
|
||||||
def test_get_applicable_block_dates_all_lists(self):
|
def test_get_applicable_block_dates_all_lists(self):
|
||||||
frappe.set_user("test1@example.com")
|
frappe.set_user("test1@example.com")
|
||||||
frappe.db.set_value("Department", "_Test Department 1", "leave_block_list",
|
frappe.db.set_value("Department", "_Test Department 1", "leave_block_list",
|
||||||
"_Test Leave Block List")
|
"_Test Leave Block List")
|
||||||
self.assertTrue("2013-01-02" in
|
self.assertTrue(getdate("2013-01-02") in
|
||||||
[d.block_date for d in get_applicable_block_dates("2013-01-01", "2013-01-03", all_lists=True)])
|
[d.block_date for d in get_applicable_block_dates("2013-01-01", "2013-01-03", all_lists=True)])
|
||||||
|
|
||||||
test_dependencies = ["Employee"]
|
test_dependencies = ["Employee"]
|
||||||
|
|
||||||
test_records = frappe.get_test_records('Leave Block List')
|
test_records = frappe.get_test_records('Leave Block List')
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import flt, cint, getdate, formatdate, comma_and, time_diff_in_seconds
|
from frappe.utils import flt, cint, getdate, formatdate, comma_and, time_diff_in_seconds, get_datetime
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from dateutil.parser import parse
|
from dateutil.parser import parse
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ def is_within_operating_hours(workstation, operation, from_datetime, to_datetime
|
|||||||
workstation = frappe.get_doc("Workstation", workstation)
|
workstation = frappe.get_doc("Workstation", workstation)
|
||||||
|
|
||||||
for working_hour in workstation.working_hours:
|
for working_hour in workstation.working_hours:
|
||||||
slot_length = (parse(working_hour.end_time) - parse(working_hour.start_time)).total_seconds()
|
slot_length = (get_datetime(working_hour.end_time) - get_datetime(working_hour.start_time)).total_seconds()
|
||||||
if slot_length >= operation_length:
|
if slot_length >= operation_length:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ def check_workstation_for_holiday(workstation, from_datetime, to_datetime):
|
|||||||
if holiday_list and from_datetime and to_datetime:
|
if holiday_list and from_datetime and to_datetime:
|
||||||
applicable_holidays = []
|
applicable_holidays = []
|
||||||
for d in frappe.db.sql("""select holiday_date from `tabHoliday` where parent = %s
|
for d in frappe.db.sql("""select holiday_date from `tabHoliday` where parent = %s
|
||||||
and holiday_date between %s and %s """,
|
and holiday_date between %s and %s """,
|
||||||
(holiday_list, getdate(from_datetime), getdate(to_datetime))):
|
(holiday_list, getdate(from_datetime), getdate(to_datetime))):
|
||||||
applicable_holidays.append(formatdate(d[0]))
|
applicable_holidays.append(formatdate(d[0]))
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe, unittest
|
import frappe, unittest
|
||||||
import frappe.defaults
|
import frappe.defaults
|
||||||
from frappe.utils import flt, nowdate, nowtime
|
from frappe.utils import flt, nowdate, nowtime, getdate
|
||||||
from erpnext.stock.doctype.serial_no.serial_no import *
|
from erpnext.stock.doctype.serial_no.serial_no import *
|
||||||
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt \
|
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt \
|
||||||
import set_perpetual_inventory, make_purchase_receipt
|
import set_perpetual_inventory, make_purchase_receipt
|
||||||
@ -35,8 +35,8 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
|
frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1)
|
||||||
item_code = "_Test Item 2"
|
item_code = "_Test Item 2"
|
||||||
warehouse = "_Test Warehouse - _TC"
|
warehouse = "_Test Warehouse - _TC"
|
||||||
|
|
||||||
create_stock_reconciliation(item_code="_Test Item 2", warehouse="_Test Warehouse - _TC",
|
create_stock_reconciliation(item_code="_Test Item 2", warehouse="_Test Warehouse - _TC",
|
||||||
qty=0, rate=100)
|
qty=0, rate=100)
|
||||||
|
|
||||||
make_stock_entry(item_code=item_code, target=warehouse, qty=1, incoming_rate=10)
|
make_stock_entry(item_code=item_code, target=warehouse, qty=1, incoming_rate=10)
|
||||||
@ -58,15 +58,15 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
# move stock to positive
|
# move stock to positive
|
||||||
make_stock_entry(item_code=item_code, target=warehouse, qty=3, incoming_rate=20)
|
make_stock_entry(item_code=item_code, target=warehouse, qty=3, incoming_rate=20)
|
||||||
sle = get_sle(item_code = item_code, warehouse = warehouse)[0]
|
sle = get_sle(item_code = item_code, warehouse = warehouse)[0]
|
||||||
self.assertEqual([[1, 20]], eval(sle.stock_queue))
|
self.assertEqual([[1, 20]], eval(sle.stock_queue))
|
||||||
|
|
||||||
# incoming entry with diff rate
|
# incoming entry with diff rate
|
||||||
make_stock_entry(item_code=item_code, target=warehouse, qty=1, incoming_rate=30)
|
make_stock_entry(item_code=item_code, target=warehouse, qty=1, incoming_rate=30)
|
||||||
sle = get_sle(item_code = item_code, warehouse = warehouse)[0]
|
sle = get_sle(item_code = item_code, warehouse = warehouse)[0]
|
||||||
|
|
||||||
self.assertEqual([[1, 20],[1, 30]], eval(sle.stock_queue))
|
self.assertEqual([[1, 20],[1, 30]], eval(sle.stock_queue))
|
||||||
|
|
||||||
frappe.db.set_default("allow_negative_stock", 0)
|
frappe.db.set_default("allow_negative_stock", 0)
|
||||||
|
|
||||||
def test_auto_material_request(self):
|
def test_auto_material_request(self):
|
||||||
self._test_auto_material_request("_Test Item")
|
self._test_auto_material_request("_Test Item")
|
||||||
@ -83,7 +83,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
template = item
|
template = item
|
||||||
|
|
||||||
# stock entry reqd for auto-reorder
|
# stock entry reqd for auto-reorder
|
||||||
create_stock_reconciliation(item_code=item_code, warehouse="_Test Warehouse - _TC",
|
create_stock_reconciliation(item_code=item_code, warehouse="_Test Warehouse - _TC",
|
||||||
qty=10, rate=100)
|
qty=10, rate=100)
|
||||||
|
|
||||||
frappe.db.set_value("Stock Settings", None, "auto_indent", 1)
|
frappe.db.set_value("Stock Settings", None, "auto_indent", 1)
|
||||||
@ -109,8 +109,8 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
def test_material_receipt_gl_entry(self):
|
def test_material_receipt_gl_entry(self):
|
||||||
set_perpetual_inventory()
|
set_perpetual_inventory()
|
||||||
|
|
||||||
mr = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
mr = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
||||||
qty=50, incoming_rate=100)
|
qty=50, incoming_rate=100)
|
||||||
|
|
||||||
stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
|
stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
|
||||||
@ -137,9 +137,9 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
def test_material_issue_gl_entry(self):
|
def test_material_issue_gl_entry(self):
|
||||||
set_perpetual_inventory()
|
set_perpetual_inventory()
|
||||||
|
|
||||||
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
||||||
qty=50, incoming_rate=100)
|
qty=50, incoming_rate=100)
|
||||||
|
|
||||||
mi = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC", qty=40)
|
mi = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC", qty=40)
|
||||||
|
|
||||||
self.check_stock_ledger_entries("Stock Entry", mi.name,
|
self.check_stock_ledger_entries("Stock Entry", mi.name,
|
||||||
@ -147,8 +147,8 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
|
stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
|
||||||
"warehouse": "_Test Warehouse - _TC"})
|
"warehouse": "_Test Warehouse - _TC"})
|
||||||
|
|
||||||
stock_value_diff = abs(frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Stock Entry",
|
stock_value_diff = abs(frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Stock Entry",
|
||||||
"voucher_no": mi.name}, "stock_value_difference"))
|
"voucher_no": mi.name}, "stock_value_difference"))
|
||||||
|
|
||||||
self.check_gl_entries("Stock Entry", mi.name,
|
self.check_gl_entries("Stock Entry", mi.name,
|
||||||
@ -159,7 +159,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
mi.cancel()
|
mi.cancel()
|
||||||
|
|
||||||
self.assertFalse(frappe.db.sql("""select name from `tabStock Ledger Entry`
|
self.assertFalse(frappe.db.sql("""select name from `tabStock Ledger Entry`
|
||||||
where voucher_type='Stock Entry' and voucher_no=%s""", mi.name))
|
where voucher_type='Stock Entry' and voucher_no=%s""", mi.name))
|
||||||
|
|
||||||
@ -168,12 +168,12 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
def test_material_transfer_gl_entry(self):
|
def test_material_transfer_gl_entry(self):
|
||||||
set_perpetual_inventory()
|
set_perpetual_inventory()
|
||||||
|
|
||||||
create_stock_reconciliation(qty=100, rate=100)
|
create_stock_reconciliation(qty=100, rate=100)
|
||||||
|
|
||||||
mtn = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC",
|
mtn = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC",
|
||||||
target="_Test Warehouse 1 - _TC", qty=45)
|
target="_Test Warehouse 1 - _TC", qty=45)
|
||||||
|
|
||||||
self.check_stock_ledger_entries("Stock Entry", mtn.name,
|
self.check_stock_ledger_entries("Stock Entry", mtn.name,
|
||||||
[["_Test Item", "_Test Warehouse - _TC", -45.0], ["_Test Item", "_Test Warehouse 1 - _TC", 45.0]])
|
[["_Test Item", "_Test Warehouse - _TC", -45.0], ["_Test Item", "_Test Warehouse 1 - _TC", 45.0]])
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
fixed_asset_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
|
fixed_asset_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
|
||||||
"warehouse": mtn.get("items")[0].t_warehouse})
|
"warehouse": mtn.get("items")[0].t_warehouse})
|
||||||
|
|
||||||
stock_value_diff = abs(frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Stock Entry",
|
stock_value_diff = abs(frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Stock Entry",
|
||||||
"voucher_no": mtn.name, "warehouse": "_Test Warehouse - _TC"}, "stock_value_difference"))
|
"voucher_no": mtn.name, "warehouse": "_Test Warehouse - _TC"}, "stock_value_difference"))
|
||||||
|
|
||||||
self.check_gl_entries("Stock Entry", mtn.name,
|
self.check_gl_entries("Stock Entry", mtn.name,
|
||||||
@ -192,7 +192,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
[fixed_asset_account, stock_value_diff, 0.0],
|
[fixed_asset_account, stock_value_diff, 0.0],
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
|
|
||||||
mtn.cancel()
|
mtn.cancel()
|
||||||
self.assertFalse(frappe.db.sql("""select * from `tabStock Ledger Entry`
|
self.assertFalse(frappe.db.sql("""select * from `tabStock Ledger Entry`
|
||||||
where voucher_type='Stock Entry' and voucher_no=%s""", mtn.name))
|
where voucher_type='Stock Entry' and voucher_no=%s""", mtn.name))
|
||||||
@ -204,7 +204,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
set_perpetual_inventory(0)
|
set_perpetual_inventory(0)
|
||||||
|
|
||||||
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, incoming_rate=100)
|
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, incoming_rate=100)
|
||||||
make_stock_entry(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
|
make_stock_entry(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
|
||||||
qty=50, incoming_rate=100)
|
qty=50, incoming_rate=100)
|
||||||
|
|
||||||
repack = frappe.copy_doc(test_records[3])
|
repack = frappe.copy_doc(test_records[3])
|
||||||
@ -228,7 +228,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
set_perpetual_inventory()
|
set_perpetual_inventory()
|
||||||
|
|
||||||
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, incoming_rate=100)
|
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, incoming_rate=100)
|
||||||
|
|
||||||
repack = frappe.copy_doc(test_records[3])
|
repack = frappe.copy_doc(test_records[3])
|
||||||
repack.posting_date = nowdate()
|
repack.posting_date = nowdate()
|
||||||
repack.posting_time = nowtime()
|
repack.posting_time = nowtime()
|
||||||
@ -238,13 +238,13 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
|
stock_in_hand_account = frappe.db.get_value("Account", {"account_type": "Warehouse",
|
||||||
"warehouse": repack.get("items")[1].t_warehouse})
|
"warehouse": repack.get("items")[1].t_warehouse})
|
||||||
|
|
||||||
rm_stock_value_diff = abs(frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Stock Entry",
|
rm_stock_value_diff = abs(frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Stock Entry",
|
||||||
"voucher_no": repack.name, "item_code": "_Test Item"}, "stock_value_difference"))
|
"voucher_no": repack.name, "item_code": "_Test Item"}, "stock_value_difference"))
|
||||||
|
|
||||||
fg_stock_value_diff = abs(frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Stock Entry",
|
fg_stock_value_diff = abs(frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Stock Entry",
|
||||||
"voucher_no": repack.name, "item_code": "_Test Item Home Desktop 100"}, "stock_value_difference"))
|
"voucher_no": repack.name, "item_code": "_Test Item Home Desktop 100"}, "stock_value_difference"))
|
||||||
|
|
||||||
stock_value_diff = flt(fg_stock_value_diff - rm_stock_value_diff, 2)
|
stock_value_diff = flt(fg_stock_value_diff - rm_stock_value_diff, 2)
|
||||||
|
|
||||||
self.check_gl_entries("Stock Entry", repack.name,
|
self.check_gl_entries("Stock Entry", repack.name,
|
||||||
@ -277,7 +277,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
gl_entries = frappe.db.sql("""select account, debit, credit
|
gl_entries = frappe.db.sql("""select account, debit, credit
|
||||||
from `tabGL Entry` where voucher_type=%s and voucher_no=%s
|
from `tabGL Entry` where voucher_type=%s and voucher_no=%s
|
||||||
order by account asc, debit asc""", (voucher_type, voucher_no), as_list=1)
|
order by account asc, debit asc""", (voucher_type, voucher_no), as_list=1)
|
||||||
|
|
||||||
self.assertTrue(gl_entries)
|
self.assertTrue(gl_entries)
|
||||||
gl_entries.sort(key=lambda x: x[0])
|
gl_entries.sort(key=lambda x: x[0])
|
||||||
|
|
||||||
@ -291,7 +291,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
si = create_sales_invoice(item_code=item_code, qty=delivered_qty)
|
si = create_sales_invoice(item_code=item_code, qty=delivered_qty)
|
||||||
|
|
||||||
se = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=returned_qty,
|
se = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=returned_qty,
|
||||||
purpose="Sales Return", sales_invoice_no=si.name, do_not_save=True)
|
purpose="Sales Return", sales_invoice_no=si.name, do_not_save=True)
|
||||||
self.assertRaises(NotUpdateStockError, se.insert)
|
self.assertRaises(NotUpdateStockError, se.insert)
|
||||||
|
|
||||||
@ -309,13 +309,13 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
|
self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
|
||||||
|
|
||||||
# check if item is validated
|
# check if item is validated
|
||||||
se = make_stock_entry(item_code="_Test Item Home Desktop 200", target="_Test Warehouse - _TC",
|
se = make_stock_entry(item_code="_Test Item Home Desktop 200", target="_Test Warehouse - _TC",
|
||||||
qty=returned_qty, purpose="Sales Return", sales_invoice_no=si.name, do_not_save=True)
|
qty=returned_qty, purpose="Sales Return", sales_invoice_no=si.name, do_not_save=True)
|
||||||
|
|
||||||
self.assertRaises(frappe.DoesNotExistError, se.insert)
|
self.assertRaises(frappe.DoesNotExistError, se.insert)
|
||||||
|
|
||||||
# try again
|
# try again
|
||||||
se = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
se = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
||||||
qty=returned_qty, purpose="Sales Return", sales_invoice_no=si.name)
|
qty=returned_qty, purpose="Sales Return", sales_invoice_no=si.name)
|
||||||
|
|
||||||
# check if available qty is increased
|
# check if available qty is increased
|
||||||
@ -333,14 +333,14 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
def _test_delivery_note_return(self, item_code, delivered_qty, returned_qty):
|
def _test_delivery_note_return(self, item_code, delivered_qty, returned_qty):
|
||||||
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
|
||||||
|
|
||||||
from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_invoice
|
from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_invoice
|
||||||
|
|
||||||
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, incoming_rate=100)
|
make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, incoming_rate=100)
|
||||||
|
|
||||||
actual_qty_0 = get_qty_after_transaction()
|
actual_qty_0 = get_qty_after_transaction()
|
||||||
# make a delivery note based on this invoice
|
# make a delivery note based on this invoice
|
||||||
dn = create_delivery_note(item_code="_Test Item",
|
dn = create_delivery_note(item_code="_Test Item",
|
||||||
warehouse="_Test Warehouse - _TC", qty=delivered_qty)
|
warehouse="_Test Warehouse - _TC", qty=delivered_qty)
|
||||||
|
|
||||||
actual_qty_1 = get_qty_after_transaction()
|
actual_qty_1 = get_qty_after_transaction()
|
||||||
@ -352,7 +352,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
si.submit()
|
si.submit()
|
||||||
|
|
||||||
# insert and submit stock entry for sales return
|
# insert and submit stock entry for sales return
|
||||||
se = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
se = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
||||||
qty=returned_qty, purpose="Sales Return", delivery_note_no=dn.name)
|
qty=returned_qty, purpose="Sales Return", delivery_note_no=dn.name)
|
||||||
|
|
||||||
actual_qty_2 = get_qty_after_transaction()
|
actual_qty_2 = get_qty_after_transaction()
|
||||||
@ -371,7 +371,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertEqual(len(jv.get("accounts")), 2)
|
self.assertEqual(len(jv.get("accounts")), 2)
|
||||||
self.assertEqual(jv.get("voucher_type"), "Credit Note")
|
self.assertEqual(jv.get("voucher_type"), "Credit Note")
|
||||||
self.assertEqual(jv.get("posting_date"), se.posting_date)
|
self.assertEqual(jv.get("posting_date"), getdate(se.posting_date))
|
||||||
self.assertEqual(jv.get("accounts")[0].get("account"), "Debtors - _TC")
|
self.assertEqual(jv.get("accounts")[0].get("account"), "Debtors - _TC")
|
||||||
self.assertEqual(jv.get("accounts")[0].get("party_type"), "Customer")
|
self.assertEqual(jv.get("accounts")[0].get("party_type"), "Customer")
|
||||||
self.assertEqual(jv.get("accounts")[0].get("party"), "_Test Customer")
|
self.assertEqual(jv.get("accounts")[0].get("party"), "_Test Customer")
|
||||||
@ -402,13 +402,13 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
def _test_delivery_note_return_against_sales_order(self, item_code, delivered_qty, returned_qty):
|
def _test_delivery_note_return_against_sales_order(self, item_code, delivered_qty, returned_qty):
|
||||||
from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
|
from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
|
||||||
|
|
||||||
actual_qty_0 = get_qty_after_transaction()
|
actual_qty_0 = get_qty_after_transaction()
|
||||||
|
|
||||||
so = make_sales_order(qty=50)
|
so = make_sales_order(qty=50)
|
||||||
|
|
||||||
dn = create_dn_against_so(so.name, delivered_qty)
|
dn = create_dn_against_so(so.name, delivered_qty)
|
||||||
|
|
||||||
actual_qty_1 = get_qty_after_transaction()
|
actual_qty_1 = get_qty_after_transaction()
|
||||||
self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
|
self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)
|
||||||
|
|
||||||
@ -417,7 +417,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
si.submit()
|
si.submit()
|
||||||
|
|
||||||
# insert and submit stock entry for sales return
|
# insert and submit stock entry for sales return
|
||||||
se = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
se = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC",
|
||||||
qty=returned_qty, purpose="Sales Return", delivery_note_no=dn.name)
|
qty=returned_qty, purpose="Sales Return", delivery_note_no=dn.name)
|
||||||
|
|
||||||
actual_qty_2 = get_qty_after_transaction()
|
actual_qty_2 = get_qty_after_transaction()
|
||||||
@ -451,7 +451,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
pi.submit()
|
pi.submit()
|
||||||
|
|
||||||
# submit purchase return
|
# submit purchase return
|
||||||
se = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC",
|
se = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC",
|
||||||
qty=5, purpose="Purchase Return", purchase_receipt_no=pr.name)
|
qty=5, purpose="Purchase Return", purchase_receipt_no=pr.name)
|
||||||
|
|
||||||
actual_qty_2 = get_qty_after_transaction()
|
actual_qty_2 = get_qty_after_transaction()
|
||||||
@ -466,9 +466,9 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
# out of 10, 5 gets returned
|
# out of 10, 5 gets returned
|
||||||
prev_se, pr_docname = self.test_purchase_receipt_return()
|
prev_se, pr_docname = self.test_purchase_receipt_return()
|
||||||
|
|
||||||
se = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC",
|
se = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC",
|
||||||
qty=6, purpose="Purchase Return", purchase_receipt_no=pr_docname, do_not_save=True)
|
qty=6, purpose="Purchase Return", purchase_receipt_no=pr_docname, do_not_save=True)
|
||||||
|
|
||||||
self.assertRaises(StockOverReturnError, se.insert)
|
self.assertRaises(StockOverReturnError, se.insert)
|
||||||
|
|
||||||
def _test_purchase_return_jv(self, se):
|
def _test_purchase_return_jv(self, se):
|
||||||
@ -476,7 +476,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertEqual(len(jv.get("accounts")), 2)
|
self.assertEqual(len(jv.get("accounts")), 2)
|
||||||
self.assertEqual(jv.get("voucher_type"), "Debit Note")
|
self.assertEqual(jv.get("voucher_type"), "Debit Note")
|
||||||
self.assertEqual(jv.get("posting_date"), se.posting_date)
|
self.assertEqual(jv.get("posting_date"), getdate(se.posting_date))
|
||||||
self.assertEqual(jv.get("accounts")[0].get("account"), "_Test Payable - _TC")
|
self.assertEqual(jv.get("accounts")[0].get("account"), "_Test Payable - _TC")
|
||||||
self.assertEqual(jv.get("accounts")[0].get("party"), "_Test Supplier")
|
self.assertEqual(jv.get("accounts")[0].get("party"), "_Test Supplier")
|
||||||
self.assertEqual(jv.get("accounts")[1].get("account"), "_Test Account Cost for Goods Sold - _TC")
|
self.assertEqual(jv.get("accounts")[1].get("account"), "_Test Account Cost for Goods Sold - _TC")
|
||||||
@ -536,7 +536,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
pi.submit()
|
pi.submit()
|
||||||
|
|
||||||
# submit purchase return
|
# submit purchase return
|
||||||
se = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC",
|
se = make_stock_entry(item_code="_Test Item", source="_Test Warehouse - _TC",
|
||||||
qty=5, purpose="Purchase Return", purchase_receipt_no=pr.name)
|
qty=5, purpose="Purchase Return", purchase_receipt_no=pr.name)
|
||||||
|
|
||||||
actual_qty_2 = get_qty_after_transaction()
|
actual_qty_2 = get_qty_after_transaction()
|
||||||
@ -780,11 +780,11 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
for d in stock_entry.get("items"):
|
for d in stock_entry.get("items"):
|
||||||
if d.s_warehouse:
|
if d.s_warehouse:
|
||||||
rm_cost += flt(d.amount)
|
rm_cost += flt(d.amount)
|
||||||
|
|
||||||
fg_cost = filter(lambda x: x.item_code=="_Test FG Item 2", stock_entry.get("items"))[0].amount
|
fg_cost = filter(lambda x: x.item_code=="_Test FG Item 2", stock_entry.get("items"))[0].amount
|
||||||
|
|
||||||
self.assertEqual(fg_cost, rm_cost + bom_operation_cost + stock_entry.additional_operating_cost)
|
self.assertEqual(fg_cost, rm_cost + bom_operation_cost + stock_entry.additional_operating_cost)
|
||||||
|
|
||||||
|
|
||||||
def test_variant_production_order(self):
|
def test_variant_production_order(self):
|
||||||
bom_no = frappe.db.get_value("BOM", {"item": "_Test Variant Item",
|
bom_no = frappe.db.get_value("BOM", {"item": "_Test Variant Item",
|
||||||
@ -825,14 +825,14 @@ def make_serialized_item(item_code=None, serial_no=None, target_warehouse=None):
|
|||||||
|
|
||||||
def make_stock_entry(**args):
|
def make_stock_entry(**args):
|
||||||
from erpnext.accounts.utils import get_fiscal_year
|
from erpnext.accounts.utils import get_fiscal_year
|
||||||
|
|
||||||
s = frappe.new_doc("Stock Entry")
|
s = frappe.new_doc("Stock Entry")
|
||||||
args = frappe._dict(args)
|
args = frappe._dict(args)
|
||||||
if args.posting_date:
|
if args.posting_date:
|
||||||
s.posting_date = args.posting_date
|
s.posting_date = args.posting_date
|
||||||
if args.posting_time:
|
if args.posting_time:
|
||||||
s.posting_time = args.posting_time
|
s.posting_time = args.posting_time
|
||||||
|
|
||||||
if not args.purpose:
|
if not args.purpose:
|
||||||
if args.source and args.target:
|
if args.source and args.target:
|
||||||
s.purpose = "Material Transfer"
|
s.purpose = "Material Transfer"
|
||||||
@ -842,14 +842,14 @@ def make_stock_entry(**args):
|
|||||||
s.purpose = "Material Receipt"
|
s.purpose = "Material Receipt"
|
||||||
else:
|
else:
|
||||||
s.purpose = args.purpose
|
s.purpose = args.purpose
|
||||||
|
|
||||||
s.company = args.company or "_Test Company"
|
s.company = args.company or "_Test Company"
|
||||||
s.fiscal_year = get_fiscal_year(s.posting_date)[0]
|
s.fiscal_year = get_fiscal_year(s.posting_date)[0]
|
||||||
s.purchase_receipt_no = args.purchase_receipt_no
|
s.purchase_receipt_no = args.purchase_receipt_no
|
||||||
s.delivery_note_no = args.delivery_note_no
|
s.delivery_note_no = args.delivery_note_no
|
||||||
s.sales_invoice_no = args.sales_invoice_no
|
s.sales_invoice_no = args.sales_invoice_no
|
||||||
s.difference_account = args.difference_account or "Stock Adjustment - _TC"
|
s.difference_account = args.difference_account or "Stock Adjustment - _TC"
|
||||||
|
|
||||||
s.append("items", {
|
s.append("items", {
|
||||||
"item_code": args.item or args.item_code or "_Test Item",
|
"item_code": args.item or args.item_code or "_Test Item",
|
||||||
"s_warehouse": args.from_warehouse or args.source,
|
"s_warehouse": args.from_warehouse or args.source,
|
||||||
@ -860,23 +860,23 @@ def make_stock_entry(**args):
|
|||||||
"conversion_factor": 1.0,
|
"conversion_factor": 1.0,
|
||||||
"cost_center": "_Test Cost Center - _TC"
|
"cost_center": "_Test Cost Center - _TC"
|
||||||
})
|
})
|
||||||
|
|
||||||
if not args.do_not_save:
|
if not args.do_not_save:
|
||||||
s.insert()
|
s.insert()
|
||||||
if not args.do_not_submit:
|
if not args.do_not_submit:
|
||||||
s.submit()
|
s.submit()
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def get_qty_after_transaction(**args):
|
def get_qty_after_transaction(**args):
|
||||||
args = frappe._dict(args)
|
args = frappe._dict(args)
|
||||||
|
|
||||||
last_sle = get_previous_sle({
|
last_sle = get_previous_sle({
|
||||||
"item_code": args.item_code or "_Test Item",
|
"item_code": args.item_code or "_Test Item",
|
||||||
"warehouse": args.warehouse or "_Test Warehouse - _TC",
|
"warehouse": args.warehouse or "_Test Warehouse - _TC",
|
||||||
"posting_date": args.posting_date or nowdate(),
|
"posting_date": args.posting_date or nowdate(),
|
||||||
"posting_time": args.posting_time or nowtime()
|
"posting_time": args.posting_time or nowtime()
|
||||||
})
|
})
|
||||||
|
|
||||||
return flt(last_sle.get("qty_after_transaction"))
|
return flt(last_sle.get("qty_after_transaction"))
|
||||||
|
|
||||||
test_records = frappe.get_test_records('Stock Entry')
|
test_records = frappe.get_test_records('Stock Entry')
|
||||||
|
Loading…
Reference in New Issue
Block a user