From dbe45822f358d7a91534803a7e987b94a8e1b3f1 Mon Sep 17 00:00:00 2001 From: Samir Ladoui Date: Sun, 16 Feb 2025 10:10:36 +0100 Subject: [PATCH] [UPD] exp_transation_letters: add improvements on letters & restrictions --- .../exp_transation_letters/__manifest__.py | 3 +- .../exp_transation_letters/i18n/ar_001.po | 25 ++++++- .../exp_transation_letters/models/letter.py | 61 +++++++++++++---- .../security/ir.model.access.csv | 3 +- .../views/letters_view.xml | 38 +++++++---- .../views/transaction_views.xml | 66 +++++++++++++++++++ 6 files changed, 168 insertions(+), 28 deletions(-) create mode 100644 odex25_transactions/exp_transation_letters/views/transaction_views.xml diff --git a/odex25_transactions/exp_transation_letters/__manifest__.py b/odex25_transactions/exp_transation_letters/__manifest__.py index 68126e9f4..11ad9653b 100644 --- a/odex25_transactions/exp_transation_letters/__manifest__.py +++ b/odex25_transactions/exp_transation_letters/__manifest__.py @@ -24,7 +24,8 @@ Letters Managment 'views/letters_view.xml', 'reports/letter_template.xml', 'reports/formal_letter.xml', - 'views/editor.xml' + 'views/editor.xml', + 'views/transaction_views.xml' ], 'qweb' : [ ], diff --git a/odex25_transactions/exp_transation_letters/i18n/ar_001.po b/odex25_transactions/exp_transation_letters/i18n/ar_001.po index 60d80ceaa..270a315c5 100644 --- a/odex25_transactions/exp_transation_letters/i18n/ar_001.po +++ b/odex25_transactions/exp_transation_letters/i18n/ar_001.po @@ -56,6 +56,11 @@ msgstr "رقم المعاملة:" msgid "Add As Attachment to Transaction" msgstr "إضافة كمرفق إلى المعاملة" +#. module: exp_transation_letters +#: model:ir.model.fields.selection,name:exp_transation_letters.selection__letters_letters__state__attached +msgid "Attached" +msgstr "تم الإرفاق" + #. module: exp_transation_letters #: model:ir.model.fields,field_description:exp_transation_letters.field_res_users__attachment_id msgid "Attachment" @@ -106,6 +111,11 @@ msgstr "التاريخ" msgid "Display Name" msgstr "اسم العرض" +#. module: exp_transation_letters +#: model:ir.model.fields.selection,name:exp_transation_letters.selection__letters_letters__state__draft +msgid "Draft" +msgstr "مسودة" + #. module: exp_transation_letters #: model:ir.model.fields,field_description:exp_transation_letters.field_letters_template__is_favorite #: model:ir.model.fields.selection,name:exp_transation_letters.selection__letters_template__is_favorite__1 @@ -126,7 +136,7 @@ msgstr "المعرف" #. module: exp_transation_letters #: model:ir.model.fields.selection,name:exp_transation_letters.selection__letters_letters__transaction_type__incoming msgid "Incoming" -msgstr "وارد" +msgstr "خارجية واردة" #. module: exp_transation_letters #: model:ir.model.fields,field_description:exp_transation_letters.field_letters_letters__incoming_transaction_id @@ -216,7 +226,7 @@ msgstr "الاسم" #. module: exp_transation_letters #: model:ir.model.fields.selection,name:exp_transation_letters.selection__letters_letters__transaction_type__outgoing msgid "Outgoing" -msgstr "خارجية" +msgstr "خارجية صادرة" #. module: exp_transation_letters #: model:ir.model.fields,field_description:exp_transation_letters.field_letters_letters__outgoing_transaction_id @@ -233,6 +243,11 @@ msgstr "طباعة الخطاب على ورق رسمي" msgid "Print letters" msgstr "طباعة الخطاب" +#. module: exp_transation_letters +#: model_terms:ir.ui.view,arch_db:exp_transation_letters.view_transaction_letters_form +msgid "Reset to Draft" +msgstr "ارجاع الى مسودة" + #. module: exp_transation_letters #: model:ir.model.fields,field_description:exp_transation_letters.field_letters_letters__new_signature #: model:ir.model.fields,field_description:exp_transation_letters.field_letters_letters__signature @@ -270,6 +285,12 @@ msgstr "وحدة" msgid "Users" msgstr "المستخدمون" +#. module: exp_transation_letters +#: code:addons/exp_transation_letters/models/letter.py:0 +#, python-format +msgid "You cannot delete a letter in the Attached state." +msgstr "لا يمكنك حذف خطاب تم إرفاقه." + #. module: exp_transation_letters #: model:ir.model,name:exp_transation_letters.model_letters_letters msgid "letters.letters" diff --git a/odex25_transactions/exp_transation_letters/models/letter.py b/odex25_transactions/exp_transation_letters/models/letter.py index b05f0aa76..d404ceb86 100644 --- a/odex25_transactions/exp_transation_letters/models/letter.py +++ b/odex25_transactions/exp_transation_letters/models/letter.py @@ -1,29 +1,55 @@ # -*- coding: utf-8 -*- import base64 -from odoo import api, fields, models +from odoo import api, fields, models, _ +from odoo.exceptions import UserError from hijri_converter import convert import datetime class Letters(models.Model): _name = "letters.letters" + _inherit = 'mail.thread' - name = fields.Char(string="Name") - unite = fields.Many2one('cm.entity', string="Unite") - letter_template = fields.Many2one('letters.template', string='Template') - date = fields.Date(string="Date") + name = fields.Char(string="Name", tracking=True) + unite = fields.Many2one('cm.entity', string="Unite", tracking=True) + letter_template = fields.Many2one('letters.template', string='Template', tracking=True) + date = fields.Date(string="Date", tracking=True) hijir_date = fields.Char(string="Hijir Date", compute='compute_hijri') - content = fields.Html(string="Content") + content = fields.Html(string="Content", tracking=True) signature = fields.Binary("Signature image",compute='compute_img',store=True) is_sign = fields.Boolean(string='Is Sign',readonly=True) new_signature = fields.Binary("Signature image",readonly=True) transaction_type = fields.Selection([('internal', 'Internal'), ('outgoing', 'Outgoing'), - ('incoming', 'Incoming')], default='internal', string='Transaction Type') - incoming_transaction_id = fields.Many2one(comodel_name='incoming.transaction', string='Incoming Transaction') - internal_transaction_id = fields.Many2one(comodel_name='internal.transaction', string='Internal Transaction') - outgoing_transaction_id = fields.Many2one(comodel_name='outgoing.transaction', string='Outgoing Transaction') - attachment_generated = fields.Boolean() + ('incoming', 'Incoming')], default='internal', string='Transaction Type', tracking=True) + incoming_transaction_id = fields.Many2one( + comodel_name='incoming.transaction', + string='Incoming Transaction', + domain="[('state', 'not in', ['closed', 'canceled'])]", + tracking=True + ) + internal_transaction_id = fields.Many2one( + comodel_name='internal.transaction', + string='Internal Transaction', + domain="[('state', 'not in', ['closed', 'canceled'])]", + tracking=True + ) + outgoing_transaction_id = fields.Many2one( + comodel_name='outgoing.transaction', + string='Outgoing Transaction', + domain="[('state', 'not in', ['closed', 'canceled'])]", + tracking=True + ) + # attachment_generated = fields.Boolean() signed_user_id = fields.Many2one('res.users') + state = fields.Selection( + [ + ('draft', 'Draft'), + ('attached', 'Attached') + ], + default='draft', + readonly=True, + tracking=True + ) @api.depends('transaction_type','name') @@ -102,7 +128,8 @@ class Letters(models.Model): 'store_fname': ATTACHMENT_NAME, 'mimetype': 'application/pdf' }) - self.attachment_generated = True + # self.attachment_generated = True + self.state = 'attached' return self.env['cm.attachment.rule'].sudo().create({ 'employee_id': self.unite.id, 'entity_id': self.unite.id, @@ -120,6 +147,16 @@ class Letters(models.Model): final_content = values.get('content') values['content'] = final_content.replace('line-height', '') return super(Letters, self).write(values) + + def unlink(self): + for record in self: + if record.state == 'attached': + raise UserError(_("You cannot delete a letter in the Attached state.")) + return super(Letters, self).unlink() + + def action_draft(self): + self.ensure_one() + self.state = 'draft' class LettersTemp(models.Model): diff --git a/odex25_transactions/exp_transation_letters/security/ir.model.access.csv b/odex25_transactions/exp_transation_letters/security/ir.model.access.csv index 54cc6d3a4..a3634efef 100644 --- a/odex25_transactions/exp_transation_letters/security/ir.model.access.csv +++ b/odex25_transactions/exp_transation_letters/security/ir.model.access.csv @@ -1,3 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -letter_employee,employee_letter,exp_transation_letters.model_letters_letters,exp_transation_letters.group_cm_user_letter,1,1,1,1 +letter_employee,employee_letter,exp_transation_letters.model_letters_letters,exp_transation_letters.group_cm_user_letter,1,1,1,0 letter_employee__temp,employee_letter,exp_transation_letters.model_letters_template,exp_transation_letters.group_cm_user_letter,1,1,1,1 +letter_manager_employee,manager_employee_letter,exp_transation_letters.model_letters_letters,exp_transaction_documents.group_transaction_manager,1,1,1,1 \ No newline at end of file diff --git a/odex25_transactions/exp_transation_letters/views/letters_view.xml b/odex25_transactions/exp_transation_letters/views/letters_view.xml index 42990e7c4..667056633 100644 --- a/odex25_transactions/exp_transation_letters/views/letters_view.xml +++ b/odex25_transactions/exp_transation_letters/views/letters_view.xml @@ -19,35 +19,49 @@
-
- - - - + + + + - + - - - - + + + + - + +
+ +
diff --git a/odex25_transactions/exp_transation_letters/views/transaction_views.xml b/odex25_transactions/exp_transation_letters/views/transaction_views.xml new file mode 100644 index 000000000..9900abc0a --- /dev/null +++ b/odex25_transactions/exp_transation_letters/views/transaction_views.xml @@ -0,0 +1,66 @@ + + + + + incoming.transaction.view.form.inherit + incoming.transaction + + + + exp_transaction_documents.group_transaction_manager + + + + + incoming.transaction.view.form.inherit + incoming.transaction + + + + exp_transaction_documents.group_transaction_manager + + + + + + internal.transaction.view.form.inherit + internal.transaction + + + + exp_transaction_documents.group_transaction_manager + + + + + internal.transaction.view.form.inherit + internal.transaction + + + + exp_transaction_documents.group_transaction_manager + + + + + + outgoing.transaction.view.form.inherit + outgoing.transaction + + + + exp_transaction_documents.group_transaction_manager + + + + + outgoing.transaction.view.form.inherit + outgoing.transaction + + + + exp_transaction_documents.group_transaction_manager + + + +