[ADD] Add the period for replace and waiting
This commit is contained in:
parent
bc0b2e56d0
commit
fe43385055
|
|
@ -101,30 +101,52 @@ class DonationsDetailsLines(models.Model):
|
||||||
ages = fields.Integer(compute='_compute_get_age_range' , store=True)
|
ages = fields.Integer(compute='_compute_get_age_range' , store=True)
|
||||||
waiting_date = fields.Date(
|
waiting_date = fields.Date(
|
||||||
string="تاريخ الانتظار",
|
string="تاريخ الانتظار",
|
||||||
compute="_compute_dates",
|
|
||||||
store=True
|
|
||||||
)
|
)
|
||||||
|
|
||||||
replace_date = fields.Date(
|
period_display = fields.Char(
|
||||||
string="تاريخ الاستبدال",
|
string="Period",
|
||||||
compute="_compute_dates",
|
compute="_compute_period_display" )
|
||||||
store=True
|
|
||||||
)
|
|
||||||
|
|
||||||
@api.depends('state')
|
@api.depends('end_date', 'waiting_date')
|
||||||
|
def _compute_period_display(self):
|
||||||
|
today = date.today()
|
||||||
|
print('Hiiiii')
|
||||||
|
for rec in self:
|
||||||
|
|
||||||
|
# pick whichever date is set
|
||||||
|
if rec.state == 'replace' :
|
||||||
|
base_date = rec.end_date
|
||||||
|
elif rec.state == 'waiting':
|
||||||
|
base_date = rec.waiting_date
|
||||||
|
else:
|
||||||
|
base_date = False
|
||||||
|
print('Base >>> ' , base_date)
|
||||||
|
if base_date:
|
||||||
|
print('rec.waiting_date >>> ' , rec.waiting_date)
|
||||||
|
delta = relativedelta(today, base_date)
|
||||||
|
print('rec.delta >>> ' , str(delta))
|
||||||
|
# build human-readable string
|
||||||
|
if delta.years > 0:
|
||||||
|
rec.period_display = f"{delta.years} year(s)"
|
||||||
|
elif delta.months > 0:
|
||||||
|
rec.period_display = f"{delta.months} month(s)"
|
||||||
|
elif delta.days > 0:
|
||||||
|
rec.period_display = f"{delta.days} day(s)"
|
||||||
|
else:
|
||||||
|
rec.period_display = "Today"
|
||||||
|
else:
|
||||||
|
rec.period_display = "No date"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@api.constrains('state')
|
||||||
def _compute_dates(self):
|
def _compute_dates(self):
|
||||||
"""Automatically set waiting_date or replace_date based on state."""
|
"""Automatically set waiting_date or replace_date based on state."""
|
||||||
for rec in self:
|
for rec in self:
|
||||||
if rec.state == 'waiting':
|
if rec.state == 'waiting':
|
||||||
print(date.today())
|
|
||||||
rec.waiting_date = date.today()
|
rec.waiting_date = date.today()
|
||||||
rec.replace_date = False
|
|
||||||
elif rec.state == 'replace':
|
|
||||||
rec.replace_date = date.today()
|
|
||||||
rec.waiting_date = False
|
|
||||||
else:
|
else:
|
||||||
rec.waiting_date = False
|
rec.waiting_date = False
|
||||||
rec.replace_date = False
|
|
||||||
|
|
||||||
|
|
||||||
# cheque_number = fields.Integer(string="Cheque Number")
|
# cheque_number = fields.Integer(string="Cheque Number")
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,6 @@
|
||||||
<field name="sponsorship_creation_date" />
|
<field name="sponsorship_creation_date" />
|
||||||
<field name="create_date" optional="hide"/>
|
<field name="create_date" optional="hide"/>
|
||||||
<field name="waiting_date" widget="date" optional="hide"/>
|
<field name="waiting_date" widget="date" optional="hide"/>
|
||||||
<field name="replace_date" widget="date" optional="hide"/>
|
|
||||||
<field name="state" widget="badge"
|
<field name="state" widget="badge"
|
||||||
decoration-muted="state == 'draft'"
|
decoration-muted="state == 'draft'"
|
||||||
decoration-warning="state == 'waiting'"
|
decoration-warning="state == 'waiting'"
|
||||||
|
|
@ -182,7 +181,8 @@
|
||||||
<group>
|
<group>
|
||||||
<group string="Donation Information">
|
<group string="Donation Information">
|
||||||
<field name="ages" invisible="1" />
|
<field name="ages" invisible="1" />
|
||||||
<field name="waiting_date" widget="date" />
|
<field name="period_display" invisible="0" />
|
||||||
|
<field name="waiting_date" widget="date" invisible="1"/>
|
||||||
<field name="donation_type" invisible="1"/>
|
<field name="donation_type" invisible="1"/>
|
||||||
<field name="donation_types"
|
<field name="donation_types"
|
||||||
attrs="{'invisible': [('donation_type', '!=', 'donation')], 'readonly': [('parent_state', '!=', 'draft')]}" />
|
attrs="{'invisible': [('donation_type', '!=', 'donation')], 'readonly': [('parent_state', '!=', 'draft')]}" />
|
||||||
|
|
@ -354,6 +354,98 @@
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record id="donations_details_lines_view_tree_waiting" model="ir.ui.view">
|
||||||
|
<field name="name">donations.details.lines.view.tree.waiting</field>
|
||||||
|
<field name="model">donations.details.lines</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree default_order="waiting_date asc" create="0" edit="0" >
|
||||||
|
<field name="sponsorship_scheduling_line_ids" invisible="1" />
|
||||||
|
<field name="direct_debit" invisible="1" />
|
||||||
|
<field name="sequence_no" />
|
||||||
|
<field name="sponsor_id" />
|
||||||
|
<field name="sponsor_phone" widget="phone"/>
|
||||||
|
<field name="donation_type" optional="show"/>
|
||||||
|
<field name="sponsorship_duration" optional="hide"/>
|
||||||
|
<field name="donation_mechanism" optional="hide"/>
|
||||||
|
<field name="product_template_id" />
|
||||||
|
<field name="benefit_status" widget="badge"
|
||||||
|
decoration-success="benefit_status == 'benefit'"
|
||||||
|
decoration-danger="benefit_status == 'non_benefit'"/>
|
||||||
|
<field name="start_date" widget="date"/>
|
||||||
|
<field name="end_date" widget="date"/>
|
||||||
|
<field name="donation_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
|
||||||
|
<field name="total_donation_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
|
||||||
|
<field name="currency_id" invisible="1"/>
|
||||||
|
<field name="branch_custom_id" optional="hide" />
|
||||||
|
<field name="benefit_family_code" optional="hide" />
|
||||||
|
<field name="benefit_id" optional="hide" />
|
||||||
|
<field name="sponsorship_creation_date" />
|
||||||
|
<field name="create_date" optional="hide"/>
|
||||||
|
<field name="waiting_date" widget="date" />
|
||||||
|
<field name="period_display" />
|
||||||
|
<field name="state" widget="badge"
|
||||||
|
decoration-muted="state == 'draft'"
|
||||||
|
decoration-warning="state == 'waiting'"
|
||||||
|
decoration-success="state in ['active', 'paid','confirmed']"
|
||||||
|
decoration-danger="state == 'closed'"
|
||||||
|
decoration-info="state == 'extended'" />
|
||||||
|
|
||||||
|
<button name="action_view_scheduling_lines"
|
||||||
|
string="View Scheduling Lines"
|
||||||
|
type="object"
|
||||||
|
attrs="{'invisible': ['|', ('direct_debit', '=', False), ('sponsorship_scheduling_line_ids', '=', [])]}"
|
||||||
|
class="btn-secondary"
|
||||||
|
icon="fa-calendar" />
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="donations_details_lines_view_tree_replace" model="ir.ui.view">
|
||||||
|
<field name="name">donations.details.lines.view.tree.replace</field>
|
||||||
|
<field name="model">donations.details.lines</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree default_order="end_date asc" create="0" edit="0" >
|
||||||
|
<field name="sponsorship_scheduling_line_ids" invisible="1" />
|
||||||
|
<field name="direct_debit" invisible="1" />
|
||||||
|
<field name="sequence_no" />
|
||||||
|
<field name="sponsor_id" />
|
||||||
|
<field name="sponsor_phone" widget="phone"/>
|
||||||
|
<field name="donation_type" optional="show"/>
|
||||||
|
<field name="sponsorship_duration" optional="hide"/>
|
||||||
|
<field name="donation_mechanism" optional="hide"/>
|
||||||
|
<field name="product_template_id" />
|
||||||
|
<field name="benefit_status" widget="badge"
|
||||||
|
decoration-success="benefit_status == 'benefit'"
|
||||||
|
decoration-danger="benefit_status == 'non_benefit'"/>
|
||||||
|
<field name="start_date" widget="date"/>
|
||||||
|
<field name="end_date" widget="date"/>
|
||||||
|
<field name="donation_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
|
||||||
|
<field name="total_donation_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
|
||||||
|
<field name="currency_id" invisible="1"/>
|
||||||
|
<field name="branch_custom_id" optional="hide" />
|
||||||
|
<field name="benefit_family_code" optional="hide" />
|
||||||
|
<field name="benefit_id" optional="hide" />
|
||||||
|
<field name="sponsorship_creation_date" />
|
||||||
|
<field name="create_date" optional="hide"/>
|
||||||
|
<field name="end_date" widget="date" />
|
||||||
|
<field name="period_display" />
|
||||||
|
<field name="state" widget="badge"
|
||||||
|
decoration-muted="state == 'draft'"
|
||||||
|
decoration-warning="state == 'waiting'"
|
||||||
|
decoration-success="state in ['active', 'paid','confirmed']"
|
||||||
|
decoration-danger="state == 'closed'"
|
||||||
|
decoration-info="state == 'extended'" />
|
||||||
|
|
||||||
|
<button name="action_view_scheduling_lines"
|
||||||
|
string="View Scheduling Lines"
|
||||||
|
type="object"
|
||||||
|
attrs="{'invisible': ['|', ('direct_debit', '=', False), ('sponsorship_scheduling_line_ids', '=', [])]}"
|
||||||
|
class="btn-secondary"
|
||||||
|
icon="fa-calendar" />
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<record id="donations_details_lines_action" model="ir.actions.act_window">
|
<record id="donations_details_lines_action" model="ir.actions.act_window">
|
||||||
<field name="name">Donations Details Lines</field>
|
<field name="name">Donations Details Lines</field>
|
||||||
<field name="res_model">donations.details.lines</field>
|
<field name="res_model">donations.details.lines</field>
|
||||||
|
|
@ -368,6 +460,9 @@
|
||||||
<field name="view_mode">tree,form</field>
|
<field name="view_mode">tree,form</field>
|
||||||
<field name="domain">[('state', '=', 'waiting')]</field>
|
<field name="domain">[('state', '=', 'waiting')]</field>
|
||||||
<field name="search_view_id" ref="donations_details_lines_view_search"/>
|
<field name="search_view_id" ref="donations_details_lines_view_search"/>
|
||||||
|
<field name="view_ids" eval="[(5, 0, 0),
|
||||||
|
(0, 0, {'view_mode': 'tree', 'view_id': ref('donations_details_lines_view_tree_waiting')}),
|
||||||
|
(0, 0, {'view_mode': 'form', 'view_id': ref('donations_details_lines_view_form')})]"/>
|
||||||
<field name="context">{'create': False, 'delete': False}</field>
|
<field name="context">{'create': False, 'delete': False}</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
@ -376,6 +471,9 @@
|
||||||
<field name="res_model">donations.details.lines</field>
|
<field name="res_model">donations.details.lines</field>
|
||||||
<field name="view_mode">tree,form</field>
|
<field name="view_mode">tree,form</field>
|
||||||
<field name="domain">[('state', '=', 'replace')]</field>
|
<field name="domain">[('state', '=', 'replace')]</field>
|
||||||
|
<field name="view_ids" eval="[(5, 0, 0),
|
||||||
|
(0, 0, {'view_mode': 'tree', 'view_id': ref('donations_details_lines_view_tree_replace')}),
|
||||||
|
(0, 0, {'view_mode': 'form', 'view_id': ref('donations_details_lines_view_form')})]"/>
|
||||||
<field name="search_view_id" ref="donations_details_lines_view_search"/>
|
<field name="search_view_id" ref="donations_details_lines_view_search"/>
|
||||||
<field name="context">{'create': False, 'delete': False}</field>
|
<field name="context">{'create': False, 'delete': False}</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue