[IMP] Change list view domin on pager next/previous click

bzr revid: rgaopenerp-20120620132621-882na1igz4t64kwo
This commit is contained in:
RGA(OpenERP)
2012-06-20 18:56:21 +05:30
parent 9a0277e1d1
commit dce2c2363f
3 changed files with 149 additions and 42 deletions
+22 -1
View File
@@ -470,6 +470,22 @@ class account_move_line(osv.osv):
for line in move.line_id:
result.append(line.id)
return result
def _latest_entry_date(self, cr, uid, ids, prop, unknow_none, context=None):
res = {}
# ToDo write query to fetch the same date
for accout_move_line in self.browse(cr, uid, ids, context=context):
ids = self.search(cr, uid, [('partner_id','=',accout_move_line.partner_id.id)], context=context, limit=1, order='date')
date = self.browse(cr, uid, ids, context=context)[0].date
res[accout_move_line.id] = date
return res
def _rec_progress(self, cr, uid, ids, prop, unknow_none, context=None):
#ToDo
res = {}
for id in ids:
res[id] = 0.5
return res
_columns = {
'name': fields.char('Name', size=64, required=True),
@@ -517,7 +533,12 @@ class account_move_line(osv.osv):
type='many2one', relation='account.invoice', fnct_search=_invoice_search),
'account_tax_id':fields.many2one('account.tax', 'Tax'),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
'last_reconciliation_date': fields.related('partner_id', 'last_reconciliation_date', type='datetime', relation='res.partner', string='Latest Reconciliation Date',readonly=True),
'lastest_entry': fields.function(_latest_entry_date, type='date', string="Latest Entry"),
'lastest_entry2': fields.function(_latest_entry_date, type='date', string="Latest Recnciliation"),
'reconciliation_progress': fields.function(_rec_progress, string='Progress (%)', type='float')
}
def _get_date(self, cr, uid, context=None):
+7 -3
View File
@@ -982,9 +982,13 @@
<field name="arch" type="xml">
<form string="Journal Item">
<group col="6" colspan="4">
<field name="partner_id"/><newline/>
<button string="Reconcile"/>
<button string="Nothing to Reconcile"/>
<field name="partner_id" nolabel="1"/>
<field name="lastest_entry" />
<field name="lastest_entry2" /> <newline/>
<button string="Reconcile" name="%(action_view_account_move_line_reconcile)d" type="action" />
<button string="Nothing to Reconcile" name="%(action_account_unreconcile)d" type="action" />
<field name="reconciliation_progress" widget="progressbar" nolabel="1"/>
</group>
</form>
</field>
+120 -38
View File
@@ -1,42 +1,124 @@
openerp.account = function(instance) {
instance.account.extend_view = instance.web.ViewManager.include({
start : function(){
this._super()
this.setup_exended_list_view()
},
setup_exended_list_view: function(parent){
if (this.action && this.action.extended_form_view_id){
var self = this
view_id = this.action.extended_form_view_id[0]
var from_view = this.registry.get_object('form');
this.dataset_form.context.extended_from = true
this.dataset_form.read_slice()
this.dataset_form.context.extended_from = false
var obj_from_view = new from_view(this, this.dataset_form, view_id, options={});
this.obj_from_view = obj_from_view
obj_from_view.template = 'ExtendedFormView'
view_promise = obj_from_view.appendTo(this.$element.find('.oe_extended_form_view'))
$.when(view_promise).then(function() {
obj_from_view.on_pager_action('first')
})
}
},
})
instance.account.extend_view_action = instance.web.ViewManagerAction.include({
init: function(parent, action) {
this._super(parent, action)
this.dataset_form = new instance.web.DataSetSearch(this, action.res_model, action.context, action.domain);
},
})
instance.account.extend_form_view = instance.web.FormView.include({
on_pager_action: function(action) {
var self = this
var viewmanager = self.__parentedParent
$.when(this._super(action)).then(function() {
var id = self.get_fields_values().partner_id
viewmanager.action.domain = [["partner_id", "=", id]]
viewmanager.searchview.do_search()
})
var _t = instance.web._t,
_lt = instance.web._lt;
instance.web.views.add('form_clone', 'instance.account.extend_form_view');
instance.web.form.tags.add('list_button','instance.account.list_button')
instance.account.extend_actionmanager = instance.web.ActionManager.include({
ir_actions_act_window: function (action, on_close) {
var self = this;
if (_(['base.module.upgrade', 'base.setup.installer'])
.contains(action.res_model)) {
var old_close = on_close;
on_close = function () {
instance.webclient.do_reload().then(old_close);
};
}
if (action.target === 'new') {
if (this.dialog == null) {
this.dialog = new instance.web.Dialog(this, { width: '80%' });
if(on_close)
this.dialog.on_close.add(on_close);
} else {
this.dialog_viewmanager.destroy();
}
this.dialog.dialog_title = action.name;
this.dialog_viewmanager = new instance.web.ViewManagerAction(this, action);
this.dialog_viewmanager.appendTo(this.dialog.$element);
this.dialog.open();
} else {
this.dialog_stop();
this.content_stop();
if(action.menu_id) {
return this.getParent().do_action(action, function () {
instance.webclient.menu.open_menu(action.menu_id);
});
}
this.inner_action = action;
if (action.extended_form_view_id){
this.inner_viewmanager = new instance.account.extend_viewmanager(this, action);
}else{
this.inner_viewmanager = new instance.web.ViewManagerAction(this, action);
}
this.inner_viewmanager.appendTo(this.$element);
}
},
})
instance.account.extend_viewmanager = instance.web.ViewManagerAction.extend({
init: function(parent, action) {
this._super.apply(this,arguments);
this.dataset_form = new instance.web.DataSetSearch(this, action.res_model, action.context, action.domain);
},
start : function(){
this._super()
this.setup_exended_list_view(this)
},
on_mode_switch: function (view_type, no_store, options) {
self = this
self.list_loaded = $.when(this._super.apply(this, arguments)).then(function () {
self.list_view = self.views['list']
})
},
setup_exended_list_view: function(parent){
var from_view,
obj_from_view;
view_id = this.action.extended_form_view_id[0]
from_view = this.registry.get_object('form_clone');
this.dataset_form.context.extended_from = true
this.dataset_loaded = this.dataset_form.read_slice()
this.dataset_form.context.extended_from = false
obj_from_view = new from_view(self, this.dataset_form, view_id, options={});
obj_from_view.template = 'ExtendedFormView'
view_promise = obj_from_view.appendTo(this.$element.find('.oe_extended_form_view'))
$.when(view_promise && this.dataset_loaded).then(function() {
obj_from_view.on_pager_action('first')
})
}
})
instance.account.extend_form_view = instance.web.FormView.extend({
init :function(){
this._super.apply(this,arguments);
this.original_domain = this.getParent().action.domain;
},
on_pager_action: function(action) {
var self = this
var viewmanager = self.getParent();
viewmanager.action.domain = this.original_domain
$.when(this._super(action)).then(function() {
var id = self.get_fields_values().partner_id;
viewmanager.action.domain = (viewmanager.action.domain || []).concat([["partner_id", "=", id]])
viewmanager.searchview.do_search()
})
}
})
instance.account.list_button = instance.web.form.WidgetButton.extend({
on_click: function() {
var list_view = this.view.getParent().list_view.controller
ids = list_view.get_selected_ids()
if (ids.length == 0) {
instance.web.dialog($("<div />").text(_t("You must choose at least one record.")), { title: _t("Warning"), modal: true });
return false;
}
var additional_context = _.extend({
active_id: ids[0],
active_ids: ids,
active_model: list_view.dataset.model
});
self.rpc("/web/action/load", {
action_id: py.eval(this.node.attrs.name),
context: additional_context
}, function(result) {
result.result.context = _.extend(result.result.context || {},
additional_context);
result.result.flags = result.result.flags || {};
result.result.flags.new_window = true;
self.do_action(result.result, function () {
// reload view
list_view.reload();
});
});
}
})
}