Commit ed59d017 by Damien Moulard

ALC: deal with 403 server response

parent 707b2289
Pipeline #2293 passed with stage
in 1 minute 24 seconds
...@@ -253,8 +253,11 @@ ...@@ -253,8 +253,11 @@
.main.fa-info-circle { .main.fa-info-circle {
color: #0275d8; color: #0275d8;
}
#coverage_form .fa-info-circle {
cursor: pointer; cursor: pointer;
} }
.custom_cell_content { .custom_cell_content {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
......
...@@ -133,6 +133,14 @@ function debounceFunction(func, delay = 1000) { ...@@ -133,6 +133,14 @@ function debounceFunction(func, delay = 1000) {
timerId = setTimeout(func, delay); timerId = setTimeout(func, delay);
} }
/**
* When 403 response is received from the server, logout user locally.
*/
function handle_unauthorize() {
alert("La session a expiré. Vous allez devoir vous reconnecter.");
$( "#logout" ).trigger( "click" );
}
/* - PRODUCTS */ /* - PRODUCTS */
var process_new_product_qty = function(input) { var process_new_product_qty = function(input) {
...@@ -253,12 +261,16 @@ function add_product() { ...@@ -253,12 +261,16 @@ function add_product() {
$("#product_input").val(''); $("#product_input").val('');
}, },
error: function(data) { error: function(data) {
err = {msg: "erreur serveur lors de la récupération des données liées à l'article", ctx: 'get_product_for_help_order_line'}; if (data.status === 403) {
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { handle_unauthorize();
err.msg += ' : ' + data.responseJSON.error; } else {
err = {msg: "erreur serveur lors de la récupération des données liées à l'article", ctx: 'get_product_for_help_order_line'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
}
report_JS_error(err, 'orders');
alert('Erreur lors de la récupération des informations, réessayer plus tard.');
} }
report_JS_error(err, 'orders');
alert('Erreur lors de la récupération des informations, réessayer plus tard.');
} }
}); });
...@@ -470,16 +482,20 @@ function check_products_data() { ...@@ -470,16 +482,20 @@ function check_products_data() {
resolve(); resolve();
}, },
error: function(data) { error: function(data) {
err = {msg: "erreur serveur lors de la vérification des données des articles", ctx: 'check_products_data'}; if (data.status === 403) {
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { handle_unauthorize();
err.msg += ' : ' + data.responseJSON.error; } else {
err = {msg: "erreur serveur lors de la vérification des données des articles", ctx: 'check_products_data'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
}
report_JS_error(err, 'orders');
alert(`Erreur lors de la vérification des données des articles. Certaines données peuvent être erronées`);
$('.notifyjs-wrapper').trigger('notify-hide');
// Don't block process if this call fails
resolve();
} }
report_JS_error(err, 'orders');
alert(`Erreur lors de la vérification des données des articles. Certaines données peuvent être erronées`);
$('.notifyjs-wrapper').trigger('notify-hide');
// Don't block process if this call fails
resolve();
} }
}); });
} else { } else {
...@@ -539,17 +555,21 @@ function update_product_ref(input_el, p_id, p_index) { ...@@ -539,17 +555,21 @@ function update_product_ref(input_el, p_id, p_index) {
); );
}, },
error: function(data) { error: function(data) {
let msg = "erreur serveur lors de la sauvegarde de la référence"; if (data.status === 403) {
handle_unauthorize();
msg += ` (product_tmpl_id: ${product.id}`; } else {
let msg = "erreur serveur lors de la sauvegarde de la référence";
err = {msg: msg, ctx: 'update_product_ref'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { msg += ` (product_tmpl_id: ${product.id}`;
err.msg += ' : ' + data.responseJSON.error;
err = {msg: msg, ctx: 'update_product_ref'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
}
report_JS_error(err, 'orders');
alert('Erreur lors de la sauvegarde de la référence dans Odoo. Veuillez recharger la page et ré-essayer plus tard.');
} }
report_JS_error(err, 'orders');
alert('Erreur lors de la sauvegarde de la référence dans Odoo. Veuillez recharger la page et ré-essayer plus tard.');
} }
}); });
} }
...@@ -609,14 +629,18 @@ function add_supplier() { ...@@ -609,14 +629,18 @@ function add_supplier() {
closeModal(); closeModal();
}, },
error: function(data) { error: function(data) {
err = {msg: "erreur serveur lors de la récupération des produits", ctx: 'get_supplier_products'}; if (data.status === 403) {
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { handle_unauthorize();
err.msg += ' : ' + data.responseJSON.error; } else {
err = {msg: "erreur serveur lors de la récupération des produits", ctx: 'get_supplier_products'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
}
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la récupération des produits, réessayer plus tard.');
} }
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la récupération des produits, réessayer plus tard.');
} }
}); });
...@@ -713,18 +737,22 @@ function save_supplier_product_association(product, supplier, cell) { ...@@ -713,18 +737,22 @@ function save_supplier_product_association(product, supplier, cell) {
closeModal(); closeModal();
}, },
error: function(data) { error: function(data) {
let msg = "erreur serveur lors de la sauvegarde de l'association product/supplier"; if (data.status === 403) {
handle_unauthorize();
msg += ` (product_tmpl_id: ${product.id}; supplier_id: ${supplier.id})`; } else {
let msg = "erreur serveur lors de la sauvegarde de l'association product/supplier";
err = {msg: msg, ctx: 'save_supplier_product_association'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { msg += ` (product_tmpl_id: ${product.id}; supplier_id: ${supplier.id})`;
err.msg += ' : ' + data.responseJSON.error;
err = {msg: msg, ctx: 'save_supplier_product_association'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
}
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la sauvegarde de l\'association. Veuillez ré-essayer plus tard.');
} }
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la sauvegarde de l\'association. Veuillez ré-essayer plus tard.');
} }
}); });
...@@ -767,17 +795,21 @@ function end_supplier_product_association(product, supplier) { ...@@ -767,17 +795,21 @@ function end_supplier_product_association(product, supplier) {
closeModal(); closeModal();
}, },
error: function(data) { error: function(data) {
let msg = "erreur serveur lors de la suppression de l'association product/supplier". if (data.status === 403) {
msg += ` (product_tmpl_id: ${product.id}; supplier_id: ${supplier.id})`; handle_unauthorize();
} else {
err = {msg: msg, ctx: 'end_supplier_product_association'}; let msg = "erreur serveur lors de la suppression de l'association product/supplier".
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { msg += ` (product_tmpl_id: ${product.id}; supplier_id: ${supplier.id})`;
err.msg += ' : ' + data.responseJSON.error;
err = {msg: msg, ctx: 'end_supplier_product_association'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
}
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la suppression de l\'association. Veuillez ré-essayer plus tard.');
} }
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la suppression de l\'association. Veuillez ré-essayer plus tard.');
} }
}); });
...@@ -943,33 +975,37 @@ function commit_actions_on_product(product, inputs) { ...@@ -943,33 +975,37 @@ function commit_actions_on_product(product, inputs) {
}); });
}, },
error: function(data) { error: function(data) {
let msg = "erreur serveur lors de la sauvegarde". if (data.status === 403) {
msg += ` (product_tmpl_id: ${product.id})`; handle_unauthorize();
} else {
err = {msg: msg, ctx: 'commit_actions_on_product'}; let msg = "erreur serveur lors de la sauvegarde".
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { msg += ` (product_tmpl_id: ${product.id})`;
err.msg += ' : ' + data.responseJSON.error;
} err = {msg: msg, ctx: 'commit_actions_on_product'};
report_JS_error(err, 'orders'); if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
try { }
if (data.responseJSON.code === "archiving_with_incoming_qty") { report_JS_error(err, 'orders');
alert("Ce produit a des quantités entrantes, vous ne pouvez pas l'archiver.");
} else if (data.responseJSON.code === "error_stock_update") { try {
alert('Erreur lors de la mise à zéro du stock du produit archivé. Les actions ont bien été réalisées.'); if (data.responseJSON.code === "archiving_with_incoming_qty") {
} else { alert("Ce produit a des quantités entrantes, vous ne pouvez pas l'archiver.");
} else if (data.responseJSON.code === "error_stock_update") {
alert('Erreur lors de la mise à zéro du stock du produit archivé. Les actions ont bien été réalisées.');
} else {
alert('Erreur lors de la sauvegarde des données. Veuillez ré-essayer plus tard.');
}
} catch (error) {
alert('Erreur lors de la sauvegarde des données. Veuillez ré-essayer plus tard.'); alert('Erreur lors de la sauvegarde des données. Veuillez ré-essayer plus tard.');
} }
} catch (error) {
alert('Erreur lors de la sauvegarde des données. Veuillez ré-essayer plus tard.'); check_products_data()
.then(() => {
update_cdb_order();
update_main_screen();
closeModal();
});
} }
check_products_data()
.then(() => {
update_cdb_order();
update_main_screen();
closeModal();
});
} }
}); });
} }
...@@ -1038,17 +1074,21 @@ function generate_inventory() { ...@@ -1038,17 +1074,21 @@ function generate_inventory() {
}, 200); }, 200);
}, },
error: function(data) { error: function(data) {
$('#do_inventory').empty() if (data.status === 403) {
.append(`Faire un inventaire`); handle_unauthorize();
let msg = "erreur serveur lors de la création de l'inventaire". } else {
err = {msg: msg, ctx: 'generate_inventory'}; $('#do_inventory').empty()
.append(`Faire un inventaire`);
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { let msg = "erreur serveur lors de la création de l'inventaire".
err.msg += ' : ' + data.responseJSON.error; err = {msg: msg, ctx: 'generate_inventory'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
}
report_JS_error(err, 'orders');
alert("Erreur lors de la création de l'inventaire. Réessayez plus tard.");
} }
report_JS_error(err, 'orders');
alert("Erreur lors de la création de l'inventaire. Réessayez plus tard.");
} }
}); });
} }
...@@ -1318,16 +1358,20 @@ function create_orders() { ...@@ -1318,16 +1358,20 @@ function create_orders() {
}); });
}, },
error: function(data) { error: function(data) {
let msg = "erreur serveur lors de la création des product orders"; if (data.status === 403) {
handle_unauthorize();
err = {msg: msg, ctx: 'save_supplier_product_association', data: orders_data}; } else {
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { let msg = "erreur serveur lors de la création des product orders";
err.msg += ' : ' + data.responseJSON.error;
err = {msg: msg, ctx: 'save_supplier_product_association', data: orders_data};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
}
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la création des commandes. Veuillez ré-essayer plus tard.');
} }
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la création des commandes. Veuillez ré-essayer plus tard.');
} }
}); });
...@@ -2774,14 +2818,18 @@ $(document).ready(function() { ...@@ -2774,14 +2818,18 @@ $(document).ready(function() {
}); });
}, },
error: function(data) { error: function(data) {
err = {msg: "erreur serveur lors de la récupération des fournisseurs", ctx: 'get_suppliers'}; if (data.status === 403) {
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') { handle_unauthorize();
err.msg += ' : ' + data.responseJSON.error; } else {
err = {msg: "erreur serveur lors de la récupération des fournisseurs", ctx: 'get_suppliers'};
if (typeof data.responseJSON != 'undefined' && typeof data.responseJSON.error != 'undefined') {
err.msg += ' : ' + data.responseJSON.error;
}
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la récupération des fournisseurs, rechargez la page plus tard');
} }
report_JS_error(err, 'orders');
closeModal();
alert('Erreur lors de la récupération des fournisseurs, rechargez la page plus tard');
} }
}); });
......
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