You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

55 lines
2.6 KiB

odoo.define('pos_discount_manager.ValidateManager', function(require) {
'use strict';
const Registries = require('point_of_sale.Registries');
const PaymentScreen = require('point_of_sale.PaymentScreen');
const ValidateManagers = (PaymentScreen) =>
class extends PaymentScreen {
/**
*Override the validate button to approve discount limit
*/
async _finalizeValidation() {
var order = this.env.pos.get_order();
var orderlines = this.currentOrder.get_orderlines()
var employee_dis = this.env.pos.get_cashier()['limited_discount'];
var employee_name = this.env.pos.get_cashier()['name']
var flag = 1;
orderlines.forEach((order) => {
if(order.discount > employee_dis)
flag = 0;
});
if (flag != 1) {
const {confirmed,payload} = await this.showPopup('NumberPopup', {
title: this.env._t(employee_name + ', your discount is over the limit. \n Manager pin for Approval'),
});
if(confirmed){
var output = this.env.pos.employees.filter((obj) => obj.role == 'manager');
var pin = output[0].pin
if (Sha1.hash(payload) == pin) {
this.showScreen(this.nextScreen);
}
else {
this.showPopup('ErrorPopup', {
title: this.env._t(" Manager Restricted your discount"),
body: this.env._t(employee_name + ", Your Manager pin is incorrect."),
});
return false;
}
}
else {
return false;
}
}
this.currentOrder.finalized = true;
this.showScreen(this.nextScreen);
super._finalizeValidation();
// If we succeeded in syncing the current order, and
// there are still other orders that are left unsynced,
// we ask the user if he is willing to wait and sync them.
}
}
Registries.Component.extend(PaymentScreen, ValidateManagers);
return ValidateManagers;
});