Format driver info in a group.

This commit is contained in:
Sergio Morillo 2019-10-17 16:14:15 +02:00
parent def6607652
commit a6c472de0a
3 changed files with 68 additions and 8 deletions

38
load.py
View File

@ -11,7 +11,11 @@ from trytond.pool import PoolMeta, Pool
from trytond.pyson import Eval, Bool, Id
from trytond.transaction import Transaction
from trytond.wizard import Wizard, StateTransition, StateView, Button
try:
import phonenumbers
from phonenumbers import PhoneNumberFormat, NumberParseException
except ImportError:
phonenumbers = None
__all__ = ['Configuration', 'Load', 'LoadOrder', 'LoadOrderLine',
'LoadUnitLoad', 'LoadUnitLoadOrder', 'LoadUnitLoadData',
@ -825,7 +829,7 @@ class CreateLoadDataMixin(object):
dock = fields.Many2One('stock.location.dock', 'Dock',
domain=[('location', '=', Eval('warehouse', 0))],
states={
'invisible': Bool(Eval('load_order'))
'invisible': Bool(Eval('load_order'))
},
depends=['warehouse', 'load_order'])
carrier = fields.Many2One('carrier', 'Carrier',
@ -851,7 +855,7 @@ class CreateLoadDataMixin(object):
driver = fields.Char('Driver',
states={
'invisible': Bool(Eval('load_order'))
})
}, depends=['load_order'])
driver_identifier = fields.Char('Driver identifier',
states={
'required': Bool(Eval('driver')),
@ -862,6 +866,18 @@ class CreateLoadDataMixin(object):
'invisible': Bool(Eval('load_purchasable')) | Bool(Eval('carrier'))
},
depends=['load_purchasable', 'carrier'])
driver_phone = fields.Char('Driver Phone',
states={
'invisible': Bool(Eval('load_order'))
}, depends=['load_order'])
@classmethod
def __setup__(cls):
super().__setup__()
cls._error_messages.update({
'invalid_phonenumber': ('The phone number "%(phone)s" '
'is not valid.'),
})
@classmethod
def default_load_purchasable(cls):
@ -894,6 +910,22 @@ class CreateLoadDataMixin(object):
return Load._autocomplete_registration_numbers(self.carrier,
'driver_identifier', self.driver_identifier)
@fields.depends('driver_phone')
def on_change_driver_phone(self):
self.driver_phone = self.format_phone(self.driver_phone)
@classmethod
def format_phone(cls, value=None):
if phonenumbers:
try:
phonenumber = phonenumbers.parse(value)
except NumberParseException:
pass
else:
value = phonenumbers.format_number(
phonenumber, PhoneNumberFormat.INTERNATIONAL)
return value
class CreateLoadDataLineMixin(object):

View File

@ -118,6 +118,10 @@ msgctxt "error:stock.unit_load:"
msgid "Cannot unload an UL from a Load order in Done state."
msgstr "No es posible descargar una UdC de una Orden de carga Finalizada."
msgctxt "error:carrier.load.create_from_sale:"
msgid "The phone number \"%(phone)s\" is not valid."
msgstr "El número de teléfono \"%(phone)s\" no es válido."
msgctxt "field:carrier.configuration,ul_origin_restrict:"
msgid "Restrict UL origin"
msgstr "Restringir origen UdC"
@ -162,6 +166,10 @@ msgctxt "field:carrier.load.create_from_sale,driver_identifier:"
msgid "Driver identifier"
msgstr "Identificador conductor"
msgctxt "field:carrier.load.create_from_sale,driver_phone:"
msgid "Driver Phone"
msgstr "Teléfono conductor"
msgctxt "field:carrier.load.create_from_sale,sales:"
msgid "Sales"
msgstr "Ventas"
@ -464,4 +472,20 @@ msgstr "No es posible cargar las siguientes UdCs"
msgctxt "model:carrier.load_uls.failed,name:"
msgid "Carrier load unit load failed"
msgstr "Fallo en Carga de UdC"
msgstr "Fallo en Carga de UdC"
msgctxt "view:carrier.load.create_from_sale:"
msgid "Driver info"
msgstr "Datos del conductor"
msgctxt "view:carrier.load.create_from_sale:"
msgid "Name"
msgstr "Nombre"
msgctxt "view:carrier.load.create_from_sale:"
msgid "Identifier"
msgstr "Identificador"
msgctxt "view:carrier.load.create_from_sale:"
msgid "Phone"
msgstr "Teléfono"

View File

@ -15,10 +15,14 @@
<field name="vehicle_number"/>
<label name="trailer_number"/>
<field name="trailer_number"/>
<label name="driver"/>
<field name="driver"/>
<label name="driver_identifier"/>
<field name="driver_identifier"/>
<group name="driver" string="Driver info" colspan="4">
<label name="driver" string="Name"/>
<field name="driver"/>
<label name="driver_identifier" string="Identifier"/>
<field name="driver_identifier"/>
<label name="driver_phone" string="Phone"/>
<field name="driver_phone"/>
</group>
<label name="load_purchasable"/>
<field name="load_purchasable"/>
<notebook>