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,73 @@
# 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.model import ModelSQL, ValueMixin, fields
from trytond.pool import Pool, PoolMeta
sale_under_shipment_tolerance = fields.Float(
"Sale Under Shipment Tolerance",
help="The lower quantity accepted in percentage.")
sale_over_shipment_tolerance = fields.Float(
"Sale Over Shipment Tolerance",
help="The upper quantity accepted in percentage.")
def default_func(field_name):
@classmethod
def default(cls, **pattern):
return getattr(
cls.multivalue_model(field_name),
'default_%s' % field_name, lambda: None)()
return default
class Configuration(metaclass=PoolMeta):
__name__ = 'sale.configuration'
sale_under_shipment_tolerance = fields.MultiValue(
sale_under_shipment_tolerance)
sale_over_shipment_tolerance = fields.MultiValue(
sale_over_shipment_tolerance)
@classmethod
def multivalue_model(cls, field):
pool = Pool()
if field in {
'sale_under_shipment_tolerance',
'sale_over_shipment_tolerance'}:
return pool.get('sale.configuration.shipment_tolerance')
return super().multivalue_model(field)
default_sale_under_shipment_tolerance = default_func(
'sale_under_shipment_tolerance')
default_sale_over_shipment_tolerance = default_func(
'sale_over_shipment_tolerance')
class ConfigurationShipmentTolerance(ModelSQL, ValueMixin):
__name__ = 'sale.configuration.shipment_tolerance'
sale_under_shipment_tolerance = sale_under_shipment_tolerance
sale_over_shipment_tolerance = sale_over_shipment_tolerance
@classmethod
def __setup__(cls):
super().__setup__()
cls.sale_under_shipment_tolerance.domain = [
'OR',
('sale_under_shipment_tolerance', '=', None),
[
('sale_under_shipment_tolerance', '>=', 0),
('sale_under_shipment_tolerance', '<=', 1),
]]
cls.sale_over_shipment_tolerance.domain = [
'OR',
('sale_over_shipment_tolerance', '=', None),
('sale_over_shipment_tolerance', '>=', 1),
]
@classmethod
def default_sale_under_shipment_tolerance(cls):
return 1
@classmethod
def default_sale_over_shipment_tolerance(cls):
return None

View File

@@ -0,0 +1,12 @@
<?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="sale_configuration_view_form">
<field name="model">sale.configuration</field>
<field name="inherit" ref="sale.sale_configuration_view_form"/>
<field name="name">configuration_form</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,8 @@
# 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 UserWarning
class OverShipmentWarning(UserWarning):
pass

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
#, fuzzy
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,60 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolerància d'enviament excessiu de venda"
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolerància de falta d'enviament de venda"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolerància d'enviament excessiu de venda"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolerància de falta d'enviament de venda"
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "El percentatge de quantitat en excés que s'accepta."
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "El percentatge de quantitat mínim a acceptar com a enviat."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "El percentatge de quantitat en excés que s'accepta."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "El percentatge de quantitat mínim a acceptar com a enviat."
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
"La línia de venda \"%(line)s\" sobrepassa la tolerància d'enviament excessiu"
" (%(shipped)s enviat > %(maximal)s )."
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr "Configuració de la tolerància d'enviament de venda"
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr "Tolerancia d'enviament de venda"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
#, fuzzy
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,60 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Obere Liefertoleranz im Verkauf"
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Untere Liefertoleranz im Verkauf"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Obere Liefertoleranz im Verkauf"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Untere Liefertoleranz im Verkauf"
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "Die Obergrenze der akzeptierten Menge in Prozent."
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "Die Untergrenze der akzeptierten Menge in Prozent."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "Die Obergrenze der akzeptierten Menge in Prozent."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "Die Untergrenze der akzeptierten Menge in Prozent."
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
"Die Verkaufsposition \"%(line)s\" überschreitet die Überlieferungstoleranz "
"(%(shipped)s shipped > %(maximal)s )."
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr "Verkauf Einstellungen Liefertoleranz"
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr "Liefertoleranz im Verkauf"

View File

@@ -0,0 +1,60 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolerancia de envío excesivo de venta"
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolerancia de falta de envío de venta"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolerancia de envío excesivo de venta"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolerancia de falta de envío de venta"
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "El porcentaje de cantidad excesiva que se acepta."
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "El porcentaje de cantidad mínima a aceptar como enviado."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "El porcentaje de cantidad excesiva que se acepta."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "El porcentaje de cantidad mínima a aceptar como enviado."
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
"La línea de venta \"%(line)s\" excede la tolerancia de envío (%(shipped)s "
"enviado > %(maximal)s )."
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr "Configuración de la tolerancia de envío de venta"
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr "Tolerancia de envío de venta"

View File

@@ -0,0 +1,58 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "%"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,58 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "فروش بیشتر از ظرفیت حمل و نقل میباشد"
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "فروش کمتر از ظرفیت حمل و نقل میباشد"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "فروش بیشتر از ظرفیت حمل و نقل میباشد"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "فروش کمتر از ظرفیت حمل و نقل میباشد"
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "درصد بالاترین مقدار پذیرفته شده."
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "درصد پایین ترین مقدار پذیرفته شده."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "درصد بالاترین مقدار پذیرفته شده."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "درصد پایین ترین مقدار پذیرفته شده."
#, fuzzy, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr "سطر فروش : \"%s\" بیشتر از ظرفیت حمل و نقل میباشد."
#, fuzzy
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr "پیکربندی فروش ؛ ظرفیت حمل تحمل"
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr "ظرفیت حمل و نقل فروش"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
#, fuzzy
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,60 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolérance de sur-expédition de vente"
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolérance de sous-expédition de vente"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolérance de sur-expédition de vente"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolérance de sous-expédition de vente"
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "La quantité supérieure acceptée en pourcentage."
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "La quantité inférieure acceptée en pourcentage."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "La quantité supérieure acceptée en pourcentage."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "La quantité inférieure acceptée en pourcentage."
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
"La ligne de vente « %(line)s » dépasse la tolérance de sur-expédition "
"(%(shipped)s expédiés > %(maximal)s)."
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr "Configuration de tolérance d'expédition de vente"
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr "Tolérance d'expédition de vente"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
#, fuzzy
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,58 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,61 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolleranza di sovraspedizione sulla vendita"
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolleranza di sottospedizione sulla vendita"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolleranza di sovraspedizione sulla vendita"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolleranza di sottospedizione sulla vendita"
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "La percentuale della quantità in eccesso accettata."
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "La percentuale minima da accettare come spedito."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "La percentuale della quantità in eccesso accettata."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "La percentuale minima da accettare come spedito."
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
"La riga di vendita \"%(line)s\" supera la tolleranza di spedizione in "
"eccesso (%(shipped)s shipped > %(maximal)s )."
#, fuzzy
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr "Impostazioni di tolleranza della spedizione sulla vendita"
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr "Tolleranza di spedizione sulle vendite"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
#, fuzzy
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
#, fuzzy
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,60 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "verkoop boven verzendingstolerantie"
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Verkoop onder verzendtolerantie"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "verkoop boven verzendingstolerantie"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Verkoop onder verzendtolerantie"
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "De maximaal geaccepteerde hoeveelheid in procent."
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "De minimaal geaccepteerde hoeveelheid in procent."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "De maximaal geaccepteerde hoeveelheid in procent."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "De minimaal geaccepteerde hoeveelheid in procent."
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
"De verkoopregel \"%(line)s\" overschrijdt de tolerantiegrens voor verzending"
" (%(shipped)s shipped > %(maximal)s ).."
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr "Verkoop configuratie verzendtolerantie"
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr "verkoop Verzendtolerantie"

View File

@@ -0,0 +1,58 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,61 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolerância de Carregamento da Remessa de Venda"
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolerância de Falta de Carregamento de Venda"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr "Tolerância de Carregamento da Remessa de Venda"
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr "Tolerância de Falta de Carregamento de Venda"
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "A porcentagem de quantidade excedente aceita."
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "A porcentagem mínima a aceitar como enviado."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr "A porcentagem da quantidade excessiva a ser aceita."
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr "A porcentagem da quantidade mínima a ser aceita como enviado."
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
"A Linha de Venda \"%(line)s\" excedeu a tolerância de carregamento da "
"remessa (%(shipped)s expedido > %(maximal)s )."
#, fuzzy
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr "Configuração da tolerância de remessa de venda"
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr "Tolerância de Remessa de Venda"

View File

@@ -0,0 +1,58 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "%"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
#, fuzzy
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
#, fuzzy
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,58 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,58 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "%"
msgstr ""
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt "field:sale.configuration,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "Sale Over Shipment Tolerance"
msgstr ""
msgctxt ""
"field:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "Sale Under Shipment Tolerance"
msgstr ""
msgctxt "help:sale.configuration,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt "help:sale.configuration,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_over_shipment_tolerance:"
msgid "The upper quantity accepted in percentage."
msgstr ""
msgctxt ""
"help:sale.configuration.shipment_tolerance,sale_under_shipment_tolerance:"
msgid "The lower quantity accepted in percentage."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_over_shipment"
msgid ""
"The sale line \"%(line)s\" exceeds the over shipment tolerance (%(shipped)s "
"shipped > %(maximal)s )."
msgstr ""
msgctxt "model:sale.configuration.shipment_tolerance,string:"
msgid "Sale Configuration Shipment Tolerance"
msgstr ""
#, fuzzy
msgctxt "view:sale.configuration:"
msgid "%"
msgstr "%"
msgctxt "view:sale.configuration:"
msgid "Sale Shipment Tolerance"
msgstr ""

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. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="msg_over_shipment">
<field name="text">The sale line "%(line)s" exceeds the over shipment tolerance (%(shipped)s shipped > %(maximal)s ).</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,72 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.i18n import gettext
from trytond.pool import Pool, PoolMeta
from .exceptions import OverShipmentWarning
class Line(metaclass=PoolMeta):
__name__ = 'sale.line'
def _test_under_shipment_tolerance(self, quantity):
pool = Pool()
Configuration = pool.get('sale.configuration')
if quantity:
config = Configuration(1)
tolerance = config.get_multivalue(
'sale_under_shipment_tolerance', company=self.company.id)
if tolerance is not None:
minimal_quantity = abs(self.quantity * (1 - tolerance))
minimal_quantity = self.unit.round(minimal_quantity)
quantity = self.unit.round(quantity)
return quantity <= minimal_quantity < abs(self.quantity)
return False
@property
def _move_remaining_quantity(self):
quantity = super()._move_remaining_quantity
if self._test_under_shipment_tolerance(quantity):
return 0
return quantity
def get_move(self, shipment_type):
pool = Pool()
Uom = pool.get('product.uom')
move = super().get_move(shipment_type)
# Compute tolerance only if there is already at least one move.
if move and set(self.moves) - set(self.moves_recreated):
quantity = Uom.compute_qty(
move.unit, move.quantity, self.unit, round=False)
if self._test_under_shipment_tolerance(quantity):
move = None
return move
def check_over_shipment(self):
pool = Pool()
Configuration = pool.get('sale.configuration')
Warning = pool.get('res.user.warning')
Lang = pool.get('ir.lang')
config = Configuration(1)
lang = Lang.get()
if self.quantity >= 0:
shipment_type = 'out'
else:
shipment_type = 'in'
shipped_quantity = self._get_shipped_quantity(shipment_type)
tolerance = config.get_multivalue(
'sale_over_shipment_tolerance', company=self.company.id)
if tolerance is not None:
maximal_quantity = abs(self.quantity * tolerance)
if shipped_quantity > maximal_quantity:
name = 'over_shipment_sale_line_%d' % self.id
if Warning.check(name):
raise OverShipmentWarning(
name,
gettext('sale_shipment_tolerance.msg_over_shipment',
line=self.rec_name,
shipped=lang.format_number_symbol(
shipped_quantity, self.unit),
maximal=lang.format_number_symbol(
maximal_quantity, self.unit)))

View File

@@ -0,0 +1,30 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, Workflow
from trytond.pool import Pool, PoolMeta
class Move(metaclass=PoolMeta):
__name__ = 'stock.move'
@classmethod
def check_over_shipment(cls, moves):
pool = Pool()
SaleLine = pool.get('sale.line')
for move in moves:
if isinstance(move.origin, SaleLine):
move.origin.check_over_shipment()
@classmethod
@ModelView.button
@Workflow.transition('done')
def do(cls, moves):
super().do(moves)
cls.check_over_shipment(moves)
@classmethod
@ModelView.button
@Workflow.transition('assigned')
def assign(cls, moves):
super().assign(moves)
cls.check_over_shipment(moves)

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,113 @@
=====================================
Sale Over Shipment Tolerance Scenario
=====================================
Imports::
>>> from decimal import Decimal
>>> from proteus import Model, Wizard
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... 'sale_shipment_tolerance', create_company, create_chart)
Get accounts::
>>> accounts = get_accounts()
>>> revenue = accounts['revenue']
Create parties::
>>> Party = Model.get('party.party')
>>> customer = Party(name='Customer')
>>> customer.save()
Create account category::
>>> ProductCategory = Model.get('product.category')
>>> account_category = ProductCategory(name="Account Category")
>>> account_category.accounting = True
>>> account_category.account_revenue = revenue
>>> account_category.save()
Create product::
>>> ProductUom = Model.get('product.uom')
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
>>> ProductTemplate = Model.get('product.template')
>>> template = ProductTemplate()
>>> template.name = 'product'
>>> template.default_uom = unit
>>> template.type = 'goods'
>>> template.salable = True
>>> template.list_price = Decimal('10')
>>> template.account_category = account_category
>>> template.save()
>>> product, = template.products
Set tolerance::
>>> Configuration = Model.get('sale.configuration')
>>> config = Configuration(1)
>>> config.sale_over_shipment_tolerance = 1.2
>>> config.save()
Sale 10 products::
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
>>> sale_line = sale.lines.new()
>>> sale_line.product = product
>>> sale_line.quantity = 10
>>> sale.click('quote')
>>> sale.click('confirm')
>>> sale.click('process')
Prevent over ship 13 products::
>>> shipment, = sale.shipments
>>> shipment.click('draft')
>>> move, = shipment.outgoing_moves
>>> move.quantity = 13
>>> shipment.click('wait')
>>> shipment.click('assign_force')
>>> shipment.click('pick')
>>> shipment.click('pack')
Traceback (most recent call last):
...
OverShipmentWarning: ...
Cancel shipment and recreate::
>>> shipment.click('cancel')
>>> shipment.state
'cancelled'
>>> handle_shipment_exception = Wizard('sale.handle.shipment.exception', [sale])
>>> handle_shipment_exception.form.recreate_moves.extend(
... handle_shipment_exception.form.recreate_moves.find())
>>> handle_shipment_exception.execute('handle')
Over ship 12 products::
>>> shipment, = [s for s in sale.shipments if s.state != 'cancelled']
>>> shipment.click('draft')
>>> move, = shipment.outgoing_moves
>>> move.quantity = 12
>>> shipment.click('wait')
>>> shipment.click('assign_force')
>>> shipment.click('pick')
>>> shipment.click('pack')
>>> shipment.click('do')
No new shipment as shipped inside tolerance::
>>> sale.reload()
>>> len(sale.shipments)
2

View File

@@ -0,0 +1,99 @@
======================================
Sale Under Shipment Tolerance Scenario
======================================
Imports::
>>> from decimal import Decimal
>>> from proteus import Model
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... 'sale_shipment_tolerance', create_company, create_chart)
Get accounts::
>>> accounts = get_accounts()
>>> revenue = accounts['revenue']
Create parties::
>>> Party = Model.get('party.party')
>>> customer = Party(name='Customer')
>>> customer.save()
Create account category::
>>> ProductCategory = Model.get('product.category')
>>> account_category = ProductCategory(name="Account Category")
>>> account_category.accounting = True
>>> account_category.account_revenue = revenue
>>> account_category.save()
Create product::
>>> ProductUom = Model.get('product.uom')
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
>>> ProductTemplate = Model.get('product.template')
>>> template = ProductTemplate()
>>> template.name = 'product'
>>> template.default_uom = unit
>>> template.type = 'goods'
>>> template.salable = True
>>> template.list_price = Decimal('10')
>>> template.account_category = account_category
>>> template.save()
>>> product, = template.products
Set tolerance::
>>> Configuration = Model.get('sale.configuration')
>>> config = Configuration(1)
>>> config.sale_under_shipment_tolerance = 0.9
>>> config.save()
Sale 10 products::
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
>>> sale_line = sale.lines.new()
>>> sale_line.product = product
>>> sale_line.quantity = 10
>>> sale.click('quote')
>>> sale.click('confirm')
>>> sale.click('process')
Under ship 5 products::
>>> shipment, = sale.shipments
>>> move, = shipment.inventory_moves
>>> move.quantity = 5
>>> shipment.click('assign_force')
>>> shipment.click('pick')
>>> shipment.click('pack')
>>> shipment.click('do')
Under ship 4 products::
>>> sale.reload()
>>> _, shipment = sale.shipments
>>> move, = shipment.inventory_moves
>>> move.quantity = 4
>>> shipment.click('assign_force')
>>> shipment.click('pick')
>>> shipment.click('pack')
>>> shipment.click('do')
No new shipment as shipped inside tolerance::
>>> sale.reload()
>>> len(sale.shipments)
2
>>> sale.shipment_state
'sent'

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 SaleShipmentToleranceTestCase(ModuleTestCase):
'Test Sale Shipment Tolerance module'
module = 'sale_shipment_tolerance'
del ModuleTestCase

View File

@@ -0,0 +1,8 @@
# 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 load_doc_tests
def load_tests(*args, **kwargs):
return load_doc_tests(__name__, __file__, *args, **kwargs)

View File

@@ -0,0 +1,16 @@
[tryton]
version=7.8.0
depends:
ir
sale
stock
xml:
configuration.xml
message.xml
[register]
model:
configuration.Configuration
configuration.ConfigurationShipmentTolerance
sale.Line
stock.Move

View File

@@ -0,0 +1,23 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="/form" position="inside">
<separator string="Sale Shipment Tolerance"
id="sale_shipment_tolerance" colspan="4"/>
<label name="sale_under_shipment_tolerance"/>
<group col="2" id="sale_under_shipment_tolerance">
<field name="sale_under_shipment_tolerance"
factor="100" xexpand="0"/>
<label name="sale_under_shipment_tolerance"
string="%" xexpand="1" xalign="0.0"/>
</group>
<label name="sale_over_shipment_tolerance"/>
<group col="2" id="sale_over_shipment_tolerance">
<field name="sale_over_shipment_tolerance"
factor="100" xexpand="0"/>
<label name="sale_over_shipment_tolerance"
string="%" xexpand="1" xalign="0.0"/>
</group>
</xpath>
</data>