first commit

This commit is contained in:
root
2026-03-14 09:42:12 +00:00
commit 0adbd20c2c
10991 changed files with 1646955 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@@ -0,0 +1,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')

View 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)

View 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'),
])

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="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>

View 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 ""

View 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"

View 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 ""

View 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"

View 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"

View 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 ""

View 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 ""

View 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 ""

View 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 ""

View 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"

View 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"

View 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 ""

View 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"

View 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 ""

View 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 ""

View 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"

View 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 ""

View 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"

View 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 ""

View 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 ""

View 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"

View 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 ""

View 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 ""

View 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 ""

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="msg_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>

View 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

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="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>

View 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

View 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

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="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>

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@@ -0,0 +1,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')

View File

@@ -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')]

View File

@@ -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')

View 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

View File

@@ -0,0 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import load_doc_tests
def load_tests(*args, **kwargs):
return load_doc_tests(__name__, __file__, *args, **kwargs)

View File

@@ -0,0 +1,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

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//field[@name='default_cost_price_method']" position="after">
<label name="cost_price_warehouse"/>
<field name="cost_price_warehouse"/>
</xpath>
</data>

View 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>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//field[@name='flat_childs']" position="after">
<label name="cost_warehouse"/>
<field name="cost_warehouse"/>
</xpath>
</data>