first commit
This commit is contained in:
2
modules/product_cost_warehouse/__init__.py
Normal file
2
modules/product_cost_warehouse/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
modules/product_cost_warehouse/__pycache__/ir.cpython-311.pyc
Normal file
BIN
modules/product_cost_warehouse/__pycache__/ir.cpython-311.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
modules/product_cost_warehouse/__pycache__/res.cpython-311.pyc
Normal file
BIN
modules/product_cost_warehouse/__pycache__/res.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/product_cost_warehouse/__pycache__/stock.cpython-311.pyc
Normal file
BIN
modules/product_cost_warehouse/__pycache__/stock.cpython-311.pyc
Normal file
Binary file not shown.
14
modules/product_cost_warehouse/account.py
Normal file
14
modules/product_cost_warehouse/account.py
Normal file
@@ -0,0 +1,14 @@
|
||||
# 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.pool import PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
|
||||
|
||||
class InvoiceLine(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice.line'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.product.context['warehouse'] = Eval('warehouse', -1)
|
||||
cls.product.depends.add('warehouse')
|
||||
22
modules/product_cost_warehouse/company.py
Normal file
22
modules/product_cost_warehouse/company.py
Normal file
@@ -0,0 +1,22 @@
|
||||
# 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 copy
|
||||
|
||||
from trytond.model import fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
|
||||
from .product import cost_price_warehouse
|
||||
|
||||
|
||||
class Company(metaclass=PoolMeta):
|
||||
__name__ = 'company.company'
|
||||
|
||||
cost_price_warehouse = fields.Function(
|
||||
copy.deepcopy(cost_price_warehouse), 'get_cost_price_warehouse')
|
||||
|
||||
def get_cost_price_warehouse(self, name, **pattern):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('product.configuration')
|
||||
config = Configuration(1)
|
||||
pattern['company'] = self.id
|
||||
return config.get_multivalue('cost_price_warehouse', **pattern)
|
||||
38
modules/product_cost_warehouse/ir.py
Normal file
38
modules/product_cost_warehouse/ir.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.model import ModelSQL, ModelView, dualmethod, fields
|
||||
from trytond.pool import PoolMeta
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class Cron(metaclass=PoolMeta):
|
||||
__name__ = 'ir.cron'
|
||||
warehouses = fields.Many2Many(
|
||||
'ir.cron-stock.warehouse', 'cron', 'warehouse',
|
||||
"Warehouses",
|
||||
domain=[
|
||||
('type', '=', 'warehouse'),
|
||||
],
|
||||
help="Warehouses registered for this cron.")
|
||||
|
||||
@dualmethod
|
||||
@ModelView.button
|
||||
def run_once(cls, crons):
|
||||
for cron in crons:
|
||||
if not cron.warehouses:
|
||||
super().run_once([cron])
|
||||
else:
|
||||
for warehouse in cron.warehouses:
|
||||
with Transaction().set_context(warehouse=warehouse.id):
|
||||
super().run_once([cron])
|
||||
|
||||
|
||||
class CronWarehouse(ModelSQL):
|
||||
__name__ = 'ir.cron-stock.warehouse'
|
||||
cron = fields.Many2One(
|
||||
'ir.cron', "Cron", ondelete='CASCADE', required=True)
|
||||
warehouse = fields.Many2One(
|
||||
'stock.location', "Warehouse", ondelete='CASCADE', required=True,
|
||||
domain=[
|
||||
('type', '=', 'warehouse'),
|
||||
])
|
||||
12
modules/product_cost_warehouse/ir.xml
Normal file
12
modules/product_cost_warehouse/ir.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="ir_cron_view_form">
|
||||
<field name="model">ir.cron</field>
|
||||
<field name="inherit" ref="ir.cron_view_form"/>
|
||||
<field name="name">ir_cron_form</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
84
modules/product_cost_warehouse/locale/bg.po
Normal file
84
modules/product_cost_warehouse/locale/bg.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
86
modules/product_cost_warehouse/locale/ca.po
Normal file
86
modules/product_cost_warehouse/locale/ca.po
Normal file
@@ -0,0 +1,86 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Preu de cost per magatzem"
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Magatzems"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr "Tasca programada"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Magatzem"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Preu de cost per magatzem"
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Preu de cost per magatzem"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Magatzem"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Magatzem obligatori"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Magatzem"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Magatzem obligatori"
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr "Cost per magatzem"
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcula el preu de cost per a cada magatzem."
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr "Magatzems registrats per aquesta tasca programada."
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcula el preu de cost per a cada magatzem."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcula el preu de cost per a cada magatzem."
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr "Tasca programada - Magatzem"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
"Per moure productes entre les ubicacions \"%(from_)s\" i \"%(to)s\", heu "
|
||||
"d'utilitzar la ubicació de transit dels albarans interns."
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr "Configuració del producte preu de cost per magatzem"
|
||||
84
modules/product_cost_warehouse/locale/cs.po
Normal file
84
modules/product_cost_warehouse/locale/cs.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
87
modules/product_cost_warehouse/locale/de.po
Normal file
87
modules/product_cost_warehouse/locale/de.po
Normal file
@@ -0,0 +1,87 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Einstandspreis pro Logistikstandort"
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Logistikstandorte"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr "Zeitplaner"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Logistikstandort"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Einstandspreis pro Logistikstandort"
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Unternehmen"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Einstandspreis pro Logistikstandort"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Logistikstandort"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Logistikstandort erforderlich"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Logistikstandort"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Logistikstandort erforderlich"
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr "Kosten Logistikstandort"
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Artikeleinstandskosten je Logistikstandort berechnen."
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
"Die Logistikstandorte, die für diese geplante Aktion registriert wurden."
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Artikeleinstandskosten je Logistikstandort berechnen."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Artikeleinstandskosten je Logistikstandort berechnen."
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr "Zeitplaner - Logistikstandort"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
"Um Artikel zwischen \"%(from_)s\" und \"%(to)s\" zu bewegen, muss der "
|
||||
"Transitlagerort für interne Lieferungen verwendet werden."
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr "Artikel Einstellungen Einstandskosten Logistikstandort"
|
||||
86
modules/product_cost_warehouse/locale/es.po
Normal file
86
modules/product_cost_warehouse/locale/es.po
Normal file
@@ -0,0 +1,86 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Precio de coste por almacén"
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Almacenes"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr "Tarea programada"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Almacén"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Precio de coste por almacén"
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Precio de coste por almacén"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Almacén"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Almacén obligatorio"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Almacén"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Almacén obligatorio"
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr "Coste por almacén"
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcular el precio de coste de producto por cada almacén."
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr "Almacenes registrados para esta tarea programada."
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcular el precio de coste de producto por cada almacén."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcular el precio de coste del producto para cada almacén."
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr "Tarea programada - Almacén"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
"Para mover productos entre \"%(from_)s\" y \"%(to)s\", se tiene que utilizar"
|
||||
" la ubicación de tránsito de los albaranes internos."
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr "Configuración del producto precio de coste por almacén"
|
||||
84
modules/product_cost_warehouse/locale/es_419.po
Normal file
84
modules/product_cost_warehouse/locale/es_419.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
84
modules/product_cost_warehouse/locale/et.po
Normal file
84
modules/product_cost_warehouse/locale/et.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
84
modules/product_cost_warehouse/locale/fa.po
Normal file
84
modules/product_cost_warehouse/locale/fa.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
84
modules/product_cost_warehouse/locale/fi.po
Normal file
84
modules/product_cost_warehouse/locale/fi.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
86
modules/product_cost_warehouse/locale/fr.po
Normal file
86
modules/product_cost_warehouse/locale/fr.po
Normal file
@@ -0,0 +1,86 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Prix de revient par entrepôt"
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Entrepôts"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr "Tâche planifiée"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Entrepôt"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Prix de revient par entrepôt"
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Prix de revient par entrepôt"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Entrepôt"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Entrepôt requis"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Entrepôt"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Entrepôt requis"
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr "Coût de l'entrepôt"
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calculer un prix de revient des produits pour chaque entrepôt."
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr "Les entrepôts enregistrées pour cette action planifiée."
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calculer un prix de revient des produits pour chaque entrepôt."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calculer un prix de revient des produits pour chaque entrepôt."
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr "Tâche planifiée - Entrepôt de stock"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
"Pour déplacer des produits entre « %(from_)s » et « %(to)s », vous devez "
|
||||
"utiliser l'emplacement de transit d'expédition interne."
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr "Configuration de prix de revient de produit par entrepôt"
|
||||
86
modules/product_cost_warehouse/locale/hu.po
Normal file
86
modules/product_cost_warehouse/locale/hu.po
Normal file
@@ -0,0 +1,86 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Költségár raktáranként"
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Raktárak"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Raktár"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Költségár raktáranként"
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Cég"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Költségár raktáranként"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Raktár"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Raktár"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "A termékek költségárát raktáranként tartsa nyilván a rendszer."
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "A termékek költségárát raktáranként tartsa nyilván a rendszer."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "A termékek költségárát raktáranként tartsa nyilván a rendszer."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr "Költségár raktáranként"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr "Költségár raktáranként"
|
||||
84
modules/product_cost_warehouse/locale/id.po
Normal file
84
modules/product_cost_warehouse/locale/id.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Gudang"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Perusahaan"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Gudang"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Gudang"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
88
modules/product_cost_warehouse/locale/it.po
Normal file
88
modules/product_cost_warehouse/locale/it.po
Normal file
@@ -0,0 +1,88 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Prezzo di costo per magazzino"
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Magazzini"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr "Operazione pianificata"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Magazzino"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Prezzo di costo per magazzino"
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Azienda"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Prezzo di costo per magazzino"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Magazzino"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Magazzino richiesto"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Magazzino"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Magazzino richiesto"
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr "Costo per magazzino"
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcola il prezzo di costo del prodotto per ogni magazzino."
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr "Magazzini registrati in questa operazione pianificata."
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcola il prezzo di costo del prodotto per ogni magazzino."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcola il prezzo di costo del prodotto per ogni magazzino."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr "Operazione pianificata - Magazzino"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
"Per spostare i prodotti tra \"%(from_)s\" e \"%(to)s\", devi utilizzare il "
|
||||
"luogo di transito della movimentazione interna."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr "Configurazione prezzo di costo del prodotto per magazzino"
|
||||
84
modules/product_cost_warehouse/locale/lo.po
Normal file
84
modules/product_cost_warehouse/locale/lo.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
84
modules/product_cost_warehouse/locale/lt.po
Normal file
84
modules/product_cost_warehouse/locale/lt.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
86
modules/product_cost_warehouse/locale/nl.po
Normal file
86
modules/product_cost_warehouse/locale/nl.po
Normal file
@@ -0,0 +1,86 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Kostprijs per magazijn"
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Magazijnen"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr "Cyclische opdracht"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Magazijn"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Kostprijs per magazijn"
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Bedrijf"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Kostprijs per magazijn"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Magazijn"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Magazijn vereist"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Magazijn"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Magazijn vereist"
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr "Kosten magazijn"
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Bereken de kostprijs van het product voor elk magazijn."
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr "Geregistreerde magazijnen voor deze cyclische opdracht."
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Bereken de kostprijs van het product voor elk magazijn."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Bereken de kostprijs van het product voor elk magazijn."
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr "Cyclische opdracht - Magazijn"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
"Om producten te verplaatsen tussen \"%(from_)s\" en \"%(to)s\", moet u de "
|
||||
"interne transitlocatie van de zending gebruiken."
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr "Productconfiguratie kostprijs per magazijn"
|
||||
84
modules/product_cost_warehouse/locale/pl.po
Normal file
84
modules/product_cost_warehouse/locale/pl.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
87
modules/product_cost_warehouse/locale/pt.po
Normal file
87
modules/product_cost_warehouse/locale/pt.po
Normal file
@@ -0,0 +1,87 @@
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Preço de Custo por Armazém"
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Armazéns"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr "Planejador"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Armazém"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Preço de Custo por Armazém"
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Companhia"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Preço de Custo por Armazém"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Armazém"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Armazém Obrigatório"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Armazém"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Armazém Obrigatório"
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr "Custo do Armazém"
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcular preço de custo do produto para cada armazém."
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr "Armazéns registrados para esse planejador."
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcular preço de custo do produto para cada armazém."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Calcular preço de custo do produto para cada armazém."
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr "Planejador - Estoque do Armazém"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
"Para mover produtos entre \"%(from_)s\" e \"%(to)s\", é necessário usar o "
|
||||
"local de envio interno."
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr "Configuração do Preço de Custo do Armazém"
|
||||
84
modules/product_cost_warehouse/locale/ro.po
Normal file
84
modules/product_cost_warehouse/locale/ro.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
84
modules/product_cost_warehouse/locale/ru.po
Normal file
84
modules/product_cost_warehouse/locale/ru.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
89
modules/product_cost_warehouse/locale/sl.po
Normal file
89
modules/product_cost_warehouse/locale/sl.po
Normal file
@@ -0,0 +1,89 @@
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Stroškovna cena po skladišču"
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr "Skladišča"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr "Časovni razporejevalnik"
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Skladišče"
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Stroškovna cena po skladišču"
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr "Družba"
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr "Stroškovna cena po skladišču"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Skladišče"
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Skladišče obvezno"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr "Skladišče"
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr "Skladišče obvezno"
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr "Stroškovno skladišče"
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Izračunajte nabavno ceno izdelka za vsako skladišče."
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr "Skladišča, registrirana na ta časovni razporejevalnik."
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Izračunajte nabavno ceno izdelka za vsako skladišče."
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr "Izračunajte nabavno ceno izdelka za vsako skladišče."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr "Časovni razporejevalnik - Skladišče"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
"Za premik izdelkov med »%(from_)s« in »%(to)s« morate uporabiti interno "
|
||||
"tranzitno lokacijo pošiljke."
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr "Konfiguracija izdelka - Nabavna cena po skladišču"
|
||||
84
modules/product_cost_warehouse/locale/tr.po
Normal file
84
modules/product_cost_warehouse/locale/tr.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
84
modules/product_cost_warehouse/locale/uk.po
Normal file
84
modules/product_cost_warehouse/locale/uk.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
84
modules/product_cost_warehouse/locale/zh_CN.po
Normal file
84
modules/product_cost_warehouse/locale/zh_CN.po
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:company.company,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron,warehouses:"
|
||||
msgid "Warehouses"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,cron:"
|
||||
msgid "Cron"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:ir.cron-stock.warehouse,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.configuration.cost_price_warehouse,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"field:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Cost Price per Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse:"
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:product.cost_price.revision,warehouse_required:"
|
||||
msgid "Warehouse Required"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:stock.location,cost_warehouse:"
|
||||
msgid "Cost Warehouse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:company.company,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:ir.cron,warehouses:"
|
||||
msgid "Warehouses registered for this cron."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:product.configuration,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt ""
|
||||
"help:product.configuration.cost_price_warehouse,cost_price_warehouse:"
|
||||
msgid "Compute product cost price for each warehouse."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.cron-stock.warehouse,string:"
|
||||
msgid "Cron - Stock Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_move_storage_location_same_warehouse"
|
||||
msgid ""
|
||||
"To move products between \"%(from_)s\" and \"%(to)s\", you must use the "
|
||||
"internal shipment transit location."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:product.configuration.cost_price_warehouse,string:"
|
||||
msgid "Product Configuration Cost Price Warehouse"
|
||||
msgstr ""
|
||||
10
modules/product_cost_warehouse/message.xml
Normal file
10
modules/product_cost_warehouse/message.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. -->
|
||||
<tryton>
|
||||
<data grouped="1">
|
||||
<record model="ir.message" id="msg_move_storage_location_same_warehouse">
|
||||
<field name="text">To move products between "%(from_)s" and "%(to)s", you must use the internal shipment transit location.</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
267
modules/product_cost_warehouse/product.py
Normal file
267
modules/product_cost_warehouse/product.py
Normal file
@@ -0,0 +1,267 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.model import ModelSQL, fields
|
||||
from trytond.modules.company.model import CompanyValueMixin
|
||||
from trytond.modules.product.product import TemplateFunction
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
cost_price_warehouse = fields.Boolean(
|
||||
"Cost Price per Warehouse",
|
||||
help="Compute product cost price for each warehouse.")
|
||||
|
||||
|
||||
class Configuration(metaclass=PoolMeta):
|
||||
__name__ = 'product.configuration'
|
||||
cost_price_warehouse = fields.MultiValue(cost_price_warehouse)
|
||||
|
||||
@classmethod
|
||||
def default_cost_price_warehouse(cls, **pattern):
|
||||
return cls.multivalue_model(
|
||||
'cost_price_warehouse').default_cost_price_warehouse()
|
||||
|
||||
|
||||
class ConfigurationCostPriceWarehouse(ModelSQL, CompanyValueMixin):
|
||||
__name__ = 'product.configuration.cost_price_warehouse'
|
||||
cost_price_warehouse = cost_price_warehouse
|
||||
|
||||
@classmethod
|
||||
def default_cost_price_warehouse(cls):
|
||||
return False
|
||||
|
||||
|
||||
class Product(metaclass=PoolMeta):
|
||||
__name__ = 'product.product'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
readonly = (
|
||||
Eval('context', {}).get('cost_price_warehouse', False)
|
||||
& ~Eval('context', {}).get('warehouse'))
|
||||
if cls.cost_price.states['readonly']:
|
||||
cls.cost_price.states['readonly'] |= readonly
|
||||
else:
|
||||
cls.cost_price.states['readonly'] = readonly
|
||||
|
||||
def multivalue_records(self, field):
|
||||
Value = self.multivalue_model(field)
|
||||
records = super().multivalue_records(field)
|
||||
if issubclass(Value, CostPrice):
|
||||
# Sort to get record with empty warehouse at the end
|
||||
records = sorted(records, key=lambda r: r.warehouse is None)
|
||||
return records
|
||||
|
||||
def get_multivalue(self, name, **pattern):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
context = Transaction().context
|
||||
if not isinstance(self._fields[name], TemplateFunction):
|
||||
Value = self.multivalue_model(name)
|
||||
if issubclass(Value, CostPrice) and context.get('company'):
|
||||
company = Company(context['company'])
|
||||
if company.cost_price_warehouse:
|
||||
pattern.setdefault('warehouse', context.get('warehouse'))
|
||||
return super().get_multivalue(name, **pattern)
|
||||
|
||||
def set_multivalue(self, name, value, save=True, **pattern):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
context = Transaction().context
|
||||
Value = self.multivalue_model(name)
|
||||
if issubclass(Value, CostPrice) and context.get('company'):
|
||||
company = Company(context['company'])
|
||||
if company.cost_price_warehouse:
|
||||
pattern.setdefault('warehouse', context.get('warehouse'))
|
||||
if not value and not pattern.get('warehouse'):
|
||||
return []
|
||||
return super().set_multivalue(name, value, save=save, **pattern)
|
||||
|
||||
@classmethod
|
||||
def _domain_moves_cost(cls):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
context = Transaction().context
|
||||
domain = super()._domain_moves_cost()
|
||||
if context.get('company'):
|
||||
company = Company(context['company'])
|
||||
if company.cost_price_warehouse:
|
||||
warehouse = context.get('warehouse')
|
||||
domain = [
|
||||
domain,
|
||||
['OR',
|
||||
('from_location', 'child_of', warehouse, 'parent'),
|
||||
('from_location.cost_warehouse', '=', warehouse),
|
||||
('to_location', 'child_of', warehouse, 'parent'),
|
||||
('to_location.cost_warehouse', '=', warehouse),
|
||||
],
|
||||
]
|
||||
return domain
|
||||
|
||||
@classmethod
|
||||
def _domain_in_moves_cost(cls):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
context = Transaction().context
|
||||
domain = super()._domain_in_moves_cost()
|
||||
if context.get('company'):
|
||||
company = Company(context['company'])
|
||||
if company.cost_price_warehouse:
|
||||
warehouse = context.get('warehouse')
|
||||
domain = ['OR',
|
||||
domain,
|
||||
[
|
||||
('from_location.type', '=', 'storage'),
|
||||
('to_location.type', '=', 'storage'),
|
||||
('from_location', 'not child_of', warehouse, 'parent'),
|
||||
['OR',
|
||||
('from_location.cost_warehouse', '!=', warehouse),
|
||||
('from_location.cost_warehouse', '=', None),
|
||||
],
|
||||
['OR',
|
||||
('to_location', 'child_of', warehouse, 'parent'),
|
||||
('to_location.cost_warehouse', '=', warehouse),
|
||||
],
|
||||
]
|
||||
]
|
||||
return domain
|
||||
|
||||
@classmethod
|
||||
def _domain_out_moves_cost(cls):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
context = Transaction().context
|
||||
domain = super()._domain_out_moves_cost()
|
||||
if context.get('company'):
|
||||
company = Company(context['company'])
|
||||
if company.cost_price_warehouse:
|
||||
warehouse = context.get('warehouse')
|
||||
domain = ['OR',
|
||||
domain,
|
||||
[
|
||||
('from_location.type', '=', 'storage'),
|
||||
('to_location.type', '=', 'storage'),
|
||||
('to_location', 'not child_of', warehouse, 'parent'),
|
||||
['OR',
|
||||
('to_location.cost_warehouse', '!=', warehouse),
|
||||
('to_location.cost_warehouse', '=', None),
|
||||
],
|
||||
['OR',
|
||||
('from_location', 'child_of', warehouse, 'parent'),
|
||||
('from_location.cost_warehouse', '=', warehouse),
|
||||
],
|
||||
]
|
||||
]
|
||||
return domain
|
||||
|
||||
@classmethod
|
||||
def _domain_storage_quantity(cls):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
context = Transaction().context
|
||||
domain = super()._domain_storage_quantity()
|
||||
if context.get('company'):
|
||||
company = Company(context['company'])
|
||||
if company.cost_price_warehouse:
|
||||
warehouse = context.get('warehouse')
|
||||
domain = [
|
||||
domain,
|
||||
['OR',
|
||||
('parent', 'child_of', warehouse),
|
||||
('cost_warehouse', '=', warehouse),
|
||||
],
|
||||
]
|
||||
return domain
|
||||
|
||||
@classmethod
|
||||
def default_cost_price(cls, **pattern):
|
||||
context = Transaction().context
|
||||
default = super().default_cost_price()
|
||||
if (context.get('cost_price_warehouse')
|
||||
and not pattern.get('warehouse', context.get('warehouse'))):
|
||||
default = None
|
||||
return default
|
||||
|
||||
|
||||
class CostPrice(metaclass=PoolMeta):
|
||||
__name__ = 'product.cost_price'
|
||||
warehouse = fields.Many2One(
|
||||
'stock.location', "Warehouse", ondelete='RESTRICT',
|
||||
domain=[
|
||||
('type', '=', 'warehouse'),
|
||||
],
|
||||
states={
|
||||
'required': Eval('warehouse_required', False),
|
||||
})
|
||||
warehouse_required = fields.Function(fields.Boolean(
|
||||
"Warehouse Required"), 'get_warehouse_required')
|
||||
|
||||
@classmethod
|
||||
def get_warehouse_required(cls, records, name):
|
||||
return {r.id: r.company.cost_price_warehouse for r in records}
|
||||
|
||||
|
||||
class CostPriceRevision(metaclass=PoolMeta):
|
||||
__name__ = 'product.cost_price.revision'
|
||||
warehouse = fields.Many2One(
|
||||
'stock.location', "Warehouse", ondelete='RESTRICT',
|
||||
domain=[
|
||||
('type', '=', 'warehouse'),
|
||||
],
|
||||
states={
|
||||
'required': Eval('warehouse_required', False),
|
||||
})
|
||||
warehouse_required = fields.Function(fields.Boolean(
|
||||
"Warehouse Required"), 'get_warehouse_required')
|
||||
|
||||
@classmethod
|
||||
def default_warehouse(cls):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
company_id = cls.default_company()
|
||||
if company_id is not None and company_id >= 0:
|
||||
company = Company(company_id)
|
||||
if company.cost_price_warehouse:
|
||||
return Transaction().context.get('warehouse')
|
||||
|
||||
@classmethod
|
||||
def get_warehouse_required(cls, records, name):
|
||||
return {r.id: r.company.cost_price_warehouse for r in records}
|
||||
|
||||
@classmethod
|
||||
def _get_for_product_domain(cls):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
domain = super()._get_for_product_domain()
|
||||
context = Transaction().context
|
||||
if context.get('company'):
|
||||
company = Company(context['company'])
|
||||
if company.cost_price_warehouse:
|
||||
domain = [
|
||||
domain,
|
||||
('warehouse', '=', context.get('warehouse')),
|
||||
]
|
||||
return domain
|
||||
|
||||
|
||||
class ModifyCostPrice(metaclass=PoolMeta):
|
||||
__name__ = 'product.modify_cost_price'
|
||||
|
||||
def get_revision(self, Revision):
|
||||
revision = super().get_revision(Revision)
|
||||
if revision.company.cost_price_warehouse:
|
||||
revision.warehouse = Transaction().context.get('warehouse')
|
||||
return revision
|
||||
|
||||
|
||||
class ProductCostHistory(metaclass=PoolMeta):
|
||||
__name__ = 'product.product.cost_history'
|
||||
|
||||
@classmethod
|
||||
def _non_moves_clause(cls, history_table, user):
|
||||
clause = super()._non_moves_clause(history_table, user)
|
||||
if user.company and user.company.cost_price_warehouse:
|
||||
warehouse_id = user.warehouse.id if user.warehouse else None
|
||||
clause &= history_table.warehouse == warehouse_id
|
||||
return clause
|
||||
12
modules/product_cost_warehouse/product.xml
Normal file
12
modules/product_cost_warehouse/product.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="configuration_view_form">
|
||||
<field name="model">product.configuration</field>
|
||||
<field name="inherit" ref="product.product_configuration_view_form"/>
|
||||
<field name="name">configuration_form</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
15
modules/product_cost_warehouse/res.py
Normal file
15
modules/product_cost_warehouse/res.py
Normal file
@@ -0,0 +1,15 @@
|
||||
# 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.pool import PoolMeta
|
||||
|
||||
|
||||
class User(metaclass=PoolMeta):
|
||||
__name__ = 'res.user'
|
||||
|
||||
@classmethod
|
||||
def _get_preferences(cls, user, context_only=False):
|
||||
preferences = super()._get_preferences(user, context_only=context_only)
|
||||
if user.company:
|
||||
preferences['cost_price_warehouse'] = (
|
||||
user.company.cost_price_warehouse)
|
||||
return preferences
|
||||
238
modules/product_cost_warehouse/stock.py
Normal file
238
modules/product_cost_warehouse/stock.py
Normal file
@@ -0,0 +1,238 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from decimal import Decimal
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import fields
|
||||
from trytond.modules.product import round_price
|
||||
from trytond.modules.stock.exceptions import MoveValidationError
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Bool, Eval
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class Configuration(metaclass=PoolMeta):
|
||||
__name__ = 'stock.configuration'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.shipment_internal_transit.domain = [
|
||||
cls.shipment_internal_transit.domain,
|
||||
('cost_warehouse', '=', None),
|
||||
]
|
||||
|
||||
|
||||
class ConfigurationLocation(metaclass=PoolMeta):
|
||||
__name__ = 'stock.configuration.location'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.shipment_internal_transit.domain = [
|
||||
cls.shipment_internal_transit.domain,
|
||||
('cost_warehouse', '=', None),
|
||||
]
|
||||
|
||||
|
||||
class Location(metaclass=PoolMeta):
|
||||
__name__ = 'stock.location'
|
||||
|
||||
cost_warehouse = fields.Many2One(
|
||||
'stock.location', "Cost Warehouse",
|
||||
domain=[
|
||||
('type', '=', 'warehouse'),
|
||||
],
|
||||
states={
|
||||
'invisible': (
|
||||
(Eval('type') != 'storage')
|
||||
| Bool(Eval('warehouse'))
|
||||
| (Eval('id', -1) < 0)),
|
||||
})
|
||||
|
||||
|
||||
class Move(metaclass=PoolMeta):
|
||||
__name__ = 'stock.move'
|
||||
|
||||
@property
|
||||
@fields.depends('from_location')
|
||||
def from_cost_warehouse(self):
|
||||
if self.from_location:
|
||||
return (
|
||||
self.from_location.warehouse
|
||||
or self.from_location.cost_warehouse)
|
||||
|
||||
@property
|
||||
@fields.depends('to_location')
|
||||
def to_cost_warehouse(self):
|
||||
if self.to_location:
|
||||
return (
|
||||
self.to_location.warehouse
|
||||
or self.to_location.cost_warehouse)
|
||||
|
||||
@property
|
||||
def cost_warehouse(self):
|
||||
return self.from_cost_warehouse or self.to_cost_warehouse
|
||||
|
||||
@fields.depends(
|
||||
'company', methods=['from_cost_warehouse', 'to_cost_warehouse'])
|
||||
def on_change_with_unit_price_required(self, name=None):
|
||||
required = super().on_change_with_unit_price_required(name=name)
|
||||
if (self.company and self.company.cost_price_warehouse
|
||||
and self.from_cost_warehouse != self.to_cost_warehouse):
|
||||
required = True
|
||||
return required
|
||||
|
||||
@fields.depends(
|
||||
'company', methods=['from_cost_warehouse', 'to_cost_warehouse'])
|
||||
def on_change_with_cost_price_required(self, name=None):
|
||||
required = super().on_change_with_cost_price_required(name=name)
|
||||
if (self.company and self.company.cost_price_warehouse
|
||||
and self.from_cost_warehouse != self.to_cost_warehouse):
|
||||
required = True
|
||||
return required
|
||||
|
||||
@classmethod
|
||||
def get_unit_price_company(cls, moves, name):
|
||||
pool = Pool()
|
||||
ShipmentInternal = pool.get('stock.shipment.internal')
|
||||
Uom = pool.get('product.uom')
|
||||
prices = super().get_unit_price_company(moves, name)
|
||||
for move in moves:
|
||||
if (move.company.cost_price_warehouse
|
||||
and move.from_cost_warehouse != move.to_cost_warehouse
|
||||
and move.to_cost_warehouse
|
||||
and isinstance(move.shipment, ShipmentInternal)):
|
||||
cost = total_qty = 0
|
||||
for outgoing_move in move.shipment.outgoing_moves:
|
||||
if outgoing_move.product == move.product:
|
||||
qty = Uom.compute_qty(
|
||||
outgoing_move.unit, outgoing_move.quantity,
|
||||
move.product.default_uom)
|
||||
qty = Decimal(str(qty))
|
||||
cost += qty * outgoing_move.cost_price
|
||||
total_qty += qty
|
||||
if cost and total_qty:
|
||||
cost_price = round_price(cost / total_qty)
|
||||
prices[move.id] = cost_price
|
||||
return prices
|
||||
|
||||
def get_cost_price(self, product_cost_price=None):
|
||||
pool = Pool()
|
||||
ShipmentInternal = pool.get('stock.shipment.internal')
|
||||
cost_price = super().get_cost_price(
|
||||
product_cost_price=product_cost_price)
|
||||
if (self.company.cost_price_warehouse
|
||||
and self.from_cost_warehouse != self.to_cost_warehouse
|
||||
and self.to_cost_warehouse
|
||||
and isinstance(self.shipment, ShipmentInternal)):
|
||||
cost_price = self.unit_price_company
|
||||
return cost_price
|
||||
|
||||
@classmethod
|
||||
def validate(cls, moves):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('stock.configuration')
|
||||
super().validate(moves)
|
||||
config = Configuration(1)
|
||||
transit_locations = {}
|
||||
for move in moves:
|
||||
if move.state in {'staging', 'draft'}:
|
||||
continue
|
||||
company = move.company
|
||||
if company not in transit_locations:
|
||||
transit_location = config.get_multivalue(
|
||||
'shipment_internal_transit', company=company)
|
||||
transit_locations[company] = transit_location
|
||||
else:
|
||||
transit_location = transit_locations[company]
|
||||
if (company.cost_price_warehouse
|
||||
and move.from_location.type == 'storage'
|
||||
and move.from_location != transit_location
|
||||
and move.to_location.type == 'storage'
|
||||
and move.to_location != transit_location):
|
||||
if move.from_cost_warehouse != move.to_cost_warehouse:
|
||||
raise MoveValidationError(gettext(
|
||||
'product_cost_warehouse'
|
||||
'.msg_move_storage_location_same_warehouse',
|
||||
from_=move.from_location.rec_name,
|
||||
to=move.to_location.rec_name))
|
||||
|
||||
def _do(self):
|
||||
cost_price, to_save = super()._do()
|
||||
if (self.company.cost_price_warehouse
|
||||
and self.from_location.type == 'storage'
|
||||
and self.to_location.type == 'storage'
|
||||
and self.from_cost_warehouse != self.to_cost_warehouse):
|
||||
if self.from_cost_warehouse:
|
||||
cost_price = self._compute_product_cost_price('out')
|
||||
elif self.to_cost_warehouse:
|
||||
cost_price = self._compute_product_cost_price(
|
||||
'in', self.unit_price_company)
|
||||
return cost_price, to_save
|
||||
|
||||
@property
|
||||
def _cost_price_pattern(self):
|
||||
pattern = super()._cost_price_pattern
|
||||
if self.company.cost_price_warehouse:
|
||||
pattern['warehouse'] = (
|
||||
self.cost_warehouse.id if self.cost_warehouse else None)
|
||||
return pattern
|
||||
|
||||
def _cost_price_key(self):
|
||||
key = super()._cost_price_key()
|
||||
if self.company.cost_price_warehouse:
|
||||
key += (('warehouse',
|
||||
(self.cost_warehouse.id if self.cost_warehouse else None)),
|
||||
)
|
||||
return key
|
||||
|
||||
@classmethod
|
||||
def _cost_price_context(cls, moves):
|
||||
pool = Pool()
|
||||
Location = pool.get('stock.location')
|
||||
context = super()._cost_price_context(moves)
|
||||
if moves[0].company.cost_price_warehouse:
|
||||
warehouse = moves[0].cost_warehouse
|
||||
locations = Location.search([
|
||||
('type', '=', 'storage'),
|
||||
['OR',
|
||||
('parent', 'child_of',
|
||||
warehouse.id if warehouse else []),
|
||||
('cost_warehouse', '=',
|
||||
warehouse.id if warehouse else None),
|
||||
],
|
||||
])
|
||||
context['locations'] = [l.id for l in locations]
|
||||
return context
|
||||
|
||||
def get_fifo_move(self, quantity=0.0, date=None):
|
||||
warehouse = self.cost_warehouse.id if self.cost_warehouse else None
|
||||
with Transaction().set_context(warehouse=warehouse):
|
||||
return super().get_fifo_move(quantity=quantity, date=date)
|
||||
|
||||
def _get_account_stock_move_type(self):
|
||||
type_ = super()._get_account_stock_move_type()
|
||||
if (self.company.cost_price_warehouse
|
||||
and self.from_location.type == 'storage'
|
||||
and self.to_location.type == 'storage'
|
||||
and self.from_cost_warehouse != self.to_cost_warehouse):
|
||||
if self.from_cost_warehouse and not self.to_cost_warehouse:
|
||||
type_ = 'out_warehouse'
|
||||
elif not self.from_cost_warehouse and self.to_cost_warehouse:
|
||||
type_ = 'in_warehouse'
|
||||
return type_
|
||||
|
||||
|
||||
class ShipmentInternal(metaclass=PoolMeta):
|
||||
__name__ = 'stock.shipment.internal'
|
||||
|
||||
@fields.depends('company')
|
||||
def on_change_with_transit_location(self, name=None):
|
||||
pool = Pool()
|
||||
Config = pool.get('stock.configuration')
|
||||
location = super().on_change_with_transit_location(name=name)
|
||||
if not location and self.company and self.company.cost_price_warehouse:
|
||||
location = Config(1).get_multivalue(
|
||||
'shipment_internal_transit', company=self.company)
|
||||
return location
|
||||
12
modules/product_cost_warehouse/stock.xml
Normal file
12
modules/product_cost_warehouse/stock.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="stock_location_view_form">
|
||||
<field name="model">stock.location</field>
|
||||
<field name="inherit" ref="stock.location_view_form"/>
|
||||
<field name="name">stock_location_form</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
2
modules/product_cost_warehouse/tests/__init__.py
Normal file
2
modules/product_cost_warehouse/tests/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,133 @@
|
||||
==================================
|
||||
Account Stock Continental Scenario
|
||||
==================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.account.tests.tools import (
|
||||
... create_chart, create_fiscalyear, get_accounts)
|
||||
>>> from trytond.modules.account_stock_continental.tests.tools import (
|
||||
... add_stock_accounts)
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate product_cost_warehouse::
|
||||
|
||||
>>> config = activate_modules([
|
||||
... 'product_cost_warehouse', 'account_stock_continental'],
|
||||
... create_company, create_chart)
|
||||
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> Product = Model.get('product.product')
|
||||
>>> ProductCategory = Model.get('product.category')
|
||||
>>> ProductConfiguration = Model.get('product.configuration')
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> ShipmentInternal = Model.get('stock.shipment.internal')
|
||||
>>> StockConfiguration = Model.get('stock.configuration')
|
||||
|
||||
Get company::
|
||||
|
||||
>>> company = get_company()
|
||||
|
||||
Create fiscal year::
|
||||
|
||||
>>> fiscalyear = create_fiscalyear()
|
||||
>>> fiscalyear.account_stock_method = 'continental'
|
||||
>>> fiscalyear.click('create_period')
|
||||
|
||||
Get accounts::
|
||||
|
||||
>>> accounts = add_stock_accounts(get_accounts())
|
||||
|
||||
Create product category::
|
||||
|
||||
>>> account_category = ProductCategory(name="Account Category")
|
||||
>>> account_category.accounting = True
|
||||
>>> account_category.account_expense = accounts['expense']
|
||||
>>> account_category.account_revenue = accounts['revenue']
|
||||
>>> account_category.account_stock = accounts['stock']
|
||||
>>> account_category.account_stock_in = accounts['stock_expense']
|
||||
>>> account_category.account_stock_out = accounts['stock_expense']
|
||||
>>> account_category.save()
|
||||
|
||||
Create product::
|
||||
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = "Product"
|
||||
>>> template.default_uom = unit
|
||||
>>> template.type = 'goods'
|
||||
>>> template.list_price = Decimal('300')
|
||||
>>> template.cost_price_method = 'average'
|
||||
>>> template.account_category = account_category
|
||||
>>> product, = template.products
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
Set cost per warehouse::
|
||||
|
||||
>>> product_config = ProductConfiguration(1)
|
||||
>>> product_config.cost_price_warehouse = True
|
||||
>>> product_config.save()
|
||||
|
||||
Create stock locations::
|
||||
|
||||
>>> warehouse1, = Location.find([('code', '=', 'WH')])
|
||||
>>> warehouse2, = warehouse1.duplicate(default={'name': "Warhouse bis"})
|
||||
>>> transit = Location(name="Transit", type='storage')
|
||||
>>> transit.save()
|
||||
>>> stock_config = StockConfiguration(1)
|
||||
>>> stock_config.shipment_internal_transit = transit
|
||||
>>> stock_config.save()
|
||||
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
|
||||
|
||||
Make 1 unit of product available @ 100 on 1st warehouse::
|
||||
|
||||
>>> StockMove = Model.get('stock.move')
|
||||
>>> move = StockMove()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 1
|
||||
>>> move.from_location = supplier_loc
|
||||
>>> move.to_location = warehouse1.storage_location
|
||||
>>> move.unit_price = Decimal('100')
|
||||
>>> move.currency = company.currency
|
||||
>>> move.click('do')
|
||||
|
||||
>>> accounts['stock'].reload()
|
||||
>>> accounts['stock'].balance
|
||||
Decimal('100.00')
|
||||
|
||||
Transfer 1 product between warehouses::
|
||||
|
||||
>>> shipment = ShipmentInternal()
|
||||
>>> shipment.from_location = warehouse1.storage_location
|
||||
>>> shipment.to_location = warehouse2.storage_location
|
||||
>>> move = shipment.moves.new()
|
||||
>>> move.from_location = shipment.from_location
|
||||
>>> move.to_location = shipment.to_location
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 1
|
||||
>>> move.unit_price = product.cost_price
|
||||
>>> move.currency = company.currency
|
||||
>>> shipment.click('wait')
|
||||
>>> shipment.click('assign_force')
|
||||
|
||||
>>> shipment.click('pack')
|
||||
>>> shipment.click('ship')
|
||||
>>> shipment.state
|
||||
'shipped'
|
||||
>>> accounts['stock'].reload()
|
||||
>>> accounts['stock'].balance
|
||||
Decimal('0.00')
|
||||
|
||||
>>> shipment.click('do')
|
||||
>>> shipment.state
|
||||
'done'
|
||||
>>> accounts['stock'].reload()
|
||||
>>> accounts['stock'].balance
|
||||
Decimal('100.00')
|
||||
@@ -0,0 +1,143 @@
|
||||
====================================
|
||||
Product Cost FIFO Warehouse Scenario
|
||||
====================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate product_cost_warehouse::
|
||||
|
||||
>>> config = activate_modules(
|
||||
... ['product_cost_warehouse', 'product_cost_fifo'], create_company)
|
||||
|
||||
Get company::
|
||||
|
||||
>>> company = get_company()
|
||||
|
||||
Create product::
|
||||
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> Product = Model.get('product.product')
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = "Product"
|
||||
>>> template.default_uom = unit
|
||||
>>> template.type = 'goods'
|
||||
>>> template.list_price = Decimal('300')
|
||||
>>> template.cost_price_method = 'fifo'
|
||||
>>> product, = template.products
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
Set cost per warehouse::
|
||||
|
||||
>>> ProductConfiguration = Model.get('product.configuration')
|
||||
>>> product_config = ProductConfiguration(1)
|
||||
>>> product_config.cost_price_warehouse = True
|
||||
>>> product_config.save()
|
||||
|
||||
|
||||
Create stock locations::
|
||||
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> StockConfiguration = Model.get('stock.configuration')
|
||||
>>> warehouse1, = Location.find([('code', '=', 'WH')])
|
||||
>>> warehouse2, = warehouse1.duplicate(default={'name': "Warhouse bis"})
|
||||
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
|
||||
>>> customer_loc, = Location.find([('code', '=', 'CUS')])
|
||||
|
||||
|
||||
Make 2 unit of product available @ 100 on 1st warehouse::
|
||||
|
||||
>>> StockMove = Model.get('stock.move')
|
||||
>>> move = StockMove()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 2
|
||||
>>> move.from_location = supplier_loc
|
||||
>>> move.to_location = warehouse1.storage_location
|
||||
>>> move.unit_price = Decimal('100')
|
||||
>>> move.currency = company.currency
|
||||
>>> move.click('do')
|
||||
|
||||
Check cost prices::
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse1.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('100.0000')
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse2.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('0')
|
||||
|
||||
Make 2 unit of product available @ 80 in both warehouses::
|
||||
|
||||
>>> moves = []
|
||||
>>> for warehouse in [warehouse1, warehouse2]:
|
||||
... move = StockMove()
|
||||
... move.product = product
|
||||
... move.quantity = 2
|
||||
... move.from_location = supplier_loc
|
||||
... move.to_location = warehouse.storage_location
|
||||
... move.unit_price = Decimal('80')
|
||||
... move.currency = company.currency
|
||||
... moves.append(move)
|
||||
>>> StockMove.click(moves, 'do')
|
||||
|
||||
Check cost prices::
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse1.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('90.0000')
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse2.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('80.0000')
|
||||
|
||||
Sent 3 unit of product from 1st warehouse::
|
||||
|
||||
>>> move = StockMove()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 3
|
||||
>>> move.from_location = warehouse1.storage_location
|
||||
>>> move.to_location = customer_loc
|
||||
>>> move.unit_price = Decimal('150')
|
||||
>>> move.currency = company.currency
|
||||
>>> move.click('do')
|
||||
>>> move.cost_price
|
||||
Decimal('93.3333')
|
||||
|
||||
Recompute cost price for both warehouses::
|
||||
|
||||
>>> for warehouse in [warehouse1, warehouse2]:
|
||||
... with config.set_context(warehouse=warehouse.id):
|
||||
... recompute = Wizard('product.recompute_cost_price', [product])
|
||||
... recompute.execute('recompute')
|
||||
|
||||
Check cost prices::
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse1.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('80.0001')
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse2.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('80.0000')
|
||||
|
||||
Check cost prices on moves::
|
||||
|
||||
>>> [m.cost_price for m in StockMove.find([])]
|
||||
[Decimal('93.3333'), Decimal('80.0000'), Decimal('90.0000'), Decimal('90.0000')]
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
===============================
|
||||
Product Cost Warehouse Scenario
|
||||
===============================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('product_cost_warehouse', create_company)
|
||||
|
||||
Get company::
|
||||
|
||||
>>> company = get_company()
|
||||
|
||||
Create product::
|
||||
|
||||
>>> ProductUom = Model.get('product.uom')
|
||||
>>> ProductTemplate = Model.get('product.template')
|
||||
>>> Product = Model.get('product.product')
|
||||
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
|
||||
>>> template = ProductTemplate()
|
||||
>>> template.name = "Product"
|
||||
>>> template.default_uom = unit
|
||||
>>> template.type = 'goods'
|
||||
>>> template.list_price = Decimal('300')
|
||||
>>> template.cost_price_method = 'average'
|
||||
>>> product, = template.products
|
||||
>>> template.save()
|
||||
>>> product, = template.products
|
||||
|
||||
Set cost per warehouse::
|
||||
|
||||
>>> ProductConfiguration = Model.get('product.configuration')
|
||||
>>> product_config = ProductConfiguration(1)
|
||||
>>> product_config.cost_price_warehouse = True
|
||||
>>> product_config.save()
|
||||
|
||||
|
||||
Create stock locations::
|
||||
|
||||
>>> Location = Model.get('stock.location')
|
||||
>>> StockConfiguration = Model.get('stock.configuration')
|
||||
>>> warehouse1, = Location.find([('code', '=', 'WH')])
|
||||
>>> warehouse2, = warehouse1.duplicate(default={'name': "Warhouse bis"})
|
||||
>>> transit = Location(name="Transit", type='storage')
|
||||
>>> transit.save()
|
||||
>>> stock_config = StockConfiguration(1)
|
||||
>>> stock_config.shipment_internal_transit = transit
|
||||
>>> stock_config.save()
|
||||
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
|
||||
|
||||
|
||||
Make 1 unit of product available @ 100 on 1st warehouse::
|
||||
|
||||
>>> StockMove = Model.get('stock.move')
|
||||
>>> move = StockMove()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 1
|
||||
>>> move.from_location = supplier_loc
|
||||
>>> move.to_location = warehouse1.storage_location
|
||||
>>> move.unit_price = Decimal('100')
|
||||
>>> move.currency = company.currency
|
||||
>>> move.click('do')
|
||||
|
||||
Check cost prices::
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse1.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('100.0000')
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse2.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('0')
|
||||
|
||||
Make 1 unit of product available @ 80 in both warehouses::
|
||||
|
||||
>>> moves = []
|
||||
>>> for warehouse in [warehouse1, warehouse2]:
|
||||
... move = StockMove()
|
||||
... move.product = product
|
||||
... move.quantity = 1
|
||||
... move.from_location = supplier_loc
|
||||
... move.to_location = warehouse.storage_location
|
||||
... move.unit_price = Decimal('80')
|
||||
... move.currency = company.currency
|
||||
... moves.append(move)
|
||||
>>> StockMove.click(moves, 'do')
|
||||
|
||||
Check cost prices::
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse1.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('90.0000')
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse2.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('80.0000')
|
||||
|
||||
Recompute cost price for both warehouses::
|
||||
|
||||
>>> for warehouse in [warehouse1, warehouse2]:
|
||||
... with config.set_context(warehouse=warehouse.id):
|
||||
... recompute = Wizard('product.recompute_cost_price', [product])
|
||||
... recompute.execute('recompute')
|
||||
|
||||
Check cost prices::
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse1.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('90.0000')
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse2.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('80.0000')
|
||||
|
||||
Check cost prices on moves::
|
||||
|
||||
>>> [m.cost_price for m in StockMove.find([])]
|
||||
[Decimal('80.0000'), Decimal('90.0000'), Decimal('90.0000')]
|
||||
|
||||
Forbid direct move between warehouses::
|
||||
|
||||
>>> move = StockMove()
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 1
|
||||
>>> move.from_location = warehouse1.storage_location
|
||||
>>> move.to_location = warehouse2.storage_location
|
||||
>>> move.unit_price = product.cost_price
|
||||
>>> move.currency = company.currency
|
||||
>>> move.save()
|
||||
>>> move.click('do')
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
MoveValidationError: ...
|
||||
|
||||
>>> move.to_location = transit
|
||||
>>> move.click('do')
|
||||
>>> move.state
|
||||
'done'
|
||||
|
||||
Transfer 1 product between warehouses::
|
||||
|
||||
>>> ShipmentInternal = Model.get('stock.shipment.internal')
|
||||
>>> shipment = ShipmentInternal()
|
||||
>>> shipment.from_location = warehouse1.storage_location
|
||||
>>> shipment.to_location = warehouse2.storage_location
|
||||
>>> move = shipment.moves.new()
|
||||
>>> move.from_location = shipment.from_location
|
||||
>>> move.to_location = shipment.to_location
|
||||
>>> move.product = product
|
||||
>>> move.quantity = 1
|
||||
>>> move.unit_price = product.cost_price
|
||||
>>> move.currency = company.currency
|
||||
>>> shipment.click('wait')
|
||||
>>> shipment.state
|
||||
'waiting'
|
||||
>>> shipment.click('assign_force')
|
||||
>>> shipment.state
|
||||
'assigned'
|
||||
|
||||
>>> shipment.click('pack')
|
||||
>>> shipment.click('ship')
|
||||
>>> shipment.state
|
||||
'shipped'
|
||||
>>> move, = shipment.outgoing_moves
|
||||
>>> move.state
|
||||
'done'
|
||||
>>> move.cost_price
|
||||
Decimal('90.0000')
|
||||
|
||||
>>> shipment.click('do')
|
||||
>>> shipment.state
|
||||
'done'
|
||||
>>> move, = shipment.incoming_moves
|
||||
>>> move.state
|
||||
'done'
|
||||
>>> move.cost_price
|
||||
Decimal('85.0000')
|
||||
|
||||
Recompute cost price for both warehouses::
|
||||
|
||||
>>> for warehouse in [warehouse1, warehouse2]:
|
||||
... with config.set_context(warehouse=warehouse.id):
|
||||
... recompute = Wizard('product.recompute_cost_price', [product])
|
||||
... recompute.execute('recompute')
|
||||
|
||||
Check cost prices::
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse1.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('90.0000')
|
||||
|
||||
>>> with config.set_context(warehouse=warehouse2.id):
|
||||
... product = Product(product.id)
|
||||
>>> product.cost_price
|
||||
Decimal('85.0000')
|
||||
14
modules/product_cost_warehouse/tests/test_module.py
Normal file
14
modules/product_cost_warehouse/tests/test_module.py
Normal file
@@ -0,0 +1,14 @@
|
||||
# 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.modules.company.tests import CompanyTestMixin
|
||||
from trytond.tests.test_tryton import ModuleTestCase
|
||||
|
||||
|
||||
class ProductCostWarehouseTestCase(CompanyTestMixin, ModuleTestCase):
|
||||
'Test Product Cost Warehouse module'
|
||||
module = 'product_cost_warehouse'
|
||||
extras = ['account_invoice_stock', 'product_cost_history']
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
8
modules/product_cost_warehouse/tests/test_scenario.py
Normal file
8
modules/product_cost_warehouse/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)
|
||||
45
modules/product_cost_warehouse/tryton.cfg
Normal file
45
modules/product_cost_warehouse/tryton.cfg
Normal file
@@ -0,0 +1,45 @@
|
||||
[tryton]
|
||||
version=7.8.0
|
||||
depends:
|
||||
company
|
||||
ir
|
||||
product
|
||||
res
|
||||
stock
|
||||
extras_depend:
|
||||
account_invoice_stock
|
||||
account_stock_continental
|
||||
product_cost_fifo
|
||||
product_cost_history
|
||||
xml:
|
||||
ir.xml
|
||||
product.xml
|
||||
stock.xml
|
||||
message.xml
|
||||
|
||||
[register]
|
||||
model:
|
||||
ir.Cron
|
||||
ir.CronWarehouse
|
||||
res.User
|
||||
company.Company
|
||||
product.Configuration
|
||||
product.ConfigurationCostPriceWarehouse
|
||||
product.Product
|
||||
product.CostPrice
|
||||
product.CostPriceRevision
|
||||
stock.Configuration
|
||||
stock.ConfigurationLocation
|
||||
stock.Location
|
||||
stock.Move
|
||||
stock.ShipmentInternal
|
||||
wizard:
|
||||
product.ModifyCostPrice
|
||||
|
||||
[register account_invoice_stock]
|
||||
model:
|
||||
account.InvoiceLine
|
||||
|
||||
[register product_cost_history]
|
||||
model:
|
||||
product.ProductCostHistory
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="//field[@name='default_cost_price_method']" position="after">
|
||||
<label name="cost_price_warehouse"/>
|
||||
<field name="cost_price_warehouse"/>
|
||||
</xpath>
|
||||
</data>
|
||||
8
modules/product_cost_warehouse/view/ir_cron_form.xml
Normal file
8
modules/product_cost_warehouse/view/ir_cron_form.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="/form" position="inside">
|
||||
<field name="warehouses" colspan="4"/>
|
||||
</xpath>
|
||||
</data>
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="//field[@name='flat_childs']" position="after">
|
||||
<label name="cost_warehouse"/>
|
||||
<field name="cost_warehouse"/>
|
||||
</xpath>
|
||||
</data>
|
||||
Reference in New Issue
Block a user