Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions service_event_base/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
20 changes: 20 additions & 0 deletions service_event_base/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
'name': 'Event & Service Management - Base',
'version': '1.0',
'category': 'Services',
'sequence': 2,
'summary': 'for event and service booking system',
'description': """Event/Service management.""",
'depends': ['base','mail','event'],
'data': [
'security/ir.model.access.csv',
'views/service_event_base.xml',
# 'views/service_event_category_views.xml',
# 'views/service_event_registration_views.xml',
# 'views/service_event_views.xml',
],
'author': 'sujal asodariya',
'installable': True,
'application': True,
'license': 'LGPL-3',
}
18 changes: 18 additions & 0 deletions service_event_base/data/data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>

<odoo>
<data noupdate="1">
<!-- <record id="event_category_business" model="event.category">
<field name="name">Business</field>
<field name="description">Business and professional events</field>
<field name="color">1</field>
</record>

<record id="event_category_technology" model="event.category">
<field name="name">Technology</field>
<field name="description">Technology and IT events</field>
<field name="color">2</field>
</record> -->
</data>
</odoo>

5 changes: 5 additions & 0 deletions service_event_base/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# from . import event_category
from . import event_registration
from . import event_service
# from . import event_tag

36 changes: 36 additions & 0 deletions service_event_base/models/event_registration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError


class EventRegistration(models.Model):
_name = 'event.registrations'
_description = 'Event Registration'

name = fields.Char('Name', required=True)
state = fields.Selection([
('draft', 'Draft'),
('confirmed', 'Confirmed'),
('cancelled', 'Cancelled')
], 'Status', default='draft', required=True)
active = fields.Boolean('Active', default=True)

booking_date = fields.Datetime('Booking Date', default=fields.Datetime.now)
booking_amount = fields.Monetary('Booking Amount', currency_field='currency_id', compute='_compute_booking_amount', store=True, readonly=True)

service_id = fields.Many2one('event.service', 'Event Service', ondelete='cascade', required=True)
partner_id = fields.Many2one('res.partner', 'Partner', index=True)
currency_id = fields.Many2one('res.currency', 'Currency', related='service_id.currency_id', readonly=True)
company_id = fields.Many2one('res.company', 'Company', related='service_id.company_id', store=True, readonly=True)

# Compute fields
@api.depends('service_id')
def _compute_booking_amount(self):
for record in self:
record.booking_amount = record.service_id.price

# Python constrains
@api.constrains('booking_date')
def _check_booking_date(self):
for record in self:
if record.booking_date and record.booking_date < fields.Datetime.now():
raise ValidationError(_("Booking date cannot be in the previous one."))
49 changes: 49 additions & 0 deletions service_event_base/models/event_service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError


class EventService(models.Model):
_name = 'event.service'
_description = 'Event Management Service'

name = fields.Char('Event Name', required=True)
description = fields.Html('Description')
price = fields.Monetary('Price', currency_field='currency_id')
active = fields.Boolean('Active', default=True)
start_date = fields.Datetime('Start Date')
end_date = fields.Datetime('End Date')

event_type_id = fields.Many2one('event.type', 'Event Type', ondelete='set null', index=True)
company_id = fields.Many2one('res.company', required=True, default=lambda self: self.env.company)
booking_ids = fields.One2many('event.registrations', 'service_id', 'Bookings')

currency_id = fields.Many2one('res.currency', 'Currency', default=lambda self: self.company_id.currency_id, readonly=True)

@api.constrains('start_date', 'end_date')
def _check_dates(self):
for record in self:
if record.start_date and record.end_date and record.end_date <= record.start_date:
raise ValidationError(_('End date must be after start date.'))

@api.constrains('price')
def _check_price(self):
for record in self:
if record.price < 0:
raise ValidationError(_('Price must be zero or positive.'))

@api.onchange('price')
def _onchange_price(self):
if self.price and self.price < 0:
self.price = 0
return {
'warning': {
'title': _('Invalid Price'),
'message': _('Price cannot be negative.'),
}
}

@api.model_create_multi
def create(self, vals_list):
records = super().create(vals_list)
#logic here write
return records
3 changes: 3 additions & 0 deletions service_event_base/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_event_management_user,access.event.service.user,model_event_service,base.group_user,1,1,1,1
access_event_registrations_user,access.event.registrations.user,model_event_registrations,base.group_user,1,1,1,1
Binary file added service_event_base/static/description/image.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 26 additions & 0 deletions service_event_base/views/service_event_base.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>

<record id="service_event_list_action" model="ir.actions.act_window">
<field name="name">Service Events</field>
<field name="res_model">event.service</field>
<field name="view_mode">list</field>
<field name="help" type="html">
<p class="o_view_nocontent_neutral_face">
No service events found
</p>
</field>
</record>

<menuitem id="menu_service_event_base"
name="Event Services"
sequence="10"
web_icon="service_event_base,static/description/image.jpeg"/>

<menuitem
id="menu_service_events"
name="All Service Events"
parent="menu_service_event_base"
sequence="10"
action="service_event_list_action"/>
</odoo>