- 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
959 lines
30 KiB
Plaintext
959 lines
30 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>
|
|
|
|
var grid;
|
|
|
|
$(function() {
|
|
$(document).ready(function() {
|
|
$("#btnClose").click(function(){
|
|
self.close(0);
|
|
});
|
|
|
|
$("#btnReg").click(function(){
|
|
fn_save();
|
|
});
|
|
|
|
$("#btnEdit").click(function(){
|
|
fn_edit();
|
|
});
|
|
|
|
$("#btnAdd").click(function(){
|
|
//파트 추가를 위한 팝업을 호출한다.
|
|
fn_openPartPopUp();
|
|
});
|
|
|
|
$("#btnDelete").click(function(){
|
|
fn_deleteRow();
|
|
});
|
|
|
|
$("#btnDrawingDownload").click(function(){
|
|
fn_getDrawingDownload();
|
|
});
|
|
|
|
$(document).on("change", ".PARTNER_OBJID", function(){
|
|
var targetObjId = $(this).attr("data-OBJID");
|
|
|
|
var partnerPrice = $("option:selected",this).attr("data-PARTNER_PRICE");
|
|
|
|
$("#PARTNER_PRICE_"+targetObjId).val(partnerPrice);
|
|
});
|
|
|
|
fnc_getCodeListAppend("0000259","REQUEST_STATUS","${resultMap.REQUEST_STATUS}");
|
|
|
|
fnc_getUserList2("SALES_MNG_USER_ID", "${resultMap.SALES_MNG_USER_ID}");
|
|
|
|
$("#SALES_MNG_USER_ID").change(function(){
|
|
fn_setSalesMngUserInfo();
|
|
});
|
|
|
|
if("" != "${resultMap.SALES_MNG_USER_ID}"){
|
|
fn_setSalesMngUserInfo();
|
|
}
|
|
|
|
fn_getSupplyCodeListAppend("PARTNER_OBJID", "${resultMap.PARTNER_OBJID}");
|
|
|
|
fnc_getAjaxProductMgmtList("PRODUCT_CODE", "", "", "${resultMap.PRODUCT_CODE}");
|
|
|
|
$("#PARTNER_OBJID").change(function(){
|
|
fn_setSupplyInfoAppend(this.value);
|
|
});
|
|
|
|
if("" != "${resultMap.PARTNER_OBJID}"){
|
|
fn_setSupplyInfoAppend("${resultMap.PARTNER_OBJID}");
|
|
}
|
|
|
|
fn_getPurchaseOrderTargetPartList();
|
|
|
|
fnc_setFileDropZone("salesMngRequestDropZone", "${resultMap.OBJID}", "SALES_MNG_REQUEST", "구매의뢰서 첨부파일", "fileAreaDraw",false,null,null);
|
|
fileAreaDraw();
|
|
|
|
fnc_datepick();
|
|
|
|
fn_setTotalAmount();
|
|
|
|
$("#salesMngRequestDropZone").hide();
|
|
|
|
if("print" == "${param.actionType}"){
|
|
window.print();
|
|
}
|
|
|
|
fn_getApprovalLine();
|
|
|
|
$("#SALES_MNG_USER_ID").hide();
|
|
});
|
|
});
|
|
|
|
</script>
|
|
<script>
|
|
|
|
function fn_setSalesMngUserInfo(){
|
|
var salesMngUserObj = $("#SALES_MNG_USER_ID option:selected");
|
|
|
|
if("" != salesMngUserObj.val()){
|
|
var salesMngUserEmail = fnc_checkNull(salesMngUserObj.attr("data-EMAIL"));
|
|
var salesMngUserTel = fnc_checkNull(salesMngUserObj.attr("data-TEL"));
|
|
var salesMngUserHP = fnc_checkNull(salesMngUserObj.attr("data-HP"));
|
|
|
|
$("#SALES_USER_TEL").empty();
|
|
$("#SALES_USER_EMAIL").empty();
|
|
$("#SALES_USER_HP").empty();
|
|
|
|
$("#SALES_USER_TEL").append(salesMngUserTel);
|
|
$("#SALES_USER_EMAIL").append(salesMngUserEmail);
|
|
$("#SALES_USER_HP").append(salesMngUserHP);
|
|
}
|
|
}
|
|
|
|
//결재정보를 가져온다.
|
|
function fn_getApprovalLine(){
|
|
var scheduleList = new Array();
|
|
|
|
<c:forEach items="${approvalList}" var="approvalItem">
|
|
var seq = "${approvalItem.SEQ}";
|
|
var targetUserName = "${approvalItem.TARGET_USER_NAME}";
|
|
var procDate = "${approvalItem.PROC_DATE}";
|
|
|
|
if(1 == seq){
|
|
$("#reviewerName").append(targetUserName);
|
|
$("#reviewerDate").append(procDate);
|
|
}
|
|
|
|
if(2 == seq){
|
|
$("#confirmName").append(targetUserName);
|
|
$("#confirmDate").append(procDate);
|
|
}
|
|
</c:forEach>
|
|
}
|
|
|
|
//금액계산
|
|
function fn_setSupplyUnitPriceCalculation(obj){
|
|
$("SUPPLY_UNIT_PRICE_"+targetObjId).empty();
|
|
|
|
var targetObjId = $(obj).attr("data-OBJID");
|
|
var supplyUnitPrice = 0;
|
|
var orderQty = fnc_checkNull($("#QTY_"+targetObjId).val());
|
|
var partnerPrice = fnc_checkNull($("#PARTNER_PRICE_"+targetObjId).val());
|
|
|
|
if((""!= orderQty && 0 < orderQty) && (""!= partnerPrice && 0 < partnerPrice)){
|
|
supplyUnitPrice = (Number(orderQty)*Number(partnerPrice));
|
|
}
|
|
|
|
$("#SUPPLY_UNIT_PRICE_"+targetObjId).val(supplyUnitPrice);
|
|
|
|
fn_setTotalAmount();
|
|
|
|
}
|
|
|
|
//금액계산
|
|
function fn_setTotalAmount(){
|
|
$("#TOTAL_AMOUNT").empty();
|
|
|
|
$("#TOTAL_AMOUNT_PRICE").empty();
|
|
$("#TOTAL_AMOUNT_VAT").empty();
|
|
$("#TOTAL_AMOUNT_SUM").empty();
|
|
|
|
var totalAmount = 0;
|
|
var totalAmountVat = 0;
|
|
|
|
$("input[name=OBJID]").each(function(i) {
|
|
var targetObjId = $(this).val();
|
|
|
|
console.log(targetObjId);
|
|
|
|
var supplyUnitPrice = $("#SUPPLY_UNIT_PRICE_"+targetObjId).val();
|
|
|
|
if("" != supplyUnitPrice && null != supplyUnitPrice && 0 < supplyUnitPrice){
|
|
totalAmount = Number(totalAmount)+Number(supplyUnitPrice);
|
|
}
|
|
});
|
|
|
|
$("#TOTAL_AMOUNT").append(totalAmount);
|
|
|
|
$("#TOTAL_AMOUNT_PRICE").append(totalAmount);
|
|
|
|
if(!isNaN(totalAmount)){
|
|
|
|
totalAmountVat = ((totalAmount/1.1)*0.1).toFixed(2);
|
|
|
|
console.log("totalAmount:"+totalAmount);
|
|
console.log("totalAmountVat:"+totalAmountVat);
|
|
|
|
$("#TOTAL_AMOUNT_VAT").append(totalAmountVat);
|
|
$("#TOTAL_AMOUNT_SUM").append(Number(totalAmount)+Number(totalAmountVat));
|
|
}
|
|
}
|
|
|
|
|
|
//공급업체 정보목록을 가져온다.
|
|
function fn_getSupplyCodeListAppend(selectboxId,selectedVal){
|
|
$.ajax({
|
|
url:"/common/getAdminSupplyCodeList.do",
|
|
type:"POST",
|
|
data:{},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
|
|
var resultList = data;
|
|
|
|
$("#"+selectboxId).empty();
|
|
$("#"+selectboxId).append("<option value=''>선택</option>");
|
|
|
|
if(0 < resultList.length){
|
|
|
|
for (var i = 0; i < resultList.length; i++) {
|
|
var commonCodeId = resultList[i].CODE;
|
|
var commonCodeName = resultList[i].CODE_NAME;
|
|
$("#"+selectboxId).append("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
|
|
}
|
|
$("#"+selectboxId).val(selectedVal);
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
//공급업체 정보목록을 가져온다.
|
|
function fn_setSupplyInfoAppend(targetValue){
|
|
|
|
$("#PARTNER_TEL").empty();
|
|
$("#PARTNER_FAX").empty();
|
|
|
|
$("#CHARGER_NAME").empty();
|
|
$("#CHARGER_PHONE").empty();
|
|
$("#CHARGER_TEL").empty();
|
|
$("#CHARGER_EMAIL").empty();
|
|
|
|
if("" != targetValue){
|
|
$.ajax({
|
|
url:"/common/getAdminSupplyCodeList.do",
|
|
type:"POST",
|
|
data:{"SUPPLY_OBJID":targetValue,"CHARGER_TYPE":"0000330"},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
var resultList = data;
|
|
if(0 < resultList.length){
|
|
for (var i = 0; i < resultList.length; i++) {
|
|
var supplyTelNo = fnc_checkNull(resultList[i].SUPPLY_TEL_NO);
|
|
var supplyFaxNo = fnc_checkNull(resultList[i].SUPPLY_FAX_NO);
|
|
|
|
var chargerName = fnc_checkNull(resultList[i].CHARGER_NAME);
|
|
var chargerPhone = fnc_checkNull(resultList[i].PHONE);
|
|
var chargerTel = fnc_checkNull(resultList[i].TEL);
|
|
var chargerFax = fnc_checkNull(resultList[i].FAX);
|
|
var chargerEmail = fnc_checkNull(resultList[i].EMAIL);
|
|
|
|
$("#PARTNER_TEL").append(supplyTelNo);
|
|
$("#PARTNER_FAX").append(supplyFaxNo);
|
|
|
|
$("#CHARGER_NAME").append(chargerName);
|
|
$("#CHARGER_PHONE").append(chargerPhone);
|
|
$("#CHARGER_TEL").append(chargerTel);
|
|
$("#CHARGER_EMAIL").append(chargerEmail);
|
|
}
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function fn_setSupplyCodeInfo(targetAreaName,partnerObjId){
|
|
$.ajax({
|
|
url:"/common/getSupplyCodeList.do",
|
|
type:"POST",
|
|
data:{},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
|
|
var resultList = data;
|
|
|
|
$("#"+selectboxId).empty();
|
|
$("#"+selectboxId).append("<option value=''>선택</option>");
|
|
|
|
if(0 < resultList.length){
|
|
|
|
for (var i = 0; i < resultList.length; i++) {
|
|
var commonCodeId = resultList[i].CODE_ID;
|
|
var commonCodeName = resultList[i].CODE_NAME;
|
|
$("#"+selectboxId).append("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
|
|
}
|
|
$("#"+selectboxId).val(selectedVal);
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
|
|
function fn_getPurchaseOrderTargetPartList(){
|
|
var appendText = "";
|
|
|
|
var requestStatus = $("#STATUS").val();
|
|
|
|
$("#partListArea").empty();
|
|
|
|
$.ajax({
|
|
url:"/purchaseOrder/getPurchaseOrderTargetPartList.do",
|
|
type:"POST",
|
|
data:{"PURCHASE_ORDER_MASTER_OBJID":"${resultMap.OBJID}"},
|
|
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 OBJID = fnc_checkNull(resultData[i].OBJID);
|
|
var PART_OBJID = fnc_checkNull(resultData[i].PART_OBJID);
|
|
var PURCHASE_ORDER_MASTER_OBJID = fnc_checkNull(resultData[i].PURCHASE_ORDER_MASTER_OBJID);
|
|
var QTY = fnc_checkNull(resultData[i].ORDER_QTY);
|
|
var PARTNER_PRICE = fnc_checkNull(resultData[i].PARTNER_PRICE);
|
|
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 SUPPLY_UNIT_PRICE = 0;
|
|
|
|
if((""!= QTY && 0 < QTY) && (""!= PARTNER_PRICE && 0 < PARTNER_PRICE)){
|
|
SUPPLY_UNIT_PRICE = (QTY*PARTNER_PRICE);
|
|
}
|
|
|
|
appendText += " <tr class='dataTr' id='"+OBJID+"'>";
|
|
appendText += " <input type='hidden' name='OBJID' value='"+OBJID+"' class='TARGET_OBJID' data-PART_OBJID='"+PART_OBJID+"'>";
|
|
appendText += " <input type='hidden' name='PART_OBJID_"+OBJID+"' value='"+PART_OBJID+"'>";
|
|
|
|
appendText += " <td title='"+RNUM+"' class='align_c'>"+RNUM+"</td>";
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <a href='#' onclick=\"fn_openPartPopup('"+PART_OBJID+"');\">"+TARGET_TITLE+"</a>";
|
|
appendText += " </td>";
|
|
|
|
appendText += " <td title='"+UNIT_TITLE+"' class='align_c'>"+UNIT_TITLE+"</td>";
|
|
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <input type='number' name='QTY_"+OBJID+"' id='QTY_"+OBJID+"' value='"+QTY+"' onkeyUp='fn_setSupplyUnitPriceCalculation(this);' data-OBJID='"+OBJID+"' readonly>";
|
|
appendText += " </td>";
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <input type='text' name='PARTNER_PRICE_"+OBJID+"' id='PARTNER_PRICE_"+OBJID+"' value='"+PARTNER_PRICE+"' onkeyUp='fn_setSupplyUnitPriceCalculation(this);' data-OBJID='"+OBJID+"' readonly>";
|
|
appendText += " </td>";
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <input type='text' name='SUPPLY_UNIT_PRICE_"+OBJID+"' id='SUPPLY_UNIT_PRICE_"+OBJID+"' value='"+SUPPLY_UNIT_PRICE+"' readonly>";
|
|
appendText += " </td>";
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <input type='text' name='REMARK_"+OBJID+"' id='REMARK_"+OBJID+"' value='"+REMARK+"' readonly>";
|
|
appendText += " </td>";
|
|
appendText += " </tr>";
|
|
});
|
|
|
|
}else{
|
|
appendText += "<tr>";
|
|
appendText += "<td colspan='9'>조회된 내용이 없습니다.</td>";
|
|
appendText +="</tr>";
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
|
|
});
|
|
|
|
$("#partListArea").append(appendText);
|
|
|
|
}
|
|
|
|
/* 파트 추가 시 그리드에 Row 추가 */
|
|
function fn_deleteRow(){
|
|
$(".chkBox:checked").length;
|
|
|
|
if(0 < $(".chkBox:checked").length){
|
|
if(confirm("선택된 내용을 삭제하시겠습니까?")){
|
|
$(".chkBox:checked").each(function(i){
|
|
var targetObjId = $(this).val();
|
|
|
|
$("#"+targetObjId).remove();
|
|
});
|
|
}
|
|
}else{
|
|
Swal.fire("선택된 내용이 없습니다.");
|
|
return false;
|
|
}
|
|
|
|
fn_setTotalAmount();
|
|
|
|
}
|
|
|
|
function fn_openPartPopUp(){
|
|
window.open("/partMng/partMngListPopUp.do?callBackFn=fn_addRow&callType=purchaseOrder", "tempPartListPopup", "width=1200, height=750, toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
|
|
}
|
|
|
|
/* 파트 추가 시 그리드에 Row 추가 */
|
|
function fn_addRow(rowData){
|
|
|
|
var appendText = "";
|
|
|
|
if(0 == $(".TARGET_OBJID").length){
|
|
$("#partListArea").empty();
|
|
}
|
|
|
|
var RNUM = ($(".TARGET_OBJID").length+1);
|
|
var OBJID = fnc_checkNull(fnc_createObjId());
|
|
var PART_OBJID = fnc_checkNull(rowData.get("PART_OBJID"));
|
|
var QTY = 0;
|
|
var PARTNER_PRICE = 0;
|
|
var REMARK = "";
|
|
|
|
var PART_NAME = fnc_checkNull(rowData.get("PART_NAME"));
|
|
var PART_NO = fnc_checkNull(rowData.get("PART_NO"));
|
|
var MATERIAL = fnc_checkNull(rowData.get("MATERIAL"));
|
|
var SPEC = fnc_checkNull(rowData.get("SPEC"));
|
|
|
|
var TARGET_TITLE = PART_NAME+"("+MATERIAL+","+SPEC+")/"+PART_NO;
|
|
var UNIT_TITLE = fnc_checkNull(rowData.get("UNIT_TITLE"));
|
|
var SUPPLY_UNIT_PRICE = 0;
|
|
|
|
appendText += " <tr class='dataTr' id='"+OBJID+"'>";
|
|
appendText += " <input type='hidden' name='OBJID' value='"+OBJID+"'>";
|
|
appendText += " <input type='hidden' name='PART_OBJID_"+OBJID+"' value='"+PART_OBJID+"'>";
|
|
|
|
appendText += " <td class='align_c'><input type='checkbox' name='OBJID_"+OBJID+"' value='"+OBJID+"' class='chkBox'></td>";
|
|
appendText += " <td title='"+RNUM+"' class='align_c'>"+RNUM+"</td>";
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <a href='#' onclick=\"fn_openPartPopup('"+PART_OBJID+"');\">"+TARGET_TITLE+"</a>";
|
|
appendText += " </td>";
|
|
|
|
appendText += " <td title='"+UNIT_TITLE+"' class='align_c'>"+UNIT_TITLE+"</td>";
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <input type='number' name='QTY_"+OBJID+"' id='QTY_"+OBJID+"' value='"+QTY+"' onkeyUp='fn_setSupplyUnitPriceCalculation(this);' data-OBJID='"+OBJID+"'>";
|
|
appendText += " </td>";
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <input type='text' name='PARTNER_PRICE_"+OBJID+"' id='PARTNER_PRICE_"+OBJID+"' value='"+PARTNER_PRICE+"' onkeyUp='fn_setSupplyUnitPriceCalculation(this);' data-OBJID='"+OBJID+"'>";
|
|
appendText += " </td>";
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <input type='text' name='SUPPLY_UNIT_PRICE_"+OBJID+"' id='SUPPLY_UNIT_PRICE_"+OBJID+"' value='"+SUPPLY_UNIT_PRICE+"' readonly>";
|
|
appendText += " </td>";
|
|
|
|
appendText += " <td class='align_l'>";
|
|
appendText += " <input type='text' name='REMARK_"+OBJID+"' id='REMARK_"+OBJID+"' value='"+REMARK+"'>";
|
|
appendText += " </td>";
|
|
appendText += " </tr>";
|
|
|
|
$("#partListArea").append(appendText);
|
|
}
|
|
|
|
//결재정보를 가져온다.
|
|
function fn_getApprovalLine(){
|
|
var scheduleList = new Array();
|
|
|
|
<c:forEach items="${approvalList}" var="approvalItem">
|
|
var seq = "${approvalItem.SEQ}";
|
|
var targetUserName = "${approvalItem.TARGET_USER_NAME}";
|
|
var procDate = "${approvalItem.PROC_DATE}";
|
|
|
|
if(1 == seq){
|
|
$("#reviewerName").append(targetUserName);
|
|
$("#reviewerDate").append(procDate);
|
|
}
|
|
|
|
if(2 == seq){
|
|
$("#confirmName").append(targetUserName);
|
|
$("#confirmDate").append(procDate);
|
|
}
|
|
</c:forEach>
|
|
}
|
|
|
|
function fileAreaDraw(){
|
|
fn_fileCallback2("salesMngRequest","SALES_MNG_REQUEST");
|
|
}
|
|
|
|
function fn_fileCallback2(areaId,fileType){
|
|
$.ajax({
|
|
url:"/common/getFileList.do",
|
|
type:"POST",
|
|
data:{"targetObjId":"${resultMap.OBJID}", "docType":fileType},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
|
|
if(0 < data.length){
|
|
|
|
//첨부파일 목록 영역 show
|
|
$("#"+areaId+"FileArea").empty();
|
|
|
|
if(0 < $("#"+areaId+"DefaultRow").length){
|
|
$("#"+areaId+"DefaultRow").hide();
|
|
}
|
|
|
|
$.each(data, function(i){
|
|
|
|
var appendText = "";
|
|
var path = data[i].FILE_PATH;
|
|
var fileName = data[i].SAVED_FILE_NAME;
|
|
var fileExt = data[i].UPPER_FILE_EXT;
|
|
appendText += "<colgroup>";
|
|
appendText +=" <col width='10%''>";
|
|
appendText +=" <col width='*'>";
|
|
appendText +=" <col width='20%'>";
|
|
appendText +=" </colgroup>";
|
|
appendText+= "<tr>";
|
|
appendText+= " <td>"+[i+1]+"</td>";
|
|
appendText+= " <td class='align_l'>";
|
|
appendText+= " <a href='javascript:fnc_downloadFile(\""+data[i].OBJID+"\")'> "+data[i].REAL_FILE_NAME+"</a>";
|
|
if(data[i].WRITER=="${connectUserId}" || 'plm_admin'== "${connectUserId}"){
|
|
appendText+= "<a href='javascript:fileDelete(\""+data[i].OBJID+"\",\""+areaId+"\")'><div class='delete_btn'></div></a>";
|
|
}
|
|
appendText+= "</td>";
|
|
appendText+= " <td>"+data[i].REGDATE+"</td>";
|
|
appendText+= "</tr>";
|
|
$("#"+areaId+"FileArea").append(appendText);
|
|
});
|
|
}else{
|
|
$("#"+areaId+"DropZone").show();
|
|
$("#"+areaId+"AttachFileList").hide();
|
|
$("#"+areaId+"FileArea").empty();
|
|
var appendText = "";
|
|
appendText += "<tr>";
|
|
appendText += "<td>첨부 파일이 없습니다.</td>";
|
|
appendText +="</tr>";
|
|
$("#"+areaId+"FileArea").append(appendText);
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}//파일 첨부 END
|
|
|
|
/*첨부 파일 삭제 */
|
|
function fileDelete(fileObjId,areaId){
|
|
var type =areaId;
|
|
if(confirm("파일을 삭제하시겠습니까?")){
|
|
$.ajax({
|
|
url:"/common/deleteFileInfo.do",
|
|
type:"POST",
|
|
data:{"objId":fileObjId},
|
|
dataType:"json",
|
|
async:true,
|
|
success:function(data){
|
|
fileAreaDraw();
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function fn_edit(){
|
|
if(confirm("수정하시겠습니까?")){
|
|
var form1 = document.form1;
|
|
form1.action = "/purchaseOrder/purchaseOrderFormPopUp.do";
|
|
form1.submit();
|
|
}
|
|
}
|
|
|
|
function fn_save(){
|
|
|
|
var formData = $("#form1").serialize();
|
|
if(confirm("저장하시겠습니까?")){
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/purchaseOrder/savePurchaseOrderInfo.do",
|
|
data: $("#form1").serialize(),
|
|
dataType:"json",
|
|
success:function(data){
|
|
Swal.fire(data.msg);
|
|
if(data.result){
|
|
opener.fn_search();
|
|
self.close();
|
|
}
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function fn_getDrawingDownload(){
|
|
var gridData = $("#partListGrid").getRowData();
|
|
if(0 < gridData.length){
|
|
var targetPartList = [];
|
|
|
|
for(var i=0;i<gridData.length;i++){
|
|
targetPartList.push(gridData[i].PART_OBJID);
|
|
}
|
|
|
|
var form = document.form1;
|
|
form.TARGET_DRAWING_DOWNLOAD.value = targetPartList.join();
|
|
form.action = "/devMng/getDrawingDownload.do";
|
|
form.submit();
|
|
}else{
|
|
Swal.fire("일괄다운로드 대상 Part가 없습니다.");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function fn_openPartPopup(objId){
|
|
window.open("/partMng/partMngDetailPopUp.do?OBJID="+objId, "tempPartListPopup", "width=600, height=700, toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
|
|
}
|
|
|
|
function num2han(num) {
|
|
num = parseInt((num + '').replace(/[^0-9]/g, ''), 10) + '';
|
|
// 숫자/문자/돈 을 숫자만 있는 문자열로 변환
|
|
if(num == '0')
|
|
return '영';
|
|
var number = ['영', '일', '이', '삼', '사', '오', '육', '칠', '팔', '구'];
|
|
var unit = ['', '만', '억', '조'];
|
|
var smallUnit = ['천', '백', '십', ''];
|
|
var result = [];
|
|
//변환된 값을 저장할 배열
|
|
var unitCnt = Math.ceil(num.length / 4);
|
|
//단위 갯수. 숫자 10000은 일단위와 만단위 2개이다.
|
|
num = num.padStart(unitCnt * 4, '0')
|
|
//4자리 값이 되도록 0을 채운다
|
|
var regexp = /[\w\W]{4}/g;
|
|
//4자리 단위로 숫자 분리
|
|
var array = num.match(regexp);
|
|
//낮은 자릿수에서 높은 자릿수 순으로 값을 만든다(그래야 자릿수 계산이 편하다)
|
|
for(var i = array.length - 1, unitCnt = 0; i >= 0; i--, unitCnt++)
|
|
{ var hanValue = _makeHan(array[i]);
|
|
//한글로 변환된 숫자
|
|
if(hanValue == '')
|
|
//값이 없을땐 해당 단위의 값이 모두 0이란 뜻.
|
|
continue;
|
|
result.unshift(hanValue + unit[unitCnt]);
|
|
//unshift는 항상 배열의 앞에 넣는다.
|
|
}
|
|
|
|
//여기로 들어오는 값은 무조건 네자리이다. 1234 -> 일천이백삼십사
|
|
function _makeHan(text) {
|
|
var str = '';
|
|
for (var i = 0; i < text.length; i++) {
|
|
var num = text[i];
|
|
if (num == '0')
|
|
continue;
|
|
str += number[num] + smallUnit[i];
|
|
}
|
|
return str;
|
|
}
|
|
return result.join('');
|
|
}
|
|
</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="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="PURCHASE_ORDER_MASTER_OBJID" id="PURCHASE_ORDER_MASTER_OBJID" value="${resultMap.OBJID}">
|
|
<input type="hidden" name="STATUS" id="STATUS" value="${resultMap.STATUS}">
|
|
<input type="hidden" name="TARGET_DRAWING_DOWNLOAD" id="TARGET_DRAWING_DOWNLOAD">
|
|
<input type="hidden" name="PURCHASE_ORDER_NO" id="PURCHASE_ORDER_NO" value="${resultMap.PURCHASE_ORDER_NO}">
|
|
<input type="hidden" name="MY_COMPANY_OBJID" id="MY_COMPANY_OBJID" value="${resultMap.MY_COMPANY_OBJID}">
|
|
<section>
|
|
<div class="plm_menu_name" style="display:flex;">
|
|
<h2 style="width:16%;text-align:left;margin-top:5px;">
|
|
<img alt="" src="/images/mainLogo_myungjin.png" style="height: 30px; margin-left: 13px;"><br>
|
|
</h2>
|
|
<h2 style="width:34%;text-align:center;margin-top:5px;">
|
|
<span style="font-size:30px;font-weight:bold;">발주서<br></span>
|
|
</h2>
|
|
|
|
<table class="pmsPopupForm" style="width:50%;background:white;">
|
|
<colgroup>
|
|
<col width="7%">
|
|
<col width="22%">
|
|
<col width="22%">
|
|
<col width="22%">
|
|
</colgroup>
|
|
<tr style="border-spacing: 0;border-bottom:1px solid #ccc;border-left:1px solid #ccc;">
|
|
<td class="input_title" rowspan="3" style="text-align:center;">
|
|
<label>결재</label>
|
|
</td>
|
|
<td class="input_title" style="text-align:center;">
|
|
<label>작성자</label>
|
|
</td>
|
|
<td class="input_title" style="text-align:center;">
|
|
<label>검토</label>
|
|
</td>
|
|
<td class="input_title" style="text-align:center;">
|
|
<label>승인</label>
|
|
</td>
|
|
</tr>
|
|
<tr style="border-spacing: 0;border-bottom:1px solid #ccc;">
|
|
<td class="input_sub_title" style="text-align:center;">
|
|
${resultMap.WRITER_NAME}<!-- 작성자이름 -->
|
|
</td>
|
|
<td class="input_sub_title" style="text-align:center;" id="reviewerName"></td>
|
|
<td class="input_sub_title" style="text-align:center;" id="confirmName"></td>
|
|
</tr>
|
|
<tr style="border-spacing: 0;border-bottom:1px solid #ccc;border-left:1px solid #ccc;">
|
|
<td class="input_sub_title" style="text-align:center;">
|
|
${resultMap.REGDATE_TITLE}<!-- 작성일자 -->
|
|
</td>
|
|
<td class="input_sub_title" style="text-align:center;" id="reviewerDate"></td>
|
|
<td class="input_sub_title" style="text-align:center;" id="confirmDate"></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="businessPopupFormWrap" style="z-index:99;">
|
|
<table class="pmsPopupForm" style="z-index:99;">
|
|
<colgroup>
|
|
<col width="9.5%">
|
|
<col width="*">
|
|
<col width="9.5%">
|
|
<col width="*">
|
|
<col width="3%">
|
|
<col width="*">
|
|
<col width="9.5%">
|
|
<col width="*">
|
|
<col width="7%">
|
|
<col width="*">
|
|
</colgroup>
|
|
|
|
<tr>
|
|
<td class="input_title"><label for="">기종(모델)</label></td>
|
|
<td class="input_sub_title">
|
|
${resultMap.PRODUCT_CODE_NAME}
|
|
</td>
|
|
<td class="input_title"><label for="">발주번호</label></td>
|
|
<td class="input_sub_title">
|
|
${resultMap.PURCHASE_ORDER_NO}
|
|
</td>
|
|
|
|
<td class="input_title" rowspan="7"><label for="" style="font-weight:700;">발<br>주<br>자</label></td>
|
|
|
|
<td class="input_title"><label for="supply_code">등록번호</label></td>
|
|
<td class="input_sub_title" colspan="4">
|
|
${resultMap.MY_COMPANY_REG_NO}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="input_title"><label for="">공급업체</label></td>
|
|
<td class="input_sub_title" colspan="3">
|
|
${resultMap.PARTNER_NAME}
|
|
</td>
|
|
|
|
<td class="input_title"><label for="">상호</label></td>
|
|
<td class="input_sub_title" colspan="2" style="font-weight:700;">
|
|
${resultMap.MY_COMPANY_NAME}
|
|
</td>
|
|
<td class="input_title"><label for="">성명</label></td>
|
|
<td class="input_sub_title">
|
|
${resultMap.MY_COMPANY_CHARGE_USER_NAME}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="input_title"><label for="">발주일자</label></td>
|
|
<td class="input_sub_title" colspan="3" style="font-weight:bold;"></td>
|
|
<td class="input_title"><label for="">주소</label></td>
|
|
<td class="input_sub_title" colspan="4">
|
|
${resultMap.MY_COMPANY_SUPPLY_ADDRESS}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="input_title"><label for="">Tel</label></td>
|
|
<td class="input_sub_title" id="PARTNER_TEL">
|
|
</td>
|
|
<td class="input_title"><label for="">Fax</label></td>
|
|
<td class="input_sub_title" id="PARTNER_FAX">
|
|
</td>
|
|
|
|
<td class="input_title"><label for="">업태</label></td>
|
|
<td class="input_sub_title">
|
|
${resultMap.MY_COMPANY_BUS_NAME}
|
|
</td>
|
|
<td class="input_title"><label for="">종목</label></td>
|
|
<td class="input_sub_title" colspan="2">
|
|
${resultMap.MY_COMPANY_SUPPLY_STOCKNAME}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="input_sub_title align_c" colspan="4"><label for="">납기일 내에 인도해 주시기 바랍니다.</label></td>
|
|
|
|
<td class="input_title"><label for="">Tel</label></td>
|
|
<td class="input_sub_title">
|
|
${resultMap.MY_COMPANY_SUPPLY_TEL_NO}
|
|
</td>
|
|
<td class="input_title"><label for="">Fax</label></td>
|
|
<td class="input_sub_title" colspan="2">
|
|
${resultMap.MY_COMPANY_SUPPLY_FAX_NO}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="input_title"><label for="">담당자명</label></td>
|
|
<td class="input_sub_title" id="CHARGER_NAME">
|
|
</td>
|
|
<td class="input_title"><label for="">HP</label></td>
|
|
<td class="input_sub_title" id="CHARGER_PHONE">
|
|
</td>
|
|
|
|
<td class="input_title"><label for="">구매담당자</label></td>
|
|
<td class="input_sub_title" colspan="2">
|
|
${resultMap.SALES_MNG_USER_NAME}
|
|
<select name="SALES_MNG_USER_ID" id="SALES_MNG_USER_ID" style="width:99%;" autocomplete="off" class="select2" disabled></select>
|
|
</td>
|
|
<td class="input_title"><label for="">HP</label></td>
|
|
<td class="input_sub_title" id="SALES_USER_HP">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="input_title"><label for="">Tel</label></td>
|
|
<td class="input_sub_title" id="CHARGER_TEL">
|
|
</td>
|
|
|
|
<td class="input_title"><label for="">email</label></td>
|
|
<td class="input_sub_title" id="CHARGER_EMAIL">
|
|
</td>
|
|
|
|
<td class="input_title"><label for="">Tel</label></td>
|
|
<td class="input_sub_title" id="SALES_USER_TEL">
|
|
</td>
|
|
<td class="input_title"><label for="">email</label></td>
|
|
<td class="input_sub_title" id="SALES_USER_EMAIL" colspan="2">
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="input_title"><label for="" style="font-weight:700;">공급가액</label></td>
|
|
<td class="input_sub_title" id="TOTAL_AMOUNT_PRICE" style="font-weight:700;"></td>
|
|
<td class="input_title"><label for="" style="font-weight:700;">부가세</label></td>
|
|
<td class="input_sub_title" id="TOTAL_AMOUNT_VAT" style="font-weight:700;"></td>
|
|
<td class="input_title" colspan="2"><label for="" style="font-weight:700;">합계금액</label></td>
|
|
<td class="input_sub_title" id="TOTAL_AMOUNT_SUM" style="font-weight:700;"></td>
|
|
<td colspan="3"></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div id="businessPopupFormWrap" style="z-index:99;">
|
|
<table class="pmsPopupForm" style="margin-top:10px;">
|
|
<tr>
|
|
<td>
|
|
<div class="in_table_scroll_wrap _table1" style="height:22px;width:99%;">
|
|
<table class="plm_table">
|
|
<colgroup>
|
|
<col width="20px" /> <!-- No -->
|
|
<col width="*" /> <!-- 품명(재질,규격)/품번 -->
|
|
<col width="35px" /> <!-- 단위 -->
|
|
<col width="30px" /> <!-- 수량 -->
|
|
<col width="70px" /> <!-- 업체단가 -->
|
|
<col width="70px" /> <!-- 공급가액 -->
|
|
<col width="130px" /> <!-- 비고 -->
|
|
</colgroup>
|
|
<thead>
|
|
<tr class="plm_thead">
|
|
<td>No</td>
|
|
<td>품명(재질,규격)/품번</td>
|
|
<td>단위</td>
|
|
<td>수량</td>
|
|
<td>단가</td>
|
|
<td>공급가액</td>
|
|
<td>비고</td>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
<div class="in_table_scroll_wrap _table2" style="height:530px;width:100%;">
|
|
<table class="plm_table">
|
|
<colgroup>
|
|
<col width="20px" /> <!-- No -->
|
|
<col width="*" /> <!-- 품명(재질,규격)/품번 -->
|
|
<col width="35px" /> <!-- 단위 -->
|
|
<col width="30px" /> <!-- 수량 -->
|
|
<col width="70px" /> <!-- 업체단가 -->
|
|
<col width="70px" /> <!-- 공급가액 -->
|
|
<col width="130px" /> <!-- 비고 -->
|
|
</colgroup>
|
|
<tbody id="partListArea">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div style="width:100%;">
|
|
<table class="plm_table">
|
|
<colgroup>
|
|
<col width="*" />
|
|
<col width="315px" /> <!-- No -->
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td>합계</td>
|
|
<td class="align_l" id="TOTAL_AMOUNT"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div id="businessPopupFormWrap" style="z-index:99;">
|
|
<table class="pmsPopupForm" style="z-index:99;">
|
|
<colgroup>
|
|
<col width="9.5%">
|
|
<col width="*">
|
|
<col width="9.5%">
|
|
<col width="*">
|
|
<col width="9.5%">
|
|
<col width="*">
|
|
<col width="9.5%">
|
|
<col width="*">
|
|
</colgroup>
|
|
<tr>
|
|
<td class="input_title"><label for="">납기일자</label></td>
|
|
<td class="input_sub_title">
|
|
<input type="text" name="DELIVERY_DATE" id="DELIVERY_DATE" value="${resultMap.DELIVERY_DATE}" readonly>
|
|
</td>
|
|
|
|
<td class="input_title"><label for="">납품장소</label></td>
|
|
<td class="input_sub_title" colspan="3">
|
|
<input type="text" name="DELIVERY_PLACE" id="DELIVERY_PLACE" value="${resultMap.DELIVERY_PLACE}" readonly>
|
|
</td>
|
|
|
|
<td class="input_title"><label for="">결제조건</label></td>
|
|
<td class="input_sub_title">
|
|
<input type="text" name="PAYMENT_TERMS" id="PAYMENT_TERMS" value="${resultMap.PAYMENT_TERMS}" readonly>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="input_title"><label for="">비고</label></td>
|
|
<td class="input_sub_title" colspan="7">
|
|
<textarea name="REMARK" readonly style="width:99.5%" rows="3" >${resultMap.REMARK}</textarea>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
</form>
|
|
</body>
|
|
</html> |