mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-04 04:39:11 +00:00
test: added test cases
This commit is contained in:
@@ -528,32 +528,6 @@ class PurchaseInvoice(BuyingController):
|
|||||||
self.update_advance_tax_references()
|
self.update_advance_tax_references()
|
||||||
|
|
||||||
self.process_common_party_accounting()
|
self.process_common_party_accounting()
|
||||||
self.adjust_incoming_rate_of_purchase_receipt()
|
|
||||||
|
|
||||||
def adjust_incoming_rate_of_purchase_receipt(self):
|
|
||||||
if (
|
|
||||||
not frappe.db.get_single_value(
|
|
||||||
"Buying Settings", "adjust_incoming_rate_based_on_purchase_invoice_rate"
|
|
||||||
)
|
|
||||||
and self.is_subcontracted
|
|
||||||
):
|
|
||||||
return
|
|
||||||
|
|
||||||
purchase_receipts = []
|
|
||||||
for item in self.items:
|
|
||||||
if item.purchase_receipt and item.purchase_receipt not in purchase_receipts:
|
|
||||||
purchase_receipts.append(item.purchase_receipt)
|
|
||||||
|
|
||||||
for purchase_receipt in purchase_receipts:
|
|
||||||
doc = frappe.get_doc("Purchase Receipt", purchase_receipt)
|
|
||||||
doc.docstatus = 2
|
|
||||||
doc.update_stock_ledger(allow_negative_stock=True, via_landed_cost_voucher=True)
|
|
||||||
doc.make_gl_entries_on_cancel()
|
|
||||||
|
|
||||||
doc.docstatus = 1
|
|
||||||
doc.update_stock_ledger(allow_negative_stock=True, via_landed_cost_voucher=True)
|
|
||||||
doc.make_gl_entries()
|
|
||||||
doc.repost_future_sle_and_gle()
|
|
||||||
|
|
||||||
def make_gl_entries(self, gl_entries=None, from_repost=False):
|
def make_gl_entries(self, gl_entries=None, from_repost=False):
|
||||||
if not gl_entries:
|
if not gl_entries:
|
||||||
@@ -1449,7 +1423,6 @@ class PurchaseInvoice(BuyingController):
|
|||||||
"Tax Withheld Vouchers",
|
"Tax Withheld Vouchers",
|
||||||
)
|
)
|
||||||
self.update_advance_tax_references(cancel=1)
|
self.update_advance_tax_references(cancel=1)
|
||||||
self.adjust_incoming_rate_of_purchase_receipt()
|
|
||||||
|
|
||||||
def update_project(self):
|
def update_project(self):
|
||||||
project_list = []
|
project_list = []
|
||||||
|
|||||||
@@ -1523,6 +1523,94 @@ class TestPurchaseInvoice(unittest.TestCase, StockTestMixin):
|
|||||||
company.enable_provisional_accounting_for_non_stock_items = 0
|
company.enable_provisional_accounting_for_non_stock_items = 0
|
||||||
company.save()
|
company.save()
|
||||||
|
|
||||||
|
def test_adjust_incoming_rate(self):
|
||||||
|
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 0)
|
||||||
|
|
||||||
|
frappe.db.set_single_value(
|
||||||
|
"Buying Settings", "adjust_incoming_rate_based_on_purchase_invoice_rate", 1
|
||||||
|
)
|
||||||
|
|
||||||
|
# Increase the cost of the item
|
||||||
|
|
||||||
|
pr = make_purchase_receipt(qty=1, rate=100)
|
||||||
|
|
||||||
|
stock_value_difference = frappe.db.get_value(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name},
|
||||||
|
"stock_value_difference",
|
||||||
|
)
|
||||||
|
self.assertEqual(stock_value_difference, 100)
|
||||||
|
|
||||||
|
pi = create_purchase_invoice_from_receipt(pr.name)
|
||||||
|
for row in pi.items:
|
||||||
|
row.rate = 150
|
||||||
|
|
||||||
|
pi.save()
|
||||||
|
pi.submit()
|
||||||
|
|
||||||
|
stock_value_difference = frappe.db.get_value(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name},
|
||||||
|
"stock_value_difference",
|
||||||
|
)
|
||||||
|
self.assertEqual(stock_value_difference, 150)
|
||||||
|
|
||||||
|
# Reduce the cost of the item
|
||||||
|
|
||||||
|
pr = make_purchase_receipt(qty=1, rate=100)
|
||||||
|
|
||||||
|
stock_value_difference = frappe.db.get_value(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name},
|
||||||
|
"stock_value_difference",
|
||||||
|
)
|
||||||
|
self.assertEqual(stock_value_difference, 100)
|
||||||
|
|
||||||
|
pi = create_purchase_invoice_from_receipt(pr.name)
|
||||||
|
for row in pi.items:
|
||||||
|
row.rate = 50
|
||||||
|
|
||||||
|
pi.save()
|
||||||
|
pi.submit()
|
||||||
|
|
||||||
|
stock_value_difference = frappe.db.get_value(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name},
|
||||||
|
"stock_value_difference",
|
||||||
|
)
|
||||||
|
self.assertEqual(stock_value_difference, 50)
|
||||||
|
|
||||||
|
frappe.db.set_single_value(
|
||||||
|
"Buying Settings", "adjust_incoming_rate_based_on_purchase_invoice_rate", 0
|
||||||
|
)
|
||||||
|
|
||||||
|
# Don't adjust incoming rate
|
||||||
|
|
||||||
|
pr = make_purchase_receipt(qty=1, rate=100)
|
||||||
|
|
||||||
|
stock_value_difference = frappe.db.get_value(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name},
|
||||||
|
"stock_value_difference",
|
||||||
|
)
|
||||||
|
self.assertEqual(stock_value_difference, 100)
|
||||||
|
|
||||||
|
pi = create_purchase_invoice_from_receipt(pr.name)
|
||||||
|
for row in pi.items:
|
||||||
|
row.rate = 50
|
||||||
|
|
||||||
|
pi.save()
|
||||||
|
pi.submit()
|
||||||
|
|
||||||
|
stock_value_difference = frappe.db.get_value(
|
||||||
|
"Stock Ledger Entry",
|
||||||
|
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name},
|
||||||
|
"stock_value_difference",
|
||||||
|
)
|
||||||
|
self.assertEqual(stock_value_difference, 100)
|
||||||
|
|
||||||
|
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1)
|
||||||
|
|
||||||
def test_item_less_defaults(self):
|
def test_item_less_defaults(self):
|
||||||
|
|
||||||
pi = frappe.new_doc("Purchase Invoice")
|
pi = frappe.new_doc("Purchase Invoice")
|
||||||
|
|||||||
@@ -21,3 +21,10 @@ class BuyingSettings(Document):
|
|||||||
self.get("supp_master_name") == "Naming Series",
|
self.get("supp_master_name") == "Naming Series",
|
||||||
hide_name_field=False,
|
hide_name_field=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def before_save(self):
|
||||||
|
self.check_maintain_same_rate()
|
||||||
|
|
||||||
|
def check_maintain_same_rate(self):
|
||||||
|
if self.maintain_same_rate:
|
||||||
|
self.adjust_incoming_rate_based_on_purchase_invoice_rate = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user