123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- function ep_pos_screens(instance,module)
- {
- var QWeb = instance.web.qweb;
- var _t = instance.web._t;
- var round_di = instance.web.round_decimals;
- var round_pr = instance.web.round_precision;
- module.PaymentScreenWidget=module.PaymentScreenWidget.extend(
- {
- init:function(parent,options)
- {
- var self=this;
-
- this._super(parent,options);
- this.line_click_handler = function(event){
- var node = this;
- self.pos.get('selectedOrder').curr_input_selected=false;
- while(node && !node.classList.contains('paymentline')){
- node = node.parentNode;
- }
- if(node){
- self.pos.get('selectedOrder').selectPaymentline(node.line);
- }
- };
- },
- findWithAttr: function(array, attr, value)
- {
- for(var i = 0; i < array.length; i += 1)
- {
- if(array[i][attr] === value)
- return i;
- }
- },
-
- format_foreign: function(amount,currency,precision)
- {
- var decimals = currency.decimals;
-
- if (precision && (typeof this.pos.dp[precision]) !== undefined) {
- decimals = this.pos.dp[precision];
- }
- if (typeof amount === 'number') {
- amount = round_di(amount,decimals).toFixed(decimals);
- amount = openerp.instances[this.session.name].web.format_value(round_di(amount, decimals), { type: 'float', digits: [69, decimals]});
- }
- if (currency.position === 'after') {
- return amount + ' ' + (currency.symbol || '');
- } else {
- return (currency.symbol || '') + ' ' + amount;
- }
- },
-
- set_foreign_values: function()
- {
- var self=this;
- var currentOrder=self.pos.get('selectedOrder');
-
- var currency_id=currentOrder.foreign_currency.id;
- var name=currentOrder.foreign_currency.name;
- var rate_silent=currentOrder.foreign_currency.rate_silent;
- var decimals=currentOrder.foreign_currency.decimals;
-
- if (self.pos.config.display_conversion)
- // '1 '+self.pos.currency.name+' = '+
- self.$('#conversion_rate').html('Cambio de ' + name + ' = ' + rate_silent + ' ');
-
-
- self.$('#currency_value_label').html('Total en '+ name + ':');
- self.$('#foreign_input_label').html('Pagado en '+ name + ':');
- self.$('#currency_value').html(self.format_foreign(currentOrder.currency_total,currentOrder.foreign_currency));
- self.$('#foreign_change_label').html('Cambio en ' + name + ':');
- self.$('#foreign_change_value').html(self.format_foreign(0,currentOrder.foreign_currency));
- },
-
- show: function()
- {
- this._super();
- var self = this;
- if (self.pos.config.multi_currency_enable)
- {
- currentOrder=self.pos.get('selectedOrder');
- self.$('#curr_input').focus(function(e){
- if (this.value!='')
- $(this).select();
- if(self.numpad_state){
- self.numpad_state.reset();
- }
- currentOrder.curr_input_selected=true;
-
- e.stopImmediatePropagation();
- });
- self.$('#toggle_multi_currency').change(function(e)
- {
- if (self.pos.currency_list.length==0)
- {
- self.pos_widget.screen_selector.show_popup('error',{
- message: 'No Foreign Currency found !',
- comment: 'No foreign currencies have been defined. Either set the parameter to fetch from master or define them manually in the POS session configuration.'
- });
- return false;
- }
- currentOrder.multi_currency_checked=self.$('#toggle_multi_currency').prop("checked");
- if (currentOrder.multi_currency_checked)
- {
- self.$('#multi_currency').show();
- self.$('#foreign_change_div').show();
- self.$('#curr_input').focus();
- if (self.$('#curr_input').val()!='')
- self.$('#curr_input').select();
- currentOrder.curr_input_selected=true;
- if(self.numpad_state){
- self.numpad_state.reset();
- }
- }
- else
- {
- self.$('#multi_currency').hide();
- self.$('#foreign_change_div').hide();
- currentOrder.curr_input_selected=false;
- self.focus_selected_line();
- }
- e.stopImmediatePropagation();
- });
-
- self.$('#toggle_multi_currency').prop("checked",currentOrder.multi_currency_checked);
-
- if(currentOrder.multi_currency_checked && currentOrder.foreign_currency)
- {
- self.$('#curr_input').trigger('keyup');
- }
- var foreign_decimals=currentOrder.foreign_currency.decimals;
- var foreign_currency_rate=currentOrder.foreign_currency.rate_silent;
- // Modificacion
- currentOrder.currency_total=round_di(currentOrder.getTotalTaxIncluded()/foreign_currency_rate,foreign_decimals).toFixed(foreign_decimals);
-
- self.set_foreign_values();
- if (currentOrder.currency_paid==0)
- self.$('#curr_input').val('');
- else
- self.$('#curr_input').val(currentOrder.currency_paid);
-
- self.$('#curr_input').keyup(function(e)
- {
- currentOrder.currency_paid=self.$('#curr_input').val();
- var line = currentOrder.selected_paymentline;
- if (line==undefined)
- {
- self.pos_widget.screen_selector.show_popup('error',{
- message: 'No Payment Line selected !',
- comment: 'Please selected the payment line you would like the converted currency to display'
- });
- return false;
- }
- converted_value=round_di(this.value*currentOrder.foreign_currency.rate_silent,self.pos.currency.decimals).toFixed(self.pos.currency.decimals);
- line.set_amount(converted_value);
- self.$('.paymentline.selected input').val(converted_value);
-
- e.stopImmediatePropagation();
- });
-
- self.$("#currency_selection").change(function(e)
- {
- var currentOrder=self.pos.get('selectedOrder');
- var selected_currency=parseInt($(this).val());
-
- selected_id=self.findWithAttr(self.pos.currency_list, 'id', selected_currency);
- currentOrder.foreign_currency=$.extend({}, self.pos.currency_list[selected_id]);
-
- var foreign_currency_rate=currentOrder.foreign_currency.rate_silent;
- currentOrder.currency_total=round_di(currentOrder.getTotalTaxIncluded()/foreign_currency_rate,foreign_decimals).toFixed(foreign_decimals);
- self.$('#curr_input').val(0);
-
- var line = currentOrder.selected_paymentline;
- if (line==undefined)
- {
- self.$('.paymentline input').val(0);
- return false;
- }
- line.set_amount(0);
- self.$('.paymentline.selected input').val(0);
-
- self.set_foreign_values();
-
- e.stopImmediatePropagation();
- });
-
- self.$("#currency_selection").val(currentOrder.foreign_currency.id);
- self.$('#toggle_multi_currency').trigger('change');
- }
- },
-
- add_paymentline: function(line){
- this._super(line);
- this.pos.get('selectedOrder').curr_input_selected=false;
- },
-
- set_value: function(val) {
-
- var self=this;
- var curr_input_selected=this.pos.get('selectedOrder').curr_input_selected;
- if (curr_input_selected)
- {
- var foreign_decimals=currentOrder.foreign_currency.decimals;
- value=round_di(val,foreign_decimals).toFixed(foreign_decimals);
- self.$('#curr_input').val(value);
- self.$('#curr_input').trigger('keyup');
- }
- else
- {
- var selected_line =this.pos.get('selectedOrder').selected_paymentline;
- if(selected_line){
- selected_line.set_amount(val);
- selected_line.node.querySelector('input').value = selected_line.amount.toFixed(2);
- }
- }
- },
-
- update_payment_summary: function()
- {
- this._super();
-
- var self=this;
- var currentOrder=self.pos.get('selectedOrder');
-
- if(self.pos.config.multi_currency_enable && currentOrder.foreign_currency)
- {
- var paidTotal = currentOrder.getPaidTotal();
- var dueTotal = currentOrder.getTotalTaxIncluded();
- var remaining = dueTotal > paidTotal ? dueTotal - paidTotal : 0;
- var change = paidTotal > dueTotal ? paidTotal - dueTotal : 0;
-
- var fc=currentOrder.foreign_currency;
- var rate=fc.rate_silent;
- var decimals=fc.decimals;
- var converted_value=round_di(change/rate,decimals).toFixed(decimals);
-
- currentOrder.currency_change=converted_value;
- self.$('#foreign_change_value').html(self.format_foreign(converted_value,fc));
- }
- },
-
- get_currency_selection:function()
- {
- var self=this;
- var currentOrder=this.pos.get('selectedOrder');
- return currentOrder.pos.currency_list[0];
- },
- });
- }
|