Skip to content

Commit

Permalink
Merge pull request #429 from OpenSPP/inkind-entitlement-multi-approve
Browse files Browse the repository at this point in the history
added multi approve feature for in-kind entitlement
  • Loading branch information
gonzalesedwin1123 committed May 28, 2024
2 parents e995d68 + 32f93f9 commit 8ff2d71
Show file tree
Hide file tree
Showing 6 changed files with 161 additions and 0 deletions.
1 change: 1 addition & 0 deletions spp_programs/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"views/managers/entitlement_manager_view.xml",
"wizard/inkind_entitlement_report_wiz.xml",
"wizard/create_program_wizard.xml",
"wizard/multi_inkind_entitlement_approval_wizard.xml",
"report/program_approval_receipt.xml",
"report/report_format.xml",
],
Expand Down
2 changes: 2 additions & 0 deletions spp_programs/security/ir.model.access.csv
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ spp_programs_stock_location_admin,SPP Entitlement Stock Location Admin Access,st
spp_programs_stock_route_admin,SPP Entitlement Stock Location Route Admin Access,stock.model_stock_route,g2p_registry_base.group_g2p_admin,1,1,1,1
spp_programs_stock_move_admin,SPP Entitlement Stock Move Admin Access,stock.model_stock_move,g2p_registry_base.group_g2p_admin,1,1,1,1
spp_programs_stock_rule_admin,SPP Entitlement Stock Rule Admin Access,stock.model_stock_rule,g2p_registry_base.group_g2p_admin,1,1,1,1
spp_multi_inkind_entitlement_approval_wizard_admin_access,Multi Inkind Entitlement Approval Wizard Admin Access,spp_programs.model_spp_multi_inkind_entitlement_approval_wizard,g2p_registry_base.group_g2p_admin,1,1,1,1
spp_multi_inkind_entitlement_approval_admin_access,Multi Inkind Entitlement Approval Admin Access,spp_programs.model_spp_multi_inkind_entitlement_approval,g2p_registry_base.group_g2p_admin,1,1,1,1

spp_programs_entitlement_inkind_registrar,SPP Entitlement In-Kind Registrar Access,spp_programs.model_g2p_entitlement_inkind,g2p_registry_base.group_g2p_registrar,1,1,1,1
g2p_entitlement_inkind_report_wizard_registrar,SPP Entitlement In-Kind Report Wizard Registrar Access,spp_programs.model_g2p_entitlement_inkind_report_wizard,g2p_registry_base.group_g2p_registrar,1,1,1,1
Expand Down
9 changes: 9 additions & 0 deletions spp_programs/views/entitlement_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,15 @@ Part of OpenSPP. See LICENSE file for full copyright and licensing details.
<field name="act_window_id" ref="action_entitlement_inkind" />
</record>

<record model="ir.actions.server" id="multiple_inkind_entitlement_approval">
<field name="name">Approve</field>
<field name="model_id" ref="spp_programs.model_spp_multi_inkind_entitlement_approval_wizard" />
<field name="binding_model_id" ref="spp_programs.model_g2p_entitlement_inkind" />
<field name="binding_view_types">list,form</field>
<field name="state">code</field>
<field name="code">action = model.open_wizard()</field>
</record>

<menuitem
id="menu_entitlement_inkind"
name="Entitlements"
Expand Down
1 change: 1 addition & 0 deletions spp_programs/wizard/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@

from . import inkind_entitlement_report_wiz
from . import create_program_wizard
from . import multi_inkind_entitlement_approval_wizard
98 changes: 98 additions & 0 deletions spp_programs/wizard/multi_inkind_entitlement_approval_wizard.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
from odoo import api, fields, models


class MultiInKindEntitlementApprovalWiz(models.TransientModel):
_name = "spp.multi.inkind.entitlement.approval.wizard"
_description = "Multi In-Kind Entitlement Approval Wizard"

@api.model
def default_get(self, fields):
res = super().default_get(fields)
if self.env.context.get("active_ids"):
entitlement_ids = []
for rec in self.env.context.get("active_ids"):
entitlement = self.env["g2p.entitlement.inkind"].search(
[
("id", "=", rec),
]
)
if entitlement.state in ("draft", "pending_validation"):
entitlement_ids.append([0, 0, {"entitlement_id": rec}])
res["entitlement_ids"] = entitlement_ids

return res

entitlement_ids = fields.One2many(
"spp.multi.inkind.entitlement.approval",
"wizard_id",
string="Entitlements",
required=True,
)

def approve_entitlements(self):
if self.entitlement_ids:
self.entitlement_ids.entitlement_id.approve_entitlement()

def open_wizard(self):
return {
"name": "Multiple Inkind Entitlements Approval",
"view_mode": "form",
"res_model": "spp.multi.inkind.entitlement.approval.wizard",
"view_id": self.env.ref("spp_programs.multi_inkind_entitlement_approval_wizard_form_view").id,
"type": "ir.actions.act_window",
"target": "new",
"nodestroy": True,
"context": self.env.context,
}

def close_wizard(self):
return {"type": "ir.actions.act_window_close"}


class MultiInKindEntitlementApproval(models.TransientModel):
_name = "spp.multi.inkind.entitlement.approval"
_description = "In-Kind Entitlement Approval"

entitlement_id = fields.Many2one(
"g2p.entitlement.inkind",
"In-kind Entitlement",
required=True,
)

wizard_id = fields.Many2one(
"spp.multi.inkind.entitlement.approval.wizard",
"Multi In-kind Entitlement Approval Wizard",
required=True,
)

partner_id = fields.Many2one(
"res.partner",
"Registrant",
related="entitlement_id.partner_id",
)
code = fields.Char(related="entitlement_id.code")

product_id = fields.Many2one(
"product.product",
"Product",
related="entitlement_id.product_id",
)

qty = fields.Integer("QTY", related="entitlement_id.qty")
currency_id = fields.Many2one("res.currency", related="entitlement_id.currency_id")
unit_price = fields.Monetary(string="Value/Unit", currency_field="currency_id", related="entitlement_id.unit_price")
total_amount = fields.Monetary(
string="Total Value", currency_field="currency_id", related="entitlement_id.total_amount"
)

state = fields.Selection(
[
("New", "New"),
("Okay", "Okay"),
("Conflict", "Conflict"),
("Approved", "Approved"),
],
"Status",
readonly=True,
default="New",
)
50 changes: 50 additions & 0 deletions spp_programs/wizard/multi_inkind_entitlement_approval_wizard.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="multi_inkind_entitlement_approval_wizard_form_view" model="ir.ui.view">
<field name="name">multi_inkind_entitlement_approval_wizard_form_view</field>
<field name="model">spp.multi.inkind.entitlement.approval.wizard</field>
<field name="arch" type="xml">
<form>
<sheet>
<field name="entitlement_ids" nolabel="1" colspan="2">
<tree create="0" editable="bottom">
<field name="entitlement_id" invisible="1" />
<field name="partner_id" readonly="1" />
<field name="code" readonly="1" />
<field name="product_id" />
<field name="qty" />
<field name="unit_price" />
<field name="total_amount" />
<field name="currency_id" invisible="1" />
<field
name="state"
decoration-secondary="state=='New'"
decoration-primary="state=='Okay'"
decoration-success="state=='Approved'"
decoration-danger="state=='Conflict'"
widget="badge"
readonly="1"
/>
</tree>
</field>
</sheet>
<footer>
<button
name="approve_entitlements"
string="Approve"
type="object"
class="oe_highlight"
title="Approve entitlement"
/>
<button
name="close_wizard"
string="Cancel"
type="object"
class="btn-secondary"
title="Cancel"
/>
</footer>
</form>
</field>
</record>
</odoo>

0 comments on commit 8ff2d71

Please sign in to comment.