//팝업에서 오브젝트를 부모창으로 보내기 위한 작업 FUNCTION
<script type="javascript" ev:event="ondblclick">
<![CDATA[cardInfo();]]>
</script>
function cardInfo() {
if(!fGridReturn("fg1")) return;
var obj = doc.addGrid("fg1").getRowObj(fg1.row);
try{
opener.javascript.purCardAprovPopUp(obj);
}catch(e){
if(opener.javascript.comInfo(obj) == false){
return false;
}
}
window.close();
}
//데이터 그리드의 컬럼 타입이 체크박스 인경우 컬럼명에 체크박스를 넣어 버튼 클릭시 모두 클릭 되도록 함.
fg1.fixedcellcheckbox(0,1)=true;
//문자타입의 데이터 값 수식 .
:= parseInt(model.getValue("/root/main/detail/TRF_AMT"),10)
-- 10진법의 숫자로 변환 .
// input 타입의 입력 창에 포커스(마우스 클릭) 했을때 한영을 지정된 것으로 변경 하는 옵션
imemode="hangul"
-- 한글
imemode="alpha"
-- 영문
// datagrid 의 col 값이 전체 width 값만큼 조정 되는 것을 막음
fg1.extendLastCol = "false"
// input 박스 두개 기간 체크
<script type="javascript" ev:event="xforms-value-changed">
<![CDATA[
fDayPeriodCheck("/root/search/APROV_DT_FR","/root/search/APROV_DT_TO", "str" );
doFg1Search();
model.refresh();
]]>
</script>
<script type="javascript" ev:event="onkeydown">
<![CDATA[
fEnterFunction("doFg1Search",event.target);
]]>
</script>
// date 유효성 검사 하나
fDayCheck("/root/main/PUBCT_DT","input10");
//grid 의 date 유효성 검사
<col ref="FRM_DT" type="inputdate">
<script type="javascript" ev:event="xforms-value-changed">
<![CDATA[
fDayCheck(fg3.row,"fg3.FRM_DT");
]]>
</script>
</col>
//grid 에서 emp_pop 셋팅 function 사용
<script type="javascript" ev:event="onbuttonclick">
<![CDATA[
doFg23Insert("O");
]]>
</script>
<script type="javascript" ev:event="onkeyup">
<![CDATA[
if(event.keyCode == 13){
doFg23Insert("O");
}
]]>
</script>
function doFg23Insert(emp_OA){
var owner_nm ="";
if(emp_OA=="O"){
owner_nm = fg3.valueMatrix(fg3.row, fg3.colRef("OWNER_NM"));
}else {
owner_nm = fg2.valueMatrix(fg2.row, fg2.colRef("CARD_ADMIN_NM"));
}
model.makeValue("/root/temp/EMP_NM",owner_nm);
if(owner_nm!=""){
popupValueSet("/root/temp/EMP_NM", "EMP_NM", "E");
popupValueSet("/root/temp/EMP_NO", "EMP_NO", "");
}else {
popupValueSet("/root/temp/EMP_NM", "EMP_NM", "");
popupValueSet("/root/temp/EMP_NO", "EMP_NO", "");
}
//popupValueSet("/root/temp/DEPT_NM", "DEPT_NM", "");
empPopup("/root/temp/EMP_NM");
if(emp_OA!="O"){
if (doFg2Check())return; // 기존에 추가된 관리자 인지 확인
}
if(emp_OA=="O"){
fg3.valueMatrix(fg3.row, fg3.colRef("OWNER_NM")) = model.getValue("/root/temp/EMP_NM");
fg3.valueMatrix(fg3.row, fg3.colRef("OWNER")) = model.getValue("/root/temp/EMP_NO");
fg3.colWidth(0)=30;
}else {
fg2.valueMatrix(fg2.row, fg2.colRef("CARD_ADMIN_NM")) = model.getValue("/root/temp/EMP_NM");
fg2.valueMatrix(fg2.row, fg2.colRef("CARD_ADMIN")) = model.getValue("/root/temp/EMP_NO");
fg2.colWidth(0)=30;
}
model.refresh();
}
//input 박스 에서 emp_pop 셋팅
<script type="javascript" ev:event="onbuttonclick">
<![CDATA[
popupValueSet("/root/search/OWNER_NM","EMP_NM","");
popupValueSet("/root/search/OWNER_NO","EMP_NO","");
empPopup();
]]>
</script>
<script type="javascript" ev:event="xforms-value-changed">
<![CDATA[
popupValueSet("/root/search/OWNER_NM","EMP_NM","E");
popupValueSet("/root/search/OWNER_NO","EMP_NO","");
empPopup("");
]]>
</script>
<script type="javascript" ev:event="onkeypress">
<![CDATA[
fEnterKey("");
]]>
</script>
//데이터 그리드 더블클릭후 팝업 데이터 넘기기
<script type="javascript" ev:event="ondblclick">
<![CDATA[
if(!fGridReturn("fg1")) return;
model.makeValue("/root/temp/ACCT_CD", fg1.valueMatrix(fg1.row, fg1.colRef("ACCT_CD")));
model.makeValue("/root/temp/ACCT_NM", fg1.valueMatrix(fg1.row, fg1.colRef("DIS_NM")));
model.makeValue("/root/temp/FRM_DT", model.getValue("/root/search/FRM_DT"));
model.makeValue("/root/temp/TO_DT", model.getValue("/root/search/TO_DT"));
loadPopUp("/etr/xrw/mis/act/main/act_4003_007.xrw", "", "1010", "590", "/root/temp", "/root/temp"
]]>
</script>
// 더블클릭후 받은 데이터 처리
function doInit(){
doImportSearch("CORP","");
model.makeValue("/root/search/ACCT_NM", model.getValue("/root/temp/ACCT_NM"));
model.makeValue("/root/search/ACCT_CD", model.getValue("/root/temp/ACCT_CD"));
model.makeValue("/root/search/FRM_DT", model.getValue("/root/temp/FRM_DT"));
model.makeValue("/root/search/TO_DT", model.getValue("/root/temp/TO_DT"));
input3.disabled=false;
model.refresh();
model.setFocus("input7");
}
// 최초 실행시 사용 할수 있도록 위치 </model> 바로 위
<script type="javascript" ev:event="xforms-model-construct-done">
<![CDATA[
doInit();
]]>
</script>
// 데이터 그리드를 초기화
fg1.rebuild();
//데이터그리드 스크롤 되지 않게 고정
fg1.FrozenCols = 3; // 좌측 3개의 칼럼을 고정시킨다.
fg1.FrozenRows = 2; // 상단 2개의 행을 고정시킨다.
// 클릭시 특정 REF 값을 기준으로 모두 check 또는 check false 하는 것
var statVal;
if(fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))=="true") statVal="false";
else if(fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))==""||fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))=="false") statVal="true";
for(var i=fg1.fixedRows; i<fg1.rows; i++) if(fg1.valueMatrix(i, fg1.colRef("SLIP_NO"))==fg1.valueMatrix(fg1.row, fg1.colRef("SLIP_NO"))) fg1.valueMatrix(i,
fg1.colRef("isChecked")) = statVal;
// 클릭시 같은 row 를 check 또는 check false 하는 것
if(!fGridReturn("fg1")) return;
if(fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))=="true"){
fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))="false";
}else{
fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))="true";
}
// 데이터 있는지 확인.
if(fg1.rows==1){
jsAlert("그리드 안에 데이터가 없습니다.");
return;
}
//xrw 오픈시 특정 값을 받는 쿼리 .jsp 의 request.getParameter 와 같다.
model.makeValue("/root/main/search/CARD_CLS", model.property("CARD_CLS"));
// 특정 데이터 그리드의 row 를 추가한다.
doc.addGrid("fg2").insertRow("last");
// 입력창을 FOCUS 하게함
model.setFocus("input1");
//데이터 그리드에 값 셋팅 하기
doc.addGrid("fg1").setAction("/module/mis/act/main/Act_7001_007.do").setMode("getList").setSendRef("/root/search").getList("true");
대상그리드 네임스페이스 XML ID MAP 에 가져갈 검색 조건 ##
// 가져온 데이터 그리드의 여러개의 ROW 중 조건에 맞는 경우에만 ROW 에 백그라운드를 다르게 하여 표현 하게함
for(var i=fg1.fixedRows; i<fg1.rows; i++) if(fg1.valueMatrix(i, fg1.colRef("OUT_CHK"))=="Y") fg1.rowStyle(i, "data", "background-color") = "#ffddff";
//대상 데이터 그리드의 데이터 ROW 숫자를 캡션 안에 넣어 준다.
getGridRowCnt("fg1", "caption37");
// 선택된 ROW의 특정 컬럼 값을 임시 저장 하여 sedRef 에 추가 하기
model.makeValue("/root/search/search2/CARD_NO", fg1.valueMatrix(fg1.row, fg1.colRef("CARD_NO")));
doc.addGrid("fg2").setAction("/module/mis/act/main/Act_7001_007.do").setMode("getFg2List").setSendRef("/root/search/search2/CARD_NO").getList("true");
//모든 컬럼 값을 변경 하기 ( check 속성의 값을 true 로 바꿈 )
for (var i=1; i<fg2.rows; i++){
fg2.valueMatrix(i, fg2.colRef("isChecked"))="true";
}
//submit 전에 값의 유효성 검사를 함 체크 펑션을 사용 하는경우 반드시 조건문 안에 사용 하여 값을 받아 사용 한다.
function doSaveCheck(){
if(!chkValue(model.getValue("/root/main/CARD_NO"), "input1", "카드번호를 입력해 주십시요.")) return false;
}
// submit 할때 특정 값이 아닌 데이터 그리드의 값을 모두 보낼때 사용 //대상 데이터 그리드의 isChecked 값을 찾아서 플래그 한후에 getUpdateData() 를 이용 하여 ref 값을 생성후
subMit 시에 ref 값으로 보내 준다. JAVA 단에서 받는다.
-- XRW
fSetGridAllFlag("fg2");
model.makeValue("/root/temp/updateData3", fg2.getUpdateData());
** getUpdateData() 는 특정 그리드의 데이터 값중 insert update delete 된 값을 지정 하여 보내 getGridUpdatedList, getGridInsertdList,getGridDeleteList 등으로 구분 하여 받을수 있다. 따라서 이것을 모두 가져와 사용 하기위해서는 모두 대상에 적용 시켜야할 필요가 있는데 fSetGridAllFlag("fg2");
을 사용 하여 getGridUpdatedList 로 받을수 있다.
--JAVA
List adminList = request.getGridUpdatedList("updateData3");
for(Iterator all = adminList.iterator(); all.hasNext();){
Map row = (Map)all.next();
row.put("SESS_USER_ID", map.get("SESS_USER_ID"));
row.put("CARD_NO", map.get("CARD_NO"));
createObject("act.main.act7001007.insertAdminList", row);
}
// 위의 값을 submit 하자 submit 의 경우 String 으로 결과 값을 response.addReturnValue("Y"); 돌려줘 밑과 같이 처리 한다.
if(submit("/module/mis/act/main/Act_7001_007.do", "tmSave", "/root/main,/root/temp/updateData3","","","", false)=="Y"){
if(!fMessageBox("I_Y","doFg1Search")) return;
}else{
if(!fMessageBox("I_N","doFg1Search")) return;
}
}
//인사의 팝업 사용 하기
popupValueSet("/root/main/ADMIN_NM", "EMP_NM", "");
popupValueSet("/root/main/ADMIN", "EMP_NO", "");
empPopup();
if (doFg2Check())return; // 기존에 추가된 관리자 인지 확인
fg2.valueMatrix(fg2.row, fg2.colRef("EMP_NM")) = model.getValue("/root/main/ADMIN_NM");
fg2.valueMatrix(fg2.row, fg2.colRef("EMP_NO")) = model.getValue("/root/main/ADMIN");
function doFg2Check(){
for (var i=fg2.fixedRows; i<fg2.rows; i++){
if(fg2.valueMatrix(i, fg2.colRef("EMP_NO"))== model.getValue("/root/main/ADMIN") ){
if(model.getValue("/root/main/ADMIN")!=""){
jsAlert("이미 등록된 관리자 입니다.");
}
return true;
}
}
}
//선택 ROW 를 삭제 한다.
function doDelete(){
if(jsConfirm("삭제하시겠습니까?")){
if(submit("/module/mis/act/main/Act_7001_007.do", "tmDelete", "/root/main/CARD_NO","","","",false)=="Y"){
if(!fMessageBox("D_Y","doFg1Search")) return;
}else{
if(!fMessageBox("D_N","doFg1Search")) return;
}
model.refresh();
}
}
// 추가 자체 FUNCTION
function popAcc(obj){// 값을 받아 올때만 실행
if(model.getValue("/root/temp/ACC_FLAG")=="Y"){
// 일괄적용 (다중 적용)
for(var i=fg1.fixedRows; i<fg1.rows; i++) if(fg1.valueMatrix(i, fg1.colRef("isChecked"))=="true") fg1.rowStyle(i, "data", "background-color") = "#ffddff";
for(var i=fg1.fixedRows; i<fg1.rows; i++) if(fg1.valueMatrix(i, fg1.colRef("isChecked"))=="true"){
fg1.valueMatrix(i, fg1.colRef("STTL_BK_CD"))=obj.BK_CD;
fg1.valueMatrix(i, fg1.colRef("STTL_BK_NM"))=obj.BK_NM;
fg1.valueMatrix(i, fg1.colRef("STTL_ACC_NO"))= obj.BK_ACC_NO;
}
model.refresh();
}else {
// 단일적용
fg1.rowStyle(fg1.row, "data", "background-color") = "#ffddff";
fg1.valueMatrix(fg1.row, fg1.colRef("STTL_BK_CD")) =obj.BK_CD;
fg1.valueMatrix(fg1.row, fg1.colRef("STTL_BK_NM")) = obj.BK_NM;
fg1.valueMatrix(fg1.row, fg1.colRef("STTL_ACC_NO")) = obj.BK_ACC_NO;
fg1.valueMatrix(fg1.row, fg1.colRef("isChecked"))="true";
}
model.setValue("/root/temp/ACC_FLAG","N");
}
// 특정 값을 가져와 숫자로 바꾸어 값을 확인 한다.
//결제일 맥스값 체크
function doSttlDtChange(){
var sttlDt=parseInt(model.getValue("/root/main/STTL_DT"));
if(sttlDt>31){
jsAlert("유효하지 않는 결제일입니다.");
model.setFocus("input3");
}
}
// ROW 를 삭제 하기
function doFg2Delete(){
if(fg2.row<fg2.fixedRows){
jsAlert("삭제할 내역을 선택해 주십시요.");
return;
}else if(jsConfirm("선택한 행을 삭제하시겠습니까?")){
fg2.deleteRow(fg2.row);
fg2.colWidth(0)=30;
}
}
//SELECT 형식으로 데이터 그리드를 보는것 (사업처 코드를 사용 -보이는 값과 넘기는 값이 다르다 )
//데이터 그리드 안에서
<col ref="BUSI_PLC_CD" type="combo" visibility="hidden">
<choices>
<itemset nodeset="/root/temp/IMPORT/CORP">
<label ref="label"/>
<value ref="value"/>
</itemset>
</choices>
</col>
// 단일 SELECT 안에서 사용
<select1 id="combo2" ref="/root/search/BUSI_PLC_CD" appearance="minimal" style="left:125px; top:38px; width:210px; height:17px; font-family:Gulim; text-align:center; padding-top:1; ">
<choices>
<itemset nodeset="/root/temp/IMPORT/CORP">
<label ref="label"/>
<value ref="value"/>
</itemset>
</choices>
<script type="javascript" ev:event="xforms-value-changed">
<![CDATA[
doFg1Search();
]]>
</script>
</select1>
위의 두 값은 아래와 같이 초기 셋팅 한다.
<script type="javascript" ev:event="xforms-model-construct-done">
<![CDATA[
//doImportSearch("CORP,C320,C321,C315@ETC1='320-001'","--전체--,,,--선택--");
doImportSearch("CORP_INF","--전체--");
//doInit();
]]>
</script>
// 특정 그리드의 checked 된 값을 숫자로 return 하는 function 사용 // act.js 에 구현
fGridChkCntReturn("fg1","isChecked","true")==0
-- 특정 데이터그리드의 refid 값과 몇개 인제 확인할 상태값을(true or false) 넘겨 준다.
// 데이터 별로 특정 값을 찾아 style 을 조정 하여 백그라운드를 다르게 보여 준다. 2개 이상의 값
for(var i = fg1.fixedRows ; i < fg1.rows ; i++){
var gbn = fg1.valueMatrix(i, fg1.colRef("GBN"));
if(gbn=="2"||gbn=="6"||gbn=="8"||gbn=="9"){
fg1.mergebyfree(i, fg1.colRef("CARD_NO"), i, fg1.colRef("APROV_DATE"));
fg1.cellStyle("text-align", i, fg1.colRef("CARD_NO"), i, fg1.colRef("APROV_DATE"))="center";
fg1.rowStyle(i, "data", "background-color") = "#e1e1ff";
fg1.rowStyle(i, "data", "color") = "#0000ff";
fg1.rowStyle(i, "data", "font-weight") = "bold";
}else if(fg1.valueMatrix(i, fg1.colRef("GBN"))=="10"){
fg1.mergebyfree(i, fg1.colRef("CARD_NO"), i, fg1.colRef("APROV_DATE"));
fg1.cellStyle("text-align", i, fg1.colRef("CARD_NO"), i, fg1.colRef("APROV_DATE"))="center";
fg1.rowStyle(i, "data", "background-color") = "#e1e1ff";
fg1.rowStyle(i, "data", "color") = "#ff0000";
fg1.rowStyle(i, "data", "font-weight") = "bold";
}
}
//공통단 엑셀 처리 xrw 부분
T폼 지원 : saveExcel(document.title, document.title, "fg1", "1");
//따로 만든것
var excelFileName = "acctCd.xls";
var fgColName= "소득코드^소득구분^표준코드^순번^소득명^필요경비세율(%)^세율";
//var fgColName2= "소득코드^소득구분^표준코드^순번^소득명^필요경비세율(%)^세율"; //타이틀 값 두줄 넣을때 사용 fgColName 과 사이즈가 같아야함
var fgColRef= "INCM_CD^INCM_CLS^STAN_INCM_CD^STAN_INCM_SEQ^INCM_NM^NECES_TAX_RATE^TAX_RATE";
model.makeValue("/root/temp/excel/colName",fgColName);
//model.makeValue("/root/temp/excel/colName2",fgColName2);
model.makeValue("/root/temp/excel/colRef",fgColRef);
model.makeValue("/root/temp/excel/getList","act.main.act0009007.getList");
model.makeValue("/root/temp/excel/title", document.title);
model.makeValue("/root/temp/excel/fileNm",excelFileName);
submit("/module/mis/act/main/Act_0000_007.do", "excelDown", "/root/temp/excel,/root/search", "", "excel", "", false, true);
// 엑셀 다운 작업 2
model.makeValue("/root/search/FINC_STAT_CD","390-001");
var excelFileName = "acct_Balance_sheet.xls";
var fgColName= "계정과목코^"+model.getValue("/root/main/TITLE3")+"^"+
model.getValue("/root/main/TITLE3")+"^"+model.getValue("/root/main/TITLE4")+"^"+model.getValue("/root/main/TITLE4");
var fgColName2= "^^금액^금액^금액^금액"; //타이틀 값 두줄 넣을때 사용 fgColName 과 사이즈가 같아야함
var fgColRef= "DIS_NM^SEQ^THIS_L_AMT^THIS_R_AMT^BACK_L_AMT^BACK_R_AMT";
model.makeValue("/root/temp/excel/colName",fgColName);
model.makeValue("/root/temp/excel/colName2",fgColName2);
model.makeValue("/root/temp/excel/busiPlcNm",model.getValue("/root/main/TITLE1")+" "+model.getValue("/root/main/TITLE2"));
model.makeValue("/root/temp/excel/colRef",fgColRef);
model.makeValue("/root/temp/excel/getList","act.main.act5002007.getList");
model.makeValue("/root/temp/excel/title", document.title);
model.makeValue("/root/temp/excel/fileNm",excelFileName);
submit("/module/mis/act/main/Act_0000_007.do", "excelDown", "/root/temp/excel,/root/search", "", "excel", "", false, true);