Commit 1d42c411 by aa.gusti

penambahan id_accounting dan dashboard

1 parent 86c89c5a
Showing 56 changed files with 2951 additions and 6 deletions
import csv
import glob
NOUPDATE = 1
BOOLEAN = ('True', 'False')
ERP_HEADER = """<?xml version="1.0"?>
<odoo>
<data noupdate="%s">"""
ERP_FOOTER = """
</data>
</odoo>
"""
FILES_WITH_UPDATE = ('product.product.csv')
def convert_relationnal_field2xml(tag, value):
mytag = tag
for elm in ['/ids', '/id', ':id']:
mytag = mytag.replace(elm, '')
if tag[-6:] == 'ids/id':
# many2many
line = '%s" eval="[(6, 0, [%s])]"/>\n' % (mytag, value)
else:
# many2one
line = '%s" ref="%s"/>\n' % (mytag, row[i])
return line
for csv_file in glob.glob('*.csv'):
no_update = NOUPDATE
if csv_file in FILES_WITH_UPDATE:
no_update = 0
xml_file = csv_file.replace('.', '_').replace('_csv', '_data.xml')
csv_data = csv.reader(open(csv_file))
xml_data = open(xml_file, 'w')
xml_data.write(ERP_HEADER % NOUPDATE + "\n\n\n")
row_num = 0
print(csv_file)
for row in csv_data:
tags = row
if row_num == 0:
for i in range(len(tags)):
tags[i] = tags[i].replace(' ', '_')
else:
for i in range(len(tags)):
char = False
numeric = True
# ambiguous column (char type but contains float string)
# should be mark by suffix |char
if tags[i][-5:] == '|char':
char = True
numeric = False
begin = ' <field name="'
try:
float(row[i])
numeric = True
except Exception:
pass
if tags[i] == 'id':
# 'id' column is supposed to be the first left
line = ('<record id="%s" model="%s">\n'
% (row[i], csv_file[:-4]))
elif '/' in tags[i] or ':' in tags[i]:
# relationnal fields
xml_suffix = convert_relationnal_field2xml(tags[i], row[i])
line = '%s%s' % (begin, xml_suffix)
elif char:
# numeric ghar field
line = '%s%s">%s</field>\n' % (begin, tags[i][:-5], row[i])
elif numeric or row[i] in BOOLEAN:
line = '%s%s" eval="%s"/>\n' % (begin, tags[i], row[i])
else:
# basic fields
line = '%s%s">%s</field>\n' % (begin, tags[i], row[i])
if row[i] or tags[i] == 'id':
xml_data.write(line)
xml_data.write('</record>' + "\n\n")
row_num += 1
xml_data.write(ERP_FOOTER)
xml_data.close()
......@@ -75,8 +75,8 @@ class District(models.Model):
limit=limit, access_rights_uid=name_get_uid)
if district_id not in first_district_ids
]
_logger.info(self.env.context.get('country_id'))
_logger.info(first_ids)
# _logger.info(self.env.context.get('country_id'))
# _logger.info(first_ids)
return first_ids
# @api.depends('code')
......@@ -200,8 +200,8 @@ class Village(models.Model):
args = args or []
if self.env.context.get('sub_district_id'):
args = expression.AND([args, [('sub_district_id', '=', self.env.context.get('sub_district_id'))]])
_logger.info(self.env.context.get('sub_district_id'))
_logger.info(args)
# _logger.info(self.env.context.get('sub_district_id'))
# _logger.info(args)
if operator == 'ilike' and not (name or '').strip():
first_domain = []
......@@ -218,8 +218,8 @@ class Village(models.Model):
limit=limit, access_rights_uid=name_get_uid)
if sub_district_id not in first_village_ids
]
_logger.info(first_ids)
_logger.info(first_village_ids)
# _logger.info(first_ids)
# _logger.info(first_village_ids)
return first_ids
def code_get(self):
......
#Indonesia Goverment Accounting
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import controllers
from . import models
from . import wizard
from . import report
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Indonesia Goverment Accounting',
'version': '0.1',
'summary': 'Indonesia Goverment Accounting',
'sequence': 10,
'description': """
Indonesia Goverment Accounting
""",
'category': 'Indonesia Goverment',
'website': 'https://opensipkd.com',
'images': [],
'depends': ['id_gov','portal'],
'data': [
# 'security/account_security.xml',
'security/ir.model.access.csv',
# 'security/ir_rule.xml',
'data/account_data.xml',
'data/data_account_type.xml',
'data/account_group.xml',
'data/account.account.csv',
# 'views/menus.xml',
],
'demo': [
],
'qweb': [],
'installable': True,
'application': True,
'auto_install': False,
'license': 'LGPL-3',
'module': 'id region accounting'
}
This diff could not be displayed because it is too large.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- <record forcecreate="True" id="decimal_payment" model="decimal.precision">-->
<!-- <field name="name">Payment Terms</field>-->
<!-- <field name="digits">6</field>-->
<!-- </record>-->
<!-- &lt;!&ndash; Open Settings from Purchase Journal to configure mail servers &ndash;&gt;-->
<!-- <record id="action_open_settings" model="ir.actions.act_window">-->
<!-- <field name="name">Settings</field>-->
<!-- <field name="res_model">res.config.settings</field>-->
<!-- <field name="view_mode">form</field>-->
<!-- <field name="target">inline</field>-->
<!-- <field name="context" eval="{'module': 'general_settings', 'bin_size': False}"/>-->
<!-- </record>-->
<!-- TAGS FOR CASH FLOW STATEMENT DIRECT METHOD -->
<record id="account_tag_operating" model="account.account.tag">
<field name="name">Operating Activities</field>
<field name="applicability">accounts</field>
</record>
<record id="account_tag_financing" model="account.account.tag">
<field name="name">Financing Activities</field>
<field name="applicability">accounts</field>
</record>
<record id="account_tag_investing" model="account.account.tag">
<field name="name">Investing &amp; Extraordinary Activities</field>
<field name="applicability">accounts</field>
</record>
<!--
Payment terms
-->
<!-- <record id="account_payment_term_immediate" model="account.payment.term">-->
<!-- <field name="name">Immediate Payment</field>-->
<!-- <field name="note">Payment terms: Immediate Payment</field>-->
<!-- </record>-->
<!-- <record id="account_payment_term_15days" model="account.payment.term">-->
<!-- <field name="name">15 Days</field>-->
<!-- <field name="note">Payment terms: 15 Days</field>-->
<!-- <field name="line_ids" eval="[(5, 0), (0, 0, {'value': 'balance', 'value_amount': 0.0, 'sequence': 500, 'days': 15, 'option': 'day_after_invoice_date'})]"/>-->
<!-- </record>-->
<!-- <record id="account_payment_term_21days" model="account.payment.term">-->
<!-- <field name="name">21 Days</field>-->
<!-- <field name="note">Payment terms: 21 Days</field>-->
<!-- <field name="line_ids" eval="[(5, 0), (0, 0, {'value': 'balance', 'value_amount': 0.0, 'sequence': 500, 'days': 21, 'option': 'day_after_invoice_date'})]"/>-->
<!-- </record>-->
<!-- <record id="account_payment_term_30days" model="account.payment.term">-->
<!-- <field name="name">30 Days</field>-->
<!-- <field name="note">Payment terms: 30 Days</field>-->
<!-- <field name="line_ids" eval="[(5, 0), (0, 0, {'value': 'balance', 'value_amount': 0.0, 'sequence': 500, 'days': 30, 'option': 'day_after_invoice_date'})]"/>-->
<!-- </record>-->
<!-- <record id="account_payment_term_45days" model="account.payment.term">-->
<!-- <field name="name">45 Days</field>-->
<!-- <field name="note">Payment terms: 45 Days</field>-->
<!-- <field name="line_ids" eval="[(5, 0), (0, 0, {'value': 'balance', 'value_amount': 0.0, 'sequence': 500, 'days': 45, 'option': 'day_after_invoice_date'})]"/>-->
<!-- </record>-->
<!-- <record id="account_payment_term_2months" model="account.payment.term">-->
<!-- <field name="name">2 Months</field>-->
<!-- <field name="note">Payment terms: 2 Months</field>-->
<!-- <field name="line_ids" eval="[(5, 0), (0, 0, {'value': 'balance', 'value_amount': 0.0, 'sequence': 500, 'days': 60, 'option': 'day_after_invoice_date'})]"/>-->
<!-- </record>-->
<!-- <record id="account_payment_term_end_following_month" model="account.payment.term">-->
<!-- <field name="name">End of Following Month</field>-->
<!-- <field name="note">Payment terms: End of Following Month</field>-->
<!-- <field name="line_ids" eval="[(5, 0), (0, 0, {'value': 'balance', 'value_amount': 0.0, 'sequence': 500, 'days': 31, 'option': 'day_following_month'})]"/>-->
<!-- </record>-->
<!-- <record id="account_payment_term_advance_60days" model="account.payment.term">-->
<!-- <field name="name">30% Now, Balance 60 Days</field>-->
<!-- <field name="note">Payment terms: 30% Now, Balance 60 Days</field>-->
<!-- <field name="line_ids" eval="[(5, 0), (0, 0, {'value': 'percent', 'value_amount': 30.0, 'sequence': 400, 'days': 0, 'option': 'day_after_invoice_date'}),-->
<!-- (0, 0, {'value': 'balance', 'value_amount': 0.0, 'sequence': 500, 'days': 60, 'option': 'day_after_invoice_date'})]"/>-->
<!-- </record>-->
<!--
Account Statement Sequences
-->
<!-- <record id="sequence_reconcile_seq" model="ir.sequence">-->
<!-- <field name="name">Account reconcile sequence</field>-->
<!-- <field name="code">account.reconcile</field>-->
<!-- <field name="prefix">A</field>-->
<!-- <field eval="1" name="number_next"/>-->
<!-- <field eval="1" name="number_increment"/>-->
<!-- <field eval="False" name="company_id"/>-->
<!-- </record>-->
<!-- Account-related subtypes for messaging / Chatter -->
<!-- <record id="mt_invoice_validated" model="mail.message.subtype">-->
<!-- <field name="name">Validated</field>-->
<!-- <field name="res_model">account.move</field>-->
<!-- <field name="default" eval="False"/>-->
<!-- <field name="description">Invoice validated</field>-->
<!-- </record>-->
<!-- <record id="mt_invoice_paid" model="mail.message.subtype">-->
<!-- <field name="name">Paid</field>-->
<!-- <field name="res_model">account.move</field>-->
<!-- <field name="default" eval="False"/>-->
<!-- <field name="description">Invoice paid</field>-->
<!-- </record>-->
<!-- <record id="mt_invoice_created" model="mail.message.subtype">-->
<!-- <field name="name">Invoice Created</field>-->
<!-- <field name="res_model">account.move</field>-->
<!-- <field name="default" eval="False"/>-->
<!-- <field name="hidden" eval="True"/>-->
<!-- <field name="description">Invoice Created</field>-->
<!-- </record>-->
<!-- Payment methods -->
<!-- <record id="account_payment_method_manual_in" model="account.payment.method">-->
<!-- <field name="name">Manual</field>-->
<!-- <field name="code">manual</field>-->
<!-- <field name="payment_type">inbound</field>-->
<!-- </record>-->
<!-- <record id="account_payment_method_manual_out" model="account.payment.method">-->
<!-- <field name="name">Manual</field>-->
<!-- <field name="code">manual</field>-->
<!-- <field name="payment_type">outbound</field>-->
<!-- </record>-->
<!-- Account Tax Group -->
<!-- <record id="tax_group_taxes" model="account.tax.group">-->
<!-- <field name="name">Taxes</field>-->
<!-- <field name="sequence">0</field>-->
<!-- </record>-->
<!-- Partner Trust Property -->
<!-- <record forcecreate="True" id="default_followup_trust" model="ir.property">-->
<!-- <field name="name">Followup Trust Property</field>-->
<!-- <field name="fields_id" search="[('model', '=', 'res.partner'), ('name', '=', 'trust')]"/>-->
<!-- <field name="value">normal</field>-->
<!-- <field name="type">selection</field>-->
<!-- </record>-->
<!-- Share Button in action menu -->
<!-- <record id="model_account_move_action_share" model="ir.actions.server">-->
<!-- <field name="name">Share</field>-->
<!-- <field name="model_id" ref="account.model_account_move"/>-->
<!-- <field name="binding_model_id" ref="account.model_account_move"/>-->
<!-- <field name="binding_view_types">form</field>-->
<!-- <field name="state">code</field>-->
<!-- <field name="code">action = records.action_share()</field>-->
<!-- </record>-->
</data>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- account.account.type -->
<record model="account.account.type" id="data_account_type_receivable">
<field name="name">Receivable</field>
<field name="type">receivable</field>
<field name="internal_group">asset</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_payable">
<field name="name">Payable</field>
<field name="type">payable</field>
<field name="internal_group">liability</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_liquidity">
<field name="name">Bank and Cash</field>
<field name="type">liquidity</field>
<field name="internal_group">asset</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_credit_card">
<field name="name">Credit Card</field>
<field name="type">liquidity</field>
<field name="internal_group">liability</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_current_assets">
<field name="name">Current Assets</field>
<field name="type">other</field>
<field name="internal_group">asset</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_non_current_assets">
<field name="name">Non-current Assets</field>
<field name="type">other</field>
<field name="internal_group">asset</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_prepayments">
<field name="name">Prepayments</field>
<field name="type">other</field>
<field name="internal_group">asset</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_fixed_assets">
<field name="name">Fixed Assets</field>
<field name="type">other</field>
<field name="internal_group">asset</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_current_liabilities">
<field name="name">Current Liabilities</field>
<field name="type">other</field>
<field name="internal_group">liability</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_non_current_liabilities">
<field name="name">Non-current Liabilities</field>
<field name="type">other</field>
<field name="internal_group">liability</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_equity">
<field name="name">Equity</field>
<field name="internal_group">equity</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_unaffected_earnings">
<field name="name">Current Year Earnings</field>
<field name="internal_group">equity</field>
<field name="include_initial_balance" eval="True"/>
</record>
<record model="account.account.type" id="data_account_type_revenue">
<field name="name">Income</field>
<field name="type">other</field>
<field name="internal_group">income</field>
</record>
<record model="account.account.type" id="data_account_type_other_income">
<field name="name">Other Income</field>
<field name="type">other</field>
<field name="internal_group">income</field>
</record>
<record model="account.account.type" id="data_account_type_expenses">
<field name="name">Expenses</field>
<field name="type">other</field>
<field name="internal_group">expense</field>
</record>
<record model="account.account.type" id="data_account_type_depreciation">
<field name="name">Depreciation</field>
<field name="type">other</field>
<field name="internal_group">expense</field>
</record>
<record model="account.account.type" id="data_account_type_direct_costs">
<field name="name">Cost of Revenue</field>
<field name="type">other</field>
<field name="internal_group">expense</field>
</record>
<record model="account.account.type" id="data_account_off_sheet">
<field name="name">Off-Balance Sheet</field>
<field name="type">other</field>
<field name="internal_group">off_balance</field>
</record>
</data>
</odoo>
No preview for this file type
from . import account_account_tag
from . import account_account
from . import account_tax
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class AccountAccountTag(models.Model):
_name = 'account.account.tag'
_description = 'Account Tag'
name = fields.Char('Tag Name', required=True)
applicability = fields.Selection([('accounts', 'Accounts'), ('taxes', 'Taxes')],
required=True, default='accounts')
color = fields.Integer('Color Index')
active = fields.Boolean(default=True,
help="Set active to false to hide the Account Tag without removing it.")
# tax_report_line_ids = fields.Many2many(string="Tax Report Lines",
# comodel_name='account.tax.report.line',
# relation='account_tax_report_line_tags_rel',
# help="The tax report lines using this tag")
tax_negate = fields.Boolean(string="Negate Tax Balance",
help="Check this box to negate the absolute value of the balance of the lines associated with this tag in tax report computation.")
country_id = fields.Many2one(string="Country", comodel_name='res.country',
help="Country for which this tag is available, when applied on taxes.")
@api.model
def _get_tax_tags(self, tag_name, country_id):
""" Returns all the tax tags corresponding to the tag name given in parameter
in the specified country.
"""
escaped_tag_name = tag_name.replace('\\', '\\\\').replace('%', '\%').replace('_', '\_')
return self.env['account.account.tag'].search([('name', '=like', '_' + escaped_tag_name),
('country_id', '=', country_id),
('applicability', '=', 'taxes')])
@api.constrains('country_id', 'applicability')
def _validate_tag_country(self):
for record in self:
if record.applicability == 'taxes' and not record.country_id:
raise ValidationError(_("A tag defined to be used on taxes must always have a country set."))
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_account_account_admin","access.account.account.admin","model_account_account","base.group_system",1,1,1,1
"access_account_account_type_admin","access.account.account.type.admin","model_account_account_type","base.group_system",1,1,1,1
#Dashboard Pajak
Module ini digunakan untuk membuat dashboard pajak
\ No newline at end of file
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import controllers
from . import models
from . import wizard
from . import report
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Indonesia Goverment Dashboard',
'version': '0.1',
'summary': 'Indonesia Goverment Dashboard',
'sequence': 10,
'description': """
RI Goverment Dashboard
""",
'category': 'Indonesia Goverment',
'website': 'https://opensipkd.com',
'images': [],
'depends': ['id_gov', 'idg_account', 'portal'],
'data': [
# 'security/account_security.xml',
'security/ir.model.access.csv',
# 'security/ir_rule.xml',
'views/region_tax_potency.xml',
'views/region_tax_plan.xml',
'views/region_tax_actual.xml',
'views/menus.xml',
# 'views/portal_templates.xml',
"demo/idg.region.tax.potency.csv",
"demo/idg.region.tax.plan.csv",
"demo/idg.region.tax.actual.csv",
],
'demo': [
# "demo/idg.region.tax.potency.csv"
],
'qweb': [],
'installable': True,
'application': True,
'auto_install': False,
'license': 'LGPL-3',
'module': 'pajak'
}
"id","account_id",amount,country_id,state_id,district_id
"id_acc_41010101001_p","41010101001",10000000,id,JB,
"id_acc_41010101002_p","41010101002",10000000,id,JB,
"id_acc_41010101003_p","41010101003",10000000,id,JB,
"id_acc_41010101004_p","41010101004",10000000,id,JB,
"id_acc_41010102001_p","41010102001",10000000,id,JB,
"id_acc_41010102002_p","41010102002",10000000,id,JB,
"id_acc_41010102003_p","41010102003",10000000,id,JB,
"id_acc_41010102004_p","41010102004",10000000,id,JB,
"id_acc_41010103001_p","41010103001",10000000,id,JB,
"id_acc_41010103002_p","41010103002",10000000,id,JB,
"id_acc_41010103003_p","41010103003",10000000,id,JB,
"id_acc_41010103004_p","41010103004",10000000,id,JB,
"id_acc_41010104001_p","41010104001",10000000,id,JB,
"id_acc_41010104002_p","41010104002",10000000,id,JB,
"id_acc_41010104003_p","41010104003",10000000,id,JB,
"id_acc_41010104004_p","41010104004",10000000,id,JB,
"id_acc_41010105001_p","41010105001",10000000,id,JB,
"id_acc_41010105002_p","41010105002",10000000,id,JB,
"id_acc_41010105003_p","41010105003",10000000,id,JB,
"id_acc_41010105004_p","41010105004",10000000,id,JB,
"id_acc_41010106001_p","41010106001",10000000,id,JB,
"id_acc_41010106002_p","41010106002",10000000,id,JB,
"id_acc_41010106003_p","41010106003",10000000,id,JB,
"id_acc_41010106004_p","41010106004",10000000,id,JB,
"id_acc_41010107001_p","41010107001",10000000,id,JB,
"id_acc_41010107002_p","41010107002",10000000,id,JB,
"id_acc_41010107003_p","41010107003",10000000,id,JB,
"id_acc_41010107004_p","41010107004",10000000,id,JB,
"id_acc_41010108001_p","41010108001",10000000,id,JB,
"id_acc_41010108002_p","41010108002",10000000,id,JB,
"id_acc_41010108003_p","41010108003",10000000,id,JB,
"id_acc_41010108004_p","41010108004",10000000,id,JB,
"id_acc_41010109001_p","41010109001",10000000,id,JB,
"id_acc_41010109002_p","41010109002",10000000,id,JB,
"id_acc_41010109003_p","41010109003",10000000,id,JB,
"id_acc_41010109004_p","41010109004",10000000,id,JB,
"id_acc_41010110001_p","41010110001",10000000,id,JB,
"id_acc_41010110002_p","41010110002",10000000,id,JB,
"id_acc_41010110003_p","41010110003",10000000,id,JB,
"id_acc_41010110004_p","41010110004",10000000,id,JB,
"id_acc_41010111001_p","41010111001",10000000,id,JB,
"id_acc_41010111002_p","41010111002",10000000,id,JB,
"id_acc_41010111003_p","41010111003",10000000,id,JB,
"id_acc_41010111004_p","41010111004",10000000,id,JB,
"id_acc_41010112001_p","41010112001",10000000,id,JB,
"id_acc_41010112002_p","41010112002",10000000,id,JB,
"id_acc_41010112003_p","41010112003",10000000,id,JB,
"id_acc_41010112004_p","41010112004",10000000,id,JB,
"id_acc_41010113001_p","41010113001",10000000,id,JB,
"id_acc_41010113002_p","41010113002",10000000,id,JB,
"id_acc_41010113003_p","41010113003",10000000,id,JB,
"id_acc_41010113004_p","41010113004",10000000,id,JB,
"id_acc_41010114001_p","41010114001",10000000,id,JB,
"id_acc_41010114002_p","41010114002",10000000,id,JB,
"id_acc_41010114003_p","41010114003",10000000,id,JB,
"id_acc_41010114004_p","41010114004",10000000,id,JB,
"id_acc_41010201001_p","41010201001",10000000,id,JB,
"id_acc_41010202001_p","41010202001",10000000,id,JB,
"id_acc_41010203001_p","41010203001",10000000,id,JB,
"id_acc_41010204001_p","41010204001",10000000,id,JB,
"id_acc_41010205001_p","41010205001",10000000,id,JB,
"id_acc_41010206001_p","41010206001",10000000,id,JB,
"id_acc_41010207001_p","41010207001",10000000,id,JB,
"id_acc_41010208001_p","41010208001",10000000,id,JB,
"id_acc_41010209001_p","41010209001",10000000,id,JB,
"id_acc_41010210001_p","41010210001",10000000,id,JB,
"id_acc_41010211001_p","41010211001",10000000,id,JB,
"id_acc_41010212001_p","41010212001",10000000,id,JB,
"id_acc_41010213001_p","41010213001",10000000,id,JB,
"id_acc_41010214001_p","41010214001",10000000,id,JB,
"id_acc_41010301001_p","41010301001",10000000,id,JB,
"id_acc_41010302001_p","41010302001",10000000,id,JB,
"id_acc_41010303001_p","41010303001",10000000,id,JB,
"id_acc_41010304001_p","41010304001",10000000,id,JB,
"id_acc_41010401001_p","41010401001",10000000,id,JB,
"id_acc_41010501001_p","41010501001",10000000,id,JB,
"id_acc_41010601001_p","41010601001",10000000,id,JB,71
"id_acc_41010602001_p","41010602001",10000000,id,JB,71
"id_acc_41010603001_p","41010603001",10000000,id,JB,71
"id_acc_41010604001_p","41010604001",10000000,id,JB,71
"id_acc_41010605001_p","41010605001",10000000,id,JB,71
"id_acc_41010606001_p","41010606001",10000000,id,JB,71
"id_acc_41010607001_p","41010607001",10000000,id,JB,71
"id_acc_41010608001_p","41010608001",10000000,id,JB,71
"id_acc_41010701001_p","41010701001",10000000,id,JB,71
"id_acc_41010702001_p","41010702001",10000000,id,JB,71
"id_acc_41010703001_p","41010703001",10000000,id,JB,71
"id_acc_41010704001_p","41010704001",10000000,id,JB,71
"id_acc_41010705001_p","41010705001",10000000,id,JB,71
"id_acc_41010706001_p","41010706001",10000000,id,JB,71
"id_acc_41010707001_p","41010707001",10000000,id,JB,71
"id_acc_41010801001_p","41010801001",10000000,id,JB,71
"id_acc_41010802001_p","41010802001",10000000,id,JB,71
"id_acc_41010803001_p","41010803001",10000000,id,JB,71
"id_acc_41010804001_p","41010804001",10000000,id,JB,71
"id_acc_41010805001_p","41010805001",10000000,id,JB,71
"id_acc_41010806001_p","41010806001",10000000,id,JB,71
"id_acc_41010807001_p","41010807001",10000000,id,JB,71
"id_acc_41010808001_p","41010808001",10000000,id,JB,71
"id_acc_41010809001_p","41010809001",10000000,id,JB,71
"id_acc_41010810001_p","41010810001",10000000,id,JB,71
"id_acc_41010901001_p","41010901001",10000000,id,JB,71
"id_acc_41010902001_p","41010902001",10000000,id,JB,71
"id_acc_41010903001_p","41010903001",10000000,id,JB,71
"id_acc_41010904001_p","41010904001",10000000,id,JB,71
"id_acc_41010905001_p","41010905001",10000000,id,JB,71
"id_acc_41010906001_p","41010906001",10000000,id,JB,71
"id_acc_41010907001_p","41010907001",10000000,id,JB,71
"id_acc_41010908001_p","41010908001",10000000,id,JB,71
"id_acc_41010909001_p","41010909001",10000000,id,JB,71
"id_acc_41010910001_p","41010910001",10000000,id,JB,71
"id_acc_41011001001_p","41011001001",10000000,id,JB,71
"id_acc_41011002001_p","41011002001",10000000,id,JB,71
"id_acc_41011101001_p","41011101001",10000000,id,JB,71
"id_acc_41011201001_p","41011201001",10000000,id,JB,71
"id_acc_41011301001_p","41011301001",10000000,id,JB,71
"id_acc_41011401001_p","41011401001",10000000,id,JB,71
"id_acc_41011402001_p","41011402001",10000000,id,JB,71
"id_acc_41011403001_p","41011403001",10000000,id,JB,71
"id_acc_41011404001_p","41011404001",10000000,id,JB,71
"id_acc_41011405001_p","41011405001",10000000,id,JB,71
"id_acc_41011406001_p","41011406001",10000000,id,JB,71
"id_acc_41011407001_p","41011407001",10000000,id,JB,71
"id_acc_41011408001_p","41011408001",10000000,id,JB,71
"id_acc_41011409001_p","41011409001",10000000,id,JB,71
"id_acc_41011410001_p","41011410001",10000000,id,JB,71
"id_acc_41011411001_p","41011411001",10000000,id,JB,71
"id_acc_41011412001_p","41011412001",10000000,id,JB,71
"id_acc_41011413001_p","41011413001",10000000,id,JB,71
"id_acc_41011414001_p","41011414001",10000000,id,JB,71
"id_acc_41011415001_p","41011415001",10000000,id,JB,71
"id_acc_41011416001_p","41011416001",10000000,id,JB,71
"id_acc_41011417001_p","41011417001",10000000,id,JB,71
"id_acc_41011418001_p","41011418001",10000000,id,JB,71
"id_acc_41011419001_p","41011419001",10000000,id,JB,71
"id_acc_41011420001_p","41011420001",10000000,id,JB,71
"id_acc_41011421001_p","41011421001",10000000,id,JB,71
"id_acc_41011422001_p","41011422001",10000000,id,JB,71
"id_acc_41011423001_p","41011423001",10000000,id,JB,71
"id_acc_41011424001_p","41011424001",10000000,id,JB,71
"id_acc_41011425001_p","41011425001",10000000,id,JB,71
"id_acc_41011426001_p","41011426001",10000000,id,JB,71
"id_acc_41011427001_p","41011427001",10000000,id,JB,71
"id_acc_41011428001_p","41011428001",10000000,id,JB,71
"id_acc_41011429001_p","41011429001",10000000,id,JB,71
"id_acc_41011430001_p","41011430001",10000000,id,JB,71
"id_acc_41011431001_p","41011431001",10000000,id,JB,71
"id_acc_41011432001_p","41011432001",10000000,id,JB,71
"id_acc_41011433001_p","41011433001",10000000,id,JB,71
"id_acc_41011434001_p","41011434001",10000000,id,JB,71
"id_acc_41011435001_p","41011435001",10000000,id,JB,71
"id_acc_41011436001_p","41011436001",10000000,id,JB,71
"id_acc_41011437001_p","41011437001",10000000,id,JB,71
"id_acc_41011501001_p","41011501001",10000000,id,JB,71
"id_acc_41011601001_p","41011601001",10000000,id,JB,71
"id_acc_41011602001_p","41011602001",10000000,id,JB,71
\ No newline at end of file
"id","account_id",amount,country_id,state_id,district_id
"id_acc_41010101001_p","41010101001",10000000,id,JB,
"id_acc_41010101002_p","41010101002",10000000,id,JB,
"id_acc_41010101003_p","41010101003",10000000,id,JB,
"id_acc_41010101004_p","41010101004",10000000,id,JB,
"id_acc_41010102001_p","41010102001",10000000,id,JB,
"id_acc_41010102002_p","41010102002",10000000,id,JB,
"id_acc_41010102003_p","41010102003",10000000,id,JB,
"id_acc_41010102004_p","41010102004",10000000,id,JB,
"id_acc_41010103001_p","41010103001",10000000,id,JB,
"id_acc_41010103002_p","41010103002",10000000,id,JB,
"id_acc_41010103003_p","41010103003",10000000,id,JB,
"id_acc_41010103004_p","41010103004",10000000,id,JB,
"id_acc_41010104001_p","41010104001",10000000,id,JB,
"id_acc_41010104002_p","41010104002",10000000,id,JB,
"id_acc_41010104003_p","41010104003",10000000,id,JB,
"id_acc_41010104004_p","41010104004",10000000,id,JB,
"id_acc_41010105001_p","41010105001",10000000,id,JB,
"id_acc_41010105002_p","41010105002",10000000,id,JB,
"id_acc_41010105003_p","41010105003",10000000,id,JB,
"id_acc_41010105004_p","41010105004",10000000,id,JB,
"id_acc_41010106001_p","41010106001",10000000,id,JB,
"id_acc_41010106002_p","41010106002",10000000,id,JB,
"id_acc_41010106003_p","41010106003",10000000,id,JB,
"id_acc_41010106004_p","41010106004",10000000,id,JB,
"id_acc_41010107001_p","41010107001",10000000,id,JB,
"id_acc_41010107002_p","41010107002",10000000,id,JB,
"id_acc_41010107003_p","41010107003",10000000,id,JB,
"id_acc_41010107004_p","41010107004",10000000,id,JB,
"id_acc_41010108001_p","41010108001",10000000,id,JB,
"id_acc_41010108002_p","41010108002",10000000,id,JB,
"id_acc_41010108003_p","41010108003",10000000,id,JB,
"id_acc_41010108004_p","41010108004",10000000,id,JB,
"id_acc_41010109001_p","41010109001",10000000,id,JB,
"id_acc_41010109002_p","41010109002",10000000,id,JB,
"id_acc_41010109003_p","41010109003",10000000,id,JB,
"id_acc_41010109004_p","41010109004",10000000,id,JB,
"id_acc_41010110001_p","41010110001",10000000,id,JB,
"id_acc_41010110002_p","41010110002",10000000,id,JB,
"id_acc_41010110003_p","41010110003",10000000,id,JB,
"id_acc_41010110004_p","41010110004",10000000,id,JB,
"id_acc_41010111001_p","41010111001",10000000,id,JB,
"id_acc_41010111002_p","41010111002",10000000,id,JB,
"id_acc_41010111003_p","41010111003",10000000,id,JB,
"id_acc_41010111004_p","41010111004",10000000,id,JB,
"id_acc_41010112001_p","41010112001",10000000,id,JB,
"id_acc_41010112002_p","41010112002",10000000,id,JB,
"id_acc_41010112003_p","41010112003",10000000,id,JB,
"id_acc_41010112004_p","41010112004",10000000,id,JB,
"id_acc_41010113001_p","41010113001",10000000,id,JB,
"id_acc_41010113002_p","41010113002",10000000,id,JB,
"id_acc_41010113003_p","41010113003",10000000,id,JB,
"id_acc_41010113004_p","41010113004",10000000,id,JB,
"id_acc_41010114001_p","41010114001",10000000,id,JB,
"id_acc_41010114002_p","41010114002",10000000,id,JB,
"id_acc_41010114003_p","41010114003",10000000,id,JB,
"id_acc_41010114004_p","41010114004",10000000,id,JB,
"id_acc_41010201001_p","41010201001",10000000,id,JB,
"id_acc_41010202001_p","41010202001",10000000,id,JB,
"id_acc_41010203001_p","41010203001",10000000,id,JB,
"id_acc_41010204001_p","41010204001",10000000,id,JB,
"id_acc_41010205001_p","41010205001",10000000,id,JB,
"id_acc_41010206001_p","41010206001",10000000,id,JB,
"id_acc_41010207001_p","41010207001",10000000,id,JB,
"id_acc_41010208001_p","41010208001",10000000,id,JB,
"id_acc_41010209001_p","41010209001",10000000,id,JB,
"id_acc_41010210001_p","41010210001",10000000,id,JB,
"id_acc_41010211001_p","41010211001",10000000,id,JB,
"id_acc_41010212001_p","41010212001",10000000,id,JB,
"id_acc_41010213001_p","41010213001",10000000,id,JB,
"id_acc_41010214001_p","41010214001",10000000,id,JB,
"id_acc_41010301001_p","41010301001",10000000,id,JB,
"id_acc_41010302001_p","41010302001",10000000,id,JB,
"id_acc_41010303001_p","41010303001",10000000,id,JB,
"id_acc_41010304001_p","41010304001",10000000,id,JB,
"id_acc_41010401001_p","41010401001",10000000,id,JB,
"id_acc_41010501001_p","41010501001",10000000,id,JB,
"id_acc_41010601001_p","41010601001",10000000,id,JB,71
"id_acc_41010602001_p","41010602001",10000000,id,JB,71
"id_acc_41010603001_p","41010603001",10000000,id,JB,71
"id_acc_41010604001_p","41010604001",10000000,id,JB,71
"id_acc_41010605001_p","41010605001",10000000,id,JB,71
"id_acc_41010606001_p","41010606001",10000000,id,JB,71
"id_acc_41010607001_p","41010607001",10000000,id,JB,71
"id_acc_41010608001_p","41010608001",10000000,id,JB,71
"id_acc_41010701001_p","41010701001",10000000,id,JB,71
"id_acc_41010702001_p","41010702001",10000000,id,JB,71
"id_acc_41010703001_p","41010703001",10000000,id,JB,71
"id_acc_41010704001_p","41010704001",10000000,id,JB,71
"id_acc_41010705001_p","41010705001",10000000,id,JB,71
"id_acc_41010706001_p","41010706001",10000000,id,JB,71
"id_acc_41010707001_p","41010707001",10000000,id,JB,71
"id_acc_41010801001_p","41010801001",10000000,id,JB,71
"id_acc_41010802001_p","41010802001",10000000,id,JB,71
"id_acc_41010803001_p","41010803001",10000000,id,JB,71
"id_acc_41010804001_p","41010804001",10000000,id,JB,71
"id_acc_41010805001_p","41010805001",10000000,id,JB,71
"id_acc_41010806001_p","41010806001",10000000,id,JB,71
"id_acc_41010807001_p","41010807001",10000000,id,JB,71
"id_acc_41010808001_p","41010808001",10000000,id,JB,71
"id_acc_41010809001_p","41010809001",10000000,id,JB,71
"id_acc_41010810001_p","41010810001",10000000,id,JB,71
"id_acc_41010901001_p","41010901001",10000000,id,JB,71
"id_acc_41010902001_p","41010902001",10000000,id,JB,71
"id_acc_41010903001_p","41010903001",10000000,id,JB,71
"id_acc_41010904001_p","41010904001",10000000,id,JB,71
"id_acc_41010905001_p","41010905001",10000000,id,JB,71
"id_acc_41010906001_p","41010906001",10000000,id,JB,71
"id_acc_41010907001_p","41010907001",10000000,id,JB,71
"id_acc_41010908001_p","41010908001",10000000,id,JB,71
"id_acc_41010909001_p","41010909001",10000000,id,JB,71
"id_acc_41010910001_p","41010910001",10000000,id,JB,71
"id_acc_41011001001_p","41011001001",10000000,id,JB,71
"id_acc_41011002001_p","41011002001",10000000,id,JB,71
"id_acc_41011101001_p","41011101001",10000000,id,JB,71
"id_acc_41011201001_p","41011201001",10000000,id,JB,71
"id_acc_41011301001_p","41011301001",10000000,id,JB,71
"id_acc_41011401001_p","41011401001",10000000,id,JB,71
"id_acc_41011402001_p","41011402001",10000000,id,JB,71
"id_acc_41011403001_p","41011403001",10000000,id,JB,71
"id_acc_41011404001_p","41011404001",10000000,id,JB,71
"id_acc_41011405001_p","41011405001",10000000,id,JB,71
"id_acc_41011406001_p","41011406001",10000000,id,JB,71
"id_acc_41011407001_p","41011407001",10000000,id,JB,71
"id_acc_41011408001_p","41011408001",10000000,id,JB,71
"id_acc_41011409001_p","41011409001",10000000,id,JB,71
"id_acc_41011410001_p","41011410001",10000000,id,JB,71
"id_acc_41011411001_p","41011411001",10000000,id,JB,71
"id_acc_41011412001_p","41011412001",10000000,id,JB,71
"id_acc_41011413001_p","41011413001",10000000,id,JB,71
"id_acc_41011414001_p","41011414001",10000000,id,JB,71
"id_acc_41011415001_p","41011415001",10000000,id,JB,71
"id_acc_41011416001_p","41011416001",10000000,id,JB,71
"id_acc_41011417001_p","41011417001",10000000,id,JB,71
"id_acc_41011418001_p","41011418001",10000000,id,JB,71
"id_acc_41011419001_p","41011419001",10000000,id,JB,71
"id_acc_41011420001_p","41011420001",10000000,id,JB,71
"id_acc_41011421001_p","41011421001",10000000,id,JB,71
"id_acc_41011422001_p","41011422001",10000000,id,JB,71
"id_acc_41011423001_p","41011423001",10000000,id,JB,71
"id_acc_41011424001_p","41011424001",10000000,id,JB,71
"id_acc_41011425001_p","41011425001",10000000,id,JB,71
"id_acc_41011426001_p","41011426001",10000000,id,JB,71
"id_acc_41011427001_p","41011427001",10000000,id,JB,71
"id_acc_41011428001_p","41011428001",10000000,id,JB,71
"id_acc_41011429001_p","41011429001",10000000,id,JB,71
"id_acc_41011430001_p","41011430001",10000000,id,JB,71
"id_acc_41011431001_p","41011431001",10000000,id,JB,71
"id_acc_41011432001_p","41011432001",10000000,id,JB,71
"id_acc_41011433001_p","41011433001",10000000,id,JB,71
"id_acc_41011434001_p","41011434001",10000000,id,JB,71
"id_acc_41011435001_p","41011435001",10000000,id,JB,71
"id_acc_41011436001_p","41011436001",10000000,id,JB,71
"id_acc_41011437001_p","41011437001",10000000,id,JB,71
"id_acc_41011501001_p","41011501001",10000000,id,JB,71
"id_acc_41011601001_p","41011601001",10000000,id,JB,71
"id_acc_41011602001_p","41011602001",10000000,id,JB,71
\ No newline at end of file
"id","account_id",amount,country_id,state_id,district_id
"id_acc_41010101001_p","41010101001",10000000,id,JB,
"id_acc_41010101002_p","41010101002",10000000,id,JB,
"id_acc_41010101003_p","41010101003",10000000,id,JB,
"id_acc_41010101004_p","41010101004",10000000,id,JB,
"id_acc_41010102001_p","41010102001",10000000,id,JB,
"id_acc_41010102002_p","41010102002",10000000,id,JB,
"id_acc_41010102003_p","41010102003",10000000,id,JB,
"id_acc_41010102004_p","41010102004",10000000,id,JB,
"id_acc_41010103001_p","41010103001",10000000,id,JB,
"id_acc_41010103002_p","41010103002",10000000,id,JB,
"id_acc_41010103003_p","41010103003",10000000,id,JB,
"id_acc_41010103004_p","41010103004",10000000,id,JB,
"id_acc_41010104001_p","41010104001",10000000,id,JB,
"id_acc_41010104002_p","41010104002",10000000,id,JB,
"id_acc_41010104003_p","41010104003",10000000,id,JB,
"id_acc_41010104004_p","41010104004",10000000,id,JB,
"id_acc_41010105001_p","41010105001",10000000,id,JB,
"id_acc_41010105002_p","41010105002",10000000,id,JB,
"id_acc_41010105003_p","41010105003",10000000,id,JB,
"id_acc_41010105004_p","41010105004",10000000,id,JB,
"id_acc_41010106001_p","41010106001",10000000,id,JB,
"id_acc_41010106002_p","41010106002",10000000,id,JB,
"id_acc_41010106003_p","41010106003",10000000,id,JB,
"id_acc_41010106004_p","41010106004",10000000,id,JB,
"id_acc_41010107001_p","41010107001",10000000,id,JB,
"id_acc_41010107002_p","41010107002",10000000,id,JB,
"id_acc_41010107003_p","41010107003",10000000,id,JB,
"id_acc_41010107004_p","41010107004",10000000,id,JB,
"id_acc_41010108001_p","41010108001",10000000,id,JB,
"id_acc_41010108002_p","41010108002",10000000,id,JB,
"id_acc_41010108003_p","41010108003",10000000,id,JB,
"id_acc_41010108004_p","41010108004",10000000,id,JB,
"id_acc_41010109001_p","41010109001",10000000,id,JB,
"id_acc_41010109002_p","41010109002",10000000,id,JB,
"id_acc_41010109003_p","41010109003",10000000,id,JB,
"id_acc_41010109004_p","41010109004",10000000,id,JB,
"id_acc_41010110001_p","41010110001",10000000,id,JB,
"id_acc_41010110002_p","41010110002",10000000,id,JB,
"id_acc_41010110003_p","41010110003",10000000,id,JB,
"id_acc_41010110004_p","41010110004",10000000,id,JB,
"id_acc_41010111001_p","41010111001",10000000,id,JB,
"id_acc_41010111002_p","41010111002",10000000,id,JB,
"id_acc_41010111003_p","41010111003",10000000,id,JB,
"id_acc_41010111004_p","41010111004",10000000,id,JB,
"id_acc_41010112001_p","41010112001",10000000,id,JB,
"id_acc_41010112002_p","41010112002",10000000,id,JB,
"id_acc_41010112003_p","41010112003",10000000,id,JB,
"id_acc_41010112004_p","41010112004",10000000,id,JB,
"id_acc_41010113001_p","41010113001",10000000,id,JB,
"id_acc_41010113002_p","41010113002",10000000,id,JB,
"id_acc_41010113003_p","41010113003",10000000,id,JB,
"id_acc_41010113004_p","41010113004",10000000,id,JB,
"id_acc_41010114001_p","41010114001",10000000,id,JB,
"id_acc_41010114002_p","41010114002",10000000,id,JB,
"id_acc_41010114003_p","41010114003",10000000,id,JB,
"id_acc_41010114004_p","41010114004",10000000,id,JB,
"id_acc_41010201001_p","41010201001",10000000,id,JB,
"id_acc_41010202001_p","41010202001",10000000,id,JB,
"id_acc_41010203001_p","41010203001",10000000,id,JB,
"id_acc_41010204001_p","41010204001",10000000,id,JB,
"id_acc_41010205001_p","41010205001",10000000,id,JB,
"id_acc_41010206001_p","41010206001",10000000,id,JB,
"id_acc_41010207001_p","41010207001",10000000,id,JB,
"id_acc_41010208001_p","41010208001",10000000,id,JB,
"id_acc_41010209001_p","41010209001",10000000,id,JB,
"id_acc_41010210001_p","41010210001",10000000,id,JB,
"id_acc_41010211001_p","41010211001",10000000,id,JB,
"id_acc_41010212001_p","41010212001",10000000,id,JB,
"id_acc_41010213001_p","41010213001",10000000,id,JB,
"id_acc_41010214001_p","41010214001",10000000,id,JB,
"id_acc_41010301001_p","41010301001",10000000,id,JB,
"id_acc_41010302001_p","41010302001",10000000,id,JB,
"id_acc_41010303001_p","41010303001",10000000,id,JB,
"id_acc_41010304001_p","41010304001",10000000,id,JB,
"id_acc_41010401001_p","41010401001",10000000,id,JB,
"id_acc_41010501001_p","41010501001",10000000,id,JB,
"id_acc_41010601001_p","41010601001",10000000,id,JB,71
"id_acc_41010602001_p","41010602001",10000000,id,JB,71
"id_acc_41010603001_p","41010603001",10000000,id,JB,71
"id_acc_41010604001_p","41010604001",10000000,id,JB,71
"id_acc_41010605001_p","41010605001",10000000,id,JB,71
"id_acc_41010606001_p","41010606001",10000000,id,JB,71
"id_acc_41010607001_p","41010607001",10000000,id,JB,71
"id_acc_41010608001_p","41010608001",10000000,id,JB,71
"id_acc_41010701001_p","41010701001",10000000,id,JB,71
"id_acc_41010702001_p","41010702001",10000000,id,JB,71
"id_acc_41010703001_p","41010703001",10000000,id,JB,71
"id_acc_41010704001_p","41010704001",10000000,id,JB,71
"id_acc_41010705001_p","41010705001",10000000,id,JB,71
"id_acc_41010706001_p","41010706001",10000000,id,JB,71
"id_acc_41010707001_p","41010707001",10000000,id,JB,71
"id_acc_41010801001_p","41010801001",10000000,id,JB,71
"id_acc_41010802001_p","41010802001",10000000,id,JB,71
"id_acc_41010803001_p","41010803001",10000000,id,JB,71
"id_acc_41010804001_p","41010804001",10000000,id,JB,71
"id_acc_41010805001_p","41010805001",10000000,id,JB,71
"id_acc_41010806001_p","41010806001",10000000,id,JB,71
"id_acc_41010807001_p","41010807001",10000000,id,JB,71
"id_acc_41010808001_p","41010808001",10000000,id,JB,71
"id_acc_41010809001_p","41010809001",10000000,id,JB,71
"id_acc_41010810001_p","41010810001",10000000,id,JB,71
"id_acc_41010901001_p","41010901001",10000000,id,JB,71
"id_acc_41010902001_p","41010902001",10000000,id,JB,71
"id_acc_41010903001_p","41010903001",10000000,id,JB,71
"id_acc_41010904001_p","41010904001",10000000,id,JB,71
"id_acc_41010905001_p","41010905001",10000000,id,JB,71
"id_acc_41010906001_p","41010906001",10000000,id,JB,71
"id_acc_41010907001_p","41010907001",10000000,id,JB,71
"id_acc_41010908001_p","41010908001",10000000,id,JB,71
"id_acc_41010909001_p","41010909001",10000000,id,JB,71
"id_acc_41010910001_p","41010910001",10000000,id,JB,71
"id_acc_41011001001_p","41011001001",10000000,id,JB,71
"id_acc_41011002001_p","41011002001",10000000,id,JB,71
"id_acc_41011101001_p","41011101001",10000000,id,JB,71
"id_acc_41011201001_p","41011201001",10000000,id,JB,71
"id_acc_41011301001_p","41011301001",10000000,id,JB,71
"id_acc_41011401001_p","41011401001",10000000,id,JB,71
"id_acc_41011402001_p","41011402001",10000000,id,JB,71
"id_acc_41011403001_p","41011403001",10000000,id,JB,71
"id_acc_41011404001_p","41011404001",10000000,id,JB,71
"id_acc_41011405001_p","41011405001",10000000,id,JB,71
"id_acc_41011406001_p","41011406001",10000000,id,JB,71
"id_acc_41011407001_p","41011407001",10000000,id,JB,71
"id_acc_41011408001_p","41011408001",10000000,id,JB,71
"id_acc_41011409001_p","41011409001",10000000,id,JB,71
"id_acc_41011410001_p","41011410001",10000000,id,JB,71
"id_acc_41011411001_p","41011411001",10000000,id,JB,71
"id_acc_41011412001_p","41011412001",10000000,id,JB,71
"id_acc_41011413001_p","41011413001",10000000,id,JB,71
"id_acc_41011414001_p","41011414001",10000000,id,JB,71
"id_acc_41011415001_p","41011415001",10000000,id,JB,71
"id_acc_41011416001_p","41011416001",10000000,id,JB,71
"id_acc_41011417001_p","41011417001",10000000,id,JB,71
"id_acc_41011418001_p","41011418001",10000000,id,JB,71
"id_acc_41011419001_p","41011419001",10000000,id,JB,71
"id_acc_41011420001_p","41011420001",10000000,id,JB,71
"id_acc_41011421001_p","41011421001",10000000,id,JB,71
"id_acc_41011422001_p","41011422001",10000000,id,JB,71
"id_acc_41011423001_p","41011423001",10000000,id,JB,71
"id_acc_41011424001_p","41011424001",10000000,id,JB,71
"id_acc_41011425001_p","41011425001",10000000,id,JB,71
"id_acc_41011426001_p","41011426001",10000000,id,JB,71
"id_acc_41011427001_p","41011427001",10000000,id,JB,71
"id_acc_41011428001_p","41011428001",10000000,id,JB,71
"id_acc_41011429001_p","41011429001",10000000,id,JB,71
"id_acc_41011430001_p","41011430001",10000000,id,JB,71
"id_acc_41011431001_p","41011431001",10000000,id,JB,71
"id_acc_41011432001_p","41011432001",10000000,id,JB,71
"id_acc_41011433001_p","41011433001",10000000,id,JB,71
"id_acc_41011434001_p","41011434001",10000000,id,JB,71
"id_acc_41011435001_p","41011435001",10000000,id,JB,71
"id_acc_41011436001_p","41011436001",10000000,id,JB,71
"id_acc_41011437001_p","41011437001",10000000,id,JB,71
"id_acc_41011501001_p","41011501001",10000000,id,JB,71
"id_acc_41011601001_p","41011601001",10000000,id,JB,71
"id_acc_41011602001_p","41011602001",10000000,id,JB,71
from . import idg_region_tax_plan
from . import idg_region_tax_potency
from . import idg_region_tax_actual
import logging
from datetime import datetime
from psycopg2 import DatabaseError, sql
from odoo import fields, models, api, _
from odoo.exceptions import UserError
# from odoo.tools import sql
_logger = logging.getLogger(__name__)
class IdgRegionTaxPlan(models.Model):
_name = 'idg.region.tax.actual'
_description = 'Region Tax Actual'
country_id = fields.Many2one('res.country', required=True)
state_id = fields.Many2one('res.country.state', required=True,
domain="[('country_id', '=?', country_id)]")
district_id = fields.Many2one('res.district', required=False,
domain="[('state_id', '=?', state_id)]")
account_id = fields.Many2one('account.account', required=True)
year = fields.Integer(compute='_compute_day', store=True)
month = fields.Integer(compute='_compute_day', store=True)
day = fields.Integer(compute='_compute_day', store=True)
date = fields.Date(default=datetime.now().date(), required=True)
qty = fields.Integer(required=True, default=0)
amount = fields.Integer(required=True, default=0)
def _compute_date(self):
for row in self:
row.year = row.date.year
row.month = row.date.month
row.day = row.date.day
import logging
from datetime import datetime
from psycopg2 import DatabaseError, sql
from odoo import fields, models, api, _
from odoo.exceptions import UserError
# from odoo.tools import sql
_logger = logging.getLogger(__name__)
class IdgRegionTaxPlan(models.Model):
_name = 'idg.region.tax.plan'
_description = 'Region Tax Planning'
country_id = fields.Many2one('res.country', required=True)
state_id = fields.Many2one('res.country.state', required=True,
domain="[('country_id', '=?', country_id)]")
district_id = fields.Many2one('res.district', required=False,
domain="[('state_id', '=?', state_id)]")
account_id = fields.Many2one('account.account', required=True)
year = fields.Integer(required=True, default=datetime.now().year)
month = fields.Integer(required=True, default=datetime.now().month)
qty = fields.Integer(required=True, default=0)
amount = fields.Integer(required=True, default=0)
import logging
from datetime import datetime
from psycopg2 import DatabaseError, sql
from odoo import fields, models, api, _
from odoo.exceptions import UserError
# from odoo.tools import sql
_logger = logging.getLogger(__name__)
class IdgRegionTaxPotency(models.Model):
_name = 'idg.region.tax.potency'
_description = 'Region Tax Potency'
country_id = fields.Many2one('res.country', required=True)
state_id = fields.Many2one('res.country.state', required=True,
domain="[('country_id', '=?', country_id)]")
district_id = fields.Many2one('res.district',
domain="[('state_id', '=?', state_id)]")
account_id = fields.Many2one('account.account', required=True)
year = fields.Integer(required=True, default=datetime.now().year)
qty = fields.Integer(required=True, default=0)
amount = fields.Integer(required=True, default=0)
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_idg_region_tax_potency_admin","access.idg.region.tax.potency.admin","model_idg_region_tax_potency","base.group_system",1,1,1,1
"access_idg_region_tax_plan_admin","access.idg.region.tax.plan.admin","model_idg_region_tax_plan","base.group_system",1,1,1,1
"access_idg_region_tax_actual_admin","access.idg.region.tax.actual.admin","model_idg_region_tax_actual","base.group_system",1,1,1,1
odoo.define('account.payment', function (require) {
"use strict";
var AbstractField = require('web.AbstractField');
var core = require('web.core');
var field_registry = require('web.field_registry');
var field_utils = require('web.field_utils');
var QWeb = core.qweb;
var _t = core._t;
var ShowPaymentLineWidget = AbstractField.extend({
events: _.extend({
'click .outstanding_credit_assign': '_onOutstandingCreditAssign',
}, AbstractField.prototype.events),
supportedFieldTypes: ['char'],
//--------------------------------------------------------------------------
// Public
//--------------------------------------------------------------------------
/**
* @override
* @returns {boolean}
*/
isSet: function () {
return true;
},
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* @private
* @override
*/
_render: function () {
var self = this;
var info = JSON.parse(this.value);
if (!info) {
this.$el.html('');
return;
}
_.each(info.content, function (k, v) {
k.index = v;
k.amount = field_utils.format.float(k.amount, {digits: k.digits});
if (k.date) {
k.date = field_utils.format.date(field_utils.parse.date(k.date, {}, {isUTC: true}));
}
});
this.$el.html(QWeb.render('ShowPaymentInfo', {
lines: info.content,
outstanding: info.outstanding,
title: info.title
}));
_.each(this.$('.js_payment_info'), function (k, v) {
var isRTL = _t.database.parameters.direction === "rtl";
var content = info.content[v];
var options = {
content: function () {
var $content = $(QWeb.render('PaymentPopOver', content));
var unreconcile_button = $content.filter('.js_unreconcile_payment').on('click', self._onRemoveMoveReconcile.bind(self));
$content.filter('.js_open_payment').on('click', self._onOpenPayment.bind(self));
return $content;
},
html: true,
placement: isRTL ? 'bottom' : 'left',
title: 'Payment Information',
trigger: 'focus',
delay: {"show": 0, "hide": 100},
container: $(k).parent(), // FIXME Ugly, should use the default body container but system & tests to adapt to properly destroy the popover
};
$(k).popover(options);
});
},
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* @private
* @override
* @param {MouseEvent} event
*/
_onOpenPayment: function (event) {
var paymentId = parseInt($(event.target).attr('payment-id'));
var moveId = parseInt($(event.target).attr('move-id'));
var res_model;
var id;
if (paymentId !== undefined && !isNaN(paymentId)) {
res_model = "account.payment";
id = paymentId;
} else if (moveId !== undefined && !isNaN(moveId)) {
res_model = "account.move";
id = moveId;
}
//Open form view of account.move with id = move_id
if (res_model && id) {
this.do_action({
type: 'ir.actions.act_window',
res_model: res_model,
res_id: id,
views: [[false, 'form']],
target: 'current'
});
}
},
/**
* @private
* @override
* @param {MouseEvent} event
*/
_onOutstandingCreditAssign: function (event) {
event.stopPropagation();
event.preventDefault();
var self = this;
var id = $(event.target).data('id') || false;
this._rpc({
model: 'account.move',
method: 'js_assign_outstanding_line',
args: [JSON.parse(this.value).move_id, id],
}).then(function () {
self.trigger_up('reload');
});
},
/**
* @private
* @override
* @param {MouseEvent} event
*/
_onRemoveMoveReconcile: function (event) {
var self = this;
var moveId = parseInt($(event.target).attr('move-id'));
var partialId = parseInt($(event.target).attr('partial-id'));
if (partialId !== undefined && !isNaN(partialId)) {
this._rpc({
model: 'account.move',
method: 'js_remove_outstanding_partial',
args: [moveId, partialId],
}).then(function () {
self.trigger_up('reload');
});
}
},
});
field_registry.add('payment', ShowPaymentLineWidget);
return {
ShowPaymentLineWidget: ShowPaymentLineWidget
};
});
odoo.define('account.AccountPortalSidebar', function (require) {
'use strict';
const dom = require('web.dom');
var publicWidget = require('web.public.widget');
var PortalSidebar = require('portal.PortalSidebar');
var utils = require('web.utils');
publicWidget.registry.AccountPortalSidebar = PortalSidebar.extend({
selector: '.o_portal_invoice_sidebar',
events: {
'click .o_portal_invoice_print': '_onPrintInvoice',
},
/**
* @override
*/
start: function () {
var def = this._super.apply(this, arguments);
var $invoiceHtml = this.$el.find('iframe#invoice_html');
var updateIframeSize = this._updateIframeSize.bind(this, $invoiceHtml);
$(window).on('resize', updateIframeSize);
var iframeDoc = $invoiceHtml[0].contentDocument || $invoiceHtml[0].contentWindow.document;
if (iframeDoc.readyState === 'complete') {
updateIframeSize();
} else {
$invoiceHtml.on('load', updateIframeSize);
}
return def;
},
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* Called when the iframe is loaded or the window is resized on customer portal.
* The goal is to expand the iframe height to display the full report without scrollbar.
*
* @private
* @param {object} $el: the iframe
*/
_updateIframeSize: function ($el) {
var $wrapwrap = $el.contents().find('div#wrapwrap');
// Set it to 0 first to handle the case where scrollHeight is too big for its content.
$el.height(0);
$el.height($wrapwrap[0].scrollHeight);
// scroll to the right place after iframe resize
if (!utils.isValidAnchor(window.location.hash)) {
return;
}
var $target = $(window.location.hash);
if (!$target.length) {
return;
}
dom.scrollTo($target[0], {duration: 0});
},
/**
* @private
* @param {MouseEvent} ev
*/
_onPrintInvoice: function (ev) {
ev.preventDefault();
var href = $(ev.currentTarget).attr('href');
this._printIframeContent(href);
},
});
});
odoo.define('account.ShowResequenceRenderer', function (require) {
"use strict";
const {Component} = owl;
const {useState} = owl.hooks;
const AbstractFieldOwl = require('web.AbstractFieldOwl');
const field_registry = require('web.field_registry_owl');
class ChangeLine extends Component {
}
ChangeLine.template = 'account.ResequenceChangeLine';
ChangeLine.props = ["changeLine", 'ordering'];
class ShowResequenceRenderer extends AbstractFieldOwl {
constructor(...args) {
super(...args);
this.data = this.value ? JSON.parse(this.value) : {
changeLines: [],
ordering: 'date',
};
}
async willUpdateProps(nextProps) {
await super.willUpdateProps(nextProps);
Object.assign(this.data, JSON.parse(this.value));
}
}
ShowResequenceRenderer.template = 'account.ResequenceRenderer';
ShowResequenceRenderer.components = {ChangeLine}
field_registry.add('account_resequence_widget', ShowResequenceRenderer);
return ShowResequenceRenderer;
});
odoo.define('account.hierarchy.selection', function (require) {
"use strict";
var core = require('web.core');
var relational_fields = require('web.relational_fields');
var _t = core._t;
var registry = require('web.field_registry');
var FieldSelection = relational_fields.FieldSelection;
var qweb = core.qweb;
var HierarchySelection = FieldSelection.extend({
_renderEdit: function () {
var self = this;
var prom = Promise.resolve()
if (!self.hierarchy_groups) {
prom = this._rpc({
model: 'account.account.type',
method: 'search_read',
kwargs: {
domain: [],
fields: ['id', 'internal_group', 'display_name'],
},
}).then(function (arg) {
self.values = _.map(arg, v => [v['id'], v['display_name']])
self.hierarchy_groups = [
{
'name': _t('Balance Sheet'),
'children': [
{
'name': _t('Assets'),
'ids': _.map(_.filter(arg, v => v['internal_group'] == 'asset'), v => v['id'])
},
{
'name': _t('Liabilities'),
'ids': _.map(_.filter(arg, v => v['internal_group'] == 'liability'), v => v['id'])
},
{
'name': _t('Equity'),
'ids': _.map(_.filter(arg, v => v['internal_group'] == 'equity'), v => v['id'])
},
],
},
{
'name': _t('Profit & Loss'),
'children': [
{
'name': _t('Income'),
'ids': _.map(_.filter(arg, v => v['internal_group'] == 'income'), v => v['id'])
},
{
'name': _t('Expense'),
'ids': _.map(_.filter(arg, v => v['internal_group'] == 'expense'), v => v['id'])
},
],
},
{
'name': _t('Other'),
'ids': _.map(_.filter(arg, v => !['asset', 'liability', 'equity', 'income', 'expense'].includes(v['internal_group'])), v => v['id'])
},
]
});
}
Promise.resolve(prom).then(function () {
self.$el.empty();
self._addHierarchy(self.$el, self.hierarchy_groups, 0);
var value = self.value;
if (self.field.type === 'many2one' && value) {
value = value.data.id;
}
self.$el.val(JSON.stringify(value));
});
},
_addHierarchy: function (el, group, level) {
var self = this;
_.each(group, function (item) {
var optgroup = $('<optgroup/>').attr(({
'label': $('<div/>').html('&nbsp;'.repeat(6 * level) + item['name']).text(),
}))
_.each(item['ids'], function (id) {
var value = _.find(self.values, v => v[0] == id)
optgroup.append($('<option/>', {
value: JSON.stringify(value[0]),
text: value[1],
}));
})
el.append(optgroup)
if (item['children']) {
self._addHierarchy(el, item['children'], level + 1);
}
})
}
});
registry.add("account_hierarchy_selection", HierarchySelection);
});
odoo.define('account.bank_statement', function (require) {
"use strict";
var KanbanController = require("web.KanbanController");
var ListController = require("web.ListController");
var includeDict = {
renderButtons: function () {
this._super.apply(this, arguments);
if (this.modelName === "account.bank.statement") {
var data = this.model.get(this.handle);
if (data.context.journal_type !== 'cash') {
this.$buttons.find('button.o_button_import').hide();
}
}
}
};
KanbanController.include(includeDict);
ListController.include(includeDict);
});
\ No newline at end of file
odoo.define('account.upload.bill.mixin', function (require) {
"use strict";
var core = require('web.core');
var _t = core._t;
var qweb = core.qweb;
var UploadBillMixin = {
start: function () {
// define a unique uploadId and a callback method
this.fileUploadID = _.uniqueId('account_bill_file_upload');
$(window).on(this.fileUploadID, this._onFileUploaded.bind(this));
return this._super.apply(this, arguments);
},
_onAddAttachment: function (ev) {
// Auto submit form once we've selected an attachment
var $input = $(ev.currentTarget).find('input.o_input_file');
if ($input.val() !== '') {
var $binaryForm = this.$('.o_vendor_bill_upload form.o_form_binary_form');
$binaryForm.submit();
}
},
_onFileUploaded: function () {
// Callback once attachment have been created, create a bill with attachment ids
var self = this;
var attachments = Array.prototype.slice.call(arguments, 1);
// Get id from result
var attachent_ids = attachments.reduce(function (filtered, record) {
if (record.id) {
filtered.push(record.id);
}
return filtered;
}, []);
return this._rpc({
model: 'account.journal',
method: 'create_invoice_from_attachment',
args: ["", attachent_ids],
context: this.initialState.context,
}).then(function (result) {
self.do_action(result);
});
},
_onUpload: function (event) {
var self = this;
// If hidden upload form don't exists, create it
var $formContainer = this.$('.o_content').find('.o_vendor_bill_upload');
if (!$formContainer.length) {
$formContainer = $(qweb.render('account.BillsHiddenUploadForm', {widget: this}));
$formContainer.appendTo(this.$('.o_content'));
}
// Trigger the input to select a file
this.$('.o_vendor_bill_upload .o_input_file').click();
},
}
return UploadBillMixin;
});
odoo.define('account.bills.tree', function (require) {
"use strict";
var core = require('web.core');
var ListController = require('web.ListController');
var ListView = require('web.ListView');
var UploadBillMixin = require('account.upload.bill.mixin');
var viewRegistry = require('web.view_registry');
var BillsListController = ListController.extend(UploadBillMixin, {
buttons_template: 'BillsListView.buttons',
events: _.extend({}, ListController.prototype.events, {
'click .o_button_upload_bill': '_onUpload',
'change .o_vendor_bill_upload .o_form_binary_form': '_onAddAttachment',
}),
});
var BillsListView = ListView.extend({
config: _.extend({}, ListView.prototype.config, {
Controller: BillsListController,
}),
});
viewRegistry.add('account_tree', BillsListView);
});
odoo.define('account.dashboard.kanban', function (require) {
"use strict";
var core = require('web.core');
var KanbanController = require('web.KanbanController');
var KanbanView = require('web.KanbanView');
var UploadBillMixin = require('account.upload.bill.mixin');
var viewRegistry = require('web.view_registry');
var DashboardKanbanController = KanbanController.extend(UploadBillMixin, {
events: _.extend({}, KanbanController.prototype.events, {
'click .o_button_upload_bill': '_onUpload',
'change .o_vendor_bill_upload .o_form_binary_form': '_onAddAttachment',
}),
/**
* We override _onUpload (from the upload bill mixin) to pass default_journal_id
* and default_move_type in context.
*
* @override
*/
_onUpload: function (event) {
var kanbanRecord = $(event.currentTarget).closest('.o_kanban_record').data('record');
this.initialState.context['default_journal_id'] = kanbanRecord.id;
if ($(event.currentTarget).attr('journal_type') == 'sale') {
this.initialState.context['default_move_type'] = 'out_invoice'
} else if ($(event.currentTarget).attr('journal_type') == 'purchase') {
this.initialState.context['default_move_type'] = 'in_invoice'
}
UploadBillMixin._onUpload.apply(this, arguments);
}
});
var DashboardKanbanView = KanbanView.extend({
config: _.extend({}, KanbanView.prototype.config, {
Controller: DashboardKanbanController,
}),
});
viewRegistry.add('account_dashboard_kanban', DashboardKanbanView);
});
odoo.define('account.ShowGroupedList', function (require) {
"use strict";
const {Component} = owl;
const {useState} = owl.hooks;
const AbstractFieldOwl = require('web.AbstractFieldOwl');
const field_registry = require('web.field_registry_owl');
class ListItem extends Component {
}
ListItem.template = 'account.GroupedItemTemplate';
ListItem.props = ["item_vals", "options"];
class ListGroup extends Component {
}
ListGroup.template = 'account.GroupedItemsTemplate';
ListGroup.components = {ListItem}
ListGroup.props = ["group_vals", "options"];
class ShowGroupedList extends AbstractFieldOwl {
constructor(...args) {
super(...args);
this.data = this.value ? JSON.parse(this.value) : {
groups_vals: [],
options: {
discarded_number: '',
columns: [],
},
};
}
async willUpdateProps(nextProps) {
await super.willUpdateProps(nextProps);
Object.assign(this.data, JSON.parse(this.value));
}
}
ShowGroupedList.template = 'account.GroupedListTemplate';
ShowGroupedList.components = {ListGroup}
field_registry.add('grouped_view_widget', ShowGroupedList);
return ShowGroupedList;
});
odoo.define('account.activity', function (require) {
"use strict";
var AbstractField = require('web.AbstractField');
var core = require('web.core');
var field_registry = require('web.field_registry');
var QWeb = core.qweb;
var _t = core._t;
var VatActivity = AbstractField.extend({
className: 'o_journal_activity_kanban',
events: {
'click .see_all_activities': '_onOpenAll',
'click .see_activity': '_onOpenActivity',
},
init: function () {
this.MAX_ACTIVITY_DISPLAY = 5;
this._super.apply(this, arguments);
},
//------------------------------------------------------------
// Private
//------------------------------------------------------------
_render: function () {
var self = this;
var info = JSON.parse(this.value);
if (!info) {
this.$el.html('');
return;
}
info.more_activities = false;
if (info.activities.length > this.MAX_ACTIVITY_DISPLAY) {
info.more_activities = true;
info.activities = info.activities.slice(0, this.MAX_ACTIVITY_DISPLAY);
}
this.$el.html(QWeb.render('accountJournalDashboardActivity', info));
},
_onOpenActivity: function (e) {
e.preventDefault();
var self = this;
self.do_action({
type: 'ir.actions.act_window',
name: _t('Journal Entry'),
target: 'current',
res_id: $(e.target).data('resId'),
res_model: 'account.move',
views: [[false, 'form']],
});
},
_onOpenAll: function (e) {
e.preventDefault();
var self = this;
self.do_action({
type: 'ir.actions.act_window',
name: _t('Journal Entries'),
res_model: 'account.move',
views: [[false, 'kanban'], [false, 'form']],
search_view_id: [false],
domain: [['journal_id', '=', self.res_id], ['activity_ids', '!=', false]],
});
}
})
field_registry.add('kanban_vat_activity', VatActivity);
return VatActivity;
});
odoo.define('account.section_and_note_backend', function (require) {
// The goal of this file is to contain JS hacks related to allowing
// section and note on sale order and invoice.
// [UPDATED] now also allows configuring products on sale order.
"use strict";
var FieldChar = require('web.basic_fields').FieldChar;
var FieldOne2Many = require('web.relational_fields').FieldOne2Many;
var fieldRegistry = require('web.field_registry');
var ListFieldText = require('web.basic_fields').ListFieldText;
var ListRenderer = require('web.ListRenderer');
var SectionAndNoteListRenderer = ListRenderer.extend({
/**
* We want section and note to take the whole line (except handle and trash)
* to look better and to hide the unnecessary fields.
*
* @override
*/
_renderBodyCell: function (record, node, index, options) {
var $cell = this._super.apply(this, arguments);
var isSection = record.data.display_type === 'line_section';
var isNote = record.data.display_type === 'line_note';
if (isSection || isNote) {
if (node.attrs.widget === "handle") {
return $cell;
} else if (node.attrs.name === "name") {
var nbrColumns = this._getNumberOfCols();
if (this.handleField) {
nbrColumns--;
}
if (this.addTrashIcon) {
nbrColumns--;
}
$cell.attr('colspan', nbrColumns);
} else {
$cell.removeClass('o_invisible_modifier');
return $cell.addClass('o_hidden');
}
}
return $cell;
},
/**
* We add the o_is_{display_type} class to allow custom behaviour both in JS and CSS.
*
* @override
*/
_renderRow: function (record, index) {
var $row = this._super.apply(this, arguments);
if (record.data.display_type) {
$row.addClass('o_is_' + record.data.display_type);
}
return $row;
},
/**
* We want to add .o_section_and_note_list_view on the table to have stronger CSS.
*
* @override
* @private
*/
_renderView: function () {
var self = this;
return this._super.apply(this, arguments).then(function () {
self.$('.o_list_table').addClass('o_section_and_note_list_view');
});
}
});
// We create a custom widget because this is the cleanest way to do it:
// to be sure this custom code will only impact selected fields having the widget
// and not applied to any other existing ListRenderer.
var SectionAndNoteFieldOne2Many = FieldOne2Many.extend({
/**
* We want to use our custom renderer for the list.
*
* @override
*/
_getRenderer: function () {
if (this.view.arch.tag === 'tree') {
return SectionAndNoteListRenderer;
}
return this._super.apply(this, arguments);
},
});
// This is a merge between a FieldText and a FieldChar.
// We want a FieldChar for section,
// and a FieldText for the rest (product and note).
var SectionAndNoteFieldText = function (parent, name, record, options) {
var isSection = record.data.display_type === 'line_section';
var Constructor = isSection ? FieldChar : ListFieldText;
return new Constructor(parent, name, record, options);
};
fieldRegistry.add('section_and_note_one2many', SectionAndNoteFieldOne2Many);
fieldRegistry.add('section_and_note_text', SectionAndNoteFieldText);
return SectionAndNoteListRenderer;
});
odoo.define('account.tax_group', function (require) {
"use strict";
var core = require('web.core');
var session = require('web.session');
var fieldRegistry = require('web.field_registry');
var AbstractField = require('web.AbstractField');
var fieldUtils = require('web.field_utils');
var QWeb = core.qweb;
var TaxGroupCustomField = AbstractField.extend({
events: {
'click .tax_group_edit': '_onClick',
'keydown .oe_tax_group_editable .tax_group_edit_input input': '_onKeydown',
'blur .oe_tax_group_editable .tax_group_edit_input input': '_onBlur',
},
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* This method is called by "_setTaxGroups". It is
* responsible for calculating taxes based on
* tax groups and triggering an event to
* notify the ORM of a change.
*
* @param {Id} taxGroupId
* @param {Float} deltaAmount
*/
_changeTaxValueByTaxGroup: function (taxGroupId, deltaAmount) {
const self = this;
// Search for the first tax line with the same tax group and modify its value
function applyChange(line_id) {
let debitAmount = 0;
let creditAmount = 0;
let amount_currency = 0;
if (line_id.data.currency_id) { // If multi currency enable
if (self.record.data.move_type === "in_invoice") {
amount_currency = line_id.data.amount_currency - deltaAmount;
} else {
amount_currency = line_id.data.amount_currency + deltaAmount;
}
} else {
let balance = line_id.data.price_subtotal;
balance -= deltaAmount;
if (self.record.data.move_type === "in_invoice") { // For vendor bill
if (balance > 0) {
debitAmount = balance;
} else if (balance < 0) {
creditAmount = -balance;
}
} else { // For refund
if (balance > 0) {
creditAmount = balance;
} else if (balance < 0) {
debitAmount = -balance;
}
}
}
// Trigger ORM
self.trigger_up('field_changed', {
dataPointID: self.record.id,
changes: {
line_ids: {
operation: "UPDATE",
id: line_id.id,
data: {amount_currency: amount_currency, debit: debitAmount, credit: creditAmount}
}
}, // account.move change
initialEvent: {
dataPointID: line_id.id,
changes: {amount_currency: amount_currency, debit: debitAmount, credit: creditAmount},
}, // account.move.line change
});
}
let line_id = self.record.data.line_ids.data.find(elem => elem.data.tax_group_id && elem.data.tax_group_id.data.id === taxGroupId);
if (line_id) {
applyChange(line_id);
} else {
const {limit, id, count} = self.record.data.line_ids;
let offset = count - limit;
self.trigger_up('load', {
id,
limit,
offset,
on_success: value => {
line_id = value.data.find(elem => elem.data.tax_group_id && elem.data.tax_group_id.data.id === taxGroupId);
applyChange(line_id);
},
});
}
},
/**
* This method checks that the document where the widget
* is located is of the "in_invoice" or "in_refund" type.
* This makes it possible to know if it is a purchase
* document.
*
* @returns boolean (true if the invoice is a purchase document)
*/
_isPurchaseDocument: function () {
return this.record.data.move_type === "in_invoice" || this.record.data.move_type === 'in_refund';
},
/**
* This method is part of the widget life cycle and allows you to render
* the widget.
*
* @private
* @override
*/
_render: function () {
var self = this;
// Display the pencil and allow the event to click and edit only on purchase that are not posted and in edit mode.
// since the field is readonly its mode will always be readonly. Therefore we have to use a trick by checking the
// formRenderer (the parent) and check if it is in edit in order to know the correct mode.
var displayEditWidget = self._isPurchaseDocument() && this.record.data.state === 'draft' && this.getParent().mode === 'edit';
this.$el.html($(QWeb.render('AccountTaxGroupTemplate', {
lines: self.value,
displayEditWidget: displayEditWidget,
})));
},
//--------------------------------------------------------------------------
// Handler
//--------------------------------------------------------------------------
/**
* This method is called when the user is in edit mode and
* leaves the <input> field. Then, we execute the code that
* modifies the information.
*
* @param {event} ev
*/
_onBlur: function (ev) {
ev.preventDefault();
var $input = $(ev.target);
var newValue = $input.val();
var currency = session.get_currency(this.record.data.currency_id.data.id);
try {
newValue = fieldUtils.parse.float(newValue); // Need a float for format the value.
newValue = fieldUtils.format.float(newValue, null, {digits: currency.digits}); // return a string rounded to currency precision
newValue = fieldUtils.parse.float(newValue); // convert back to Float to compare with oldValue to know if value has changed
} catch (err) {
$input.addClass('o_field_invalid');
return;
}
var oldValue = $input.data('originalValue');
if (newValue === oldValue || newValue === 0) {
return this._render();
}
var taxGroupId = $input.parents('.oe_tax_group_editable').data('taxGroupId');
this._changeTaxValueByTaxGroup(taxGroupId, oldValue - newValue);
},
/**
* This method is called when the user clicks on a specific <td>.
* it will hide the edit button and display the field to be edited.
*
* @param {event} ev
*/
_onClick: function (ev) {
ev.preventDefault();
var $taxGroupElement = $(ev.target).parents('.oe_tax_group_editable');
// Show input and hide previous element
$taxGroupElement.find('.tax_group_edit').addClass('d-none');
$taxGroupElement.find('.tax_group_edit_input').removeClass('d-none');
var $input = $taxGroupElement.find('.tax_group_edit_input input');
// Get original value and display it in user locale in the input
var formatedOriginalValue = fieldUtils.format.float($input.data('originalValue'), {}, {});
$input.focus(); // Focus the input
$input.val(formatedOriginalValue); //add value in user locale to the input
},
/**
* This method is called when the user is in edit mode and pressing
* a key on his keyboard. If this key corresponds to ENTER or TAB,
* the code that modifies the information is executed.
*
* @param {event} ev
*/
_onKeydown: function (ev) {
switch (ev.which) {
// Trigger only if the user clicks on ENTER or on TAB.
case $.ui.keyCode.ENTER:
case $.ui.keyCode.TAB:
// trigger blur to prevent the code being executed twice
$(ev.target).blur();
}
},
});
fieldRegistry.add('tax-group-custom-field', TaxGroupCustomField)
});
odoo.define('account.tour', function (require) {
"use strict";
var core = require('web.core');
var tour = require('web_tour.tour');
var _t = core._t;
tour.register('account_tour', {
url: "/web",
sequence: 60,
}, [
...tour.stepUtils.goToAppSteps('account.menu_finance', _t('Send invoices to your customers in no time with the <b>Invoicing app</b>.')),
{
trigger: "a.o_onboarding_step_action[data-method=action_open_base_onboarding_company]",
content: _t("Start by checking your company's data."),
position: "bottom",
}, {
trigger: "button[name=action_save_onboarding_company_step]",
extra_trigger: "a.o_onboarding_step_action[data-method=action_open_base_onboarding_company]",
content: _t("Looks good. Let's continue."),
position: "bottom",
}, {
trigger: "a.o_onboarding_step_action[data-method=action_open_base_document_layout]",
content: _t("Customize your layout."),
position: "bottom",
}, {
trigger: "button[name=document_layout_save]",
extra_trigger: "a.o_onboarding_step_action[data-method=action_open_base_document_layout]",
content: _t("Once everything is as you want it, validate."),
position: "top",
}, {
trigger: "a.o_onboarding_step_action[data-method=action_open_account_onboarding_create_invoice]",
content: _t("Now, we'll create your first invoice."),
position: "bottom",
}, {
trigger: "div[name=partner_id] input",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Write a company name to <b>create one</b> or <b>see suggestions</b>."),
position: "bottom",
}, {
trigger: ".o_m2o_dropdown_option a:contains('Create')",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Select first partner"),
auto: true,
}, {
trigger: ".modal-content button.btn-primary",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Once everything is set, you are good to continue. You will be able to edit this later in the <b>Customers</b> menu."),
auto: true,
}, {
trigger: "div[name=invoice_line_ids] .o_field_x2many_list_row_add a:not([data-context])",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Add a line to your invoice"),
}, {
trigger: "div[name=invoice_line_ids] textarea[name=name]",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Fill in the details of the line."),
position: "bottom",
}, {
trigger: "div[name=invoice_line_ids] input[name=price_unit]",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Set a price"),
position: "bottom",
run: 'text 100',
}, {
trigger: "button[name=action_post]",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Once your invoice is ready, press CONFIRM."),
}, {
trigger: "button[name=action_invoice_sent]",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Send the invoice and check what the customer will receive."),
}, {
trigger: "input[name=email]",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Write here <b>your own email address</b> to test the flow."),
run: 'text customer@example.com',
auto: true,
}, {
trigger: ".modal-content button.btn-primary",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Validate."),
auto: true,
}, {
trigger: "button[name=send_and_print_action]",
extra_trigger: "[name=move_type][raw-value=out_invoice]",
content: _t("Let's send the invoice."),
position: "top"
}
]);
});
.o_journal_activity_kanban {
display: block;
.align_activity_center {
width: 100%;
align-items: center;
margin-bottom: 5px;
}
}
\ No newline at end of file
.o_kanban_view.o_kanban_dashboard.o_account_kanban {
&.o_kanban_ungrouped .o_account_dashboard_header {
margin: (0 - $o-kanban-record-margin) ($o-kanban-record-margin - $o-horizontal-padding) $o-kanban-record-margin;
}
.o_account_dashboard_header {
flex: 1 0 100%;
flex-flow: column nowrap;
align-self: flex-start;
width: 100%;
height: auto; // cancel o_form_view height 100%, which hides the help tip message at the bottom of the screen
min-height: 0%; // cancel o_form_view min-height 100%, which hides the help tip message at the bottom of the screen
background-color: $o-view-background-color;
.o_form_statusbar {
padding-right: $o-horizontal-padding;
}
h4 {
font-size: $font-size-base;
font-weight: 500;
}
.fa-gift {
color: #eeeeee;
&:hover {
color: #555555;
}
}
.o_arrow_button.btn-secondary {
color: $text-muted;
text-transform: none;
font-weight: 500;
.o_account_dashboard_index {
color: gray('900');
}
&.o_action_done {
color: gray('900');
background-color: gray('200');
&:after {
border-left-color: gray('200');
}
.fa-check {
color: theme-color('success');
}
}
&:last-of-type {
margin-left: $o-horizontal-padding;
padding-left: $o-horizontal-padding*.5;
border-left: 1px solid gray('300');
}
}
}
}
.o_kanban_view.o_kanban_dashboard.o_account_kanban {
.o_kanban_record {
@include media-breakpoint-up(sm) {
.oe_kanban_action_button {
display: block;
margin-bottom: 5px;
}
}
.o_kanban_card_settings {
padding-top: $o-horizontal-padding/2;
padding-bottom: $o-horizontal-padding/2;
border-top: 1px solid;
border-color: $o-brand-lightsecondary;
}
.o_dashboard_star {
font-size: 12px;
&.fa-star-o {
color: $o-main-color-muted;
&:hover {
color: gold;
}
}
&.fa-star {
color: gold;
}
}
.o_dashboard_graph {
margin-bottom: -$o-horizontal-padding/2;
}
}
&.o_kanban_ungrouped {
.o_kanban_record {
width: 450px;
}
}
.o_kanban_group {
&:not(.o_column_folded) {
width: 450px + 2*$o-kanban-group-padding;
@include media-breakpoint-down(sm) {
width: 100%;
}
}
}
}
// Style for the widget "dashboard_graph"
.o_dashboard_graph {
position: relative;
margin: 16px -16px;
canvas {
height: 75px;
}
}
.o_sample_data .o_dashboard_graph.o_graph_linechart > svg g.nv-linesWrap g.nv-group.nv-series-0 {
fill: gray !important;
opacity: 0.1;
}
.progress-reconciliation {
.progress-bar {
font-size: 1.08333333rem;
height: 14px;
background-color: $o-enterprise-color;
span {
display: contents;
}
}
}
.o_reconciliation {
.o_filter_input_wrapper {
position: relative;
width: 150px;
margin: 0.5rem !important;
.searchIcon {
position: absolute;
right: 10px;
}
.o_filter_input {
border: none;
border-bottom: 1px black solid;
}
}
.import_to_suspense {
margin: 0.5rem !important;
}
.notification_area {
clear: both;
}
.o_view_noreconciliation {
max-width: none;
padding: 0 10%;
color: $o-main-color-muted;
font-size: 125%;
}
.accounting_view {
width: 100%;
.cell_left {
border-right: 1px solid #333;
padding-right: 5px;
}
.edit_amount {
margin-left: 20px;
color: #bbb;
}
.cell:hover .edit_amount {
color: #00A09D;
}
.strike_amount {
text-decoration: line-through;
}
tbody tr:hover .cell_account_code::before {
content: "\f068";
font-family: FontAwesome;
position: relative;
margin-left: -17px;
left: -4px;
line-height: 0;
padding: 3px 2px 5px 5px;
}
}
.o_multi_currency {
margin-right: 5px;
&.o_multi_currency_color_0 {
color: #dd6666;
}
&.o_multi_currency_color_1 {
color: #aaaaaa;
}
&.o_multi_currency_color_2 {
color: #66dd66;
}
&.o_multi_currency_color_3 {
color: #6666dd;
}
&.o_multi_currency_color_4 {
color: #dddd66;
}
&.o_multi_currency_color_5 {
color: #dd66dd;
}
&.o_multi_currency_color_6 {
color: #66dddd;
}
&.o_multi_currency_color_7 {
color: #aaa333;
}
}
.o_reconciliation_line {
margin-bottom: 30px;
table {
width: 100%;
vertical-align: top;
}
tbody tr {
cursor: pointer;
}
tr.already_reconciled {
color: $o-account-info-color;
}
tr.invalid {
text-decoration: line-through;
}
td {
padding: 1px 2px;
}
thead td {
border-top: $o-account-light-border;
padding-top: 4px;
padding-bottom: 5px;
background-color: $o-account-initial-line-background;
}
tfoot td {
color: #bbb;
}
/* columns */
.cell_action {
width: 15px;
color: gray('700');
background: #fff;
border: 0;
text-align: center;
.fa-add-remove:before {
content: "";
}
}
tr:hover .cell_action .fa-add-remove:before {
content: "\f068";
}
.is_tax .cell_action .fa-add-remove:before {
position: relative;
top: -18px;
}
.cell_account_code {
width: 80px;
padding-left: 5px;
}
.cell_due_date {
width: 100px;
}
.cell_label {
width: auto;
}
.cell_left {
padding-right: 5px;
}
.cell_right, .cell_left {
text-align: right;
width: 120px;
}
.cell_info_popover {
text-align: right;
width: 15px;
color: #ccc;
&:empty {
padding: 0;
width: 0;
}
}
table.accounting_view {
.cell_right, .cell_left, .cell_label, .cell_due_date, .cell_account_code, .cell_info_popover {
box-shadow: 0 1px 0 #EAEAEA;
}
}
/* info popover */
.popover {
max-width: none;
}
table.details {
vertical-align: top;
td:first-child {
vertical-align: top;
padding-right: 10px;
font-weight: bold;
}
}
tr.one_line_info {
td {
padding-top: 10px;
text-align: center;
color: $o-account-info-color;
}
}
/* Icons */
.toggle_match, .toggle_create {
transform: rotate(0deg);
transition: transform 300ms ease 0s;
}
.visible_toggle, &[data-mode="match"] .toggle_match, &[data-mode="create"] .toggle_create {
visibility: visible !important;
transform: rotate(90deg);
}
.toggle_create {
font-size: 10px;
}
/* Match view & Create view */
> .o_notebook {
display: none;
> .o_notebook_headers {
margin-right: 0;
margin-left: 0;
}
}
> .o_notebook > .tab-content > div {
border: 1px solid #ddd;
border-top: 0;
}
> .o_notebook .match table tr:hover {
background-color: #eee;
}
&:not([data-mode="inactive"]) > .o_notebook {
display: block;
}
&:not(:focus-within) .o_web_accesskey_overlay {
display: none;
}
&:focus caption .o_buttons button {
outline: none;
box-shadow: 4px 4px 4px 0px $o-enterprise-color;
}
&:focus {
outline: none;
box-shadow: 0 0 0 0;
}
}
.o_reconcile_models .btn-primary {
margin: 0 2px 3px 0;
}
/* Match view */
.match {
.cell_action .fa-add-remove:before {
content: "";
}
tr:hover .cell_action .fa-add-remove:before {
content: "\f067";
}
.match_controls {
padding: 5px 0 5px ($o-account-action-col-width+$o-account-main-table-borders-padding);
.filter {
width: 240px;
display: inline-block;
}
.fa-chevron-left, .fa-chevron-right {
display: inline-block;
cursor: pointer;
}
.fa-chevron-left {
margin-right: 10px;
}
.fa-chevron-left.disabled, .fa-chevron-right.disabled {
color: #ddd;
cursor: default;
}
}
.show_more {
display: inline-block;
margin-left: ($o-account-action-col-width+$o-account-main-table-borders-padding);
margin-top: 5px;
}
}
/* Create view */
.create {
> div > div.quick_add > .o_reconcile_models {
max-width: 100%;
max-height: 70px;
flex-wrap: wrap;
overflow: auto;
& > * {
flex-grow: 0;
}
}
.quick_add {
margin-bottom: 7px;
padding: 0 8px;
}
.o_group table.o_group_col_6 {
width: 49%;
margin: 0;
vertical-align: top;
}
.o_group table.o_group_col_6:first-child {
margin-left: 8px;
}
.btn {
padding-top: 0;
padding-bottom: 0;
}
.add_line_container {
text-align: center;
clear: both;
color: $o-enterprise-primary-color;
cursor: pointer;
}
}
.o_notebook .tab-content > .tab-pane {
padding: 5px 0;
}
}
/*Manual Reconciliation*/
.o_manual_statement {
.accounting_view {
td[colspan="3"] span:first-child {
width: 100%;
display: inline-block;
}
td[colspan="2"] {
border-bottom: 1px solid #333;
text-align: center;
width: 240px;
}
.do_partial_reconcile_true {
display: none;
}
}
}
// This is rtl language specific fix
// It will flip the fa-fa play icon in left direction
.o_rtl {
.o_reconciliation {
.o_reconciliation_line {
.toggle_match, .toggle_create {
transform: rotate(180deg);
transition: transform 300ms;
}
.visible_toggle, &[data-mode="match"] .toggle_match, &[data-mode="create"] .toggle_create {
transform: rotate(270deg);
}
}
}
}
.o_search_panel.account_root {
flex: 0 0 50px;
padding: 6px;
scrollbar-width: thin;
.o_search_panel_section_header {
display: none;
}
.list-group-item span.o_search_panel_label_title {
display: contents;
}
.o_search_panel_category_value {
header {
margin-left: 0;
padding-left: 0;
}
.o_search_panel_category_value .o_toggle_fold {
width: 0.3rem;
}
}
&::-webkit-scrollbar {
width: 4px;
}
&::-webkit-scrollbar-thumb {
background: lightgray;
}
}
// The goal of this file is to contain CSS hacks related to allowing
// section and note on sale order and invoice.
table.o_section_and_note_list_view tr.o_data_row.o_is_line_note,
table.o_section_and_note_list_view tr.o_data_row.o_is_line_note textarea[name="name"],
div.oe_kanban_card.o_is_line_note {
font-style: italic;
}
table.o_section_and_note_list_view tr.o_data_row.o_is_line_section,
div.oe_kanban_card.o_is_line_section {
font-weight: bold;
background-color: #DDDDDD;
}
table.o_section_and_note_list_view tr.o_data_row.o_is_line_section {
border-top: 1px solid #BBB;
border-bottom: 1px solid #BBB;
}
table.o_section_and_note_list_view tr.o_data_row {
&.o_is_line_note,
&.o_is_line_section {
td {
// There is an undeterministic CSS behaviour in Chrome related to
// the combination of the row's and its children's borders.
border: none !important;
}
}
}
$o-account-action-col-width: 15px;
$o-account-main-table-borders-padding: 3px;
$o-account-light-border: 1px solid #bbb;
$o-account-initial-line-background: #f0f0f0;
$o-account-info-color: #44c;
@keyframes animate-red {
0% {
color: red;
}
100% {
color: inherit;
}
}
.animate {
animation: animate-red 1s ease;
}
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Top menu item -->
<menuitem id="idgd_menu_root"
name="ID Dashboard"
web_icon="id_dashboard_icon,static/description/icon.png"
active="True"
sequence="400"/>
<!-- Konfigurasi-->
<menuitem id="config_idgd_menu"
name="Konfigurasi"
parent="idgd_menu_root"
sequence="7"/>
<menuitem id="wilayah_config_idgd_menu"
name="Wilayah"
parent="config_idgd_menu"
sequence="2"/>
<menuitem id="state_config_idgd_menu"
name="Provinsi"
parent="wilayah_config_idgd_menu"
action="id_gov.action_state_config_id"
sequence="2"/>
<menuitem id="district_config_idgd_menu"
name="Kabupaten/Kota"
parent="wilayah_config_idgd_menu"
action="id_gov.action_district_config_id"
sequence="2"/>
<menuitem id="sub_district_config_idgd_menu"
name="Kecamatan"
parent="wilayah_config_idgd_menu"
action="id_gov.action_sub_district_config_id"
sequence="2"/>
<menuitem id="village_config_idgd_menu"
name="Desa/Kelurahan"
parent="wilayah_config_idgd_menu"
action="id_gov.action_village_config_id"
sequence="2"/>
<menuitem id="company_config_idgd_menu"
name="Pemerintah Daerah/Organisasi"
parent="config_idgd_menu"
action="id_gov.action_company_config_id"
sequence="4"/>
<!-- Transaksi-->
<menuitem id="transaksi_idgd_menu"
name="Transaksi"
parent="idgd_menu_root"
sequence="6"/>
<menuitem id="potency_idgd_menu"
name="Region Tax Potency"
parent="transaksi_idgd_menu"
action="action_idg_region_tax_potency"
sequence="4"/>
<menuitem id="plan_idgd_menu"
name="Region Tax Planned"
parent="transaksi_idgd_menu"
action="action_idg_region_tax_plan"
sequence="5"/>
<menuitem id="actual_idgd_menu"
name="Region Tax Actual"
parent="transaksi_idgd_menu"
action="action_idg_region_tax_actual"
sequence="6"/>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="idg_region_tax_actual_tree" model="ir.ui.view">
<field name="name">idg.region.tax.actual.tree</field>
<field name="model">idg.region.tax.actual</field>
<field name="arch" type="xml">
<tree string="Region Tax Actual" sample="1" create="1" delete="1" multi_edit="0">
<field name="state_id"/>
<field name="district_id"/>
<field name="account_id"/>
<field name="date"/>
<field name="qty"/>
<field name="amount"/>
</tree>
</field>
</record>
<record id="idg_region_tax_actual_form" model="ir.ui.view">
<field name="name">idg.region.tax.actual.form</field>
<field name="model">idg.region.tax.actual</field>
<field name="arch" type="xml">
<form string="Region Tax Actual" sample="1">
<sheet>
<h1>
<field name="state_id"/>
</h1>
<h2>
<field name="district_id"/>
</h2>
<group>
<field name="country_id" invisible="1"/>
<field name="account_id"/>
<field name="date"/>
<field name="qty"/>
<field name="amount"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_idg_region_tax_actual" model="ir.actions.act_window">
<field name="name">Region Tax Actual</field>
<field name="res_model">idg.region.tax.actual</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="idg_region_tax_actual_tree"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Region Tax Actual
</p>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="idg_region_tax_plan_tree" model="ir.ui.view">
<field name="name">idg.region.tax.plan.tree</field>
<field name="model">idg.region.tax.plan</field>
<field name="arch" type="xml">
<tree string="Region Tax Planned" sample="1" create="1" delete="1" multi_edit="0">
<field name="state_id"/>
<field name="district_id"/>
<field name="account_id"/>
<field name="year"/>
<field name="month"/>
<field name="qty"/>
<field name="amount"/>
</tree>
</field>
</record>
<record id="idg_region_tax_plan_form" model="ir.ui.view">
<field name="name">idg.region.tax.plan.form</field>
<field name="model">idg.region.tax.plan</field>
<field name="arch" type="xml">
<form string="Region Tax Planned" sample="1">
<sheet>
<h1>
<field name="state_id"/>
</h1>
<h2>
<field name="district_id"/>
</h2>
<group>
<field name="country_id" invisible="1"/>
<field name="account_id"/>
<field name="year"/>
<field name="month"/>
<field name="qty"/>
<field name="amount"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_idg_region_tax_plan" model="ir.actions.act_window">
<field name="name">Region Tax Planned</field>
<field name="res_model">idg.region.tax.plan</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="idg_region_tax_plan_tree"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Region Tax Planned
</p>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="idg_region_tax_potency_tree" model="ir.ui.view">
<field name="name">idg.region.tax.potency.tree</field>
<field name="model">idg.region.tax.potency</field>
<field name="arch" type="xml">
<tree string="Region Tax Potency" sample="1" create="1" delete="1" multi_edit="0">
<field name="state_id"/>
<field name="district_id"/>
<field name="account_id"/>
<field name="year"/>
<field name="qty"/>
<field name="amount"/>
</tree>
</field>
</record>
<record id="idg_region_tax_potency_form" model="ir.ui.view">
<field name="name">idg.region.tax.potency.form</field>
<field name="model">idg.region.tax.potency</field>
<field name="arch" type="xml">
<form string="Region Tax Potency" sample="1">
<sheet>
<h1>
<field name="state_id"/>
</h1>
<h2>
<field name="district_id"/>
</h2>
<group>
<field name="country_id" invisible="1"/>
<field name="account_id"/>
<field name="year"/>
<field name="qty"/>
<field name="amount"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_idg_region_tax_potency" model="ir.actions.act_window">
<field name="name">Region Tax Potency</field>
<field name="res_model">idg.region.tax.potency</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="idg_region_tax_potency_tree"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Region Tax Potency
</p>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!