first commit
This commit is contained in:
2
modules/stock_supply/__init__.py
Normal file
2
modules/stock_supply/__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.
|
||||
BIN
modules/stock_supply/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
modules/stock_supply/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/stock_supply/__pycache__/exceptions.cpython-311.pyc
Normal file
BIN
modules/stock_supply/__pycache__/exceptions.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/stock_supply/__pycache__/ir.cpython-311.pyc
Normal file
BIN
modules/stock_supply/__pycache__/ir.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/stock_supply/__pycache__/location.cpython-311.pyc
Normal file
BIN
modules/stock_supply/__pycache__/location.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/stock_supply/__pycache__/order_point.cpython-311.pyc
Normal file
BIN
modules/stock_supply/__pycache__/order_point.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/stock_supply/__pycache__/product.cpython-311.pyc
Normal file
BIN
modules/stock_supply/__pycache__/product.cpython-311.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
modules/stock_supply/__pycache__/shipment.cpython-311.pyc
Normal file
BIN
modules/stock_supply/__pycache__/shipment.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/stock_supply/__pycache__/stock.cpython-311.pyc
Normal file
BIN
modules/stock_supply/__pycache__/stock.cpython-311.pyc
Normal file
Binary file not shown.
7
modules/stock_supply/exceptions.py
Normal file
7
modules/stock_supply/exceptions.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.exceptions import UserWarning
|
||||
|
||||
|
||||
class SupplyWarning(UserWarning):
|
||||
pass
|
||||
14
modules/stock_supply/ir.py
Normal file
14
modules/stock_supply/ir.py
Normal file
@@ -0,0 +1,14 @@
|
||||
# The COPYRIGHT file at the top level of this repository contains the full
|
||||
# copyright notices and license terms.
|
||||
from trytond.pool import PoolMeta
|
||||
|
||||
|
||||
class Cron(metaclass=PoolMeta):
|
||||
__name__ = 'ir.cron'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.method.selection.extend([
|
||||
('stock.order_point|supply_stock', "Supply Stock"),
|
||||
])
|
||||
206
modules/stock_supply/locale/bg.po
Normal file
206
modules/stock_supply/locale/bg.po
Normal file
@@ -0,0 +1,206 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Пренареждания"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Местонахождение на провизии"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Фирма"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Местоположение"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Максимално количество"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Минимално количество"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Продукт"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Местонахождение на провизии"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Вид"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Единица"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Местонахождение на склад"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Пренареждания"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Пренареждания"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "All"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Вътрешно"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Управление на покупки"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
"Разрешено е само едно пренареждане за всяка двойка продукт-местонахождение."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Пренареждане"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Вътрешно"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Покупка"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Вид пренареждане"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Информация за продукт"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Създаване"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Отказ"
|
||||
198
modules/stock_supply/locale/ca.po
Normal file
198
modules/stock_supply/locale/ca.po
Normal file
@@ -0,0 +1,198 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Regles de proveïment"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Període de subministre"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Període de subministre"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Ubicació de excessos"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Ubicació de l'aprovisionament"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Ubicació"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Quantitat màxima"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Quantitat mínima"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Ubicació de excessos"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Producte"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Ubicació de l'aprovisionament"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "Quantitat desitjada"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipus"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unitat"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Magatzems"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr "Deixeu-lo buit per no tenir una ubicació d'excessos per defecte."
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr "Deixeu-lo buit per no tenir una ubicació de proveïment per defecte."
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr "Si es deixa en blanc s'utilitzen tots els magatzems."
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Regles de proveïment"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Regles de proveïment"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Regles de proveïment"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Aprovisiona existències"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "Tot"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Intern"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Compra"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr "Existeixen moviments de client endarrerits."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr "Existeixen moviments de proveïdor endarrerits."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"No es pot definir dos regles d'aprovisionament amb ubicacions oposades(\n"
|
||||
"de la \"ubicació d'emmagatzemament\" a la \"ubicació d'aprovisionament\" i viceversa)."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"No es pot definir dos regles d'aprovisionament amb ubicacions oposades\n"
|
||||
"(de la \"ubicació d'emmagatzemament\" a la \"ubicació d'aprovisionament\" i viceversa)."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
"Només es permet una regla de proveïment per cada combinació de producte-"
|
||||
"ubicació."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr "Usuari a les empreses"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Regles de proveïment"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Aprovisiona existències"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "Configuració del període d'aprovisionament en compres"
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Regla d'aprovisionament"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr "Inici aprovisionar existències"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Aprovisiona existències"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Intern"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Compra"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Tipus de regla de proveïment"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Informació del producte"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Aprovisionar existències?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Crea"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel·la"
|
||||
198
modules/stock_supply/locale/cs.po
Normal file
198
modules/stock_supply/locale/cs.po
Normal file
@@ -0,0 +1,198 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "All"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
200
modules/stock_supply/locale/de.po
Normal file
200
modules/stock_supply/locale/de.po
Normal file
@@ -0,0 +1,200 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestellpunkte"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Beschaffungszeitraum"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Beschaffungszeitraum"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Lager für Überschüsse"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Bereitstellungsort"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Unternehmen"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Lagerort"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Maximale Menge"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Minimale Menge"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Lager für Überschüsse"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Artikel"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Bereitstellungsort"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "Zielmenge"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Einheit"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Logistikstandorte"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
"Leer lassen, wenn kein Lagerort für Überschüsse verwendet werden soll."
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
"Leer lassen, wenn kein Standardbereitstellungsort verwendet werden soll."
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr "Leer lassen, um alle Logistikstandorte zu verwenden."
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestellpunkte"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestellpunkte"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestellpunkte"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Waren- und Materialbedarf ermitteln"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "Alle"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Intern"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Einkauf"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr "Einige Warenbewegungen zu Kunden sind verspätet."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr "Einige Warenbewegungen von Lieferanten sind verspätet."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"Zwei Bestellpunkte eines gleichen Artikels mit sich widersprechenden Lagerorten können nicht erstellt werden\n"
|
||||
"(von \"Lagerort für Überschüsse\" zu \"Bereitstellungsort\" und umgekehrt)."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"Zwei Bestellpunkte eines gleichen Artikels mit entgegengesetzten Lagerorten können nicht erstellt werden\n"
|
||||
"(von \"Lagerzone\" zu \"Bereitstellungsort\" und umgekehrt)."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
"Es ist nur ein Bestellpunkt für jede Paarung aus Artikel und Lagerort "
|
||||
"erlaubt."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr "Benutzer in Unternehmen"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestellpunkte"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Waren- und Materialbedarf ermitteln"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "Einkauf Einstellungen Beschaffungszeitraum"
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Lager Bestellpunkt"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr "Waren- und Materialbedarf ermitteln Start"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Waren- und Materialbedarf ermitteln"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Intern"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Einkauf"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Typ Bestellpunkt"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Info"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Waren- und Materialbedarf ermitteln?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Erstellen"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
199
modules/stock_supply/locale/es.po
Normal file
199
modules/stock_supply/locale/es.po
Normal file
@@ -0,0 +1,199 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Reglas de abastecimiento"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Periodo de suministro"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Periodo de suministro"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Ubicación de excesos"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Ubicación del abastecimiento"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Ubicación"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Cantidad máxima"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Cantidad mínima"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Ubicación de excesos"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Producto"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Ubicación del abastecimiento"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "Cantidad deseada"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unidad"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Almacenes"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr "Dejarlo vacío para no tener una ubicación de excesos por defecto."
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
"Dejarlo vacío para no tener una ubicación de abastecimiento por defecto."
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr "Si está vacío se utilizan todos los almacenes."
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Reglas de abastecimiento"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Reglas de abastecimiento"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Reglas de abastecimiento"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Aprovisionar existencias"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "Todo"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Interna"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Compra"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr "Existen movimientos de cliente retrasados."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr "Existen movimientos de proveedor retrasados."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"No se puede definir dos reglas de aprovisionamiento con ubicaciones opuestas\n"
|
||||
"(de la \"ubicación de almacenamiento\" a la \"ubicación del abastecimiento\" y viceversa)."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"No se puede definir dos reglas de aprovisionamiento con ubicaciones opuestas\n"
|
||||
"(de la \"ubicación de almacenamiento\" a la \"ubicación del abastecimiento\" y viceversa)."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
"Sólo se permite una regla de abastecimiento por cada combinación de "
|
||||
"producto-ubicación."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr "Usuario en las empresas"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Reglas de abastecimiento"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Aprovisionar existencias"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "Configuración del periodo de aprovisionamiento en compras"
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Regla de abastecimiento"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr "Inicio aprovisionar existencias"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Aprovisionar existencias"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Interno"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Compra"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Tipo de regla de abastecimiento"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Información del producto"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Aprovisionar existencias?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Crear"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
194
modules/stock_supply/locale/es_419.po
Normal file
194
modules/stock_supply/locale/es_419.po
Normal file
@@ -0,0 +1,194 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Ubicación de la bodega"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Interna"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Interna"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
197
modules/stock_supply/locale/et.po
Normal file
197
modules/stock_supply/locale/et.po
Normal file
@@ -0,0 +1,197 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Tellimiskohad"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Tarneaeg"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Tarneaeg"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Ettevõte"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Asukoht"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Maksimaalne kogus"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Minimaalne kogus"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Toode"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tüüp"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Ühik"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Lao asukoht"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Tellimiskohad"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Tellimiskohad"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Tellimiskohad"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "hanke ladu"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "Kõik"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Sisemine"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Ost"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr "Kasutaja ettevõttes"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Tellimiskohad"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Hanke ladu"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "Hanke seadistus - hanke periood"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Tellimiskohad"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "hanke ladu"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Sisemine"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Ost"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Tellimiskoha tüüp"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Toote info"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Hanke ladu?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Loo"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Tühista"
|
||||
202
modules/stock_supply/locale/fa.po
Normal file
202
modules/stock_supply/locale/fa.po
Normal file
@@ -0,0 +1,202 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "نقاط سفارش"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "دوره عرضه"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "دوره عرضه"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "مکان لبریز شده"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "مکان تأمیین کننده"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "شرکت"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "مکان"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "مقدار حداکثر"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "حداقل مقدار"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "مکان لبریز شده"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "محصول"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "مکان تأمیین کننده"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "مقدار هدف"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "نوع"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "واحد"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "مکان انبار"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr "برای بدون لبریز پیش فرض، خالی بگذارید"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr "برای تأمین کننده غیرپیش فرض خالی بگذارید"
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "نقاط سفارش"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "نقاط سفارش"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "نقاط سفارش"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "عرضه موجودی"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "همه"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "داخلی"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "خرید"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr "برخی از جابجایی مشتری تأخیر دارند."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr "برخی از جابجایی تأمین کننده تأخیر دارند."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"شما نمیتوانید برای هر محصول دو نقطه سفارش با مکان های متفاوت تعریف کنید\n"
|
||||
"(از محل سرریز به محل تأمین و برعکس)."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"شما نمیتوانید برای هر محصول دو نقطه سفارش با مکان های متفاوت تعریف کنید\n"
|
||||
"(از محل ذخیره کالا به محل تأمین و برعکس)."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr "برای هر جفت مکان - محصول فقط یک نقطه سفارش مجاز است."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "نقاط سفارش"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "عرضه موجودی"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "پیکربندی خرید ؛ دوره تامین"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "نقطه سفارش"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "عرضه موجودی"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "داخلی"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "خرید"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "نوع نقطه سفارش"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "اطلاعات محصول"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "عرضه موجودی؟"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "ایجاد"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "انصراف"
|
||||
198
modules/stock_supply/locale/fi.po
Normal file
198
modules/stock_supply/locale/fi.po
Normal file
@@ -0,0 +1,198 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "All"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
198
modules/stock_supply/locale/fr.po
Normal file
198
modules/stock_supply/locale/fr.po
Normal file
@@ -0,0 +1,198 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Règles d'approvisionnement"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Période d'approvisionnement"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Période d'approvisionnement"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Emplacement de surplus"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Emplacement d’approvisionnement"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Emplacement"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Quantité maximale"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Quantité minimale"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Emplacement de surplus"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produit"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Emplacement d'approvisionnement"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "Quantité souhaitée"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unité"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Entrepôts"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr "Laissez vide pour aucun surplus par défaut."
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr "Laissez vide pour aucun approvisionnement par défaut."
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr "Si vide, tous les entrepôts sont utilisés."
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Règles d'approvisionnement"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Règles d'approvisionnement"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Règles d'approvisionnement"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Approvisionner le stock"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "Toutes"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Internes"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Achats"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr "Il y a des mouvements clients qui sont en retard."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr "Il y a des mouvements fournisseurs qui sont en retard."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas définir deux règles d'approvisionnement pour le même produit avec des emplacements opposés\n"
|
||||
"(d' « Emplacement de stockage » à « Emplacement d'approvisionnement » et vice versa)."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas définir deux règles d'approvisionnement pour le même produit avec des emplacements opposés\n"
|
||||
"(d' « Emplacement de stockage » à « Emplacement d'approvisionnement » et vice versa)."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
"Une seule règle d'approvisionnement est autorisée par paire produit-"
|
||||
"emplacement."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr "Utilisateur dans les sociétés"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Règles d'approvisionnement"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Approvisionner le stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "Configuration d'achat Période d'approvisionnement"
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Règle d'approvisionnement"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr "Approvisionnement des stocks Démarrage"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Approvisionner le stock"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Interne"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Achat"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Type de Règle d'approvisionnement"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Info produit"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Approvisionner le stock ?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Créer"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
200
modules/stock_supply/locale/hu.po
Normal file
200
modules/stock_supply/locale/hu.po
Normal file
@@ -0,0 +1,200 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Újrarendelési pontok"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Beszerzési időszak"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Beszerzési időszak"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Felesleg tárhelye"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Beszerzési tárhely"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Cég"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Tárhely"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Maximális készletszint"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Minimális készletszint"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Felesleg tárhelye"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Termék"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Beszerzési tárhely"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "Cél készletszint"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Áruellátás forrása"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Mértékegység"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Raktár"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
"Hagyja üresen, ha nem szeretné a tárhelyen lévő készletet automatikusan "
|
||||
"átvezetni a felesleg tárhelyre."
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
"Hagyja üresen, ha nem szeretne a tárhelyre érkező rendelésekhez "
|
||||
"automatikusan készletet a beszerzési tárhelyről áthozni."
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Újrarendelési pontok"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Újrarendelési pontok"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Újrarendelési pontok"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Áruellátás futtatása"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "összes"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "belső"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "beszállítótól"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr "Némelyik vevőkhöz induló készletmozgás már késésben van."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr "Némelyik beszállítótól érkező készletmozgás már késésben van."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr "Egy termék/tárhely kombinációnak csak egy újrarendelési pontja lehet."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Újrarendelési pontok"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Áruellátás futtatása"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Újrarendelési pont"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Áruellátás futtatása"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "belső"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "beszállítótól"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Áruellátási beállítások"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Termék és mennyiség"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Létrehozza a beszerzési igényeket/belső szállítmányokat?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Létrehozás"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Mégse"
|
||||
193
modules/stock_supply/locale/id.po
Normal file
193
modules/stock_supply/locale/id.po
Normal file
@@ -0,0 +1,193 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Perusahaan"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Lokasi"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produk"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Pembelian"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr "Pengguna di dalam perusahaan"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Pembelian"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Buat"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Batal"
|
||||
204
modules/stock_supply/locale/it.po
Normal file
204
modules/stock_supply/locale/it.po
Normal file
@@ -0,0 +1,204 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Periodo di fornitura"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Periodo di fornitura"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Azienda"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Luogo"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Prodotto"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unità"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Magazzini"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "Tutti"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Acquisto"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Acquisto"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Fornire Stock?"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Creazione"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
207
modules/stock_supply/locale/lo.po
Normal file
207
modules/stock_supply/locale/lo.po
Normal file
@@ -0,0 +1,207 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "ຫ້ອງການ/ສຳນັກງານ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "ບ່ອນຢູ່"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "ຜະລິດຕະພັນ"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "ຮູບແບບ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "ໜ່ວຍ"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "ທັງໝົດ"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "ສັ່ງຊື້"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "ສັ່ງຊື້"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "ສ້າງ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "ຍົກເລີກ"
|
||||
198
modules/stock_supply/locale/lt.po
Normal file
198
modules/stock_supply/locale/lt.po
Normal file
@@ -0,0 +1,198 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Organizacija"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "All"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
196
modules/stock_supply/locale/nl.po
Normal file
196
modules/stock_supply/locale/nl.po
Normal file
@@ -0,0 +1,196 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestel Niveaus"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Leveringstermijn"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Leveringstermijn"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Overloop Locatie"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Bevoorrading Locatie"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Bedrijf"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Locatie"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Maximale Hoeveelheid"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Minimale Hoeveelheid"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Overloop Locatie"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Product"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Bevoorrading Locatie"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "Gewenste Hoeveelheid"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Soort"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Eenheid"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Magazijnen"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr "Laat leeg als er geen locatie wordt gebruikt als overloop."
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr "Laat leeg als er geen locatie wordt gebruikt voor bevoorrading."
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr "Indien leeg worden alle magazijnen gebruikt."
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestel Niveaus"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestel Niveaus"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestel Niveaus"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Voorraad Levering"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "Alle"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Intern"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Inkoop"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr "Er zijn enkele klant mutaties die te laat zijn."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr "Er zijn enkele leveranciers mutaties die te laat zijn."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"U kunt voor hetzelfde product niet twee bestel niveaus met tegenovergestelde locaties definiëren\n"
|
||||
"(van \"Overloop Locatie\" naar \"Bevoorrading Locatie\" en vice versa)."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"U kunt voor hetzelfde product niet twee bestel niveaus met tegenovergestelde locaties definiëren\n"
|
||||
"(van \"Opslag Locatie\" naar \"Bevoorrading Locatie\" en vice versa)."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr "Per product-locatiepaar is slechts één bestel niveau toegestaan."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr "Gebruiker in bedrijven"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Bestel Niveaus"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Voorraad Levering"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "Inkoop configuratie levering periode"
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Bestel niveau"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr "Voorraad aanvullen start"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Voorraad Levering"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Intern"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Inkoop"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Soort Bestel Niveau"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Product Informatie"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Voorraad Inslaan?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Maken"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleer"
|
||||
204
modules/stock_supply/locale/pl.po
Normal file
204
modules/stock_supply/locale/pl.po
Normal file
@@ -0,0 +1,204 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Firma"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Lokalizacja"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Maksymalna ilość"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Minimalna ilość"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produkt"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "Docelowa ilość"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Jednostka"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Lokalizacja magazynu"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "All"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Zakup"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Informacja o produkcie"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Utwórz"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
198
modules/stock_supply/locale/pt.po
Normal file
198
modules/stock_supply/locale/pt.po
Normal file
@@ -0,0 +1,198 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Regras de Abastecimento"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Período de Abastecimento"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Período de Abastecimento"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Localização de Transbordo"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Localização do Abastecimento"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Localização"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Quantidade máxima"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Quantidade mínima"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Localização de Transbordo"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produto"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Localização do Abastecimento"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "Quantidade Alvo"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Unidade"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Armazéns"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr "Deixe vazio para nenhum transbordo padrão."
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr "Deixe vazio para nenhum abastecimento padrão."
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr "Deixe vazio para usar todos os armazéns."
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Pontos de Pedidos"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Pontos de Pedidos"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Pontos de Pedidos"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Estoque de Fornecimento"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "Todos"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Interno"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Compra"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr "Há algumas movimentações de clientes que estão atrasadas."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr "Há algumas movimentações de fornecedores que estão atrasadas."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"Você não pode definir duas regras de abastecimento no mesmo produto com localizações opostas\n"
|
||||
" (de \"Local de Armazenamento\" para \"Local de Transbordo\" e vice versa)."
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"Você não pode definir duas regras de abastecimento no mesmo produto com localizações opostas \n"
|
||||
"(de \"Local de Armazenamento\" para \"Local de Transbordo\" e vice versa)."
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
"Apenas uma regras de abastecimento é permitida para cada par produto-"
|
||||
"localização."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr "Usuário nas companhias"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Pontos de Pedidos"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Estoque de Fornecimento"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "Configurações de Compra Período de Fornecimento"
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Ponto de pedido de estoque"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr "Início Fornecimento de Estoque"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Fornecimento de Estoque"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Interno"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Compra"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Tipo de Regra de Abastecimento"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Informação do Produto"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Abastecer Estoque?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Criar"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
192
modules/stock_supply/locale/ro.po
Normal file
192
modules/stock_supply/locale/ro.po
Normal file
@@ -0,0 +1,192 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Societate"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Produs"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
207
modules/stock_supply/locale/ru.po
Normal file
207
modules/stock_supply/locale/ru.po
Normal file
@@ -0,0 +1,207 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Точки заказа"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Местоположение резервирования"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Организация"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Местоположение"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Максимальное кол-во"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Минимальное кол-во"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Продукт"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Местоположение резервирования"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Тип"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "Единица измерения"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Местополжение на складе"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Точки заказа"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Точки заказа"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "Все"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Внутренний"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Покупки"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
"Возможна только одна точка заказа для каждой пары продукт-местоположение."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Точка заказа"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Внутренний"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Покупки"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Типы точек заказа"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Информация о продукте"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Создать"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Отменить"
|
||||
213
modules/stock_supply/locale/sl.po
Normal file
213
modules/stock_supply/locale/sl.po
Normal file
@@ -0,0 +1,213 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Točke naročanja"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Obdobje dobave"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "Obdobje dobave"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Prelivna lokacija"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Preskrbovalna lokacija"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "Družba"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "Lokacija"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "Največja količina"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "Najmanjša količina"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "Prelivna lokacija"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "Izdelek"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "Preskrbovalna lokacija"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "Ciljna količina"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "Vrsta"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "enota"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Skladišča"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr "Pusti prazno, če ni privzetega preliva"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr "Pusti prazno, če ni privzete preskrbe"
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "All"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"Dveh točk naročanja z nasprotnima lokacijama (iz \"Shrambe\" na "
|
||||
"\"Preskrbovalno lokacijo\" in obratno) ni možno določiti na istem izdelku."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"Dveh točk naročanja z nasprotnima lokacijama (iz \"Shrambe\" na "
|
||||
"\"Preskrbovalno lokacijo\" in obratno) ni možno določiti na istem izdelku."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr "Dovoljena je samo ena točka naročanja za vsak par izdelek - lokacija."
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "Konfiguracija obdobja nabavne dobave"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Točka naročanja"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Interno"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Nabavni nalog"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "Vrsta točke naročanja"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "Podatek o izdelku"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Oskrba zaloge?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "Izdelava"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Prekliči"
|
||||
198
modules/stock_supply/locale/tr.po
Normal file
198
modules/stock_supply/locale/tr.po
Normal file
@@ -0,0 +1,198 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "All"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "Order Points"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "Internal"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "Purchase"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "Supply Stock"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
192
modules/stock_supply/locale/uk.po
Normal file
192
modules/stock_supply/locale/uk.po
Normal file
@@ -0,0 +1,192 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
198
modules/stock_supply/locale/zh_CN.po
Normal file
198
modules/stock_supply/locale/zh_CN.po
Normal file
@@ -0,0 +1,198 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:product.product,order_points:"
|
||||
msgid "Order Points"
|
||||
msgstr "定货点"
|
||||
|
||||
msgctxt "field:purchase.configuration,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "供应周期"
|
||||
|
||||
msgctxt "field:purchase.configuration.supply_period,supply_period:"
|
||||
msgid "Supply Period"
|
||||
msgstr "供应周期"
|
||||
|
||||
msgctxt "field:stock.location,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "溢流库位"
|
||||
|
||||
msgctxt "field:stock.location,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "调配库位"
|
||||
|
||||
msgctxt "field:stock.order_point,company:"
|
||||
msgid "Company"
|
||||
msgstr "公司"
|
||||
|
||||
msgctxt "field:stock.order_point,location:"
|
||||
msgid "Location"
|
||||
msgstr "库位"
|
||||
|
||||
msgctxt "field:stock.order_point,max_quantity:"
|
||||
msgid "Maximal Quantity"
|
||||
msgstr "最大数量"
|
||||
|
||||
msgctxt "field:stock.order_point,min_quantity:"
|
||||
msgid "Minimal Quantity"
|
||||
msgstr "最小数量"
|
||||
|
||||
msgctxt "field:stock.order_point,overflowing_location:"
|
||||
msgid "Overflowing Location"
|
||||
msgstr "溢流库位"
|
||||
|
||||
msgctxt "field:stock.order_point,product:"
|
||||
msgid "Product"
|
||||
msgstr "产品"
|
||||
|
||||
msgctxt "field:stock.order_point,provisioning_location:"
|
||||
msgid "Provisioning Location"
|
||||
msgstr "调配库位"
|
||||
|
||||
msgctxt "field:stock.order_point,target_quantity:"
|
||||
msgid "Target Quantity"
|
||||
msgstr "目标数量"
|
||||
|
||||
msgctxt "field:stock.order_point,type:"
|
||||
msgid "Type"
|
||||
msgstr "类型"
|
||||
|
||||
msgctxt "field:stock.order_point,unit:"
|
||||
msgid "Unit"
|
||||
msgstr "单位"
|
||||
|
||||
msgctxt "field:stock.supply.start,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "仓库"
|
||||
|
||||
msgctxt "help:stock.location,overflowing_location:"
|
||||
msgid "Leave empty for no default overflowing."
|
||||
msgstr "如果为空,则默认不溢流。"
|
||||
|
||||
msgctxt "help:stock.location,provisioning_location:"
|
||||
msgid "Leave empty for no default provisioning."
|
||||
msgstr "如果为空,则默认不调配。"
|
||||
|
||||
msgctxt "help:stock.supply.start,warehouses:"
|
||||
msgid "If empty all warehouses are used."
|
||||
msgstr "如果为空,则使用所有仓库。"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "定货点"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate"
|
||||
msgid "Order Points"
|
||||
msgstr "定货点"
|
||||
|
||||
msgctxt "model:ir.action,name:act_order_point_form_relate2"
|
||||
msgid "Order Points"
|
||||
msgstr "定货点"
|
||||
|
||||
msgctxt "model:ir.action,name:act_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "库存供应"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_all"
|
||||
msgid "All"
|
||||
msgstr "全部"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_internal"
|
||||
msgid "Internal"
|
||||
msgstr "内部周转"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.action.act_window.domain,name:act_order_point_form_domain_purchase"
|
||||
msgid "Purchase"
|
||||
msgstr "采购"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_customer_moves"
|
||||
msgid "There are some customer moves that are late."
|
||||
msgstr "有些客户库存移动晚了。"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_late_supplier_moves"
|
||||
msgid "There are some supplier moves that are late."
|
||||
msgstr "有些供应商的库存移动已经晚了。"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_overflowing_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Overflowing Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"不能为同一产品定义两个位置相反的定货点\n"
|
||||
"(从“存储库位”到“调配库位”,反之亦然)。"
|
||||
|
||||
msgctxt ""
|
||||
"model:ir.message,text:msg_order_point_concurrent_provisioning_location_internal"
|
||||
msgid ""
|
||||
"You cannot define for the same product two order points with opposite locations\n"
|
||||
"(from \"Storage Location\" to \"Provisioning Location\" and vice versa)."
|
||||
msgstr ""
|
||||
"不能为同一产品定义两个位置相反的定货点\n"
|
||||
"(从“存储库位”到“调配库位”,反之亦然)。"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_order_point_unique"
|
||||
msgid "Only one order point is allowed for each product-location pair."
|
||||
msgstr "每个产品库位对只允许一个定货点。"
|
||||
|
||||
msgctxt "model:ir.rule.group,name:rule_group_order_point_companies"
|
||||
msgid "User in companies"
|
||||
msgstr "公司中的用户"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
|
||||
msgid "Order Points"
|
||||
msgstr "定货点"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_stock_supply"
|
||||
msgid "Supply Stock"
|
||||
msgstr "库存供应"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:purchase.configuration.supply_period,string:"
|
||||
msgid "Purchase Configuration Supply Period"
|
||||
msgstr "采购设置-供应周期"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:stock.order_point,string:"
|
||||
msgid "Stock Order Point"
|
||||
msgstr "定货点"
|
||||
|
||||
msgctxt "model:stock.supply.start,string:"
|
||||
msgid "Stock Supply Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Supply Stock"
|
||||
msgstr "库存供应"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Internal"
|
||||
msgstr "内部周转"
|
||||
|
||||
msgctxt "selection:stock.order_point,type:"
|
||||
msgid "Purchase"
|
||||
msgstr "采购"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Order Point Type"
|
||||
msgstr "定货点类型"
|
||||
|
||||
msgctxt "view:stock.order_point:"
|
||||
msgid "Product Info"
|
||||
msgstr "产品信息"
|
||||
|
||||
msgctxt "view:stock.supply.start:"
|
||||
msgid "Supply Stock?"
|
||||
msgstr "库存供应?"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,create_:"
|
||||
msgid "Create"
|
||||
msgstr "创建"
|
||||
|
||||
msgctxt "wizard_button:stock.supply,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
64
modules/stock_supply/location.py
Normal file
64
modules/stock_supply/location.py
Normal file
@@ -0,0 +1,64 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import datetime
|
||||
|
||||
from trytond.model import fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
|
||||
|
||||
class Location(metaclass=PoolMeta):
|
||||
__name__ = 'stock.location'
|
||||
|
||||
provisioning_location = fields.Many2One('stock.location',
|
||||
'Provisioning Location',
|
||||
states={
|
||||
'invisible': Eval('type') != 'storage',
|
||||
},
|
||||
domain=[
|
||||
('type', 'in', ['storage', 'view']),
|
||||
],
|
||||
help='Leave empty for no default provisioning.')
|
||||
overflowing_location = fields.Many2One('stock.location',
|
||||
'Overflowing Location',
|
||||
states={
|
||||
'invisible': Eval('type') != 'storage',
|
||||
},
|
||||
domain=[
|
||||
('type', 'in', ['storage', 'view']),
|
||||
],
|
||||
help='Leave empty for no default overflowing.')
|
||||
|
||||
|
||||
class LocationLeadTime(metaclass=PoolMeta):
|
||||
__name__ = 'stock.location.lead_time'
|
||||
|
||||
@classmethod
|
||||
def get_max_lead_time(cls):
|
||||
"""Return the biggest lead time
|
||||
increased by the maximum extra lead times"""
|
||||
lead_time = datetime.timedelta(0)
|
||||
lead_times = cls.search([])
|
||||
if lead_times:
|
||||
lead_time = sum(
|
||||
(r.lead_time for r in lead_times if r.lead_time),
|
||||
datetime.timedelta(0))
|
||||
extra_lead_times = cls._get_extra_lead_times()
|
||||
if extra_lead_times:
|
||||
lead_time += max(extra_lead_times)
|
||||
return lead_time
|
||||
|
||||
@classmethod
|
||||
def _get_extra_lead_times(cls):
|
||||
'Return a list of extra lead time'
|
||||
pool = Pool()
|
||||
ProductSupplier = pool.get('purchase.product_supplier')
|
||||
extra = []
|
||||
|
||||
product_suppliers = ProductSupplier.search(
|
||||
[('lead_time', '!=', None)],
|
||||
order=[('lead_time', 'DESC')], limit=1)
|
||||
if product_suppliers:
|
||||
product_supplier, = product_suppliers
|
||||
extra.append(product_supplier.lead_time)
|
||||
return extra
|
||||
12
modules/stock_supply/location.xml
Normal file
12
modules/stock_supply/location.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="location_view_form">
|
||||
<field name="model">stock.location</field>
|
||||
<field name="inherit" ref="stock.location_view_form"/>
|
||||
<field name="name">location_form</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
24
modules/stock_supply/message.xml
Normal file
24
modules/stock_supply/message.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 grouped="1">
|
||||
<record model="ir.message" id="msg_order_point_unique">
|
||||
<field name="text">Only one order point is allowed for each product-location pair.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_order_point_concurrent_provisioning_location_internal">
|
||||
<field name="text">You cannot define for the same product two order points with opposite locations
|
||||
(from "Storage Location" to "Provisioning Location" and vice versa).</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_order_point_concurrent_overflowing_location_internal">
|
||||
<field name="text">You cannot define for the same product two order points with opposite locations
|
||||
(from "Overflowing Location" to "Provisioning Location" and vice versa).</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_late_supplier_moves">
|
||||
<field name="text">There are some supplier moves that are late.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_late_customer_moves">
|
||||
<field name="text">There are some customer moves that are late.</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
205
modules/stock_supply/order_point.py
Normal file
205
modules/stock_supply/order_point.py
Normal file
@@ -0,0 +1,205 @@
|
||||
# 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 sql import Null
|
||||
from sql.conditionals import Greatest, Least
|
||||
from sql.operators import Equal
|
||||
|
||||
from trytond.model import Exclude, ModelSQL, ModelView, Unique, fields
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Eval, If
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class OrderPoint(ModelSQL, ModelView):
|
||||
"""
|
||||
Provide a way to define a supply policy for each
|
||||
product on each locations. Order points on warehouse are
|
||||
considered by the supply scheduler to generate purchase requests.
|
||||
"""
|
||||
__name__ = 'stock.order_point'
|
||||
product = fields.Many2One(
|
||||
'product.product', "Product", required=True,
|
||||
domain=[
|
||||
('type', '=', 'goods'),
|
||||
('consumable', '=', False),
|
||||
('purchasable', 'in',
|
||||
If(Eval('type') == 'purchase',
|
||||
[True],
|
||||
[True, False])),
|
||||
],
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends={'company'})
|
||||
location = fields.Many2One(
|
||||
'stock.location', "Location", required=True,
|
||||
domain=[
|
||||
If(Eval('type') == 'internal',
|
||||
('type', '=', 'storage'),
|
||||
('type', '=', 'warehouse')),
|
||||
])
|
||||
provisioning_location = fields.Many2One(
|
||||
'stock.location', 'Provisioning Location',
|
||||
domain=[('type', 'in', ['storage', 'view'])],
|
||||
states={
|
||||
'invisible': Eval('type') != 'internal',
|
||||
'required': ((Eval('type') == 'internal')
|
||||
& (Eval('min_quantity', None) != None)), # noqa: E711
|
||||
})
|
||||
overflowing_location = fields.Many2One(
|
||||
'stock.location', 'Overflowing Location',
|
||||
domain=[('type', 'in', ['storage', 'view'])],
|
||||
states={
|
||||
'invisible': Eval('type') != 'internal',
|
||||
'required': ((Eval('type') == 'internal')
|
||||
& (Eval('max_quantity', None) != None)), # noqa: E711
|
||||
})
|
||||
type = fields.Selection(
|
||||
[('internal', 'Internal'),
|
||||
('purchase', 'Purchase')],
|
||||
"Type", required=True)
|
||||
min_quantity = fields.Float(
|
||||
"Minimal Quantity", digits='unit',
|
||||
states={
|
||||
# required for purchase and production types
|
||||
'required': Eval('type') != 'internal',
|
||||
},
|
||||
domain=['OR',
|
||||
('min_quantity', '=', None),
|
||||
('min_quantity', '<=', Eval('target_quantity', 0)),
|
||||
])
|
||||
target_quantity = fields.Float(
|
||||
"Target Quantity", digits='unit', required=True,
|
||||
domain=[
|
||||
['OR',
|
||||
('min_quantity', '=', None),
|
||||
('target_quantity', '>=', Eval('min_quantity', 0)),
|
||||
],
|
||||
['OR',
|
||||
('max_quantity', '=', None),
|
||||
('target_quantity', '<=', Eval('max_quantity', 0)),
|
||||
],
|
||||
])
|
||||
max_quantity = fields.Float(
|
||||
"Maximal Quantity", digits='unit',
|
||||
states={
|
||||
'invisible': Eval('type') != 'internal',
|
||||
},
|
||||
domain=['OR',
|
||||
('max_quantity', '=', None),
|
||||
('max_quantity', '>=', Eval('target_quantity', 0)),
|
||||
])
|
||||
company = fields.Many2One('company.company', 'Company', required=True)
|
||||
unit = fields.Function(fields.Many2One('product.uom', 'Unit'), 'get_unit')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
|
||||
t = cls.__table__()
|
||||
for location_name in [
|
||||
'provisioning_location', 'overflowing_location']:
|
||||
column = getattr(t, location_name)
|
||||
cls._sql_constraints.append(
|
||||
('concurrent_%s_internal' % location_name,
|
||||
Exclude(t,
|
||||
(t.product, Equal),
|
||||
(Greatest(t.location, column), Equal),
|
||||
(Least(t.location, column), Equal),
|
||||
(t.company, Equal),
|
||||
where=t.type == 'internal'),
|
||||
'stock_supply.msg_order_point_concurrent_%s_internal' %
|
||||
location_name))
|
||||
cls._sql_constraints.append(
|
||||
('product_location_purchase_unique',
|
||||
Unique(t, t.product, t.location, t.company),
|
||||
'stock_supply.msg_order_point_unique'))
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module):
|
||||
table = cls.__table__()
|
||||
table_h = cls.__table_handler__(module)
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
super().__register__(module)
|
||||
|
||||
# Migration from 7.2: merge warehouse_location and storage_location
|
||||
if table_h.column_exist('warehouse_location'):
|
||||
cursor.execute(*table.update(
|
||||
[table.location],
|
||||
[table.warehouse_location],
|
||||
where=(table.location == Null)
|
||||
& (table.warehouse_location != Null)))
|
||||
table_h.drop_column('warehouse_location')
|
||||
if table_h.column_exist('storage_location'):
|
||||
cursor.execute(*table.update(
|
||||
[table.location],
|
||||
[table.storage_location],
|
||||
where=(table.location == Null)
|
||||
& (table.storage_location != Null)))
|
||||
table_h.drop_column('storage_location')
|
||||
|
||||
@staticmethod
|
||||
def default_type():
|
||||
return "purchase"
|
||||
|
||||
@fields.depends('type', 'location')
|
||||
def on_change_type(self):
|
||||
if self.type == 'internal' and self.location:
|
||||
if self.location.type != 'storage':
|
||||
self.location = None
|
||||
elif self.location:
|
||||
if self.location.type != 'warehouse':
|
||||
self.location = None
|
||||
|
||||
@classmethod
|
||||
def default_location(cls):
|
||||
return Pool().get('stock.location').get_default_warehouse()
|
||||
|
||||
@fields.depends('product', '_parent_product.default_uom')
|
||||
def on_change_product(self):
|
||||
self.unit = None
|
||||
if self.product:
|
||||
self.unit = self.product.default_uom
|
||||
|
||||
def get_unit(self, name):
|
||||
return self.product.default_uom.id
|
||||
|
||||
@property
|
||||
def warehouse_location(self):
|
||||
if self.type == 'purchase':
|
||||
return self.location
|
||||
|
||||
@property
|
||||
def storage_location(self):
|
||||
if self.type == 'internal':
|
||||
return self.location
|
||||
|
||||
def get_rec_name(self, name):
|
||||
return "%s @ %s" % (self.product.name, self.location.name)
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
_, operator, value = clause
|
||||
if operator.startswith('!') or operator.startswith('not '):
|
||||
bool_op = 'AND'
|
||||
else:
|
||||
bool_op = 'OR'
|
||||
return [bool_op,
|
||||
('location.rec_name', *clause[1:]),
|
||||
('product.rec_name', *clause[1:]),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def default_company():
|
||||
return Transaction().context.get('company')
|
||||
|
||||
@classmethod
|
||||
def supply_stock(cls):
|
||||
pool = Pool()
|
||||
StockSupply = pool.get('stock.supply', type='wizard')
|
||||
session_id, _, _ = StockSupply.create()
|
||||
StockSupply.execute(session_id, {}, 'create_')
|
||||
StockSupply.delete(session_id)
|
||||
85
modules/stock_supply/order_point.xml
Normal file
85
modules/stock_supply/order_point.xml
Normal file
@@ -0,0 +1,85 @@
|
||||
<?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="order_point_view_form">
|
||||
<field name="model">stock.order_point</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">order_point_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="order_point_view_tree">
|
||||
<field name="model">stock.order_point</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">order_point_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_order_point_form">
|
||||
<field name="name">Order Points</field>
|
||||
<field name="res_model">stock.order_point</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_order_point_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="order_point_view_tree"/>
|
||||
<field name="act_window" ref="act_order_point_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_order_point_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="order_point_view_form"/>
|
||||
<field name="act_window" ref="act_order_point_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.domain"
|
||||
id="act_order_point_form_domain_purchase">
|
||||
<field name="name">Purchase</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="domain" eval="[('type', '=', 'purchase')]" pyson="1"/>
|
||||
<field name="act_window" ref="act_order_point_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.domain"
|
||||
id="act_order_point_form_domain_internal">
|
||||
<field name="name">Internal</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="domain" eval="[('type', '=', 'internal')]" pyson="1"/>
|
||||
<field name="act_window" ref="act_order_point_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.domain"
|
||||
id="act_order_point_form_domain_all">
|
||||
<field name="name">All</field>
|
||||
<field name="sequence" eval="9999"/>
|
||||
<field name="act_window" ref="act_order_point_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="stock.menu_stock"
|
||||
sequence="50"
|
||||
action="act_order_point_form"
|
||||
id="menu_order_point_form"/>
|
||||
|
||||
<record model="ir.model.access" id="access_order_point">
|
||||
<field name="model">stock.order_point</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_order_point_admin">
|
||||
<field name="model">stock.order_point</field>
|
||||
<field name="group" ref="stock.group_stock_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_order_point_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">stock.order_point</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_order_point_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_order_point_companies"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
31
modules/stock_supply/product.py
Normal file
31
modules/stock_supply/product.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import datetime
|
||||
|
||||
from trytond.model import fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
|
||||
|
||||
class Product(metaclass=PoolMeta):
|
||||
__name__ = "product.product"
|
||||
order_points = fields.One2Many(
|
||||
'stock.order_point', 'product', "Order Points", readonly=True)
|
||||
|
||||
@classmethod
|
||||
def copy(cls, products, default=None):
|
||||
default = default.copy() if default is not None else {}
|
||||
default.setdefault('order_points', None)
|
||||
return super().copy(products, default=default)
|
||||
|
||||
|
||||
class ProductSupplier(metaclass=PoolMeta):
|
||||
__name__ = 'purchase.product_supplier'
|
||||
|
||||
def get_supply_period(self):
|
||||
'Return the supply period for the purchase request'
|
||||
pool = Pool()
|
||||
Configuration = pool.get('purchase.configuration')
|
||||
config = Configuration(1)
|
||||
supply_period = config.get_multivalue(
|
||||
'supply_period', company=self.company.id)
|
||||
return supply_period or datetime.timedelta(1)
|
||||
32
modules/stock_supply/product.xml
Normal file
32
modules/stock_supply/product.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
<record model="ir.action.act_window" id="act_order_point_form_relate">
|
||||
<field name="name">Order Points</field>
|
||||
<field name="res_model">stock.order_point</field>
|
||||
<field name="domain"
|
||||
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('product', '=', Eval('active_id')), ('product', 'in', Eval('active_ids')))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_order_point_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">product.product,-1</field>
|
||||
<field name="action" ref="act_order_point_form_relate"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_order_point_form_relate2">
|
||||
<field name="name">Order Points</field>
|
||||
<field name="res_model">stock.order_point</field>
|
||||
<field name="domain"
|
||||
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('product.template', '=', Eval('active_id')), ('product.template', 'in', Eval('active_ids')))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_order_point_keyword2">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">product.template,-1</field>
|
||||
<field name="action" ref="act_order_point_form_relate2"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
365
modules/stock_supply/purchase_request.py
Normal file
365
modules/stock_supply/purchase_request.py
Normal file
@@ -0,0 +1,365 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import datetime
|
||||
import operator
|
||||
from collections import defaultdict
|
||||
|
||||
from trytond.model import ModelSQL, ValueMixin, fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import TimeDelta
|
||||
from trytond.tools import grouped_slice
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
supply_period = fields.TimeDelta(
|
||||
"Supply Period",
|
||||
domain=['OR',
|
||||
('supply_period', '=', None),
|
||||
('supply_period', '>=', TimeDelta()),
|
||||
])
|
||||
|
||||
|
||||
class PurchaseConfiguration(metaclass=PoolMeta):
|
||||
__name__ = 'purchase.configuration'
|
||||
supply_period = fields.MultiValue(supply_period)
|
||||
|
||||
|
||||
class PurchaseConfigurationSupplyPeriod(ModelSQL, ValueMixin):
|
||||
__name__ = 'purchase.configuration.supply_period'
|
||||
supply_period = supply_period
|
||||
|
||||
|
||||
class PurchaseRequest(metaclass=PoolMeta):
|
||||
__name__ = 'purchase.request'
|
||||
|
||||
@classmethod
|
||||
def _get_origin(cls):
|
||||
origins = super()._get_origin()
|
||||
return origins | {'stock.order_point'}
|
||||
|
||||
@classmethod
|
||||
def generate_requests(cls, products=None, warehouses=None):
|
||||
"""
|
||||
For each product compute the purchase request that must be
|
||||
created today to meet product outputs.
|
||||
|
||||
If products is specified it will compute the purchase requests
|
||||
for the selected products.
|
||||
|
||||
If warehouses is specified it will compute the purchase request
|
||||
necessary for the selected warehouses.
|
||||
"""
|
||||
pool = Pool()
|
||||
Product = pool.get('product.product')
|
||||
Location = pool.get('stock.location')
|
||||
User = pool.get('res.user')
|
||||
company = User(Transaction().user).company
|
||||
if not company:
|
||||
return
|
||||
|
||||
if not warehouses:
|
||||
# fetch warehouses:
|
||||
warehouses = Location.search([
|
||||
('type', '=', 'warehouse'),
|
||||
])
|
||||
warehouse_ids = [w.id for w in warehouses]
|
||||
|
||||
if products is None:
|
||||
# fetch goods and assets
|
||||
# ordered by ids to speedup reduce_ids in products_by_location
|
||||
products = Product.search([
|
||||
('type', 'in', ['goods', 'assets']),
|
||||
('consumable', '=', False),
|
||||
('purchasable', '=', True),
|
||||
], order=[('id', 'ASC')])
|
||||
# aggregate product by minimum supply date
|
||||
date2products = defaultdict(list)
|
||||
for product in products:
|
||||
min_date, max_date = cls.get_supply_dates(
|
||||
product, company=company.id)
|
||||
date2products[min_date, max_date].append(product)
|
||||
|
||||
# compute requests
|
||||
new_requests = []
|
||||
for (min_date, max_date), dates_products in date2products.items():
|
||||
for sub_products in grouped_slice(dates_products):
|
||||
sub_products = Product.browse(sub_products)
|
||||
|
||||
product2ops = {}
|
||||
product2ops_other = {}
|
||||
for product in sub_products:
|
||||
for order_point in product.order_points:
|
||||
if (order_point.company != company
|
||||
or not order_point.warehouse_location):
|
||||
continue
|
||||
if order_point.type == 'purchase':
|
||||
dict_ = product2ops
|
||||
else:
|
||||
dict_ = product2ops_other
|
||||
dict_[
|
||||
(order_point.warehouse_location.id,
|
||||
order_point.product.id)
|
||||
] = order_point
|
||||
|
||||
product_ids = [p.id for p in sub_products]
|
||||
with Transaction().set_context(
|
||||
forecast=True,
|
||||
stock_date_end=min_date):
|
||||
pbl = Product.products_by_location(warehouse_ids,
|
||||
with_childs=True, grouping_filter=(product_ids,))
|
||||
for warehouse_id in warehouse_ids:
|
||||
min_date_qties = defaultdict(int,
|
||||
((x, pbl.pop((warehouse_id, x), 0))
|
||||
for x in product_ids))
|
||||
# Do not compute shortage for product
|
||||
# with different order point
|
||||
product_ids = [
|
||||
p.id for p in sub_products
|
||||
if (warehouse_id, p.id) not in product2ops_other]
|
||||
# Search for shortage between min-max
|
||||
shortages = cls.get_shortage(
|
||||
warehouse_id, product_ids, min_date, max_date,
|
||||
min_date_qties=min_date_qties,
|
||||
order_points=product2ops)
|
||||
|
||||
for product in sub_products:
|
||||
if product.id not in shortages:
|
||||
continue
|
||||
shortage_date, product_quantity = shortages[product.id]
|
||||
if shortage_date is None or product_quantity is None:
|
||||
continue
|
||||
order_point = product2ops.get(
|
||||
(warehouse_id, product.id))
|
||||
# generate request values
|
||||
request = cls.compute_request(product,
|
||||
warehouse_id, shortage_date, product_quantity,
|
||||
company, order_point)
|
||||
new_requests.append(request)
|
||||
|
||||
# delete purchase requests without a purchase line
|
||||
products = set(products)
|
||||
reqs = cls.search([
|
||||
('state', '=', 'draft'),
|
||||
('purchase_line', '=', None),
|
||||
('company', '=', company.id),
|
||||
('origin', 'like', 'stock.order_point,%'),
|
||||
])
|
||||
reqs = [r for r in reqs
|
||||
if r.product in products and r.warehouse in warehouses]
|
||||
cls.delete(reqs)
|
||||
new_requests = cls.compare_requests(new_requests, company)
|
||||
|
||||
cls.create_requests(new_requests)
|
||||
|
||||
@classmethod
|
||||
def create_requests(cls, new_requests):
|
||||
to_save = []
|
||||
for new_req in new_requests:
|
||||
if new_req.supply_date == datetime.date.max:
|
||||
new_req.supply_date = None
|
||||
if new_req.computed_quantity > 0:
|
||||
to_save.append(new_req)
|
||||
cls.save(to_save)
|
||||
|
||||
@classmethod
|
||||
def compare_requests(cls, new_requests, company):
|
||||
"""
|
||||
Compare new_requests with already existing request to avoid
|
||||
to re-create existing requests.
|
||||
"""
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
Request = pool.get('purchase.request')
|
||||
|
||||
requests = Request.search([
|
||||
('product', '!=', None),
|
||||
('purchase_line', '!=', None),
|
||||
('purchase_line.moves', '=', None),
|
||||
('purchase_line.purchase.state', '!=', 'cancelled'),
|
||||
('company', '=', company.id),
|
||||
('origin', 'like', 'stock.order_point,%'),
|
||||
])
|
||||
# Fetch data from existing requests
|
||||
existing_req = {}
|
||||
for request in requests:
|
||||
pline = request.purchase_line
|
||||
# Skip incoherent request
|
||||
if (request.product != pline.product
|
||||
or request.warehouse != pline.purchase.warehouse):
|
||||
continue
|
||||
# Take smallest amount between request and purchase line
|
||||
pline_qty = Uom.compute_qty(pline.unit, pline.quantity,
|
||||
pline.product.default_uom, round=False)
|
||||
quantity = min(request.computed_quantity, pline_qty)
|
||||
|
||||
existing_req.setdefault(
|
||||
(request.product.id, request.warehouse.id),
|
||||
[]).append({
|
||||
'supply_date': (
|
||||
request.supply_date or datetime.date.max),
|
||||
'quantity': quantity,
|
||||
})
|
||||
|
||||
for i in existing_req.values():
|
||||
i.sort(key=lambda r: r['supply_date'])
|
||||
|
||||
# Update new requests to take existing requests into account
|
||||
new_requests.sort(key=operator.attrgetter('supply_date'))
|
||||
for new_req in new_requests:
|
||||
for old_req in existing_req.get(
|
||||
(new_req.product.id, new_req.warehouse.id), []):
|
||||
if old_req['supply_date'] <= new_req.supply_date:
|
||||
new_req.computed_quantity = max(0.0,
|
||||
new_req.computed_quantity - old_req['quantity'])
|
||||
new_req.quantity = Uom.compute_qty(
|
||||
new_req.product.default_uom, new_req.computed_quantity,
|
||||
new_req.unit, round=False)
|
||||
new_req.quantity = new_req.unit.ceil(new_req.quantity)
|
||||
old_req['quantity'] = max(0.0,
|
||||
old_req['quantity'] - new_req.computed_quantity)
|
||||
else:
|
||||
break
|
||||
|
||||
return new_requests
|
||||
|
||||
@classmethod
|
||||
def get_supply_dates(cls, product, **pattern):
|
||||
"""
|
||||
Return the interval of earliest supply dates for a product.
|
||||
"""
|
||||
Date = Pool().get('ir.date')
|
||||
|
||||
min_date = None
|
||||
max_date = None
|
||||
today = Date.today()
|
||||
|
||||
for product_supplier in product.product_suppliers_used(**pattern):
|
||||
supply_date = product_supplier.compute_supply_date(date=today)
|
||||
if supply_date == datetime.date.max:
|
||||
continue
|
||||
next_day = today + product_supplier.get_supply_period()
|
||||
next_supply_date = product_supplier.compute_supply_date(
|
||||
date=next_day)
|
||||
if (not min_date) or supply_date < min_date:
|
||||
min_date = supply_date
|
||||
if (not max_date) or next_supply_date > max_date:
|
||||
max_date = next_supply_date
|
||||
|
||||
if not min_date:
|
||||
min_date = datetime.date.max
|
||||
max_date = datetime.date.max
|
||||
|
||||
return (min_date, max_date)
|
||||
|
||||
@classmethod
|
||||
def compute_request(cls, product, location_id, shortage_date,
|
||||
product_quantity, company, order_point=None,
|
||||
supplier_pattern=None):
|
||||
"""
|
||||
Return the value of the purchase request which will answer to
|
||||
the needed quantity at the given date. I.e: the latest
|
||||
purchase date, the expected supply date and the prefered
|
||||
supplier.
|
||||
"""
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
Request = pool.get('purchase.request')
|
||||
|
||||
if supplier_pattern is None:
|
||||
supplier_pattern = {}
|
||||
else:
|
||||
supplier_pattern = supplier_pattern.copy()
|
||||
supplier_pattern['company'] = company.id
|
||||
|
||||
supplier, purchase_date = cls.find_best_supplier(product,
|
||||
shortage_date, **supplier_pattern)
|
||||
|
||||
unit = product.purchase_uom or product.default_uom
|
||||
target_quantity = order_point.target_quantity if order_point else 0.0
|
||||
computed_quantity = target_quantity - product_quantity
|
||||
product_quantity = unit.ceil(product_quantity)
|
||||
quantity = Uom.compute_qty(
|
||||
product.default_uom, computed_quantity, unit, round=False)
|
||||
quantity = unit.ceil(quantity)
|
||||
|
||||
if order_point:
|
||||
origin = 'stock.order_point,%s' % order_point.id
|
||||
else:
|
||||
origin = 'stock.order_point,-1'
|
||||
return Request(product=product,
|
||||
party=supplier and supplier or None,
|
||||
quantity=quantity,
|
||||
unit=unit,
|
||||
computed_quantity=computed_quantity,
|
||||
computed_unit=product.default_uom,
|
||||
purchase_date=purchase_date,
|
||||
supply_date=shortage_date,
|
||||
stock_level=product_quantity,
|
||||
company=company,
|
||||
warehouse=location_id,
|
||||
origin=origin,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_shortage(cls, location_id, product_ids, min_date, max_date,
|
||||
min_date_qties, order_points):
|
||||
"""
|
||||
Return for each product the first date between min_date and max_date
|
||||
where the stock quantity is less than the minimal quantity and the
|
||||
smallest stock quantity in the interval or None if there is no date
|
||||
where stock quantity is less than the minimal quantity.
|
||||
|
||||
The minimal quantity comes from the order point or is zero.
|
||||
|
||||
min_date_qty is the quantities for each products at the min_date.
|
||||
order_points is a dictionary that links products to order point.
|
||||
"""
|
||||
Product = Pool().get('product.product')
|
||||
|
||||
res_dates = {}
|
||||
res_qties = {}
|
||||
|
||||
min_quantities = defaultdict(float)
|
||||
for product_id in product_ids:
|
||||
order_point = order_points.get((location_id, product_id))
|
||||
if order_point:
|
||||
min_quantities[product_id] = order_point.min_quantity
|
||||
|
||||
with Transaction().set_context(
|
||||
forecast=True,
|
||||
stock_date_start=min_date,
|
||||
stock_date_end=max_date):
|
||||
pbl = Product.products_by_location(
|
||||
[location_id], with_childs=True,
|
||||
grouping=('date', 'product'),
|
||||
grouping_filter=(None, product_ids))
|
||||
pbl_dates = defaultdict(dict)
|
||||
for key, qty in pbl.items():
|
||||
date, product_id = key[1:]
|
||||
pbl_dates[date][product_id] = qty
|
||||
|
||||
current_date = min_date
|
||||
current_qties = min_date_qties.copy()
|
||||
products_to_check = product_ids.copy()
|
||||
while (current_date < max_date) or (current_date == min_date):
|
||||
for product_id in products_to_check:
|
||||
current_qty = current_qties[product_id]
|
||||
min_quantity = min_quantities[product_id]
|
||||
res_qty = res_qties.get(product_id)
|
||||
res_date = res_dates.get(product_id)
|
||||
if min_quantity is not None and current_qty < min_quantity:
|
||||
if not res_date:
|
||||
res_dates[product_id] = current_date
|
||||
if (not res_qty) or (current_qty < res_qty):
|
||||
res_qties[product_id] = current_qty
|
||||
|
||||
if current_date == datetime.date.max:
|
||||
break
|
||||
current_date += datetime.timedelta(1)
|
||||
|
||||
pbl = pbl_dates[current_date]
|
||||
products_to_check.clear()
|
||||
for product_id, qty in pbl.items():
|
||||
current_qties[product_id] += qty
|
||||
products_to_check.append(product_id)
|
||||
|
||||
return {x: (res_dates.get(x), res_qties.get(x)) for x in product_ids}
|
||||
21
modules/stock_supply/purchase_request.xml
Normal file
21
modules/stock_supply/purchase_request.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?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="purchase_configuration_view_form">
|
||||
<field name="model">purchase.configuration</field>
|
||||
<field name="inherit" ref="purchase.purchase_configuration_view_form"/>
|
||||
<field name="name">purchase_configuration_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_purchase_request_stock">
|
||||
<field name="model">purchase.request</field>
|
||||
<field name="group" ref="stock.group_stock_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
198
modules/stock_supply/shipment.py
Normal file
198
modules/stock_supply/shipment.py
Normal file
@@ -0,0 +1,198 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import datetime
|
||||
from collections import defaultdict
|
||||
|
||||
from trytond.model import ModelSQL, ModelView
|
||||
from trytond.pool import Pool
|
||||
from trytond.tools import grouped_slice
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class ShipmentInternal(ModelSQL, ModelView):
|
||||
__name__ = 'stock.shipment.internal'
|
||||
|
||||
@classmethod
|
||||
def generate_internal_shipment(cls, clean=True, warehouses=None):
|
||||
"""
|
||||
Generate internal shipments to meet order points defined on
|
||||
non-warehouse location.
|
||||
|
||||
If clean is set, it will remove all previous requests.
|
||||
"""
|
||||
pool = Pool()
|
||||
OrderPoint = pool.get('stock.order_point')
|
||||
Location = pool.get('stock.location')
|
||||
Product = pool.get('product.product')
|
||||
Date = pool.get('ir.date')
|
||||
User = pool.get('res.user')
|
||||
Move = pool.get('stock.move')
|
||||
LeadTime = pool.get('stock.location.lead_time')
|
||||
company = User(Transaction().user).company
|
||||
if not company:
|
||||
return
|
||||
|
||||
implicit_location_domain = [
|
||||
['OR',
|
||||
('provisioning_location', '!=', None),
|
||||
('overflowing_location', '!=', None),
|
||||
],
|
||||
('type', '=', 'storage'),
|
||||
]
|
||||
clean_request_domain = [
|
||||
('state', '=', 'request'),
|
||||
('company', '=', company.id),
|
||||
]
|
||||
order_point_domain = [
|
||||
('type', '=', 'internal'),
|
||||
('company', '=', company.id),
|
||||
]
|
||||
if not warehouses:
|
||||
warehouses = Location.search([
|
||||
('type', '=', 'warehouse'),
|
||||
])
|
||||
else:
|
||||
implicit_location_domain.append(('parent', 'child_of', warehouses))
|
||||
clean_request_domain.append(
|
||||
['OR',
|
||||
('to_location.parent', 'child_of', warehouses),
|
||||
('from_location.parent', 'child_of', warehouses),
|
||||
])
|
||||
order_point_domain.append(
|
||||
('location.parent', 'child_of', warehouses))
|
||||
|
||||
today = Date.today()
|
||||
lead_time = LeadTime.get_max_lead_time()
|
||||
|
||||
if clean:
|
||||
cls.delete(cls.search(clean_request_domain))
|
||||
|
||||
# fetch quantities on order points
|
||||
order_points = OrderPoint.search(order_point_domain)
|
||||
id2product = {}
|
||||
product2op = {}
|
||||
id2location = {}
|
||||
for op in order_points:
|
||||
id2product[op.product.id] = op.product
|
||||
product2op[
|
||||
(op.storage_location.id, op.product.id)
|
||||
] = op
|
||||
id2location[op.storage_location.id] = op.storage_location
|
||||
implicit_locations = Location.search(implicit_location_domain)
|
||||
id2location.update({l.id: l for l in implicit_locations})
|
||||
location_ids = list(id2location.keys())
|
||||
|
||||
def get_pbl(start, end, grouping_filter):
|
||||
with Transaction().set_context(
|
||||
forecast=True, stock_date_start=start, stock_date_end=end):
|
||||
return Product.products_by_location(
|
||||
location_ids, with_childs=True,
|
||||
grouping_filter=grouping_filter)
|
||||
|
||||
# ordered by ids to speedup reduce_ids in products_by_location
|
||||
if implicit_locations:
|
||||
products = Product.search([
|
||||
('type', 'in', ['goods', 'assets']),
|
||||
], order=[('id', 'ASC')])
|
||||
product_ids = [p.id for p in products]
|
||||
pbl = get_pbl(None, today, None)
|
||||
else:
|
||||
product_ids = list(id2product.keys())
|
||||
product_ids.sort()
|
||||
pbl = defaultdict(int)
|
||||
for sub_product_ids in grouped_slice(product_ids):
|
||||
pbl.update(get_pbl(None, today, (list(sub_product_ids),)))
|
||||
|
||||
shipments = []
|
||||
date = today
|
||||
end_date = date + lead_time
|
||||
current_qties = pbl.copy()
|
||||
while date <= end_date:
|
||||
# Create a list of moves to create
|
||||
moves = {}
|
||||
for location in id2location.values():
|
||||
for product_id in product_ids:
|
||||
qty = current_qties.get((location.id, product_id), 0)
|
||||
op = product2op.get((location.id, product_id))
|
||||
if op:
|
||||
min_qty, max_qty = op.min_quantity, op.max_quantity
|
||||
target_qty = op.target_quantity
|
||||
prov_location = op.provisioning_location
|
||||
over_location = op.overflowing_location
|
||||
elif (location
|
||||
and (location.provisioning_location
|
||||
or location.overflowing_location)):
|
||||
target_qty = 0
|
||||
min_qty = 0 if location.provisioning_location else None
|
||||
max_qty = 0 if location.overflowing_location else None
|
||||
prov_location = location.provisioning_location
|
||||
over_location = location.overflowing_location
|
||||
else:
|
||||
continue
|
||||
|
||||
change_qty = 0
|
||||
if min_qty is not None and qty < min_qty:
|
||||
from_loc = prov_location.id
|
||||
to_loc = location.id
|
||||
change_qty = target_qty - qty
|
||||
elif max_qty is not None and qty > max_qty:
|
||||
from_loc = location.id
|
||||
to_loc = over_location.id
|
||||
change_qty = qty - target_qty
|
||||
|
||||
if change_qty:
|
||||
key = (from_loc, to_loc, product_id)
|
||||
moves[key] = change_qty
|
||||
current_qties[(from_loc, product_id)] -= change_qty
|
||||
current_qties[(to_loc, product_id)] += change_qty
|
||||
|
||||
# Group moves by {from,to}_location
|
||||
to_create = {}
|
||||
for key, qty in moves.items():
|
||||
from_location, to_location, product = key
|
||||
to_create.setdefault(
|
||||
(from_location, to_location), []).append((product, qty))
|
||||
# Create shipments and moves
|
||||
for locations, moves in to_create.items():
|
||||
from_location, to_location = locations
|
||||
shipment = cls(
|
||||
from_location=from_location,
|
||||
to_location=to_location,
|
||||
planned_date=date,
|
||||
state='request',
|
||||
)
|
||||
shipment_moves = []
|
||||
for move in moves:
|
||||
product_id, qty = move
|
||||
product = id2product.setdefault(
|
||||
product_id, Product(product_id))
|
||||
shipment_moves.append(Move(
|
||||
from_location=from_location,
|
||||
to_location=to_location,
|
||||
planned_date=date,
|
||||
product=product,
|
||||
quantity=qty,
|
||||
unit=product.default_uom,
|
||||
company=company,
|
||||
))
|
||||
shipment.moves = shipment_moves
|
||||
shipment.planned_start_date = (
|
||||
shipment.on_change_with_planned_start_date())
|
||||
shipments.append(shipment)
|
||||
date += datetime.timedelta(1)
|
||||
|
||||
# Update quantities with next moves
|
||||
if implicit_locations:
|
||||
for key, qty in get_pbl(date, date, None).items():
|
||||
current_qties[key] += qty
|
||||
else:
|
||||
for sub_product_ids in grouped_slice(product_ids):
|
||||
for key, qty in get_pbl(
|
||||
date, date, (list(sub_product_ids),)).items():
|
||||
current_qties[key] += qty
|
||||
|
||||
if shipments:
|
||||
cls.save(shipments)
|
||||
# Split moves through transit to get accurate dates
|
||||
cls._set_transit(shipments)
|
||||
return shipments
|
||||
136
modules/stock_supply/stock.py
Normal file
136
modules/stock_supply/stock.py
Normal file
@@ -0,0 +1,136 @@
|
||||
# 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 ModelView, fields
|
||||
from trytond.pool import Pool
|
||||
from trytond.transaction import Transaction, check_access
|
||||
from trytond.wizard import (
|
||||
Button, StateAction, StateTransition, StateView, Wizard)
|
||||
|
||||
from .exceptions import SupplyWarning
|
||||
|
||||
|
||||
class Supply(Wizard):
|
||||
__name__ = 'stock.supply'
|
||||
start = StateView(
|
||||
'stock.supply.start',
|
||||
'stock_supply.supply_start_view_form', [
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('Create', 'create_', 'tryton-ok', default=True),
|
||||
])
|
||||
create_ = StateTransition()
|
||||
internal = StateAction('stock.act_shipment_internal_form')
|
||||
purchase = StateAction('purchase_request.act_purchase_request_form')
|
||||
|
||||
@classmethod
|
||||
def types(cls):
|
||||
return ['internal', 'purchase']
|
||||
|
||||
@classmethod
|
||||
def next_action(cls, name):
|
||||
types = cls.types()
|
||||
try:
|
||||
return types[types.index(name) + 1]
|
||||
except IndexError:
|
||||
return 'end'
|
||||
|
||||
def transition_create_(self):
|
||||
pool = Pool()
|
||||
Move = pool.get('stock.move')
|
||||
ShipmentInternal = pool.get('stock.shipment.internal')
|
||||
Date = pool.get('ir.date')
|
||||
Warning = pool.get('res.user.warning')
|
||||
|
||||
if not Transaction().context.get('_skip_warnings'):
|
||||
today = Date.today()
|
||||
with check_access():
|
||||
moves = Move.search([
|
||||
('from_location.type', '=', 'supplier'),
|
||||
('to_location.type', '=', 'storage'),
|
||||
('state', '=', 'draft'),
|
||||
('planned_date', '<', today),
|
||||
], order=[], limit=1)
|
||||
if moves:
|
||||
name = '%s.supplier@%s' % (self.__name__, today)
|
||||
if Warning.check(name):
|
||||
raise SupplyWarning(name,
|
||||
gettext('stock_supply.msg_late_supplier_moves'))
|
||||
with check_access():
|
||||
moves = Move.search([
|
||||
('from_location.type', '=', 'storage'),
|
||||
('to_location.type', '=', 'customer'),
|
||||
('state', '=', 'draft'),
|
||||
('planned_date', '<', today),
|
||||
], order=[], limit=1)
|
||||
if moves:
|
||||
name = '%s..customer@%s' % (self.__name__, today)
|
||||
if Warning.check(name):
|
||||
raise SupplyWarning(name,
|
||||
gettext('stock_supply.msg_late_customer_moves'))
|
||||
|
||||
first = True
|
||||
created = False
|
||||
while created or first:
|
||||
created = False
|
||||
for type_ in self.types():
|
||||
created |= bool(getattr(self, 'generate_%s' % type_)(first))
|
||||
first = False
|
||||
|
||||
# Remove transit split of request
|
||||
with check_access():
|
||||
shipments = ShipmentInternal.search([
|
||||
('state', '=', 'request'),
|
||||
])
|
||||
Move.delete([m for s in shipments for m in s.moves
|
||||
if m.from_location == s.transit_location])
|
||||
for shipment in shipments:
|
||||
Move.write([m for m in shipment.moves], {
|
||||
'from_location': shipment.from_location.id,
|
||||
'to_location': shipment.to_location.id,
|
||||
'planned_date': shipment.planned_date,
|
||||
})
|
||||
|
||||
return self.types()[0]
|
||||
|
||||
def generate_internal(self, clean):
|
||||
pool = Pool()
|
||||
ShipmentInternal = pool.get('stock.shipment.internal')
|
||||
return ShipmentInternal.generate_internal_shipment(
|
||||
clean=clean, warehouses=self.start.warehouses)
|
||||
|
||||
def transition_internal(self):
|
||||
return self.next_action('internal')
|
||||
|
||||
@property
|
||||
def _purchase_parameters(self):
|
||||
return {
|
||||
'warehouses': self.start.warehouses,
|
||||
}
|
||||
|
||||
def generate_purchase(self, clean):
|
||||
pool = Pool()
|
||||
PurchaseRequest = pool.get('purchase.request')
|
||||
PurchaseRequest.generate_requests(**self._purchase_parameters)
|
||||
return False
|
||||
|
||||
def transition_purchase(self):
|
||||
return self.next_action('purchase')
|
||||
|
||||
|
||||
class SupplyStart(ModelView):
|
||||
__name__ = 'stock.supply.start'
|
||||
|
||||
warehouses = fields.Many2Many(
|
||||
'stock.location', None, None, "Warehouses",
|
||||
domain=[
|
||||
('type', '=', 'warehouse'),
|
||||
],
|
||||
help="If empty all warehouses are used.")
|
||||
|
||||
@classmethod
|
||||
def default_warehouses(cls):
|
||||
pool = Pool()
|
||||
Location = pool.get('stock.location')
|
||||
warehouse = Location.get_default_warehouse()
|
||||
if warehouse:
|
||||
return [warehouse]
|
||||
33
modules/stock_supply/stock.xml
Normal file
33
modules/stock_supply/stock.xml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
<record model="ir.action.wizard" id="act_stock_supply">
|
||||
<field name="name">Supply Stock</field>
|
||||
<field name="wiz_name">stock.supply</field>
|
||||
</record>
|
||||
<record model="ir.action-res.group"
|
||||
id="act_stock_supply_group_stock_admin">
|
||||
<field name="action" ref="act_stock_supply"/>
|
||||
<field name="group" ref="stock.group_stock_admin"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="stock.menu_stock"
|
||||
action="act_stock_supply"
|
||||
sequence="90"
|
||||
id="menu_stock_supply"/>
|
||||
<record model="ir.ui.menu-res.group"
|
||||
id="menu_stock_supply_group_stock_admin">
|
||||
<field name="menu" ref="menu_stock_supply"/>
|
||||
<field name="group" ref="stock.group_stock_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="supply_start_view_form">
|
||||
<field name="model">stock.supply.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">supply_start_form</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
2
modules/stock_supply/tests/__init__.py
Normal file
2
modules/stock_supply/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.
|
||||
BIN
modules/stock_supply/tests/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
modules/stock_supply/tests/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
[
|
||||
{"with_warehouses": true}
|
||||
,{"with_warehouses": false}
|
||||
]
|
||||
152
modules/stock_supply/tests/scenario_stock_internal_supply.rst
Normal file
152
modules/stock_supply/tests/scenario_stock_internal_supply.rst
Normal file
@@ -0,0 +1,152 @@
|
||||
===========================
|
||||
Stock Shipment Out Scenario
|
||||
===========================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.modules.company.tests.tools import create_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
>>> with_warehouses = globals().get('with_warehouses', False)
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('stock_supply', 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')
|
||||
>>> warehouse_loc, = Location.find([('code', '=', 'WH')])
|
||||
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
|
||||
>>> customer_loc, = Location.find([('code', '=', 'CUS')])
|
||||
>>> output_loc, = Location.find([('code', '=', 'OUT')])
|
||||
>>> storage_loc, = Location.find([('code', '=', 'STO')])
|
||||
>>> lost_loc, = Location.find([('type', '=', 'lost_found')])
|
||||
|
||||
Create provisioning location::
|
||||
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> provisioning_loc = Location()
|
||||
>>> provisioning_loc.name = 'Provisioning Location'
|
||||
>>> provisioning_loc.type = 'storage'
|
||||
>>> provisioning_loc.parent = warehouse_loc
|
||||
>>> provisioning_loc.save()
|
||||
|
||||
Create a new storage location::
|
||||
|
||||
>>> sec_storage_loc = Location()
|
||||
>>> sec_storage_loc.name = 'Second Storage'
|
||||
>>> sec_storage_loc.type = 'storage'
|
||||
>>> sec_storage_loc.parent = warehouse_loc
|
||||
>>> sec_storage_loc.provisioning_location = provisioning_loc
|
||||
>>> sec_storage_loc.save()
|
||||
|
||||
Create internal order point::
|
||||
|
||||
>>> OrderPoint = Model.get('stock.order_point')
|
||||
>>> order_point = OrderPoint()
|
||||
>>> order_point.product = product
|
||||
>>> order_point.location = storage_loc
|
||||
>>> order_point.provisioning_location = provisioning_loc
|
||||
>>> order_point.type = 'internal'
|
||||
>>> order_point.min_quantity = 10
|
||||
>>> order_point.target_quantity = 15
|
||||
>>> order_point.save()
|
||||
|
||||
Create inventory to add enough quantity in Provisioning Location::
|
||||
|
||||
>>> Inventory = Model.get('stock.inventory')
|
||||
>>> inventory = Inventory()
|
||||
>>> inventory.location = provisioning_loc
|
||||
>>> inventory_line = inventory.lines.new(product=product)
|
||||
>>> inventory_line.quantity = 100.0
|
||||
>>> inventory_line.expected_quantity = 0.0
|
||||
>>> inventory.click('confirm')
|
||||
>>> inventory.state
|
||||
'done'
|
||||
|
||||
Execute internal supply::
|
||||
|
||||
>>> ShipmentInternal = Model.get('stock.shipment.internal')
|
||||
>>> Wizard('stock.supply').execute('create_')
|
||||
>>> shipment, = ShipmentInternal.find([])
|
||||
>>> shipment.state
|
||||
'request'
|
||||
>>> len(shipment.moves)
|
||||
1
|
||||
>>> move, = shipment.moves
|
||||
>>> move.product.template.name
|
||||
'Product'
|
||||
>>> move.quantity
|
||||
15.0
|
||||
>>> move.from_location.name
|
||||
'Provisioning Location'
|
||||
>>> move.to_location.code
|
||||
'STO'
|
||||
|
||||
Create negative quantity in Second Storage::
|
||||
|
||||
>>> Move = Model.get('stock.move')
|
||||
>>> move = Move()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 10
|
||||
>>> move.from_location = sec_storage_loc
|
||||
>>> move.to_location = lost_loc
|
||||
>>> move.click('do')
|
||||
>>> move.state
|
||||
'done'
|
||||
|
||||
Execute internal supply::
|
||||
|
||||
>>> stock_supply = Wizard('stock.supply')
|
||||
>>> if with_warehouses:
|
||||
... stock_supply.form.warehouses.append(warehouse_loc)
|
||||
... else:
|
||||
... while stock_supply.form.warehouses:
|
||||
... _ = stock_supply.form.warehouses.pop()
|
||||
>>> stock_supply.execute('create_')
|
||||
>>> shipment, = ShipmentInternal.find(
|
||||
... [('to_location', '=', sec_storage_loc.id)])
|
||||
>>> shipment.state
|
||||
'request'
|
||||
>>> len(shipment.moves)
|
||||
1
|
||||
>>> move, = shipment.moves
|
||||
>>> move.product.template.name
|
||||
'Product'
|
||||
>>> move.quantity
|
||||
10.0
|
||||
>>> move.from_location.name
|
||||
'Provisioning Location'
|
||||
>>> move.to_location.name
|
||||
'Second Storage'
|
||||
|
||||
Create stock_supply cron and execute it::
|
||||
|
||||
>>> Cron = Model.get('ir.cron')
|
||||
>>> shipment.delete()
|
||||
>>> cron = Cron(method='stock.order_point|supply_stock')
|
||||
>>> cron.interval_number = 1
|
||||
>>> cron.interval_type = 'months'
|
||||
>>> cron.click('run_once')
|
||||
>>> shipment, = ShipmentInternal.find(
|
||||
... [('to_location', '=', sec_storage_loc.id)])
|
||||
>>> shipment.state
|
||||
'request'
|
||||
@@ -0,0 +1,134 @@
|
||||
========================================
|
||||
Stock Internal Supply Lead Time Scenario
|
||||
========================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import datetime as dt
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> 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
|
||||
|
||||
>>> today = dt.date.today()
|
||||
>>> tomorrow = today + dt.timedelta(days=1)
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('stock_supply', create_company)
|
||||
|
||||
Create customer::
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> customer = Party(name='Customer')
|
||||
>>> customer.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.save()
|
||||
>>> product, = template.products
|
||||
|
||||
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')])
|
||||
>>> lost_loc, = Location.find([('type', '=', 'lost_found')])
|
||||
|
||||
Create second warehouse::
|
||||
|
||||
>>> sec_warehouse_loc, = warehouse_loc.duplicate()
|
||||
|
||||
Add lead time between warehouses::
|
||||
|
||||
>>> LeadTime = Model.get('stock.location.lead_time')
|
||||
>>> lead_time = LeadTime()
|
||||
>>> lead_time.warehouse_from = warehouse_loc
|
||||
>>> lead_time.warehouse_to = sec_warehouse_loc
|
||||
>>> lead_time.lead_time = dt.timedelta(1)
|
||||
>>> lead_time.save()
|
||||
|
||||
Create internal order point::
|
||||
|
||||
>>> OrderPoint = Model.get('stock.order_point')
|
||||
>>> order_point = OrderPoint()
|
||||
>>> order_point.product = product
|
||||
>>> order_point.location = sec_warehouse_loc.storage_location
|
||||
>>> order_point.provisioning_location = warehouse_loc.storage_location
|
||||
>>> order_point.type = 'internal'
|
||||
>>> order_point.min_quantity = 10
|
||||
>>> order_point.target_quantity = 15
|
||||
>>> order_point.save()
|
||||
|
||||
Create inventory to add enough quantity in first warehouse::
|
||||
|
||||
>>> Inventory = Model.get('stock.inventory')
|
||||
>>> inventory = Inventory()
|
||||
>>> inventory.location = warehouse_loc.storage_location
|
||||
>>> inventory_line = inventory.lines.new(product=product)
|
||||
>>> inventory_line.quantity = 100.0
|
||||
>>> inventory_line.expected_quantity = 0.0
|
||||
>>> inventory.click('confirm')
|
||||
>>> inventory.state
|
||||
'done'
|
||||
|
||||
Create needs for tomorrow in second warehouse::
|
||||
|
||||
>>> ShipmentOut = Model.get('stock.shipment.out')
|
||||
>>> shipment = ShipmentOut()
|
||||
>>> shipment.planned_date = tomorrow
|
||||
>>> shipment.customer = customer
|
||||
>>> shipment.warehouse = sec_warehouse_loc
|
||||
>>> move = shipment.outgoing_moves.new()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 10
|
||||
>>> move.from_location = sec_warehouse_loc.output_location
|
||||
>>> move.to_location = customer_loc
|
||||
>>> move.unit_price = Decimal('20')
|
||||
>>> move.currency = get_currency()
|
||||
>>> shipment.click('wait')
|
||||
>>> shipment.state
|
||||
'waiting'
|
||||
|
||||
Execute internal supply::
|
||||
|
||||
>>> ShipmentInternal = Model.get('stock.shipment.internal')
|
||||
>>> Wizard('stock.supply').execute('create_')
|
||||
>>> shipments = ShipmentInternal.find([], order=[('planned_date', 'ASC')])
|
||||
>>> len(shipments)
|
||||
2
|
||||
>>> first, second = shipments
|
||||
|
||||
>>> assertEqual(first.planned_date, today)
|
||||
>>> first.state
|
||||
'request'
|
||||
>>> len(first.moves)
|
||||
1
|
||||
>>> move, = first.moves
|
||||
>>> assertEqual(move.from_location, warehouse_loc.storage_location)
|
||||
>>> assertEqual(move.to_location, sec_warehouse_loc.storage_location)
|
||||
>>> move.quantity
|
||||
15.0
|
||||
|
||||
>>> assertEqual(second.planned_date, tomorrow)
|
||||
>>> second.state
|
||||
'request'
|
||||
>>> len(second.moves)
|
||||
1
|
||||
>>> move, = second.moves
|
||||
>>> assertEqual(move.from_location, warehouse_loc.storage_location)
|
||||
>>> assertEqual(move.to_location, sec_warehouse_loc.storage_location)
|
||||
>>> move.quantity
|
||||
10.0
|
||||
@@ -0,0 +1,131 @@
|
||||
====================================================
|
||||
Stock supply scenario: Internal supply with overflow
|
||||
====================================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.modules.company.tests.tools import create_company
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('stock_supply', 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')
|
||||
>>> warehouse_loc, = Location.find([('code', '=', 'WH')])
|
||||
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
|
||||
>>> customer_loc, = Location.find([('code', '=', 'CUS')])
|
||||
>>> output_loc, = Location.find([('code', '=', 'OUT')])
|
||||
>>> storage_loc, = Location.find([('code', '=', 'STO')])
|
||||
>>> lost_loc, = Location.find([('type', '=', 'lost_found')])
|
||||
|
||||
Using order point to control the overflow
|
||||
-----------------------------------------
|
||||
|
||||
Create the overflow location::
|
||||
|
||||
>>> overflow_loc = Location()
|
||||
>>> overflow_loc.name = 'Overflow Location'
|
||||
>>> overflow_loc.type = 'storage'
|
||||
>>> overflow_loc.parent = warehouse_loc
|
||||
>>> overflow_loc.save()
|
||||
|
||||
Create the overflowed location::
|
||||
|
||||
>>> overflowed_storage_loc = Location()
|
||||
>>> overflowed_storage_loc.name = 'Overflowed Location'
|
||||
>>> overflowed_storage_loc.type = 'storage'
|
||||
>>> overflowed_storage_loc.parent = warehouse_loc
|
||||
>>> overflowed_storage_loc.save()
|
||||
|
||||
Create an internal order point::
|
||||
|
||||
>>> OrderPoint = Model.get('stock.order_point')
|
||||
>>> overflow_order_point = OrderPoint()
|
||||
>>> overflow_order_point.product = product
|
||||
>>> overflow_order_point.location = overflowed_storage_loc
|
||||
>>> overflow_order_point.overflowing_location = overflow_loc
|
||||
>>> overflow_order_point.type = 'internal'
|
||||
>>> overflow_order_point.max_quantity = 80
|
||||
>>> overflow_order_point.target_quantity = 60
|
||||
>>> overflow_order_point.save()
|
||||
|
||||
Put too much quantity in the overflowed location::
|
||||
|
||||
>>> Move = Model.get('stock.move')
|
||||
>>> move = Move()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 100
|
||||
>>> move.from_location = lost_loc
|
||||
>>> move.to_location = overflowed_storage_loc
|
||||
>>> move.click('do')
|
||||
|
||||
Execute internal supply::
|
||||
|
||||
>>> ShipmentInternal = Model.get('stock.shipment.internal')
|
||||
>>> Wizard('stock.supply').execute('create_')
|
||||
>>> shipment, = ShipmentInternal.find([
|
||||
... ('to_location', '=', overflow_loc.id),
|
||||
... ])
|
||||
>>> shipment.state
|
||||
'request'
|
||||
>>> move, = shipment.moves
|
||||
>>> assertEqual(move.product, product)
|
||||
>>> move.quantity
|
||||
40.0
|
||||
>>> assertEqual(move.from_location, overflowed_storage_loc)
|
||||
>>> assertEqual(move.to_location, overflow_loc)
|
||||
|
||||
Using an overflow location
|
||||
--------------------------
|
||||
|
||||
Create the overflowed location::
|
||||
|
||||
>>> sec_overflowed_storage_loc = Location()
|
||||
>>> sec_overflowed_storage_loc.name = 'Second Overflowed Location'
|
||||
>>> sec_overflowed_storage_loc.type = 'storage'
|
||||
>>> sec_overflowed_storage_loc.parent = warehouse_loc
|
||||
>>> sec_overflowed_storage_loc.overflowing_location = overflow_loc
|
||||
>>> sec_overflowed_storage_loc.save()
|
||||
|
||||
Create positive quantity in this location::
|
||||
|
||||
>>> move = Move()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 10
|
||||
>>> move.from_location = lost_loc
|
||||
>>> move.to_location = sec_overflowed_storage_loc
|
||||
>>> move.click('do')
|
||||
|
||||
Execute internal supply::
|
||||
|
||||
>>> Wizard('stock.supply').execute('create_')
|
||||
>>> shipment, = ShipmentInternal.find(
|
||||
... [('from_location', '=', sec_overflowed_storage_loc.id)])
|
||||
>>> shipment.state
|
||||
'request'
|
||||
>>> move, = shipment.moves
|
||||
>>> assertEqual(move.product, product)
|
||||
>>> move.quantity
|
||||
10.0
|
||||
>>> assertEqual(move.from_location, sec_overflowed_storage_loc)
|
||||
>>> assertEqual(move.to_location, overflow_loc)
|
||||
@@ -0,0 +1,182 @@
|
||||
=========================
|
||||
Purchase Request Scenario
|
||||
=========================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import datetime as dt
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
|
||||
>>> from trytond.modules.company.tests.tools import create_company
|
||||
>>> from trytond.modules.currency.tests.tools import get_currency
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
|
||||
>>> today = dt.date.today()
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('stock_supply', create_company, create_chart)
|
||||
|
||||
Get accounts::
|
||||
|
||||
>>> accounts = get_accounts()
|
||||
>>> expense = accounts['expense']
|
||||
|
||||
Create parties::
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> customer = Party(name='Customer')
|
||||
>>> customer.save()
|
||||
>>> supplier = Party(name='Supplier')
|
||||
>>> supplier.save()
|
||||
|
||||
Configure supply period::
|
||||
|
||||
>>> PurchaseConfig = Model.get('purchase.configuration')
|
||||
>>> purchase_config = PurchaseConfig(1)
|
||||
>>> purchase_config.supply_period = dt.timedelta(days=30)
|
||||
>>> purchase_config.save()
|
||||
|
||||
Create account category::
|
||||
|
||||
>>> ProductCategory = Model.get('product.category')
|
||||
>>> account_category = ProductCategory(name="Account Category")
|
||||
>>> account_category.accounting = True
|
||||
>>> account_category.account_expense = expense
|
||||
>>> account_category.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.purchasable = True
|
||||
>>> template.account_category = account_category
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
Define a product supplier::
|
||||
|
||||
>>> ProductSupplier = Model.get('purchase.product_supplier')
|
||||
>>> product_supplier = ProductSupplier(template=template)
|
||||
>>> product_supplier.party = supplier
|
||||
>>> product_supplier.lead_time = dt.timedelta(days=1)
|
||||
>>> product_supplier.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')])
|
||||
>>> output_loc, = Location.find([('code', '=', 'OUT')])
|
||||
>>> storage_loc, = Location.find([('code', '=', 'STO')])
|
||||
|
||||
Create needs for missing product::
|
||||
|
||||
>>> ShipmentOut = Model.get('stock.shipment.out')
|
||||
>>> shipment_out = ShipmentOut()
|
||||
>>> shipment_out.planned_date = today
|
||||
>>> shipment_out.effective_date = today
|
||||
>>> shipment_out.customer = customer
|
||||
>>> shipment_out.warehouse = warehouse_loc
|
||||
>>> move = shipment_out.outgoing_moves.new()
|
||||
>>> move.product = product
|
||||
>>> move.unit = unit
|
||||
>>> move.quantity = 1
|
||||
>>> move.from_location = output_loc
|
||||
>>> move.to_location = customer_loc
|
||||
>>> move.unit_price = Decimal('1')
|
||||
>>> move.currency = get_currency()
|
||||
>>> shipment_out.click('wait')
|
||||
|
||||
>>> shipment_out, = shipment_out.duplicate(
|
||||
... default={'planned_date': today + dt.timedelta(days=10)})
|
||||
>>> shipment_out.click('wait')
|
||||
|
||||
There is no purchase request::
|
||||
|
||||
>>> PurchaseRequest = Model.get('purchase.request')
|
||||
>>> PurchaseRequest.find([])
|
||||
[]
|
||||
|
||||
Create the purchase request::
|
||||
|
||||
>>> create_pr = Wizard('stock.supply')
|
||||
>>> create_pr.execute('create_')
|
||||
|
||||
There is now a draft purchase request::
|
||||
|
||||
>>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
|
||||
>>> assertEqual(pr.product, product)
|
||||
>>> pr.quantity
|
||||
2.0
|
||||
|
||||
Create an order point with negative minimal quantity::
|
||||
|
||||
>>> OrderPoint = Model.get('stock.order_point')
|
||||
>>> order_point = OrderPoint()
|
||||
>>> order_point.type = 'purchase'
|
||||
>>> order_point.product = product
|
||||
>>> order_point.location = warehouse_loc
|
||||
>>> order_point.min_quantity = -2
|
||||
>>> order_point.target_quantity = 10
|
||||
>>> order_point.save()
|
||||
|
||||
Create purchase request::
|
||||
|
||||
>>> create_pr = Wizard('stock.supply')
|
||||
>>> create_pr.execute('create_')
|
||||
|
||||
There is no more purchase request::
|
||||
|
||||
>>> PurchaseRequest.find([])
|
||||
[]
|
||||
|
||||
Set a positive minimal quantity on order point create purchase request::
|
||||
|
||||
>>> order_point.min_quantity = 5
|
||||
>>> order_point.save()
|
||||
>>> create_pr = Wizard('stock.supply')
|
||||
>>> create_pr.execute('create_')
|
||||
|
||||
There is now a draft purchase request::
|
||||
|
||||
>>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
|
||||
>>> assertEqual(pr.product, product)
|
||||
>>> pr.quantity
|
||||
12.0
|
||||
|
||||
Using zero as minimal quantity on order point also creates purchase request::
|
||||
|
||||
>>> order_point.min_quantity = 0
|
||||
>>> order_point.save()
|
||||
>>> create_pr = Wizard('stock.supply')
|
||||
>>> create_pr.execute('create_')
|
||||
|
||||
There is now a draft purchase request::
|
||||
|
||||
>>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
|
||||
>>> assertEqual(pr.product, product)
|
||||
>>> pr.quantity
|
||||
12.0
|
||||
|
||||
Re-run with purchased request::
|
||||
|
||||
>>> create_purchase = Wizard('purchase.request.create_purchase', [pr])
|
||||
>>> pr.state
|
||||
'purchased'
|
||||
|
||||
>>> create_pr = Wizard('stock.supply')
|
||||
>>> create_pr.execute('create_')
|
||||
|
||||
>>> len(PurchaseRequest.find([('state', '=', 'draft')]))
|
||||
0
|
||||
164
modules/stock_supply/tests/test_module.py
Normal file
164
modules/stock_supply/tests/test_module.py
Normal file
@@ -0,0 +1,164 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
import datetime
|
||||
|
||||
from trytond.modules.account.tests import create_chart
|
||||
from trytond.modules.company.tests import (
|
||||
CompanyTestMixin, create_company, set_company)
|
||||
from trytond.pool import Pool
|
||||
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
|
||||
|
||||
DATES = [
|
||||
# purchase date, lead time, supply date
|
||||
(datetime.date(2011, 11, 21), datetime.timedelta(10),
|
||||
datetime.date(2011, 12, 1)),
|
||||
(datetime.date(2011, 11, 21), datetime.timedelta(9),
|
||||
datetime.date(2011, 11, 30)),
|
||||
(datetime.date(2011, 11, 21), datetime.timedelta(8),
|
||||
datetime.date(2011, 11, 29)),
|
||||
(datetime.date(2011, 11, 21), datetime.timedelta(7),
|
||||
datetime.date(2011, 11, 28)),
|
||||
(datetime.date(2011, 11, 21), datetime.timedelta(6),
|
||||
datetime.date(2011, 11, 27)),
|
||||
(datetime.date(2011, 11, 21), datetime.timedelta(5),
|
||||
datetime.date(2011, 11, 26)),
|
||||
(datetime.date(2011, 11, 21), datetime.timedelta(4),
|
||||
datetime.date(2011, 11, 25)),
|
||||
]
|
||||
|
||||
|
||||
class StockSupplyTestCase(CompanyTestMixin, ModuleTestCase):
|
||||
'Test StockSupply module'
|
||||
module = 'stock_supply'
|
||||
|
||||
def test_compute_supply_date(self):
|
||||
'Test compute_supply_date'
|
||||
@with_transaction()
|
||||
def run(purchase_date, lead_time, supply_date):
|
||||
pool = Pool()
|
||||
ProductSupplier = pool.get('purchase.product_supplier')
|
||||
product_supplier = self.create_product_supplier(lead_time)
|
||||
date = ProductSupplier.compute_supply_date(
|
||||
product_supplier, purchase_date)
|
||||
self.assertEqual(date, supply_date)
|
||||
for purchase_date, lead_time, supply_date in DATES:
|
||||
run(purchase_date, lead_time, supply_date)
|
||||
|
||||
def test_compute_purchase_date(self):
|
||||
'Test compute_purchase_date'
|
||||
@with_transaction()
|
||||
def run(purchase_date, lead_time, supply_date):
|
||||
pool = Pool()
|
||||
ProductSupplier = pool.get('purchase.product_supplier')
|
||||
product_supplier = self.create_product_supplier(lead_time)
|
||||
date = ProductSupplier.compute_purchase_date(
|
||||
product_supplier, supply_date)
|
||||
self.assertEqual(date, purchase_date)
|
||||
for purchase_date, lead_time, supply_date in DATES:
|
||||
run(purchase_date, lead_time, supply_date)
|
||||
|
||||
def create_product_supplier(self, lead_time):
|
||||
'''
|
||||
Create a Product with a Product Supplier
|
||||
|
||||
:param lead_time: timedelta needed to supply
|
||||
:return: the id of the Product Supplier
|
||||
'''
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
UomCategory = pool.get('product.uom.category')
|
||||
Template = pool.get('product.template')
|
||||
Product = pool.get('product.product')
|
||||
Party = pool.get('party.party')
|
||||
Account = pool.get('account.account')
|
||||
ProductSupplier = pool.get('purchase.product_supplier')
|
||||
|
||||
uom_category, = UomCategory.create([{'name': 'Test'}])
|
||||
uom, = Uom.create([{
|
||||
'name': 'Test',
|
||||
'symbol': 'T',
|
||||
'category': uom_category.id,
|
||||
'rate': 1.0,
|
||||
'factor': 1.0,
|
||||
}])
|
||||
template, = Template.create([{
|
||||
'name': 'ProductTest',
|
||||
'default_uom': uom.id,
|
||||
}])
|
||||
product, = Product.create([{
|
||||
'template': template.id,
|
||||
}])
|
||||
company = create_company()
|
||||
with set_company(company):
|
||||
create_chart(company)
|
||||
receivable, = Account.search([
|
||||
('closed', '!=', True),
|
||||
('type.receivable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', company.id),
|
||||
], limit=1)
|
||||
payable, = Account.search([
|
||||
('closed', '!=', True),
|
||||
('type.payable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', company.id),
|
||||
], limit=1)
|
||||
supplier, = Party.create([{
|
||||
'name': 'supplier',
|
||||
'account_receivable': receivable.id,
|
||||
'account_payable': payable.id,
|
||||
}])
|
||||
product_supplier, = ProductSupplier.create([{
|
||||
'template': template.id,
|
||||
'company': company.id,
|
||||
'party': supplier.id,
|
||||
'lead_time': lead_time,
|
||||
}])
|
||||
return product_supplier
|
||||
|
||||
@with_transaction()
|
||||
def test_order_point_location_searcher(self):
|
||||
pool = Pool()
|
||||
Uom = pool.get('product.uom')
|
||||
Template = pool.get('product.template')
|
||||
Product = pool.get('product.product')
|
||||
Location = pool.get('stock.location')
|
||||
OrderPoint = pool.get('stock.order_point')
|
||||
unit, = Uom.search([('symbol', '=', 'u')])
|
||||
template, = Template.create([{
|
||||
'name': 'ProductTest',
|
||||
'type': 'goods',
|
||||
'default_uom': unit.id,
|
||||
'purchase_uom': unit.id,
|
||||
'purchasable': True,
|
||||
}])
|
||||
product, = Product.create([{
|
||||
'template': template.id,
|
||||
}])
|
||||
|
||||
warehouse, = Location.search([('type', '=', 'warehouse')])
|
||||
storage, = Location.search([('code', '=', 'STO')])
|
||||
|
||||
company = create_company()
|
||||
with set_company(company):
|
||||
order_point, = OrderPoint.create([{
|
||||
'product': product.id,
|
||||
'type': 'purchase',
|
||||
'location': warehouse.id,
|
||||
'min_quantity': 0.0,
|
||||
'target_quantity': 5.0,
|
||||
}])
|
||||
|
||||
for clause, result in [
|
||||
(('location.rec_name', '=', warehouse.name),
|
||||
[order_point]),
|
||||
(('location.type', '=', 'storage'), []),
|
||||
(('location.rec_name', '!=', warehouse.name), []),
|
||||
(('location.type', '!=', 'storage'), [order_point]),
|
||||
]:
|
||||
self.assertListEqual(
|
||||
OrderPoint.search(clause), result, msg=clause)
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
8
modules/stock_supply/tests/test_scenario.py
Normal file
8
modules/stock_supply/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)
|
||||
34
modules/stock_supply/tryton.cfg
Normal file
34
modules/stock_supply/tryton.cfg
Normal file
@@ -0,0 +1,34 @@
|
||||
[tryton]
|
||||
version=7.8.0
|
||||
depends:
|
||||
account
|
||||
ir
|
||||
party
|
||||
product
|
||||
purchase
|
||||
purchase_request
|
||||
res
|
||||
stock
|
||||
xml:
|
||||
order_point.xml
|
||||
purchase_request.xml
|
||||
product.xml
|
||||
location.xml
|
||||
stock.xml
|
||||
message.xml
|
||||
|
||||
[register]
|
||||
model:
|
||||
ir.Cron
|
||||
product.Product
|
||||
product.ProductSupplier
|
||||
order_point.OrderPoint
|
||||
location.Location
|
||||
location.LocationLeadTime
|
||||
shipment.ShipmentInternal
|
||||
stock.SupplyStart
|
||||
purchase_request.PurchaseConfiguration
|
||||
purchase_request.PurchaseConfigurationSupplyPeriod
|
||||
purchase_request.PurchaseRequest
|
||||
wizard:
|
||||
stock.Supply
|
||||
11
modules/stock_supply/view/location_form.xml
Normal file
11
modules/stock_supply/view/location_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="/form/field[@name='allow_pickup']" position="after">
|
||||
<label name="provisioning_location"/>
|
||||
<field name="provisioning_location"/>
|
||||
<label name="overflowing_location"/>
|
||||
<field name="overflowing_location"/>
|
||||
</xpath>
|
||||
</data>
|
||||
29
modules/stock_supply/view/order_point_form.xml
Normal file
29
modules/stock_supply/view/order_point_form.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form cursor="product" col="6">
|
||||
<separator string="Order Point Type" colspan="6" id="type"/>
|
||||
<label name="type"/>
|
||||
<field name="type"/>
|
||||
<label name="company"/>
|
||||
<field name="company"/>
|
||||
<newline/>
|
||||
|
||||
<label name="location"/>
|
||||
<field name="location"/>
|
||||
<label name="provisioning_location"/>
|
||||
<field name="provisioning_location"/>
|
||||
<label name="overflowing_location"/>
|
||||
<field name="overflowing_location"/>
|
||||
|
||||
<separator string="Product Info" colspan="6" id="info"/>
|
||||
<label name="product"/>
|
||||
<field name="product" colspan="5"/>
|
||||
|
||||
<label name="min_quantity"/>
|
||||
<field name="min_quantity" symbol="unit"/>
|
||||
<label name="target_quantity"/>
|
||||
<field name="target_quantity" symbol="unit"/>
|
||||
<label name="max_quantity"/>
|
||||
<field name="max_quantity" symbol="unit"/>
|
||||
</form>
|
||||
12
modules/stock_supply/view/order_point_tree.xml
Normal file
12
modules/stock_supply/view/order_point_tree.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. -->
|
||||
<tree>
|
||||
<field name="company" expand="1" optional="1"/>
|
||||
<field name="product" expand="2"/>
|
||||
<field name="location" expand="2"/>
|
||||
<field name="type"/>
|
||||
<field name="min_quantity" symbol="unit"/>
|
||||
<field name="target_quantity" symbol="unit"/>
|
||||
<field name="max_quantity" symbol="unit"/>
|
||||
</tree>
|
||||
10
modules/stock_supply/view/purchase_configuration_form.xml
Normal file
10
modules/stock_supply/view/purchase_configuration_form.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="/form/field[@name='purchase_process_after']" position="after">
|
||||
<newline/>
|
||||
<label name="supply_period"/>
|
||||
<field name="supply_period"/>
|
||||
</xpath>
|
||||
</data>
|
||||
9
modules/stock_supply/view/supply_start_form.xml
Normal file
9
modules/stock_supply/view/supply_start_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. -->
|
||||
<form col="2">
|
||||
<image name="tryton-question" xexpand="0" xfill="0"/>
|
||||
<label string="Supply Stock?" id="supply"
|
||||
yalign="0.5" xalign="0.0" xexpand="1"/>
|
||||
<field name="warehouses" colspan="2"/>
|
||||
</form>
|
||||
Reference in New Issue
Block a user