fix: incorrect Gross Margin on project (#44461)

(cherry picked from commit 7de9c14a2c)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.py
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
This commit is contained in:
rohitwaghchaure
2024-12-02 14:22:41 +05:30
committed by Mergify
parent ba19e06e64
commit 5533592b2b
2 changed files with 54 additions and 0 deletions

View File

@@ -1556,8 +1556,17 @@ class SalesInvoice(SellingController):
)
def update_project(self):
<<<<<<< HEAD
if self.project:
project = frappe.get_doc("Project", self.project)
=======
unique_projects = list(set([d.project for d in self.get("items") if d.project]))
if self.project and self.project not in unique_projects:
unique_projects.append(self.project)
for p in unique_projects:
project = frappe.get_doc("Project", p)
>>>>>>> 7de9c14a2c (fix: incorrect Gross Margin on project (#44461))
project.update_billed_amount()
project.db_update()

View File

@@ -3843,6 +3843,7 @@ class TestSalesInvoice(FrappeTestCase):
self.assertEqual(jv[0], si.grand_total)
<<<<<<< HEAD
def check_gl_entries(doc, voucher_no, expected_gle, posting_date):
gl_entries = frappe.db.sql(
"""select account, debit, credit, posting_date
@@ -3852,6 +3853,50 @@ def check_gl_entries(doc, voucher_no, expected_gle, posting_date):
order by posting_date asc, account asc""",
(voucher_no, posting_date),
as_dict=1,
=======
def test_gl_voucher_subtype(self):
si = create_sales_invoice()
gl_entries = frappe.get_all(
"GL Entry",
filters={"voucher_type": "Sales Invoice", "voucher_no": si.name},
pluck="voucher_subtype",
)
self.assertTrue(all([x == "Sales Invoice" for x in gl_entries]))
si = create_sales_invoice(is_return=1, qty=-1)
gl_entries = frappe.get_all(
"GL Entry",
filters={"voucher_type": "Sales Invoice", "voucher_no": si.name},
pluck="voucher_subtype",
)
self.assertTrue(all([x == "Credit Note" for x in gl_entries]))
def test_total_billed_amount(self):
si = create_sales_invoice(do_not_submit=True)
project = frappe.new_doc("Project")
project.project_name = "Test Total Billed Amount"
project.save()
si.project = project.name
si.save()
si.submit()
doc = frappe.get_doc("Project", project.name)
self.assertEqual(doc.total_billed_amount, si.grand_total)
def set_advance_flag(company, flag, default_account):
frappe.db.set_value(
"Company",
company,
{
"book_advance_payments_in_separate_party_account": flag,
"default_advance_received_account": default_account,
},
>>>>>>> 7de9c14a2c (fix: incorrect Gross Margin on project (#44461))
)
for i, gle in enumerate(gl_entries):