trytonpsk-hotel/party.py

152 lines
5.5 KiB
Python
Raw Normal View History

2020-04-16 14:45:13 +02:00
#This file is part of Hotel module for Tryton. The COPYRIGHT file at
#the top level of this repository contains the full copyright notices
#and license terms.
from trytond.pool import PoolMeta, Pool
2021-09-13 14:13:11 +02:00
from trytond.model import fields
2021-07-21 14:56:53 +02:00
from trytond.wizard import Wizard, StateView, Button, StateTransition
from trytond.transaction import Transaction
2021-09-13 14:13:11 +02:00
from trytond.exceptions import UserError
2021-07-21 14:56:53 +02:00
from trytond.i18n import gettext
2020-04-16 14:45:13 +02:00
TYPE = [
('', ''),
('service_acomplished', 'Service Acomplished'),
('direct', 'Direct'),
('implicit', 'Implicit'),
]
class Party(metaclass=PoolMeta):
__name__ = 'party.party'
'''
Party field and function aditions for channels management. Sales
commissions, taxes and price lists.
'''
sale_commission = fields.Numeric('Sales Commission %', digits=(3, 2),
help="Add the percentage of sales commission for this channel.",)
# Must be required if party is hotel channel.
# states={
# 'readonly': ~Eval('active', True),
# 'required': Bool(Eval('vat_country')),
# },
# depends=['active', 'vat_country'], size=12, select=True)
sale_commission_type = fields.Selection(TYPE, 'Sales Commission Type')
visa_category = fields.Char('Visa Category')
visa_number = fields.Char('Visa Number')
visa_date = fields.Date('Visa Date')
2021-09-13 14:13:11 +02:00
# class CreateGuestStart(ModelView):
# 'Create Party to Guest Start'
# __name__ = 'hotel.party.guest.start'
# full_name = fields.Char('Name')
# first_name = fields.Char('First Name')
# second_name = fields.Char('Second Name')
# first_family_name = fields.Char('First Family Name')
# second_family_name = fields.Char('Second Family Name')
# type_document = fields.Selection(TYPE_DOCUMENT, 'Type Document')
# id_number = fields.Char('Id Number')
# type_document = fields.Selection([
# ('12', 'Tarjeta de Identidad'),
# ('13', 'Cedula de Ciudadania'),
# ('21', 'Tarjeta de Extranjeria'),
# ('22', 'Cedula de Extranjeria'),
# ('41', 'Pasaporte'),
# ], 'Document Type')
# mobile = fields.Char('Mobile', select=True)
# email = fields.Char('Email', select=True)
# birthday = fields.Date('Birthday', select=True)
# sex = fields.Selection([
# ('female', 'Female'),
# ('male', 'Male'),
# ('', ''),
# ], 'Sex')
# type_person = fields.Selection([
# ('persona_natural', 'Persona Natural'),
# ('persona_juridica', 'Persona Juridica'),
# ], 'Type Person')
#
# @fields.depends('full_name', 'first_name', 'second_name',
# 'first_family_name', 'second_family_name','type_person')
# def on_change_full_name(self):
# second_family_name = None
# first_family_name = None
# second_name = None
# first_name = None
# if self.full_name and self.type_person == 'persona_natural':
# names = self.full_name.split(' ')
# first_name = names[0]
# second_family_name = names[-1]
# if len(names) > 1:
# first_family_name = names[-2]
# if len(names) == 2:
# second_family_name = None
# first_family_name = names[1]
# elif len(names) == 5:
# second_name = names[1] + ' ' + names[2]
# elif len(names) == 4:
# second_name = names[1]
#
# self.second_family_name = second_family_name
# self.first_family_name = first_family_name
# self.second_name = second_name
# self.first_name = first_name
#
# @staticmethod
# def default_sex():
# return 'male'
#
# @staticmethod
# def default_type_person():
# return 'persona_natural'
#
# @staticmethod
# def default_type_document():
# return '13'
class CreateGuest(Wizard):
'Create Party to Guest'
__name__ = 'hotel.party.guest'
2021-09-13 14:13:11 +02:00
start = StateView('party.party',
'hotel.view_party_guest', [
Button('Exit', 'end', 'tryton-cancel'),
Button('Create', 'create_', 'tryton-ok', default=True),
]
)
create_ = StateTransition()
def transition_create_(self):
pool = Pool()
Party = pool.get('party.party')
Booking = pool.get('hotel.booking')
id = Transaction().context.get('active_id', False)
record = Booking(id)
parties = Party.search([
('id_number', '=', self.start.id_number)
])
if parties:
2021-09-13 14:13:11 +02:00
raise UserError(gettext('El usuario ya existe!'))
else:
2021-09-13 14:13:11 +02:00
contact_mechanisms = []
for contact in self.start.contact_mechanisms:
contact_mechanisms.append({
'type': contact.type, 'value': contact.value
})
party, = Party.create([{
2021-09-13 14:13:11 +02:00
'name': self.start.name,
'id_number': self.start.id_number,
'type_document': self.start.type_document,
'birthday': self.start.birthday,
'sex': self.start.sex,
'first_name': self.start.first_name,
'second_name': self.start.second_name,
'first_family_name': self.start.first_family_name,
'second_family_name': self.start.second_family_name,
2021-09-13 14:13:11 +02:00
'contact_mechanisms': [('create', contact_mechanisms)]
}])
party_id = party.id
Booking.write([record], {'party': party_id})
return 'end'