fix: update references to relocated mapper functions and POS wrapper

After moving mapping functions into per-doctype mapper.py modules and POS
logic into POSService, several call sites still referenced the old
locations, breaking import/collection in CI:

- bulk_transaction: import mapper modules for make_* transitions
- test_purchase_order / test_purchase_receipt / test_stock_entry: import
  make_purchase_receipt, make_purchase_invoice, make_inter_company_purchase_receipt
  and make_stock_entry from their mapper modules
- order.html: point portal API URL to purchase_order.mapper
- sales_invoice: add validate_full_payment delegating wrapper (called by POSInvoice)
This commit is contained in:
Nabin Hait
2026-06-03 15:50:06 +05:30
parent 53dfef8030
commit 092d8f771c
6 changed files with 23 additions and 17 deletions

View File

@@ -691,6 +691,10 @@ class SalesInvoice(SellingController):
def clear_unallocated_mode_of_payments(self):
POSService(self).clear_unallocated_mode_of_payments()
# Called by POS Invoice
def validate_full_payment(self):
POSService(self).validate_full_payment()
def get_company_abbr(self):
return frappe.db.get_value("Company", self.company, "abbr")

View File

@@ -105,7 +105,7 @@ class TestPurchaseOrder(ERPNextTestSuite):
Regression test for #55246: the mapper dropped rows once
received_qty >= qty, ignoring the configured tolerance.
"""
from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt
from erpnext.buying.doctype.purchase_order.mapper import make_purchase_receipt
# 50% tolerance — 10 ordered allows up to 15 received
frappe.db.set_value("Item", "_Test Item", "over_delivery_receipt_allowance", 50)

View File

@@ -1055,7 +1055,7 @@ class TestPurchaseReceipt(ERPNextTestSuite):
"""
Party-derived fields on DN (from Customer) must not leak into the mapped PR.
"""
from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt
from erpnext.stock.doctype.delivery_note.mapper import make_inter_company_purchase_receipt
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
prepare_data_for_internal_transfer()
@@ -1339,7 +1339,8 @@ class TestPurchaseReceipt(ERPNextTestSuite):
- Create PI from PO and submit
- Create PR from PO and submit
"""
from erpnext.buying.doctype.purchase_order import purchase_order, test_purchase_order
from erpnext.buying.doctype.purchase_order import mapper as purchase_order
from erpnext.buying.doctype.purchase_order import test_purchase_order
po = test_purchase_order.create_purchase_order()
@@ -1360,7 +1361,8 @@ class TestPurchaseReceipt(ERPNextTestSuite):
- Create partial PI from PO and submit
- Create PR from PO and submit
"""
from erpnext.buying.doctype.purchase_order import purchase_order, test_purchase_order
from erpnext.buying.doctype.purchase_order import mapper as purchase_order
from erpnext.buying.doctype.purchase_order import test_purchase_order
po = test_purchase_order.create_purchase_order()

View File

@@ -2890,10 +2890,10 @@ class TestStockEntryCoverage(ERPNextTestSuite):
@ERPNextTestSuite.change_settings("Global Defaults", {"default_company": "_Test Company"})
def test_validate_fg_resets_invalid_serial_no_on_manufacture(self):
from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom
from erpnext.manufacturing.doctype.work_order.test_work_order import make_wo_order_test_record
from erpnext.manufacturing.doctype.work_order.work_order import (
from erpnext.manufacturing.doctype.work_order.mapper import (
make_stock_entry as _make_stock_entry,
)
from erpnext.manufacturing.doctype.work_order.test_work_order import make_wo_order_test_record
fg_item = "_FG Serial No Item"
rm_item = "RM for serial item"
@@ -2930,10 +2930,10 @@ class TestStockEntryCoverage(ERPNextTestSuite):
@ERPNextTestSuite.change_settings("Global Defaults", {"default_company": "_Test Company"})
def test_validate_fg_resets_invalid_batch_no_on_manufacture(self):
from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom
from erpnext.manufacturing.doctype.work_order.test_work_order import make_wo_order_test_record
from erpnext.manufacturing.doctype.work_order.work_order import (
from erpnext.manufacturing.doctype.work_order.mapper import (
make_stock_entry as _make_stock_entry,
)
from erpnext.manufacturing.doctype.work_order.test_work_order import make_wo_order_test_record
from erpnext.stock.serial_batch_bundle import get_batches_from_bundle
fg_item = "_FG Batch No Item"

View File

@@ -23,7 +23,7 @@
<ul class="dropdown-menu dropdown-menu-right" role="menu">
{% if doc.doctype == 'Purchase Order' and show_make_pi_button %}
<a class="dropdown-item"
href="/api/method/erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_invoice_from_portal?purchase_order_name={{ doc.name }}"
href="/api/method/erpnext.buying.doctype.purchase_order.mapper.make_purchase_invoice_from_portal?purchase_order_name={{ doc.name }}"
data-action="make_purchase_invoice">{{ _("Make Purchase Invoice") }}
</a>
{% endif %}

View File

@@ -130,14 +130,14 @@ def job(deserialized_data, from_doctype, to_doctype, args):
def task(doc_name, from_doctype, to_doctype):
from erpnext.accounts.doctype.payment_entry import payment_entry
from erpnext.accounts.doctype.purchase_invoice import purchase_invoice
from erpnext.accounts.doctype.sales_invoice import sales_invoice
from erpnext.buying.doctype.purchase_order import purchase_order
from erpnext.buying.doctype.supplier_quotation import supplier_quotation
from erpnext.selling.doctype.quotation import quotation
from erpnext.selling.doctype.sales_order import sales_order
from erpnext.stock.doctype.delivery_note import delivery_note
from erpnext.stock.doctype.purchase_receipt import purchase_receipt
from erpnext.accounts.doctype.purchase_invoice import mapper as purchase_invoice
from erpnext.accounts.doctype.sales_invoice import mapper as sales_invoice
from erpnext.buying.doctype.purchase_order import mapper as purchase_order
from erpnext.buying.doctype.supplier_quotation import mapper as supplier_quotation
from erpnext.selling.doctype.quotation import mapper as quotation
from erpnext.selling.doctype.sales_order import mapper as sales_order
from erpnext.stock.doctype.delivery_note import mapper as delivery_note
from erpnext.stock.doctype.purchase_receipt import mapper as purchase_receipt
mapper = {
"Sales Order": {