mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-12 17:51:20 +00:00
* ci: add prettier to pre-commit
(cherry picked from commit 2c16036ef3)
* style: format js files
---------
Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
This commit is contained in:
@@ -1,40 +1,40 @@
|
||||
// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.ui.form.on('Subcontracting BOM', {
|
||||
setup: (frm) => {
|
||||
frm.trigger('set_queries');
|
||||
frappe.ui.form.on("Subcontracting BOM", {
|
||||
setup: (frm) => {
|
||||
frm.trigger("set_queries");
|
||||
},
|
||||
|
||||
set_queries: (frm) => {
|
||||
frm.set_query('finished_good', () => {
|
||||
return {
|
||||
filters: {
|
||||
disabled: 0,
|
||||
is_stock_item: 1,
|
||||
default_bom: ['!=', ''],
|
||||
is_sub_contracted_item: 1,
|
||||
}
|
||||
}
|
||||
});
|
||||
set_queries: (frm) => {
|
||||
frm.set_query("finished_good", () => {
|
||||
return {
|
||||
filters: {
|
||||
disabled: 0,
|
||||
is_stock_item: 1,
|
||||
default_bom: ["!=", ""],
|
||||
is_sub_contracted_item: 1,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('finished_good_bom', () => {
|
||||
return {
|
||||
filters: {
|
||||
docstatus: 1,
|
||||
is_active: 1,
|
||||
item: frm.doc.finished_good,
|
||||
}
|
||||
}
|
||||
});
|
||||
frm.set_query("finished_good_bom", () => {
|
||||
return {
|
||||
filters: {
|
||||
docstatus: 1,
|
||||
is_active: 1,
|
||||
item: frm.doc.finished_good,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('service_item', () => {
|
||||
return {
|
||||
filters: {
|
||||
disabled: 0,
|
||||
is_stock_item: 0,
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
frm.set_query("service_item", () => {
|
||||
return {
|
||||
filters: {
|
||||
disabled: 0,
|
||||
is_stock_item: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,101 +1,100 @@
|
||||
// Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.provide('erpnext.buying');
|
||||
frappe.provide("erpnext.buying");
|
||||
|
||||
erpnext.landed_cost_taxes_and_charges.setup_triggers("Subcontracting Order");
|
||||
|
||||
frappe.ui.form.on('Subcontracting Order', {
|
||||
frappe.ui.form.on("Subcontracting Order", {
|
||||
setup: (frm) => {
|
||||
frm.get_field("items").grid.cannot_add_rows = true;
|
||||
frm.get_field("items").grid.only_sortable();
|
||||
|
||||
frm.set_indicator_formatter('item_code',
|
||||
(doc) => (doc.qty <= doc.received_qty) ? 'green' : 'orange');
|
||||
frm.set_indicator_formatter("item_code", (doc) => (doc.qty <= doc.received_qty ? "green" : "orange"));
|
||||
|
||||
frm.set_query('supplier_warehouse', () => {
|
||||
frm.set_query("supplier_warehouse", () => {
|
||||
return {
|
||||
filters: {
|
||||
company: frm.doc.company,
|
||||
is_group: 0
|
||||
}
|
||||
is_group: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('purchase_order', () => {
|
||||
frm.set_query("purchase_order", () => {
|
||||
return {
|
||||
filters: {
|
||||
docstatus: 1,
|
||||
is_subcontracted: 1,
|
||||
is_old_subcontracting_flow: 0
|
||||
}
|
||||
is_old_subcontracting_flow: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('set_warehouse', () => {
|
||||
frm.set_query("set_warehouse", () => {
|
||||
return {
|
||||
filters: {
|
||||
company: frm.doc.company,
|
||||
is_group: 0
|
||||
}
|
||||
is_group: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('warehouse', 'items', () => ({
|
||||
frm.set_query("warehouse", "items", () => ({
|
||||
filters: {
|
||||
company: frm.doc.company,
|
||||
is_group: 0
|
||||
}
|
||||
is_group: 0,
|
||||
},
|
||||
}));
|
||||
|
||||
frm.set_query('expense_account', 'items', () => ({
|
||||
query: 'erpnext.controllers.queries.get_expense_account',
|
||||
frm.set_query("expense_account", "items", () => ({
|
||||
query: "erpnext.controllers.queries.get_expense_account",
|
||||
filters: {
|
||||
company: frm.doc.company
|
||||
}
|
||||
company: frm.doc.company,
|
||||
},
|
||||
}));
|
||||
|
||||
frm.set_query('bom', 'items', (doc, cdt, cdn) => {
|
||||
frm.set_query("bom", "items", (doc, cdt, cdn) => {
|
||||
let d = locals[cdt][cdn];
|
||||
return {
|
||||
filters: {
|
||||
item: d.item_code,
|
||||
is_active: 1,
|
||||
docstatus: 1,
|
||||
company: frm.doc.company
|
||||
}
|
||||
company: frm.doc.company,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('set_reserve_warehouse', () => {
|
||||
frm.set_query("set_reserve_warehouse", () => {
|
||||
return {
|
||||
filters: {
|
||||
company: frm.doc.company,
|
||||
name: ['!=', frm.doc.supplier_warehouse],
|
||||
is_group: 0
|
||||
}
|
||||
name: ["!=", frm.doc.supplier_warehouse],
|
||||
is_group: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
},
|
||||
|
||||
onload: (frm) => {
|
||||
if (!frm.doc.transaction_date) {
|
||||
frm.set_value('transaction_date', frappe.datetime.get_today());
|
||||
frm.set_value("transaction_date", frappe.datetime.get_today());
|
||||
}
|
||||
},
|
||||
|
||||
purchase_order: (frm) => {
|
||||
frm.set_value('service_items', null);
|
||||
frm.set_value('items', null);
|
||||
frm.set_value('supplied_items', null);
|
||||
frm.set_value("service_items", null);
|
||||
frm.set_value("items", null);
|
||||
frm.set_value("supplied_items", null);
|
||||
|
||||
if (frm.doc.purchase_order) {
|
||||
erpnext.utils.map_current_doc({
|
||||
method: 'erpnext.buying.doctype.purchase_order.purchase_order.make_subcontracting_order',
|
||||
method: "erpnext.buying.doctype.purchase_order.purchase_order.make_subcontracting_order",
|
||||
source_name: frm.doc.purchase_order,
|
||||
target_doc: frm,
|
||||
freeze: true,
|
||||
freeze_message: __('Mapping Subcontracting Order ...'),
|
||||
freeze_message: __("Mapping Subcontracting Order ..."),
|
||||
});
|
||||
}
|
||||
},
|
||||
@@ -103,13 +102,21 @@ frappe.ui.form.on('Subcontracting Order', {
|
||||
refresh: function (frm) {
|
||||
if (frm.doc.docstatus == 1 && frm.has_perm("submit")) {
|
||||
if (frm.doc.status == "Closed") {
|
||||
frm.add_custom_button(__('Re-open'), () => frm.events.update_subcontracting_order_status(frm), __("Status"));
|
||||
} else if(flt(frm.doc.per_received, 2) < 100) {
|
||||
frm.add_custom_button(__('Close'), () => frm.events.update_subcontracting_order_status(frm, "Closed"), __("Status"));
|
||||
frm.add_custom_button(
|
||||
__("Re-open"),
|
||||
() => frm.events.update_subcontracting_order_status(frm),
|
||||
__("Status")
|
||||
);
|
||||
} else if (flt(frm.doc.per_received, 2) < 100) {
|
||||
frm.add_custom_button(
|
||||
__("Close"),
|
||||
() => frm.events.update_subcontracting_order_status(frm, "Closed"),
|
||||
__("Status")
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
frm.trigger('get_materials_from_supplier');
|
||||
frm.trigger("get_materials_from_supplier");
|
||||
},
|
||||
|
||||
update_subcontracting_order_status(frm, status) {
|
||||
@@ -131,7 +138,7 @@ frappe.ui.form.on('Subcontracting Order', {
|
||||
let sco_rm_details = [];
|
||||
|
||||
if (frm.doc.status != "Closed" && frm.doc.supplied_items) {
|
||||
frm.doc.supplied_items.forEach(d => {
|
||||
frm.doc.supplied_items.forEach((d) => {
|
||||
if (d.total_supplied_qty > 0 && d.total_supplied_qty != d.consumed_qty) {
|
||||
sco_rm_details.push(d.name);
|
||||
}
|
||||
@@ -139,43 +146,47 @@ frappe.ui.form.on('Subcontracting Order', {
|
||||
}
|
||||
|
||||
if (sco_rm_details && sco_rm_details.length) {
|
||||
frm.add_custom_button(__('Return of Components'), () => {
|
||||
frm.call({
|
||||
method: 'erpnext.controllers.subcontracting_controller.get_materials_from_supplier',
|
||||
freeze: true,
|
||||
freeze_message: __('Creating Stock Entry'),
|
||||
args: {
|
||||
subcontract_order: frm.doc.name,
|
||||
rm_details: sco_rm_details,
|
||||
order_doctype: cur_frm.doc.doctype
|
||||
},
|
||||
callback: function (r) {
|
||||
if (r && r.message) {
|
||||
const doc = frappe.model.sync(r.message);
|
||||
frappe.set_route("Form", doc[0].doctype, doc[0].name);
|
||||
}
|
||||
}
|
||||
});
|
||||
}, __('Create'));
|
||||
frm.add_custom_button(
|
||||
__("Return of Components"),
|
||||
() => {
|
||||
frm.call({
|
||||
method: "erpnext.controllers.subcontracting_controller.get_materials_from_supplier",
|
||||
freeze: true,
|
||||
freeze_message: __("Creating Stock Entry"),
|
||||
args: {
|
||||
subcontract_order: frm.doc.name,
|
||||
rm_details: sco_rm_details,
|
||||
order_doctype: cur_frm.doc.doctype,
|
||||
},
|
||||
callback: function (r) {
|
||||
if (r && r.message) {
|
||||
const doc = frappe.model.sync(r.message);
|
||||
frappe.set_route("Form", doc[0].doctype, doc[0].name);
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
__("Create")
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
frappe.ui.form.on('Landed Cost Taxes and Charges', {
|
||||
frappe.ui.form.on("Landed Cost Taxes and Charges", {
|
||||
amount: function (frm, cdt, cdn) {
|
||||
frm.events.set_base_amount(frm, cdt, cdn);
|
||||
},
|
||||
|
||||
expense_account: function (frm, cdt, cdn) {
|
||||
frm.events.set_account_currency(frm, cdt, cdn);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
erpnext.buying.SubcontractingOrderController = class SubcontractingOrderController {
|
||||
setup() {
|
||||
this.frm.custom_make_buttons = {
|
||||
'Subcontracting Receipt': 'Subcontracting Receipt',
|
||||
'Stock Entry': 'Material to Supplier',
|
||||
"Subcontracting Receipt": "Subcontracting Receipt",
|
||||
"Stock Entry": "Material to Supplier",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -183,14 +194,22 @@ erpnext.buying.SubcontractingOrderController = class SubcontractingOrderControll
|
||||
var me = this;
|
||||
|
||||
if (doc.docstatus == 1) {
|
||||
if (!['Closed', 'Completed'].includes(doc.status)) {
|
||||
if (!["Closed", "Completed"].includes(doc.status)) {
|
||||
if (flt(doc.per_received) < 100) {
|
||||
cur_frm.add_custom_button(__('Subcontracting Receipt'), this.make_subcontracting_receipt, __('Create'));
|
||||
cur_frm.add_custom_button(
|
||||
__("Subcontracting Receipt"),
|
||||
this.make_subcontracting_receipt,
|
||||
__("Create")
|
||||
);
|
||||
if (me.has_unsupplied_items()) {
|
||||
cur_frm.add_custom_button(__('Material to Supplier'), this.make_stock_entry, __('Transfer'));
|
||||
cur_frm.add_custom_button(
|
||||
__("Material to Supplier"),
|
||||
this.make_stock_entry,
|
||||
__("Transfer")
|
||||
);
|
||||
}
|
||||
}
|
||||
cur_frm.page.set_inner_btn_group_as_primary(__('Create'));
|
||||
cur_frm.page.set_inner_btn_group_as_primary(__("Create"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -216,30 +235,32 @@ erpnext.buying.SubcontractingOrderController = class SubcontractingOrderControll
|
||||
}
|
||||
|
||||
has_unsupplied_items() {
|
||||
return this.frm.doc['supplied_items'].some(item => item.required_qty > (item.supplied_qty - item.returned_qty));
|
||||
return this.frm.doc["supplied_items"].some(
|
||||
(item) => item.required_qty > item.supplied_qty - item.returned_qty
|
||||
);
|
||||
}
|
||||
|
||||
make_subcontracting_receipt() {
|
||||
frappe.model.open_mapped_doc({
|
||||
method: 'erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order.make_subcontracting_receipt',
|
||||
method: "erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order.make_subcontracting_receipt",
|
||||
frm: cur_frm,
|
||||
freeze_message: __('Creating Subcontracting Receipt ...')
|
||||
freeze_message: __("Creating Subcontracting Receipt ..."),
|
||||
});
|
||||
}
|
||||
|
||||
make_stock_entry() {
|
||||
frappe.call({
|
||||
method: 'erpnext.controllers.subcontracting_controller.make_rm_stock_entry',
|
||||
method: "erpnext.controllers.subcontracting_controller.make_rm_stock_entry",
|
||||
args: {
|
||||
subcontract_order: cur_frm.doc.name,
|
||||
order_doctype: cur_frm.doc.doctype
|
||||
order_doctype: cur_frm.doc.doctype,
|
||||
},
|
||||
callback: (r) => {
|
||||
var doclist = frappe.model.sync(r.message);
|
||||
frappe.set_route('Form', doclist[0].doctype, doclist[0].name);
|
||||
}
|
||||
frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
extend_cscript(cur_frm.cscript, new erpnext.buying.SubcontractingOrderController({ frm: cur_frm }));
|
||||
extend_cscript(cur_frm.cscript, new erpnext.buying.SubcontractingOrderController({ frm: cur_frm }));
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
// Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.listview_settings['Subcontracting Order'] = {
|
||||
frappe.listview_settings["Subcontracting Order"] = {
|
||||
get_indicator: function (doc) {
|
||||
const status_colors = {
|
||||
"Draft": "grey",
|
||||
"Open": "orange",
|
||||
Draft: "grey",
|
||||
Open: "orange",
|
||||
"Partially Received": "yellow",
|
||||
"Completed": "green",
|
||||
Completed: "green",
|
||||
"Partial Material Transferred": "purple",
|
||||
"Material Transferred": "blue",
|
||||
"Closed": "green",
|
||||
"Cancelled": "red",
|
||||
Closed: "green",
|
||||
Cancelled: "red",
|
||||
};
|
||||
return [__(doc.status), status_colors[doc.status], "status,=," + doc.status];
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
// Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.provide('erpnext.buying');
|
||||
frappe.provide("erpnext.buying");
|
||||
|
||||
erpnext.landed_cost_taxes_and_charges.setup_triggers('Subcontracting Receipt');
|
||||
erpnext.landed_cost_taxes_and_charges.setup_triggers("Subcontracting Receipt");
|
||||
|
||||
frappe.ui.form.on('Subcontracting Receipt', {
|
||||
frappe.ui.form.on("Subcontracting Receipt", {
|
||||
setup: (frm) => {
|
||||
frm.ignore_doctypes_on_cancel_all = ['Serial and Batch Bundle'];
|
||||
frm.get_field('supplied_items').grid.cannot_add_rows = true;
|
||||
frm.get_field('supplied_items').grid.only_sortable();
|
||||
frm.trigger('set_queries');
|
||||
frm.ignore_doctypes_on_cancel_all = ["Serial and Batch Bundle"];
|
||||
frm.get_field("supplied_items").grid.cannot_add_rows = true;
|
||||
frm.get_field("supplied_items").grid.only_sortable();
|
||||
frm.trigger("set_queries");
|
||||
|
||||
frm.custom_make_buttons = {
|
||||
'Purchase Receipt': 'Purchase Receipt',
|
||||
}
|
||||
"Purchase Receipt": "Purchase Receipt",
|
||||
};
|
||||
},
|
||||
|
||||
on_submit(frm) {
|
||||
@@ -24,198 +24,222 @@ frappe.ui.form.on('Subcontracting Receipt', {
|
||||
refresh_serial_batch_bundle_field(frm) {
|
||||
frappe.route_hooks.after_submit = (frm_obj) => {
|
||||
frm_obj.reload_doc();
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
refresh: (frm) => {
|
||||
if (frm.doc.docstatus === 1) {
|
||||
frm.add_custom_button(__('Stock Ledger'), () => {
|
||||
frappe.route_options = {
|
||||
voucher_no: frm.doc.name,
|
||||
from_date: frm.doc.posting_date,
|
||||
to_date: moment(frm.doc.modified).format('YYYY-MM-DD'),
|
||||
company: frm.doc.company,
|
||||
show_cancelled_entries: frm.doc.docstatus === 2
|
||||
}
|
||||
frappe.set_route('query-report', 'Stock Ledger');
|
||||
}, __('View'));
|
||||
frm.add_custom_button(
|
||||
__("Stock Ledger"),
|
||||
() => {
|
||||
frappe.route_options = {
|
||||
voucher_no: frm.doc.name,
|
||||
from_date: frm.doc.posting_date,
|
||||
to_date: moment(frm.doc.modified).format("YYYY-MM-DD"),
|
||||
company: frm.doc.company,
|
||||
show_cancelled_entries: frm.doc.docstatus === 2,
|
||||
};
|
||||
frappe.set_route("query-report", "Stock Ledger");
|
||||
},
|
||||
__("View")
|
||||
);
|
||||
|
||||
frm.add_custom_button(__('Accounting Ledger'), () => {
|
||||
frappe.route_options = {
|
||||
voucher_no: frm.doc.name,
|
||||
from_date: frm.doc.posting_date,
|
||||
to_date: moment(frm.doc.modified).format('YYYY-MM-DD'),
|
||||
company: frm.doc.company,
|
||||
group_by: 'Group by Voucher (Consolidated)',
|
||||
show_cancelled_entries: frm.doc.docstatus === 2
|
||||
}
|
||||
frappe.set_route('query-report', 'General Ledger');
|
||||
}, __('View'));
|
||||
frm.add_custom_button(
|
||||
__("Accounting Ledger"),
|
||||
() => {
|
||||
frappe.route_options = {
|
||||
voucher_no: frm.doc.name,
|
||||
from_date: frm.doc.posting_date,
|
||||
to_date: moment(frm.doc.modified).format("YYYY-MM-DD"),
|
||||
company: frm.doc.company,
|
||||
group_by: "Group by Voucher (Consolidated)",
|
||||
show_cancelled_entries: frm.doc.docstatus === 2,
|
||||
};
|
||||
frappe.set_route("query-report", "General Ledger");
|
||||
},
|
||||
__("View")
|
||||
);
|
||||
|
||||
if (frm.doc.is_return === 0) {
|
||||
frm.add_custom_button(__('Purchase Receipt'), () => {
|
||||
frappe.model.open_mapped_doc({
|
||||
method: 'erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_purchase_receipt',
|
||||
frm: frm,
|
||||
freeze: true,
|
||||
freeze_message: __('Creating Purchase Receipt ...')
|
||||
});
|
||||
}, __('Create'));
|
||||
frm.add_custom_button(
|
||||
__("Purchase Receipt"),
|
||||
() => {
|
||||
frappe.model.open_mapped_doc({
|
||||
method: "erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_purchase_receipt",
|
||||
frm: frm,
|
||||
freeze: true,
|
||||
freeze_message: __("Creating Purchase Receipt ..."),
|
||||
});
|
||||
},
|
||||
__("Create")
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (!frm.doc.is_return && frm.doc.docstatus === 1 && frm.doc.per_returned < 100) {
|
||||
frm.add_custom_button(__('Subcontract Return'), () => {
|
||||
frappe.model.open_mapped_doc({
|
||||
method: 'erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_subcontract_return',
|
||||
frm: frm
|
||||
});
|
||||
}, __('Create'));
|
||||
frm.page.set_inner_btn_group_as_primary(__('Create'));
|
||||
frm.add_custom_button(
|
||||
__("Subcontract Return"),
|
||||
() => {
|
||||
frappe.model.open_mapped_doc({
|
||||
method: "erpnext.subcontracting.doctype.subcontracting_receipt.subcontracting_receipt.make_subcontract_return",
|
||||
frm: frm,
|
||||
});
|
||||
},
|
||||
__("Create")
|
||||
);
|
||||
frm.page.set_inner_btn_group_as_primary(__("Create"));
|
||||
}
|
||||
|
||||
if (frm.doc.docstatus === 0) {
|
||||
frm.add_custom_button(__('Subcontracting Order'), () => {
|
||||
if (!frm.doc.supplier) {
|
||||
frappe.throw({
|
||||
title: __('Mandatory'),
|
||||
message: __('Please Select a Supplier')
|
||||
});
|
||||
}
|
||||
|
||||
erpnext.utils.map_current_doc({
|
||||
method: 'erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order.make_subcontracting_receipt',
|
||||
source_doctype: 'Subcontracting Order',
|
||||
target: frm,
|
||||
setters: {
|
||||
supplier: frm.doc.supplier,
|
||||
},
|
||||
get_query_filters: {
|
||||
docstatus: 1,
|
||||
per_received: ['<', 100],
|
||||
company: frm.doc.company,
|
||||
status: ['!=', 'Closed'],
|
||||
frm.add_custom_button(
|
||||
__("Subcontracting Order"),
|
||||
() => {
|
||||
if (!frm.doc.supplier) {
|
||||
frappe.throw({
|
||||
title: __("Mandatory"),
|
||||
message: __("Please Select a Supplier"),
|
||||
});
|
||||
}
|
||||
});
|
||||
}, __('Get Items From'));
|
||||
|
||||
frm.fields_dict.supplied_items.grid.update_docfield_property('consumed_qty', 'read_only', frm.doc.__onload && frm.doc.__onload.backflush_based_on === 'BOM');
|
||||
erpnext.utils.map_current_doc({
|
||||
method: "erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order.make_subcontracting_receipt",
|
||||
source_doctype: "Subcontracting Order",
|
||||
target: frm,
|
||||
setters: {
|
||||
supplier: frm.doc.supplier,
|
||||
},
|
||||
get_query_filters: {
|
||||
docstatus: 1,
|
||||
per_received: ["<", 100],
|
||||
company: frm.doc.company,
|
||||
status: ["!=", "Closed"],
|
||||
},
|
||||
});
|
||||
},
|
||||
__("Get Items From")
|
||||
);
|
||||
|
||||
frm.fields_dict.supplied_items.grid.update_docfield_property(
|
||||
"consumed_qty",
|
||||
"read_only",
|
||||
frm.doc.__onload && frm.doc.__onload.backflush_based_on === "BOM"
|
||||
);
|
||||
}
|
||||
|
||||
frm.trigger('setup_quality_inspection');
|
||||
frm.trigger('set_route_options_for_new_doc');
|
||||
frm.trigger("setup_quality_inspection");
|
||||
frm.trigger("set_route_options_for_new_doc");
|
||||
},
|
||||
|
||||
set_warehouse: (frm) => {
|
||||
set_warehouse_in_children(frm.doc.items, 'warehouse', frm.doc.set_warehouse);
|
||||
set_warehouse_in_children(frm.doc.items, "warehouse", frm.doc.set_warehouse);
|
||||
},
|
||||
|
||||
rejected_warehouse: (frm) => {
|
||||
set_warehouse_in_children(frm.doc.items, 'rejected_warehouse', frm.doc.rejected_warehouse);
|
||||
set_warehouse_in_children(frm.doc.items, "rejected_warehouse", frm.doc.rejected_warehouse);
|
||||
},
|
||||
|
||||
get_scrap_items: (frm) => {
|
||||
frappe.call({
|
||||
doc: frm.doc,
|
||||
method: 'get_scrap_items',
|
||||
method: "get_scrap_items",
|
||||
args: {
|
||||
recalculate_rate: true
|
||||
recalculate_rate: true,
|
||||
},
|
||||
freeze: true,
|
||||
freeze_message: __('Getting Scrap Items'),
|
||||
freeze_message: __("Getting Scrap Items"),
|
||||
callback: (r) => {
|
||||
if (!r.exc) {
|
||||
frm.refresh();
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
set_queries: (frm) => {
|
||||
frm.set_query('set_warehouse', () => {
|
||||
frm.set_query("set_warehouse", () => {
|
||||
return {
|
||||
filters: {
|
||||
company: frm.doc.company,
|
||||
is_group: 0
|
||||
}
|
||||
}
|
||||
is_group: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('rejected_warehouse', () => {
|
||||
frm.set_query("rejected_warehouse", () => {
|
||||
return {
|
||||
filters: {
|
||||
company: frm.doc.company,
|
||||
is_group: 0
|
||||
}
|
||||
}
|
||||
is_group: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('supplier_warehouse', () => {
|
||||
frm.set_query("supplier_warehouse", () => {
|
||||
return {
|
||||
filters: {
|
||||
company: frm.doc.company,
|
||||
is_group: 0
|
||||
}
|
||||
}
|
||||
is_group: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('warehouse', 'items', () => ({
|
||||
frm.set_query("warehouse", "items", () => ({
|
||||
filters: {
|
||||
company: frm.doc.company,
|
||||
is_group: 0
|
||||
}
|
||||
is_group: 0,
|
||||
},
|
||||
}));
|
||||
|
||||
frm.set_query('rejected_warehouse', 'items', () => ({
|
||||
frm.set_query("rejected_warehouse", "items", () => ({
|
||||
filters: {
|
||||
company: frm.doc.company,
|
||||
is_group: 0
|
||||
}
|
||||
is_group: 0,
|
||||
},
|
||||
}));
|
||||
|
||||
frm.set_query('expense_account', 'items', () => {
|
||||
frm.set_query("expense_account", "items", () => {
|
||||
return {
|
||||
query: 'erpnext.controllers.queries.get_expense_account',
|
||||
filters: { 'company': frm.doc.company }
|
||||
}
|
||||
query: "erpnext.controllers.queries.get_expense_account",
|
||||
filters: { company: frm.doc.company },
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('batch_no', 'items', (doc, cdt, cdn) => {
|
||||
frm.set_query("batch_no", "items", (doc, cdt, cdn) => {
|
||||
var row = locals[cdt][cdn];
|
||||
return {
|
||||
filters: {
|
||||
item: row.item_code
|
||||
}
|
||||
}
|
||||
item: row.item_code,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('serial_and_batch_bundle', 'items', (doc, cdt, cdn) => {
|
||||
frm.set_query("serial_and_batch_bundle", "items", (doc, cdt, cdn) => {
|
||||
return frm.events.get_serial_and_batch_bundle_filters(doc, cdt, cdn);
|
||||
});
|
||||
|
||||
frm.set_query('rejected_serial_and_batch_bundle', 'items', (doc, cdt, cdn) => {
|
||||
frm.set_query("rejected_serial_and_batch_bundle", "items", (doc, cdt, cdn) => {
|
||||
return frm.events.get_serial_and_batch_bundle_filters(doc, cdt, cdn);
|
||||
});
|
||||
|
||||
frm.set_query('batch_no', 'supplied_items', (doc, cdt, cdn) => {
|
||||
frm.set_query("batch_no", "supplied_items", (doc, cdt, cdn) => {
|
||||
var row = locals[cdt][cdn];
|
||||
return {
|
||||
filters: {
|
||||
item: row.rm_item_code
|
||||
}
|
||||
}
|
||||
item: row.rm_item_code,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
frm.set_query('serial_and_batch_bundle', 'supplied_items', (doc, cdt, cdn) => {
|
||||
frm.set_query("serial_and_batch_bundle", "supplied_items", (doc, cdt, cdn) => {
|
||||
let row = locals[cdt][cdn];
|
||||
return {
|
||||
filters: {
|
||||
'item_code': row.rm_item_code,
|
||||
'voucher_type': doc.doctype,
|
||||
'voucher_no': ['in', [doc.name, '']],
|
||||
'is_cancelled': 0,
|
||||
}
|
||||
}
|
||||
item_code: row.rm_item_code,
|
||||
voucher_type: doc.doctype,
|
||||
voucher_no: ["in", [doc.name, ""]],
|
||||
is_cancelled: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
},
|
||||
|
||||
@@ -223,12 +247,12 @@ frappe.ui.form.on('Subcontracting Receipt', {
|
||||
let row = locals[cdt][cdn];
|
||||
return {
|
||||
filters: {
|
||||
'item_code': row.item_code,
|
||||
'voucher_type': doc.doctype,
|
||||
'voucher_no': ['in', [doc.name, '']],
|
||||
'is_cancelled': 0,
|
||||
}
|
||||
}
|
||||
item_code: row.item_code,
|
||||
voucher_type: doc.doctype,
|
||||
voucher_no: ["in", [doc.name, ""]],
|
||||
is_cancelled: 0,
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
setup_quality_inspection: (frm) => {
|
||||
@@ -239,48 +263,48 @@ frappe.ui.form.on('Subcontracting Receipt', {
|
||||
},
|
||||
|
||||
set_route_options_for_new_doc: (frm) => {
|
||||
let batch_no_field = frm.get_docfield('items', 'batch_no');
|
||||
let batch_no_field = frm.get_docfield("items", "batch_no");
|
||||
if (batch_no_field) {
|
||||
batch_no_field.get_route_options_for_new_doc = (row) => {
|
||||
return {
|
||||
'item': row.doc.item_code
|
||||
}
|
||||
}
|
||||
item: row.doc.item_code,
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
let item_sbb_field = frm.get_docfield('items', 'serial_and_batch_bundle');
|
||||
let item_sbb_field = frm.get_docfield("items", "serial_and_batch_bundle");
|
||||
if (item_sbb_field) {
|
||||
item_sbb_field.get_route_options_for_new_doc = (row) => {
|
||||
return {
|
||||
'item_code': row.doc.item_code,
|
||||
'voucher_type': frm.doc.doctype,
|
||||
}
|
||||
}
|
||||
item_code: row.doc.item_code,
|
||||
voucher_type: frm.doc.doctype,
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
let rejected_item_sbb_field = frm.get_docfield('items', 'rejected_serial_and_batch_bundle');
|
||||
let rejected_item_sbb_field = frm.get_docfield("items", "rejected_serial_and_batch_bundle");
|
||||
if (rejected_item_sbb_field) {
|
||||
rejected_item_sbb_field.get_route_options_for_new_doc = (row) => {
|
||||
return {
|
||||
'item_code': row.doc.item_code,
|
||||
'voucher_type': frm.doc.doctype,
|
||||
}
|
||||
}
|
||||
item_code: row.doc.item_code,
|
||||
voucher_type: frm.doc.doctype,
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
let rm_sbb_field = frm.get_docfield('supplied_items', 'serial_and_batch_bundle');
|
||||
let rm_sbb_field = frm.get_docfield("supplied_items", "serial_and_batch_bundle");
|
||||
if (rm_sbb_field) {
|
||||
rm_sbb_field.get_route_options_for_new_doc = (row) => {
|
||||
return {
|
||||
'item_code': row.doc.rm_item_code,
|
||||
'voucher_type': frm.doc.doctype,
|
||||
}
|
||||
}
|
||||
item_code: row.doc.rm_item_code,
|
||||
voucher_type: frm.doc.doctype,
|
||||
};
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
frappe.ui.form.on('Landed Cost Taxes and Charges', {
|
||||
frappe.ui.form.on("Landed Cost Taxes and Charges", {
|
||||
amount: (frm, cdt, cdn) => {
|
||||
set_missing_values(frm);
|
||||
frm.events.set_base_amount(frm, cdt, cdn);
|
||||
@@ -292,10 +316,10 @@ frappe.ui.form.on('Landed Cost Taxes and Charges', {
|
||||
|
||||
additional_costs_remove: (frm) => {
|
||||
set_missing_values(frm);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
frappe.ui.form.on('Subcontracting Receipt Item', {
|
||||
frappe.ui.form.on("Subcontracting Receipt Item", {
|
||||
item_code(frm) {
|
||||
set_missing_values(frm);
|
||||
},
|
||||
@@ -313,7 +337,7 @@ frappe.ui.form.on('Subcontracting Receipt Item', {
|
||||
},
|
||||
});
|
||||
|
||||
frappe.ui.form.on('Subcontracting Receipt Supplied Item', {
|
||||
frappe.ui.form.on("Subcontracting Receipt Supplied Item", {
|
||||
consumed_qty(frm) {
|
||||
set_missing_values(frm);
|
||||
},
|
||||
@@ -322,14 +346,14 @@ frappe.ui.form.on('Subcontracting Receipt Supplied Item', {
|
||||
let set_warehouse_in_children = (child_table, warehouse_field, warehouse) => {
|
||||
let transaction_controller = new erpnext.TransactionController();
|
||||
transaction_controller.autofill_warehouse(child_table, warehouse_field, warehouse);
|
||||
}
|
||||
};
|
||||
|
||||
let set_missing_values = (frm) => {
|
||||
frappe.call({
|
||||
doc: frm.doc,
|
||||
method: 'set_missing_values',
|
||||
method: "set_missing_values",
|
||||
callback: (r) => {
|
||||
if (!r.exc) frm.refresh();
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.listview_settings['Subcontracting Receipt'] = {
|
||||
frappe.listview_settings["Subcontracting Receipt"] = {
|
||||
get_indicator: function (doc) {
|
||||
const status_colors = {
|
||||
"Draft": "grey",
|
||||
"Return": "gray",
|
||||
Draft: "grey",
|
||||
Return: "gray",
|
||||
"Return Issued": "grey",
|
||||
"Completed": "green",
|
||||
Completed: "green",
|
||||
};
|
||||
return [__(doc.status), status_colors[doc.status], "status,=," + doc.status];
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user