- Add Docker Compose configurations for dev, prod, and standalone environments - Add database initialization scripts (init-db.sh, init-db-docker.sh) - Add enhanced start-docker-linux.sh with DB init support - Add comprehensive database initialization guide - Support for automatic dbexport.pgsql import on first run - Include safety checks for production environment
318 lines
15 KiB
Plaintext
318 lines
15 KiB
Plaintext
<%@ 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"%><%--Expression Language ::: ${fn:escapeXml(str1)} --%>
|
|
<c:set var="now" value="<%=new java.util.Date() %>"/>
|
|
<c:set var="sysYear"><fmt:formatDate value="${now}" pattern="yyyy" /></c:set>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<title><%=Constants.SYSTEM_NAME%></title>
|
|
</head>
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){
|
|
|
|
fnc_changePaginationAndTotalCountArea();
|
|
$('.select2').select2();
|
|
fnc_datepick();
|
|
|
|
$("#delivery_status").val("${param.delivery_status}").trigger("change");;
|
|
|
|
//조회
|
|
$("#btnSearch").click(function(){
|
|
$("#page").val("1");
|
|
fn_search();
|
|
});
|
|
//수입검사등록
|
|
$("#btnAccept").click(function(){
|
|
fn_deliveryAcceptancePopUp();
|
|
});
|
|
//단가등록
|
|
$("#btnReg").click(function(){
|
|
fn_deliveryResultPopUp();
|
|
});
|
|
|
|
grid1 = $("#grid1").jqGrid({
|
|
url: ""
|
|
,datatype: "local"
|
|
,data : $.parseJSON($("#grid1Data").val())
|
|
,colNames: ["OBJID"
|
|
,"년도","고객사","프로젝트명","당사프로젝트번호","발주 No.","발주서_제목","입고요청일","구매/제작업체명"
|
|
//,"레이저업체","용접업체","가공업체" // TODO: 협의중
|
|
,"구매담당","발주일"
|
|
,"발주수량","입고일","입고수량","미입고수량","부적합수량","입고결과"
|
|
]
|
|
,colModel: [
|
|
{name:"OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
|
|
|
|
,{name:"CM_YEAR" , index:"", width: 60, align:"center", hidden:false, sortable:false, editable:false}
|
|
,{name:"CUSTOMER_NAME" , index:"", width:100, align: "left", hidden:false, sortable:false, editable:false}
|
|
,{name:"CUSTOMER_PROJECT_NAME", index:"", width:150, align: "left", hidden:false, sortable:false, editable:false}
|
|
,{name:"PROJECT_NO" , index:"", width:150, align:"center", hidden:false, sortable:false, editable:false}
|
|
,{name:"PURCHASE_ORDER_NO" , index:"", width:130, align:"center", hidden:false, sortable:false, editable:false, formatter: col_custom_fmt, unformat:col_custom_fmt_un}
|
|
,{name:"TITLE" , index:"", width:180, align: "left", hidden:false, sortable:false, editable:false}
|
|
,{name:"DELIVERY_DATE" , index:"", width:120, align:"center", hidden:false, sortable:false, editable:false}
|
|
,{name:"PARTNER_NAME" , index:"", width:110, align:"center", hidden:false, sortable:false, editable:false}
|
|
|
|
//,{name:"SUPPLY1" , index:"", width:110, align:"center", hidden:false, sortable:false, editable:false} // TODO: 협의중
|
|
//,{name:"SUPPLY2" , index:"", width:110, align:"center", hidden:false, sortable:false, editable:false} // TODO: 협의중
|
|
//,{name:"SUPPLY3" , index:"", width:110, align:"center", hidden:false, sortable:false, editable:false} // TODO: 협의중
|
|
|
|
,{name:"SALES_MNG_USER_NAME" , index:"", width:100, align:"center", hidden:false, sortable:false, editable:false}
|
|
,{name:"REGDATE" , index:"", width:120, align:"center", hidden:false, sortable:false, editable:false}
|
|
|
|
,{name:"TOTAL_PO_QTY" , index:"", width:120, align: "center", hidden:false, sortable:false, editable:false, formatter:"integer", formatoptions:{thousandsSeparator:","}}
|
|
,{name:"CUR_DELIVERY_DATE" , index:"", width:120, align:"center", hidden:false, sortable:false, editable:false}
|
|
,{name:"TOTAL_DELIVERY_QTY" , index:"", width:120, align: "center", hidden:false, sortable:false, editable:false, formatter:"integer", formatoptions:{thousandsSeparator:","}}
|
|
,{name:"NON_DELIVERY_QTY" , index:"", width:120, align: "center", hidden:false, sortable:false, editable:false, formatter:"integer", formatoptions:{thousandsSeparator:","}}
|
|
,{name:"TOTAL_DEFECT_QTY" , index:"", width:120, align: "center", hidden:false, sortable:false, editable:false, formatter:"integer", formatoptions:{thousandsSeparator:","}}
|
|
,{name:"DELIVERY_STATUS" , index:"", width:120, align:"center", hidden:false, sortable:false, editable:false, formatter: col_custom_fmt, unformat:col_custom_fmt_un}
|
|
]
|
|
,ignoreCase : true //로컬 검색 및 정렬이 대,소문자를 구분하지 않도록 하려면true
|
|
,rownumbers : false //row번호 표시
|
|
,viewrecords : true //pager가 있을경우 표시되는 record number
|
|
,autowidth : true //그리드 너비가 자동으로 부모 요소의 너비로 다시 계산
|
|
,sortable : false //마우스로 열을 끌어다 놓아 열을 재정렬
|
|
,shrinkToFit : true //모든 열은 너비에 비례하여 크기가 조정
|
|
,forceFit : false //컬럼의 width를 변화시킬때 그리드의 width를 고정 여부
|
|
,multiselect : true //선택가능. 체크박스표시
|
|
,height : 600
|
|
/* ,rowNum : "${countPerPage}" */
|
|
,rowNum : 90000
|
|
,jsonReader : {repeatitems: false}
|
|
,mtype :"POST"
|
|
,footerrow : false //바닥합계
|
|
,userDataOnFooter: false //바닥합계
|
|
//,caption :"제목"
|
|
//,pager :"#grid1Pager"
|
|
,loadComplete: function(data){ //모든 서버 요청 직후에 실행
|
|
var gid = this.id;
|
|
var grid_wrap_div = $("#gbox_"+gid);
|
|
setTimeout("fn_jqGrid_init($('#"+gid+"'), true);", 50); //윈도우크기 비례 자동조절
|
|
//footer 커스텀..
|
|
}
|
|
});
|
|
});
|
|
|
|
function fn_search(){
|
|
document.form1.action = "/purchaseOrder/deliveryMngList_new.do";
|
|
document.form1.submit();
|
|
}
|
|
|
|
//수입검사등록
|
|
function fn_deliveryAcceptancePopUp(){
|
|
|
|
var selrows = fn_jqGrid_selarrrow($("#grid1"));
|
|
|
|
if(selrows.length > 0){
|
|
var popup_width = 2000;
|
|
var popup_height = 550;
|
|
|
|
var hiddenForm = document.hiddenForm;
|
|
var target = "deliveryAcceptancePopUp";
|
|
var url = "/purchaseOrder/deliveryAcceptanceFormPopUp.do";
|
|
var checkArr = [];
|
|
|
|
$.each(selrows, function(i,o){ checkArr.push( grid1.getRowData(o).OBJID ); });
|
|
|
|
fn_centerPopup(popup_width, popup_height, "", target);
|
|
|
|
hiddenForm.action = url;
|
|
hiddenForm.checkArr.value = checkArr.join(",");
|
|
hiddenForm.target = target;
|
|
hiddenForm.submit();
|
|
|
|
}else{
|
|
Swal.fire("선택한 항목이 없습니다.");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//단가등록
|
|
function fn_deliveryResultPopUp(){
|
|
|
|
var selrows = fn_jqGrid_selarrrow($("#grid1"));
|
|
|
|
if(1 < selrows.length){
|
|
Swal.fire("한번에 1개의 내용만 등록 가능합니다. ");
|
|
return false;
|
|
}if(selrows.length > 0){
|
|
var popup_width = 2000;
|
|
var popup_height = 550;
|
|
|
|
var hiddenForm = document.hiddenForm;
|
|
var target = "deliveryResultPopUp";
|
|
var url = "/purchaseOrder/deliveryResultFormCostPopUp.do";
|
|
var checkArr = [];
|
|
|
|
$.each(selrows, function(i,o){ checkArr.push( grid1.getRowData(o).OBJID ); });
|
|
|
|
fn_centerPopup(popup_width, popup_height, "", target);
|
|
|
|
hiddenForm.action = url;
|
|
hiddenForm.checkArr.value = checkArr.join(",");
|
|
hiddenForm.PURCHASE_ORDER_MASTER_OBJID.value = checkArr.join(",");
|
|
hiddenForm.target = target;
|
|
hiddenForm.submit();
|
|
|
|
}else{
|
|
Swal.fire("선택한 항목이 없습니다.");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/*
|
|
Custom Formatter Parameters Description
|
|
◆ cellvalue: value to be formatted
|
|
◆ options : { rowId: rid, colModel: {name: , index, width, align, ...}}
|
|
◆ rowObject : row data
|
|
*/
|
|
function col_custom_fmt(cellvalue, options, rowObject) {
|
|
//console.log("rid : "+ options.rowId + " colModel["+JSON.stringify(options.colModel)+"]");
|
|
var return_fmt = "";
|
|
cellvalue = fnc_checkNull(cellvalue);
|
|
|
|
if(options.colModel.name == "PURCHASE_ORDER_NO" ){ //발주NO
|
|
//return_fmt = '<a href="#" onclick="javascript:fn_formPopUp(\''+rowObject.OBJID+'\');">'+cellvalue+'</a>';
|
|
/* var url = "/purchaseOrder/deliveryResultHistoryPopUp.do?PURCHASE_ORDER_MASTER_OBJID="+rowObject.OBJID;
|
|
return_fmt = '<a href="#" onclick="javascript:fn_centerPopup(1600, 550, \''+url+'\', \'deliveryResultHistoryPopUp\');">'+cellvalue+'</a>'; */
|
|
|
|
return_fmt = '<a href="#" onclick="javascript:fn_formPopUp(\''+rowObject.OBJID+'\');">'+cellvalue+'</a>';
|
|
|
|
//}else if(options.colModel.name == "APPR_STATUS_NAME" ){ //상태
|
|
// var url = "/approval/approvalDetail.do?approvalObjId="+rowObject.APPROVAL_OBJID+"&routeObjId="+rowObject.ROUTE_OBJID;
|
|
// var empty = ($.isNumeric(cellvalue) && Number(cellvalue) > 0) ? "" : "empty_";
|
|
// return_fmt = '<a href="#" onclick="javascript:fn_centerPopup(650, 460, \''+url+'\', \'approvalDetailPopup\');">'+cellvalue+'</a>';
|
|
|
|
|
|
}else if(options.colModel.name == "DELIVERY_STATUS"){
|
|
var url = "/purchaseOrder/deliveryResultHistoryPopUp.do?PURCHASE_ORDER_MASTER_OBJID="+rowObject.OBJID+"&PURCHASE_ORDER_NO="+rowObject.PURCHASE_ORDER_NO;
|
|
return_fmt = '<a href="#" onclick="javascript:fn_centerPopup(2000, 550, \''+url+'\', \'deliveryResultHistoryPopUp\');">'+cellvalue+'</a>';
|
|
|
|
}
|
|
return return_fmt;
|
|
}
|
|
//등록,수정,뷰
|
|
function fn_formPopUp(objId){
|
|
var popup_width = 1260;
|
|
var popup_height = 1050;
|
|
|
|
var hiddenForm = document.hiddenForm;
|
|
var target = "purchaseOrderFormPopup_new";
|
|
var url = "/purchaseOrder/purchaseOrderFormPopup_new.do";
|
|
fn_centerPopup(popup_width, popup_height, "", target);
|
|
|
|
hiddenForm.PURCHASE_ORDER_MASTER_OBJID.value = objId;
|
|
hiddenForm.action = url;
|
|
hiddenForm.target = target;
|
|
hiddenForm.submit();
|
|
}
|
|
|
|
/**
|
|
unFormatter : grid1.getRowData(), getCell(n,colname) 에서 값만 나오게하는 함수
|
|
*/
|
|
function col_custom_fmt_un(cellvalue, options, cell) {
|
|
return cellvalue;
|
|
}
|
|
|
|
</script>
|
|
<body>
|
|
<form name="hiddenForm" id="hiddenForm" method="post">
|
|
<input type="hidden" name="checkArr" id="checkArr">
|
|
<input type="hidden" name="PURCHASE_ORDER_MASTER_OBJID" id="PURCHASE_ORDER_MASTER_OBJID">
|
|
</form>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="jsonLevel3_csmCategory">${code_map.jsonLevel3_csmCategory}</textarea><!-- 코드동적설정 -->
|
|
|
|
<div class="content-box">
|
|
<div class="content-box-s">
|
|
<div class="plm_menu_name">
|
|
<h2>
|
|
<span>입고관리_단가관리</span>
|
|
</h2>
|
|
</div>
|
|
<div id="plmSearchZon">
|
|
<table>
|
|
<tr>
|
|
<td><label for="Year">년도</label></td>
|
|
<td>
|
|
<select name="Year" id="Year" class="select2" autocomplete="off" style="width:190px;">
|
|
<option value="">선택</option>
|
|
<c:forEach begin="${sysYear-4}" end="${sysYear}" var="req_year">
|
|
<option value="${req_year}"${param.Year eq req_year ? 'selected':'' }>${req_year}</option>
|
|
</c:forEach>
|
|
</select>
|
|
</td>
|
|
|
|
<td><label for="">고객사</label></td>
|
|
<td><select name="customer_cd" id="customer_cd" class="select2" autocomplete="off" style="width:250px;"><option value="">선택</option>${code_map.customer_cd}</select></td>
|
|
|
|
<td><label for="">고객사프로젝트명</label></td>
|
|
<td><input type="text" name="customer_project_name" id="customer_project_name" autocomplete="off" value="${param.custoer_project_name}" style="width:170px;"/></td>
|
|
|
|
<td><label for="">당사프로젝트번호</label></td>
|
|
<td><select name="project_no" id="project_no" class="select2" autocomplete="off" style="width:190px;"><option value="">선택</option>${code_map.project_no}</select></td>
|
|
|
|
<td><label for="">발주No.</label></td>
|
|
<td><input type="text" name="purchase_order_no" id="purchase_order_no" autocomplete="off" value="${param.purchase_order_no}" style="width:120px;"/></td>
|
|
|
|
<td><label for="">부품구분</label></td>
|
|
<td><select name="type" id="type" class="select2" autocomplete="off" style="width:120px;"><option value="">선택</option>${code_map.type}</select></td>
|
|
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class=""><label>입고요청일</label></td>
|
|
<td>
|
|
<input type="text" name="delivery_start_date" id="delivery_start_date" style="width:90px;" autocomplete="off" value="${param.delivery_start_date}" class="date_icon">~
|
|
<input type="text" name="delivery_end_date" id="delivery_end_date" style="width:90px;" autocomplete="off" value="${param.delivery_end_date }" class="date_icon">
|
|
</td>
|
|
|
|
<td><label for="">공급업체</label></td>
|
|
<td><select name="partner_objid" id="partner_objid" class="select2" autocomplete="off" style="width:250px;"><option value="">선택</option>${code_map.partner_objid}</select></td>
|
|
|
|
<td><label for="">구매담당자</label></td>
|
|
<td><select name="sales_mng_user_id" id="sales_mng_user_id" class="select2" autocomplete="off" style="width:170px;"><option value="">선택</option>${code_map.sales_mng_user_id}</select></td>
|
|
|
|
<td class=""><label>발주일</label></td>
|
|
<td>
|
|
<input type="text" name="reg_start_date" id="reg_start_date" style="width:90px;" autocomplete="off" value="${param.reg_start_date}" class="date_icon">~
|
|
<input type="text" name="reg_end_date" id="reg_end_date" style="width:90px;" autocomplete="off" value="${param.reg_end_date }" class="date_icon">
|
|
</td>
|
|
|
|
<td><label for="">입고결과</label></td>
|
|
<td>
|
|
<select name="delivery_status" id="delivery_status" class="select2" autocomplete="off" style="width:120px;">
|
|
<option value="">선택</option>
|
|
<option value="입고중">입고중</option>
|
|
<option value="입고완료">입고완료</option>
|
|
<option value="지연">지연</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<section class="contents_page_basic_margin">
|
|
<div class="btn_wrap">
|
|
<div class="plm_btn_wrap">
|
|
<!-- <input type="button" class="plm_btns" value="수입검사등록" id="btnAccept"> -->
|
|
<input type="button" class="plm_btns" value="단가등록" id="btnReg">
|
|
<input type="button" class="plm_btns" value="조회" id="btnSearch">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="plm_table_wrap" style="overflow-x: auto;">
|
|
<table id="grid1"></table>
|
|
<!-- <div id="grid1Pager"></div> -->
|
|
<textarea style="width:0px; height:0px; visibility: hidden;" id="grid1Data">${LIST}<c:if test="${empty LIST}">[]</c:if></textarea><!-- [{},{},{}] -->
|
|
</div>
|
|
|
|
<div class="pdm_page">${PAGE_HTML}</div>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</body>
|
|
</html> |