first commit
This commit is contained in:
11
modules/stock_lot_unit/__init__.py
Normal file
11
modules/stock_lot_unit/__init__.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
__all__ = ['LotUnitMixin']
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
if name == 'LotUnitMixin':
|
||||
from .stock import LotUnitMixin
|
||||
return LotUnitMixin
|
||||
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
||||
BIN
modules/stock_lot_unit/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
modules/stock_lot_unit/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/stock_lot_unit/__pycache__/exceptions.cpython-311.pyc
Normal file
BIN
modules/stock_lot_unit/__pycache__/exceptions.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/stock_lot_unit/__pycache__/product.cpython-311.pyc
Normal file
BIN
modules/stock_lot_unit/__pycache__/product.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/stock_lot_unit/__pycache__/stock.cpython-311.pyc
Normal file
BIN
modules/stock_lot_unit/__pycache__/stock.cpython-311.pyc
Normal file
Binary file not shown.
8
modules/stock_lot_unit/exceptions.py
Normal file
8
modules/stock_lot_unit/exceptions.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.model.exceptions import ValidationError
|
||||
|
||||
|
||||
class LotUnitQuantityError(ValidationError):
|
||||
pass
|
||||
74
modules/stock_lot_unit/locale/bg.po
Normal file
74
modules/stock_lot_unit/locale/bg.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
77
modules/stock_lot_unit/locale/ca.po
Normal file
77
modules/stock_lot_unit/locale/ca.po
Normal file
@@ -0,0 +1,77 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Unitat del lot"
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Unitat del lot"
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Categoria UdM del producte per defecte"
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unitat"
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Quantitat unitària"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Categoria UdM del producte per defecte"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unitat"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Quantitat unitària"
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "La unitat per defecte del lot."
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "La unitat per defecte del lot."
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "La major unitat del lot."
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "La quantitat màxima del lot."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "La major unitat del lot."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "La quantitat màxima del lot."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr "No podeu canviar la unitat d'un lot que té moviments d'existències."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"No podeu canviar la quantitat d'un lot que té moviments d'existències."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
"No podeu utililizar més de %(quantity)s%(unit)s del lot \"%(lot)s\" en "
|
||||
"\"%(name)s\"."
|
||||
74
modules/stock_lot_unit/locale/cs.po
Normal file
74
modules/stock_lot_unit/locale/cs.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
80
modules/stock_lot_unit/locale/de.po
Normal file
80
modules/stock_lot_unit/locale/de.po
Normal file
@@ -0,0 +1,80 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Chargenmaßeinheit"
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Chargenmaßeinheit"
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Standardmaßeinheitenkategorie"
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Einheit"
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Maßeinheit Menge"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Standardmaßeinheitenkategorie"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Einheit"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Maßeinheit Menge"
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "Die Standardmaßeinheit für Chargen."
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "Die Standardmaßeinheit für Chargen."
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "Die größte Maßeinheit für die Charge."
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "Die maximale Menge für die Charge."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "Die größte Maßeinheit für die Charge."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "Die maximale Menge für die Charge."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"Die Einheit einer Charge, für die es Warenbewegungen gibt, kann nicht "
|
||||
"geändert werden."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"Die Menge einer Charge, für die es Warenbewegungen gibt, kann nicht gändert "
|
||||
"werden."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
"In \"%(name)s\" kann nicht mehr als %(quantity)s%(unit)s von Charge "
|
||||
"\"%(lot)s\" verwendet werden."
|
||||
77
modules/stock_lot_unit/locale/es.po
Normal file
77
modules/stock_lot_unit/locale/es.po
Normal file
@@ -0,0 +1,77 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "UdM del lote"
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "UdM del lote"
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Cateogría de UdM de producto por defecto"
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unidad"
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Cantidad unitaria"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Cateogría de UdM de producto por defecto"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unidad"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Cantidad unitaria"
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "La unidad por defecto del lote."
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "La unidad por defecto del lote."
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "La mayor unidad del lote."
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "La cantidad máxima del lote."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "La mayor unidad del lote."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "La cantidad máxima del lote."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"No puede cambiar la unidad de un lote que tiene movimientos de existencias."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"No puede cambiar la cantidad de un lote que tiene movimientos de "
|
||||
"existencias."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr "No puede usar más de %(quantity)s%(unit)s del \"%(lot)s\" en \"%(name)s\"."
|
||||
74
modules/stock_lot_unit/locale/es_419.po
Normal file
74
modules/stock_lot_unit/locale/es_419.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
86
modules/stock_lot_unit/locale/et.po
Normal file
86
modules/stock_lot_unit/locale/et.po
Normal file
@@ -0,0 +1,86 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Partii ühik"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Partii ühik"
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Vaikimisi toote mõõtühiku kategooria"
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Ühik"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Kogus"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Vaikimisi toote mõõtühiku kategooria"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Ühik"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Kogus"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "Partii vaikeühik."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "Partii vaikeühik."
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "Partii suurim ühik."
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "Suurim partiikogus."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "Partii suurim ühik."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "Suurim partiikogus."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr "Laoliikumistega seotud partii ühikut ei saa muuta."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr "Laoliikumistega seotud partii kogust ei saa muuta."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
"\"%(name)s\" ei saa kasutada suuremat partii \"%(lot)s\" kogust "
|
||||
"%(quantity)s%(unit)s"
|
||||
86
modules/stock_lot_unit/locale/fa.po
Normal file
86
modules/stock_lot_unit/locale/fa.po
Normal file
@@ -0,0 +1,86 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "واحد قطعه"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "واحد قطعه"
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "دسته بندی واحد اندازه گیری محصول پیشفرض"
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "واحد"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "مقدار"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "دسته بندی واحد اندازه گیری محصول پیشفرض"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "واحد"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "مقدار"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "واحد پیشفرض قطعه."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "واحد پیشفرض قطعه."
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "بزرگترین واحد برای قطعه"
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "حداکثر مقدار برای قطعه."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "بزرگترین واحد برای قطعه"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "حداکثر مقدار برای قطعه."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr "شما نمی توانید یک واحد جنس را تغییر دهید که جابجایی اجناس داشته باشد."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr "شما نمی توانید مقدار جنس را تغییر دهید که جابجایی اجناس داشته باشد."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
"شما نمی توانید بیش از:\"%(quantity)s%(unit)s\" از قطعه :\"%(lot)s\" "
|
||||
"در:\"%(name)s\" استفاده کنید."
|
||||
74
modules/stock_lot_unit/locale/fi.po
Normal file
74
modules/stock_lot_unit/locale/fi.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
79
modules/stock_lot_unit/locale/fr.po
Normal file
79
modules/stock_lot_unit/locale/fr.po
Normal file
@@ -0,0 +1,79 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "UDM de lot"
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "UDM de lot"
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Catégorie d'unité de mesure par défaut"
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unité"
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Quantité Unitaire"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Catégorie d'unité de mesure par défaut"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unité"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Quantité Unitaire"
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "L'unité de mesure par défaut pour le lot."
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "L'unité de mesure par défaut pour le lot."
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "La plus grande unité pour le lot."
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "La quantité maximal pour le lot."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "La plus grande unité pour le lot."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "La quantité maximal pour le lot."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas changer l'unité d'un lot qui a des mouvements de stock."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas changer la quantité d'un lot qui a des mouvements de "
|
||||
"stock."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas utiliser plus que %(quantity)s%(unit)s du lot « %(lot)s »"
|
||||
" sur « %(name)s »."
|
||||
74
modules/stock_lot_unit/locale/hu.po
Normal file
74
modules/stock_lot_unit/locale/hu.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
74
modules/stock_lot_unit/locale/id.po
Normal file
74
modules/stock_lot_unit/locale/id.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
86
modules/stock_lot_unit/locale/it.po
Normal file
86
modules/stock_lot_unit/locale/it.po
Normal file
@@ -0,0 +1,86 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Lotto Unità"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Lotto Unità"
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Categoria UdM prodotto predefinita"
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unità"
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Quantità unitaria"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Categoria UdM prodotto predefinita"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unità"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Quantità unitaria"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "L'unità predefinita per il lotto."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "L'unità predefinita per il lotto."
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "L'unità più grande per il lotto."
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "La quantità massima per il lotto."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "L'unità più grande per il lotto."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "La quantità massima per il lotto."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"Non è possibile modificare l'unità di un lotto di stock che ha movimenti di "
|
||||
"stock."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"Non è possibile modificare la quantità di un lotto di stock che ha movimenti"
|
||||
" di stock."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
"Non è possibile utilizzare più di %(quantity)s%(unit)s del lotto \"%(lot)s\""
|
||||
" in \"%(name)s\"."
|
||||
74
modules/stock_lot_unit/locale/lo.po
Normal file
74
modules/stock_lot_unit/locale/lo.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
74
modules/stock_lot_unit/locale/lt.po
Normal file
74
modules/stock_lot_unit/locale/lt.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
79
modules/stock_lot_unit/locale/nl.po
Normal file
79
modules/stock_lot_unit/locale/nl.po
Normal file
@@ -0,0 +1,79 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Batch maateenheid"
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr "Batch maateenheid"
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Standaard Product Maateenheid Categorie"
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Eenheid"
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Eenheid Hoeveelheid"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr "Standaard Product Maateenheid Categorie"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Eenheid"
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr "Eenheid Hoeveelheid"
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "De standaard maateenheid voor een batch."
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr "De standaard maateenheid voor een batch."
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "De grootste eenheid voor een batch."
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "De maximale hoeveelheid voor een batch."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr "De grootste eenheid voor het lot."
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr "De maximale hoeveelheid voor een batch."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"U kunt de eenheid van een batch die voorraadbewegingen heeft niet wijzigen."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
"U kunt de hoeveelheid van een batch die voorraadbewegingen heeft niet "
|
||||
"wijzigen."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
"U kunt niet meer dan %(quantity)s%(unit)s van batch \"%(lot)s\" in "
|
||||
"\"%(name)s\" gebruiken."
|
||||
74
modules/stock_lot_unit/locale/pl.po
Normal file
74
modules/stock_lot_unit/locale/pl.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
74
modules/stock_lot_unit/locale/pt.po
Normal file
74
modules/stock_lot_unit/locale/pt.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
74
modules/stock_lot_unit/locale/ro.po
Normal file
74
modules/stock_lot_unit/locale/ro.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
74
modules/stock_lot_unit/locale/ru.po
Normal file
74
modules/stock_lot_unit/locale/ru.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
74
modules/stock_lot_unit/locale/sl.po
Normal file
74
modules/stock_lot_unit/locale/sl.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
74
modules/stock_lot_unit/locale/tr.po
Normal file
74
modules/stock_lot_unit/locale/tr.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
74
modules/stock_lot_unit/locale/uk.po
Normal file
74
modules/stock_lot_unit/locale/uk.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
74
modules/stock_lot_unit/locale/zh_CN.po
Normal file
74
modules/stock_lot_unit/locale/zh_CN.po
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.template,lot_uom:"
|
||||
msgid "Lot UoM"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,product_default_uom_category:"
|
||||
msgid "Default Product UoM Category"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "Unit Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.product,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.template,lot_uom:"
|
||||
msgid "The default unit of measure for lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit:"
|
||||
msgid "The biggest unit for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.move.add.lots.start.lot,unit_quantity:"
|
||||
msgid "The maximal quantity for the lot."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit"
|
||||
msgid "You cannot change the unit of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_change_unit_quantity"
|
||||
msgid "You cannot change the quantity of a stock lot which has stock moves."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_lot_unit_quantity_greater"
|
||||
msgid ""
|
||||
"You cannot use more than %(quantity)s%(unit)s of lot \"%(lot)s\" in "
|
||||
"\"%(name)s\"."
|
||||
msgstr ""
|
||||
16
modules/stock_lot_unit/message.xml
Normal file
16
modules/stock_lot_unit/message.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?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_change_unit">
|
||||
<field name="text">You cannot change the unit of a stock lot which has stock moves.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_change_unit_quantity">
|
||||
<field name="text">You cannot change the quantity of a stock lot which has stock moves.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_lot_unit_quantity_greater">
|
||||
<field name="text">You cannot use more than %(quantity)s%(unit)s of lot "%(lot)s" in "%(name)s".</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
34
modules/stock_lot_unit/product.py
Normal file
34
modules/stock_lot_unit/product.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# 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 fields
|
||||
from trytond.pool import PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
|
||||
|
||||
class Template(metaclass=PoolMeta):
|
||||
__name__ = 'product.template'
|
||||
|
||||
lot_uom = fields.Many2One('product.uom', "Lot UoM",
|
||||
domain=[
|
||||
('category', '=', Eval('default_uom_category', -1)),
|
||||
],
|
||||
states={
|
||||
'invisible': Eval('type') == 'service',
|
||||
},
|
||||
help="The default unit of measure for lot.")
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
table_h = cls.__table_handler__(module_name)
|
||||
|
||||
# Migration from 6.8: rename lot_unit to lot_uom
|
||||
if (table_h.column_exist('lot_unit')
|
||||
and not table_h.column_exist('lot_uom')):
|
||||
table_h.column_rename('lot_unit', 'lot_uom')
|
||||
|
||||
super().__register__(module_name)
|
||||
|
||||
|
||||
class Product(metaclass=PoolMeta):
|
||||
__name__ = 'product.product'
|
||||
12
modules/stock_lot_unit/product.xml
Normal file
12
modules/stock_lot_unit/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="template_view_form">
|
||||
<field name="model">product.template</field>
|
||||
<field name="inherit" ref="product.template_view_form"/>
|
||||
<field name="name">template_form</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
212
modules/stock_lot_unit/stock.py
Normal file
212
modules/stock_lot_unit/stock.py
Normal file
@@ -0,0 +1,212 @@
|
||||
# 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 collections import defaultdict
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import ModelView, Workflow, fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Bool, Eval
|
||||
|
||||
from .exceptions import LotUnitQuantityError
|
||||
|
||||
|
||||
class LotUnitMixin:
|
||||
__slots__ = ()
|
||||
unit = fields.Many2One(
|
||||
'product.uom', "Unit",
|
||||
domain=[
|
||||
('category', '=', Eval('product_default_uom_category', -1)),
|
||||
],
|
||||
help="The biggest unit for the lot.")
|
||||
unit_quantity = fields.Float(
|
||||
"Unit Quantity", digits='unit',
|
||||
states={
|
||||
'required': Bool(Eval('unit')),
|
||||
'invisible': ~Eval('unit'),
|
||||
},
|
||||
help="The maximal quantity for the lot.")
|
||||
|
||||
product_default_uom_category = fields.Function(
|
||||
fields.Many2One(
|
||||
'product.uom.category', "Default Product UoM Category"),
|
||||
'on_change_with_product_default_uom_category')
|
||||
|
||||
@fields.depends('product', methods=['on_change_unit'])
|
||||
def on_change_product(self):
|
||||
try:
|
||||
super().on_change_product()
|
||||
except AttributeError:
|
||||
pass
|
||||
if self.product and self.product.lot_uom:
|
||||
self.unit = self.product.lot_uom
|
||||
self.on_change_unit()
|
||||
|
||||
@fields.depends('unit')
|
||||
def on_change_unit(self):
|
||||
if self.unit:
|
||||
self.unit_quantity = self.unit.rounding
|
||||
|
||||
@fields.depends('product')
|
||||
def on_change_with_product_default_uom_category(self, name=None):
|
||||
if self.product:
|
||||
return self.product.default_uom_category
|
||||
|
||||
|
||||
class Lot(LotUnitMixin, metaclass=PoolMeta):
|
||||
__name__ = 'stock.lot'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls._modify_no_move += [
|
||||
('unit', 'done', 'stock_lot_unit.msg_change_unit'),
|
||||
('unit_quantity', 'done',
|
||||
'stock_lot_unit.msg_change_unit_quantity'),
|
||||
]
|
||||
|
||||
|
||||
class MoveAddLotsStartLot(LotUnitMixin, metaclass=PoolMeta):
|
||||
__name__ = 'stock.move.add.lots.start.lot'
|
||||
|
||||
@fields.depends(
|
||||
'unit', 'unit_quantity', 'quantity', 'parent', '_parent_parent.unit')
|
||||
def _set_lot_values(self, lot):
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
super()._set_lot_values(lot)
|
||||
self.unit = lot.unit
|
||||
self.unit_quantity = lot.unit_quantity
|
||||
if self.parent.unit:
|
||||
maximum_quantity = Uom.compute_qty(
|
||||
lot.unit, lot.unit_quantity, self.parent.unit, round=False)
|
||||
if self.quantity > maximum_quantity:
|
||||
self.quantity = self.parent.unit.round(maximum_quantity)
|
||||
|
||||
def _get_lot_values(self, move):
|
||||
values = super()._get_lot_values(move)
|
||||
values['unit'] = self.unit
|
||||
values['unit_quantity'] = self.unit_quantity
|
||||
return values
|
||||
|
||||
|
||||
class Move(metaclass=PoolMeta):
|
||||
__name__ = 'stock.move'
|
||||
|
||||
def check_lot(self):
|
||||
pool = Pool()
|
||||
UoM = pool.get('product.uom')
|
||||
super().check_lot()
|
||||
if (self.state == 'done'
|
||||
and self.lot
|
||||
and self.lot.unit):
|
||||
quantity = UoM.compute_qty(
|
||||
self.unit, self.quantity,
|
||||
self.lot.unit, round=False)
|
||||
if quantity > self.lot.unit_quantity:
|
||||
raise LotUnitQuantityError(
|
||||
gettext('stock_lot_unit.msg_lot_unit_quantity_greater',
|
||||
quantity=self.lot.unit_quantity,
|
||||
unit=self.lot.unit.symbol,
|
||||
lot=self.lot.rec_name,
|
||||
name=self.rec_name))
|
||||
|
||||
|
||||
class Inventory(metaclass=PoolMeta):
|
||||
__name__ = 'stock.inventory'
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('done')
|
||||
def confirm(cls, inventories):
|
||||
for inventory in inventories:
|
||||
for line in inventory.lines:
|
||||
if (line.quantity is not None
|
||||
and line.lot
|
||||
and line.lot.unit
|
||||
and line.quantity > line.lot.unit_quantity):
|
||||
raise LotUnitQuantityError(
|
||||
gettext('stock_lot_unit.msg_lot_unit_quantity_greater',
|
||||
quantity=line.lot.unit_quantity,
|
||||
unit=line.lot.unit.symbol,
|
||||
lot=line.lot.rec_name,
|
||||
name=line.rec_name))
|
||||
super().confirm(inventories)
|
||||
|
||||
|
||||
class InventoryCount(metaclass=PoolMeta):
|
||||
__name__ = 'stock.inventory.count'
|
||||
|
||||
def default_quantity(self, fields):
|
||||
pool = Pool()
|
||||
InventoryLine = pool.get('stock.inventory.line')
|
||||
UoM = pool.get('product.uom')
|
||||
values = super().default_quantity(fields)
|
||||
line = InventoryLine(values['line'])
|
||||
if line.lot and line.lot.unit:
|
||||
values['quantity'] = UoM.compute_qty(
|
||||
line.lot.unit, line.lot.unit_quantity,
|
||||
line.unit)
|
||||
return values
|
||||
|
||||
|
||||
class LotUnitMixin(object):
|
||||
__slots__ = ()
|
||||
_lot_unit_moves = None
|
||||
|
||||
@classmethod
|
||||
def validate(cls, shipments):
|
||||
pool = Pool()
|
||||
UoM = pool.get('product.uom')
|
||||
|
||||
super().validate(shipments)
|
||||
|
||||
for shipment in shipments:
|
||||
for move_attribute in cls._lot_unit_moves:
|
||||
lot_quantities = defaultdict(int)
|
||||
for move in getattr(shipment, move_attribute):
|
||||
if move.state != 'done':
|
||||
continue
|
||||
if not move.lot or not move.lot.unit:
|
||||
continue
|
||||
lot_quantities[move.lot] += UoM.compute_qty(
|
||||
move.unit, move.quantity,
|
||||
move.lot.unit, round=False)
|
||||
for lot, quantity in lot_quantities.items():
|
||||
if quantity > lot.unit_quantity:
|
||||
raise LotUnitQuantityError(
|
||||
gettext('stock_lot_unit'
|
||||
'.msg_lot_unit_quantity_greater',
|
||||
quantity=lot.unit_quantity,
|
||||
unit=lot.unit.symbol,
|
||||
lot=lot.rec_name,
|
||||
name=shipment.rec_name))
|
||||
|
||||
|
||||
class ShipmentIn(LotUnitMixin, metaclass=PoolMeta):
|
||||
__name__ = 'stock.shipment.in'
|
||||
_lot_unit_moves = ['incoming_moves', 'inventory_moves']
|
||||
|
||||
|
||||
class ShipmentInReturn(LotUnitMixin, metaclass=PoolMeta):
|
||||
__name__ = 'stock.shipment.in.return'
|
||||
_lot_unit_moves = ['moves']
|
||||
|
||||
|
||||
class ShipmentOut(LotUnitMixin, metaclass=PoolMeta):
|
||||
__name__ = 'stock.shipment.out'
|
||||
_lot_unit_moves = ['outgoing_moves', 'inventory_moves']
|
||||
|
||||
|
||||
class ShipmentOutReturn(LotUnitMixin, metaclass=PoolMeta):
|
||||
__name__ = 'stock.shipment.out.return'
|
||||
_lot_unit_moves = ['incoming_moves', 'inventory_moves']
|
||||
|
||||
|
||||
class ShipmentInternal(LotUnitMixin, metaclass=PoolMeta):
|
||||
__name__ = 'stock.shipment.internal'
|
||||
_lot_unit_moves = ['incoming_moves', 'outgoing_moves']
|
||||
|
||||
|
||||
class Production(LotUnitMixin, metaclass=PoolMeta):
|
||||
__name__ = 'production'
|
||||
_lot_unit_moves = ['inputs', 'outputs']
|
||||
24
modules/stock_lot_unit/stock.xml
Normal file
24
modules/stock_lot_unit/stock.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?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="lot_view_form">
|
||||
<field name="model">stock.lot</field>
|
||||
<field name="inherit" ref="stock_lot.lot_view_form"/>
|
||||
<field name="name">lot_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="lot_view_list">
|
||||
<field name="model">stock.lot</field>
|
||||
<field name="inherit" ref="stock_lot.lot_view_tree"/>
|
||||
<field name="name">lot_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_add_lots_start_lot_view_list">
|
||||
<field name="model">stock.move.add.lots.start.lot</field>
|
||||
<field name="inherit" ref="stock_lot.move_add_lots_start_lot_view_list"/>
|
||||
<field name="name">lot_list</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
2
modules/stock_lot_unit/tests/__init__.py
Normal file
2
modules/stock_lot_unit/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,68 @@
|
||||
=======================================
|
||||
Stock Lot Unit Inventory Count Scenario
|
||||
=======================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.company.tests.tools import create_company
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('stock_lot_unit', create_company)
|
||||
>>> config.skip_warning = True
|
||||
|
||||
>>> Inventory = Model.get('stock.inventory')
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> Lot = Model.get('stock.lot')
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
|
||||
Get stock location::
|
||||
|
||||
>>> storage_loc, = Location.find([('code', '=', 'STO')])
|
||||
|
||||
Create product and lot::
|
||||
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = 'Product'
|
||||
>>> template.default_uom = unit
|
||||
>>> template.type = 'goods'
|
||||
>>> template.lot_required = ['storage']
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
>>> lot = Lot(number="0001", product=product, unit=unit)
|
||||
>>> lot.save()
|
||||
|
||||
Create an inventory::
|
||||
|
||||
>>> inventory = Inventory()
|
||||
>>> inventory.location = storage_loc
|
||||
>>> inventory.empty_quantity = 'keep'
|
||||
>>> inventory.save()
|
||||
|
||||
Count inventory::
|
||||
|
||||
>>> count = inventory.click('do_count')
|
||||
|
||||
>>> count.form.search = lot
|
||||
>>> count.execute('quantity')
|
||||
>>> assertEqual(count.form.product, product)
|
||||
>>> assertEqual(count.form.lot, lot)
|
||||
>>> count.form.quantity
|
||||
1.0
|
||||
>>> count.form.total_quantity
|
||||
1.0
|
||||
>>> count.execute('add')
|
||||
>>> count.execute('end')
|
||||
|
||||
Check inventory::
|
||||
|
||||
>>> line, = inventory.lines
|
||||
>>> assertEqual(line.product, product)
|
||||
>>> assertEqual(line.lot, lot)
|
||||
>>> line.quantity
|
||||
1.0
|
||||
184
modules/stock_lot_unit/tests/scenario_stock_lot_unit.rst
Normal file
184
modules/stock_lot_unit/tests/scenario_stock_lot_unit.rst
Normal file
@@ -0,0 +1,184 @@
|
||||
=======================
|
||||
Stock Lot Unit Scenario
|
||||
=======================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.company.tests.tools import create_company
|
||||
>>> from trytond.modules.currency.tests.tools import get_currency
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('stock_lot_unit', create_company)
|
||||
|
||||
Get currency::
|
||||
|
||||
>>> currency = get_currency()
|
||||
|
||||
Create customer::
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> customer = Party(name='Customer')
|
||||
>>> customer.save()
|
||||
|
||||
Create supplier::
|
||||
|
||||
>>> supplier = Party(name='Supplier')
|
||||
>>> supplier.save()
|
||||
|
||||
Create product::
|
||||
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = 'Product'
|
||||
>>> template.default_uom = unit
|
||||
>>> template.type = 'goods'
|
||||
>>> template.list_price = Decimal('20')
|
||||
>>> template.lot_uom = unit
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
>>> product.cost_price = Decimal('8')
|
||||
>>> product.save()
|
||||
|
||||
Get stock locations::
|
||||
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> warehouse_loc, = Location.find([('code', '=', 'WH')])
|
||||
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
|
||||
>>> customer_loc, = Location.find([('code', '=', 'CUS')])
|
||||
>>> input_loc, = Location.find([('code', '=', 'IN')])
|
||||
>>> output_loc, = Location.find([('code', '=', 'OUT')])
|
||||
>>> storage_loc, = Location.find([('code', '=', 'STO')])
|
||||
|
||||
Create an incoming shipment without lot::
|
||||
|
||||
>>> ShipmentIn = Model.get('stock.shipment.in')
|
||||
>>> shipment = ShipmentIn()
|
||||
>>> shipment.supplier = supplier
|
||||
>>> move1 = shipment.incoming_moves.new()
|
||||
>>> move1.product = product
|
||||
>>> move1.quantity = 60
|
||||
>>> move1.unit_price = Decimal('8')
|
||||
>>> move1.currency = currency
|
||||
>>> move1.from_location = supplier_loc
|
||||
>>> move1.to_location = input_loc
|
||||
>>> move2 = shipment.incoming_moves.new()
|
||||
>>> move2.product = product
|
||||
>>> move2.quantity = 40
|
||||
>>> move2.unit_price = Decimal('8')
|
||||
>>> move2.currency = currency
|
||||
>>> move2.from_location = supplier_loc
|
||||
>>> move2.to_location = input_loc
|
||||
>>> shipment.click('receive')
|
||||
>>> shipment.click('do')
|
||||
|
||||
Let's ship a product with a lot::
|
||||
|
||||
>>> Lot = Model.get('stock.lot')
|
||||
>>> lot = Lot(number='00001', product=product)
|
||||
>>> assertEqual(lot.unit, unit)
|
||||
>>> lot.unit_quantity
|
||||
1.0
|
||||
>>> lot.save()
|
||||
|
||||
>>> ShipmentOut = Model.get('stock.shipment.out')
|
||||
>>> shipment = ShipmentOut()
|
||||
>>> shipment.customer = customer
|
||||
>>> move = shipment.outgoing_moves.new()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 1
|
||||
>>> move.unit_price = Decimal('20')
|
||||
>>> move.currency = currency
|
||||
>>> move.from_location = output_loc
|
||||
>>> move.to_location = customer_loc
|
||||
>>> shipment.click('wait')
|
||||
>>> shipment.click('assign_try')
|
||||
>>> move.lot = lot
|
||||
>>> shipment.click('pick')
|
||||
>>> shipment.click('pack')
|
||||
>>> shipment.click('do')
|
||||
|
||||
Let's ship now two times the same lot::
|
||||
|
||||
>>> lot = Lot(number='00002', product=product)
|
||||
>>> lot.save()
|
||||
|
||||
>>> shipment = ShipmentOut()
|
||||
>>> shipment.customer = customer
|
||||
>>> move1 = shipment.outgoing_moves.new()
|
||||
>>> move1.product = product
|
||||
>>> move1.quantity = 1
|
||||
>>> move1.unit_price = Decimal('20')
|
||||
>>> move1.currency = currency
|
||||
>>> move1.from_location = output_loc
|
||||
>>> move1.to_location = customer_loc
|
||||
>>> move2 = shipment.outgoing_moves.new()
|
||||
>>> move2.product = product
|
||||
>>> move2.quantity = 1
|
||||
>>> move2.unit_price = Decimal('20')
|
||||
>>> move2.currency = currency
|
||||
>>> move2.from_location = output_loc
|
||||
>>> move2.to_location = customer_loc
|
||||
>>> shipment.click('wait')
|
||||
>>> shipment.click('assign_try')
|
||||
>>> move1, move2 = shipment.inventory_moves
|
||||
>>> move1.lot = lot
|
||||
>>> move2.lot = lot
|
||||
>>> shipment.save()
|
||||
>>> shipment.click('pick')
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
LotUnitQuantityError: ...
|
||||
|
||||
Now let's ship one move with a quantity bigger than lot unit quantity::
|
||||
|
||||
>>> lot = Lot(number='00003', product=product)
|
||||
>>> lot.unit_quantity = 3
|
||||
>>> lot.save()
|
||||
|
||||
>>> shipment = ShipmentOut()
|
||||
>>> shipment.customer = customer
|
||||
>>> move = shipment.outgoing_moves.new()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 4
|
||||
>>> move.unit_price = Decimal('20')
|
||||
>>> move.currency = currency
|
||||
>>> move.from_location = output_loc
|
||||
>>> move.to_location = customer_loc
|
||||
>>> shipment.click('wait')
|
||||
>>> shipment.click('assign_try')
|
||||
>>> move, = shipment.inventory_moves
|
||||
>>> move.lot = lot
|
||||
>>> shipment.click('pick')
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
LotUnitQuantityError: ...
|
||||
|
||||
Make an inventory::
|
||||
|
||||
>>> lot = Lot(number='00004', product=product)
|
||||
>>> lot.unit_quantity = 2
|
||||
>>> lot.save()
|
||||
|
||||
>>> Inventory = Model.get('stock.inventory')
|
||||
>>> inventory = Inventory()
|
||||
>>> inventory.location = storage_loc
|
||||
>>> line = inventory.lines.new()
|
||||
>>> line.product = product
|
||||
>>> line.lot = lot
|
||||
>>> line.quantity = 3
|
||||
>>> inventory.save()
|
||||
>>> inventory.click('confirm')
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
LotUnitQuantityError: ...
|
||||
|
||||
>>> line, = inventory.lines
|
||||
>>> line.quantity = 2
|
||||
>>> inventory.click('confirm')
|
||||
@@ -0,0 +1,70 @@
|
||||
================================
|
||||
Stock Lot Unit Move Add Scenario
|
||||
================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.company.tests.tools import create_company
|
||||
>>> from trytond.modules.currency.tests.tools import get_currency
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('stock_lot_unit', create_company)
|
||||
|
||||
Create product::
|
||||
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = 'Product'
|
||||
>>> template.default_uom = unit
|
||||
>>> template.type = 'goods'
|
||||
>>> template.list_price = Decimal('20')
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
Get stock locations::
|
||||
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> storage_loc, = Location.find([('code', '=', 'STO')])
|
||||
>>> customer_loc, = Location.find([('code', '=', 'CUS')])
|
||||
|
||||
Create a move::
|
||||
|
||||
>>> Move = Model.get('stock.move')
|
||||
>>> move = Move()
|
||||
>>> move.from_location = storage_loc
|
||||
>>> move.to_location = customer_loc
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 5
|
||||
>>> move.unit_price = Decimal('20')
|
||||
>>> move.currency = get_currency()
|
||||
>>> move.save()
|
||||
|
||||
Create a lot::
|
||||
|
||||
>>> Lot = Model.get('stock.lot')
|
||||
>>> lot = Lot(number='01', product=product)
|
||||
>>> lot.unit = unit
|
||||
>>> lot.unit_quantity = 1
|
||||
>>> lot.save()
|
||||
|
||||
Add a lot::
|
||||
|
||||
>>> add_lots = move.click('add_lots_wizard')
|
||||
>>> lot = add_lots.form.lots.new()
|
||||
>>> lot.quantity
|
||||
5.0
|
||||
>>> lot.product = product # proteus does not set reverse domain
|
||||
>>> lot.number = '01'
|
||||
>>> assertEqual(lot.unit, unit)
|
||||
>>> lot.unit_quantity
|
||||
1.0
|
||||
>>> lot.quantity
|
||||
1.0
|
||||
13
modules/stock_lot_unit/tests/test_module.py
Normal file
13
modules/stock_lot_unit/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 StockLotUnitTestCase(ModuleTestCase):
|
||||
'Test Stock Lot Unit module'
|
||||
module = 'stock_lot_unit'
|
||||
extras = ['production']
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
8
modules/stock_lot_unit/tests/test_scenario.py
Normal file
8
modules/stock_lot_unit/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)
|
||||
33
modules/stock_lot_unit/tryton.cfg
Normal file
33
modules/stock_lot_unit/tryton.cfg
Normal file
@@ -0,0 +1,33 @@
|
||||
[tryton]
|
||||
version=7.8.0
|
||||
depends:
|
||||
ir
|
||||
res
|
||||
product
|
||||
stock
|
||||
stock_lot
|
||||
extras_depend:
|
||||
production
|
||||
xml:
|
||||
product.xml
|
||||
stock.xml
|
||||
message.xml
|
||||
|
||||
[register]
|
||||
model:
|
||||
product.Template
|
||||
product.Product
|
||||
stock.Lot
|
||||
stock.MoveAddLotsStartLot
|
||||
stock.Move
|
||||
stock.Inventory
|
||||
stock.ShipmentIn
|
||||
stock.ShipmentInReturn
|
||||
stock.ShipmentOut
|
||||
stock.ShipmentOutReturn
|
||||
wizard:
|
||||
stock.InventoryCount
|
||||
|
||||
[register production]
|
||||
model:
|
||||
stock.Production
|
||||
12
modules/stock_lot_unit/view/lot_form.xml
Normal file
12
modules/stock_lot_unit/view/lot_form.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. -->
|
||||
<data>
|
||||
<xpath expr="//field[@name='product']" position="after">
|
||||
<newline/>
|
||||
<label name="unit"/>
|
||||
<field name="unit"/>
|
||||
<label name="unit_quantity"/>
|
||||
<field name="unit_quantity"/>
|
||||
</xpath>
|
||||
</data>
|
||||
9
modules/stock_lot_unit/view/lot_list.xml
Normal file
9
modules/stock_lot_unit/view/lot_list.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?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="//field[@name='product']" position="after">
|
||||
<field name="unit_quantity"/>
|
||||
<field name="unit"/>
|
||||
</xpath>
|
||||
</data>
|
||||
9
modules/stock_lot_unit/view/template_form.xml
Normal file
9
modules/stock_lot_unit/view/template_form.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?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/notebook/page[@name='lot_required']/field[@name='lot_required']" position="after">
|
||||
<label name="lot_uom"/>
|
||||
<field name="lot_uom"/>
|
||||
</xpath>
|
||||
</data>
|
||||
Reference in New Issue
Block a user