Merge pull request #576 from expsa/real_dev

Real dev
This commit is contained in:
zainab2097 2024-08-07 14:19:33 +03:00 committed by GitHub
commit d26a4456a6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 119 additions and 0 deletions

View File

@ -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>

View File

@ -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: