mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-14 04:15:10 +00:00
fix: incorrectly billed amount in the purchase receipt
(cherry picked from commit a5271fdb2e)
This commit is contained in:
committed by
Mergify
parent
7409c140d4
commit
c247cf888b
@@ -1048,15 +1048,19 @@ def get_billed_amount_against_po(po_items):
|
|||||||
if not po_items:
|
if not po_items:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
purchase_invoice = frappe.qb.DocType("Purchase Invoice")
|
||||||
purchase_invoice_item = frappe.qb.DocType("Purchase Invoice Item")
|
purchase_invoice_item = frappe.qb.DocType("Purchase Invoice Item")
|
||||||
|
|
||||||
query = (
|
query = (
|
||||||
frappe.qb.from_(purchase_invoice_item)
|
frappe.qb.from_(purchase_invoice_item)
|
||||||
|
.inner_join(purchase_invoice)
|
||||||
|
.on(purchase_invoice_item.parent == purchase_invoice.name)
|
||||||
.select(fn.Sum(purchase_invoice_item.amount).as_("billed_amt"), purchase_invoice_item.po_detail)
|
.select(fn.Sum(purchase_invoice_item.amount).as_("billed_amt"), purchase_invoice_item.po_detail)
|
||||||
.where(
|
.where(
|
||||||
(purchase_invoice_item.po_detail.isin(po_items))
|
(purchase_invoice_item.po_detail.isin(po_items))
|
||||||
& (purchase_invoice_item.docstatus == 1)
|
& (purchase_invoice.docstatus == 1)
|
||||||
& (purchase_invoice_item.pr_detail.isnull())
|
& (purchase_invoice_item.pr_detail.isnull())
|
||||||
|
& (purchase_invoice.update_stock == 0)
|
||||||
)
|
)
|
||||||
.groupby(purchase_invoice_item.po_detail)
|
.groupby(purchase_invoice_item.po_detail)
|
||||||
).run(as_dict=1)
|
).run(as_dict=1)
|
||||||
|
|||||||
@@ -4047,6 +4047,36 @@ class TestPurchaseReceipt(FrappeTestCase):
|
|||||||
batch_return.save()
|
batch_return.save()
|
||||||
batch_return.submit()
|
batch_return.submit()
|
||||||
|
|
||||||
|
def test_pr_status_based_on_invoices_with_update_stock(self):
|
||||||
|
from erpnext.buying.doctype.purchase_order.purchase_order import (
|
||||||
|
make_purchase_invoice as _make_purchase_invoice,
|
||||||
|
)
|
||||||
|
from erpnext.buying.doctype.purchase_order.purchase_order import (
|
||||||
|
make_purchase_receipt as _make_purchase_receipt,
|
||||||
|
)
|
||||||
|
from erpnext.buying.doctype.purchase_order.test_purchase_order import (
|
||||||
|
create_pr_against_po,
|
||||||
|
create_purchase_order,
|
||||||
|
)
|
||||||
|
|
||||||
|
item_code = "Test Item for PR Status Based on Invoices"
|
||||||
|
create_item(item_code)
|
||||||
|
|
||||||
|
po = create_purchase_order(item_code=item_code, qty=10)
|
||||||
|
pi = _make_purchase_invoice(po.name)
|
||||||
|
pi.update_stock = 1
|
||||||
|
pi.items[0].qty = 5
|
||||||
|
pi.submit()
|
||||||
|
|
||||||
|
po.reload()
|
||||||
|
self.assertEqual(po.per_billed, 50)
|
||||||
|
|
||||||
|
pr = _make_purchase_receipt(po.name)
|
||||||
|
self.assertEqual(pr.items[0].qty, 5)
|
||||||
|
pr.submit()
|
||||||
|
pr.reload()
|
||||||
|
self.assertEqual(pr.status, "To Bill")
|
||||||
|
|
||||||
|
|
||||||
def prepare_data_for_internal_transfer():
|
def prepare_data_for_internal_transfer():
|
||||||
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier
|
||||||
|
|||||||
Reference in New Issue
Block a user