first commit

This commit is contained in:
root
2026-03-14 09:42:12 +00:00
commit 0adbd20c2c
10991 changed files with 1646955 additions and 0 deletions

View 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.

View File

@@ -0,0 +1,362 @@
# 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 time
from functools import wraps
import requests
import trytond.config as config
from trytond.cache import Cache
from trytond.i18n import gettext
from trytond.model import (
MatchMixin, ModelSQL, ModelView, fields, sequence_ordered)
from trytond.pool import Pool, PoolMeta
from trytond.protocols.wrappers import HTTPStatus
from trytond.pyson import Eval, If
from .exceptions import SendcloudCredentialWarning, SendcloudError
SENDCLOUD_API_URL = 'https://panel.sendcloud.sc/api/v2/'
HEADERS = {
'Sendcloud-Partner-Id': '03c1facb-63da-4bb1-889c-192fc91ec4e6',
}
def sendcloud_api(func):
@wraps(func)
def wrapper(*args, **kwargs):
nb_tries, error_message = 0, ''
try:
while nb_tries < 5:
try:
return func(*args, **kwargs)
except requests.HTTPError as e:
if e.response.status_code == HTTPStatus.TOO_MANY_REQUESTS:
error_message = e.args[0]
nb_tries += 1
time.sleep(1)
else:
raise
except requests.HTTPError as e:
error_message = e.args[0]
raise SendcloudError(
gettext('stock_package_shipping_sendcloud'
'.msg_sendcloud_webserver_error',
message=error_message))
return wrapper
class CredentialSendcloud(sequence_ordered(), ModelSQL, ModelView, MatchMixin):
__name__ = 'carrier.credential.sendcloud'
company = fields.Many2One('company.company', "Company")
public_key = fields.Char("Public Key", required=True, strip=False)
secret_key = fields.Char("Secret Key", required=True, strip=False)
addresses = fields.One2Many(
'carrier.sendcloud.address', 'sendcloud', "Addresses",
states={
'readonly': ~Eval('id') | (Eval('id', -1) < 0),
})
shipping_methods = fields.One2Many(
'carrier.sendcloud.shipping_method', 'sendcloud', "Methods",
states={
'readonly': ~Eval('id') | (Eval('id', -1) < 0),
})
_addresses_sender_cache = Cache(
'carrier.credential.sendcloud.addresses_sender',
duration=config.getint(
'stock_package_shipping_sendcloud', 'addresses_cache',
default=15 * 60),
context=False)
_shiping_methods_cache = Cache(
'carrier.credential.sendcloud.shipping_methods',
duration=config.getint(
'stock_package_shipping_sendcloud', 'shipping_methods_cache',
default=60 * 60))
@property
def auth(self):
return self.public_key, self.secret_key
@property
@sendcloud_api
def addresses_sender(self):
addresses = self._addresses_sender_cache.get(self.id)
if addresses is not None:
return addresses
timeout = config.getfloat(
'stock_package_shipping_sendcloud', 'requests_timeout',
default=300)
response = requests.get(
SENDCLOUD_API_URL + 'user/addresses/sender',
auth=self.auth, timeout=timeout, headers=HEADERS)
response.raise_for_status()
addresses = response.json()['sender_addresses']
self._addresses_sender_cache.set(self.id, addresses)
return addresses
def get_sender_address(self, shipment_or_warehouse, pattern=None):
pattern = pattern.copy() if pattern is not None else {}
if shipment_or_warehouse.__name__ == 'stock.location':
warehouse = shipment_or_warehouse
pattern['warehouse'] = warehouse.id
else:
shipment = shipment_or_warehouse
pattern['warehouse'] = shipment.shipping_warehouse.id
for address in self.addresses:
if address.match(pattern):
return int(address.address) if address.address else None
@sendcloud_api
def get_shipping_methods(
self, sender_address=None, service_point=None, is_return=False):
key = (self.id, sender_address, service_point, is_return)
methods = self._shiping_methods_cache.get(key)
if methods is not None:
return methods
params = {}
if sender_address:
params['sender_address'] = sender_address
if service_point:
params['service_point'] = service_point
if is_return:
params['is_return'] = is_return
timeout = config.getfloat(
'stock_package_shipping_sendcloud', 'requests_timeout',
default=300)
response = requests.get(
SENDCLOUD_API_URL + 'shipping_methods', params=params,
auth=self.auth, timeout=timeout, headers=HEADERS)
response.raise_for_status()
methods = response.json()['shipping_methods']
self._shiping_methods_cache.set(key, methods)
return methods
def get_shipping_method(self, shipment, package=None):
pattern = self._get_shipping_method_pattern(shipment, package=package)
for method in self.shipping_methods:
if method.match(pattern):
if method.shipping_method:
return int(method.shipping_method)
else:
return None
@classmethod
def _get_shipping_method_pattern(cls, shipment, package=None):
pool = Pool()
UoM = pool.get('product.uom')
ModelData = pool.get('ir.model.data')
kg = UoM(ModelData.get_id('product', 'uom_kilogram'))
if package:
weight = UoM.compute_qty(
package.weight_uom, package.total_weight, kg, round=False)
else:
weight = UoM.compute_qty(
shipment.weight_uom, shipment.weight, kg, round=False)
return {
'carrier': shipment.carrier.id if shipment.carrier else None,
'weight': weight,
}
@sendcloud_api
def get_parcel(self, id):
timeout = config.getfloat(
'stock_package_shipping_sendcloud', 'requests_timeout',
default=300)
response = requests.get(
SENDCLOUD_API_URL + 'parcels/%s' % id,
auth=self.auth, timeout=timeout, headers=HEADERS)
response.raise_for_status()
return response.json()['parcel']
@sendcloud_api
def create_parcels(self, parcels):
timeout = config.getfloat(
'stock_package_shipping_sendcloud', 'requests_timeout',
default=300)
response = requests.post(
SENDCLOUD_API_URL + 'parcels', json={'parcels': parcels},
auth=self.auth, timeout=timeout, headers=HEADERS)
if response.status_code == 400:
msg = response.json()['error']['message']
raise requests.HTTPError(msg, response=response)
response.raise_for_status()
return response.json()['parcels']
@sendcloud_api
def get_label(self, url):
timeout = config.getfloat(
'stock_package_shipping_sendcloud', 'requests_timeout',
default=300)
response = requests.get(
url, auth=self.auth, timeout=timeout, headers=HEADERS)
response.raise_for_status()
return response.content
@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() & {'public_key', 'secret_key'}):
warning_name = Warning.format(
'sendcloud_credential', credentials)
if Warning.check(warning_name):
raise SendcloudCredentialWarning(
warning_name,
gettext('stock_package_shipping_sendcloud'
'.msg_sendcloud_credential_modified'))
class SendcloudAddress(sequence_ordered(), ModelSQL, ModelView, MatchMixin):
__name__ = 'carrier.sendcloud.address'
sendcloud = fields.Many2One(
'carrier.credential.sendcloud', "Sendcloud", required=True)
warehouse = fields.Many2One(
'stock.location', "Warehouse",
domain=[
('type', '=', 'warehouse'),
])
address = fields.Selection(
'get_addresses', "Address",
help="Leave empty for the Sendcloud default.")
@fields.depends('sendcloud', '_parent_sendcloud.id')
def get_addresses(self):
addresses = [('', "")]
if (self.sendcloud
and self.sendcloud.id is not None
and self.sendcloud.id >= 0):
for address in self.sendcloud.addresses_sender:
addresses.append(
(str(address['id']), self._format_address(address)))
return addresses
@classmethod
def _format_address(cls, address):
return ', '.join(
filter(None, [
address.get('company_name'),
address.get('street'),
address.get('house_number'),
address.get('postal_code'),
address.get('city'),
address.get('country')]))
class SendcloudShippingMethod(
sequence_ordered(), ModelSQL, ModelView, MatchMixin):
__name__ = 'carrier.sendcloud.shipping_method'
sendcloud = fields.Many2One(
'carrier.credential.sendcloud', "Sendcloud", required=True)
carrier = fields.Many2One(
'carrier', "Carrier",
domain=[
('shipping_service', '=', 'sendcloud'),
])
warehouse = fields.Many2One(
'stock.location', "Warehouse",
domain=[
('type', '=', 'warehouse'),
])
min_weight = fields.Float(
"Minimal Weight",
domain=[
['OR',
('min_weight', '=', None),
('min_weight', '>', 0),
],
If(Eval('max_weight', 0),
('min_weight', '<=', Eval('max_weight', 0)),
()),
],
help="Minimal weight included in kg.")
max_weight = fields.Float(
"Maximal Weight",
domain=[
['OR',
('max_weight', '=', None),
('max_weight', '>', 0),
],
If(Eval('min_weight', 0),
('max_weight', '>=', Eval('min_weight', 0)),
()),
],
help="Maximal weight included in kg.")
shipping_method = fields.Selection(
'get_shipping_methods', "Shipping Method")
@fields.depends('sendcloud', 'warehouse', '_parent_sendcloud.id')
def get_shipping_methods(self, pattern=None):
methods = [(None, '')]
if (self.sendcloud
and self.sendcloud.id is not None
and self.sendcloud.id >= 0):
if self.warehouse:
sender_address = self.sendcloud.get_sender_address(
self.warehouse, pattern=pattern)
else:
sender_address = None
methods += [
(str(m['id']), m['name'])
for m in self.sendcloud.get_shipping_methods(
sender_address=sender_address)]
return methods
def match(self, pattern, match_none=False):
pattern = pattern.copy()
if (weight := pattern.pop('weight')) is not None:
min_weight = self.min_weight or 0
max_weight = self.max_weight or weight
if not (min_weight <= weight <= max_weight):
return False
return super().match(pattern, match_none=match_none)
class Carrier(metaclass=PoolMeta):
__name__ = 'carrier'
sendcloud_format = fields.Selection([
('normal 0', "A4 - Top left"),
('normal 1', "A4 - Top right"),
('normal 2', "A4 - Bottom left"),
('normal 3', "A4 - Bottom right"),
('label', "A6 - Full page"),
], "Format",
states={
'invisible': Eval('shipping_service') != 'sendcloud',
'required': Eval('shipping_service') == 'sendcloud',
})
@classmethod
def __setup__(cls):
super().__setup__()
cls.shipping_service.selection.append(('sendcloud', "Sendcloud"))
@classmethod
def default_sendcloud_format(cls):
return 'label'
@classmethod
def view_attributes(cls):
return super().view_attributes() + [
("/form/separator[@id='sendcloud']", 'states', {
'invisible': Eval('shipping_service') != 'sendcloud',
}),
]
@property
def shipping_label_mimetype(self):
mimetype = super().shipping_label_mimetype
if self.shipping_service == 'sendcloud':
mimetype = 'application/pdf'
return mimetype

View File

@@ -0,0 +1,113 @@
<?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="credential_view_form">
<field name="model">carrier.credential.sendcloud</field>
<field name="type">form</field>
<field name="name">credential_form</field>
</record>
<record model="ir.ui.view" id="credential_view_list">
<field name="model">carrier.credential.sendcloud</field>
<field name="type">tree</field>
<field name="name">credential_list</field>
</record>
<record model="ir.action.act_window" id="act_credential_form">
<field name="name">Sendcloud Credentials</field>
<field name="res_model">carrier.credential.sendcloud</field>
</record>
<record model="ir.action.act_window.view" id="act_credential_form_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="credential_view_list"/>
<field name="act_window" ref="act_credential_form"/>
</record>
<record model="ir.action.act_window.view" id="act_credential_form_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="credential_view_form"/>
<field name="act_window" ref="act_credential_form"/>
</record>
<menuitem
parent="carrier.menu_configuration"
action="act_credential_form"
sequence="20"
id="menu_credential_form"/>
<record model="ir.model.access" id="access_credential">
<field name="model">carrier.credential.sendcloud</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.sendcloud</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>
<record model="ir.ui.view" id="carrier_address_view_form">
<field name="model">carrier.sendcloud.address</field>
<field name="type">form</field>
<field name="name">carrier_address_form</field>
</record>
<record model="ir.ui.view" id="carrier_address_view_list">
<field name="model">carrier.sendcloud.address</field>
<field name="type">tree</field>
<field name="name">carrier_address_list</field>
</record>
<record model="ir.model.access" id="access_carrier_address">
<field name="model">carrier.sendcloud.address</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_address_carrier_admin">
<field name="model">carrier.sendcloud.address</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>
<record model="ir.ui.view" id="carrier_shipping_method_view_form">
<field name="model">carrier.sendcloud.shipping_method</field>
<field name="type">form</field>
<field name="name">carrier_shipping_method_form</field>
</record>
<record model="ir.ui.view" id="carrier_shipping_method_view_list">
<field name="model">carrier.sendcloud.shipping_method</field>
<field name="type">tree</field>
<field name="name">carrier_shipping_method_list</field>
</record>
<record model="ir.model.access" id="access_carrier_shipping_method">
<field name="model">carrier.sendcloud.shipping_method</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_shipping_method_carrier_admin">
<field name="model">carrier.sendcloud.shipping_method</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>
<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>
</data>
</tryton>

View 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 SendcloudError(UserError):
pass
class SendcloudCredentialWarning(UserWarning):
pass

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,157 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr "Format"
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr "Adreces"
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr "Clau pública"
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr "Clau secreta"
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr "Mètodes"
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr "Adreça"
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr "Magatzem"
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr "Transportista"
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr "Pes màxim"
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr "Pes mínim"
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr "Mètode d'enviament"
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr "Magatzem"
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr "ID"
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr "URL de seguiment"
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr "Deixar buit per al valor per defecte de Sendcloud."
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr "Pes màxim inclòs en kg."
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr "Pes mínim inclòs en kg."
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr "Credencial transportista Sendcloud"
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr "Adreça del transportista Sendcloud"
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr "Mètode d'enviament Sendcloud"
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr "Crear enviament Sendcloud pels paquets"
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr "Credencials Sendcloud"
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr "Estàs segur que vols modificar les credencials de Sendcloud?"
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud webservice call failed with the following error message:\n"
"%(message)s"
msgstr ""
"La trucada del servei web Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
"No podeu crear una etiqueta d'enviament per l'albarà \"%(shipment)s\" perquè"
" ja té un número de referència de l'enviament."
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr "Credencials Sendcloud"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr "A4 - A baix a l'esquerra"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr "A4 - A baix a la dreta"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr "A4 - A dalt a l'esquerra"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr "A4 - A dalt a la dreta"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr "A6 - Pàgina completa"
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr "Sendcloud"

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,157 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr "Format"
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr "Adressen"
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr "Unternehmen"
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr "Öffentlicher Schlüssel"
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr "Geheimer Schlüssel"
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr "Methoden"
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr "Adresse"
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr "Logistikstandort"
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr "Versanddienstleister"
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr "Maximalgewicht"
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr "Minimalgewicht"
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr "Versandart"
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr "Logistikstandort"
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr "ID"
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr "Tracking-URL"
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr "Leer lassen für Sendcloud Standard."
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr "Maximal zulässiges Gewicht in kg."
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr "Minimal zulässiges Gewicht in kg."
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr "Versanddienstleister Anmeldedaten Sendcloud"
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr "Versanddienstleister Sendcloud Adresse"
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr "Versanddienstleister Sendcloud Versandart"
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr "Sendcloud Versandauftrag für Pakete erstellen"
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr "Sendcloud Anmeldedaten"
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr "Möchten Sie die Sendcloud-Anmeldeinformationen wirklich ändern?"
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud webservice call failed with the following error message:\n"
"%(message)s"
msgstr ""
"Beim Aufruf des Sendcloud Webservice ist folgender Fehler aufgetreten:\n"
"%(message)s"
#, python-format
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
msgid ""
"You cannot create a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
"Es kann kein Versandetikett für die Lieferung \"%(shipment)s\" erstellt "
"werden, weil bereits eine Versandreferenznummer vorhanden ist."
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr "Sendcloud Anmeldedaten"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr "A4 - Unten links"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr "A4 - Unten rechts"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr "A4 - Oben links"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr "A4 - Oben rechts"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr "A6 - Ganze Seite"
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr "Sendcloud"

View File

@@ -0,0 +1,157 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr "Formato"
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr "Direcciones"
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr "Clave pública"
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr "Clave secreta"
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr "Métodos"
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr "Dirección"
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr "Almacén"
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr "Transportista"
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr "Peso máximo"
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr "Peso mínimo"
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr "Método de envío"
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr "Almacén"
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr "ID"
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr "URL Seguimiento"
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr "Dejar vacío para el valor por defecto de Sendcloud."
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr "Peso máximo incluido en kg."
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr "Peso mínimo incluido en kg."
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr "Credenciales transportista Sendcloud"
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr "Dirección transportista Sendcloud"
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr "Método de envío Sendcloud"
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr "Crear envío Sendcloud para paquetes"
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr "Credenciales Sendcloud"
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr "¿Está seguro de que desea modificar las credenciales de Sendcloud?"
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud webservice call failed with the following error message:\n"
"%(message)s"
msgstr ""
"La llamada al servicio web de Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
"No puedes crear una etiqueta de envío para el albarán \"%(shipment)s\" "
"porque ya tiene un número de referencia del envío."
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr "Credenciales Sendcloud"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr "A4 - Abajo a la izquierda"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr "A4 - Abajo a la derecha"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr "A4 - Arriba a la izquierda"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr "A4 - Arriba a la derecha"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr "A6 - Página completa"
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr "Sendcloud"

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,159 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr "Format"
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr "Adresses"
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr "Société"
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr "Clé publique"
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr "Clé secrète"
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr "Méthodes"
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr "Adresse"
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr "Entrepôt"
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr "Transporteur"
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr "Poids maximal"
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr "Poids minimal"
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr "Méthode d'expédition"
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr "Entrepôt"
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr "ID"
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr "URL de suivi"
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr "Laissez vide pour la valeur par défaut de Sendcloud."
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr "Poids maximal inclus en kg."
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr "Poids minimum inclus en kg."
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr "Identifiant du transporteur Sendcloud"
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr "Adresse du transporteur Sendcloud"
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr "Méthode d'expédition du transporteur Sendcloud"
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr "Créer la livraison Sendcloud pour les emballages"
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr "Identifiants Sendcloud"
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
"Êtes-vous sûr de vouloir modifier les informations d'identification de "
"Sendcloud ?"
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud webservice call failed with the following error message:\n"
"%(message)s"
msgstr ""
"L'appel au service web de Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
"Vous ne pouvez pas créer d'étiquette de livraison pour l'expédition "
"« %(shipment)s » car elle a déjà un numéro de référence de livraison."
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr "Identifiants Sendcloud"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr "A4 - En bas à gauche"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr "A4 - En bas à droite"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr "A4 - En haut à gauche"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr "A4 - En haut à droite"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr "A6 - Pleine page"
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr "Sendcloud"

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr "Perusahaan"
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr "Alamat"
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,160 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr "Formato"
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr "Indirizzi"
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr "Azienda"
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr "Chiave pubblica"
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr "Chiave segreta"
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr "Metodi"
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr "Indirizzo"
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr "Magazzino"
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr "Vettore"
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr "Metodo di spedizione"
#, fuzzy
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr "Magazzino"
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr "ID"
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr "URL di tracciamento"
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr "Lascia vuoto per l'impostazione predefinita di Sendcloud."
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
#, fuzzy
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr "Indirizzo Sendcloud"
#, fuzzy
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr "Metodo di spedizione Sendcloud"
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr "Crea spedizione Sendcloud per i pacchi"
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr "Credenziali Sendcloud"
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud webservice call failed with the following error message:\n"
"%(message)s"
msgstr ""
"La chiamata al servizio web Sendcloud non è fallita con il seguente messaggio di errore:\n"
"%(message)s"
#, python-format
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
msgid ""
"You cannot create a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
"Non puoi creare un'etichetta di spedizione per la spedizione "
"\"%(shipment)s\" perché ha già un numero di riferimento."
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr "Credenziali Sendcloud"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr "A4 - In basso a sinistra"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr "A4 - In basso a destra"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr "A4 - In alto a sinistra"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr "A4 - In alto a destra"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr "A6 - Pagina intera"
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr "Sendcloud"

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,157 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr "Formaat"
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr "Adressen"
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr "Bedrijf"
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr "Publieke sleutel"
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr "Geheime sleutel"
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr "Methodes"
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr "Adres"
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr "Magazijn"
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr "Transporteur"
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr "Maximaal gewicht"
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr "Minimaal gewicht"
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr "Verzendwijze"
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr "Magazijn"
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr "ID"
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr "Tracking-URL"
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr "Laat leeg voor de Sendcloud-standaard."
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr "Maximaal inbegrepen gewicht in kg."
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr "Minimaal inbegrepen gewicht in kg."
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr "Transporteur aanmeldgegevens Sendcloud"
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr "Transporteur Sendcloud adres"
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr "Transporteur Sendcloud verzendmethode"
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr "Creëer Sendcloud-verzending voor pakketten"
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr "Sendcloud-referentie"
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr "Weet u zeker dat u de inloggegevens bij Sendcloud wilt wijzigen?"
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud webservice call failed with the following error message:\n"
"%(message)s"
msgstr ""
"Bij het oproepen van de Sendcloud webservice is volgende fout opgetreden:\n"
"%(message)s"
#, python-format
msgctxt "model:ir.message,text:msg_shipment_has_shipping_reference_number"
msgid ""
"You cannot create a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
"U kunt geen verzendlabel maken voor verzending \"%(shipment)s\", omdat deze "
"al een referentienummer heeft."
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr "Sendcloud-referentie"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr "A4 - Linksonder"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr "A4 - Rechtsonder"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr "A4 - Linksboven"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr "A4 - Rechtsboven"
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr "A6 - Volledige pagina"
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr "Sendcloud"
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr "Sendcloud"

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,155 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
"Nu se poate crea o eticheta pentru expedierea \"%(shipment)s\" pentru că are"
" deja un număr de referinţa."
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View File

@@ -0,0 +1,153 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:carrier,sendcloud_format:"
msgid "Format"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,addresses:"
msgid "Addresses"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,company:"
msgid "Company"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,public_key:"
msgid "Public Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,secret_key:"
msgid "Secret Key"
msgstr ""
msgctxt "field:carrier.credential.sendcloud,shipping_methods:"
msgid "Methods"
msgstr ""
msgctxt "field:carrier.sendcloud.address,address:"
msgid "Address"
msgstr ""
msgctxt "field:carrier.sendcloud.address,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.address,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,carrier:"
msgid "Carrier"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal Weight"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,sendcloud:"
msgid "Sendcloud"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,shipping_method:"
msgid "Shipping Method"
msgstr ""
msgctxt "field:carrier.sendcloud.shipping_method,warehouse:"
msgid "Warehouse"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_id:"
msgid "ID"
msgstr ""
msgctxt "field:stock.package,sendcloud_shipping_tracking_url:"
msgid "Tracking URL"
msgstr ""
msgctxt "help:carrier.sendcloud.address,address:"
msgid "Leave empty for the Sendcloud default."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,max_weight:"
msgid "Maximal weight included in kg."
msgstr ""
msgctxt "help:carrier.sendcloud.shipping_method,min_weight:"
msgid "Minimal weight included in kg."
msgstr ""
msgctxt "model:carrier.credential.sendcloud,string:"
msgid "Carrier Credential Sendcloud"
msgstr ""
msgctxt "model:carrier.sendcloud.address,string:"
msgid "Carrier Sendcloud Address"
msgstr ""
msgctxt "model:carrier.sendcloud.shipping_method,string:"
msgid "Carrier Sendcloud Shipping Method"
msgstr ""
msgctxt "model:ir.action,name:act_create_shipping_wizard"
msgid "Create Sendcloud Shipping for Packages"
msgstr ""
msgctxt "model:ir.action,name:act_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "model:ir.message,text:msg_sendcloud_credential_modified"
msgid "Are you sure you want to modify Sendcloud credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_sendcloud_webserver_error"
msgid ""
"Sendcloud 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 a shipping label for shipment \"%(shipment)s\" because it "
"already has a shipping reference number."
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_credential_form"
msgid "Sendcloud Credentials"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Bottom right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top left"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A4 - Top right"
msgstr ""
msgctxt "selection:carrier,sendcloud_format:"
msgid "A6 - Full page"
msgstr ""
msgctxt "selection:carrier,shipping_service:"
msgid "Sendcloud"
msgstr ""
msgctxt "view:carrier:"
msgid "Sendcloud"
msgstr ""

View 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. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="msg_sendcloud_credential_modified">
<field name="text">Are you sure you want to modify Sendcloud credentials?</field>
</record>
<record model="ir.message" id="msg_sendcloud_webserver_error">
<field name="text">Sendcloud webservice call failed with the following error message:
%(message)s</field>
</record>
<record model="ir.message" id="msg_shipment_has_shipping_reference_number">
<field name="text">You cannot create a shipping label for shipment "%(shipment)s" because it already has a shipping reference number.</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,336 @@
# 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 decimal import Decimal
from itertools import zip_longest
from math import ceil
from trytond.i18n import gettext
from trytond.model import fields
from trytond.model.exceptions import AccessError
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
class Package(metaclass=PoolMeta):
__name__ = 'stock.package'
sendcloud_shipping_id = fields.Integer("ID", readonly=True)
sendcloud_shipping_tracking_url = fields.Char(
"Tracking URL", readonly=True)
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 == 'sendcloud'):
url = self.sendcloud_shipping_tracking_url
return url
@classmethod
def copy(cls, packages, default=None):
if default is None:
default = {}
else:
default = default.copy()
default.setdefault('sendcloud_shipping_id')
default.setdefault('sendcloud_shipping_tracking_url')
return super().copy(packages, default=default)
class ShippingSendcloudMixin:
__slots__ = ()
def get_sendcloud_credential(self):
pool = Pool()
SendcloudCredential = pool.get('carrier.credential.sendcloud')
pattern = self._get_sendcloud_credential_pattern()
for credential in SendcloudCredential.search([]):
if credential.match(pattern):
return credential
def _get_sendcloud_credential_pattern(self):
return {
'company': self.company.id,
}
def validate_packing_sendcloud(self):
pass
class ShipmentOut(ShippingSendcloudMixin, metaclass=PoolMeta):
__name__ = 'stock.shipment.out'
class ShipmentInReturn(ShippingSendcloudMixin, metaclass=PoolMeta):
__name__ = 'stock.shipment.in.return'
class CreateShipping(metaclass=PoolMeta):
__name__ = 'stock.shipment.create_shipping'
sendcloud = StateAction(
'stock_package_shipping_sendcloud.act_create_shipping_wizard')
def transition_start(self):
next_state = super().transition_start()
if self.record.carrier.shipping_service == 'sendcloud':
next_state = 'sendcloud'
return next_state
def do_sendcloud(self, action):
ctx = Transaction().context
return action, {
'model': ctx['active_model'],
'id': ctx['active_id'],
'ids': [ctx['active_id']],
}
class CreateShippingSendcloud(Wizard):
__name__ = 'stock.shipment.create_shipping.sendcloud'
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_sendcloud'
'.msg_shipment_has_shipping_reference_number',
shipment=shipment.rec_name))
credential = shipment.get_sendcloud_credential()
carrier = shipment.carrier
packages = shipment.root_packages
parcels = []
for package in packages:
parcels.append(self.get_parcel(shipment, package, credential))
parcels = credential.create_parcels(parcels)
for package, parcel in zip_longest(packages, parcels):
format_ = shipment.carrier.sendcloud_format.split()
label_url = parcel['label']
for key in format_:
try:
index = int(key)
except ValueError:
key += '_printer'
label_url = label_url[key]
else:
label_url = label_url[index]
package.sendcloud_shipping_id = parcel['id']
package.shipping_label = credential.get_label(label_url)
package.shipping_label_mimetype = carrier.shipping_label_mimetype
package.shipping_reference = parcel['tracking_number']
package.sendcloud_shipping_tracking_url = parcel['tracking_url']
if not shipment.shipping_reference:
shipment.shipping_reference = (
parcel.get('colli_tracking_number')
or parcel['tracking_number'])
Package.save(packages)
shipment.save()
return 'end'
def get_parcel(self, shipment, package, credential, usage=None):
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'))
party = shipment.shipping_to
address = shipment.shipping_to_address
phone = address.contact_mechanism_get(
{'phone', 'mobile'}, usage=usage)
email = address.contact_mechanism_get('email', usage=usage)
street_lines = (address.street or '').splitlines()
name = address_name(address, party)
company_name = party.full_name if party.full_name != name else None
parcel = {
'name': name,
'company_name': company_name,
'address': street_lines[0] if street_lines else '',
'address_2': (
' '.join(street_lines[1:]) if len(street_lines) > 1 else ''),
'house_number': address.numbers,
'city': address.city,
'postal_code': address.postal_code,
'country': address.country.code if address.country else None,
'country_state': (
address.subdivision.code.split('-', 1)[1]
if address.subdivision else None),
'telephone': phone.value if phone else None,
'email': email.value if email else None,
'sender_address': credential.get_sender_address(shipment),
'external_reference': '/'.join([shipment.number, package.number]),
'quantity': 1,
'order_number': shipment.number,
'request_label': True,
}
if address.post_box:
parcel['to_post_number'] = address.post_box
if package.total_weight is not None:
parcel['weight'] = ceil(
UoM.compute_qty(
package.weight_uom, package.total_weight, kg, round=False)
* 100) / 100
if (package.length is not None
and package.width is not None
and package.height is not None):
parcel.update(
length=ceil(
UoM.compute_qty(
package.length_uom, package.length, cm, round=False)
* 100) / 100,
width=ceil(
UoM.compute_qty(
package.width_uom, package.width, cm, round=False)
* 100) / 100,
height=ceil(
UoM.compute_qty(
package.height_uom, package.height, cm, round=False)
* 100) / 100)
shipping_method = credential.get_shipping_method(
shipment, package=package)
if shipping_method:
parcel['shipment'] = {'id': shipping_method}
else:
parcel['apply_shipping_rules'] = True
return parcel
class CreateShippingSendcloud_Customs(metaclass=PoolMeta):
__name__ = 'stock.shipment.create_shipping.sendcloud'
def get_parcel(self, shipment, package, credential, usage=None):
parcel = super().get_parcel(shipment, package, credential, usage=usage)
if shipment.customs_international:
parcel['customs_invoice_nr'] = shipment.number
parcel['customs_shipment_type'] = self.get_customs_shipment_type(
shipment, credential)
parcel['export_type'] = self.get_export_type(shipment, credential)
if description := shipment.shipping_description_used:
parcel['general_notes'] = description[:500]
parcel['tax_numbers'] = {
'sender': list(self.get_tax_numbers(
shipment, shipment.company.party, credential)),
'receiver': list(self.get_tax_numbers(
shipment, shipment.shipping_to, credential)),
}
if shipment.customs_agent:
parcel['importer_of_record'] = self.get_importer_of_record(
shipment, shipment.customs_agent, credential)
parcel['tax_numbers']['importer_of_record'] = list(
self.get_tax_numbers(
shipment, shipment.customs_agent.party, credential))
parcel_items = []
for k, v in shipment.customs_products.items():
parcel_items.append(self.get_parcel_item(shipment, *k, **v))
parcel['parcel_items'] = parcel_items
return parcel
def get_customs_shipment_type(self, shipment, credential):
return {
'stock.shipment.out': 2,
'stock.shipment.in.return': 4,
}.get(shipment.__class__.__name__)
def get_export_type(self, shipment, credential):
if shipment.shipping_to.tax_identifier:
return 'commercial_b2b'
else:
return 'commercial_b2c'
def get_importer_of_record(
self, shipment, customs_agent, credential, usage=None):
address = customs_agent.address
phone = address.contact_mechanism_get(
{'phone', 'mobile'}, usage=usage)
email = address.contact_mechanism_get('email', usage=usage)
street_lines = (address.street or '').splitlines()
return {
'name': customs_agent.party.full_name[:75],
'address_1': street_lines[0] if street_lines else '',
'address_2': street_lines[1] if len(street_lines) > 1 else '',
'house_number': None, # TODO
'city': address.city,
'postal_code': address.postal_code,
'country_code': address.country.code if address.country else None,
'country_state': (
address.subdivision.split('-', 1)[1]
if address.subdivision else None),
'telephone': phone.value if phone else None,
'email': email.value if email else None,
}
def get_tax_numbers(self, shipment, party, credential):
for tax_identifier in party.identifiers:
if tax_identifier.type == 'br_vat':
yield {
'name': 'CNP',
'country_code': 'BR',
'value': tax_identifier.code[:100],
}
elif tax_identifier.type == 'ru_vat':
yield {
'name': 'INN',
'country_code': 'RU',
'value': tax_identifier.code[:100],
}
elif tax_identifier.type == 'eu_vat':
yield {
'name': 'VAT',
'country_code': tax_identifier.code[:2],
'value': tax_identifier.code[2:][:100],
}
elif tax_identifier.type.endswith('_vat'):
yield {
'name': 'VAT',
'country_code': tax_identifier.type[:2].upper(),
'value': tax_identifier.code[:100],
}
elif tax_identifier.type in {'us_ein', 'us_ssn'}:
country, name = tax_identifier.type.upper().split('_')
yield {
'name': name,
'country_code': country,
'value': tax_identifier.code[:100],
}
def get_parcel_item(
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),
})
if not quantity.is_integer():
value = price * Decimal(str(quantity))
quantity = 1
else:
value = price
return {
'hs_code': tariff_code.code if tariff_code else None,
'weight': weight,
'quantity': quantity,
'description': product.name[:255],
'origin_country': (
product.country_of_origin.code if product.country_of_origin
else None),
'value': float(value.quantize(Decimal('.01'))),
'product_id': product.code,
}

View 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_wizard">
<field name="name">Create Sendcloud Shipping for Packages</field>
<field name="wiz_name">stock.shipment.create_shipping.sendcloud</field>
</record>
</data>
</tryton>

View 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.

View File

@@ -0,0 +1,230 @@
=========================================
Stock Package Shipping Sendcloud Scenario
=========================================
Imports::
>>> import os
>>> from decimal import Decimal
>>> from random import randint
>>> import requests
>>> 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 (
... set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company, get_company
>>> from trytond.modules.stock_package_shipping_sendcloud.carrier import (
... SENDCLOUD_API_URL)
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... ['stock_package_shipping_sendcloud', 'sale', 'sale_shipment_cost'],
... create_company, create_chart)
>>> Address = Model.get('party.address')
>>> Carrier = Model.get('carrier')
>>> CarrierAddress = Model.get('carrier.sendcloud.address')
>>> CarrierShippingMethod = Model.get('carrier.sendcloud.shipping_method')
>>> Country = Model.get('country.country')
>>> Credential = Model.get('carrier.credential.sendcloud')
>>> Location = Model.get('stock.location')
>>> Package = Model.get('stock.package')
>>> PackageType = Model.get('stock.package.type')
>>> Party = Model.get('party.party')
>>> ProductCategory = Model.get('product.category')
>>> ProductTemplate = Model.get('product.template')
>>> ProductUoM = Model.get('product.uom')
>>> Sale = Model.get('sale.sale')
>>> StockConfiguration = Model.get('stock.configuration')
>>> UoM = Model.get('product.uom')
Get company::
>>> company = get_company()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear())
>>> fiscalyear.click('create_period')
Get accounts::
>>> accounts = get_accounts()
Set random sequence::
>>> stock_config = StockConfiguration(1)
>>> stock_config.shipment_out_sequence.number_next = randint(1, 10**6)
>>> stock_config.shipment_out_sequence.save()
>>> stock_config.package_sequence.number_next = randint(1, 10**6)
>>> stock_config.package_sequence.save()
Create parties::
>>> belgium = Country(code='BE', name='Belgium')
>>> belgium.save()
>>> france = Country(code='FR', name='France')
>>> subdivision = france.subdivisions.new()
>>> subdivision.name = "Paris"
>>> subdivision.code = 'FR-75'
>>> subdivision.type = 'metropolitan department'
>>> 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.subdivision = france.subdivisions[0]
>>> customer_address.save()
>>> customer_phone = customer.contact_mechanisms.new()
>>> customer_phone.type = 'phone'
>>> customer_phone.value = '+33938428862'
>>> customer_phone.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 = '+3242522122'
>>> company_phone.save()
>>> warehouse.address = company_address
>>> warehouse.save()
Get some units::
>>> cm, = UoM.find([('symbol', '=', 'cm')])
>>> g, = UoM.find([('symbol', '=', 'g')])
Create account category::
>>> account_category = ProductCategory(name="Account Category")
>>> account_category.accounting = True
>>> account_category.account_expense = accounts['expense']
>>> account_category.account_revenue = accounts['revenue']
>>> account_category.save()
Create product::
>>> unit, = ProductUoM.find([('name', '=', 'Unit')])
>>> 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 Package Type::
>>> box = PackageType(
... name="Box",
... length=10, length_uom=cm,
... height=8, height_uom=cm,
... width=1, width_uom=cm)
>>> box.save()
Create a Sendcloud Carrier and the related credentials::
>>> credential = Credential()
>>> credential.company = company
>>> credential.public_key = os.getenv('SENDCLOUD_PUBLIC_KEY')
>>> credential.secret_key = os.getenv('SENDCLOUD_SECRET_KEY')
>>> credential.save()
>>> address = credential.addresses.new()
>>> address.warehouse = warehouse
>>> address.address = CarrierAddress.get_addresses(
... {'id': address.id, 'sendcloud': {'id': credential.id}},
... address._context)[-1][0]
>>> shipping_method = credential.shipping_methods.new()
>>> shipping_method.shipping_method, = [
... m[0] for m in CarrierShippingMethod.get_shipping_methods(
... {'id': shipping_method.id, 'sendcloud': {'id': credential.id}},
... shipping_method._context)
... if m[1] == "Unstamped letter"]
>>> credential.save()
>>> template = ProductTemplate()
>>> template.name = "Sendcloud"
>>> template.default_uom = unit
>>> template.type = 'service'
>>> template.salable = True
>>> template.list_price = Decimal(20)
>>> template.account_category = account_category
>>> template.save()
>>> carrier_product, = template.products
>>> sendcloud = Party(name="Sendcloud")
>>> sendcloud.save()
>>> carrier = Carrier()
>>> carrier.party = sendcloud
>>> carrier.carrier_product = carrier_product
>>> carrier.shipping_service = 'sendcloud'
>>> carrier.save()
Create a sale and thus a shipment::
>>> sale = Sale()
>>> sale.party = customer
>>> sale.shipment_address = customer_address
>>> 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 packages and ship the shipment::
>>> shipment, = sale.shipments
>>> shipment.click('assign_force')
>>> 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
>>> bool(pack.sendcloud_shipping_id)
True
>>> pack.shipping_label is not None
True
>>> pack.shipping_label_mimetype
'application/pdf'
>>> pack.shipping_reference is not None
True
>>> pack.shipping_tracking_url
'http...'
Clean up::
>>> _ = requests.post(
... SENDCLOUD_API_URL + 'parcels/%s/cancel' % pack.sendcloud_shipping_id,
... auth=(credential.public_key, credential.secret_key))

View File

@@ -0,0 +1,221 @@
=======================================================
Stock Package Shipping Sendcloud International Scenario
=======================================================
Imports::
>>> import os
>>> from decimal import Decimal
>>> from random import randint
>>> import requests
>>> from proteus import Model
>>> from trytond.modules.company.tests.tools import create_company, get_company
>>> from trytond.modules.stock_package_shipping_sendcloud.carrier import (
... SENDCLOUD_API_URL)
>>> from trytond.tests.tools import activate_modules, assertEqual
Activate modules::
>>> config = activate_modules(
... ['stock_package_shipping_sendcloud', 'stock_shipment_customs'],
... create_company)
>>> Address = Model.get('party.address')
>>> Agent = Model.get('customs.agent')
>>> AgentSelection = Model.get('customs.agent.selection')
>>> Carrier = Model.get('carrier')
>>> CarrierAddress = Model.get('carrier.sendcloud.address')
>>> CarrierShippingMethod = Model.get('carrier.sendcloud.shipping_method')
>>> Country = Model.get('country.country')
>>> Credential = Model.get('carrier.credential.sendcloud')
>>> 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')
>>> StockConfiguration = Model.get('stock.configuration')
>>> TariffCode = Model.get('customs.tariff.code')
>>> UoM = Model.get('product.uom')
Get company::
>>> company = get_company()
Set random sequence::
>>> stock_config = StockConfiguration(1)
>>> stock_config.shipment_out_sequence.number_next = randint(1, 10**6)
>>> stock_config.shipment_out_sequence.save()
>>> stock_config.package_sequence.number_next = randint(1, 10**6)
>>> stock_config.package_sequence.save()
Create countries::
>>> belgium = Country(code='BE', name='Belgium')
>>> belgium.save()
>>> switzerland = Country(code='CH', name="Switerland")
>>> switzerland.save()
>>> taiwan = Country(code='TW', 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 = "+41414106266"
>>> 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_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 = '+3242522122'
>>> 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='170390')
>>> tariff_code.save()
Create product::
>>> template = ProductTemplate()
>>> template.name = "Product"
>>> template.code = 'P001'
>>> 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=1, width_uom=cm)
>>> box.save()
Create a Sendcloud Carrier and the related credentials::
>>> credential = Credential()
>>> credential.company = company
>>> credential.public_key = os.getenv('SENDCLOUD_PUBLIC_KEY')
>>> credential.secret_key = os.getenv('SENDCLOUD_SECRET_KEY')
>>> credential.save()
>>> address = credential.addresses.new()
>>> address.warehouse = warehouse
>>> address.address = CarrierAddress.get_addresses(
... {'id': address.id, 'sendcloud': {'id': credential.id}},
... address._context)[-1][0]
>>> shipping_method = credential.shipping_methods.new()
>>> shipping_method.shipping_method, = [
... m[0] for m in CarrierShippingMethod.get_shipping_methods(
... {'id': shipping_method.id, 'sendcloud': {'id': credential.id}},
... shipping_method._context)
... if m[1] == "Unstamped letter"]
>>> credential.save()
>>> carrier_product_template = ProductTemplate()
>>> carrier_product_template.name = "Sendcloud"
>>> 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
>>> sendcloud = Party(name="Sendcloud")
>>> sendcloud.save()
>>> carrier = Carrier()
>>> carrier.party = sendcloud
>>> carrier.carrier_product = carrier_product
>>> carrier.shipping_service = 'sendcloud'
>>> carrier.save()
Create a shipment::
>>> shipment = Shipment()
>>> shipment.customer = customer
>>> shipment.carrier = carrier
>>> shipment.shipping_description = "Shipping description"
>>> 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
Clean up::
>>> _ = requests.post(
... SENDCLOUD_API_URL + 'parcels/%s/cancel' % pack.sendcloud_shipping_id,
... auth=(credential.public_key, credential.secret_key))

View 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 StockPackageShippingSendcloudTestCase(ModuleTestCase):
'Test Stock Package Shipping Sendcloud module'
module = 'stock_package_shipping_sendcloud'
del ModuleTestCase

View File

@@ -0,0 +1,17 @@
# 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('SENDCLOUD_PUBLIC_KEY')
and os.getenv('SENDCLOUD_SECRET_KEY'))):
kwargs.setdefault('skips', set()).update([
'scenario_stock_package_shipping_sendcloud.rst',
'scenario_stock_package_shipping_sendcloud_international.rst',
])
return load_doc_tests(__name__, __file__, *args, **kwargs)

View File

@@ -0,0 +1,37 @@
[tryton]
version=7.8.0
depends:
carrier
company
ir
party
product
stock
stock_shipment_measurements
stock_package
stock_package_shipping
extras_depend:
incoterm
stock_shipment_customs
xml:
carrier.xml
stock.xml
message.xml
[register]
model:
carrier.CredentialSendcloud
carrier.SendcloudAddress
carrier.SendcloudShippingMethod
carrier.Carrier
stock.Package
wizard:
stock.CreateShipping
stock.CreateShippingSendcloud
[register stock_shipment_customs]
wizard:
stock.CreateShippingSendcloud_Customs
[register_mixin]
stock.ShippingSendcloudMixin: trytond.modules.stock_package_shipping.stock.ShippingMixin

View File

@@ -0,0 +1,14 @@
<?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="warehouse">
<label name="sendcloud"/>
<field name="sendcloud"/>
<label name="sequence"/>
<field name="sequence"/>
<label name="warehouse"/>
<field name="warehouse"/>
<label name="address"/>
<field name="address"/>
</form>

View File

@@ -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="sendcloud" expand="1"/>
<field name="warehouse" expand="1"/>
<field name="address" expand="2"/>
</tree>

View File

@@ -0,0 +1,10 @@
<?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="Sendcloud" colspan="4" id="sendcloud"/>
<label name="sendcloud_format"/>
<field name="sendcloud_format"/>
</xpath>
</data>

View File

@@ -0,0 +1,22 @@
<?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="warehouse">
<label name="sendcloud"/>
<field name="sendcloud"/>
<label name="sequence"/>
<field name="sequence"/>
<label name="carrier"/>
<field name="carrier"/>
<label name="warehouse"/>
<field name="warehouse"/>
<label name="min_weight"/>
<field name="min_weight"/>
<label name="max_weight"/>
<field name="max_weight"/>
<label name="shipping_method"/>
<field name="shipping_method"/>
</form>

View 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. -->
<tree sequence="sequence">
<field name="sendcloud" expand="1"/>
<field name="carrier" expand="1"/>
<field name="warehouse" expand="1"/>
<field name="min_weight" optional="1"/>
<field name="max_weight" optional="1"/>
<field name="shipping_method" expand="2"/>
</tree>

View File

@@ -0,0 +1,18 @@
<?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="company">
<label name="company"/>
<field name="company"/>
<label name="sequence"/>
<field name="sequence"/>
<label name="public_key"/>
<field name="public_key" colspan="3"/>
<label name="secret_key"/>
<field name="secret_key" colspan="3"/>
<field name="addresses" colspan="4"/>
<field name="shipping_methods" colspan="4"/>
</form>

View File

@@ -0,0 +1,7 @@
<?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="public_key" expand="2"/>
</tree>