Merge pull request #6340 from expsa/samir_aladawi_fix_esterdad

[FIX] odex_takaful
This commit is contained in:
SamirLADOUI-sa 2026-01-25 10:53:26 +01:00 committed by GitHub
commit 7fd8b213b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 33 additions and 7 deletions

View File

@ -2,6 +2,8 @@
from odoo import models, fields, api, _
from odoo.exceptions import UserError, ValidationError, Warning
import logging
import random
import requests
from odoo import SUPERUSER_ID
from datetime import datetime, date, timedelta
@ -109,12 +111,36 @@ class EsterdadWizard(models.Model):
def action_confirm_refund(self):
for rec in self:
user = rec.sponsor_id.sponsor_id.kafel_id
if user:
user.generate_otp()
sponsor_phone = rec.mobile
if sponsor_phone:
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['default_user_id'] = user.id
context['default_otp'] = user.otp_code
# context['default_user_id'] = user.id
context['default_otp'] = otp
context['default_esterdad_id'] = rec.id
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
@ -136,7 +162,7 @@ class EsterdadWizard(models.Model):
'context': context,
}
else:
raise UserError(_("No user assigned to this sponsor"))
raise UserError(_("Mobile is required!"))
@api.depends('payment_ids')
def _get_total_sponsorship_amount(self):
@ -150,7 +176,7 @@ class OTPWizard(models.TransientModel):
otp = fields.Integer()
otp_code = fields.Integer()
esterdad_id = fields.Many2one('esterdad.wizard')
user_id = fields.Many2one('res.users')
# user_id = fields.Many2one('res.users')
invoice_ids = fields.Many2many('account.move')
# payment_ids = fields.Many2many(
# 'account.payment',