Files
tradon/modules/stock_package_shipping_mygls/carrier.py
2026-03-14 09:42:12 +00:00

131 lines
4.7 KiB
Python

# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.i18n import gettext
from trytond.model import (
MatchMixin, ModelSQL, ModelView, fields, sequence_ordered)
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval, If
from .exceptions import MyGLSCredentialWarning
class CredentialMyGLS(sequence_ordered(), ModelSQL, ModelView, MatchMixin):
__name__ = 'carrier.credential.mygls'
company = fields.Many2One('company.company', "Company")
server = fields.Selection([
('testing', "Testing"),
('production', "Production"),
], "Server", required=True)
country = fields.Selection([
('hr', "Croatia"),
('cz', "Czechia"),
('hu', "Hungary"),
('ro', "Romania"),
('si', "Slovenia"),
('sk', "Slovakia"),
], "Country", required=True)
username = fields.Char("Username", required=True, strip=False)
password = fields.Char("Password", required=True, strip=False)
client_number = fields.Integer("Client Number", required=True)
@classmethod
def default_server(cls):
return 'testing'
@classmethod
def check_modification(
cls, mode, credentials, values=None, external=False):
pool = Pool()
Warning = pool.get('res.user.warning')
super().check_modification(
mode, credentials, values=values, external=external)
if (mode == 'write'
and external
and values.keys() & {
'server', 'username', 'password', 'client_number'}):
warning_name = Warning.format('mygls_credential', credentials)
if Warning.check(warning_name):
raise MyGLSCredentialWarning(
warning_name,
gettext('stock_package_shipping_mygls'
'.msg_mygls_credential_modified'))
class Carrier(metaclass=PoolMeta):
__name__ = 'carrier'
mygls_type_of_printer = fields.Selection([
(None, ''),
('A4_2x2', "A4 2x2"),
('A4_4x1', "A4 4x1"),
('Connect', "Connect"),
('Thermo', "Thermo"),
], "Type of Printer", sort=False, translate=False,
states={
'invisible': Eval('shipping_service') != 'mygls',
})
mygls_print_position = fields.Integer(
"Print Position",
domain=[
If(Eval('mygls_type_of_printer') == 'A4_2x2',
('mygls_print_position', 'in', [1, 2, 3, 4]),
('mygls_print_position', '=', None)),
],
states={
'required': Eval('mygls_type_of_printer') == 'A4_2x2',
'invisible': (
(Eval('mygls_type_of_printer') != 'A4_2x2')
| (Eval('shipping_service') != 'mygls')),
})
mygls_services = fields.MultiSelection([
('24h', "Service guaranteed delivery shipment in 24 Hours"),
('AOS', "Addressee Only Service"),
('CS1', "Contact Service"),
('FDS', "Flexible Delivery Service"),
('FSS', "Flexible delivery Sms Service"),
('PRS', "Pick & Return Services"),
('PSS', "Pick & Ship Service"),
('SAT', "Saturday service"),
('SBS', "Stand By Service"),
('SM1', "SMS service"),
('SM2', "SMS pre-advice"),
('T09', "Express service (T09)"),
('T10', "Express service (T10)"),
('T12', "Express service (T12)"),
('TGS', "Think Green Service"),
('XS', "Exchange Service"),
], "Services",
states={
'invisible': Eval('shipping_service') != 'mygls',
})
mygls_sms = fields.Char(
"SMS", translate=True,
states={
'invisible': Eval('shipping_service') != 'mygls',
'required': Eval('mygls_services', []).contains('SM1'),
},
help="Variables that can be used in the text of the SMS:\n"
"ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#")
@classmethod
def __setup__(cls):
super().__setup__()
cls.shipping_service.selection.append(('mygls', "MyGLS"))
@classmethod
def view_attributes(cls):
return super().view_attributes() + [
("/form/separator[@id='mygls']", 'states', {
'invisible': Eval('shipping_service') != 'mygls',
}),
]
@property
def shipping_label_mimetype(self):
mimetype = super().shipping_label_mimetype
if self.shipping_service == 'mygls':
mimetype = 'application/pdf'
return mimetype