- 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
375 lines
14 KiB
Plaintext
375 lines
14 KiB
Plaintext
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
|
<%@ page import="com.pms.common.utils.*"%>
|
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
|
<%@ page import="java.util.*" %>
|
|
<%@include file= "/init.jsp" %>
|
|
<%
|
|
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
|
|
String userId = CommonUtils.checkNull(person.getUserId());
|
|
%>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<title><%=Constants.SYSTEM_NAME%></title>
|
|
</head>
|
|
<script>
|
|
$(function() {
|
|
$(document).ready(function() {
|
|
$("#btnClose").click(function(){
|
|
self.close(0);
|
|
});
|
|
|
|
$("#btnReg").click(function(){
|
|
fn_save();
|
|
});
|
|
|
|
fn_getPurchaseOrderTargetPartList();
|
|
|
|
fnc_datepickForName();
|
|
|
|
$("input[numberOnly='']")
|
|
.each(function(){
|
|
$(this).css({'text-align':'center'})
|
|
})
|
|
.on("keyup", function() {
|
|
$(this).val(fnc_addComma($(this).val().replace(/[^0-9]/g,"")));
|
|
});
|
|
});
|
|
});
|
|
|
|
</script>
|
|
<script>
|
|
|
|
function fn_getPurchaseOrderTargetPartList(){
|
|
var appendText = "";
|
|
$("#partListArea").empty();
|
|
|
|
$.ajax({
|
|
url:"/purchaseOrder/getPurchaseOrderTargetPartList.do",
|
|
type:"POST",
|
|
data:{"checkArr":"${param.checkArr}"},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
var resultData = data;
|
|
|
|
if(0 < resultData.length){
|
|
|
|
$.each(resultData, function(i){
|
|
var RNUM = fnc_checkNull(resultData[i].RNUM);
|
|
var PURCHASE_ORDER_NO = fnc_checkNull(resultData[i].PURCHASE_ORDER_NO);
|
|
var OBJID = fnc_checkNull(resultData[i].OBJID);
|
|
var PART_OBJID = fnc_checkNull(resultData[i].PART_OBJID);
|
|
var PART_NO = fnc_checkNull(resultData[i].PART_NO);
|
|
var LD_PART_OBJID = fnc_checkNull(resultData[i].LD_PART_OBJID); //장납기부품OBJID
|
|
var DPP_OBJID = fnc_checkNull(resultData[i].DPP_OBJID); //단가등록 OBJID
|
|
var PART_NAME = fnc_checkNull(resultData[i].PART_NAME);
|
|
var PURCHASE_ORDER_MASTER_OBJID = fnc_checkNull(resultData[i].PURCHASE_ORDER_MASTER_OBJID);
|
|
var SPEC = fnc_checkNull(resultData[i].SPEC);
|
|
var MAKER = fnc_checkNull(resultData[i].MAKER);
|
|
var QTY = fnc_checkNull(resultData[i].ORDER_QTY);
|
|
|
|
//var NON_ARRIVAL_QTY = fnc_checkNullDefaultValue(resultData[i].NON_ARRIVAL_QTY,QTY);
|
|
var NON_ARRIVAL_QTY = fnc_checkNull(resultData[i].NON_ARRIVAL_QTY);
|
|
var TOTAL_DELIVERY_QTY = fnc_checkNull(resultData[i].TOTAL_DELIVERY_QTY);
|
|
var TOTAL_DEFECT_QTY = fnc_checkNull(resultData[i].TOTAL_DEFECT_QTY);
|
|
|
|
var PARTNER_NAME = fnc_checkNull(resultData[i].PARTNER_NAME);
|
|
var PARTNER_PRICE = fnc_checkNull(resultData[i].PARTNER_PRICE);
|
|
//var PRICE_SUM = fnc_checkNull(resultData[i].PRICE_SUM);
|
|
|
|
var REMARK = fnc_checkNull(resultData[i].REMARK);
|
|
var TARGET_TITLE = fnc_checkNull(resultData[i].TARGET_TITLE);
|
|
var UNIT_TITLE = fnc_checkNull(resultData[i].UNIT_TITLE);
|
|
var UNIT = fnc_checkNull(resultData[i].UNIT);
|
|
|
|
/*
|
|
var POM_DELIVERY_DATE = fnc_checkNull(resultData[i].POM_DELIVERY_DATE); //입고요청일
|
|
var DELIVERY_DATE = fnc_checkNull(resultData[i].DELIVERY_DATE);
|
|
var DH_OBJID = fnc_checkNull(resultData[i].DELIVERY_HISTORY_OBJID);
|
|
var DELIVERY_PLAN_DATE = fnc_checkNull(resultData[i].DELIVERY_PLAN_DATE);
|
|
*/
|
|
|
|
var PARTNER_PRICE = fnc_checkNullDefaultValue(resultData[i].DPP_PRICE, resultData[i].PARTNER_PRICE);
|
|
var PRICE1 = fnc_checkNullDefaultValue(resultData[i].DPP_PRICE1, resultData[i].PRICE1);
|
|
var PRICE2 = fnc_checkNullDefaultValue(resultData[i].DPP_PRICE2, resultData[i].PRICE2);
|
|
var PRICE3 = fnc_checkNullDefaultValue(resultData[i].DPP_PRICE3, resultData[i].PRICE3);
|
|
//var PRICE4 = fnc_checkNull(resultData[i].PRICE4);
|
|
var PRICE_SUM = fnc_checkNullDefaultValue(resultData[i].DPP_PRICE_SUM, resultData[i].PRICE_SUM);
|
|
|
|
appendText += " <tr class='dataTr' id='"+OBJID+"'>";
|
|
appendText += " <input type='hidden' name='OBJID' value='"+OBJID+"'>";
|
|
appendText += " <input type='hidden' name='OBJID_"+OBJID+"' value='"+OBJID+"'>";
|
|
appendText += " <input type='hidden' name='PART_OBJID_"+OBJID+"' value='"+PART_OBJID+"'>";
|
|
appendText += " <input type='hidden' name='LD_PART_OBJID_"+OBJID+"' value='"+LD_PART_OBJID+"'>";
|
|
appendText += " <input type='hidden' name='DPP_OBJID_"+OBJID+"' value='"+DPP_OBJID+"'>";
|
|
//appendText += " <input type='hidden' name='DH_OBJID_"+OBJID+"' value='"+DH_OBJID+"'>";
|
|
//appendText += " <input type='hidden' name='DB_NON_ARRIVAL_QTY_"+OBJID+"' id='DB_NON_ARRIVAL_QTY_"+OBJID+"' value='"+NON_ARRIVAL_QTY+"'>";
|
|
//appendText += " <input type='hidden' name='DB_TOTAL_DELIVERY_QTY_"+OBJID+"' id='DB_TOTAL_DELIVERY_QTY_"+OBJID+"' value='"+TOTAL_DELIVERY_QTY+"'>";
|
|
//appendText += " <input type='hidden' name='DB_TOTAL_DEFECT_QTY_"+OBJID+"' id='DB_TOTAL_DEFECT_QTY_"+OBJID+"' value='"+TOTAL_DEFECT_QTY+"'>";
|
|
|
|
/* No */
|
|
appendText += " <td title='"+RNUM+"' class='align_c'>"+RNUM+"</td>";
|
|
/* 발주번호 */
|
|
appendText += " <td title='"+PURCHASE_ORDER_NO+"' class='align_c'>"+PURCHASE_ORDER_NO+"</td>";
|
|
/* 관리번호 */
|
|
appendText += " <td class='align_l' title='"+PART_NO+"' class='align_c'>"+PART_NO+"</td>";
|
|
|
|
/* 품명(재질,규격)/품번 */
|
|
//appendText += " <td class='align_l' title='"+TARGET_TITLE+"'>";
|
|
////appendText += " <a href='#' onclick=\"fn_openPartPopup('"+PART_OBJID+"');\">"+TARGET_TITLE+"</a>";
|
|
//appendText += TARGET_TITLE;
|
|
//appendText += " </td>";
|
|
|
|
/* 품명 */
|
|
appendText += " <td class='align_l' title='"+PART_NAME+"'>";
|
|
appendText += " <input type='hidden' name='PART_NAME_"+OBJID+"' id='PART_NAME_"+OBJID+"' value='"+PART_NAME+"'>";
|
|
appendText += PART_NAME;
|
|
appendText += " </td>";
|
|
|
|
/* 규격 */
|
|
appendText += " <td class='align_l' title='"+SPEC+"'>";
|
|
appendText += " <input type='hidden' name='SPEC_"+OBJID+"' id='SPEC_"+OBJID+"' value='"+SPEC+"'>";
|
|
appendText += SPEC;
|
|
appendText += " </td>";
|
|
|
|
/* Maker */
|
|
appendText += " <td class='align_l' title='"+MAKER+"'>";
|
|
appendText += " <input type='hidden' name='MAKER_"+OBJID+"' id='MAKER_"+OBJID+"' value='"+MAKER+"'>";
|
|
appendText += MAKER;
|
|
appendText += " </td>";
|
|
|
|
/* 단위 */
|
|
//appendText += " <td title='"+UNIT_TITLE+"' class='align_c'>"+UNIT_TITLE+"</td>";
|
|
appendText += " <td class='align'>";
|
|
appendText += " <input type='hidden' name='UNIT_"+OBJID+"' id='UNIT_"+OBJID+"' value='"+UNIT+"'>";
|
|
appendText += " "+UNIT_TITLE;
|
|
appendText += " </td>";
|
|
|
|
/* 업체 */
|
|
//appendText += " <td title='"+PARTNER_NAME+"' class='align_c'>"+PARTNER_NAME+"</td>";
|
|
|
|
/* 발주수량 */
|
|
appendText += " <td class='align_c'>";
|
|
appendText += " <input type='hidden' name='ORDER_QTY_"+OBJID+"' id='ORDER_QTY_"+OBJID+"' value='"+QTY+"'>";
|
|
appendText += " "+numberWithCommas(QTY);
|
|
appendText += " </td>";
|
|
|
|
/* 단가 공급업체 */
|
|
appendText += " <td class='align_c'>";
|
|
appendText += " <input style='text-align:center' type='text' name='PARTNER_PRICE_"+OBJID+"' id='PARTNER_PRICE_"+OBJID+"' value='"+numberWithCommas(PARTNER_PRICE)+"' onchange='fn_calc("+OBJID+");' numberOnly>";
|
|
//appendText += " "+numberWithCommas(PARTNER_PRICE);
|
|
appendText += " </td>";
|
|
/* 단가 레이져업체 */
|
|
appendText += " <td class='align_c'>";
|
|
appendText += " <input style='text-align:center' type='text' name='PRICE1_"+OBJID+"' id='PRICE1_"+OBJID+"' value='"+numberWithCommas(PRICE1)+"' onchange='fn_calc("+OBJID+");' numberOnly>";
|
|
//appendText += " "+numberWithCommas(PRICE1);
|
|
appendText += " </td>";
|
|
/* 단가 용접업체 */
|
|
appendText += " <td class='align_c'>";
|
|
appendText += " <input style='text-align:center' type='text' name='PRICE2_"+OBJID+"' id='PRICE2_"+OBJID+"' value='"+numberWithCommas(PRICE2)+"' onchange='fn_calc("+OBJID+");' numberOnly>";
|
|
//appendText += " "+numberWithCommas(PRICE2);
|
|
appendText += " </td>";
|
|
/* 단가 가공업체 */
|
|
appendText += " <td>";
|
|
appendText += " <input style='text-align:center' type='text' name='PRICE3_"+OBJID+"' id='PRICE3_"+OBJID+"' value='"+numberWithCommas(PRICE3)+"' onchange='fn_calc("+OBJID+");' numberOnly>";
|
|
//appendText += " "+numberWithCommas(PRICE3);
|
|
appendText += " <input type='hidden' name='PRICE_SUM_"+OBJID+"' id='PRICE_SUM_"+OBJID+"' value='"+numberWithCommas(PRICE_SUM)+"'>";
|
|
appendText += " </td>";
|
|
|
|
/* 공급가 */
|
|
appendText += " <td class='align_r' id='TD_PRICE_SUM_"+OBJID+"'>";
|
|
appendText += " "+numberWithCommas(PRICE_SUM);
|
|
appendText += " </td>";
|
|
|
|
/* 부가세 */
|
|
appendText += " <td class='align_r' id='TD_VAT_PRICE_SUM_"+OBJID+"'>";
|
|
appendText += " "+numberWithCommas(Number(PRICE_SUM)*0.1);
|
|
appendText += " </td>";
|
|
|
|
appendText += " </tr>";
|
|
});
|
|
|
|
}else{
|
|
appendText += "<tr>";
|
|
appendText += "<td colspan='14'>조회된 내용이 없습니다.</td>";
|
|
appendText +="</tr>";
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
|
|
});
|
|
|
|
$("#partListArea").append(appendText);
|
|
}
|
|
|
|
function fn_save(){
|
|
var formData = $("#form1").serialize();
|
|
|
|
//if(fn_checkInputData()){
|
|
|
|
if(confirm("저장하시겠습니까?")){
|
|
|
|
$("input[numberOnly='']").each(function(){
|
|
$(this).val($(this).val().replace(/,/gi,""));
|
|
});
|
|
$("input[name*='PRICE']").each(function(){
|
|
$(this).val($(this).val().replace(/,/gi,""));
|
|
});
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/purchaseOrder/saveDeliveryResultCostInfo.do",
|
|
data: $("#form1").serialize(),
|
|
dataType:"json",
|
|
success:function(data){
|
|
Swal.fire(data.msg);
|
|
if(data.result){
|
|
opener.fn_search();
|
|
location.reload();
|
|
//self.close();
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
//}
|
|
}
|
|
}
|
|
|
|
function fn_checkInputData(){
|
|
|
|
var returnFlag = true;
|
|
|
|
$("input[name=OBJID]").each(function(i) {
|
|
var targetObjId = $(this).val();
|
|
|
|
var PRICE1 = Number($("#PRICE1_" +targetObjId).val()); //단가
|
|
var PRICE2 = Number($("#PRICE2_" +targetObjId).val()); //단가
|
|
var PRICE3 = Number($("#PRICE3_" +targetObjId).val()); //단가
|
|
|
|
if("" == PRICE1){
|
|
Swal.fire("단가를 입력해 주세요.");
|
|
returnFlag = false;
|
|
return false;
|
|
}
|
|
});
|
|
|
|
return returnFlag;
|
|
}
|
|
|
|
//자동계산
|
|
function fn_calc(objid){
|
|
|
|
var PARTNER_PRICE = Number($("#PARTNER_PRICE_" +objid).val().replace(/,/gi,"")); //단가
|
|
var PRICE1 = Number($("#PRICE1_" +objid).val().replace(/,/gi,"")); //단가
|
|
var PRICE2 = Number($("#PRICE2_" +objid).val().replace(/,/gi,"")); //단가
|
|
var PRICE3 = Number($("#PRICE3_" +objid).val().replace(/,/gi,"")); //단가
|
|
//var PRICE4 = Number($("#PRICE4" +objid).val()); //단가
|
|
var ORDER_QTY = Number($("#ORDER_QTY_" +objid).val().replace(/,/gi,"")); //발주수량
|
|
|
|
var PRICE_SUM = (PRICE1 + PRICE2 + PRICE3 + PARTNER_PRICE) * ORDER_QTY;
|
|
|
|
$("#PRICE_SUM_"+objid).val(numberWithCommas(PRICE_SUM+""));
|
|
$("#TD_PRICE_SUM_"+objid).html(numberWithCommas(PRICE_SUM+""));
|
|
$("#TD_VAT_PRICE_SUM_"+objid).html(numberWithCommas(Number(PRICE_SUM)*0.1 +""));
|
|
|
|
}
|
|
|
|
</script>
|
|
<style>
|
|
.input_title {border-left:1px solid #ccc;}
|
|
.input_sub_title {border-left:1px solid #ccc;}
|
|
.pmsPopupForm tr:last-child td{border-bottom:1px solid #ccc;}
|
|
</style>
|
|
|
|
<body>
|
|
<form name="hiddenForm" id="hiddenForm" action="" method="post">
|
|
<input type="hidden" name="targetObjId" />
|
|
<input type="hidden" name="docType" />
|
|
<input type="hidden" name="docTypeName" />
|
|
<input type="hidden" name="TITLE" />
|
|
<input type="hidden" name="callbackFnc" />
|
|
<input type="hidden" name="OBJID" />
|
|
<input type="hidden" name="status" value="0" />
|
|
</form>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="PURCHASE_ORDER_MASTER_OBJID" value="${paramMap.PURCHASE_ORDER_MASTER_OBJID }" />
|
|
|
|
<section>
|
|
<div class="plm_menu_name" style="display:flex;">
|
|
<h2>
|
|
<span>단가 등록</span>
|
|
</h2>
|
|
</div>
|
|
<div id="businessPopupFormWrap" style="z-index:99;">
|
|
<table class="pmsPopupForm" style="margin-top:10px;">
|
|
<tr>
|
|
<td class="input_title">
|
|
<label for="">입고 품목</label>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div class="in_table_scroll_wrap _table2" style="height:400px;width:100%;">
|
|
<table class="plm_table">
|
|
<colgroup>
|
|
<col width="30px" />
|
|
<col width="120px" />
|
|
<col width="120px" />
|
|
<col width="170px" />
|
|
<col width="170px" />
|
|
<col width="80px" />
|
|
<col width="50px" />
|
|
<col width="50px" />
|
|
|
|
<col width="60px" />
|
|
<col width="60px" />
|
|
<col width="60px" />
|
|
<col width="60px" />
|
|
<col width="80px" />
|
|
<col width="60px" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr class="plm_thead">
|
|
<td rowspan="" colspan="8">발주서 상세</td>
|
|
<td rowspan="" colspan="4">단가</td>
|
|
<td rowspan="2" colspan="">공급가</td>
|
|
<td rowspan="2" colspan="">부가세</td>
|
|
</tr>
|
|
<tr class="plm_thead">
|
|
<td>No</td>
|
|
<td>발주번호</td>
|
|
<td>품번</td>
|
|
<td>품명</td>
|
|
<td>규격</td>
|
|
<td>Maker</td>
|
|
<td>단위</td>
|
|
<td>수량</td>
|
|
|
|
<td>공급업체</td>
|
|
<td>레이져업체</td>
|
|
<td>용접업체</td>
|
|
<td>가공업체</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="partListArea">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="btn_wrap">
|
|
<div class="plm_btn_wrap_center">
|
|
<input type="button" value="저장" class="plm_btns" id="btnReg">
|
|
<input type="button" value="닫기" id="btnClose" class="plm_btns">
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</form>
|
|
</body>
|
|
</html> |