Files
wace_plm/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderQTYFormPopUp.jsp
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- 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
2025-08-29 15:46:08 +09:00

297 lines
9.5 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 connector = person.getUserId();
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><%=Constants.SYSTEM_NAME%></title>
<c:set var="now" value="<%=new java.util.Date()%>" />
<c:set var="sysYear">
<fmt:formatDate value="${now}" pattern="yyyy" />
</c:set>
<c:set var="connector" value="<%=connector%>" />
<style type="text/css">
</style>
<script>
var _editable = true;
var grid;
var modifiedRows = [];
var newAddRows = [];
var _CHANGE_OPTION_LIST;
$(document)
.ready(
function() {
var defaultOptions = []; //[{"CODE_ID":'',"CODE_NAME":"선택"}];
_CHANGE_OPTION_LIST = defaultOptions.concat(fnc_getJsonAllDataListBySqlId({"sqlId":"common.getCusProjectNoList"}));
_UNIT_OPTION_LIST = defaultOptions.concat(fnc_getJsonAllDataListBySqlId({"sqlId":"common.getUnitCodeList"}));
_WORKER_OPTION_LIST = defaultOptions.concat(fnc_getJsonAllDataListBySqlId({"sqlId":"common.getUserselect"}));
$("#btnSearch").click(function() {
$("#PAGE_T").val("1");
fn_search();
});
//체크박스 전체선택/전체해제
$("#allCheck").click(function() {
if ($("#allCheck").prop("checked")) {
$("input[type=checkbox]").prop("checked", true);
} else {
$("input[type=checkbox]").prop("checked", false);
}
});
//엔터 조회
$("input").keyup(function(e) {
if (e.keyCode == 13) {
$("#PAGE_T").val("1");
fn_search();
}
});
$("#btnDelete").click(function() {
fn_delrow();
});
$("#btnAddrow").click(function() {
fn_addrow();
});
$("#btnCopy").click(function() {
fn_copy();
});
$("#btnSave").click(function() {
fn_save();
});
$('.select2').select2();
fnc_datepick();
fn_search();
});
</script>
<script>
var columns = [
{headerHozAlign : 'center', hozAlign : 'left', width : '150', title : '프로젝트번호', field : 'PROJECT_NO'},
{headerHozAlign : 'center', hozAlign : 'left', width : '250', title : '유닛명', field : 'UNIT_NAME' },
{headerHozAlign : 'center', hozAlign : 'center', width : '130', title : '발주 No.', field : 'PURCHASE_ORDER_NO' },
{headerHozAlign : 'center', hozAlign : 'left', width : '200', title : '품번 (자재코드)', field : 'PART_NO' },
{headerHozAlign : 'center', hozAlign : 'left', width : '200', title : '품명', field : 'PART_NAME' },
{headerHozAlign : 'center', hozAlign : 'center', width : '150', title : '발주일', field : 'PURCHASE_DATE' },
{headerHozAlign : 'center', hozAlign : 'right', width : '100', title : '발주수량', field : 'REAL_ORDER_QTY' ,
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
}/* ,
{headerHozAlign : 'center', hozAlign : 'right', width : '100', title : '입고수량', field : 'DELIVERY_CNT' ,
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
} */
];
function fn_search() {
_tabulGrid = fnc_tabul_search(_tabul_layout_fitDataStretch, _tabulGrid, "/purchaseOrder/purchaseOrderQTYGridList.do", columns, false);
}
function editCheck2 (cell) {
return _editable;
}
function fn_addrow() {
grid = fnc_tabul_addrow(_tabul_layout_fitDataStretch, grid, "/productionplanning/workDiaryGridList.do", columns, true); //, true
}
function fn_delrow() {
grid = fnc_tabul_delrow(_tabul_layout_fitDataStretch, grid, "/productionplanning/workDiaryGridList.do", columns, true); //, true
}
// 삭제
function fn_delete() {
var selectedRows = grid.getSelectedRows(); // 선택한 행의 인덱스 배열 가져오기
if (selectedRows.length === 0) {
alert("삭제할 행을 선택하세요.");
return;
}
var selectedData = selectedRows.map(function(row) {
return grid.getData()[row].data; // 선택한 행의 데이터 가져오기
});
var param = {
dataListJson: JSON.stringify(selectedData) // 선택한 행 데이터를 JSON 문자열로 변환
};
if (confirm("선택한 행을 삭제하시겠습니까?")) {
$.ajax({
url: "/productionplanning/workDiaryGridList.do",
type: "POST",
data: param,
dataType: "json",
success: function(data) {
Swal.fire(data.msg);
fn_search();
},
error: function(jqxhr, status, error) {
Swal.fire('서버 오류');
}
});
}
}
function fn_copy() {
var selectedRows = grid.getSelectedRows();
if (selectedRows.length === 0) {
alert("복사할 행을 선택해주세요.");
return;
}
selectedRows.forEach(function(row) {
var rowData = row.getData();
var newRowData = Object.assign({}, rowData);
// OBJID와 같은 고유 식별자는 제거하거나 새로운 값으로 설정
delete newRowData.OBJID;
// 필요한 경우 다른 필드도 초기화하거나 수정
newRowData.GRID_STATUS = 'I'; // 새로운 행임을 표시
// 새로운 행 추가
grid.addRow(newRowData);
});
// 변경사항 표시를 위해 그리드 새로고침
grid.redraw();
}
function fn_save(cell) {
var data = grid.getData();
for (var i = 0; i < data.length; i++) {
if (!data[i].DIVISION) {
alert('프로젝트 미입력');
return;
}
if (data[i].DIVISION === 'project' && (!data[i].CONTRACT_OBJID || data[i].CONTRACT_OBJID.trim() === '')) {
alert('프로젝트 번호 미입력');
return;
}
if (data[i].DIVISION === 'project' && (!data[i].UNIT_CODE || data[i].UNIT_CODE.trim() === '')) {
alert('유닛명 미입력');
return;
}
if (!data[i].WORK_START_DATE) {
alert('시작 날짜 미입력');
return;
}
if (!data[i].WORK_END_DATE) {
alert('종료 날짜 미입력');
return;
}
if (!data[i].WORK_HOUR) {
alert('작업시간 미입력');
return;
}
if (!data[i].SOURCING_TYPE) {
alert('구분 미등록');
return;
}
if (data[i].SOURCING_TYPE === 'insourcing' && (!data[i].WORKER_ID || data[i].WORKER_ID.trim() === '')) {
alert('작업자 미등록');
return;
}
}
Swal.fire({
title: '저장 확인',
text: '해당 내용을 저장하시겠습니까?',
icon: 'question',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: '저장',
cancelButtonText: '취소'
}).then((result) => {
if (result.isConfirmed) {
var param = $("#form1").serializeObject();
console.log(modifiedRows);
param.dataListJson = JSON.stringify(grid.getData());
$.ajax({
url: "/productionplanning/saveWorkDiaryInfo.do",
type: "POST",
data: param,
dataType: "json",
success: function(data) {
Swal.fire({
title: '저장 완료',
text: '저장이 완료되었습니다.',
icon: 'success'
}).then(() => {
console.log("modifiedRows" + modifiedRows.length);
fn_search();
modifiedRows = [];
self.close(0);
});
},
error: function(jqxhr, status, error) {
}
});
}
});
}
window.addEventListener('unload', function() {
// 팝업 창이 닫힐 때 그리드를 새로 고치는 함수 호출
window.opener.fn_search();
});
</script>
</head>
<body style="overflow-x: hidden;">
<form name="hiddenForm" id="hiddenForm" action="" method="post">
<input type="hidden" name="TARGET_OBJID" id="TARGET_OBJID">
<input type="hidden" name="ORDER_CNT" id="ORDER_CNT">
<input type="hidden" name="CATEGORY_NAME" id="CATEGORY_NAME">
<input type="hidden" name="CONTRACT_OBJID" id="CONTRACT_OBJID">
<input type="hidden" name="OBJID" id="OBJID">
<input type="hidden" name="objId" id="objId">
</form>
<form name="form1" id="form1" action="" method="post" onsubmit="return false">
<input type="hidden" name="actionType" value="" />
<input type="hidden" name="objId" id="objId" value="${param.objId}">
<input type="hidden" name="OBJID" id="OBJID">
<div class="plm_menu_name_gdnsi">
<h2>
<span>발주수</span>
</h2>
<!-- <div class="btnArea">
<input type="button" value="한줄추가" class="plm_btns" id = "btnAddrow">
<input type="button" value="삭제" class="plm_btns" id="btnDelete">
<input type="button" value="복사" class="plm_btns" id = "btnCopy">
<input type="button" value="저장" class="plm_btns" id="btnSave">
</div> -->
</div>
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
</div>
</form>
</body>
</html>