Commit 1835290c by Damien Moulard

Merge branch 'Reception_poids' into 'dev_principale'

Détection automatique du poids par l'appli reception

See merge request !54

(cherry picked from commit 7606f015)

b7186bd6 feat: lors d'un scan le poids est automatiquement detecte
9bef85c5 rajout detection poids pour barcode price_to_weight
18d6f8ba Rajout de la popup pour le prix au kilo
30088156 correction d une erreur de lint et arrondissement des nombres au centieme
dd9a4bf5 fix bug de type pour les poids et refactor de callback de confirmation
ed8bb5be Changement comportement scan poids et changement arrondissement poids
00edd610 fix du bug bu btn de confirmation absent dans la pop up de validation
da42e4c6 refactor des fonctions qui geres le css des btns des popup
1988c674 Refactor et renommage de variable
476540af suppression de lignes de debug
ae99c34c refactor et renommage de variable
88bbcc8e controle de l'input et fix des warnings de lint
1ac29a14 changement attribut input field
567c69d7 Suppression d'un TODO
54954ebe Adaptation de la detection weight à coucdb
9c74eac6 adaptation de la detection price to weight à couchdb
a7a0adfb lint
739f7028 refactor
parent 348dfa61
Pipeline #1714 passed with stage
in 1 minute 37 seconds
......@@ -30,7 +30,8 @@ var reception_status = null,
updatedProducts = [], // Keep record of updated products
validProducts = [], // Keep record of directly validated products
updateType = "", // step 1: qty_valid; step2: br_valid
barcodes = null; // Barcodes stored locally
barcodes = null, // Barcodes stored locally
priceToWeightIsCorrect = true;
var dbc = null,
sync = null,
......@@ -67,38 +68,55 @@ function searchUpdatedProduct() {
function select_product_from_bc(barcode) {
try {
if (editing_product == null) {
let p = barcodes.get_corresponding_odoo_product(barcode);
var scannedProduct = barcodes.get_corresponding_odoo_product(barcode);
if (p == null) {
priceToWeightIsCorrect = true;
if (scannedProduct == null) {
alert("Le code-barre " + barcode + " ne correspond à aucun article connu.");
return -1;
}
var found = {data: null, place: null};
var foundProduct = {data: null, place: null};
$.each(list_to_process, function(i, e) {
if (e.product_id[0] == p.data[barcodes['keys']['id']]) {
found.data = e;
found.place = 'to_process';
if (e.product_id[0] == scannedProduct.data[barcodes['keys']['id']]) {
foundProduct.data = e;
foundProduct.place = 'to_process';
}
});
if (found.data == null) {
if (foundProduct.data == null) {
$.each(list_processed, function(i, e) {
if (e.product_id[0] == p.data[barcodes['keys']['id']]) {
found.data = JSON.parse(JSON.stringify(e));
found.place = 'processed';
if (e.product_id[0] == scannedProduct.data[barcodes['keys']['id']]) {
foundProduct.data = JSON.parse(JSON.stringify(e));
foundProduct.place = 'processed';
}
});
}
if (found.data !== null) {
setLineEdition(found.data);
if (found.place === 'to_process') {
let row = table_to_process.row($('#'+found.data.product_id[0]));
if (foundProduct.data !== null) {
if (foundProduct.data.product_uom[0] == 21) { //if qty is in weight
if (scannedProduct.rule === 'weight') {
editing_product = foundProduct.data;
editProductInfo(foundProduct.data, scannedProduct.qty);
editing_product = null;
} else if (scannedProduct.rule === 'price_to_weight') {
openModal($('#templates #modal_confirm_price_to_weight').html(), price_to_weight_is_wrong, 'Non', false, true, price_to_weight_confirmed_callback(foundProduct, scannedProduct));
setupPopUpBtnStyle(scannedProduct);
}
}
if (scannedProduct.rule !== 'price_to_weight') {
if (foundProduct.data.product_uom[0] != 21) {
setLineEdition(foundProduct.data);
}
if (foundProduct.place === 'to_process') {
let row = table_to_process.row($('#'+foundProduct.data.product_id[0]));
remove_from_toProcess(row, found.data);
remove_from_toProcess(row, foundProduct.data);
}
}
}
}
......@@ -156,6 +174,65 @@ function update_distant_orders() {
});
}
function price_to_weight_confirmed_callback(foundProduct, scannedProduct) {
return function() {
let newQty = null;
if (priceToWeightIsCorrect) {
newQty = scannedProduct.qty;
} else {
let tmp = Number((scannedProduct.value/document.getElementById("new_price_to_weight").value).toFixed(3));
if (isFinite(tmp)) {
newQty = tmp;
}
}
if (foundProduct.data !== null && newQty != null) {
if (foundProduct.place === 'to_process') {
let row = table_to_process.row($('#'+foundProduct.data.product_id[0]));
remove_from_toProcess(row, foundProduct.data);
}
editing_product = foundProduct.data;
editProductInfo(foundProduct.data, newQty);
editing_product = null;
resetPopUpButtons();
}
};
}
function price_to_weight_is_wrong() {
document.getElementById("new_price_to_weight").style.display = "";
document.getElementsByClassName("btn--success")[0].style.display = "none";
document.querySelector('#modal_closebtn_bottom').innerHTML = 'OK';
priceToWeightIsCorrect = false;
}
function setupPopUpBtnStyle(p) {
//On inverse en quelque sorte les boutons succes et d'annulation en mettant "Oui" sur le btn d'annulation
// et "Non" sur le bouton de reussite.
//Cela nous permet de reecrire moins de code puisque si la reponse est Oui on ne veut
//rien modifier et sortir du pop up, ce qui correspond au comportement du bouton annulation
//(ou aussi appeler cancel button)
document.querySelector('#modal_closebtn_bottom').innerHTML = 'Oui';
document.getElementById("modal_closebtn_bottom").style.backgroundColor = "green";
document.getElementsByClassName("btn--success")[0].style.backgroundColor = "red";
document.querySelector('#product_to_verify').innerHTML = p.data[0];
document.querySelector('#price_to_verify').innerHTML = p.data[6];
document.getElementById("new_price_to_weight").style.display = "none";
document.getElementsByClassName("btn--success")[0].style.display = "";
}
function resetPopUpButtons() {
document.getElementsByClassName("btn--success")[0].style.display = "";
document.getElementsByClassName("btn--success")[0].style.backgroundColor = "";
document.querySelector('#modal_closebtn_bottom').style.backgroundColor = "";
}
/* INIT */
// Get order(s) data from server
......@@ -870,7 +947,7 @@ function editProductInfo (productToEdit, value = null, batch = false) {
if (e.product_id[0] == productToEdit.product_id[0]) {
addition = true;
productToEdit = e;
newValue = newValue + productToEdit.product_qty;
newValue = Number((newValue + productToEdit.product_qty).toFixed(3));
}
});
// If qty edition & Check if qty changed
......
......@@ -177,6 +177,12 @@
<div id="modal_FAQ_content"></div>
<div id="modal_qtiesValidated"></div>
<div id="modal_pricesValidated"></div>
<div id="modal_confirm_price_to_weight">
<h3>Confirmation du prix</h3>
<p>Est ce que le prix au kilo du produit <b><span id="product_to_verify"></span></b>
est bien <b><span id="price_to_verify"></span></b> euros/Kg ?</p>
<input type="number" name="Prix au Kilo" id="new_price_to_weight">
</div>
</div>
<br/>
</div>
......
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