mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-06 13:49:13 +00:00
feat: Barcode scanning in Stock Reconciliation
[skip ci]
This commit is contained in:
committed by
Ankush Menat
parent
205c8c2bda
commit
1736ab57ac
@@ -55,6 +55,25 @@ frappe.ui.form.on("Stock Reconciliation", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
scan_barcode: function(frm) {
|
||||||
|
const barcode_scanner = new erpnext.utils.BarcodeScanner({frm:frm});
|
||||||
|
barcode_scanner.process_scan();
|
||||||
|
},
|
||||||
|
|
||||||
|
scan_mode: function(frm) {
|
||||||
|
if (frm.doc.scan_mode) {
|
||||||
|
frappe.show_alert({
|
||||||
|
message: __("Scan mode enabled, existing quantity will not be fetched."),
|
||||||
|
indicator: "green"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
set_warehouse: function(frm) {
|
||||||
|
let transaction_controller = new erpnext.TransactionController({frm:frm});
|
||||||
|
transaction_controller.autofill_warehouse(frm.doc.items, "warehouse", frm.doc.set_warehouse);
|
||||||
|
},
|
||||||
|
|
||||||
get_items: function(frm) {
|
get_items: function(frm) {
|
||||||
let fields = [
|
let fields = [
|
||||||
{
|
{
|
||||||
@@ -148,15 +167,18 @@ frappe.ui.form.on("Stock Reconciliation", {
|
|||||||
batch_no: d.batch_no
|
batch_no: d.batch_no
|
||||||
},
|
},
|
||||||
callback: function(r) {
|
callback: function(r) {
|
||||||
frappe.model.set_value(cdt, cdn, "qty", r.message.qty);
|
const row = frappe.model.get_doc(cdt, cdn);
|
||||||
|
if (!frm.doc.scan_mode) {
|
||||||
|
frappe.model.set_value(cdt, cdn, "qty", r.message.qty);
|
||||||
|
}
|
||||||
frappe.model.set_value(cdt, cdn, "valuation_rate", r.message.rate);
|
frappe.model.set_value(cdt, cdn, "valuation_rate", r.message.rate);
|
||||||
frappe.model.set_value(cdt, cdn, "current_qty", r.message.qty);
|
frappe.model.set_value(cdt, cdn, "current_qty", r.message.qty);
|
||||||
frappe.model.set_value(cdt, cdn, "current_valuation_rate", r.message.rate);
|
frappe.model.set_value(cdt, cdn, "current_valuation_rate", r.message.rate);
|
||||||
frappe.model.set_value(cdt, cdn, "current_amount", r.message.rate * r.message.qty);
|
frappe.model.set_value(cdt, cdn, "current_amount", r.message.rate * r.message.qty);
|
||||||
frappe.model.set_value(cdt, cdn, "amount", r.message.rate * r.message.qty);
|
frappe.model.set_value(cdt, cdn, "amount", row.qty * row.valuation_rate);
|
||||||
frappe.model.set_value(cdt, cdn, "current_serial_no", r.message.serial_nos);
|
frappe.model.set_value(cdt, cdn, "current_serial_no", r.message.serial_nos);
|
||||||
|
|
||||||
if (frm.doc.purpose == "Stock Reconciliation") {
|
if (frm.doc.purpose == "Stock Reconciliation" && !frm.doc.scan_mode) {
|
||||||
frappe.model.set_value(cdt, cdn, "serial_no", r.message.serial_nos);
|
frappe.model.set_value(cdt, cdn, "serial_no", r.message.serial_nos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -239,7 +261,14 @@ frappe.ui.form.on("Stock Reconciliation Item", {
|
|||||||
const serial_nos = child.serial_no.trim().split('\n');
|
const serial_nos = child.serial_no.trim().split('\n');
|
||||||
frappe.model.set_value(cdt, cdn, "qty", serial_nos.length);
|
frappe.model.set_value(cdt, cdn, "qty", serial_nos.length);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
|
||||||
|
items_add: function(frm, cdt, cdn) {
|
||||||
|
var item = frappe.get_doc(cdt, cdn);
|
||||||
|
if (!item.warehouse && frm.doc.set_warehouse) {
|
||||||
|
frappe.model.set_value(cdt, cdn, "warehouse", frm.doc.set_warehouse);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,12 @@
|
|||||||
"posting_date",
|
"posting_date",
|
||||||
"posting_time",
|
"posting_time",
|
||||||
"set_posting_time",
|
"set_posting_time",
|
||||||
|
"section_break_8",
|
||||||
|
"set_warehouse",
|
||||||
|
"section_break_22",
|
||||||
|
"scan_barcode",
|
||||||
|
"column_break_12",
|
||||||
|
"scan_mode",
|
||||||
"sb9",
|
"sb9",
|
||||||
"items",
|
"items",
|
||||||
"section_break_9",
|
"section_break_9",
|
||||||
@@ -139,13 +145,44 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "dimension_col_break",
|
"fieldname": "dimension_col_break",
|
||||||
"fieldtype": "Column Break"
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "section_break_8",
|
||||||
|
"fieldtype": "Section Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "scan_barcode",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Scan Barcode",
|
||||||
|
"options": "Barcode"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "0",
|
||||||
|
"description": "Disables auto-fetching of existing quantity",
|
||||||
|
"fieldname": "scan_mode",
|
||||||
|
"fieldtype": "Check",
|
||||||
|
"label": "Scan Mode"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "set_warehouse",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Default Warehouse",
|
||||||
|
"options": "Warehouse"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "section_break_22",
|
||||||
|
"fieldtype": "Section Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_12",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"icon": "fa fa-upload-alt",
|
"icon": "fa fa-upload-alt",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2022-02-06 14:28:19.043905",
|
"modified": "2022-03-27 08:57:47.161959",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Stock Reconciliation",
|
"name": "Stock Reconciliation",
|
||||||
|
|||||||
Reference in New Issue
Block a user