first commit
This commit is contained in:
2
modules/sale_product_quantity/__init__.py
Normal file
2
modules/sale_product_quantity/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
Binary file not shown.
Binary file not shown.
BIN
modules/sale_product_quantity/__pycache__/sale.cpython-311.pyc
Normal file
BIN
modules/sale_product_quantity/__pycache__/sale.cpython-311.pyc
Normal file
Binary file not shown.
41
modules/sale_product_quantity/locale/bg.po
Normal file
41
modules/sale_product_quantity/locale/bg.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
45
modules/sale_product_quantity/locale/ca.po
Normal file
45
modules/sale_product_quantity/locale/ca.po
Normal file
@@ -0,0 +1,45 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Dígits de la quantitat de venda"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Quantitat mínima de venda"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Arrodoniment de la quantitat de venda"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Dígits de la quantitat de venda"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Quantitat mínima de venda"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Arrodoniment de la quantitat de venda"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
"La quantitat %(quantity)s de la línia %(line)s és massa petita, ha de ser "
|
||||
"com a mínim %(minimum)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
"La quantitat %(quantity)s de la línia %(line)s no es vàlida, ha de ser "
|
||||
"múltiple de %(rounding)s."
|
||||
41
modules/sale_product_quantity/locale/cs.po
Normal file
41
modules/sale_product_quantity/locale/cs.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
45
modules/sale_product_quantity/locale/de.po
Normal file
45
modules/sale_product_quantity/locale/de.po
Normal file
@@ -0,0 +1,45 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Nachkommastellen Verkaufsmenge"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Verkauf Mindestabnahmemenge"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Verkauf Rundungsmenge"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Nachkommastellen Verkaufsmenge"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Verkauf Mindestabnahmemenge"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Verkauf Rundungsmenge"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
"Die Menge %(quantity)s von Verkaufsposition %(line)s ist zu niedrig und muss"
|
||||
" auf mindestens %(minimum)s erhöht werden."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
"Die Menge %(quantity)s von Verkaufsposition %(line)s ist ungültig und muss "
|
||||
"ein Vielfaches von %(rounding)s sein."
|
||||
45
modules/sale_product_quantity/locale/es.po
Normal file
45
modules/sale_product_quantity/locale/es.po
Normal file
@@ -0,0 +1,45 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Dígitos de la cantidad de venta"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Cantidad mínima de venta"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Redondeo cantidad venta"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Dígitos de la cantidad de venta"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Cantidad mínima de venta"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Redondeo cantidad venta"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
"La cantidad %(quantity)s de la línea %(line)s es demasiado pequeña, debe ser"
|
||||
" al menos %(minimum)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
"La cantidad %(quantity)s de la línea %(line)s no es válida, debe ser "
|
||||
"múltiple de %(rounding)s."
|
||||
41
modules/sale_product_quantity/locale/es_419.po
Normal file
41
modules/sale_product_quantity/locale/es_419.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/et.po
Normal file
41
modules/sale_product_quantity/locale/et.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/fa.po
Normal file
41
modules/sale_product_quantity/locale/fa.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/fi.po
Normal file
41
modules/sale_product_quantity/locale/fi.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
45
modules/sale_product_quantity/locale/fr.po
Normal file
45
modules/sale_product_quantity/locale/fr.po
Normal file
@@ -0,0 +1,45 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Décimales de quantité de vente"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Quantité minimale de vente"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Quantité d'arrondi de vente"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Décimales de quantité de vente"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Quantité minimale de vente"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Quantité d'arrondi de vente"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
"La quantité %(quantity)s de la ligne %(line)s est trop petite, vous devez "
|
||||
"mettre au moins %(minimum)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
"La quantité %(quantity)s de la ligne %(line)s n'est pas valide, vous devez "
|
||||
"utiliser un multiple de %(rounding)s."
|
||||
41
modules/sale_product_quantity/locale/hu.po
Normal file
41
modules/sale_product_quantity/locale/hu.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/id.po
Normal file
41
modules/sale_product_quantity/locale/id.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
45
modules/sale_product_quantity/locale/it.po
Normal file
45
modules/sale_product_quantity/locale/it.po
Normal file
@@ -0,0 +1,45 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Decimali della quantià di vendita"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Quantità minima di vendita"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Quantità di arrotondamento vendita"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Decimali della quantià di vendita"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Quantità minima di vendita"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Quantità di arrotondamento vendita"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
"La quantità %(quantity)s della riga %(line)s è troppo piccola, devi "
|
||||
"impostare almeno %(minimum)s."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
"La quantità %(quantity)s della riga %(line)s non è valida, è necessario "
|
||||
"impostare multipli di %(rounding)s."
|
||||
41
modules/sale_product_quantity/locale/lo.po
Normal file
41
modules/sale_product_quantity/locale/lo.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/lt.po
Normal file
41
modules/sale_product_quantity/locale/lt.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
45
modules/sale_product_quantity/locale/nl.po
Normal file
45
modules/sale_product_quantity/locale/nl.po
Normal file
@@ -0,0 +1,45 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Aantal decimalen verkoop"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Minimale hoeveelheid verkoop"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Afronding hoeveelheid verkoop"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr "Aantal decimalen verkoop"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr "Minimale hoeveelheid verkoop"
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr "Afronding hoeveelheid verkoop"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
"Het aantal %(quantity)s van regel %(line)s is te klein, het moet minimaal "
|
||||
"%(minimum)s zijn."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
"Het aantal %(quantity)s van regel %(line)s is niet geldig, het moet een "
|
||||
"veelvoud zijn van %(rounding)s."
|
||||
41
modules/sale_product_quantity/locale/pl.po
Normal file
41
modules/sale_product_quantity/locale/pl.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/pt.po
Normal file
41
modules/sale_product_quantity/locale/pt.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/ro.po
Normal file
41
modules/sale_product_quantity/locale/ro.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/ru.po
Normal file
41
modules/sale_product_quantity/locale/ru.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/sl.po
Normal file
41
modules/sale_product_quantity/locale/sl.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/tr.po
Normal file
41
modules/sale_product_quantity/locale/tr.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/uk.po
Normal file
41
modules/sale_product_quantity/locale/uk.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
41
modules/sale_product_quantity/locale/zh_CN.po
Normal file
41
modules/sale_product_quantity/locale/zh_CN.po
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.product,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_digits:"
|
||||
msgid "Sale Quantity Digits"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_minimal:"
|
||||
msgid "Sale Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,sale_quantity_rounding:"
|
||||
msgid "Sale Rounding Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_minimal"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is too small, you must set at "
|
||||
"least %(minimum)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_sale_line_quantity_rounding"
|
||||
msgid ""
|
||||
"The quantity %(quantity)s of line %(line)s is not valid, you must set "
|
||||
"multiple of %(rounding)s."
|
||||
msgstr ""
|
||||
13
modules/sale_product_quantity/message.xml
Normal file
13
modules/sale_product_quantity/message.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?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_sale_line_quantity_minimal">
|
||||
<field name="text">The quantity %(quantity)s of line %(line)s is too small, you must set at least %(minimum)s.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_sale_line_quantity_rounding">
|
||||
<field name="text">The quantity %(quantity)s of line %(line)s is not valid, you must set multiple of %(rounding)s.</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
51
modules/sale_product_quantity/product.py
Normal file
51
modules/sale_product_quantity/product.py
Normal file
@@ -0,0 +1,51 @@
|
||||
# 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 trytond.model import fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
|
||||
|
||||
class Template(metaclass=PoolMeta):
|
||||
__name__ = 'product.template'
|
||||
|
||||
sale_quantity_minimal = fields.Float(
|
||||
"Sale Minimal Quantity",
|
||||
digits=(None, Eval('sale_quantity_digits', None)),
|
||||
states={
|
||||
'invisible': ~Eval('salable', False),
|
||||
},
|
||||
domain=['OR',
|
||||
('sale_quantity_minimal', '=', None),
|
||||
('sale_quantity_minimal', '>', 0),
|
||||
])
|
||||
sale_quantity_rounding = fields.Float(
|
||||
"Sale Rounding Quantity",
|
||||
digits=(None, Eval('sale_quantity_digits', None)),
|
||||
states={
|
||||
'invisible': ~Eval('salable', False),
|
||||
},
|
||||
domain=['OR',
|
||||
('sale_quantity_rounding', '=', None),
|
||||
('sale_quantity_rounding', '>', 0),
|
||||
])
|
||||
sale_quantity_digits = fields.Function(
|
||||
fields.Integer("Sale Quantity Digits"),
|
||||
'on_change_with_sale_quantity_digits')
|
||||
|
||||
@fields.depends('default_uom', 'sale_uom')
|
||||
def on_change_with_sale_quantity_digits(self, name=None):
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
if self.default_uom:
|
||||
rounding = self.default_uom.rounding
|
||||
if self.sale_uom:
|
||||
rounding = Uom.compute_qty(
|
||||
self.default_uom, rounding, self.sale_uom, round=False)
|
||||
return -Decimal(str(rounding)).as_tuple().exponent
|
||||
|
||||
|
||||
class Product(metaclass=PoolMeta):
|
||||
__name__ = 'product.product'
|
||||
12
modules/sale_product_quantity/product.xml
Normal file
12
modules/sale_product_quantity/product.xml
Normal 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="product_template_view_form">
|
||||
<field name="model">product.template</field>
|
||||
<field name="inherit" ref="product.template_view_form"/>
|
||||
<field name="name">product_template_form</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
87
modules/sale_product_quantity/sale.py
Normal file
87
modules/sale_product_quantity/sale.py
Normal file
@@ -0,0 +1,87 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import ModelStorage, fields
|
||||
from trytond.modules.sale.exceptions import SaleValidationError
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
|
||||
|
||||
def product_quantity_mixin(states):
|
||||
class ProductQuantityMixin(ModelStorage):
|
||||
|
||||
@fields.depends('product', 'quantity', 'unit')
|
||||
def on_change_product(self):
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
super().on_change_product()
|
||||
if self.product and self.quantity is None:
|
||||
if self.unit:
|
||||
unit = self.unit
|
||||
else:
|
||||
unit = self.product.sale_uom
|
||||
if self.product.sale_quantity_minimal:
|
||||
self.quantity = Uom.compute_qty(
|
||||
self.product.sale_uom,
|
||||
self.product.sale_quantity_minimal,
|
||||
unit)
|
||||
|
||||
@classmethod
|
||||
def validate(cls, lines):
|
||||
super().validate(lines)
|
||||
for line in lines:
|
||||
line.check_quantity()
|
||||
|
||||
def check_quantity(self):
|
||||
pool = Pool()
|
||||
Lang = pool.get('ir.lang')
|
||||
Uom = pool.get('product.uom')
|
||||
if (not self.product
|
||||
or self.sale.state not in states
|
||||
or self.quantity < 0):
|
||||
return
|
||||
lang = Lang.get()
|
||||
quantity = Uom.compute_qty(
|
||||
self.unit, self.quantity, self.product.sale_uom, round=False)
|
||||
if self.product.sale_quantity_minimal:
|
||||
if quantity < self.product.sale_quantity_minimal:
|
||||
minimum = Uom.compute_qty(
|
||||
self.product.sale_uom,
|
||||
self.product.sale_quantity_minimal,
|
||||
self.unit)
|
||||
raise SaleValidationError(gettext(
|
||||
'sale_product_quantity'
|
||||
'.msg_sale_line_quantity_minimal',
|
||||
line=self.rec_name,
|
||||
quantity=lang.format_number_symbol(
|
||||
self.quantity, self.unit),
|
||||
minimum=lang.format_number_symbol(
|
||||
minimum, self.unit)))
|
||||
if self.product.sale_quantity_rounding:
|
||||
remainder = round(
|
||||
quantity % self.product.sale_quantity_rounding,
|
||||
self.product.sale_quantity_digits)
|
||||
if (remainder
|
||||
and remainder != self.product.sale_quantity_rounding):
|
||||
rounding = Uom.compute_qty(
|
||||
self.product.sale_uom,
|
||||
self.product.sale_quantity_rounding,
|
||||
self.unit, round=False)
|
||||
raise SaleValidationError(gettext(
|
||||
'sale_product_quantity'
|
||||
'.msg_sale_line_quantity_rounding',
|
||||
line=self.rec_name,
|
||||
quantity=lang.format_number_symbol(
|
||||
self.quantity, self.unit),
|
||||
rounding=lang.format_number_symbol(
|
||||
rounding, self.unit)))
|
||||
|
||||
return ProductQuantityMixin
|
||||
|
||||
|
||||
class Line(product_quantity_mixin(['draft']), metaclass=PoolMeta):
|
||||
__name__ = 'sale.line'
|
||||
|
||||
|
||||
class POSLine(product_quantity_mixin(['open']), metaclass=PoolMeta):
|
||||
__name__ = 'sale.point.sale.line'
|
||||
2
modules/sale_product_quantity/tests/__init__.py
Normal file
2
modules/sale_product_quantity/tests/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,95 @@
|
||||
==============================
|
||||
Sale Product Quantity Scenario
|
||||
==============================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.company.tests.tools import create_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('sale_product_quantity', create_company)
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> Sale = Model.get('sale.sale')
|
||||
|
||||
Create parties::
|
||||
|
||||
>>> customer = Party(name="Customer")
|
||||
>>> customer.save()
|
||||
|
||||
Create product::
|
||||
|
||||
>>> gr, = ProductUom.find([('name', '=', "Gram")])
|
||||
>>> kg, = ProductUom.find([('name', '=', "Kilogram")])
|
||||
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = "Product"
|
||||
>>> template.default_uom = gr
|
||||
>>> template.type = 'goods'
|
||||
>>> template.list_price = Decimal('10')
|
||||
>>> template.salable = True
|
||||
>>> template.sale_uom = kg
|
||||
>>> template.sale_quantity_minimal = 0.1
|
||||
>>> template.sale_quantity_rounding = 0.05
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
Make a sale::
|
||||
|
||||
>>> sale = Sale()
|
||||
>>> sale.party = customer
|
||||
>>> line = sale.lines.new()
|
||||
>>> line.product = product
|
||||
>>> line.quantity
|
||||
0.1
|
||||
>>> sale.save()
|
||||
|
||||
Can not set quantity below minimal::
|
||||
|
||||
>>> line, = sale.lines
|
||||
>>> line.quantity = 0.05
|
||||
>>> sale.save()
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
SaleValidationError: ...
|
||||
|
||||
Can not set quantity different than rounding::
|
||||
|
||||
>>> line, = sale.lines
|
||||
>>> line.quantity = 1.01
|
||||
>>> sale.save()
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
SaleValidationError: ...
|
||||
|
||||
Use different unit::
|
||||
|
||||
>>> line, = sale.lines
|
||||
>>> line.unit = gr
|
||||
>>> line.quantity = 500
|
||||
>>> sale.save()
|
||||
|
||||
Can not set quantity below minimal::
|
||||
|
||||
>>> line, = sale.lines
|
||||
>>> line.quantity = 50
|
||||
>>> sale.save()
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
SaleValidationError: ...
|
||||
|
||||
Can not set quantity different than rounding::
|
||||
|
||||
>>> line, = sale.lines
|
||||
>>> line.quantity = 505
|
||||
>>> sale.save()
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
SaleValidationError: ...
|
||||
@@ -0,0 +1,93 @@
|
||||
==================================
|
||||
Sale Product Quantity POS Scenario
|
||||
==================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.company.tests.tools import create_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules(
|
||||
... ['sale_product_quantity', 'sale_point'],
|
||||
... create_company)
|
||||
|
||||
>>> Journal = Model.get('account.journal')
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> POS = Model.get('sale.point')
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> Sale = Model.get('sale.point.sale')
|
||||
>>> SequenceStrict = Model.get('ir.sequence.strict')
|
||||
>>> SequenceType = Model.get('ir.sequence.type')
|
||||
|
||||
Get journal::
|
||||
|
||||
>>> journal_revenue, = Journal.find([('type', '=', 'revenue')], limit=1)
|
||||
|
||||
Get stock locations::
|
||||
|
||||
>>> storage_loc, = Location.find([('code', '=', 'STO')])
|
||||
>>> customer_loc, = Location.find([('code', '=', 'CUS')])
|
||||
|
||||
Create POS::
|
||||
|
||||
>>> pos = POS(name="POS")
|
||||
>>> pos.journal = journal_revenue
|
||||
>>> pos.sequence = SequenceStrict(name="POS", company=pos.company)
|
||||
>>> pos.sequence.sequence_type, = SequenceType.find(
|
||||
... [('name', '=', "POS")], limit=1)
|
||||
>>> pos.sequence.save()
|
||||
>>> pos.storage_location = storage_loc
|
||||
>>> pos.customer_location = customer_loc
|
||||
>>> pos.save()
|
||||
|
||||
Create product::
|
||||
|
||||
>>> gr, = ProductUom.find([('name', '=', "Gram")])
|
||||
>>> kg, = ProductUom.find([('name', '=', "Kilogram")])
|
||||
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = "Product"
|
||||
>>> template.default_uom = gr
|
||||
>>> template.type = 'goods'
|
||||
>>> template.list_price = Decimal('10')
|
||||
>>> template.salable = True
|
||||
>>> template.sale_uom = kg
|
||||
>>> template.sale_quantity_minimal = 0.1
|
||||
>>> template.sale_quantity_rounding = 0.05
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
Make a sale::
|
||||
|
||||
>>> sale = Sale(point=pos)
|
||||
|
||||
>>> line = sale.lines.new()
|
||||
>>> line.product = product
|
||||
>>> line.quantity
|
||||
0.1
|
||||
>>> sale.save()
|
||||
|
||||
Can not set quantity below minimal::
|
||||
|
||||
>>> line, = sale.lines
|
||||
>>> line.quantity = 0.05
|
||||
>>> sale.save()
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
SaleValidationError: ...
|
||||
|
||||
Can not set quantity different than rounding::
|
||||
|
||||
>>> line, = sale.lines
|
||||
>>> line.quantity = 1.01
|
||||
>>> sale.save()
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
SaleValidationError: ...
|
||||
13
modules/sale_product_quantity/tests/test_module.py
Normal file
13
modules/sale_product_quantity/tests/test_module.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# 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 SaleProductQuantityTestCase(ModuleTestCase):
|
||||
'Test Sale Product Quantity module'
|
||||
module = 'sale_product_quantity'
|
||||
extras = ['sale_point']
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
8
modules/sale_product_quantity/tests/test_scenario.py
Normal file
8
modules/sale_product_quantity/tests/test_scenario.py
Normal 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)
|
||||
21
modules/sale_product_quantity/tryton.cfg
Normal file
21
modules/sale_product_quantity/tryton.cfg
Normal file
@@ -0,0 +1,21 @@
|
||||
[tryton]
|
||||
version=7.8.0
|
||||
depends:
|
||||
ir
|
||||
product
|
||||
sale
|
||||
extras_depend:
|
||||
sale_point
|
||||
xml:
|
||||
product.xml
|
||||
message.xml
|
||||
|
||||
[register]
|
||||
model:
|
||||
product.Template
|
||||
product.Product
|
||||
sale.Line
|
||||
|
||||
[register sale_point]
|
||||
model:
|
||||
sale.POSLine
|
||||
11
modules/sale_product_quantity/view/product_template_form.xml
Normal file
11
modules/sale_product_quantity/view/product_template_form.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="//page[@id='customers']/field[@name='sale_uom']" position="after">
|
||||
<label name="sale_quantity_minimal"/>
|
||||
<field name="sale_quantity_minimal"/>
|
||||
<label name="sale_quantity_rounding"/>
|
||||
<field name="sale_quantity_rounding"/>
|
||||
</xpath>
|
||||
</data>
|
||||
Reference in New Issue
Block a user