Commit c896cc17 by aa.gusti

idg_letter

1 parent a9e117e3
Showing 193 changed files with 1593 additions and 412 deletions
Code,Account Name,Type,Allow Reconciliation,
11110001,Cash,Bank and Cash,FALSE,
11110002,Outstanding Receipts,Current Assets,TRUE,
11110003,Outstanding Payments,Current Assets,TRUE,
11110010,Petty Cash,Bank and Cash,TRUE,
11110020,Cash in Hand,Bank and Cash,TRUE,
11120001,Bank Suspense Account,Current Liabilities,FALSE,
11120002,Bank,Bank and Cash,FALSE,
11120003,Outstanding Receipts,Current Assets,TRUE,
11120004,Outstanding Payments,Current Assets,TRUE,
11120010,Personal Mandiri,Bank and Cash,TRUE,
11120020,Business Mandiri,Bank and Cash,TRUE,
11120030,Muamalat,Bank and Cash,TRUE,
11120040,BNI,Bank and Cash,TRUE,
11120050,BCA,Bank and Cash,TRUE,
11120060,BNI Giro,Bank and Cash,TRUE,
11120070,Mandiri Giro,Bank and Cash,TRUE,
11210010,Account Receivable,Receivable,TRUE,
11210011,Account Receivable (PoS),Receivable,TRUE,
11210020,Employee Liabilities,Current Assets,TRUE,
11300010,Meat Inventory,Current Assets,FALSE,
11300020,Fish Inventory,Current Assets,FALSE,
11300030,Vegetables Inventory,Current Assets,FALSE,
11300040,Dried Goods Inventory,Current Assets,FALSE,
11300050,Fruit Inventory,Current Assets,FALSE,
11300060,Fresh Drink Inventory,Current Assets,FALSE,
11300070,Cigarette Inventory,Current Assets,FALSE,
11300080,Food Inventory,Current Assets,FALSE,
11300090,Drink Inventory,Current Assets,FALSE,
11300100,Processed Food Inventory,Current Assets,FALSE,
11300110,Toiletries Inventory,Current Assets,FALSE,
11300120,"Book, Office Stationery, Accessories Inventory",Current Assets,FALSE,
11300130,Fashion & Textile Inventory,Current Assets,FALSE,
11300140,Cleaning Supplies Inventory,Current Assets,FALSE,
11300150,House Supplies Inventory,Current Assets,FALSE,
11300160,Electronic Inventory,Current Assets,FALSE,
11300170,Toys Inventory,Current Assets,FALSE,
11300180,Other Inventory,Current Assets,FALSE,
11410010,Building Rent,Prepayments,FALSE,
11410020,Prepaid Insurance,Prepayments,FALSE,
11410030,Prepaid Advertisement-Free,Prepayments,FALSE,
11510010,Prepaid Tax Pph 22,Prepayments,FALSE,
11510020,Prepaid Tax Pph 23,Prepayments,FALSE,
11510030,Prepaid Tax Pph 25,Prepayments,FALSE,
11800000,Down Payment,Prepayments,FALSE,
12110030,Owner Receivable,Current Assets,TRUE,
12110040,Other Receivable,Current Assets,TRUE,
12210010,Land,Prepayments,FALSE,
12210020,Office Building,Prepayments,FALSE,
12210030,Vehicle,Prepayments,FALSE,
12210040,Office Supplies,Prepayments,FALSE,
12210050,Software,Prepayments,FALSE,
12210060,Office Furniture,Prepayments,FALSE,
12281010,Accumulation Building Depreciation,Prepayments,FALSE,
12281020,Accumulation Vehicle Depreciation,Prepayments,FALSE,
12281030,Accumulation Office Supplies Depreciation,Prepayments,FALSE,
12281040,Accumulation Software Depreciation,Prepayments,FALSE,
12281050,Accumulation Office Furniture Depreciation,Prepayments,FALSE,
19999991,Liquidity Transfer,Current Assets,TRUE,
21100010,Trade Receivable,Payable,TRUE,
21100020,Shareholder Deposit,Current Liabilities,FALSE,
21100030,Third-Party Deposit,Current Liabilities,FALSE,
21100040,Salary Deposit,Current Liabilities,FALSE,
21210010,Tax Payable Pph 21,Current Liabilities,FALSE,
21210020,Tax Payable Pph 23,Current Liabilities,FALSE,
21210030,Tax Payable Pph 25,Current Liabilities,FALSE,
21210040,Tax Payable 4 (2),Current Liabilities,FALSE,
21210050,Tax Payable Pph 29,Current Liabilities,FALSE,
21221010,VAT Purchase,Current Liabilities,FALSE,
21221020,VAT Sales,Current Liabilities,FALSE,
22110010,Bank Loan,Current Liabilities,FALSE,
22110020,Leasing Deposit,Current Liabilities,FALSE,
25110010,Accrued Payable Electricity,Current Liabilities,FALSE,
25110020,Accrued Payable Jamsostek,Current Liabilities,FALSE,
25110030,Accrued Payable Water,Current Liabilities,FALSE,
25110040,Accrued Payable Telp & Internet,Current Liabilities,FALSE,
25110050,Accrued Payable Security Management,Current Liabilities,FALSE,
25110060,Accrued Payable Bank,Current Liabilities,FALSE,
25110070,Accrued Payable PBB,Current Liabilities,FALSE,
25110080,Accrued Payable Business License,Current Liabilities,FALSE,
25110090,Accrued Payable Insurance,Current Liabilities,FALSE,
25110100,Accrued Payable Education,Current Liabilities,FALSE,
25110110,Accrued Payable Health Insurance/BPJS,Current Liabilities,FALSE,
28110010,Advance Sales,Current Liabilities,FALSE,
28110020,Customer Deposit,Current Liabilities,FALSE,
28110030,Bonus Point,Current Liabilities,FALSE,
29000000,Interim Stock,Current Liabilities,FALSE,
31100010,Authorized Capital,Equity,FALSE,
31100020,Paid Capital,Equity,FALSE,
31100030,Unpaid Capital,Equity,FALSE,
31100040,Prive (Personal Retrieval),Equity,FALSE,
31210010,Capital Reserves,Equity,FALSE,
31510010,Past Profit & Loss,Equity,FALSE,
31510020,Ongoing Profit & Loss,Equity,FALSE,
39000000,Historical Balance,Equity,TRUE,
41000010,Sales,Income,FALSE,
41000020,Pajak Hotel Melati 1,Income,FALSE,
42000060,Sales Refund,Income,FALSE,
42000070,Sales Discount,Income,FALSE,
51000010,Cost of Goods Sold,Cost of Revenue,FALSE,
61100010,Employee Salary,Expenses,FALSE,
61100020,Employee Bonus / Benefits,Expenses,FALSE,
61100030,Employee Health Benefits,Expenses,FALSE,
61100040,Employee Meal (Catering),Expenses,FALSE,
61100050,Employee Overtime Pay,Expenses,FALSE,
61100060,Security Service Fee,Expenses,FALSE,
61100070,Work Uniform,Expenses,FALSE,
61100080,Employee Birthday Benefit,Expenses,FALSE,
61100090,Maternity Benefit,Expenses,FALSE,
61100100,Pph 21 Benefit,Expenses,FALSE,
62110010,Free Gift,Expenses,FALSE,
62110020,Event,Expenses,FALSE,
62110030,Advertising,Expenses,FALSE,
62110040,Shipping Merchandise,Expenses,FALSE,
63110010,Drinking Water,Expenses,FALSE,
63110020,Exercise Necessities,Expenses,FALSE,
63110030,Monthly Fee,Expenses,FALSE,
63110040,Donation,Expenses,FALSE,
63110050,Internet,Expenses,FALSE,
63110060,Phone,Expenses,FALSE,
63110070,Prepaid Phone Bills,Expenses,FALSE,
63110080,Electricity,Expenses,FALSE,
63110090,Water (PDAM),Expenses,FALSE,
63110100,Research & Development,Expenses,FALSE,
63110110,Kitchen Necessities,Expenses,FALSE,
63110120,Office Equipment,Expenses,FALSE,
63110130,First Aid Kit,Expenses,FALSE,
63110140,Other Necessities,Expenses,FALSE,
63110150,K3 (Fire Extinguisher),Expenses,FALSE,
63110160,Cleaning Equipment,Expenses,FALSE,
63110180,Owner Necessities,Expenses,FALSE,
64110010,Office Stationery,Expenses,FALSE,
64110020,Post Necessities,Expenses,FALSE,
64110030,Jilid & Photocopy,Expenses,FALSE,
64110040,Job Recruitment Advertisement,Expenses,FALSE,
64110050,Stamp,Expenses,FALSE,
65110010,Licensing Fees,Expenses,FALSE,
65110020,Bank Administration Fees,Expenses,FALSE,
65110030,Consultant Fees,Expenses,FALSE,
65110040,Rental Costs,Expenses,FALSE,
65110060,Building Maintenance Costs,Expenses,FALSE,
65110070,"Electricity, Telephone, and Internet Installation Maintenance Costs",Expenses,FALSE,
65110080,Taxes,Expenses,FALSE,
65110090,Guest Accomodation,Expenses,FALSE,
65110100,Asset Maintenance Costs,Expenses,FALSE,
65110110,Shipping Costs,Expenses,FALSE,
66110010,Vehicle Fuel,Expenses,FALSE,
66110020,Vehicle Service,Expenses,FALSE,
66110030,Vehicle Parking & Toll Fee,Expenses,FALSE,
66110040,Vehicle Taxes,Expenses,FALSE,
66110050,Vehicle Insurance,Expenses,FALSE,
67100010,Land,Expenses,FALSE,
67100020,Office Building,Expenses,FALSE,
67100030,Vehicle,Expenses,FALSE,
67100040,Office Supplies,Expenses,FALSE,
67100050,Software,Expenses,FALSE,
67100060,Office Furniture,Expenses,FALSE,
69000000,Other Expenses,Expenses,FALSE,
81100010,Interest Income,Other Income,FALSE,
81100020,Deposit Income,Other Income,FALSE,
81100030,Foreign Exchange Gain,Other Income,FALSE,
81100040,Other Income,Other Income,FALSE,
81100090,Gain on Sale of Fixed Assets,Other Income,FALSE,
91100010,Interest Expense,Expenses,FALSE,
91100020,Bank Administration Expense,Expenses,FALSE,
91100030,Foreign Exchange Loss,Expenses,FALSE,
91100090,Loss on Sale of Fixed Assets,Expenses,FALSE,
99900001,Cash Difference Loss,Expenses,FALSE,
99900002,Cash Difference Gain,Income,FALSE,
999999,Undistributed Profits/Losses,Current Year Earnings,FALSE,
No preview for this file type
import csv
import glob
import os
import sys
import logging
_logger = logging.getLogger(__name__)
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])]"' % (mytag, value)
else:
# many2one
line = '"%s" ref="%s"' % (mytag, value)
return line
def proses(path, name):
file_name = os.path.join(path, name)
for csv_file in glob.glob(file_name):
no_update = NOUPDATE
if csv_file in FILES_WITH_UPDATE:
no_update = 0
xml_file = csv_file.replace('.', '_').replace('_csv', '_data.xml')
xml_data = open(xml_file, 'w')
xml_data.write(ERP_HEADER % NOUPDATE + "\n\n\n")
with open(csv_file, 'r') as csv_data:
reader = csv.DictReader(csv_data)
print(f"reader {reader}")
model, ext = os.path.splitext(csv_file)
for row in reader:
xml_data.write(f' <record id="{row["id"]}" model={model}>\n')
for key in row:
if key == "id":
continue
begin = ''
if '/' in key or ':' in key:
xml_suffix = convert_relationnal_field2xml(key, row[key])
line = f' <field name={xml_suffix}/>\n'
else:
# basic fields
value = row[key]
line = f" <field name='{key}'>{value}</field>\n"
xml_data.write(line)
xml_data.write(f" </record>\n")
xml_data.write(ERP_FOOTER)
xml_data.close()
def usage(argv):
print(f"{__name__} file_name")
def main(argv=sys.argv):
if len(argv) != 2:
return usage(argv)
file_name = argv[1]
name, ext = os.path.splitext(file_name)
if not ext or ext != '.csv':
print(f"File {file_name} bukan csv")
sys.exit()
path = os.path.dirname(file_name)
name = os.path.basename(file_name)
if not os.path.exists(path):
print(f"Path {path} tidak ditemukan")
sys.exit()
if name.find('*') < 0:
if not os.path.exists(file_name):
print(f"Filename {name} tidak ditemukan")
sys.exit()
proses(path, name)
if __name__ == '__main__':
print("Start Module")
main(sys.argv)
......@@ -22,6 +22,9 @@ RI Goverment Dashboard
'views/region_tax_plan_sum.xml',
'views/region_tax_actual.xml',
'views/region_tax_actual_sum.xml',
'views/dw_objek.xml',
'views/dw_invoice.xml',
'views/dw_payment.xml',
'views/menus.xml',
'data/portal.xml',
'views/portal_templates.xml',
......
......@@ -84,19 +84,46 @@ class IdgBoardWebsite(Website):
step=self._items_per_page
)
province_domain = ['&', ('level', '=', 6),
('district_id', '=', None)]
province_taxs = IdgTaxSum.search(
province_domain,
limit=self._items_per_page,
offset=pager['offset']
)
district_domain = ['&', ('level', '=', 6),
('district_id', '!=', None)]
district_taxs = IdgTaxSum.search(
district_domain,
limit=self._items_per_page,
offset=pager['offset']
)
('district_id', '=', None)]
# search(
# province_domain,
# limit=self._items_per_page,
# offset=pager['offset']
# )
sql = """
SELECT s.account_group_id, ag.name, ag.code_prefix_start as code,
sum(s.amount) amount, sum(s.qty) as qty
FROM idg_region_tax_potency_sum s
JOIN account_group ag ON s.account_group_id=ag.id
WHERE s.level=6 AND s.district_id is Null and year=2021
GROUP BY s.account_group_id, ag.name, ag.code_prefix_start
"""
request.env.cr.execute(sql)
province_taxs = request.env.cr.dictfetchall()
# print(province_taxs )
# province_taxs = IdgTaxSum.read_group(domain=province_domain,
# fields=['account_group_id', 'amount', 'qty'],
# groupby=['account_group_id'])
#
# district_domain = ['&', ('level', '=', 6),
# ('district_id', '!=', None)]
# district_taxs = IdgTaxSum.search(
# district_domain,
# limit=self._items_per_page,
# offset=pager['offset']
# )
sql = """
SELECT s.account_group_id, ag.name, ag.code_prefix_start as code,
sum(s.amount) amount, sum(s.qty) as qty
FROM idg_region_tax_potency_sum s
JOIN account_group ag ON s.account_group_id=ag.id
WHERE s.level=6 AND s.district_id is not Null and year=2021
GROUP BY s.account_group_id, ag.name, ag.code_prefix_start
"""
request.env.cr.execute(sql)
district_taxs = request.env.cr.dictfetchall()
values.update({
'province_taxs': province_taxs,
......
from . import idg_region_tax_plan
from . import idg_region_tax_potency
from . import idg_region_tax_actual
from . import data_warehouse
from odoo import fields, models, api
class IdgrDwObjekPajak(models.Model):
_name = 'idgr.dw.objek'
_inherit = 'portal.mixin'
jns_pemda = fields.Selection(
selection=[("kota", "Kota"),
("kotif", "Kota Administratif"),
("kab", "Kabupaten"),
("kabtif", "Kabupaten Administratif"),
("prov", "Provinsi"),
("provtif", "Provinsi Administratif"),
],
string="Jns. Pemda", size=16)
kd_pemda = fields.Char(string="Kode Pemda", size=8)
nm_pemda = fields.Char(string="Nama Pemda", size=128)
kd_rek_rinci = fields.Char(string="Kode Rekening", size=16)
nm_rek_rinci = fields.Char(string="Nama Rekening", size=128)
nop = fields.Char(string="NOPD", size=32)
nm_op = fields.Char(string="Nama OP", size=128)
alamat_op = fields.Char(string="Alamat OP", size=128)
alamat_op2 = fields.Char(string="Alamat OP", size=128)
kelurahan_op = fields.Char(string="Kelurahan OP", size=64)
kecamatan_op = fields.Char(string="Kecamatan OP", size=64)
kota_op = fields.Char(string="Kota OP", size=64)
propinsi_op = fields.Char(string="Provinsi OP", size=64)
status = fields.Integer(string="Status OP", default=1)
kd_wp = fields.Char(string="Identitas WP", size=32)
nm_wp = fields.Char(string="Nama WP", size=128)
npwpd = fields.Char(string="NPWPD WP", size=32)
alamat_wp = fields.Char(string="Alamat WP", size=128)
alamat_wp2 = fields.Char(string="Alamat WP", size=128)
kelurahan_wp = fields.Char(string="Kelurahan WP", size=64)
kecamatan_wp = fields.Char(string="Kecamatan WP", size=64)
kota_wp = fields.Char(string="Kota WP", size=64)
propinsi_wp = fields.Char(string="Provinsi WP", size=64)
njop = fields.Integer(string="NJOP/Omset")
tarif = fields.Integer(string="Tarif")
tgl_kukuh = fields.Date(string="Tgl. Kukuh")
class IdgrDwInvoice(models.Model):
_name = "idgr.dw.invoice"
jns_pemda = fields.Selection(
selection=[("kota", "Kota"),
("kotif", "Kota Administratif"),
("kab", "Kabupaten"),
("kabtif", "Kabupaten Administratif"),
("prov", "Provinsi"),
("provtif", "Provinsi Administratif"),
],
string="Jns. Pemda", size=16)
kd_pemda = fields.Char(string="Kode Pemda", size=8)
nm_pemda = fields.Char(string="Nama Pemda", size=128)
kd_rek_rinci = fields.Char(string="Kode Rek", size=16)
nm_rek_rinci = fields.Char(string="Nama Rek", size=128)
# kelompok = fields.Char(string="Name", size=32)
nop = fields.Char(string="NOPD", size=32)
# nm_op = fields.Char(string="Nama Objek")
# alamat_op = fields.Char(string="Alamat Objek", size=128)
# alamat_op2 = fields.Char(string="Alamat Objek2", size=128)
# kelurahan_op = fields.Char(string="Kelurahan Objek", size=64)
# kecamatan_op = fields.Char(string="Kecamatan Objek", size=64)
# kota_op = fields.Char(string="Kota Objek", size=64)
# propinsi_op = fields.Char(string="Provinsi Objek", size=64)
# kd_wp = fields.Char(string="Identitas WP", size=32)
# nm_wp = fields.Char(string="Nama WP", size=128)
# npwpd = fields.Char(string="NPWPD", size=32)
# alamat_wp = fields.Char(string="Alamat WP", size=128)
# alamat_wp2 = fields.Char(string="Alamat WP", size=128)
# kelurahan_wp = fields.Char(string="Kelurahan WP", size=64)
# kecamatan_wp = fields.Char(string="Kecamatan WP", size=64)
# kota_wp = fields.Char(string="Kota WP", size=64)
# propinsi_wp = fields.Char(string="Provinsi WP", size=64)
njop = fields.Integer(string="NJOP/Omset")
tarif = fields.Float(string="Tarif")
pokok = fields.Integer(string="Pokok")
denda = fields.Integer(string="Denda")
periode_awal = fields.Date(string="Periode Awal")
periode_akhir = fields.Date(string="Periode Akhir")
tahun_pajak = fields.Integer(string="Thn. Pajak")
bulan_pajak = fields.Integer(string="Bln. Pajak")
no_bayar = fields.Char(string="Nomor Bayar", size=128)
no_tetap = fields.Char(string="Nomor", size=128)
tgl_tetap = fields.Date(string="Tanggal Tetap")
jth_tempo = fields.Date(string="Jth. Tempo")
jns_tagihan = fields.Selection(
selection=[
('sspd', "SSPD"),
('sptpd', "SPTPD"),
('skpd', 'SKPD'),
('kb', 'SKPD-KB'),
('kbt', 'SKPD-KBT'),
('stpd', 'STPD'),
('lb', 'SKPD-LB'),
])
tahun_tetap = fields.Integer(compute="_compute_tgl_tetap", string="Thn. Tetap", store=True)
bulan_tetap = fields.Integer(compute="_compute_tgl_tetap", string="Bln. Tetap", store=True)
hari_tetap = fields.Integer(compute="_compute_tgl_tetap", string="Tgl. Tetap", store=True)
nm_op = fields.Char(compute="_compute_objek", string="Nama OP", )
alamat_op = fields.Char(compute="_compute_objek", string="Alamat OP", )
alamat_op2 = fields.Char(compute="_compute_objek", string="Alamat OP", )
kelurahan_op = fields.Char(compute="_compute_objek", string="Kelurahan OP", )
kecamatan_op = fields.Char(compute="_compute_objek", string="Kecamatan OP", )
kota_op = fields.Char(compute="_compute_objek", string="Kota OP", )
propinsi_op = fields.Char(compute="_compute_objek", string="Provinsi OP", )
kd_wp = fields.Char(compute="_compute_objek", string="Identitas WP", )
nm_wp = fields.Char(compute="_compute_objek", string="Nama WP", )
npwpd = fields.Char(compute="_compute_objek", string="NPWPD WP", )
alamat_wp = fields.Char(compute="_compute_objek", string="Alamat WP", )
alamat_wp2 = fields.Char(compute="_compute_objek", string="Alamat WP", )
kelurahan_wp = fields.Char(compute="_compute_objek", string="Kelurahan WP", )
kecamatan_wp = fields.Char(compute="_compute_objek", string="Kecamatan WP", )
kota_wp = fields.Char(compute="_compute_objek", string="Kota WP", )
propinsi_wp = fields.Char(compute="_compute_objek", string="Provinsi WP", )
tgl_kukuh = fields.Date(compute="_compute_objek", string="Tgl. Pengukuhan", )
def _compute_tgl_tetap(self):
for row in self:
row.tahun_tetap = row.tgl_tetap.year
row.bulan_tetap = row.tgl_tetap.month
row.hari_tetap = row.tgl_tetap.day
def _calculte_op(self):
for row in self:
pass
class IdgrDwPayment(models.Model):
_name = "idgr.dw.payment"
jns_pemda = fields.Selection(
selection=[("kota", "Kota"),
("kotif", "Kota Administratif"),
("kab", "Kabupaten"),
("kabtif", "Kabupaten Administratif"),
("prov", "Provinsi"),
("provtif", "Provinsi Administratif"),
],
string="Jns. Pemda", size=16)
kd_pemda = fields.Char(string="Kode Pemda", size=8)
nm_pemda = fields.Char(string="Nama Pemda", size=128)
kd_rek_rinci = fields.Char(string="Kode Rek", size=16)
no_tagihan = fields.Char(string="No. Tagihan", size=128)
tgl_bayar = fields.Date(string="Tgl. Bayar")
denda = fields.Integer(string="Denda")
jumlah = fields.Integer(string="Bayar")
nop = fields.Char(compute="_compute_invoice", string="NOP", )
nm_rek_rinci = fields.Char(compute="_compute_invoice", string="Nama Rekening", )
njop = fields.Integer(compute="_compute_invoice", string="NJOP/Omset")
tarif = fields.Float(compute="_compute_invoice", string="Tarif")
pokok_inv = fields.Integer(compute="_compute_invoice", string="Pokok")
denda_inv = fields.Integer(compute="_compute_invoice", string="Denda")
periode_awal = fields.Date(compute="_compute_invoice", string="Periode Awal")
periode_akhir = fields.Date(compute="_compute_invoice", string="Periode Akhir")
tahun_pajak = fields.Integer(compute="_compute_invoice", string="Thn. Pajak")
bulan_pajak = fields.Integer(compute="_compute_invoice", string="Bln. Pajak")
no_bayar = fields.Char(compute="_compute_invoice", string="Nomor Bayar", size=128)
no_tetap = fields.Char(compute="_compute_invoice", string="Nomor", size=128)
tgl_tetap = fields.Date(compute="_compute_invoice", string="Tanggal Tetap")
jth_tempo = fields.Date(compute="_compute_invoice", string="Jth. Tempo")
jns_tagihan = fields.Char(compute="_compute_invoice", string="Jns. Tagihan")
nm_op = fields.Char(compute="_compute_objek", string="Nama OP", )
alamat_op = fields.Char(compute="_compute_objek", string="Alamat OP", )
alamat_op2 = fields.Char(compute="_compute_objek", string="Alamat OP", )
kelurahan_op = fields.Char(compute="_compute_objek", string="Kelurahan OP", )
kecamatan_op = fields.Char(compute="_compute_objek", string="Kecamatan OP", )
kota_op = fields.Char(compute="_compute_objek", string="Kota OP", )
propinsi_op = fields.Char(compute="_compute_objek", string="Provinsi OP", )
kd_wp = fields.Char(compute="_compute_objek", string="Identitas WP", )
nm_wp = fields.Char(compute="_compute_objek", string="Nama WP", )
npwpd = fields.Char(compute="_compute_objek", string="NPWPD WP", )
alamat_wp = fields.Char(compute="_compute_objek", string="Alamat WP", )
alamat_wp2 = fields.Char(compute="_compute_objek", string="Alamat WP", )
kelurahan_wp = fields.Char(compute="_compute_objek", string="Kelurahan WP", )
kecamatan_wp = fields.Char(compute="_compute_objek", string="Kecamatan WP", )
kota_wp = fields.Char(compute="_compute_objek", string="Kota WP", )
propinsi_wp = fields.Char(compute="_compute_objek", string="Provinsi WP", )
def _compute_objek(self):
for row in self:
pass
def _compute_invoice(self):
for row in self:
pass
......@@ -6,3 +6,6 @@
"access_idg_region_tax_plan_sum_admin","access.idg.region.tax.plan.sum.admin","model_idg_region_tax_plan_sum","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
"access_idg_region_tax_actual_sum_admin","access.idg.region.tax.actual.sum.admin","model_idg_region_tax_actual_sum","base.group_system",1,1,1,1
"access_idgr_dw_objek_admin","access.idg.region.tax.actual.sum.admin","model_idgr_dw_objek","base.group_system",1,1,1,1
"access_idgr_dw_invoice_admin","access.idg.region.tax.actual.sum.admin","model_idgr_dw_invoice","base.group_system",1,1,1,1
"access_idgr_dw_payment_admin","access.idg.region.tax.actual.sum.admin","model_idgr_dw_payment","base.group_system",1,1,1,1
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="idgr_dw_invoice_search" model="ir.ui.view">
<field name="name">idgr.dw.invoice.search</field>
<field name="model">idgr.dw.invoice</field>
<field name="arch" type="xml">
<search string="Area">
<field name="kd_pemda"
string="Kode"/>
<field name="nm_pemda"
string="Nama"/>
<field name="kd_rek_rinci"
string="Kode Rekening"/>
<field name="nm_rek_rinci"
string="Nama Rekening"/>
<group expand="0" string="Group By">
<filter string="Kode" name="kode" domain="" context="{'group_by':'kd_pemda'}"/>
<filter string="Nama" name="nama" domain="" context="{'group_by':'nm_pemda'}"/>
<filter string="Rekening" name="rekening" domain="" context="{'group_by':'kd_rek_rinci'}"/>
</group>
</search>
</field>
</record>
<record id="idgr_dw_invoice_tree" model="ir.ui.view">
<field name="name">idgr.dw.invoice.tree</field>
<field name="model">idgr.dw.invoice</field>
<field name="arch" type="xml">
<tree string="Region Tax Potency" sample="1" create="1" delete="1" multi_edit="0">
<field name="kd_pemda"/>
<field name="nm_pemda"/>
<field name="nop"/>
<field name="njop"/>
<field name="tarif"/>
<field name="pokok"/>
<field name="denda"/>
<field name="tgl_tetap"/>
<field name="jth_tempo"/>
<field name="tahun_pajak"/>
<field name="bulan_pajak"/>
</tree>
</field>
</record>
<record id="idgr_dw_invoice_form" model="ir.ui.view">
<field name="name">idgr.dw.invoice.form</field>
<field name="model">idgr.dw.invoice</field>
<field name="arch" type="xml">
<form string="Region Tax Potency" sample="1">
<sheet>
<group>
<field name="jns_pemda"/>
<field name="nm_pemda"/>
<field name="kd_pemda"/>
<field name="kd_rek_rinci"/>
<field name="nm_rek_rinci"/>
<field name="jns_tagihan"/>
<field name="no_bayar"/>
<field name="no_tetap"/>
<field name="tgl_tetap"/>
<field name="nop"/>
<field name="tahun_pajak"/>
<field name="bulan_pajak"/>
<field name="njop"/>
<field name="tarif"/>
<field name="pokok"/>
<field name="denda"/>
<field name="periode_awal"/>
<field name="periode_akhir"/>
<field name="jth_tempo"/>
</group>
<notebook>
<page name="invoice_pajak">
<group>
<field name="nm_op"/>
<field name="alamat_op"/>
<field name="alamat_op2"/>
<field name="kelurahan_op"/>
<field name="kecamatan_op"/>
<field name="kota_op"/>
<field name="propinsi_op"/>
</group>
</page>
<page name="wajib_pajak">
<group>
<field name="kd_wp"/>
<field name="nm_wp"/>
<field name="npwpd"/>
<field name="alamat_wp"/>
<field name="alamat_wp2"/>
<field name="kelurahan_wp"/>
<field name="kecamatan_wp"/>
<field name="kota_wp"/>
<field name="propinsi_wp"/>
<field name="tgl_kukuh"/>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="action_idgr_dw_invoice" model="ir.actions.act_window">
<field name="name">DW Region Tax Object</field>
<field name="res_model">idgr.dw.invoice</field>
<field name="view_mode">tree,form,graph</field>
<field name="view_id" ref="idgr_dw_invoice_tree"/>
<field name="search_view_id" ref="idgr_dw_invoice_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Objek Pajak
</p>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="idgr_dw_objek_search" model="ir.ui.view">
<field name="name">idgr.dw.objek.search</field>
<field name="model">idgr.dw.objek</field>
<field name="arch" type="xml">
<search string="Area">
<field name="kd_pemda"
string="Kode"/>
<field name="nm_pemda"
string="Nama"/>
<field name="kd_rek_rinci"
string="Kode Rekening"/>
<field name="nm_rek_rinci"
string="Nama Rekening"/>
<group expand="0" string="Group By">
<filter string="Kode" name="kode" domain="" context="{'group_by':'kd_pemda'}"/>
<filter string="Nama" name="nama" domain="" context="{'group_by':'nm_pemda'}"/>
<filter string="Rekening" name="rekening" domain="" context="{'group_by':'kd_rek_rinci'}"/>
</group>
</search>
</field>
</record>
<record id="idgr_dw_objek_tree" model="ir.ui.view">
<field name="name">idgr.dw.objek.tree</field>
<field name="model">idgr.dw.objek</field>
<field name="arch" type="xml">
<tree string="Region Tax Potency" sample="1" create="1" delete="1" multi_edit="0">
<field name="kd_pemda"/>
<field name="nm_pemda"/>
<field name="nop"/>
<field name="npwpd"/>
<field name="njop"/>
<field name="tarif"/>
</tree>
</field>
</record>
<record id="idgr_dw_objek_form" model="ir.ui.view">
<field name="name">idgr.dw.objek.form</field>
<field name="model">idgr.dw.objek</field>
<field name="arch" type="xml">
<form string="Region Tax Potency" sample="1">
<sheet>
<group>
<group>
<label for="jns_pemda" string="Pemda"/>
<div>
<field name="jns_pemda" class="oe_inline"/>
<field name="kd_pemda"/>
</div>
<field name="nm_pemda"/>
<label for="kd_rek_rinci" string="Rekening"/>
<div>
<field name="kd_rek_rinci" class="oe_inline"/>
<field name="nm_rek_rinci" class="oe_inline"/>
</div>
<field name="nop"/>
<field name="njop"/>
<field name="tarif"/>
<field name="tgl_kukuh"/>
</group>
</group>
<notebook>
<page name="objek_pajak" string="Objek Pajak">
<group>
<field name="nm_op" placeholder="Nama OP..."/>
<label for="alamat_op" string="Alamat OP"/>
<div class="o_address_format">
<field name="alamat_op" placeholder="Alamat..."/>
<field name="alamat_op2" placeholder="Alamat2..."/>
<field name="kelurahan_op" placeholder="Kelurahan..."/>
<field name="kecamatan_op" placeholder="Kecamatan..."/>
<field name="kota_op" placeholder="Kota..."/>
<field name="propinsi_op" placeholder="Provinsi..."/>
</div>
</group>
</page>
<page name="wajib_pajak" string="Wajib Pajak">
<group>
<field name="kd_wp"/>
<field name="nm_wp"/>
<field name="npwpd"/>
<label for="alamat_op" string="Alamat OP"/>
<div class="o_address_format">
<field name="alamat_wp" placeholder="Alamat..."/>
<field name="alamat_wp2" placeholder="Alamat2..."/>
<field name="kelurahan_wp" placeholder="Kelurahan..."/>
<field name="kecamatan_wp" placeholder="Kecamatan..."/>
<field name="kota_wp" placeholder="Kota..."/>
<field name="propinsi_wp" placeholder="Provinsi..."/>
</div>
<field name="status" invisible="1"/>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="action_idgr_dw_objek" model="ir.actions.act_window">
<field name="name">DW Region Tax Object</field>
<field name="res_model">idgr.dw.objek</field>
<field name="view_mode">tree,form,graph</field>
<field name="view_id" ref="idgr_dw_objek_tree"/>
<field name="search_view_id" ref="idgr_dw_objek_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Objek Pajak
</p>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="idgr_dw_payment_search" model="ir.ui.view">
<field name="name">idgr.dw.payment.search</field>
<field name="model">idgr.dw.payment</field>
<field name="arch" type="xml">
<search string="Area">
<field name="kd_pemda"
string="Kode"/>
<field name="nm_pemda"
string="Nama"/>
<field name="kd_rek_rinci"
string="Kode Rekening"/>
<field name="nm_rek_rinci"
string="Nama Rekening"/>
<group expand="0" string="Group By">
<filter string="Kode" name="kode" domain="" context="{'group_by':'kd_pemda'}"/>
<filter string="Nama" name="nama" domain="" context="{'group_by':'nm_pemda'}"/>
<filter string="Rekening" name="rekening" domain="" context="{'group_by':'kd_rek_rinci'}"/>
</group>
</search>
</field>
</record>
<record id="idgr_dw_payment_tree" model="ir.ui.view">
<field name="name">idgr.dw.payment.tree</field>
<field name="model">idgr.dw.payment</field>
<field name="arch" type="xml">
<tree string="Region Tax Potency" sample="1" create="1" delete="1" multi_edit="0">
<field name="kd_pemda"/>
<field name="nm_pemda"/>
<field name="no_tagihan"/>
<field name="denda"/>
<field name="jumlah"/>
<field name="tgl_bayar"/>
</tree>
</field>
</record>
<record id="idgr_dw_payment_form" model="ir.ui.view">
<field name="name">idgr.dw.payment.form</field>
<field name="model">idgr.dw.payment</field>
<field name="arch" type="xml">
<form string="Region Tax Potency" sample="1">
<sheet>
<group>
<field name="jns_pemda"/>
<field name="nm_pemda"/>
<field name="kd_pemda"/>
<field name="kd_rek_rinci"/>
<field name="nm_rek_rinci"/>
<field name="jns_tagihan"/>
<field name="no_bayar"/>
<field name="no_tetap"/>
<field name="tgl_tetap"/>
<field name="nop"/>
<field name="tahun_pajak"/>
<field name="bulan_pajak"/>
<field name="njop"/>
<field name="tarif"/>
<!-- <field name="pokok"/>-->
<!-- <field name="denda"/>-->
<field name="periode_awal"/>
<field name="periode_akhir"/>
<field name="jth_tempo"/>
</group>
<notebook>
<page name="payment_pajak">
<group>
<field name="nm_op"/>
<field name="alamat_op"/>
<field name="alamat_op2"/>
<field name="kelurahan_op"/>
<field name="kecamatan_op"/>
<field name="kota_op"/>
<field name="propinsi_op"/>
</group>
</page>
<page name="wajib_pajak">
<group>
<field name="kd_wp"/>
<field name="nm_wp"/>
<field name="npwpd"/>
<field name="alamat_wp"/>
<field name="alamat_wp2"/>
<field name="kelurahan_wp"/>
<field name="kecamatan_wp"/>
<field name="kota_wp"/>
<field name="propinsi_wp"/>
<!-- <field name="njop"/>-->
<!-- <field name="tarif"/>-->
<!-- <field name="pokok"/>-->
<!-- <field name="denda"/>-->
<!-- <field name="tgl_kukuh"/>-->
<!-- <field name="status"/>-->
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="action_idgr_dw_payment" model="ir.actions.act_window">
<field name="name">DW Region Tax Object</field>
<field name="res_model">idgr.dw.payment</field>
<field name="view_mode">tree,form,graph</field>
<field name="view_id" ref="idgr_dw_payment_tree"/>
<field name="search_view_id" ref="idgr_dw_payment_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Objek Pajak
</p>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
......@@ -46,7 +46,7 @@
<menuitem id="transaksi_idgd_menu"
name="Transaksi"
parent="idgd_menu_root"
sequence="6"/>
sequence="5"/>
<menuitem id="potency_idgd_menu"
name="Region Tax Potency"
parent="transaksi_idgd_menu"
......@@ -79,4 +79,26 @@
action="action_idg_region_tax_actual_sum"
sequence="6"/>
<menuitem id="region_dw_idgd_menu"
name="Data Warehouse"
parent="idgd_menu_root"
sequence="6"/>
<menuitem id="dw_objek_idgd_menu"
name="Objek Pajak"
parent="region_dw_idgd_menu"
action="action_idgr_dw_objek"
sequence="1"/>
<menuitem id="dw_invoice_idgd_menu"
name="Tagihan/Ketetapan"
parent="region_dw_idgd_menu"
action="action_idgr_dw_invoice"
sequence="2"/>
<menuitem id="dw_payment_idgd_menu"
name="Pembayaran"
parent="region_dw_idgd_menu"
action="action_idgr_dw_payment"
sequence="3"/>
</odoo>
......@@ -10,7 +10,8 @@
<t t-call="portal.portal_table">
<thead>
<tr class="active">
<th class="text-left">Tax Category</th>
<th class="text-left">Code</th>
<th class="text-left">Category</th>
<th class="text-right">Qty</th>
<th class="text-right">Amount</th>
</tr>
......@@ -19,15 +20,17 @@
<t t-foreach="province_taxs" t-as="tax">
<tr>
<td>
<a t-att-href="tax.get_portal_url()">
<t t-esc="tax.account_group_id.name"/>
</a>
<t t-esc="tax['code']"/>
</td>
<td>
<!-- <a t-att-href="tax.get_portal_url()">-->
<t t-esc="tax['name']"/>
</td>
<td class="text-right">
<span t-field="tax.qty"/>
<span t-esc="tax['qty']"/>
</td>
<td class="text-right">
<span t-field="tax.amount"/>
<span t-esc="tax['amount']"/>
</td>
</tr>
</t>
......@@ -39,7 +42,8 @@
<t t-call="portal.portal_table">
<thead>
<tr class="active">
<th class="text-left">Tax Category</th>
<th class="text-left">Code</th>
<th class="text-left">Category</th>
<th class="text-right">Qty</th>
<th class="text-right">Amount</th>
</tr>
......@@ -48,15 +52,20 @@
<t t-foreach="district_taxs" t-as="tax">
<tr>
<td>
<a t-att-href="tax.get_portal_url()">
<t t-esc="tax.account_group_id.name"/>
</a>
<!-- <a t-att-href="tax.get_portal_url()">-->
<t t-esc="tax['code']"/>
<!-- </a>-->
</td>
<td>
<!-- <a t-att-href="tax.get_portal_url()">-->
<t t-esc="tax['name']"/>
<!-- </a>-->
</td>
<td class="text-right">
<span t-field="tax.qty"/>
<span t-esc="tax['qty']"/>
</td>
<td class="text-right">
<span t-field="tax.amount"/>
<span t-esc="tax['amount']"/>
</td>
</tr>
</t>
......
......@@ -17,7 +17,6 @@
</search>
</field>
</record>
<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>
......@@ -32,7 +31,6 @@
</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>
......@@ -45,7 +43,6 @@
<h2>
<field name="district_id"/>
</h2>
<group>
<field name="country_id" invisible="1"/>
<field name="account_id"/>
......@@ -57,7 +54,6 @@
</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>
......@@ -71,6 +67,5 @@
</p>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
......@@ -15,8 +15,8 @@ class BphtbSales(models.Model):
_name = 'bphtb.sales'
_description = 'Transaksi BPHTB'
_inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin', 'sequence.mixin']
name = fields.Char(string='Number', copy=False, compute='_compute_name', readonly=False, store=True, index=True,
tracking=True)
name = fields.Char(string='Number', copy=False, compute='_compute_name', readonly=False,
store=True, index=True, tracking=True)
ref = fields.Char(string='Reference', copy=False, tracking=True)
#
# rate = fields.Float(required=True)
......
E-Office Letter Management
-----
#Fungsi
1. Mengelola surat masuk/surat keluar
2. Mengelola Penomoran Surat
#User Type
1. Generic User
2. Letter User
3. Letter Administrator
#Status Surat
1. Draft
2. Pending (Waiting for Approval)
3. Approved (Di approve semua user required)
4. Refused (Dikembalikan kepada pembuat)
* Salah satu required approval melakukan refuse/penolakan
* Bisa diubah jadi draft oleh pembuat
5. Canceled
* Salah satu required approval melakukan cancel data
# Surat Masuk
1. "Letter User" Membuat surat masuk
2. Sistem melakukan auto routing ke Top Manager
3. Setiap Manager dapat menambahkan routing ke staff di bawahnya
# Surat Keluar
1. Setiap User berhak membuat surat keluar
2. System melakukan otomasi routing ke manager user
3. Manager melakukan proses autorisasi
4. "No Surat" diinput oleh "Letter User" jika semua manager yang wajib sudah approved
# Restriction
1. Generic user
1. Hanya bisa membaca data milik sendiri
2. Melakukan approval untuk surat yang diterima
3. Menambahkan pegawai untuk approval
4. Tidak bisa menghapus surat yang sudah dibuat
5. Tidak bisa menghapus Approval default (required)
6. Tidak bisa mengisi code surat keluar
2. Letter User
1. Input Data Code Surat Keluar
3. Letter Administrator
1. Membaca semua record surat
2. Menghapus record yang belum approval
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import controllers
from . import models
from . import wizard
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'E-OFFICE LETTER',
'version': '0.1',
'summary': 'Letter Office Management',
'sequence': 11,
'description': """
E-OFFICE
=================
Memudahkan dalam mengelola surat menyurat
""",
'category': 'IDG OFFICE',
'website': 'https://opensipkd.com',
'images': [],
'depends': ['mail','hr'],
'data': [
'security/account_security.xml',
'security/ir.model.access.csv',
'security/ir_rule.xml',
'views/menus.xml',
'views/category.xml',
'views/incoming_letter.xml',
'views/task_letter.xml',
],
'demo': [
# 'security/ir_rule.xml',
# 'data/res_user.xml',
],
'qweb': [],
'installable': True,
'application': True,
'auto_install': False,
'license': 'LGPL-3',
'module': 'idg-letter'
}
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import onboarding
from . import portal
from odoo import http
from odoo.http import request
class OnboardingController(http.Controller):
@http.route('/pad/pad_invoice_onboarding', auth='user', type='json')
def pad_invoice_onboarding(self):
""" Returns the `banner` for the pad invoice onboarding panel.
It can be empty if the user has closed it or if he doesn't have
the permission to see it. """
company = request.env.company
if not request.env.is_admin() or \
company.pad_invoice_onboarding_state == 'closed':
return {}
return {
'html': request.env.ref('pad.pad_invoice_onboarding_panel')._render({
'company': company,
'state': company.get_and_update_pad_invoice_onboarding_state()
})
}
@http.route('/pad/pad_dashboard_onboarding', auth='user', type='json')
def pad_dashboard_onboarding(self):
""" Returns the `banner` for the pad dashboard onboarding panel.
It can be empty if the user has closed it or if he doesn't have
the permission to see it. """
company = request.env.company
if not request.env.is_admin() or \
company.pad_dashboard_onboarding_state == 'closed':
return {}
return {
'html': request.env.ref('pad.pad_dashboard_onboarding_panel')._render({
'company': company,
'state': company.get_and_update_pad_dashboard_onboarding_state()
})
}
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import base64
from collections import OrderedDict
from datetime import datetime
from odoo import http
from odoo.exceptions import AccessError, MissingError
from odoo.http import request, Response
from odoo.tools import image_process
from odoo.tools.translate import _
from odoo.addons.portal.controllers.portal import (
get_records_pager, pager as portal_pager, CustomerPortal)
from odoo.addons.web.controllers.main import Binary
STATE = ['draft', 'confirmed', 'canceled']
class CustomerPortal(CustomerPortal):
def _prepare_home_portal_values(self, counters):
values = super()._prepare_home_portal_values(counters)
if 'bphtb_count' in counters:
values['bphtb_count'] = request.env['bphtb.sales'].search_count([
('state', 'in', STATE)
]) if request.env['bphtb.sales'].check_access_rights(
'read', raise_exception=False) else 0
return values
def _bphtb_sales_get_page_view_values(self, sales, access_token, **kwargs):
def resize_to_48(b64source):
if not b64source:
b64source = base64.b64encode(Binary.placeholder())
return image_process(b64source, size=(48, 48))
values = {
'sales': sales,
'resize_to_48': resize_to_48,
}
return self._get_page_view_values(sales, access_token, values,
'my_bphtbs_history', False, **kwargs)
@http.route(['/my/bphtb', '/my/bphtb/page/<int:page>'], type='http', auth="user", website=True)
def portal_my_bphtb_saless(self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, **kw):
values = self._prepare_portal_layout_values()
BphtbSales = request.env['bphtb.sales']
domain = []
if date_begin and date_end:
domain += [('create_date', '>', date_begin), ('create_date', '<=', date_end)]
searchbar_sortings = {
'date': {'label': _('Newest'), 'order': 'create_date desc, id desc'},
'name': {'label': _('Name'), 'order': 'name asc, id asc'},
'owed': {'label': _('Total'), 'order': 'owed desc, id desc'},
}
# default sort by value
if not sortby:
sortby = 'date'
order = searchbar_sortings[sortby]['order']
searchbar_filters = {
'all': {'label': _('All'), 'domain': [('state', 'in', STATE)]},
'draft': {'label': _('Draft'), 'domain': [('state', '=', 'draft')]},
'confirmed': {'label': _('Confirmed'), 'domain': [('state', '=', 'confirmed')]},
'canceled': {'label': _('Canceled'), 'domain': [('state', '=', 'canceled')]},
}
# default filter by value
if not filterby:
filterby = 'all'
domain += searchbar_filters[filterby]['domain']
# count for pager
bphtb_count = BphtbSales.search_count(domain)
# make pager
pager = portal_pager(
url="/my/bphtb",
url_args={
'date_begin': date_begin, 'date_end': date_end,
'sortby': sortby, 'filterby': filterby
},
total=bphtb_count,
page=page,
step=self._items_per_page
)
# search the bphtb orders to display, according to the pager data
saless = BphtbSales.search(
domain,
order=order,
limit=self._items_per_page,
offset=pager['offset']
)
request.session['my_bphtbs_history'] = saless.ids[:100]
values.update({
'date': date_begin,
'saless': saless,
'page_name': 'bphtb',
'pager': pager,
'searchbar_sortings': searchbar_sortings,
'sortby': sortby,
'searchbar_filters': OrderedDict(sorted(searchbar_filters.items())),
'filterby': filterby,
'default_url': '/my/bphtb',
})
return request.render("idg_bphtb.portal_my_bphtb_saless", values)
@http.route(['/my/bphtb/<int:sales_id>'], type='http', auth="public", website=True)
def portal_my_bphtb_sales(self, sales_id=None, access_token=None, **kw):
try:
order_sudo = self._document_check_access('bphtb.sales', sales_id,
access_token=access_token)
except (AccessError, MissingError):
return request.redirect('/my')
report_type = kw.get('report_type')
if report_type in ('html', 'pdf', 'text'):
return self._show_report(model=order_sudo, report_type=report_type,
report_ref='idg_bphtb.action_report_bphtb_sspd',
download=kw.get('download'))
confirm_type = kw.get('confirm')
if confirm_type == 'reminder':
order_sudo.confirm_reminder_mail(kw.get('confirmed_date'))
if confirm_type == 'reception':
order_sudo._confirm_reception_mail()
values = self._bphtb_sales_get_page_view_values(order_sudo, access_token, **kw)
update_date = kw.get('update')
if order_sudo.company_id:
values['res_company'] = order_sudo.company_id
if update_date == 'True':
return request.render("idg_bphtb.portal_my_bphtb_sales_update_date", values)
return request.render("idg_bphtb.portal_my_bphtb_sales", values)
@http.route(['/my/bphtb/<int:sales_id>/update'], type='http',
methods=['POST'], auth="public", website=True)
def portal_my_bphtb_sales_update_dates(self, sales_id=None, access_token=None, **kw):
"""User update scheduled date on bphtb order line.
"""
try:
order_sudo = self._document_check_access('bphtb.sales', sales_id, access_token=access_token)
except (AccessError, MissingError):
return request.redirect('/my')
updated_dates = []
for id_str, date_str in kw.items():
try:
line_id = int(id_str)
except ValueError:
return request.redirect(order_sudo.get_portal_url())
order_sudo.write({
"date": datetime.strptime(date_str, '%Y-%m-%d'),
"state": "confirmed"
})
# line = order_sudo.order_line.filtered(lambda l: l.id == line_id)
# if not line:
# return request.redirect(order_sudo.get_portal_url())
# try:
# updated_date = line._convert_to_middle_of_day(
# datetime.strptime(date_str, '%Y-%m-%d'))
# except ValueError:
# continue
#
# updated_dates.append((line, updated_date))
#
# if updated_dates:
# order_sudo._update_date_planned_for_lines(updated_dates)
return Response(status=204)
id,code,name,min_omzet,rate,disc,company_id:id,under_value
bphtb_01,01,Jual Beli,60000000,5,0,base.main_company,False
bphtb_02,02,Tukar Menukar,60000000,5,0,base.main_company,False
bphtb_03,03,Hibah,60000000,5,0,base.main_company,False
bphtb_04,04,Hibah Wasiat,300000000,5,50,base.main_company,False
bphtb_05,05,Waris,300000000,5,50,base.main_company,False
bphtb_06,06,Pemasukan dalam Perseroan atau Badan Hukum Lainnya,60000000,5,0,base.main_company,False
bphtb_07,07,Pemisahan Hak yang mengakibatkan Peralihan,60000000,5,0,base.main_company,False
bphtb_08,08,Penunjukan Pembelli dalam Lelang,60000000,5,0,base.main_company,True
bphtb_09,09,Pelaksanaan Putusan Hakim yang mempunyai kekuatan hukum tetap,60000000,5,0,base.main_company,True
bphtb_10,10,Penggabungan Usaha,60000000,5,0,base.main_company,False
bphtb_11,11,Peleburan Usaha,60000000,5,0,base.main_company,False
bphtb_12,12,Pemekaran Usaha,60000000,5,0,base.main_company,False
bphtb_13,13,Hadiah,60000000,5,0,base.main_company,False
bphtb_14,14,Perolehan hak Rumah Sederhana Sehat dan RSS melalui KPR bersubsidi,60000000,5,0,base.main_company,False
bphtb_15,15,Pemberian Hak Baru Kelanjutan Pelepasan Hak,60000000,5,0,base.main_company,False
bphtb_16,16,Pemberian hak baru diluar pelepasan hak,60000000,5,0,base.main_company,False
bphtb_17,17,Tax Amnesti,60000000,5,0,base.main_company,False
bphtb_18,18,Peningkatan Status,0,0,0,base.main_company,False
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<record id="bphtb_01" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>01</field>
<field name='name'>Jual Beli</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_02" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>02</field>
<field name='name'>Tukar Menukar</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_03" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>03</field>
<field name='name'>Hibah</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_04" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>04</field>
<field name='name'>Hibah Wasiat</field>
<field name='min_omzet'>300000000</field>
<field name='rate'>5</field>
<field name='disc'>50</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_05" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>05</field>
<field name='name'>Waris</field>
<field name='min_omzet'>300000000</field>
<field name='rate'>5</field>
<field name='disc'>50</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_06" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>06</field>
<field name='name'>Pemasukan dalam Perseroan atau Badan Hukum Lainnya</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_07" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>07</field>
<field name='name'>Pemisahan Hak yang mengakibatkan Peralihan</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_08" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>08</field>
<field name='name'>Penunjukan Pembelli dalam Lelang</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>True</field>
</record>
<record id="bphtb_09" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>09</field>
<field name='name'>Pelaksanaan Putusan Hakim yang mempunyai kekuatan hukum tetap</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>True</field>
</record>
<record id="bphtb_10" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>10</field>
<field name='name'>Penggabungan Usaha</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_11" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>11</field>
<field name='name'>Peleburan Usaha</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_12" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>12</field>
<field name='name'>Pemekaran Usaha</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_13" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>13</field>
<field name='name'>Hadiah</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_14" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>14</field>
<field name='name'>Perolehan hak Rumah Sederhana Sehat dan RSS melalui KPR bersubsidi</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_15" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>15</field>
<field name='name'>Pemberian Hak Baru Kelanjutan Pelepasan Hak</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_16" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>16</field>
<field name='name'>Pemberian hak baru diluar pelepasan hak</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_17" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>17</field>
<field name='name'>Tax Amnesti</field>
<field name='min_omzet'>60000000</field>
<field name='rate'>5</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
<record id="bphtb_18" model=idg_bphtb/data/bphtb.jenis>
<field name='code'>18</field>
<field name='name'>Peningkatan Status</field>
<field name='min_omzet'>0</field>
<field name='rate'>0</field>
<field name='disc'>0</field>
<field name="company_id" ref="base.main_company"/>
<field name='under_value'>False</field>
</record>
</data>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="bphtb_partner_admin_kab_id" model="res.partner">
<field name="name">Admin BPHTB Kab/Kota</field>
<field name="street">Jalan-jalan</field>
<field name="country_id" ref="base.id"/>
<field name="state_id" ref="base.state_id_jb"/>
<field name="district_id" ref="id_gov.ct_jb_71"/>
<field name="company_id" ref="base.main_company"/>
<field name="zip">90241</field>
<field name="phone">+62 812-345-678</field>
<field name="email">info@company.idexample.com</field>
<field name="website">www.idexample.com</field>
</record>
<record id="bphtb_user_admin_kab_id" model="res.users">
<field name="login">bphtb_admin</field>
<field name="password">admin</field>
<field name="partner_id" ref="bphtb_partner_admin_kab_id"/>
<field name="company_id" ref="base.main_company"/>
<field name="company_ids" eval="[(4,ref('base.main_company'))]"/>
<field name="groups_id"
eval="[(6,0,[ref('base.group_user'), ref('idg_bphtb.group_bphtb_admin')])]"/>
</record>
<record id="bphtb_partner_ppat_kab_id" model="res.partner">
<field name="name">PPAT Kab/Kota</field>
<field name="street">Jalan-jalan</field>
<field name="country_id" ref="base.id"/>
<field name="state_id" ref="base.state_id_jb"/>
<field name="district_id" ref="id_gov.ct_jb_71"/>
<field name="company_id" ref="base.main_company"/>
<field name="zip">90241</field>
<field name="type">ppat</field>
<field name="phone">+62 812-345-678</field>
<field name="email">info@company.idexample.com</field>
<field name="website">www.idexample.com</field>
</record>
<record id="bphtb_user_ppat_kab_id" model="res.users">
<field name="login">ppat</field>
<field name="password">ppat</field>
<field name="partner_id" ref="bphtb_partner_ppat_kab_id"/>
<field name="company_id" ref="base.main_company"/>
<field name="company_ids" eval="[(4,ref('base.main_company'))]"/>
<field name="groups_id"
eval="[(6,0,[ref('base.group_user'), ref('idg_bphtb.group_bphtb_ppat')])]"/>
</record>
<record id="bphtb_partner_wp_kab_id" model="res.partner">
<field name="name">Wajib Pajak BPHTB</field>
<field name="street">Jalan-jalan</field>
<field name="country_id" ref="base.id"/>
<field name="state_id" ref="base.state_id_jb"/>
<field name="district_id" ref="id_gov.ct_jb_71"/>
<field name="company_id" ref="base.main_company"/>
<field name="zip">90241</field>
<field name="type">wp</field>
<field name="phone">+62 812-345-678</field>
<field name="email">info@company.idexample.com</field>
<field name="website">www.idexample.com</field>
</record>
<record id="bphtb_partner_penjual_kab_id" model="res.partner">
<field name="name">Wajib Pajak Penjual BPHTB</field>
<field name="street">Jalan-jalan</field>
<field name="country_id" ref="base.id"/>
<field name="state_id" ref="base.state_id_jb"/>
<field name="district_id" ref="id_gov.ct_jb_71"/>
<field name="company_id" ref="base.main_company"/>
<field name="zip">90241</field>
<field name="type">wp</field>
<field name="phone">+62 812-345-678</field>
<field name="email">info@company.idexample.com</field>
<field name="website">www.idexample.com</field>
</record>
</data>
</odoo>
\ No newline at end of file
id,ppat_id:id,wp_id:id,seller_id:id,state,nop,tax_year,luas_bumi,luas_bng,njop_bumi,njop_bng,luas_bumi_bersama,luas_bng_bersama,njop_bumi_bersama,njop_bng_bersama,jenis_id:id,rate,min_omzet,disc_sk,npop,basic,fine,amount,disc_amount,owed,typ,company_id:id,certicate_no
sspd_01,bphtb_partner_ppat_kab_id,bphtb_partner_wp_kab_id,bphtb_partner_penjual_kab_id,draft,367601000100100010,2021,100,50,500000000,250000000,0,0,00,0,bphtb_01,5,60000000,,1000000000,0,0,0,0,0,sspd,base.main_company,-
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="pdl_partner_company_id" model="res.partner">
<field name="name">Kabupaten/Kota</field>
<field name="street">Jalan-jalan</field>
<field name="country_id" ref="base.id"/>
<field name="state_id" ref="base.state_id_jb"/>
<field name="district_id" ref="id_gov.ct_jb_71"/>
<field name="zip">90241</field>
<field name="phone">+62 812-345-678</field>
<field name="email">info@company.idexample.com</field>
<field name="website">www.idexample.com</field>
</record>
<record id="pdl_company_id" model="res.company">
<field name="name">Kabupaten/Kota Company</field>
<field name="partner_id" ref="pdl_partner_company_id"/>
</record>
</data>
<data>
<function model="res.users" name="write">
<value eval="[ref('base.user_root'), ref('base.user_admin'), ref('base.user_demo')]"/>
<value eval="{'company_ids': [(4, ref('pdl_kab.pdl_company_id'))]}"/>
</function>
</data>
</odoo>
\ No newline at end of file
from . import idg_letter
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<record model="ir.module.category" id="idg_letter">
<field name="name">E-Office Letter Management</field>
<field name="description">E-Office Letter Management</field>
<field name="sequence">11</field>
</record>
<record id="group_idg_letter_user" model="res.groups">
<field name="name">User</field>
<field name="category_id" ref="idg_letter"/>
</record>
<record id="group_idg_letter_admin" model="res.groups">
<field name="name">Administrator</field>
<field name="category_id" ref="idg_letter"/>
<field name="implied_ids" eval="[(4, ref('group_idg_letter_user'))]"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
</data>
</odoo>
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_idg_letter_category_user","access.idg.letter.category.user","model_idg_letter_category","base.group_user",1,0,0,0
"access_idg_letter_user","access.idg.letter.user","model_idg_letter","base.group_user",1,1,1,1
"access_idg_letter_routes_user","access.idg.letter.routes.user","model_idg_letter_routes","base.group_user",1,0,1,0
"access_idg_letter_comments_user","access.idg.letter.comments.user","model_idg_letter_routes","base.group_user",1,0,1,0
"access_idg_letter_docs_user","access.idg.letter.docs.user","model_idg_letter_comments","base.group_user",1,0,1,0
"access_idg_letter_comments_admin","access.idg.letter.comments.admin","model_idg_letter_comments","group_idg_letter_admin",1,1,1,1
"access_idg_letter_docs_admin","access.idg.letter.docs.admin","model_idg_letter_docs","group_idg_letter_admin",1,1,1,1
"access_idg_letter_category_admin","access.idg.letter.category.admin","model_idg_letter_category","group_idg_letter_admin",1,1,1,1
"access_idg_letter_category_user","access.idg.letter.category.user","model_idg_letter_category","group_idg_letter_user",1,1,1,1
"access_idg_letter_category_base","access.idg.letter.category.base","model_idg_letter_category","base.group_user",1,0,0,0
"access_idg_letter_category_approver_base","access.idg.letter.category.approver.base","model_idg_letter_category_approver","base.group_user",1,0,0,0
"access_idg_letter_category_approver_admin","access.idg.letter.category.approver.admin","model_idg_letter_category_approver","group_idg_letter_admin",1,1,1,1
"access_idg_letter_admin","access.idg.letter.admin","model_idg_letter","group_idg_letter_admin",1,1,1,1
"access_idg_letter_approver_admin","access.idg.letter.approver.admin","model_idg_letter_approver","group_idg_letter_admin",1,1,1,1
\ No newline at end of file
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_idg_letter_category","access.idg.letter.category","model_idg_letter_category","base.group_user",1,0,0,0
"access_idg_letter_category_approver","access.idg.letter.category.approver","model_idg_letter_category_approver","base.group_user",1,0,0,0
"access_idg_letter","access.idg.letter","model_idg_letter","base.group_user",1,1,1,1
"access_idg_letter.approver","access.idg.letter.approver","model_idg_letter_approver","base.group_user",1,1,1,1
"access_idg_letter_category_user","access.idg.letter.category.user","model_idg_letter_category","group_idg_letter_user",1,1,1,0
"access_idg_letter_category_approver_user","access.idg.letter.category.approver.user","model_idg_letter_category_approver","group_idg_letter_user",1,1,1,0
"access_idg_letter_category_admin","access.idg.letter.category.admin","model_idg_letter_category","group_idg_letter_admin",1,1,1,1
"access_idg_letter_category_approver_admin","access.idg.letter.category.approver.admin","model_idg_letter_category_approver","group_idg_letter_admin",1,1,1,1
<?xml version="1.0"?>
<odoo>
<data noupdate="0">
<record model="ir.rule" id="idg_letter_owner_rule">
<field name="name">IDG Letter Owner Rule</field>
<field name="model_id" ref="model_idg_letter"/>
<field name="groups" eval="[4,ref('base.group_user')]"/>
<field name="domain_force">[('create_uid', '=', user.id)]</field>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="idg_letter_owner_delete_rule">
<field name="name">IDG Letter Owner Delete Rule</field>
<field name="model_id" ref="model_idg_letter"/>
<field name="groups" eval="[4,ref('base.group_user')]"/>
<field name="domain_force">[('create_uid', '=', user.id), ('state','=','canceled')]</field>
<field name="perm_read" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_write" eval="False"/>
<field name="perm_unlink" eval="True"/>
</record>
<record model="ir.rule" id="idg_letter_write_rule">
<field name="name">IDG Letter Write Rule</field>
<field name="model_id" ref="model_idg_letter"/>
<field name="groups" eval="[4,ref('base.group_user')]"/>
<!-- <field name="domain_force">[('approvers.create_uid', '=', user.id), ('state','in',['draft','new'])]</field>-->
<field name="perm_read" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="idg_letter_approver_read_rule">
<field name="name">IDG Letter Approver Rule</field>
<field name="model_id" ref="model_idg_letter"/>
<field name="groups" eval="[4,ref('base.group_user')]"/>
<field name="domain_force">[('approver_ids.user_id.id', '=', user.id)]</field>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="False"/>
<field name="perm_write" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="idg_letter_approver_write_rule">
<field name="name">IDG Letter Approver Write Rule</field>
<field name="model_id" ref="model_idg_letter_approver"/>
<field name="groups" eval="[4,ref('base.group_user')]"/>
<field name="domain_force">[('required', '=', True)]</field>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="idg_letter_approver_delete_rule">
<field name="name">IDG Letter Approver Delete Rule</field>
<field name="model_id" ref="model_idg_letter_approver"/>
<field name="groups" eval="[4,ref('base.group_user')]"/>
<field name="domain_force">[('required', '=', False)]</field>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record model="ir.rule" id="idg_letter_admin_rule">
<field name="name">IDG Letter Admin Rule</field>
<field name="model_id" ref="model_idg_letter"/>
<field name="groups" eval="[4,ref('group_idg_letter_admin')]"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record model="ir.rule" id="idg_letter_category_admin_rule">
<field name="name">IDG Letter Category Admin Rule</field>
<field name="model_id" ref="model_idg_letter_category"/>
<field name="groups" eval="[4,ref('group_idg_letter_admin')]"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record model="ir.rule" id="idg_letter_category_user_rule">
<field name="name">IDG Letter Category User Rule</field>
<field name="model_id" ref="model_idg_letter_category"/>
<field name="groups" eval="[4,ref('group_idg_letter_user')]"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="idg_letter_category_rule">
<field name="name">IDG Letter Category Rule</field>
<field name="model_id" ref="model_idg_letter_category"/>
<field name="groups" eval="[4,ref('base.group_user')]"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="False"/>
<field name="perm_write" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="idg_letter_category_approver_admin_rule">
<field name="name">IDG Letter Category Approver Admin Rule</field>
<field name="model_id" ref="model_idg_letter_category_approver"/>
<field name="groups" eval="[4,ref('group_idg_letter_admin')]"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record model="ir.rule" id="idg_letter_category_approver_user_rule">
<field name="name">IDG Letter Category Approver User Rule</field>
<field name="model_id" ref="model_idg_letter_category_approver"/>
<field name="groups" eval="[4,ref('group_idg_letter_user')]"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
<record model="ir.rule" id="idg_letter_category_approver_rule">
<field name="name">IDG Letter Category Approves Rule</field>
<field name="model_id" ref="model_idg_letter_category_approver"/>
<field name="groups" eval="[4,ref('base.group_user')]"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="False"/>
<field name="perm_write" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
</data>
</odoo>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="idg_letter_category_tree" model="ir.ui.view">
<field name="name">idg.letter.category.tree</field>
<field name="model">idg.letter.category</field>
<field name="arch" type="xml">
<tree string="Category" sample="1" create="1" delete="1" multi_edit="0">
<field name="name" string="Nama"/>
</tree>
</field>
</record>
<record id="idg_letter_category_form" model="ir.ui.view">
<field name="name">idg.letter.category.form</field>
<field name="model">idg.letter.category</field>
<field name="arch" type="xml">
<form string="Category" sample="1">
<sheet>
<h1>
<field name="name" string="Name"/>
</h1>
<notebook>
<page string="Default Outgoing Message Approval" id="idg_letter_category_approver_page">
<field name="approver_ids"
mode="tree,kanban">
<tree editable="bottom" string="Outgoing Message">
<control>
<create name="add_line_control" string="Add a line"/>
</control>
<field name="user_id"/>
<field name="required"/>
<!-- <field name="name"/>-->
<!-- <field name="phone"/>-->
<!-- <field name="email"/>-->
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="idg_letter_category_action" model="ir.actions.act_window">
<field name="name">Category</field>
<field name="res_model">idg.letter.category</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_id" ref="idg_letter_category_tree"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Category
</p>
</field>
</record>
<menuitem id="idg_letter_category_menu"
name="Letter Category"
parent="eoffice_config_menu"
action="idg_letter_category_action"
sequence="4"/>
</data>
</odoo>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Top menu item -->
<menuitem id="eoffice_menu_root"
name="E-Office"
web_icon="idg_eoffice,static/description/icon.png"
active="True"
sequence="2"/>
<!-- Transaksi-->
<menuitem id="idg_letter_menu"
name="Letter"
parent="eoffice_menu_root"
sequence="1"/>
<!-- Konfigurasi-->
<menuitem id="eoffice_config_menu"
name="Configuration"
parent="eoffice_menu_root"
sequence="7"/>
<menuitem id="idg_letter_departemen_menu"
name="Departemen"
parent="eoffice_config_menu"
action="hr.hr_department_tree_action"
sequence="1"/>
<menuitem id="idg_letter_employee_menu"
name="Employee"
parent="eoffice_config_menu"
action="hr.open_view_employee_list_my"
sequence="2"/>
</odoo>
<odoo>
<data>
<record id="partner_form_id_bphtb" model="ir.ui.view">
<field name="name">partner.form.id.bphtb.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="id_gov.partner_form_id"/>
<field name="groups_id" eval="[(6, 0, [ref('idg_bphtb.group_bphtb_ppat') ])]"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='type']" position="attributes">
<attribute name="invisible">True</attribute>
</xpath>
<xpath expr="//field[@name='category_id']" position="replace"/>
<xpath expr="//field[@name='function']" position="replace"/>
<xpath expr="//field[@name='title']" position="replace"/>
<xpath expr="//page[@name='sales_purchases']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
</field>
</record>
<record id="action_ppat_config_idg_bphtb" model="ir.actions.act_window">
<field name="name">PPAT</field>
<field name="res_model">res.partner</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('type','=','ppat')]</field>
<field name="context">{
'default_is_company': True,
'default_type': 'ppat'}
</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Partner
</p>
</field>
</record>
<record id="action_wp_config_idg_bphtb" model="ir.actions.act_window">
<field name="name">Wajib Pajak</field>
<field name="res_model">res.partner</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('type','=','wp')]</field>
<field name="context">{
'default_is_company': True,
'default_type': 'wp',
'show_type': 0}
</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Partner
</p>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<menuitem id="base.menu_administration" name="Settings"
web_icon="idg_theme,static/src/img/icons/settinga.png"/>
<menuitem id="base.menu_management" name="Apps" web_icon="idg_theme,static/src/img/icons/apps.png"/>
<menuitem id="mail.menu_root_discuss" name="Discuss"
web_icon="idg_theme,static/src/img/icons/discuss.png"/>
</data>
</odoo>
\ No newline at end of file
<odoo>
<data>
</data>
</odoo>
# -*- coding: utf-8 -*-
from .hooks import test_pre_init_hook, test_post_init_hook
# from . import wizard
# -*- coding: utf-8 -*-
{
"name": "IDG Backend Theme V14",
"description": """Odoo V14 backend theme for Indonesia Government""",
"summary": "Odoo V14 backend theme for Indonesia Government",
"category": "Themes/Backend",
"version": "1.0",
'author': 'bregananta',
'company': 'bregananta',
'maintainer': 'bregananta',
'website': "https://www.bregananta.id",
"depends": ['base', 'web', 'mail', 'web_responsive'],
'images': [],
"data": [
# 'security/ir.model.access.csv',
'views/assets.xml',
'views/icons.xml',
'views/layout.xml',
# 'views/theme.xml',
# 'data/theme_data.xml',
],
"qweb": [
'static/src/xml/sidebar.xml',
'static/src/xml/styles.xml',
'static/src/xml/top_bar.xml',
# 'static/src/xml/systray.xml',
],
'installable': True,
'application': False,
'auto_install': False,
}
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="theme_data_stored" model="theme.data.stored">
<field name="name">default</field>
</record>
</data>
</odoo>
# -*- coding: utf-8 -*-
import base64
from odoo import api, SUPERUSER_ID
from odoo.modules import get_module_resource
def test_pre_init_hook(cr):
"""pre init hook"""
env = api.Environment(cr, SUPERUSER_ID, {})
menu_item = env['ir.ui.menu'].search([('parent_id', '=', False)])
for menu in menu_item:
if menu.name == 'PDL Kab/Kota':
img_path = get_module_resource(
'idg_theme', 'static', 'src', 'img', 'icons', 'idg_pdl.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'BPHTB':
img_path = get_module_resource(
'idg_theme', 'static', 'src', 'img', 'icons', 'idg_bphtb.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
def test_post_init_hook(cr, registry):
"""post init hook"""
env = api.Environment(cr, SUPERUSER_ID, {})
menu_item = env['ir.ui.menu'].search([('parent_id', '=', False)])
for menu in menu_item:
if menu.name == 'PDL Kab/Kota':
img_path = get_module_resource(
'idg_theme', 'static', 'src', 'img', 'icons',
'idg_pdl.png')
menu.write({'web_icon_data': base64.b64encode(
open(img_path, "rb").read())})
if menu.name == 'BPHTB':
img_path = get_module_resource(
'idg_theme', 'static', 'src', 'img', 'icons',
'idg_bphtb.png')
menu.write({'web_icon_data': base64.b64encode(
open(img_path, "rb").read())})
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_theme_data,access.theme.data,model_theme_data,,1,1,1,1
<!-- HERO SECTION -->
<div class="contianer">
<div class="row position-relative"
style="background-color: #2f3542 !important; height: 400px; margin-bottom: 6rem; border-radius: 1rem !important;">
<div class="col-lg-12 d-flex flex-column justify-content-start align-items-center">
<h1 class="display-1 text-white" style="padding-top: 5rem;">SDN Theme</h1>
<p class="text-light small font-weight-bold" style="letter-spacing: 2px; text-transform: uppercase;">Backend Theme for
Odoo 14</p>
</div>
</div>
</div>
<!-- END OF HERO SECTION -->
\ 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!