ERP-node/WebContent/WEB-INF/view/materMgmt/matermgmtFormPopup.jsp

432 lines
14 KiB
Plaintext
Raw Normal View History

2025-08-21 09:41:46 +09:00
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ page import="com.pms.common.utils.*"%>
<%@ page import="java.util.*"%>
<%@include file="/init_jqGrid.jsp"%>
<%
Map info = (HashMap)(request.getAttribute("info"));
boolean isModfidy = true;
if(info!=null &&
( CommonUtils.checkNull(info.get("APPR_STATUS_CD")).equals( "inProcess")
||CommonUtils.checkNull(info.get("APPR_STATUS_CD")).equals( "complete" )
)
){
isModfidy = false;
}
%>
<!DOCTYPE html>
<html>
<head>
<!-- //JSTL 페이징 변수선언 -->
<c:set var="now" value="<%=new java.util.Date() %>" />
<c:set var="sysYear"><fmt:formatDate value="${now}" pattern="yyyy" /></c:set>
<c:set var="fileDocType" value="MATER_MASTER"/>
<c:set var="fileDocTypeName" value="발주서" />
<script type="text/javascript">
var grid;
$(document).ready(function(){
//상신된 결재라인 가져오기
fn_getApprLine();
grid = $("#formGrid1").jqGrid({
url: ""
,datatype: "local"
,data : $.parseJSON($("#gridDetailList").val())
//,datatype: "jsonstring"
//,datastr : $.parseJSON('{"total":1,"page":1,"records":1,"rows":[{"part_name":""}]}')
,colNames: ["RESOURCE_OBJID","품명","품번","두께","가로","세로","외경","내경","길이","수량"]
,colModel: [
{name:"RESOURCE_OBJID", index:"RESOURCE_OBJID", width: 0, align:"center", hidden: true, sortable:false, editable:false}
,{name:"PART_NAME" , index:"PART_NAME" , width: 80, align:"center", hidden:false, sortable:false, editable:false}
,{name:"DO_NO" , index:"DO_NO" , width: 80, align:"center", hidden:false, sortable:false, editable:false}
,{name:"THICKNESS" , index:"THICKNESS" , width: 80, align:"center", hidden:false, sortable:false, editable:false}
,{name:"WIDTH" , index:"WIDTH" , width: 80, align:"center", hidden:false, sortable:false, editable:false}
,{name:"HEIGHT" , index:"HEIGHT" , width: 80, align:"center", hidden:false, sortable:false, editable:false}
,{name:"OUT_DIAMETER" , index:"OUT_DIAMETER" , width: 80, align:"center", hidden:false, sortable:false, editable:false}
,{name:"IN_DIAMETER" , index:"IN_DIAMETER" , width: 80, align:"center", hidden:false, sortable:false, editable:false}
,{name:"LENGTH" , index:"LENGTH" , width: 80, align:"center", hidden:false, sortable:false, editable:false}
,{name:"QTY" , index:"QTY" , width:150, align: "right", hidden:false, sortable:false, editable: true, formatter:"integer", formatoptions:{thousandsSeparator:","}}
]
,ignoreCase : true
,rownumbers : true
,viewrecords : true
,height : 250
,multiselect : <% if(isModfidy){ %>true<% }else{ %>false<% } %> //선택가능
,shrinkToFit : false
,autowidth : true
,sortable : false
,rowNum : 10000
,forceFit : false //컬럼의 width를 변화시킬때 그리드의 width를 고정 여부
,jsonReader : {repeatitems: false}
,mtype :"POST"
,footerrow : false //바닥합계
,userDataOnFooter: true //바닥합계
//,caption :"제목"
,loadComplete: function(){
//footer 커스텀..
}
});
var optJson = {
useColSpanStyle: true,
groupHeaders:[
{startColumnName: 'THICKNESS', numberOfColumns: 6, titleText: '<center><em>규 격</em></center>'}
]
};
fn_jqGrid_setGroupHeaders(grid, optJson);
<% if(isModfidy){ %>
$("#sup_cd").prop("disabled","");
fnc_datepick(); //달력
$(".select2").select2();
gridFn.opennEdit(); //수정가능
//버튼
$("#btnAdd" ).click(function(){ fn_openPartMngListPopUp(); }); //행추가
$("#btnDel" ).click(function(){ gridFn.delRow(); }); //행삭제
$("#btnSave").click(function(){ fn_save(); }); //저장
$("#btnAppr").click(function(){ //결재상신
if(fnc_valitate("form1")){
var objId = "${objId}";
if(""==grid.getRowData()){
Swal.fire('저장할 품목이 존재 하지 않습니다');
return;
}
//var title = encodeURIComponent($("#title").val());
var title = encodeURIComponent("발주서 상신");
window.open("/approval/registApproval.do?targetType=MATERIAL_SORTAPPLY&targetObjId="+objId+"&approvalTitle="+title+"&callbackFnc=fn_appr_status","registApproval","width=700,height=700");
}
});
<% } %>
});
//상신된 결재라인가져오기
function fn_getApprLine(){
$.ajax({
url:"/common/getApprovalLine.do",
type:"POST",
data:{"objId":"${objId}"},
dataType:"json",
async:false,
success:function(data){
$.each(data.RESULT, function(i,o){
if(i==0){
$("#appr"+i).html(o.WRITER +"<br/>"+ o.REGDATE);
}
$("#appr"+(i+1)).html(o.TARGET_USER_NAME +"<br/>"+ (o.PROC_DATE!=undefined?o.PROC_DATE:" "));
});
},
error: function(jqxhr, status, error){
}
});
}
function fn_appr_status(){
$("#status_cd").val("PURSTCD00500");
//결재 프로세스 변경으로 인한 주석
/* if("SRT00020"==$("#sort_cd").val()){
$("#status_cd").val("PURSTCD00500");
}else{
$("#status_cd").val("PURSTCD00200");
}
*/
fn_save_process();
}
//행추가시 품목선택 팝업
function fn_openPartMngListPopUp(){
var hiddenForm = document.hiddenForm;
var target = "partMngListPopUp";
//var url = "/eoMng/partMngListPopUp.do?OBJID="+ ${resultMap.OBJID};
var url = "/partMng/partMngListPopUp.do?callbackFnc=fn_addRow&callType=purchaseOrder";
window.open(url,target,"width=1480,height=800");
}
//품목선택 callbackFnc
function fn_addRow(rowData){
var addData = {
"RESOURCE_OBJID" : rowData.map.PART_OBJID
,"PART_NAME" : rowData.map.PART_NAME
,"DO_NO" : rowData.map.DO_NO
,"THICKNESS" : rowData.map.THICKNESS
,"WIDTH" : rowData.map.WIDTH
,"HEIGHT" : rowData.map.HEIGHT
,"OUT_DIAMETER" : rowData.map.OUT_DIAMETER
,"IN_DIAMETER" : rowData.map.IN_DIAMETER
,"LENGTH" : rowData.map.LENGTH
}
var newId = grid.getGridParam("reccount")+1;
grid.addRowData(newId, addData);
grid.jqGrid("editRow", newId);
}
function fn_save(){
if(fnc_valitate("form1")){
if(""==grid.getRowData()){
Swal.fire('저장할 품목이 존재 하지 않습니다');
return;
}
$("#status_cd").val("PURSTCD00100");
if(confirm("저장 하시겠습니까?")){
fn_save_process();
}
}
}
<% if(isModfidy){ %>
function fn_save_process(){
//$("#final_order_amount").prop('disabled', false);
var master_title = grid.getRowData(1).PART_NAME;
if(grid.getRowData().length > 1){
master_title += " 외 "+(grid.getRowData().length-1)+"건";
}
$("input[name=title]").val(master_title);
gridFn.closeEdit();
$.ajax({
url:"/materMgmt/materMgmtSave.do"
,type:"POST"
,data: $("#form1").serialize() + "&jqGrid="+ encodeURIComponent(JSON.stringify(grid.getRowData()))
,dataType:"json"
,success:function(data){
if(data =="SUCCESS"){
Swal.fire("저장되었습니다.");
};
if(typeof opener.fn_search =="function"){ opener.fn_search() };
self.close();
}
,error: function(jqxhr, status, error){
}
});
}
<% } %>
var gridFn = {
addRow : function() {
//var newId = grid.getGridParam("reccount")+1;
//var addData = {
// "RESOURCE_OBJID" : ""
// ,"PART_NAME" : ""
// ,"DO_NO" : ""
// ,"THICKNESS" : ""
// ,"WIDTH" : ""
// ,"HEIGHT" : ""
// ,"OUT_DIAMETER" : ""
// ,"IN_DIAMETER" : ""
// ,"LENGTH" : ""
// ,"QTY" : ""
//};
//grid.addRowData(newId, addData);
//grid.jqGrid("editRow", newId);
}
,delRow : function(){
var selectedRowIds = grid.jqGrid("getGridParam","selarrrow");
if(selectedRowIds.length==0){
Swal.fire("삭제할 행을 선택해주십시오.");
return false;
}
for(var i = selectedRowIds.length - 1; i >= 0; i--){
grid.delRowData(selectedRowIds[i]);
}
}
,opennEdit : function() { //수정가능
var ids = grid.jqGrid("getDataIDs");
for (var i = 0; i < ids.length; i++) {
grid.jqGrid("editRow",ids[i]);
}
}
,closeEdit : function() { //수정불가
var ids = grid.jqGrid("getDataIDs");
for (var i = 0; i < ids.length; i++) {
grid.jqGrid("saveRow", ids[i], /*successFunction*/null, /*url*/"clientArray"/*, extraparam, aftersavefunc,errorfunc, afterrestorefunc*/);
}
}
,search : function() {
//grid.setGridParam({
// url: "/materMgmt/searchPartMgmt.do"
// ,datatype : "json"
// ,postData : $("#form1").serialize()
// ,loadComplete : function(data) {
// gridFn.footerSummary();
// }
// ,gridComplete : function() {
// gridFn.opennEdit(); //수정가능
// }
//}).trigger("reloadGrid");
//grid.setGridParam({url: "", datatype : "local"});
}
,footerSummary: function(){ //자동합계
/* var colSum1 = 0;
var colSum2 = 0;
var colSum3 = 0;
$("input[id*=UNIT_PRICE]").each(function(){ if($.isNumeric($(this).val())){ colSum1 += parseInt($(this).val()); } }); */
//$("input[id*=CASH_USED]").each(function(){ if($.isNumeric($(this).val())){ colSum2 += parseInt($(this).val()); } });
//$("input[id*=PAYMENT]" ).each(function(){ if($.isNumeric($(this).val())){ colSum3 += parseInt($(this).val()); } });
//$("#total_amount").val(numberWithCommas(colSum1+""));
//$("#summuryTotalCASH_USED").text(numberWithCommas(colSum2+""));
//$("#summuryTotalPAYMENT" ).text(numberWithCommas(colSum3+""));
//$("#summuryTotal").text(numberWithCommas((colSum1+colSum2-colSum3)+""));
//var ids = grid.jqGrid("getDataIDs");
//var total =0;
//for (var i = 0; i < ids.length; i++) {
// if($.isNumeric(grid.jqGrid('getCell', i+1, 'UNIT_PRICE'))){
// //Swal.fire(parseInt(grid.jqGrid('getCell', i+1, 'UNIT_PRICE')));
// total = parseInt(total) + parseInt(grid.jqGrid('getCell', i+1, 'UNIT_PRICE'));
// }
//
//}
//
//$("#total").text(total);
//$("#final_order_amount").val(total);
}
}
</script>
</head>
<body>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="material_master_objid" id="material_master_objid" value="${objId}">
<input type="hidden" name="status_cd" id="status_cd">
<input type="hidden" name="title" >
<section>
<div class="plm_menu_name">
<h2><span>발주서</span></h2>
</div>
<div id="expenseApplyPopupFormWrap1">
<table class="pmsPopupForm">
<colgroup>
<col width="11%" />
<col width="11%" />
<col width="11%" />
<col width="11%" />
<col width="11%" />
<col width="11%" />
<col width="11%" />
<col width="11%" />
<col width="11%" />
</colgroup>
<tr>
<td rowspan="2" colspan="2" style="background-color: #1159bc;"><image src="/images/mainLogo_myungjin.png" style="width: 197px; height: 33px;" /></td>
<td rowspan="2" colspan="3" style="text-align: center;"><h1><b>발주서</b></h1></td>
<td></td>
<td>P/O NO</td>
<td></td>
<td>크로샤</td>
</tr>
<tr>
<td></td>
<td>PAGE</td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2" colspan="2" style="text-align: center;">업체명</td>
<td rowspan="2" colspan="3">
<select name="sup_cd" id="sup_cd" required reqTitle="업체명" type="select" class="select2" autocomplete="off" disabled>
<option value="">선택</option>
${code_map.supply_cd}
</select>
</td>
<td></td>
<td>주문일자</td>
<td colspan="2">
<input type="text" name="order_date" id="order_date" class="date_icon" required reqTitle="주문일자" value="${info.ORDER_DATE}" readonly/>
</td>
</tr>
<tr>
<td></td>
<td>납품일자</td>
<td colspan="2">
<input type="text" name="recv_date" id="recv_date" class="date_icon" required reqTitle="납품일자" value="${info.RECV_DATE }" readonly/>
</td>
</tr>
<tr>
<td>발신</td>
<td colspan="2">명진스틸산업(주)</td>
<td>담당자</td>
<td colspan="5">${writerName}</td>
</tr>
<tr>
<td>전화</td>
<td colspan="2">626-1031</td>
<td>FAX</td>
<td colspan="5">626-1032</td>
</tr>
<tr>
<td colspan="9">1. 귀사의 일의 번창하심을 기원합니다.</td>
</tr>
<tr>
<td colspan="9">2. 아래와 같이 발주하오니 검토하시고 납기를 준수하여 주시기 바랍니다.</td>
</tr>
</table>
</div>
<div id="plm_table_wrap1" style="padding:0 8 0 8;">
<div style="">
<div style="height: 300px;">
<table id="formGrid1""></table>
<!-- <div id="jqGridPager"></div> -->
</div>
</div>
</div>
<div id="expenseApplyPopupFormWrap1">
<table class="pmsPopupForm">
<colgroup>
<col width="10%" />
<col width="40%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
<col width="10%" />
</colgroup>
<tr>
<td rowspan="2" class="input_title">비고</td>
<td rowspan="2">
<textarea style="width:100%; height: 100px;background-color: #fff;" name="reason" id="reason">${info.REASON}</textarea>
</td>
<td rowspan="2" style="text-align:center;" class="input_title">결<br>재</td>
<td style="text-align:center;" class="input_title">담당</td>
<td style="text-align:center;" class="input_title">팀장</td>
<td style="text-align:center;" class="input_title">부장</td>
<td style="text-align:center;" class="input_title">대표</td>
</tr>
<tr>
<td style="text-align:center;" id="appr0"></td>
<td style="text-align:center;" id="appr1"></td>
<td style="text-align:center;" id="appr2"></td>
<td style="text-align:center;" id="appr3"></td>
</tr>
<tr>
<td colspan="8" style="text-align: right;">위와 같이 발주합니다.</td>
</tr>
</table>
</div>
<div class="btn_wrap">
<div class="plm_btn_wrap" style="padding:0 8 0 8; text-align: right;">
<% if(isModfidy){ %>
<input type="button" value="행추가" class="plm_btns" id="btnAdd" name="btnAdd" style="background:#dfeffc">
<input type="button" value="행삭제" class="plm_btns" id="btnDel" name="btnDel" style="background:#dfeffc">
<input type="button" value="저장" class="plm_btns" id="btnSave" name="btnSave" style="background:#dfeffc">
<input type="button" value="결재상신" class="plm_btns" id="btnAppr" name="btnAppr" style="background:#dfeffc">
<% } %>
<input type="button" value="닫기" class="plm_btns" style="background:#dfeffc" onclick="window.close();" >
</div>
</div>
</section>
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridDetailList">${gridDetailList}</textarea>
</form>
</body>
</html>