mirror of
https://github.com/bringout/oca-ocb-l10n_asia-pacific.git
synced 2026-04-26 00:22:01 +02:00
19.0 vanilla
This commit is contained in:
parent
7dc55599c6
commit
7f43bbbfcc
650 changed files with 45260 additions and 33436 deletions
|
|
@ -1,9 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, SUPERUSER_ID
|
||||
from . import models
|
||||
|
||||
def load_translations(cr, registry):
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
env.ref('l10n_id.l10n_id_chart').process_coa_translations()
|
||||
from . import controllers
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
{
|
||||
'name': 'Indonesian - Accounting',
|
||||
'version': '1.2',
|
||||
'icon': '/account/static/description/l10n.png',
|
||||
'countries': ['id'],
|
||||
'version': '1.3',
|
||||
'category': 'Accounting/Localizations/Account Charts',
|
||||
'description': """
|
||||
This is the latest Indonesian Odoo localisation necessary to run Odoo accounting for SMEs with:
|
||||
|
|
@ -11,19 +11,21 @@ This is the latest Indonesian Odoo localisation necessary to run Odoo accounting
|
|||
- generic Indonesian chart of accounts
|
||||
- tax structure""",
|
||||
'author': 'vitraining.com',
|
||||
'website': 'http://www.vitraining.com',
|
||||
'depends': ['account', 'base_iban', 'base_vat', 'l10n_multilang'],
|
||||
'website': 'https://www.odoo.com/documentation/latest/applications/finance/fiscal_localizations/indonesia.html',
|
||||
'depends': [
|
||||
'account',
|
||||
'base_iban',
|
||||
'base_vat',
|
||||
],
|
||||
'auto_install': ['account'],
|
||||
'data': [
|
||||
'data/account_tax_group.xml',
|
||||
'data/account_chart_template_data.xml',
|
||||
'data/account.account.template.csv',
|
||||
'data/account_chart_template_post_data.xml',
|
||||
'data/account_tax_template_data.xml',
|
||||
'data/account_chart_template_configuration_data.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'data/ir_cron.xml',
|
||||
'views/account_move_views.xml',
|
||||
'views/res_bank.xml',
|
||||
],
|
||||
'demo': [
|
||||
'demo/demo_company.xml',
|
||||
],
|
||||
'post_init_hook': 'load_translations',
|
||||
'license': 'LGPL-3',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
from . import portal
|
||||
13
odoo-bringout-oca-ocb-l10n_id/l10n_id/controllers/portal.py
Normal file
13
odoo-bringout-oca-ocb-l10n_id/l10n_id/controllers/portal.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
from odoo.addons.account.controllers.portal import PortalAccount
|
||||
from odoo import http
|
||||
from odoo.http import request
|
||||
|
||||
|
||||
class Portal(PortalAccount):
|
||||
@http.route()
|
||||
def portal_my_invoice_detail(self, *args, **kw):
|
||||
""" Override
|
||||
force QR code generation from QRIS to come only from portal"""
|
||||
request.update_context(is_online_qr=True)
|
||||
return super().portal_my_invoice_detail(*args, **kw)
|
||||
|
|
@ -1,108 +0,0 @@
|
|||
id,code,name,account_type,reconcile,chart_template_id:id
|
||||
l10n_id_11110001,11110001,Cash,asset_cash,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11110010,11110010,Petty Cash,asset_cash,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11110020,11110020,Cash in Hand,asset_cash,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11120001,11120001,Bank Suspense,liability_current,TRUE,l10n_id.l10n_id_chart
|
||||
l10n_id_11120002,11120002,Outstanding Receipts,asset_current,TRUE,l10n_id.l10n_id_chart
|
||||
l10n_id_11120003,11120003,Outstanding Payments,asset_current,TRUE,l10n_id.l10n_id_chart
|
||||
l10n_id_11120004,11120004,Bank,asset_cash,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11210010,11210010,Account Receivable,asset_receivable,TRUE,l10n_id.l10n_id_chart
|
||||
l10n_id_11210011,11210011,Account Receivable (PoS),asset_receivable,TRUE,l10n_id.l10n_id_chart
|
||||
l10n_id_11210020,11210020,Employee Liabilities,asset_current,TRUE,l10n_id.l10n_id_chart
|
||||
l10n_id_11300180,11300180,Other Inventory,asset_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11410010,11410010,Building Rent,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11410020,11410020,Prepaid Insurance,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11410030,11410030,Prepaid Advertisement-Free,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11510010,11510010,Prepaid Tax PPh 21,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11510020,11510020,Prepaid Tax Pph 22,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11510030,11510030,Prepaid Tax Pph 23,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11510040,11510040,Prepaid Tax Pph 25,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11510050,11510050,Prepaid Tax Pph 28A,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11510060,11510060,Prepaid Tax 4 (2),asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_11800000,11800000,Down Payment,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_12210010,12210010,Office Building,asset_fixed,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_12210020,12210020,Vehicle,asset_fixed,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_12210030,12210030,Office Supplies,asset_fixed,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_12281010,12281010,Accumulation Building Depreciation,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_12281020,12281020,Accumulation Vehicle Depreciation,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_12281030,12281030,Accumulation Office Supplies Depreciation,asset_prepayments,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21100010,21100010,Trade Receivable,liability_payable,TRUE,l10n_id.l10n_id_chart
|
||||
l10n_id_21100020,21100020,Shareholder Deposit,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21100030,21100030,Third-Party Deposit,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21100040,21100040,Salary Deposit,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21210010,21210010,Tax Payable Pph 21,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21210020,21210020,Tax Payable Pph 23,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21210030,21210030,Tax Payable Pph 25,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21210040,21210040,Tax Payable 4 (2),liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21210050,21210050,Tax Payable Pph 29,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21221010,21221010,VAT Purchase,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_21221020,21221020,VAT Sales,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_22110010,22110010,Bank Loan,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_22110020,22110020,Leasing Deposit,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110010,25110010,Accrued Payable Electricity,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110020,25110020,Accrued Payable Jamsostek,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110030,25110030,Accrued Payable Water,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110040,25110040,Accrued Payable Telp & Internet,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110050,25110050,Accrued Payable Security Management,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110060,25110060,Accrued Payable Bank,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110070,25110070,Accrued Payable PBB,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110080,25110080,Accrued Payable Business License,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110090,25110090,Accrued Payable Insurance,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110100,25110100,Accrued Payable Education,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_25110110,25110110,Accrued Payable Health Insurance/BPJS,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_28110010,28110010,Advance Sales,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_28110020,28110020,Customer Deposit,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_29000000,29000000,Interim Stock,liability_current,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_31100010,31100010,Authorized Capital,equity,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_31100020,31100020,Paid Capital,equity,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_31100030,31100030,Unpaid Capital,equity,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_31100040,31100040,Prive (Personal Retrieval),equity,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_31210010,31210010,Capital Reserves,equity,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_31510010,31510010,Past Profit & Loss,equity,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_31510020,31510020,Ongoing Profit & Loss,equity,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_39000000,39000000,Historical Balance,equity,TRUE,l10n_id.l10n_id_chart
|
||||
l10n_id_41000010,41000010,Sales,income,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_42000060,42000060,Sales Refund,income,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_42000070,42000070,Sales Discount,income,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_51000010,51000010,Cost of Goods Sold,expense_direct_cost,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_61100010,61100010,Employee Salary,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_61100020,61100020,Employee Bonus / Benefits,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_61100030,61100030,Employee Overtime Pay,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_61100100,61100100,Pph 21 Benefit,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_63110060,63110060,Phone,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_63110080,63110080,Electricity,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_63110100,63110100,Research & Development,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_63110120,63110120,Office Equipment,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_64110020,64110020,Post Necessities,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_63110140,63110140,Other Necessities,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_65110010,65110010,Licensing Fees,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_65110020,65110020,Bank Administration Fees,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_65110030,65110030,Consultant Fees,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_65110040,65110040,Rental Costs,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_65110050,65110050,Insurance Costs,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_65110060,65110060,Building Maintenance Costs,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_65110070,65110070,Taxes,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_65110080,65110080,Asset Maintenance Costs,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_65110090,65110090,Shipping Costs,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_66110010,66110010,Vehicle Fuel,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_66110020,66110020,Vehicle Service,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_66110030,66110030,Vehicle Parking & Toll Fee,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_66110040,66110040,Vehicle Taxes,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_66110050,66110050,Vehicle Insurance,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_67100010,67100010,Office Building,expense_depreciation,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_67100020,67100020,Vehicle,expense_depreciation,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_67100030,67100030,Office Supplies,expense_depreciation,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_69000000,69000000,Other Expenses,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_81100010,81100010,Interest Income,income_other,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_81100020,81100020,Deposit Income,income_other,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_81100030,81100030,Foreign Exchange Gain,income_other,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_81100040,81100040,Other Income,income_other,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_81100050,81100050,Gain on Sale of Fixed Assets,income_other,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_91100010,91100010,Interest Expense,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_91100020,91100020,Foreign Exchange Loss,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_91100030,91100030,Loss on Sale of Fixed Assets,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_99900001,99900001,Cash Difference Loss,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_99900002,99900002,Cash Difference Gain,income,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_99900003,99900003,Cash Discount Loss,expense,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_99900004,99900004,Cash Discount Gain,income_other,FALSE,l10n_id.l10n_id_chart
|
||||
l10n_id_999999,999999,Undistributed Profits/Losses,equity_unaffected,FALSE,l10n_id.l10n_id_chart
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
<function model="account.chart.template" name="try_loading">
|
||||
<value eval="[ref('l10n_id_chart')]"/>
|
||||
</function>
|
||||
</odoo>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="l10n_id_chart" model="account.chart.template">
|
||||
<field name="name">Indonesian Account Chart Template</field>
|
||||
<field name="bank_account_code_prefix">1112</field>
|
||||
<field name="cash_account_code_prefix">1111</field>
|
||||
<field name="transfer_account_code_prefix">1999999</field>
|
||||
<field name="code_digits">8</field>
|
||||
<field name="currency_id" ref="base.IDR"/>
|
||||
<field name="spoken_languages" eval="'id_ID'"/>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="l10n_id_chart" model="account.chart.template">
|
||||
<field name="property_account_receivable_id" ref="l10n_id_11210010"/>
|
||||
<field name="property_account_payable_id" ref="l10n_id_21100010"/>
|
||||
<field name="property_account_expense_categ_id" ref="l10n_id_51000010"/>
|
||||
<field name="property_account_income_categ_id" ref="l10n_id_41000010"/>
|
||||
<field name="property_stock_account_input_categ_id" ref="l10n_id_29000000"/>
|
||||
<field name="property_stock_account_output_categ_id" ref="l10n_id_29000000"/>
|
||||
<field name="property_stock_valuation_account_id" ref="l10n_id_11300180"/>
|
||||
<field name="income_currency_exchange_account_id" ref="l10n_id_81100010"/>
|
||||
<field name="expense_currency_exchange_account_id" ref="l10n_id_91100010"/>
|
||||
<field name="default_pos_receivable_account_id" ref="l10n_id_11210011"/>
|
||||
<field name="account_journal_early_pay_discount_loss_account_id" ref="l10n_id_99900003"/>
|
||||
<field name="account_journal_early_pay_discount_gain_account_id" ref="l10n_id_99900004"/>
|
||||
<field name="use_anglo_saxon" eval="1"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
<record id="l10n_id_tax_group_luxury_goods" model="account.tax.group">
|
||||
<field name="name">Luxury Good Taxes</field>
|
||||
<field name="sequence">1</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
</record>
|
||||
<record id="l10n_id_tax_group_non_luxury_goods" model="account.tax.group">
|
||||
<field name="name">Non-luxury Good Taxes</field>
|
||||
<field name="sequence">2</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
</record>
|
||||
<record id="l10n_id_tax_group_0" model="account.tax.group">
|
||||
<field name="name">Zero-rated Taxes</field>
|
||||
<field name="sequence">3</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
</record>
|
||||
<record id="l10n_id_tax_group_exempt" model="account.tax.group">
|
||||
<field name="name">Tax Exempted</field>
|
||||
<field name="sequence">4</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -1,239 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
<record id="ppn_tag" model="account.account.tag">
|
||||
<field name="name">PPN - 08</field>
|
||||
<field name="applicability">taxes</field>
|
||||
<field name="country_id" ref="base.id"/>
|
||||
</record>
|
||||
<record id="tax_ST1" model="account.tax.template">
|
||||
<field name="description">12%</field>
|
||||
<field name="tax_group_id" ref="l10n_id.l10n_id_tax_group_non_luxury_goods"/>
|
||||
<field name="chart_template_id" ref="l10n_id_chart"/>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="name">11%</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="amount">11.0</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'repartition_type': 'base',
|
||||
'tag_ids': [(4, ref('ppn_tag'))],
|
||||
}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'repartition_type': 'base',
|
||||
'tag_ids': [(4, ref('ppn_tag'))],
|
||||
}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
<record id="tax_PT1" model="account.tax.template">
|
||||
<field name="description">12%</field>
|
||||
<field name="chart_template_id" ref="l10n_id_chart"/>
|
||||
<field name="tax_group_id" ref="l10n_id.l10n_id_tax_group_non_luxury_goods"/>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="name">11%</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="amount">11.0</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'repartition_type': 'base',
|
||||
'tag_ids': [(4, ref('ppn_tag'))],
|
||||
}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221010'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'repartition_type': 'base',
|
||||
'tag_ids': [(4, ref('ppn_tag'))],
|
||||
}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221010'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
<record id="tax_ST0" model="account.tax.template">
|
||||
<field name="description">0%</field>
|
||||
<field name="chart_template_id" ref="l10n_id_chart"/>
|
||||
<field name="tax_group_id" ref="l10n_id.l10n_id_tax_group_0"/>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="name">0%</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="amount">0</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
<record id="tax_ST2" model="account.tax.template">
|
||||
<field name="description">0%</field>
|
||||
<field name="chart_template_id" ref="l10n_id_chart"/>
|
||||
<field name="tax_group_id" ref="l10n_id.l10n_id_tax_group_exempt"/>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="name">Exempt</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="amount">0</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
<record id="tax_PT2" model="account.tax.template">
|
||||
<field name="description">0%</field>
|
||||
<field name="chart_template_id" ref="l10n_id_chart"/>
|
||||
<field name="tax_group_id" ref="l10n_id.l10n_id_tax_group_exempt"/>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="name">Exempt</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="amount">0</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221010'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221010'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
<record id="tax_PT0" model="account.tax.template">
|
||||
<field name="description">0%</field>
|
||||
<field name="chart_template_id" ref="l10n_id_chart"/>
|
||||
<field name="tax_group_id" ref="l10n_id.l10n_id_tax_group_0"/>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="name">0%</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="amount">0</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221010'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221010'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
<record id="tax_ST3" model="account.tax.template">
|
||||
<field name="description">12%</field>
|
||||
<field name="chart_template_id" ref="l10n_id_chart"/>
|
||||
<field name="tax_group_id" ref="l10n_id.l10n_id_tax_group_luxury_goods"/>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="name">12%</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="amount">12.0</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'repartition_type': 'base',
|
||||
'tag_ids': [(4, ref('ppn_tag'))],
|
||||
}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'repartition_type': 'base',
|
||||
'tag_ids': [(4, ref('ppn_tag'))],
|
||||
}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
<record id="tax_PT3" model="account.tax.template">
|
||||
<field name="description">12%</field>
|
||||
<field name="chart_template_id" ref="l10n_id_chart"/>
|
||||
<field name="tax_group_id" ref="l10n_id.l10n_id_tax_group_luxury_goods"/>
|
||||
<field name="type_tax_use">purchase</field>
|
||||
<field name="name">12%</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="amount">12.0</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'repartition_type': 'base',
|
||||
'tag_ids': [(4, ref('ppn_tag'))],
|
||||
}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221010'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {
|
||||
'repartition_type': 'base',
|
||||
'tag_ids': [(4, ref('ppn_tag'))],
|
||||
}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221010'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
<record id="tax_luxury_sales" model="account.tax.template">
|
||||
<field name="description">20% (Luxury Goods)</field>
|
||||
<field name="chart_template_id" ref="l10n_id_chart"/>
|
||||
<field name="type_tax_use">sale</field>
|
||||
<field name="name">20%</field>
|
||||
<field name="amount_type">percent</field>
|
||||
<field name="tax_group_id" ref="l10n_id.l10n_id_tax_group_luxury_goods"/>
|
||||
<field name="amount">20.0</field>
|
||||
<field name="invoice_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
<field name="refund_repartition_line_ids" eval="[(5, 0, 0),
|
||||
(0,0, {'repartition_type': 'base'}),
|
||||
(0,0, {
|
||||
'repartition_type': 'tax',
|
||||
'account_id': ref('l10n_id_21221020'),
|
||||
}),
|
||||
]"/>
|
||||
</record>
|
||||
</odoo>
|
||||
12
odoo-bringout-oca-ocb-l10n_id/l10n_id/data/ir_cron.xml
Normal file
12
odoo-bringout-oca-ocb-l10n_id/l10n_id/data/ir_cron.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
<record id="qris_fetch_cron" model="ir.cron">
|
||||
<field name="name">QRIS Fetch Status</field>
|
||||
<field name="model_id" ref="account.model_account_move"/>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">hours</field>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._l10n_id_cron_update_payment_status()</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
"id","code","name","account_type","reconcile","name@id","non_trade"
|
||||
"l10n_id_11110001","11110001","Cash","asset_cash","False","",""
|
||||
"l10n_id_11110010","11110010","Petty Cash","asset_cash","False","Kas Kecil",""
|
||||
"l10n_id_11120001","11120001","Bank","asset_cash","False","",""
|
||||
"l10n_id_11210010","11210010","Account Receivable","asset_receivable","True","Piutang Usaha",""
|
||||
"l10n_id_11210011","11210011","Account Receivable (PoS)","asset_receivable","True","Piutang Usaha (PoS)",""
|
||||
"l10n_id_11210012","11210012","VAT Receivable","asset_receivable","True","","True"
|
||||
"l10n_id_11210013","11210013","STLG Receivable","asset_receivable","True","","True"
|
||||
"l10n_id_11210014","11210014","PPh 28A Prepaid","asset_receivable","True","","True"
|
||||
"l10n_id_11210030","11210030","VAT Purchase","asset_current","False","",""
|
||||
"l10n_id_11210040","11210040","Prepaid Expense","asset_current","False","",""
|
||||
"l10n_id_11300180","11300180","Inventory","asset_current","False","Persediaan Lainnya",""
|
||||
"l10n_id_11410010","11410010","Building Rent","asset_prepayments","False","Sewa Bangunan",""
|
||||
"l10n_id_11410020","11410020","Prepaid Insurance","asset_prepayments","False","Asuransi Dibayar Dimuka",""
|
||||
"l10n_id_11410030","11410030","Prepaid Advertisement-Free","asset_prepayments","False","Beban Iklan Dibayar Dimuka",""
|
||||
"l10n_id_11510010","11510010","Prepaid Tax PPh 21","asset_prepayments","False","",""
|
||||
"l10n_id_11510020","11510020","Prepaid Tax Pph 22","asset_prepayments","False","Pajak Dibayar Dimuka PPH 22",""
|
||||
"l10n_id_11510030","11510030","Prepaid Tax Pph 23","asset_prepayments","False","Pajak Dibayar Dimuka PPH 23",""
|
||||
"l10n_id_11510040","11510040","Prepaid Tax Pph 25","asset_prepayments","False","Pajak Dibayar Dimuka PPH 25",""
|
||||
"l10n_id_11800000","11800000","Down Payment","asset_prepayments","False","Uang Muka Pembelian",""
|
||||
"l10n_id_12210010","12210010","Office Building","asset_fixed","False","Bangunan Kantor",""
|
||||
"l10n_id_12210020","12210020","Vehicle","asset_fixed","False","Kendaraan",""
|
||||
"l10n_id_12210030","12210030","Office Supplies","asset_fixed","False","Peralatan Kantor",""
|
||||
"l10n_id_12281010","12281010","Accumulation Building Depreciation","asset_fixed","False","Akumulasi Penyusutan Bangunan Kantor",""
|
||||
"l10n_id_12281020","12281020","Accumulation Vehicle Depreciation","asset_fixed","False","Akumulasi Penyusutan Kendaraan",""
|
||||
"l10n_id_12281030","12281030","Accumulation Office Supplies Depreciation","asset_fixed","False","Akumulasi Penyusutan Peralatan Kantor",""
|
||||
"l10n_id_21100010","21100010","Account Payable","liability_payable","True","Hutang Usaha",""
|
||||
"l10n_id_21100011","21100011","VAT Payable","liability_payable","True","","True"
|
||||
"l10n_id_21100012","21100012","STLG Payable","liability_payable","True","","True"
|
||||
"l10n_id_21100013","21100013","Employee Liabilities","liability_current","True","Piutang Karyawan",""
|
||||
"l10n_id_21100014","21100014","Tax Payable PPh 29","liability_payable","True","","True"
|
||||
"l10n_id_21100020","21100020","Shareholder Deposit","liability_current","False","Hutang Pemegang Saham",""
|
||||
"l10n_id_21100030","21100030","Third-Party Deposit","liability_current","False","Hutang Pihak Ketiga",""
|
||||
"l10n_id_21100040","21100040","Salary Deposit","liability_current","False","Hutang Gaji",""
|
||||
"l10n_id_21210010","21210010","Tax Payable PPh 21","liability_current","True","Hutang Pajak PPh 21",""
|
||||
"l10n_id_21210020","21210020","Tax Payable PPh 22","liability_current","True","Hutang Pajak PPh 22",""
|
||||
"l10n_id_21210030","21210030","Tax Payable PPh 23","liability_current","True","Hutang Pajak PPh 23",""
|
||||
"l10n_id_21210040","21210040","Tax Payable PPh 25","liability_current","True","Hutang Pajak PPh 25",""
|
||||
"l10n_id_21210050","21210050","Tax Payable 4(2)","liability_current","True","Hutang Pajak Pasal 4 (2)",""
|
||||
"l10n_id_21210060","21210060","Tax Payable PPh 26","liability_current","True","Hutang Pajak PPh 26",""
|
||||
"l10n_id_21221010","21221010","VAT Sales","liability_current","False","PPN Pembelian",""
|
||||
"l10n_id_22110010","22110010","Bank Loan","liability_current","False","Hutang Bank",""
|
||||
"l10n_id_22110020","22110020","Leasing Deposit","liability_current","False","Hutang Leasing",""
|
||||
"l10n_id_25110010","25110010","Accrued Payable Electricity","liability_current","False","BYMHD Listrik",""
|
||||
"l10n_id_25110020","25110020","Accrued Payable Jamsostek","liability_current","False","BYMHD Jamsostek",""
|
||||
"l10n_id_25110030","25110030","Accrued Payable Water","liability_current","False","BYMHD Air",""
|
||||
"l10n_id_25110040","25110040","Accrued Payable Telp & Internet","liability_current","False","BYMHD Telepon",""
|
||||
"l10n_id_25110050","25110050","Accrued Payable Security Management","liability_current","False","BYMHD Jasa Pengelola Keamanan",""
|
||||
"l10n_id_25110060","25110060","Accrued Payable Bank","liability_current","False","BYMHD Bank",""
|
||||
"l10n_id_25110070","25110070","Accrued Payable PBB","liability_current","False","BYMHD PBB",""
|
||||
"l10n_id_25110080","25110080","Accrued Payable Business License","liability_current","False","BYMHD Izin Usaha",""
|
||||
"l10n_id_25110090","25110090","Accrued Payable Insurance","liability_current","False","BYMHD Asuransi",""
|
||||
"l10n_id_25110100","25110100","Accrued Payable Education","liability_current","False","BYMHD Pendidikan dan Latihan",""
|
||||
"l10n_id_25110110","25110110","Accrued Payable Health Insurance/BPJS","liability_current","False","BYMHD Jaminan Kesehatan/BPJS",""
|
||||
"l10n_id_28110010","28110010","Advance Sales","liability_current","False","Uang Muka Penjualan",""
|
||||
"l10n_id_28110020","28110020","Customer Deposit","liability_current","False","Deposit Customer",""
|
||||
"l10n_id_28110030","28110030","Deferred Revenue","liability_current","False","",""
|
||||
"l10n_id_29000000","29000000","Interim Stock","liability_current","False","Stok Interim",""
|
||||
"l10n_id_31100010","31100010","Authorized Capital","equity","False","Modal Dasar",""
|
||||
"l10n_id_31100020","31100020","Paid Capital","equity","False","Modal Yang Disetor",""
|
||||
"l10n_id_31100030","31100030","Unpaid Capital","equity","False","Modal Yang Belum Disetor",""
|
||||
"l10n_id_31100040","31100040","Prive (Personal Retrieval)","equity","False","Prive (Pengambilan Pribadi)",""
|
||||
"l10n_id_31210010","31210010","Capital Reserves","equity","False","Cadangan Modal",""
|
||||
"l10n_id_31510010","31510010","Past Profit & Loss","equity","False","Laba Rugi Tahun Lalu",""
|
||||
"l10n_id_31510020","31510020","Ongoing Profit & Loss","equity","False","Laba Rugi Tahun Berjalan",""
|
||||
"l10n_id_39000000","39000000","Historical Balance","equity","True","Historical Balance",""
|
||||
"l10n_id_41000010","41000010","Sales","income","False","Penjualan",""
|
||||
"l10n_id_42000060","42000060","Sales Refund","income","False","Retur Penjualan",""
|
||||
"l10n_id_42000070","42000070","Sales Discount","income","False","Discount Penjualan",""
|
||||
"l10n_id_42500010","42500010","Change in Inventory","expense","False","Perubahan Persediaan",""
|
||||
"l10n_id_51000010","51000010","Cost of Goods Sold","expense_direct_cost","False","Harga Pokok Penjualan",""
|
||||
"l10n_id_51000020","51000020","Purchases - Raw Materials","expense","False","Pembelian Bahan Baku",""
|
||||
"l10n_id_61100010","61100010","Employee Salary","expense","False","Gaji Karyawan",""
|
||||
"l10n_id_61100020","61100020","Employee Bonus / Benefits","expense","False","Tunjangan/ Bonus Karyawan",""
|
||||
"l10n_id_61100030","61100030","Employee Overtime Pay","expense","False","Lembur Karyawan",""
|
||||
"l10n_id_61100100","61100100","Pph 21 Benefit","expense","False","Tunjangan PPH Pasal 21",""
|
||||
"l10n_id_61100110","61100110","PPh 22 Final","expense","False","",""
|
||||
"l10n_id_61100120","61100120","PPh 4(2) Final","expense","False","",""
|
||||
"l10n_id_63110060","63110060","Phone","expense","False","Telepon",""
|
||||
"l10n_id_63110080","63110080","Electricity","expense","False","Listrik",""
|
||||
"l10n_id_63110100","63110100","Research & Development","expense","False","Research & Development",""
|
||||
"l10n_id_63110120","63110120","Office Equipment","expense","False","Perlengkapan Kantor",""
|
||||
"l10n_id_64110020","64110020","Post Necessities","expense","False","Keperluan Pos",""
|
||||
"l10n_id_63110140","63110140","Other Necessities","expense","False","Keperluan Lain-lain",""
|
||||
"l10n_id_65110010","65110010","Licensing Fees","expense","False","Biaya Perizinan",""
|
||||
"l10n_id_65110020","65110020","Bank Administration Fees","expense","False","Biaya Administrasi Bank",""
|
||||
"l10n_id_65110030","65110030","Consultant Fees","expense","False","Biaya Konsultan",""
|
||||
"l10n_id_65110040","65110040","Rental Costs","expense","False","Biaya Sewa",""
|
||||
"l10n_id_65110050","65110050","Insurance Costs","expense","False","",""
|
||||
"l10n_id_65110060","65110060","Building Maintenance Costs","expense","False","Biaya Pemeliharaan & Perawatan Gedung",""
|
||||
"l10n_id_65110070","65110070","Income Tax Expenses (CIT)","expense","False","Pajak",""
|
||||
"l10n_id_65110080","65110080","Asset Maintenance Costs","expense","False","Biaya Pemeliharaan & Perawatan Aset",""
|
||||
"l10n_id_65110090","65110090","Shipping Costs","expense","False","Biaya Pengiriman Dokumen/Barang",""
|
||||
"l10n_id_66110010","66110010","Vehicle Fuel","expense","False","BBM kendaraan",""
|
||||
"l10n_id_66110020","66110020","Vehicle Service","expense","False","Service kendaraan",""
|
||||
"l10n_id_66110030","66110030","Vehicle Parking & Toll Fee","expense","False","Parkir & tol kendaraan",""
|
||||
"l10n_id_66110040","66110040","Vehicle Taxes","expense","False","Pajak Kendaraan",""
|
||||
"l10n_id_66110050","66110050","Vehicle Insurance","expense","False","Asuransi Kendaraan",""
|
||||
"l10n_id_67100010","67100010","Office Building","expense_depreciation","False","Bangunan Kantor",""
|
||||
"l10n_id_67100020","67100020","Vehicle","expense_depreciation","False","Kendaraan",""
|
||||
"l10n_id_67100030","67100030","Office Supplies","expense_depreciation","False","Peralatan Kantor",""
|
||||
"l10n_id_69000000","69000000","Other Expenses","expense","False","Biaya Lain-lain",""
|
||||
"l10n_id_81100010","81100010","Interest Income","income_other","False","Pendapatan Bunga",""
|
||||
"l10n_id_81100020","81100020","Deposit Income","income_other","False","Pendapatan Deposit",""
|
||||
"l10n_id_81100030","81100030","Foreign Exchange Gain","income_other","False","Keuntungan Selisih Kurs",""
|
||||
"l10n_id_81100040","81100040","Other Income","income_other","False","Pendapatan lainnya",""
|
||||
"l10n_id_81100050","81100050","Gain on Sale of Fixed Assets","income_other","False","Keuntungan Atas Penjualan Aktiva Tetap",""
|
||||
"l10n_id_91100010","91100010","Interest Expense","expense","False","Beban Bunga",""
|
||||
"l10n_id_91100020","91100020","Foreign Exchange Loss","expense","False","Kerugian Selisih Kurs",""
|
||||
"l10n_id_91100030","91100030","Loss on Sale of Fixed Assets","expense","False","Kerugian Atas Penjualan Aktiva Tetap",""
|
||||
"l10n_id_99900001","99900001","Cash Difference Loss","expense","False","",""
|
||||
"l10n_id_99900002","99900002","Cash Difference Gain","income","False","",""
|
||||
"l10n_id_99900003","99900003","Cash Discount Loss","expense","False","",""
|
||||
"l10n_id_99900004","99900004","Cash Discount Gain","income_other","False","",""
|
||||
"l10n_id_999999","999999","Undistributed Profits/Losses","equity_unaffected","False","",""
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
"id","active","description","is_base_affected","invoice_label","type_tax_use","tax_group_id","name","amount_type","amount","repartition_line_ids/repartition_type","repartition_line_ids/tag_ids","repartition_line_ids/factor_percent","repartition_line_ids/document_type","repartition_line_ids/account_id"
|
||||
"tax_ST4","","Taxable Goods Other Than Luxury Goods","","12%","sale","l10n_id_tax_group_non_luxury_goods","12% (Non-Luxury Good)","percent","11.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"tax_PT4","","Standard Rate for Non-Luxury Goods & Services","","12%","purchase","l10n_id_tax_group_non_luxury_goods","12% (Non-Luxury Good)","percent","11.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_11210030"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_11210030"
|
||||
"tax_ST3","","Taxable Luxury Goods","","12%","sale","l10n_id_tax_group_luxury_goods","12%","percent","12.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"tax_PT3","","Standard Rate for Luxury Goods & Services","","12%","purchase","l10n_id_tax_group_luxury_goods","12%","percent","12.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_11210030"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_11210030"
|
||||
"tax_luxury_sales","","Sales Tax on Luxury Goods (STLG)","False","20%","sale","l10n_id_tax_group_stlg","20% (STLG)","percent","20.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"tax_ST5","","Taxable Goods Other Than Luxury Goods to Collectors","","12%","sale","l10n_id_tax_group_non_luxury_goods","12% Pemungut PPN (Non-Luxury Good)","percent","11.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","tax","","-100","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"","","","","","","","","","","tax","","-100","refund","l10n_id_21221010"
|
||||
"tax_ST6","","Luxury Goods to Collectors","","12%","sale","l10n_id_tax_group_luxury_goods","12% Pemungut PPN","percent","12.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","tax","","-100","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"","","","","","","","","","","tax","","-100","refund","l10n_id_21221010"
|
||||
"tax_luxury_sales_pemungut_ppn","","Sales Tax on Luxury Goods (STLG) to Collectors","False","20%","sale","l10n_id_tax_group_stlg","20% Pemungut PPN (STLG)","percent","20.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","tax","","-100","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"","","","","","","","","","","tax","","-100","refund","l10n_id_21221010"
|
||||
"tax_ST0","","VAT Not Collected","","0%","sale","l10n_id_tax_group_0","0%","percent","0.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"tax_ST7","","Export","","0%","sale","l10n_id_tax_group_0","0% EXPORT","percent","0.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"tax_ST2","","Exempt","","0%","sale","l10n_id_tax_group_exempt","0% EXEMPT","percent","0.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"tax_PT0","","Zero-Rated","","0%","purchase","l10n_id_tax_group_0","0%","percent","0.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_11210030"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_11210030"
|
||||
"tax_PT2","","Exempt","","0%","purchase","l10n_id_tax_group_exempt","0% EXEMPT","percent","0.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_11210030"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_11210030"
|
||||
"tax_PT5","","Sales Tax on Luxury Goods (STLG)","False","20%","purchase","l10n_id_tax_group_stlg","20% (STLG)","percent","20.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_11210030"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_11210030"
|
||||
"tax_PT6","","Non-Creditable Standard Rate Input VAT","","12%","purchase","l10n_id_tax_group_non_luxury_goods","12% NCR","percent","0.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_11210030"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_11210030"
|
||||
"tax_PT7","","Creditable Input VAT from Imports and Foreign Sources","","12%","purchase","l10n_id_tax_group_non_luxury_goods","12% IM","percent","11.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_11210030"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_11210030"
|
||||
"tax_ST1","False","ST1","","12%","sale","l10n_id_tax_group_non_luxury_goods","11%","percent","11.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_21221010"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_21221010"
|
||||
"tax_PT1","False","PT1","","12%","purchase","l10n_id_tax_group_non_luxury_goods","11%","percent","11.0","base","","","invoice",""
|
||||
"","","","","","","","","","","tax","","","invoice","l10n_id_11210030"
|
||||
"","","","","","","","","","","base","","","refund",""
|
||||
"","","","","","","","","","","tax","","","refund","l10n_id_11210030"
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
"id","country_id","name","name@id","tax_payable_account_id","tax_receivable_account_id"
|
||||
"default_tax_group","base.id","Taxes","Pajak","l10n_id_21100011","l10n_id_11210012"
|
||||
"l10n_id_tax_group_luxury_goods","base.id","Luxury Good Taxes","Pajak Barang Mewah","l10n_id_21100011","l10n_id_11210012"
|
||||
"l10n_id_tax_group_non_luxury_goods","base.id","Non-luxury Good Taxes","Pajak Barang","l10n_id_21100011","l10n_id_11210012"
|
||||
"l10n_id_tax_group_0","base.id","Zero-rated Taxes","Pajak Nol","l10n_id_21100011","l10n_id_11210012"
|
||||
"l10n_id_tax_group_exempt","base.id","Tax Exempted","Bebas Pajak","l10n_id_21100011","l10n_id_11210012"
|
||||
"l10n_id_tax_group_stlg","base.id","SLTG","Pajak Barang Mewah","l10n_id_21100012","l10n_id_11210013"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="partner_demo_company_id" model="res.partner">
|
||||
<record id="base.partner_demo_company_id" model="res.partner" forcecreate="1">
|
||||
<field name="name">ID Company</field>
|
||||
<field name="vat">1234567890123456</field>
|
||||
<field name="street">AE</field>
|
||||
|
|
@ -11,24 +11,27 @@
|
|||
<field name="phone">+62 812-345-678</field>
|
||||
<field name="email">info@company.idexample.com</field>
|
||||
<field name="website">www.idexample.com</field>
|
||||
<field name="is_company" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="demo_company_id" model="res.company">
|
||||
<record id="base.demo_company_id" model="res.company" forcecreate="1">
|
||||
<field name="name">ID Company</field>
|
||||
<field name="partner_id" ref="partner_demo_company_id"/>
|
||||
<field name="partner_id" ref="base.partner_demo_company_id"/>
|
||||
</record>
|
||||
|
||||
<function model="res.company" name="_onchange_country_id">
|
||||
<value eval="[ref('demo_company_id')]"/>
|
||||
<value eval="[ref('base.demo_company_id')]"/>
|
||||
</function>
|
||||
|
||||
<function model="res.users" name="write">
|
||||
<value eval="[ref('base.user_root'), ref('base.user_admin'), ref('base.user_demo')]"/>
|
||||
<value eval="{'company_ids': [(4, ref('l10n_id.demo_company_id'))]}"/>
|
||||
<value eval="{'company_ids': [(4, ref('base.demo_company_id'))]}"/>
|
||||
</function>
|
||||
|
||||
<function model="account.chart.template" name="try_loading">
|
||||
<value eval="[ref('l10n_id.l10n_id_chart')]"/>
|
||||
<value model="res.company" eval="obj().env.ref('l10n_id.demo_company_id')"/>
|
||||
<value eval="[]"/>
|
||||
<value>id</value>
|
||||
<value model="res.company" eval="obj().env.ref('base.demo_company_id')"/>
|
||||
<value name="install_demo" eval="True"/>
|
||||
</function>
|
||||
</odoo>
|
||||
|
|
|
|||
229
odoo-bringout-oca-ocb-l10n_id/l10n_id/i18n/id.po
Normal file
229
odoo-bringout-oca-ocb-l10n_id/l10n_id/i18n/id.po
Normal file
|
|
@ -0,0 +1,229 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_id
|
||||
#
|
||||
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.1alpha1+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-02-13 19:02+0000\n"
|
||||
"PO-Revision-Date: 2025-11-17 03:12+0000\n"
|
||||
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
|
||||
"Language-Team: Indonesian <https://translate.odoo.com/projects/odoo-19-l10n/"
|
||||
"l10n_id/id/>\n"
|
||||
"Language: id\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model,name:l10n_id.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Templat Bagan Akun"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__bank_id
|
||||
msgid "Bank"
|
||||
msgstr "Bank"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model,name:l10n_id.model_res_partner_bank
|
||||
msgid "Bank Accounts"
|
||||
msgstr "Rekening Bank"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,help:l10n_id.field_l10n_id_qris_transaction__bank_id
|
||||
msgid "Bank used to generate the current QRIS transaction"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/template_id.py:0
|
||||
msgid "Cash"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.actions.server,name:l10n_id.action_fetch_qris_status
|
||||
msgid "Check QRIS Payment Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid ""
|
||||
"Communication with QRIS failed. QRIS returned with the following error: %s"
|
||||
msgstr "Komunikasi dengan QRIS gagal. QRIS kembali dengan error berikut: %s"
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid "Could not establish a connection to the QRIS API."
|
||||
msgstr "Gagal membuat sambungan ke API"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Dibuat oleh"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Dibuat pada"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_chart_template__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_move__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_res_partner_bank__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nama Tampilan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_chart_template__id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_move__id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_res_partner_bank__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model,name:l10n_id.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr "Entri Jurnal"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_bank_statement_line__l10n_id_qris_transaction_ids
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_move__l10n_id_qris_transaction_ids
|
||||
msgid "L10N Id Qris Transaction"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Terakhir Diperbarui oleh"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Terakhir Diperbarui pada"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__model
|
||||
msgid "Model"
|
||||
msgstr "Model"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__model_id
|
||||
msgid "Model ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__paid
|
||||
msgid "Paid"
|
||||
msgstr "Lunas"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,help:l10n_id.field_l10n_id_qris_transaction__paid
|
||||
msgid "Payment Status of QRIS"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid "QRIS"
|
||||
msgstr "QRIS"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_setup_bank_manual_config__l10n_id_qris_api_key
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_res_partner_bank__l10n_id_qris_api_key
|
||||
msgid "QRIS API Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.actions.server,name:l10n_id.qris_fetch_cron_ir_actions_server
|
||||
msgid "QRIS Fetch Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_setup_bank_manual_config__l10n_id_qris_mid
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_res_partner_bank__l10n_id_qris_mid
|
||||
msgid "QRIS Merchant ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/qris_transaction.py:0
|
||||
msgid "QRIS capability is not extended to model %s yet!"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__qris_amount
|
||||
msgid "Qris Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__qris_content
|
||||
msgid "Qris Content"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__qris_creation_datetime
|
||||
msgid "Qris Creation Datetime"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__qris_invoice_id
|
||||
msgid "Qris Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model,name:l10n_id.model_l10n_id_qris_transaction
|
||||
msgid "Record of QRIS transactions"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid "The amount must be set to generate a QR code."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/account_move.py:0
|
||||
msgid ""
|
||||
"This invoice was paid by %(customer)s using QRIS with the payment method %"
|
||||
"(method)s."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/account_move.py:0
|
||||
msgid "This invoice was paid using QRIS."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid ""
|
||||
"To use QRIS QR code, Please setup the QRIS API Key and Merchant ID on the "
|
||||
"bank's configuration"
|
||||
msgstr ""
|
||||
"Untuk menggunakan QRIS QR, dipersilahkan untuk menyelesaikan setup QRIS di "
|
||||
"halaman konfigurasi bank"
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid ""
|
||||
"You cannot generate a QRIS QR code with a bank account that is not in "
|
||||
"Indonesia."
|
||||
msgstr "Anda tidak boleh membuat kode QR QRIS dari Bank di luar Indonesia."
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid "You cannot generate a QRIS QR code with a currency other than IDR"
|
||||
msgstr "Kode QRIS hanya berlaku untuk mata uang Rupiah"
|
||||
223
odoo-bringout-oca-ocb-l10n_id/l10n_id/i18n/l10n_id.pot
Normal file
223
odoo-bringout-oca-ocb-l10n_id/l10n_id/i18n/l10n_id.pot
Normal file
|
|
@ -0,0 +1,223 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_id
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-02-13 19:02+0000\n"
|
||||
"PO-Revision-Date: 2026-02-13 19:02+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model,name:l10n_id.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__bank_id
|
||||
msgid "Bank"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model,name:l10n_id.model_res_partner_bank
|
||||
msgid "Bank Accounts"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,help:l10n_id.field_l10n_id_qris_transaction__bank_id
|
||||
msgid "Bank used to generate the current QRIS transaction"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/template_id.py:0
|
||||
msgid "Cash"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.actions.server,name:l10n_id.action_fetch_qris_status
|
||||
msgid "Check QRIS Payment Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid ""
|
||||
"Communication with QRIS failed. QRIS returned with the following error: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid "Could not establish a connection to the QRIS API."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_chart_template__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_move__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__display_name
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_res_partner_bank__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_chart_template__id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_move__id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_res_partner_bank__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model,name:l10n_id.model_account_move
|
||||
msgid "Journal Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_bank_statement_line__l10n_id_qris_transaction_ids
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_move__l10n_id_qris_transaction_ids
|
||||
msgid "L10N Id Qris Transaction"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__model
|
||||
msgid "Model"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__model_id
|
||||
msgid "Model ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__paid
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,help:l10n_id.field_l10n_id_qris_transaction__paid
|
||||
msgid "Payment Status of QRIS"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid "QRIS"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_setup_bank_manual_config__l10n_id_qris_api_key
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_res_partner_bank__l10n_id_qris_api_key
|
||||
msgid "QRIS API Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.actions.server,name:l10n_id.qris_fetch_cron_ir_actions_server
|
||||
msgid "QRIS Fetch Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_account_setup_bank_manual_config__l10n_id_qris_mid
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_res_partner_bank__l10n_id_qris_mid
|
||||
msgid "QRIS Merchant ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/qris_transaction.py:0
|
||||
msgid "QRIS capability is not extended to model %s yet!"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__qris_amount
|
||||
msgid "Qris Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__qris_content
|
||||
msgid "Qris Content"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__qris_creation_datetime
|
||||
msgid "Qris Creation Datetime"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model.fields,field_description:l10n_id.field_l10n_id_qris_transaction__qris_invoice_id
|
||||
msgid "Qris Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:ir.model,name:l10n_id.model_l10n_id_qris_transaction
|
||||
msgid "Record of QRIS transactions"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid "The amount must be set to generate a QR code."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/account_move.py:0
|
||||
msgid ""
|
||||
"This invoice was paid by %(customer)s using QRIS with the payment method "
|
||||
"%(method)s."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/account_move.py:0
|
||||
msgid "This invoice was paid using QRIS."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid ""
|
||||
"To use QRIS QR code, Please setup the QRIS API Key and Merchant ID on the "
|
||||
"bank's configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid ""
|
||||
"You cannot generate a QRIS QR code with a bank account that is not in "
|
||||
"Indonesia."
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#. odoo-python
|
||||
#: code:addons/l10n_id/models/res_bank.py:0
|
||||
msgid "You cannot generate a QRIS QR code with a currency other than IDR"
|
||||
msgstr ""
|
||||
|
|
@ -1,849 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_id
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-12-03 12:38+0000\n"
|
||||
"PO-Revision-Date: 2019-12-03 12:38+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: id_ID\n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,name:l10n_id.tax_PT1
|
||||
#: model:account.tax.template,name:l10n_id.tax_ST1
|
||||
msgid "11%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_121001
|
||||
msgid "Account Receivable"
|
||||
msgstr "Piutang Usaha"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_1210011
|
||||
msgid "Account Receivable (PoS)"
|
||||
msgstr "Piutang Usaha (PoS)"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511006
|
||||
msgid "Accrued Payable Bank"
|
||||
msgstr "BYMHD Bank"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511008
|
||||
msgid "Accrued Payable Business License"
|
||||
msgstr "BYMHD Izin Usaha"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511010
|
||||
msgid "Accrued Payable Education"
|
||||
msgstr "BYMHD Pendidikan dan Latihan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511001
|
||||
msgid "Accrued Payable Electricity"
|
||||
msgstr "BYMHD Listrik"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511011
|
||||
msgid "Accrued Payable Health Insurance/BPJS"
|
||||
msgstr "BYMHD Jaminan Kesehatan/BPJS"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511009
|
||||
msgid "Accrued Payable Insurance"
|
||||
msgstr "BYMHD Asuransi"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511002
|
||||
msgid "Accrued Payable Jamsostek"
|
||||
msgstr "BYMHD Jamsostek"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511007
|
||||
msgid "Accrued Payable PBB"
|
||||
msgstr "BYMHD PBB"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511005
|
||||
msgid "Accrued Payable Security Management"
|
||||
msgstr "BYMHD Jasa Pengelola Keamanan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511004
|
||||
msgid "Accrued Payable Telp & Internet"
|
||||
msgstr "BYMHD Telepon"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511003
|
||||
msgid "Accrued Payable Water"
|
||||
msgstr "BYMHD Air"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228101
|
||||
msgid "Accumulation Building Depreciation"
|
||||
msgstr "Akumulasi Penyusutan Bangunan Kantor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228105
|
||||
msgid "Accumulation Office Furniture Depreciation"
|
||||
msgstr "Akumulasi Penyusutan Furnitur Kantor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228103
|
||||
msgid "Accumulation Office Supplies Depreciation"
|
||||
msgstr "Akumulasi Penyusutan Peralatan Kantor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228104
|
||||
msgid "Accumulation Software Depreciation"
|
||||
msgstr "Akumulasi Penyusutan Software"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228102
|
||||
msgid "Accumulation Vehicle Depreciation"
|
||||
msgstr "Akumulasi Penyusutan Kendaraan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_811001
|
||||
msgid "Advance Sales"
|
||||
msgstr "Uang Muka Penjualan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_211003
|
||||
msgid "Advertising"
|
||||
msgstr "Advertising"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511010
|
||||
msgid "Asset Maintenance Costs"
|
||||
msgstr "Biaya Pemeliharaan & Perawatan Aset"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_110001
|
||||
msgid "Authorized Capital"
|
||||
msgstr "Modal Dasar"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112005
|
||||
msgid "BCA"
|
||||
msgstr "BCA"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112004
|
||||
msgid "BNI"
|
||||
msgstr "BNI"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112006
|
||||
msgid "BNI Giro"
|
||||
msgstr "BNI Giro"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_9_110002
|
||||
msgid "Bank Administration Expense"
|
||||
msgstr "Beban Administrasi Bank"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511002
|
||||
msgid "Bank Administration Fees"
|
||||
msgstr "Biaya Administrasi Bank"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_211001
|
||||
msgid "Bank Loan"
|
||||
msgstr "Hutang Bank"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_811003
|
||||
msgid "Bonus Point"
|
||||
msgstr "Poin Bonus"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130012
|
||||
msgid "Book, Office Stationery, Accessories Inventory"
|
||||
msgstr "Persediaan Buku, ATK, Asesoris"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511006
|
||||
msgid "Building Maintenance Costs"
|
||||
msgstr "Biaya Pemeliharaan & Perawatan Gedung"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_141001
|
||||
msgid "Building Rent"
|
||||
msgstr "Sewa Bangunan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112002
|
||||
msgid "Business Mandiri"
|
||||
msgstr "Mandiri Bisnis"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_121001
|
||||
msgid "Capital Reserves"
|
||||
msgstr "Cadangan Modal"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_111002
|
||||
msgid "Cash in Hand"
|
||||
msgstr "Kas Belum Disetor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130007
|
||||
msgid "Cigarette Inventory"
|
||||
msgstr "Persediaan Rokok"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311016
|
||||
msgid "Cleaning Equipment"
|
||||
msgstr "Perlengkapan Kebersihan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130014
|
||||
msgid "Cleaning Supplies Inventory"
|
||||
msgstr "Persediaan Perlengkapan Kebersihan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511003
|
||||
msgid "Consultant Fees"
|
||||
msgstr "Biaya Konsultan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_5_100001
|
||||
msgid "Cost of Goods Sold"
|
||||
msgstr "Harga Pokok Penjualan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_811002
|
||||
msgid "Customer Deposit"
|
||||
msgstr "Deposit Customer"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110002
|
||||
msgid "Deposit Income"
|
||||
msgstr "Pendapatan Deposit"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311004
|
||||
msgid "Donation"
|
||||
msgstr "Sumbangan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_180000
|
||||
msgid "Down Payment"
|
||||
msgstr "Uang Muka Pembelian"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130004
|
||||
msgid "Dried Goods Inventory"
|
||||
msgstr "Persediaan Keringan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130009
|
||||
msgid "Drink Inventory"
|
||||
msgstr "Persediaan Minuman"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311001
|
||||
msgid "Drinking Water"
|
||||
msgstr "Air Minum"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311008
|
||||
msgid "Electricity"
|
||||
msgstr "Listrik"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511007
|
||||
msgid "Electricity, Telephone, and Internet Installation Maintenance Costs"
|
||||
msgstr "Biaya Perawatan Instalasi Listrik, telepon, internet"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130016
|
||||
msgid "Electronic Inventory"
|
||||
msgstr "Persediaan Elektronik"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110008
|
||||
msgid "Employee Birthday Benefit"
|
||||
msgstr "Tunjangan Ulang Tahun Karyawan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110002
|
||||
msgid "Employee Bonus / Benefits"
|
||||
msgstr "Tunjangan/ Bonus Karyawan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110003
|
||||
msgid "Employee Health Benefits"
|
||||
msgstr "Tunjangan Kesehatan Karyawan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_121002
|
||||
msgid "Employee Liabilities"
|
||||
msgstr "Piutang Karyawan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110004
|
||||
msgid "Employee Meal (Catering)"
|
||||
msgstr "Pangan karyawan (catering)"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110005
|
||||
msgid "Employee Overtime Pay"
|
||||
msgstr "Lembur Karyawan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110001
|
||||
msgid "Employee Salary"
|
||||
msgstr "Gaji Karyawan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_211002
|
||||
msgid "Event"
|
||||
msgstr "Event"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,name:l10n_id.tax_PT2
|
||||
#: model:account.tax.template,name:l10n_id.tax_ST2
|
||||
msgid "Exempt"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311002
|
||||
msgid "Exercise Necessities"
|
||||
msgstr "Keperluan Olahraga"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130013
|
||||
msgid "Fashion & Textile Inventory"
|
||||
msgstr "Persediaan Fashion & Textil"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311013
|
||||
msgid "First Aid Kit"
|
||||
msgstr "P3K"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130002
|
||||
msgid "Fish Inventory"
|
||||
msgstr "Persediaan Ikan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130008
|
||||
msgid "Food Inventory"
|
||||
msgstr "Persediaan Makanan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110003
|
||||
msgid "Foreign Exchange Gain"
|
||||
msgstr "Keuntungan Selisih Kurs"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_9_110003
|
||||
msgid "Foreign Exchange Loss"
|
||||
msgstr "Kerugian Selisih Kurs"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_211001
|
||||
msgid "Free Gift"
|
||||
msgstr "Free Gift"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130006
|
||||
msgid "Fresh Drink Inventory"
|
||||
msgstr "Persediaan Minuman Segar"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130005
|
||||
msgid "Fruit Inventory"
|
||||
msgstr "Persediaan Buah"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110009
|
||||
msgid "Gain on Sale of Fixed Assets"
|
||||
msgstr "Keuntungan Atas Penjualan Aktiva Tetap"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511009
|
||||
msgid "Guest Accomodation"
|
||||
msgstr "Akomodasi Tamu"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_900000
|
||||
msgid "Historical Balance"
|
||||
msgstr "Historical Balance"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130015
|
||||
msgid "House Supplies Inventory"
|
||||
msgstr "Persediaan Perlengkapan Rumah Tangga"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.chart.template,name:l10n_id.l10n_id_chart
|
||||
msgid "Indonesian Account Chart Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_9_110001
|
||||
msgid "Interest Expense"
|
||||
msgstr "Beban Bunga"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110001
|
||||
msgid "Interest Income"
|
||||
msgstr "Pendapatan Bunga"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_900000
|
||||
msgid "Interim Stock"
|
||||
msgstr "Stok Interim"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311005
|
||||
msgid "Internet"
|
||||
msgstr "Internet"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411003
|
||||
msgid "Jilid & Photocopy"
|
||||
msgstr "Jilid & Photocopy"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411004
|
||||
msgid "Job Recruitment Advertisement"
|
||||
msgstr "Iklan Lowongan Kerja"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311015
|
||||
msgid "K3 (Fire Extinguisher)"
|
||||
msgstr "K3 (Pemadam Kebakaran)"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311011
|
||||
msgid "Kitchen Necessities"
|
||||
msgstr "Keperluan Dapur"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221001
|
||||
#: model:account.account.template,name:l10n_id.a_6_710001
|
||||
msgid "Land"
|
||||
msgstr "Tanah"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_211002
|
||||
msgid "Leasing Deposit"
|
||||
msgstr "Hutang Leasing"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511001
|
||||
msgid "Licensing Fees"
|
||||
msgstr "Biaya Perizinan"
|
||||
|
||||
#. module: l10n_id
|
||||
msgid "Liquidity Transfer"
|
||||
msgstr "Liquidity Transfer"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_9_110009
|
||||
msgid "Loss on Sale of Fixed Assets"
|
||||
msgstr "Kerugian Atas Penjualan Aktiva Tetap"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112007
|
||||
msgid "Mandiri Giro"
|
||||
msgstr "Mandiri Giro"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110009
|
||||
msgid "Maternity Benefit"
|
||||
msgstr "Tunjangan Melahirkan Karyawan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130001
|
||||
msgid "Meat Inventory"
|
||||
msgstr "Persediaan Daging"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311003
|
||||
msgid "Monthly Fee"
|
||||
msgstr "Iuran Bulanan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112003
|
||||
msgid "Muamalat"
|
||||
msgstr "Muamalat"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221002
|
||||
#: model:account.account.template,name:l10n_id.a_6_710002
|
||||
msgid "Office Building"
|
||||
msgstr "Bangunan Kantor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311012
|
||||
msgid "Office Equipment"
|
||||
msgstr "Perlengkapan Kantor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221006
|
||||
#: model:account.account.template,name:l10n_id.a_6_710006
|
||||
msgid "Office Furniture"
|
||||
msgstr "Furnitur Kantor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411001
|
||||
msgid "Office Stationery"
|
||||
msgstr "Alat Tulis Kantor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221004
|
||||
#: model:account.account.template,name:l10n_id.a_6_710004
|
||||
msgid "Office Supplies"
|
||||
msgstr "Peralatan Kantor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_151002
|
||||
msgid "Ongoing Profit & Loss"
|
||||
msgstr "Laba Rugi Tahun Berjalan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_900000
|
||||
msgid "Other Expenses"
|
||||
msgstr "Biaya Lain-lain"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110004
|
||||
msgid "Other Income"
|
||||
msgstr "Pendapatan lainnya"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130018
|
||||
msgid "Other Inventory"
|
||||
msgstr "Persediaan Lainnya"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311014
|
||||
msgid "Other Necessities"
|
||||
msgstr "Keperluan Lain-lain"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_211004
|
||||
msgid "Other Receivable"
|
||||
msgstr "Piutang lainnya"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311018
|
||||
msgid "Owner Necessities"
|
||||
msgstr "Keperluan Owner"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_211003
|
||||
msgid "Owner Receivable"
|
||||
msgstr "Piutang Owner"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_PT0
|
||||
msgid "0%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_PT1
|
||||
msgid "11%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_PT2
|
||||
msgid "0%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_110002
|
||||
msgid "Paid Capital"
|
||||
msgstr "Modal Yang Disetor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_151001
|
||||
msgid "Past Profit & Loss"
|
||||
msgstr "Laba Rugi Tahun Lalu"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112001
|
||||
msgid "Personal Mandiri"
|
||||
msgstr "Mandiri Personal"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_111001
|
||||
msgid "Petty Cash"
|
||||
msgstr "Kas Kecil"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311006
|
||||
msgid "Phone"
|
||||
msgstr "Telepon"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411002
|
||||
msgid "Post Necessities"
|
||||
msgstr "Keperluan Pos"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110010
|
||||
msgid "Pph 21 Benefit"
|
||||
msgstr "Tunjangan PPH Pasal 21"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_141003
|
||||
msgid "Prepaid Advertisement-Free"
|
||||
msgstr "Beban Iklan Dibayar Dimuka"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_141002
|
||||
msgid "Prepaid Insurance"
|
||||
msgstr "Asuransi Dibayar Dimuka"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311007
|
||||
msgid "Prepaid Phone Bills"
|
||||
msgstr "Pulsa"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_151001
|
||||
msgid "Prepaid Tax Pph 22"
|
||||
msgstr "Pajak Dibayar Dimuka PPH 22"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_151002
|
||||
msgid "Prepaid Tax Pph 23"
|
||||
msgstr "Pajak Dibayar Dimuka PPH 23"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_151003
|
||||
msgid "Prepaid Tax Pph 25"
|
||||
msgstr "Pajak Dibayar Dimuka PPH 25"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_110004
|
||||
msgid "Prive (Personal Retrieval)"
|
||||
msgstr "Prive (Pengambilan Pribadi)"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130010
|
||||
msgid "Processed Food Inventory"
|
||||
msgstr "Persediaan Makanan Olahan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511004
|
||||
msgid "Rental Costs"
|
||||
msgstr "Biaya Sewa"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311010
|
||||
msgid "Research & Development"
|
||||
msgstr "Research & Development"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_ST0
|
||||
msgid "0%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_ST1
|
||||
msgid "ST1"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_ST2
|
||||
msgid "0%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_110004
|
||||
msgid "Salary Deposit"
|
||||
msgstr "Hutang Gaji"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_4_100001
|
||||
msgid "Sales"
|
||||
msgstr "Penjualan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_4_200007
|
||||
msgid "Sales Discount"
|
||||
msgstr "Discount Penjualan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_4_200006
|
||||
msgid "Sales Refund"
|
||||
msgstr "Retur Penjualan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110006
|
||||
msgid "Security Service Fee"
|
||||
msgstr "Fee Jasa Keamanan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_110002
|
||||
msgid "Shareholder Deposit"
|
||||
msgstr "Hutang Pemegang Saham"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511011
|
||||
msgid "Shipping Costs"
|
||||
msgstr "Biaya Pengiriman Dokumen/Barang"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_211004
|
||||
msgid "Shipping Merchandise"
|
||||
msgstr "Pengiriman Barang Dagang"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221005
|
||||
#: model:account.account.template,name:l10n_id.a_6_710005
|
||||
msgid "Software"
|
||||
msgstr "Software"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411005
|
||||
msgid "Stamp"
|
||||
msgstr "Materai"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121004
|
||||
msgid "Tax Payable 4 (2)"
|
||||
msgstr "Hutang Pajak Pasal 4 (2)"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121001
|
||||
msgid "Tax Payable Pph 21"
|
||||
msgstr "Hutang Pajak PPh 21"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121002
|
||||
msgid "Tax Payable Pph 23"
|
||||
msgstr "Hutang Pajak PPh 23"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121003
|
||||
msgid "Tax Payable Pph 25"
|
||||
msgstr "Hutang Pajak PPh 25"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121005
|
||||
msgid "Tax Payable Pph 29"
|
||||
msgstr "Hutang Pajak PPh 29"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511008
|
||||
msgid "Taxes"
|
||||
msgstr "Pajak"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_110003
|
||||
msgid "Third-Party Deposit"
|
||||
msgstr "Hutang Pihak Ketiga"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130011
|
||||
msgid "Toiletries Inventory"
|
||||
msgstr "Persediaan Toiletries"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130017
|
||||
msgid "Toys Inventory"
|
||||
msgstr "Persediaan Mainan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_110001
|
||||
msgid "Trade Receivable"
|
||||
msgstr "Hutang Usaha"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_110003
|
||||
msgid "Unpaid Capital"
|
||||
msgstr "Modal Yang Belum Disetor"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_122101
|
||||
msgid "VAT Purchase"
|
||||
msgstr "PPN Pembelian"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_122102
|
||||
msgid "VAT Sales"
|
||||
msgstr "PPN Penjualan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130003
|
||||
msgid "Vegetables Inventory"
|
||||
msgstr "Persediaan Sayuran"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221003
|
||||
#: model:account.account.template,name:l10n_id.a_6_710003
|
||||
msgid "Vehicle"
|
||||
msgstr "Kendaraan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611001
|
||||
msgid "Vehicle Fuel"
|
||||
msgstr "BBM kendaraan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611005
|
||||
msgid "Vehicle Insurance"
|
||||
msgstr "Asuransi Kendaraan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611003
|
||||
msgid "Vehicle Parking & Toll Fee"
|
||||
msgstr "Parkir & tol kendaraan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611002
|
||||
msgid "Vehicle Service"
|
||||
msgstr "Service kendaraan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611004
|
||||
msgid "Vehicle Taxes"
|
||||
msgstr "Pajak Kendaraan"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311009
|
||||
msgid "Water (PDAM)"
|
||||
msgstr "PDAM"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110007
|
||||
msgid "Work Uniform"
|
||||
msgstr "Pakaian Kerja"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.group,name:l10n_id.l10n_id_tax_group_luxury_goods
|
||||
msgid "Luxury Good Taxes"
|
||||
msgstr "Pajak Barang Mewah"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.group,name:l10n_id.l10n_id_tax_group_non_luxury_goods
|
||||
msgid "Non-luxury Good Taxes"
|
||||
msgstr "Pajak Barang"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.group,name:l10n_id.l10n_id_tax_group_exempt
|
||||
msgid "Tax Exempted"
|
||||
msgstr "Bebas Pajak"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.group,name:l10n_id.l10n_id_tax_group_0
|
||||
msgid "Zero-rated Taxes"
|
||||
msgstr "Pajak Nol"
|
||||
|
|
@ -1,848 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_id
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-12-03 12:38+0000\n"
|
||||
"PO-Revision-Date: 2019-12-03 12:38+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,name:l10n_id.tax_PT1
|
||||
#: model:account.tax.template,name:l10n_id.tax_ST1
|
||||
msgid "11%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_121001
|
||||
msgid "Account Receivable"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_1210011
|
||||
msgid "Account Receivable (PoS)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511006
|
||||
msgid "Accrued Payable Bank"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511008
|
||||
msgid "Accrued Payable Business License"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511010
|
||||
msgid "Accrued Payable Education"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511001
|
||||
msgid "Accrued Payable Electricity"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511011
|
||||
msgid "Accrued Payable Health Insurance/BPJS"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511009
|
||||
msgid "Accrued Payable Insurance"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511002
|
||||
msgid "Accrued Payable Jamsostek"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511007
|
||||
msgid "Accrued Payable PBB"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511005
|
||||
msgid "Accrued Payable Security Management"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511004
|
||||
msgid "Accrued Payable Telp & Internet"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_511003
|
||||
msgid "Accrued Payable Water"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228101
|
||||
msgid "Accumulation Building Depreciation"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228105
|
||||
msgid "Accumulation Office Furniture Depreciation"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228103
|
||||
msgid "Accumulation Office Supplies Depreciation"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228104
|
||||
msgid "Accumulation Software Depreciation"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_228102
|
||||
msgid "Accumulation Vehicle Depreciation"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_811001
|
||||
msgid "Advance Sales"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_211003
|
||||
msgid "Advertising"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511010
|
||||
msgid "Asset Maintenance Costs"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_110001
|
||||
msgid "Authorized Capital"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112005
|
||||
msgid "BCA"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112004
|
||||
msgid "BNI"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112006
|
||||
msgid "BNI Giro"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_9_110002
|
||||
msgid "Bank Administration Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511002
|
||||
msgid "Bank Administration Fees"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_211001
|
||||
msgid "Bank Loan"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_811003
|
||||
msgid "Bonus Point"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130012
|
||||
msgid "Book, Office Stationery, Accessories Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511006
|
||||
msgid "Building Maintenance Costs"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_141001
|
||||
msgid "Building Rent"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112002
|
||||
msgid "Business Mandiri"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_121001
|
||||
msgid "Capital Reserves"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_111002
|
||||
msgid "Cash in Hand"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130007
|
||||
msgid "Cigarette Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311016
|
||||
msgid "Cleaning Equipment"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130014
|
||||
msgid "Cleaning Supplies Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511003
|
||||
msgid "Consultant Fees"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_5_100001
|
||||
msgid "Cost of Goods Sold"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_811002
|
||||
msgid "Customer Deposit"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110002
|
||||
msgid "Deposit Income"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311004
|
||||
msgid "Donation"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_180000
|
||||
msgid "Down Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130004
|
||||
msgid "Dried Goods Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130009
|
||||
msgid "Drink Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311001
|
||||
msgid "Drinking Water"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311008
|
||||
msgid "Electricity"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511007
|
||||
msgid "Electricity, Telephone, and Internet Installation Maintenance Costs"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130016
|
||||
msgid "Electronic Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110008
|
||||
msgid "Employee Birthday Benefit"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110002
|
||||
msgid "Employee Bonus / Benefits"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110003
|
||||
msgid "Employee Health Benefits"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_121002
|
||||
msgid "Employee Liabilities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110004
|
||||
msgid "Employee Meal (Catering)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110005
|
||||
msgid "Employee Overtime Pay"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110001
|
||||
msgid "Employee Salary"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_211002
|
||||
msgid "Event"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,name:l10n_id.tax_PT2
|
||||
#: model:account.tax.template,name:l10n_id.tax_ST2
|
||||
msgid "Exempt"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311002
|
||||
msgid "Exercise Necessities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130013
|
||||
msgid "Fashion & Textile Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311013
|
||||
msgid "First Aid Kit"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130002
|
||||
msgid "Fish Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130008
|
||||
msgid "Food Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110003
|
||||
msgid "Foreign Exchange Gain"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_9_110003
|
||||
msgid "Foreign Exchange Loss"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_211001
|
||||
msgid "Free Gift"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130006
|
||||
msgid "Fresh Drink Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130005
|
||||
msgid "Fruit Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110009
|
||||
msgid "Gain on Sale of Fixed Assets"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511009
|
||||
msgid "Guest Accomodation"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_900000
|
||||
msgid "Historical Balance"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130015
|
||||
msgid "House Supplies Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.chart.template,name:l10n_id.l10n_id_chart
|
||||
msgid "Indonesian Account Chart Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_9_110001
|
||||
msgid "Interest Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110001
|
||||
msgid "Interest Income"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_900000
|
||||
msgid "Interim Stock"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311005
|
||||
msgid "Internet"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411003
|
||||
msgid "Jilid & Photocopy"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411004
|
||||
msgid "Job Recruitment Advertisement"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311015
|
||||
msgid "K3 (Fire Extinguisher)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311011
|
||||
msgid "Kitchen Necessities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221001
|
||||
#: model:account.account.template,name:l10n_id.a_6_710001
|
||||
msgid "Land"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_211002
|
||||
msgid "Leasing Deposit"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511001
|
||||
msgid "Licensing Fees"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
msgid "Liquidity Transfer"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_9_110009
|
||||
msgid "Loss on Sale of Fixed Assets"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112007
|
||||
msgid "Mandiri Giro"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110009
|
||||
msgid "Maternity Benefit"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130001
|
||||
msgid "Meat Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311003
|
||||
msgid "Monthly Fee"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112003
|
||||
msgid "Muamalat"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221002
|
||||
#: model:account.account.template,name:l10n_id.a_6_710002
|
||||
msgid "Office Building"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311012
|
||||
msgid "Office Equipment"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221006
|
||||
#: model:account.account.template,name:l10n_id.a_6_710006
|
||||
msgid "Office Furniture"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411001
|
||||
msgid "Office Stationery"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221004
|
||||
#: model:account.account.template,name:l10n_id.a_6_710004
|
||||
msgid "Office Supplies"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_151002
|
||||
msgid "Ongoing Profit & Loss"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_900000
|
||||
msgid "Other Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_8_110004
|
||||
msgid "Other Income"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130018
|
||||
msgid "Other Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311014
|
||||
msgid "Other Necessities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_211004
|
||||
msgid "Other Receivable"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311018
|
||||
msgid "Owner Necessities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_211003
|
||||
msgid "Owner Receivable"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_PT0
|
||||
msgid "0%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_PT1
|
||||
msgid "11%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_PT2
|
||||
msgid "0%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_110002
|
||||
msgid "Paid Capital"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_151001
|
||||
msgid "Past Profit & Loss"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_112001
|
||||
msgid "Personal Mandiri"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_111001
|
||||
msgid "Petty Cash"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311006
|
||||
msgid "Phone"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411002
|
||||
msgid "Post Necessities"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110010
|
||||
msgid "Pph 21 Benefit"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_141003
|
||||
msgid "Prepaid Advertisement-Free"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_141002
|
||||
msgid "Prepaid Insurance"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311007
|
||||
msgid "Prepaid Phone Bills"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_151001
|
||||
msgid "Prepaid Tax Pph 22"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_151002
|
||||
msgid "Prepaid Tax Pph 23"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_151003
|
||||
msgid "Prepaid Tax Pph 25"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_110004
|
||||
msgid "Prive (Personal Retrieval)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130010
|
||||
msgid "Processed Food Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511004
|
||||
msgid "Rental Costs"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311010
|
||||
msgid "Research & Development"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_ST0
|
||||
msgid "0%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_ST1
|
||||
msgid "11%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.template,description:l10n_id.tax_ST2
|
||||
msgid "0%"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_110004
|
||||
msgid "Salary Deposit"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_4_100001
|
||||
msgid "Sales"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_4_200007
|
||||
msgid "Sales Discount"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_4_200006
|
||||
msgid "Sales Refund"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110006
|
||||
msgid "Security Service Fee"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_110002
|
||||
msgid "Shareholder Deposit"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511011
|
||||
msgid "Shipping Costs"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_211004
|
||||
msgid "Shipping Merchandise"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221005
|
||||
#: model:account.account.template,name:l10n_id.a_6_710005
|
||||
msgid "Software"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_411005
|
||||
msgid "Stamp"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121004
|
||||
msgid "Tax Payable 4 (2)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121001
|
||||
msgid "Tax Payable Pph 21"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121002
|
||||
msgid "Tax Payable Pph 23"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121003
|
||||
msgid "Tax Payable Pph 25"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_121005
|
||||
msgid "Tax Payable Pph 29"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_511008
|
||||
msgid "Taxes"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_110003
|
||||
msgid "Third-Party Deposit"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130011
|
||||
msgid "Toiletries Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130017
|
||||
msgid "Toys Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_110001
|
||||
msgid "Trade Receivable"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_3_110003
|
||||
msgid "Unpaid Capital"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_122101
|
||||
msgid "VAT Purchase"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_2_122102
|
||||
msgid "VAT Sales"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_130003
|
||||
msgid "Vegetables Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_1_221003
|
||||
#: model:account.account.template,name:l10n_id.a_6_710003
|
||||
msgid "Vehicle"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611001
|
||||
msgid "Vehicle Fuel"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611005
|
||||
msgid "Vehicle Insurance"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611003
|
||||
msgid "Vehicle Parking & Toll Fee"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611002
|
||||
msgid "Vehicle Service"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_611004
|
||||
msgid "Vehicle Taxes"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_311009
|
||||
msgid "Water (PDAM)"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.account.template,name:l10n_id.a_6_110007
|
||||
msgid "Work Uniform"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.group,name:l10n_id.l10n_id_tax_group_luxury_goods
|
||||
msgid "Luxury Good Taxes"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.group,name:l10n_id.l10n_id_tax_group_non_luxury_goods
|
||||
msgid "Non-luxury Good Taxes"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.group,name:l10n_id.l10n_id_tax_group_exempt
|
||||
msgid "Tax Exempted"
|
||||
msgstr ""
|
||||
|
||||
#. module: l10n_id
|
||||
#: model:account.tax.group,name:l10n_id.l10n_id_tax_group_0
|
||||
msgid "Zero-rated Taxes"
|
||||
msgstr ""
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo.addons.account.models.chart_template import update_taxes_from_templates
|
||||
from odoo import api, SUPERUSER_ID
|
||||
|
||||
|
||||
def migrate(cr, version):
|
||||
update_taxes_from_templates(cr, 'l10n_id.l10n_id_chart')
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
for company in env['res.company'].search([('chart_template', '=', 'id')], order="parent_path"):
|
||||
env['account.chart.template'].try_loading('id', company, force_create=False)
|
||||
|
|
|
|||
|
|
@ -5,39 +5,36 @@ from odoo import api, SUPERUSER_ID
|
|||
def migrate(cr, version):
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
|
||||
# Tax groups to create in format of [(xml_id, name)]
|
||||
tax_group_info = [
|
||||
("l10n_id_tax_group_non_luxury_goods", "Non-luxury Good Taxes"),
|
||||
("l10n_id_tax_group_0", "Zero-rated Taxes"),
|
||||
("l10n_id_tax_group_exempt", "Tax Exempted"),
|
||||
]
|
||||
# Load the new tax groups if it doesn't exist yet
|
||||
ChartTemplate = env["account.chart.template"]
|
||||
companies = env['res.company'].search([('chart_template', '=', 'id')], order="parent_path")
|
||||
|
||||
for xmlid, name in tax_group_info:
|
||||
if not env.ref(f"l10n_id.{xmlid}", raise_if_not_found=False):
|
||||
env['ir.model.data'].create({
|
||||
"name": xmlid,
|
||||
"module": "l10n_id",
|
||||
"model": "account.tax.group",
|
||||
"res_id": env['account.tax.group'].create({'name': name, 'country_id': env.ref('base.id').id}).id,
|
||||
'noupdate': True
|
||||
})
|
||||
new_tax_groups = ["l10n_id_tax_group_non_luxury_goods", "l10n_id_tax_group_0", "l10n_id_tax_group_exempt"]
|
||||
|
||||
# For all taxes linked to the tax_ST1 and tax_PT1, set the tax group to non-luxury goods
|
||||
# if no changes to amount and tax group yet
|
||||
tax_group_id = env.ref("l10n_id.l10n_id_tax_group_non_luxury_goods")
|
||||
default_group = env['account.tax']._default_tax_group()
|
||||
id_chart = env.ref("l10n_id.l10n_id_chart", raise_if_not_found=False)
|
||||
tax_group_data = {
|
||||
xmlid: data
|
||||
for xmlid, data in ChartTemplate._get_account_tax_group('id').items()
|
||||
if xmlid in new_tax_groups
|
||||
}
|
||||
|
||||
if not id_chart:
|
||||
return
|
||||
|
||||
companies = env['res.company'].search([('chart_template_id', 'child_of', id_chart.id)])
|
||||
# For taxes: tax_ST1 and tax_PT1 which are non-luxury tax, if the amount and tax group
|
||||
# has not been changed yet by user, we update the tax group and description
|
||||
for company in companies:
|
||||
tax_xml_ids = [
|
||||
f"l10n_id.{company.id}_tax_ST1",
|
||||
f"l10n_id.{company.id}_tax_PT1",
|
||||
]
|
||||
for tax_xml_id in tax_xml_ids:
|
||||
tax = env.ref(tax_xml_id, raise_if_not_found=False)
|
||||
if tax and tax.amount == 11.0 and tax.tax_group_id == default_group:
|
||||
tax.update({"tax_group_id": tax_group_id.id, "description": "12%"})
|
||||
ChartTemplate.with_company(company)._load_data({
|
||||
"account.tax.group": tax_group_data,
|
||||
})
|
||||
tax_ST1 = ChartTemplate.with_company(company).ref("tax_ST1", raise_if_not_found=False)
|
||||
tax_PT1 = ChartTemplate.with_company(company).ref("tax_PT1", raise_if_not_found=False)
|
||||
|
||||
old_group = ChartTemplate.with_company(company).ref("default_tax_group", raise_if_not_found=False)
|
||||
new_group = ChartTemplate.with_company(company).ref("l10n_id_tax_group_non_luxury_goods")
|
||||
|
||||
if not old_group:
|
||||
continue
|
||||
|
||||
for tax in [tax_ST1, tax_PT1]:
|
||||
if tax and tax.amount == 11.0 and tax.tax_group_id == old_group:
|
||||
tax.write({
|
||||
"tax_group_id": new_group.id,
|
||||
"description": "12%",
|
||||
})
|
||||
|
|
|
|||
|
|
@ -0,0 +1,117 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import api, SUPERUSER_ID
|
||||
|
||||
|
||||
def migrate(cr, version):
|
||||
env = api.Environment(cr, SUPERUSER_ID, {"lang": "en_US"})
|
||||
|
||||
companies = env["res.company"].search([("chart_template", "=", "id"), ("parent_id", "=", False)])
|
||||
|
||||
new_tax_groups = ["l10n_id_tax_group_stlg", "l10n_id_tax_group_non_luxury_goods", "l10n_id_tax_group_luxury_goods", "l10n_id_tax_group_0"]
|
||||
new_taxes = [
|
||||
"tax_ST4", "tax_PT4",
|
||||
"tax_ST5", "tax_PT5",
|
||||
"tax_ST6", "tax_ST7",
|
||||
"tax_luxury_sales_pemungut_ppn",
|
||||
"tax_PT6", "tax_PT7",
|
||||
]
|
||||
|
||||
for company in companies:
|
||||
ChartTemplate = env["account.chart.template"].with_company(company)
|
||||
# =============================
|
||||
# Load new tax data
|
||||
tax_group_data = {
|
||||
xmlid: data
|
||||
for xmlid, data in ChartTemplate._get_account_tax_group("id").items()
|
||||
if xmlid in new_tax_groups
|
||||
}
|
||||
tax_data = {
|
||||
xmlid: data
|
||||
for xmlid, data in ChartTemplate._get_account_tax("id").items()
|
||||
if xmlid in new_taxes
|
||||
}
|
||||
new_tax_group_data = {}
|
||||
if (tax_group_data):
|
||||
new_tax_group_data = {
|
||||
g: data
|
||||
for g, data in tax_group_data.items()
|
||||
if not ChartTemplate.ref(g, raise_if_not_found=False)
|
||||
}
|
||||
|
||||
if new_tax_group_data:
|
||||
data = {"account.tax.group": new_tax_group_data}
|
||||
ChartTemplate._pre_reload_data(company, {}, data)
|
||||
ChartTemplate._load_data(data)
|
||||
if tax_data:
|
||||
data = {"account.tax": tax_data}
|
||||
ChartTemplate._pre_reload_data(company, {}, data)
|
||||
ChartTemplate._load_data(data)
|
||||
# =============================
|
||||
# Update existing tax description
|
||||
tax_map = {
|
||||
"tax_ST0": "VAT Not Collected",
|
||||
"tax_PT0": "Zero-Rated",
|
||||
"tax_ST2": "Exempt",
|
||||
"tax_PT2": "Exempt",
|
||||
"tax_ST3": "Taxable Luxury Goods",
|
||||
"tax_PT3": "Standard Rate for Luxury Goods & Services",
|
||||
}
|
||||
for xmlid, new_description in tax_map.items():
|
||||
tax = ChartTemplate.ref(xmlid, raise_if_not_found=False)
|
||||
if not tax:
|
||||
continue
|
||||
# Only update description if it hasn't been manually changed
|
||||
if tax.description == xmlid.replace("tax_", "").upper():
|
||||
tax.description = new_description
|
||||
|
||||
# =============================
|
||||
# Archive ST1 and PT1
|
||||
for xmlid in ["tax_ST1", "tax_PT1"]:
|
||||
tax = ChartTemplate.ref(xmlid, raise_if_not_found=False)
|
||||
if tax and not tax.active:
|
||||
continue
|
||||
if tax:
|
||||
tax.active = False
|
||||
|
||||
# =============================
|
||||
# Remove l10n_id.ppn_tag from specific taxes
|
||||
taxes_to_clean = [
|
||||
"tax_ST1", "tax_PT1",
|
||||
"tax_ST3", "tax_PT3",
|
||||
"tax_luxury_sales",
|
||||
]
|
||||
ppn_tag = env.ref("l10n_id.ppn_tag", raise_if_not_found=False)
|
||||
if ppn_tag:
|
||||
tax_records = env["account.tax"].browse([])
|
||||
for xmlid in taxes_to_clean:
|
||||
rec = ChartTemplate.ref(xmlid, raise_if_not_found=False)
|
||||
if rec:
|
||||
tax_records |= rec
|
||||
|
||||
if tax_records:
|
||||
repartition_lines = env["account.tax.repartition.line"].sudo().search([
|
||||
("tax_id", "in", tax_records.ids),
|
||||
("tag_ids", "in", [ppn_tag.id]),
|
||||
])
|
||||
if repartition_lines:
|
||||
repartition_lines.write({"tag_ids": [(3, ppn_tag.id)]})
|
||||
|
||||
# =============================
|
||||
# Update tax_luxury_sales group, description and invoice_label
|
||||
old_group = ChartTemplate.ref("l10n_id_tax_group_luxury_goods", raise_if_not_found=False)
|
||||
new_group = ChartTemplate.ref("l10n_id_tax_group_stlg", raise_if_not_found=False)
|
||||
tax_luxury_sales = ChartTemplate.ref("tax_luxury_sales", raise_if_not_found=False)
|
||||
if not (old_group and new_group and tax_luxury_sales):
|
||||
continue
|
||||
tax_luxury_sales_vals = {}
|
||||
if tax_luxury_sales.tax_group_id == old_group:
|
||||
tax_luxury_sales_vals['tax_group_id'] = new_group.id
|
||||
if tax_luxury_sales.description == "Luxury":
|
||||
tax_luxury_sales_vals['description'] = "Sales Tax on Luxury Goods (STLG)"
|
||||
if tax_luxury_sales.invoice_label == "Luxury Goods (ID)":
|
||||
tax_luxury_sales_vals['invoice_label'] = "20%"
|
||||
if tax_luxury_sales.name == "20%":
|
||||
tax_luxury_sales_vals['name'] = "20% (STLG)"
|
||||
if tax_luxury_sales.is_base_affected:
|
||||
tax_luxury_sales['is_base_affected'] = False
|
||||
tax_luxury_sales.write(tax_luxury_sales_vals)
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import account_move
|
||||
from . import template_id
|
||||
from . import res_bank
|
||||
from . import qris_transaction
|
||||
|
|
|
|||
|
|
@ -1,36 +1,137 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models
|
||||
from odoo.tools.misc import formatLang
|
||||
from odoo import fields, models, _
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = "account.move"
|
||||
_inherit = 'account.move'
|
||||
|
||||
l10n_id_qris_transaction_ids = fields.Many2many('l10n_id.qris.transaction', groups='account.group_account_invoice')
|
||||
|
||||
def _generate_qr_code(self, silent_errors=False):
|
||||
"""
|
||||
Adds information about which invoice is triggering the creation of the QR-Code, so that we can link both together.
|
||||
"""
|
||||
# EXTENDS account
|
||||
return super(
|
||||
AccountMove,
|
||||
self.with_context(qris_model="account.move", qris_model_id=str(self.id)),
|
||||
)._generate_qr_code(silent_errors)
|
||||
|
||||
def _l10n_id_cron_update_payment_status(self):
|
||||
"""
|
||||
This cron will:
|
||||
- Get all invoices that are not paid, and have details about QRIS qr codes.
|
||||
- For each invoices, get information about the payment state of the QR using the API.
|
||||
- If the QR is not paid and it has been more than 30m, we discard that qr id (no longer valid)
|
||||
- If it is paid, we will register the payment on the invoices.
|
||||
"""
|
||||
invoices = self.search([
|
||||
('payment_state', '=', 'not_paid'),
|
||||
('l10n_id_qris_transaction_ids', '!=', False)
|
||||
])
|
||||
return invoices._l10n_id_update_payment_status()
|
||||
|
||||
def action_l10n_id_update_payment_status(self):
|
||||
"""
|
||||
This action will:
|
||||
- Get all invoices that are not paid, and have details about QRIS qr codes.
|
||||
- For each invoices, get information about the payment state of the QR using the API.
|
||||
- If the QR is not paid and it has been more than 30m, we discard that qr id (no longer valid)
|
||||
- If it is paid, we will register the payment on the invoices.
|
||||
"""
|
||||
invoices = self.filtered_domain([
|
||||
('payment_state', '=', 'not_paid'),
|
||||
('l10n_id_qris_transaction_ids', '!=', False)
|
||||
])
|
||||
return invoices._l10n_id_update_payment_status()
|
||||
|
||||
def _l10n_id_update_payment_status(self):
|
||||
""" Starts by fetching the QR statuses for the invoices in self, then update said invoices based on the statuses """
|
||||
qr_statuses = self._l10n_id_get_qris_qr_statuses()
|
||||
return self._l10n_id_process_invoices(qr_statuses)
|
||||
|
||||
def _l10n_id_get_qris_qr_statuses(self):
|
||||
"""
|
||||
Query the API in order to get updated information on the status of each QR codes linked to the invoices in self.
|
||||
If the QR has been paid, only the paid information is returned.
|
||||
|
||||
:return: a list with the format:
|
||||
{
|
||||
invoice: {
|
||||
'paid': True,
|
||||
'qr_statuses': [],
|
||||
},
|
||||
invoice: {
|
||||
'paid': False,
|
||||
'qr_statuses': [],
|
||||
}
|
||||
}
|
||||
"""
|
||||
result = {}
|
||||
for invoice in self:
|
||||
result[invoice.id] = invoice.l10n_id_qris_transaction_ids._l10n_id_get_qris_qr_statuses()
|
||||
return result
|
||||
|
||||
def _l10n_id_process_invoices(self, invoices_statuses):
|
||||
"""
|
||||
Receives the list of invoices and their statuses, and update them using it.
|
||||
For paid invoices we will register the payment and log a note, while for unpaid ones we will discard expired
|
||||
QR data and keep the non-expired ones for the next run.
|
||||
"""
|
||||
paid_invoices = self.env['account.move']
|
||||
paid_messages = {}
|
||||
for invoice in self:
|
||||
statuses = invoices_statuses.get(invoice.id)
|
||||
# Paid invoice: we simply prepare a message to notify of the payment with details if possible.
|
||||
if statuses['paid']:
|
||||
paid_status = statuses['qr_statuses'][0]
|
||||
if 'qris_payment_customername' in paid_status and 'qris_payment_methodby' in paid_status:
|
||||
message = _(
|
||||
"This invoice was paid by %(customer)s using QRIS with the payment method %(method)s.",
|
||||
customer=paid_status['qris_payment_customername'],
|
||||
method=paid_status['qris_payment_methodby'],
|
||||
)
|
||||
else:
|
||||
message = _("This invoice was paid using QRIS.")
|
||||
paid_invoices |= invoice
|
||||
paid_messages[invoice.id] = message
|
||||
|
||||
# Update paid invoices
|
||||
if paid_invoices:
|
||||
paid_invoices._message_log_batch(bodies=paid_messages)
|
||||
# Finally, register the payment:
|
||||
return self.env['account.payment.register'].with_context(
|
||||
active_model='account.move', active_ids=paid_invoices.ids
|
||||
).create({'group_payment': False}).action_create_payments()
|
||||
|
||||
def _compute_tax_totals(self):
|
||||
""" OVERRIDE
|
||||
|
||||
For invoices based on ID company as of January 2025, there is a separate tax base computation for nun-luxury goods.
|
||||
For invoices based on ID company as of January 2025, there is a separate tax base computation for non-luxury goods.
|
||||
Tax base is supposed to be 11/12 of original while tax amount is increased from 11% to 12% hence effectively
|
||||
maintaining 11% tax amount.
|
||||
|
||||
We change tax totals section to display adjusted base amount on invoice PDF for special non-luxury goods tax group.
|
||||
"""
|
||||
super()._compute_tax_totals()
|
||||
non_luxury_tax_group = self.env.ref('l10n_id.l10n_id_tax_group_non_luxury_goods', raise_if_not_found=False)
|
||||
if not non_luxury_tax_group:
|
||||
return
|
||||
for move in self.filtered(lambda m: m.is_sale_document()):
|
||||
if move.invoice_date and move.invoice_date < fields.Date.to_date('2025-01-01'):
|
||||
# invoice might be coming from different companies, each tax group with unique XML ID
|
||||
non_luxury_tax_group = self.env['account.chart.template'].with_company(move.company_id.id).ref("l10n_id_tax_group_non_luxury_goods", raise_if_not_found=False)
|
||||
|
||||
if not non_luxury_tax_group or move.invoice_date and move.invoice_date < fields.Date.to_date('2025-01-01'):
|
||||
continue
|
||||
for subtotal_group in move.tax_totals['groups_by_subtotal'].values():
|
||||
for group in subtotal_group:
|
||||
if group['tax_group_id'] == non_luxury_tax_group.id:
|
||||
dpp = group['tax_group_base_amount'] * (11 / 12)
|
||||
# adding (DPP) information to make it clearer for users why the number is different from the Untaxed Amount
|
||||
group.update({
|
||||
'tax_group_base_amount': dpp,
|
||||
'formatted_tax_group_base_amount': formatLang(self.env, dpp, currency_obj=move.currency_id),
|
||||
'tax_group_name': group['tax_group_name'] + ' (on DPP)',
|
||||
|
||||
# for every tax group component with non-luxury tax group, we adjust the base amount and adjust the display to
|
||||
# show base amount
|
||||
change_tax_base = False
|
||||
for subtotal in move.tax_totals["subtotals"]:
|
||||
for tax_group in subtotal["tax_groups"]:
|
||||
if tax_group["id"] == non_luxury_tax_group.id:
|
||||
tax_group.update({
|
||||
"display_base_amount": tax_group["display_base_amount"] * (11 / 12),
|
||||
"display_base_amount_currency": tax_group["display_base_amount_currency"] * (11 / 12),
|
||||
"group_name": tax_group["group_name"] + " (on DPP)",
|
||||
})
|
||||
move.tax_totals['display_tax_base'] = True
|
||||
change_tax_base = True
|
||||
if change_tax_base:
|
||||
move.tax_totals["same_tax_base"] = False
|
||||
|
|
|
|||
|
|
@ -0,0 +1,83 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from datetime import timedelta
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class L10n_IdQrisTransaction(models.Model):
|
||||
"""QRIS Transaction
|
||||
|
||||
General table to store a certian unique transaction with QRIS details attached
|
||||
"""
|
||||
_name = 'l10n_id.qris.transaction'
|
||||
_description = "Record of QRIS transactions"
|
||||
|
||||
model = fields.Char(string="Model") # payment in respond to which model
|
||||
model_id = fields.Char(string="Model ID") # id/uuid
|
||||
|
||||
# Fields that store the QRIS details coming from API request
|
||||
qris_invoice_id = fields.Char(readonly=True)
|
||||
qris_amount = fields.Integer(readonly=True)
|
||||
qris_content = fields.Char(readonly=True)
|
||||
qris_creation_datetime = fields.Datetime(readonly=True)
|
||||
|
||||
bank_id = fields.Many2one("res.partner.bank", help="Bank used to generate the current QRIS transaction")
|
||||
paid = fields.Boolean(help="Payment Status of QRIS")
|
||||
|
||||
def _get_supported_models(self):
|
||||
return ['account.move']
|
||||
|
||||
@api.constrains('model')
|
||||
def _constraint_model(self):
|
||||
# only allow supported models
|
||||
if self.model not in self._get_supported_models():
|
||||
raise ValidationError(_("QRIS capability is not extended to model %s yet!", self.model))
|
||||
|
||||
def _get_record(self):
|
||||
""" Get the backend invoice record that the qris transaction is handling
|
||||
To be overriden in other modules"""
|
||||
self.ensure_one()
|
||||
if self.model != 'account.move':
|
||||
return
|
||||
return self.env['account.move'].browse(int(self.model_id)).exists()
|
||||
|
||||
@api.model
|
||||
def _get_latest_transaction(self, model, model_id):
|
||||
""" Find latest transaction associated to the model and model_id """
|
||||
return self.search([('model', '=', model), ('model_id', '=', model_id)], order='qris_creation_datetime desc', limit=1)
|
||||
|
||||
def _l10n_id_get_qris_qr_statuses(self):
|
||||
""" Fetch the result of the transaction
|
||||
|
||||
:param invoice_bank_id (Model <res.partner.bank>): bank (with QRIS configuration)
|
||||
:returns tuple(bool, dict): paid/unpaid status and status_response from QRIS
|
||||
"""
|
||||
# storing all failure transactions in case final result is unpaid
|
||||
unpaid_status_data = []
|
||||
|
||||
# Looping to make requests is far from ideal, but we have no choices as they don't allow getting multiple QR result at once.
|
||||
# Ensure to loop in reverse and check from the most recent QR code.
|
||||
for transaction in self.sorted(lambda t: t.qris_creation_datetime):
|
||||
status_response = self.sudo().bank_id._l10n_id_qris_fetch_status(transaction)
|
||||
if status_response['data'].get('qris_status') == 'paid':
|
||||
transaction.paid = True
|
||||
return {
|
||||
'paid': True,
|
||||
'qr_statuses': [status_response['data']]
|
||||
}
|
||||
else:
|
||||
unpaid_status_data.append(status_response['data'])
|
||||
|
||||
return {
|
||||
'paid': False,
|
||||
'qr_statuses': unpaid_status_data
|
||||
}
|
||||
|
||||
@api.autovacuum
|
||||
def _gc_remove_pointless_qris_transactions(self):
|
||||
""" Removes unpaid transactions that have been for more than 35 minutes.
|
||||
These can no longer be paid and status will no longer change
|
||||
"""
|
||||
time_limit = fields.Datetime.now() - timedelta(seconds=2100)
|
||||
transactions = self.env['l10n_id.qris.transaction'].search([('qris_creation_datetime', '<=', time_limit), ('paid', '=', False)])
|
||||
transactions.unlink()
|
||||
149
odoo-bringout-oca-ocb-l10n_id/l10n_id/models/res_bank.py
Normal file
149
odoo-bringout-oca-ocb-l10n_id/l10n_id/models/res_bank.py
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
import datetime
|
||||
import requests
|
||||
import pytz
|
||||
|
||||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tools.urls import urljoin
|
||||
|
||||
QRIS_TIMEOUT = 35 # They say that the time to get a response vary between 6 to 30s
|
||||
|
||||
|
||||
def _l10n_id_make_qris_request(endpoint, params):
|
||||
""" Make an API request to QRIS, using the given path and params. """
|
||||
url = urljoin('https://qris.online/restapi/qris/', endpoint)
|
||||
try:
|
||||
response = requests.get(url, params=params, timeout=QRIS_TIMEOUT)
|
||||
response.raise_for_status()
|
||||
response = response.json()
|
||||
except requests.exceptions.HTTPError as err:
|
||||
raise ValidationError(_("Communication with QRIS failed. QRIS returned with the following error: %s", err))
|
||||
except (requests.RequestException, ValueError):
|
||||
raise ValidationError(_("Could not establish a connection to the QRIS API."))
|
||||
|
||||
return response
|
||||
|
||||
|
||||
class ResPartnerBank(models.Model):
|
||||
_inherit = "res.partner.bank"
|
||||
|
||||
l10n_id_qris_api_key = fields.Char("QRIS API Key", groups="base.group_system")
|
||||
l10n_id_qris_mid = fields.Char("QRIS Merchant ID", groups="base.group_system")
|
||||
|
||||
@api.model
|
||||
def _get_available_qr_methods(self):
|
||||
# EXTENDS account
|
||||
rslt = super()._get_available_qr_methods()
|
||||
rslt.append(('id_qr', _("QRIS"), 40))
|
||||
return rslt
|
||||
|
||||
def _get_error_messages_for_qr(self, qr_method, debtor_partner, currency):
|
||||
# EXTENDS account
|
||||
if qr_method == 'id_qr':
|
||||
if self.country_code != 'ID':
|
||||
return _("You cannot generate a QRIS QR code with a bank account that is not in Indonesia.")
|
||||
if currency.name not in ['IDR']:
|
||||
return _("You cannot generate a QRIS QR code with a currency other than IDR")
|
||||
if not (self.sudo().l10n_id_qris_api_key and self.sudo().l10n_id_qris_mid):
|
||||
return _("To use QRIS QR code, Please setup the QRIS API Key and Merchant ID on the bank's configuration")
|
||||
return None
|
||||
|
||||
return super()._get_error_messages_for_qr(qr_method, debtor_partner, currency)
|
||||
|
||||
def _check_for_qr_code_errors(self, qr_method, amount, currency, debtor_partner, free_communication, structured_communication):
|
||||
# EXTENDS account
|
||||
if qr_method == 'id_qr':
|
||||
if not amount:
|
||||
return _("The amount must be set to generate a QR code.")
|
||||
|
||||
return super()._check_for_qr_code_errors(qr_method, amount, currency, debtor_partner, free_communication, structured_communication)
|
||||
|
||||
def _get_qr_vals(self, qr_method, amount, currency, debtor_partner, free_communication, structured_communication):
|
||||
""" Getting content for the QR through calling QRIS API and storing the QRIS transaction as a record"""
|
||||
# EXTENDS account
|
||||
if qr_method == "id_qr":
|
||||
model = self.env.context.get('qris_model')
|
||||
model_id = self.env.context.get('qris_model_id')
|
||||
|
||||
# qris_trx is to help us fetch the backend record associated to the model and model_id.
|
||||
# we are using model and model_id instead of model.browse(id) because while executing this method
|
||||
# not all backend records are created already. For example, pos.order record isn't created until
|
||||
# payment is completed on the PoS interace.
|
||||
qris_trx = self.env['l10n_id.qris.transaction']._get_latest_transaction(model, model_id)
|
||||
|
||||
# QRIS codes are valid for 30 minutes. To leave some margin, we will return the same QR code we already
|
||||
# generated if the invoice is re-accessed before 25m. Otherwise, a new QR code is generated
|
||||
# Additionally, we want to check that it's requesting for the same amount as it's possible to change
|
||||
# amount in apps like PoS.
|
||||
if qris_trx and qris_trx.qris_amount == int(amount):
|
||||
now = fields.Datetime.now()
|
||||
latest_qr_date = qris_trx.qris_creation_datetime
|
||||
|
||||
if (now - latest_qr_date).total_seconds() < 1500:
|
||||
return qris_trx['qris_content']
|
||||
|
||||
params = {
|
||||
"do": "create-invoice",
|
||||
"apikey": self.sudo().l10n_id_qris_api_key,
|
||||
"mID": self.sudo().l10n_id_qris_mid,
|
||||
"cliTrxNumber": free_communication or structured_communication,
|
||||
"cliTrxAmount": int(amount)
|
||||
}
|
||||
response = _l10n_id_make_qris_request('show_qris.php', params)
|
||||
if response.get("status") == "failed":
|
||||
raise ValidationError(response.get("data"))
|
||||
data = response.get('data')
|
||||
|
||||
# create a new transaction line while also converting the qris_request_date to UTC time
|
||||
if model and model_id:
|
||||
new_trx = self.env['l10n_id.qris.transaction'].create({
|
||||
'model': model,
|
||||
'model_id': model_id,
|
||||
'qris_invoice_id': data.get('qris_invoiceid'),
|
||||
'qris_amount': int(amount),
|
||||
# Since the QRIS response is always returned with "Asia/Jakarta" timezone which is UTC+07:00
|
||||
'qris_creation_datetime': fields.Datetime.to_datetime(data.get('qris_request_date')) - datetime.timedelta(hours=7),
|
||||
'qris_content': data.get('qris_content'),
|
||||
'bank_id': self.id
|
||||
})
|
||||
|
||||
# Search the backend record and attach the qris transaction to the record if it exists.
|
||||
trx_record = new_trx._get_record()
|
||||
if trx_record:
|
||||
trx_record.l10n_id_qris_transaction_ids |= new_trx
|
||||
|
||||
return data.get('qris_content')
|
||||
|
||||
return super()._get_qr_vals(qr_method, amount, currency, debtor_partner, free_communication, structured_communication)
|
||||
|
||||
def _get_qr_code_generation_params(self, qr_method, amount, currency, debtor_partner, free_communication, structured_communication):
|
||||
# EXTENDS account
|
||||
if qr_method == 'id_qr':
|
||||
if not self.env.context.get('is_online_qr'):
|
||||
return {}
|
||||
return {
|
||||
'barcode_type': 'QR',
|
||||
'quiet': 0,
|
||||
'width': 120,
|
||||
'height': 120,
|
||||
'value': self._get_qr_vals(qr_method, amount, currency, debtor_partner, free_communication, structured_communication),
|
||||
}
|
||||
return super()._get_qr_code_generation_params(qr_method, amount, currency, debtor_partner, free_communication, structured_communication)
|
||||
|
||||
def _l10n_id_qris_fetch_status(self, qr_data):
|
||||
"""
|
||||
using self and the given data, fetches the status of a specific QR code generated by QRIS
|
||||
Expected values in the qr_data dict are:
|
||||
- invoice_id returned when generating a QR code
|
||||
- the amount present in the qr code
|
||||
- the datetime at which the QR code was generated
|
||||
"""
|
||||
return _l10n_id_make_qris_request('checkpaid_qris.php', {
|
||||
'do': 'checkStatus',
|
||||
'apikey': self.l10n_id_qris_api_key,
|
||||
'mID': self.l10n_id_qris_mid,
|
||||
'invid': qr_data['qris_invoice_id'],
|
||||
'trxvalue': qr_data['qris_amount'],
|
||||
'trxdate': qr_data['qris_creation_datetime'],
|
||||
})
|
||||
63
odoo-bringout-oca-ocb-l10n_id/l10n_id/models/template_id.py
Normal file
63
odoo-bringout-oca-ocb-l10n_id/l10n_id/models/template_id.py
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import models
|
||||
from odoo.addons.account.models.chart_template import template
|
||||
|
||||
|
||||
class AccountChartTemplate(models.AbstractModel):
|
||||
_inherit = 'account.chart.template'
|
||||
|
||||
@template('id')
|
||||
def _get_id_template_data(self):
|
||||
return {
|
||||
'property_account_receivable_id': 'l10n_id_11210010',
|
||||
'property_account_payable_id': 'l10n_id_21100010',
|
||||
'property_stock_valuation_account_id': 'l10n_id_11300180',
|
||||
'code_digits': '8',
|
||||
}
|
||||
|
||||
@template('id', 'res.company')
|
||||
def _get_id_res_company(self):
|
||||
return {
|
||||
self.env.company.id: {
|
||||
'anglo_saxon_accounting': True,
|
||||
'account_fiscal_country_id': 'base.id',
|
||||
'bank_account_code_prefix': '1112',
|
||||
'cash_account_code_prefix': '1111',
|
||||
'transfer_account_code_prefix': '1999999',
|
||||
'default_cash_difference_income_account_id': 'l10n_id_99900002',
|
||||
'default_cash_difference_expense_account_id': 'l10n_id_99900001',
|
||||
'account_default_pos_receivable_account_id': 'l10n_id_11210011',
|
||||
'income_currency_exchange_account_id': 'l10n_id_81100030',
|
||||
'expense_currency_exchange_account_id': 'l10n_id_91100020',
|
||||
'account_journal_early_pay_discount_loss_account_id': 'l10n_id_99900003',
|
||||
'account_journal_early_pay_discount_gain_account_id': 'l10n_id_99900004',
|
||||
'account_sale_tax_id': 'tax_ST4',
|
||||
'account_purchase_tax_id': 'tax_PT4',
|
||||
'expense_account_id': 'l10n_id_51000010',
|
||||
'income_account_id': 'l10n_id_41000010',
|
||||
'account_stock_journal_id': 'inventory_valuation',
|
||||
'account_stock_valuation_id': 'l10n_id_11300180',
|
||||
'deferred_expense_account_id': 'l10n_id_11210040',
|
||||
'deferred_revenue_account_id': 'l10n_id_28110030',
|
||||
},
|
||||
}
|
||||
|
||||
@template('id', 'account.account')
|
||||
def _get_id_account_account(self):
|
||||
return {
|
||||
'l10n_id_11300180': {
|
||||
'account_stock_expense_id': 'l10n_id_51000020',
|
||||
'account_stock_variation_id': 'l10n_id_42500010',
|
||||
},
|
||||
}
|
||||
|
||||
@template('id', 'account.journal')
|
||||
def _get_id_account_journal(self):
|
||||
return {
|
||||
'bank': {'default_account_id': 'l10n_id_11120001'},
|
||||
'cash': {
|
||||
'name': self.env._("Cash"),
|
||||
'type': 'cash',
|
||||
'default_account_id': 'l10n_id_11110001',
|
||||
},
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_l10n_id_qris_transaction,access_l10n_id_qris_transaction,model_l10n_id_qris_transaction,account.group_account_invoice,1,1,1,1
|
||||
|
Binary file not shown.
|
Before Width: | Height: | Size: 1.6 KiB |
|
|
@ -1,51 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 106 106">
|
||||
<defs>
|
||||
<mask id="a" x="0" y="0" width="106" height="106" maskUnits="userSpaceOnUse">
|
||||
<path d="M6.06,0H98.43C104.49,0,106,1.51,106,7.57V98.43c0,6.06-1.51,7.57-7.57,7.57H6.06C1.51,106,0,104.49,0,98.43V7.57C0,1.51,1.51,0,6.06,0Z" style="fill: #fff;fill-rule: evenodd"/>
|
||||
</mask>
|
||||
<mask id="b" x="4.8" y="7.25" width="50.4" height="32.5" maskUnits="userSpaceOnUse">
|
||||
<rect x="6.29" y="7.53" width="48.45" height="31.57" rx="1" style="fill: #fff"/>
|
||||
</mask>
|
||||
<symbol id="c" data-name="account icon" viewBox="0 0 106 106">
|
||||
<g style="mask: url(#a)">
|
||||
<g>
|
||||
<path d="M0,0H106V106H0Z" style="fill: #5a5a64;fill-rule: evenodd"/>
|
||||
<path d="M6.06,1.51H98.43q6.06,0,7.57,3V0H0V4.54Q1.52,1.51,6.06,1.51Z" style="fill: #fff;fill-opacity: 0.382999986410141;fill-rule: evenodd"/>
|
||||
<path d="M6.06,104.49H98.43q6.06,0,7.57-4.55V106H0V99.94Q1.52,104.49,6.06,104.49Z" style="fill-opacity: 0.382999986410141;fill-rule: evenodd"/>
|
||||
<g>
|
||||
<path d="M70.38,104.49H6.06C3,104.49,0,103,0,98.43V61.28L28.77,19.69H59.06a77.33,77.33,0,0,0,21.2,13.87c.07,11.31.07,4.86,0,16.17h3.12l.21,36.82Z" style="fill: #393939;fill-rule: evenodd;opacity: 0.324000000953674;isolation: isolate"/>
|
||||
<g style="opacity: 0.30000000000000004">
|
||||
<g>
|
||||
<path d="M68.77,58.54H76c.76,0,1,.12,1,.46v2.45c0,.31-.24.43-.93.43H61.44c-.66,0-.92-.12-.92-.42,0-.83,0-1.67,0-2.51,0-.29.26-.4.92-.41Z"/>
|
||||
<path d="M64.33,77.42c.42.39.76.66,1,1a.89.89,0,0,1,0,1.31.92.92,0,0,1-1.32,0,4.25,4.25,0,0,1-.48-.47c-.14-.15-.26-.31-.49-.6-.32.37-.54.66-.79.91-.53.53-1.08.58-1.5.15s-.36-.94.15-1.45c.26-.26.54-.5.91-.83-.38-.34-.72-.61-1-.91a.9.9,0,0,1,0-1.36.91.91,0,0,1,1.36,0c.29.28.54.6.93,1A12.1,12.1,0,0,1,64,75.18a.91.91,0,0,1,1.36,0,.87.87,0,0,1,0,1.31C65.07,76.79,64.73,77.06,64.33,77.42Z"/>
|
||||
<path d="M62.13,66.9c0-.47,0-.88,0-1.28a.92.92,0,0,1,.92-1,.91.91,0,0,1,1,1c0,.41,0,.81,0,1.3h1.14a1.16,1.16,0,0,1,1.22,1c0,.55-.42.85-1.18.86H64.12c0,.49,0,.91,0,1.34a.94.94,0,1,1-1.88,0c0-.41,0-.81,0-1.3H60.92a.94.94,0,1,1,0-1.88C61.3,66.89,61.68,66.9,62.13,66.9Z"/>
|
||||
<path d="M74.31,76H72.23c-.67,0-1-.34-1-.93a.89.89,0,0,1,1-1q2.18,0,4.35,0a1,1,0,1,1,0,1.91c-.74,0-1.47,0-2.21,0Z"/>
|
||||
<path d="M74.28,68.61c-.71,0-1.43,0-2.14,0a.86.86,0,0,1-1-.9.85.85,0,0,1,.92-1c1.5,0,3,0,4.48,0a.93.93,0,0,1,1,1,.91.91,0,0,1-1,.91c-.75,0-1.51,0-2.27,0Z"/>
|
||||
<path d="M74.36,78.09c.72,0,1.44,0,2.15,0a1,1,0,0,1,1,1c0,.57-.38.93-1,.94H72.28c-.75,0-1.09-.32-1.09-.94s.37-1,1.09-1,1.39,0,2.08,0Z"/>
|
||||
<path d="M81.29,90.55H56.14a4,4,0,0,1-4-4V53.73a4,4,0,0,1,4-4H81.29a4,4,0,0,1,4,4V86.55A4,4,0,0,1,81.29,90.55ZM56.14,53.73V86.55H81.29V53.73Z"/>
|
||||
</g>
|
||||
<path d="M43.49,83.26H31.8V25.71H56v10.6q0,4.55,4.54,4.55H75.71v5.78h4.55V34.8c-4.55-3-16.66-12.11-19.69-13.63H30.29a2.68,2.68,0,0,0-3,3V84.77a2.68,2.68,0,0,0,3,3H48.45V83.26ZM60.57,25.71l15.14,10.6H60.57Z"/>
|
||||
</g>
|
||||
<path d="M60.57,18.68H30.29a2.68,2.68,0,0,0-3,3V82.28a2.68,2.68,0,0,0,3,3H48.45V80.77H31.8V23.22H56v10.6q0,4.55,4.54,4.55H75.71v5.78h4.55V32.31C75.71,29.28,63.6,20.2,60.57,18.68Zm0,15.14V23.22l15.14,10.6Z" style="fill: #a8a9ab"/>
|
||||
<g>
|
||||
<path d="M68.77,55.78H76c.76,0,1,.13,1,.53v2.85c0,.37-.24.5-.93.5q-7.3,0-14.61,0c-.66,0-.92-.14-.92-.48,0-1,0-2,0-2.93,0-.34.26-.47.92-.47Z" style="fill: #a8a9ab"/>
|
||||
<path d="M64.33,76.53c.42.38.76.65,1,1a.89.89,0,0,1,0,1.31.92.92,0,0,1-1.32,0,5.44,5.44,0,0,1-.48-.48c-.14-.14-.26-.31-.49-.59-.32.36-.54.65-.79.91-.53.53-1.08.57-1.5.14s-.36-.94.15-1.45c.26-.26.54-.49.91-.82-.38-.35-.72-.61-1-.92a.9.9,0,0,1,0-1.36.92.92,0,0,1,1.36,0c.29.28.54.61.93,1A13.78,13.78,0,0,1,64,74.28a.91.91,0,0,1,1.36,0,.88.88,0,0,1,0,1.32C65.07,75.89,64.73,76.16,64.33,76.53Z" style="fill: #a8a9ab"/>
|
||||
<path d="M62.13,65.88c0-.48,0-.88,0-1.29a1,1,0,1,1,1.91,0c0,.4,0,.81,0,1.3h1.14a1.15,1.15,0,0,1,1.22,1c0,.54-.42.85-1.18.85H64.12c0,.49,0,.92,0,1.34a.94.94,0,1,1-1.88,0c0-.4,0-.81,0-1.3H60.92a.94.94,0,1,1,0-1.88Z" style="fill: #a8a9ab"/>
|
||||
<path d="M74.31,75.11c-.69,0-1.38,0-2.08,0s-1-.35-1-.94a.89.89,0,0,1,1-1q2.18,0,4.35,0a.91.91,0,0,1,1,1,.93.93,0,0,1-1,1c-.74,0-1.47,0-2.21,0Z" style="fill: #a8a9ab"/>
|
||||
<path d="M74.28,67.76H72.14a.87.87,0,0,1-1-.9.84.84,0,0,1,.92-1c1.5,0,3,0,4.48,0a.94.94,0,0,1,1,1,.91.91,0,0,1-1,.91H74.28Z" style="fill: #a8a9ab"/>
|
||||
<path d="M74.36,77.2c.72,0,1.44,0,2.15,0a1,1,0,0,1,1,1c0,.56-.38.93-1,.93q-2.12,0-4.23,0c-.75,0-1.09-.32-1.09-.94s.37-.94,1.09-1,1.39,0,2.08,0Z" style="fill: #a8a9ab"/>
|
||||
<path d="M81.29,88.06H56.14a4,4,0,0,1-4-4V51.24a4,4,0,0,1,4-4H81.29a4,4,0,0,1,4,4V84.06A4,4,0,0,1,81.29,88.06ZM56.14,51.24V84.06H81.29V51.24Z" style="fill: #a8a9ab"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</symbol>
|
||||
</defs>
|
||||
<g>
|
||||
<use width="106" height="106" transform="translate(-0.07 0)" xlink:href="#c"/>
|
||||
<rect x="6.2" y="10.57" width="48.45" height="31.57" rx="1" style="fill: #393939;opacity: 0.44;isolation: isolate"/>
|
||||
<g style="mask: url(#b)">
|
||||
<image width="255" height="170" transform="translate(4.8 7.25) scale(0.2 0.19)" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAP8AAAClCAYAAACTHStbAAAACXBIWXMAADf6AAA3+gH8300lAAACA0lEQVR4Xu3VsQ3AMBADsU/gxTO5M4J7H1mrPejZM3uAnPc0AO4kfogSP0SJH6LED1HihyjxQ5T4IUr8ECV+iBI/RIkfosQPUeKHKPFDlPghSvwQJX6IEj9EiR+ixA9R4oco8UOU+CFK/BAlfogSP0SJH6LED1HihyjxQ5T4IUr8ECV+iBI/RIkfosQPUeKHKPFDlPghSvwQJX6IEj9EiR+ixA9R4oco8UOU+CFK/BAlfogSP0SJH6LED1HihyjxQ5T4IUr8ECV+iBI/RIkfosQPUeKHKPFDlPghSvwQJX6IEj9EiR+ixA9R4oco8UOU+CFK/BAlfogSP0SJH6LED1HihyjxQ5T4IUr8ELVm79MGuJDnhyjxQ5T4IUr8ECV+iBI/RIkfosQPUeKHKPFDlPghSvwQJX6IEj9EiR+ixA9R4oco8UOU+CFK/BAlfogSP0SJH6LED1HihyjxQ5T4IUr8ECV+iBI/RIkfosQPUeKHKPFDlPghSvwQJX6IEj9EiR+ixA9R4oco8UOU+CFK/BAlfogSP0SJH6LED1HihyjxQ5T4IUr8ECV+iBI/RIkfosQPUeKHKPFDlPghSvwQJX6IEj9EiR+ixA9R4oco8UOU+CFK/BAlfogSP0SJH6LED1HihyjxQ5T4IUr8ECV+iBI/RIkfosQPUeKHqDUz32kE3OcHTh8Fy0pWvJgAAAAASUVORK5CYII="/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.1 KiB |
2
odoo-bringout-oca-ocb-l10n_id/l10n_id/tests/__init__.py
Normal file
2
odoo-bringout-oca-ocb-l10n_id/l10n_id/tests/__init__.py
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
from . import test_qris_transaction
|
||||
from . import test_qris
|
||||
196
odoo-bringout-oca-ocb-l10n_id/l10n_id/tests/test_qris.py
Normal file
196
odoo-bringout-oca-ocb-l10n_id/l10n_id/tests/test_qris.py
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
from markupsafe import Markup
|
||||
|
||||
from odoo.fields import Command
|
||||
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
||||
from odoo.tests import tagged
|
||||
from unittest.mock import patch
|
||||
from freezegun import freeze_time
|
||||
|
||||
|
||||
@tagged('post_install_l10n', 'post_install', '-at_install')
|
||||
class TestQris(AccountTestInvoicingCommon):
|
||||
""" Test QRIS QR generation on invoices and auto-payment registration"""
|
||||
|
||||
@classmethod
|
||||
@AccountTestInvoicingCommon.setup_chart_template('id')
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.company_data['company'].qr_code = True
|
||||
cls.company_data['company'].partner_id.update({
|
||||
'country_id': cls.env.ref('base.id').id,
|
||||
'city': 'Jakarta',
|
||||
})
|
||||
|
||||
cls.acc_qris_id = cls.env['res.partner.bank'].create({
|
||||
'acc_number': '123456789012345678',
|
||||
'partner_id': cls.company_data['company'].partner_id.id,
|
||||
'l10n_id_qris_api_key': 'apikey',
|
||||
'l10n_id_qris_mid': 'mid',
|
||||
'allow_out_payment': True,
|
||||
})
|
||||
cls.qris_qr_invoice = cls.env['account.move'].create({
|
||||
'move_type': 'out_invoice',
|
||||
'partner_id': cls.partner_a.id,
|
||||
'currency_id': cls.env.ref('base.IDR').id,
|
||||
'partner_bank_id': cls.acc_qris_id.id,
|
||||
'company_id': cls.company_data['company'].id,
|
||||
'invoice_line_ids': [Command.create({'quantity': 1, 'price_unit': 100})],
|
||||
'qr_code_method': 'id_qr',
|
||||
})._post()
|
||||
|
||||
cls.success_qris_get = {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"qris_content": "Test Content",
|
||||
"qris_request_date": "2024-02-27 11:13:42",
|
||||
"qris_invoiceid": "413255111",
|
||||
"qris_nmid": "ID1020021181745"
|
||||
}
|
||||
}
|
||||
cls.success_qris_get_second = {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"qris_content": "Test Content Second",
|
||||
"qris_request_date": "2024-02-27 11:13:42",
|
||||
"qris_invoiceid": "413255111",
|
||||
"qris_nmid": "ID1020021181745"
|
||||
}
|
||||
}
|
||||
|
||||
cls.qris_status_fail = {
|
||||
"status": "failed",
|
||||
"data": {
|
||||
"qris_status": "unpaid"
|
||||
}
|
||||
}
|
||||
|
||||
cls.qris_status_success = {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"qris_status": "paid",
|
||||
"qris_payment_customername": "Zainal Arief",
|
||||
"qris_payment_methodby": "Sakuku"
|
||||
},
|
||||
"qris_api_version_code": "2206091709"
|
||||
}
|
||||
|
||||
@freeze_time("2024-02-27 04:15:00")
|
||||
def test_qris_qr_code_generation(self):
|
||||
""" QR-Code generation conditions:
|
||||
|
||||
- should only come from portal side
|
||||
- only call the API when the QRIS transaction not found or lasted for > 30 minutes
|
||||
- if transaction found and < 30 minutes, no API call needed
|
||||
"""
|
||||
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.success_qris_get
|
||||
) as patched:
|
||||
# QR code shouldn't be generated without the context.
|
||||
result = self.qris_qr_invoice._generate_qr_code()
|
||||
self.assertIsNone(result)
|
||||
|
||||
# But of course, should be with it.
|
||||
result = self.qris_qr_invoice.with_context({'is_online_qr': True})._generate_qr_code()
|
||||
self.assertIsNotNone(result)
|
||||
|
||||
# Confirm that a transaction should be registered on the invoice
|
||||
qr_details = self.qris_qr_invoice.l10n_id_qris_transaction_ids
|
||||
self.assertEqual(len(qr_details), 1)
|
||||
|
||||
qris_data = self.success_qris_get['data']
|
||||
self.assertEqual(qr_details.qris_invoice_id, qris_data['qris_invoiceid'])
|
||||
self.assertEqual(qr_details.qris_content, qris_data['qris_content'])
|
||||
patched.assert_called_once()
|
||||
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.success_qris_get
|
||||
) as patched:
|
||||
# Check the API is not called again, as it should reuse the existing QR until it is expired
|
||||
self.qris_qr_invoice.with_context({'is_online_qr': True})._generate_qr_code()
|
||||
patched.assert_not_called()
|
||||
|
||||
# Check that if the qr code has expired, we correctly generate a new one.
|
||||
qr_details.qris_creation_datetime = '2024-02-27 03:00:00'
|
||||
self.qris_qr_invoice.with_context({'is_online_qr': True})._generate_qr_code()
|
||||
patched.assert_called_once()
|
||||
|
||||
self.assertEqual(len(self.qris_qr_invoice.l10n_id_qris_transaction_ids), 2)
|
||||
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.success_qris_get_second
|
||||
):
|
||||
self.qris_qr_invoice.l10n_id_qris_transaction_ids[-1]['qris_creation_datetime'] = '2024-02-27 03:00:00'
|
||||
self.qris_qr_invoice.with_context({'is_online_qr': True})._generate_qr_code()
|
||||
|
||||
# Ensure that the l10n_id_latest_qris_content is the new one, while now there are 3 qris transactions linked to the inovice
|
||||
qr_details = self.qris_qr_invoice.l10n_id_qris_transaction_ids
|
||||
qris_data = self.success_qris_get_second['data']
|
||||
self.assertEqual(qr_details[-1].qris_invoice_id, qris_data['qris_invoiceid'])
|
||||
self.assertEqual(qr_details[-1].qris_content, qris_data['qris_content'])
|
||||
|
||||
self.assertEqual(len(self.qris_qr_invoice.l10n_id_qris_transaction_ids), 3)
|
||||
|
||||
@freeze_time("2024-02-27 04:15:00")
|
||||
def test_fetch_payment_status_fail(self):
|
||||
""" If API return unpaid status """
|
||||
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.success_qris_get
|
||||
):
|
||||
self.qris_qr_invoice.with_context({'is_online_qr': True})._generate_qr_code()
|
||||
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.qris_status_fail
|
||||
):
|
||||
self.qris_qr_invoice.action_l10n_id_update_payment_status()
|
||||
self.assertEqual(self.qris_qr_invoice.payment_state, 'not_paid')
|
||||
|
||||
@freeze_time("2024-02-27 04:15:00")
|
||||
def test_fetch_payment_status_success(self):
|
||||
""" If API returns 'paid' status """
|
||||
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.success_qris_get
|
||||
):
|
||||
self.qris_qr_invoice.with_context({'is_online_qr': True})._generate_qr_code()
|
||||
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.qris_status_success
|
||||
):
|
||||
self.qris_qr_invoice.action_l10n_id_update_payment_status()
|
||||
self.assertEqual(self.qris_qr_invoice.payment_state, self.env['account.move']._get_invoice_in_payment_state())
|
||||
# Ensure that the message is logged as expected.
|
||||
self.assertEqual(
|
||||
self.qris_qr_invoice.message_ids[0].body,
|
||||
Markup('<p>This invoice was paid by Zainal Arief using QRIS with the payment method Sakuku.</p>')
|
||||
)
|
||||
# One of the QRIS transactions linked to the invoice should be paid already
|
||||
self.assertTrue(any(self.qris_qr_invoice.l10n_id_qris_transaction_ids.mapped('paid')))
|
||||
|
||||
@freeze_time("2024-02-27 04:15:00")
|
||||
def test_gc_no_remove_transactions_unpaid_within_30(self):
|
||||
# Case 2: Unsuccessful, latest transaction is < 30 minutes, should avoid garbage-collection
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.success_qris_get
|
||||
):
|
||||
self.qris_qr_invoice.with_context({'is_online_qr': True})._generate_qr_code()
|
||||
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.qris_status_fail
|
||||
):
|
||||
self.qris_qr_invoice.action_l10n_id_update_payment_status()
|
||||
self.assertEqual(self.env['l10n_id.qris.transaction'].search_count([]), 1)
|
||||
self.env['l10n_id.qris.transaction']._gc_remove_pointless_qris_transactions()
|
||||
self.assertEqual(self.env['l10n_id.qris.transaction'].search_count([]), 1)
|
||||
|
||||
@freeze_time("2024-02-27 05:15:00")
|
||||
def test_gc_remove_transactions_unpaid_after_30(self):
|
||||
# Case 3: Unsuccessful, latest transaction is > 30 minutes, should be garbage-collected
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.success_qris_get
|
||||
):
|
||||
self.qris_qr_invoice.with_context({'is_online_qr': True})._generate_qr_code()
|
||||
self.assertEqual(self.env['l10n_id.qris.transaction'].search_count([]), 1)
|
||||
self.env['l10n_id.qris.transaction']._gc_remove_pointless_qris_transactions()
|
||||
self.assertEqual(self.env['l10n_id.qris.transaction'].search_count([]), 0)
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
|
||||
from odoo.fields import Command
|
||||
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
||||
from odoo.tests import tagged
|
||||
from unittest.mock import patch
|
||||
|
||||
|
||||
@tagged('post_install_l10n', 'post_install', '-at_install')
|
||||
class TestQrisTransaction(AccountTestInvoicingCommon):
|
||||
""" Testing the behaviours of QRIS Transaction """
|
||||
|
||||
@classmethod
|
||||
@AccountTestInvoicingCommon.setup_chart_template('id')
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.invoice = cls.env['account.move'].create({
|
||||
'move_type': 'out_invoice',
|
||||
'partner_id': cls.partner_a.id,
|
||||
'invoice_date': '2019-05-01',
|
||||
'date': '2019-05-01',
|
||||
'invoice_line_ids': [
|
||||
Command.create({'name': 'line1', 'price_unit': 110.0}),
|
||||
],
|
||||
})
|
||||
cls.qris_status_success = {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"qris_status": "paid",
|
||||
"qris_payment_customername": "Zainal Arief",
|
||||
"qris_payment_methodby": "Sakuku"
|
||||
},
|
||||
"qris_api_version_code": "2206091709"
|
||||
}
|
||||
cls.qris_status_fail = {
|
||||
"status": "failed",
|
||||
"data": {
|
||||
"qris_status": "unpaid"
|
||||
}
|
||||
}
|
||||
|
||||
cls.acc_qris_id = cls.env['res.partner.bank'].create({
|
||||
'acc_number': '123456789012345678',
|
||||
'partner_id': cls.company_data['company'].partner_id.id,
|
||||
'l10n_id_qris_api_key': 'apikey',
|
||||
'l10n_id_qris_mid': 'mid',
|
||||
})
|
||||
|
||||
# Utility method to help create QRIS transactions
|
||||
def _create_sample_transaction(self, model, model_id, qris_id, amount, create_at, content):
|
||||
return self.env['l10n_id.qris.transaction'].create({
|
||||
'model': model,
|
||||
'model_id': model_id,
|
||||
'qris_invoice_id': qris_id,
|
||||
'qris_amount': amount,
|
||||
'qris_creation_datetime': create_at,
|
||||
'qris_content': content,
|
||||
})
|
||||
|
||||
def test_retrieve_backend_record(self):
|
||||
""" Test the _get_record method to retrieve original record accordingly """
|
||||
trx = self._create_sample_transaction(
|
||||
"account.move", str(self.invoice.id), "11254", 11000, "2024-08-01", "qris_content_sample"
|
||||
)
|
||||
invoice = trx._get_record()
|
||||
self.assertEqual(invoice, self.invoice)
|
||||
|
||||
def test_latest_transaction(self):
|
||||
""" Test method _get_latest_transaction"""
|
||||
self._create_sample_transaction(
|
||||
"account.move", "1", "11254", 11000, "2024-08-01 03:00:00", "qris_content_sample"
|
||||
)
|
||||
self._create_sample_transaction(
|
||||
"account.move", "1", "11254", 11000, "2024-08-01 03:00:15", "qris_content_sample_latest"
|
||||
)
|
||||
|
||||
trx = self.env['l10n_id.qris.transaction']._get_latest_transaction('account.move', '1')
|
||||
self.assertTrue(
|
||||
trx['qris_amount'] == 11000 and trx['qris_content'] == "qris_content_sample_latest"
|
||||
)
|
||||
|
||||
def test_l10n_id_get_qris_qr_statuses(self):
|
||||
""" Test the method _l10n_id_get_qris_qr_statuses """
|
||||
|
||||
# Create QRIS transaction with 2 entries in invoice details
|
||||
trx = self._create_sample_transaction(
|
||||
"account.move", "1", "11253", 11000, "2024-08-01", "qris_content_sample"
|
||||
)
|
||||
trx |= self._create_sample_transaction(
|
||||
"account.move", "1", "11254", 11000, "2024-08-01", "qris_content_sample"
|
||||
)
|
||||
|
||||
# if QRIS returns success, _l10n_id_make_request should only be called once and
|
||||
# status returned is {'paid': True, 'qr_statuses': [{self.qris_status_success}]}
|
||||
# and check that the transaction is also paid
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.qris_status_success
|
||||
) as patched:
|
||||
res = trx._l10n_id_get_qris_qr_statuses()
|
||||
patched.assert_called_once()
|
||||
self.assertEqual(len(res['qr_statuses']), 1)
|
||||
success_response = res['qr_statuses'][0]
|
||||
self.assertTrue(res['paid'] and success_response['qris_payment_customername'] == 'Zainal Arief' and trx[0].paid)
|
||||
|
||||
# if QRIS returns fail for all, _l10n_id_make-request should be called twice and
|
||||
# status returned is {'paid': False, 'qr_statuses': [{self.qris_status}, {self.qris_status_fail}]}
|
||||
with patch(
|
||||
'odoo.addons.l10n_id.models.res_bank._l10n_id_make_qris_request', return_value=self.qris_status_fail
|
||||
) as patched:
|
||||
res = trx._l10n_id_get_qris_qr_statuses()
|
||||
self.assertEqual(patched.call_count, 2)
|
||||
self.assertEqual(len(res['qr_statuses']), 2)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="action_fetch_qris_status" model="ir.actions.server">
|
||||
<field name="name">Check QRIS Payment Status</field>
|
||||
<field name="group_ids" eval="[(4, ref('account.group_account_invoice'))]"/>
|
||||
<field name="model_id" ref="account.model_account_move"/>
|
||||
<field name="binding_model_id" ref="account.model_account_move"/>
|
||||
<field name="binding_view_types">list,kanban,form</field>
|
||||
<field name="state">code</field>
|
||||
<field name="code">
|
||||
if records:
|
||||
action = records.action_l10n_id_update_payment_status()
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
16
odoo-bringout-oca-ocb-l10n_id/l10n_id/views/res_bank.xml
Normal file
16
odoo-bringout-oca-ocb-l10n_id/l10n_id/views/res_bank.xml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_partner_bank_form_inherit_account" model="ir.ui.view">
|
||||
<field name="name">res.partner.bank.form.inherit.account</field>
|
||||
<field name="model">res.partner.bank</field>
|
||||
<field name="inherit_id" ref="base.view_partner_bank_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='allow_out_payment']/parent::group" position="inside">
|
||||
<field name="l10n_id_qris_api_key" invisible="country_code != 'ID'"/>
|
||||
<field name="l10n_id_qris_mid" invisible="country_code != 'ID'" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Loading…
Add table
Add a link
Reference in a new issue