commit
d26a4456a6
|
|
@ -1,6 +1,59 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Template for notifications due today -->
|
||||
<record id="email_template_due_today" model="mail.template">
|
||||
<field name="name">Payment Due Today</field>
|
||||
<field name="model_id" ref="model_rent_payment"/>
|
||||
<field name="subject">Payment Due Today</field>
|
||||
<field name="email_from">${(user.email)|safe}</field>
|
||||
<!-- <field name="email_to">${object.renter_id.email|safe}</field>
|
||||
<field name="body_html"> -->
|
||||
<![CDATA[
|
||||
<p>Dear ${object.renter_id.name},</p>
|
||||
<p>This is a reminder that your payment is due today for the rental contract ${object.contract_id.name}.</p>
|
||||
<p>Thank you.</p>
|
||||
]]>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Template for notifications due next week -->
|
||||
<record id="email_template_due_next_week" model="mail.template">
|
||||
<field name="name">Payment Due Next Week</field>
|
||||
<field name="model_id" ref="model_rent_payment"/>
|
||||
<field name="subject">Payment Due Next Week</field>
|
||||
<field name="email_from">${(user.email)|safe}</field>
|
||||
<!-- <field name="email_to">${object.renter_id.email|safe}</field> -->
|
||||
<field name="body_html">
|
||||
<![CDATA[
|
||||
<p>Dear ${object.renter_id.name},</p>
|
||||
<p>This is a reminder that your payment is due next week for the rental contract ${object.contract_id.name}.</p>
|
||||
<p>Thank you.</p>
|
||||
]]>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Cron job to check due payments -->
|
||||
<record id="ir_cron_check_due_payments" model="ir.cron">
|
||||
<field name="name">Check Due Payments</field>
|
||||
<field name="model_id" ref="model_rent_payment"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._check_due_payments()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="numbercall">-1</field>
|
||||
</record>
|
||||
<!-- Cron job to send payment notifications -->
|
||||
<record id="ir_cron_send_payment_notifications" model="ir.cron">
|
||||
<field name="name">Send Payment Notifications</field>
|
||||
<field name="model_id" ref="model_rent_payment"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._send_payment_notifications()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="numbercall">-1</field>
|
||||
</record>
|
||||
|
||||
<record id="sequence_rental_contract_seq" model="ir.sequence">
|
||||
<field name="name">Rental Contract</field>
|
||||
<field name="code">rental.contract</field>
|
||||
|
|
|
|||
|
|
@ -200,6 +200,72 @@ class RentPayment(models.Model):
|
|||
record.write({"state": 'due'})
|
||||
else:
|
||||
raise exceptions.ValidationError(_("You Must Confirm Contract First"))
|
||||
def _check_due_payments(self):
|
||||
payments = self.search([('state', '=', 'draft'), ('due_date', '<=', fields.Date.today())])
|
||||
for payment in payments:
|
||||
if payment.contract_id.state == 'confirm':
|
||||
payment.write({'state': 'due'})
|
||||
if payment.code == '/' or not payment.code:
|
||||
code = self.env['ir.sequence'].next_by_code('rent.payment') or '/'
|
||||
payment.write({'code': code})
|
||||
def _send_payment_notifications(self):
|
||||
today = fields.Date.today()
|
||||
next_week = today + timedelta(days=7)
|
||||
|
||||
payments_today = self.search([('due_date', '=', today), ('state', '=', 'draft')])
|
||||
payments_next_week = self.search([('due_date', '=', next_week), ('state', '=', 'draft')])
|
||||
|
||||
template_today = self.env.ref('property_management.email_template_due_today')
|
||||
template_next_week = self.env.ref('property_management.email_template_due_next_week')
|
||||
date_deadline = fields.Date.today()
|
||||
note = _("Please Chech the Due Date in rent")
|
||||
summary = _("Due Date Rent")
|
||||
|
||||
for payment in payments_today:
|
||||
email_list = [payment.renter_id.email,payment.user_id.email]
|
||||
email_to = ','.join(email_list)
|
||||
payment.message_post_with_template(template_today.id)
|
||||
if template_today:
|
||||
template_today.send_mail(payment.id, force_send=True,raise_exception=True,email_values={'email_to': email_to})
|
||||
payment.sudo().activity_schedule(
|
||||
'mail.mail_activity_data_todo', date_deadline,
|
||||
note=note,
|
||||
user_id=payment.user_id.id,
|
||||
res_id=payment.id,
|
||||
summary=summary
|
||||
)
|
||||
payment.sudo().activity_schedule(
|
||||
'mail.mail_activity_data_todo', date_deadline,
|
||||
note=note,
|
||||
user_id=payment.partner_id.user_id.id,
|
||||
res_id=payment.id,
|
||||
summary=summary
|
||||
)
|
||||
# إرسال إشعار إلى المستأجر والمستخدمين
|
||||
# يمكنك استخدام notification module للإشعارات أو mail.activity
|
||||
|
||||
for payment in payments_next_week:
|
||||
email_list = [payment.renter_id.email,payment.user_id.email]
|
||||
email_to = ','.join(email_list)
|
||||
payment.message_post_with_template(template_next_week.id)
|
||||
if template_next_week:
|
||||
template_next_week.send_mail(payment.id, force_send=True,raise_exception=True,email_values={'email_to':email_to})
|
||||
payment.sudo().activity_schedule(
|
||||
'mail.mail_activity_data_todo', date_deadline,
|
||||
note=note,
|
||||
user_id=payment.user_id.id,
|
||||
res_id=payment.id,
|
||||
summary=summary
|
||||
)
|
||||
payment.sudo().activity_schedule(
|
||||
'mail.mail_activity_data_todo', date_deadline,
|
||||
note=note,
|
||||
user_id=payment.partner_id.user_id.id,
|
||||
res_id=payment.id,
|
||||
summary=summary
|
||||
)
|
||||
return True
|
||||
|
||||
|
||||
def action_validate(self):
|
||||
for record in self:
|
||||
|
|
|
|||
Loading…
Reference in New Issue