From d10ff171090f8ee0b8292cd5a35fedf65dc91c87 Mon Sep 17 00:00:00 2001 From: Neha Fathima Date: Sun, 12 Apr 2026 15:57:50 +0530 Subject: [PATCH 1/2] feat: stock transfer implementation --- rmax_custom/fixtures/property_setter.json | 35 +++++++++++ rmax_custom/hooks.py | 18 ++---- rmax_custom/public/js/materiel_request.js | 28 +++++++-- .../doctype/stock_transfer/stock_transfer.js | 58 ++++++++++--------- .../doctype/stock_transfer/stock_transfer.py | 7 +-- 5 files changed, 96 insertions(+), 50 deletions(-) diff --git a/rmax_custom/fixtures/property_setter.json b/rmax_custom/fixtures/property_setter.json index fd4312a..9116a0b 100644 --- a/rmax_custom/fixtures/property_setter.json +++ b/rmax_custom/fixtures/property_setter.json @@ -5,6 +5,41 @@ "docstatus": 0, "doctype": "Property Setter", "doctype_or_field": "DocField", +<<<<<<< HEAD +======= + "field_name": "material_request_type", + "is_system_generated": 0, + "modified": "2026-04-06 18:01:32.807738", + "module": null, + "name": "Material Request-material_request_type-default", + "property": "default", + "property_type": "Text", + "row_name": null, + "value": "Material Transfer" + }, + { + "default_value": null, + "doc_type": "Landed Cost Item", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocField", + "field_name": "qty", + "is_system_generated": 0, + "modified": "2026-03-14 15:18:50.370102", + "module": null, + "name": "Landed Cost Item-qty-columns", + "property": "columns", + "property_type": "Int", + "row_name": null, + "value": "1" + }, + { + "default_value": null, + "doc_type": "Material Request", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocField", +>>>>>>> 6c629b7 (feat: stock transfer implementation) "field_name": "schedule_date", "is_system_generated": 1, "modified": "2026-04-08 16:11:03.871048", diff --git a/rmax_custom/hooks.py b/rmax_custom/hooks.py index 7467fae..8586758 100644 --- a/rmax_custom/hooks.py +++ b/rmax_custom/hooks.py @@ -33,6 +33,7 @@ "/assets/rmax_custom/js/create_customer.js", "/assets/rmax_custom/js/create_multiple_supplier.js", "/assets/rmax_custom/js/materiel_request.js" + ] @@ -289,18 +290,6 @@ ] ] }, - { - "dt": "Property Setter", - "filters": [ - [ - "name", - "in", - [ - "Landed Cost Item-qty-columns", - ] - ] - ] - }, { "dt": "Property Setter", "filters": [ @@ -313,7 +302,10 @@ "Material Request Item-schedule_date-reqd", "Material Request Item-schedule_date-hidden", "Material Request Item-schedule_date-default", - "Material Request-schedule_date-hidden" + "Material Request-schedule_date-hidden", + "Landed Cost Item-qty-columns", + "Material Request-material_request_type-default" + ] ] ] diff --git a/rmax_custom/public/js/materiel_request.js b/rmax_custom/public/js/materiel_request.js index fe50354..3324eed 100644 --- a/rmax_custom/public/js/materiel_request.js +++ b/rmax_custom/public/js/materiel_request.js @@ -3,12 +3,29 @@ frappe.ui.form.on('Material Request', { if (frm.is_new()) { set_default_target(frm); } - }, + frm.set_query('set_warehouse', function() { + return { + ignore_user_permissions: 1, + filters: { + name: frm.doc.set_warehouse + } + }; + }); + frm.set_query('set_from_warehouse', function() { + return { + ignore_user_permissions: 1, + filters: { + company: frm.doc.company, + name: ["!=", frm.doc.set_warehouse] + } + }; + }) + + }, material_request_type: function(frm) { set_default_target(frm); - } - + }, }); function set_default_target(frm) { @@ -26,9 +43,7 @@ function set_default_target(frm) { }, callback: function(r) { if (r.message && r.message.length > 0 && r.message[0].for_value) { - let default_wh = r.message[0].for_value; - frm.set_value('set_warehouse', default_wh).then(() => { frm.refresh_field('set_warehouse'); }); @@ -38,4 +53,5 @@ function set_default_target(frm) { }); } -} \ No newline at end of file +} + diff --git a/rmax_custom/rmax_custom/doctype/stock_transfer/stock_transfer.js b/rmax_custom/rmax_custom/doctype/stock_transfer/stock_transfer.js index 999cb0e..428b3ae 100644 --- a/rmax_custom/rmax_custom/doctype/stock_transfer/stock_transfer.js +++ b/rmax_custom/rmax_custom/doctype/stock_transfer/stock_transfer.js @@ -11,7 +11,11 @@ frappe.ui.form.on('Stock Transfer', { return { ignore_user_permissions: 1, filters: { +<<<<<<< HEAD company: frm.doc.company +======= + name: frm.doc.set_source_warehouse +>>>>>>> 6c629b7 (feat: stock transfer implementation) } }; }); @@ -19,16 +23,21 @@ frappe.ui.form.on('Stock Transfer', { return { ignore_user_permissions: 1, filters: { +<<<<<<< HEAD company: frm.doc.company +======= + company: frm.doc.company, + name: ["!=", frm.doc.set_source_warehouse] + +>>>>>>> 6c629b7 (feat: stock transfer implementation) } }; }); }, - refresh: function(frm) { if (frm.doc.__islocal && !frm.doc.__source_fixed) { setTimeout(() => { - frm.set_value('set_source_warehouse', ''); + frm.set_value('set_target_warehouse', ''); frm.doc.__source_fixed = true; }, 200); @@ -36,7 +45,7 @@ frappe.ui.form.on('Stock Transfer', { }, before_save: function(frm) { - if (frm.doc.set_source_warehouse) { + if (frm.doc.set_target_warehouse) { frappe.call({ method: "frappe.client.get_list", @@ -46,7 +55,7 @@ frappe.ui.form.on('Stock Transfer', { filters: { user: frappe.session.user, allow: "Warehouse", - for_value: frm.doc.set_source_warehouse + for_value: frm.doc.set_target_warehouse }, fields: ["name"] }, @@ -62,7 +71,7 @@ frappe.ui.form.on('Stock Transfer', { doctype: "User Permission", user: frappe.session.user, allow: "Warehouse", - for_value: frm.doc.set_source_warehouse + for_value: frm.doc.set_target_warehouse } } }); @@ -75,33 +84,30 @@ frappe.ui.form.on('Stock Transfer', { }); - function set_default_target(frm) { - if (!frm.doc.set_target_warehouse) { - - frappe.call({ - method: "frappe.client.get_list", - args: { - doctype: "User Permission", - filters: { - user: frappe.session.user, - allow: "Warehouse", - is_default: 1 - }, - fields: ["for_value"], - limit: 1 + frappe.call({ + method: "frappe.client.get_list", + args: { + doctype: "User Permission", + filters: { + user: frappe.session.user, + allow: "Warehouse", + is_default: 1 }, - callback: function(r) { + fields: ["for_value"], + limit: 1 + }, + callback: function(r) { - if (r.message && r.message.length > 0) { - let default_wh = r.message[0].for_value; - frm.set_value('set_target_warehouse', default_wh); + if (r.message && r.message.length > 0) { + let default_wh = r.message[0].for_value; + if (!frm.doc.set_source_warehouse) { + frm.set_value('set_source_warehouse', default_wh); } - } - }); - } + } + }); } frappe.ui.form.on('Stock Transfer Item', { diff --git a/rmax_custom/rmax_custom/doctype/stock_transfer/stock_transfer.py b/rmax_custom/rmax_custom/doctype/stock_transfer/stock_transfer.py index d36fc55..070460f 100644 --- a/rmax_custom/rmax_custom/doctype/stock_transfer/stock_transfer.py +++ b/rmax_custom/rmax_custom/doctype/stock_transfer/stock_transfer.py @@ -22,10 +22,8 @@ def create_stock_entry(self): """Create Stock Entry for Material Transfer""" if not self.set_target_warehouse: frappe.throw("Target Warehouse is required") - if not self.set_source_warehouse: frappe.throw("Source Warehouse is required") - if not self.items: frappe.throw("No items found") se = frappe.new_doc("Stock Entry") @@ -43,18 +41,17 @@ def create_stock_entry(self): "s_warehouse": self.set_source_warehouse, "t_warehouse": self.set_target_warehouse }) - se.insert() self.stock_entry = se.name self.stock_entry_created = 1 - + se.submit() frappe.msgprint( f'Stock Entry Created: {se.name}', alert=True, indicator='green' ) - + @frappe.whitelist() def get_item_uom_conversion(item_code, uom): From 117482a2f45eafe5685e62d5d21e4535c29e1418 Mon Sep 17 00:00:00 2001 From: Neha Fathima Date: Sun, 12 Apr 2026 16:09:02 +0530 Subject: [PATCH 2/2] feat: conflict fixed --- rmax_custom/fixtures/property_setter.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/rmax_custom/fixtures/property_setter.json b/rmax_custom/fixtures/property_setter.json index 9116a0b..2766c52 100644 --- a/rmax_custom/fixtures/property_setter.json +++ b/rmax_custom/fixtures/property_setter.json @@ -5,8 +5,6 @@ "docstatus": 0, "doctype": "Property Setter", "doctype_or_field": "DocField", -<<<<<<< HEAD -======= "field_name": "material_request_type", "is_system_generated": 0, "modified": "2026-04-06 18:01:32.807738", @@ -39,7 +37,6 @@ "docstatus": 0, "doctype": "Property Setter", "doctype_or_field": "DocField", ->>>>>>> 6c629b7 (feat: stock transfer implementation) "field_name": "schedule_date", "is_system_generated": 1, "modified": "2026-04-08 16:11:03.871048",