first commit
This commit is contained in:
2
modules/stock_package_shipping_dpd/__init__.py
Normal file
2
modules/stock_package_shipping_dpd/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
149
modules/stock_package_shipping_dpd/carrier.py
Normal file
149
modules/stock_package_shipping_dpd/carrier.py
Normal file
@@ -0,0 +1,149 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
import locale
|
||||
|
||||
from zeep.exceptions import Fault
|
||||
|
||||
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
|
||||
|
||||
from .configuration import LOGIN_SERVICE, get_client
|
||||
from .exceptions import DPDCredentialWarning, DPDError
|
||||
|
||||
|
||||
class CredentialDPD(sequence_ordered(), ModelSQL, ModelView, MatchMixin):
|
||||
__name__ = 'carrier.credential.dpd'
|
||||
|
||||
company = fields.Many2One('company.company', 'Company')
|
||||
user_id = fields.Char('User ID', required=True, strip=False)
|
||||
password = fields.Char('Password', required=True, strip=False)
|
||||
server = fields.Selection([
|
||||
('testing', 'Testing'),
|
||||
('production', 'Production'),
|
||||
], 'Server')
|
||||
depot = fields.Char('Depot', readonly=True, strip=False)
|
||||
token = fields.Char('Token', readonly=True, strip=False)
|
||||
|
||||
@classmethod
|
||||
def default_server(cls):
|
||||
return 'testing'
|
||||
|
||||
def update_token(self):
|
||||
auth_client = get_client(self.server, LOGIN_SERVICE)
|
||||
lang = (self.company.party.lang.code
|
||||
if self.company.party.lang else 'en')
|
||||
lang = locale.normalize(lang)[:5]
|
||||
try:
|
||||
result = auth_client.service.getAuth(
|
||||
delisId=self.user_id, password=self.password,
|
||||
messageLanguage=lang)
|
||||
except Fault as e:
|
||||
error_message = e.detail[0].find('errorMessage')
|
||||
raise DPDError(
|
||||
gettext('stock_package_shipping_dpd.msg_dpd_webservice_error',
|
||||
message=error_message.text)) from e
|
||||
|
||||
self.token = result.authToken
|
||||
self.depot = result.depot
|
||||
self.save()
|
||||
|
||||
@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() & {'user_id', 'password', 'server'}):
|
||||
warning_name = Warning.format('dpd_credential', credentials)
|
||||
if Warning.check(warning_name):
|
||||
raise DPDCredentialWarning(
|
||||
warning_name,
|
||||
gettext('stock_package_shipping_dpd'
|
||||
'.msg_dpd_credential_modified'))
|
||||
|
||||
|
||||
class Carrier(metaclass=PoolMeta):
|
||||
__name__ = 'carrier'
|
||||
|
||||
dpd_product = fields.Selection([
|
||||
(None, ''),
|
||||
('CL', "DPD CLASSIC"),
|
||||
('E830', "DPD 8:30"),
|
||||
('E10', "DPD 10:00"),
|
||||
('E12', "DPD 12:00"),
|
||||
('E18', "DPD 18:00"),
|
||||
('IE2', "DPD EXPRESS"),
|
||||
('MAIL', "DPD International Mail"),
|
||||
('MAX', "DPD MAX"),
|
||||
('PL', "DPD PARCEL Letter"),
|
||||
('PM4', "DPD Priority"),
|
||||
], "Product", sort=False, translate=False,
|
||||
states={
|
||||
'required': Eval('shipping_service') == 'dpd',
|
||||
'invisible': Eval('shipping_service') != 'dpd',
|
||||
})
|
||||
dpd_output_format = fields.Selection([
|
||||
(None, ''),
|
||||
('PDF', "PDF"),
|
||||
], "Output Format", sort=False, translate=False,
|
||||
states={
|
||||
'required': Eval('shipping_service') == 'dpd',
|
||||
'invisible': Eval('shipping_service') != 'dpd',
|
||||
})
|
||||
dpd_paper_format = fields.Selection([
|
||||
(None, ''),
|
||||
('A4', "A4"),
|
||||
('A6', "A6"),
|
||||
('A7', "A7"),
|
||||
], "Paper Format", sort=False, translate=False,
|
||||
states={
|
||||
'required': Eval('shipping_service') == 'dpd',
|
||||
'invisible': Eval('shipping_service') != 'dpd',
|
||||
})
|
||||
|
||||
dpd_notification = fields.Selection([
|
||||
(None, ""),
|
||||
('email', "Email"),
|
||||
('sms', "SMS"),
|
||||
], "Notification",
|
||||
states={
|
||||
'invisible': Eval('shipping_service') != 'dpd',
|
||||
},
|
||||
help="The preferred notification channel.\n"
|
||||
"Leave empty for no notification.")
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.shipping_service.selection.append(('dpd', 'DPD'))
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module):
|
||||
table_h = cls.__table_handler__(module)
|
||||
|
||||
# Migration from 7.4: rename dpd_printer_language to dpd_output_format
|
||||
table_h.column_rename('dpd_printer_language', 'dpd_output_format')
|
||||
|
||||
super().__register__(module)
|
||||
|
||||
@classmethod
|
||||
def view_attributes(cls):
|
||||
return super().view_attributes() + [
|
||||
("/form/separator[@id='dpd']", 'states', {
|
||||
'invisible': Eval('shipping_service') != 'dpd',
|
||||
}),
|
||||
]
|
||||
|
||||
@property
|
||||
def shipping_label_mimetype(self):
|
||||
mimetype = super().shipping_label_mimetype
|
||||
if self.shipping_service == 'dpd':
|
||||
mimetype = 'application/pdf'
|
||||
return mimetype
|
||||
64
modules/stock_package_shipping_dpd/carrier.xml
Normal file
64
modules/stock_package_shipping_dpd/carrier.xml
Normal file
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="carrier_view_form">
|
||||
<field name="model">carrier</field>
|
||||
<field name="inherit" ref="carrier.carrier_view_form"/>
|
||||
<field name="name">carrier_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="credential_view_form">
|
||||
<field name="model">carrier.credential.dpd</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">dpd_credential_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="credential_view_tree">
|
||||
<field name="model">carrier.credential.dpd</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">dpd_credential_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_dpd_credential_form">
|
||||
<field name="name">DPD Credentials</field>
|
||||
<field name="res_model">carrier.credential.dpd</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_dpd_credential_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="credential_view_tree"/>
|
||||
<field name="act_window" ref="act_dpd_credential_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_dpd_credential_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="credential_view_form"/>
|
||||
<field name="act_window" ref="act_dpd_credential_form"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="carrier.menu_configuration"
|
||||
action="act_dpd_credential_form"
|
||||
sequence="50"
|
||||
id="menu_dpd_credential_form"/>
|
||||
|
||||
<record model="ir.model.access" id="access_carrier_credential">
|
||||
<field name="model">carrier.credential.dpd</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access"
|
||||
id="access_carrier_credential_carrier_admin">
|
||||
<field name="model">carrier.credential.dpd</field>
|
||||
<field name="group" ref="carrier.group_carrier_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
||||
30
modules/stock_package_shipping_dpd/configuration.py
Normal file
30
modules/stock_package_shipping_dpd/configuration.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# 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 urllib.parse import urljoin
|
||||
|
||||
from zeep import Client
|
||||
from zeep.transports import Transport
|
||||
|
||||
import trytond.config as config
|
||||
|
||||
SERVER_URLS = {
|
||||
'testing': 'https://public-ws-stage.dpd.com/services/',
|
||||
'production': 'https://public-ws.dpd.com/services/',
|
||||
}
|
||||
|
||||
LOGIN_SERVICE = 'LoginService/V2_0/?wsdl'
|
||||
SHIPMENT_SERVICE = 'ShipmentService/V4_4/?wsdl'
|
||||
|
||||
|
||||
def get_client(server, service):
|
||||
api_base_url = config.get('stock_package_shipping_dpd',
|
||||
server, default=SERVER_URLS[server])
|
||||
url = urljoin(api_base_url, service)
|
||||
timeout = config.get(
|
||||
'stock_package_shipping_dpd', 'requests_timeout', default=300)
|
||||
# Disable the cache for testing because zeep's bug
|
||||
# https://github.com/mvantellingen/python-zeep/issues/48
|
||||
# which makes testing environments fail
|
||||
transport = (Transport(cache=None, operation_timeout=timeout)
|
||||
if url.startswith(SERVER_URLS['testing']) else None)
|
||||
return Client(url, transport=transport)
|
||||
12
modules/stock_package_shipping_dpd/exceptions.py
Normal file
12
modules/stock_package_shipping_dpd/exceptions.py
Normal file
@@ -0,0 +1,12 @@
|
||||
# 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.exceptions import UserError, UserWarning
|
||||
|
||||
|
||||
class DPDError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class DPDCredentialWarning(UserWarning):
|
||||
pass
|
||||
129
modules/stock_package_shipping_dpd/locale/bg.po
Normal file
129
modules/stock_package_shipping_dpd/locale/bg.po
Normal file
@@ -0,0 +1,129 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Управление на производство"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Фирма"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Парола"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Сървър"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Управление на производство"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
131
modules/stock_package_shipping_dpd/locale/ca.po
Normal file
131
modules/stock_package_shipping_dpd/locale/ca.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr "Notificació"
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr "Format sortida"
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr "Format paper"
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Producte"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr "Dipòsit"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Contrasenya"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Servidor"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "Token"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "Identificador usuari"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
"El canal de notificació preferit. \n"
|
||||
"Deixeu-ho en blanc per desactivar la notificació."
|
||||
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "Credencial DPD"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Crea enviaments DPD per paquets"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "Credencials DPD"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr "Estas segur que vols modificar les credencials de DPD?"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr "La identificació DPD ha fallat amb les credencials \"%(credential)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
"La crida al servei web DPD ha fallat amb el següent missatge d'error:\n"
|
||||
"%(message)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
"No podeu crear l'enviament per l'albarà \"%(shipment)s\" perquè ja té un "
|
||||
"número de referència de l'enviament."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
"Per validar l'albarà \"%(shipment)s\" heu d'establir una direcció al "
|
||||
"magatzem \"%(warehouse)s\"."
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "Credencials DPD"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr "Correu electrònic"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr "SMS"
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Producció"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "Proves"
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr "Informació de les credencials"
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
124
modules/stock_package_shipping_dpd/locale/cs.po
Normal file
124
modules/stock_package_shipping_dpd/locale/cs.po
Normal file
@@ -0,0 +1,124 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
131
modules/stock_package_shipping_dpd/locale/de.po
Normal file
131
modules/stock_package_shipping_dpd/locale/de.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr "Benachrichtigung"
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr "Ausgabeformat"
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr "Papierformat"
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Artikel"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Unternehmen"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr "Depot"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "Token"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "Benutzer ID"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
"Der bevorzugte Benachrichtigungskanal.\n"
|
||||
"Leer lassen für keine Benachrichtigung."
|
||||
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "Versanddienstleister Anmeldedaten DPD"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "DPD Versand für Pakete erstellen"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Anmeldedaten"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr "Möchten Sie die DPD-Anmeldeinformationen wirklich ändern?"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr "Der DPD Login mit den Anmeldedaten \"%(credential)s\" ist fehlgeschlagen."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
"Der Aufruf des DPD-Webservice schlug fehl mit der folgenden Fehlermeldung:\n"
|
||||
"%(message)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
"Für die Lieferung \"%(shipment)s\" kann keine Sendung erstellt werden, da "
|
||||
"sie bereits eine Versandreferenz hat."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
"Um die Lieferung \"%(shipment)s\" validieren zu können, muss eine Adresse "
|
||||
"für den Logistikstandort \"%(warehouse)s\" erfasst werden."
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Anmeldedaten"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr "E-Mail"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr "SMS"
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Produktivumgebung"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "Testumgebung"
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr "Anmeldedaten"
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
131
modules/stock_package_shipping_dpd/locale/es.po
Normal file
131
modules/stock_package_shipping_dpd/locale/es.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr "Notificación"
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr "Formato salida"
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr "Formato papel"
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Producto"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr "Deposito"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Servidor"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "Token"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "Identificador de usuario"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
"El canal de notificación preferido. \n"
|
||||
"Dejare en blanco para desactivar la notificación."
|
||||
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "Credencial DPD"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Crear envíos DPD para paquetes"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "Credenciales DPD"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr "¿Está seguro de que desea modificar las credenciales de DPD?"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr "La identificación DPD ha fallado con las credenciales \"%(credential)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
"La llamada al servicio web DPD ha fallado con el siguiente mensaje de error:\n"
|
||||
"%(message)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
"No puede crear el envío para el albarán \"%(shipment)s\" porque ya tiene un "
|
||||
"número de referencia del envío."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
"Para validar el albarán \"%(shipment)s\" debe establecer una dirección en el"
|
||||
" almacén \"%(warehouse)s\"."
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "Credenciales DPD"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr "Correo electrónico"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr "SMS"
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Producción"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "Pruebas"
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr "Información de las credenciales"
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
123
modules/stock_package_shipping_dpd/locale/es_419.po
Normal file
123
modules/stock_package_shipping_dpd/locale/es_419.po
Normal file
@@ -0,0 +1,123 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr "Depósito"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
126
modules/stock_package_shipping_dpd/locale/et.po
Normal file
126
modules/stock_package_shipping_dpd/locale/et.po
Normal file
@@ -0,0 +1,126 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Tootmine"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Ettevõte"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Salasõna"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "Token"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "Kasutaja ID"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD viide"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Loo DPD saadetis"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD viide"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD viide"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Tootmine"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "Testimine"
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr "Viite info"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
133
modules/stock_package_shipping_dpd/locale/fa.po
Normal file
133
modules/stock_package_shipping_dpd/locale/fa.po
Normal file
@@ -0,0 +1,133 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "تهیه کننده"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "شرکت"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr "دپو"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "کلمه عبور"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "سرور"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "توکن"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "شناسه کاربر"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "گواهی نامه DPD"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "ایجاد حمل ونقل DPD برای بسته ها"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "گواهی نامه های DPD"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
"تماس با وب سرویس DPD با پیغام خطای زیر انجام نشد :\n"
|
||||
"\"%s\""
|
||||
|
||||
#, fuzzy, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
"شما نمی توانید حمل و نقل را برای حمل و نقل :\"%(shipment)s\" ایجاد کنید زیرا"
|
||||
" قبلا یک شماره مرجع است."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
"برای تایید حمل و نقل :\"%(shipment)s\" شما باید یک آدرس را در "
|
||||
"انبار:\"%(warehouse)s\" تنظیم کنید."
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "گواهی نامه های DPD"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "تهیه کننده"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "آزمایش"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr "اطلاعات گواهی نامه"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
124
modules/stock_package_shipping_dpd/locale/fi.po
Normal file
124
modules/stock_package_shipping_dpd/locale/fi.po
Normal file
@@ -0,0 +1,124 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
133
modules/stock_package_shipping_dpd/locale/fr.po
Normal file
133
modules/stock_package_shipping_dpd/locale/fr.po
Normal file
@@ -0,0 +1,133 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr "Notification"
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr "Format de sortie"
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr "Format papier"
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Produit"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr "Dépôt"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Serveur"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "Jeton"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "ID d'utilisateur"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
"Le canal de notification préféré.\n"
|
||||
"Laissez vide pour aucune notification."
|
||||
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "Identifiant du transporteur DPD"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Créer la livraison DPD pour les emballages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "Identifiants DPD"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr "Êtes-vous sûr de vouloir modifier les identifiants de DPD ?"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
"La connexion DPD a échoué avec les informations d'identification "
|
||||
"« %(credential)s »."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
"L'appel au service web de DPD a échoué avec le message d'erreur suivant :\n"
|
||||
"%(message)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas créer de livraison pour l'expédition « %(shipment)s » car"
|
||||
" elle a déjà un numéro de référence d'expédition."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
"Pour valider la livraison « %(shipment)s », vous devez définir une adresse "
|
||||
"pour l'entrepôt « %(warehouse)s »."
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "Identifiants DPD"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr "Courriel"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr "SMS"
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Production"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "Essai"
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr "Informations d'identification"
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
128
modules/stock_package_shipping_dpd/locale/hu.po
Normal file
128
modules/stock_package_shipping_dpd/locale/hu.po
Normal file
@@ -0,0 +1,128 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Termelés"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Társaság"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Jelszó"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Termelés"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
124
modules/stock_package_shipping_dpd/locale/id.po
Normal file
124
modules/stock_package_shipping_dpd/locale/id.po
Normal file
@@ -0,0 +1,124 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Produk"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Perusahaan"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Kata sandi"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Produksi"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "Testing"
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
125
modules/stock_package_shipping_dpd/locale/it.po
Normal file
125
modules/stock_package_shipping_dpd/locale/it.po
Normal file
@@ -0,0 +1,125 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Azienda"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
127
modules/stock_package_shipping_dpd/locale/lo.po
Normal file
127
modules/stock_package_shipping_dpd/locale/lo.po
Normal file
@@ -0,0 +1,127 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "ຜະລິດຕະພັນ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "ຫ້ອງການ/ສຳນັກງານ"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "ຜະລິດຕະພັນ"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
124
modules/stock_package_shipping_dpd/locale/lt.po
Normal file
124
modules/stock_package_shipping_dpd/locale/lt.po
Normal file
@@ -0,0 +1,124 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Organizacija"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "Naudotojo ID"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
131
modules/stock_package_shipping_dpd/locale/nl.po
Normal file
131
modules/stock_package_shipping_dpd/locale/nl.po
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr "Melding"
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr "Uitvoer formaat"
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr "Papierformaat"
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Product"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Bedrijf"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr "Magazijn"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Wachtwoord"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "Token"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "Gebruiker ID"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
"Voorkeur welk soort melding te gebruiken.\n"
|
||||
"Laat leeg om meldingen uit te schakelen."
|
||||
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "Transporteur aanmeldgegevens DPD"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Maak een DPD-verzending voor de pakketten"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr "Weet u zeker dat u de inloggegevens bij DPD wilt wijzigen?"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr "DPD-aanmelding is mislukt met referentie %(credential)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
"DPD webservice-oproep mislukt met het volgende foutbericht:\n"
|
||||
"%(message)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
"U kunt geen verzending voor zending \"%(shipment)s\" maken omdat deze al een"
|
||||
" referentienummer heeft."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
"Om zending \"%(shipment)s\" te valideren, moet u een adres voor magazijn "
|
||||
"\"%(warehouse)s\" instellen."
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr "SMS"
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Productie"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "Testen"
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr "Referentiegegevens"
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
128
modules/stock_package_shipping_dpd/locale/pl.po
Normal file
128
modules/stock_package_shipping_dpd/locale/pl.po
Normal file
@@ -0,0 +1,128 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Produkcja"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Firma"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Hasło"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Serwer"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "Token"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "ID użytkownika"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Produkcja"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
132
modules/stock_package_shipping_dpd/locale/pt.po
Normal file
132
modules/stock_package_shipping_dpd/locale/pt.po
Normal file
@@ -0,0 +1,132 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Produção"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr "Depósito"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Senha"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Servidor"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "Token"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "ID de usuário"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "Credencial DPD"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
"A chamada ao serviço web DPD falhou com a mensagem de erro:\n"
|
||||
"%(message)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Produção"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "Testando"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr "Informações da Credencial"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
123
modules/stock_package_shipping_dpd/locale/ro.po
Normal file
123
modules/stock_package_shipping_dpd/locale/ro.po
Normal file
@@ -0,0 +1,123 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Societate"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
129
modules/stock_package_shipping_dpd/locale/ru.po
Normal file
129
modules/stock_package_shipping_dpd/locale/ru.po
Normal file
@@ -0,0 +1,129 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Производство"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Учет.орг."
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Пароль"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Сервер"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Производство"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
133
modules/stock_package_shipping_dpd/locale/sl.po
Normal file
133
modules/stock_package_shipping_dpd/locale/sl.po
Normal file
@@ -0,0 +1,133 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr "Produkcijski"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr "Družba"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr "Depot"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "Geslo"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr "Strežnik"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr "Žeton"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr "ID uporabnika"
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD prijava"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
"Sporočilo napake pri klicu DPD spletne storitve:\n"
|
||||
"\n"
|
||||
"%(message)s"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr "Produkcijski"
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr "Preizkusni"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr "Prijavni podatki"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr "DPD"
|
||||
124
modules/stock_package_shipping_dpd/locale/tr.po
Normal file
124
modules/stock_package_shipping_dpd/locale/tr.po
Normal file
@@ -0,0 +1,124 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
123
modules/stock_package_shipping_dpd/locale/uk.po
Normal file
123
modules/stock_package_shipping_dpd/locale/uk.po
Normal file
@@ -0,0 +1,123 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
125
modules/stock_package_shipping_dpd/locale/zh_CN.po
Normal file
125
modules/stock_package_shipping_dpd/locale/zh_CN.po
Normal file
@@ -0,0 +1,125 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:carrier,dpd_notification:"
|
||||
msgid "Notification"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_output_format:"
|
||||
msgid "Output Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_paper_format:"
|
||||
msgid "Paper Format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier,dpd_product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,depot:"
|
||||
msgid "Depot"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:carrier.credential.dpd,password:"
|
||||
msgid "Password"
|
||||
msgstr "密码"
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,server:"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,token:"
|
||||
msgid "Token"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:carrier.credential.dpd,user_id:"
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:carrier,dpd_notification:"
|
||||
msgid ""
|
||||
"The preferred notification channel.\n"
|
||||
"Leave empty for no notification."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:carrier.credential.dpd,string:"
|
||||
msgid "Carrier Credential Dpd"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.action,name:act_create_shipping_dpd_wizard"
|
||||
msgid "Create DPD Shipping for Packages"
|
||||
msgstr "Create DPD Shipping for Packages"
|
||||
|
||||
msgctxt "model:ir.action,name:act_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_dpd_credential_modified"
|
||||
msgid "Are you sure you want to modify DPD credentials?"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_login_error"
|
||||
msgid "DPD login failed with credential \"%(credential)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_dpd_webservice_error"
|
||||
msgid ""
|
||||
"DPD webservice call failed with the following error message:\n"
|
||||
"%(message)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
|
||||
msgid ""
|
||||
"You cannot create shipping for shipment \"%(shipment)s\" because it has "
|
||||
"already a shipping reference number."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_warehouse_address_required"
|
||||
msgid ""
|
||||
"To validate shipment \"%(shipment)s\" you must set an address on the "
|
||||
"warehouse \"%(warehouse)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_dpd_credential_form"
|
||||
msgid "DPD Credentials"
|
||||
msgstr "DPD Credentials"
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,dpd_notification:"
|
||||
msgid "SMS"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier,shipping_service:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Production"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:carrier.credential.dpd,server:"
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier.credential.dpd:"
|
||||
msgid "Credential Information"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:carrier:"
|
||||
msgid "DPD"
|
||||
msgstr ""
|
||||
23
modules/stock_package_shipping_dpd/message.xml
Normal file
23
modules/stock_package_shipping_dpd/message.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data grouped="1">
|
||||
<record model="ir.message" id="msg_dpd_credential_modified">
|
||||
<field name="text">Are you sure you want to modify DPD credentials?</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_dpd_webservice_error">
|
||||
<field name="text">DPD webservice call failed with the following error message:
|
||||
%(message)s</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_dpd_login_error">
|
||||
<field name="text">DPD login failed with credential "%(credential)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_warehouse_address_required">
|
||||
<field name="text">To validate shipment "%(shipment)s" you must set an address on the warehouse "%(warehouse)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_shipment_has_shipping_reference_number">
|
||||
<field name="text">You cannot create shipping for shipment "%(shipment)s" because it has already a shipping reference number.</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
443
modules/stock_package_shipping_dpd/stock.py
Normal file
443
modules/stock_package_shipping_dpd/stock.py
Normal file
@@ -0,0 +1,443 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
import locale
|
||||
from decimal import Decimal
|
||||
from io import BytesIO
|
||||
from itertools import zip_longest
|
||||
from math import ceil
|
||||
|
||||
from lxml import etree
|
||||
from pypdf import PdfReader, PdfWriter
|
||||
from zeep.exceptions import Fault
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import fields
|
||||
from trytond.model.exceptions import AccessError
|
||||
from trytond.modules.stock_package_shipping.exceptions import (
|
||||
PackingValidationError)
|
||||
from trytond.modules.stock_package_shipping.stock import address_name
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.wizard import StateAction, StateTransition, Wizard
|
||||
|
||||
from .configuration import SHIPMENT_SERVICE, get_client
|
||||
from .exceptions import DPDError
|
||||
|
||||
TRACKING_URL = 'https://tracking.dpd.de/status/%(code)s/parcel/%(reference)s'
|
||||
|
||||
|
||||
def iter_pdf_pages(document):
|
||||
if hasattr(document, 'pages'):
|
||||
yield from document.pages
|
||||
else:
|
||||
for i in range(document.getNumPages()):
|
||||
yield document.getPage(i)
|
||||
|
||||
|
||||
class Package(metaclass=PoolMeta):
|
||||
__name__ = 'stock.package'
|
||||
|
||||
def get_shipping_tracking_url(self, name):
|
||||
url = super().get_shipping_tracking_url(name)
|
||||
if (self.shipping_reference
|
||||
and self.shipment
|
||||
and self.shipment.id >= 0
|
||||
and self.shipment.carrier
|
||||
and self.shipment.carrier.shipping_service == 'dpd'):
|
||||
party = self.shipment.shipping_to
|
||||
address = self.shipment.shipping_to_address
|
||||
if party and party.lang:
|
||||
lang_code = party.lang.code
|
||||
else:
|
||||
lang_code = Transaction().language
|
||||
if address and address.country:
|
||||
code = '_'.join(
|
||||
(lang_code.split('_')[0], address.country.code))
|
||||
else:
|
||||
code = lang_code
|
||||
url = TRACKING_URL % {
|
||||
'code': code,
|
||||
'reference': self.shipping_reference,
|
||||
}
|
||||
return url
|
||||
|
||||
|
||||
class ShippingDPDMixin:
|
||||
__slots__ = ()
|
||||
|
||||
def validate_packing_dpd(self):
|
||||
warehouse = self.shipping_warehouse
|
||||
if not warehouse.address:
|
||||
raise PackingValidationError(
|
||||
gettext('stock_package_shipping_dpd'
|
||||
'.msg_warehouse_address_required',
|
||||
shipment=self.rec_name,
|
||||
warehouse=warehouse.rec_name))
|
||||
|
||||
|
||||
class CreateShipping(metaclass=PoolMeta):
|
||||
__name__ = 'stock.shipment.create_shipping'
|
||||
|
||||
dpd = StateAction(
|
||||
'stock_package_shipping_dpd.act_create_shipping_dpd_wizard')
|
||||
|
||||
def transition_start(self):
|
||||
next_state = super().transition_start()
|
||||
if self.record.carrier.shipping_service == 'dpd':
|
||||
next_state = 'dpd'
|
||||
return next_state
|
||||
|
||||
def do_dpd(self, action):
|
||||
ctx = Transaction().context
|
||||
return action, {
|
||||
'model': ctx['active_model'],
|
||||
'id': ctx['active_id'],
|
||||
'ids': [ctx['active_id']],
|
||||
}
|
||||
|
||||
|
||||
class CreateDPDShipping(Wizard):
|
||||
__name__ = 'stock.shipment.create_shipping.dpd'
|
||||
|
||||
start = StateTransition()
|
||||
|
||||
def transition_start(self):
|
||||
pool = Pool()
|
||||
Package = pool.get('stock.package')
|
||||
|
||||
shipment = self.record
|
||||
if shipment.shipping_reference:
|
||||
raise AccessError(
|
||||
gettext('stock_package_shipping_dpd'
|
||||
'.msg_shipment_has_reference_number',
|
||||
shipment=shipment.rec_name))
|
||||
|
||||
credential = self.get_credential(shipment)
|
||||
if not credential.depot or not credential.token:
|
||||
credential.update_token()
|
||||
|
||||
carrier = shipment.carrier
|
||||
shipping_client = get_client(credential.server, SHIPMENT_SERVICE)
|
||||
print_options = self.get_print_options(shipment)
|
||||
packages = shipment.root_packages
|
||||
shipment_data = self.get_shipment_data(credential, shipment, packages)
|
||||
|
||||
count = 0
|
||||
while count < 2:
|
||||
lang = (credential.company.party.lang.code
|
||||
if credential.company.party.lang else 'en')
|
||||
lang = locale.normalize(lang)[:5]
|
||||
authentication = {
|
||||
'delisId': credential.user_id,
|
||||
'authToken': credential.token,
|
||||
'messageLanguage': lang,
|
||||
}
|
||||
try:
|
||||
shipment_response = shipping_client.service.storeOrders(
|
||||
print_options, shipment_data, _soapheaders={
|
||||
'authentication': authentication,
|
||||
})
|
||||
break
|
||||
except Fault as e:
|
||||
if e.detail:
|
||||
tag = etree.QName(e.detail[0].tag)
|
||||
if tag.localname == 'authenticationFault':
|
||||
count += 1
|
||||
credential.update_token()
|
||||
continue
|
||||
raise DPDError(gettext(
|
||||
'stock_package_shipping_dpd.'
|
||||
'msg_dpd_webservice_error',
|
||||
message=e.message)) from e
|
||||
else:
|
||||
raise DPDError(
|
||||
gettext('stock_package_shipping_dpd.msg_dpd_login_error',
|
||||
credential=credential.rec_name))
|
||||
|
||||
response, = shipment_response.shipmentResponses
|
||||
if response.faults:
|
||||
message = '\n'.join(f.message for f in response.faults)
|
||||
raise DPDError(
|
||||
gettext('stock_package_shipping_dpd.msg_dpd_webservice_error',
|
||||
message=message))
|
||||
|
||||
labels = []
|
||||
labels_pdf = BytesIO(shipment_response.output.content)
|
||||
reader = PdfReader(labels_pdf)
|
||||
for page in iter_pdf_pages(reader):
|
||||
new_pdf = PdfWriter()
|
||||
new_label = BytesIO()
|
||||
new_pdf.add_page(page)
|
||||
new_pdf.write(new_label)
|
||||
labels.append(new_label)
|
||||
|
||||
shipment.shipping_reference = response.mpsId
|
||||
parcels = response.parcelInformation
|
||||
for package, label, parcel in zip_longest(packages, labels, parcels):
|
||||
package.shipping_label = fields.Binary.cast(label.getvalue())
|
||||
package.shipping_label_mimetype = (
|
||||
carrier.shipping_label_mimetype)
|
||||
package.shipping_reference = parcel.parcelLabelNumber
|
||||
Package.save(packages)
|
||||
shipment.save()
|
||||
|
||||
return 'end'
|
||||
|
||||
def get_credential_pattern(self, shipment):
|
||||
return {
|
||||
'company': shipment.company.id,
|
||||
}
|
||||
|
||||
def get_credential(self, shipment):
|
||||
pool = Pool()
|
||||
DPDCredential = pool.get('carrier.credential.dpd')
|
||||
|
||||
credential_pattern = self.get_credential_pattern(shipment)
|
||||
for credential in DPDCredential.search([]):
|
||||
if credential.match(credential_pattern):
|
||||
return credential
|
||||
|
||||
def get_print_options(self, shipment):
|
||||
return {
|
||||
'printOption': [{
|
||||
'outputFormat': shipment.carrier.dpd_output_format,
|
||||
'paperFormat': shipment.carrier.dpd_paper_format,
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
def shipping_party(self, party, address, usage=None, with_contact=False):
|
||||
if address.street_unstructured:
|
||||
street = address.street_single_line
|
||||
house_no = ''
|
||||
else:
|
||||
street = address.street_name or ''
|
||||
house_no = address.numbers
|
||||
name = address_name(address, party)
|
||||
contact = party.full_name if party.full_name != name else ''
|
||||
if with_contact and not contact:
|
||||
contact = party.full_name
|
||||
shipping_party = {
|
||||
'name1': name[:50],
|
||||
'name2': name[50:85],
|
||||
'street': street[:50],
|
||||
'houseNo': house_no[:8],
|
||||
'country': address.country.code if address.country else '',
|
||||
'zipCode': address.postal_code[:9],
|
||||
'city': address.city[:50],
|
||||
'contact': contact[:35],
|
||||
}
|
||||
|
||||
phone = address.contact_mechanism_get({'phone', 'mobile'}, usage=usage)
|
||||
if phone and len(phone.value) <= 30:
|
||||
shipping_party['phone'] = phone.value
|
||||
mobile = address.contact_mechanism_get('mobile', usage=usage)
|
||||
if mobile and len(mobile.value) <= 30:
|
||||
shipping_party['mobile'] = mobile.value
|
||||
email = address.contact_mechanism_get('email', usage=usage)
|
||||
if email and 5 <= len(email.value) <= 100:
|
||||
shipping_party['email'] = email.value
|
||||
|
||||
return shipping_party
|
||||
|
||||
def get_parcel(self, shipment, package):
|
||||
pool = Pool()
|
||||
UoM = pool.get('product.uom')
|
||||
ModelData = pool.get('ir.model.data')
|
||||
|
||||
cm = UoM(ModelData.get_id('product', 'uom_centimeter'))
|
||||
kg = UoM(ModelData.get_id('product', 'uom_kilogram'))
|
||||
|
||||
parcel = {}
|
||||
|
||||
if package.total_weight:
|
||||
# in grams rounded in 10 gram units
|
||||
weight = UoM.compute_qty(
|
||||
package.weight_uom, package.total_weight, kg, round=False)
|
||||
weight = int(round(weight, 2) * 100)
|
||||
if weight < 1000000000:
|
||||
parcel['weight'] = weight
|
||||
|
||||
if (package.length is not None
|
||||
and package.width is not None
|
||||
and package.height is not None):
|
||||
length = ceil(UoM.compute_qty(
|
||||
package.length_uom, package.length, cm, round=False))
|
||||
width = ceil(UoM.compute_qty(
|
||||
package.width_uom, package.width, cm, round=False))
|
||||
height = ceil(UoM.compute_qty(
|
||||
package.height_uom, package.height, cm, round=False))
|
||||
if 1 <= length < 1000 and 1 <= width < 1000 and 1 <= height < 1000:
|
||||
parcel['volume'] = int(
|
||||
'%03i%03i%03i' % (length, width, height))
|
||||
|
||||
return parcel
|
||||
|
||||
def get_shipment_data(self, credential, shipment, packages):
|
||||
pool = Pool()
|
||||
UoM = pool.get('product.uom')
|
||||
ModelData = pool.get('ir.model.data')
|
||||
|
||||
cm3 = UoM(ModelData.get_id('product', 'uom_cubic_centimeter'))
|
||||
kg = UoM(ModelData.get_id('product', 'uom_kilogram'))
|
||||
|
||||
volume = round(UoM.compute_qty(
|
||||
shipment.volume_uom, shipment.volume, cm3, round=False))
|
||||
weight = round(UoM.compute_qty(
|
||||
shipment.weight_uom, shipment.weight, kg, round=False), 2)
|
||||
return {
|
||||
'generalShipmentData': {
|
||||
'identificationNumber': shipment.number,
|
||||
'sendingDepot': credential.depot,
|
||||
'product': shipment.carrier.dpd_product,
|
||||
'mpsVolume': int(volume),
|
||||
'mpsWeight': int(weight * 100),
|
||||
'sender': self.shipping_party(
|
||||
shipment.company.party,
|
||||
shipment.shipping_warehouse.address),
|
||||
'recipient': self.shipping_party(
|
||||
shipment.shipping_to, shipment.shipping_to_address),
|
||||
},
|
||||
'parcels': [self.get_parcel(shipment, p) for p in packages],
|
||||
'productAndServiceData': self.get_product_and_service(shipment),
|
||||
}
|
||||
|
||||
def get_product_and_service(self, shipment):
|
||||
return {
|
||||
'orderType': 'consignment',
|
||||
**self.get_notification(shipment),
|
||||
}
|
||||
|
||||
def get_notification(self, shipment, usage=None):
|
||||
carrier = shipment.carrier
|
||||
if not carrier.dpd_notification:
|
||||
return {}
|
||||
party = shipment.shipping_to
|
||||
if party and party.lang:
|
||||
lang_code = party.lang.code
|
||||
else:
|
||||
lang_code = Transaction().language
|
||||
lang_code = lang_code.upper()
|
||||
channel2type = {
|
||||
'sms': {'mobile'},
|
||||
}
|
||||
|
||||
channels = [
|
||||
(1, 'email'),
|
||||
(3, 'sms'),
|
||||
]
|
||||
if carrier.dpd_notification == 'sms':
|
||||
channels = reversed(channels)
|
||||
|
||||
for channel_id, channel in channels:
|
||||
mechanism = party.contact_mechanism_get(
|
||||
channel2type.get(channel, channel), usage=usage)
|
||||
if not mechanism:
|
||||
continue
|
||||
value = mechanism.value
|
||||
if len(value) > 50:
|
||||
continue
|
||||
return {
|
||||
'predict': {
|
||||
'channel': channel_id,
|
||||
'value': value,
|
||||
'language': lang_code,
|
||||
},
|
||||
}
|
||||
return {}
|
||||
|
||||
|
||||
class CreateDPDShipping_Customs(metaclass=PoolMeta):
|
||||
__name__ = 'stock.shipment.create_shipping.dpd'
|
||||
|
||||
def get_product_and_service(self, shipment):
|
||||
pool = Pool()
|
||||
Date = pool.get('ir.date')
|
||||
Currency = pool.get('currency.currency')
|
||||
|
||||
with Transaction().set_context(company=shipment.company.id):
|
||||
today = Date.today()
|
||||
|
||||
product_and_service = super().get_product_and_service(shipment)
|
||||
|
||||
if shipment.customs_international:
|
||||
invoice_date = shipment.effective_date or today
|
||||
currency, = {m.currency for m in shipment.customs_moves}
|
||||
|
||||
amount = sum(
|
||||
Currency.compute(
|
||||
curr, Decimal(str(v['quantity'])) * price, currency,
|
||||
round=False)
|
||||
for (product, price, curr, _), v in
|
||||
shipment.customs_products.items())
|
||||
|
||||
international = {
|
||||
'parcelType': 0,
|
||||
'customsAmount': int(
|
||||
amount.quantize(Decimal('.01')) * Decimal(100)),
|
||||
'customsCurrency': currency.code,
|
||||
'customsTerms': self.get_customs_terms(shipment),
|
||||
'customsPaper': 'A',
|
||||
'customsInvoice': shipment.number[:20],
|
||||
'customsInvoiceDate': invoice_date.strftime('%Y%m%d'),
|
||||
}
|
||||
if customs_agent := shipment.customs_agent:
|
||||
international.update({
|
||||
'commercialInvoiceConsigneeVatNumber': (
|
||||
customs_agent.tax_identifier.code)[:20],
|
||||
'commercialInvoiceConsignee': self.shipping_party(
|
||||
customs_agent.party,
|
||||
customs_agent.address,
|
||||
with_contact=True),
|
||||
})
|
||||
if shipment.tax_identifier:
|
||||
international['commercialInvoiceConsignorVatNumber'] = (
|
||||
shipment.tax_identifier.code[:17])
|
||||
international['commercialInvoiceConsignor'] = self.shipping_party(
|
||||
shipment.company.party, shipment.customs_from_address)
|
||||
international['additionalInvoiceLines'] = [
|
||||
{'customsInvoicePosition': i,
|
||||
**self.get_international_invoice_line(shipment, *k, **v)}
|
||||
for i, (k, v) in enumerate(
|
||||
shipment.customs_products.items(), 1)]
|
||||
international['numberOfArticle'] = len(
|
||||
international['additionalInvoiceLines'])
|
||||
product_and_service['international'] = international
|
||||
return product_and_service
|
||||
|
||||
def get_customs_terms(self, shipment):
|
||||
if shipment and shipment.incoterm:
|
||||
if shipment.incoterm.code == 'DAP':
|
||||
return '01'
|
||||
elif shipment.incoterm.code == 'DDP':
|
||||
return '03'
|
||||
elif shipment.incoterm.code == 'EXW':
|
||||
return '05'
|
||||
|
||||
def get_international_invoice_line(
|
||||
self, shipment, product, price, currency, unit, quantity, weight):
|
||||
tariff_code = product.get_tariff_code({
|
||||
'date': shipment.effective_date or shipment.planned_date,
|
||||
'country': (
|
||||
shipment.customs_to_country.id
|
||||
if shipment.customs_to_country else None),
|
||||
})
|
||||
|
||||
weight = round(weight, 2)
|
||||
|
||||
value = price * Decimal(str(quantity))
|
||||
if not quantity.is_integer():
|
||||
quantity = 1
|
||||
|
||||
return {
|
||||
'quantityItems': int(quantity),
|
||||
'customsContent': product.name[:200],
|
||||
'customsTarif': tariff_code.code if tariff_code else None,
|
||||
'customsAmountLine': int(
|
||||
value.quantize(Decimal('.01')) * Decimal(100)),
|
||||
'customsOrigin': (
|
||||
product.country_of_origin.code_numeric
|
||||
if product.country_of_origin else None),
|
||||
'customsGrossWeight': int(weight * 100),
|
||||
}
|
||||
11
modules/stock_package_shipping_dpd/stock.xml
Normal file
11
modules/stock_package_shipping_dpd/stock.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
<record model="ir.action.wizard" id="act_create_shipping_dpd_wizard">
|
||||
<field name="name">Create DPD Shipping for Packages</field>
|
||||
<field name="wiz_name">stock.shipment.create_shipping.dpd</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
2
modules/stock_package_shipping_dpd/tests/__init__.py
Normal file
2
modules/stock_package_shipping_dpd/tests/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,224 @@
|
||||
========================================
|
||||
Stock Package Shipping with DPD scenario
|
||||
========================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import os
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.account.tests.tools import (
|
||||
... create_chart, create_fiscalyear, get_accounts)
|
||||
>>> from trytond.modules.account_invoice.tests.tools import (
|
||||
... create_payment_term, set_fiscalyear_invoice_sequences)
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules(
|
||||
... ['stock_package_shipping_dpd', 'sale', 'sale_shipment_cost'],
|
||||
... create_company, create_chart)
|
||||
|
||||
Get company::
|
||||
|
||||
>>> company = get_company()
|
||||
|
||||
Create fiscal year::
|
||||
|
||||
>>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear())
|
||||
>>> fiscalyear.click('create_period')
|
||||
|
||||
Get accounts::
|
||||
|
||||
>>> accounts = get_accounts()
|
||||
>>> revenue = accounts['revenue']
|
||||
>>> expense = accounts['expense']
|
||||
|
||||
Create a payment term::
|
||||
|
||||
>>> payment_term = create_payment_term()
|
||||
>>> payment_term.save()
|
||||
|
||||
Create parties::
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> Country = Model.get('country.country')
|
||||
|
||||
>>> belgium = Country(code='BE', name='Belgium')
|
||||
>>> belgium.save()
|
||||
>>> france = Country(code='FR', name='France')
|
||||
>>> france.save()
|
||||
>>> customer = Party(name='Customer')
|
||||
>>> customer.save()
|
||||
>>> customer_address = customer.addresses.new()
|
||||
>>> customer_address.street = 'Champs élysées'
|
||||
>>> customer_address.postal_code = '75008'
|
||||
>>> customer_address.city = 'Paris'
|
||||
>>> customer_address.country = france
|
||||
>>> customer_address.save()
|
||||
>>> customer_phone = customer.contact_mechanisms.new(type='mobile')
|
||||
>>> customer_phone.value = '+33 93 842 8862'
|
||||
>>> customer_phone.save()
|
||||
|
||||
Set the warehouse address::
|
||||
|
||||
>>> Address = Model.get('party.address')
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> warehouse, = Location.find([('type', '=', 'warehouse')])
|
||||
>>> company_address = Address()
|
||||
>>> company_address.party = company.party
|
||||
>>> company_address.street = '2 rue de la Centrale'
|
||||
>>> company_address.postal_code = '4000'
|
||||
>>> company_address.city = 'Sclessin'
|
||||
>>> company_address.country = belgium
|
||||
>>> company_address.save()
|
||||
>>> company_phone = company.party.contact_mechanisms.new()
|
||||
>>> company_phone.type = 'phone'
|
||||
>>> company_phone.value = '+32 4 2522122'
|
||||
>>> company_phone.save()
|
||||
>>> warehouse.address = company_address
|
||||
>>> warehouse.save()
|
||||
|
||||
Get some units::
|
||||
|
||||
>>> UoM = Model.get('product.uom')
|
||||
>>> cm, = UoM.find([('symbol', '=', 'cm')])
|
||||
>>> g, = UoM.find([('symbol', '=', 'g')])
|
||||
|
||||
Create account category::
|
||||
|
||||
>>> ProductCategory = Model.get('product.category')
|
||||
>>> account_category = ProductCategory(name="Account Category")
|
||||
>>> account_category.accounting = True
|
||||
>>> account_category.account_expense = expense
|
||||
>>> account_category.account_revenue = revenue
|
||||
>>> account_category.save()
|
||||
|
||||
Create product::
|
||||
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = 'product'
|
||||
>>> template.default_uom = unit
|
||||
>>> template.type = 'goods'
|
||||
>>> template.salable = True
|
||||
>>> template.weight = 100
|
||||
>>> template.weight_uom = g
|
||||
>>> template.list_price = Decimal('10')
|
||||
>>> template.account_category = account_category
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
Create an Inventory::
|
||||
|
||||
>>> Inventory = Model.get('stock.inventory')
|
||||
>>> storage, = Location.find([
|
||||
... ('code', '=', 'STO'),
|
||||
... ])
|
||||
>>> inventory = Inventory()
|
||||
>>> inventory.location = storage
|
||||
>>> inventory_line = inventory.lines.new(product=product)
|
||||
>>> inventory_line.quantity = 100.0
|
||||
>>> inventory_line.expected_quantity = 0.0
|
||||
>>> inventory.click('confirm')
|
||||
>>> inventory.state
|
||||
'done'
|
||||
|
||||
Create Package Type::
|
||||
|
||||
>>> PackageType = Model.get('stock.package.type')
|
||||
>>> box = PackageType(
|
||||
... name='Box',
|
||||
... length=10, length_uom=cm,
|
||||
... height=8, height_uom=cm,
|
||||
... width=5, width_uom=cm)
|
||||
>>> box.save()
|
||||
|
||||
Create a DPD Carrier and the related credential::
|
||||
|
||||
>>> Carrier = Model.get('carrier')
|
||||
>>> CarrierSelection = Model.get('carrier.selection')
|
||||
>>> DPDCredential = Model.get('carrier.credential.dpd')
|
||||
|
||||
>>> credential = DPDCredential()
|
||||
>>> credential.company = company
|
||||
>>> credential.user_id = os.getenv('DPD_USER_ID')
|
||||
>>> credential.password = os.getenv('DPD_PASSWORD')
|
||||
>>> credential.server = 'testing'
|
||||
>>> credential.save()
|
||||
|
||||
>>> carrier_product_template = ProductTemplate()
|
||||
>>> carrier_product_template.name = 'DPD Delivery'
|
||||
>>> carrier_product_template.default_uom = unit
|
||||
>>> carrier_product_template.type = 'service'
|
||||
>>> carrier_product_template.salable = True
|
||||
>>> carrier_product_template.list_price = Decimal(20)
|
||||
>>> carrier_product_template.account_category = account_category
|
||||
>>> carrier_product_template.save()
|
||||
>>> carrier_product, = carrier_product_template.products
|
||||
|
||||
>>> dpd = Party(name='DPD')
|
||||
>>> dpd.save()
|
||||
|
||||
>>> carrier = Carrier()
|
||||
>>> carrier.party = dpd
|
||||
>>> carrier.carrier_product = carrier_product
|
||||
>>> carrier.shipping_service = 'dpd'
|
||||
>>> carrier.dpd_product = 'CL'
|
||||
>>> carrier.dpd_output_format = 'PDF'
|
||||
>>> carrier.dpd_paper_format = 'A6'
|
||||
>>> carrier.dpd_notification = 'sms'
|
||||
>>> carrier.save()
|
||||
|
||||
>>> catchall_selection = CarrierSelection(carrier=carrier)
|
||||
>>> catchall_selection.save()
|
||||
|
||||
Create a sale and thus a shipment::
|
||||
|
||||
>>> Sale = Model.get('sale.sale')
|
||||
>>> SaleLine = Model.get('sale.line')
|
||||
>>> sale = Sale()
|
||||
>>> sale.party = customer
|
||||
>>> sale.shipment_address = customer_address
|
||||
>>> sale.payment_term = payment_term
|
||||
>>> sale.invoice_method = 'order'
|
||||
>>> sale.carrier = carrier
|
||||
>>> sale_line = sale.lines.new()
|
||||
>>> sale_line.product = product
|
||||
>>> sale_line.quantity = 2.0
|
||||
>>> sale.click('quote')
|
||||
>>> sale.click('confirm')
|
||||
>>> sale.click('process')
|
||||
|
||||
Create the packs and ship the shipment::
|
||||
|
||||
>>> Package = Model.get('stock.package')
|
||||
>>> shipment, = sale.shipments
|
||||
>>> shipment.click('assign_try')
|
||||
>>> shipment.click('pick')
|
||||
>>> pack = shipment.packages.new()
|
||||
>>> pack.type = box
|
||||
>>> pack_move, = pack.moves.find([])
|
||||
>>> pack.moves.append(pack_move)
|
||||
>>> shipment.click('pack')
|
||||
|
||||
>>> create_shipping = shipment.click('create_shipping')
|
||||
>>> shipment.reload()
|
||||
>>> bool(shipment.shipping_reference)
|
||||
True
|
||||
>>> pack, = shipment.root_packages
|
||||
>>> pack.shipping_label is not None
|
||||
True
|
||||
>>> pack.shipping_label_mimetype
|
||||
'application/pdf'
|
||||
>>> pack.shipping_reference is not None
|
||||
True
|
||||
>>> pack.shipping_tracking_url
|
||||
'https://tracking.dpd.de/status/...'
|
||||
>>> pack.shipping_tracking_url.endswith(pack.shipping_reference)
|
||||
True
|
||||
@@ -0,0 +1,200 @@
|
||||
======================================================
|
||||
Stock Package Shipping with DPD International Scenario
|
||||
======================================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import os
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules(
|
||||
... ['stock_package_shipping_dpd', 'stock_shipment_customs', 'incoterm'],
|
||||
... create_company)
|
||||
|
||||
>>> Address = Model.get('party.address')
|
||||
>>> Agent = Model.get('customs.agent')
|
||||
>>> AgentSelection = Model.get('customs.agent.selection')
|
||||
>>> Carrier = Model.get('carrier')
|
||||
>>> Country = Model.get('country.country')
|
||||
>>> DPDCredential = Model.get('carrier.credential.dpd')
|
||||
>>> Incoterm = Model.get('incoterm.incoterm')
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> Package = Model.get('stock.package')
|
||||
>>> PackageType = Model.get('stock.package.type')
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> Shipment = Model.get('stock.shipment.out')
|
||||
>>> TariffCode = Model.get('customs.tariff.code')
|
||||
>>> UoM = Model.get('product.uom')
|
||||
|
||||
Get company::
|
||||
|
||||
>>> company = get_company()
|
||||
|
||||
Create countries::
|
||||
|
||||
>>> belgium = Country(code='BE', name="Belgium")
|
||||
>>> belgium.save()
|
||||
>>> switzerland = Country(code='CH', name="Switerland")
|
||||
>>> switzerland.save()
|
||||
>>> taiwan = Country(code='TW', code_numeric='158', name="Taiwan")
|
||||
>>> taiwan.save()
|
||||
|
||||
Create parties::
|
||||
|
||||
>>> customer = Party(name="Customer")
|
||||
>>> customer_address, = customer.addresses
|
||||
>>> customer_address.street = "Pfistergasse 17"
|
||||
>>> customer_address.postal_code = "6003"
|
||||
>>> customer_address.city = "Lucerna"
|
||||
>>> customer_address.country = switzerland
|
||||
>>> customer_phone = customer.contact_mechanisms.new()
|
||||
>>> customer_phone.type = 'phone'
|
||||
>>> customer_phone.value = "+(41) (041) 410-62-66"
|
||||
>>> customer_email = customer.contact_mechanisms.new()
|
||||
>>> customer_email.type = 'email'
|
||||
>>> customer_email.value = 'customer@example.com'
|
||||
>>> customer.save()
|
||||
|
||||
>>> agent_party = Party(name="Agent")
|
||||
>>> agent_address, = agent_party.addresses
|
||||
>>> agent_address.street = "Gerechtigkeitsgasse 53"
|
||||
>>> agent_address.postal_code = "3011"
|
||||
>>> agent_address.city = "Berna"
|
||||
>>> agent_address.country = switzerland
|
||||
>>> agent_identifier = agent_party.identifiers.new()
|
||||
>>> agent_identifier.type = 'ch_vat'
|
||||
>>> agent_identifier.code = "CHE-123.456.788 IVA"
|
||||
>>> agent_email = agent_party.contact_mechanisms.new()
|
||||
>>> agent_email.type = 'email'
|
||||
>>> agent_email.value = 'agent@example.com'
|
||||
>>> agent_phone = agent_party.contact_mechanisms.new()
|
||||
>>> agent_phone.type = 'phone'
|
||||
>>> agent_phone.value = '+(41) (041) 745-55-28'
|
||||
>>> agent_party.save()
|
||||
>>> agent = Agent(party=agent_party)
|
||||
>>> agent.save()
|
||||
>>> AgentSelection(to_country=switzerland, agent=agent).save()
|
||||
|
||||
Set the warehouse address::
|
||||
|
||||
>>> warehouse, = Location.find([('type', '=', 'warehouse')])
|
||||
>>> company_address = Address()
|
||||
>>> company_address.party = company.party
|
||||
>>> company_address.street = '2 rue de la Centrale'
|
||||
>>> company_address.postal_code = '4000'
|
||||
>>> company_address.city = 'Sclessin'
|
||||
>>> company_address.country = belgium
|
||||
>>> company_address.save()
|
||||
>>> company_phone = company.party.contact_mechanisms.new()
|
||||
>>> company_phone.type = 'phone'
|
||||
>>> company_phone.value = '+32 4 2522122'
|
||||
>>> company_phone.save()
|
||||
>>> warehouse.address = company_address
|
||||
>>> warehouse.save()
|
||||
|
||||
Get some units::
|
||||
|
||||
>>> unit, = UoM.find([('name', '=', "Unit")], limit=1)
|
||||
>>> cm, = UoM.find([('name', '=', "Centimeter")], limit=1)
|
||||
>>> gram, = UoM.find([('name', '=', "Gram")], limit=1)
|
||||
|
||||
Create tariff::
|
||||
|
||||
>>> tariff_code = TariffCode(code='17039099')
|
||||
>>> tariff_code.save()
|
||||
|
||||
Create product::
|
||||
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = 'product'
|
||||
>>> template.default_uom = unit
|
||||
>>> template.type = 'goods'
|
||||
>>> template.weight = 100
|
||||
>>> template.weight_uom = gram
|
||||
>>> template.list_price = Decimal('10.0000')
|
||||
>>> template.country_of_origin = taiwan
|
||||
>>> _ = template.tariff_codes.new(tariff_code=tariff_code)
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
Create Package Type::
|
||||
|
||||
>>> box = PackageType(
|
||||
... name='Box',
|
||||
... length=10, length_uom=cm,
|
||||
... height=8, height_uom=cm,
|
||||
... width=5, width_uom=cm)
|
||||
>>> box.save()
|
||||
|
||||
Create a DPD Carrier and the related credential::
|
||||
|
||||
>>> credential = DPDCredential()
|
||||
>>> credential.company = company
|
||||
>>> credential.user_id = os.getenv('DPD_USER_ID')
|
||||
>>> credential.password = os.getenv('DPD_PASSWORD')
|
||||
>>> credential.server = 'testing'
|
||||
>>> credential.save()
|
||||
|
||||
>>> carrier_product_template = ProductTemplate()
|
||||
>>> carrier_product_template.name = 'DPD Delivery'
|
||||
>>> carrier_product_template.default_uom = unit
|
||||
>>> carrier_product_template.type = 'service'
|
||||
>>> carrier_product_template.list_price = Decimal(20)
|
||||
>>> carrier_product_template.save()
|
||||
>>> carrier_product, = carrier_product_template.products
|
||||
|
||||
>>> dpd = Party(name='DPD')
|
||||
>>> dpd.save()
|
||||
|
||||
>>> carrier = Carrier()
|
||||
>>> carrier.party = dpd
|
||||
>>> carrier.carrier_product = carrier_product
|
||||
>>> carrier.shipping_service = 'dpd'
|
||||
>>> carrier.dpd_product = 'CL'
|
||||
>>> carrier.dpd_output_format = 'PDF'
|
||||
>>> carrier.dpd_paper_format = 'A6'
|
||||
>>> carrier.dpd_notification = 'sms'
|
||||
>>> carrier.save()
|
||||
|
||||
Create a shipment::
|
||||
|
||||
>>> shipment = Shipment()
|
||||
>>> shipment.customer = customer
|
||||
>>> shipment.carrier = carrier
|
||||
>>> shipment.incoterm, = Incoterm.find([('code', '=', 'DAP')], limit=1)
|
||||
>>> move = shipment.outgoing_moves.new()
|
||||
>>> move.product = product
|
||||
>>> move.unit = unit
|
||||
>>> move.quantity = 2
|
||||
>>> move.from_location = shipment.warehouse_output
|
||||
>>> move.to_location = shipment.customer_location
|
||||
>>> move.unit_price = Decimal('50.0000')
|
||||
>>> move.currency = company.currency
|
||||
>>> shipment.click('wait')
|
||||
>>> assertEqual(shipment.customs_agent, agent)
|
||||
>>> shipment.click('assign_force')
|
||||
>>> shipment.click('pick')
|
||||
>>> shipment.state
|
||||
'picked'
|
||||
|
||||
Create the packs and ship the shipment::
|
||||
|
||||
>>> pack = shipment.packages.new()
|
||||
>>> pack.type = box
|
||||
>>> pack_move, = pack.moves.find([])
|
||||
>>> pack.moves.append(pack_move)
|
||||
>>> shipment.click('pack')
|
||||
>>> shipment.state
|
||||
'packed'
|
||||
|
||||
>>> create_shipping = shipment.click('create_shipping')
|
||||
>>> shipment.reload()
|
||||
>>> bool(shipment.shipping_reference)
|
||||
True
|
||||
12
modules/stock_package_shipping_dpd/tests/test_module.py
Normal file
12
modules/stock_package_shipping_dpd/tests/test_module.py
Normal file
@@ -0,0 +1,12 @@
|
||||
# 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.tests.test_tryton import ModuleTestCase
|
||||
|
||||
|
||||
class StockPackageShippingDpdTestCase(ModuleTestCase):
|
||||
'Test Stock Package Shipping Dpd module'
|
||||
module = 'stock_package_shipping_dpd'
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
16
modules/stock_package_shipping_dpd/tests/test_scenario.py
Normal file
16
modules/stock_package_shipping_dpd/tests/test_scenario.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
import os
|
||||
|
||||
from trytond.tests.test_tryton import TEST_NETWORK, load_doc_tests
|
||||
|
||||
|
||||
def load_tests(*args, **kwargs):
|
||||
if (not TEST_NETWORK
|
||||
or not (os.getenv('DPD_USER_ID') and os.getenv('DPD_PASSWORD'))):
|
||||
kwargs.setdefault('skips', set()).update([
|
||||
'scenario_shipping_dpd.rst',
|
||||
'scenario_stock_package_shipping_dpd_international.rst',
|
||||
])
|
||||
return load_doc_tests(__name__, __file__, *args, **kwargs)
|
||||
35
modules/stock_package_shipping_dpd/tryton.cfg
Normal file
35
modules/stock_package_shipping_dpd/tryton.cfg
Normal file
@@ -0,0 +1,35 @@
|
||||
[tryton]
|
||||
version=7.8.0
|
||||
depends:
|
||||
ir
|
||||
res
|
||||
party
|
||||
product
|
||||
stock
|
||||
stock_shipment_measurements
|
||||
stock_package
|
||||
stock_package_shipping
|
||||
extras_depend:
|
||||
customs
|
||||
incoterm
|
||||
stock_shipment_customs
|
||||
xml:
|
||||
carrier.xml
|
||||
stock.xml
|
||||
message.xml
|
||||
|
||||
[register]
|
||||
model:
|
||||
carrier.CredentialDPD
|
||||
carrier.Carrier
|
||||
stock.Package
|
||||
wizard:
|
||||
stock.CreateShipping
|
||||
stock.CreateDPDShipping
|
||||
|
||||
[register incoterm stock_shipment_customs]
|
||||
wizard:
|
||||
stock.CreateDPDShipping_Customs
|
||||
|
||||
[register_mixin]
|
||||
stock.ShippingDPDMixin: trytond.modules.stock_package_shipping.stock.ShippingMixin
|
||||
17
modules/stock_package_shipping_dpd/view/carrier_form.xml
Normal file
17
modules/stock_package_shipping_dpd/view/carrier_form.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="/form/field[@name='shipping_service']" position="after">
|
||||
<separator string="DPD" colspan="4" id="dpd"/>
|
||||
<label name="dpd_product"/>
|
||||
<field name="dpd_product"/>
|
||||
<label name="dpd_notification"/>
|
||||
<field name="dpd_notification"/>
|
||||
|
||||
<label name="dpd_output_format"/>
|
||||
<field name="dpd_output_format"/>
|
||||
<label name="dpd_paper_format"/>
|
||||
<field name="dpd_paper_format"/>
|
||||
</xpath>
|
||||
</data>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form cursor="server">
|
||||
<label name="company"/>
|
||||
<field name="company"/>
|
||||
<label name="sequence"/>
|
||||
<field name="sequence"/>
|
||||
|
||||
<label name="server"/>
|
||||
<field name="server"/>
|
||||
<separator string="Credential Information" colspan="4" id="credential_info"/>
|
||||
<label name="user_id"/>
|
||||
<field name="user_id"/>
|
||||
<label name="password"/>
|
||||
<field name="password" widget="password"/>
|
||||
</form>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tree sequence="sequence">
|
||||
<field name="company" expand="1"/>
|
||||
<field name="user_id" expand="2"/>
|
||||
<field name="server"/>
|
||||
</tree>
|
||||
Reference in New Issue
Block a user