warehouse layers [switchable]
This commit is contained in:
+184
-133
@@ -65,20 +65,20 @@
|
||||
<option value="">Select warehouse...</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3 col-lg-3">
|
||||
<label class="form-label">From Zone</label>
|
||||
<div class="mb-3 col-lg-3" id="group_zone_from">
|
||||
<label class="form-label" id="label_zone_from">From Zone</label>
|
||||
<select name="zone" id="zone_from" role="from" class="form-select" required disabled>
|
||||
<option value="">Please select zone</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3 col-lg-3">
|
||||
<label class="form-label">From Aisle</label>
|
||||
<div class="mb-3 col-lg-3" id="group_aisle_from">
|
||||
<label class="form-label" id="label_aisle_from">From Aisle</label>
|
||||
<select name="aisle" id="aisle_from" role="from" class="form-select" required disabled>
|
||||
<option value="">Please select aisle</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3 col-lg-3">
|
||||
<label class="form-label">From Rack</label>
|
||||
<label class="form-label" id="label_rack_from">From Rack</label>
|
||||
<select name="rack" id="rack_from" role="from" class="form-select" required disabled>
|
||||
<option value="">Please select rack</option>
|
||||
</select>
|
||||
@@ -97,20 +97,20 @@
|
||||
<option value="">Select warehouse...</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3 col-lg-3">
|
||||
<label class="form-label">To Zone</label>
|
||||
<div class="mb-3 col-lg-3" id="group_zone_to">
|
||||
<label class="form-label" id="label_zone_to">To Zone</label>
|
||||
<select name="zone" id="zone_to" role="to" class="form-select" required>
|
||||
<option value="">Please select zone</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3 col-lg-3">
|
||||
<label class="form-label">To Aisle</label>
|
||||
<div class="mb-3 col-lg-3" id="group_aisle_to">
|
||||
<label class="form-label" id="label_aisle_to">To Aisle</label>
|
||||
<select name="aisle" id="aisle_to" role="to" class="form-select" required>
|
||||
<option value="">Please select aisle</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3 col-lg-3">
|
||||
<label class="form-label">To Rack</label>
|
||||
<label class="form-label" id="label_rack_to">To Rack</label>
|
||||
<select name="rack" id="rack_to" role="to" class="form-select" required>
|
||||
<option value="">Please select rack</option>
|
||||
</select>
|
||||
@@ -143,43 +143,97 @@
|
||||
<?php require "../include_ending.php";?>
|
||||
|
||||
<script>
|
||||
|
||||
// ── Location config ───────────────────────────────────────────────────────
|
||||
var advanced = false;
|
||||
var label_rack = 'Location';
|
||||
var label_zone = 'Zone';
|
||||
var label_aisle = 'Aisle';
|
||||
|
||||
function load_location_config(callback) {
|
||||
return ajax_request({
|
||||
url: '<?php echo $server_url?>setting/api/engine/company_setting.php',
|
||||
autoPrepare: true,
|
||||
checkRequired: 0,
|
||||
action: 'read',
|
||||
onSuccess: function(res) {
|
||||
var s = res.output;
|
||||
advanced = s.advanced_location == 1;
|
||||
label_rack = s.location_label_rack || (advanced ? 'Rack' : 'Location');
|
||||
label_zone = s.location_label_zone || 'Zone';
|
||||
label_aisle = s.location_label_aisle || 'Aisle';
|
||||
if (callback) callback();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function apply_location_labels() {
|
||||
if (advanced) {
|
||||
$('#group_zone_from, #group_zone_to').show();
|
||||
$('#group_aisle_from, #group_aisle_to').show();
|
||||
$('#label_zone_from').text('From ' + label_zone);
|
||||
$('#label_zone_to').text('To ' + label_zone);
|
||||
$('#label_aisle_from').text('From ' + label_aisle);
|
||||
$('#label_aisle_to').text('To ' + label_aisle);
|
||||
$('#label_rack_from').text('From ' + label_rack);
|
||||
$('#label_rack_to').text('To ' + label_rack);
|
||||
// Update select placeholders
|
||||
$('#zone_from, #zone_to').find('option:first').text('Please select ' + label_zone.toLowerCase());
|
||||
$('#aisle_from, #aisle_to').find('option:first').text('Please select ' + label_aisle.toLowerCase());
|
||||
$('#rack_from, #rack_to').find('option:first').text('Please select ' + label_rack.toLowerCase());
|
||||
} else {
|
||||
$('#group_zone_from, #group_zone_to').hide();
|
||||
$('#group_aisle_from, #group_aisle_to').hide();
|
||||
$('#label_rack_from').text('From ' + label_rack);
|
||||
$('#label_rack_to').text('To ' + label_rack);
|
||||
$('#rack_from, #rack_to').find('option:first').text('Please select ' + label_rack.toLowerCase());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ── Submit ────────────────────────────────────────────────────────────────
|
||||
function manage_stock_transfer() {
|
||||
|
||||
// Simple mode — mirror rack value to zone and aisle before submit
|
||||
if (!advanced) {
|
||||
var rack_from_val = $('#rack_from').val();
|
||||
var rack_to_val = $('#rack_to').val();
|
||||
$('#zone_from').val(rack_from_val);
|
||||
$('#aisle_from').val(rack_from_val);
|
||||
$('#zone_to').val(rack_to_val);
|
||||
$('#aisle_to').val(rack_to_val);
|
||||
}
|
||||
|
||||
return ajax_request({
|
||||
url: "<?php echo $server_url?>ics/api/engine/manage_stock_transfer.php",
|
||||
url: '<?php echo $server_url?>ics/api/engine/manage_stock_transfer.php',
|
||||
autoPrepare: true,
|
||||
checkRequired: 1,
|
||||
debugMode: 0,
|
||||
data: {
|
||||
"contact_id": $("#contact").attr('data-id')
|
||||
},
|
||||
data: { 'contact_id': $('#contact').attr('data-id') },
|
||||
action: 'manage',
|
||||
onSuccess: function(res) {
|
||||
window.location.href = "<?php echo $server_url?>ics/stock_transfer.php";
|
||||
onSuccess: function() {
|
||||
window.location.href = '<?php echo $server_url?>ics/stock_transfer.php';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// ── Step 1: Product selected → load active lots + to-warehouses ───────
|
||||
// ── Step 1: Product selected → load active lots + from-warehouses ─────────
|
||||
function retrieve_active_lot() {
|
||||
|
||||
var sku = $('#product_sku').attr('secondary') || $('#product_sku').val();
|
||||
if (!sku) return;
|
||||
|
||||
return ajax_request({
|
||||
url: "<?php echo $server_url?>ics/api/engine/retrieve_active_lot.php",
|
||||
url: '<?php echo $server_url?>ics/api/engine/retrieve_active_lot.php',
|
||||
autoPrepare: true,
|
||||
checkRequired: 0,
|
||||
noLoading: true,
|
||||
action: 'read',
|
||||
data: { "product_sku": sku },
|
||||
data: { 'product_sku': sku },
|
||||
onSuccess: function(res) {
|
||||
var option = '<option value="">Select lot... (optional)</option>';
|
||||
$.each(res.output, function(i, item) {
|
||||
var label = item.lot_number;
|
||||
if (item.expiry_date) label += ' — exp: ' + item.expiry_date;
|
||||
option += `<option value="${item.lot_number}">${label}</option>`;
|
||||
option += '<option value="' + item.lot_number + '">' + label + '</option>';
|
||||
});
|
||||
$('#lot_number').html(option).prop('disabled', false);
|
||||
$('#serial_number').html('<option value="">Select serial... (optional)</option>').prop('disabled', false);
|
||||
@@ -189,26 +243,21 @@
|
||||
}
|
||||
|
||||
|
||||
// ── Step 2: Lot selected → load active serials ────────────────────────
|
||||
// ── Step 2: Lot selected → load active serials ────────────────────────────
|
||||
function retrieve_active_serial() {
|
||||
|
||||
var sku = $('#product_sku').attr('secondary') || $('#product_sku').val();
|
||||
if (!sku) return;
|
||||
|
||||
return ajax_request({
|
||||
url: "<?php echo $server_url?>ics/api/engine/retrieve_active_serial.php",
|
||||
url: '<?php echo $server_url?>ics/api/engine/retrieve_active_serial.php',
|
||||
autoPrepare: true,
|
||||
checkRequired: 0,
|
||||
noLoading: true,
|
||||
action: 'read',
|
||||
data: {
|
||||
"product_sku": sku,
|
||||
"lot_number": $('#lot_number').val()
|
||||
},
|
||||
data: { 'product_sku': sku, 'lot_number': $('#lot_number').val() },
|
||||
onSuccess: function(res) {
|
||||
var option = '<option value="">Select serial... (optional)</option>';
|
||||
$.each(res.output, function(i, serial) {
|
||||
option += `<option value="${serial}">${serial}</option>`;
|
||||
option += '<option value="' + serial + '">' + serial + '</option>';
|
||||
});
|
||||
$('#serial_number').html(option).prop('disabled', false);
|
||||
reset_from_location();
|
||||
@@ -217,199 +266,205 @@
|
||||
}
|
||||
|
||||
|
||||
// ── Warehouse loaders ─────────────────────────────────────────────────
|
||||
// ── Warehouse loaders ─────────────────────────────────────────────────────
|
||||
function retrieve_warehouse(type) {
|
||||
|
||||
return ajax_request({
|
||||
url: "<?php echo $server_url?>ics/api/engine/retrieve_warehouse.php",
|
||||
url: '<?php echo $server_url?>ics/api/engine/retrieve_warehouse.php',
|
||||
autoPrepare: true,
|
||||
checkRequired: 0,
|
||||
noLoading: true,
|
||||
data: { "type": type, "lot_number": type === 'from' ? $('#lot_number').val() : '' },
|
||||
data: { 'type': type, 'lot_number': type === 'from' ? $('#lot_number').val() : '' },
|
||||
action: 'read',
|
||||
debugMode: 0,
|
||||
onSuccess: function(res) {
|
||||
var option = '<option value="">Select warehouse...</option>';
|
||||
$.each(res.output, function(key, item) {
|
||||
option += `<option value='${item.id}'>${item.warehouse_name}</option>`;
|
||||
option += '<option value="' + item.id + '">' + item.warehouse_name + '</option>';
|
||||
});
|
||||
$(`select[name='warehouse'][role='${type}']`).html(option).prop('disabled', false);
|
||||
$('select[name="warehouse"][role="' + type + '"]').html(option).prop('disabled', false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// ── Zone / Aisle / Rack — From (type=from, filtered by sku+lot+serial) ─
|
||||
// ── Zone / Aisle / Rack loaders ───────────────────────────────────────────
|
||||
function retrieve_zone(type, callback) {
|
||||
|
||||
var extra = {};
|
||||
if (type === 'from') {
|
||||
extra = {
|
||||
"product_sku": $('#product_sku').attr('secondary') || $('#product_sku').val(),
|
||||
"lot_number": $('#lot_number').val(),
|
||||
"serial_number": $('#serial_number').val()
|
||||
'product_sku': $('#product_sku').attr('secondary') || $('#product_sku').val(),
|
||||
'lot_number': $('#lot_number').val(),
|
||||
'serial_number': $('#serial_number').val()
|
||||
};
|
||||
}
|
||||
|
||||
return ajax_request({
|
||||
url: "<?php echo $server_url?>ics/api/engine/retrieve_zone.php",
|
||||
url: '<?php echo $server_url?>ics/api/engine/retrieve_zone.php',
|
||||
autoPrepare: true,
|
||||
checkRequired: 0,
|
||||
noLoading: true,
|
||||
data: Object.assign({ "type": type }, extra),
|
||||
data: Object.assign({ 'type': type }, extra),
|
||||
action: 'read',
|
||||
onSuccess: function(res) {
|
||||
var option = '<option value="">Please select zone</option>';
|
||||
var option = '<option value="">Please select ' + label_zone.toLowerCase() + '</option>';
|
||||
$.each(res.output, function(key, item) {
|
||||
option += `<option value='${item.zone}'>${item.zone}</option>`;
|
||||
option += '<option value="' + item.zone + '">' + item.zone + '</option>';
|
||||
});
|
||||
$(`select[name='zone'][role='${type}']`).html(option).prop('disabled', false);
|
||||
$('select[name="zone"][role="' + type + '"]').html(option).prop('disabled', false);
|
||||
if (callback) callback();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function retrieve_aisle(type, callback) {
|
||||
|
||||
var extra = {};
|
||||
if (type === 'from') {
|
||||
extra = {
|
||||
"product_sku": $('#product_sku').attr('secondary') || $('#product_sku').val(),
|
||||
"lot_number": $('#lot_number').val(),
|
||||
"serial_number": $('#serial_number').val()
|
||||
'product_sku': $('#product_sku').attr('secondary') || $('#product_sku').val(),
|
||||
'lot_number': $('#lot_number').val(),
|
||||
'serial_number': $('#serial_number').val()
|
||||
};
|
||||
}
|
||||
|
||||
return ajax_request({
|
||||
url: "<?php echo $server_url?>ics/api/engine/retrieve_aisle.php",
|
||||
url: '<?php echo $server_url?>ics/api/engine/retrieve_aisle.php',
|
||||
autoPrepare: true,
|
||||
checkRequired: 0,
|
||||
noLoading: true,
|
||||
data: Object.assign({ "type": type }, extra),
|
||||
data: Object.assign({ 'type': type }, extra),
|
||||
action: 'read',
|
||||
onSuccess: function(res) {
|
||||
var option = '<option value="">Please select aisle</option>';
|
||||
var option = '<option value="">Please select ' + label_aisle.toLowerCase() + '</option>';
|
||||
$.each(res.output, function(key, item) {
|
||||
option += `<option value='${item}'>${item}</option>`;
|
||||
option += '<option value="' + item + '">' + item + '</option>';
|
||||
});
|
||||
$(`select[name='aisle'][role='${type}']`).html(option).prop('disabled', false);
|
||||
$('select[name="aisle"][role="' + type + '"]').html(option).prop('disabled', false);
|
||||
if (callback) callback();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function retrieve_rack(type, callback) {
|
||||
|
||||
var extra = {};
|
||||
if (type === 'from') {
|
||||
extra = {
|
||||
"product_sku": $('#product_sku').attr('secondary') || $('#product_sku').val(),
|
||||
"lot_number": $('#lot_number').val(),
|
||||
"serial_number": $('#serial_number').val()
|
||||
'product_sku': $('#product_sku').attr('secondary') || $('#product_sku').val(),
|
||||
'lot_number': $('#lot_number').val(),
|
||||
'serial_number': $('#serial_number').val()
|
||||
};
|
||||
}
|
||||
|
||||
return ajax_request({
|
||||
url: "<?php echo $server_url?>ics/api/engine/retrieve_rack.php",
|
||||
url: '<?php echo $server_url?>ics/api/engine/retrieve_rack.php',
|
||||
autoPrepare: true,
|
||||
checkRequired: 0,
|
||||
noLoading: true,
|
||||
data: Object.assign({ "type": type }, extra),
|
||||
data: Object.assign({ 'type': type }, extra),
|
||||
action: 'read',
|
||||
onSuccess: function(res) {
|
||||
var option = '<option value="">Please select rack</option>';
|
||||
var option = '<option value="">Please select ' + label_rack.toLowerCase() + '</option>';
|
||||
$.each(res.output, function(key, item) {
|
||||
option += `<option value='${item}'>${item}</option>`;
|
||||
option += '<option value="' + item + '">' + item + '</option>';
|
||||
});
|
||||
$(`select[name='rack'][role='${type}']`).html(option).prop('disabled', false);
|
||||
$('select[name="rack"][role="' + type + '"]').html(option).prop('disabled', false);
|
||||
if (callback) callback();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// ── Reset from-location dropdowns ─────────────────────────────────────
|
||||
// ── Reset from-location dropdowns ─────────────────────────────────────────
|
||||
function reset_from_location() {
|
||||
$('#warehouse_from').html('<option value="">Select warehouse...</option>').prop('disabled', true);
|
||||
$('#zone_from').html('<option value="">Please select zone</option>').prop('disabled', true);
|
||||
$('#aisle_from').html('<option value="">Please select aisle</option>').prop('disabled', true);
|
||||
$('#rack_from').html('<option value="">Please select rack</option>').prop('disabled', true);
|
||||
$('#zone_from').html('<option value="">Please select ' + label_zone.toLowerCase() + '</option>').prop('disabled', true);
|
||||
$('#aisle_from').html('<option value="">Please select ' + label_aisle.toLowerCase() + '</option>').prop('disabled', true);
|
||||
$('#rack_from').html('<option value="">Please select ' + label_rack.toLowerCase() + '</option>').prop('disabled', true);
|
||||
}
|
||||
|
||||
|
||||
// ── Edit mode ─────────────────────────────────────────────────────────
|
||||
// ── Edit mode ─────────────────────────────────────────────────────────────
|
||||
function retrieve_for_edit() {
|
||||
|
||||
<?php if(empty($_GET["id"])){ ?>
|
||||
<?php if(empty($_GET['id'])){ ?>
|
||||
return false;
|
||||
<?php } ?>
|
||||
|
||||
return ajax_request({
|
||||
url: "<?php echo $server_url?>ics/api/engine/retrieve_stock_transfer.php",
|
||||
url: '<?php echo $server_url?>ics/api/engine/retrieve_stock_transfer.php',
|
||||
autoPrepare: true,
|
||||
checkRequired: 0,
|
||||
debugMode: 0,
|
||||
action: 'read',
|
||||
onSuccess: function(res) {
|
||||
|
||||
var data = res.output;
|
||||
var from_wh = data.ref.ref_warehouse;
|
||||
var to_wh = data.ref_warehouse;
|
||||
var data = res.output;
|
||||
var from_wh = data.ref.ref_warehouse;
|
||||
var to_wh = data.ref_warehouse;
|
||||
|
||||
// Lock lot/serial
|
||||
$('#lot_number').html(`<option value="${data.lot_number || ''}">${data.lot_number || '—'}</option>`)
|
||||
$('#lot_number').html('<option value="' + (data.lot_number || '') + '">' + (data.lot_number || '—') + '</option>')
|
||||
.val(data.lot_number || '').prop('disabled', true);
|
||||
$('#serial_number').html(`<option value="${data.serial_number || ''}">${data.serial_number || '—'}</option>`)
|
||||
$('#serial_number').html('<option value="' + (data.serial_number || '') + '">' + (data.serial_number || '—') + '</option>')
|
||||
.val(data.serial_number || '').prop('disabled', true);
|
||||
|
||||
// From side
|
||||
$("select[name='warehouse'][role='from']").val(from_wh).prop('disabled', true);
|
||||
retrieve_zone('from', function() {
|
||||
$("select[name='zone'][role='from']").val(data.zone).prop('disabled', true);
|
||||
retrieve_aisle('from', function() {
|
||||
$("select[name='aisle'][role='from']").val(data.aisle).prop('disabled', true);
|
||||
retrieve_rack('from', function() {
|
||||
$("select[name='rack'][role='from']").val(data.rack).prop('disabled', true);
|
||||
|
||||
// To side
|
||||
$("select[name='warehouse'][role='to']").val(to_wh).prop('disabled', true);
|
||||
retrieve_zone('to', function() {
|
||||
$("select[name='zone'][role='to']").val(data.ref.zone).prop('disabled', true);
|
||||
retrieve_aisle('to', function() {
|
||||
$("select[name='aisle'][role='to']").val(data.ref.aisle).prop('disabled', true);
|
||||
retrieve_rack('to', function() {
|
||||
$("select[name='rack'][role='to']").val(data.ref.rack).prop('disabled', true);
|
||||
});
|
||||
});
|
||||
if (advanced) {
|
||||
// Full cascade for From
|
||||
$('select[name="warehouse"][role="from"]').val(from_wh).prop('disabled', true);
|
||||
retrieve_zone('from', function() {
|
||||
$('select[name="zone"][role="from"]').val(data.zone).prop('disabled', true);
|
||||
retrieve_aisle('from', function() {
|
||||
$('select[name="aisle"][role="from"]').val(data.aisle).prop('disabled', true);
|
||||
retrieve_rack('from', function() {
|
||||
$('select[name="rack"][role="from"]').val(data.rack).prop('disabled', true);
|
||||
populate_to_side(data, to_wh);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// Simple mode — skip zone/aisle cascade, load rack directly
|
||||
$('select[name="warehouse"][role="from"]').val(from_wh).prop('disabled', true);
|
||||
retrieve_rack('from', function() {
|
||||
$('select[name="rack"][role="from"]').val(data.rack).prop('disabled', true);
|
||||
populate_to_side_simple(data, to_wh);
|
||||
});
|
||||
}
|
||||
|
||||
// Common fields
|
||||
$.each(data, function(key, item) {
|
||||
if (!['warehouse', 'zone', 'aisle', 'rack', 'lot_number', 'serial_number', 'ref'].includes(key)) {
|
||||
$(`#${key}`).val(item);
|
||||
$('#' + key).val(item);
|
||||
}
|
||||
});
|
||||
|
||||
$('#contact').val(data.contact_name)
|
||||
.attr('secondary', data.contact_name)
|
||||
.attr('data-id', data.contact_id);
|
||||
|
||||
$('#product_name').val(data.product_name);
|
||||
$('#product_sku').attr('secondary', data.product_sku).prop('disabled', true);
|
||||
|
||||
$('button[type=submit]').text('Update');
|
||||
$('button[type=reset]').hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function populate_to_side(data, to_wh) {
|
||||
$('select[name="warehouse"][role="to"]').val(to_wh).prop('disabled', true);
|
||||
retrieve_zone('to', function() {
|
||||
$('select[name="zone"][role="to"]').val(data.ref.zone).prop('disabled', true);
|
||||
retrieve_aisle('to', function() {
|
||||
$('select[name="aisle"][role="to"]').val(data.ref.aisle).prop('disabled', true);
|
||||
retrieve_rack('to', function() {
|
||||
$('select[name="rack"][role="to"]').val(data.ref.rack).prop('disabled', true);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// ── Boot ─────────────────────────────────────────────────────────────
|
||||
function populate_to_side_simple(data, to_wh) {
|
||||
$('select[name="warehouse"][role="to"]').val(to_wh).prop('disabled', true);
|
||||
retrieve_rack('to', function() {
|
||||
$('select[name="rack"][role="to"]').val(data.ref.rack).prop('disabled', true);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// ── Boot ─────────────────────────────────────────────────────────────────
|
||||
$(async function() {
|
||||
try {
|
||||
await load_location_config(apply_location_labels);
|
||||
await retrieve_warehouse('to');
|
||||
await retrieve_for_edit();
|
||||
} catch(e) {
|
||||
@@ -418,10 +473,9 @@
|
||||
});
|
||||
|
||||
|
||||
// ── Change handlers (create mode only) ───────────────────────────────
|
||||
<?php if(empty($_GET["id"])){ ?>
|
||||
// ── Change handlers (create mode only) ───────────────────────────────────
|
||||
<?php if(empty($_GET['id'])){ ?>
|
||||
|
||||
// SKU selected → load lots + from-warehouse
|
||||
$('input#product_sku').on('blur', function() {
|
||||
var sku = $(this).attr('secondary');
|
||||
if (!sku) return;
|
||||
@@ -429,50 +483,47 @@
|
||||
retrieve_warehouse('from');
|
||||
});
|
||||
|
||||
// Lot selected → reload serials + reset from-location
|
||||
$('#lot_number').on('change', function() {
|
||||
retrieve_active_serial();
|
||||
retrieve_warehouse('from');
|
||||
});
|
||||
|
||||
// Serial selected → reload from-warehouse
|
||||
$('#serial_number').on('change', function() {
|
||||
retrieve_warehouse('from');
|
||||
});
|
||||
|
||||
// From warehouse → from zone
|
||||
$("select[name='warehouse'][role='from']").on('change', function() {
|
||||
retrieve_zone('from');
|
||||
// From warehouse → zone (advanced) or rack directly (simple)
|
||||
$('select[name="warehouse"][role="from"]').on('change', function() {
|
||||
if (advanced) { retrieve_zone('from'); } else { retrieve_rack('from'); }
|
||||
});
|
||||
|
||||
// From zone → from aisle
|
||||
$("select[name='zone'][role='from']").on('change', function() {
|
||||
retrieve_aisle('from');
|
||||
// From zone → aisle (advanced only)
|
||||
$('select[name="zone"][role="from"]').on('change', function() {
|
||||
if (advanced) retrieve_aisle('from');
|
||||
});
|
||||
|
||||
// From aisle → from rack
|
||||
$("select[name='aisle'][role='from']").on('change', function() {
|
||||
retrieve_rack('from');
|
||||
// From aisle → rack (advanced only)
|
||||
$('select[name="aisle"][role="from"]').on('change', function() {
|
||||
if (advanced) retrieve_rack('from');
|
||||
});
|
||||
|
||||
// To warehouse → to zone
|
||||
$("select[name='warehouse'][role='to']").on('change', function() {
|
||||
retrieve_zone('to');
|
||||
// To warehouse → zone (advanced) or rack directly (simple)
|
||||
$('select[name="warehouse"][role="to"]').on('change', function() {
|
||||
if (advanced) { retrieve_zone('to'); } else { retrieve_rack('to'); }
|
||||
});
|
||||
|
||||
// To zone → to aisle
|
||||
$("select[name='zone'][role='to']").on('change', function() {
|
||||
retrieve_aisle('to');
|
||||
// To zone → aisle (advanced only)
|
||||
$('select[name="zone"][role="to"]').on('change', function() {
|
||||
if (advanced) retrieve_aisle('to');
|
||||
});
|
||||
|
||||
// To aisle → to rack
|
||||
$("select[name='aisle'][role='to']").on('change', function() {
|
||||
retrieve_rack('to');
|
||||
// To aisle → rack (advanced only)
|
||||
$('select[name="aisle"][role="to"]').on('change', function() {
|
||||
if (advanced) retrieve_rack('to');
|
||||
});
|
||||
|
||||
<?php } ?>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user