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.
89 lines
2.9 KiB
89 lines
2.9 KiB
'use strict';
|
|
|
|
odoo.define('pos_backend_partner.partner_pos', function (require) {
|
|
var tools = require('pos_backend_communication.tools');
|
|
var session = require('web.session');
|
|
var ProductScreenWidget = require('point_of_sale.screens');
|
|
var translation = require('web.translation');
|
|
var _t = translation._t;
|
|
var action_url = null;
|
|
var pos_instance = null;
|
|
|
|
function set_client(message) {
|
|
var data = message.data;
|
|
var partner_info = {
|
|
'id': parseInt(data.partner_id, 10),
|
|
'name': data.name
|
|
};
|
|
pos_instance.get('selectedOrder').set_client(partner_info);
|
|
alert(_t('Customer set')); //try to get the focus back
|
|
}
|
|
|
|
function open_backend(message) {
|
|
console.log('open backend partner');
|
|
//lookup action_id
|
|
action_url = action_url || session.rpc(
|
|
'/web/action/load', { "action_id":"pos_backend_partner.action_select_partner_pos"})
|
|
.then(function (e) { return e.id; });
|
|
|
|
action_url.then(function (action_id) {
|
|
var url = "/web#view_type=list&model=res.partner&action=" + action_id;
|
|
var msg = {'type': 'partner.choose'};
|
|
tools.open_page(url, msg, 'partner');
|
|
});
|
|
}
|
|
|
|
// Bind customer button in main screen
|
|
ProductScreenWidget.ActionpadWidget.include({
|
|
init: function(parent, options) {
|
|
this._super(parent, options);
|
|
pos_instance = this.pos;
|
|
},
|
|
renderElement: function() {
|
|
var self = this;
|
|
this._super();
|
|
this.$('.set-customer').unbind('click');
|
|
this.$('.set-customer').click(function(){
|
|
open_backend();
|
|
});
|
|
}
|
|
});
|
|
|
|
// Bind customer button in payement screen
|
|
ProductScreenWidget.PaymentScreenWidget.include({
|
|
init: function(parent, options) {
|
|
this._super(parent, options);
|
|
pos_instance = this.pos;
|
|
},
|
|
click_set_customer: function() {
|
|
open_backend();
|
|
}
|
|
});
|
|
|
|
tools.callbacks['partner.partner_selected'] = set_client;
|
|
|
|
return {
|
|
callbacks: tools.callbacks
|
|
};
|
|
});
|
|
|
|
odoo.define('pos_backend_partner.prevent_model_load', function (require) {
|
|
// Prevent res.partner to be loaded at startup of the POS
|
|
// we load partners from the back office
|
|
|
|
//huge perf improvement server side AND client side AND network side
|
|
// we don't need it since the client is picked from the backoffice
|
|
var pos_models = require('point_of_sale.models');
|
|
var partnerModelId = null;
|
|
pos_models.PosModel.prototype.models.some(function (m, idx) {
|
|
if (m.model !== "res.partner")
|
|
return false;
|
|
partnerModelId = idx; //got her !
|
|
return true; //exit early
|
|
});
|
|
if (partnerModelId) {
|
|
pos_models.PosModel.prototype.models.splice(partnerModelId, 1);
|
|
//remove the model without changing the reference to the array
|
|
}
|
|
});
|
|
|