Skip to content

Commit

Permalink
G2P-1004 Enabling the custom form mapping in SSP
Browse files Browse the repository at this point in the history
  • Loading branch information
mkumar-02 committed Jul 26, 2023
1 parent b4e6e84 commit 4458af2
Show file tree
Hide file tree
Showing 8 changed files with 103 additions and 213 deletions.
6 changes: 5 additions & 1 deletion g2p_service_provider_portal/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@
"g2p_program_reimbursement",
],
"data": [
"data/g2p_service_provider_form_action_data.xml",
"views/auth_oauth_provider.xml",
"views/g2p_service_provider_aboutus.xml",
"views/g2p_service_provider_base.xml",
"views/g2p_service_provider_contactus.xml",
"views/g2p_service_provider_form_page.xml",
"views/g2p_service_provider_form_template.xml",
"views/g2p_service_provider_form_submitted.xml",
"views/g2p_service_provider_login.xml",
"views/g2p_service_provider_myprofile.xml",
Expand All @@ -29,6 +30,9 @@
"web.assets_qweb": [],
"web.assets_frontend": [],
"web.assets_common": [],
"website.assets_editor": [
"g2p_service_provider_portal/static/src/js/reim_form_editor.js",
],
},
"demo": [],
"images": [],
Expand Down
37 changes: 26 additions & 11 deletions g2p_service_provider_portal/controllers/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import logging
from argparse import _AppendAction

from werkzeug.datastructures import FileStorage
from werkzeug.exceptions import Forbidden, Unauthorized

from odoo import _, http
Expand Down Expand Up @@ -159,8 +160,12 @@ def portal_new_submission(self, _id, **kwargs):
if len(entitlement.reimbursement_entitlement_ids) > 0:
return request.redirect(f"/serviceprovider/claim/{_id}")

view = (
entitlement.program_id.reimbursement_program_id.self_service_portal_form.view_id
)

return request.render(
"g2p_service_provider_portal.reimbursement_submission_form",
view.id,
{
"entitlement_id": _id,
"current_partner_name": current_partner.given_name.capitalize()
Expand Down Expand Up @@ -218,16 +223,18 @@ def portal_claim_submission(self, _id, **kwargs):
)

# TODO: remove all hardcoding in the next lines
received_code = form_data.get("voucher_code", None)
actual_amount = form_data.get("actual_amount", None)
supporting_documents = request.httprequest.files.getlist(
"statement_of_account"
)
supporting_document_files = SelfServiceController.add_file_to_store(
supporting_documents,
received_code = form_data.get("code", None)
actual_amount = form_data.get("initial_amount", None)

document_details = {}
for key in kwargs:
if isinstance(kwargs[key], FileStorage):
document_details[key] = request.httprequest.files.getlist(key)

supporting_document_files = self.process_documents(
document_details,
supporting_documents_store,
program_membership=current_partner_membership,
tags="Statement of Account",
membership=current_partner_membership,
)
if not supporting_document_files:
_logger.warning(
Expand All @@ -251,7 +258,7 @@ def portal_claim_submission(self, _id, **kwargs):
else None,
amount=actual_amount,
)
# TODO: Check voucher code validation

if reimbursement_claim == (2, None):
_logger.error("Not a valid Voucher Code")
return request.redirect(f"/serviceprovider/voucher/{_id}")
Expand Down Expand Up @@ -333,3 +340,11 @@ def get_voucher_codes(self):
)

return json.dumps(voucher_details)

def process_documents(self, documents, store, membership):
all_file_details = []
for tag, document in documents.items():
all_file_details += SelfServiceController.add_file_to_store(
document, store, program_membership=membership, tags=tag
)
return all_file_details
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="g2p_programs.model_g2p_entitlement" model="ir.model">
<field name="website_form_key">apply_for_reimbursement</field>
<field name="website_form_access">True</field>
<field name="website_form_label">Apply For Reimbursement</field>
</record>

<function model="ir.model.fields" name="formbuilder_whitelist">
<value>g2p.entitlement</value>
<value eval="[
'code',
'initial_amount',
]" />
</function>
</odoo>
7 changes: 4 additions & 3 deletions g2p_service_provider_portal/models/programs.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.

from odoo import fields, models
from odoo import api, fields, models


class G2PReimbursementProgram(models.Model):
_inherit = "g2p.program"

file_size_spp = fields.Float()

@api.constrains("self_service_portal_form")
def update_form_template(self):
if self.is_reimbursement_program:
form_view = self.self_service_portal_form.view_id
Expand All @@ -16,10 +17,10 @@ def update_form_template(self):
{
"arch_db": form_view_template.replace(
"website.layout",
"g2p_service_provider_portal.reimbursement_submission_form_template",
"g2p_service_provider_portal.reimbursement_form_template_view",
).replace(
"g2p_self_service_portal.self_service_form_template",
"g2p_service_provider_portal.reimbursement_submission_form_template",
"g2p_service_provider_portal.reimbursement_form_template_view",
)
}
)
Expand Down
36 changes: 21 additions & 15 deletions g2p_service_provider_portal/static/src/js/form_action.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ fetch("/get_voucher_codes")

// eslint-disable-next-line no-unused-vars,complexity
function reimbursementFormSubmitAction() {
var form = $("#reimbursement-form");
var voucherInputField = $("#voucher_code");
var formContainer = $(".s_website_form");
var programForm = formContainer.find("form");
var voucherInputField = $("[name='code']");
var isValid = true;
var isValidVoucher = false;
var program_id = $("#program_submit_id");
var fileUploadSize = program_id[0].getAttribute("file-size");
var beneficiayName = program_id[0].getAttribute("beneficiary");

form[0].action = `/serviceprovider/submit/${program_id[0].getAttribute("program")}`;
programForm[0].action = `/serviceprovider/submit/${program_id[0].getAttribute("program")}`;

var modal = $("#SubmitModal");
var requiredFields = $(".s_website_form_required");
Expand All @@ -34,32 +34,38 @@ function reimbursementFormSubmitAction() {
isValid = false;
modal[0].click(close);
// eslint-disable-next-line no-undef
showToast("Please update all mandatory fields");
showToast("Please update all mandatory fields.");
inputFields[i].style.borderColor = "#DE514C";
} else {
for (let j = 0; j < voucherDetails.length; j++) {
if (
voucherInputField[0] &&
voucherDetails[j].beneficiary_name === beneficiayName &&
voucherDetails[j].code === voucherInputField[0].value
) {
isValidVoucher = true;
isValid = true;
} else if (voucherInputField[0]) {
isValid = false;
modal[0].click(close);
// eslint-disable-next-line no-undef
showToast("Please enter a valid voucher code.");
voucherInputField[0].style.borderColor = "#DE514C";
} else {
isValid = false;
modal[0].click(close);
// eslint-disable-next-line no-undef
showToast(
"Voucher code or Actual Amount fields are not correctly mapped. Please re-check your form or Contact your Administrator."
);
}
}
}
}

if (!isValidVoucher) {
isValid = false;
modal[0].click(close);
// eslint-disable-next-line no-undef
showToast("Please enter a valid voucher code");
voucherInputField[0].style.borderColor = "#DE514C";
}

if (isValid) {
// eslint-disable-next-line no-undef
if (isFileAllowed(fileUploadSize)) {
form.submit();
programForm.submit();
} else {
modal[0].click(close);
}
Expand Down
62 changes: 0 additions & 62 deletions g2p_service_provider_portal/static/src/js/multiple_file_upload.js

This file was deleted.

26 changes: 26 additions & 0 deletions g2p_service_provider_portal/static/src/js/reim_form_editor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
odoo.define("g2p_service_provider_portal.reim_form_editor", function (require) {
var FormEditorRegistry = require("website.form_editor_registry");

FormEditorRegistry.add("apply_for_reimbursement", {
formFields: [
{
type: "char",
custom: false,
required: true,
placeholder: "Enter Voucher Code",
fillWith: "code",
name: "code",
string: "Voucher Code",
},
{
type: "float",
custom: false,
required: true,
placeholder: "Enter Amount",
fillWith: "initial_amount",
name: "initial_amount",
string: "Actual Amount",
},
],
});
});
Loading

0 comments on commit 4458af2

Please sign in to comment.