Merge branch 'dev_odex25_sales' into chnage-in-membership-system
This commit is contained in:
commit
7040140f56
|
|
@ -26,7 +26,7 @@ jobs:
|
|||
run: |
|
||||
echo "** [INFO] Running on branch --> ${GITHUB_REF#refs/heads/}"
|
||||
mkdir -p ~/master_branch_sha
|
||||
echo "${{ github.sha }}" > ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - ${{ github.sha }}" >> ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
sudo chmod +x ${{ secrets.CYBER_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh
|
||||
sudo ${{ secrets.CYBER_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh ${{ secrets.CYBER_PROJECT_USER }} ${{ secrets.CYBER_STANDARD_FOLDER_PATH }} ${{ secrets.CYBER_MASTER_SERVICE }} master ${GITHUB_REF#refs/heads/master_} ${GITHUB_REF#refs/heads/} ${{ secrets.GH_TOKEN }}
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ jobs:
|
|||
run: |
|
||||
echo "** [INFO] Running on branch --> ${GITHUB_REF#refs/heads/}"
|
||||
mkdir -p ~/master_branch_sha
|
||||
echo "${{ github.sha }}" > ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - ${{ github.sha }}" >> ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
sudo chmod +x ${{ secrets.ENSAN_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh
|
||||
sudo ${{ secrets.ENSAN_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh ${{ secrets.ENSAN_PROJECT_USER }} ${{ secrets.ENSAN_STANDARD_FOLDER_PATH }} ${{ secrets.ENSAN_MASTER_SERVICE }} master ${GITHUB_REF#refs/heads/master_} ${GITHUB_REF#refs/heads/} ${{ secrets.GH_TOKEN }}
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ jobs:
|
|||
run: |
|
||||
echo "** [INFO] Running on branch --> ${GITHUB_REF#refs/heads/}"
|
||||
mkdir -p ~/master_branch_sha
|
||||
echo "${{ github.sha }}" > ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - ${{ github.sha }}" >> ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
sudo chmod +x ${{ secrets.HELPDESK_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh
|
||||
sudo ${{ secrets.HELPDESK_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh ${{ secrets.HELPDESK_PROJECT_USER }} ${{ secrets.HELPDESK_STANDARD_FOLDER_PATH }} ${{ secrets.HELPDESK_MASTER_SERVICE }} master ${GITHUB_REF#refs/heads/master_} ${GITHUB_REF#refs/heads/} ${{ secrets.GH_TOKEN }}
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ jobs:
|
|||
run: |
|
||||
echo "** [INFO] Running on branch --> ${GITHUB_REF#refs/heads/}"
|
||||
mkdir -p ~/master_branch_sha
|
||||
echo "${{ github.sha }}" > ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - ${{ github.sha }}" >> ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
sudo chmod +x ${{ secrets.KAZ_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh
|
||||
sudo ${{ secrets.KAZ_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh ${{ secrets.KAZ_PROJECT_USER }} ${{ secrets.KAZ_STANDARD_FOLDER_PATH }} ${{ secrets.KAZ_MASTER_SERVICE }} master ${GITHUB_REF#refs/heads/master_} ${GITHUB_REF#refs/heads/} ${{ secrets.GH_TOKEN }}
|
||||
sudo systemctl restart odoo-server-stage.service
|
||||
|
|
@ -83,7 +83,7 @@ jobs:
|
|||
run: |
|
||||
echo "** [INFO] Running on branch --> ${GITHUB_REF#refs/heads/}"
|
||||
mkdir -p ~/master_branch_sha
|
||||
echo "${{ github.sha }}" > ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - ${{ github.sha }}" >> ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
sudo chmod +x ${{ secrets.TWAHOD_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh
|
||||
sudo ${{ secrets.TWAHOD_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh ${{ secrets.TWAHOD_PROJECT_USER }} ${{ secrets.TWAHOD_STANDARD_FOLDER_PATH }} ${{ secrets.TWAHOD_MASTER_SERVICE }} master ${GITHUB_REF#refs/heads/master_} ${GITHUB_REF#refs/heads/} ${{ secrets.GH_TOKEN }}
|
||||
|
||||
|
|
@ -97,7 +97,7 @@ jobs:
|
|||
run: |
|
||||
echo "** [INFO] Running on branch --> ${GITHUB_REF#refs/heads/}"
|
||||
mkdir -p ~/master_branch_sha
|
||||
echo "${{ github.sha }}" > ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - ${{ github.sha }}" >> ~/master_branch_sha/${GITHUB_REF#refs/heads/}
|
||||
sudo chmod +x ${{ secrets.EKRAM_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh
|
||||
sudo ${{ secrets.EKRAM_STANDARD_FOLDER_PATH }}/scripts/pull_code.sh ${{ secrets.EKRAM_PROJECT_USER }} ${{ secrets.EKRAM_STANDARD_FOLDER_PATH }} ${{ secrets.EKRAM_MASTER_SERVICE }} master ${GITHUB_REF#refs/heads/master_} ${GITHUB_REF#refs/heads/} ${{ secrets.GH_TOKEN }}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,73 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
from odoo.tools import float_round
|
||||
from collections import defaultdict
|
||||
|
||||
class HrExpense(models.Model):
|
||||
_inherit = "hr.expense"
|
||||
|
||||
crm_lead_id = fields.Many2one('crm.lead', 'CRM Lead')
|
||||
|
||||
|
||||
def action_move_create(self):
|
||||
# Filter out refused expenses
|
||||
expenses = self.filtered(lambda x: not x.is_refused)
|
||||
|
||||
# Group expenses by their respective sheets
|
||||
expenses_by_sheet = {}
|
||||
for expense in expenses:
|
||||
sheet = expense.sheet_id
|
||||
if sheet not in expenses_by_sheet:
|
||||
expenses_by_sheet[sheet] = self.env['hr.expense']
|
||||
expenses_by_sheet[sheet] += expense
|
||||
|
||||
# Get moves and line values using the filtered expenses
|
||||
move_group_by_sheet = expenses._get_account_move_by_sheet()
|
||||
move_line_values_by_expense = expenses._get_account_move_line_values()
|
||||
|
||||
# Process each expense sheet
|
||||
for sheet, sheet_expenses in expenses_by_sheet.items():
|
||||
move = move_group_by_sheet[sheet.id]
|
||||
|
||||
# Collect all move line values for this sheet
|
||||
all_move_line_values = []
|
||||
for expense in sheet_expenses:
|
||||
all_move_line_values.extend(move_line_values_by_expense.get(expense.id, []))
|
||||
|
||||
# Consolidate lines by account_id
|
||||
grouped_lines = defaultdict(lambda: {'debit': 0.0, 'credit': 0.0, 'values': {}})
|
||||
for line in all_move_line_values:
|
||||
account_id = line['account_id']
|
||||
grouped_lines[account_id]['debit'] += line.get('debit', 0.0)
|
||||
grouped_lines[account_id]['credit'] += line.get('credit', 0.0)
|
||||
if not grouped_lines[account_id]['values']:
|
||||
grouped_lines[account_id]['values'] = {
|
||||
k: v for k, v in line.items() if k not in ('debit', 'credit')
|
||||
}
|
||||
|
||||
# Prepare final move lines with consolidated values
|
||||
final_move_lines = []
|
||||
for account_group in grouped_lines.values():
|
||||
line_data = account_group['values'].copy()
|
||||
line_data['debit'] = float_round(account_group['debit'], precision_digits=2)
|
||||
line_data['credit'] = float_round(account_group['credit'], precision_digits=2)
|
||||
final_move_lines.append((0, 0, line_data))
|
||||
|
||||
# Update the move with new lines (clear existing first)
|
||||
move.write({'line_ids': [(5, 0, 0)] + final_move_lines})
|
||||
|
||||
# Link the move to the expense sheet
|
||||
sheet.write({'account_move_id': move.id})
|
||||
|
||||
# Mark as paid if all expenses are company-paid
|
||||
if all(expense.payment_mode == 'company_account' for expense in sheet_expenses):
|
||||
sheet.paid_expense_sheets()
|
||||
|
||||
# Post all generated accounting moves
|
||||
for move in move_group_by_sheet.values():
|
||||
move._post()
|
||||
|
||||
return move_group_by_sheet
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0" ?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="mt_dev_membership_created" model="mail.message.subtype">
|
||||
<field name="name">Membership Created</field>
|
||||
<field name="sequence">20</field>
|
||||
|
|
@ -100,5 +102,5 @@
|
|||
<p>Your membership <b>${(object.name)}</b> was expired on <b>${object.datetime_convert()}</b> date.</p>
|
||||
]]></field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -1577,6 +1577,7 @@ msgstr "طباعة المرشحين للعضوية"
|
|||
|
||||
|
||||
|
||||
|
||||
#. module: dev_membership
|
||||
#: code:addons/dev_membership/models/res_partner.py:0
|
||||
#, python-format
|
||||
|
|
@ -1597,6 +1598,28 @@ msgid "Mobile number is required for members."
|
|||
msgstr "رقم الجوال مطلوب للأعضاء."
|
||||
|
||||
|
||||
=======
|
||||
#. module: dev_membership
|
||||
#: code:addons/dev_membership/models/res_partner.py:10
|
||||
#, python-format
|
||||
msgid "Mobile number must be unique."
|
||||
msgstr "رقم الهاتف يجب أن يكون فريداً."
|
||||
|
||||
|
||||
#. module: dev_membership
|
||||
#: code:addons/dev_membership/models/res_partner.py:10
|
||||
#, python-format
|
||||
msgid "ID number must be unique."
|
||||
msgstr "رقم الهوية يجب أن يكون فريداً."
|
||||
|
||||
|
||||
|
||||
#. module: dev_membership
|
||||
#: code:addons/dev_membership/models/res_partner.py:10
|
||||
#, python-format
|
||||
msgid "Mobile number must be exactly 10 digits."
|
||||
msgstr "رقم الهاتف يجب أن يتكون من 10 أرقام بالضبط."
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,8 @@ class MembershipCancellationRequest(models.Model):
|
|||
rec.membership_id.partner_id.memebership_end_date = request_date
|
||||
rec.membership_id.request_date = request_date
|
||||
rec.state = 'approved'
|
||||
rec.membership_id.state = 'cancel'
|
||||
if rec.membership_id.state=='active':
|
||||
rec.membership_id.state = 'cancel'
|
||||
rec.membership_id.partner_id.check_active_membership()
|
||||
|
||||
def action_reject(self):
|
||||
|
|
|
|||
|
|
@ -19,7 +19,10 @@ _logger = logging.getLogger(__name__)
|
|||
class Partner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
is_member = fields.Boolean(string='Is Member')
|
||||
is_member = fields.Boolean(string='Is Member' ,default=False)
|
||||
mobile = fields.Char(copy=False)
|
||||
identification_number = fields.Char(copy=False)
|
||||
|
||||
membership_count = fields.Integer(string="Membership Count", compute="_get_membership_count")
|
||||
active_membership_id = fields.Many2one('dev.membership', string='Membership', compute='check_active_membership')
|
||||
membrship_level = fields.Many2one('membership.level',string='Membrship level',store=True,compute='_compute_membership_level')
|
||||
|
|
@ -187,16 +190,22 @@ class Partner(models.Model):
|
|||
if record.is_member and not record.mobile:
|
||||
raise ValidationError(_("Mobile number is required for members."))
|
||||
|
||||
@api.constrains('identification_number')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@api.constrains('mobile', 'identification_number','email')
|
||||
def _check_unique_mobile_id(self):
|
||||
for record in self:
|
||||
# if record.mobile:
|
||||
# existing_mobile = self.search([
|
||||
# ('mobile', '=', record.mobile),
|
||||
# ('id', '!=', record.id)
|
||||
# ], limit=1)
|
||||
# if existing_mobile :
|
||||
# raise ValidationError(_("Mobile number must be unique."))
|
||||
if record.mobile:
|
||||
existing_mobile = self.search([
|
||||
('mobile', '=', record.mobile),
|
||||
('id', '!=', record.id)
|
||||
], limit=1)
|
||||
if existing_mobile:
|
||||
raise ValidationError(_("Mobile number must be unique."))
|
||||
|
||||
if record.identification_number:
|
||||
existing_id = self.search([
|
||||
('identification_number', '=', record.identification_number),
|
||||
|
|
@ -204,21 +213,26 @@ class Partner(models.Model):
|
|||
], limit=1)
|
||||
if existing_id:
|
||||
raise ValidationError(_("ID number must be unique."))
|
||||
|
||||
# @api.constrains('mobile')
|
||||
# def _check_mobile_format(self):
|
||||
|
||||
# for record in self:
|
||||
# print("Checking mobile format: %s", record.mobile)
|
||||
# if record.mobile and (len(record.mobile) != 10 or not record.mobile.isdigit()) and not record.user_ids:
|
||||
# raise ValidationError(_("Mobile number must be exactly 10 digits."))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@api.onchange('mobile')
|
||||
def _check_mobile_format(self):
|
||||
print("Test constraint running!")
|
||||
for record in self:
|
||||
print("Checking mobile format: %s", record.mobile)
|
||||
if record.mobile and (len(record.mobile) != 10 or not record.mobile.isdigit()):
|
||||
raise ValidationError(_("Mobile number must be exactly 10 digits."))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
attrs="{'invisible':['|',('membership_id','!=',False),('state','not in',['expire','active','cancel'])]}"/>
|
||||
<button name="%(dev_membership.membership_request_cancel_wizard_action)d" type="action" string="Cancel"
|
||||
attrs="{'invisible': ([('state', 'not in', ['active','expire'])])}"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,activeexpire,cancel"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,active,expire,cancel"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
|
|
|
|||
|
|
@ -170,10 +170,7 @@
|
|||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="arch" type="xml">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<xpath expr="//field[@name='title']" position="replace"></xpath>
|
||||
<xpath expr="//sheet/group/group[2]/field[@name='mobile']" position="before">
|
||||
<field name="is_member" />
|
||||
|
|
@ -241,6 +238,11 @@
|
|||
<xpath expr="//field[@name='function']" position="attributes">
|
||||
<attribute name="attrs">{'required':[('is_member','=',True)]}</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='mobile']" position="attributes">
|
||||
<attribute name="attrs">{'required':[('is_member','=',True)]}</attribute>
|
||||
</xpath>
|
||||
|
||||
|
||||
<xpath expr="//field[@name='company_type']" position="attributes">
|
||||
<attribute name="attrs">{'invisible':[('is_member','=',True)]}</attribute>
|
||||
</xpath>
|
||||
|
|
@ -274,6 +276,9 @@
|
|||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="partner_custom.partner_view_property_cusotm"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='identification_number']" position="attributes">
|
||||
<attribute name="attrs">{'required':[('is_member','=',True)]}</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//group[@name='identifcation_info']" position="after">
|
||||
<group>
|
||||
<field name="gender" attrs="{'required':[('is_member','=',True)]}"/>
|
||||
|
|
@ -292,6 +297,7 @@
|
|||
<record id="view_search_res_partner" model="ir.ui.view">
|
||||
<field name="name">res.partner.search</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="priority">20</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Res Partner Search">
|
||||
<field name="name"/>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<odoo >
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Recurrent payment emails -->
|
||||
<record id="email_payment_close" model="mail.template">
|
||||
<field name="name">Subscription: Payment Failure</field>
|
||||
|
|
@ -466,4 +468,6 @@
|
|||
<field name="lang">${object.partner_id.lang}</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
</record>
|
||||
</data >
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -113,7 +113,6 @@ msgid "State"
|
|||
msgstr "المحافظة"
|
||||
|
||||
#. module: odex25_website_event_track_gantt
|
||||
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_event_event__state_id
|
||||
#: model_terms:ir.ui.view,arch_db:odex25_website_event_track_gantt.event_event_view_form
|
||||
msgid "Country"
|
||||
msgstr "الدولة"
|
||||
|
|
@ -158,3 +157,29 @@ msgstr "أسم مسؤول التواصل"
|
|||
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_event_sponsor__contact_person
|
||||
msgid "Partner contact person"
|
||||
msgstr "أسم مسؤول التواصل عند الشريك"
|
||||
|
||||
#. module: odex25_website_event_track_gantt
|
||||
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_event_event__department_id
|
||||
msgid "Parent Department"
|
||||
msgstr "الإدارة"
|
||||
|
||||
#. module: odex25_website_event_track_gantt
|
||||
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_event_event__branch_name
|
||||
msgid "Department Branch"
|
||||
msgstr "الفرع التابع للإدارة"
|
||||
|
||||
#. module: odex25_website_event_track_gantt
|
||||
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_event_event__departments_id
|
||||
msgid "Department"
|
||||
msgstr "الإدارة التابع لها الفعالية"
|
||||
|
||||
#. module: odex25_website_event_track_gantt
|
||||
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_event_event__branchs_name
|
||||
msgid "Departments Branch"
|
||||
msgstr "الفرع التابع للإدارة"
|
||||
|
||||
#. module: odex25_website_event_track_gantt
|
||||
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_event_event__job_title
|
||||
msgid "Job Position"
|
||||
msgstr "المنصب الوظيفي"
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,39 @@ class Event(models.Model):
|
|||
state_id = fields.Many2one("res.country.state", string='State', ondelete='restrict',
|
||||
domain="[('country_id', '=?', country_id)]", related="address_id.state_id", readonly=True)
|
||||
country_id = fields.Many2one('res.country', string='Country', ondelete='restrict', related="address_id.country_id", readonly=True)
|
||||
job_title = fields.Many2one(
|
||||
string='Job Position',
|
||||
related='user_id.employee_id.job_id',
|
||||
store=True,
|
||||
readonly=True
|
||||
)
|
||||
|
||||
department_id = fields.Many2one(
|
||||
'hr.department',
|
||||
string='Parent Department',
|
||||
related='user_id.employee_id.department_id',
|
||||
store=True,
|
||||
readonly=True
|
||||
)
|
||||
|
||||
branch_name = fields.Char(
|
||||
string='Department Branch',
|
||||
related='user_id.employee_id.department_id.branch_name.name',
|
||||
store=True,
|
||||
readonly=True
|
||||
)
|
||||
|
||||
departments_id = fields.Many2one(
|
||||
'hr.department',string='Department'
|
||||
|
||||
)
|
||||
branchs_name = fields.Char(
|
||||
string='Departments Branch',
|
||||
related='departments_id.branch_name.name',
|
||||
store=True,
|
||||
readonly=True
|
||||
)
|
||||
|
||||
|
||||
@api.depends('date_begin', 'date_end')
|
||||
def _compute_remaining_time(self):
|
||||
|
|
|
|||
|
|
@ -21,9 +21,21 @@
|
|||
<field name="remaining_days"/>
|
||||
<field name="remaining_hours"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='tag_ids']" position="after">
|
||||
|
||||
<xpath expr="//field[@name='tag_ids']" position="after">
|
||||
<field name="Description_event"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='user_id']" position="after">
|
||||
<field name="job_title"/>
|
||||
<field name="department_id"/>
|
||||
<field name="branch_name"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='event_type_id']" position="before">
|
||||
<field name="departments_id"/>
|
||||
<field name="branchs_name"/>
|
||||
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//field[@name='address_id']" position="attributes">
|
||||
<attribute name="context">{'show_address': 1, 'default_is_event_address': True,'default_is_company':
|
||||
True}
|
||||
|
|
|
|||
|
|
@ -6,11 +6,16 @@
|
|||
<field name="priority">10</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='category_id']" position="after">
|
||||
<field name="is_event_address" readonly="1"/>
|
||||
<field name="is_organizer" readonly="1"/>
|
||||
<field name="is_sponsor" readonly="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//page[5]" position="after">
|
||||
<page name="event_info" string="بيانات الفعالية" groups="event.group_event_manager">
|
||||
<group>
|
||||
<field name="is_event_address" readonly="1"/>
|
||||
<field name="is_organizer" readonly="1"/>
|
||||
<field name="is_sponsor" readonly="1"/>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//field[@name='website']" position="attributes">
|
||||
<attribute name="attrs">{'required': [('is_sponsor', '=',
|
||||
True)],'invisible':[('company_type','!=','company')]}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="sale.email_template_edi_sale" model="mail.template">
|
||||
<field name="body_html" type="html">
|
||||
<div style="margin: 0px; padding: 0px;">
|
||||
|
|
|
|||
Loading…
Reference in New Issue