add filter domain in views tree

This commit is contained in:
wilsongomez 2022-06-03 10:43:41 -05:00
parent 700a9d5ac3
commit 653c94baeb
5 changed files with 103 additions and 13 deletions

View file

@ -28,6 +28,42 @@ this repository contains the full copyright notices and license terms. -->
<field name="view" ref="exportation_dex_view_form"/>
<field name="act_window" ref="act_exportation_dex_tree"/>
</record>
<record model="ir.action.act_window.domain" id="act_dex_form_domain_draft">
<field name="name">Draft</field>
<field name="sequence" eval="10"/>
<field name="domain"
eval="[('state', '=', 'draft')]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_exportation_dex_tree"/>
</record>
<record model="ir.action.act_window.domain" id="act_dex_form_domain_processing">
<field name="name">Processing</field>
<field name="sequence" eval="20"/>
<field name="domain"
eval="[('state', '=', 'processing')]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_exportation_dex_tree"/>
</record>
<record model="ir.action.act_window.domain" id="act_sale_form_domain_finished">
<field name="name">Finished</field>
<field name="sequence" eval="30"/>
<field name="domain"
eval="[('state', '=', 'finished')]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_exportation_dex_tree"/>
</record>
<record model="ir.action.act_window.domain" id="act_sale_form_domain_all">
<field name="name">All</field>
<field name="sequence" eval="30"/>
<field name="domain"
eval="[]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_exportation_dex_tree"/>
</record>
<menuitem parent="currency.menu_currency" sequence="1"
action="act_exportation_dex_tree"
id="menu_exportation_dex"/>

View file

@ -107,11 +107,28 @@ class Phytosanitary(ModelSQL, ModelView):
issue_date = fields.Date('Issue Date', required=True)
stocks = fields.One2Many('farming.phyto.stock', 'phyto', 'Stocks')
balance = fields.Function(fields.Integer('Balance'), 'get_balance')
state = fields.Selection([
('active', 'Active'),
('finished', 'Finished'),
], 'State', states={'readonly': True}, select=True)
@classmethod
def __setup__(cls):
super(Phytosanitary, cls).__setup__()
cls._buttons.update({
'refresh': {
'depends': ['state'],
}
})
@staticmethod
def default_issue_date():
return date.today()
@staticmethod
def default_state():
return 'active'
def get_balance(self, name=None):
res = []
for stock in self.stocks:
@ -120,23 +137,29 @@ class Phytosanitary(ModelSQL, ModelView):
@classmethod
def search_rec_name(cls, name, clause):
domain = super(Phytosanitary, cls).search_rec_name(name, clause)
domain += [('ica', clause[1], clause[2])]
print(domain, clause, '----------')
return domain
# if clause[1].startswith('!') or clause[1].startswith('not '):
# bool_op = 'AND'
# else:
# bool_op = 'OR'
# return [
# bool_op,
# ('number',) + tuple(clause[1:]),
# ('ica.party.name',) + tuple(clause[1:]),
# ]
if clause[1].startswith('!') or clause[1].startswith('not '):
bool_op = 'AND'
else:
bool_op = 'OR'
return [
bool_op,
('number',) + tuple(clause[1:]),
('ica.party.name',) + tuple(clause[1:]),
]
def get_rec_name(self, name):
return '[' + self.number + '] ' + self.ica.party.name
@classmethod
@ModelView.button
def refresh(cls, records):
for rec in records:
if rec.balance == 0:
rec.state = 'finished'
else:
rec.state = 'active'
rec.save()
class PhytoStock(ModelSQL, ModelView):
"Phytosanitary Stock"

View file

@ -138,6 +138,33 @@ this repository contains the full copyright notices and license terms. -->
<field name="view" ref="farming_phyto_view_form"/>
<field name="act_window" ref="act_farming_phyto_tree"/>
</record>
<record model="ir.action.act_window.domain" id="act_farming_phyto_form_domain_active">
<field name="name">Active</field>
<field name="sequence" eval="10"/>
<field name="domain"
eval="[('state', '=', 'active')]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_farming_phyto_tree"/>
</record>
<record model="ir.action.act_window.domain" id="act_farming_phyto_form_domain_finished">
<field name="name">Finished</field>
<field name="sequence" eval="20"/>
<field name="domain"
eval="[('state', '=', 'finished')]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_farming_phyto_tree"/>
</record>
<record model="ir.action.act_window.domain" id="act_farming_phyto_form_domain_all">
<field name="name">All</field>
<field name="sequence" eval="30"/>
<field name="domain"
eval="[]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_farming_phyto_tree"/>
</record>
<menuitem parent="farming.menu_farming" sequence="2"
action="act_farming_phyto_tree" id="menu_farming_phyto_tree"/>

View file

@ -11,4 +11,7 @@ this repository contains the full copyright notices and license terms. -->
<label name="balance"/>
<field name="balance"/>
<field name="stocks" colspan="4"/>
<label name="state"/>
<field name="state"/>
<button name="refresh" icon="tryton-refresh" string="Refresh"/>
</form>

View file

@ -6,4 +6,5 @@ this repository contains the full copyright notices and license terms. -->
<field name="ica" expand="1"/>
<field name="issue_date" expand="1"/>
<field name="balance" expand="1"/>
<button name="refresh" string="Refresh" tree_invisible="1"/>
</tree>