ERP-node/WebContent/WEB-INF/view/salesMng/salesRequestMngRegList.jsp

579 lines
21 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.jsp" %>
<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>
<style>
.pmsPopupForm tr:last-child td {
border-bottom: none;
}
.select2-selection__choice {
font-size: 11px;
background-color: #fff !important;
border: none !important;
margin-right: 0px !important;
}
.select2-selection__choice__remove {
display: contents !important;
}
.select2-container .select2-selection--multiple {
min-height: 20px !important;
}
.select2-container--default .select2-selection--multiple .select2-selection__choice {
margin-top: 3.5px !important;
}
.select2-selection__rendered {
height: 18px !important;
}
.select2-container .select2-selection--multiple .select2-selection__rendered {
overflow: auto !important;
}
</style>
<script>
$(document).ready(function(){
$('.select2').select2();
$("input[type=text]").keyup(function(e){
if(e.keyCode == 13){
$("#btnSearch").trigger("click");
}
});
$("#btnSearch").click(function(){
fn_search();
});
$("#btnRelease").click(function(){
var targetObj = $("input[name=REQUEST_OBJID]:checked");
if(0 < targetObj.length){
fn_releaseSalesRequest();
}else{
Swal.fire("선택된 내용이 없습니다.");
}
});
//접수
$("#btnRec").click(function(){
var selectedRowIds = _tabulGrid.getSelectedData();
if(selectedRowIds.length<1){
Swal.fire("접수할 행을 선택해주십시오.");
return false;
}
var targetStatus = fnc_checkNull(selectedRowIds[0].STATUS_TITLE);
if(targetStatus != "결재완료"){
Swal.fire("결재완료일 경우 접수가능합니다.");
return false;
}
let partIds = selectedRowIds.map(function(o,i){
return fnc_checkNull(selectedRowIds[i].OBJID);
});
$.ajax({
url:"/salesMng/receiptSalesRequestInfo.do"
,type:"POST"
,data: "partIds="+partIds.join(",")
,dataType:"json"
,async:false
,success:function(data){
Swal.fire(data.message);
fn_search();
self.close();
}
,error: function(jqxhr, status, error){
}
});
});
$("#btnExcel").click(function(){
fn_excelExport($("#mainGrid"),"BOM_REPORT_역전개");
});
//구매요청서 작성
$("#btnOrderReg").click(function(){
fn_openSalesRequestPopUp("");
});
//발주서 작성
$("#btnReg").click(function(){
var selectedRowIds = _tabulGrid.getSelectedData();
console.log(selectedRowIds);
if(selectedRowIds.length==0){
Swal.fire("발주서 작성할 행을 선택해주십시오.");
return false;
}
var targetStatus = fnc_checkNull(selectedRowIds[0].STATUS_TITLE);
if(targetStatus != "접수"){
Swal.fire("접수 상태일 경우 발주서 작성이 가능합니다.");
return false;
}
//var sales_request_objId = fnc_checkNull(selectedRowIds[0].OBJID);
//fn_formPopUp("",sales_request_objId);
Swal.fire({
title: '발주서를 작성 하시겠습니까?',
text: '',
icon: 'warning',
showCancelButton: true, // cancel버튼 보이기. 기본은 원래 없음
confirmButtonColor: '#3085d6', // confrim 버튼 색깔 지정
cancelButtonColor: '#d33', // cancel 버튼 색깔 지정
confirmButtonText: '확인', // confirm 버튼 텍스트 지정
cancelButtonText: '취소', // cancel 버튼 텍스트 지정
reverseButtons: false, // 버튼 순서 거꾸로
}).then(result => {
// 만약 Promise리턴을 받으면,
if (result.isConfirmed) { // 만약 모달창에서 confirm 버튼을 눌렀다면
$.ajax({
url:"/purchaseOrder/purchaseOrder_salesRequest_Save.do"
,type:"POST"
,data: $("#form1").serialize() + "&jqGrid="+ encodeURIComponent(JSON.stringify(selectedRowIds))
,dataType:"json"
,success:function(data){
if(data =="SUCCESS"){
alert("저장되었습니다.");
};
/* if(typeof opener.fn_search =="function"){ opener.fn_search() }; */
fn_search();
//self.close();
}
,error: function(jqxhr, status, error){
}
});
}
});
});
$("#btnOrderBOMReg").click(function(){
fn_salesRequestTargetBOMListPopUp();
});
$("#btnDelete").click(function(){
fn_delete();
});
$("#btnApproval").click(function(){
var checkedObj = $("input[name=REQUEST_OBJID]:checked");
var title = "";
if(1 < checkedObj){
Swal.fire("한번에 한개의 결재만 가능합니다.");
return false;
}else{
var targetStatus = checkedObj.attr("data-STATUS");
var objId = checkedObj.val();
var targeType = "SALES_REQUEST";
if(targetStatus == "create" || targetStatus == "reception" || targetStatus == "reject"){
window.open("/approval/registApproval.do?targetType="+targeType+"&targetObjId="+objId+"&approvalTitle="+title+"&callbackFnc=fn_search","registApproval","width=700,height=700");
}else{
Swal.fire("이미 결재완료 또는 결재중 상태입니다.");
return false;
}
}
});
$(".btnApprovalDetail").click(function(){
var approvalObjId = $(this).attr("data-APPROVAL_OBJID");
var routeObjId = $(this).attr("data-ROUTE_OBJID");
var params = "?approvalObjId="+approvalObjId;
params += "&routeObjId="+routeObjId;
//Swal.fire("params : "+params);
window.open("/approval/approvalDetail.do"+params,"approvalDetailPopup","width=650 height=400 menubar=no status=no");
});
fnc_getAjaxProductMgmtList("SEARCH_PRODUCT_CODE", "", "", "${param.SEARCH_PRODUCT_CODE}");
fn_search();
//날짜
_fnc_datepick();
});
var columns = [
{title:'OBJID' , field:'OBJID' ,visible: false},
{title:'SPC_OBJID' , field:'SPC_OBJID' ,visible: false},
{title:'PURCHASE_ORDER_MASTER_OBJID', field:'PURCHASE_ORDER_MASTER_OBJID' ,visible: false},
{title:'APPROVAL_OBJID' , field:'APPROVAL_OBJID' ,visible:false},
{title:'ROUTE_OBJID' , field:'ROUTE_OBJID' ,visible:false}
,{headerHozAlign : 'center', hozAlign : 'center', title : "요청번호", field :"REQUEST_MNG_NO" , width:110,
formatter: fnc_createGridAnchorTag,
cellClick : function(e, cell) {
fn_openSalesRequestPopUp(cell.getData().OBJID);
}
}
,{headerHozAlign : 'center', hozAlign : 'center', title : "요청구분", field :"REQUEST_CD_NAME" , width:80 }
,{headerHozAlign : 'center', hozAlign : 'left' , title : "프로젝트번호", field :"PROJECT_NUMBER" , width:100 }
,{headerHozAlign : 'center', hozAlign : 'left' , title : "프로젝트명", field :"PROJECT_NAME" , width:150}
,{headerHozAlign : 'center', hozAlign : 'left' , title : "유닛명", field :"UNIT_CODE_NAME" , width:180 }
,{headerHozAlign : 'center', hozAlign : 'center', title : "구매요청품 수", field :"ITEMS_QTY" , width:110 }
,{headerHozAlign : 'center', hozAlign : 'center', title : "총 수량", field :"TOTAL_QTY" , width:100}
,{headerHozAlign : 'center', hozAlign : 'left' , title : "요청사유", field :"REQUEST_REASONS_NAME" , width:100 }
,{headerHozAlign : 'center', hozAlign : 'center', title : "요청인", field :"REQUEST_USER_NAME" , width:110 }
,{headerHozAlign : 'center', hozAlign : 'center', title : "입고요청일", field :"DELIVERY_REQUEST_DATE" , width:100 }
,{headerHozAlign : 'center', hozAlign : 'center', title : "상태", field :"STATUS_TITLE" , width:90,
formatter: fnc_createGridApprovalAnchorTag,
cellClick:function(e, cell){
var targetStatus = fnc_checkNull(cell.getData().STATUS);
if("approvalComplete" == targetStatus || "approvalRequest" == targetStatus){
fn_approvalDetail(cell.getData().APPROVAL_OBJID, cell.getData().ROUTE_OBJID);
}
}
}
,{headerHozAlign : 'center', hozAlign : 'center', title : "접수자", field :"RECEIPT_USER_NAME" , width:110 }
,{headerHozAlign : 'center', hozAlign : 'center', title : "접수일", field :"RECEIPT_DATE" , width:90 }
,{headerHozAlign : 'center', hozAlign : 'left' , title : "발주서NO", field :"PURCHASE_ORDER_NO_ARR" /* , width:150 */ }
];
//var grid;
function fn_search(){
var selectedValues = $("#project_no").val();
$('<input>').attr({
type: 'hidden',
name: 'project_nos',
value: selectedValues
}).appendTo('#form1');
_tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/salesMng/salesRequestMngRegGridList.do", columns, true);
}
function fn_delete(){
var selectedObj = $("input[name=REQUEST_OBJID]:checked");
if(0 < selectedObj.length){
if(confirm("선택된 정보를 삭제하시겠습니까?")){
$.ajax({
url:"/salesMng/deleteSalesRequestMng.do",
type:"POST",
data:$("#form1").serialize(),
dataType:"json",
success:function(data){
Swal.fire(data.msg);
fn_search();
},
error: function(jqxhr, status, error){
}
});
}
}else{
Swal.fire("선택된 정보가 없습니다.");
return false;
}
}
//구매의뢰서(BOM) 작성 시 사용
function fn_salesRequestTargetBOMListPopUp(){
var url = "/salesMng/salesRequestTargetBOMList.do";
window.open(url,"salesRequestTargetBOMListPopUp","width=1300,height=550");
}
//구매의뢰 요청 팝업
function fn_openSalesRequestPopUp(objId){
var url = "";
if("" == objId){
url = "/salesMng/salesRequestFormPopUp.do?SALES_REQUEST_MASTER_OBJID="+objId;
}else{
//url = "/salesMng/salesRequestDetailPopUp.do?SALES_REQUEST_MASTER_OBJID="+objId;
url = "/salesMng/salesRequestFormPopUp.do?SALES_REQUEST_MASTER_OBJID="+objId;
}
window.open(url,"salesRequestPopUp","width=1100,height=630");
}
function fn_releaseSalesRequest(){
var checkArr = new Array();
var ngCnt = 0;
$("input[name=REQUEST_OBJID]:checked").each(function(){
var objId = $(this).val();
var status = $(this).attr("data-STATUS");
if("create" != status){
ngCnt++;
}
checkArr.push(objId);
});
if(0 < ngCnt){
Swal.fire("이미 제출된 정보입니다.\n대상을 확인하시기 바랍니다.");
return false;
}else{
if(confirm("선택된 정보를 구매당당자에게 제출 하시겠습니까?")){
$.ajax({
type : "POST",
url : "/salesMng/releaseSalesRequest.do",
data: {"checkArr":checkArr.join(),"status":"release"},
dataType:"json",
success:function(data){
Swal.fire(data.msg);
if(data.result){
fn_search();
}
}
,error: function(jqxhr, status, error){
}
});
}
}
}
//양산제품에 해당하는 SPEC 정보 목록을 가져온다.
function fn_productSpecList(productObjId,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
if("" != productObjId){
$.ajax({
url:"/common/getProductSPECList.do",
type:"POST",
data:{"isJson":true,"TARGET_OBJID":productObjId},
dataType:"json",
async:false,
success:function(data){
resultList = data
if(0 < resultList.length){
for (var i = 0; i < resultList.length; i++) {
var commonCodeId = resultList[i].OBJID;
var commonCodeName = resultList[i].SPEC_NAME;
$("#"+selectboxId).append("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fn_approvalDetail(approvalObjId,routeObjId){
var params = "?approvalObjId="+approvalObjId;
params += "&routeObjId="+routeObjId;
window.open("/approval/approvalDetail.do"+params,"approvalDetailPopup","width=650 height=400 menubar=no status=no");
}
function fn_excelExport(pGridObj,pFileName){
var mya = pGridObj.getDataIDs();
var data = pGridObj.getRowData(mya[0]);
var colNames=new Array();
var ii=0;
for (var d in data){ colNames[ii++] = d; }
//컬럼 헤더 가져오기
var columnHeader = pGridObj.jqGrid('getGridParam','colNames') + '';
var arrHeader = columnHeader.split(',');
var html="<table border=1><tr>";
for ( var y = 0; y < arrHeader.length; y++ ) {
var hName = arrHeader[y];
if("PART_OBJID" == hName || "EO_OBJID" == hName){
continue;
}
html = html + "<td><b>" + arrHeader[y] + "</b></td>";
}
html = html + "</tr>";
//값 불러오기
for(var i=0;i< mya.length;i++) {
var datac= pGridObj.getRowData(mya[i]);
html = html +"<tr>";
for(var j=0; j< colNames.length;j++){
if("PART_OBJID" == colNames[j] || "EO_OBJID" == colNames[j]){
continue;
}
html=html + '<td>' + datac[colNames[j]]+"</td>";
}
html = html+"</tr>";
}
html=html+"</table>"; // end of line at the end
document.EXCEL_.csvBuffer.value = html;
document.EXCEL_.fileName.value = pFileName;
document.EXCEL_.target='_new';
document.EXCEL_.submit();
}
function fn_str_openPopup(bom_report_objid, product_code, product_mgmt_spec, upg_no, search_partNo, search_partName){
var param = "actionType=search"
+"&bom_report_objid=" + bom_report_objid
+"&product_code=" + product_code
+"&product_mgmt_spec=" + product_mgmt_spec
+"&upg_no=" + upg_no
+"&search_partNo=" + search_partNo
+"&search_partName=" + search_partName
;
window.open("/partmgmt/structureAscendingListPopup.do?"+param, "_strListPopup", "width=1200, height=800, toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
}
//구매 BOM 팝업
function fn_salesMngBOMOpenPopUp(bom_report_objid){
var param = "actionType=search"
+"&bom_report_objid=" + bom_report_objid
;
window.open("/salesMng/salesMngBOMListPopUp.do?"+param, "_strListPopup", "width=1200, height=800, toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
}
function fn_salesMngBOMOpenPopUp(bom_report_objid){
var param = "actionType=search"
+"&bom_report_objid=" + bom_report_objid
;
window.open("/salesMng/salesRequestDetailPopUp.do?"+param, "_strListPopup", "width=1200, height=800, toolbar=no, status=no, menubar=no, location=no, scrollbars=yes, resizable=yes");
}
function _fnc_datepick(){
var $dateinput = $("input.date_icon");
for(var i=0; i<$dateinput.length; i++){
$dateinput.eq(i).attr("size","10");
$dateinput.eq(i).datepicker({
changeMonth:true,
changeYear:true
});
}
}
//발주서 작성
function fn_formPopUp(objId,sales_request_objid){
var popup_width = 1260;
var popup_height = 1050;
//var hiddenForm = document.hiddenForm;
var target = "purchaseOrderFormPopup_salesRequest";
var url = "/purchaseOrder/purchaseOrderFormPopup_new.do?ObjId="+objId+"&sales_request_objid="+sales_request_objid;
fn_centerPopup(popup_width, popup_height, url, target);
/* hiddenForm.PURCHASE_ORDER_MASTER_OBJID.value = objId;
hiddenForm.action = url;
hiddenForm.target = target;
hiddenForm.submit(); */
}
</script>
</head>
<body class="backcolor">
<form name="hiddenForm" id="hiddenForm" method="post">
<input type="hidden" name="OBJID" id="OBJID">
</form>
<form name="form1" id="form1" action="" method="post">
<input type="hidden" name="actionType" id="actionType" value="" />
<div class="min_part_enroll">
<div class="content-box">
<div class="content-box-s">
<div class="plm_menu_name_gdnsi">
<h2>
<span>구매관리_구매요청서관리</span>
</h2>
<div class="btnArea">
<input type="button" value="구매요청서작성" class="plm_btns" id="btnOrderReg">
<input type="button" value="발주서작성" class="plm_btns" id="btnReg">
<input type="button" value="접수" class="plm_btns" id="btnRec">
<!-- <input type="button" value="구매의뢰서 등록(구매 BOM)" class="plm_btns" id="btnOrderBOMReg">
<input type="button" value="삭제" class="plm_btns" id="btnDelete">
<input type="button" value="구메의뢰서 제출" class="plm_btns" id="btnRelease">
<input type="button" value="결재상신" class="plm_btns" id="btnApproval"> -->
<input type="button" value="조회" class="plm_btns" id="btnSearch">
</div>
</div>
<div id="plmSearchZon">
<table>
<tbody>
<tr>
<td><label for="Year">년도</label></td>
<td>
<select name="Year" id="Year" class="select2" autocomplete="off" style="width:110px;">
<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="contract_objid" id="contract_objid" class="select2" autocomplete="off" style="width:120px;"><option value="">선택</option>${code_map.contract_objid}</select></td> --%>
<td><label for="project_no">프로젝트번호</label></td>
<td>
<select name="project_no" id="project_no" style="width:300px;" class="select2" autocomplete="off" multiple="multiple">
<option value="">선택</option>
${code_map.contract_objid}
</select>
</td>
<td><label for="">요청구분</label></td>
<td><select name="request_cd" id="request_cd" class="select2" autocomplete="off" style="width:120px;"><option value="">선택</option>${code_map.request_cd}</select></td>
<!-- <td><label for="">기종(모델)명</label></td>
<td>
<select name="SEARCH_PRODUCT_CODE" id="SEARCH_PRODUCT_CODE" style="" class="select2" autocomplete="off"></select>
</td> -->
<%-- <td class="align_r">
<label for="" class="">Part No</label>
</td>
<td>
<input type="text" name="SEARCH_PART_NO" id="SEARCH_PART_NO" value="${param.SEARCH_PART_NO}"/>
</td>
<td class="align_r">
<label for="" class="">Part Name</label>
</td>
<td>
<input type="text" name="SEARCH_PART_NAME" id="SEARCH_PART_NAME" value="${param.SEARCH_PART_NAME}" placeholder="ex) HEX. BOLT"/>
</td> --%>
<td class="align_r">
<label for="" class="">상태</label>
</td>
<td>
<select name="status" id="status" class="select2" autocomplete="off" style="width:130px">
<option value="">선택</option>
<%-- ${code_map.appr_status} --%>
<option value="create">미접수</option>
<option value="reception">접수</option>
<option value="orderComplete">발주완료</option>
</select>
</td>
<%-- <td><select name="act_status" id="act_status" class="select2" autocomplete="off" style="width:120px;"><option value="">선택</option>${code_map.act_status}</select></td> --%>
<td><label for="">접수자</label></td>
<td><select name="receipt_writer" id="receipt_writer" class="select2" autocomplete="off" style="width:120px;"><option value="">선택</option>${code_map.receipt_writer}</select></td>
<td class="align_r"><label>접수일</label></td>
<td>
<input type="text" name="receipt_date_start" id="receipt_date_start" style="width:90px;" autocomplete="off" value="${param.confirm_date_start}" class="date_icon">~
<input type="text" name="receipt_date_end" id="receipt_date_end" style="width:90px;" autocomplete="off" value="${param.confirm_date_end }" class="date_icon">
</td>
</tr>
</tbody>
</table>
</div>
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
</div>
</div>
</div>
</form>
</body>
<style>
.container::-webkit-scrollbar-thumb {background: linear-gradient(to bottom, #f5d78e, #f5d78e) !important;}
.container::-webkit-scrollbar-track {background-color: white !important;}
.container::-webkit-scrollbar-button { display: none !important;}
</style>
</html>