* fix(ux): no need to select rows to reserve the stock (cherry picked from commit 9c889b37fb3e6572043c7a28706e43d051e2ff46) * fix: use field `sales_order_item` instead `name` (cherry picked from commit 73586fd9b2f9392d18f65a063b14ef2de2629615) * fix(ux): no need to select rows to unreserve the stock (cherry picked from commit 2a41da94d443dee51e615b395d18ad161d4e87fc) --------- Co-authored-by: s-aga-r <sagarsharma.s312@gmail.com>
This commit is contained in:
parent
cda5ff40f1
commit
3cbe59902a
@ -214,13 +214,12 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
label: __("Items to Reserve"),
|
label: __("Items to Reserve"),
|
||||||
allow_bulk_edit: false,
|
allow_bulk_edit: false,
|
||||||
cannot_add_rows: true,
|
cannot_add_rows: true,
|
||||||
cannot_delete_rows: true,
|
|
||||||
data: [],
|
data: [],
|
||||||
fields: [
|
fields: [
|
||||||
{
|
{
|
||||||
fieldname: "name",
|
fieldname: "sales_order_item",
|
||||||
fieldtype: "Data",
|
fieldtype: "Data",
|
||||||
label: __("Name"),
|
label: __("Sales Order Item"),
|
||||||
reqd: 1,
|
reqd: 1,
|
||||||
read_only: 1,
|
read_only: 1,
|
||||||
},
|
},
|
||||||
@ -260,7 +259,7 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
],
|
],
|
||||||
primary_action_label: __("Reserve Stock"),
|
primary_action_label: __("Reserve Stock"),
|
||||||
primary_action: () => {
|
primary_action: () => {
|
||||||
var data = {items: dialog.fields_dict.items.grid.get_selected_children()};
|
var data = {items: dialog.fields_dict.items.grid.data};
|
||||||
|
|
||||||
if (data.items && data.items.length > 0) {
|
if (data.items && data.items.length > 0) {
|
||||||
frappe.call({
|
frappe.call({
|
||||||
@ -278,9 +277,6 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
frappe.msgprint(__("Please select items to reserve."));
|
|
||||||
}
|
|
||||||
|
|
||||||
dialog.hide();
|
dialog.hide();
|
||||||
},
|
},
|
||||||
@ -292,7 +288,7 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
|
|
||||||
if (unreserved_qty > 0) {
|
if (unreserved_qty > 0) {
|
||||||
dialog.fields_dict.items.df.data.push({
|
dialog.fields_dict.items.df.data.push({
|
||||||
'name': item.name,
|
'sales_order_item': item.name,
|
||||||
'item_code': item.item_code,
|
'item_code': item.item_code,
|
||||||
'warehouse': item.warehouse,
|
'warehouse': item.warehouse,
|
||||||
'qty_to_reserve': (unreserved_qty / flt(item.conversion_factor))
|
'qty_to_reserve': (unreserved_qty / flt(item.conversion_factor))
|
||||||
@ -308,7 +304,7 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
cancel_stock_reservation_entries(frm) {
|
cancel_stock_reservation_entries(frm) {
|
||||||
const dialog = new frappe.ui.Dialog({
|
const dialog = new frappe.ui.Dialog({
|
||||||
title: __("Stock Unreservation"),
|
title: __("Stock Unreservation"),
|
||||||
size: "large",
|
size: "extra-large",
|
||||||
fields: [
|
fields: [
|
||||||
{
|
{
|
||||||
fieldname: "sr_entries",
|
fieldname: "sr_entries",
|
||||||
@ -316,14 +312,13 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
label: __("Reserved Stock"),
|
label: __("Reserved Stock"),
|
||||||
allow_bulk_edit: false,
|
allow_bulk_edit: false,
|
||||||
cannot_add_rows: true,
|
cannot_add_rows: true,
|
||||||
cannot_delete_rows: true,
|
|
||||||
in_place_edit: true,
|
in_place_edit: true,
|
||||||
data: [],
|
data: [],
|
||||||
fields: [
|
fields: [
|
||||||
{
|
{
|
||||||
fieldname: "name",
|
fieldname: "sre",
|
||||||
fieldtype: "Link",
|
fieldtype: "Link",
|
||||||
label: __("SRE"),
|
label: __("Stock Reservation Entry"),
|
||||||
options: "Stock Reservation Entry",
|
options: "Stock Reservation Entry",
|
||||||
reqd: 1,
|
reqd: 1,
|
||||||
read_only: 1,
|
read_only: 1,
|
||||||
@ -360,14 +355,14 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
],
|
],
|
||||||
primary_action_label: __("Unreserve Stock"),
|
primary_action_label: __("Unreserve Stock"),
|
||||||
primary_action: () => {
|
primary_action: () => {
|
||||||
var data = {sr_entries: dialog.fields_dict.sr_entries.grid.get_selected_children()};
|
var data = {sr_entries: dialog.fields_dict.sr_entries.grid.data};
|
||||||
|
|
||||||
if (data.sr_entries && data.sr_entries.length > 0) {
|
if (data.sr_entries && data.sr_entries.length > 0) {
|
||||||
frappe.call({
|
frappe.call({
|
||||||
doc: frm.doc,
|
doc: frm.doc,
|
||||||
method: "cancel_stock_reservation_entries",
|
method: "cancel_stock_reservation_entries",
|
||||||
args: {
|
args: {
|
||||||
sre_list: data.sr_entries,
|
sre_list: data.sr_entries.map(item => item.sre),
|
||||||
},
|
},
|
||||||
freeze: true,
|
freeze: true,
|
||||||
freeze_message: __('Unreserving Stock...'),
|
freeze_message: __('Unreserving Stock...'),
|
||||||
@ -377,9 +372,6 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
frappe.msgprint(__("Please select items to unreserve."));
|
|
||||||
}
|
|
||||||
|
|
||||||
dialog.hide();
|
dialog.hide();
|
||||||
},
|
},
|
||||||
@ -396,7 +388,7 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
r.message.forEach(sre => {
|
r.message.forEach(sre => {
|
||||||
if (flt(sre.reserved_qty) > flt(sre.delivered_qty)) {
|
if (flt(sre.reserved_qty) > flt(sre.delivered_qty)) {
|
||||||
dialog.fields_dict.sr_entries.df.data.push({
|
dialog.fields_dict.sr_entries.df.data.push({
|
||||||
'name': sre.name,
|
'sre': sre.name,
|
||||||
'item_code': sre.item_code,
|
'item_code': sre.item_code,
|
||||||
'warehouse': sre.warehouse,
|
'warehouse': sre.warehouse,
|
||||||
'qty': (flt(sre.reserved_qty) - flt(sre.delivered_qty))
|
'qty': (flt(sre.reserved_qty) - flt(sre.delivered_qty))
|
||||||
|
@ -233,7 +233,7 @@ class PickList(Document):
|
|||||||
for location in self.locations:
|
for location in self.locations:
|
||||||
if location.warehouse and location.sales_order and location.sales_order_item:
|
if location.warehouse and location.sales_order and location.sales_order_item:
|
||||||
item_details = {
|
item_details = {
|
||||||
"name": location.sales_order_item,
|
"sales_order_item": location.sales_order_item,
|
||||||
"item_code": location.item_code,
|
"item_code": location.item_code,
|
||||||
"warehouse": location.warehouse,
|
"warehouse": location.warehouse,
|
||||||
"qty_to_reserve": (flt(location.picked_qty) - flt(location.stock_reserved_qty)),
|
"qty_to_reserve": (flt(location.picked_qty) - flt(location.stock_reserved_qty)),
|
||||||
|
@ -781,7 +781,7 @@ class PurchaseReceipt(BuyingController):
|
|||||||
for item in self.items:
|
for item in self.items:
|
||||||
if item.sales_order and item.sales_order_item:
|
if item.sales_order and item.sales_order_item:
|
||||||
item_details = {
|
item_details = {
|
||||||
"name": item.sales_order_item,
|
"sales_order_item": item.sales_order_item,
|
||||||
"item_code": item.item_code,
|
"item_code": item.item_code,
|
||||||
"warehouse": item.warehouse,
|
"warehouse": item.warehouse,
|
||||||
"qty_to_reserve": item.stock_qty,
|
"qty_to_reserve": item.stock_qty,
|
||||||
|
@ -869,7 +869,7 @@ def create_stock_reservation_entries_for_so_items(
|
|||||||
items = []
|
items = []
|
||||||
if items_details:
|
if items_details:
|
||||||
for item in items_details:
|
for item in items_details:
|
||||||
so_item = frappe.get_doc("Sales Order Item", item.get("name"))
|
so_item = frappe.get_doc("Sales Order Item", item.get("sales_order_item"))
|
||||||
so_item.warehouse = item.get("warehouse")
|
so_item.warehouse = item.get("warehouse")
|
||||||
so_item.qty_to_reserve = (
|
so_item.qty_to_reserve = (
|
||||||
flt(item.get("qty_to_reserve"))
|
flt(item.get("qty_to_reserve"))
|
||||||
@ -1053,12 +1053,14 @@ def cancel_stock_reservation_entries(
|
|||||||
from_voucher_type: Literal["Pick List", "Purchase Receipt"] = None,
|
from_voucher_type: Literal["Pick List", "Purchase Receipt"] = None,
|
||||||
from_voucher_no: str = None,
|
from_voucher_no: str = None,
|
||||||
from_voucher_detail_no: str = None,
|
from_voucher_detail_no: str = None,
|
||||||
sre_list: list[dict] = None,
|
sre_list: list = None,
|
||||||
notify: bool = True,
|
notify: bool = True,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Cancel Stock Reservation Entries."""
|
"""Cancel Stock Reservation Entries."""
|
||||||
|
|
||||||
if not sre_list:
|
if not sre_list:
|
||||||
|
sre_list = {}
|
||||||
|
|
||||||
if voucher_type and voucher_no:
|
if voucher_type and voucher_no:
|
||||||
sre_list = get_stock_reservation_entries_for_voucher(
|
sre_list = get_stock_reservation_entries_for_voucher(
|
||||||
voucher_type, voucher_no, voucher_detail_no, fields=["name"]
|
voucher_type, voucher_no, voucher_detail_no, fields=["name"]
|
||||||
@ -1082,9 +1084,11 @@ def cancel_stock_reservation_entries(
|
|||||||
|
|
||||||
sre_list = query.run(as_dict=True)
|
sre_list = query.run(as_dict=True)
|
||||||
|
|
||||||
|
sre_list = [d.name for d in sre_list]
|
||||||
|
|
||||||
if sre_list:
|
if sre_list:
|
||||||
for sre in sre_list:
|
for sre in sre_list:
|
||||||
frappe.get_doc("Stock Reservation Entry", sre["name"]).cancel()
|
frappe.get_doc("Stock Reservation Entry", sre).cancel()
|
||||||
|
|
||||||
if notify:
|
if notify:
|
||||||
msg = _("Stock Reservation Entries Cancelled")
|
msg = _("Stock Reservation Entries Cancelled")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user