Initial import from Docker volume

This commit is contained in:
root
2025-12-26 13:11:43 +00:00
commit 4998dc066a
13336 changed files with 1767801 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
# 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 Pool
from . import account, product, stock
def register():
Pool.register(
stock.Move,
product.Category,
product.CategoryAccount,
product.Template,
product.Product,
account.Configuration,
account.ConfigurationStockJournal,
account.FiscalYear,
account.AccountMove,
module='account_stock_continental', type_='model')

View File

@@ -0,0 +1,70 @@
# 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, ValueMixin, fields
from trytond.pool import Pool, PoolMeta
stock_journal = fields.Many2One(
'account.journal', "Stock Journal", required=True)
stock_fx_trigger = fields.Selection([
('reception', 'Reception'),
('invoice', 'First invoice'),
('payment', 'Up to payment'),
], 'Fx stock revaluation', required=True)
stock_fx_forex = fields.Selection([
('forex', 'Fixed with forex'),
('spot', 'Spot'),
], 'stock rate valuation', required=True)
class Configuration(metaclass=PoolMeta):
__name__ = 'account.configuration'
stock_journal = fields.MultiValue(stock_journal)
stock_fx_trigger = stock_fx_trigger
stock_fx_forex = stock_fx_forex
@classmethod
def default_stock_journal(cls, **pattern):
return cls.multivalue_model('stock_journal').default_stock_journal()
class ConfigurationStockJournal(ModelSQL, ValueMixin):
"Account Configuration Stock Journal"
__name__ = 'account.configuration.stock_journal'
stock_journal = stock_journal
stock_fx_trigger = stock_fx_trigger
stock_fx_forex = stock_fx_forex
@classmethod
def default_stock_fx_trigger(cls):
return 'invoice'
@classmethod
def default_stock_fx_forex(cls):
return 'spot'
@classmethod
def default_stock_journal(cls):
pool = Pool()
ModelData = pool.get('ir.model.data')
try:
return ModelData.get_id('account', 'journal_stock')
except KeyError:
return None
class FiscalYear(metaclass=PoolMeta):
__name__ = 'account.fiscalyear'
account_stock_method = fields.Selection([
(None, 'None'),
('continental', 'Continental'),
], 'Account Stock Method')
class AccountMove(metaclass=PoolMeta):
__name__ = 'account.move'
@classmethod
def _get_origin(cls):
return super(AccountMove, cls)._get_origin() + ['stock.move',
'product.product', 'product.template']

View File

@@ -0,0 +1,29 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="configuration_view_form">
<field name="model">account.configuration</field>
<field name="inherit" ref="account.configuration_view_form"/>
<field name="name">configuration_form</field>
</record>
<record model="ir.ui.view" id="fiscalyear_view_form">
<field name="model">account.fiscalyear</field>
<field name="inherit" ref="account.fiscalyear_view_form"/>
<field name="name">fiscalyear_form</field>
</record>
<!-- Read access for origin field on account.move -->
<record model="ir.model.access" id="access_move_group_account">
<field name="model">stock.move</field>
<field name="group" ref="account.group_account"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,60 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
#, fuzzy
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Няма"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Diari d'existències"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Diari d'existències"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Mètode comptabilització de les existències"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Compte d'existències"
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Compte d'existències d'entrada"
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Compte d'existències de sortida"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Compte d'existències"
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Compte d'existències d'entrada"
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Compte d'existències de sortida"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr "Configuració del diari d'existències"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "Continental"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Cap"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Logística"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Comptabilització de l'existències"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Journal Lager"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Journal Lager"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Lagerbewertungsmethode"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Warenbestandskonto"
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Warenbestandsveränderungskonto (Eingang)"
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Warenbestandsveränderungskonto (Ausgang)"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Warenbestandskonto"
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Warenbestandsveränderungskonto (Eingang)"
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Warenbestandsveränderungskonto (Ausgang)"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr "Einstellungen Buchhaltung Journal Lager"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "Kontinental"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Keine"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Lager"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Lagerbewertung"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Diario de existencias"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Diario de existencias"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Método contabilización de existencias"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Cuenta de existencias"
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Cuenta de existencias de entrada"
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Cuenta de existencias de salida"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Cuenta de existencias"
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Cuenta de existencias de entrada"
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Cuenta de existencias de salida"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr "Configuración del diario de existencias"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "Continental"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Ninguno"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Logística"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Contabilización del existencias"

View File

@@ -0,0 +1,63 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Libro diario de inventario"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Libro diario de inventario"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Método de contabilización de inventario"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
#, fuzzy
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Método de contabilización de inventario"
#, fuzzy
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Método de contabilización de inventario"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
#, fuzzy
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Método de contabilización de inventario"
#, fuzzy
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Método de contabilización de inventario"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr "Configuración del diario de existencias"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,63 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Lao andmik"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Lao andmik"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Lao konto meetod"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Lao konto"
#, fuzzy
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Lao konto"
#, fuzzy
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Lao konto"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Lao konto"
#, fuzzy
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Lao konto"
#, fuzzy
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Lao konto"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "Rahvusvaheline"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Mitte"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Ladu"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Lao konto"

View File

@@ -0,0 +1,63 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "روزنامه موجودی"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "روزنامه موجودی"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "روش حساب موجودی"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "حساب موجودی"
#, fuzzy
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "حساب موجودی"
#, fuzzy
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "حساب موجودی"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "حساب موجودی"
#, fuzzy
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "حساب موجودی"
#, fuzzy
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "حساب موجودی"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr "پیکربندی حساب ؛ روزنامه موجودی"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "قاره"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "هیجکدام"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "موجودی"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "حساب موجودی"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Journal de stock"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Journal de stock"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Méthode de comptabilité de stock"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Compte de stock"
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Compte de stock entrant"
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Compte de stock sortant"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Compte de stock"
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Compte de stock entrant"
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Compte de stock sortant"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr "Configuration comptable Journal de stock"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "Continentale"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Aucune"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Stocks"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Compte de stock"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Készletnapló"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Készletnapló"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Készletek számviteli módja"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Készletszámla"
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Vásárolt készletek elszámolása"
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Kiadott áru számla"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Készletszámla"
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Vásárolt készletek elszámolása"
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Kiadott áru számla"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "kontinentális"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "nincs"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Készlet"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Készletek számvitele"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Tidak ada"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Persediaan"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,66 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Registro di magazzino"
#, fuzzy
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Registro di magazzino"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Metodo contabile del magazzino"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Conto di magazzino"
#, fuzzy
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Conto di magazzino"
#, fuzzy
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Conto di magazzino"
#, fuzzy
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Conto di magazzino"
#, fuzzy
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Conto di magazzino"
#, fuzzy
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Conto di magazzino"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Nessuno"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
#, fuzzy
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Conto di magazzino"

View File

@@ -0,0 +1,60 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
#, fuzzy
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "ບໍ່ມີ"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Sandėlio žurnalas"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Sandėlio žurnalas"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Sandėlys"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Voorraad dagboek"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Voorraad dagboek"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Voorraadwaarderingsmethode"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Voorraad rekening"
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Voorraad rekening IN"
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Voorraad rekening UIT"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "rekening voorraad"
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Voorraad rekening IN"
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Voorraad rekening UIT"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr "rekeningconfiguratie Voorraadjournaal"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "Continentaal"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Geen"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Voorraad"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Voorraad rekening"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Brak"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,63 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Diário de Estoque"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Diário de Estoque"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Método de Contabilização de Estoque"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Conta de Estoque"
#, fuzzy
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Conta de Estoque"
#, fuzzy
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Conta de Estoque"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Conta de Estoque"
#, fuzzy
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Conta de Estoque"
#, fuzzy
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Conta de Estoque"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr "Configurações de Contabilidade Diário de Estoque"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "Continental"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Nenhum"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Estoque"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Conta de Estoque"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,60 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
#, fuzzy
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Отсутствует"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,63 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr "Dnevnik zaloge"
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr "Dnevnik zaloge"
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr "Način vodenja zaloge"
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr "Konto zaloge"
#, fuzzy
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Konto zaloge"
#, fuzzy
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Konto zaloge"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Konto zaloge"
#, fuzzy
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Konto zaloge"
#, fuzzy
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Konto zaloge"
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr "Konfiguracija dnevnika zaloge"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr "Kontinentalen"
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr "Brez"
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr "Zaloga"
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr "Konto zaloge"

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.configuration.stock_journal,stock_journal:"
msgid "Stock Journal"
msgstr ""
msgctxt "field:account.fiscalyear,account_stock_method:"
msgid "Account Stock Method"
msgstr ""
msgctxt "field:product.category,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr ""
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr ""
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr ""
msgctxt "model:account.configuration.stock_journal,name:"
msgid "Account Configuration Stock Journal"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "Continental"
msgstr ""
msgctxt "selection:account.fiscalyear,account_stock_method:"
msgid "None"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Stock"
msgstr ""
msgctxt "view:account.fiscalyear:"
msgid "Account Stock"
msgstr ""

View File

@@ -0,0 +1,71 @@
<?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 language="bg">
<record id="account_type_template_asset_current_inventories_bg" model="account.account.type.template">
<field name="name">Инвентаризации</field>
<field name="parent" ref="account.account_type_template_asset_current_bg"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_bg" model="account.account.template">
<field name="name">Наличност</field>
<field name="type" ref="account_type_template_asset_current_inventories_bg"/>
<field name="parent" ref="account.account_template_root_bg"/>
</record>
<record id="account_type_template_stock_expense_bg" model="account.account.type.template">
<field name="name">Разход на акции</field>
<field name="parent" ref="account.account_type_template_expense_bg"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_bg" model="account.account.template">
<field name="name">Разход на акции</field>
<field name="type" ref="account_type_template_stock_expense_bg"/>
<field name="parent" ref="account.account_template_root_bg"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,71 @@
<?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 language="ca">
<record id="account_type_template_asset_current_inventories_ca" model="account.account.type.template">
<field name="name">Inventaris</field>
<field name="parent" ref="account.account_type_template_asset_current_ca"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_ca" model="account.account.template">
<field name="name">Estoc</field>
<field name="type" ref="account_type_template_asset_current_inventories_ca"/>
<field name="parent" ref="account.account_template_root_ca"/>
</record>
<record id="account_type_template_stock_expense_ca" model="account.account.type.template">
<field name="name">Despeses de valors</field>
<field name="parent" ref="account.account_type_template_expense_ca"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_ca" model="account.account.template">
<field name="name">Despeses d'existències</field>
<field name="type" ref="account_type_template_stock_expense_ca"/>
<field name="parent" ref="account.account_template_root_ca"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,71 @@
<?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 language="de">
<record id="account_type_template_asset_current_inventories_de" model="account.account.type.template">
<field name="name">Bestandskorrekturen</field>
<field name="parent" ref="account.account_type_template_asset_current_de"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_de" model="account.account.template">
<field name="name">Lager</field>
<field name="type" ref="account_type_template_asset_current_inventories_de"/>
<field name="parent" ref="account.account_template_root_de"/>
</record>
<record id="account_type_template_stock_expense_de" model="account.account.type.template">
<field name="name">Lagerkosten</field>
<field name="parent" ref="account.account_type_template_expense_de"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_de" model="account.account.template">
<field name="name">Lagerkosten</field>
<field name="type" ref="account_type_template_stock_expense_de"/>
<field name="parent" ref="account.account_template_root_de"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,71 @@
<?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 language="en">
<record id="account_type_template_asset_current_inventories_en" model="account.account.type.template">
<field name="name">Inventories</field>
<field name="parent" ref="account.account_type_template_asset_current_en"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_en" model="account.account.template">
<field name="name">Stock</field>
<field name="type" ref="account_type_template_asset_current_inventories_en"/>
<field name="parent" ref="account.account_template_root_en"/>
</record>
<record id="account_type_template_stock_expense_en" model="account.account.type.template">
<field name="name">Stock Expense</field>
<field name="parent" ref="account.account_type_template_expense_en"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_en" model="account.account.template">
<field name="name">Stock Expense</field>
<field name="type" ref="account_type_template_stock_expense_en"/>
<field name="parent" ref="account.account_template_root_en"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,71 @@
<?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 language="es">
<record id="account_type_template_asset_current_inventories_es" model="account.account.type.template">
<field name="name">Inventarios</field>
<field name="parent" ref="account.account_type_template_asset_current_es"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_es" model="account.account.template">
<field name="name">Existencias</field>
<field name="type" ref="account_type_template_asset_current_inventories_es"/>
<field name="parent" ref="account.account_template_root_es"/>
</record>
<record id="account_type_template_stock_expense_es" model="account.account.type.template">
<field name="name">Gastos de Stock</field>
<field name="parent" ref="account.account_type_template_expense_es"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_es" model="account.account.template">
<field name="name">Gastos de existencias</field>
<field name="type" ref="account_type_template_stock_expense_es"/>
<field name="parent" ref="account.account_template_root_es"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,71 @@
<?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 language="fr">
<record id="account_type_template_asset_current_inventories_fr" model="account.account.type.template">
<field name="name">Inventaires</field>
<field name="parent" ref="account.account_type_template_asset_current_fr"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_fr" model="account.account.template">
<field name="name">Stock</field>
<field name="type" ref="account_type_template_asset_current_inventories_fr"/>
<field name="parent" ref="account.account_template_root_fr"/>
</record>
<record id="account_type_template_stock_expense_fr" model="account.account.type.template">
<field name="name">Variation des stocks</field>
<field name="parent" ref="account.account_type_template_expense_fr"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_fr" model="account.account.template">
<field name="name">Variation des stocks</field>
<field name="type" ref="account_type_template_stock_expense_fr"/>
<field name="parent" ref="account.account_template_root_fr"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,71 @@
<?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 language="nl">
<record id="account_type_template_asset_current_inventories_nl" model="account.account.type.template">
<field name="name">Inventories</field>
<field name="parent" ref="account.account_type_template_asset_current_nl"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_nl" model="account.account.template">
<field name="name">Voorraad</field>
<field name="type" ref="account_type_template_asset_current_inventories_nl"/>
<field name="parent" ref="account.account_template_root_nl"/>
</record>
<record id="account_type_template_stock_expense_nl" model="account.account.type.template">
<field name="name">Voorraad</field>
<field name="parent" ref="account.account_type_template_expense_nl"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_nl" model="account.account.template">
<field name="name">Voorraad</field>
<field name="type" ref="account_type_template_stock_expense_nl"/>
<field name="parent" ref="account.account_template_root_nl"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,71 @@
<?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 language="pt">
<record id="account_type_template_asset_current_inventories_pt" model="account.account.type.template">
<field name="name">Inventários</field>
<field name="parent" ref="account.account_type_template_asset_current_pt"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_pt" model="account.account.template">
<field name="name">Estoque</field>
<field name="type" ref="account_type_template_asset_current_inventories_pt"/>
<field name="parent" ref="account.account_template_root_pt"/>
</record>
<record id="account_type_template_stock_expense_pt" model="account.account.type.template">
<field name="name">Despesa de estoque</field>
<field name="parent" ref="account.account_type_template_expense_pt"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_pt" model="account.account.template">
<field name="name">Despesa de estoque</field>
<field name="type" ref="account_type_template_stock_expense_pt"/>
<field name="parent" ref="account.account_template_root_pt"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,71 @@
<?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 language="ru">
<record id="account_type_template_asset_current_inventories_ru" model="account.account.type.template">
<field name="name">Инвентаризация</field>
<field name="parent" ref="account.account_type_template_asset_current_ru"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_ru" model="account.account.template">
<field name="name">Хранилище</field>
<field name="type" ref="account_type_template_asset_current_inventories_ru"/>
<field name="parent" ref="account.account_template_root_ru"/>
</record>
<record id="account_type_template_stock_expense_ru" model="account.account.type.template">
<field name="name">Расходы на акции</field>
<field name="parent" ref="account.account_type_template_expense_ru"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_ru" model="account.account.template">
<field name="name">Расходы на акции</field>
<field name="type" ref="account_type_template_stock_expense_ru"/>
<field name="parent" ref="account.account_template_root_ru"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,71 @@
<?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 language="sl">
<record id="account_type_template_asset_current_inventories_sl" model="account.account.type.template">
<field name="name">Popisi</field>
<field name="parent" ref="account.account_type_template_asset_current_sl"/>
<field name="statement">balance</field>
<field name="stock" eval="True"/>
<field name="sequence" eval="20"/>
</record>
<record id="account_template_stock_sl" model="account.account.template">
<field name="name">Zaloga</field>
<field name="type" ref="account_type_template_asset_current_inventories_sl"/>
<field name="parent" ref="account.account_template_root_sl"/>
</record>
<record id="account_type_template_stock_expense_sl" model="account.account.type.template">
<field name="name">Stroški zalog</field>
<field name="parent" ref="account.account_type_template_expense_sl"/>
<field name="statement">income</field>
<field name="sequence" eval="30"/>
<field name="stock" eval="True"/>
</record>
<record id="account_template_stock_expense_sl" model="account.account.template">
<field name="name">Stroški zalog</field>
<field name="type" ref="account_type_template_stock_expense_sl"/>
<field name="parent" ref="account.account_template_root_sl"/>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,232 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from decimal import Decimal
from trytond.model import fields
from trytond.modules.account_product.product import (
account_used, template_property)
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
from trytond.transaction import Transaction
account_names = [
'account_stock', 'account_stock_in', 'account_stock_out']
class Category(metaclass=PoolMeta):
__name__ = 'product.category'
account_stock = fields.MultiValue(fields.Many2One(
'account.account', "Account Stock",
domain=[
('closed', '!=', True),
('type.stock', '=', True),
('type.statement', '=', 'balance'),
('company', '=', Eval('context', {}).get('company', -1)),
],
states={
'invisible': (~Eval('context', {}).get('company')
| Eval('account_parent')
| ~Eval('accounting', False)),
}))
account_stock_in = fields.MultiValue(fields.Many2One(
'account.account', "Account Stock IN",
domain=[
('closed', '!=', True),
('type.stock', '=', True),
('company', '=', Eval('context', {}).get('company', -1)),
],
states={
'invisible': (~Eval('context', {}).get('company')
| Eval('account_parent')
| ~Eval('accounting', False)),
}))
account_stock_out = fields.MultiValue(fields.Many2One(
'account.account', "Account Stock OUT",
domain=[
('closed', '!=', True),
('type.stock', '=', True),
('company', '=', Eval('context', {}).get('company', -1)),
],
states={
'invisible': (~Eval('context', {}).get('company')
| Eval('account_parent')
| ~Eval('accounting', False)),
}))
@classmethod
def __setup__(cls):
pool = Pool()
CategoryAccount = pool.get('product.category.account')
super().__setup__()
for account in [cls.account_stock_in, cls.account_stock_out]:
account.domain = [
account.domain,
('type.statement', 'in',
CategoryAccount.get_account_stock_type_statements()),
]
@classmethod
def multivalue_model(cls, field):
pool = Pool()
if field in account_names:
return pool.get('product.category.account')
return super(Category, cls).multivalue_model(field)
@property
@account_used('account_stock')
def account_stock_used(self):
pass
@property
@account_used('account_stock_in')
def account_stock_in_used(self):
pass
@property
@account_used('account_stock_out')
def account_stock_out_used(self):
pass
@fields.depends(
'accounting', 'account_stock', 'account_stock_in', 'account_stock_out')
def on_change_accounting(self):
super().on_change_accounting()
if not self.accounting:
self.account_stock = None
self.account_stock_in = None
self.account_stock_out = None
class CategoryAccount(metaclass=PoolMeta):
__name__ = 'product.category.account'
account_stock = fields.Many2One(
'account.account', "Account Stock",
domain=[
('closed', '!=', True),
('type.stock', '=', True),
('type.statement', '=', 'balance'),
('company', '=', Eval('company', -1)),
])
account_stock_in = fields.Many2One(
'account.account', "Account Stock IN",
domain=[
('closed', '!=', True),
('type.stock', '=', True),
('company', '=', Eval('company', -1)),
])
account_stock_out = fields.Many2One(
'account.account', "Account Stock OUT",
domain=[
('closed', '!=', True),
('type.stock', '=', True),
('company', '=', Eval('company', -1)),
])
@classmethod
def __setup__(cls):
super().__setup__()
for account in [cls.account_stock_in, cls.account_stock_out]:
account.domain = [
account.domain,
('type.statement', 'in',
cls.get_account_stock_type_statements()),
]
@classmethod
def get_account_stock_type_statements(cls):
return ['income']
class Template(metaclass=PoolMeta):
__name__ = 'product.template'
@classmethod
def __setup__(cls):
super(Template, cls).__setup__()
cls._modify_no_move.append(
('cost_price',
'account_stock_continental.msg_product_change_cost_price'))
@property
@account_used('account_stock', 'account_category')
def account_stock_used(self):
pass
@property
@account_used('account_stock_in', 'account_category')
def account_stock_in_used(self):
pass
@property
@account_used('account_stock_out', 'account_category')
def account_stock_out_used(self):
pass
class Product(metaclass=PoolMeta):
__name__ = 'product.product'
account_stock_used = template_property('account_stock_used')
account_stock_in_used = template_property('account_stock_in_used')
account_stock_out_used = template_property('account_stock_out_used')
@classmethod
def update_cost_price(cls, costs):
pool = Pool()
Date = pool.get('ir.date')
Stock = pool.get('stock.location')
Company = pool.get('company.company')
Move = pool.get('account.move')
Period = pool.get('account.period')
context = Transaction().context
locations = Stock.search([('type', '=', 'storage')])
company = Company(context['company'])
with Transaction().set_context(company=company.id):
stock_date_end = Date.today()
period = Period.find(company, date=stock_date_end)
if period.fiscalyear.account_stock_method:
moves = []
with Transaction().set_context(locations=[l.id for l in locations],
stock_date_end=stock_date_end):
for cost, products in costs.items():
products = cls.browse(products)
for product in products:
difference = cost - product.cost_price
quantity = product.quantity
amount = company.currency.round(
Decimal(str(quantity)) * difference)
if amount:
moves.append(product._update_cost_price_move(
amount, company, period, stock_date_end))
Move.save(moves)
Move.post(moves)
super().update_cost_price(costs)
def _update_cost_price_move(self, amount, company, period, date):
pool = Pool()
AccountConfiguration = pool.get('account.configuration')
Move = pool.get('account.move')
Line = pool.get('account.move.line')
config = AccountConfiguration(1)
if amount > 0:
account = self.account_stock_in_used
else:
account = self.account_stock_out_used
return Move(
period=period,
journal=config.stock_journal,
date=date,
origin=self,
lines=[Line(
debit=amount if amount > 0 else 0,
credit=-amount if amount < 0 else 0,
account=self.account_stock_used,
),
Line(
debit=-amount if amount < 0 else 0,
credit=amount if amount > 0 else 0,
account=account,
),
],
)

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="category_view_form">
<field name="model">product.category</field>
<field name="inherit" ref="product.category_view_form"/>
<field name="name">category_form</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,340 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from decimal import Decimal
from trytond.model import ModelView, Workflow
from trytond.modules.account.exceptions import PeriodNotFoundError
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
import logging
logger = logging.getLogger(__name__)
class Move(metaclass=PoolMeta):
__name__ = 'stock.move'
def _get_account_stock_move_lines(self, type_, fee=None):
'''
Return move lines for stock move
'''
pool = Pool()
Uom = pool.get('product.uom')
AccountMoveLine = pool.get('account.move.line')
Currency = pool.get('currency.currency')
assert type_.startswith('in_') or type_.startswith('out_'), \
'wrong type'
move_line = AccountMoveLine()
move_line.lot = self.lot
move_line.fee = fee
move_line.origin = self
# cost_price_method = self.product.get_multivalue(
# 'cost_price_method', **self._cost_price_pattern)
# if ((
# type_.endswith('supplier')
# or type_ in {'in_production', 'in_warehouse'})
# and cost_price_method != 'fixed'):
# unit_price = self.unit_price_company
# else:
# unit_price = self.cost_price
# unit_price = self.unit_price
# unit_price = Uom.compute_price(
# self.product.default_uom, unit_price, self.unit)
# amount = self.company.currency.round(
# Decimal(str(self.quantity)) * unit_price)
# if self.to_location.type == 'customer':
amount = self.lot.get_cog()
if fee:
amount = fee.amount
if fee and fee.currency != self.company.currency:
with Transaction().set_context(date=self.effective_date):
amount_converted = amount
amount = Currency.compute(fee.currency,
amount, self.company.currency)
move_line.second_currency = self.currency
if self.currency != self.company.currency and not fee:
with Transaction().set_context(date=self.effective_date):
amount_converted = Currency.compute(self.company.currency,
amount, self.currency)
move_line.second_currency = self.currency
if amount < 0:
if type_.startswith('in_'):
move_line.debit = -amount
move_line.credit = Decimal(0)
move_line.account = fee.product.account_stock_in_used if fee else self.product.account_stock_in_used
if hasattr(move_line, 'second_currency') and move_line.second_currency:
move_line.amount_second_currency = amount_converted
else:
move_line.debit = Decimal(0)
move_line.credit = -amount
move_line.account = fee.product.account_stock_out_used if fee else self.product.account_stock_out_used
if hasattr(move_line, 'second_currency') and move_line.second_currency:
move_line.amount_second_currency = -amount_converted
else:
if type_.startswith('in_'):
move_line.debit = Decimal(0)
move_line.credit = amount
move_line.account = fee.product.account_stock_in_used if fee else self.product.account_stock_in_used
if hasattr(move_line, 'second_currency') and move_line.second_currency:
move_line.amount_second_currency = -amount_converted
else:
move_line.debit = amount
move_line.credit = Decimal(0)
move_line.account = fee.product.account_stock_out_used if fee else self.product.account_stock_out_used
if hasattr(move_line, 'second_currency') and move_line.second_currency:
move_line.amount_second_currency = amount_converted
logger.info("MOVELINES_DEB:%s",move_line.debit)
logger.info("MOVELINES_CRE:%s",move_line.credit)
return [move_line]
def _get_account_stock_move_line(self, amount, fee=None):
'''
Return counterpart move line value for stock move
'''
pool = Pool()
AccountMoveLine = pool.get('account.move.line')
Currency = pool.get('currency.currency')
move_line = AccountMoveLine(
account=fee.product.account_stock_used if fee else self.product.account_stock_used,
)
move_line.lot = self.lot
move_line.fee = fee
move_line.origin = self
if not amount:
return
amount_converted = amount
if (self.currency != self.company.currency and not fee) or (fee and fee.currency != self.company.currency):
with Transaction().set_context(date=self.effective_date):
amount_converted = round(Currency.compute(self.company.currency,
amount, fee.currency if fee else self.currency),2)
move_line.second_currency = self.currency
move_line.amount_second_currency = -amount_converted
if amount >= Decimal(0):
move_line.debit = Decimal(0)
move_line.credit = amount
else:
move_line.debit = - amount
move_line.credit = Decimal(0)
if self.to_location.type == 'customer':
move_line.description = 'Delivery fee' if fee else 'Delivery'
if self.from_location.type == 'supplier':
move_line.description = 'Reception fee' if fee else 'Reception'
logger.info("MOVELINE_DEB:%s",move_line.debit)
logger.info("MOVELINE_CRE:%s",move_line.credit)
return move_line
def _get_account_stock_move_type(self):
'''
Get account move type
'''
type_ = (self.from_location.type, self.to_location.type)
if type_ in [('supplier', 'storage'), ('supplier', 'drop')]:
return 'in_supplier'
elif type_ in [('storage', 'supplier'), ('drop', 'supplier')]:
return 'out_supplier'
elif type_ in [('storage', 'customer'), ('drop', 'customer')]:
return 'out_customer'
elif type_ in [('customer', 'storage'), ('customer', 'drop')]:
return 'in_customer'
elif type_ == ('storage', 'lost_found'):
return 'out_lost_found'
elif type_ == ('lost_found', 'storage'):
return 'in_lost_found'
elif type_ == ('supplier', 'customer'):
return 'supplier_customer'
elif type_ == ('customer', 'supplier'):
return 'customer_supplier'
elif type_ == ('storage', 'production'):
return 'out_production'
elif type_ == ('production', 'storage'):
return 'in_production'
def _get_account_stock_move(self):
'''
Return account move for stock move
'''
pool = Pool()
AccountMove = pool.get('account.move')
Date = pool.get('ir.date')
Period = pool.get('account.period')
AccountConfiguration = pool.get('account.configuration')
if self.product.type != 'goods':
return
with Transaction().set_context(company=self.company.id):
today = Date.today()
for date in [self.effective_date, today]:
try:
period = Period.find(self.company, date=date, test_state=False)
except PeriodNotFoundError:
if date < today:
return
continue
break
else:
return
logger.info("PERIOD_STOCK_METHOD:%s",period.fiscalyear.account_stock_method)
if not period.fiscalyear.account_stock_method:
return
if period.state != 'open':
date = today
period = Period.find(self.company, date=date)
type_ = self._get_account_stock_move_type()
logger.info("MOVE_TYPE:%s",type_)
if not type_:
return
with Transaction().set_context(
company=self.company.id, date=date):
if type_ == 'supplier_customer':
account_move_lines = self._get_account_stock_move_lines(
'in_supplier')
account_move_lines.extend(self._get_account_stock_move_lines(
'out_customer'))
elif type_ == 'customer_supplier':
account_move_lines = self._get_account_stock_move_lines(
'in_customer')
account_move_lines.extend(self._get_account_stock_move_lines(
'out_supplier'))
else:
account_move_lines = self._get_account_stock_move_lines(type_)
amount = Decimal(0)
for line in account_move_lines:
amount += line.debit - line.credit
# if not amount:
# return
move_line = self._get_account_stock_move_line(amount)
if move_line:
account_move_lines.append(move_line)
account_configuration = AccountConfiguration(1)
journal = account_configuration.get_multivalue(
'stock_journal', company=self.company.id)
logger.info("GET_ACCOUNT_:%s",account_move_lines)
description = None
if self.to_location.type == 'customer':
description = 'Delivery'
if self.from_location.type == 'supplier':
description = 'Reception'
return AccountMove(
journal=journal,
period=period,
date=date,
origin=self,
description=description,
lines=account_move_lines,
)
def _get_account_stock_move_fee(self, fee):
'''
Return account move for fee linked to lot of the stock move
'''
pool = Pool()
AccountMove = pool.get('account.move')
Date = pool.get('ir.date')
Period = pool.get('account.period')
AccountConfiguration = pool.get('account.configuration')
if fee.product.type != 'service':
return
with Transaction().set_context(company=self.company.id):
today = Date.today()
for date in [self.effective_date, today]:
try:
period = Period.find(self.company, date=date, test_state=False)
except PeriodNotFoundError:
if date < today:
return
continue
break
else:
return
if not period.fiscalyear.account_stock_method:
return
if period.state != 'open':
date = today
period = Period.find(self.company, date=date)
type_ = self._get_account_stock_move_type()
if not type_:
return
with Transaction().set_context(
company=self.company.id, date=date):
if type_ == 'supplier_customer':
account_move_lines = self._get_account_stock_move_lines(
'in_supplier',fee)
account_move_lines.extend(self._get_account_stock_move_lines(
'out_customer',fee))
elif type_ == 'customer_supplier':
account_move_lines = self._get_account_stock_move_lines(
'in_customer',fee)
account_move_lines.extend(self._get_account_stock_move_lines(
'out_supplier',fee))
else:
account_move_lines = self._get_account_stock_move_lines(type_,fee)
amount = Decimal(0)
for line in account_move_lines:
amount += line.debit - line.credit
# if not amount:
# return
move_line = self._get_account_stock_move_line(amount,fee)
if move_line:
account_move_lines.append(move_line)
account_configuration = AccountConfiguration(1)
journal = account_configuration.get_multivalue(
'stock_journal', company=self.company.id)
logger.info("GET_ACCOUNT_FEE:%s",account_move_lines)
description = None
if self.to_location.type == 'customer':
description = 'Delivery fee'
if self.from_location.type == 'supplier':
description = 'Reception fee'
return AccountMove(
journal=journal,
period=period,
date=date,
origin=self,
description=description,
lines=account_move_lines,
)
@classmethod
@ModelView.button
@Workflow.transition('done')
def do(cls, moves):
pool = Pool()
AccountMove = pool.get('account.move')
FeeLots = pool.get('fee.lots')
logger.info("CONTINENTAL_DO_BEFORE:%s",moves)
super(Move, cls).do(moves)
logger.info("CONTINENTAL_DO_AFTER:%s",moves)
account_moves = []
for move in moves:
account_move = move._get_account_stock_move()
if account_move:
account_moves.append(account_move)
if move.lot:
fees = FeeLots.search(['lot','=',move.lot.id])
for fl in fees:
if fl.fee.type == 'ordered' and fl.fee.product.template.landed_cost:
account_move = move._get_account_stock_move_fee(fl.fee)
if account_move:
account_moves.append(account_move)
AccountMove.save(account_moves)
#AccountMove.post(account_moves)

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,397 @@
==================================
Account Stock Continental Scenario
==================================
Imports::
>>> import datetime as dt
>>> from decimal import Decimal
>>> from proteus import Model, Wizard
>>> from trytond.modules.account.tests.tools import (
... create_chart, create_fiscalyear, get_accounts)
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> 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
>>> today = dt.date.today()
Activate modules::
>>> config = activate_modules([
... 'account_stock_continental',
... 'sale',
... 'purchase',
... 'sale_supply_drop_shipment',
... ])
Create company::
>>> _ = create_company()
>>> company = get_company()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
... create_fiscalyear(company, today))
>>> fiscalyear.account_stock_method = 'continental'
>>> fiscalyear.click('create_period')
Create chart of accounts::
>>> _ = create_chart(company)
>>> accounts = add_stock_accounts(get_accounts(company), company)
>>> receivable = accounts['receivable']
>>> payable = accounts['payable']
>>> revenue = accounts['revenue']
>>> expense = accounts['expense']
>>> stock = accounts['stock']
>>> stock_in = accounts['stock_expense']
>>> stock_out, = stock_in.duplicate()
Create parties::
>>> Party = Model.get('party.party')
>>> supplier = Party(name='Supplier')
>>> supplier.save()
>>> customer = Party(name='Customer')
>>> customer.save()
Create product category::
>>> ProductCategory = Model.get('product.category')
>>> account_category = ProductCategory(name="Account Category")
>>> account_category.accounting = True
>>> account_category.account_expense = expense
>>> account_category.account_revenue = revenue
>>> account_category.account_stock = stock
>>> account_category.account_stock_in = stock_in
>>> account_category.account_stock_out = stock_out
>>> account_category.save()
Create product::
>>> ProductUom = Model.get('product.uom')
>>> m, = ProductUom.find([('symbol', '=', 'm')])
>>> cm, = ProductUom.find([('symbol', '=', 'cm')])
>>> ProductTemplate = Model.get('product.template')
>>> template = ProductTemplate()
>>> template.name = 'product'
>>> template.default_uom = cm
>>> template.type = 'goods'
>>> template.purchasable = True
>>> template.salable = True
>>> template.list_price = Decimal('10')
>>> template.cost_price_method = 'fixed'
>>> template.lead_time = dt.timedelta(0)
>>> template.account_category = account_category
>>> product, = template.products
>>> product.cost_price = Decimal('5')
>>> template.save()
>>> product, = template.products
>>> template_average, = template.duplicate({
... 'cost_price_method': 'average',
... })
>>> template_average.account_category = account_category
>>> template_average.save()
>>> product_average, = template_average.products
Create payment term::
>>> payment_term = create_payment_term()
>>> payment_term.save()
Purchase 12 products::
>>> Purchase = Model.get('purchase.purchase')
>>> purchase = Purchase()
>>> purchase.party = supplier
>>> purchase.payment_term = payment_term
>>> purchase.invoice_method = 'shipment'
>>> purchase_line = purchase.lines.new()
>>> purchase_line.product = product
>>> purchase_line.quantity = 5.0
>>> purchase_line.unit = m
>>> purchase_line.unit_price = Decimal(400)
>>> purchase_line = purchase.lines.new()
>>> purchase_line.product = product_average
>>> purchase_line.quantity = 7.0
>>> purchase_line.unit = m
>>> purchase_line.unit_price = Decimal(600)
>>> purchase.click('quote')
>>> purchase.click('confirm')
>>> purchase.click('process')
>>> purchase.state
'processing'
Receive 9 products::
>>> ShipmentIn = Model.get('stock.shipment.in')
>>> Move = Model.get('stock.move')
>>> shipment = ShipmentIn(supplier=supplier)
>>> move, = [m for m in purchase.moves if m.product == product]
>>> move = Move(move.id)
>>> shipment.incoming_moves.append(move)
>>> move.quantity = 4.0
>>> move, = [m for m in purchase.moves if m.product == product_average]
>>> move = Move(move.id)
>>> shipment.incoming_moves.append(move)
>>> move.quantity = 5.0
>>> shipment.click('receive')
>>> shipment.click('do')
>>> shipment.state
'done'
>>> stock_in.reload()
>>> stock_in.debit
Decimal('0.00')
>>> stock_in.credit
Decimal('5000.00')
>>> stock.reload()
>>> stock.debit
Decimal('5000.00')
>>> stock.credit
Decimal('0.00')
Open supplier invoice::
>>> Invoice = Model.get('account.invoice')
>>> purchase.reload()
>>> invoice, = purchase.invoices
>>> invoice_line, = [l for l in invoice.lines if l.product == product]
>>> invoice_line.unit_price = Decimal('6')
>>> invoice_line, = [l for l in invoice.lines
... if l.product == product_average]
>>> invoice_line.unit_price = Decimal('4')
>>> invoice.invoice_date = today
>>> invoice.click('post')
>>> invoice.state
'posted'
>>> payable.reload()
>>> payable.debit
Decimal('0.00')
>>> payable.credit
Decimal('44.00')
>>> expense.reload()
>>> expense.debit
Decimal('44.00')
>>> expense.credit
Decimal('0.00')
Sale 5 products::
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
>>> sale.payment_term = payment_term
>>> sale.invoice_method = 'shipment'
>>> sale_line = sale.lines.new()
>>> sale_line.product = product
>>> sale_line.quantity = 2.0
>>> sale_line.unit = cm
>>> sale_line = sale.lines.new()
>>> sale_line.product = product_average
>>> sale_line.quantity = 3.0
>>> sale_line.unit = cm
>>> sale.click('quote')
>>> sale.click('confirm')
>>> sale.click('process')
>>> sale.state
'processing'
Send 5 products::
>>> shipment, = sale.shipments
>>> shipment.click('assign_try')
>>> shipment.state
'assigned'
>>> shipment.click('pick')
>>> shipment.state
'picked'
>>> shipment.click('pack')
>>> shipment.state
'packed'
>>> shipment.click('do')
>>> shipment.state
'done'
>>> stock_out.reload()
>>> stock_out.debit
Decimal('28.00')
>>> stock_out.credit
Decimal('0.00')
>>> stock.reload()
>>> stock.debit
Decimal('5000.00')
>>> stock.credit
Decimal('28.00')
Open customer invoice::
>>> sale.reload()
>>> invoice, = sale.invoices
>>> invoice.click('post')
>>> invoice.state
'posted'
>>> receivable.reload()
>>> receivable.debit
Decimal('50.00')
>>> receivable.credit
Decimal('0.00')
>>> revenue.reload()
>>> revenue.debit
Decimal('0.00')
>>> revenue.credit
Decimal('50.00')
Create an Inventory::
>>> Inventory = Model.get('stock.inventory')
>>> Location = Model.get('stock.location')
>>> storage, = Location.find([
... ('code', '=', 'STO'),
... ])
>>> inventory = Inventory()
>>> inventory.location = storage
>>> inventory.click('complete_lines')
>>> inventory_line, = [l for l in inventory.lines if l.product == product]
>>> inventory_line.quantity = 100.0
>>> inventory_line, = [l for l in inventory.lines
... if l.product == product_average]
>>> inventory_line.quantity = 100.0
>>> inventory.click('confirm')
>>> inventory.state
'done'
>>> stock_out.reload()
>>> stock_out.debit
Decimal('3900.00')
>>> stock_out.credit
Decimal('0.00')
>>> stock.reload()
>>> stock.debit
Decimal('5000.00')
>>> stock.credit
Decimal('3900.00')
Create Drop Shipment Move::
>>> ProductSupplier = Model.get('purchase.product_supplier')
>>> product_supplier = ProductSupplier()
>>> product_supplier.template = product.template
>>> product_supplier.party = supplier
>>> product_supplier.drop_shipment = True
>>> product_supplier.lead_time = dt.timedelta(0)
>>> product_supplier.save()
>>> product.template.supply_on_sale = 'always'
>>> product.template.save()
>>> sale = Sale()
>>> sale.party = customer
>>> sale.payment_term = payment_term
>>> sale_line = sale.lines.new()
>>> sale_line.product = product
>>> sale_line.quantity = 300
>>> sale_line.unit = cm
>>> sale.click('quote')
>>> sale.click('confirm')
>>> sale.click('process')
>>> sale.state
'processing'
>>> PurchaseRequest = Model.get('purchase.request')
>>> purchase_request, = PurchaseRequest.find()
>>> create_purchase = Wizard('purchase.request.create_purchase',
... [purchase_request])
>>> purchase = purchase_request.purchase
>>> purchase.payment_term = payment_term
>>> purchase_line, = purchase.lines
>>> purchase_line.unit_price = Decimal(6)
>>> purchase.click('quote')
>>> purchase.click('confirm')
>>> purchase.click('process')
>>> purchase.state
'processing'
>>> shipment, = sale.drop_shipments
>>> shipment.click('ship')
>>> shipment.click('do')
>>> shipment.state
'done'
>>> stock_in.reload()
>>> stock_in.debit
Decimal('0.00')
>>> stock_in.credit
Decimal('6800.00')
>>> stock_out.reload()
>>> stock_out.debit
Decimal('5700.00')
>>> stock_out.credit
Decimal('0.00')
>>> product_supplier = ProductSupplier()
>>> product_supplier.template = product_average.template
>>> product_supplier.party = supplier
>>> product_supplier.drop_shipment = True
>>> product_supplier.lead_time = dt.timedelta(0)
>>> product_supplier.save()
>>> product_average.template.supply_on_sale = 'always'
>>> product_average.template.save()
>>> sale = Sale()
>>> sale.party = customer
>>> sale.payment_term = payment_term
>>> sale_line = sale.lines.new()
>>> sale_line.product = product_average
>>> sale_line.quantity = 400
>>> sale.click('quote')
>>> sale.click('confirm')
>>> sale.click('process')
>>> sale.state
'processing'
>>> purchase_request, = [p for p in PurchaseRequest.find()
... if p.state == 'draft']
>>> create_purchase = Wizard('purchase.request.create_purchase',
... [purchase_request])
>>> purchase = purchase_request.purchase
>>> purchase.payment_term = payment_term
>>> purchase_line, = purchase.lines
>>> purchase_line.unit_price = Decimal(5)
>>> purchase.click('quote')
>>> purchase.click('confirm')
>>> purchase.click('process')
>>> purchase.state
'processing'
>>> shipment, = sale.drop_shipments
>>> shipment.click('ship')
>>> shipment.click('do')
>>> shipment.state
'done'
>>> stock_in.reload()
>>> stock_in.debit
Decimal('0.00')
>>> stock_in.credit
Decimal('8800.00')
>>> stock_out.reload()
>>> stock_out.debit
Decimal('7700.00')
>>> stock_out.credit
Decimal('0.00')
Modify cost price::
>>> Account = Model.get('account.account')
>>> modify_price = Wizard('product.modify_cost_price', [product])
>>> modify_price.form.cost_price = '3.00'
>>> modify_price.execute('modify')
>>> product.cost_price
Decimal('3.0000')
>>> stock_out.reload()
>>> stock_out.debit
Decimal('7900.00')
>>> stock_out.credit
Decimal('0.00')

View File

@@ -0,0 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import ModuleTestCase
class AccountStockContinentalTestCase(ModuleTestCase):
'Test Account Stock Continental module'
module = 'account_stock_continental'
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,21 @@
# 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 proteus import Model
from trytond.modules.company.tests.tools import get_company
def add_stock_accounts(accounts, company=None, config=None):
"Add stock kind to accounts"
Account = Model.get('account.account', config=config)
if not company:
company = get_company(config=config)
stock_accounts = Account.find([
('type.stock', '=', True),
('company', '=', company.id),
])
for account in stock_accounts:
name = account.name.lower().replace(' and ', '_').replace(' ', '_')
accounts[name] = account
return accounts

View File

@@ -0,0 +1,21 @@
[tryton]
version=7.2.1
depends:
account
account_product
ir
res
stock
xml:
product.xml
account.xml
minimal_chart_bg.xml
minimal_chart_ca.xml
minimal_chart_de.xml
minimal_chart_en.xml
minimal_chart_es.xml
minimal_chart_fr.xml
minimal_chart_nl.xml
minimal_chart_pt.xml
minimal_chart_ru.xml
minimal_chart_sl.xml

View File

@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath
expr="/form/notebook/page[@id='accounting']/field[@name='account_expense']"
position="after">
<label name="account_stock"/>
<field name="account_stock"/>
<newline/>
<label name="account_stock_in"/>
<field name="account_stock_in"/>
<label name="account_stock_out"/>
<field name="account_stock_out"/>
</xpath>
</data>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="/form" position="inside">
<separator id="stock" string="Stock" colspan="4"/>
<label name="stock_journal"/>
<field name="stock_journal" widget="selection"/>
<newline/>
<label name="stock_fx_trigger"/>
<field name="stock_fx_trigger" widget="selection"/>
<newline/>
<label name="stock_fx_forex"/>
<field name="stock_fx_forex" widget="selection"/>
</xpath>
</data>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="/form/notebook" position="inside">
<page string="Account Stock" id="account_stock">
<label name="account_stock_method"/>
<field name="account_stock_method"/>
</page>
</xpath>
</data>