Commit c82770b1 by aa.gusti

portal dashboard

1 parent 2a796392
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details. # Part of Odoo. See LICENSE file for full copyright and licensing details.
{ {
'name': 'Indonesia Goverment Dashboard', 'name': 'IDG Dashboard',
'version': '0.1', 'version': '0.1',
'summary': 'Indonesia Goverment Dashboard', 'summary': 'Indonesia Goverment Dashboard',
'sequence': 10, 'sequence': 10,
...@@ -11,7 +11,7 @@ RI Goverment Dashboard ...@@ -11,7 +11,7 @@ RI Goverment Dashboard
'category': 'Indonesia Goverment', 'category': 'Indonesia Goverment',
'website': 'https://opensipkd.com', 'website': 'https://opensipkd.com',
'images': [], 'images': [],
'depends': ['id_gov', 'idg_account', 'portal', 'board'], 'depends': ['id_gov', 'idg_account', 'portal', 'board', 'website'],
'data': [ 'data': [
# 'security/account_security.xml', # 'security/account_security.xml',
'security/ir.model.access.csv', 'security/ir.model.access.csv',
...@@ -23,7 +23,8 @@ RI Goverment Dashboard ...@@ -23,7 +23,8 @@ RI Goverment Dashboard
'views/region_tax_actual.xml', 'views/region_tax_actual.xml',
'views/region_tax_actual_sum.xml', 'views/region_tax_actual_sum.xml',
'views/menus.xml', 'views/menus.xml',
# 'views/portal_templates.xml', 'data/portal.xml',
'views/portal_templates.xml',
"demo/idg.region.tax.potency.csv", "demo/idg.region.tax.potency.csv",
"demo/idg.region.tax.plan.csv", "demo/idg.region.tax.plan.csv",
"demo/idg.region.tax.actual.csv", "demo/idg.region.tax.actual.csv",
......
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
from odoo import http
from odoo.addons.portal.controllers.portal import (
pager as portal_pager)
from odoo.addons.website.controllers.main import Website
from odoo.http import request
STATE = ['draft', 'confirmed', 'canceled']
_logger = logging.getLogger(__name__)
class IdgBoardWebsite(Website):
_items_per_page = 20
# 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)
def _prepare_portal_layout_values(self):
"""Values for /my/* templates rendering.
Does not include the record counts.
"""
# get customer sales rep
sales_user = False
partner = request.env.user.partner_id
if partner.user_id and not partner.user_id._is_public():
sales_user = partner.user_id
return {
'sales_user': sales_user,
'page_name': 'home',
}
def _prepare_home_portal_values(self, counters):
"""Values for /my & /my/home routes template rendering.
Includes the record count for the displayed badges.
where 'coutners' is the list of the displayed badges
and so the list to compute.
"""
return {}
@http.route(['/idg/board', '/idg/board/page/<int:page>'], type='http', auth="public")
def index(self, page=1, filterby=None, **kw):
# , date_begin=None, date_end=None, sortby=None, filterby=None, **kw):
values = self._prepare_portal_layout_values()
domain = [('level', '=', 6)]
# domain = []
searchbar_sortings = {}
# if not sortby:
# sortby = 'code_prefix_start'
# sortby = 'id'
# order = searchbar_sortings[sortby]['order']
IdgTaxSum = request.env['idg.region.tax.potency.sum'].sudo()
tax_count = IdgTaxSum.search_count(domain)
if not filterby:
filterby = 'all'
pager = portal_pager(
url="/idg/board",
url_args={
# 'sortby': sortby,
'filterby': filterby
},
total=tax_count,
page=page,
step=self._items_per_page
)
taxs = IdgTaxSum.search(
domain,
# order=order,
limit=self._items_per_page,
offset=pager['offset']
)
values.update({
'taxs': taxs,
'page_name': 'idgtax',
'pager': pager,
# 'searchbar_sortings': searchbar_sortings,
# 'sortby': sortby,
# 'searchbar_filters': OrderedDict(sorted(searchbar_filters.items())),
'filterby': filterby,
'default_url': '/idg/board',
})
return request.render("idg_board.portal_idg_boards", values)
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<record id="menu_idg_board" model="website.menu">
<field name="name">Dashboard</field>
<field name="url">/idg/board</field>
<field name="parent_id" ref="website.main_menu"/>
<field name="sequence" type="int">20</field>
</record>
<record id="action_open_idg_board" model="ir.actions.act_url">
<field name="name">IDG Dashboard</field>
<field name="target">self</field>
<field name="url">/idg/board</field>
</record>
<!-- <record id="base.open_menu" model="ir.actions.todo">-->
<!-- <field name="action_id" ref="action_open_idg_board"/>-->
<!-- <field name="state">open</field>-->
<!-- </record>-->
</data>
</odoo>
\ No newline at end of file \ No newline at end of file
...@@ -13,6 +13,7 @@ _logger = logging.getLogger(__name__) ...@@ -13,6 +13,7 @@ _logger = logging.getLogger(__name__)
class IdgRegionTaxPlan(models.Model): class IdgRegionTaxPlan(models.Model):
_name = 'idg.region.tax.actual' _name = 'idg.region.tax.actual'
_inherit = 'portal.mixin'
_description = 'Region Tax Actual' _description = 'Region Tax Actual'
country_id = fields.Many2one('res.country', required=True) country_id = fields.Many2one('res.country', required=True)
state_id = fields.Many2one('res.country.state', required=True, state_id = fields.Many2one('res.country.state', required=True,
...@@ -105,6 +106,7 @@ class IdgRegionTaxPlan(models.Model): ...@@ -105,6 +106,7 @@ class IdgRegionTaxPlan(models.Model):
class IdgRegionTaxPlanSum(models.Model): class IdgRegionTaxPlanSum(models.Model):
_name = 'idg.region.tax.actual.sum' _name = 'idg.region.tax.actual.sum'
_inherit = 'portal.mixin'
_description = 'Region Tax Actual' _description = 'Region Tax Actual'
country_id = fields.Many2one('res.country', required=True) country_id = fields.Many2one('res.country', required=True)
state_id = fields.Many2one('res.country.state', required=True, state_id = fields.Many2one('res.country.state', required=True,
......
...@@ -8,6 +8,7 @@ _logger = logging.getLogger(__name__) ...@@ -8,6 +8,7 @@ _logger = logging.getLogger(__name__)
class IdgRegionTaxPlan(models.Model): class IdgRegionTaxPlan(models.Model):
_name = 'idg.region.tax.plan' _name = 'idg.region.tax.plan'
_inherit = 'portal.mixin'
_description = 'Region Tax Planning' _description = 'Region Tax Planning'
country_id = fields.Many2one('res.country', required=True) country_id = fields.Many2one('res.country', required=True)
state_id = fields.Many2one('res.country.state', required=True, state_id = fields.Many2one('res.country.state', required=True,
...@@ -86,6 +87,7 @@ class IdgRegionTaxPlan(models.Model): ...@@ -86,6 +87,7 @@ class IdgRegionTaxPlan(models.Model):
class IdgRegionTaxPlanSum(models.Model): class IdgRegionTaxPlanSum(models.Model):
_name = 'idg.region.tax.plan.sum' _name = 'idg.region.tax.plan.sum'
_inherit = 'portal.mixin'
_description = 'Summary Region Tax Planning' _description = 'Summary Region Tax Planning'
country_id = fields.Many2one('res.country', required=True) country_id = fields.Many2one('res.country', required=True)
state_id = fields.Many2one('res.country.state', required=True, state_id = fields.Many2one('res.country.state', required=True,
......
...@@ -13,6 +13,7 @@ _logger = logging.getLogger(__name__) ...@@ -13,6 +13,7 @@ _logger = logging.getLogger(__name__)
class IdgRegionTaxPotency(models.Model): class IdgRegionTaxPotency(models.Model):
_name = 'idg.region.tax.potency' _name = 'idg.region.tax.potency'
_inherit = 'portal.mixin'
_description = 'Region Tax Potency' _description = 'Region Tax Potency'
country_id = fields.Many2one('res.country', required=True, country_id = fields.Many2one('res.country', required=True,
default=lambda self: self.env.company.country_id.id default=lambda self: self.env.company.country_id.id
...@@ -90,6 +91,7 @@ class IdgRegionTaxPotency(models.Model): ...@@ -90,6 +91,7 @@ class IdgRegionTaxPotency(models.Model):
class IdgRegionTaxPotencySum(models.Model): class IdgRegionTaxPotencySum(models.Model):
_name = 'idg.region.tax.potency.sum' _name = 'idg.region.tax.potency.sum'
_inherit = 'portal.mixin'
_description = 'Region Tax Potency Summary' _description = 'Region Tax Potency Summary'
country_id = fields.Many2one('res.country', required=True) country_id = fields.Many2one('res.country', required=True)
state_id = fields.Many2one('res.country.state', required=True, state_id = fields.Many2one('res.country.state', required=True,
......
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" "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_potency_admin","access.idg.region.tax.potency.admin","model_idg_region_tax_potency","base.group_system",1,1,1,1
"access_idg_region_tax_potency_sum_admin","access.idg.region.tax.potency.sum.admin","model_idg_region_tax_potency_sum","base.group_system",1,1,1,1 "access_idg_region_tax_potency_sum_admin","access.idg.region.tax.potency.sum.admin","model_idg_region_tax_potency_sum","base.group_system",1,1,1,1
"access_idg_region_tax_potency_sum_public","access.idg.region.tax.potency.sum.public","model_idg_region_tax_potency_sum","base.group_public",1,0,0,0
"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_plan_admin","access.idg.region.tax.plan.admin","model_idg_region_tax_plan","base.group_system",1,1,1,1
"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_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_admin","access.idg.region.tax.actual.admin","model_idg_region_tax_actual","base.group_system",1,1,1,1
......
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="portal_idg_boards">
<t t-call="website.layout">
<t t-set="title">IDG Tax Dashboard</t>
<h2>IDG Region Tax Dashboard #</h2>
<t t-call="portal.portal_table">
<thead>
<tr class="active">
<th class="text-left">Tax Category</th>
<th class="text-right">Qty</th>
<th class="text-right">Amount</th>
</tr>
</thead>
<tbody>
<t t-foreach="taxs" t-as="tax">
<tr>
<td>
<a t-att-href="tax.get_portal_url()">
<t t-esc="tax.account_group_id.name"/>
</a>
</td>
<td class="text-right">
<span t-field="tax.qty"/>
</td>
<td class="text-right">
<span t-field="tax.amount"/>
</td>
</tr>
</t>
</tbody>
</t>
</t>
</template>
</data>
</openerp>
\ No newline at end of file \ No newline at end of file
...@@ -14,7 +14,8 @@ ...@@ -14,7 +14,8 @@
</xpath> </xpath>
</template> </template>
<template id="portal_my_home_bphtb" name="Show Bphtb Transaction" customize_show="True" <template id="portal_my_home_bphtb" name="Show Bphtb Transaction"
customize_show="True"
inherit_id="portal.portal_my_home" priority="25"> inherit_id="portal.portal_my_home" priority="25">
<xpath expr="//div[hasclass('o_portal_docs')]" position="inside"> <xpath expr="//div[hasclass('o_portal_docs')]" position="inside">
<t t-call="portal.portal_docs_entry"> <t t-call="portal.portal_docs_entry">
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!