mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-20 05:29:18 +00:00
Merge branch 'version-14-hotfix' into mergify/bp/version-14-hotfix/pr-32368
This commit is contained in:
@@ -335,6 +335,9 @@ def get_advance_vouchers(
|
|||||||
"party": ["in", parties],
|
"party": ["in", parties],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if party_type == "Customer":
|
||||||
|
filters.update({"against_voucher": ["is", "not set"]})
|
||||||
|
|
||||||
if company:
|
if company:
|
||||||
filters["company"] = company
|
filters["company"] = company
|
||||||
if from_date and to_date:
|
if from_date and to_date:
|
||||||
|
|||||||
@@ -69,9 +69,18 @@ class SubcontractingController(StockController):
|
|||||||
|
|
||||||
def validate_items(self):
|
def validate_items(self):
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
if not frappe.get_value("Item", item.item_code, "is_sub_contracted_item"):
|
is_stock_item, is_sub_contracted_item = frappe.get_value(
|
||||||
|
"Item", item.item_code, ["is_stock_item", "is_sub_contracted_item"]
|
||||||
|
)
|
||||||
|
|
||||||
|
if not is_stock_item:
|
||||||
|
msg = f"Item {item.item_name} must be a stock item."
|
||||||
|
frappe.throw(_(msg))
|
||||||
|
|
||||||
|
if not is_sub_contracted_item:
|
||||||
msg = f"Item {item.item_name} must be a subcontracted item."
|
msg = f"Item {item.item_name} must be a subcontracted item."
|
||||||
frappe.throw(_(msg))
|
frappe.throw(_(msg))
|
||||||
|
|
||||||
if item.bom:
|
if item.bom:
|
||||||
bom = frappe.get_doc("BOM", item.bom)
|
bom = frappe.get_doc("BOM", item.bom)
|
||||||
if not bom.is_active:
|
if not bom.is_active:
|
||||||
|
|||||||
@@ -10,6 +10,31 @@ frappe.ui.form.on("Item", {
|
|||||||
frm.add_fetch('attribute', 'to_range', 'to_range');
|
frm.add_fetch('attribute', 'to_range', 'to_range');
|
||||||
frm.add_fetch('attribute', 'increment', 'increment');
|
frm.add_fetch('attribute', 'increment', 'increment');
|
||||||
frm.add_fetch('tax_type', 'tax_rate', 'tax_rate');
|
frm.add_fetch('tax_type', 'tax_rate', 'tax_rate');
|
||||||
|
|
||||||
|
frm.make_methods = {
|
||||||
|
'Sales Order': () => {
|
||||||
|
open_form(frm, "Sales Order", "Sales Order Item", "items");
|
||||||
|
},
|
||||||
|
'Delivery Note': () => {
|
||||||
|
open_form(frm, "Delivery Note", "Delivery Note Item", "items");
|
||||||
|
},
|
||||||
|
'Sales Invoice': () => {
|
||||||
|
open_form(frm, "Sales Invoice", "Sales Invoice Item", "items");
|
||||||
|
},
|
||||||
|
'Purchase Order': () => {
|
||||||
|
open_form(frm, "Purchase Order", "Purchase Order Item", "items");
|
||||||
|
},
|
||||||
|
'Purchase Receipt': () => {
|
||||||
|
open_form(frm, "Purchase Receipt", "Purchase Receipt Item", "items");
|
||||||
|
},
|
||||||
|
'Purchase Invoice': () => {
|
||||||
|
open_form(frm, "Purchase Invoice", "Purchase Invoice Item", "items");
|
||||||
|
},
|
||||||
|
'Material Request': () => {
|
||||||
|
open_form(frm, "Material Request", "Material Request Item", "items");
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
},
|
},
|
||||||
onload: function(frm) {
|
onload: function(frm) {
|
||||||
erpnext.item.setup_queries(frm);
|
erpnext.item.setup_queries(frm);
|
||||||
@@ -858,3 +883,17 @@ frappe.tour['Item'] = [
|
|||||||
|
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
function open_form(frm, doctype, child_doctype, parentfield) {
|
||||||
|
frappe.model.with_doctype(doctype, () => {
|
||||||
|
let new_doc = frappe.model.get_new_doc(doctype);
|
||||||
|
|
||||||
|
let new_child_doc = frappe.model.add_child(new_doc, child_doctype, parentfield);
|
||||||
|
new_child_doc.item_code = frm.doc.name;
|
||||||
|
new_child_doc.item_name = frm.doc.item_name;
|
||||||
|
new_child_doc.uom = frm.doc.stock_uom;
|
||||||
|
new_child_doc.description = frm.doc.description;
|
||||||
|
|
||||||
|
frappe.ui.form.make_quick_entry(doctype, null, null, new_doc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user