refactor!: Subcontracted Item To Be Received
This commit is contained in:
parent
8486bbf31a
commit
3be663b121
@ -19,10 +19,10 @@ def execute(filters=None):
|
|||||||
def get_columns():
|
def get_columns():
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
"label": _("Purchase Order"),
|
"label": _("Subcontracting Order"),
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"fieldname": "purchase_order",
|
"fieldname": "subcontracting_order",
|
||||||
"options": "Purchase Order",
|
"options": "Subcontracting Order",
|
||||||
"width": 150,
|
"width": 150,
|
||||||
},
|
},
|
||||||
{"label": _("Date"), "fieldtype": "Date", "fieldname": "date", "hidden": 1, "width": 150},
|
{"label": _("Date"), "fieldtype": "Date", "fieldname": "date", "hidden": 1, "width": 150},
|
||||||
@ -57,14 +57,14 @@ def get_columns():
|
|||||||
|
|
||||||
|
|
||||||
def get_data(data, filters):
|
def get_data(data, filters):
|
||||||
po = get_po(filters)
|
sco = get_sco(filters)
|
||||||
po_name = [v.name for v in po]
|
sco_name = [v.name for v in sco]
|
||||||
sub_items = get_purchase_order_item_supplied(po_name)
|
sub_items = get_subcontracting_order_item_supplied(sco_name)
|
||||||
for item in sub_items:
|
for item in sub_items:
|
||||||
for order in po:
|
for order in sco:
|
||||||
if order.name == item.parent and item.received_qty < item.qty:
|
if order.name == item.parent and item.received_qty < item.qty:
|
||||||
row = {
|
row = {
|
||||||
"purchase_order": item.parent,
|
"subcontracting_order": item.parent,
|
||||||
"date": order.transaction_date,
|
"date": order.transaction_date,
|
||||||
"supplier": order.supplier,
|
"supplier": order.supplier,
|
||||||
"fg_item_code": item.item_code,
|
"fg_item_code": item.item_code,
|
||||||
@ -76,22 +76,21 @@ def get_data(data, filters):
|
|||||||
data.append(row)
|
data.append(row)
|
||||||
|
|
||||||
|
|
||||||
def get_po(filters):
|
def get_sco(filters):
|
||||||
record_filters = [
|
record_filters = [
|
||||||
["is_subcontracted", "=", 1],
|
|
||||||
["supplier", "=", filters.supplier],
|
["supplier", "=", filters.supplier],
|
||||||
["transaction_date", "<=", filters.to_date],
|
["transaction_date", "<=", filters.to_date],
|
||||||
["transaction_date", ">=", filters.from_date],
|
["transaction_date", ">=", filters.from_date],
|
||||||
["docstatus", "=", 1],
|
["docstatus", "=", 1],
|
||||||
]
|
]
|
||||||
return frappe.get_all(
|
return frappe.get_all(
|
||||||
"Purchase Order", filters=record_filters, fields=["name", "transaction_date", "supplier"]
|
"Subcontracting Order", filters=record_filters, fields=["name", "transaction_date", "supplier"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_purchase_order_item_supplied(po):
|
def get_subcontracting_order_item_supplied(sco):
|
||||||
return frappe.get_all(
|
return frappe.get_all(
|
||||||
"Purchase Order Item",
|
"Subcontracting Order Item",
|
||||||
filters=[("parent", "IN", po)],
|
filters=[("parent", "IN", sco)],
|
||||||
fields=["parent", "item_code", "item_name", "qty", "received_qty"],
|
fields=["parent", "item_code", "item_name", "qty", "received_qty"],
|
||||||
)
|
)
|
||||||
|
|||||||
@ -7,18 +7,35 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe.tests.utils import FrappeTestCase
|
from frappe.tests.utils import FrappeTestCase
|
||||||
|
|
||||||
from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt
|
|
||||||
from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
|
|
||||||
from erpnext.buying.report.subcontracted_item_to_be_received.subcontracted_item_to_be_received import (
|
from erpnext.buying.report.subcontracted_item_to_be_received.subcontracted_item_to_be_received import (
|
||||||
execute,
|
execute,
|
||||||
)
|
)
|
||||||
|
from erpnext.controllers.tests.test_subcontracting_controller import (
|
||||||
|
get_subcontracting_order,
|
||||||
|
make_service_item,
|
||||||
|
)
|
||||||
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
|
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
|
||||||
|
from erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order import (
|
||||||
|
make_subcontracting_receipt,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TestSubcontractedItemToBeReceived(FrappeTestCase):
|
class TestSubcontractedItemToBeReceived(FrappeTestCase):
|
||||||
def test_pending_and_received_qty(self):
|
def test_pending_and_received_qty(self):
|
||||||
po = create_purchase_order(item_code="_Test FG Item", is_subcontracted=1)
|
make_service_item("Subcontracted Service Item 1")
|
||||||
transfer_param = []
|
service_items = [
|
||||||
|
{
|
||||||
|
"warehouse": "_Test Warehouse - _TC",
|
||||||
|
"item_code": "Subcontracted Service Item 1",
|
||||||
|
"qty": 10,
|
||||||
|
"rate": 500,
|
||||||
|
"fg_item": "_Test FG Item",
|
||||||
|
"fg_item_qty": 10,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
sco = get_subcontracting_order(
|
||||||
|
service_items=service_items, supplier_warehouse="_Test Warehouse 1 - _TC"
|
||||||
|
)
|
||||||
make_stock_entry(
|
make_stock_entry(
|
||||||
item_code="_Test Item", target="_Test Warehouse 1 - _TC", qty=100, basic_rate=100
|
item_code="_Test Item", target="_Test Warehouse 1 - _TC", qty=100, basic_rate=100
|
||||||
)
|
)
|
||||||
@ -28,28 +45,27 @@ class TestSubcontractedItemToBeReceived(FrappeTestCase):
|
|||||||
qty=100,
|
qty=100,
|
||||||
basic_rate=100,
|
basic_rate=100,
|
||||||
)
|
)
|
||||||
make_purchase_receipt_against_po(po.name)
|
make_subcontracting_receipt_against_sco(sco.name)
|
||||||
po.reload()
|
sco.reload()
|
||||||
col, data = execute(
|
col, data = execute(
|
||||||
filters=frappe._dict(
|
filters=frappe._dict(
|
||||||
{
|
{
|
||||||
"supplier": po.supplier,
|
"supplier": sco.supplier,
|
||||||
"from_date": frappe.utils.get_datetime(
|
"from_date": frappe.utils.get_datetime(
|
||||||
frappe.utils.add_to_date(po.transaction_date, days=-10)
|
frappe.utils.add_to_date(sco.transaction_date, days=-10)
|
||||||
),
|
),
|
||||||
"to_date": frappe.utils.get_datetime(frappe.utils.add_to_date(po.transaction_date, days=10)),
|
"to_date": frappe.utils.get_datetime(frappe.utils.add_to_date(sco.transaction_date, days=10)),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.assertEqual(data[0]["pending_qty"], 5)
|
self.assertEqual(data[0]["pending_qty"], 5)
|
||||||
self.assertEqual(data[0]["received_qty"], 5)
|
self.assertEqual(data[0]["received_qty"], 5)
|
||||||
self.assertEqual(data[0]["purchase_order"], po.name)
|
self.assertEqual(data[0]["subcontracting_order"], sco.name)
|
||||||
self.assertEqual(data[0]["supplier"], po.supplier)
|
self.assertEqual(data[0]["supplier"], sco.supplier)
|
||||||
|
|
||||||
|
|
||||||
def make_purchase_receipt_against_po(po, quantity=5):
|
def make_subcontracting_receipt_against_sco(sco, quantity=5):
|
||||||
pr = make_purchase_receipt(po)
|
scr = make_subcontracting_receipt(sco)
|
||||||
pr.items[0].qty = quantity
|
scr.items[0].qty = quantity
|
||||||
pr.supplier_warehouse = "_Test Warehouse 1 - _TC"
|
scr.insert()
|
||||||
pr.insert()
|
scr.submit()
|
||||||
pr.submit()
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user