mergify[bot] da5bf501eb
feat: auto reserve stock for Sales Order on purchase (backport #37603) (#37648)
* chore: make `Reserve Stock` checkbox visible in SO

(cherry picked from commit 36a996d70499a8bc4cf9c28853c2b5606d73f81d)

* refactor: rename field `Auto Reserve Stock for Sales Order`

(cherry picked from commit 2b4fa98941817966b8a936e4076be84406ad035a)

* feat: add fields to hold SO and SO Item ref in PR Item

(cherry picked from commit 188175be84b5eaa0be73face69f4f2b58b80dd64)

* feat: reserve stock for SO on PR submission

(cherry picked from commit 64497c922892d19ca378b5da75cf6b528f5e52d9)

# Conflicts:
#	erpnext/stock/doctype/purchase_receipt/purchase_receipt.py

* feat: add field `From Voucher Type` in SRE

(cherry picked from commit 5ae9c2f62b741d64da4ce74b3b251339711e8256)

* refactor: rename field `against_pick_list_item`

(cherry picked from commit 78fe56741931ad2c253bf9acca2896c2411f4ac6)

* refactor: rename field `against_pick_list`

(cherry picked from commit 961d2d9926a1a9c0396c3292d431d3bad6865e62)

* fix: incorrect serial and batch get reserved

(cherry picked from commit 45395027d3b5c51ac3ccdbebb1f0d23d5ffd2ec1)

* fix: partial reservation against SBB

(cherry picked from commit 4f363f5bf3da286999966f10d0cca22264f42199)

* fix: ignore qty msg if From Voucher is set

(cherry picked from commit a432290a828478265a8a463d05aea818c2b75914)

* test: add test case for auto-reservation from PR

(cherry picked from commit adf313a6d3308f957b4876574e455ca750b22106)

* chore: add SRE link in PR Connections

(cherry picked from commit 24788ddcc085fb825d2b14145a82ced02842f512)

* chore: patch to update `From Voucher` details

(cherry picked from commit 6942ab10125cfaf07c526df53a7c88bffcc5b9da)

* chore: `conflicts`

* fix(patch): `update_sre_from_voucher_details`

---------

Co-authored-by: s-aga-r <sagarsharma.s312@gmail.com>
2023-10-24 12:39:05 +05:30

185 lines
4.0 KiB
JavaScript

// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
frappe.query_reports["Reserved Stock"] = {
filters: [
{
fieldname: "company",
label: __("Company"),
fieldtype: "Link",
options: "Company",
reqd: 1,
default: frappe.defaults.get_user_default("Company"),
},
{
fieldname: "from_date",
label: __("From Date"),
fieldtype: "Date",
default: frappe.datetime.add_months(
frappe.datetime.get_today(),
-1
),
reqd: 1,
},
{
fieldname: "to_date",
label: __("To Date"),
fieldtype: "Date",
default: frappe.datetime.get_today(),
reqd: 1,
},
{
fieldname: "item_code",
label: __("Item"),
fieldtype: "Link",
options: "Item",
get_query: () => ({
filters: {
is_stock_item: 1,
},
}),
},
{
fieldname: "warehouse",
label: __("Warehouse"),
fieldtype: "Link",
options: "Warehouse",
get_query: () => ({
filters: {
is_group: 0,
company: frappe.query_report.get_filter_value("company"),
},
}),
},
{
fieldname: "stock_reservation_entry",
label: __("Stock Reservation Entry"),
fieldtype: "Link",
options: "Stock Reservation Entry",
get_query: () => ({
filters: {
docstatus: 1,
company: frappe.query_report.get_filter_value("company"),
},
}),
},
{
fieldname: "voucher_type",
label: __("Voucher Type"),
fieldtype: "Link",
options: "DocType",
default: "Sales Order",
get_query: () => ({
filters: {
name: ["in", ["Sales Order"]],
}
}),
},
{
fieldname: "voucher_no",
label: __("Voucher No"),
fieldtype: "Dynamic Link",
options: "voucher_type",
get_query: () => ({
filters: {
docstatus: 1,
company: frappe.query_report.get_filter_value("company"),
},
}),
get_options: function () {
return frappe.query_report.get_filter_value("voucher_type");
},
},
{
fieldname: "from_voucher_type",
label: __("From Voucher Type"),
fieldtype: "Link",
options: "DocType",
get_query: () => ({
filters: {
name: ["in", ["Pick List", "Purchase Receipt"]],
}
}),
},
{
fieldname: "from_voucher_no",
label: __("From Voucher No"),
fieldtype: "Dynamic Link",
options: "from_voucher_type",
get_query: () => ({
filters: {
docstatus: 1,
company: frappe.query_report.get_filter_value("company"),
},
}),
get_options: function () {
return frappe.query_report.get_filter_value("from_voucher_type");
},
},
{
fieldname: "reservation_based_on",
label: __("Reservation Based On"),
fieldtype: "Select",
options: ["", "Qty", "Serial and Batch"],
},
{
fieldname: "status",
label: __("Status"),
fieldtype: "Select",
options: [
"",
"Partially Reserved",
"Reserved",
"Partially Delivered",
"Delivered",
],
},
{
fieldname: "project",
label: __("Project"),
fieldtype: "Link",
options: "Project",
get_query: () => ({
filters: {
company: frappe.query_report.get_filter_value("company"),
},
}),
},
],
formatter: (value, row, column, data, default_formatter) => {
value = default_formatter(value, row, column, data);
if (column.fieldname == "status") {
switch (data.status) {
case "Partially Reserved":
value = "<span style='color:orange'>" + value + "</span>";
break;
case "Reserved":
value = "<span style='color:blue'>" + value + "</span>";
break;
case "Partially Delivered":
value = "<span style='color:purple'>" + value + "</span>";
break;
case "Delivered":
value = "<span style='color:green'>" + value + "</span>";
break;
}
}
else if (column.fieldname == "delivered_qty") {
if (data.delivered_qty > 0) {
if (data.reserved_qty > data.delivered_qty) {
value = "<span style='color:blue'>" + value + "</span>";
}
else {
value = "<span style='color:green'>" + value + "</span>";
}
}
else {
value = "<span style='color:red'>" + value + "</span>";
}
}
return value;
},
};