2012-09-28 12:45:38 +00:00
|
|
|
|
|
|
|
openerp.hr_timesheet_sheet = function(instance) {
|
|
|
|
var QWeb = instance.web.qweb;
|
|
|
|
var _t = instance.web._t;
|
|
|
|
|
|
|
|
instance.hr_timesheet_sheet.WeeklyTimesheet = instance.web.form.FormWidget.extend({
|
|
|
|
template: "hr_timesheet_sheet.WeeklyTimesheet",
|
2012-09-28 14:34:03 +00:00
|
|
|
init: function() {
|
|
|
|
this._super.apply(this, arguments);
|
2012-09-28 15:08:15 +00:00
|
|
|
this.set({
|
|
|
|
sheets: [],
|
|
|
|
date_to: false,
|
|
|
|
date_from: false,
|
|
|
|
});
|
2012-09-28 14:34:03 +00:00
|
|
|
this.field_manager.on("field_changed:timesheet_ids", this, this.query_sheets);
|
2012-09-28 15:08:15 +00:00
|
|
|
this.field_manager.on("field_changed:date_from", this, function() {
|
|
|
|
this.set({"date_from": instance.web.str_to_date(this.field_manager.get_field_value("date_from"))});
|
|
|
|
});
|
|
|
|
this.field_manager.on("field_changed:date_to", this, function() {
|
|
|
|
this.set({"date_to": instance.web.str_to_date(this.field_manager.get_field_value("date_to"))});
|
|
|
|
});
|
2012-09-28 14:34:03 +00:00
|
|
|
this.on("change:sheets", this, this.update_sheets);
|
|
|
|
this.res_o2m_drop = new instance.web.DropMisordered();
|
|
|
|
},
|
|
|
|
query_sheets: function() {
|
|
|
|
var self = this;
|
|
|
|
if (self.updating)
|
|
|
|
return;
|
|
|
|
var commands = this.field_manager.get_field_value("timesheet_ids");
|
|
|
|
this.res_o2m_drop.add(new instance.web.Model(this.view.model).call("resolve_2many_commands", ["timesheet_ids", commands, []]))
|
|
|
|
.then(function(result) {
|
|
|
|
self.querying = true;
|
|
|
|
self.set({sheets: result});
|
|
|
|
self.querying = false;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
update_sheets: function() {
|
|
|
|
var self = this;
|
|
|
|
if (self.querying)
|
|
|
|
return;
|
|
|
|
self.updating = true;
|
|
|
|
self.field_manager.set_values({timesheet_ids: self.get("sheets")}).then(function() {
|
|
|
|
self.updating = false;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
start: function() {
|
2012-09-28 15:08:15 +00:00
|
|
|
this.on("change:sheets", this, this.render);
|
|
|
|
this.on("change:date_to", this, this.render);
|
|
|
|
this.on("change:date_from", this, this.render);
|
|
|
|
this.render();
|
|
|
|
},
|
|
|
|
render: function() {
|
|
|
|
var self = this;
|
|
|
|
if (self.setting)
|
|
|
|
return;
|
|
|
|
// don't render anything until we have date_to and date_from
|
|
|
|
if (!self.get("date_to") || !self.get("date_from"))
|
|
|
|
return;
|
|
|
|
// group by account
|
|
|
|
var accounts = _.groupBy(this.get("sheets"), function(el) { return !!el.account_id ? el.account_id[0] : false });
|
|
|
|
// group by days
|
|
|
|
accounts = _.map(accounts, function(el) {
|
|
|
|
//var tmp = _.groupBy(el
|
|
|
|
});
|
2012-09-28 14:34:03 +00:00
|
|
|
},
|
2012-09-28 12:45:38 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
instance.web.form.custom_widgets.add('weekly_timesheet', 'instance.hr_timesheet_sheet.WeeklyTimesheet');
|
|
|
|
|
|
|
|
};
|