Initial import from Docker volume
This commit is contained in:
124
modules/account/__init__.py
Executable file
124
modules/account/__init__.py
Executable file
@@ -0,0 +1,124 @@
|
||||
# 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, company, configuration, fiscalyear, journal, move, move_template,
|
||||
party, period, tax)
|
||||
from .move import MoveLineMixin
|
||||
|
||||
__all__ = ['register', 'MoveLineMixin']
|
||||
|
||||
|
||||
def register():
|
||||
Pool.register(
|
||||
fiscalyear.FiscalYear,
|
||||
fiscalyear.BalanceNonDeferralStart,
|
||||
company.Company,
|
||||
account.TypeTemplate,
|
||||
account.Type,
|
||||
account.AccountTemplate,
|
||||
account.AccountTemplateTaxTemplate,
|
||||
account.Account,
|
||||
account.AccountParty,
|
||||
account.AccountDeferral,
|
||||
account.AccountTax,
|
||||
account.AccountContext,
|
||||
account.GeneralLedgerAccount,
|
||||
account.GeneralLedgerAccountContext,
|
||||
account.GeneralLedgerAccountParty,
|
||||
account.GeneralLedgerLine,
|
||||
account.GeneralLedgerLineContext,
|
||||
account.BalanceSheetContext,
|
||||
account.BalanceSheetComparisionContext,
|
||||
account.IncomeStatementContext,
|
||||
account.CreateChartStart,
|
||||
account.CreateChartAccount,
|
||||
account.CreateChartProperties,
|
||||
account.UpdateChartStart,
|
||||
account.UpdateChartSucceed,
|
||||
account.AgedBalanceContext,
|
||||
account.AgedBalance,
|
||||
configuration.Configuration,
|
||||
configuration.ConfigurationDefaultAccount,
|
||||
configuration.DefaultTaxRule,
|
||||
configuration.Sequence,
|
||||
configuration.Journal,
|
||||
period.Period,
|
||||
journal.Journal,
|
||||
journal.JournalSequence,
|
||||
journal.JournalCashContext,
|
||||
journal.JournalPeriod,
|
||||
move.Move,
|
||||
move.Reconciliation,
|
||||
configuration.ConfigurationTaxRounding,
|
||||
move.Line,
|
||||
move.LineReceivablePayableContext,
|
||||
move.WriteOff,
|
||||
move.OpenJournalAsk,
|
||||
move.ReconcileLinesWriteOff,
|
||||
move.ReconcileStart,
|
||||
move.ReconcileShow,
|
||||
move.CancelMovesDefault,
|
||||
move.GroupLinesStart,
|
||||
move.RescheduleLinesStart,
|
||||
move.RescheduleLinesPreview,
|
||||
move.RescheduleLinesTerm,
|
||||
move.DelegateLinesStart,
|
||||
tax.TaxGroup,
|
||||
tax.TaxCodeTemplate,
|
||||
tax.TaxCode,
|
||||
tax.TaxCodeLineTemplate,
|
||||
tax.TaxCodeLine,
|
||||
tax.TaxCodeContext,
|
||||
tax.TaxTemplate,
|
||||
tax.Tax,
|
||||
tax.TaxLine,
|
||||
tax.TaxRuleTemplate,
|
||||
tax.TaxRule,
|
||||
tax.TaxRuleLineTemplate,
|
||||
tax.TaxRuleLine,
|
||||
tax.TestTaxView,
|
||||
tax.TestTaxViewResult,
|
||||
move_template.MoveTemplate,
|
||||
move_template.MoveTemplateKeyword,
|
||||
move_template.MoveLineTemplate,
|
||||
move_template.TaxLineTemplate,
|
||||
move_template.CreateMoveTemplate,
|
||||
move_template.CreateMoveKeywords,
|
||||
party.Party,
|
||||
party.PartyAccount,
|
||||
fiscalyear.CreatePeriodsStart,
|
||||
fiscalyear.RenewFiscalYearStart,
|
||||
module='account', type_='model')
|
||||
Pool.register(
|
||||
account.OpenType,
|
||||
fiscalyear.BalanceNonDeferral,
|
||||
account.CreateChart,
|
||||
account.UpdateChart,
|
||||
account.OpenGeneralLedgerAccountParty,
|
||||
move.OpenJournal,
|
||||
move.OpenAccount,
|
||||
move.ReconcileLines,
|
||||
move.UnreconcileLines,
|
||||
move.Reconcile,
|
||||
move.CancelMoves,
|
||||
move.GroupLines,
|
||||
move.RescheduleLines,
|
||||
move.DelegateLines,
|
||||
move_template.CreateMove,
|
||||
tax.OpenTaxCode,
|
||||
tax.TestTax,
|
||||
party.PartyReplace,
|
||||
party.PartyErase,
|
||||
fiscalyear.CreatePeriods,
|
||||
fiscalyear.RenewFiscalYear,
|
||||
module='account', type_='wizard')
|
||||
Pool.register(
|
||||
account.AccountTypeStatement,
|
||||
account.GeneralLedger,
|
||||
account.TrialBalance,
|
||||
account.AgedBalanceReport,
|
||||
move.GeneralJournal,
|
||||
module='account', type_='report')
|
||||
BIN
modules/account/__pycache__/__init__.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/__init__.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/__init__.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/__init__.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/account.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/account.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/account.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/account.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/common.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/common.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/common.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/common.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/company.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/company.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/company.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/company.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/configuration.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/configuration.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/configuration.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/configuration.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/exceptions.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/exceptions.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/exceptions.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/exceptions.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/fiscalyear.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/fiscalyear.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/fiscalyear.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/fiscalyear.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/journal.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/journal.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/journal.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/journal.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/move.cpython-311.opt-1.pyc
Normal file
BIN
modules/account/__pycache__/move.cpython-311.opt-1.pyc
Normal file
Binary file not shown.
BIN
modules/account/__pycache__/move.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/move.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/move_template.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/move_template.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/move_template.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/move_template.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/party.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/party.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/party.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/party.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/period.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/period.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/period.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/period.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/tax.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/__pycache__/tax.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/__pycache__/tax.cpython-311.pyc
Executable file
BIN
modules/account/__pycache__/tax.cpython-311.pyc
Executable file
Binary file not shown.
3536
modules/account/account.py
Executable file
3536
modules/account/account.py
Executable file
File diff suppressed because it is too large
Load Diff
965
modules/account/account.xml
Executable file
965
modules/account/account.xml
Executable file
@@ -0,0 +1,965 @@
|
||||
<?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="res.group" id="group_account">
|
||||
<field name="name">Account</field>
|
||||
</record>
|
||||
<record model="res.group" id="group_account_party">
|
||||
<field name="name">Accounting Party</field>
|
||||
<field name="parent" ref="group_account"/>
|
||||
</record>
|
||||
<record model="res.group" id="group_account_admin">
|
||||
<field name="name">Account Administration</field>
|
||||
<field name="parent" ref="group_account"/>
|
||||
</record>
|
||||
<record model="res.user-res.group" id="user_admin_group_account">
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
<field name="group" ref="group_account"/>
|
||||
</record>
|
||||
<record model="res.user-res.group" id="user_admin_group_account_party">
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
</record>
|
||||
<record model="res.user-res.group" id="user_admin_group_account_admin">
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.icon" id="account_icon">
|
||||
<field name="name">tryton-account</field>
|
||||
<field name="path">icons/tryton-account.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="account_open_icon">
|
||||
<field name="name">tryton-account-open</field>
|
||||
<field name="path">icons/tryton-account-open.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="account_close_icon">
|
||||
<field name="name">tryton-account-close</field>
|
||||
<field name="path">icons/tryton-account-close.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="account_block_icon">
|
||||
<field name="name">tryton-account-block</field>
|
||||
<field name="path">icons/tryton-account-block.svg</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
name="Financial"
|
||||
id="menu_account"
|
||||
sequence="60"
|
||||
icon="tryton-account"/>
|
||||
<record model="ir.ui.menu-res.group" id="menu_account_group_account">
|
||||
<field name="menu" ref="menu_account"/>
|
||||
<field name="group" ref="group_account"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_account_group_account_admin">
|
||||
<field name="menu" ref="menu_account"/>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
name="Configuration"
|
||||
parent="menu_account"
|
||||
sequence="0"
|
||||
id="menu_account_configuration"
|
||||
icon="tryton-settings"/>
|
||||
<record model="ir.ui.menu-res.group"
|
||||
id="menu_account_configuration_group_account_admin">
|
||||
<field name="menu" ref="menu_account_configuration"/>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
name="Templates"
|
||||
parent="menu_account_configuration"
|
||||
sequence="10"
|
||||
id="menu_templates"/>
|
||||
<menuitem
|
||||
name="General Account"
|
||||
parent="menu_account_configuration"
|
||||
sequence="20"
|
||||
id="menu_general_account_configuration"/>
|
||||
<menuitem
|
||||
name="Entries"
|
||||
parent="menu_account"
|
||||
sequence="30"
|
||||
id="menu_entries"/>
|
||||
<menuitem
|
||||
name="Processing"
|
||||
parent="menu_account"
|
||||
sequence="50"
|
||||
id="menu_processing"/>
|
||||
<menuitem
|
||||
name="Reporting"
|
||||
parent="menu_account"
|
||||
sequence="100"
|
||||
id="menu_reporting"/>
|
||||
|
||||
<record model="ir.ui.view" id="account_type_template_view_form">
|
||||
<field name="model">account.account.type.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">account_type_template_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="account_type_template_view_list">
|
||||
<field name="model">account.account.type.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">account_type_template_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="account_type_template_view_tree">
|
||||
<field name="model">account.account.type.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">account_type_template_tree</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_account_type_template_tree">
|
||||
<field name="name">Account Types</field>
|
||||
<field name="res_model">account.account.type.template</field>
|
||||
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_account_type_template_tree_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_type_template_view_tree"/>
|
||||
<field name="act_window" ref="act_account_type_template_tree"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_account_type_template_tree_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="account_type_template_view_form"/>
|
||||
<field name="act_window" ref="act_account_type_template_tree"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_templates"
|
||||
action="act_account_type_template_tree"
|
||||
sequence="10"
|
||||
id="menu_account_type_template_tree"/>
|
||||
|
||||
<record model="ir.ui.view" id="account_type_view_form">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">account_type_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="account_type_view_tree">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">account_type_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="account_type_view_list">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">account_type_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_account_type_tree">
|
||||
<field name="name">Account Types</field>
|
||||
<field name="res_model">account.account.type</field>
|
||||
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_type_tree_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_type_view_tree"/>
|
||||
<field name="act_window" ref="act_account_type_tree"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_type_tree_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="account_type_view_form"/>
|
||||
<field name="act_window" ref="act_account_type_tree"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_general_account_configuration"
|
||||
action="act_account_type_tree"
|
||||
sequence="10"
|
||||
id="menu_account_type_tree"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_account_type_list">
|
||||
<field name="name">Account Types</field>
|
||||
<field name="res_model">account.account.type</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_type_list_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_type_view_list"/>
|
||||
<field name="act_window" ref="act_account_type_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_type_list_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="account_type_view_form"/>
|
||||
<field name="act_window" ref="act_account_type_list"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_account_type_tree"
|
||||
action="act_account_type_list"
|
||||
sequence="10"
|
||||
id="menu_account_type_list"/>
|
||||
|
||||
<record model="ir.model.access" id="access_account_type">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_account_type_account_admin">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_type_amount">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="field">amount</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_type_amount_account">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="field">amount</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_type_amount_cmp">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="field">amount_cmp</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_type_amount_cmp_account">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="field">amount_cmp</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_account_type_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_account_type_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_account_type_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.report" id="report_account_type_statement">
|
||||
<field name="name">Statement</field>
|
||||
<field name="records">listed</field>
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="report_name">account.account.type.statement</field>
|
||||
<field name="report">account/type_statement.fodt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_account_type_statement_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">account.account.type,-1</field>
|
||||
<field name="action" ref="report_account_type_statement"/>
|
||||
</record>
|
||||
<record model="ir.action-res.group" id="report_account_type_statement_group_account">
|
||||
<field name="action" ref="report_account_type_statement"/>
|
||||
<field name="group" ref="group_account"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="account_template_view_form">
|
||||
<field name="model">account.account.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">account_template_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="account_template_view_list">
|
||||
<field name="model">account.account.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">account_template_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="account_template_view_tree">
|
||||
<field name="model">account.account.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">account_template_tree</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_account_template_tree">
|
||||
<field name="name">Accounts</field>
|
||||
<field name="res_model">account.account.template</field>
|
||||
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_template_tree_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_template_view_tree"/>
|
||||
<field name="act_window" ref="act_account_template_tree"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_template_tree_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="account_template_view_form"/>
|
||||
<field name="act_window" ref="act_account_template_tree"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_templates"
|
||||
action="act_account_template_tree"
|
||||
sequence="20"
|
||||
id="menu_account_template_tree"/>
|
||||
<record model="ir.model.access" id="access_account_template">
|
||||
<field name="model">account.account.template</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="account_deferral_view_form">
|
||||
<field name="model">account.account.deferral</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">account_deferral_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="account_deferral_view_tree">
|
||||
<field name="model">account.account.deferral</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">account_deferral_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="create_chart_start_view_form">
|
||||
<field name="model">account.create_chart.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">create_chart_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="create_chart_account_view_form">
|
||||
<field name="model">account.create_chart.account</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">create_chart_account_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="create_chart_properties_view_form">
|
||||
<field name="model">account.create_chart.properties</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">create_chart_properties_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wizard_create_chart">
|
||||
<field name="name">Create Chart of Accounts from Template</field>
|
||||
<field name="wiz_name">account.create_chart</field>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_templates"
|
||||
action="wizard_create_chart"
|
||||
sequence="90"
|
||||
id="menu_create_chart"/>
|
||||
<record model="ir.module.config_wizard.item"
|
||||
id="config_wizard_item_chart_account">
|
||||
<field name="action" ref="wizard_create_chart"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="update_chart_start_view_form">
|
||||
<field name="model">account.update_chart.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">update_chart_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="update_chart_succeed_view_form">
|
||||
<field name="model">account.update_chart.succeed</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">update_chart_succeed_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wizard_update_chart">
|
||||
<field name="name">Update Chart of Accounts from Template</field>
|
||||
<field name="wiz_name">account.update_chart</field>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_templates"
|
||||
action="wizard_update_chart"
|
||||
sequence="90"
|
||||
id="menu_update_chart"/>
|
||||
|
||||
<record model="ir.ui.view" id="account_view_form">
|
||||
<field name="model">account.account</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">account_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="account_view_tree">
|
||||
<field name="model">account.account</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">account_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="account_view_list">
|
||||
<field name="model">account.account</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">account_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_account_tree">
|
||||
<field name="name">Accounts</field>
|
||||
<field name="res_model">account.account</field>
|
||||
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_tree_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_view_tree"/>
|
||||
<field name="act_window" ref="act_account_tree"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_tree_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="account_view_form"/>
|
||||
<field name="act_window" ref="act_account_tree"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_general_account_configuration"
|
||||
action="act_account_tree"
|
||||
sequence="20"
|
||||
id="menu_account_tree"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_account_list">
|
||||
<field name="name">Accounts</field>
|
||||
<field name="res_model">account.account</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_list_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_view_list"/>
|
||||
<field name="act_window" ref="act_account_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_list_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="account_view_form"/>
|
||||
<field name="act_window" ref="act_account_list"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_account_tree"
|
||||
action="act_account_list"
|
||||
sequence="10"
|
||||
id="menu_account_list"/>
|
||||
|
||||
<record model="ir.ui.view" id="account_view_list_balance_sheet">
|
||||
<field name="model">account.account</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">account_list_balance_sheet</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_account_balance_sheet">
|
||||
<field name="name">Accounts</field>
|
||||
<field name="res_model">account.account</field>
|
||||
<field name="context_model">account.balance_sheet.context</field>
|
||||
<field name="context_domain"
|
||||
eval="[('company', '=', Eval('company', -1))]"
|
||||
pyson="1"/>
|
||||
<field name="domain"
|
||||
eval="[['OR', ('type', 'child_of', Eval('active_id'), 'parent'), ('debit_type', 'child_of', Eval('active_id'), 'parent')], ('type', '!=', None), ('closed', '!=', True)]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_list2_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_view_list_balance_sheet"/>
|
||||
<field name="act_window" ref="act_account_balance_sheet"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_open_type">
|
||||
<field name="name">Open Type</field>
|
||||
<field name="wiz_name">account.account.open_type</field>
|
||||
<field name="model">account.account.type</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_type_keyword">
|
||||
<field name="keyword">tree_open</field>
|
||||
<field name="model">account.account.type,-1</field>
|
||||
<field name="action" ref="act_open_type"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="account_view_tree_chart">
|
||||
<field name="model">account.account</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">account_tree_chart</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_account_tree_chart">
|
||||
<field name="name">Chart of Accounts</field>
|
||||
<field name="res_model">account.account</field>
|
||||
<field name="context_model">account.account.context</field>
|
||||
<field name="domain"
|
||||
eval="[('parent', '=', None), ('context_company', '=', True)]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_tree_chart_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_view_tree_chart"/>
|
||||
<field name="act_window" ref="act_account_tree_chart"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_reporting"
|
||||
action="act_account_tree_chart"
|
||||
sequence="30"
|
||||
id="menu_account_tree_chart"/>
|
||||
|
||||
<record model="ir.model.access" id="access_account">
|
||||
<field name="model">account.account</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_account_account_admin">
|
||||
<field name="model">account.account</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_balance">
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">balance</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_balance_account">
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">balance</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_credit">
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">credit</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_credit_account">
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">credit</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_debit">
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">debit</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_debit_account">
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">debit</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_account_amount_second_currency">
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">amount_second_currency</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_account_amount_second_currency_account">
|
||||
<field name="model">account.account</field>
|
||||
<field name="field">amount_second_currency</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_account_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.account</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_account_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_account_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="account_context_view_form">
|
||||
<field name="model">account.account.context</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">account_context_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.report" id="report_general_ledger">
|
||||
<field name="name">General Ledger</field>
|
||||
<field name="records">listed</field>
|
||||
<field name="model">account.general_ledger.account</field>
|
||||
<field name="report_name">account.general_ledger</field>
|
||||
<field name="report">account/general_ledger.fodt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_general_ledger_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">account.general_ledger.account,-1</field>
|
||||
<field name="action" ref="report_general_ledger"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.report" id="report_trial_balance">
|
||||
<field name="name">Trial Balance</field>
|
||||
<field name="records">listed</field>
|
||||
<field name="model">account.general_ledger.account</field>
|
||||
<field name="report_name">account.trial_balance</field>
|
||||
<field name="report">account/trial_balance.fodt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_trial_balance_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">account.general_ledger.account,-1</field>
|
||||
<field name="action" ref="report_trial_balance"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="general_ledger_account_view_list">
|
||||
<field name="model">account.general_ledger.account</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">general_ledger_account_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_general_ledger_account_form">
|
||||
<field name="name">General Ledger - Accounts</field>
|
||||
<field name="res_model">account.general_ledger.account</field>
|
||||
<field name="context_model">account.general_ledger.account.context</field>
|
||||
<field name="search_value" eval="[('line_count', '!=', 0)]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_general_ledger_account_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="general_ledger_account_view_list"/>
|
||||
<field name="act_window" ref="act_general_ledger_account_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
name="General Ledger"
|
||||
parent="menu_reporting"
|
||||
action="act_general_ledger_account_form"
|
||||
sequence="10"
|
||||
id="menu_general_ledger"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_account_general_ledger">
|
||||
<field name="name">Accounts</field>
|
||||
<field name="res_model">account.general_ledger.account</field>
|
||||
<field name="context_model">account.general_ledger.account.context</field>
|
||||
<field
|
||||
name="context_domain"
|
||||
eval="[('company', '=', Eval('company', -1))]"
|
||||
pyson="1"/>
|
||||
<field
|
||||
name="domain"
|
||||
eval="['OR', ('type', 'child_of', Eval('active_id'), 'parent'), ('debit_type', 'child_of', Eval('active_id'), 'parent')]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_account_general_ledger_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="general_ledger_account_view_list"/>
|
||||
<field name="act_window" ref="act_account_general_ledger"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_general_ledger_account">
|
||||
<field name="model">account.general_ledger.account</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_general_ledger_account_account">
|
||||
<field name="model">account.general_ledger.account</field>
|
||||
<field name="group" ref="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>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_general_ledger_account_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.general_ledger.account</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_general_ledger_account_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_general_ledger_account_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="general_ledger_account_party_view_list">
|
||||
<field name="model">account.general_ledger.account.party</field>
|
||||
<field name="inherit" ref="general_ledger_account_view_list"/>
|
||||
<field name="name">general_ledger_account_party_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_general_ledger_account_party_form">
|
||||
<field name="name">General Ledger - Account Parties</field>
|
||||
<field name="res_model">account.general_ledger.account.party</field>
|
||||
<field name="context_model">account.general_ledger.account.context</field>
|
||||
<field
|
||||
name="domain"
|
||||
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('account', '=', Eval('active_id')), ('account', 'in', Eval('active_ids')))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_general_ledger_account_party_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="general_ledger_account_party_view_list"/>
|
||||
<field name="act_window" ref="act_general_ledger_account_party_form"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_general_ledger_account_party_form_keyword1">
|
||||
<field name="keyword">tree_open</field>
|
||||
<field name="model">account.general_ledger.account,-1</field>
|
||||
<field name="action" ref="act_general_ledger_account_party_form"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_general_ledger_account_party_form_keyword_account">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">account.account,-1</field>
|
||||
<field name="action" ref="act_general_ledger_account_party_form"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_general_ledger_account_party_open">
|
||||
<field name="name">Open General Ledger Account Parties</field>
|
||||
<field name="wiz_name">account.general_ledger.account.party.open</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_general_ledger_account_party_open_keyword1">
|
||||
<field name="keyword">tree_open</field>
|
||||
<field name="model">account.general_ledger.account.party,-1</field>
|
||||
<field name="action" ref="act_general_ledger_account_party_open"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_general_ledger_account_party_form_party">
|
||||
<field name="name">Accounts</field>
|
||||
<field name="res_model">account.general_ledger.account.party</field>
|
||||
<field name="context_model">account.general_ledger.account.context</field>
|
||||
<field name="domain" eval="[('party', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_general_ledger_account_party_form_party_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="general_ledger_account_party_view_list"/>
|
||||
<field name="act_window" ref="act_general_ledger_account_party_form_party"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_general_ledger_account_party_form_party_relate_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">party.party,-1</field>
|
||||
<field name="action" ref="act_general_ledger_account_party_form_party"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_general_ledger_account_party">
|
||||
<field name="model">account.general_ledger.account.party</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_general_ledger_account_account_party">
|
||||
<field name="model">account.general_ledger.account.party</field>
|
||||
<field name="group" ref="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>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_general_ledger_account_party_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.general_ledger.account.party</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_general_ledger_account_party_companies">
|
||||
<field
|
||||
name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_general_ledger_account_party_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="general_ledger_line_view_list">
|
||||
<field name="model">account.general_ledger.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">general_ledger_line_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_general_ledger_line_form">
|
||||
<field name="name">General Ledger - Lines</field>
|
||||
<field name="res_model">account.general_ledger.line</field>
|
||||
<field name="context_model">account.general_ledger.line.context</field>
|
||||
<field name="domain" eval="[('account', 'in', Eval('active_ids', []))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_general_ledger_line_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="general_ledger_line_view_list"/>
|
||||
<field name="act_window" ref="act_general_ledger_line_form"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_general_ledger_line_form_keyword">
|
||||
<field name="keyword">tree_open</field>
|
||||
<field name="model">account.general_ledger.account,-1</field>
|
||||
<field name="action" ref="act_general_ledger_line_form"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_general_ledger_line_form_keyword_account">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">account.account,-1</field>
|
||||
<field name="action" ref="act_general_ledger_line_form"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_general_ledger_line_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.general_ledger.line</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_general_ledger_line_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_general_ledger_line_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="general_ledger_account_context_view_form">
|
||||
<field name="model">account.general_ledger.account.context</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">general_ledger_account_context_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="general_ledger_line_context_view_form">
|
||||
<field name="model">account.general_ledger.line.context</field>
|
||||
<field name="inherit" ref="general_ledger_account_context_view_form"/>
|
||||
<field name="name">general_ledger_line_context_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="account_balance_sheet_view_tree">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">account_balance_sheet_tree</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_account_balance_sheet_tree">
|
||||
<field name="name">Balance Sheet</field>
|
||||
<field name="res_model">account.account.type</field>
|
||||
<field name="context_model">account.balance_sheet.comparison.context</field>
|
||||
<field name="context_domain"
|
||||
eval="[('company', '=', Eval('company', -1))]"
|
||||
pyson="1"/>
|
||||
<field name="domain"
|
||||
eval="[('statement', '=', 'balance'), ['OR', ('parent', '=', None), ('parent.statement', '!=', 'balance'), ('parent.statement', '=', None)]]"
|
||||
pyson="1"/>
|
||||
<field name="context" eval="{'cumulate': True}" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_balance_sheet_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_balance_sheet_view_tree"/>
|
||||
<field name="act_window" ref="act_account_balance_sheet_tree"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_reporting"
|
||||
action="act_account_balance_sheet_tree"
|
||||
sequence="20"
|
||||
id="menu_open_balance_sheet"/>
|
||||
|
||||
<record model="ir.ui.view" id="balance_sheet_context_view_form">
|
||||
<field name="model">account.balance_sheet.context</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">balance_sheet_context_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="balance_sheet_comparison_context_view_form">
|
||||
<field name="model">account.balance_sheet.comparison.context</field>
|
||||
<field name="inherit" ref="balance_sheet_context_view_form"/>
|
||||
<field name="name">balance_sheet_context_comparison_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="account_income_statement_view_tree">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">account_income_statement_tree</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_account_income_statement_tree">
|
||||
<field name="name">Income Statement</field>
|
||||
<field name="res_model">account.account.type</field>
|
||||
<field name="context_model">account.income_statement.context</field>
|
||||
<field name="context_domain"
|
||||
eval="[('company', '=', Eval('company', -1))]"
|
||||
pyson="1"/>
|
||||
<field name="domain"
|
||||
eval="[('statement', '=', 'income'), ['OR', ('parent', '=', None), ('parent.statement', '!=', 'income'), ('parent.statement', '=', None)]]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_income_statement_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="account_income_statement_view_tree"/>
|
||||
<field name="act_window" ref="act_account_income_statement_tree"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_reporting"
|
||||
action="act_account_income_statement_tree"
|
||||
sequence="20"
|
||||
id="menu_open_income_statement"/>
|
||||
|
||||
<record model="ir.ui.view" id="income_statement_context_view_form">
|
||||
<field name="model">account.income_statement.context</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">income_statement_context_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="aged_balance_view_list">
|
||||
<field name="model">account.aged_balance</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">aged_balance_list</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_aged_balance_list">
|
||||
<field name="name">Aged Balance</field>
|
||||
<field name="res_model">account.aged_balance</field>
|
||||
<field name="context_model">account.aged_balance.context</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_aged_balance_list_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="aged_balance_view_list"/>
|
||||
<field name="act_window" ref="act_aged_balance_list"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_reporting"
|
||||
action="act_aged_balance_list"
|
||||
sequence="50"
|
||||
id="menu_aged_balance"/>
|
||||
|
||||
<record model="ir.model.access" id="access_aged_balance">
|
||||
<field name="model">account.aged_balance</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_aged_balance_account">
|
||||
<field name="model">account.aged_balance</field>
|
||||
<field name="group" ref="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>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_aged_balance_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.aged_balance</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_aged_balance_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_aged_balance_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="aged_balance_context_view_form">
|
||||
<field name="model">account.aged_balance.context</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">aged_balance_context_form</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_aged_balance">
|
||||
<field name="name">Aged Balance</field>
|
||||
<field name="model">account.aged_balance</field>
|
||||
<field name="report_name">account.aged_balance</field>
|
||||
<field name="report">account/aged_balance.fodt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_aged_balance_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">account.aged_balance,-1</field>
|
||||
<field name="action" ref="report_aged_balance"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
579
modules/account/aged_balance.fodt
Executable file
579
modules/account/aged_balance.fodt
Executable file
@@ -0,0 +1,579 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
|
||||
<office:meta><meta:generator>LibreOffice/5.2.7.2$Linux_X86_64 LibreOffice_project/20m0$Build-2</meta:generator><meta:creation-date>2008-08-27T16:35:46</meta:creation-date><dc:date>2008-08-27T16:52:26</dc:date><meta:editing-cycles>1</meta:editing-cycles><meta:editing-duration>PT0S</meta:editing-duration><meta:document-statistic meta:character-count="1242" meta:image-count="0" meta:non-whitespace-character-count="1183" meta:object-count="0" meta:page-count="1" meta:paragraph-count="27" meta:table-count="3" meta:word-count="86"/><meta:user-defined meta:name="Info 1"/><meta:user-defined meta:name="Info 2"/><meta:user-defined meta:name="Info 3"/><meta:user-defined meta:name="Info 4"/></office:meta>
|
||||
<office:settings>
|
||||
<config:config-item-set config:name="ooo:view-settings">
|
||||
<config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="ViewAreaWidth" config:type="long">43760</config:config-item>
|
||||
<config:config-item config:name="ViewAreaHeight" config:type="long">21691</config:config-item>
|
||||
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
|
||||
<config:config-item-map-indexed config:name="Views">
|
||||
<config:config-item-map-entry>
|
||||
<config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
|
||||
<config:config-item config:name="ViewLeft" config:type="long">8162</config:config-item>
|
||||
<config:config-item config:name="ViewTop" config:type="long">5443</config:config-item>
|
||||
<config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="VisibleTop" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="VisibleRight" config:type="long">43759</config:config-item>
|
||||
<config:config-item config:name="VisibleBottom" config:type="long">21689</config:config-item>
|
||||
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
|
||||
<config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
|
||||
</config:config-item-map-entry>
|
||||
</config:config-item-map-indexed>
|
||||
</config:config-item-set>
|
||||
<config:config-item-set config:name="ooo:configuration-settings">
|
||||
<config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintFaxName" config:type="string"/>
|
||||
<config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TabOverflow" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SmallCapsPercentage66" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="MathBaselineAlignment" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrinterName" config:type="string"/>
|
||||
<config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
|
||||
<config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="Rsid" config:type="int">2183537</config:config-item>
|
||||
<config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="ApplyUserData" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
|
||||
<config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
|
||||
<config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
|
||||
<config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="RsidRoot" config:type="int">765130</config:config-item>
|
||||
<config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
|
||||
<config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
|
||||
<config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
|
||||
<config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
|
||||
<config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
|
||||
</config:config-item-set>
|
||||
</office:settings>
|
||||
<office:scripts>
|
||||
<office:script script:language="ooo:Basic">
|
||||
<ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
|
||||
</office:script>
|
||||
</office:scripts>
|
||||
<office:font-face-decls>
|
||||
<style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
|
||||
<style:font-face style:name="Liberation Serif1" svg:font-family="'Liberation Serif'" style:font-adornments="Bold" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-adornments="Regular" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Thorndale AMT" svg:font-family="'Thorndale AMT'" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-adornments="Regular" style:font-family-generic="swiss" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Andale Sans UI" svg:font-family="'Andale Sans UI'" style:font-family-generic="system" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
|
||||
</office:font-face-decls>
|
||||
<office:styles>
|
||||
<style:default-style style:family="graphic">
|
||||
<style:graphic-properties svg:stroke-color="#000000" draw:fill-color="#99ccff" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
|
||||
<style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
|
||||
<style:tab-stops/>
|
||||
</style:paragraph-properties>
|
||||
<style:text-properties style:use-window-font-color="true" style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Andale Sans UI" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="Andale Sans UI" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none"/>
|
||||
</style:default-style>
|
||||
<style:default-style style:family="paragraph">
|
||||
<style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="0.4925in" style:writing-mode="lr-tb"/>
|
||||
<style:text-properties style:use-window-font-color="true" style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Andale Sans UI" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="Andale Sans UI" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
|
||||
</style:default-style>
|
||||
<style:default-style style:family="table">
|
||||
<style:table-properties table:border-model="collapsing"/>
|
||||
</style:default-style>
|
||||
<style:default-style style:family="table-row">
|
||||
<style:table-row-properties fo:keep-together="auto"/>
|
||||
</style:default-style>
|
||||
<style:style style:name="Standard" style:family="paragraph" style:class="text">
|
||||
<style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-style-name="Regular" style:font-family-generic="swiss" style:font-pitch="variable" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:paragraph-properties fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:font-name="Liberation Serif" fo:font-family="'Liberation Serif'" style:font-style-name="Regular" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="16pt" style:font-name-asian="DejaVu Sans" style:font-family-asian="'DejaVu Sans'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans" style:font-family-complex="'DejaVu Sans'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
|
||||
<style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false"/>
|
||||
<style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-style-name="Regular" style:font-family-generic="swiss" style:font-pitch="variable" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
|
||||
<style:text-properties style:font-size-asian="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties fo:margin-top="0.0835in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-size-complex="12pt" style:font-style-complex="italic"/>
|
||||
</style:style>
|
||||
<style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties style:font-size-asian="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="1" style:class="text">
|
||||
<style:text-properties fo:font-size="16pt" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table_20_Heading" style:display-name="Table Heading" style:family="paragraph" style:parent-style-name="Table_20_Contents" style:class="extra" style:master-page-name="">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false" style:page-number="auto" text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties style:font-name="Liberation Serif1" fo:font-family="'Liberation Serif'" style:font-style-name="Bold" style:font-family-generic="roman" style:font-pitch="variable" fo:font-weight="bold" style:font-size-asian="10.5pt" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Header" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="3.4626in" style:type="center"/>
|
||||
<style:tab-stop style:position="6.9252in" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
<style:text-properties fo:font-size="9pt" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:text-properties fo:font-size="14pt" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="14pt" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-style-complex="italic" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="3.4626in" style:type="center"/>
|
||||
<style:tab-stop style:position="6.9252in" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
<style:text-properties fo:font-size="9pt" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading_20_3" style:display-name="Heading 3" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Text_20_body_20_indent" style:display-name="Text body indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text">
|
||||
<style:paragraph-properties fo:margin-left="0.1965in" fo:margin-right="0in" fo:margin-top="0in" fo:margin-bottom="0in" loext:contextual-spacing="false" fo:text-indent="0in" style:auto-text-indent="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="Text" style:family="paragraph" style:parent-style-name="Caption" style:class="extra"/>
|
||||
<style:style style:name="Quotations" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
|
||||
<style:paragraph-properties fo:margin-left="0.3937in" fo:margin-right="0.3937in" fo:margin-top="0in" fo:margin-bottom="0.1965in" loext:contextual-spacing="false" fo:text-indent="0in" style:auto-text-indent="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="Title" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="28pt" fo:font-weight="bold" style:font-size-asian="28pt" style:font-weight-asian="bold" style:font-size-complex="28pt" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Subtitle" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
|
||||
<style:paragraph-properties fo:margin-top="0.0417in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" fo:text-align="center" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="18pt" style:font-size-asian="18pt" style:font-size-complex="18pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Placeholder" style:family="text">
|
||||
<style:text-properties fo:font-variant="small-caps" fo:color="#008080" style:text-underline-style="dotted" style:text-underline-width="auto" style:text-underline-color="font-color"/>
|
||||
</style:style>
|
||||
<style:style style:name="Bullet_20_Symbols" style:display-name="Bullet Symbols" style:family="text">
|
||||
<style:text-properties style:font-name="StarSymbol" fo:font-family="StarSymbol" fo:font-size="9pt" style:font-name-asian="StarSymbol" style:font-family-asian="StarSymbol" style:font-size-asian="9pt" style:font-name-complex="StarSymbol" style:font-family-complex="StarSymbol" style:font-size-complex="9pt"/>
|
||||
</style:style>
|
||||
<text:outline-style style:name="Outline">
|
||||
<text:outline-level-style text:level="1" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="2" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="3" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="4" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="5" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="6" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="7" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="8" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="9" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="10" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.15in"/>
|
||||
</text:outline-level-style>
|
||||
</text:outline-style>
|
||||
<text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
|
||||
<text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
|
||||
<text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1" text:number-position="left" text:increment="5"/>
|
||||
</office:styles>
|
||||
<office:automatic-styles>
|
||||
<style:style style:name="Table3" style:family="table">
|
||||
<style:table-properties style:width="6.6924in" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="2.2306in" style:rel-column-width="21845*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2" style:family="table">
|
||||
<style:table-properties style:width="6.6924in" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="3.3465in" style:rel-column-width="32768*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.B" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="3.3458in" style:rel-column-width="32767*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3" style:family="table">
|
||||
<style:table-properties style:width="6.6924in" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="2.2306in" style:rel-column-width="21845*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2" style:family="table">
|
||||
<style:table-properties style:width="6.6924in" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="3.3465in" style:rel-column-width="32768*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.B" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="3.3458in" style:rel-column-width="32767*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1" style:family="table">
|
||||
<style:table-properties style:width="6.6896in" fo:margin-left="0in" fo:margin-right="0.0028in" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="1.7694in" style:rel-column-width="17334*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.B" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="0.984in" style:rel-column-width="9640*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.F" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="0.984in" style:rel-column-width="9641*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#cccccc" fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.F1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#cccccc" fo:padding="0.0382in" fo:border="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.2" style:family="table-row">
|
||||
<style:table-row-properties style:min-row-height="0.2313in"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A2" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.F2" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.B3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.C3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.D3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.E3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.F3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A4" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.F4" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.5" style:family="table-row">
|
||||
<style:table-row-properties style:min-row-height="0.0528in"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A5" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#e6e6e6" fo:padding="0.0382in" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.F5" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#e6e6e6" fo:padding="0.0382in" fo:border="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Header">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Footer">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P3" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:text-properties fo:font-size="14pt" fo:language="en" fo:country="US" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="14pt" style:font-size-asian="14pt" style:font-size-complex="14pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:text-properties fo:font-size="14pt" fo:font-weight="normal" style:font-size-asian="14pt" style:font-weight-asian="normal" style:font-size-complex="14pt" style:font-weight-complex="normal"/>
|
||||
</style:style>
|
||||
<style:style style:name="P6" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="P7" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="14pt" fo:language="en" fo:country="US" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="P8" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="14pt" fo:language="en" fo:country="US" officeooo:paragraph-rsid="0017ee93" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="normal"/>
|
||||
</style:style>
|
||||
<style:style style:name="P9" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="14pt" fo:language="en" fo:country="US" officeooo:paragraph-rsid="0020f549" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="normal"/>
|
||||
</style:style>
|
||||
<style:style style:name="P10" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="14pt" fo:language="en" fo:country="US" fo:font-weight="bold" officeooo:paragraph-rsid="0017ee93" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="P11" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="14pt" fo:language="en" fo:country="US" fo:font-weight="bold" officeooo:paragraph-rsid="0020f549" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="P12" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="14pt" fo:language="en" fo:country="US" style:text-underline-style="none" style:font-size-asian="14pt" style:font-size-complex="14pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P13" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:text-properties officeooo:rsid="0017c172" officeooo:paragraph-rsid="0017c172"/>
|
||||
</style:style>
|
||||
<style:style style:name="P14" style:family="paragraph" style:parent-style-name="Heading_20_1">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="T1" style:family="text">
|
||||
<style:text-properties fo:font-size="14pt" fo:language="en" fo:country="US" officeooo:rsid="000e7ba0" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="T2" style:family="text">
|
||||
<style:text-properties officeooo:rsid="001a39a1"/>
|
||||
</style:style>
|
||||
<style:page-layout style:name="pm1">
|
||||
<style:page-layout-properties fo:page-width="8.2673in" fo:page-height="11.6925in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:footnote-max-height="0in">
|
||||
<style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="none" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
|
||||
</style:page-layout-properties>
|
||||
<style:header-style>
|
||||
<style:header-footer-properties fo:min-height="0in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-bottom="0.1965in"/>
|
||||
</style:header-style>
|
||||
<style:footer-style>
|
||||
<style:header-footer-properties fo:min-height="0in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-top="0.1965in"/>
|
||||
</style:footer-style>
|
||||
</style:page-layout>
|
||||
</office:automatic-styles>
|
||||
<office:master-styles>
|
||||
<style:master-page style:name="Standard" style:page-layout-name="pm1">
|
||||
<style:header>
|
||||
<table:table table:name="Table3" table:style-name="Table3">
|
||||
<table:table-column table:style-name="Table3.A" table:number-columns-repeated="3"/>
|
||||
<table:table-row>
|
||||
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
||||
<text:p text:style-name="Header">Company: <text:placeholder text:placeholder-type="text"><company.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
||||
<text:p text:style-name="Header">Aged Balance for <text:placeholder text:placeholder-type="text"><type></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
||||
<text:p text:style-name="P1">Print Date: <text:placeholder text:placeholder-type="text"><format_date(datetime.date.today(), user.language)></text:placeholder> at <text:placeholder text:placeholder-type="text"><datetime.datetime.now().strftime('%H:%M:%S')></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
</style:header>
|
||||
<style:footer>
|
||||
<table:table table:name="Table2" table:style-name="Table2">
|
||||
<table:table-column table:style-name="Table2.A"/>
|
||||
<table:table-column table:style-name="Table2.B"/>
|
||||
<table:table-row>
|
||||
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
||||
<text:p text:style-name="Footer">User: <text:placeholder text:placeholder-type="text"><user.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
||||
<text:p text:style-name="P2"><text:page-number text:select-page="current">1</text:page-number>/<text:page-count>1</text:page-count></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
</style:footer>
|
||||
</style:master-page>
|
||||
</office:master-styles>
|
||||
<office:body>
|
||||
<office:text>
|
||||
<office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
|
||||
<text:sequence-decls>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
|
||||
</text:sequence-decls>
|
||||
<text:h text:style-name="P14" text:outline-level="1">Aged Balance for <text:placeholder text:placeholder-type="text"><type></text:placeholder></text:h>
|
||||
<text:p text:style-name="P13">Date: <text:span text:style-name="T1"><text:placeholder text:placeholder-type="text"><format_date(date, user.language)></text:placeholder></text:span></text:p>
|
||||
<table:table table:name="Table1" table:style-name="Table1">
|
||||
<table:table-column table:style-name="Table1.A"/>
|
||||
<table:table-column table:style-name="Table1.B" table:number-columns-repeated="4"/>
|
||||
<table:table-column table:style-name="Table1.F"/>
|
||||
<table:table-header-rows>
|
||||
<table:table-row>
|
||||
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
||||
<text:p text:style-name="P3">Party</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
||||
<text:p text:style-name="P5"><text:placeholder text:placeholder-type="text"><str(term0)></text:placeholder> <text:placeholder text:placeholder-type="text"><unit></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
||||
<text:p text:style-name="P5"><text:placeholder text:placeholder-type="text"><str(term1)></text:placeholder> <text:placeholder text:placeholder-type="text"><unit></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
||||
<text:p text:style-name="P5"><text:placeholder text:placeholder-type="text"><str(term2)></text:placeholder> <text:placeholder text:placeholder-type="text"><unit></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
||||
<text:p text:style-name="P5"><text:placeholder text:placeholder-type="text"><str(term3)></text:placeholder><text:span text:style-name="T2">+</text:span> <text:placeholder text:placeholder-type="text"><unit></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.F1" office:value-type="string">
|
||||
<text:p text:style-name="P6">Balance</text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table-header-rows>
|
||||
<table:table-row table:style-name="Table1.2">
|
||||
<table:table-cell table:style-name="Table1.A2" table:number-columns-spanned="5" office:value-type="string">
|
||||
<text:p text:style-name="P7"><text:placeholder text:placeholder-type="text"><for each="record in records"></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:table-cell table:style-name="Table1.F2" office:value-type="string">
|
||||
<text:p text:style-name="P7"/>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Table1.2">
|
||||
<table:table-cell table:style-name="Table1.A3" office:value-type="string">
|
||||
<text:p text:style-name="P7"><text:placeholder text:placeholder-type="text"><record.party.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.B3" office:value-type="string">
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"><format_currency(record.term0, user.language, currency=company.currency)or ''></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.C3" office:value-type="string">
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"><format_currency(record.term1, user.language, currency=company.currency) or ''></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.D3" office:value-type="string">
|
||||
<text:p text:style-name="P9"><text:placeholder text:placeholder-type="text"><format_currency(record.term2, user.language, currency=company.currency) or ''></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.E3" office:value-type="string">
|
||||
<text:p text:style-name="P9"><text:placeholder text:placeholder-type="text"><format_currency(record.term3, user.language, currency=company.currency) or ''></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.F3" office:value-type="string">
|
||||
<text:p text:style-name="P9"><text:placeholder text:placeholder-type="text"><format_currency(record.balance, user.language, currency=company.currency) or ''></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Table1.2">
|
||||
<table:table-cell table:style-name="Table1.A4" table:number-columns-spanned="5" office:value-type="string">
|
||||
<text:p text:style-name="P7"><text:placeholder text:placeholder-type="text"></for></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:table-cell table:style-name="Table1.F4" office:value-type="string">
|
||||
<text:p text:style-name="P7"/>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Table1.5">
|
||||
<table:table-cell table:style-name="Table1.A5" office:value-type="string">
|
||||
<text:p text:style-name="P4">Total</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.A5" office:value-type="string">
|
||||
<text:p text:style-name="P10"><text:placeholder text:placeholder-type="text"><format_currency(sum(records, 'term0'), user.language, currency=company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.A5" office:value-type="string">
|
||||
<text:p text:style-name="P11"><text:placeholder text:placeholder-type="text"><format_currency(sum(records, 'term1'), user.language, currency=company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.A5" office:value-type="string">
|
||||
<text:p text:style-name="P11"><text:placeholder text:placeholder-type="text"><format_currency(sum(records, 'term2'), user.language, currency=company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.A5" office:value-type="string">
|
||||
<text:p text:style-name="P11"><text:placeholder text:placeholder-type="text"><format_currency(sum(records, 'term3'), user.language, currency=company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.F5" office:value-type="string">
|
||||
<text:p text:style-name="P11"><text:placeholder text:placeholder-type="text"><format_currency(sum(records, 'balance'), user.language, currency=company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
<text:p text:style-name="P12"/>
|
||||
</office:text>
|
||||
</office:body>
|
||||
</office:document>
|
||||
180
modules/account/common.py
Executable file
180
modules/account/common.py
Executable file
@@ -0,0 +1,180 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import datetime
|
||||
|
||||
from sql import Literal
|
||||
from sql.conditionals import Coalesce
|
||||
|
||||
from trytond.model import Model, fields
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Bool, Eval, If
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class PeriodMixin(Model):
|
||||
|
||||
start_date = fields.Date(
|
||||
"Start Date",
|
||||
domain=[
|
||||
If(Eval('start_date') & Eval('end_date'),
|
||||
('start_date', '<=', Eval('end_date')),
|
||||
()),
|
||||
])
|
||||
end_date = fields.Date(
|
||||
"End Date",
|
||||
domain=[
|
||||
If(Eval('start_date') & Eval('end_date'),
|
||||
('end_date', '>=', Eval('start_date')),
|
||||
()),
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
if (hasattr(cls, 'parent')
|
||||
and hasattr(cls, 'childs')
|
||||
and hasattr(cls, 'company')):
|
||||
cls.parent.domain = [
|
||||
('company', '=', Eval('company', 0)),
|
||||
['OR',
|
||||
If(Bool(Eval('start_date')),
|
||||
('start_date', '>=', Eval('start_date', None)),
|
||||
()),
|
||||
('start_date', '=', None),
|
||||
],
|
||||
['OR',
|
||||
If(Bool(Eval('end_date')),
|
||||
('end_date', '<=', Eval('end_date', None)),
|
||||
()),
|
||||
('end_date', '=', None),
|
||||
],
|
||||
]
|
||||
cls.parent.depends.update({'company', 'start_date', 'end_date'})
|
||||
|
||||
cls.childs.domain = [
|
||||
('company', '=', Eval('company', 0)),
|
||||
If(Bool(Eval('start_date')),
|
||||
('start_date', '>=', Eval('start_date', None)),
|
||||
()),
|
||||
If(Bool(Eval('end_date')),
|
||||
('end_date', '<=', Eval('end_date', None)),
|
||||
()),
|
||||
]
|
||||
cls.childs.depends.update({'company', 'start_date', 'end_date'})
|
||||
|
||||
|
||||
class ActivePeriodMixin(PeriodMixin):
|
||||
|
||||
active = fields.Function(fields.Boolean("Active"), 'on_change_with_active')
|
||||
|
||||
@classmethod
|
||||
def _active_dates(cls):
|
||||
pool = Pool()
|
||||
Date = pool.get('ir.date')
|
||||
FiscalYear = pool.get('account.fiscalyear')
|
||||
Period = pool.get('account.period')
|
||||
context = Transaction().context
|
||||
today = Date.today()
|
||||
|
||||
date = context.get('date')
|
||||
from_date, to_date = context.get('from_date'), context.get('to_date')
|
||||
period_ids = context.get('periods')
|
||||
fiscalyear_id = context.get('fiscalyear')
|
||||
if date:
|
||||
fiscalyears = FiscalYear.search([
|
||||
('start_date', '<=', date),
|
||||
('end_date', '>=', date),
|
||||
])
|
||||
elif from_date or to_date:
|
||||
domain = []
|
||||
if from_date:
|
||||
domain.append(('end_date', '>=', from_date))
|
||||
if to_date:
|
||||
domain.append(('start_date', '<=', to_date))
|
||||
fiscalyears = FiscalYear.search(domain)
|
||||
elif period_ids:
|
||||
periods = Period.browse(period_ids)
|
||||
fiscalyears = list(set(p.fiscalyear for p in periods))
|
||||
elif fiscalyear_id:
|
||||
fiscalyears = FiscalYear.browse([fiscalyear_id])
|
||||
else:
|
||||
fiscalyears = FiscalYear.search([
|
||||
('start_date', '<=', today),
|
||||
('end_date', '>=', today),
|
||||
], limit=1)
|
||||
if not fiscalyears:
|
||||
return (from_date or date or today, to_date or date or today)
|
||||
return (
|
||||
min(f.start_date for f in fiscalyears),
|
||||
max(f.end_date for f in fiscalyears))
|
||||
|
||||
@classmethod
|
||||
def default_active(cls):
|
||||
return True
|
||||
|
||||
@fields.depends('start_date', 'end_date')
|
||||
def on_change_with_active(self, name=None):
|
||||
from_date, to_date = self._active_dates()
|
||||
start_date = self.start_date or datetime.date.min
|
||||
end_date = self.end_date or datetime.date.max
|
||||
return (start_date <= to_date <= end_date
|
||||
or start_date <= from_date <= end_date
|
||||
or (from_date <= start_date and end_date <= to_date))
|
||||
|
||||
@classmethod
|
||||
def domain_active(cls, domain, tables):
|
||||
table, _ = tables[None]
|
||||
_, operator, value = domain
|
||||
|
||||
from_date, to_date = cls._active_dates()
|
||||
start_date = Coalesce(table.start_date, datetime.date.min)
|
||||
end_date = Coalesce(table.end_date, datetime.date.max)
|
||||
|
||||
expression = (((start_date <= to_date) & (end_date >= to_date))
|
||||
| ((start_date <= from_date) & (end_date >= from_date))
|
||||
| ((start_date >= from_date) & (end_date <= to_date)))
|
||||
|
||||
if operator in {'=', '!='}:
|
||||
if (operator == '=') != value:
|
||||
expression = ~expression
|
||||
elif operator in {'in', 'not in'}:
|
||||
if True in value and False not in value:
|
||||
pass
|
||||
elif False in value and True not in value:
|
||||
expression = ~expression
|
||||
else:
|
||||
expression = Literal(True)
|
||||
else:
|
||||
expression = Literal(True)
|
||||
return expression
|
||||
|
||||
|
||||
class ContextCompanyMixin(Model):
|
||||
|
||||
context_company = fields.Function(fields.Boolean("Context Company"),
|
||||
'get_context_company')
|
||||
|
||||
def get_context_company(self, name):
|
||||
context = Transaction().context
|
||||
return self.company.id == context.get('company')
|
||||
|
||||
@classmethod
|
||||
def domain_context_company(cls, domain, tables):
|
||||
context = Transaction().context
|
||||
table, _ = tables[None]
|
||||
_, operator, value = domain
|
||||
|
||||
expression = table.company == context.get('company')
|
||||
if operator in {'=', '!='}:
|
||||
if (operator == '=') != value:
|
||||
expression = ~expression
|
||||
elif operator in {'in', 'not in'}:
|
||||
if True in value and False not in value:
|
||||
pass
|
||||
elif False in value and True not in value:
|
||||
expression = ~expression
|
||||
else:
|
||||
expression = Literal(True)
|
||||
else:
|
||||
expression = Literal(True)
|
||||
return expression
|
||||
151
modules/account/company.py
Executable file
151
modules/account/company.py
Executable file
@@ -0,0 +1,151 @@
|
||||
# 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 sql import Literal, Null
|
||||
from sql.aggregate import Sum
|
||||
from sql.conditionals import Coalesce
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import fields
|
||||
from trytond.model.exceptions import AccessError
|
||||
from trytond.modules.currency.fields import Monetary
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.tools import grouped_slice, reduce_ids
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class Company(metaclass=PoolMeta):
|
||||
__name__ = 'company.company'
|
||||
|
||||
receivable = fields.Function(Monetary(
|
||||
"Receivable", currency='currency', digits='currency'),
|
||||
'get_receivable_payable', searcher='search_receivable_payable')
|
||||
payable = fields.Function(Monetary(
|
||||
"Payable", currency='currency', digits='currency'),
|
||||
'get_receivable_payable', searcher='search_receivable_payable')
|
||||
receivable_today = fields.Function(Monetary(
|
||||
"Receivable Today", currency='currency', digits='currency'),
|
||||
'get_receivable_payable', searcher='search_receivable_payable')
|
||||
payable_today = fields.Function(Monetary(
|
||||
"Payable Today", currency='currency', digits='currency'),
|
||||
'get_receivable_payable', searcher='search_receivable_payable')
|
||||
|
||||
@classmethod
|
||||
def get_receivable_payable(cls, companies, names):
|
||||
amounts = {}
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Account = pool.get('account.account')
|
||||
AccountType = pool.get('account.account.type')
|
||||
Date = pool.get('ir.date')
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
line = MoveLine.__table__()
|
||||
account = Account.__table__()
|
||||
account_type = AccountType.__table__()
|
||||
|
||||
for name in names:
|
||||
assert name in {
|
||||
'receivable', 'payable', 'receivable_today', 'payable_today'}
|
||||
amounts[name] = dict.fromkeys(map(int, companies), Decimal(0))
|
||||
|
||||
exp = {
|
||||
c.id: Decimal(str(10.0 ** -c.currency.digits)) for c in companies}
|
||||
today = Date.today()
|
||||
|
||||
amount = Sum(Coalesce(line.debit, 0) - Coalesce(line.credit, 0))
|
||||
for name in names:
|
||||
if name.endswith('_today'):
|
||||
code = name[:-len('_today')]
|
||||
today_where = (
|
||||
(line.maturity_date <= today)
|
||||
| (line.maturity_date == Null))
|
||||
else:
|
||||
code = name
|
||||
today_where = Literal(True)
|
||||
for sub_companies in grouped_slice(companies):
|
||||
sub_ids = [p.id for p in sub_companies]
|
||||
company_where = reduce_ids(account.company, sub_ids)
|
||||
cursor.execute(*line
|
||||
.join(account,
|
||||
condition=account.id == line.account)
|
||||
.join(account_type,
|
||||
condition=account.type == account_type.id)
|
||||
.select(account.company, amount,
|
||||
where=(getattr(account_type, code)
|
||||
& (line.reconciliation == Null)
|
||||
& company_where
|
||||
& today_where),
|
||||
group_by=account.company))
|
||||
for company_id, value in cursor:
|
||||
# SQLite uses float for SUM
|
||||
if not isinstance(value, Decimal):
|
||||
value = Decimal(str(value))
|
||||
amounts[name][company_id] = value.quantize(exp[company_id])
|
||||
return amounts
|
||||
|
||||
@classmethod
|
||||
def search_receivable_payable(cls, name, clause):
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Account = pool.get('account.account')
|
||||
AccountType = pool.get('account.account.type')
|
||||
Date = pool.get('ir.date')
|
||||
|
||||
line = MoveLine.__table__()
|
||||
account = Account.__table__()
|
||||
account_type = AccountType.__table__()
|
||||
|
||||
assert name in {
|
||||
'receivable', 'payable', 'receivable_today', 'payable_today'}
|
||||
_, operator, value = clause
|
||||
|
||||
today = Date.today()
|
||||
|
||||
if name.endswith('_today'):
|
||||
code = name[:-len('_today')]
|
||||
today_query = ((line.maturity_date <= today)
|
||||
| (line.maturity_date == Null))
|
||||
else:
|
||||
code = name
|
||||
today_query = Literal(True)
|
||||
|
||||
Operator = fields.SQL_OPERATORS[operator]
|
||||
|
||||
# Need to cast numeric for sqlite
|
||||
cast_ = MoveLine.debit.sql_cast
|
||||
amount = cast_(Sum(Coalesce(line.debit, 0) - Coalesce(line.credit, 0)))
|
||||
if operator in {'in', 'not in'}:
|
||||
value = [cast_(Literal(Decimal(v or 0))) for v in value]
|
||||
else:
|
||||
value = cast_(Literal(Decimal(value or 0)))
|
||||
query = (line
|
||||
.join(account, condition=account.id == line.account)
|
||||
.join(account_type, condition=account.type == account_type.id)
|
||||
.select(account.company,
|
||||
where=(getattr(account_type, code)
|
||||
& (line.reconciliation == Null)
|
||||
& today_query),
|
||||
group_by=account.company,
|
||||
having=Operator(amount, value)))
|
||||
return [('id', 'in', query)]
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
transaction = Transaction()
|
||||
if transaction.user and transaction.check_access:
|
||||
actions = iter(args)
|
||||
for companies, values in zip(actions, actions):
|
||||
if 'currency' in values:
|
||||
moves = Move.search([
|
||||
('company', 'in', [c.id for c in companies]),
|
||||
],
|
||||
limit=1, order=[])
|
||||
if moves:
|
||||
raise AccessError(gettext(
|
||||
'account.msg_company_change_currency'))
|
||||
|
||||
super().write(*args)
|
||||
66
modules/account/company.xml
Executable file
66
modules/account/company.xml
Executable file
@@ -0,0 +1,66 @@
|
||||
<?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="company_view_list">
|
||||
<field name="model">company.company</field>
|
||||
<field name="inherit" ref="company.company_view_list"/>
|
||||
<field name="name">company_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="company_view_form">
|
||||
<field name="model">company.company</field>
|
||||
<field name="inherit" ref="company.company_view_form"/>
|
||||
<field name="name">company_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_company_receivable">
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">receivable</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_company_receivable_account">
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">receivable</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_company_payable">
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">payable</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_company_payable_account">
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">payable</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_company_receivable_today">
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">receivable_today</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_company_receivable_today_account">
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">receivable_today</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_company_payable_today">
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">payable_today</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_company_payable_today_account">
|
||||
<field name="model">company.company</field>
|
||||
<field name="field">payable_today</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
254
modules/account/configuration.py
Executable file
254
modules/account/configuration.py
Executable file
@@ -0,0 +1,254 @@
|
||||
# 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 ModelSingleton, ModelSQL, ModelView, fields
|
||||
from trytond.modules.company.model import (
|
||||
CompanyMultiValueMixin, CompanyValueMixin)
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Eval, Id
|
||||
|
||||
tax_roundings = [
|
||||
('document', 'Per Document'),
|
||||
('line', 'Per Line'),
|
||||
]
|
||||
|
||||
|
||||
class Configuration(
|
||||
ModelSingleton, ModelSQL, ModelView, CompanyMultiValueMixin):
|
||||
'Account Configuration'
|
||||
__name__ = 'account.configuration'
|
||||
default_account_receivable = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Default Account Receivable",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.receivable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
]))
|
||||
default_account_payable = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Default Account Payable",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.payable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
]))
|
||||
default_customer_tax_rule = fields.MultiValue(fields.Many2One(
|
||||
'account.tax.rule', "Default Customer Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('kind', 'in', ['sale', 'both']),
|
||||
],
|
||||
help="Default customer tax rule for new parties."))
|
||||
default_supplier_tax_rule = fields.MultiValue(fields.Many2One(
|
||||
'account.tax.rule', "Default Supplier Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('kind', 'in', ['purchase', 'both']),
|
||||
],
|
||||
help="Default supplier tax rule for new parties."))
|
||||
default_account_prepayment_payable = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Default Account Purchase Prepayment",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'balance'),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
]))
|
||||
default_account_prepayment_receivable = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Default Account Client Advance",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'balance'),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
]))
|
||||
tax_rounding = fields.MultiValue(fields.Selection(
|
||||
tax_roundings, "Tax Rounding"))
|
||||
reconciliation_sequence = fields.MultiValue(fields.Many2One(
|
||||
'ir.sequence', "Reconciliation Sequence", required=True,
|
||||
domain=[
|
||||
('company', 'in',
|
||||
[Eval('context', {}).get('company', -1), None]),
|
||||
('sequence_type', '=',
|
||||
Id('account',
|
||||
'sequence_type_account_move_reconciliation')),
|
||||
]))
|
||||
currency_exchange_journal = fields.MultiValue(fields.Many2One(
|
||||
'account.journal', "Currency Exchange Journal",
|
||||
domain=[
|
||||
('type', '=', 'write-off'),
|
||||
]))
|
||||
currency_exchange_credit_account = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Currency Exchange Credit Account",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'income'),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('second_currency', '=', None),
|
||||
]))
|
||||
currency_exchange_debit_account = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Currency Exchange Debit Account",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'income'),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('second_currency', '=', None),
|
||||
]))
|
||||
|
||||
@classmethod
|
||||
def multivalue_model(cls, field):
|
||||
pool = Pool()
|
||||
if field in {
|
||||
'default_account_receivable', 'default_account_payable',
|
||||
'default_account_prepayment_payable','default_account_prepayment_receivable',
|
||||
'currency_exchange_credit_account',
|
||||
'currency_exchange_debit_account'}:
|
||||
return pool.get('account.configuration.default_account')
|
||||
if field in {'default_customer_tax_rule', 'default_supplier_tax_rule'}:
|
||||
return pool.get('account.configuration.default_tax_rule')
|
||||
if field == 'reconciliation_sequence':
|
||||
return pool.get('account.configuration.sequence')
|
||||
elif field == 'currency_exchange_journal':
|
||||
return pool.get('account.configuration.journal')
|
||||
return super(Configuration, cls).multivalue_model(field)
|
||||
|
||||
@classmethod
|
||||
def default_tax_rounding(cls, **pattern):
|
||||
return cls.multivalue_model('tax_rounding').default_tax_rounding()
|
||||
|
||||
@classmethod
|
||||
def default_reconciliation_sequence(cls, **pattern):
|
||||
return cls.multivalue_model(
|
||||
'reconciliation_sequence').default_reconciliation_sequence()
|
||||
|
||||
@classmethod
|
||||
def default_currency_exchange_journal(cls, **pattern):
|
||||
return cls.multivalue_model(
|
||||
'currency_exchange_journal').default_currency_exchange_journal()
|
||||
|
||||
|
||||
class ConfigurationDefaultAccount(ModelSQL, CompanyValueMixin):
|
||||
"Account Configuration Default Account"
|
||||
__name__ = 'account.configuration.default_account'
|
||||
default_account_receivable = fields.Many2One(
|
||||
'account.account', "Default Account Receivable",
|
||||
domain=[
|
||||
('type.receivable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
])
|
||||
default_account_payable = fields.Many2One(
|
||||
'account.account', "Default Account Payable",
|
||||
domain=[
|
||||
('type.payable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
])
|
||||
currency_exchange_credit_account = fields.Many2One(
|
||||
'account.account', "Currency Exchange Credit Account",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'income'),
|
||||
('company', '=', Eval('company', -1)),
|
||||
('second_currency', '=', None),
|
||||
])
|
||||
currency_exchange_debit_account = fields.Many2One(
|
||||
'account.account', "Currency Exchange Debit Account",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'income'),
|
||||
('company', '=', Eval('company', -1)),
|
||||
('second_currency', '=', None),
|
||||
])
|
||||
default_account_prepayment_payable = fields.Many2One(
|
||||
'account.account', "Default Account Purchase Prepayment",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'balance'),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
])
|
||||
default_account_prepayment_receivable = fields.Many2One(
|
||||
'account.account', "Default Account Client Advance",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'balance'),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
])
|
||||
|
||||
class DefaultTaxRule(ModelSQL, CompanyValueMixin):
|
||||
"Account Configuration Default Tax Rule"
|
||||
__name__ = 'account.configuration.default_tax_rule'
|
||||
default_customer_tax_rule = fields.Many2One(
|
||||
'account.tax.rule', "Default Customer Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('company', -1)),
|
||||
('kind', 'in', ['sale', 'both']),
|
||||
])
|
||||
default_supplier_tax_rule = fields.Many2One(
|
||||
'account.tax.rule', "Default Supplier Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('company', -1)),
|
||||
('kind', 'in', ['purchase', 'both']),
|
||||
])
|
||||
|
||||
|
||||
class ConfigurationTaxRounding(ModelSQL, CompanyValueMixin):
|
||||
'Account Configuration Tax Rounding'
|
||||
__name__ = 'account.configuration.tax_rounding'
|
||||
configuration = fields.Many2One('account.configuration', 'Configuration',
|
||||
required=True, ondelete='CASCADE',
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends={'company'})
|
||||
tax_rounding = fields.Selection(tax_roundings, 'Method', required=True)
|
||||
|
||||
@classmethod
|
||||
def default_tax_rounding(cls):
|
||||
return 'document'
|
||||
|
||||
|
||||
class Sequence(ModelSQL, CompanyValueMixin):
|
||||
"Account Configuration Sequence"
|
||||
__name__ = 'account.configuration.sequence'
|
||||
reconciliation_sequence = fields.Many2One(
|
||||
'ir.sequence', "Reconciliation Sequence", required=True,
|
||||
domain=[
|
||||
('company', 'in', [Eval('company', -1), None]),
|
||||
('sequence_type', '=',
|
||||
Id('account', 'sequence_type_account_move_reconciliation')),
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def default_reconciliation_sequence(cls):
|
||||
pool = Pool()
|
||||
ModelData = pool.get('ir.model.data')
|
||||
try:
|
||||
return ModelData.get_id(
|
||||
'account', 'sequence_account_move_reconciliation')
|
||||
except KeyError:
|
||||
return None
|
||||
|
||||
|
||||
class Journal(ModelSQL, CompanyValueMixin):
|
||||
"Account Configuration Journal"
|
||||
__name__ = 'account.configuration.journal'
|
||||
currency_exchange_journal = fields.Many2One(
|
||||
'account.journal', "Currency Exchange Journal",
|
||||
domain=[
|
||||
('type', '=', 'write-off'),
|
||||
],
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def default_currency_exchange_journal(cls):
|
||||
pool = Pool()
|
||||
ModelData = pool.get('ir.model.data')
|
||||
try:
|
||||
return ModelData.get_id('account', 'journal_currency_exchange')
|
||||
except KeyError:
|
||||
return None
|
||||
46
modules/account/configuration.xml
Executable file
46
modules/account/configuration.xml
Executable file
@@ -0,0 +1,46 @@
|
||||
<?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="type">form</field>
|
||||
<field name="name">configuration_form</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window"
|
||||
id="act_configuration_form">
|
||||
<field name="name">Configuration</field>
|
||||
<field name="res_model">account.configuration</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_configuration_view1">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view" ref="configuration_view_form"/>
|
||||
<field name="act_window" ref="act_configuration_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_account_configuration"
|
||||
action="act_configuration_form"
|
||||
sequence="0"
|
||||
id="menuitem_account_configuration"
|
||||
icon="tryton-list"/>
|
||||
|
||||
<record model="ir.model.access" id="access_account_configuration">
|
||||
<field name="model">account.configuration</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access"
|
||||
id="access_account_configuration_account_admin">
|
||||
<field name="model">account.configuration</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
121
modules/account/exceptions.py
Executable file
121
modules/account/exceptions.py
Executable file
@@ -0,0 +1,121 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.exceptions import UserError, UserWarning
|
||||
from trytond.model.exceptions import ValidationError
|
||||
|
||||
|
||||
class PeriodNotFoundError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class PeriodValidationError(ValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class ClosePeriodError(PeriodValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class PeriodDatesError(PeriodValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class PeriodSequenceError(PeriodValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class FiscalYearNotFoundError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class FiscalYearValidationError(ValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class FiscalYearDatesError(FiscalYearValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class FiscalYearSequenceError(FiscalYearValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class FiscalYearCloseError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class FiscalYearReOpenError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class JournalMissing(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class AccountMissing(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class AccountValidationError(ValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class SecondCurrencyError(AccountValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class ChartWarning(UserWarning):
|
||||
pass
|
||||
|
||||
|
||||
class PostError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class MoveTemplateExpressionError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class MoveTemplateKeywordValidationError(ValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class CancelWarning(UserWarning):
|
||||
pass
|
||||
|
||||
|
||||
class ReconciliationError(ValidationError):
|
||||
pass
|
||||
|
||||
|
||||
class ReconciliationDeleteWarning(UserWarning):
|
||||
pass
|
||||
|
||||
|
||||
class CancelDelegatedWarning(UserWarning):
|
||||
pass
|
||||
|
||||
|
||||
class GroupLineError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class GroupLineWarning(UserWarning):
|
||||
pass
|
||||
|
||||
|
||||
class RescheduleLineError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class RescheduleLineWarning(UserWarning):
|
||||
pass
|
||||
|
||||
|
||||
class DelegateLineError(UserError):
|
||||
pass
|
||||
|
||||
|
||||
class DelegateLineWarning(UserWarning):
|
||||
pass
|
||||
706
modules/account/fiscalyear.py
Executable file
706
modules/account/fiscalyear.py
Executable file
@@ -0,0 +1,706 @@
|
||||
# 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 dateutil.relativedelta import relativedelta
|
||||
|
||||
from trytond.cache import Cache
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import ModelSQL, ModelView, Workflow, fields
|
||||
from trytond.model.exceptions import AccessError
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Eval, Id
|
||||
from trytond.rpc import RPC
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.wizard import (
|
||||
Button, StateAction, StateTransition, StateView, Wizard)
|
||||
|
||||
from .exceptions import (
|
||||
FiscalYearCloseError, FiscalYearDatesError, FiscalYearNotFoundError,
|
||||
FiscalYearReOpenError, FiscalYearSequenceError)
|
||||
|
||||
STATES = {
|
||||
'readonly': Eval('state') != 'open',
|
||||
}
|
||||
|
||||
|
||||
class FiscalYear(Workflow, ModelSQL, ModelView):
|
||||
'Fiscal Year'
|
||||
__name__ = 'account.fiscalyear'
|
||||
name = fields.Char('Name', size=None, required=True)
|
||||
start_date = fields.Date('Starting Date', required=True, states=STATES,
|
||||
domain=[('start_date', '<=', Eval('end_date', None))])
|
||||
end_date = fields.Date('Ending Date', required=True, states=STATES,
|
||||
domain=[('end_date', '>=', Eval('start_date', None))])
|
||||
periods = fields.One2Many('account.period', 'fiscalyear', 'Periods',
|
||||
states=STATES,
|
||||
domain=[
|
||||
('company', '=', Eval('company')),
|
||||
],
|
||||
order=[('start_date', 'ASC'), ('id', 'ASC')])
|
||||
state = fields.Selection([
|
||||
('open', 'Open'),
|
||||
('closed', 'Closed'),
|
||||
('locked', 'Locked'),
|
||||
], 'State', readonly=True, required=True, sort=False)
|
||||
post_move_sequence = fields.Many2One(
|
||||
'ir.sequence', "Post Move Sequence", required=True,
|
||||
domain=[
|
||||
('sequence_type', '=',
|
||||
Id('account', 'sequence_type_account_move')),
|
||||
('company', '=', Eval('company')),
|
||||
])
|
||||
company = fields.Many2One(
|
||||
'company.company', "Company", required=True)
|
||||
icon = fields.Function(fields.Char("Icon"), 'get_icon')
|
||||
_find_cache = Cache(__name__ + '.find', context=False)
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(FiscalYear, cls).__setup__()
|
||||
cls._order.insert(0, ('start_date', 'DESC'))
|
||||
cls._transitions |= set((
|
||||
('open', 'closed'),
|
||||
('closed', 'locked'),
|
||||
('closed', 'open'),
|
||||
))
|
||||
cls._buttons.update({
|
||||
'create_periods': {
|
||||
'invisible': ((Eval('state') != 'open')
|
||||
| Eval('periods', [0])),
|
||||
'depends': ['state'],
|
||||
},
|
||||
'close': {
|
||||
'invisible': Eval('state') != 'open',
|
||||
'depends': ['state'],
|
||||
},
|
||||
'reopen': {
|
||||
'invisible': Eval('state') != 'closed',
|
||||
'depends': ['state'],
|
||||
},
|
||||
'lock_': {
|
||||
'invisible': Eval('state') != 'closed',
|
||||
'depends': ['state'],
|
||||
},
|
||||
})
|
||||
cls.__rpc__.update({
|
||||
'create_period': RPC(readonly=False, instantiate=0),
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module):
|
||||
cursor = Transaction().connection.cursor()
|
||||
t = cls.__table__()
|
||||
super().__register__(module)
|
||||
# Migration from 6.8: rename state close to closed
|
||||
cursor.execute(
|
||||
*t.update([t.state], ['closed'], where=t.state == 'close'))
|
||||
|
||||
@staticmethod
|
||||
def default_state():
|
||||
return 'open'
|
||||
|
||||
@staticmethod
|
||||
def default_company():
|
||||
return Transaction().context.get('company')
|
||||
|
||||
def get_icon(self, name):
|
||||
return {
|
||||
'open': 'tryton-account-open',
|
||||
'closed': 'tryton-account-close',
|
||||
'locked': 'tryton-account-block',
|
||||
}.get(self.state)
|
||||
|
||||
@classmethod
|
||||
def validate_fields(cls, fiscalyears, field_names):
|
||||
super().validate_fields(fiscalyears, field_names)
|
||||
cls.check_dates(fiscalyears, field_names)
|
||||
cls.check_post_move_sequence(fiscalyears, field_names)
|
||||
cls.check_period_dates(fiscalyears, field_names)
|
||||
|
||||
@classmethod
|
||||
def check_dates(cls, fiscalyears, field_names=None):
|
||||
if field_names and not (field_names & {
|
||||
'start_date', 'end_date', 'state', 'company'}):
|
||||
return
|
||||
transaction = Transaction()
|
||||
connection = transaction.connection
|
||||
cls.lock()
|
||||
cursor = connection.cursor()
|
||||
table = cls.__table__()
|
||||
for year in fiscalyears:
|
||||
cursor.execute(*table.select(table.id,
|
||||
where=(((table.start_date <= year.start_date)
|
||||
& (table.end_date >= year.start_date))
|
||||
| ((table.start_date <= year.end_date)
|
||||
& (table.end_date >= year.end_date))
|
||||
| ((table.start_date >= year.start_date)
|
||||
& (table.end_date <= year.end_date)))
|
||||
& (table.company == year.company.id)
|
||||
& (table.id != year.id)))
|
||||
second_id = cursor.fetchone()
|
||||
if second_id:
|
||||
second = cls(second_id[0])
|
||||
raise FiscalYearDatesError(
|
||||
gettext('account.msg_fiscalyear_overlap',
|
||||
first=year.rec_name,
|
||||
second=second.rec_name))
|
||||
if year.state == 'open':
|
||||
fiscalyears = cls.search([
|
||||
('start_date', '>=', year.end_date),
|
||||
('state', 'in', ['closed', 'locked']),
|
||||
('company', '=', year.company.id),
|
||||
],
|
||||
limit=1,
|
||||
order=[('start_date', 'ASC')])
|
||||
if fiscalyears:
|
||||
fiscalyear, = fiscalyears
|
||||
raise FiscalYearDatesError(
|
||||
gettext('account.msg_open_fiscalyear_earlier',
|
||||
open=year.rec_name,
|
||||
closed=fiscalyear.rec_name))
|
||||
|
||||
@classmethod
|
||||
def check_post_move_sequence(cls, fiscalyears, field_names=None):
|
||||
if field_names and 'post_move_sequence' not in field_names:
|
||||
return
|
||||
for fiscalyear in fiscalyears:
|
||||
sequence = fiscalyear.post_move_sequence
|
||||
years = cls.search([
|
||||
('post_move_sequence', '=', sequence.id),
|
||||
('id', '!=', fiscalyear.id),
|
||||
], limit=1)
|
||||
if years:
|
||||
raise FiscalYearSequenceError(gettext(
|
||||
'account.msg_fiscalyear_different_post_move_sequence',
|
||||
first=fiscalyear.rec_name,
|
||||
second=years[0].rec_name))
|
||||
|
||||
@classmethod
|
||||
def check_period_dates(cls, fiscalyears, field_names=None):
|
||||
pool = Pool()
|
||||
Period = pool.get('account.period')
|
||||
if field_names and not (field_names & {'start_date', 'end_date'}):
|
||||
return
|
||||
periods = [p for f in fiscalyears for p in f.periods]
|
||||
Period.check_fiscalyear_dates(periods, field_names={'fiscalyear'})
|
||||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
fiscalyears = super().create(vlist)
|
||||
cls._find_cache.clear()
|
||||
return fiscalyears
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
actions = iter(args)
|
||||
for fiscalyears, values in zip(actions, actions):
|
||||
if values.get('post_move_sequence'):
|
||||
for fiscalyear in fiscalyears:
|
||||
if (fiscalyear.post_move_sequence
|
||||
and fiscalyear.post_move_sequence.id
|
||||
!= values['post_move_sequence']):
|
||||
if Move.search([
|
||||
('period.fiscalyear', '=', fiscalyear.id),
|
||||
('state', '=', 'posted'),
|
||||
]):
|
||||
raise AccessError(
|
||||
gettext('account.'
|
||||
'msg_change_fiscalyear_post_move_sequence',
|
||||
fiscalyear=fiscalyear.rec_name))
|
||||
super(FiscalYear, cls).write(*args)
|
||||
cls._find_cache.clear()
|
||||
|
||||
@classmethod
|
||||
def delete(cls, fiscalyears):
|
||||
Period = Pool().get('account.period')
|
||||
Period.delete([p for f in fiscalyears for p in f.periods])
|
||||
super(FiscalYear, cls).delete(fiscalyears)
|
||||
cls._find_cache.clear()
|
||||
|
||||
@classmethod
|
||||
def create_period(cls, fiscalyears, interval=1, end_day=31):
|
||||
'''
|
||||
Create periods for the fiscal years with month interval
|
||||
'''
|
||||
Period = Pool().get('account.period')
|
||||
to_create = []
|
||||
for fiscalyear in fiscalyears:
|
||||
period_start_date = fiscalyear.start_date
|
||||
while period_start_date < fiscalyear.end_date:
|
||||
month_offset = 1 if period_start_date.day < end_day else 0
|
||||
period_end_date = (period_start_date
|
||||
+ relativedelta(months=interval - month_offset)
|
||||
+ relativedelta(day=end_day))
|
||||
if period_end_date > fiscalyear.end_date:
|
||||
period_end_date = fiscalyear.end_date
|
||||
name = period_start_date.strftime('%Y-%m')
|
||||
if name != period_end_date.strftime('%Y-%m'):
|
||||
name += ' - ' + period_end_date.strftime('%Y-%m')
|
||||
to_create.append({
|
||||
'name': name,
|
||||
'start_date': period_start_date,
|
||||
'end_date': period_end_date,
|
||||
'fiscalyear': fiscalyear.id,
|
||||
'type': 'standard',
|
||||
})
|
||||
period_start_date = period_end_date + relativedelta(days=1)
|
||||
if to_create:
|
||||
Period.create(to_create)
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action('account.act_create_periods')
|
||||
def create_periods(cls, fiscalyears):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def find(cls, company, date=None, test_state=True):
|
||||
'''
|
||||
Return the fiscal year for the company at the date or the current date
|
||||
or raise FiscalYearNotFoundError.
|
||||
If test_state is true, it searches on non-closed fiscal years
|
||||
'''
|
||||
pool = Pool()
|
||||
Lang = pool.get('ir.lang')
|
||||
Date = pool.get('ir.date')
|
||||
Company = pool.get('company.company')
|
||||
|
||||
company_id = int(company) if company is not None else None
|
||||
if not date:
|
||||
with Transaction().set_context(company=company_id):
|
||||
date = Date.today()
|
||||
key = (company_id, date)
|
||||
fiscalyear = cls._find_cache.get(key, -1)
|
||||
if fiscalyear is not None and fiscalyear < 0:
|
||||
clause = [
|
||||
('start_date', '<=', date),
|
||||
('end_date', '>=', date),
|
||||
('company', '=', company_id),
|
||||
]
|
||||
fiscalyears = cls.search(
|
||||
clause, order=[('start_date', 'DESC')], limit=1)
|
||||
if fiscalyears:
|
||||
fiscalyear, = fiscalyears
|
||||
else:
|
||||
fiscalyear = None
|
||||
cls._find_cache.set(key, int(fiscalyear) if fiscalyear else None)
|
||||
elif fiscalyear is not None:
|
||||
fiscalyear = cls(fiscalyear)
|
||||
found = fiscalyear and (not test_state or fiscalyear.state == 'open')
|
||||
if not found:
|
||||
lang = Lang.get()
|
||||
if company is not None and not isinstance(company, Company):
|
||||
company = Company(company)
|
||||
if not fiscalyear:
|
||||
raise FiscalYearNotFoundError(
|
||||
gettext('account.msg_no_fiscalyear_date',
|
||||
date=lang.strftime(date),
|
||||
company=company.rec_name if company else ''))
|
||||
else:
|
||||
raise FiscalYearNotFoundError(
|
||||
gettext('account.msg_no_open_fiscalyear_date',
|
||||
date=lang.strftime(date),
|
||||
fiscalyear=fiscalyear.rec_name,
|
||||
company=company.rec_name if company else ''))
|
||||
else:
|
||||
return fiscalyear
|
||||
|
||||
def get_deferral(self, account):
|
||||
'Computes deferrals for accounts'
|
||||
pool = Pool()
|
||||
Currency = pool.get('currency.currency')
|
||||
Deferral = pool.get('account.account.deferral')
|
||||
|
||||
if not account.type:
|
||||
return
|
||||
if not account.deferral:
|
||||
if not Currency.is_zero(self.company.currency, account.balance):
|
||||
raise FiscalYearCloseError(
|
||||
gettext('account'
|
||||
'.msg_close_fiscalyear_account_balance_not_zero',
|
||||
account=account.rec_name))
|
||||
else:
|
||||
deferral = Deferral()
|
||||
deferral.account = account
|
||||
deferral.fiscalyear = self
|
||||
deferral.debit = account.debit
|
||||
deferral.credit = account.credit
|
||||
deferral.line_count = account.line_count
|
||||
deferral.amount_second_currency = account.amount_second_currency
|
||||
return deferral
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('closed')
|
||||
def close(cls, fiscalyears):
|
||||
'''
|
||||
Close a fiscal year
|
||||
'''
|
||||
pool = Pool()
|
||||
Period = pool.get('account.period')
|
||||
Account = pool.get('account.account')
|
||||
Deferral = pool.get('account.account.deferral')
|
||||
|
||||
# Prevent create new fiscal year or period
|
||||
cls.lock()
|
||||
Period.lock()
|
||||
|
||||
deferrals = []
|
||||
for fiscalyear in fiscalyears:
|
||||
if cls.search([
|
||||
('end_date', '<=', fiscalyear.start_date),
|
||||
('state', '=', 'open'),
|
||||
('company', '=', fiscalyear.company.id),
|
||||
]):
|
||||
raise FiscalYearCloseError(
|
||||
gettext('account.msg_close_fiscalyear_earlier',
|
||||
fiscalyear=fiscalyear.rec_name))
|
||||
|
||||
periods = Period.search([
|
||||
('fiscalyear', '=', fiscalyear.id),
|
||||
])
|
||||
Period.close(periods)
|
||||
|
||||
with Transaction().set_context(fiscalyear=fiscalyear.id,
|
||||
date=None, cumulate=True, journal=None):
|
||||
accounts = Account.search([
|
||||
('company', '=', fiscalyear.company.id),
|
||||
])
|
||||
for account in accounts:
|
||||
deferral = fiscalyear.get_deferral(account)
|
||||
if deferral:
|
||||
deferrals.append(deferral)
|
||||
Deferral.save(deferrals)
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('open')
|
||||
def reopen(cls, fiscalyears):
|
||||
'''
|
||||
Re-open a fiscal year
|
||||
'''
|
||||
Deferral = Pool().get('account.account.deferral')
|
||||
|
||||
for fiscalyear in fiscalyears:
|
||||
if cls.search([
|
||||
('start_date', '>=', fiscalyear.end_date),
|
||||
('state', '!=', 'open'),
|
||||
('company', '=', fiscalyear.company.id),
|
||||
]):
|
||||
raise FiscalYearReOpenError(
|
||||
gettext('account.msg_reopen_fiscalyear_later',
|
||||
fiscalyear=fiscalyear.rec_name))
|
||||
|
||||
deferrals = Deferral.search([
|
||||
('fiscalyear', '=', fiscalyear.id),
|
||||
])
|
||||
Deferral.delete(deferrals)
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('locked')
|
||||
def lock_(cls, fiscalyears):
|
||||
pool = Pool()
|
||||
Period = pool.get('account.period')
|
||||
periods = Period.search([
|
||||
('fiscalyear', 'in', [f.id for f in fiscalyears]),
|
||||
])
|
||||
Period.lock_(periods)
|
||||
|
||||
|
||||
class BalanceNonDeferralStart(ModelView):
|
||||
'Balance Non-Deferral'
|
||||
__name__ = 'account.fiscalyear.balance_non_deferral.start'
|
||||
fiscalyear = fields.Many2One('account.fiscalyear', 'Fiscal Year',
|
||||
required=True, domain=[('state', '=', 'open')])
|
||||
company = fields.Function(fields.Many2One('company.company', 'Company'),
|
||||
'on_change_with_company')
|
||||
journal = fields.Many2One('account.journal', 'Journal', required=True,
|
||||
domain=[
|
||||
('type', '=', 'situation'),
|
||||
],
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends={'company'})
|
||||
period = fields.Many2One('account.period', 'Period', required=True,
|
||||
domain=[
|
||||
('fiscalyear', '=', Eval('fiscalyear')),
|
||||
('type', '=', 'adjustment'),
|
||||
])
|
||||
credit_account = fields.Many2One('account.account', 'Credit Account',
|
||||
required=True,
|
||||
domain=[
|
||||
('type', '!=', None),
|
||||
('closed', '!=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
('deferral', '=', True),
|
||||
])
|
||||
debit_account = fields.Many2One('account.account', 'Debit Account',
|
||||
required=True,
|
||||
domain=[
|
||||
('type', '!=', None),
|
||||
('closed', '!=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
('deferral', '=', True),
|
||||
])
|
||||
|
||||
@fields.depends('fiscalyear')
|
||||
def on_change_with_company(self, name=None):
|
||||
return self.fiscalyear.company if self.fiscalyear else None
|
||||
|
||||
|
||||
class BalanceNonDeferral(Wizard):
|
||||
'Balance Non-Deferral'
|
||||
__name__ = 'account.fiscalyear.balance_non_deferral'
|
||||
start = StateView('account.fiscalyear.balance_non_deferral.start',
|
||||
'account.fiscalyear_balance_non_deferral_start_view_form', [
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('OK', 'balance', 'tryton-ok', default=True),
|
||||
])
|
||||
balance = StateAction('account.act_move_form')
|
||||
|
||||
def get_move_line(self, account):
|
||||
pool = Pool()
|
||||
Line = pool.get('account.move.line')
|
||||
# Don't use account.balance because we need the non-commulated balance
|
||||
balance = account.debit - account.credit
|
||||
if account.company.currency.is_zero(balance):
|
||||
return
|
||||
line = Line()
|
||||
line.account = account
|
||||
if balance >= 0:
|
||||
line.credit = abs(balance)
|
||||
line.debit = 0
|
||||
else:
|
||||
line.credit = 0
|
||||
line.debit = abs(balance)
|
||||
return line
|
||||
|
||||
def get_counterpart_line(self, amount):
|
||||
pool = Pool()
|
||||
Line = pool.get('account.move.line')
|
||||
if self.start.fiscalyear.company.currency.is_zero(amount):
|
||||
return
|
||||
line = Line()
|
||||
if amount >= 0:
|
||||
line.credit = abs(amount)
|
||||
line.debit = 0
|
||||
line.account = self.start.credit_account
|
||||
else:
|
||||
line.credit = 0
|
||||
line.debit = abs(amount)
|
||||
line.account = self.start.debit_account
|
||||
return line
|
||||
|
||||
def create_move(self):
|
||||
pool = Pool()
|
||||
Account = pool.get('account.account')
|
||||
Move = pool.get('account.move')
|
||||
|
||||
with Transaction().set_context(fiscalyear=self.start.fiscalyear.id,
|
||||
date=None, cumulate=False):
|
||||
accounts = Account.search([
|
||||
('company', '=', self.start.fiscalyear.company.id),
|
||||
('deferral', '=', False),
|
||||
('type', '!=', None),
|
||||
('closed', '!=', True),
|
||||
])
|
||||
lines = []
|
||||
for account in accounts:
|
||||
line = self.get_move_line(account)
|
||||
if line:
|
||||
lines.append(line)
|
||||
if not lines:
|
||||
return
|
||||
amount = sum(l.debit - l.credit for l in lines)
|
||||
counter_part_line = self.get_counterpart_line(amount)
|
||||
if counter_part_line:
|
||||
lines.append(counter_part_line)
|
||||
|
||||
move = Move()
|
||||
move.period = self.start.period
|
||||
move.journal = self.start.journal
|
||||
move.date = self.start.period.start_date
|
||||
move.origin = self.start.fiscalyear
|
||||
move.lines = lines
|
||||
move.save()
|
||||
return move
|
||||
|
||||
def do_balance(self, action):
|
||||
move = self.create_move()
|
||||
if move:
|
||||
action['views'].reverse()
|
||||
return action, {'res_id': move.id if move else None}
|
||||
|
||||
|
||||
class CreatePeriodsStart(ModelView):
|
||||
"Create Periods Start"
|
||||
__name__ = 'account.fiscalyear.create_periods.start'
|
||||
frequency = fields.Selection([
|
||||
('monthly', "Monthly"),
|
||||
('quarterly', "Quarterly"),
|
||||
('other', "Other"),
|
||||
], "Frequency", sort=False, required=True)
|
||||
interval = fields.Integer("Interval", required=True,
|
||||
states={
|
||||
'invisible': Eval('frequency') != 'other',
|
||||
},
|
||||
help="The length of each period, in months.")
|
||||
end_day = fields.Integer("End Day", required=True,
|
||||
help="The day of the month on which periods end.\n"
|
||||
"Months with fewer days will end on the last day.")
|
||||
|
||||
@classmethod
|
||||
def default_frequency(cls):
|
||||
return 'monthly'
|
||||
|
||||
@classmethod
|
||||
def default_end_day(cls):
|
||||
return 31
|
||||
|
||||
@classmethod
|
||||
def frequency_intervals(cls):
|
||||
return {
|
||||
'monthly': 1,
|
||||
'quarterly': 3,
|
||||
'other': None,
|
||||
}
|
||||
|
||||
@fields.depends('frequency', 'interval')
|
||||
def on_change_frequency(self):
|
||||
if self.frequency:
|
||||
self.interval = self.frequency_intervals()[self.frequency]
|
||||
|
||||
|
||||
class CreatePeriods(Wizard):
|
||||
"Create Periods"
|
||||
__name__ = 'account.fiscalyear.create_periods'
|
||||
start = StateView('account.fiscalyear.create_periods.start',
|
||||
'account.fiscalyear_create_periods_start_view_form', [
|
||||
Button("Cancel", 'end', 'tryton-cancel'),
|
||||
Button("Create", 'create_periods', 'tryton-ok', default=True),
|
||||
])
|
||||
create_periods = StateTransition()
|
||||
|
||||
def transition_create_periods(self):
|
||||
self.model.create_period(
|
||||
[self.record], self.start.interval, self.start.end_day)
|
||||
return 'end'
|
||||
|
||||
|
||||
def month_delta(d1, d2):
|
||||
month_offset = 1 if d1.day < d2.day else 0
|
||||
return (d1.year - d2.year) * 12 + d1.month - d2.month - month_offset
|
||||
|
||||
|
||||
class RenewFiscalYearStart(ModelView):
|
||||
"Renew Fiscal Year Start"
|
||||
__name__ = 'account.fiscalyear.renew.start'
|
||||
name = fields.Char("Name", required=True)
|
||||
company = fields.Many2One('company.company', "Company", required=True)
|
||||
previous_fiscalyear = fields.Many2One(
|
||||
'account.fiscalyear', "Previous Fiscalyear", required=True,
|
||||
domain=[
|
||||
('company', '=', Eval('company')),
|
||||
],
|
||||
help="Used as reference for fiscalyear configuration.")
|
||||
start_date = fields.Date("Start Date", required=True)
|
||||
end_date = fields.Date("End Date", required=True)
|
||||
reset_sequences = fields.Boolean("Reset Sequences",
|
||||
help="If checked, new sequences will be created.")
|
||||
|
||||
@classmethod
|
||||
def default_company(cls):
|
||||
return Transaction().context.get('company')
|
||||
|
||||
@classmethod
|
||||
def default_previous_fiscalyear(cls):
|
||||
pool = Pool()
|
||||
FiscalYear = pool.get('account.fiscalyear')
|
||||
fiscalyears = FiscalYear.search([
|
||||
('company', '=', cls.default_company() or -1),
|
||||
],
|
||||
order=[('end_date', 'DESC')], limit=1)
|
||||
if fiscalyears:
|
||||
fiscalyear, = fiscalyears
|
||||
return fiscalyear.id
|
||||
|
||||
@classmethod
|
||||
def default_reset_sequences(cls):
|
||||
return True
|
||||
|
||||
@fields.depends('previous_fiscalyear')
|
||||
def on_change_previous_fiscalyear(self):
|
||||
if self.previous_fiscalyear:
|
||||
fiscalyear = self.previous_fiscalyear
|
||||
months = month_delta(
|
||||
fiscalyear.end_date, fiscalyear.start_date) + 1
|
||||
self.start_date = fiscalyear.start_date + relativedelta(
|
||||
months=months, day=fiscalyear.start_date.day)
|
||||
self.end_date = fiscalyear.end_date + relativedelta(
|
||||
months=months, day=fiscalyear.end_date.day)
|
||||
self.name = fiscalyear.name.replace(
|
||||
str(fiscalyear.end_date.year),
|
||||
str(self.end_date.year)).replace(
|
||||
str(fiscalyear.start_date.year),
|
||||
str(self.start_date.year))
|
||||
|
||||
|
||||
class RenewFiscalYear(Wizard):
|
||||
"Renew Fiscal Year"
|
||||
__name__ = 'account.fiscalyear.renew'
|
||||
start = StateView('account.fiscalyear.renew.start',
|
||||
'account.fiscalyear_renew_start_view_form', [
|
||||
Button("Cancel", 'end', 'tryton-cancel'),
|
||||
Button("Create", 'create_', 'tryton-ok', default=True),
|
||||
])
|
||||
create_ = StateAction('account.act_fiscalyear_form')
|
||||
|
||||
def fiscalyear_defaults(self):
|
||||
pool = Pool()
|
||||
Sequence = pool.get('ir.sequence')
|
||||
defaults = {
|
||||
'name': self.start.name,
|
||||
'start_date': self.start.start_date,
|
||||
'end_date': self.start.end_date,
|
||||
'periods': [],
|
||||
}
|
||||
previous_sequence = self.start.previous_fiscalyear.post_move_sequence
|
||||
sequence, = Sequence.copy([previous_sequence],
|
||||
default={
|
||||
'name': lambda data: data['name'].replace(
|
||||
self.start.previous_fiscalyear.name,
|
||||
self.start.name)
|
||||
})
|
||||
if self.start.reset_sequences:
|
||||
sequence.number_next = 1
|
||||
else:
|
||||
sequence.number_next = previous_sequence.number_next
|
||||
sequence.save()
|
||||
defaults['post_move_sequence'] = sequence.id
|
||||
return defaults
|
||||
|
||||
def create_fiscalyear(self):
|
||||
pool = Pool()
|
||||
FiscalYear = pool.get('account.fiscalyear')
|
||||
fiscalyear, = FiscalYear.copy(
|
||||
[self.start.previous_fiscalyear],
|
||||
default=self.fiscalyear_defaults())
|
||||
periods = [p for p in self.start.previous_fiscalyear.periods
|
||||
if p.type == 'standard']
|
||||
months = month_delta(fiscalyear.end_date, fiscalyear.start_date) + 1
|
||||
interval = months / len(periods)
|
||||
end_day = max(p.end_date.day
|
||||
for p in self.start.previous_fiscalyear.periods
|
||||
if p.type == 'standard')
|
||||
if interval.is_integer():
|
||||
FiscalYear.create_period([fiscalyear], interval, end_day)
|
||||
return fiscalyear
|
||||
|
||||
def do_create_(self, action):
|
||||
fiscalyear = self.create_fiscalyear()
|
||||
fiscalyear.save()
|
||||
action['views'].reverse()
|
||||
return action, {'res_id': fiscalyear.id}
|
||||
168
modules/account/fiscalyear.xml
Executable file
168
modules/account/fiscalyear.xml
Executable file
@@ -0,0 +1,168 @@
|
||||
<?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>
|
||||
<menuitem
|
||||
name="Fiscal Years"
|
||||
parent="menu_account_configuration"
|
||||
sequence="30"
|
||||
id="menu_fiscalyear_configuration"/>
|
||||
<record model="ir.ui.view" id="fiscalyear_view_form">
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fiscalyear_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="fiscalyear_view_tree">
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">fiscalyear_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="fiscalyear_view_list_close">
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">fiscalyear_list_close</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_fiscalyear_form">
|
||||
<field name="name">Fiscal Years</field>
|
||||
<field name="res_model">account.fiscalyear</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_fiscalyear_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="fiscalyear_view_tree"/>
|
||||
<field name="act_window" ref="act_fiscalyear_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_fiscalyear_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="fiscalyear_view_form"/>
|
||||
<field name="act_window" ref="act_fiscalyear_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_fiscalyear_configuration"
|
||||
action="act_fiscalyear_form"
|
||||
sequence="10"
|
||||
id="menu_fiscalyear_form"/>
|
||||
|
||||
<record model="ir.model.access" id="access_fiscalyear">
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_fiscalyear_account_admin">
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="fiscalyear_create_periods_button">
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="name">create_periods</field>
|
||||
<field name="string">Create Periods</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="fiscalyear_reopen_button">
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="name">reopen</field>
|
||||
<field name="string">Re-Open</field>
|
||||
</record>
|
||||
<record model="ir.model.button" id="fiscalyear_close_button">
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="name">close</field>
|
||||
<field name="string">Close</field>
|
||||
</record>
|
||||
<record model="ir.model.button" id="fiscalyear_lock_button">
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="name">lock_</field>
|
||||
<field name="string">Lock</field>
|
||||
<field name="confirm">Are you sure you want to lock the fiscal year?</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_fiscalyear_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_fiscalyear_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_fiscalyear_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_fiscalyear_form_close">
|
||||
<field name="name">Close Fiscal Years</field>
|
||||
<field name="res_model">account.fiscalyear</field>
|
||||
<field name="search_value"
|
||||
eval="[('state', '=', 'open')]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_fiscalyear_form_close_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="fiscalyear_view_list_close"/>
|
||||
<field name="act_window" ref="act_fiscalyear_form_close"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_processing"
|
||||
action="act_fiscalyear_form_close"
|
||||
sequence="50"
|
||||
id="menu_close_fiscalyear"/>
|
||||
|
||||
<record model="ir.ui.view" id="fiscalyear_create_periods_start_view_form">
|
||||
<field name="model">account.fiscalyear.create_periods.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fiscalyear_create_periods_start_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="act_create_periods">
|
||||
<field name="name">Create Periods</field>
|
||||
<field name="wiz_name">account.fiscalyear.create_periods</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view"
|
||||
id="fiscalyear_balance_non_deferral_start_view_form">
|
||||
<field
|
||||
name="model">account.fiscalyear.balance_non_deferral.start</field>
|
||||
<field name="type">form</field>
|
||||
<field
|
||||
name="name">fiscalyear_balance_non_deferral_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_balance_non_deferral">
|
||||
<field name="name">Balance Non-Deferral</field>
|
||||
<field
|
||||
name="wiz_name">account.fiscalyear.balance_non_deferral</field>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_processing"
|
||||
action="act_balance_non_deferral"
|
||||
sequence="40"
|
||||
id="menu_balance_non_deferral"/>
|
||||
|
||||
<record model="ir.ui.view" id="fiscalyear_renew_start_view_form">
|
||||
<field name="model">account.fiscalyear.renew.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">renew_fiscalyear_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_renew_fiscalyear">
|
||||
<field name="name">Renew Fiscal Year</field>
|
||||
<field name="wiz_name">account.fiscalyear.renew</field>
|
||||
</record>
|
||||
<record model="ir.action-res.group"
|
||||
id="act_renew_fiscalyear_group_admin">
|
||||
<field name="action" ref="act_renew_fiscalyear"/>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_fiscalyear_configuration"
|
||||
action="act_renew_fiscalyear"
|
||||
sequence="90"
|
||||
id="menu_renew_fiscalyear"/>
|
||||
</data>
|
||||
</tryton>
|
||||
603
modules/account/general_journal.fodt
Executable file
603
modules/account/general_journal.fodt
Executable file
@@ -0,0 +1,603 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ooo="http://openoffice.org/2004/office" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
|
||||
<office:meta><meta:generator>LibreOffice/6.4.7.2$Linux_X86_64 LibreOffice_project/40$Build-2</meta:generator><meta:creation-date>2012-11-14T22:45:37</meta:creation-date><meta:editing-cycles>1</meta:editing-cycles><meta:editing-duration>P0D</meta:editing-duration><meta:document-statistic meta:table-count="3" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="34" meta:word-count="76" meta:character-count="875" meta:non-whitespace-character-count="832"/><meta:user-defined meta:name="Info 1"/><meta:user-defined meta:name="Info 2"/><meta:user-defined meta:name="Info 3"/><meta:user-defined meta:name="Info 4"/></office:meta>
|
||||
<office:settings>
|
||||
<config:config-item-set config:name="ooo:view-settings">
|
||||
<config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="ViewAreaWidth" config:type="long">25640</config:config-item>
|
||||
<config:config-item config:name="ViewAreaHeight" config:type="long">23021</config:config-item>
|
||||
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
|
||||
<config:config-item-map-indexed config:name="Views">
|
||||
<config:config-item-map-entry>
|
||||
<config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
|
||||
<config:config-item config:name="ViewLeft" config:type="long">13259</config:config-item>
|
||||
<config:config-item config:name="ViewTop" config:type="long">10862</config:config-item>
|
||||
<config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="VisibleTop" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="VisibleRight" config:type="long">25638</config:config-item>
|
||||
<config:config-item config:name="VisibleBottom" config:type="long">23019</config:config-item>
|
||||
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
|
||||
<config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
|
||||
</config:config-item-map-entry>
|
||||
</config:config-item-map-indexed>
|
||||
</config:config-item-set>
|
||||
<config:config-item-set config:name="ooo:configuration-settings">
|
||||
<config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
|
||||
<config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
|
||||
<config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
|
||||
<config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
|
||||
<config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="MathBaselineAlignment" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
|
||||
<config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
|
||||
<config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
|
||||
<config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ApplyUserData" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
|
||||
<config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="Rsid" config:type="int">2105963</config:config-item>
|
||||
<config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrinterName" config:type="string"/>
|
||||
<config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="RsidRoot" config:type="int">991389</config:config-item>
|
||||
<config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="SmallCapsPercentage66" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="TabOverflow" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintFaxName" config:type="string"/>
|
||||
<config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
|
||||
</config:config-item-set>
|
||||
</office:settings>
|
||||
<office:scripts>
|
||||
<office:script script:language="ooo:Basic">
|
||||
<ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
|
||||
</office:script>
|
||||
</office:scripts>
|
||||
<office:font-face-decls>
|
||||
<style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
|
||||
<style:font-face style:name="Liberation Serif1" svg:font-family="'Liberation Serif'" style:font-adornments="Bold" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-adornments="Regular" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Thorndale AMT" svg:font-family="'Thorndale AMT'" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-adornments="Regular" style:font-family-generic="swiss" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Andale Sans UI" svg:font-family="'Andale Sans UI'" style:font-family-generic="system" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
|
||||
</office:font-face-decls>
|
||||
<office:styles>
|
||||
<style:default-style style:family="graphic">
|
||||
<style:graphic-properties svg:stroke-color="#000000" draw:fill-color="#99ccff" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
|
||||
<style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
|
||||
<style:tab-stops/>
|
||||
</style:paragraph-properties>
|
||||
<style:text-properties style:use-window-font-color="true" style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Andale Sans UI" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="Andale Sans UI" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none"/>
|
||||
</style:default-style>
|
||||
<style:default-style style:family="paragraph">
|
||||
<style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="lr-tb"/>
|
||||
<style:text-properties style:use-window-font-color="true" style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Andale Sans UI" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="Andale Sans UI" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/>
|
||||
</style:default-style>
|
||||
<style:default-style style:family="table">
|
||||
<style:table-properties table:border-model="collapsing"/>
|
||||
</style:default-style>
|
||||
<style:default-style style:family="table-row">
|
||||
<style:table-row-properties fo:keep-together="auto"/>
|
||||
</style:default-style>
|
||||
<style:style style:name="Standard" style:family="paragraph" style:class="text">
|
||||
<style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-style-name="Regular" style:font-family-generic="swiss" style:font-pitch="variable" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:font-name="Liberation Serif" fo:font-family="'Liberation Serif'" style:font-style-name="Regular" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="16pt" style:font-name-asian="DejaVu Sans" style:font-family-asian="'DejaVu Sans'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans" style:font-family-complex="'DejaVu Sans'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
|
||||
<style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false"/>
|
||||
<style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-style-name="Regular" style:font-family-generic="swiss" style:font-pitch="variable" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
|
||||
<style:text-properties style:font-size-asian="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-size-complex="12pt" style:font-style-complex="italic"/>
|
||||
</style:style>
|
||||
<style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties style:font-size-asian="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:text-properties fo:font-size="16pt" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table_20_Heading" style:display-name="Table Heading" style:family="paragraph" style:parent-style-name="Table_20_Contents" style:class="extra">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false" text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties style:font-name="Liberation Serif1" fo:font-family="'Liberation Serif'" style:font-style-name="Bold" style:font-family-generic="roman" style:font-pitch="variable" fo:font-weight="bold" style:font-size-asian="10.5pt" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Header_20_and_20_Footer" style:display-name="Header and Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="8.5cm" style:type="center"/>
|
||||
<style:tab-stop style:position="17cm" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Header" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="8.795cm" style:type="center"/>
|
||||
<style:tab-stop style:position="17.59cm" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
<style:text-properties fo:font-size="9pt" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:text-properties fo:font-size="14pt" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="14pt" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-style-complex="italic" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="8.795cm" style:type="center"/>
|
||||
<style:tab-stop style:position="17.59cm" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
<style:text-properties fo:font-size="9pt" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading_20_3" style:display-name="Heading 3" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Text_20_body_20_indent" style:display-name="Text body indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text">
|
||||
<style:paragraph-properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" loext:contextual-spacing="false" fo:text-indent="0cm" style:auto-text-indent="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="Header_20_right" style:display-name="Header right" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="8.795cm" style:type="center"/>
|
||||
<style:tab-stop style:position="17.59cm" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Header_20_left" style:display-name="Header left" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="8.795cm" style:type="center"/>
|
||||
<style:tab-stop style:position="17.59cm" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Placeholder" style:family="text">
|
||||
<style:text-properties fo:font-variant="small-caps" fo:color="#008080" style:text-underline-style="dotted" style:text-underline-width="auto" style:text-underline-color="font-color"/>
|
||||
</style:style>
|
||||
<style:style style:name="Bullet_20_Symbols" style:display-name="Bullet Symbols" style:family="text">
|
||||
<style:text-properties style:font-name="StarSymbol" fo:font-family="StarSymbol" fo:font-size="9pt" style:font-name-asian="StarSymbol" style:font-family-asian="StarSymbol" style:font-size-asian="9pt" style:font-name-complex="StarSymbol" style:font-family-complex="StarSymbol" style:font-size-complex="9pt"/>
|
||||
</style:style>
|
||||
<text:outline-style style:name="Outline">
|
||||
<text:outline-level-style text:level="1" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="2" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="3" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="4" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="5" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="6" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="7" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="8" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="9" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="10" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
</text:outline-style>
|
||||
<text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
|
||||
<text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
|
||||
<text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
|
||||
</office:styles>
|
||||
<office:automatic-styles>
|
||||
<style:style style:name="Table3" style:family="table">
|
||||
<style:table-properties style:width="17.59cm" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="5.863cm" style:rel-column-width="21845*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="transparent" fo:padding="0.097cm" fo:border="none">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table2" style:family="table">
|
||||
<style:table-properties style:width="17.59cm" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="8.795cm" style:rel-column-width="32768*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.B" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="8.795cm" style:rel-column-width="32767*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3" style:family="table">
|
||||
<style:table-properties style:width="17.59cm" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="5.863cm" style:rel-column-width="21845*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="transparent" fo:padding="0.097cm" fo:border="none">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table2" style:family="table">
|
||||
<style:table-properties style:width="17.59cm" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="8.795cm" style:rel-column-width="32768*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.B" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="8.795cm" style:rel-column-width="32767*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table4" style:family="table">
|
||||
<style:table-properties style:width="17.59cm" fo:margin-top="0.4cm" fo:margin-bottom="0cm" table:align="margins" fo:background-color="transparent" style:may-break-between-rows="false">
|
||||
<style:background-image/>
|
||||
</style:table-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="3.517cm" style:rel-column-width="13107*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.1" style:family="table-row">
|
||||
<style:table-row-properties fo:background-color="transparent">
|
||||
<style:background-image/>
|
||||
</style:table-row-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.A1" style:family="table-cell">
|
||||
<style:table-cell-properties style:vertical-align="" fo:background-color="#cccccc" fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="none" style:writing-mode="lr-tb">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.B1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#cccccc" fo:padding="0.049cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="none" style:writing-mode="page">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.C1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#cccccc" fo:padding="0.049cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="none" style:writing-mode="page">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.D1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#cccccc" fo:padding="0.049cm" fo:border-left="none" fo:border-right="0.05pt solid #000000" fo:border-top="0.05pt solid #000000" fo:border-bottom="none" style:writing-mode="page">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.A2" style:family="table-cell">
|
||||
<style:table-cell-properties style:vertical-align="middle" fo:background-color="#cccccc" fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="lr-tb">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.A3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#dddddd" fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="page">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.D3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#dddddd" fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="page">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.E3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#dddddd" fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="page">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.A4" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="page"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.A5" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="page"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.D5" style:family="table-cell">
|
||||
<style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="page"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.E5" style:family="table-cell">
|
||||
<style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="page"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table4.A6" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.049cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="page"/>
|
||||
</style:style>
|
||||
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Header">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Header">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P3" style:family="paragraph" style:parent-style-name="Footer">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:text-properties fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties officeooo:paragraph-rsid="001e5148"/>
|
||||
</style:style>
|
||||
<style:style style:name="P6" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P7" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="12pt" officeooo:paragraph-rsid="001960ab" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P8" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="12pt" officeooo:paragraph-rsid="001b5738" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P9" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P10" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="12pt" officeooo:paragraph-rsid="001b5738" style:font-size-asian="12pt" style:font-size-complex="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P11" style:family="paragraph" style:parent-style-name="Heading_20_1">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
<style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color"/>
|
||||
</style:style>
|
||||
<style:style style:name="P12" style:family="paragraph" style:parent-style-name="Heading_20_1">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="T1" style:family="text">
|
||||
<style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color"/>
|
||||
</style:style>
|
||||
<style:style style:name="Sect1" style:family="section">
|
||||
<style:section-properties style:editable="false">
|
||||
<style:columns fo:column-count="1" fo:column-gap="0cm"/>
|
||||
</style:section-properties>
|
||||
</style:style>
|
||||
<style:page-layout style:name="pm1">
|
||||
<style:page-layout-properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="44" style:layout-grid-base-height="0.55cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="true" style:layout-grid-display="true" style:footnote-max-height="0cm">
|
||||
<style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="none" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
|
||||
</style:page-layout-properties>
|
||||
<style:header-style>
|
||||
<style:header-footer-properties fo:min-height="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0.499cm"/>
|
||||
</style:header-style>
|
||||
<style:footer-style>
|
||||
<style:header-footer-properties fo:min-height="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.499cm"/>
|
||||
</style:footer-style>
|
||||
</style:page-layout>
|
||||
</office:automatic-styles>
|
||||
<office:master-styles>
|
||||
<style:master-page style:name="Standard" style:page-layout-name="pm1">
|
||||
<style:header>
|
||||
<table:table table:name="Table3" table:style-name="Table3">
|
||||
<table:table-column table:style-name="Table3.A" table:number-columns-repeated="3"/>
|
||||
<table:table-row table:style-name="TableLine94266545094448">
|
||||
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
||||
<text:p text:style-name="Header">Company: <text:placeholder text:placeholder-type="text"><company.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
||||
<text:p text:style-name="P1">General Journal</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
|
||||
<text:p text:style-name="P2">Print Date: <text:placeholder text:placeholder-type="text"><format_date(datetime.date.today(), user.language)></text:placeholder><text:s/>at <text:placeholder text:placeholder-type="text"><datetime.datetime.now().strftime('%H:%M:%S')></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
</style:header>
|
||||
<style:footer>
|
||||
<table:table table:name="Table2" table:style-name="Table2">
|
||||
<table:table-column table:style-name="Table2.A"/>
|
||||
<table:table-column table:style-name="Table2.B"/>
|
||||
<table:table-row table:style-name="TableLine94266545229984">
|
||||
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
||||
<text:p text:style-name="Footer">User: <text:placeholder text:placeholder-type="text"><user.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
||||
<text:p text:style-name="P3"><text:page-number text:select-page="current">1</text:page-number>/<text:page-count>1</text:page-count></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
</style:footer>
|
||||
</style:master-page>
|
||||
</office:master-styles>
|
||||
<office:body>
|
||||
<office:text>
|
||||
<office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
|
||||
<text:sequence-decls>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
|
||||
</text:sequence-decls>
|
||||
<text:p text:style-name="P11">General Journal</text:p>
|
||||
<text:section text:style-name="Sect1" text:name="Section1">
|
||||
<text:p text:style-name="Text_20_body"><text:placeholder text:placeholder-type="text"><for each="move in records"></text:placeholder></text:p>
|
||||
<table:table table:name="Table4" table:style-name="Table4">
|
||||
<table:table-column table:style-name="Table4.A" table:number-columns-repeated="5"/>
|
||||
<table:table-header-rows>
|
||||
<table:table-row table:style-name="Table4.1">
|
||||
<table:table-cell table:style-name="Table4.A1" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Heading">Journal Entry:<text:line-break/><text:placeholder text:placeholder-type="text"><move.number></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table4.C1" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Heading">Date:<text:line-break/> <text:placeholder text:placeholder-type="text"><format_date(move.date, user.language)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table4.C1" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text"><if test="move.origin"></text:placeholder></text:p>
|
||||
<text:p text:style-name="Table_20_Heading">Origin:<text:line-break/><text:placeholder text:placeholder-type="text"><getattr(move.origin, 'rec_name', '')></text:placeholder></text:p>
|
||||
<text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text"></if></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table4.D1" table:number-columns-spanned="2" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text"><if test="move.state == 'posted'"></text:placeholder></text:p>
|
||||
<text:p text:style-name="Table_20_Heading">Posted <text:placeholder text:placeholder-type="text"><move.post_number></text:placeholder><text:line-break/><text:placeholder text:placeholder-type="text"><format_date(move.post_date, user.language)></text:placeholder></text:p>
|
||||
<text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text"></if></text:placeholder></text:p>
|
||||
<text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text"><if test="move.state == 'draft'"></text:placeholder></text:p>
|
||||
<text:p text:style-name="Table_20_Heading">Draft</text:p>
|
||||
<text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text"></if></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Table4.1">
|
||||
<table:table-cell table:style-name="Table4.A2" table:number-columns-spanned="5" office:value-type="string">
|
||||
<text:p text:style-name="P5"><text:placeholder text:placeholder-type="text"><move.description></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Table4.1">
|
||||
<table:table-cell table:style-name="Table4.A3" table:number-columns-spanned="3" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Heading">Account</text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:table-cell table:style-name="Table4.D3" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Heading">Debit</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table4.E3" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Heading">Credit</text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table-header-rows>
|
||||
<table:table-row table:style-name="TableLine94266545333792">
|
||||
<table:table-cell table:style-name="Table4.A4" table:number-columns-spanned="5" office:value-type="string">
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"><for each="line in move.lines"></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="TableLine94266545335008">
|
||||
<table:table-cell table:style-name="Table4.A5" table:number-columns-spanned="3" office:value-type="string">
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"><line.account.rec_name></text:placeholder></text:p>
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"><if test="line.party"></text:placeholder></text:p>
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"><'[%s] %s' % (line.party.code, line.party.name)></text:placeholder></text:p>
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"></if></text:placeholder></text:p>
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"><if test="line.description"></text:placeholder></text:p>
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"><line.description></text:placeholder></text:p>
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"></if></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:table-cell table:style-name="Table4.D5" office:value-type="string">
|
||||
<text:p text:style-name="P10"><text:placeholder text:placeholder-type="text"><format_currency(line.debit, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table4.E5" office:value-type="string">
|
||||
<text:p text:style-name="P10"><text:placeholder text:placeholder-type="text"><format_currency(line.credit, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="TableLine94266545337328">
|
||||
<table:table-cell table:style-name="Table4.A6" table:number-columns-spanned="5" office:value-type="string">
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"></for></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
<text:p text:style-name="Text_20_body"><text:placeholder text:placeholder-type="text"></for></text:placeholder></text:p>
|
||||
</text:section>
|
||||
</office:text>
|
||||
</office:body>
|
||||
</office:document>
|
||||
979
modules/account/general_ledger.fodt
Executable file
979
modules/account/general_ledger.fodt
Executable file
@@ -0,0 +1,979 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rpt="http://openoffice.org/2005/report" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
|
||||
<office:meta><meta:generator>LibreOffice/7.3.5.2$Linux_X86_64 LibreOffice_project/30$Build-2</meta:generator><meta:creation-date>2008-06-07T15:26:41</meta:creation-date><dc:date>2008-08-27T17:03:36</dc:date><meta:editing-cycles>1</meta:editing-cycles><meta:editing-duration>PT0S</meta:editing-duration><meta:document-statistic meta:table-count="4" meta:image-count="0" meta:object-count="0" meta:page-count="3" meta:paragraph-count="51" meta:word-count="145" meta:character-count="1808" meta:non-whitespace-character-count="1714"/><meta:user-defined meta:name="Info 1"/><meta:user-defined meta:name="Info 2"/><meta:user-defined meta:name="Info 3"/><meta:user-defined meta:name="Info 4"/></office:meta>
|
||||
<office:settings>
|
||||
<config:config-item-set config:name="ooo:view-settings">
|
||||
<config:config-item config:name="ViewAreaTop" config:type="long">24130</config:config-item>
|
||||
<config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="ViewAreaWidth" config:type="long">48129</config:config-item>
|
||||
<config:config-item config:name="ViewAreaHeight" config:type="long">22994</config:config-item>
|
||||
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
|
||||
<config:config-item-map-indexed config:name="Views">
|
||||
<config:config-item-map-entry>
|
||||
<config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
|
||||
<config:config-item config:name="ViewLeft" config:type="long">19627</config:config-item>
|
||||
<config:config-item config:name="ViewTop" config:type="long">29242</config:config-item>
|
||||
<config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
|
||||
<config:config-item config:name="VisibleTop" config:type="long">24130</config:config-item>
|
||||
<config:config-item config:name="VisibleRight" config:type="long">48128</config:config-item>
|
||||
<config:config-item config:name="VisibleBottom" config:type="long">47122</config:config-item>
|
||||
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
|
||||
<config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="KeepRatio" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
|
||||
</config:config-item-map-entry>
|
||||
</config:config-item-map-indexed>
|
||||
</config:config-item-set>
|
||||
<config:config-item-set config:name="ooo:configuration-settings">
|
||||
<config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ProtectFields" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ProtectBookmarks" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="GutterAtTop" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ContinuousEndnotes" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="HeaderSpacingBelowLastPara" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
|
||||
<config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
|
||||
<config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="FrameAutowidthWithMorePara" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
|
||||
<config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
|
||||
<config:config-item config:name="ApplyUserData" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintFaxName" config:type="string"/>
|
||||
<config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
|
||||
<config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
|
||||
<config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="Rsid" config:type="int">4069242</config:config-item>
|
||||
<config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
|
||||
<config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="FootnoteInColumnToPageEnd" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
|
||||
<config:config-item config:name="PrinterName" config:type="string"/>
|
||||
<config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddParaLineSpacingToTableCells" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="TabOverSpacing" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
|
||||
<config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="RsidRoot" config:type="int">2070049</config:config-item>
|
||||
<config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="MsWordCompMinLineHeightByFly" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="MathBaselineAlignment" config:type="boolean">false</config:config-item>
|
||||
<config:config-item config:name="SmallCapsPercentage66" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
|
||||
<config:config-item config:name="TabOverflow" config:type="boolean">false</config:config-item>
|
||||
</config:config-item-set>
|
||||
</office:settings>
|
||||
<office:scripts>
|
||||
<office:script script:language="ooo:Basic">
|
||||
<ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
|
||||
</office:script>
|
||||
</office:scripts>
|
||||
<office:font-face-decls>
|
||||
<style:font-face style:name="Andale Sans UI" svg:font-family="'Andale Sans UI'" style:font-family-generic="system" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-adornments="Regular" style:font-family-generic="swiss" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Liberation Serif" svg:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Liberation Serif1" svg:font-family="'Liberation Serif'" style:font-adornments="Bold" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="Liberation Serif2" svg:font-family="'Liberation Serif'" style:font-adornments="Regular" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
<style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
|
||||
<style:font-face style:name="Thorndale AMT" svg:font-family="'Thorndale AMT'" style:font-family-generic="roman" style:font-pitch="variable"/>
|
||||
</office:font-face-decls>
|
||||
<office:styles>
|
||||
<style:default-style style:family="graphic">
|
||||
<style:graphic-properties svg:stroke-color="#000000" draw:fill-color="#99ccff" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
|
||||
<style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
|
||||
<style:tab-stops/>
|
||||
</style:paragraph-properties>
|
||||
<style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Andale Sans UI" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="Andale Sans UI" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none"/>
|
||||
</style:default-style>
|
||||
<style:default-style style:family="paragraph">
|
||||
<style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="lr-tb"/>
|
||||
<style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Andale Sans UI" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="Andale Sans UI" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/>
|
||||
</style:default-style>
|
||||
<style:default-style style:family="table">
|
||||
<style:table-properties table:border-model="collapsing"/>
|
||||
</style:default-style>
|
||||
<style:default-style style:family="table-row">
|
||||
<style:table-row-properties fo:keep-together="auto"/>
|
||||
</style:default-style>
|
||||
<style:style style:name="Standard" style:family="paragraph" style:class="text">
|
||||
<style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-style-name="Regular" style:font-family-generic="swiss" style:font-pitch="variable" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:font-name="Liberation Serif2" fo:font-family="'Liberation Serif'" style:font-style-name="Regular" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="16pt" style:font-name-asian="DejaVu Sans" style:font-family-asian="'DejaVu Sans'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans" style:font-family-complex="'DejaVu Sans'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
|
||||
<style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false"/>
|
||||
<style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-style-name="Regular" style:font-family-generic="swiss" style:font-pitch="variable" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
|
||||
<style:text-properties style:font-size-asian="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-size-complex="12pt" style:font-style-complex="italic"/>
|
||||
</style:style>
|
||||
<style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties style:font-size-asian="12pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties fo:font-size="11pt" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:text-properties fo:font-size="16pt" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table_20_Heading" style:display-name="Table Heading" style:family="paragraph" style:parent-style-name="Table_20_Contents" style:class="extra">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false" text:number-lines="false" text:line-number="0"/>
|
||||
<style:text-properties style:font-name="Liberation Serif1" fo:font-family="'Liberation Serif'" style:font-style-name="Bold" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="12pt" fo:font-weight="bold" style:font-size-asian="10.5pt" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Horizontal_20_Line" style:display-name="Horizontal Line" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="html">
|
||||
<style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.499cm" style:contextual-spacing="false" style:border-line-width-bottom="0.002cm 0.035cm 0.002cm" fo:padding="0cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="1.11pt double #808080" text:number-lines="false" text:line-number="0" style:join-border="false"/>
|
||||
<style:text-properties fo:font-size="6pt" style:font-size-asian="6pt" style:font-size-complex="6pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Header_20_and_20_Footer" style:display-name="Header and Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="8.5cm" style:type="center"/>
|
||||
<style:tab-stop style:position="17cm" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Header" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="8.795cm" style:type="center"/>
|
||||
<style:tab-stop style:position="17.59cm" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
<style:text-properties fo:font-size="9pt" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:text-properties fo:font-size="14pt" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="14pt" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-style-complex="italic" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
|
||||
<style:paragraph-properties text:number-lines="false" text:line-number="0">
|
||||
<style:tab-stops>
|
||||
<style:tab-stop style:position="8.795cm" style:type="center"/>
|
||||
<style:tab-stop style:position="17.59cm" style:type="right"/>
|
||||
</style:tab-stops>
|
||||
</style:paragraph-properties>
|
||||
<style:text-properties fo:font-size="9pt" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Heading_20_3" style:display-name="Heading 3" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="text">
|
||||
<style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Text_20_body_20_indent" style:display-name="Text body indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text">
|
||||
<style:paragraph-properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:contextual-spacing="false" fo:text-indent="0cm" style:auto-text-indent="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="Quotations" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
|
||||
<style:paragraph-properties fo:margin-left="1cm" fo:margin-right="1cm" fo:margin-top="0cm" fo:margin-bottom="0.499cm" style:contextual-spacing="false" fo:text-indent="0cm" style:auto-text-indent="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="Title" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="28pt" fo:font-weight="bold" style:font-size-asian="28pt" style:font-weight-asian="bold" style:font-size-complex="28pt" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="Subtitle" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
|
||||
<style:paragraph-properties fo:margin-top="0.106cm" fo:margin-bottom="0.212cm" style:contextual-spacing="false" fo:text-align="center" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="18pt" style:font-size-asian="18pt" style:font-size-complex="18pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="Placeholder" style:family="text">
|
||||
<style:text-properties fo:font-variant="small-caps" fo:color="#008080" loext:opacity="100%" style:text-underline-style="dotted" style:text-underline-width="auto" style:text-underline-color="font-color"/>
|
||||
</style:style>
|
||||
<style:style style:name="Bullet_20_Symbols" style:display-name="Bullet Symbols" style:family="text">
|
||||
<style:text-properties style:font-name="StarSymbol" fo:font-family="StarSymbol" fo:font-size="9pt" style:font-name-asian="StarSymbol" style:font-family-asian="StarSymbol" style:font-size-asian="9pt" style:font-name-complex="StarSymbol" style:font-family-complex="StarSymbol" style:font-size-complex="9pt"/>
|
||||
</style:style>
|
||||
<text:outline-style style:name="Outline">
|
||||
<text:outline-level-style text:level="1" loext:num-list-format="%1%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="2" loext:num-list-format="%2%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="3" loext:num-list-format="%3%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="4" loext:num-list-format="%4%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="5" loext:num-list-format="%5%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="6" loext:num-list-format="%6%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="7" loext:num-list-format="%7%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="8" loext:num-list-format="%8%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="9" loext:num-list-format="%9%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
<text:outline-level-style text:level="10" loext:num-list-format="%10%" style:num-format="">
|
||||
<style:list-level-properties text:min-label-distance="0.381cm"/>
|
||||
</text:outline-level-style>
|
||||
</text:outline-style>
|
||||
<text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
|
||||
<text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
|
||||
<text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
|
||||
<style:style style:name="Default_20_Style.1" style:display-name="Default Style.1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.2" style:display-name="Default Style.2" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.3" style:display-name="Default Style.3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.4" style:display-name="Default Style.4" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-right="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.5" style:display-name="Default Style.5" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.6" style:display-name="Default Style.6" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.7" style:display-name="Default Style.7" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.8" style:display-name="Default Style.8" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.9" style:display-name="Default Style.9" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.10" style:display-name="Default Style.10" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-right="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.11" style:display-name="Default Style.11" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.12" style:display-name="Default Style.12" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-right="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.13" style:display-name="Default Style.13" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.14" style:display-name="Default Style.14" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-right="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.15" style:display-name="Default Style.15" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Default_20_Style.16" style:display-name="Default Style.16" style:family="table-cell">
|
||||
<style:table-cell-properties fo:border-left="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
|
||||
</style:style>
|
||||
<table:table-template table:name="Default Style" table:first-row-end-column="row" table:first-row-start-column="row" table:last-row-end-column="row" table:last-row-start-column="row">
|
||||
<table:first-row table:style-name="Default_20_Style.1"/>
|
||||
<table:last-row table:style-name="Default_20_Style.2"/>
|
||||
<table:first-column table:style-name="Default_20_Style.3"/>
|
||||
<table:last-column table:style-name="Default_20_Style.4"/>
|
||||
<table:body table:style-name="Default_20_Style.9"/>
|
||||
<table:even-rows table:style-name="Default_20_Style.5"/>
|
||||
<table:odd-rows table:style-name="Default_20_Style.6"/>
|
||||
<table:even-columns table:style-name="Default_20_Style.7"/>
|
||||
<table:odd-columns table:style-name="Default_20_Style.8"/>
|
||||
<table:background table:style-name="Default_20_Style.10"/>
|
||||
<loext:first-row-even-column table:style-name="Default_20_Style.15"/>
|
||||
<loext:last-row-even-column table:style-name="Default_20_Style.16"/>
|
||||
<loext:first-row-end-column table:style-name="Default_20_Style.12"/>
|
||||
<loext:first-row-start-column table:style-name="Default_20_Style.11"/>
|
||||
<loext:last-row-end-column table:style-name="Default_20_Style.14"/>
|
||||
<loext:last-row-start-column table:style-name="Default_20_Style.13"/>
|
||||
</table:table-template>
|
||||
</office:styles>
|
||||
<office:automatic-styles>
|
||||
<style:style style:name="Table2" style:family="table">
|
||||
<style:table-properties style:width="23.94cm" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="7.98cm" style:rel-column-width="21845*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="transparent" fo:padding="0.097cm" fo:border="none">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table1" style:family="table">
|
||||
<style:table-properties style:width="23.94cm" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="11.97cm" style:rel-column-width="32768*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.B" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="11.97cm" style:rel-column-width="32767*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2" style:family="table">
|
||||
<style:table-properties style:width="23.94cm" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="7.98cm" style:rel-column-width="21845*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table2.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="transparent" fo:padding="0.097cm" fo:border="none">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table1" style:family="table">
|
||||
<style:table-properties style:width="23.94cm" table:align="margins"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="11.97cm" style:rel-column-width="32768*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.B" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="11.97cm" style:rel-column-width="32767*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table1.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines" style:family="table">
|
||||
<style:table-properties style:width="23.94cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:break-before="auto" fo:break-after="auto" table:align="margins" fo:background-color="transparent" fo:keep-with-next="always" style:may-break-between-rows="true" style:writing-mode="lr-tb">
|
||||
<style:background-image/>
|
||||
</style:table-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="2.499cm" style:rel-column-width="1417*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.B" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="3.358cm" style:rel-column-width="1904*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.C" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="3.36cm" style:rel-column-width="1905*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.F" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="4.002cm" style:rel-column-width="2269*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.1" style:family="table-row">
|
||||
<style:table-row-properties fo:keep-together="always"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.A1" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#b3b3b3" fo:padding="0.097cm" fo:border="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.A2" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#b3b3b3" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.A3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.G3" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.A4" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#cccccc" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.C4" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#cccccc" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.G4" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#cccccc" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.A5" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.A6" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.B6" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.C6" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.D6" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.E6" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.F6" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.G6" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.A7" style:family="table-cell">
|
||||
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
|
||||
</style:style>
|
||||
<style:style style:name="Lines.A8" style:family="table-cell">
|
||||
<style:table-cell-properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table3" style:family="table" style:master-page-name="">
|
||||
<style:table-properties style:width="23.94cm" style:page-number="auto" fo:break-before="auto" fo:break-after="auto" table:align="margins" fo:background-color="transparent" style:shadow="none" fo:keep-with-next="always" style:may-break-between-rows="true" style:writing-mode="lr-tb">
|
||||
<style:background-image/>
|
||||
</style:table-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="5.851cm" style:rel-column-width="3317*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.B" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="3.362cm" style:rel-column-width="1906*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.E" style:family="table-column">
|
||||
<style:table-column-properties style:column-width="4.001cm" style:rel-column-width="2268*"/>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.1" style:family="table-row">
|
||||
<style:table-row-properties fo:background-color="transparent" fo:keep-together="always">
|
||||
<style:background-image/>
|
||||
</style:table-row-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A1" style:family="table-cell">
|
||||
<style:table-cell-properties style:vertical-align="" fo:background-color="#b3b3b3" fo:padding="0.097cm" fo:border="0.05pt solid #000000" style:writing-mode="lr-tb">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A2" style:family="table-cell">
|
||||
<style:table-cell-properties style:vertical-align="" fo:background-color="#b3b3b3" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="lr-tb">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.A3" style:family="table-cell">
|
||||
<style:table-cell-properties style:vertical-align="" fo:background-color="#cccccc" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="lr-tb">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="Table3.F3" style:family="table-cell">
|
||||
<style:table-cell-properties style:vertical-align="" fo:background-color="#cccccc" fo:padding="0.097cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000" style:writing-mode="lr-tb">
|
||||
<style:background-image/>
|
||||
</style:table-cell-properties>
|
||||
</style:style>
|
||||
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Header">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Header">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P3" style:family="paragraph" style:parent-style-name="Footer">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
</style:style>
|
||||
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:paragraph-properties fo:keep-together="always" style:shadow="none" fo:keep-with-next="always"/>
|
||||
</style:style>
|
||||
<style:style style:name="P6" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:paragraph-properties fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
</style:style>
|
||||
<style:style style:name="P7" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" style:shadow="none" fo:keep-with-next="always"/>
|
||||
<style:text-properties fo:font-size="12pt" fo:font-weight="bold" style:font-size-asian="12pt" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="P8" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-size="12pt" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="10.5pt" style:font-weight-asian="normal" style:font-size-complex="12pt" style:font-weight-complex="normal"/>
|
||||
</style:style>
|
||||
<style:style style:name="P9" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P10" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P11" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties officeooo:paragraph-rsid="002aca3c" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P12" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
</style:style>
|
||||
<style:style style:name="P13" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties fo:font-size="11pt" style:font-size-asian="11pt" style:font-size-complex="11pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P14" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties fo:font-size="11pt" style:font-size-asian="11pt" style:font-size-complex="11pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P15" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties fo:font-size="11pt" style:text-underline-style="none" style:font-size-asian="11pt" style:font-size-complex="11pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P16" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:text-underline-style="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="P17" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:text-underline-style="none" officeooo:paragraph-rsid="00251ac8"/>
|
||||
</style:style>
|
||||
<style:style style:name="P18" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties style:text-underline-style="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="P19" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:text-underline-style="none" officeooo:paragraph-rsid="00251ac8" fo:background-color="transparent"/>
|
||||
</style:style>
|
||||
<style:style style:name="P20" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:text-properties style:text-underline-style="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="P21" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:break-before="page"/>
|
||||
<style:text-properties style:text-underline-style="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="P22" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:text-properties officeooo:paragraph-rsid="0037c304"/>
|
||||
</style:style>
|
||||
<style:style style:name="P23" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:text-properties officeooo:paragraph-rsid="003a045d"/>
|
||||
</style:style>
|
||||
<style:style style:name="P24" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:text-properties officeooo:rsid="003955ec" officeooo:paragraph-rsid="003a045d"/>
|
||||
</style:style>
|
||||
<style:style style:name="P25" style:family="paragraph" style:parent-style-name="Heading_20_1">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
<style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color"/>
|
||||
</style:style>
|
||||
<style:style style:name="P26" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
<style:text-properties style:font-name="Liberation Serif1" fo:font-weight="bold" style:font-size-asian="10.5pt" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="P27" style:family="paragraph" style:parent-style-name="Header">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
<style:text-properties style:text-underline-style="none" officeooo:paragraph-rsid="003e177a"/>
|
||||
</style:style>
|
||||
<style:style style:name="P28" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
</style:style>
|
||||
<style:style style:name="P29" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:color="#000000" loext:opacity="100%" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="12pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-overline-style="none" style:text-overline-color="font-color"/>
|
||||
</style:style>
|
||||
<style:style style:name="P30" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties officeooo:paragraph-rsid="002aca3c" style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P31" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:font-size-asian="10.5pt"/>
|
||||
</style:style>
|
||||
<style:style style:name="P32" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P33" style:family="paragraph" style:parent-style-name="Table_20_Contents">
|
||||
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
|
||||
</style:style>
|
||||
<style:style style:name="P34" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="P35" style:family="paragraph" style:parent-style-name="Table_20_Heading">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
|
||||
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
||||
</style:style>
|
||||
<style:style style:name="P36" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:break-before="page" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:text-underline-style="none" officeooo:paragraph-rsid="003e177a"/>
|
||||
</style:style>
|
||||
<style:style style:name="P37" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties style:text-underline-style="none" officeooo:paragraph-rsid="003e177a"/>
|
||||
</style:style>
|
||||
<style:style style:name="P38" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||
<style:paragraph-properties fo:text-align="start" style:justify-single-word="false" fo:keep-together="always" fo:keep-with-next="always"/>
|
||||
<style:text-properties fo:font-size="12pt" style:text-underline-style="none" fo:font-weight="normal" officeooo:paragraph-rsid="003e177a" fo:background-color="transparent" style:font-size-asian="10.5pt" style:font-weight-asian="normal" style:font-size-complex="12pt" style:font-weight-complex="normal"/>
|
||||
</style:style>
|
||||
<style:style style:name="T1" style:family="text">
|
||||
<style:text-properties officeooo:rsid="0037c304"/>
|
||||
</style:style>
|
||||
<style:style style:name="T2" style:family="text">
|
||||
<style:text-properties officeooo:rsid="0039b016"/>
|
||||
</style:style>
|
||||
<style:style style:name="T3" style:family="text">
|
||||
<style:text-properties officeooo:rsid="003e177a"/>
|
||||
</style:style>
|
||||
<style:style style:name="T4" style:family="text">
|
||||
<style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color"/>
|
||||
</style:style>
|
||||
<style:style style:name="T5" style:family="text">
|
||||
<style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" officeooo:rsid="003e177a"/>
|
||||
</style:style>
|
||||
<style:style style:name="T6" style:family="text">
|
||||
<style:text-properties style:text-underline-style="none"/>
|
||||
</style:style>
|
||||
<style:style style:name="T7" style:family="text">
|
||||
<style:text-properties style:text-underline-style="none" officeooo:rsid="003e177a"/>
|
||||
</style:style>
|
||||
<style:page-layout style:name="pm1">
|
||||
<style:page-layout-properties fo:page-width="27.94cm" fo:page-height="21.59cm" style:num-format="1" style:print-orientation="landscape" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="44" style:layout-grid-base-height="0.55cm" style:layout-grid-ruby-height="0cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="true" style:layout-grid-display="true" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
|
||||
<style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="none" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
|
||||
</style:page-layout-properties>
|
||||
<style:header-style>
|
||||
<style:header-footer-properties fo:min-height="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0.499cm"/>
|
||||
</style:header-style>
|
||||
<style:footer-style>
|
||||
<style:header-footer-properties fo:min-height="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.499cm"/>
|
||||
</style:footer-style>
|
||||
</style:page-layout>
|
||||
<style:style style:name="dp1" style:family="drawing-page">
|
||||
<style:drawing-page-properties draw:background-size="full"/>
|
||||
</style:style>
|
||||
</office:automatic-styles>
|
||||
<office:master-styles>
|
||||
<style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1">
|
||||
<style:header>
|
||||
<table:table table:name="Table2" table:style-name="Table2">
|
||||
<table:table-column table:style-name="Table2.A" table:number-columns-repeated="3"/>
|
||||
<table:table-row table:style-name="TableLine94368948362784">
|
||||
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
||||
<text:p text:style-name="Header">Company: <text:placeholder text:placeholder-type="text"><company.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
||||
<text:p text:style-name="P27">General Ledger<text:placeholder text:placeholder-type="text"><if test="not context.get('posted')"></text:placeholder> <text:span text:style-name="T3">Draft</text:span><text:span text:style-name="T3"><text:placeholder text:placeholder-type="text"></if></text:placeholder></text:span></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
|
||||
<text:p text:style-name="P2">Print Date: <text:placeholder text:placeholder-type="text"><format_date(datetime.date.today(), user.language)></text:placeholder><text:s/>at <text:placeholder text:placeholder-type="text"><datetime.datetime.now().strftime('%H:%M:%S')></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
</style:header>
|
||||
<style:footer>
|
||||
<table:table table:name="Table1" table:style-name="Table1">
|
||||
<table:table-column table:style-name="Table1.A"/>
|
||||
<table:table-column table:style-name="Table1.B"/>
|
||||
<table:table-row table:style-name="TableLine94368949141280">
|
||||
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
||||
<text:p text:style-name="Footer">User: <text:placeholder text:placeholder-type="text"><user.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
|
||||
<text:p text:style-name="P3"><text:page-number text:select-page="current">1</text:page-number>/<text:page-count>3</text:page-count></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
</style:footer>
|
||||
</style:master-page>
|
||||
</office:master-styles>
|
||||
<office:body>
|
||||
<office:text text:use-soft-page-breaks="true">
|
||||
<office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
|
||||
<text:sequence-decls>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
|
||||
<text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
|
||||
</text:sequence-decls>
|
||||
<text:p text:style-name="P25">General Ledger<text:placeholder text:placeholder-type="text"><if test="not context.get('posted')"></text:placeholder> <text:span text:style-name="T3">Draft</text:span><text:span text:style-name="T3"><text:placeholder text:placeholder-type="text"></if></text:placeholder></text:span></text:p>
|
||||
<text:p text:style-name="P23"><text:span text:style-name="T1">Fiscal Year: </text:span><text:placeholder text:placeholder-type="text"><fiscalyear.rec_name></text:placeholder></text:p>
|
||||
<text:p text:style-name="P23"><text:placeholder text:placeholder-type="text"><if test="start_period or end_period"></text:placeholder></text:p>
|
||||
<text:p text:style-name="P23"><text:span text:style-name="T1">From Period</text:span>: <text:placeholder text:placeholder-type="text"><start_period.name if start_period else ''></text:placeholder><text:s/><text:span text:style-name="T2">To</text:span> <text:placeholder text:placeholder-type="text"><end_period.name if end_period else ''></text:placeholder></text:p>
|
||||
<text:p text:style-name="P23"><text:placeholder text:placeholder-type="text"></if></text:placeholder></text:p>
|
||||
<text:p text:style-name="P23"><text:placeholder text:placeholder-type="text"><if test="from_date or to_date"></text:placeholder></text:p>
|
||||
<text:p text:style-name="P24">From Date: <text:placeholder text:placeholder-type="text"><format_date(from_date, user.language) if from_date else ''></text:placeholder><text:s/>To <text:placeholder text:placeholder-type="text"><format_date(to_date, user.language) if to_date else ''></text:placeholder></text:p>
|
||||
<text:p text:style-name="P23"><text:placeholder text:placeholder-type="text"></if></text:placeholder></text:p>
|
||||
<text:p text:style-name="P20"><text:placeholder text:placeholder-type="text"><for each="account in accounts"></text:placeholder></text:p>
|
||||
<text:p text:style-name="P36"><text:placeholder text:placeholder-type="text"><choose test=""></text:placeholder></text:p>
|
||||
<text:p text:style-name="P37"><text:placeholder text:placeholder-type="text"><when test="account.general_ledger_balance"></text:placeholder></text:p>
|
||||
<table:table table:name="Table3" table:style-name="Table3" table:template-name="Default Style">
|
||||
<table:table-column table:style-name="Table3.A"/>
|
||||
<table:table-column table:style-name="Table3.B" table:number-columns-repeated="3"/>
|
||||
<table:table-column table:style-name="Table3.E" table:number-columns-repeated="2"/>
|
||||
<table:table-header-rows>
|
||||
<table:table-row table:style-name="Table3.1">
|
||||
<table:table-cell table:style-name="Table3.A1" table:number-columns-spanned="6" office:value-type="string">
|
||||
<text:p text:style-name="P34">Name</text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Table3.1">
|
||||
<table:table-cell table:style-name="Table3.A2" table:number-columns-spanned="6" office:value-type="string">
|
||||
<text:p text:style-name="P35"><text:placeholder text:placeholder-type="text"><account.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
</table:table-header-rows>
|
||||
<table:table-row table:style-name="Table3.1">
|
||||
<table:table-cell table:style-name="Table3.A3" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Heading">Balance</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table3.A3" office:value-type="string">
|
||||
<text:p text:style-name="P11"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table3.A3" office:value-type="string">
|
||||
<text:p text:style-name="P11"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table3.A3" office:value-type="string">
|
||||
<text:p text:style-name="P11"><text:placeholder text:placeholder-type="text"><format_currency(account.end_balance, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table3.A3" office:value-type="string">
|
||||
<text:p text:style-name="P10"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Table3.F3" office:value-type="string">
|
||||
<text:p text:style-name="P10"/>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
<text:p text:style-name="P37"><text:placeholder text:placeholder-type="text"></when></text:placeholder></text:p>
|
||||
<text:p text:style-name="P37"><text:placeholder text:placeholder-type="text"><otherwise test=""></text:placeholder></text:p>
|
||||
<table:table table:name="Lines" table:style-name="Lines">
|
||||
<table:table-column table:style-name="Lines.A"/>
|
||||
<table:table-column table:style-name="Lines.B"/>
|
||||
<table:table-column table:style-name="Lines.C"/>
|
||||
<table:table-column table:style-name="Lines.B" table:number-columns-repeated="2"/>
|
||||
<table:table-column table:style-name="Lines.F" table:number-columns-repeated="2"/>
|
||||
<table:table-header-rows>
|
||||
<table:table-row table:style-name="Lines.1">
|
||||
<table:table-cell table:style-name="Lines.A1" table:number-columns-spanned="7" office:value-type="string">
|
||||
<text:p text:style-name="P5">Name</text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Lines.1">
|
||||
<table:table-cell table:style-name="Lines.A2" table:number-columns-spanned="7" office:value-type="string">
|
||||
<text:p text:style-name="P7"><text:placeholder text:placeholder-type="text"><account.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Lines.1">
|
||||
<table:table-cell table:style-name="Lines.A3" office:value-type="string">
|
||||
<text:p text:style-name="P6">Date</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.A3" office:value-type="string">
|
||||
<text:p text:style-name="P6">Move</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.A3" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Heading">Debit</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.A3" office:value-type="string">
|
||||
<text:p text:style-name="P6">Credit</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.A3" office:value-type="string">
|
||||
<text:p text:style-name="P6">Balance</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.A3" office:value-type="string">
|
||||
<text:p text:style-name="P6">Description</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.G3" office:value-type="string">
|
||||
<text:p text:style-name="P6">Origin</text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table-header-rows>
|
||||
<table:table-row table:style-name="Lines.1">
|
||||
<table:table-cell table:style-name="Lines.A4" table:number-columns-spanned="2" office:value-type="string">
|
||||
<text:p text:style-name="P6">Balance</text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:table-cell table:style-name="Lines.C4" office:value-type="string">
|
||||
<text:p text:style-name="P4"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.C4" office:value-type="string">
|
||||
<text:p text:style-name="P4"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.C4" office:value-type="string">
|
||||
<text:p text:style-name="P4"><text:placeholder text:placeholder-type="text"><format_currency(account.start_balance, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.C4" office:value-type="string">
|
||||
<text:p text:style-name="P12"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.G4" office:value-type="string">
|
||||
<text:p text:style-name="P12"/>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Lines.1">
|
||||
<table:table-cell table:style-name="Lines.A5" table:number-columns-spanned="7" office:value-type="string">
|
||||
<text:p text:style-name="P16"><text:placeholder text:placeholder-type="text"><for each="line in account.lines"></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Lines.1">
|
||||
<table:table-cell table:style-name="Lines.A6" office:value-type="string">
|
||||
<text:p text:style-name="P33"><text:placeholder text:placeholder-type="text"><format_date(line.date, user.language)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.B6" office:value-type="string">
|
||||
<text:p text:style-name="P32"><text:placeholder text:placeholder-type="text"><line.move.rec_name></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.C6" office:value-type="string">
|
||||
<text:p text:style-name="P32"><text:placeholder text:placeholder-type="text"><format_currency(line.debit, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.D6" office:value-type="string">
|
||||
<text:p text:style-name="P32"><text:placeholder text:placeholder-type="text"><format_currency(line.credit, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.E6" office:value-type="string">
|
||||
<text:p text:style-name="P32"><text:placeholder text:placeholder-type="text"><format_currency(line.balance, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.F6" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Contents"><text:placeholder text:placeholder-type="text"><line.description or ''></text:placeholder><text:line-break/><text:placeholder text:placeholder-type="text"><line.move_description_used or ''></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.G6" office:value-type="string">
|
||||
<text:p text:style-name="Table_20_Contents"><text:placeholder text:placeholder-type="text"><getattr(line.origin, 'rec_name', '')></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
<text:soft-page-break/>
|
||||
<table:table-row table:style-name="Lines.1">
|
||||
<table:table-cell table:style-name="Lines.A7" table:number-columns-spanned="7" office:value-type="string">
|
||||
<text:p text:style-name="P18"><text:placeholder text:placeholder-type="text"></for></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
<table:covered-table-cell/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Lines.1">
|
||||
<table:table-cell table:style-name="Lines.A8" table:number-columns-spanned="2" office:value-type="string">
|
||||
<text:p text:style-name="P6">Total</text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:table-cell table:style-name="Lines.A8" office:value-type="string">
|
||||
<text:p text:style-name="P4"><text:placeholder text:placeholder-type="text"><format_currency(account.end_debit - account.start_debit, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.A8" office:value-type="string">
|
||||
<text:p text:style-name="P4"><text:placeholder text:placeholder-type="text"><format_currency(account.end_credit - account.start_credit, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.A8" office:value-type="string">
|
||||
<text:p text:style-name="P4"><text:placeholder text:placeholder-type="text"><format_currency((account.end_debit - account.end_credit) - (account.start_debit - account.start_credit), user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.A8" office:value-type="string">
|
||||
<text:p text:style-name="P12"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.G3" office:value-type="string">
|
||||
<text:p text:style-name="P12"/>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="Lines.1">
|
||||
<table:table-cell table:style-name="Lines.C4" table:number-columns-spanned="2" office:value-type="string">
|
||||
<text:p text:style-name="P6">Balance</text:p>
|
||||
</table:table-cell>
|
||||
<table:covered-table-cell/>
|
||||
<table:table-cell table:style-name="Lines.C4" office:value-type="string">
|
||||
<text:p text:style-name="P4"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.C4" office:value-type="string">
|
||||
<text:p text:style-name="P4"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.C4" office:value-type="string">
|
||||
<text:p text:style-name="P4"><text:placeholder text:placeholder-type="text"><format_currency(account.end_balance, user.language, company.currency)></text:placeholder></text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.C4" office:value-type="string">
|
||||
<text:p text:style-name="P12"/>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:style-name="Lines.G4" office:value-type="string">
|
||||
<text:p text:style-name="P12"/>
|
||||
</table:table-cell>
|
||||
</table:table-row>
|
||||
</table:table>
|
||||
<text:p text:style-name="P38"><text:placeholder text:placeholder-type="text"></otherwise></text:placeholder></text:p>
|
||||
<text:p text:style-name="P38"><text:placeholder text:placeholder-type="text"></choose></text:placeholder></text:p>
|
||||
<text:p text:style-name="P8"><text:placeholder text:placeholder-type="text"></for></text:placeholder></text:p>
|
||||
</office:text>
|
||||
</office:body>
|
||||
</office:document>
|
||||
1
modules/account/icons/tryton-account-block.svg
Executable file
1
modules/account/icons/tryton-account-block.svg
Executable file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"/></svg>
|
||||
|
After Width: | Height: | Size: 371 B |
1
modules/account/icons/tryton-account-close.svg
Executable file
1
modules/account/icons/tryton-account-close.svg
Executable file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"/></svg>
|
||||
|
After Width: | Height: | Size: 363 B |
1
modules/account/icons/tryton-account-open.svg
Executable file
1
modules/account/icons/tryton-account-open.svg
Executable file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/></svg>
|
||||
|
After Width: | Height: | Size: 369 B |
4
modules/account/icons/tryton-account.svg
Executable file
4
modules/account/icons/tryton-account.svg
Executable file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M4 10v7h3v-7H4zm6 0v7h3v-7h-3zM2 22h19v-3H2v3zm14-12v7h3v-7h-3zm-4.5-9L2 6v2h19V6l-9.5-5z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 239 B |
375
modules/account/journal.py
Executable file
375
modules/account/journal.py
Executable file
@@ -0,0 +1,375 @@
|
||||
# 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 sql.aggregate import Sum
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import (
|
||||
DeactivableMixin, MatchMixin, ModelSQL, ModelView, Unique, Workflow,
|
||||
fields, sequence_ordered)
|
||||
from trytond.model.exceptions import AccessError
|
||||
from trytond.modules.company.model import (
|
||||
CompanyMultiValueMixin, CompanyValueMixin)
|
||||
from trytond.modules.currency.fields import Monetary
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Bool, Eval, Id
|
||||
from trytond.tools import (
|
||||
grouped_slice, is_full_text, lstrip_wildcard, reduce_ids)
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
STATES = {
|
||||
'readonly': Eval('state') == 'closed',
|
||||
}
|
||||
|
||||
|
||||
class Journal(
|
||||
DeactivableMixin, MatchMixin,
|
||||
sequence_ordered('matching_sequence', "Matching Sequence"),
|
||||
ModelSQL, ModelView, CompanyMultiValueMixin):
|
||||
'Journal'
|
||||
__name__ = 'account.journal'
|
||||
name = fields.Char('Name', size=None, required=True, translate=True)
|
||||
code = fields.Char('Code', size=None)
|
||||
type = fields.Selection([
|
||||
('general', "General"),
|
||||
('revenue', "Revenue"),
|
||||
('expense', "Expense"),
|
||||
('cash', "Cash"),
|
||||
('situation', "Situation"),
|
||||
('write-off', "Write-Off"),
|
||||
], 'Type', required=True)
|
||||
sequence = fields.MultiValue(fields.Many2One(
|
||||
'ir.sequence', "Sequence",
|
||||
domain=[
|
||||
('sequence_type', '=',
|
||||
Id('account', 'sequence_type_account_journal')),
|
||||
('company', 'in', [
|
||||
Eval('context', {}).get('company', -1), None]),
|
||||
],
|
||||
states={
|
||||
'required': Bool(Eval('context', {}).get('company', -1)),
|
||||
}))
|
||||
sequences = fields.One2Many(
|
||||
'account.journal.sequence', 'journal', "Sequences")
|
||||
debit = fields.Function(Monetary(
|
||||
"Debit", currency='currency', digits='currency'),
|
||||
'get_debit_credit_balance')
|
||||
credit = fields.Function(Monetary(
|
||||
"Credit", currency='currency', digits='currency'),
|
||||
'get_debit_credit_balance')
|
||||
balance = fields.Function(Monetary(
|
||||
"Balance", currency='currency', digits='currency'),
|
||||
'get_debit_credit_balance')
|
||||
|
||||
currency = fields.Function(fields.Many2One(
|
||||
'currency.currency', "Currency"), 'get_currency')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Journal, cls).__setup__()
|
||||
cls._order.insert(0, ('name', 'ASC'))
|
||||
|
||||
@classmethod
|
||||
def default_sequence(cls, **pattern):
|
||||
return cls.multivalue_model('sequence').default_sequence()
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
_, operator, operand, *extra = clause
|
||||
if operator.startswith('!') or operator.startswith('not '):
|
||||
bool_op = 'AND'
|
||||
else:
|
||||
bool_op = 'OR'
|
||||
code_value = operand
|
||||
if operator.endswith('like') and is_full_text(operand):
|
||||
code_value = lstrip_wildcard(operand)
|
||||
return [bool_op,
|
||||
('code', operator, code_value, *extra),
|
||||
(cls._rec_name, operator, operand, *extra),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def get_currency(cls, journals, name):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
company_id = Transaction().context.get('company')
|
||||
if company_id:
|
||||
company = Company(company_id)
|
||||
currency_id = company.currency.id
|
||||
else:
|
||||
currency_id = None
|
||||
return dict.fromkeys([j.id for j in journals], currency_id)
|
||||
|
||||
@classmethod
|
||||
def get_debit_credit_balance(cls, journals, names):
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Move = pool.get('account.move')
|
||||
Account = pool.get('account.account')
|
||||
AccountType = pool.get('account.account.type')
|
||||
Company = pool.get('company.company')
|
||||
context = Transaction().context
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
result = {}
|
||||
ids = [j.id for j in journals]
|
||||
for name in ['debit', 'credit', 'balance']:
|
||||
result[name] = dict.fromkeys(ids, 0)
|
||||
|
||||
company_id = Transaction().context.get('company')
|
||||
if not company_id:
|
||||
return result
|
||||
company = Company(company_id)
|
||||
|
||||
line = MoveLine.__table__()
|
||||
move = Move.__table__()
|
||||
account = Account.__table__()
|
||||
account_type = AccountType.__table__()
|
||||
where = ((move.date >= context.get('start_date'))
|
||||
& (move.date <= context.get('end_date'))
|
||||
& ~account_type.receivable
|
||||
& ~account_type.payable
|
||||
& (move.company == company.id))
|
||||
for sub_journals in grouped_slice(journals):
|
||||
sub_journals = list(sub_journals)
|
||||
red_sql = reduce_ids(move.journal, [j.id for j in sub_journals])
|
||||
query = line.join(move, 'LEFT', condition=line.move == move.id
|
||||
).join(account, 'LEFT', condition=line.account == account.id
|
||||
).join(account_type, 'LEFT',
|
||||
condition=account.type == account_type.id
|
||||
).select(move.journal, Sum(line.debit), Sum(line.credit),
|
||||
where=where & red_sql,
|
||||
group_by=move.journal)
|
||||
cursor.execute(*query)
|
||||
for journal_id, debit, credit in cursor:
|
||||
# SQLite uses float for SUM
|
||||
if not isinstance(debit, Decimal):
|
||||
debit = Decimal(str(debit))
|
||||
if not isinstance(credit, Decimal):
|
||||
credit = Decimal(str(credit))
|
||||
result['debit'][journal_id] = company.currency.round(debit)
|
||||
result['credit'][journal_id] = company.currency.round(credit)
|
||||
result['balance'][journal_id] = company.currency.round(
|
||||
debit - credit)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def find(cls, pattern):
|
||||
for journal in cls.search(
|
||||
[],
|
||||
order=[
|
||||
('matching_sequence', 'ASC'),
|
||||
('id', 'ASC'),
|
||||
]):
|
||||
if journal.match(pattern):
|
||||
return journal
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
actions = iter(args)
|
||||
for journals, values in zip(actions, actions):
|
||||
if 'type' in values:
|
||||
for sub_journals in grouped_slice(journals):
|
||||
moves = Move.search([
|
||||
('journal', 'in', [j.id for j in sub_journals]),
|
||||
('state', '=', 'posted')
|
||||
], order=[], limit=1)
|
||||
if moves:
|
||||
move, = moves
|
||||
raise AccessError(gettext(
|
||||
'account.msg_journal_account_moves',
|
||||
journal=move.journal.rec_name))
|
||||
super().write(*args)
|
||||
|
||||
|
||||
class JournalSequence(ModelSQL, CompanyValueMixin):
|
||||
"Journal Sequence"
|
||||
__name__ = 'account.journal.sequence'
|
||||
journal = fields.Many2One(
|
||||
'account.journal', "Journal", ondelete='CASCADE',
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends={'company'})
|
||||
sequence = fields.Many2One(
|
||||
'ir.sequence', "Sequence",
|
||||
domain=[
|
||||
('sequence_type', '=',
|
||||
Id('account', 'sequence_type_account_journal')),
|
||||
('company', 'in', [Eval('company', -1), None]),
|
||||
],
|
||||
depends={'company'})
|
||||
|
||||
@classmethod
|
||||
def default_sequence(cls):
|
||||
pool = Pool()
|
||||
ModelData = pool.get('ir.model.data')
|
||||
try:
|
||||
return ModelData.get_id('account', 'sequence_account_journal')
|
||||
except KeyError:
|
||||
return None
|
||||
|
||||
|
||||
class JournalCashContext(ModelView):
|
||||
'Journal Cash Context'
|
||||
__name__ = 'account.journal.open_cash.context'
|
||||
start_date = fields.Date('Start Date', required=True)
|
||||
end_date = fields.Date('End Date', required=True)
|
||||
|
||||
@classmethod
|
||||
def default_start_date(cls):
|
||||
return Pool().get('ir.date').today()
|
||||
default_end_date = default_start_date
|
||||
|
||||
|
||||
class JournalPeriod(Workflow, ModelSQL, ModelView):
|
||||
'Journal - Period'
|
||||
__name__ = 'account.journal.period'
|
||||
journal = fields.Many2One(
|
||||
'account.journal', 'Journal', required=True, ondelete='CASCADE',
|
||||
states=STATES,
|
||||
context={
|
||||
'company': Eval('company', None),
|
||||
},
|
||||
depends=['company'])
|
||||
period = fields.Many2One('account.period', 'Period', required=True,
|
||||
ondelete='CASCADE', states=STATES)
|
||||
company = fields.Function(fields.Many2One(
|
||||
'company.company', "Company"),
|
||||
'on_change_with_company', searcher='search_company')
|
||||
icon = fields.Function(fields.Char('Icon'), 'get_icon')
|
||||
state = fields.Selection([
|
||||
('open', 'Open'),
|
||||
('closed', 'Closed'),
|
||||
], 'State', readonly=True, required=True, sort=False)
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(JournalPeriod, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('journal_period_uniq', Unique(t, t.journal, t.period),
|
||||
'account.msg_journal_period_unique'),
|
||||
]
|
||||
cls._transitions |= set((
|
||||
('open', 'closed'),
|
||||
('closed', 'open'),
|
||||
))
|
||||
cls._buttons.update({
|
||||
'close': {
|
||||
'invisible': Eval('state') != 'open',
|
||||
'depends': ['state'],
|
||||
},
|
||||
'reopen': {
|
||||
'invisible': Eval('state') != 'closed',
|
||||
'depends': ['state'],
|
||||
},
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module):
|
||||
cursor = Transaction().connection.cursor()
|
||||
t = cls.__table__()
|
||||
super().__register__(module)
|
||||
# Migration from 6.8: rename state close to closed
|
||||
cursor.execute(
|
||||
*t.update([t.state], ['closed'], where=t.state == 'close'))
|
||||
|
||||
@fields.depends('period')
|
||||
def on_change_with_company(self, name=None):
|
||||
return self.period.company if self.period else None
|
||||
|
||||
@classmethod
|
||||
def search_company(cls, name, clause):
|
||||
return [('period.' + clause[0], *clause[1:])]
|
||||
|
||||
@staticmethod
|
||||
def default_state():
|
||||
return 'open'
|
||||
|
||||
def get_rec_name(self, name):
|
||||
return '%s - %s' % (self.journal.rec_name, self.period.rec_name)
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
if clause[1].startswith('!') or clause[1].startswith('not '):
|
||||
bool_op = 'AND'
|
||||
else:
|
||||
bool_op = 'OR'
|
||||
return [bool_op,
|
||||
[('journal.rec_name',) + tuple(clause[1:])],
|
||||
[('period.rec_name',) + tuple(clause[1:])],
|
||||
]
|
||||
|
||||
def get_icon(self, name):
|
||||
return {
|
||||
'open': 'tryton-account-open',
|
||||
'closed': 'tryton-account-close',
|
||||
}.get(self.state)
|
||||
|
||||
@classmethod
|
||||
def _check(cls, periods):
|
||||
Move = Pool().get('account.move')
|
||||
for period in periods:
|
||||
moves = Move.search([
|
||||
('journal', '=', period.journal.id),
|
||||
('period', '=', period.period.id),
|
||||
], limit=1)
|
||||
if moves:
|
||||
raise AccessError(
|
||||
gettext('account.msg_modify_delete_journal_period_moves',
|
||||
journal_period=period.rec_name))
|
||||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
Period = Pool().get('account.period')
|
||||
for vals in vlist:
|
||||
if vals.get('period'):
|
||||
period = Period(vals['period'])
|
||||
if period.state != 'open':
|
||||
raise AccessError(
|
||||
gettext('account'
|
||||
'.msg_create_journal_period_closed_period',
|
||||
period=period.rec_name))
|
||||
return super(JournalPeriod, cls).create(vlist)
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
actions = iter(args)
|
||||
for journal_periods, values in zip(actions, actions):
|
||||
if (values != {'state': 'closed'}
|
||||
and values != {'state': 'open'}):
|
||||
cls._check(journal_periods)
|
||||
if values.get('state') == 'open':
|
||||
for journal_period in journal_periods:
|
||||
if journal_period.period.state != 'open':
|
||||
raise AccessError(
|
||||
gettext('account'
|
||||
'.msg_open_journal_period_closed_period',
|
||||
journal_period=journal_period.rec_name,
|
||||
period=journal_period.period.rec_name))
|
||||
super(JournalPeriod, cls).write(*args)
|
||||
|
||||
@classmethod
|
||||
def delete(cls, periods):
|
||||
cls._check(periods)
|
||||
super(JournalPeriod, cls).delete(periods)
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('closed')
|
||||
def close(cls, periods):
|
||||
'''
|
||||
Close journal - period
|
||||
'''
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('open')
|
||||
def reopen(cls, periods):
|
||||
"Open journal - period"
|
||||
pass
|
||||
271
modules/account/journal.xml
Executable file
271
modules/account/journal.xml
Executable file
@@ -0,0 +1,271 @@
|
||||
<?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>
|
||||
<menuitem
|
||||
name="Journals"
|
||||
parent="menu_account_configuration"
|
||||
sequence="50"
|
||||
id="menu_journal_configuration"/>
|
||||
|
||||
<record model="ir.ui.view" id="journal_view_form">
|
||||
<field name="model">account.journal</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">journal_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="journal_view_tree">
|
||||
<field name="model">account.journal</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">journal_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="journal_view_list_matching_sequence">
|
||||
<field name="model">account.journal</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">journal_list_matching_sequence</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="journal_view_list_cash">
|
||||
<field name="model">account.journal</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">journal_list_cash</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_journal_form">
|
||||
<field name="name">Journals</field>
|
||||
<field name="res_model">account.journal</field>
|
||||
<field name="order" eval="[('matching_sequence', 'ASC'), ('id', 'ASC')]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_journal_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="journal_view_list_matching_sequence"/>
|
||||
<field name="act_window" ref="act_journal_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_journal_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="journal_view_form"/>
|
||||
<field name="act_window" ref="act_journal_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_journal_configuration"
|
||||
action="act_journal_form"
|
||||
sequence="10"
|
||||
id="menu_journal_form"/>
|
||||
|
||||
<record model="ir.ui.view" id="journal_cash_context_view_form">
|
||||
<field name="model">account.journal.open_cash.context</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">journal_open_cash_context</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_journal_open_cash">
|
||||
<field name="name">Journals Cash</field>
|
||||
<field name="res_model">account.journal</field>
|
||||
<field name="domain" eval="[('type', '=', 'cash')]" pyson="1"/>
|
||||
<field name="context_model">account.journal.open_cash.context</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_journal_open_cash_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="journal_view_list_cash"/>
|
||||
<field name="act_window" ref="act_journal_open_cash"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_reporting"
|
||||
action="act_journal_open_cash"
|
||||
sequence="50"
|
||||
id="menu_journal_open_cash"/>
|
||||
|
||||
<record model="ir.model.access" id="access_journal">
|
||||
<field name="model">account.journal</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_journal_account_admin">
|
||||
<field name="model">account.journal</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.sequence.type" id="sequence_type_account_journal">
|
||||
<field name="name">Account Journal</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_account_journal_group_admin">
|
||||
<field name="sequence_type" ref="sequence_type_account_journal"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_account_journal_group_account_admin">
|
||||
<field name="sequence_type" ref="sequence_type_account_journal"/>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.sequence" id="sequence_account_journal">
|
||||
<field name="name">Default Account Journal</field>
|
||||
<field name="sequence_type" ref="sequence_type_account_journal"/>
|
||||
<field name="company" eval="None"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="journal_period_view_form">
|
||||
<field name="model">account.journal.period</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">journal_period_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="journal_period_view_tree">
|
||||
<field name="model">account.journal.period</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">journal_period_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="journal_period_view_list_close">
|
||||
<field name="model">account.journal.period</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">journal_period_list_close</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_journal_period_tree">
|
||||
<field name="name">Journals - Periods</field>
|
||||
<field name="res_model">account.journal.period</field>
|
||||
<field name="domain"
|
||||
eval="[('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_journal_period_tree_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="journal_period_view_tree"/>
|
||||
<field name="act_window" ref="act_journal_period_tree"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_reporting"
|
||||
action="act_journal_period_tree"
|
||||
sequence="50"
|
||||
id="menu_journal_period_tree"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_journal_period_tree2">
|
||||
<field name="name">Journals - Periods</field>
|
||||
<field name="res_model">account.journal.period</field>
|
||||
<field name="domain"
|
||||
eval="[('period.fiscalyear.company.id', '=', Eval('context', {}).get('company', -1))]"
|
||||
pyson="1"/>
|
||||
<field name="search_value"
|
||||
eval="[('state', '=', 'open')]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_journal_period_tree2_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="journal_period_view_tree"/>
|
||||
<field name="act_window" ref="act_journal_period_tree2"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_entries"
|
||||
action="act_journal_period_tree2"
|
||||
sequence="20"
|
||||
id="menu_journal_period_tree2"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_journal_period_form_close">
|
||||
<field name="name">Close Journals - Periods</field>
|
||||
<field name="res_model">account.journal.period</field>
|
||||
<field name="search_value"
|
||||
eval="[('state', '=', 'open')]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_journal_period_form_close_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="journal_period_view_list_close"/>
|
||||
<field name="act_window" ref="act_journal_period_form_close"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_processing"
|
||||
action="act_journal_period_form_close"
|
||||
sequence="20"
|
||||
id="menu_close_journal_period"/>
|
||||
|
||||
<record model="ir.model.access" id="access_journal_period">
|
||||
<field name="model">account.journal.period</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_journal_period_account">
|
||||
<field name="model">account.journal.period</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_journal_period_account_admin">
|
||||
<field name="model">account.journal.period</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_journal_period_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.journal.period</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_journal_period_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_journal_period_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="journal_period_close_button">
|
||||
<field name="model">account.journal.period</field>
|
||||
<field name="name">close</field>
|
||||
<field name="string">Close</field>
|
||||
</record>
|
||||
<record model="ir.model.button" id="journal_period_reopen_button">
|
||||
<field name="model">account.journal.period</field>
|
||||
<field name="name">reopen</field>
|
||||
<field name="string">Reopen</field>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<data noupdate="1">
|
||||
<record model="account.journal" id="journal_revenue">
|
||||
<field name="name">Revenue</field>
|
||||
<field name="code">REV</field>
|
||||
<field name="type">revenue</field>
|
||||
</record>
|
||||
<record model="account.journal" id="journal_expense">
|
||||
<field name="name">Expense</field>
|
||||
<field name="code">EXP</field>
|
||||
<field name="type">expense</field>
|
||||
</record>
|
||||
<record model="account.journal" id="journal_cash">
|
||||
<field name="name">Cash</field>
|
||||
<field name="code">CASH</field>
|
||||
<field name="type">cash</field>
|
||||
</record>
|
||||
<record model="account.journal" id="journal_stock">
|
||||
<field name="name">Stock</field>
|
||||
<field name="code">STO</field>
|
||||
<field name="type">general</field>
|
||||
</record>
|
||||
<record model="account.journal" id="journal_miscellaneous">
|
||||
<field name="name">Miscellaneous</field>
|
||||
<field name="code">MISC</field>
|
||||
<field name="type">general</field>
|
||||
</record>
|
||||
<record model="account.journal" id="journal_currency_exchange">
|
||||
<field name="name">Currency Exchange</field>
|
||||
<field name="code">EXC</field>
|
||||
<field name="type">write-off</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
5502
modules/account/locale/bg.po
Executable file
5502
modules/account/locale/bg.po
Executable file
File diff suppressed because it is too large
Load Diff
5001
modules/account/locale/ca.po
Executable file
5001
modules/account/locale/ca.po
Executable file
File diff suppressed because it is too large
Load Diff
5180
modules/account/locale/cs.po
Executable file
5180
modules/account/locale/cs.po
Executable file
File diff suppressed because it is too large
Load Diff
5053
modules/account/locale/de.po
Executable file
5053
modules/account/locale/de.po
Executable file
File diff suppressed because it is too large
Load Diff
5005
modules/account/locale/es.po
Executable file
5005
modules/account/locale/es.po
Executable file
File diff suppressed because it is too large
Load Diff
5244
modules/account/locale/es_419.po
Executable file
5244
modules/account/locale/es_419.po
Executable file
File diff suppressed because it is too large
Load Diff
5235
modules/account/locale/et.po
Executable file
5235
modules/account/locale/et.po
Executable file
File diff suppressed because it is too large
Load Diff
5270
modules/account/locale/fa.po
Executable file
5270
modules/account/locale/fa.po
Executable file
File diff suppressed because it is too large
Load Diff
5402
modules/account/locale/fi.po
Executable file
5402
modules/account/locale/fi.po
Executable file
File diff suppressed because it is too large
Load Diff
5027
modules/account/locale/fr.po
Executable file
5027
modules/account/locale/fr.po
Executable file
File diff suppressed because it is too large
Load Diff
5124
modules/account/locale/hu.po
Executable file
5124
modules/account/locale/hu.po
Executable file
File diff suppressed because it is too large
Load Diff
5032
modules/account/locale/id.po
Executable file
5032
modules/account/locale/id.po
Executable file
File diff suppressed because it is too large
Load Diff
5339
modules/account/locale/it.po
Executable file
5339
modules/account/locale/it.po
Executable file
File diff suppressed because it is too large
Load Diff
5374
modules/account/locale/lo.po
Executable file
5374
modules/account/locale/lo.po
Executable file
File diff suppressed because it is too large
Load Diff
5273
modules/account/locale/lt.po
Executable file
5273
modules/account/locale/lt.po
Executable file
File diff suppressed because it is too large
Load Diff
5016
modules/account/locale/nl.po
Executable file
5016
modules/account/locale/nl.po
Executable file
File diff suppressed because it is too large
Load Diff
5327
modules/account/locale/pl.po
Executable file
5327
modules/account/locale/pl.po
Executable file
File diff suppressed because it is too large
Load Diff
5339
modules/account/locale/pt.po
Executable file
5339
modules/account/locale/pt.po
Executable file
File diff suppressed because it is too large
Load Diff
5063
modules/account/locale/ro.po
Executable file
5063
modules/account/locale/ro.po
Executable file
File diff suppressed because it is too large
Load Diff
5496
modules/account/locale/ru.po
Executable file
5496
modules/account/locale/ru.po
Executable file
File diff suppressed because it is too large
Load Diff
5339
modules/account/locale/sl.po
Executable file
5339
modules/account/locale/sl.po
Executable file
File diff suppressed because it is too large
Load Diff
5165
modules/account/locale/tr.po
Executable file
5165
modules/account/locale/tr.po
Executable file
File diff suppressed because it is too large
Load Diff
5088
modules/account/locale/uk.po
Executable file
5088
modules/account/locale/uk.po
Executable file
File diff suppressed because it is too large
Load Diff
4889
modules/account/locale/zh_CN.po
Executable file
4889
modules/account/locale/zh_CN.po
Executable file
File diff suppressed because it is too large
Load Diff
271
modules/account/message.xml
Executable file
271
modules/account/message.xml
Executable file
@@ -0,0 +1,271 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data grouped="1">
|
||||
<record model="ir.message" id="msg_no_period_date">
|
||||
<field name="text">To continue, you must create a period for the date "%(date)s" and company "%(company)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_no_open_period_date">
|
||||
<field name="text">To continue, you must reopen the period "%(period)s" of company "%(company)s" for the date "%(date)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_create_period_closed_fiscalyear">
|
||||
<field name="text">You cannot create a period in fiscal year "%(fiscalyear)s" because it is closed.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_open_period_closed_fiscalyear">
|
||||
<field name="text">You cannot reopen period "%(period)s" because its fiscal year "%(fiscalyear)s" is closed.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_change_period_post_move_sequence">
|
||||
<field name="text">You cannot change the post move sequence in period "%(period)s" because it has posted moves.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_close_period_non_posted_moves">
|
||||
<field name="text">To close period "%(period)s" you must post the moves "%(moves)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_period_overlap">
|
||||
<field name="text">The periods "%(first)s" and "%(second)s" overlap, you must use different dates.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_period_same_sequence">
|
||||
<field name="text">You cannot use the same post move sequence for the periods "%(first)s" and "%(second)s" because they are from different fiscal years.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_period_fiscalyear_dates">
|
||||
<field name="text">The dates for period "%(period)s" must be between the dates of its fiscal year "%(fiscalyear)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_period_move_dates">
|
||||
<field name="text">The dates for period "%(period)s" must include the date "%(move_date)s" of move "%(move)s".</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_journal_period_unique">
|
||||
<field name="text">You can create only one journal per period.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_modify_delete_journal_period_moves">
|
||||
<field name="text">You cannot modify or delete journal-period "%(journal_period)s" because it contains moves.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_create_journal_period_closed_period">
|
||||
<field name="text">You cannot create a journal-period in closed period "%(period)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_open_journal_period_closed_period">
|
||||
<field name="text">You cannot reopen journal-period "%(journal_period)s" in closed period "%(period)s".</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_tax_update_unit_price_with_parent">
|
||||
<field name="text">You cannot set "Update Unit Price" on child tax "%(tax)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_modify_tax_line_closed_period">
|
||||
<field name="text">You cannot add/modify/delete tax lines in closed period "%(period)s".</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_change_fiscalyear_post_move_sequence">
|
||||
<field name="text">You cannot change the post move sequence on fiscal year "%(fiscalyear)s" because it contains posted moves.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_no_fiscalyear_date">
|
||||
<field name="text">To continue, you must create a fiscal year for the date "%(date)s" and company "%(company)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_no_open_fiscalyear_date">
|
||||
<field name="text">To continue, you must reopen the fiscal year "%(fiscalyear)s" of company "%(company)s"for the date "%(date)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_fiscalyear_overlap">
|
||||
<field name="text">The fiscal years "%(first)s" and "%(second)s" overlap, you must use different dates.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_open_fiscalyear_earlier">
|
||||
<field name="text">The open fiscal year "%(open)s" can not be before the close fiscal year "%(closed)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_fiscalyear_different_post_move_sequence">
|
||||
<field name="text">The fiscal years "%(first)s" and "%(second)s" cannot have the same post move sequence, you must use different sequences.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_close_fiscalyear_account_balance_not_zero">
|
||||
<field name="text">To close the fiscal year, the balance of account "%(account)s" must be zero.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_close_fiscalyear_earlier">
|
||||
<field name="text">To close fiscal year "%(fiscalyear)s", you must close all earlier fiscal years.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reopen_fiscalyear_later">
|
||||
<field name="text">To reopen fiscal year "%(fiscalyear)s", you must reopen all later fiscal years.</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_party_missing_receivable_account">
|
||||
<field name="text">To continue, you must define a receivable account for party "%(party)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_party_missing_payable_account">
|
||||
<field name="text">To continue, you must define a payable account for party "%(party)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_erase_party_receivable_payable">
|
||||
<field name="text">You cannot erase party "%(party)s" while they have pending receivable/payable with company "%(company)s".</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_only_one_debit_credit_types">
|
||||
<field name="text">Account can have only one of the debit or credit type set.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_delete_account_with_move_lines">
|
||||
<field name="text">You cannot delete account "%(account)s" because it has move lines.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_account_invalid_type_second_currency">
|
||||
<field name="text">To set a second currency for account "%(account)s", it must not have a type "payable", "revenue", "receivable" nor "expense".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_account_invalid_deferral_second_currency">
|
||||
<field name="text">To set a second currency for account "%(account)s", it must be deferral.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_account_invalid_lines_second_currency">
|
||||
<field name="text">To set a second currency for account "%(account)s", its lines must have the same second currency "%(currency)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_account_closed_lines">
|
||||
<field name="text">You cannot close account "%(account)s" because it has move lines.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_account_no_type_lines">
|
||||
<field name="text">You cannot remove type of account "%(account)s" because it has move lines.</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_deferral_unique">
|
||||
<field name="text">Deferral must be unique by account and fiscal year.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_write_deferral">
|
||||
<field name="text">You cannot modify any account deferrals.</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_account_chart_exists">
|
||||
<field name="text">A chart of accounts already exists for company "%(company)s".</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_post_empty_move">
|
||||
<field name="text">To post move "%(move)s", you must fill in its lines.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_post_unbalanced_move">
|
||||
<field name="text">To post move "%(move)s", you must balance all its lines debits and credits.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_modify_posted_moved">
|
||||
<field name="text">You cannot modify posted move "%(move)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_move_cancel_closed_period">
|
||||
<field name="text">The period of move "%(move)s" is closed.
|
||||
Use the current period to cancel the move?</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_move_template_invalid_expression">
|
||||
<field name="text">Failed to evaluate expression "%(expression)s" from template "%(template)s" with error:
|
||||
"%(error)s"</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_move_template_expression_not_number">
|
||||
<field name="text">The value "%(value)s" of "%(expression)s" from template "%(template)s" is not a number.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_move_template_keyword_name_not_identifier">
|
||||
<field name="text">The keyword name "%(name)s" is not a valid identifier.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_write_reconciliation">
|
||||
<field name="text">You cannot modify any reconciliation.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_delete_delegated">
|
||||
<field name="text">The reconciliation "%(reconciliation)s" is delegated to the line "%(line)s".
|
||||
You may need to cancel its move "%(move)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_delete_write_off">
|
||||
<field name="text">The reconciliation "%(reconciliation)s" is linked to the write-off line "%(line)s".
|
||||
You may need to cancel its move "%(move)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_line_not_valid">
|
||||
<field name="text">You cannot reconcile non-valid line "%(line)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_different_accounts">
|
||||
<field name="text">You cannot reconcile line "%(line)s" with others because its account "%(account1)s" is different from "%(account2)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_account_not_reconcile">
|
||||
<field name="text">To reconcile line "%(line)s", you must set its account "%(account)s" as reconcilable.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_different_parties">
|
||||
<field name="text">You cannot reconcile line "%(line)s" with others because its party "%(party1)s" is different from "%(party2)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_unbalanced">
|
||||
<field name="text">To reconcile lines, they must have the same debit "%(debit)s" and credit "%(credit)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_write_off_missing">
|
||||
<field name="text">To reconcile lines with "%(amount)s" write-off, you must select a write-off method.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_currency_exchange_journal_missing">
|
||||
<field name="text">To reconcile lines, you must define a currency exchange journal for "%(company)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_currency_exchange_credit_account_missing">
|
||||
<field name="text">To reconcile lines, you must define a currency exchange credit account for "%(company)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reconciliation_currency_exchange_debit_account_missing">
|
||||
<field name="text">To reconcile lines, you must define a currency exchange debit account for "%(company)s".</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_line_debit_credit">
|
||||
<field name="text">You cannot set both debit and credit on the line.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_line_second_currency_sign">
|
||||
<field name="text">You must set the sign for second currency to match the sign of debit - credit.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_modify_line_closed_journal_period">
|
||||
<field name="text">You cannot add/modify/delete lines on closed journal-period "%(journal_period)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_modify_line_posted_move">
|
||||
<field name="text">You cannot modify line "%(line)s" from posted move "%(move)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_modify_line_reconciled">
|
||||
<field name="text">You cannot modify reconciled line "%(line)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_line_closed_account">
|
||||
<field name="text">To create a line on account "%(account)s", you must set a type or unclose it.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_line_already_reconciled">
|
||||
<field name="text">You cannot reconcile already reconciled line "%(line)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_line_party_required">
|
||||
<field name="text">To create a line on account "%(account)s", you must set a party on line "%(line)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_line_party_set">
|
||||
<field name="text">To create a line on account "%(account)s", you must remove the party on line "%(line)s".</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.message" id="msg_group_line">
|
||||
<field name="text">Line "%(line)s" can not be grouped.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_group_line_single">
|
||||
<field name="text">You cannot group a single line.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_group_line_many_parties">
|
||||
<field name="text">You cannot group lines with different parties.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_group_line_same_company">
|
||||
<field name="text">You cannot group lines of different companies.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_group_line_same_second_currency">
|
||||
<field name="text">You cannot group lines of different second currencies.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_group_line_maximum_account">
|
||||
<field name="text">You cannot group lines from more than 2 different accounts.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reschedule_line_same_origins">
|
||||
<field name="text">You cannot reschedule lines with different origins.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reschedule_line_same_currency">
|
||||
<field name="text">You cannot reschedule lines with different currencies.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reschedule_line_same_account">
|
||||
<field name="text">You cannot reschedule lines with different accounts.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reschedule_line_same_party">
|
||||
<field name="text">You cannot reschedule lines with different parties.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_reschedule_line_wrong_amount">
|
||||
<field name="text">To reschedule the lines you must change the terms to have a total amount of %(total_amount)s instead of %(amount)s.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_delegate_line_same_company">
|
||||
<field name="text">You cannot delegate together lines of different companies.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_delegate_line_same_origins">
|
||||
<field name="text">You cannot delegate together lines with different origins.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_cancel_line_delegated">
|
||||
<field name="text">The moves "%(moves)s" contain grouped lines, cancelling them will ungroup the lines.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_company_change_currency">
|
||||
<field name="text">You cannot change the currency of a company which is associated with account moves.</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_close_period_inactive_accounts">
|
||||
<field name="text">To close period "%(period)s", you must balance the inactive account "%(account)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_journal_account_moves">
|
||||
<field name="text">You cannot change the type of journal "%(journal)s" because it has posted moves.</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_bg.xml
Executable file
358
modules/account/minimal_chart_bg.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Минимален сметкоплан</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Притежание</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Текущ</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">В брой</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">В брой</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Дългосрочен</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Дълг</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Текущ</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Разходен</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Данък</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Дългосрочен</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Капитал</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_bg"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Приход</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_equity_bg"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Приход</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_bg"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Разход</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_bg"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_bg" model="account.account.type.template">
|
||||
|
||||
<field name="name">Неутрално салдо</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_bg"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_bg" model="account.account.template">
|
||||
|
||||
<field name="name">Минимална графика на сметката</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_minimal_bg"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_bg" model="account.account.template">
|
||||
|
||||
<field name="name">Основна приходна сметка</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_bg"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_bg"/>
|
||||
</record>
|
||||
<record id="account_template_payable_bg" model="account.account.template">
|
||||
|
||||
<field name="name">Основна разходна сметка</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_payable_bg"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_bg"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_bg" model="account.account.template">
|
||||
|
||||
<field name="name">Основна приходи</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_revenue_bg"/>
|
||||
<field name="parent" ref="account_template_root_bg"/>
|
||||
</record>
|
||||
<record id="account_template_expense_bg" model="account.account.template">
|
||||
|
||||
<field name="name">Основена разходи</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_expense_bg"/>
|
||||
<field name="parent" ref="account_template_root_bg"/>
|
||||
</record>
|
||||
<record id="account_template_cash_bg" model="account.account.template">
|
||||
|
||||
<field name="name">Основна наличност</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_cash_bg"/>
|
||||
<field name="parent" ref="account_template_root_bg"/>
|
||||
</record>
|
||||
<record id="account_template_tax_bg" model="account.account.template">
|
||||
|
||||
<field name="name">Основна данъци</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_tax_bg"/>
|
||||
<field name="parent" ref="account_template_root_bg"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_ca.xml
Executable file
358
modules/account/minimal_chart_ca.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Pla de tipus de compte mínim</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Actiu</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Banc</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Banc</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Banc</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">A llarg termini</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Passiu</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Banc</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">A pagar</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Impost</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">A llarg termini</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Patrimoni</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_ca"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Benefici</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_equity_ca"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Ingressos</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_ca"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Despesa</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_ca"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_ca" model="account.account.type.template">
|
||||
|
||||
|
||||
<field name="name">Fora de balanç</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_ca"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_ca" model="account.account.template">
|
||||
|
||||
|
||||
<field name="name">Pla de comptes mínim</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_minimal_ca"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_ca" model="account.account.template">
|
||||
|
||||
|
||||
<field name="name">A cobrar principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_ca"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_ca"/>
|
||||
</record>
|
||||
<record id="account_template_payable_ca" model="account.account.template">
|
||||
|
||||
|
||||
<field name="name">A pagar principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_payable_ca"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_ca"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_ca" model="account.account.template">
|
||||
|
||||
|
||||
<field name="name">Ingrés principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_revenue_ca"/>
|
||||
<field name="parent" ref="account_template_root_ca"/>
|
||||
</record>
|
||||
<record id="account_template_expense_ca" model="account.account.template">
|
||||
|
||||
|
||||
<field name="name">Despesa principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_expense_ca"/>
|
||||
<field name="parent" ref="account_template_root_ca"/>
|
||||
</record>
|
||||
<record id="account_template_cash_ca" model="account.account.template">
|
||||
|
||||
|
||||
<field name="name">Efectiu principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_cash_ca"/>
|
||||
<field name="parent" ref="account_template_root_ca"/>
|
||||
</record>
|
||||
<record id="account_template_tax_ca" model="account.account.template">
|
||||
|
||||
|
||||
<field name="name">Impost principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_tax_ca"/>
|
||||
<field name="parent" ref="account_template_root_ca"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_de.xml
Executable file
358
modules/account/minimal_chart_de.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Minimaler Kontentypenplan</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Aktiva</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_de"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Umlaufvermögen</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_de"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Barvermögen</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_de"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Barvermögen</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_de"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Anlagevermögen</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_de"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Verbindlichkeiten</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_de"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Umlaufvermögen</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_de"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Verbindlichkeiten</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_de"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Steuer</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_de"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Anlagevermögen</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_de"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Kapital</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_de"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Erträge</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_equity_de"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Ertrag</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_de"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Aufwand</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_de"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_de" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Bilanzneutral</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_de"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_de" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Minimaler Kontenplan</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_minimal_de"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_de" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Forderungen</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_de"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_de"/>
|
||||
</record>
|
||||
<record id="account_template_payable_de" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Verbindlichkeiten</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_payable_de"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_de"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_de" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Ertrag</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_revenue_de"/>
|
||||
<field name="parent" ref="account_template_root_de"/>
|
||||
</record>
|
||||
<record id="account_template_expense_de" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Aufwand</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_expense_de"/>
|
||||
<field name="parent" ref="account_template_root_de"/>
|
||||
</record>
|
||||
<record id="account_template_cash_de" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Barvermögen</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_cash_de"/>
|
||||
<field name="parent" ref="account_template_root_de"/>
|
||||
</record>
|
||||
<record id="account_template_tax_de" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
<field name="name">Steuern</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_tax_de"/>
|
||||
<field name="parent" ref="account_template_root_de"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_en.xml
Executable file
358
modules/account/minimal_chart_en.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_en" model="account.account.type.template">
|
||||
<field name="name">Minimal Account Type Chart</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_en" model="account.account.type.template">
|
||||
<field name="name">Asset</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_en"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_en" model="account.account.type.template">
|
||||
<field name="name">Current</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_en"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_en" model="account.account.type.template">
|
||||
<field name="name">Cash</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_en"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_en" model="account.account.type.template">
|
||||
<field name="name">Receivable</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_en"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_en" model="account.account.type.template">
|
||||
<field name="name">Long-term</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_en"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_en" model="account.account.type.template">
|
||||
<field name="name">Liability</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_en"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_en" model="account.account.type.template">
|
||||
<field name="name">Current</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_en"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_en" model="account.account.type.template">
|
||||
<field name="name">Payable</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_en"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_en" model="account.account.type.template">
|
||||
<field name="name">Tax</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_en"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_en" model="account.account.type.template">
|
||||
<field name="name">Long-term</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_en"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_en" model="account.account.type.template">
|
||||
<field name="name">Equity</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_en"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_en" model="account.account.type.template">
|
||||
<field name="name">Income</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_equity_en"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_en" model="account.account.type.template">
|
||||
<field name="name">Revenue</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_en"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_en" model="account.account.type.template">
|
||||
<field name="name">Expense</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_en"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_en" model="account.account.type.template">
|
||||
<field name="name">Off-Balance</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_en"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_en" model="account.account.template">
|
||||
<field name="name">Minimal Account Chart</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_minimal_en"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_en" model="account.account.template">
|
||||
<field name="name">Main Receivable</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_en"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_en"/>
|
||||
</record>
|
||||
<record id="account_template_payable_en" model="account.account.template">
|
||||
<field name="name">Main Payable</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_payable_en"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_en"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_en" model="account.account.template">
|
||||
<field name="name">Main Revenue</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_revenue_en"/>
|
||||
<field name="parent" ref="account_template_root_en"/>
|
||||
</record>
|
||||
<record id="account_template_expense_en" model="account.account.template">
|
||||
<field name="name">Main Expense</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_expense_en"/>
|
||||
<field name="parent" ref="account_template_root_en"/>
|
||||
</record>
|
||||
<record id="account_template_cash_en" model="account.account.template">
|
||||
<field name="name">Main Cash</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_cash_en"/>
|
||||
<field name="parent" ref="account_template_root_en"/>
|
||||
</record>
|
||||
<record id="account_template_tax_en" model="account.account.template">
|
||||
<field name="name">Main Tax</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_tax_en"/>
|
||||
<field name="parent" ref="account_template_root_en"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_es.xml
Executable file
358
modules/account/minimal_chart_es.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Tipo de cuenta de plan mínimo</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Activo</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_es"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Banco</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_es"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Efectivo</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_es"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Efectivo</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_es"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">A largo plazo</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_es"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Pasivo</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_es"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Banco</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_es"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">A pagar</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_es"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Impuesto</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_es"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">A largo plazo</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_es"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Patrimonio</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_es"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Beneficio</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_equity_es"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Ingresos</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_es"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Gastos</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_es"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_es" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Fuera de balance</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_es"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_es" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Plan de cuentas mínimo</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_minimal_es"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_es" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">A cobrar principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_es"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_es"/>
|
||||
</record>
|
||||
<record id="account_template_payable_es" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">A pagar principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_payable_es"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_es"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_es" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Ingresos principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_revenue_es"/>
|
||||
<field name="parent" ref="account_template_root_es"/>
|
||||
</record>
|
||||
<record id="account_template_expense_es" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Gastos principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_expense_es"/>
|
||||
<field name="parent" ref="account_template_root_es"/>
|
||||
</record>
|
||||
<record id="account_template_cash_es" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Efectivo principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_cash_es"/>
|
||||
<field name="parent" ref="account_template_root_es"/>
|
||||
</record>
|
||||
<record id="account_template_tax_es" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Impuestos principal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_tax_es"/>
|
||||
<field name="parent" ref="account_template_root_es"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_fr.xml
Executable file
358
modules/account/minimal_chart_fr.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Plan de type de compte minimal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Actif</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Courant</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Cash</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Recevable</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Long terme</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Passif</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Courant</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">À payer</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Taxe</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Long terme</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Capitaux propres</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_fr"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Revenu</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_equity_fr"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Produit</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_fr"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Charge</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_fr"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_fr" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Hors bilan</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_fr"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_fr" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Plan comptable minimal</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_minimal_fr"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_fr" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Compte client</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_fr"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_fr"/>
|
||||
</record>
|
||||
<record id="account_template_payable_fr" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Compte fournisseur</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_payable_fr"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_fr"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_fr" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Compte de produits</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_revenue_fr"/>
|
||||
<field name="parent" ref="account_template_root_fr"/>
|
||||
</record>
|
||||
<record id="account_template_expense_fr" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Compte de charges</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_expense_fr"/>
|
||||
<field name="parent" ref="account_template_root_fr"/>
|
||||
</record>
|
||||
<record id="account_template_cash_fr" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Compte de liquidité</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_cash_fr"/>
|
||||
<field name="parent" ref="account_template_root_fr"/>
|
||||
</record>
|
||||
<record id="account_template_tax_fr" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Compte de taxes</field>
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_tax_fr"/>
|
||||
<field name="parent" ref="account_template_root_fr"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_nl.xml
Executable file
358
modules/account/minimal_chart_nl.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Basaal rekeningschematype</field>
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Activa</field>
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Actueel</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Kas</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Kas</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Langlopend</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Verplichting</field>
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Actueel</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Te betalen</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Belasting</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Langlopend</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Eigen vermogen</field>
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_nl"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Inkomsten</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_equity_nl"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Opbrengst</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_nl"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Kosten</field>
|
||||
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_nl"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_nl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Buiten balans</field>
|
||||
|
||||
|
||||
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_nl"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_nl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Basaal rekeningschema</field>
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_minimal_nl"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_nl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Basisrekening ontvangen</field>
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_nl"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_nl"/>
|
||||
</record>
|
||||
<record id="account_template_payable_nl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Basisrekening betalen</field>
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_payable_nl"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_nl"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_nl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Basis opbrengstrekening</field>
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_revenue_nl"/>
|
||||
<field name="parent" ref="account_template_root_nl"/>
|
||||
</record>
|
||||
<record id="account_template_expense_nl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Basis kostenrekening</field>
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_expense_nl"/>
|
||||
<field name="parent" ref="account_template_root_nl"/>
|
||||
</record>
|
||||
<record id="account_template_cash_nl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Basis kasrekening</field>
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_cash_nl"/>
|
||||
<field name="parent" ref="account_template_root_nl"/>
|
||||
</record>
|
||||
<record id="account_template_tax_nl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Basis belastingrekening</field>
|
||||
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_tax_nl"/>
|
||||
<field name="parent" ref="account_template_root_nl"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_pt.xml
Executable file
358
modules/account/minimal_chart_pt.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Plano de tipos de conta mínimo</field>
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Ativo</field>
|
||||
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Circulante</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Caixa</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">A Receber</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Longo Prazo</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Passivo</field>
|
||||
|
||||
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Circulante</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">A Pagar</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Tributos</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Longo Prazo</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Patrimônio Líquido</field>
|
||||
|
||||
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_pt"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Resultados</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_equity_pt"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Receitas</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_pt"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Despesas</field>
|
||||
|
||||
|
||||
<field name="parent" ref="account_type_template_income_pt"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_pt" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Fora do Balanço</field>
|
||||
|
||||
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_pt"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_pt" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Plano de Contas Mínimo</field>
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_minimal_pt"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_pt" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Clientes Principal</field>
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_pt"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_pt"/>
|
||||
</record>
|
||||
<record id="account_template_payable_pt" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Fornecedores Principal</field>
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_payable_pt"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_pt"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_pt" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Receitas Principal</field>
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_revenue_pt"/>
|
||||
<field name="parent" ref="account_template_root_pt"/>
|
||||
</record>
|
||||
<record id="account_template_expense_pt" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Despesas Principal</field>
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_expense_pt"/>
|
||||
<field name="parent" ref="account_template_root_pt"/>
|
||||
</record>
|
||||
<record id="account_template_cash_pt" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Caixa Principal</field>
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_cash_pt"/>
|
||||
<field name="parent" ref="account_template_root_pt"/>
|
||||
</record>
|
||||
<record id="account_template_tax_pt" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Tributos Principal</field>
|
||||
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_tax_pt"/>
|
||||
<field name="parent" ref="account_template_root_pt"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_ru.xml
Executable file
358
modules/account/minimal_chart_ru.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Минимальная схема типов счетов</field>
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Активы</field>
|
||||
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Текущие</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Наличные</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Наличные</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_current_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Долгосрочные</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_asset_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Пассивы</field>
|
||||
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Текущие</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Подлежащие уплате</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Налоги</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_current_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Долгосрочные</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_liability_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Собственные средства</field>
|
||||
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_ru"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Поступления</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_equity_ru"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Доходы</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_income_ru"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Расходы</field>
|
||||
|
||||
<field name="parent" ref="account_type_template_income_ru"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_ru" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Внебалансовые</field>
|
||||
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_ru"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_ru" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Минимальная схема счетов</field>
|
||||
|
||||
<field name="type" ref="account_type_template_minimal_ru"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_ru" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Основной Подлежащий получению</field>
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_ru"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_ru"/>
|
||||
</record>
|
||||
<record id="account_template_payable_ru" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Основной Подлежащий уплате</field>
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_payable_ru"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_ru"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_ru" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Основной Доходы</field>
|
||||
|
||||
<field name="type" ref="account_type_template_revenue_ru"/>
|
||||
<field name="parent" ref="account_template_root_ru"/>
|
||||
</record>
|
||||
<record id="account_template_expense_ru" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Основной Расходы</field>
|
||||
|
||||
<field name="type" ref="account_type_template_expense_ru"/>
|
||||
<field name="parent" ref="account_template_root_ru"/>
|
||||
</record>
|
||||
<record id="account_template_cash_ru" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Основной Наличные</field>
|
||||
|
||||
<field name="type" ref="account_type_template_asset_current_cash_ru"/>
|
||||
<field name="parent" ref="account_template_root_ru"/>
|
||||
</record>
|
||||
<record id="account_template_tax_ru" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Основной Налоги</field>
|
||||
|
||||
<field name="type" ref="account_type_template_liability_current_tax_ru"/>
|
||||
<field name="parent" ref="account_template_root_ru"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
358
modules/account/minimal_chart_sl.xml
Executable file
358
modules/account/minimal_chart_sl.xml
Executable file
@@ -0,0 +1,358 @@
|
||||
<?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_minimal_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Minimalni kontni načrt</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="statement" eval="None"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Sredstvo</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="parent" ref="account_type_template_minimal_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Kratkoročno</field>
|
||||
<field name="parent" ref="account_type_template_asset_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_cash_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Denar</field>
|
||||
<field name="parent" ref="account_type_template_asset_current_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_current_receivable_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Denar</field>
|
||||
<field name="parent" ref="account_type_template_asset_current_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="receivable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_asset_long_term_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Dolgoročno</field>
|
||||
<field name="parent" ref="account_type_template_asset_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="assets" eval="True"/>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Obveznosti</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="parent" ref="account_type_template_minimal_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Kratkoročno</field>
|
||||
<field name="parent" ref="account_type_template_liability_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_payable_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Obveznosti</field>
|
||||
<field name="parent" ref="account_type_template_liability_current_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="payable" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_current_tax_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Davek</field>
|
||||
<field name="parent" ref="account_type_template_liability_current_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_liability_long_term_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Dolgoročno</field>
|
||||
<field name="parent" ref="account_type_template_liability_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
<record id="account_type_template_equity_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Kapital</field>
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="parent" ref="account_type_template_minimal_sl"/>
|
||||
<field name="statement">balance</field>
|
||||
</record>
|
||||
<record id="account_type_template_income_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Prihodki</field>
|
||||
<field name="parent" ref="account_type_template_equity_sl"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
<record id="account_type_template_revenue_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Prihodki</field>
|
||||
<field name="parent" ref="account_type_template_income_sl"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="revenue" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_expense_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Odhodki</field>
|
||||
<field name="parent" ref="account_type_template_income_sl"/>
|
||||
<field name="statement">income</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="expense" eval="True"/>
|
||||
</record>
|
||||
<record id="account_type_template_off_balance_sl" model="account.account.type.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Zunaj bilance</field>
|
||||
<field name="sequence" eval="60"/>
|
||||
<field name="parent" ref="account_type_template_minimal_sl"/>
|
||||
<field name="statement">off-balance</field>
|
||||
</record>
|
||||
|
||||
<record id="account_template_root_sl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Minimalni kontni načrt</field>
|
||||
<field name="type" ref="account_type_template_minimal_sl"/>
|
||||
<field name="closed" eval="True"/>
|
||||
</record>
|
||||
<record id="account_template_receivable_sl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Glavne terjatve</field>
|
||||
<field name="type" ref="account_type_template_asset_current_receivable_sl"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_sl"/>
|
||||
</record>
|
||||
<record id="account_template_payable_sl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Glavne obveznosti</field>
|
||||
<field name="type" ref="account_type_template_liability_current_payable_sl"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
<field name="parent" ref="account_template_root_sl"/>
|
||||
</record>
|
||||
<record id="account_template_revenue_sl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Glavni prihodki</field>
|
||||
<field name="type" ref="account_type_template_revenue_sl"/>
|
||||
<field name="parent" ref="account_template_root_sl"/>
|
||||
</record>
|
||||
<record id="account_template_expense_sl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Glavni odhodki</field>
|
||||
<field name="type" ref="account_type_template_expense_sl"/>
|
||||
<field name="parent" ref="account_template_root_sl"/>
|
||||
</record>
|
||||
<record id="account_template_cash_sl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Glavna denarna sredstva</field>
|
||||
<field name="type" ref="account_type_template_asset_current_cash_sl"/>
|
||||
<field name="parent" ref="account_template_root_sl"/>
|
||||
</record>
|
||||
<record id="account_template_tax_sl" model="account.account.template">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<field name="name">Glavni davki</field>
|
||||
<field name="type" ref="account_type_template_liability_current_tax_sl"/>
|
||||
<field name="parent" ref="account_template_root_sl"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
3238
modules/account/move.py
Executable file
3238
modules/account/move.py
Executable file
File diff suppressed because it is too large
Load Diff
540
modules/account/move.xml
Executable file
540
modules/account/move.xml
Executable file
@@ -0,0 +1,540 @@
|
||||
<?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="move_view_form">
|
||||
<field name="model">account.move</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="move_view_tree">
|
||||
<field name="model">account.move</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">move_tree</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_move_form">
|
||||
<field name="name">Account Moves</field>
|
||||
<field name="res_model">account.move</field>
|
||||
<field name="domain"
|
||||
eval="[('company', '=', Eval('context', {}).get('company', -1))]"
|
||||
pyson="1"/>
|
||||
<field name="search_value"
|
||||
eval="[('create_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0, delta_years=-1))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_move_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="move_view_tree"/>
|
||||
<field name="act_window" ref="act_move_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_move_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="move_view_form"/>
|
||||
<field name="act_window" ref="act_move_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_entries"
|
||||
action="act_move_form"
|
||||
sequence="50"
|
||||
id="menu_move_form"/>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_move_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_move_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_move_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_move">
|
||||
<field name="model">account.move</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_move_account">
|
||||
<field name="model">account.move</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.model.button" id="move_post_button">
|
||||
<field name="model">account.move</field>
|
||||
<field name="name">post</field>
|
||||
<field name="string">Post</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type" id="sequence_type_account_move">
|
||||
<field name="name">Account Move</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_account_move_group_admin">
|
||||
<field name="sequence_type" ref="sequence_type_account_move"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_account_move_group_account_admin">
|
||||
<field name="sequence_type" ref="sequence_type_account_move"/>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_reconciliation_view_form">
|
||||
<field name="model">account.move.reconciliation</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_reconciliation_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="move_reconciliation_view_tree">
|
||||
<field name="model">account.move.reconciliation</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">move_reconciliation_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_move_reconciliation_lines">
|
||||
<field name="name">Reconciliation Lines</field>
|
||||
<field name="res_model">account.move.line</field>
|
||||
<field name="domain"
|
||||
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('reconciliation', '=', Eval('active_id')), ('reconciliation', 'in', Eval('active_ids')))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_move_reconciliation_lines_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">account.move.reconciliation,-1</field>
|
||||
<field name="action" ref="act_move_reconciliation_lines"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_move_reconciliation_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.move.reconciliation</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_move_reconciliation_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_move_reconciliation_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_move_reconciliation">
|
||||
<field name="model">account.move.reconciliation</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_move_reconciliation_account">
|
||||
<field name="model">account.move.reconciliation</field>
|
||||
<field name="group" ref="group_account"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_move_reconciliation_account_admin">
|
||||
<field name="model">account.move.reconciliation</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.sequence.type" id="sequence_type_account_move_reconciliation">
|
||||
<field name="name">Account Move Reconciliation</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_account_move_reconciliation_group_admin">
|
||||
<field name="sequence_type" ref="sequence_type_account_move_reconciliation"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="sequence_type_account_move_reconciliation_group_account_admin">
|
||||
<field name="sequence_type" ref="sequence_type_account_move_reconciliation"/>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.sequence" id="sequence_account_move_reconciliation">
|
||||
<field name="name">Default Account Move Reconciliation</field>
|
||||
<field name="sequence_type" ref="sequence_type_account_move_reconciliation"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_view_form">
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">move_line_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_view_form_move">
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">move_line_form_move</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_view_tree">
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">move_line_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_view_tree_move">
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">move_line_tree_move</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_view_list_payable_receivable">
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="30"/>
|
||||
<field name="name">move_line_list_payable_receivable</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_view_list_reconcile">
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="30"/>
|
||||
<field name="name">move_line_list_reconcile</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_move_line_form">
|
||||
<field name="name">Account Move Lines</field>
|
||||
<field name="res_model">account.move.line</field>
|
||||
<field
|
||||
name="domain"
|
||||
eval="[('account', 'in', Eval('active_ids', [])), ('state', '=', 'valid')]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_move_line_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="move_line_view_tree"/>
|
||||
<field name="act_window" ref="act_move_line_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_move_line_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="move_line_view_form"/>
|
||||
<field name="act_window" ref="act_move_line_form"/>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="act_open_account">
|
||||
<field name="name">Open Move Account</field>
|
||||
<field name="wiz_name">account.move.open_account</field>
|
||||
<field name="model">account.account</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_account_keyword1">
|
||||
<field name="keyword">tree_open</field>
|
||||
<field name="model">account.account,-1</field>
|
||||
<field name="action" ref="act_open_account"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_account_keyword2">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">account.account,-1</field>
|
||||
<field name="action" ref="act_open_account"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window"
|
||||
id="act_move_line_payable_receivable">
|
||||
<field name="name">Payable/Receivable Lines</field>
|
||||
<field name="res_model">account.move.line</field>
|
||||
<field name="context_model">account.move.line.receivable_payable.context</field>
|
||||
<field name="domain"
|
||||
eval="[('party', 'in', Eval('active_ids')), ('company', '=', Eval('context', {}).get('company', -1))]"
|
||||
pyson="1"/>
|
||||
<field name="context_domain"
|
||||
eval="[['OR', If(Eval('receivable', True), ('account.type.receivable', '=', True), ('id', '<', 0)), If(Eval('payable', True), ('account.type.payable', '=', True), ('id', '<', 0))], If(Eval('reconciled', False), (), ('reconciliation', '=', None))]"
|
||||
pyson="1"/>
|
||||
<field name="search_value"></field>
|
||||
<field name="order" eval="[('maturity_date', 'ASC'), ('date', 'DESC'), ('id', 'DESC')]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_move_line_payable_receivable_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="move_line_view_list_payable_receivable"/>
|
||||
<field name="act_window" ref="act_move_line_payable_receivable"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword"
|
||||
id="act_move_line_payable_receivable_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">party.party,-1</field>
|
||||
<field name="action" ref="act_move_line_payable_receivable"/>
|
||||
</record>
|
||||
<record model="ir.action-res.group"
|
||||
id="act_move_line_payable-group_account">
|
||||
<field name="action" ref="act_move_line_payable_receivable"/>
|
||||
<field name="group" ref="group_account"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_receivable_payable_context_view_form">
|
||||
<field name="model">account.move.line.receivable_payable.context</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_line_receivable_payable_context_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="open_journal_ask_view_form">
|
||||
<field name="model">account.move.open_journal.ask</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">open_journal_ask_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_open_journal">
|
||||
<field name="name">Open Journal</field>
|
||||
<field name="wiz_name">account.move.open_journal</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_journal_keyword">
|
||||
<field name="keyword">tree_open</field>
|
||||
<field name="model">account.journal.period,-1</field>
|
||||
<field name="action" ref="act_open_journal"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_entries"
|
||||
action="act_open_journal"
|
||||
sequence="20"
|
||||
id="menu_open_journal"
|
||||
icon="tryton-list"/>
|
||||
|
||||
<record model="ir.ui.view" id="reconcile_lines_writeoff_view_form">
|
||||
<field name="model">account.move.reconcile_lines.writeoff</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">reconcile_lines_writeoff_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="act_reconcile_lines">
|
||||
<field name="name">Reconcile Lines</field>
|
||||
<field name="wiz_name">account.move.reconcile_lines</field>
|
||||
<field name="model" eval="None"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_reconcile_lines_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">account.move.line,-1</field>
|
||||
<field name="action" ref="act_reconcile_lines"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_reconcile_lines_keyword_general_ledger_line">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">account.general_ledger.line,-1</field>
|
||||
<field name="action" ref="act_reconcile_lines"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_unreconcile_lines">
|
||||
<field name="name">Unreconcile Lines</field>
|
||||
<field name="wiz_name">account.move.unreconcile_lines</field>
|
||||
<field name="model" eval="None"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_unreconcile_lines_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">account.move.line,-1</field>
|
||||
<field name="action" ref="act_unreconcile_lines"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_unreconcile_lines_keyword_general_ledger_line">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">account.general_ledger.line,-1</field>
|
||||
<field name="action" ref="act_unreconcile_lines"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_reconcile">
|
||||
<field name="name">Reconcile Accounts</field>
|
||||
<field name="wiz_name">account.reconcile</field>
|
||||
<field name="window" eval="True"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_processing"
|
||||
action="act_reconcile"
|
||||
sequence="20"
|
||||
id="menu_reconcile"/>
|
||||
|
||||
<record model="ir.ui.view" id="reconcile_start_view_form">
|
||||
<field name="model">account.reconcile.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">reconcile_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="reconcile_show_view_form">
|
||||
<field name="model">account.reconcile.show</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">reconcile_show_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_cancel_moves">
|
||||
<field name="name">Cancel Moves</field>
|
||||
<field name="wiz_name">account.move.cancel</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_cancel_moves_keyword1">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">account.move,-1</field>
|
||||
<field name="action" ref="act_cancel_moves"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_cancel_default_view_form">
|
||||
<field name="model">account.move.cancel.default</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_cancel_default_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="reconcile_writeoff_view_form">
|
||||
<field name="model">account.move.reconcile.write_off</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">writeoff_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="reconcile_writeoff_view_list">
|
||||
<field name="model">account.move.reconcile.write_off</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">writeoff_tree</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_reconcile_writeoff_form">
|
||||
<field name="name">Write-off Methods</field>
|
||||
<field name="res_model">account.move.reconcile.write_off</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_reconcile_writeoff_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="reconcile_writeoff_view_list"/>
|
||||
<field name="act_window" ref="act_reconcile_writeoff_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_reconcile_writeoff_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="reconcile_writeoff_view_form"/>
|
||||
<field name="act_window" ref="act_reconcile_writeoff_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_journal_configuration"
|
||||
action="act_reconcile_writeoff_form"
|
||||
sequence="20"
|
||||
id="menu_reconcile_writeoff_form"/>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_reconcile_writeoff_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.move.reconcile.write_off</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_reconcile_writeoff_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_reconcile_writeoff_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_reconcile_writeoff">
|
||||
<field name="model">account.move.reconcile.write_off</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_reconcile_writeoff_account_admin">
|
||||
<field name="model">account.move.reconcile.write_off</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_group_lines_wizard">
|
||||
<field name="name">Group Lines</field>
|
||||
<field name="wiz_name">account.move.line.group</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_group_lines_keyword1">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">account.move.line,-1</field>
|
||||
<field name="action" ref="act_group_lines_wizard"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_group_start_view_form">
|
||||
<field name="model">account.move.line.group.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_line_group_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_move_form_grouping">
|
||||
<field name="name">Grouped Account Move</field>
|
||||
<field name="res_model">account.move</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_move_form_grouping_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="move_view_form"/>
|
||||
<field name="act_window" ref="act_move_form_grouping"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_reschedule_lines_wizard">
|
||||
<field name="name">Reschedule Lines</field>
|
||||
<field name="wiz_name">account.move.line.reschedule</field>
|
||||
<field name="model">account.move.line</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_reschedule_lines_keyword1">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">account.move.line,-1</field>
|
||||
<field name="action" ref="act_reschedule_lines_wizard"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_reschedule_start_view_form">
|
||||
<field name="model">account.move.line.reschedule.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_line_reschedule_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_reschedule_preview_view_form">
|
||||
<field name="model">account.move.line.reschedule.preview</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_line_reschedule_preview_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_reschedule_term_view_list">
|
||||
<field name="model">account.move.line.reschedule.term</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">move_line_reschedule_term_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_move_form_rescheduling">
|
||||
<field name="name">Reschedule Account Move</field>
|
||||
<field name="res_model">account.move</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_move_form_rescheduling_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="move_view_form"/>
|
||||
<field name="act_window" ref="act_move_form_rescheduling"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_delegate_lines_wizard">
|
||||
<field name="name">Delegate Lines</field>
|
||||
<field name="wiz_name">account.move.line.delegate</field>
|
||||
<field name="model">account.move.line</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_delegate_lines_keyword1">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">account.move.line,-1</field>
|
||||
<field name="action" ref="act_delegate_lines_wizard"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_delegate_start_view_form">
|
||||
<field name="model">account.move.line.delegate.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_line_delegate_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_move_form_delegate">
|
||||
<field name="name">Delegate Account Move</field>
|
||||
<field name="res_model">account.move</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_move_form_delegate_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="move_view_form"/>
|
||||
<field name="act_window" ref="act_move_form_delegate"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.report" id="report_general_journal">
|
||||
<field name="name">General Journal</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="report_name">account.move.general_journal</field>
|
||||
<field name="report">account/general_journal.fodt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_general_journal_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">account.move,-1</field>
|
||||
<field name="action" ref="report_general_journal"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
465
modules/account/move_template.py
Executable file
465
modules/account/move_template.py
Executable file
@@ -0,0 +1,465 @@
|
||||
# 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 xml.sax.saxutils import quoteattr
|
||||
|
||||
from simpleeval import InvalidExpression, simple_eval
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import (
|
||||
DeactivableMixin, ModelSQL, ModelView, fields, sequence_ordered)
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Eval
|
||||
from trytond.tools import decistmt
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.wizard import (
|
||||
Button, StateAction, StateTransition, StateView, Wizard)
|
||||
|
||||
from .exceptions import (
|
||||
MoveTemplateExpressionError, MoveTemplateKeywordValidationError,
|
||||
PeriodNotFoundError)
|
||||
|
||||
|
||||
class MoveTemplate(DeactivableMixin, ModelSQL, ModelView):
|
||||
'Account Move Template'
|
||||
__name__ = 'account.move.template'
|
||||
name = fields.Char('Name', required=True, translate=True)
|
||||
keywords = fields.One2Many('account.move.template.keyword', 'move',
|
||||
'Keywords')
|
||||
company = fields.Many2One('company.company', 'Company', required=True)
|
||||
journal = fields.Many2One(
|
||||
'account.journal', 'Journal', required=True,
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends={'company'})
|
||||
description = fields.Char('Description',
|
||||
help="Keyword value substitutions are identified "
|
||||
"by braces ('{' and '}').")
|
||||
lines = fields.One2Many('account.move.line.template', 'move', 'Lines',
|
||||
domain=[
|
||||
('account.company', '=', Eval('company', -1)),
|
||||
])
|
||||
|
||||
@staticmethod
|
||||
def default_company():
|
||||
return Transaction().context.get('company')
|
||||
|
||||
def get_move(self, values):
|
||||
'Return the move for the keyword values'
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
Keyword = pool.get('account.move.template.keyword')
|
||||
|
||||
move = Move()
|
||||
move.company = self.company
|
||||
move.journal = self.journal
|
||||
if self.description:
|
||||
move.description = self.description.format(
|
||||
**dict(Keyword.format_values(self, values)))
|
||||
move.lines = [l.get_line(values) for l in self.lines]
|
||||
|
||||
return move
|
||||
|
||||
|
||||
class MoveTemplateKeyword(sequence_ordered(), ModelSQL, ModelView):
|
||||
'Account Move Template Keyword'
|
||||
__name__ = 'account.move.template.keyword'
|
||||
name = fields.Char('Name', required=True)
|
||||
string = fields.Char('String', required=True, translate=True)
|
||||
move = fields.Many2One(
|
||||
'account.move.template', "Move", required=True, ondelete='CASCADE')
|
||||
type_ = fields.Selection([
|
||||
('char', 'Char'),
|
||||
('numeric', 'Numeric'),
|
||||
('date', 'Date'),
|
||||
('party', 'Party'),
|
||||
], 'Type')
|
||||
required = fields.Boolean('Required')
|
||||
digits = fields.Integer('Digits', states={
|
||||
'invisible': Eval('type_') != 'numeric',
|
||||
'required': Eval('type_') == 'numeric',
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.__access__.add('move')
|
||||
|
||||
@classmethod
|
||||
def validate(cls, keywords):
|
||||
for keyword in keywords:
|
||||
keyword.check_name()
|
||||
|
||||
def check_name(self):
|
||||
if self.name and not self.name.isidentifier():
|
||||
raise MoveTemplateKeywordValidationError(
|
||||
gettext('account.msg_name_not_valid',
|
||||
name=self.name))
|
||||
|
||||
@staticmethod
|
||||
def default_required():
|
||||
return False
|
||||
|
||||
def get_field(self):
|
||||
field = getattr(self, '_get_field_%s' % self.type_)()
|
||||
field.update({
|
||||
'name': self.name,
|
||||
'string': self.string,
|
||||
'required': self.required,
|
||||
'help': '',
|
||||
})
|
||||
return field
|
||||
|
||||
def _get_field_char(self):
|
||||
return {'type': 'char'}
|
||||
|
||||
def _get_field_numeric(self):
|
||||
return {'type': 'numeric', 'digits': (16, self.digits)}
|
||||
|
||||
def _format_numeric(self, lang, value):
|
||||
if value:
|
||||
return lang.format('%.*f', (self.digits, value), True)
|
||||
else:
|
||||
return ''
|
||||
|
||||
def _get_field_date(self):
|
||||
return {'type': 'date'}
|
||||
|
||||
def _format_date(self, lang, value):
|
||||
if value:
|
||||
return lang.strftime(value)
|
||||
else:
|
||||
return ''
|
||||
|
||||
def _get_field_party(self):
|
||||
return {
|
||||
'type': 'many2one',
|
||||
'relation': 'party.party',
|
||||
}
|
||||
|
||||
def _format_party(self, lang, value):
|
||||
pool = Pool()
|
||||
Party = pool.get('party.party')
|
||||
if value:
|
||||
return Party(value).rec_name
|
||||
else:
|
||||
return ''
|
||||
|
||||
@staticmethod
|
||||
def format_values(template, values):
|
||||
"Yield key and formatted value"
|
||||
pool = Pool()
|
||||
Lang = pool.get('ir.lang')
|
||||
|
||||
lang, = Lang.search([
|
||||
('code', '=', Transaction().language),
|
||||
])
|
||||
keywords = {k.name: k for k in template.keywords}
|
||||
|
||||
for k, v in values.items():
|
||||
keyword = keywords[k]
|
||||
func = getattr(keyword, '_format_%s' % keyword.type_, None)
|
||||
if func:
|
||||
yield k, func(lang, v)
|
||||
else:
|
||||
yield k, v
|
||||
|
||||
|
||||
class MoveLineTemplate(ModelSQL, ModelView):
|
||||
'Account Move Line Template'
|
||||
__name__ = 'account.move.line.template'
|
||||
move = fields.Many2One(
|
||||
'account.move.template', "Move", required=True, ondelete='CASCADE')
|
||||
operation = fields.Selection([
|
||||
('debit', 'Debit'),
|
||||
('credit', 'Credit'),
|
||||
], 'Operation', required=True)
|
||||
amount = fields.Char('Amount', required=True,
|
||||
help="A python expression that will be evaluated with the keywords.")
|
||||
account = fields.Many2One('account.account', 'Account', required=True,
|
||||
domain=[
|
||||
('type', '!=', None),
|
||||
('closed', '!=', True),
|
||||
('company', '=', Eval('_parent_move', {}).get('company', -1)),
|
||||
])
|
||||
party = fields.Char('Party',
|
||||
states={
|
||||
'required': Eval('party_required', False),
|
||||
'invisible': ~Eval('party_required', False),
|
||||
},
|
||||
help="The name of the 'Party' keyword.")
|
||||
party_required = fields.Function(fields.Boolean('Party Required'),
|
||||
'on_change_with_party_required')
|
||||
description = fields.Char('Description',
|
||||
help="Keyword value substitutions are identified "
|
||||
"by braces ('{' and '}').")
|
||||
taxes = fields.One2Many('account.tax.line.template', 'line', 'Taxes')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.__access__.add('move')
|
||||
|
||||
@fields.depends('account')
|
||||
def on_change_with_party_required(self, name=None):
|
||||
if self.account:
|
||||
return self.account.party_required
|
||||
return False
|
||||
|
||||
def get_line(self, values):
|
||||
'Return the move line for the keyword values'
|
||||
pool = Pool()
|
||||
Line = pool.get('account.move.line')
|
||||
Keyword = pool.get('account.move.template.keyword')
|
||||
|
||||
line = Line()
|
||||
try:
|
||||
amount = simple_eval(decistmt(self.amount),
|
||||
functions={'Decimal': Decimal}, names=values)
|
||||
except (InvalidExpression, SyntaxError) as e:
|
||||
raise MoveTemplateExpressionError(
|
||||
gettext('account.msg_move_template_invalid_expression',
|
||||
expression=values,
|
||||
template=self.move.rec_name,
|
||||
error=e)) from e
|
||||
|
||||
if not isinstance(amount, Decimal):
|
||||
raise MoveTemplateExpressionError(
|
||||
gettext('account.msg_move_template_expression_not_number',
|
||||
value=amount,
|
||||
expression=self.move.name,
|
||||
template=self.move.rec_name))
|
||||
|
||||
amount = self.move.company.currency.round(amount)
|
||||
if self.operation == 'debit':
|
||||
line.debit = amount
|
||||
else:
|
||||
line.credit = amount
|
||||
line.account = self.account
|
||||
if self.party:
|
||||
line.party = values.get(self.party)
|
||||
if self.description:
|
||||
try:
|
||||
line.description = self.description.format(
|
||||
**dict(Keyword.format_values(self.move, values)))
|
||||
except KeyError as e:
|
||||
raise MoveTemplateExpressionError(
|
||||
gettext('account.msg_move_template_invalid_expression',
|
||||
expression=values,
|
||||
template=self.move.name,
|
||||
error=e)) from e
|
||||
line.tax_lines = [t.get_line(values) for t in self.taxes]
|
||||
|
||||
return line
|
||||
|
||||
|
||||
class TaxLineTemplate(ModelSQL, ModelView):
|
||||
'Account Tax Line Template'
|
||||
__name__ = 'account.tax.line.template'
|
||||
line = fields.Many2One(
|
||||
'account.move.line.template', "Line",
|
||||
required=True, ondelete='CASCADE')
|
||||
amount = fields.Char('Amount', required=True,
|
||||
help="A python expression that will be evaluated with the keywords.")
|
||||
type = fields.Selection([
|
||||
('tax', "Tax"),
|
||||
('base', "Base"),
|
||||
], "Type", required=True)
|
||||
|
||||
tax = fields.Many2One('account.tax', 'Tax',
|
||||
domain=[
|
||||
('company', '=', Eval('_parent_line', {}
|
||||
).get('_parent_move', {}).get('company', -1)),
|
||||
],
|
||||
depends={'line'})
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.__access__.add('line')
|
||||
|
||||
def get_line(self, values):
|
||||
'Return the tax line for the keyword values'
|
||||
pool = Pool()
|
||||
TaxLine = pool.get('account.tax.line')
|
||||
|
||||
line = TaxLine()
|
||||
try:
|
||||
amount = simple_eval(decistmt(self.amount),
|
||||
functions={'Decimal': Decimal}, names=values)
|
||||
except (InvalidExpression, SyntaxError) as e:
|
||||
raise MoveTemplateExpressionError(
|
||||
gettext('account.msg_template_invalid_expression',
|
||||
expression=values,
|
||||
template=self.line.rec_name,
|
||||
error=e)) from e
|
||||
|
||||
if not isinstance(amount, Decimal):
|
||||
raise MoveTemplateExpressionError(
|
||||
gettext('account.msg_not_number',
|
||||
result=amount,
|
||||
expression=self.move.rec_name))
|
||||
amount = self.line.move.company.currency.round(amount)
|
||||
line.amount = amount
|
||||
line.type = self.type
|
||||
line.tax = self.tax
|
||||
return line
|
||||
|
||||
|
||||
class KeywordStateView(StateView):
|
||||
|
||||
def get_view(self, wizard, state_name):
|
||||
fields = {}
|
||||
view = {
|
||||
'model': 'account.move.template.create.keywords',
|
||||
'view_id': 0,
|
||||
'type': 'form',
|
||||
'fields': fields,
|
||||
}
|
||||
if not hasattr(wizard.template, 'template'):
|
||||
return view
|
||||
template = wizard.template.template
|
||||
field_template = ('<label name=%(name)s/>'
|
||||
'<field name=%(name)s/>')
|
||||
view['arch'] = ('<?xml version="1.0"?>'
|
||||
'<form col="2" string=%s>%s</form>' % (
|
||||
quoteattr(template.name),
|
||||
''.join(field_template % {'name': quoteattr(keyword.name)}
|
||||
for keyword in template.keywords)
|
||||
))
|
||||
for keyword in template.keywords:
|
||||
fields[keyword.name] = keyword.get_field()
|
||||
return view
|
||||
|
||||
def get_defaults(self, wizard, state_name, fields):
|
||||
return {}
|
||||
|
||||
|
||||
class CreateMove(Wizard):
|
||||
'Create Move from Template'
|
||||
__name__ = 'account.move.template.create'
|
||||
start = StateTransition()
|
||||
template = StateView('account.move.template.create.template',
|
||||
'account.move_template_create_template_view_form', [
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('Next', 'keywords', 'tryton-forward', default=True),
|
||||
])
|
||||
keywords = KeywordStateView('account.move.template.create.keywords',
|
||||
None, [
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('Create', 'create_', 'tryton-ok', default=True),
|
||||
])
|
||||
create_ = StateTransition()
|
||||
open_ = StateAction('account.act_move_from_template')
|
||||
|
||||
def create_move(self):
|
||||
template = self.template.template
|
||||
values = {}
|
||||
for keyword in template.keywords:
|
||||
values[keyword.name] = getattr(self.keywords, keyword.name, None)
|
||||
move = template.get_move(values)
|
||||
move.date = self.template.date
|
||||
move.period = self.template.period
|
||||
move.save()
|
||||
return move
|
||||
|
||||
def transition_start(self):
|
||||
context = Transaction().context
|
||||
action_id = context.get('action_id')
|
||||
period = context.get('period')
|
||||
if self.model and self.model.__name__ == 'account.move.line':
|
||||
# Template id is used as action
|
||||
self.template.template = action_id
|
||||
self.template.period = period
|
||||
return 'keywords'
|
||||
else:
|
||||
return 'template'
|
||||
|
||||
def transition_create_(self):
|
||||
if self.model and self.model.__name__ == 'account.move.line':
|
||||
self.create_move()
|
||||
return 'end'
|
||||
else:
|
||||
return 'open_'
|
||||
|
||||
def do_open_(self, action):
|
||||
move = self.create_move()
|
||||
return action, {'res_id': move.id}
|
||||
|
||||
def end(self):
|
||||
if self.model and self.model.__name__ == 'account.move.line':
|
||||
return 'reload'
|
||||
|
||||
|
||||
class CreateMoveTemplate(ModelView):
|
||||
'Create Move from Template'
|
||||
__name__ = 'account.move.template.create.template'
|
||||
template = fields.Many2One('account.move.template', 'Template',
|
||||
required=True,
|
||||
domain=[
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
])
|
||||
date = fields.Date('Effective Date', required=True)
|
||||
period = fields.Many2One('account.period', 'Period', required=True,
|
||||
domain=[
|
||||
('state', '!=', 'closed'),
|
||||
('fiscalyear.company.id', '=',
|
||||
Eval('context', {}).get('company', 0)),
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def default_date(cls):
|
||||
pool = Pool()
|
||||
Date = pool.get('ir.date')
|
||||
return Date.today()
|
||||
|
||||
@classmethod
|
||||
def default_period(cls):
|
||||
pool = Pool()
|
||||
Period = pool.get('account.period')
|
||||
company = Transaction().context.get('company')
|
||||
try:
|
||||
period = Period.find(company)
|
||||
except PeriodNotFoundError:
|
||||
return None
|
||||
return period.id
|
||||
|
||||
@fields.depends('date', 'period')
|
||||
def on_change_date(self):
|
||||
pool = Pool()
|
||||
Period = pool.get('account.period')
|
||||
company = Transaction().context.get('company')
|
||||
if self.date:
|
||||
if (not self.period
|
||||
or not (
|
||||
self.period.start_date <= self.date
|
||||
<= self.period.end_date)):
|
||||
try:
|
||||
self.period = Period.find(company, date=self.date)
|
||||
except PeriodNotFoundError:
|
||||
pass
|
||||
|
||||
@fields.depends('period', 'date')
|
||||
def on_change_period(self):
|
||||
pool = Pool()
|
||||
Date = pool.get('ir.date')
|
||||
today = Date.today()
|
||||
if self.period:
|
||||
start_date = self.period.start_date
|
||||
end_date = self.period.end_date
|
||||
if (not self.date
|
||||
or not (start_date <= self.date <= end_date)):
|
||||
if start_date <= today:
|
||||
if today <= end_date:
|
||||
self.date = today
|
||||
else:
|
||||
self.date = end_date
|
||||
else:
|
||||
self.date = start_date
|
||||
|
||||
|
||||
class CreateMoveKeywords(ModelView):
|
||||
'Create Move from Template'
|
||||
__no_slots__ = True
|
||||
__name__ = 'account.move.template.create.keywords'
|
||||
144
modules/account/move_template.xml
Executable file
144
modules/account/move_template.xml
Executable file
@@ -0,0 +1,144 @@
|
||||
<?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="move_template_view_form">
|
||||
<field name="model">account.move.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_template_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="move_template_view_list">
|
||||
<field name="model">account.move.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">move_template_list</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_move_template_form">
|
||||
<field name="name">Moves</field>
|
||||
<field name="res_model">account.move.template</field>
|
||||
<field name="domain"
|
||||
eval="[('company', '=', Eval('context', {}).get('company', -1))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_move_template_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="move_template_view_list"/>
|
||||
<field name="act_window" ref="act_move_template_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_move_template_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="move_template_view_form"/>
|
||||
<field name="act_window" ref="act_move_template_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_templates"
|
||||
action="act_move_template_form"
|
||||
sequence="10"
|
||||
id="menu_move_template_form"/>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_move_template_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.move.template</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_move_template_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_move_template_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_move_template">
|
||||
<field name="model">account.move.template</field>
|
||||
<field name="perm_read" eval="False"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_move_template_account">
|
||||
<field name="model">account.move.template</field>
|
||||
<field name="group" ref="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>
|
||||
<record model="ir.model.access" id="access_move_template_account_admin">
|
||||
<field name="model">account.move.template</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_template_keyword_view_form">
|
||||
<field name="model">account.move.template.keyword</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_template_keyword_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="move_template_keyword_view_list">
|
||||
<field name="model">account.move.template.keyword</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">move_template_keyword_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="move_template_keyword_view_list_sequence">
|
||||
<field name="model">account.move.template.keyword</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">move_template_keyword_list_sequence</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_template_view_form">
|
||||
<field name="model">account.move.line.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_line_template_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="move_line_template_view_list">
|
||||
<field name="model">account.move.line.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">move_line_template_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_line_template_view_form">
|
||||
<field name="model">account.tax.line.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_line_template_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_line_template_view_list">
|
||||
<field name="model">account.tax.line.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_line_template_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_template_create_template_view_form">
|
||||
<field name="model">account.move.template.create.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">move_template_create_template_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_move_template_create">
|
||||
<field name="name">Create Move from Template</field>
|
||||
<field name="wiz_name">account.move.template.create</field>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_entries"
|
||||
action="act_move_template_create"
|
||||
sequence="20"
|
||||
id="menu_move_template_create"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_move_from_template">
|
||||
<field name="name">Account Move</field>
|
||||
<field name="res_model">account.move</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_move_from_template_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="move_view_form"/>
|
||||
<field name="act_window" ref="act_move_from_template"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
349
modules/account/party.py
Executable file
349
modules/account/party.py
Executable file
@@ -0,0 +1,349 @@
|
||||
# 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 sql import Literal, Null
|
||||
from sql.aggregate import Sum
|
||||
from sql.conditionals import Coalesce
|
||||
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import ModelSQL, fields
|
||||
from trytond.modules.company.model import (
|
||||
CompanyMultiValueMixin, CompanyValueMixin)
|
||||
from trytond.modules.currency.fields import Monetary
|
||||
from trytond.modules.party.exceptions import EraseError
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval, If
|
||||
from trytond.tools import grouped_slice, reduce_ids
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
from .exceptions import AccountMissing
|
||||
|
||||
account_names = [
|
||||
'account_payable', 'account_receivable',
|
||||
'customer_tax_rule', 'supplier_tax_rule']
|
||||
|
||||
|
||||
class Party(CompanyMultiValueMixin, metaclass=PoolMeta):
|
||||
__name__ = 'party.party'
|
||||
accounts = fields.One2Many('party.party.account', 'party', "Accounts")
|
||||
account_payable = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Account Payable",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.payable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
],
|
||||
states={
|
||||
'invisible': ~Eval('context', {}).get('company'),
|
||||
}))
|
||||
account_receivable = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Account Receivable",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.receivable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
],
|
||||
states={
|
||||
'invisible': ~Eval('context', {}).get('company'),
|
||||
}))
|
||||
customer_tax_rule = fields.MultiValue(fields.Many2One(
|
||||
'account.tax.rule', "Customer Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('kind', 'in', ['sale', 'both']),
|
||||
],
|
||||
states={
|
||||
'invisible': ~Eval('context', {}).get('company'),
|
||||
}, help='Apply this rule on taxes when party is customer.'))
|
||||
supplier_tax_rule = fields.MultiValue(fields.Many2One(
|
||||
'account.tax.rule', "Supplier Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('kind', 'in', ['purchase', 'both']),
|
||||
],
|
||||
states={
|
||||
'invisible': ~Eval('context', {}).get('company'),
|
||||
}, help='Apply this rule on taxes when party is supplier.'))
|
||||
currency = fields.Function(fields.Many2One(
|
||||
'currency.currency', "Currency"), 'get_currency')
|
||||
receivable = fields.Function(Monetary(
|
||||
"Receivable", currency='currency', digits='currency'),
|
||||
'get_receivable_payable', searcher='search_receivable_payable')
|
||||
payable = fields.Function(Monetary(
|
||||
"Payable", currency='currency', digits='currency'),
|
||||
'get_receivable_payable', searcher='search_receivable_payable')
|
||||
receivable_today = fields.Function(Monetary(
|
||||
"Receivable Today", currency='currency', digits='currency'),
|
||||
'get_receivable_payable', searcher='search_receivable_payable')
|
||||
payable_today = fields.Function(Monetary(
|
||||
"Payable Today", currency='currency', digits='currency'),
|
||||
'get_receivable_payable', searcher='search_receivable_payable')
|
||||
|
||||
@classmethod
|
||||
def multivalue_model(cls, field):
|
||||
pool = Pool()
|
||||
if field in account_names:
|
||||
return pool.get('party.party.account')
|
||||
return super(Party, cls).multivalue_model(field)
|
||||
|
||||
@classmethod
|
||||
def _default_tax_rule(cls, type_, **pattern):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('account.configuration')
|
||||
config = Configuration(1)
|
||||
assert type_ in {'customer', 'supplier'}
|
||||
tax_rule = config.get_multivalue(
|
||||
'default_%s_tax_rule' % type_, **pattern)
|
||||
return tax_rule.id if tax_rule else None
|
||||
|
||||
@classmethod
|
||||
def default_customer_tax_rule(cls, **pattern):
|
||||
return cls._default_tax_rule('customer', **pattern)
|
||||
|
||||
@classmethod
|
||||
def default_supplier_tax_rule(cls, **pattern):
|
||||
return cls._default_tax_rule('supplier', **pattern)
|
||||
|
||||
def get_currency(self, name):
|
||||
pool = Pool()
|
||||
Company = pool.get('company.company')
|
||||
company_id = Transaction().context.get('company')
|
||||
if company_id is not None and company_id >= 0:
|
||||
company = Company(company_id)
|
||||
return company.currency
|
||||
|
||||
@classmethod
|
||||
def get_receivable_payable(cls, parties, names):
|
||||
'''
|
||||
Function to compute receivable, payable (today or not) for party ids.
|
||||
'''
|
||||
result = {}
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Account = pool.get('account.account')
|
||||
AccountType = pool.get('account.account.type')
|
||||
User = pool.get('res.user')
|
||||
Date = pool.get('ir.date')
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
line = MoveLine.__table__()
|
||||
account = Account.__table__()
|
||||
account_type = AccountType.__table__()
|
||||
|
||||
for name in names:
|
||||
if name not in ('receivable', 'payable',
|
||||
'receivable_today', 'payable_today'):
|
||||
raise Exception('Bad argument')
|
||||
result[name] = dict((p.id, Decimal('0.0')) for p in parties)
|
||||
|
||||
user = User(Transaction().user)
|
||||
if not user.company:
|
||||
return result
|
||||
company_id = user.company.id
|
||||
exp = Decimal(str(10.0 ** -user.company.currency.digits))
|
||||
with Transaction().set_context(company=company_id):
|
||||
today = Date.today()
|
||||
|
||||
amount = Sum(Coalesce(line.debit, 0) - Coalesce(line.credit, 0))
|
||||
for name in names:
|
||||
code = name
|
||||
today_where = Literal(True)
|
||||
if name in ('receivable_today', 'payable_today'):
|
||||
code = name[:-6]
|
||||
today_where = ((line.maturity_date <= today)
|
||||
| (line.maturity_date == Null))
|
||||
for sub_parties in grouped_slice(parties):
|
||||
sub_ids = [p.id for p in sub_parties]
|
||||
party_where = reduce_ids(line.party, sub_ids)
|
||||
cursor.execute(*line.join(account,
|
||||
condition=account.id == line.account
|
||||
).join(account_type,
|
||||
condition=account.type == account_type.id
|
||||
).select(line.party, amount,
|
||||
where=(getattr(account_type, code)
|
||||
& (line.reconciliation == Null)
|
||||
& (account.company == company_id)
|
||||
& party_where
|
||||
& today_where),
|
||||
group_by=line.party))
|
||||
for party, value in cursor:
|
||||
# SQLite uses float for SUM
|
||||
if not isinstance(value, Decimal):
|
||||
value = Decimal(str(value))
|
||||
result[name][party] = value.quantize(exp)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def search_receivable_payable(cls, name, clause):
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Account = pool.get('account.account')
|
||||
AccountType = pool.get('account.account.type')
|
||||
User = pool.get('res.user')
|
||||
Date = pool.get('ir.date')
|
||||
|
||||
line = MoveLine.__table__()
|
||||
account = Account.__table__()
|
||||
account_type = AccountType.__table__()
|
||||
|
||||
if name not in ('receivable', 'payable',
|
||||
'receivable_today', 'payable_today'):
|
||||
raise Exception('Bad argument')
|
||||
_, operator, value = clause
|
||||
|
||||
user = User(Transaction().user)
|
||||
if not user.company:
|
||||
return []
|
||||
company_id = user.company.id
|
||||
with Transaction().set_context(company=company_id):
|
||||
today = Date.today()
|
||||
|
||||
code = name
|
||||
today_query = Literal(True)
|
||||
if name in ('receivable_today', 'payable_today'):
|
||||
code = name[:-6]
|
||||
today_query = ((line.maturity_date <= today)
|
||||
| (line.maturity_date == Null))
|
||||
|
||||
Operator = fields.SQL_OPERATORS[operator]
|
||||
|
||||
# Need to cast numeric for sqlite
|
||||
cast_ = MoveLine.debit.sql_cast
|
||||
amount = cast_(Sum(Coalesce(line.debit, 0) - Coalesce(line.credit, 0)))
|
||||
if operator in {'in', 'not in'}:
|
||||
value = [cast_(Literal(Decimal(v or 0))) for v in value]
|
||||
else:
|
||||
value = cast_(Literal(Decimal(value or 0)))
|
||||
query = (line.join(account, condition=account.id == line.account
|
||||
).join(account_type, condition=account.type == account_type.id
|
||||
).select(line.party,
|
||||
where=(getattr(account_type, code)
|
||||
& (line.party != Null)
|
||||
& (line.reconciliation == Null)
|
||||
& (account.company == company_id)
|
||||
& today_query),
|
||||
group_by=line.party,
|
||||
having=Operator(amount, value)))
|
||||
return [('id', 'in', query)]
|
||||
|
||||
@property
|
||||
def account_payable_used(self):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('account.configuration')
|
||||
account = self.account_payable
|
||||
if not account:
|
||||
with Transaction().set_context(self._context):
|
||||
config = Configuration(1)
|
||||
account = config.get_multivalue('default_account_payable')
|
||||
# Allow empty values on on_change
|
||||
if not account and not Transaction().readonly:
|
||||
raise AccountMissing(
|
||||
gettext('account.msg_party_missing_payable_account',
|
||||
party=self.rec_name))
|
||||
if account:
|
||||
return account.current()
|
||||
|
||||
@property
|
||||
def account_receivable_used(self):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('account.configuration')
|
||||
account = self.account_receivable
|
||||
if not account:
|
||||
with Transaction().set_context(self._context):
|
||||
config = Configuration(1)
|
||||
account = config.get_multivalue('default_account_receivable')
|
||||
# Allow empty values on on_change
|
||||
if not account and not Transaction().readonly:
|
||||
raise AccountMissing(
|
||||
gettext('account.msg_party_missing_receivable_account',
|
||||
party=self.rec_name))
|
||||
if account:
|
||||
return account.current()
|
||||
|
||||
@classmethod
|
||||
def view_attributes(cls):
|
||||
return super().view_attributes() + [
|
||||
('/tree/field[@name="receivable_today"]',
|
||||
'visual', If(Eval('receivable_today', 0) > 0, 'danger', '')),
|
||||
('/tree/field[@name="payable_today"]',
|
||||
'visual', If(Eval('payable_today', 0) < 0, 'warning', '')),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def copy(cls, parties, default=None):
|
||||
default = default.copy() if default else {}
|
||||
if Transaction().check_access:
|
||||
fields = [
|
||||
'accounts',
|
||||
'account_payable', 'account_receivable',
|
||||
'customer_tax_rule', 'supplier_tax_rule']
|
||||
default_values = cls.default_get(fields, with_rec_name=False)
|
||||
for fname in fields:
|
||||
default.setdefault(fname, default_values.get(fname))
|
||||
return super().copy(parties, default=default)
|
||||
|
||||
|
||||
class PartyAccount(ModelSQL, CompanyValueMixin):
|
||||
"Party Account"
|
||||
__name__ = 'party.party.account'
|
||||
party = fields.Many2One(
|
||||
'party.party', "Party", ondelete='CASCADE',
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends={'company'})
|
||||
account_payable = fields.Many2One(
|
||||
'account.account', "Account Payable",
|
||||
domain=[
|
||||
('type.payable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
],
|
||||
ondelete='RESTRICT')
|
||||
account_receivable = fields.Many2One(
|
||||
'account.account', "Account Receivable",
|
||||
domain=[
|
||||
('type.receivable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
],
|
||||
ondelete='RESTRICT')
|
||||
customer_tax_rule = fields.Many2One(
|
||||
'account.tax.rule', "Customer Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('company', -1)),
|
||||
('kind', 'in', ['sale', 'both']),
|
||||
],
|
||||
ondelete='RESTRICT')
|
||||
supplier_tax_rule = fields.Many2One(
|
||||
'account.tax.rule', "Supplier Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('company', -1)),
|
||||
('kind', 'in', ['purchase', 'both']),
|
||||
],
|
||||
ondelete='RESTRICT')
|
||||
|
||||
|
||||
class PartyReplace(metaclass=PoolMeta):
|
||||
__name__ = 'party.replace'
|
||||
|
||||
@classmethod
|
||||
def fields_to_replace(cls):
|
||||
return super(PartyReplace, cls).fields_to_replace() + [
|
||||
('account.move.line', 'party'),
|
||||
]
|
||||
|
||||
|
||||
class PartyErase(metaclass=PoolMeta):
|
||||
__name__ = 'party.erase'
|
||||
|
||||
def check_erase_company(self, party, company):
|
||||
super(PartyErase, self).check_erase_company(party, company)
|
||||
if party.receivable or party.payable:
|
||||
raise EraseError(
|
||||
gettext('account.msg_erase_party_receivable_payable',
|
||||
party=party.rec_name,
|
||||
company=company.rec_name))
|
||||
88
modules/account/party.xml
Executable file
88
modules/account/party.xml
Executable file
@@ -0,0 +1,88 @@
|
||||
<?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="party_view_tree">
|
||||
<field name="model">party.party</field>
|
||||
<field name="inherit" ref="party.party_view_tree"/>
|
||||
<field name="name">party_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="party_view_form">
|
||||
<field name="model">party.party</field>
|
||||
<field name="inherit" ref="party.party_view_form"/>
|
||||
<field name="name">party_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_accounts">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">accounts</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_accounts_account_party">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">accounts</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_account_payable">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">account_payable</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_account_payable_account_party">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">account_payable</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_account_receivable">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">account_receivable</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_account_receivable_account_party">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">account_receivable</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_customer_tax_rule">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">customer_tax_rule</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_customer_tax_rule_account_party">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">customer_tax_rule</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_party_supplier_tax_rule">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">supplier_tax_rule</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_party_supplier_tax_rule_account_party">
|
||||
<field name="model">party.party</field>
|
||||
<field name="field">supplier_tax_rule</field>
|
||||
<field name="group" ref="group_account_party"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
417
modules/account/period.py
Executable file
417
modules/account/period.py
Executable file
@@ -0,0 +1,417 @@
|
||||
# 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.cache import Cache
|
||||
from trytond.const import OPERATORS
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import Index, ModelSQL, ModelView, Workflow, fields
|
||||
from trytond.model.exceptions import AccessError
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Eval, Id
|
||||
from trytond.tools import grouped_slice
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
from .exceptions import (
|
||||
ClosePeriodError, PeriodDatesError, PeriodNotFoundError,
|
||||
PeriodSequenceError)
|
||||
|
||||
_STATES = {
|
||||
'readonly': Eval('state') != 'open',
|
||||
}
|
||||
|
||||
|
||||
class Period(Workflow, ModelSQL, ModelView):
|
||||
'Period'
|
||||
__name__ = 'account.period'
|
||||
name = fields.Char('Name', required=True)
|
||||
start_date = fields.Date('Starting Date', required=True, states=_STATES,
|
||||
domain=[('start_date', '<=', Eval('end_date', None))])
|
||||
end_date = fields.Date('Ending Date', required=True, states=_STATES,
|
||||
domain=[('end_date', '>=', Eval('start_date', None))])
|
||||
fiscalyear = fields.Many2One(
|
||||
'account.fiscalyear', "Fiscal Year", required=True, states=_STATES)
|
||||
state = fields.Selection([
|
||||
('open', 'Open'),
|
||||
('closed', 'Closed'),
|
||||
('locked', 'Locked'),
|
||||
], 'State', readonly=True, required=True, sort=False)
|
||||
post_move_sequence = fields.Many2One('ir.sequence', 'Post Move Sequence',
|
||||
domain=[
|
||||
('sequence_type', '=',
|
||||
Id('account', 'sequence_type_account_move')),
|
||||
['OR',
|
||||
('company', '=', None),
|
||||
('company', '=', Eval('company', -1)),
|
||||
],
|
||||
])
|
||||
type = fields.Selection([
|
||||
('standard', 'Standard'),
|
||||
('adjustment', 'Adjustment'),
|
||||
], 'Type', required=True,
|
||||
states=_STATES)
|
||||
company = fields.Function(fields.Many2One('company.company', 'Company',),
|
||||
'on_change_with_company', searcher='search_company')
|
||||
icon = fields.Function(fields.Char("Icon"), 'get_icon')
|
||||
_find_cache = Cache(__name__ + '.find', context=False)
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Period, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls.__access__.add('fiscalyear')
|
||||
cls._sql_indexes.add(
|
||||
Index(
|
||||
t,
|
||||
(t.start_date, Index.Range()),
|
||||
(t.end_date, Index.Range()),
|
||||
order='DESC'))
|
||||
cls._order.insert(0, ('start_date', 'DESC'))
|
||||
cls._transitions |= set((
|
||||
('open', 'closed'),
|
||||
('closed', 'locked'),
|
||||
('closed', 'open'),
|
||||
))
|
||||
cls._buttons.update({
|
||||
'close': {
|
||||
'invisible': Eval('state') != 'open',
|
||||
'depends': ['state'],
|
||||
},
|
||||
'reopen': {
|
||||
'invisible': Eval('state') != 'closed',
|
||||
'depends': ['state'],
|
||||
},
|
||||
'lock_': {
|
||||
'invisible': Eval('state') != 'closed',
|
||||
'depends': ['state'],
|
||||
},
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module):
|
||||
cursor = Transaction().connection.cursor()
|
||||
t = cls.__table__()
|
||||
super().__register__(module)
|
||||
# Migration from 6.8: rename state close to closed
|
||||
cursor.execute(
|
||||
*t.update([t.state], ['closed'], where=t.state == 'close'))
|
||||
|
||||
@staticmethod
|
||||
def default_state():
|
||||
return 'open'
|
||||
|
||||
@staticmethod
|
||||
def default_type():
|
||||
return 'standard'
|
||||
|
||||
@fields.depends('fiscalyear', '_parent_fiscalyear.company')
|
||||
def on_change_with_company(self, name=None):
|
||||
return self.fiscalyear.company if self.fiscalyear else None
|
||||
|
||||
@classmethod
|
||||
def search_company(cls, name, clause):
|
||||
return [('fiscalyear.' + clause[0],) + tuple(clause[1:])]
|
||||
|
||||
def get_icon(self, name):
|
||||
return {
|
||||
'open': 'tryton-account-open',
|
||||
'closed': 'tryton-account-close',
|
||||
'locked': 'tryton-account-block',
|
||||
}.get(self.state)
|
||||
|
||||
@classmethod
|
||||
def validate_fields(cls, periods, field_names):
|
||||
super().validate_fields(periods, field_names)
|
||||
cls.check_dates(periods, field_names)
|
||||
cls.check_fiscalyear_dates(periods, field_names)
|
||||
cls.check_move_dates(periods, field_names)
|
||||
cls.check_post_move_sequence(periods, field_names)
|
||||
|
||||
@classmethod
|
||||
def check_dates(cls, periods, field_names=None):
|
||||
if field_names and not (
|
||||
field_names & {
|
||||
'start_date', 'end_date', 'fiscalyear', 'type'}):
|
||||
return
|
||||
transaction = Transaction()
|
||||
connection = transaction.connection
|
||||
cls.lock()
|
||||
table = cls.__table__()
|
||||
cursor = connection.cursor()
|
||||
for period in periods:
|
||||
if period.type != 'standard':
|
||||
continue
|
||||
cursor.execute(*table.select(table.id,
|
||||
where=(((table.start_date <= period.start_date)
|
||||
& (table.end_date >= period.start_date))
|
||||
| ((table.start_date <= period.end_date)
|
||||
& (table.end_date >= period.end_date))
|
||||
| ((table.start_date >= period.start_date)
|
||||
& (table.end_date <= period.end_date)))
|
||||
& (table.fiscalyear == period.fiscalyear.id)
|
||||
& (table.type == 'standard')
|
||||
& (table.id != period.id)))
|
||||
period_id = cursor.fetchone()
|
||||
if period_id:
|
||||
overlapping_period = cls(period_id[0])
|
||||
raise PeriodDatesError(
|
||||
gettext('account.msg_period_overlap',
|
||||
first=period.rec_name,
|
||||
second=overlapping_period.rec_name))
|
||||
|
||||
@classmethod
|
||||
def check_fiscalyear_dates(cls, periods, field_names=None):
|
||||
if field_names and not (
|
||||
field_names & {
|
||||
'start_date', 'end_date', 'fiscalyear'}):
|
||||
return
|
||||
for period in periods:
|
||||
fiscalyear = period.fiscalyear
|
||||
if (period.start_date < fiscalyear.start_date
|
||||
or period.end_date > fiscalyear.end_date):
|
||||
raise PeriodDatesError(
|
||||
gettext('account.msg_period_fiscalyear_dates',
|
||||
period=period.rec_name,
|
||||
fiscalyear=fiscalyear.rec_name))
|
||||
|
||||
@classmethod
|
||||
def check_move_dates(cls, periods, field_names=None):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
Lang = pool.get('ir.lang')
|
||||
if field_names and not (field_names & {'start_date', 'end_date'}):
|
||||
return
|
||||
lang = Lang.get()
|
||||
|
||||
for sub_periods in grouped_slice(periods):
|
||||
domain = ['OR']
|
||||
for period in sub_periods:
|
||||
domain.append([
|
||||
('period', '=', period.id),
|
||||
['OR',
|
||||
('date', '<', period.start_date),
|
||||
('date', '>', period.end_date),
|
||||
],
|
||||
])
|
||||
moves = Move.search(domain, limit=1)
|
||||
if moves:
|
||||
move, = moves
|
||||
raise PeriodDatesError(
|
||||
gettext('account.msg_period_move_dates',
|
||||
period=move.period.rec_name,
|
||||
move=move.rec_name,
|
||||
move_date=lang.strftime(move.date)))
|
||||
|
||||
@classmethod
|
||||
def check_post_move_sequence(cls, periods, field_names=None):
|
||||
if field_names and not (
|
||||
field_names & {'post_move_sequence', 'fiscalyear'}):
|
||||
return
|
||||
for period in periods:
|
||||
if not period.post_move_sequence:
|
||||
continue
|
||||
periods = cls.search([
|
||||
('post_move_sequence', '=', period.post_move_sequence.id),
|
||||
('fiscalyear', '!=', period.fiscalyear.id),
|
||||
])
|
||||
if periods:
|
||||
raise PeriodSequenceError(
|
||||
gettext('account.msg_period_same_sequence',
|
||||
first=period.rec_name,
|
||||
second=periods[0].rec_name))
|
||||
|
||||
@classmethod
|
||||
def find(cls, company, date=None, test_state=True):
|
||||
'''
|
||||
Return the period for the company at the date or the current date
|
||||
or raise PeriodNotFoundError.
|
||||
If test_state is true, it searches on non-closed periods
|
||||
'''
|
||||
pool = Pool()
|
||||
Date = pool.get('ir.date')
|
||||
Lang = pool.get('ir.lang')
|
||||
Company = pool.get('company.company')
|
||||
|
||||
company_id = int(company) if company is not None else None
|
||||
if not date:
|
||||
with Transaction().set_context(company=company_id):
|
||||
date = Date.today()
|
||||
key = (company_id, date, test_state)
|
||||
period = cls._find_cache.get(key, -1)
|
||||
if period is not None and period < 0:
|
||||
clause = [
|
||||
('start_date', '<=', date),
|
||||
('end_date', '>=', date),
|
||||
('fiscalyear.company', '=', company_id),
|
||||
('type', '=', 'standard'),
|
||||
]
|
||||
periods = cls.search(
|
||||
clause, order=[('start_date', 'DESC')], limit=1)
|
||||
if periods:
|
||||
period, = periods
|
||||
else:
|
||||
period = None
|
||||
cls._find_cache.set(key, int(period) if period else None)
|
||||
elif period is not None:
|
||||
period = cls(period)
|
||||
found = period and (not test_state or period.state == 'open')
|
||||
if not found:
|
||||
lang = Lang.get()
|
||||
if company is not None and not isinstance(company, Company):
|
||||
company = Company(company)
|
||||
if not period:
|
||||
raise PeriodNotFoundError(
|
||||
gettext('account.msg_no_period_date',
|
||||
date=lang.strftime(date),
|
||||
company=company.rec_name if company else ''))
|
||||
else:
|
||||
raise PeriodNotFoundError(
|
||||
gettext('account.msg_no_open_period_date',
|
||||
date=lang.strftime(date),
|
||||
period=period.rec_name,
|
||||
company=company.rec_name if company else ''))
|
||||
else:
|
||||
return period
|
||||
|
||||
@classmethod
|
||||
def search(cls, args, offset=0, limit=None, order=None, count=False,
|
||||
query=False):
|
||||
args = args[:]
|
||||
|
||||
def process_args(args):
|
||||
i = 0
|
||||
while i < len(args):
|
||||
# add test for xmlrpc and pyson that doesn't handle tuple
|
||||
if ((
|
||||
isinstance(args[i], tuple)
|
||||
or (isinstance(args[i], list) and len(args[i]) > 2
|
||||
and args[i][1] in OPERATORS))
|
||||
and args[i][0] in ('start_date', 'end_date')
|
||||
and isinstance(args[i][2], (list, tuple))):
|
||||
if not args[i][2][0]:
|
||||
args[i] = ('id', '!=', '0')
|
||||
else:
|
||||
period = cls(args[i][2][0])
|
||||
args[i] = (args[i][0], args[i][1],
|
||||
getattr(period, args[i][2][1]))
|
||||
elif isinstance(args[i], list):
|
||||
process_args(args[i])
|
||||
i += 1
|
||||
process_args(args)
|
||||
return super(Period, cls).search(args, offset=offset, limit=limit,
|
||||
order=order, count=count, query=query)
|
||||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
FiscalYear = Pool().get('account.fiscalyear')
|
||||
vlist = [x.copy() for x in vlist]
|
||||
for vals in vlist:
|
||||
if vals.get('fiscalyear'):
|
||||
fiscalyear = FiscalYear(vals['fiscalyear'])
|
||||
if fiscalyear.state != 'open':
|
||||
raise AccessError(
|
||||
gettext('account.msg_create_period_closed_fiscalyear',
|
||||
fiscalyear=fiscalyear.rec_name))
|
||||
if not vals.get('post_move_sequence'):
|
||||
vals['post_move_sequence'] = (
|
||||
fiscalyear.post_move_sequence.id)
|
||||
periods = super(Period, cls).create(vlist)
|
||||
cls._find_cache.clear()
|
||||
return periods
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
Move = Pool().get('account.move')
|
||||
actions = iter(args)
|
||||
args = []
|
||||
for periods, values in zip(actions, actions):
|
||||
if values.get('state') == 'open':
|
||||
for period in periods:
|
||||
if period.fiscalyear.state != 'open':
|
||||
raise AccessError(
|
||||
gettext(
|
||||
'account.msg_open_period_closed_fiscalyear',
|
||||
period=period.rec_name,
|
||||
fiscalyear=period.fiscalyear.rec_name))
|
||||
if values.get('post_move_sequence'):
|
||||
for period in periods:
|
||||
if (period.post_move_sequence
|
||||
and period.post_move_sequence.id
|
||||
!= values['post_move_sequence']):
|
||||
if Move.search([
|
||||
('period', '=', period.id),
|
||||
('state', '=', 'posted'),
|
||||
]):
|
||||
raise AccessError(
|
||||
gettext('account'
|
||||
'.msg_change_period_post_move_sequence',
|
||||
period=period.rec_name))
|
||||
args.extend((periods, values))
|
||||
super(Period, cls).write(*args)
|
||||
cls._find_cache.clear()
|
||||
|
||||
@classmethod
|
||||
def delete(cls, periods):
|
||||
super(Period, cls).delete(periods)
|
||||
cls._find_cache.clear()
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('closed')
|
||||
def close(cls, periods):
|
||||
pool = Pool()
|
||||
JournalPeriod = pool.get('account.journal.period')
|
||||
Move = pool.get('account.move')
|
||||
Account = pool.get('account.account')
|
||||
transaction = Transaction()
|
||||
|
||||
# Lock period and move to be sure no new record will be created
|
||||
JournalPeriod.lock()
|
||||
Move.lock()
|
||||
|
||||
for period in periods:
|
||||
with transaction.set_context(
|
||||
fiscalyear=period.fiscalyear.id, date=period.end_date,
|
||||
cumulate=True, journal=None):
|
||||
for account in Account.search([
|
||||
('company', '=', period.company.id),
|
||||
('end_date', '>=', period.start_date),
|
||||
('end_date', '<=', period.end_date),
|
||||
]):
|
||||
if account.balance:
|
||||
raise ClosePeriodError(
|
||||
gettext('account.'
|
||||
'msg_close_period_inactive_accounts',
|
||||
account=account.rec_name,
|
||||
period=period.rec_name))
|
||||
|
||||
unposted_moves = Move.search([
|
||||
('period', 'in', [p.id for p in periods]),
|
||||
('state', '!=', 'posted'),
|
||||
], limit=1)
|
||||
if unposted_moves:
|
||||
unposted_move, = unposted_moves
|
||||
raise ClosePeriodError(
|
||||
gettext('account.msg_close_period_non_posted_moves',
|
||||
period=unposted_move.period.rec_name,
|
||||
moves=unposted_move.rec_name))
|
||||
journal_periods = JournalPeriod.search([
|
||||
('period', 'in', [p.id for p in periods]),
|
||||
])
|
||||
JournalPeriod.close(journal_periods)
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('open')
|
||||
def reopen(cls, periods):
|
||||
"Re-open period"
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('locked')
|
||||
def lock_(cls, periods):
|
||||
pass
|
||||
|
||||
@property
|
||||
def post_move_sequence_used(self):
|
||||
return self.post_move_sequence or self.fiscalyear.post_move_sequence
|
||||
96
modules/account/period.xml
Executable file
96
modules/account/period.xml
Executable file
@@ -0,0 +1,96 @@
|
||||
<?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="period_view_form">
|
||||
<field name="model">account.period</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">period_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="period_view_tree">
|
||||
<field name="model">account.period</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">period_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="period_view_list_close">
|
||||
<field name="model">account.period</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">period_list_close</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_period_form">
|
||||
<field name="name">Periods</field>
|
||||
<field name="res_model">account.period</field>
|
||||
<field name="domain"
|
||||
eval="[('company', '=', Eval('context', {}).get('company', -1))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_period_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="period_view_tree"/>
|
||||
<field name="act_window" ref="act_period_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_period_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="period_view_form"/>
|
||||
<field name="act_window" ref="act_period_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_fiscalyear_configuration"
|
||||
action="act_period_form"
|
||||
sequence="20"
|
||||
id="menu_period_form"/>
|
||||
|
||||
<record model="ir.model.button" id="period_close_button">
|
||||
<field name="model">account.period</field>
|
||||
<field name="name">close</field>
|
||||
<field name="string">Close</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="period_reopen_button">
|
||||
<field name="model">account.period</field>
|
||||
<field name="name">reopen</field>
|
||||
<field name="string">Re-Open</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="period_lock_button">
|
||||
<field name="model">account.period</field>
|
||||
<field name="name">lock_</field>
|
||||
<field name="string">Lock</field>
|
||||
<field name="confirm">Are you sure you want to lock the period?</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_period_form_close">
|
||||
<field name="name">Close Periods</field>
|
||||
<field name="res_model">account.period</field>
|
||||
<field name="search_value"
|
||||
eval="[('state', '=', 'open')]" pyson="1"/>
|
||||
<field name="order" eval="[('start_date', 'ASC'), ('id', 'ASC')]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_period_form_close_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="period_view_list_close"/>
|
||||
<field name="act_window" ref="act_period_form_close"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_processing"
|
||||
action="act_period_form_close"
|
||||
sequence="30"
|
||||
id="menu_close_period"/>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_period_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.period</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_period_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_period_companies"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
1943
modules/account/tax.py
Executable file
1943
modules/account/tax.py
Executable file
File diff suppressed because it is too large
Load Diff
538
modules/account/tax.xml
Executable file
538
modules/account/tax.xml
Executable file
@@ -0,0 +1,538 @@
|
||||
<?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>
|
||||
<menuitem
|
||||
name="Taxes"
|
||||
parent="menu_account_configuration"
|
||||
sequence="50"
|
||||
id="menu_taxes"/>
|
||||
|
||||
<record model="ir.ui.view" id="tax_group_view_form">
|
||||
<field name="model">account.tax.group</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_group_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_group_view_tree">
|
||||
<field name="model">account.tax.group</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_group_tree</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_tax_group_form">
|
||||
<field name="name">Groups</field>
|
||||
<field name="res_model">account.tax.group</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_group_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_group_view_tree"/>
|
||||
<field name="act_window" ref="act_tax_group_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_group_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="tax_group_view_form"/>
|
||||
<field name="act_window" ref="act_tax_group_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_taxes"
|
||||
action="act_tax_group_form"
|
||||
sequence="20"
|
||||
id="menu_tax_group_form"/>
|
||||
|
||||
<record model="ir.model.access" id="access_tax_group">
|
||||
<field name="model">account.tax.group</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_tax_group_account_admin">
|
||||
<field name="model">account.tax.group</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_code_template_view_form">
|
||||
<field name="model">account.tax.code.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_code_template_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_code_template_view_tree">
|
||||
<field name="model">account.tax.code.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">tax_code_template_tree</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_tax_code_template_tree">
|
||||
<field name="name">Tax Codes</field>
|
||||
<field name="res_model">account.tax.code.template</field>
|
||||
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_code_template_tree_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_code_template_view_tree"/>
|
||||
<field name="act_window" ref="act_tax_code_template_tree"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_code_template_tree_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="tax_code_template_view_form"/>
|
||||
<field name="act_window" ref="act_tax_code_template_tree"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_templates"
|
||||
action="act_tax_code_template_tree"
|
||||
sequence="20"
|
||||
id="menu_tax_code_template_tree"/>
|
||||
|
||||
<record model="ir.model.access" id="access_tax_code_template">
|
||||
<field name="model">account.tax.code.template</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_code_view_form">
|
||||
<field name="model">account.tax.code</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_code_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_code_view_tree">
|
||||
<field name="model">account.tax.code</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">tax_code_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_code_view_list">
|
||||
<field name="model">account.tax.code</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_code_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_tax_code_tree">
|
||||
<field name="name">Codes</field>
|
||||
<field name="res_model">account.tax.code</field>
|
||||
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_code_tree_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_code_view_tree"/>
|
||||
<field name="act_window" ref="act_tax_code_tree"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_code_tree_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="tax_code_view_form"/>
|
||||
<field name="act_window" ref="act_tax_code_tree"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_taxes"
|
||||
action="act_tax_code_tree"
|
||||
sequence="20"
|
||||
id="menu_tax_code_tree"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_tax_code_list">
|
||||
<field name="name">Codes</field>
|
||||
<field name="res_model">account.tax.code</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_code_list_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_code_view_list"/>
|
||||
<field name="act_window" ref="act_tax_code_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_code_list_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="tax_code_view_form"/>
|
||||
<field name="act_window" ref="act_tax_code_list"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_tax_code_tree"
|
||||
action="act_tax_code_list"
|
||||
sequence="10"
|
||||
id="menu_tax_code_list"/>
|
||||
|
||||
<record model="ir.ui.view" id="tax_code_view_tree_chart">
|
||||
<field name="model">account.tax.code</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="name">tax_code_tree_chart</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_tax_code_tree_chart">
|
||||
<field name="name">Chart of Tax Codes</field>
|
||||
<field name="res_model">account.tax.code</field>
|
||||
<field name="context_model">account.tax.code.context</field>
|
||||
<field name="domain"
|
||||
eval="[('parent', '=', None), ('context_company', '=', True)]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_code_tree_chart_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_code_view_tree_chart"/>
|
||||
<field name="act_window" ref="act_tax_code_tree_chart"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
parent="menu_reporting"
|
||||
action="act_tax_code_tree_chart"
|
||||
sequence="30"
|
||||
id="menu_tax_code_tree_chart"/>
|
||||
|
||||
<record model="ir.ui.view" id="tax_code_context_view_form">
|
||||
<field name="model">account.tax.code.context</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_code_context_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_tax_code">
|
||||
<field name="model">account.tax.code</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_tax_code_account_admin">
|
||||
<field name="model">account.tax.code</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule.group" id="rule_group_tax_code_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.tax.code</field>
|
||||
<field name="global_p" eval="True" />
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_tax_code_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_tax_code_companies" />
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_code_line_template_view_form">
|
||||
<field name="model">account.tax.code.line.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_code_line_template_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_code_line_template_view_list">
|
||||
<field name="model">account.tax.code.line.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_code_line_template_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_code_line_view_form">
|
||||
<field name="model">account.tax.code.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_code_line_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_code_line_view_list">
|
||||
<field name="model">account.tax.code.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_code_line_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_template_view_form">
|
||||
<field name="model">account.tax.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_template_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_template_view_list">
|
||||
<field name="model">account.tax.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">tax_template_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_tax_template_list">
|
||||
<field name="name">Taxes</field>
|
||||
<field name="res_model">account.tax.template</field>
|
||||
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_template_list_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_template_view_list"/>
|
||||
<field name="act_window" ref="act_tax_template_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_template_list_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="tax_template_view_form"/>
|
||||
<field name="act_window" ref="act_tax_template_list"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_templates"
|
||||
action="act_tax_template_list"
|
||||
sequence="40"
|
||||
id="menu_tax_template_list"/>
|
||||
|
||||
<record model="ir.model.access" id="access_tax_template">
|
||||
<field name="model">account.tax.template</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_view_form">
|
||||
<field name="model">account.tax</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_view_list">
|
||||
<field name="model">account.tax</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">tax_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_tax_list">
|
||||
<field name="name">Taxes</field>
|
||||
<field name="res_model">account.tax</field>
|
||||
<field name="domain"
|
||||
eval="[('company', '=', Eval('company')), ('parent', '=', None)]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_list_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_view_list"/>
|
||||
<field name="act_window" ref="act_tax_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_list_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="tax_view_form"/>
|
||||
<field name="act_window" ref="act_tax_list"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_taxes"
|
||||
action="act_tax_list"
|
||||
sequence="10"
|
||||
id="menu_tax_list"/>
|
||||
|
||||
<record model="ir.model.access" id="access_tax">
|
||||
<field name="model">account.tax</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_tax_account_admin">
|
||||
<field name="model">account.tax</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_tax_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.tax</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_tax_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_tax_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wizard_tax_test">
|
||||
<field name="name">Test Tax</field>
|
||||
<field name="wiz_name">account.tax.test</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="wizard_tax_test_keyword1">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">account.tax,-1</field>
|
||||
<field name="action" ref="wizard_tax_test"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_taxes"
|
||||
action="wizard_tax_test"
|
||||
sequence="90"
|
||||
id="menu_tax_test"/>
|
||||
|
||||
<record model="ir.ui.view" id="tax_test_view_form">
|
||||
<field name="model">account.tax.test</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_test_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_test_result_view_list">
|
||||
<field name="model">account.tax.test.result</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_test_result_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_line_view_form">
|
||||
<field name="model">account.tax.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_line_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="tax_line_view_tree">
|
||||
<field name="model">account.tax.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_line_tree</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_tax_line_form">
|
||||
<field name="name">Tax Lines</field>
|
||||
<field name="res_model">account.tax.line</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_line_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_line_view_tree"/>
|
||||
<field name="act_window" ref="act_tax_line_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_line_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="tax_line_view_form"/>
|
||||
<field name="act_window" ref="act_tax_line_form"/>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="act_open_tax_code">
|
||||
<field name="name">Open Tax Code</field>
|
||||
<field name="wiz_name">account.tax.open_code</field>
|
||||
<field name="model">account.tax.code</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_tax_code_keyword">
|
||||
<field name="keyword">tree_open</field>
|
||||
<field name="model">account.tax.code,-1</field>
|
||||
<field name="action" ref="act_open_tax_code"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_rule_template_view_form">
|
||||
<field name="model">account.tax.rule.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_rule_template_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_rule_template_view_tree">
|
||||
<field name="model">account.tax.rule.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_rule_template_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_tax_rule_template_form">
|
||||
<field name="name">Tax Rules</field>
|
||||
<field name="res_model">account.tax.rule.template</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_rule_template_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_rule_template_view_tree"/>
|
||||
<field name="act_window" ref="act_tax_rule_template_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_rule_template_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="tax_rule_template_view_form"/>
|
||||
<field name="act_window" ref="act_tax_rule_template_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_templates"
|
||||
action="act_tax_rule_template_form"
|
||||
sequence="50"
|
||||
id="menu_tax_rule_template_form"/>
|
||||
|
||||
<record model="ir.model.access" id="access_tax_rule_template">
|
||||
<field name="model">account.tax.rule.template</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_rule_view_form">
|
||||
<field name="model">account.tax.rule</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_rule_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_rule_view_tree">
|
||||
<field name="model">account.tax.rule</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_rule_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_tax_rule_form">
|
||||
<field name="name">Rules</field>
|
||||
<field name="res_model">account.tax.rule</field>
|
||||
<field name="domain" eval="[('company', '=', Eval('company'))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_rule_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="tax_rule_view_tree"/>
|
||||
<field name="act_window" ref="act_tax_rule_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_tax_rule_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="tax_rule_view_form"/>
|
||||
<field name="act_window" ref="act_tax_rule_form"/>
|
||||
</record>
|
||||
<menuitem
|
||||
parent="menu_taxes"
|
||||
action="act_tax_rule_form"
|
||||
sequence="50"
|
||||
id="menu_tax_rule_form"/>
|
||||
|
||||
<record model="ir.model.access" id="access_tax_rule">
|
||||
<field name="model">account.tax.rule</field>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_tax_rule_account_admin">
|
||||
<field name="model">account.tax.rule</field>
|
||||
<field name="group" ref="group_account_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_tax_rule_companies">
|
||||
<field name="name">User in companies</field>
|
||||
<field name="model">account.tax.rule</field>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_tax_rule_companies">
|
||||
<field name="domain"
|
||||
eval="[('company', 'in', Eval('companies', []))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_tax_rule_companies"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_rule_line_template_view_form">
|
||||
<field name="model">account.tax.rule.line.template</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_rule_line_template_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_rule_line_template_view_tree">
|
||||
<field name="model">account.tax.rule.line.template</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">tax_rule_line_template_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_rule_line_view_form">
|
||||
<field name="model">account.tax.rule.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">tax_rule_line_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_rule_line_view_tree">
|
||||
<field name="model">account.tax.rule.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="name">tax_rule_line_tree</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="tax_rule_line_view_tree_sequence">
|
||||
<field name="model">account.tax.rule.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="20"/>
|
||||
<field name="name">tax_rule_line_tree_sequence</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
6
modules/account/tests/__init__.py
Executable file
6
modules/account/tests/__init__.py
Executable file
@@ -0,0 +1,6 @@
|
||||
# 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 .test_module import create_chart, get_fiscalyear
|
||||
|
||||
__all__ = ['create_chart', 'get_fiscalyear']
|
||||
BIN
modules/account/tests/__pycache__/__init__.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/tests/__pycache__/__init__.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/tests/__pycache__/__init__.cpython-311.pyc
Executable file
BIN
modules/account/tests/__pycache__/__init__.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/tests/__pycache__/test_module.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/tests/__pycache__/test_module.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/tests/__pycache__/test_module.cpython-311.pyc
Executable file
BIN
modules/account/tests/__pycache__/test_module.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/tests/__pycache__/test_scenario.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/tests/__pycache__/test_scenario.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/tests/__pycache__/test_scenario.cpython-311.pyc
Executable file
BIN
modules/account/tests/__pycache__/test_scenario.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account/tests/__pycache__/tools.cpython-311.opt-1.pyc
Executable file
BIN
modules/account/tests/__pycache__/tools.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account/tests/__pycache__/tools.cpython-311.pyc
Executable file
BIN
modules/account/tests/__pycache__/tools.cpython-311.pyc
Executable file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user