Add option skip send whatsapp template to meta

This commit is contained in:
younes 2025-07-20 11:10:25 +01:00
parent 7f65f42189
commit 93b28e19d8
3 changed files with 31 additions and 14 deletions

View File

@ -2505,3 +2505,8 @@ msgstr "placeholder=\"e.g. https://www.example.com\"/>"
#: model_terms:ir.ui.view,arch_db:whatsapp.whatsapp_composer_view_form
msgid "recipients have an invalid phone number and will be skipped."
msgstr "لدى المستلمين أرقام هواتف غير صحيحة وسيتم تخطيهم. "
#. module: whatsapp
#: model:ir.model.fields,field_description:whatsapp.field_whatsapp_template__is_test
msgid "Test Mode"
msgstr "وضع الاختبار"

View File

@ -121,6 +121,7 @@ class WhatsAppTemplate(models.Model):
messages_count = fields.Integer(string="Messages Count", compute='_compute_messages_count')
has_action = fields.Boolean(string="Has Action", compute='_compute_has_action')
is_test = fields.Boolean(string='Test Mode')
_sql_constraints = [
('unique_name_account_template', 'unique(template_name, lang_code, wa_account_id)', "Duplicate template is not allowed for one Meta account.")
@ -463,15 +464,18 @@ class WhatsAppTemplate(models.Model):
'components': components,
})
try:
if self.wa_template_uid:
wa_api._submit_template_update(json_data, self.wa_template_uid)
if self.is_test:
self.status = 'pending'
else:
response = wa_api._submit_template_new(json_data)
self.write({
'wa_template_uid': response['id'],
'status': response['status'].lower()
})
if self.wa_template_uid:
wa_api._submit_template_update(json_data, self.wa_template_uid)
self.status = 'pending'
else:
response = wa_api._submit_template_new(json_data)
self.write({
'wa_template_uid': response['id'],
'status': response['status'].lower()
})
except WhatsAppError as we:
raise UserError(str(we))
@ -482,13 +486,16 @@ class WhatsAppTemplate(models.Model):
def button_sync_template(self):
"""Sync template from WhatsApp Business Account """
self.ensure_one()
wa_api = WhatsAppApi(self.wa_account_id)
try:
response = wa_api._get_template_data(wa_template_uid=self.wa_template_uid)
except WhatsAppError as e:
raise ValidationError(str(e))
if response.get('id'):
self._update_template_from_response(response)
if self.is_test:
self.status = 'approved'
else:
wa_api = WhatsAppApi(self.wa_account_id)
try:
response = wa_api._get_template_data(wa_template_uid=self.wa_template_uid)
except WhatsAppError as e:
raise ValidationError(str(e))
if response.get('id'):
self._update_template_from_response(response)
return {
'type': 'ir.actions.client',
'tag': 'reload',

View File

@ -28,6 +28,10 @@
type="object"
attrs="{'invisible': [('wa_template_uid', '=', False)]}"
groups="whatsapp.group_whatsapp_admin"/>
<button name="button_sync_template" string="Sync Template"
type="object" class="btn btn-primary"
attrs="{'invisible': ['|','|',('is_test', '=', False),('status','!=','pending'),('wa_template_uid', '=', True)]}"
groups="whatsapp.group_whatsapp_admin"/>
<button name="%(whatsapp_preview_action_from_template)d" string="Preview"
type="action" target="new"
context="{'active_id': id, 'dialog_size': 'medium'}"/>
@ -61,6 +65,7 @@
<field name="allowed_user_ids"
widget="many2many_tags_avatar"
placeholder="Users who can use this template.If empty then public."/>
<field name="is_test"/>
</group>
<group>
<field name="template_name"