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,47 @@
# 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)
class Configuration(metaclass=PoolMeta):
__name__ = 'account.configuration'
stock_journal = fields.MultiValue(stock_journal)
@classmethod
def default_stock_journal(cls, **pattern):
return cls.multivalue_model('stock_journal').default_stock_journal()
class ConfigurationStockJournal(ModelSQL, ValueMixin):
__name__ = 'account.configuration.stock_journal'
stock_journal = stock_journal
@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()._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,64 @@
#
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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 "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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Assentaments comptables"
msgctxt "model:account.configuration.stock_journal,string:"
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,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 ""
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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,63 @@
#
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Buchungssätze"
msgctxt "model:account.configuration.stock_journal,string:"
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,63 @@
#
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Asientos contables"
msgctxt "model:account.configuration.stock_journal,string:"
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,69 @@
#
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"
#, fuzzy
msgctxt "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Método de contabilización de inventario"
#, fuzzy
msgctxt "model:account.configuration.stock_journal,string:"
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,68 @@
#
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"
#, fuzzy
msgctxt "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Lao konto"
msgctxt "model:account.configuration.stock_journal,string:"
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,69 @@
#
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 "حساب موجودی"
#, fuzzy
msgctxt "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "حساب موجودی"
#, fuzzy
msgctxt "model:account.configuration.stock_journal,string:"
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,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 ""
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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,63 @@
#
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Mouvements comptables"
msgctxt "model:account.configuration.stock_journal,string:"
msgid "Account Configuration Stock Journal"
msgstr "Configuration comptable de 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,64 @@
#
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"
#, fuzzy
msgctxt "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Készletszámla"
msgctxt "model:account.configuration.stock_journal,string:"
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,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 ""
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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,71 @@
#
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"
#, fuzzy
msgctxt "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Conto di magazzino"
msgctxt "model:account.configuration.stock_journal,string:"
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,64 @@
#
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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 "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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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,63 @@
#
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Boekingen"
msgctxt "model:account.configuration.stock_journal,string:"
msgid "Account Configuration Stock Journal"
msgstr "Grootboek configuratie voorraad dagboek"
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,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 ""
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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"
msgctxt "field:product.category,account_stock_in:"
msgid "Account Stock IN"
msgstr "Conta de Entrada de Estoque"
msgctxt "field:product.category,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Conta de Saída de Estoque"
msgctxt "field:product.category.account,account_stock:"
msgid "Account Stock"
msgstr "Conta de Estoque"
msgctxt "field:product.category.account,account_stock_in:"
msgid "Account Stock IN"
msgstr "Conta de Entrada de Estoque"
msgctxt "field:product.category.account,account_stock_out:"
msgid "Account Stock OUT"
msgstr "Conta de Saída de Estoque"
msgctxt "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Contas de Estoque"
msgctxt "model:account.configuration.stock_journal,string:"
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,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 ""
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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,64 @@
#
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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,69 @@
#
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"
#, fuzzy
msgctxt "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr "Konto zaloge"
#, fuzzy
msgctxt "model:account.configuration.stock_journal,string:"
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,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 ""
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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,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 ""
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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,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 ""
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 "field:stock.move,account_moves:"
msgid "Account Moves"
msgstr ""
msgctxt "model:account.configuration.stock_journal,string:"
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,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().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().__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,204 @@
# 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, fields
from trytond.modules.account.exceptions import PeriodNotFoundError
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
class Move(metaclass=PoolMeta):
__name__ = 'stock.move'
account_moves = fields.One2Many(
'account.move', 'origin', "Account Moves", readonly=True)
def _get_account_stock_move_lines(self, type_):
'''
Return move lines for stock move
'''
pool = Pool()
Uom = pool.get('product.uom')
AccountMoveLine = pool.get('account.move.line')
assert type_.startswith('in_') or type_.startswith('out_'), \
'wrong type'
move_line = AccountMoveLine()
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 = Uom.compute_price(
self.product.default_uom, unit_price, self.unit)
amount = self.company.currency.round(
Decimal(str(self.quantity)) * unit_price)
if type_.startswith('in_'):
move_line.debit = Decimal(0)
move_line.credit = amount
move_line.account = self.product.account_stock_in_used
else:
move_line.debit = amount
move_line.credit = Decimal(0)
move_line.account = self.product.account_stock_out_used
return [move_line]
def _get_account_stock_move_line(self, amount):
'''
Return counterpart move line value for stock move
'''
pool = Pool()
AccountMoveLine = pool.get('account.move.line')
move_line = AccountMoveLine(
account=self.product.account_stock_used,
)
if not amount:
return
if amount >= Decimal(0):
move_line.debit = Decimal(0)
move_line.credit = amount
else:
move_line.debit = - amount
move_line.credit = Decimal(0)
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
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')
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)
return AccountMove(
journal=journal,
period=period,
date=date,
origin=self,
lines=account_move_lines,
)
@classmethod
@ModelView.button
@Workflow.transition('done')
def do(cls, moves):
pool = Pool()
AccountMove = pool.get('account.move')
super().do(moves)
account_moves = []
for move in moves:
account_move = move._get_account_stock_move()
if account_move:
account_moves.append(account_move)
AccountMove.save(account_moves)
AccountMove.post(account_moves)
@classmethod
@ModelView.button
@Workflow.transition('cancelled')
def cancel(cls, moves):
pool = Pool()
AccountMove = pool.get('account.move')
super().cancel(moves)
delete_moves, cancel_moves = [], []
for move in moves:
for account_move in move.account_moves:
if account_move.state == 'draft':
delete_moves.append(account_move)
else:
cancel_move = account_move.cancel()
cancel_move.origin = move
cancel_moves.append(cancel_move)
if delete_moves:
AccountMove.delete(delete_moves)
if cancel_moves:
AccountMove.save(cancel_moves)
AccountMove.post(cancel_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,392 @@
==================================
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
>>> 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_chart)
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
... create_fiscalyear(today=today))
>>> fiscalyear.account_stock_method = 'continental'
>>> fiscalyear.click('create_period')
Get accounts::
>>> accounts = add_stock_accounts(get_accounts())
>>> 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,104 @@
=================================================
Account Stock Continental Move Cancelled 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
>>> from trytond.modules.currency.tests.tools import get_currency
>>> from trytond.tests.tools import activate_modules, assertEqual
Activate modules::
>>> config = activate_modules(
... 'account_stock_continental', create_company, create_chart)
>>> ProductCategory = Model.get('product.category')
>>> ProductTemplate = Model.get('product.template')
>>> ProductUom = Model.get('product.uom')
>>> StockMove = Model.get('stock.move')
>>> StockLocation = Model.get('stock.location')
Create fiscal year::
>>> fiscalyear = create_fiscalyear()
>>> fiscalyear.account_stock_method = 'continental'
>>> fiscalyear.click('create_period')
Get accounts::
>>> accounts = add_stock_accounts(get_accounts())
>>> 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()
Get stock locations::
>>> supplier_loc, = StockLocation.find([('code', '=', 'SUP')])
>>> storage_loc, = StockLocation.find([('code', '=', 'STO')])
Create 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::
>>> template = ProductTemplate()
>>> template.name = "Product"
>>> template.default_uom, = ProductUom.find([('name', '=', "Unit")])
>>> template.type = 'goods'
>>> template.cost_price_method = 'fixed'
>>> template.account_category = account_category
>>> template.save()
>>> product, = template.products
>>> product.cost_price = Decimal('10.0000')
>>> product.save()
Receive product::
>>> stock_move = StockMove()
>>> stock_move.product = product
>>> stock_move.from_location = supplier_loc
>>> stock_move.to_location = storage_loc
>>> stock_move.quantity = 1
>>> stock_move.unit_price = Decimal('10.0000')
>>> stock_move.currency = get_currency()
>>> stock_move.click('do')
>>> stock_move.state
'done'
>>> account_move, = stock_move.account_moves
>>> account_move.state
'posted'
>>> stock.reload()
>>> stock.balance
Decimal('10.00')
Cancel reception::
>>> stock_move.click('cancel')
>>> stock_move.state
'cancelled'
>>> len(stock_move.account_moves)
2
>>> assertEqual([m.state for m in stock_move.account_moves], ['posted', 'posted'])
>>> stock.reload()
>>> stock.balance
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,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.
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)
accounts['stock'], = Account.find([
('company', '=', company.id),
('code', '=', '1.3.1'),
])
accounts['stock_expense'], = Account.find([
('company', '=', company.id),
('code', '=', '5.1.5'),
])
return accounts

View File

@@ -0,0 +1,25 @@
[tryton]
version=7.8.0
depends:
account
account_product
ir
product
res
stock
xml:
product.xml
account.xml
[register]
model:
product.Category
product.CategoryAccount
product.Template
product.Product
account.Configuration
account.ConfigurationStockJournal
account.FiscalYear
account.AccountMove
stock.Move

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,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" position="inside">
<separator id="stock" string="Stock" colspan="4"/>
<label name="stock_journal"/>
<field name="stock_journal" widget="selection"/>
<newline/>
</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>