Merge branch 'dev_odex25_sales' of https://github.com/expsa/odex25-standard-modules into Esraa-ensan-sale_tasks

This commit is contained in:
Esraa-Exp 2025-03-13 16:00:11 +02:00
commit f4780ef251
11 changed files with 258 additions and 34 deletions

View File

@ -237,10 +237,6 @@
<xpath expr="//field[@name='vat']" position="attributes">
<attribute name="attrs">{'invisible':[('company_type','!=','company')]}</attribute>
</xpath>
<xpath expr="//field[@name='website']" position="attributes">
<attribute name="attrs">{'invisible':[('company_type','!=','company')]}</attribute>
</xpath>
<xpath expr="//div[@name='button_box']" position="inside">

View File

@ -1,35 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.ui.view" id="view_event_form">
<field name="name">event.event.form</field>
<field name="model">event.event</field>
<field name="inherit_id" ref="event.view_event_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='organizer_id']" position="attributes">
<attribute name="context">{ 'default_is_company': True}</attribute>
</xpath>
<xpath expr="//field[@name='address_id']" position="attributes">
<attribute name="context">{'default_is_company': True}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_event_sponsor_inherit_form">
<field name="name">event.sponsor.form</field>
<field name="model">event.sponsor</field>
<field name="inherit_id" ref="website_event_track.event_sponsor_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute name="context">{'default_is_company': True}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_event_track_inherit_form">
<field name="name">event.track.form</field>
<field name="model">event.track</field>

View File

@ -9,10 +9,12 @@
'version': '1.0',
'description': """This module helps analyzing and organizing event tracks.
For that purpose it adds a gantt view on event tracks.""",
'depends': ['website_event_track', 'odex25_web_gantt'],
'depends': ['base', 'website_event_track', 'odex25_web_gantt', 'event', 'contacts', 'mail'],
'auto_install': True,
'data': [
'views/event_event_views.xml',
'views/event_track_views.xml',
'views/res_partner_views.xml',
'views/event_sponsor_views.xml',
],
}

View File

@ -90,3 +90,71 @@ msgstr "الأيام المتبقية"
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_event_event__remaining_hours
msgid "Remaining Time"
msgstr "الوقت المتبقي"
#. module: odex25_website_event_track_gantt
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_res_partner__is_event_address
msgid "Event address"
msgstr "مكان الفعالية"
#. module: odex25_website_event_track_gantt
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_res_partner__is_organizer
msgid "Organizer"
msgstr "منظم الفعالية"
#. module: odex25_website_event_track_gantt
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_res_partner__is_sponsor
msgid "Sponsor"
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 "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 "الدولة"
#. module: odex25_website_event_track_gantt
#: model_terms:ir.ui.view,arch_db:odex25_website_event_track_gantt.event_event_view_form
msgid "Street..."
msgstr "الشارع..."
#. module: odex25_website_event_track_gantt
#: model_terms:ir.ui.view,arch_db:odex25_website_event_track_gantt.event_event_view_form
msgid "Street 2..."
msgstr "الشارع 2..."
#. module: odex25_website_event_track_gantt
#: model_terms:ir.ui.view,arch_db:odex25_website_event_track_gantt.event_event_view_form
msgid "City"
msgstr "المدينة"
#. module: odex25_website_event_track_gantt
#: model:ir.actions.act_window,name:odex25_website_event_track_gantt.event_sponsors_action
#: model:ir.ui.menu,name:odex25_website_event_track_gantt.menu_event_sponsors
msgid "Event Sponsors"
msgstr "رعاة الفعاليات"
#. module: odex25_website_event_track_gantt
#: model:ir.ui.menu,name:odex25_website_event_track_gantt.menu_event_organizer
msgid "Event Organizers"
msgstr "منظمين الفعاليات"
#. module: odex25_website_event_track_gantt
#: model:ir.actions.act_window,name:odex25_website_event_track_gantt.action_organizer_form
msgid "Event Organizers"
msgstr "منظمين الفعاليات"
#. module: odex25_website_event_track_gantt
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_res_partner__contact_person
msgid "Contact person"
msgstr "أسم مسؤول التواصل"
#. module: odex25_website_event_track_gantt
#: model:ir.model.fields,field_description:odex25_website_event_track_gantt.field_event_sponsor__contact_person
msgid "Partner contact person"
msgstr "أسم مسؤول التواصل عند الشريك"

View File

@ -1,3 +1,5 @@
# -*- coding: utf-8 -*-
from . import event_event
from . import res_partner
from . import event_sponsor

View File

@ -17,6 +17,13 @@ class Event(models.Model):
address_id = fields.Many2one(
'res.partner', string='Venue', default=lambda self: self.env.company.partner_id.id,
tracking=True, domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]")
# address fields
street = fields.Char(related="address_id.street", readonly=True)
street2 = fields.Char(related="address_id.street2", readonly=True)
city = fields.Char(related="address_id.city", readonly=True)
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)
@api.depends('date_begin', 'date_end')
def _compute_remaining_time(self):

View File

@ -0,0 +1,7 @@
from odoo import fields, models
class Sponsor(models.Model):
_inherit = "event.sponsor"
contact_person = fields.Char(string="Partner contact person", related="partner_id.contact_person")

View File

@ -0,0 +1,10 @@
from odoo import fields, models
class ResPartner(models.Model):
_inherit = "res.partner"
is_event_address = fields.Boolean(string="Event address")
is_organizer = fields.Boolean(string="Organizer")
is_sponsor = fields.Boolean(string="Sponsor")
contact_person = fields.Char(string="Contact person")

View File

@ -24,9 +24,46 @@
<xpath expr="//field[@name='tag_ids']" position="after">
<field name="Description_event"/>
</xpath>
<xpath expr="//field[@name='address_id']" position="attributes">
<attribute name="context">{'show_address': 1, 'default_is_event_address': True,'default_is_company':
True}
</attribute>
<attribute name="options">{'no_create': True, 'no_create_edit': True}</attribute>
<attribute name="domain">[('is_event_address','=',True)]</attribute>
</xpath>
<xpath expr="//field[@name='organizer_id']" position="attributes">
<attribute name="context">{'default_is_company': True,'default_is_organizer': True,}</attribute>
<attribute name="options">{'no_create': True, 'no_create_edit': True}</attribute>
<attribute name="domain">[('is_organizer','=',True)]</attribute>
</xpath>
<xpath expr="//field[@name='address_id']" position="after">
<label for="street" string="Address"/>
<div class="o_address_format">
<field name="street" placeholder="Street..." class="o_address_street"/>
<field name="street2" placeholder="Street 2..." class="o_address_street"/>
<field name="city" placeholder="City" class="o_address_city"/>
<field name="state_id" class="o_address_state" placeholder="State"
options="{'no_open': True, 'no_quick_create': True}"/>
<field name="country_id" placeholder="Country" class="o_address_country"
options='{"no_open": True, "no_create": True}'/>
</div>
<field name="link" widget="url"/>
</xpath>
</field>
</record>
<!-- Allow "Create and Edit" only for a specific group -->
<record id="event_event_form_view_group" model="ir.ui.view">
<field name="name">event.event.form.view.group</field>
<field name="model">event.event</field>
<field name="inherit_id" ref="event_event_view_form"/>
<field name="groups_id" eval="[(4, ref('event.group_event_manager'))]"/>
<field name="arch" type="xml">
<field name="address_id" position="attributes">
<attribute name="options">{'no_create': False, 'no_create_edit': False}</attribute>
</field>
<field name="organizer_id" position="attributes">
<attribute name="options">{'no_create': False, 'no_create_edit': False}</attribute>
</field>
</field>
</record>
</odoo>

View File

@ -0,0 +1,30 @@
<?xml version="1.0"?>
<odoo>
<record id="event_sponsor_view_form_inherit" model="ir.ui.view">
<field name="name">event.sponsor.view.form.inherit</field>
<field name="model">event.sponsor</field>
<field name="inherit_id" ref="website_event_track.event_sponsor_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute name="context">{'default_is_company': True, 'default_is_sponsor': True}</attribute>
<attribute name="options">{'no_create': True, 'no_create_edit': True}</attribute>
<attribute name="domain">[('is_sponsor','=',True)]</attribute>
</xpath>
<xpath expr="//field[@name='partner_id']" position="after">
<field name="contact_person"/>
</xpath>
</field>
</record>
<record id="event_sponsor_view_form_group" model="ir.ui.view">
<field name="name">event.sponsor.view.form.group</field>
<field name="model">event.sponsor</field>
<field name="inherit_id" ref="website_event_track.event_sponsor_view_form"/>
<field name="groups_id" eval="[(4, ref('event.group_event_manager'))]"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute name="options">{'no_create': False, 'no_create_edit': False}</attribute>
</xpath>
</field>
</record>
</odoo>

View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_partner_form_inherited" model="ir.ui.view">
<field name="name">view.partner.form.inherited</field>
<field name="model">res.partner</field>
<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="//field[@name='website']" position="attributes">
<attribute name="attrs">{'required': [('is_sponsor', '=',
True)],'invisible':[('company_type','!=','company')]}
</attribute>
</xpath>
<xpath expr="//field[@name='phone']" position="attributes">
<attribute name="attrs">{'required': [('is_sponsor', '=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='mobile']" position="attributes">
<attribute name="attrs">{'required': [('is_sponsor', '=', True)]}</attribute>
</xpath>
<field name="title" position="after">
<field name="contact_person"/>
</field>
</field>
</record>
<record id="res_partner_view_form_inherit_sponsor" model="ir.ui.view">
<field name="name">res.partner.sponsor.form.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="mail.res_partner_view_form_inherit_mail"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='email']" position="attributes">
<attribute name="attrs">{'required': [('is_sponsor', '=', True)]}</attribute>
</xpath>
</field>
</record>
<record id="contacts.action_contacts" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]
</field>
</record>
<record id="base.action_partner_form" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]
</field>
</record>
<record id="base.action_partner_customer_form" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]
</field>
</record>
<record id="base.action_partner_supplier_form" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]
</field>
</record>
<record id="account.res_partner_action_customer" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]
</field>
</record>
<record id="account.res_partner_action_supplier" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]
</field>
</record>
<record id="action_organizer_form" model="ir.actions.act_window">
<field name="name">Event organizers</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{'default_is_company': True,'default_is_organizer': True,}</field>
<field name="domain">[('is_organizer','=',True)]</field>
<field name="search_view_id" ref="base.view_res_partner_filter"/>
</record>
<record id="event_sponsors_action" model="ir.actions.act_window">
<field name="name">Event Sponsors</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{'default_is_sponsor': True,}</field>
<field name="domain">[('is_sponsor','=',True)]</field>
<field name="search_view_id" ref="base.view_res_partner_filter"/>
</record>
<menuitem name="Event Organizers"
id="menu_event_organizer"
sequence="3"
parent="event.menu_event_configuration"
action="action_organizer_form"
groups="event.group_event_manager"/>
<menuitem name="Event Sponsors"
id="menu_event_sponsors"
sequence="4"
parent="event.menu_event_configuration"
action="event_sponsors_action"
groups="event.group_event_manager"/>
</odoo>