Files
matrix/cygnus-onprem-app/build/WebContent/js/edp/punching/initiation.js

480 lines
15 KiB
JavaScript

/*
* Case Initiation page behaviour.
*
* This file owns record loading/navigation, verification-section state,
* address copying and duplicate-address lookup. The encrypted JSON save
* workflow is intentionally isolated in application-save.js.
*/
var records=[];
var recIndx = 0;
var recpos = 0;
var SameAddr=[];
var AddrElem=[
["rv","raddr1","raddr2","raddr3","rlandmark","Rcolony","colr","rcity","rpincode","rphone"],
["ov","companyname","oaddr1","oaddr2","oaddr3","olandmark","Ocolony","colo","ocity","opincode","ophone","extension"],
["pv","paddr1","paddr2","paddr3","plandmark","Pcolony","colp","pcity","ppincode"],
["bankcode","bankcode","bank_branch_id","product","loanamount","apptype","contactperson","specialinst"]
];
var selectedAddr=-1;
var FocusAfter="customername";
var CHECKBOX_FIELDS=new Set(["rv","sradd","rtv","ov","soadd","otv","rco","pv","rcp","ocp","spadd","refv","docv"]);
var DUPLICATE_OPERATION={R:19,O:20,P:21,A:22};
var PUNCHED_RECORDS_URL="punchedrecs";
function InitPage()
{
var portField = document.getElementById("portfolio_id");
var initialPortField = document.getElementById("initial-portfolio-id");
var visibleContentsField = document.getElementById("visiblecontents");
var port = initialPortField ? initialPortField.value : (portField ? portField.value : "-1");
var viscontents = visibleContentsField ? visibleContentsField.value : "";
if (viscontents && viscontents.slice(-ColDelim.length) !== ColDelim) {
viscontents += ColDelim;
}
centerDivBoth("formcontainer","H");
HideSections('rtv');
HideSections('otv');
HideSections('section');
UnhideSections(viscontents,ColDelim);
if (portField) {
$(portField).val(port);
}
if(port>0)
{
if(document.getElementById("ajaxmsg") !== null)
{
CygnusNotifications.show({type:"warning",code:"1001AJX",message:"Another operation is being processed, please wait.",duration:3000});
return;
}
LoadingMsg("Fetching records, please wait...","ajaxmsg");
loadPunchedRecords(port,$("#uuid").val());
}
}
function GotoRecord(el,searchtype)
{
var recno=el.value;
if(recno!='')
{
if(searchtype == 'recno')
{
if(recno > recIndx || recno <=0)
{
CygnusNotifications.show({type:"danger",code:"1001IRNG",message:"Invalid input. Out of range",duration:3000});
}
else
{
recpos=recno-1;
FillDetails(recpos);
}
}
else
{
for(var index = 0; index < records.length; index++ )
{
if( records[index].applno === recno ) {
recpos = index;
FillDetails(recpos);
break;
}
}
}
}
}
function AddNewRecord()
{
if(recIndx==0 || String(records[recIndx-1].case_id)!='0')
{
recIndx = recIndx+1;
recpos = recIndx-1;
records[recpos]={case_id:'0',portfolio_id:$("#portfolio_id").val(),status:'0',
company_id:$("#company_id").val(),branch_id:$("#branch_id").val(),uuid:'',mvcode:'******'};
}
else
{
recpos=recIndx-1;
}
FillDetails(recpos);
}
function AfterResponse(response,oprID)
{
if(oprID>=19 && oprID<=22) handleDuplicateDetailsResponse(response,oprID);
}
async function loadPunchedRecords(portfolioId,documentCaseId)
{
try
{
var query=new URLSearchParams({portfolioId:portfolioId,documentCaseId:documentCaseId || ""});
var response=await fetch(PUNCHED_RECORDS_URL+"?"+query.toString(),{
method:"GET",credentials:"same-origin",headers:{Accept:"application/json"}
});
var body=await response.json().catch(function(){return null;});
if(!response.ok || !body || !body.success) throw body && body.message ? body.message : {};
records=Array.isArray(body.data && body.data.records) ? body.data.records : [];
recIndx=records.length;
updateRecordCounter(0,recIndx);
recpos=recIndx==0 ? 0 : recIndx-1;
FillDetails(recpos);
}
catch(error)
{
CygnusNotifications.show({type:"danger",code:error.code || "APP-5002",
message:error.message || "Cygnus could not load punched records.",referenceId:error.referenceId});
records=[];recIndx=0;recpos=0;FillDetails(0);
}
finally{$("#ajaxmsg").remove();}
}
function handleDuplicateDetailsResponse(response,oprID)
{
var rows=response.split(RowDelim).slice(0,-1);
if($("#portfolio_id").val()==81)
{
for(var index=0;index<rows.length;index++) incrementDuplicateApplicationNumber();
}
else SameAddr=rows.map(function(row){return row.split(ColDelim);});
SelectAddr(oprID-19);
}
function incrementDuplicateApplicationNumber()
{
var appl=$("#applno").val();
CygnusNotifications.show({type:"warning",code:"APP-DUPLICATE",message:"Application number "+appl+" already exists.",duration:3000});
appl=appl.search('_1')<0 ? appl+'_1' : appl.split('_')[0]+'_'+(parseInt(appl.split('_')[1])+1);
$("#applno").val(appl);
CygnusInitiationValidation.validateField(document.getElementById('applno'));
document.getElementById('applno').focus();
}
function findRecord(arrOpr)
{
var tempPos= recpos;
var maxLen= recIndx-1;
if(arrOpr==1) tempPos=0;
if(arrOpr==2)
{
if(tempPos>0) tempPos=tempPos-1;
else return false;
}
if(arrOpr==3)
{
if(tempPos<maxLen) tempPos=tempPos+1;
else return false;
}
if(arrOpr==4) tempPos=maxLen;
recpos= tempPos;
FillDetails(recpos);
}
function FillDetails(indx)
{
if(recIndx > 0)
{
document.forms['casedetails'].reset();
updateRecordCounter(indx+1,recIndx);
Object.keys(records[indx]).forEach(function(fieldName){fillRecordField(fieldName,records[indx][fieldName]);});
$("#btnsave").toggle($("#status").val()!='1');
FireClickEvents();
document.getElementById("applno").focus();
}
else
{
CygnusNotifications.show({type:"danger",code:"5005MQRY",message:"No records found",duration:3000});
AddNewRecord();
}
}
function fillRecordField(fieldName,fieldValue)
{
var field=document.getElementById(fieldName) || dynamicFieldElement(fieldName);
if(!field) return;
if(CHECKBOX_FIELDS.has(fieldName))
{
field.checked=fieldName=='docv' ? $(field).is(":visible") : fieldValue=='1';
return;
}
field.value=fieldValue;
}
function dynamicFieldElement(fieldName)
{
var dynamicFields=document.querySelectorAll("#FormPanel6 [id]");
for(var index=0;index<dynamicFields.length;index++)
if(dynamicFields[index].id.toLowerCase()==fieldName.toLowerCase()) return dynamicFields[index];
return null;
}
function updateRecordCounter(current,total)
{
$("#recfound").html("<b>( "+current+" / "+total+" )</b>");
}
function FireClickEvents()
{
["rv","ov","rtv","otv","pv","refv"].forEach(function(id){HandleClick(document.getElementById(id));});
}
function FireToggleEvents()
{
ToggleChks(document.getElementById('rv').checked && document.getElementById('ov').checked,["rco"]);
var applicationType=document.getElementById('apptype').value.toUpperCase();
ToggleChks(applicationType!='APPLICANT' && applicationType!='-1',["sradd","soadd","spadd"]);
ToggleChks(document.getElementById('rv').checked,["rcp"]);
ToggleChks(document.getElementById('ov').checked,["ocp"]);
}
function HandleClick(el)
{
var handler=VERIFICATION_HANDLERS[el.id];
if(handler) handler(el);
}
var VERIFICATION_HANDLERS={
rv:function(el){
setFormValidation(el,'FormPanel2',document.getElementById('rtv').checked);
EnableDisableFields(el.checked,'raddr1,raddr2,raddr3,rlandmark,colr,rpincode',',');
},
rtv:function(el){setFormValidation(el,'FormPanel2',document.getElementById('rv').checked);},
ov:function(el){
setFormValidation(el,'FormPanel3',document.getElementById('otv').checked);
EnableDisableFields(el.checked,'oaddr1,oaddr2,oaddr3,olandmark,colo,opincode',',');
},
otv:function(el){setFormValidation(el,'FormPanel3',document.getElementById('ov').checked);},
pv:function(el){
setFormValidation(el,'FormPanel4',false);
EnableDisableFields(el.checked,'paddr1,paddr2,paddr3,plandmark,colp,ppincode',',');
if(!el.checked){document.getElementById('rcp').checked=false;document.getElementById('ocp').checked=false;}
},
refv:function(el){setFormValidation(el,'FormPanel5',false);},
rco:function(el){AutoFill('rco',el.checked ? 1 : 0);},
rcp:function(el){handlePropertyCopy(el,'rcp','ocp');},
ocp:function(el){handlePropertyCopy(el,'ocp','rcp');}
};
function handlePropertyCopy(el,copyType,otherCheckboxId)
{
AutoFill(copyType,el.checked ? 1 : 0);
if(!el.checked) return;
document.getElementById(otherCheckboxId).checked=false;
var property=document.getElementById('pv');
property.checked=true;
HandleClick(property);
}
function setFormValidation(Elem,FormPanel,CounterPartElem)
{
if(Elem.checked || CounterPartElem)
{
UnhideSections(FormPanel+ColDelim, ColDelim);
}
else
{
HideSections(FormPanel);
}
CygnusInitiationValidation.validateVerification(Elem.id);
FireToggleEvents();
}
function AutoFill(Opt,FillMode)
{
var mapping=ADDRESS_COPY_MAPPINGS[Opt];
if(!mapping) return;
if(FillMode==1) CopyDetails(mapping.source,mapping.target);
else if(document.getElementById(mapping.sourceColony).value==document.getElementById(mapping.targetColony).value)
ClearDetails(mapping.target);
}
var ADDRESS_COPY_MAPPINGS={
rco:{
source:["raddr1","raddr2","raddr3","Rcolony","colr","rcity","rlandmark","rpincode","rphone"],
target:["oaddr1","oaddr2","oaddr3","Ocolony","colo","ocity","olandmark","opincode","ophone"],
sourceColony:"Rcolony",targetColony:"Ocolony"
},
rcp:{
source:["raddr1","raddr2","raddr3","Rcolony","colr","rcity","rlandmark","rpincode"],
target:["paddr1","paddr2","paddr3","Pcolony","colp","pcity","plandmark","ppincode"],
sourceColony:"Rcolony",targetColony:"Pcolony"
},
ocp:{
source:["oaddr1","oaddr2","oaddr3","Ocolony","colo","ocity","olandmark","opincode"],
target:["paddr1","paddr2","paddr3","Pcolony","colp","pcity","plandmark","ppincode"],
sourceColony:"Ocolony",targetColony:"Pcolony"
}
};
function ToggleChks(IsVisible,ChildElems)
{
if(IsVisible)
{
ChildElems.forEach(function(id){UnhideSections(id+ColDelim,ColDelim);});
}
else
{
ChildElems.forEach(function(id){HideSections(id);document.getElementById(id).checked=false;});
}
}
function ClearDetails(TargetFields)
{
TargetFields.forEach(function(id){document.getElementById(id).value="";});
}
function CopyDetails(SourceFields,TargetFields)
{
SourceFields.forEach(function(id,index){document.getElementById(TargetFields[index]).value=document.getElementById(id).value;});
}
function AfterOptSelect(ElemToRemove,OprID)
{
FillSameDet(selectedAddr, OprID);
selectedAddr=-1;
ElemToRemove.parentNode.removeChild(ElemToRemove);
}
function ShowAddrOptions(OprID)
{
var optDiv=document.createElement("div");
var Addr="";
optDiv.setAttribute("id","optDiv");
optDiv.setAttribute("class","FormPanel");
optDiv.setAttribute("style","font-family:Tahoma;overflow:visible");
var OptionPanel="<div id='TablePanel' class='tableContainer'><table border='0' cellspacing='0' width='100%' id='cutlist'><thead class='thead'><tr title='Row Title'><td colspan='2'>Available Addresses</td></tr></thead><tbody class='scrollContent'>";
for(var indx=0;indx<SameAddr.length;indx++)
{
OptionPanel=OptionPanel+"<tr><td><input type='radio' name='rb1' id='rb"+indx+"' value='"+indx+"' onclick='selectedAddr=this.value;' /></td>";
OptionPanel=OptionPanel+"<td style='padding-right:5px'>";
for(var cindx=0;cindx<4;cindx++)
{
Addr=Addr+" "+escapeHtml(SameAddr[indx][cindx]);
}
OptionPanel=OptionPanel+""+Addr+"</td></tr>";
Addr="";
}
OptionPanel=OptionPanel+"<tr><td colspan='2'><input type='button' class='button' name='btnok' style='margin-top:5px;float:right' value='OK' id='btnok' accesskey='K' onclick=\"AfterOptSelect(document.getElementById('inptDialog'),"+OprID+");\"";
OptionPanel=OptionPanel+"</tbody></table></div>";
optDiv.innerHTML=OptionPanel;
ShowInputDialog(optDiv,"Select Address","hint","inptDialog");
document.getElementById('rb0').focus();
}
function escapeHtml(value)
{
return String(value == null ? "" : value).replace(/[&<>"']/g, function(character) {
return ({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[character];
});
}
function FillSameDet(AddrIndex,OprID)
{
if(!(AddrIndex < 0))
{
for(var cindx=0;cindx<SameAddr[AddrIndex].length;cindx++)
{
$("#"+AddrElem[OprID][cindx+1]).val((SameAddr[AddrIndex][cindx]));
}
document.getElementById(FocusAfter).focus();
var applicationType=document.getElementById('apptype').value.toUpperCase();
ToggleChks(applicationType!='APPLICANT' && applicationType!='-1',["sradd","soadd","spadd"]);
}
else
{
document.getElementById(AddrElem[OprID][0]).focus();
if(document.getElementById(AddrElem[OprID][0]).type=='checkbox'){document.getElementById(AddrElem[OprID][0]).checked=false;}
}
}
function SelectAddr(OprID)
{
if(SameAddr.length>1)
{
ShowAddrOptions(OprID);
}
else if(SameAddr.length===1)
{
FillSameDet(0,OprID);
}
else
{
FillSameDet(-1,OprID);
}
}
function FindSameDet(Elm,Visit,focAfter)
{
if($("#case_id").val()!='0' && Visit=='A')
{
return;
}
else
{
FocusAfter=focAfter;
var procFlag=true;
if(Elm.type=='checkbox')
{
procFlag=Elm.checked;
}
if(procFlag)
{
var Applno=document.getElementById('applno').value;
if(Applno.length==0)
{
if(Elm.type=='checkbox'){Elm.checked=false;}
CygnusNotifications.show({type:"danger",code:"VLFRM",message:"Please enter application number.",duration:3000});
document.getElementById('applno').focus();
return false;
}
else
{
SameAddr=[];
var oprId=DUPLICATE_OPERATION[Visit];
var QryStr="val="+encodeURIComponent(Applno)+"&val1="+encodeURIComponent($("#portfolio_id").val())+"&val2="+encodeURIComponent(oprId);
RunAjax("GET","findsdet",QryStr,oprId);
}
}
}
}
function FindStr(el,elmids)
{
el.value=el.value.split('->')[0];
var skey=el.value.trim().toUpperCase();
if(skey!='UNKNOWN' && skey!='-1')
{
for(var indx=0;indx<elmids.length;indx++)
{
if(document.getElementById(elmids[indx]).value.toUpperCase().search(skey)>-1)
{
return true;
}
}
}
else
{
return true;
}
return false;
}
var ADDRESS_SECTIONS={
r:{verification:"rv",city:"rcity",colony:"colr",colonyId:"Rcolony",addressFields:["raddr2","raddr3"]},
o:{verification:"ov",city:"ocity",colony:"colo",colonyId:"Ocolony",addressFields:["oaddr2","oaddr3"]},
p:{verification:"pv",city:"pcity",colony:"colp",colonyId:"Pcolony",addressFields:["paddr2","paddr3"]}
};
function addressSectionFor(fieldId)
{
var keys=Object.keys(ADDRESS_SECTIONS);
for(var index=0;index<keys.length;index++)
{
var section=ADDRESS_SECTIONS[keys[index]];
if(fieldId==section.city || fieldId==section.colony) return section;
}
return null;
}
function HandleBlur(el)
{
var section=addressSectionFor(el.id);
if(!section) return;
if(el.id==section.city)
{
if(!FindStr(el,section.addressFields))
{
CygnusNotifications.show({type:"danger",code:"1001AREA",message:"Invalid area.",duration:3000});
el.value="-1";
document.getElementById(section.colonyId).value="";
document.getElementById(section.colony).value="";
}
CygnusInitiationValidation.validateField(el);
}
if(el.id==section.colony)
{
if(!FindStr(el,section.addressFields))
{
CygnusNotifications.show({type:"danger",code:"1001AREA",message:"Invalid colony.",duration:3000});
el.value="";
}
var colonyId=document.getElementById(section.colonyId);
if(el.value=='') colonyId.value='';
if(colonyId.value=='') el.value='';
CygnusInitiationValidation.validateField(el);
}
}