Commit e5f44f2b by François C.

Merge branch '2947-merged-orders-order-by-po' into 'dev_cooperatic'

[REC] for grouped orders display order in list for ordering

See merge request !170
parents acd357d1 79cebb4d
Pipeline #2178 passed with stage
in 1 minute 29 seconds
...@@ -355,6 +355,10 @@ ...@@ -355,6 +355,10 @@
- RECEPTION_SHELF_LABEL_PRINT = True - RECEPTION_SHELF_LABEL_PRINT = True
- DISPLAY_COL_AUTRES = True
Display "Autres" column (showing select with action "rupture fournisseur")
- COEFF_MAG_ID = 1 - COEFF_MAG_ID = 1
DB coeff id, needed to compute product shelf price DB coeff id, needed to compute product shelf price
......
...@@ -188,6 +188,11 @@ div#container_edition { ...@@ -188,6 +188,11 @@ div#container_edition {
padding-bottom: 15px; padding-bottom: 15px;
} }
.title_partner_key {
font-weight: bolder;
font-size: 2rem;
}
/* Accordion style */ /* Accordion style */
/* Style the buttons that are used to open and close the accordion panel */ /* Style the buttons that are used to open and close the accordion panel */
...@@ -247,5 +252,9 @@ hr { ...@@ -247,5 +252,9 @@ hr {
#main_content {width: 100%;} #main_content {width: 100%;}
.select_product_action { .select_product_action {
max-width: 15px; max-width: 5px;
} }
.toProcess_line_edit, .toProcess_line_valid {
min-width: 11px;
}
\ No newline at end of file
...@@ -365,9 +365,7 @@ function display_orders_table() { ...@@ -365,9 +365,7 @@ function display_orders_table() {
table_orders.clear().destroy(); table_orders.clear().destroy();
$('#orders').empty(); $('#orders').empty();
} }
for (let j in orders) {
console.log(orders[j].id);
}
table_orders = $('#orders').DataTable({ table_orders = $('#orders').DataTable({
data: orders, data: orders,
columns:[ columns:[
......
...@@ -282,6 +282,11 @@ function fetch_data() { ...@@ -282,6 +282,11 @@ function fetch_data() {
} }
} else { } else {
// Add order key in products
let order_full_data = orders[order_data.id_po];
order_data.po[i].order_key = order_full_data.key;
// Add product to list_to_process // Add product to list_to_process
list_to_process.push(order_data.po[i]); list_to_process.push(order_data.po[i]);
...@@ -310,7 +315,7 @@ function fetch_data() { ...@@ -310,7 +315,7 @@ function fetch_data() {
// Init Data & listeners // Init Data & listeners
function initLists() { function initLists() {
try { try {
// Un-disable validation buttons now the data's here // Enable validation buttons now the data's here
if (reception_status == "False") { if (reception_status == "False") {
document.getElementById("valid_qty").disabled = false; document.getElementById("valid_qty").disabled = false;
document.getElementById("valid_all_qties").disabled = false; document.getElementById("valid_all_qties").disabled = false;
...@@ -344,62 +349,151 @@ function initLists() { ...@@ -344,62 +349,151 @@ function initLists() {
} }
} }
// Init table for to_process content let columns_to_process = [];
table_to_process = $('#table_to_process').DataTable({ let columns_processed = [];
data: list_to_process,
columns:[ // In case of group orders, add "Order" as first column for ordering
{data:"product_id.0", title: "id", visible: false}, if (Object.keys(orders).length > 1) {
{data:"shelf_sortorder", title: "Rayon", className: "dt-body-center"}, columns_to_process.push({
{ data:"order_key", title: "n°", className: "dt-body-center",
data:"product_id.1", width: "20px"
title:"Produit", });
width: "45%", }
render: function (data, type, full) {
// Add tooltip with barcode over product name
let display_barcode = "Aucun";
if ('barcode' in full) {
display_barcode = full.barcode;
}
return '<div class="tooltip">' + data columns_to_process = columns_to_process.concat([
+ ' <span class="tooltiptext tt_twolines">Code barre : ' {data:"product_id.0", title: "id", visible: false},
+ display_barcode + '</span> </div>'; {data:"shelf_sortorder", title: "Rayon", className: "dt-body-center"},
{
data:"product_id.1",
title:"Produit",
width: "45%",
render: function (data, type, full) {
// Add tooltip with barcode over product name
let display_barcode = "Aucun";
if ('barcode' in full) {
display_barcode = full.barcode;
} }
return '<div class="tooltip">' + data
+ ' <span class="tooltiptext tt_twolines">Code barre : '
+ display_barcode + '</span> </div>';
}
},
{data:"product_uom.1", title: "Unité vente", className:"dt-body-center", orderable: false},
{
data:"product_qty",
title: "Qté",
className:"dt-body-center",
visible: (reception_status == "False")
},
{
data:"price_unit",
title:"Prix unit.",
className:"dt-body-center",
visible: (reception_status == "qty_valid")
},
{
title:"Editer",
defaultContent: "<a class='btn toProcess_line_edit' href='#'><i class='far fa-edit'></i></a>",
className:"dt-body-center",
orderable: false
},
{
title:"Valider",
defaultContent: "<a class='btn toProcess_line_valid' href='#'><i class='far fa-check-square'></i></a>",
className:"dt-body-center",
orderable: false
},
{
title:"",
defaultContent: "<select class='select_product_action'><option value=''></option><option value='supplier_shortage'>Rupture fournisseur</option></select>",
className:"dt-body-center",
orderable: false,
visible: display_autres === "True"
}
]);
columns_processed = [
{data:"row_counter", title:"row_counter", visible: false}, // Hidden counter to display last row first
{data:"shelf_sortorder", title: "Rayon", className:"dt-body-center"},
{
data:"product_id.1",
title:"Produit",
width: "55%",
render: function (data, type, full) {
// Add tooltip with barcode over product name
let display_barcode = "Aucun";
if ('barcode' in full) {
display_barcode = full.barcode;
}
let display = '<div class="tooltip">' + data
+ ' <span class="tooltiptext tt_twolines">Code barre : '
+ display_barcode + '</span> </div>';
if (full.supplier_shortage) {
display += ' <div class="tooltip"><i class="fas fa-info-circle"></i>'
+ ' <span class="tooltiptext tt_twolines">Rupture fournisseur'
+ '</span> </div>';
}
return display;
}
},
{data:"product_uom.1", title: "Unité vente", className:"dt-body-center", orderable: false},
{
data:"product_qty",
title:"Qté",
className:"dt-head-center dt-body-center",
visible: (reception_status == "False"),
render: function (data, type, full) {
let disp = [
full.product_qty,
(full.old_qty !== undefined)?full.old_qty:full.product_qty
].join("/");
return disp;
}, },
{data:"product_uom.1", title: "Unité vente", className:"dt-body-center", orderable: false}, orderable: false
{ },
data:"product_qty", {
title: "Qté", data:"price_unit",
className:"dt-body-center", title:"Prix unit",
visible: (reception_status == "False") className:"dt-body-center",
}, visible: (reception_status == "qty_valid")
{ },
data:"price_unit", {
title:"Prix unit.", title:"Editer",
className:"dt-body-center", defaultContent: "<a class='btn' id='processed_line_edit' href='#'><i class='far fa-edit'></i></a>",
visible: (reception_status == "qty_valid") className:"dt-body-center",
}, orderable: false
{ },
title:"Editer", {
defaultContent: "<a class='btn' id='toProcess_line_edit' href='#'><i class='far fa-edit'></i></a>", title:"Autres",
className:"dt-body-center", className:"dt-body-center",
orderable: false orderable: false,
}, visible: display_autres === "True",
{ render: function (data, type, full) {
title:"Valider", let disabled = (full.supplier_shortage) ? "disabled" : '';
defaultContent: "<a class='btn' id='toProcess_line_valid' href='#'><i class='far fa-check-square'></i></a>",
className:"dt-body-center", return "<select class='select_product_action'>"
orderable: false + "<option value=''></option>"
}, + "<option value='supplier_shortage' "+disabled+">Rupture fournisseur</option>"
{ + "</select>";
title:"Autres",
defaultContent: "<select class='select_product_action'><option value=''></option><option value='supplier_shortage'>Rupture fournisseur</option></select>",
className:"dt-body-center",
orderable: false,
visible: display_autres === "True"
} }
], }
];
console.log(columns_to_process);
// Init table for to_process content
table_to_process = $('#table_to_process').DataTable({
data: list_to_process,
columns: columns_to_process,
rowId : "product_id.0", rowId : "product_id.0",
order: [ order: [
[ [
...@@ -413,81 +507,11 @@ function initLists() { ...@@ -413,81 +507,11 @@ function initLists() {
dom: 'lrtip', // Remove the search input from that table dom: 'lrtip', // Remove the search input from that table
language: {url : '/static/js/datatables/french.json'} language: {url : '/static/js/datatables/french.json'}
}); });
// Init table for processed content // Init table for processed content
table_processed = $('#table_processed').DataTable({ table_processed = $('#table_processed').DataTable({
data: list_processed, data: list_processed,
columns:[ columns: columns_processed,
{data:"row_counter", title:"row_counter", visible: false}, // Hidden counter to display last row first
{data:"shelf_sortorder", title: "Rayon", className:"dt-body-center"},
{
data:"product_id.1",
title:"Produit",
width: "55%",
render: function (data, type, full) {
// Add tooltip with barcode over product name
let display_barcode = "Aucun";
if ('barcode' in full) {
display_barcode = full.barcode;
}
let display = '<div class="tooltip">' + data
+ ' <span class="tooltiptext tt_twolines">Code barre : '
+ display_barcode + '</span> </div>';
if (full.supplier_shortage) {
display += ' <div class="tooltip"><i class="fas fa-info-circle"></i>'
+ ' <span class="tooltiptext tt_twolines">Rupture fournisseur'
+ '</span> </div>';
}
return display;
}
},
{data:"product_uom.1", title: "Unité vente", className:"dt-body-center", orderable: false},
{
data:"product_qty",
title:"Qté",
className:"dt-head-center dt-body-center",
visible: (reception_status == "False"),
render: function (data, type, full) {
let disp = [
full.product_qty,
(full.old_qty !== undefined)?full.old_qty:full.product_qty
].join("/");
return disp;
},
orderable: false
},
{
data:"price_unit",
title:"Prix unit",
className:"dt-body-center",
visible: (reception_status == "qty_valid")
},
{
title:"Editer",
defaultContent: "<a class='btn' id='processed_line_edit' href='#'><i class='far fa-edit'></i></a>",
className:"dt-body-center",
orderable: false
},
{
title:"Autres",
className:"dt-body-center",
orderable: false,
visible: display_autres === "True",
render: function (data, type, full) {
let disabled = (full.supplier_shortage) ? "disabled" : '';
return "<select class='select_product_action'>"
+ "<option value=''></option>"
+ "<option value='supplier_shortage' "+disabled+">Rupture fournisseur</option>"
+ "</select>";
}
}
],
rowId : "product_id.0", rowId : "product_id.0",
order: [ order: [
[ [
...@@ -509,7 +533,7 @@ function initLists() { ...@@ -509,7 +533,7 @@ function initLists() {
/* Listeners */ /* Listeners */
// Direct valid from to_process // Direct valid from to_process
$('#table_to_process tbody').on('click', 'a#toProcess_line_valid', function () { $('#table_to_process tbody').on('click', 'a.toProcess_line_valid', function () {
if (is_time_to('reception_direct_valid_order_line', 500)) { if (is_time_to('reception_direct_valid_order_line', 500)) {
try { try {
let row = table_to_process.row($(this).parents('tr')); let row = table_to_process.row($(this).parents('tr'));
...@@ -542,7 +566,7 @@ function initLists() { ...@@ -542,7 +566,7 @@ function initLists() {
}); });
// Edit to_process line // Edit to_process line
$('#table_to_process tbody').on('click', 'a#toProcess_line_edit', function () { $('#table_to_process tbody').on('click', 'a.toProcess_line_edit', function () {
try { try {
// Prevent editing mutiple lines at a time // Prevent editing mutiple lines at a time
if (editing_product == null) { if (editing_product == null) {
...@@ -1657,7 +1681,7 @@ function init_dom(partners_display_data) { ...@@ -1657,7 +1681,7 @@ function init_dom(partners_display_data) {
}; };
} }
dbc.bulkDocs(Object.values(orders)).then((response) => { dbc.bulkDocs(Object.values(orders)).then(() => {
back(); back();
}) })
.catch((err) => { .catch((err) => {
...@@ -1964,12 +1988,13 @@ $(document).ready(function() { ...@@ -1964,12 +1988,13 @@ $(document).ready(function() {
include_docs: true include_docs: true
}).then(function (result) { }).then(function (result) {
// for each order in the group // for each order in the group
for (let order_id of group_ids) { for (let i in group_ids) {
// find order // find order
let order_id = group_ids[i];
let order = result.rows.find(el => el.id == 'order_' + order_id); let order = result.rows.find(el => el.id == 'order_' + order_id);
order = order.doc; order = order.doc;
order.key = parseInt(i) + 1;
orders[order_id] = order; orders[order_id] = order;
// Add each order's already updated and validated products to common list // Add each order's already updated and validated products to common list
...@@ -1982,7 +2007,7 @@ $(document).ready(function() { ...@@ -1982,7 +2007,7 @@ $(document).ready(function() {
} }
// Prepare data to display in 'partner name' area // Prepare data to display in 'partner name' area
partners_display_data.push(order['partner'] + ' du ' + order['date_order']); partners_display_data.push(`<span class="title_partner_key">${order.key}.</span> ${order.partner} du ${order.date_order}`);
} }
// Set current reception status: take first order's // Set current reception status: take first order's
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment