[FIX] odex_takaful
This commit is contained in:
parent
a2e92f184f
commit
b9295d2870
|
|
@ -2,6 +2,8 @@
|
||||||
from odoo import models, fields, api, _
|
from odoo import models, fields, api, _
|
||||||
from odoo.exceptions import UserError, ValidationError, Warning
|
from odoo.exceptions import UserError, ValidationError, Warning
|
||||||
import logging
|
import logging
|
||||||
|
import random
|
||||||
|
import requests
|
||||||
from odoo import SUPERUSER_ID
|
from odoo import SUPERUSER_ID
|
||||||
from datetime import datetime, date, timedelta
|
from datetime import datetime, date, timedelta
|
||||||
|
|
||||||
|
|
@ -109,12 +111,36 @@ class EsterdadWizard(models.Model):
|
||||||
|
|
||||||
def action_confirm_refund(self):
|
def action_confirm_refund(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
user = rec.sponsor_id.sponsor_id.kafel_id
|
sponsor_phone = rec.mobile
|
||||||
if user:
|
if sponsor_phone:
|
||||||
user.generate_otp()
|
company_id = rec.env.company
|
||||||
|
# Generate OTP & send it
|
||||||
|
otp = 1111
|
||||||
|
if company_id.sms_mode == 'test':
|
||||||
|
_logger.info(f"--- SMS TEST MODE --- OTP for mobile {sponsor_phone} is {otp}. SMS not sent.")
|
||||||
|
else:
|
||||||
|
otp = str(random.randint(1000, 9999))
|
||||||
|
payload = {
|
||||||
|
"recipients": [sponsor_phone],
|
||||||
|
"body": f"Your OTP code is: {otp}",
|
||||||
|
"sender": company_id.sms_sender_name,
|
||||||
|
}
|
||||||
|
headers = {
|
||||||
|
"Authorization": f"Bearer {company_id.sms_api_token}",
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
}
|
||||||
|
try:
|
||||||
|
response = requests.post(company_id.sms_api_url, json=payload, headers=headers, timeout=10)
|
||||||
|
response.raise_for_status() # Raise an error for non-2xx responses
|
||||||
|
_logger.info(f"OTP {otp} sent successfully to {sponsor_phone}")
|
||||||
|
except requests.exceptions.RequestException as e:
|
||||||
|
_logger.error(f"Failed to send OTP to {sponsor_phone}: {e}")
|
||||||
|
raise ValidationError("Failed to send OTP. Please check API configuration or try again later.")
|
||||||
|
##################
|
||||||
|
|
||||||
context = dict(self.env.context or {})
|
context = dict(self.env.context or {})
|
||||||
context['default_user_id'] = user.id
|
# context['default_user_id'] = user.id
|
||||||
context['default_otp'] = user.otp_code
|
context['default_otp'] = otp
|
||||||
context['default_esterdad_id'] = rec.id
|
context['default_esterdad_id'] = rec.id
|
||||||
context['default_invoice_ids'] = rec.journal_entry_ids.ids
|
context['default_invoice_ids'] = rec.journal_entry_ids.ids
|
||||||
context['default_cancel_reason'] = rec.cancel_reason.name if not rec.another_reason else rec.reason
|
context['default_cancel_reason'] = rec.cancel_reason.name if not rec.another_reason else rec.reason
|
||||||
|
|
@ -136,7 +162,7 @@ class EsterdadWizard(models.Model):
|
||||||
'context': context,
|
'context': context,
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
raise UserError(_("No user assigned to this sponsor"))
|
raise UserError(_("Mobile is required!"))
|
||||||
|
|
||||||
@api.depends('payment_ids')
|
@api.depends('payment_ids')
|
||||||
def _get_total_sponsorship_amount(self):
|
def _get_total_sponsorship_amount(self):
|
||||||
|
|
@ -150,7 +176,7 @@ class OTPWizard(models.TransientModel):
|
||||||
otp = fields.Integer()
|
otp = fields.Integer()
|
||||||
otp_code = fields.Integer()
|
otp_code = fields.Integer()
|
||||||
esterdad_id = fields.Many2one('esterdad.wizard')
|
esterdad_id = fields.Many2one('esterdad.wizard')
|
||||||
user_id = fields.Many2one('res.users')
|
# user_id = fields.Many2one('res.users')
|
||||||
invoice_ids = fields.Many2many('account.move')
|
invoice_ids = fields.Many2many('account.move')
|
||||||
# payment_ids = fields.Many2many(
|
# payment_ids = fields.Many2many(
|
||||||
# 'account.payment',
|
# 'account.payment',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue