first commit
This commit is contained in:
130
modules/stock_package_shipping_mygls/carrier.py
Normal file
130
modules/stock_package_shipping_mygls/carrier.py
Normal file
@@ -0,0 +1,130 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user