fix: COGS account in purchase receipt

(cherry picked from commit 2a14f255cf)

# Conflicts:
#	erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
This commit is contained in:
Rohit Waghchaure
2021-07-30 12:36:35 +05:30
committed by mergify-bot
parent 18dddfdea9
commit e9d1cbb339
5 changed files with 51 additions and 6 deletions

View File

@@ -19,6 +19,7 @@ from erpnext.stock.get_item_details import get_item_details
class TestPricingRule(unittest.TestCase):
def setUp(self):
delete_existing_pricing_rules()
setup_pricing_rule_data()
def tearDown(self):
delete_existing_pricing_rules()
@@ -561,6 +562,8 @@ class TestPricingRule(unittest.TestCase):
for doc in [si, si1]:
doc.delete()
test_dependencies = ["Campaign"]
def make_pricing_rule(**args):
args = frappe._dict(args)
@@ -607,6 +610,13 @@ def make_pricing_rule(**args):
if args.get(applicable_for):
doc.db_set(applicable_for, args.get(applicable_for))
def setup_pricing_rule_data():
if not frappe.db.exists('Campaign', '_Test Campaign'):
frappe.get_doc({
'doctype': 'Campaign',
'campaign_name': '_Test Campaign',
'name': '_Test Campaign'
}).insert()
def delete_existing_pricing_rules():
for doctype in ["Pricing Rule", "Pricing Rule Item Code",

View File

@@ -579,10 +579,10 @@ def remove_ref_doc_link_from_pe(ref_type, ref_no):
frappe.msgprint(_("Payment Entries {0} are un-linked").format("\n".join(linked_pe)))
@frappe.whitelist()
def get_company_default(company, fieldname):
value = frappe.get_cached_value('Company', company, fieldname)
def get_company_default(company, fieldname, ignore_validation=False):
value = frappe.get_cached_value('Company', company, fieldname)
if not value:
if not ignore_validation and not value:
throw(_("Please set default {0} in Company {1}")
.format(frappe.get_meta("Company").get_label(fieldname), company))

View File

@@ -1075,9 +1075,9 @@ class AccountsController(TransactionBase):
frappe.throw(_("Cannot overbill for Item {0} in row {1} more than {2}. To allow over-billing, please set allowance in Accounts Settings")
.format(item.item_code, item.idx, max_allowed_amt))
def get_company_default(self, fieldname):
def get_company_default(self, fieldname, ignore_validation=False):
from erpnext.accounts.utils import get_company_default
return get_company_default(self.company, fieldname)
return get_company_default(self.company, fieldname, ignore_validation=ignore_validation)
def get_stock_items(self):
stock_items = []

View File

@@ -362,7 +362,7 @@ class PurchaseReceipt(BuyingController):
if self.is_return or flt(d.item_tax_amount):
loss_account = expenses_included_in_valuation
else:
loss_account = self.get_company_default("default_expense_account")
loss_account = self.get_company_default("default_expense_account", ignore_validation=True) or stock_rbnb
cost_center = d.cost_center or frappe.get_cached_value("Company", self.company, "cost_center")

View File

@@ -332,7 +332,25 @@ class TestPurchaseReceipt(ERPNextTestCase):
pr1.submit()
self.assertRaises(frappe.ValidationError, pr2.submit)
<<<<<<< HEAD
frappe.db.rollback()
=======
pr1.cancel()
se.cancel()
se1.cancel()
se2.cancel()
se3.cancel()
po.reload()
pr2.load_from_db()
if pr2.docstatus == 1 and frappe.db.get_value('Stock Ledger Entry',
{'voucher_no': pr2.name, 'is_cancelled': 0}, 'name'):
pr2.cancel()
po.load_from_db()
po.cancel()
>>>>>>> 2a14f255cf (fix: COGS account in purchase receipt)
def test_serial_no_supplier(self):
pr = make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=1)
@@ -1055,6 +1073,7 @@ class TestPurchaseReceipt(ERPNextTestCase):
frappe.db.set_value('Company', company, 'enable_perpetual_inventory_for_non_stock_items', before_test_value)
<<<<<<< HEAD
def test_payment_terms_are_fetched_when_creating_purchase_invoice(self):
from erpnext.accounts.doctype.payment_entry.test_payment_entry import (
create_payment_terms_template,
@@ -1070,6 +1089,22 @@ class TestPurchaseReceipt(ERPNextTestCase):
)
automatically_fetch_payment_terms()
=======
def test_purchase_receipt_with_exchange_rate_difference(self):
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice as create_purchase_invoice
from erpnext.accounts.doctype.purchase_invoice.purchase_invoice import make_purchase_receipt as create_purchase_receipt
pi = create_purchase_invoice(company="_Test Company with perpetual inventory",
cost_center = "Main - TCP1",
warehouse = "Stores - TCP1",
expense_account ="_Test Account Cost for Goods Sold - TCP1",
currency = "USD", conversion_rate = 70)
pr = create_purchase_receipt(pi.name)
pr.conversion_rate = 80
pr.items[0].purchase_invoice = pi.name
pr.items[0].purchase_invoice_item = pi.items[0].name
>>>>>>> 2a14f255cf (fix: COGS account in purchase receipt)
po = create_purchase_order(qty=10, rate=100, do_not_save=1)
create_payment_terms_template()