diff --git a/__manifest__.py b/__manifest__.py index 6b8a6fb..7933abf 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -54,6 +54,7 @@ 'views/individual_booking_website_registration.xml', 'views/booking_registration.xml', 'views/booking_location.xml', + 'views/booking_parameter.xml', 'views/booking_room.xml', 'views/booking_questionnaire.xml', 'views/mailing_list.xml', diff --git a/controllers/booking.py b/controllers/booking.py index c9a7d3a..65cb045 100755 --- a/controllers/booking.py +++ b/controllers/booking.py @@ -40,7 +40,8 @@ class booking(WebsiteEventController,AuthSignupHome): request.session['event_id']=int(event_id) event=request.env['event.event'].sudo().search([('id','=',int(event_id))]) data['event']=event - + data['bottom_text']=request.env['booking.parameter'].search([('name','=','bottom_text')]).value + request.session['individual_booking_event']=event.individual_booking_event data['individual_booking_event']=event.individual_booking_event @@ -93,8 +94,6 @@ class booking(WebsiteEventController,AuthSignupHome): #questions data['questions']=event.question_ids - - request.session['invoice_id']=False return http.request.render('kalachakra.booking_registration_options_form',data) diff --git a/models/__init__.py b/models/__init__.py index 1c22f6b..7bd2606 100755 --- a/models/__init__.py +++ b/models/__init__.py @@ -16,6 +16,7 @@ from . import booking_room from . import booking_questionnaire from . import booking_event_registration from . import booking_donation +from . import booking_parameter #from . import booking_sale_order from . import event_media_link from . import mailing_list diff --git a/models/booking_event.py b/models/booking_event.py index 1144981..a0129a0 100755 --- a/models/booking_event.py +++ b/models/booking_event.py @@ -117,18 +117,26 @@ class BookingEvent(models.Model): header_ligne='Nom & Prénom;Genre;Rôle;Options;Montant retraite;Adhésion;Autre options;Montant à payer;Statut commande;Type de paiement;Règlement\n' csv_lines='' for reg in booking.registration_ids: + if reg.state in ('draft','cancel'): continue name=str(reg.name) if reg.firstname:name=name+' '+str(reg.firstname) - gender=str(reg.gender) + if reg.gender=='male':gender='homme' + elif reg.gender=='femelle':gender='femme' + else:gender='N/A' role=self._compute_member_status(reg) + if role=='not member':role='non adhérent' + elif role=='member':role='adhérent' + elif role=='super member':role='membre de soutien' + else: role='N/A' + options=self._compute_invoice_options(reg) - booking_amount=self._compute_booking_amount(reg) - membership_amount=self._compute_membership_amount(reg) - invoice_options_amount= self._compute_invoice_options_amount(reg) - amount_to_be_paid=self._compute_amount_to_be_paid(reg) + booking_amount=str(round(self._compute_booking_amount(reg))) + membership_amount=str(round(self._compute_membership_amount(reg))) + invoice_options_amount= str(round(self._compute_invoice_options_amount(reg))) + amount_to_be_paid=str(round(self._compute_amount_to_be_paid(reg))) payment_status=str(reg.payment_status) payment_mode=self._compute_payment_mode(reg) - amount_paid=self._compute_amount_paid(reg) + amount_paid=str(round(self._compute_amount_paid(reg))) csv_lines=csv_lines+name+';'+gender+';'+role+';'+options+';'+booking_amount+';'+membership_amount+';'+invoice_options_amount+';'+amount_to_be_paid+';'+payment_status+';'+payment_mode+';'+amount_paid+'\n' @@ -155,7 +163,7 @@ class BookingEvent(models.Model): if rec.end_of_stay_invoice_id: amount_paid=amount_paid+rec.end_of_stay_invoice_id.amount_total-rec.end_of_stay_invoice_id.amount_residual - return str(amount_paid) + return amount_paid def _compute_amount_to_be_paid(self,rec): amount_to_be_paid=0 @@ -167,7 +175,7 @@ class BookingEvent(models.Model): amount_to_be_paid=amount_to_be_paid+rec.balance_invoice_id.amount_residual if rec.end_of_stay_invoice_id: amount_to_be_paid=amount_to_be_paid+rec.end_of_stay_invoice_id.amount_residual - return str(amount_to_be_paid) + return amount_to_be_paid def _compute_invoice_options_amount(self,rec): membership_product=self.env['product.product'].sudo().search([('membership_product','=',True)],limit=1) @@ -200,7 +208,7 @@ class BookingEvent(models.Model): invoice_options_amount=invoice_options_amount+line.price_subtotal i=i+1 - return str(invoice_options_amount) + return invoice_options_amount def _compute_booking_amount(self,rec): membership_product=self.env['product.product'].sudo().search([('membership_product','=',True)],limit=1) @@ -227,7 +235,7 @@ class BookingEvent(models.Model): booking_amount=booking_amount+line.price_subtotal break - return str(booking_amount) + return booking_amount def _compute_member_status(self,reg): @@ -262,7 +270,7 @@ class BookingEvent(models.Model): if line.name==membership_product.name: membership_amount=line.price_subtotal - return str(membership_amount) + return membership_amount def _compute_invoice_options(self,rec): diff --git a/models/booking_parameter.py b/models/booking_parameter.py new file mode 100755 index 0000000..561c2f0 --- /dev/null +++ b/models/booking_parameter.py @@ -0,0 +1,14 @@ +from odoo import models, fields, api + + +class booking_parameter(models.Model): + _name = 'booking.parameter' + _description = 'booking parameters' + + + name = fields.Char() + value= fields.Text() + + + + \ No newline at end of file diff --git a/models/event_registration.py b/models/event_registration.py index 74986fb..eef05c4 100755 --- a/models/event_registration.py +++ b/models/event_registration.py @@ -42,30 +42,30 @@ class EventRegistration(models.Model): # vals['booking_option_price']=option.booking_option_price # vals['event_registration_id']=int(reg.id) # res=self.env['event.registration_option'].create(vals) - else: - #inscription à la newsletter attachée à l'événement - #si pas une retraite et présence d'une newletter rattaché à l'événement - if reg.event_id.recurring_event_newsletter_id: - mailing_contact=self.env['mailing.contact'].sudo().search([('email','=',reg.partner_id.email)],limit=1) - #si le contact n'existe pas comme mailing contact, création - if not mailing_contact: - vals={} - vals['email']=reg.partner_id.email - vals['name']=reg.partner_id.name - vals['title_id']=int(reg.partner_id.title) - vals['country_id']=int(reg.partner_id.country_id) - vals['list_ids']=[(4,int(reg.event_id.recurring_event_newsletter_id))] - mailing_contact=self.env['mailing.contact'].sudo().create(vals) - else: - #si le contact existe, si la liste de diffusion n'est pas lié au contact, on l'ajoute - if not reg.event_id.recurring_event_newsletter_id in mailing_contact.list_ids: - mailing_contact.sudo().write({'list_ids':[(4,int(reg.event_id.recurring_event_newsletter_id))]}) + + #inscription à la newsletter attachée à l'événement + #si pas une retraite et présence d'une newletter rattaché à l'événement + if reg.event_id.recurring_event_newsletter_id: + mailing_contact=self.env['mailing.contact'].sudo().search([('email','=',reg.partner_id.email)],limit=1) + #si le contact n'existe pas comme mailing contact, création + if not mailing_contact: + vals={} + vals['email']=reg.partner_id.email + vals['name']=reg.partner_id.name + vals['title_id']=int(reg.partner_id.title) + vals['country_id']=int(reg.partner_id.country_id) + vals['list_ids']=[(4,int(reg.event_id.recurring_event_newsletter_id))] + mailing_contact=self.env['mailing.contact'].sudo().create(vals) + else: + #si le contact existe, si la liste de diffusion n'est pas lié au contact, on l'ajoute + if not reg.event_id.recurring_event_newsletter_id in mailing_contact.list_ids: + mailing_contact.sudo().write({'list_ids':[(4,int(reg.event_id.recurring_event_newsletter_id))]}) - #inscription à la newsletter générale - mailing_list=self.env['mailing.list'].sudo().search([('name','=','Newsletter '+self.env.company.name)]) - if mailing_list: - if not mailing_list in mailing_contact.list_ids: - mailing_contact.sudo().write({'list_ids':[(4,int(mailing_list.id))]}) + #inscription à la newsletter générale + mailing_list=self.env['mailing.list'].sudo().search([('name','=','Newsletter '+self.env.company.name)]) + if mailing_list: + if not mailing_list in mailing_contact.list_ids: + mailing_contact.sudo().write({'list_ids':[(4,int(mailing_list.id))]}) return reg diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 9e50d5c..193691f 100755 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -5,6 +5,8 @@ access_kalachakra_membership_import,kalachakra.membership_import,model_kalachakr access_booking_booking_option,booking.booking_option,model_booking_option,base.group_user,1,1,1,1 access_booking_location,booking.booking_location,model_booking_location,base.group_user,1,1,1,1 +access_booking_parameter,booking.booking_parameter,model_booking_parameter,base.group_user,1,1,1,1 + access_booking_room,booking.booking_room,model_booking_room,base.group_user,1,1,1,1 access_booking_room_occupation,booking.booking_room_occupation,model_booking_room_occupation,base.group_user,1,1,1,1 diff --git a/static/js/booking.js b/static/js/booking.js index 832139d..4ce0ea0 100755 --- a/static/js/booking.js +++ b/static/js/booking.js @@ -311,61 +311,59 @@ odoo.define('booking.main', function (require) { }); $( "#continue_button" ).click(function() { - if ($('#email').val()=='' && $('#mobile').val()=='' && $('#phone').val()=='') + if ($('#email').val()=='') { $('#validation_message').text('merci de saisir un email ou un mobile ou un téléphone') $('#validation_message').show() } - else + else if ($('#mobile').val()=='' && $('#phone').val()=='') + { + $('#validation_message').text('afin de pouvoir vous contacter merci de saisir un mobile ou un téléphone') + $('#validation_message').show() + } + else if ($('#name').val()=='') { - if ($('#name').val()=='') - { + $('#validation_message').text('merci de saisir un nom') $('#validation_message').show() - } - else if ($('#firstname').val()=='') - { + } + else if ($('#firstname').val()=='') + { $('#validation_message').text('merci de saisir un prénom') $('#validation_message').show() - } - else if ($('#age').val()=='') - { - $('#validation_message').text('merci de saisir l\'age du participant') - $('#validation_message').show() - - - } - else if ($('#city').val()=='') - { - $('#validation_message').text('merci de saisir la ville du participant') - $('#validation_message').show() - - - } - else if ($('#gender').val()=='') - { - $('#validation_message').text('merci de sélectionner le sexe du participant') - $('#validation_message').show() - - - } - // else if ($("#pre_registration_required").length>0 && !$('input[name=pre_registration_required]').is(':checked') ) - // { - // $('#validation_message').text("Vous n'avez pas cocher la case 'J'ai bien reçu le mail de confirmation suite à ma pré-inscription'") - // $('#validation_message').show() - // } - else - { - $('#form1').submit() - } - + } + else if ($('#age').val()=='') + { + $('#validation_message').text('merci de saisir l\'age du participant') + $('#validation_message').show() + } + else if ($('#city').val()=='') + { + $('#validation_message').text('merci de saisir la ville du participant') + $('#validation_message').show() } + else if ($('#gender').val()=='') + { + $('#validation_message').text('merci de sélectionner le sexe du participant') + $('#validation_message').show() + + + } + + else + { + $('#form1').submit() + } + + + + }); $( "#continue_button2" ).click(function() { diff --git a/views/booking_parameter.xml b/views/booking_parameter.xml new file mode 100755 index 0000000..81c4c70 --- /dev/null +++ b/views/booking_parameter.xml @@ -0,0 +1,42 @@ + + + + + + + booking_parameter list + booking.parameter + + + + + + + + + + booking_parameter form + booking.parameter + +
+ + + + +
+
+
+ + + parameters + booking.parameter + tree,form + + + + + + +
+
\ No newline at end of file diff --git a/views/booking_website_registration.xml b/views/booking_website_registration.xml index ab3dee8..9904f68 100755 --- a/views/booking_website_registration.xml +++ b/views/booking_website_registration.xml @@ -56,6 +56,7 @@ +

@@ -333,6 +334,9 @@ +
+ +
diff --git a/views/event.xml b/views/event.xml index 90f14f6..4f6806c 100755 --- a/views/event.xml +++ b/views/event.xml @@ -60,7 +60,7 @@ - + @@ -174,7 +174,7 @@ - + diff --git a/wizard/accounting_file_wizard.py b/wizard/accounting_file_wizard.py index c2421bb..8953d7b 100644 --- a/wizard/accounting_file_wizard.py +++ b/wizard/accounting_file_wizard.py @@ -401,6 +401,7 @@ class AccountingFileWizard(models.TransientModel): for d in donations: donation_amount+=d.amount_total if self._payment_date_date(reg.invoice_id):continue + date_line=self._payment_date(reg.invoice_id) trans=self.env['payment.transaction'].search([('state','=','done'),('invoice_ids','in',reg.invoice_id.id)],limit=1)