931 lines
34 KiB
Plaintext
931 lines
34 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"%>
|
|
<%--@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>
|
|
<%
|
|
// DB에서 메뉴명 조회 (공통 유틸 사용)
|
|
String menuObjId = request.getParameter("menuObjId");
|
|
String menuName = CommonUtils.getMenuName(menuObjId, "기본메뉴명");
|
|
%>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<title><%=Constants.SYSTEM_NAME%></title>
|
|
<style>
|
|
body, html {
|
|
overflow-x: hidden;
|
|
width: 100%;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<link rel="stylesheet" href="/css/selectMulti.css">
|
|
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){
|
|
|
|
$("input").keyup(function(e){
|
|
if(e.keyCode == 13){
|
|
$("#page").val("1");
|
|
fn_search();
|
|
}
|
|
});
|
|
|
|
$('.select2').select2();
|
|
fnc_datepick();
|
|
|
|
// 품번/품명 Select2 AJAX 초기화
|
|
initPartSelect2Ajax("#SEARCH_PART_NO", "#SEARCH_PART_NAME", "#SEARCH_PART_OBJID");
|
|
|
|
//조회
|
|
|
|
|
|
$("#btnSearch").click(function(){
|
|
$("#page").val("1");
|
|
fn_search();
|
|
});
|
|
//등록
|
|
$("#btnReg").click(function(){
|
|
fn_formPopUp("");
|
|
});
|
|
//삭제
|
|
$("#btnDelete").click(function(){
|
|
fn_delete();
|
|
});
|
|
//취소
|
|
$("#btnCancel").click(function(){
|
|
fn_cancel();
|
|
});
|
|
$("#btnSave").click(function(){
|
|
fn_save();
|
|
});
|
|
$("#btnExcel").click(function() {
|
|
fn_excel();
|
|
});
|
|
|
|
// 발주서 송부 버튼 클릭
|
|
$("#btnSend").click(function(){
|
|
fn_sendPurchaseOrder();
|
|
});
|
|
|
|
//수주활동 복사 팝업
|
|
$("#btnCopy").click(function(){
|
|
var checkedObj = _tabulGrid.getSelectedData();
|
|
|
|
if(0 == checkedObj.length){
|
|
Swal.fire("선택된 대상이 없습니다.");
|
|
}else if(checkedObj.length > 1){
|
|
Swal.fire("한 건만 선택하세요.");
|
|
}else{
|
|
var objId = fnc_checkNull(checkedObj[0].OBJID);
|
|
fn_formPopUp(objId, "copy");
|
|
}
|
|
});
|
|
//$("#project_no").change(function(){
|
|
//fnc_productUPGNEWList(this.value,"","upg_no", "");
|
|
// fn_UnitCodeList(this.value, "unit_code", "");
|
|
//});
|
|
|
|
//결재상신
|
|
$("#btnApproval").click(function(){
|
|
//var selectedRowIds = fn_jqGrid_selarrrow(grid1);
|
|
var selectedData = _tabulGrid.getSelectedData();
|
|
if(selectedData.length<1){
|
|
Swal.fire("결재상신할 행을 선택해주십시오.");
|
|
return false;
|
|
}else if(selectedData.length>1){
|
|
Swal.fire("한번에 한개의 결재만 가능합니다.");
|
|
return false;
|
|
}else{
|
|
//var targetStatus = grid1.getCell(selectedRowIds, "APPR_STATUS_NAME");
|
|
//var title = grid1.getCell(selectedRowIds, "TITLE");
|
|
//var objId = grid1.getCell(selectedRowIds, "OBJID");
|
|
|
|
var targetStatus = fnc_checkNull(selectedData[0].APPR_STATUS_NAME);
|
|
var status = fnc_checkNull(selectedData[0].STATUS);
|
|
var MULTI_YN = fnc_checkNull(selectedData[0].MULTI_YN);
|
|
var MULTI_MASTER_YN = fnc_checkNull(selectedData[0].MULTI_MASTER_YN);
|
|
|
|
if(targetStatus == "결재완료" || targetStatus == "결재중" || status == "cancel"){
|
|
//Swal.fire("이미 결재완료 또는 결재중 상태입니다.");
|
|
Swal.fire("작성중/결재반려인 상태만 결재상신 가능합니다.");
|
|
return false;
|
|
}else if(MULTI_YN == 'Y' && MULTI_MASTER_YN == 'N'){
|
|
Swal.fire("동시발주건은 마스터건으로 결재상신해야 합니다.");
|
|
return false;
|
|
}else{
|
|
if(confirm("결재상신 하시겠습니까?")){
|
|
|
|
//var objIds = fnc_checkNull(selectedData[0].MULTI_OBJIDS);
|
|
var objId = fnc_checkNull(selectedData[0].OBJID);
|
|
var objIds = "";
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/purchaseOrder/getMultiObjids.do",
|
|
//data: $("#form1").serialize(),
|
|
data: {"PURCHASE_ORDER_MASTER_OBJID" : objId},
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
//alert(data.MULTI_OBJIDS);
|
|
objIds = data.MULTI_OBJIDS;
|
|
},
|
|
beforeSend:function(){
|
|
//_startLoading("저장중입니다. 데이터에 따라 시간이 걸릴 수 있습니다.");
|
|
_startLoading("Loading");
|
|
},
|
|
complete:function(){
|
|
_endLoading();
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
|
|
|
|
var title = encodeURIComponent(fnc_checkNull(selectedData[0].TITLE));
|
|
window.open("/approval/registApproval.do?targetType=PURCHASE_ORDER&targetObjId="+objId+"&approvalTitle="+title+"&callbackFnc=fn_search&targetObjIds="+objIds,"registApproval","width=700,height=700");
|
|
}
|
|
}
|
|
}
|
|
|
|
_tabulGrid.on("rowSelected", function(row){
|
|
//row - row component for the selected row
|
|
});
|
|
|
|
});
|
|
|
|
|
|
fn_search();
|
|
|
|
|
|
//fnc_calculateContentHeight("gridDiv", 10);
|
|
setTimeout(() => fnc_calculateContentHeight("gridDiv", 15), 50);
|
|
$("#gridDiv").off("fnc_calculateContentHeight");
|
|
$(window).resize(function() {
|
|
fnc_calculateContentHeight("gridDiv", 15);
|
|
});
|
|
|
|
_tabulGrid.on("cellEdited", function(cell){
|
|
//alert('celedited');
|
|
var row = cell.getRow();
|
|
var rowData = row.getData();
|
|
|
|
var columnField = cell.getColumn().getField();
|
|
var newValue = cell.getValue();
|
|
|
|
//var TOTAL_SUPPLY_UNIT_PRICE = Number(rowData.TOTAL_SUPPLY_UNIT_PRICE); //공급가 부가세 포함
|
|
var TOTAL_REAL_SUPPLY_PRICE = Number(rowData.TOTAL_REAL_SUPPLY_PRICE); //공급가 부가세 별도
|
|
var DISCOUNT_PRICE_ALL = Number(fnc_checkNullDefaultValue(rowData.DISCOUNT_PRICE_ALL, 0)); //할인금액
|
|
var NEGO_RATE = Number(fnc_checkNullDefaultValue(rowData.NEGO_RATE, 0)); //네고율
|
|
var TOTAL_PRICE_ALL = Number(fnc_checkNullDefaultValue(rowData.TOTAL_PRICE_ALL, 0)); //할인공급가
|
|
|
|
var OBJID = fnc_checkNull(row.getData().OBJID);
|
|
var MULTI_YN = fnc_checkNull(row.getData().MULTI_YN);
|
|
var MULTI_MASTER_YN = fnc_checkNull(row.getData().MULTI_MASTER_YN);
|
|
//alert(OBJID + ":" + MULTI_YN + ":" + MULTI_MASTER_YN);
|
|
|
|
if(columnField == 'NEGO_RATE'){
|
|
//if(!fnc_isEmpty(NEGO_RATE) ){ //&& NEGO_RATE == 0
|
|
if(NEGO_RATE > 100){
|
|
alert('네고율은 100보다 클 수 없습니다.');
|
|
rowData.DISCOUNT_PRICE_ALL = '';
|
|
rowData.NEGO_RATE = '';
|
|
rowData.TOTAL_PRICE_ALL = '';
|
|
row.update(rowData);
|
|
return;
|
|
}
|
|
if(NEGO_RATE < 0){
|
|
alert('네고율은 0보다 작을 수 없습니다.');
|
|
rowData.DISCOUNT_PRICE_ALL = '';
|
|
rowData.NEGO_RATE = '';
|
|
rowData.TOTAL_PRICE_ALL = '';
|
|
row.update(rowData);
|
|
return;
|
|
}
|
|
DISCOUNT_PRICE_ALL = (TOTAL_REAL_SUPPLY_PRICE * NEGO_RATE/100).toFixed(1);
|
|
rowData.DISCOUNT_PRICE_ALL = DISCOUNT_PRICE_ALL;
|
|
rowData.TOTAL_PRICE_ALL = (TOTAL_REAL_SUPPLY_PRICE - DISCOUNT_PRICE_ALL).toFixed(1);
|
|
row.update(rowData);
|
|
}else if(columnField == 'DISCOUNT_PRICE_ALL'){
|
|
if(DISCOUNT_PRICE_ALL == 0 || DISCOUNT_PRICE_ALL < 0){
|
|
rowData.DISCOUNT_PRICE_ALL = '';
|
|
rowData.NEGO_RATE = '';
|
|
rowData.TOTAL_PRICE_ALL = '';
|
|
row.update(rowData);
|
|
}else if(DISCOUNT_PRICE_ALL > TOTAL_REAL_SUPPLY_PRICE){
|
|
alert('할인금액은 공급가보다 클 수 없습니다.');
|
|
rowData.DISCOUNT_PRICE_ALL = '';
|
|
rowData.NEGO_RATE = '';
|
|
rowData.TOTAL_PRICE_ALL = '';
|
|
row.update(rowData);
|
|
}else if( (DISCOUNT_PRICE_ALL > 0) // || DISCOUNT_PRICE_ALL == 0 && TOTAL_PRICE_ALL > 0
|
|
&& !isNaN(DISCOUNT_PRICE_ALL)
|
|
&& !isNaN(TOTAL_REAL_SUPPLY_PRICE)
|
|
&& TOTAL_REAL_SUPPLY_PRICE > 0){
|
|
//rowData.NEGO_RATE = Math.round(DISCOUNT_PRICE_ALL/TOTAL_REAL_SUPPLY_PRICE*100*10)/10; //소수점1자리
|
|
rowData.NEGO_RATE = (DISCOUNT_PRICE_ALL/TOTAL_REAL_SUPPLY_PRICE*100).toFixed(1); //소수점1자리
|
|
rowData.TOTAL_PRICE_ALL = TOTAL_REAL_SUPPLY_PRICE - DISCOUNT_PRICE_ALL;
|
|
row.update(rowData);
|
|
}
|
|
}
|
|
|
|
/*//240402 동시발주 단가 싱크처리 막음
|
|
//동시발주건 동일 적용
|
|
if(MULTI_YN == 'Y' && MULTI_MASTER_YN == 'Y'){ // && targetStatus != 'COMPLETE'
|
|
var sameRows = _tabulGrid.searchRows("MULTI_MASTER_OBJID", "=", OBJID);
|
|
//console.log(sameRows);
|
|
sameRows.forEach(function (sameRow) {
|
|
var sameRowData = sameRow.getData();
|
|
sameRowData.DISCOUNT_PRICE_ALL = rowData.DISCOUNT_PRICE_ALL
|
|
sameRowData.NEGO_RATE = rowData.NEGO_RATE
|
|
sameRowData.TOTAL_PRICE_ALL = rowData.TOTAL_PRICE_ALL
|
|
sameRow.update(sameRowData);
|
|
//sameRow.update(sameRow.getData());
|
|
});
|
|
}
|
|
*/
|
|
});
|
|
});
|
|
|
|
function fn_createGridAnchorTag(cell, formatterParams, onRendered){
|
|
var appendText = "";
|
|
var fieldValue = fnc_checkNull(cell.getValue());
|
|
|
|
if(cell.getField() == 'PROPOSAL_NO'){
|
|
// 품의서 No - 값이 있으면 링크 표시
|
|
if(fieldValue != ''){
|
|
appendText = "<a href='#none' style='color:#0000EE'>"+fieldValue+"</a>";
|
|
}else{
|
|
appendText = fieldValue;
|
|
}
|
|
}else if(cell.getField() == 'PURCHASE_ORDER_NO'){
|
|
var MULTI_YN = fnc_checkNull(cell.getData().MULTI_YN);
|
|
var MULTI_MASTER_YN = fnc_checkNull(cell.getData().MULTI_MASTER_YN);
|
|
var targetStatus = fnc_checkNull(cell.getData().APPR_STATUS).toUpperCase();
|
|
|
|
if(MULTI_YN == 'Y' && MULTI_MASTER_YN == 'N' && targetStatus != 'COMPLETE'){
|
|
appendText = fieldValue;
|
|
}else{
|
|
appendText = "<a href='#none' style='color:#0000EE'>"+fieldValue+"</a>";
|
|
}
|
|
}else if(cell.getField() == 'APPR_STATUS_NAME'){
|
|
var targetStatus = fnc_checkNull(cell.getData().APPR_STATUS).toUpperCase();
|
|
var MULTI_YN = fnc_checkNull(cell.getData().MULTI_YN);
|
|
var MULTI_MASTER_YN = fnc_checkNull(cell.getData().MULTI_MASTER_YN);
|
|
var status = fnc_checkNull(cell.getData().STATUS).toUpperCase();
|
|
|
|
if(!fnc_isEmpty(targetStatus) && "CREATE" != targetStatus && "CANCEL" != status
|
|
&& (MULTI_YN != 'Y' || MULTI_YN == 'Y' && MULTI_MASTER_YN == 'Y' || MULTI_YN == 'Y' && MULTI_MASTER_YN == 'N' && targetStatus == 'COMPLETE') ){
|
|
appendText = "<a href='#none' style='color:#0000EE'>"+fieldValue+"</a>";
|
|
}else{
|
|
appendText = fieldValue;
|
|
}
|
|
}
|
|
|
|
return appendText;
|
|
}
|
|
|
|
var columns = [
|
|
{title:'OBJID',field:'OBJID', visible:false, frozen:true},
|
|
{title:'OBJID_PROJECT',field:'OBJID_PROJECT', visible:false, frozen:true},
|
|
{title:'APPROVAL_OBJID',field:'APPROVAL_OBJID', visible:false, frozen:true},
|
|
{title:'ROUTE_OBJID',field:'ROUTE_OBJID', visible:false, frozen:true},
|
|
{title:'MULTI_MASTER_OBJID',field:'MULTI_MASTER_OBJID', visible:false, frozen:true},
|
|
{title:'SALES_REQUEST_OBJID',field:'SALES_REQUEST_OBJID', visible:false, frozen:true},
|
|
{title:'FORM_TYPE',field:'FORM_TYPE', visible:false, frozen:true},
|
|
|
|
{headerHozAlign:'center', hozAlign:'center', width:120, title:'품의서 No', field:'PROPOSAL_NO', frozen:true,
|
|
formatter:fn_createGridAnchorTag,
|
|
cellClick:function(e, cell){
|
|
var proposalObjid = fnc_checkNull(cell.getData().SALES_REQUEST_OBJID);
|
|
if(proposalObjid != ''){
|
|
window.open("/salesMng/proposalFormPopUp.do?PROPOSAL_OBJID=" + proposalObjid, "proposalFormPopUp", "width=1200,height=700,scrollbars=yes,resizable=yes");
|
|
}
|
|
}
|
|
},
|
|
{headerHozAlign:'center', hozAlign:'center', width:120, title:'발주서 No', field:'PURCHASE_ORDER_NO', frozen:true,
|
|
formatter:fn_createGridAnchorTag,
|
|
cellClick:function(e, cell){
|
|
var MULTI_YN = cell.getData().MULTI_YN;
|
|
var MULTI_MASTER_YN = cell.getData().MULTI_MASTER_YN;
|
|
var MULTI_MASTER_OBJID = cell.getData().MULTI_MASTER_OBJID;
|
|
var targetStatus = fnc_checkNull(cell.getData().APPR_STATUS).toUpperCase();
|
|
var formType = fnc_checkNull(cell.getData().FORM_TYPE, 'general');
|
|
|
|
var objId = fnc_checkNull(cell.getData().OBJID);
|
|
if(MULTI_YN == 'Y' && MULTI_MASTER_YN == 'N' && targetStatus != 'COMPLETE'){
|
|
objId = MULTI_MASTER_OBJID;
|
|
}else{
|
|
fn_formPopUp(objId, null, formType);
|
|
}
|
|
}
|
|
},
|
|
{headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'프로젝트번호', field:'PROJECT_NO',
|
|
formatter: fnc_createGridAnchorTag,
|
|
cellClick: function(e, cell){
|
|
var orderNo = cell.getData().PROJECT_NO;
|
|
// 프로젝트 번호 클릭 시: 결재 정보 조회 모드 (saleNo에 "detail" 전달)
|
|
fn_openSaleRegPopup(orderNo, "detail");
|
|
}
|
|
},
|
|
{headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'구매유형', field:'PURCHASE_TYPE_NAME'},
|
|
{headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'주문유형', field:'CATEGORY_NAME'},
|
|
{headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'제품구분', field:'PRODUCT_NAME'},
|
|
{headerHozAlign:'center', hozAlign:'left', widthGrow:1.5, title:'품번', field:'PART_NO'},
|
|
{headerHozAlign:'center', hozAlign:'left', widthGrow:2, title:'품명', field:'PART_NAME'},
|
|
{headerHozAlign:'center', hozAlign:'left', widthGrow:1.5, title:'공급업체', field:'PARTNER_NAME'},
|
|
{headerHozAlign:'center', hozAlign:'right', widthGrow:1.2, title:'총액', field:'TOTAL_SUPPLY_PRICE',
|
|
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false}
|
|
},
|
|
// {headerHozAlign:'center', hozAlign:'right', widthGrow:1.2, title:'총액', field:'TOTAL_PRICE_ALL',
|
|
// formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false}
|
|
// },
|
|
{headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'메일발송', field:'MAIL_SEND_YN',
|
|
formatter: function(cell, formatterParams, onRendered){
|
|
var value = fnc_checkNull(cell.getValue());
|
|
if(value === 'Y'){
|
|
return '<span style="color:green;">발송완료</span>';
|
|
} else {
|
|
return '';
|
|
}
|
|
}
|
|
},
|
|
{headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'발주일', field:'MAIL_SEND_DATE'}
|
|
];
|
|
|
|
function editCheck (cell) {
|
|
//var isEditable = (_idx%2 == 0);
|
|
//결재완료 && 동시발주는 마스터만 활성화
|
|
//return cell.getData().STATUS == 'approvalComplete'; // && ('Y' != cell.getData().MULTI_YN || 'Y' == cell.getData().MULTI_YN && 'Y' == cell.getData().MULTI_MASTER_YN);
|
|
return true; //241014 상태체크 X
|
|
}
|
|
|
|
function fn_excel() {
|
|
document.form1.actionType.value = "excel";
|
|
var form = document.form1;
|
|
form.action="/purchaseOrder/purchaseOrderList_new.do";
|
|
form.submit();
|
|
}
|
|
//var grid;
|
|
function fn_search(){
|
|
var selectedNoValues = $("#project_no").val();
|
|
$('<input>').attr({
|
|
type: 'hidden',
|
|
name: 'project_nos',
|
|
value: selectedNoValues
|
|
}).appendTo('#form1');
|
|
|
|
var selectedValues = $("#sales_mng_user_id").val();
|
|
$('input[name="sales_mng_user_ids"]').remove();
|
|
$('<input>').attr({
|
|
type: 'hidden',
|
|
name: 'sales_mng_user_ids',
|
|
value: selectedValues
|
|
}).appendTo('#form1');
|
|
|
|
var multiParam = new Array();
|
|
multiParam.push(selectedValues);
|
|
var checkArr = multiParam.join();
|
|
$("#checkArr").val(checkArr);
|
|
|
|
_tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/purchaseOrder/purchaseOrderListPaging.do", columns, true, null, null, null, null, null, null, false, rowSelectionControl); //_tabul_layout_fitColumns _tabul_layout_fitDataStretch
|
|
_tabulGrid.on("rowSelectionChanged", rowSelectionControl);
|
|
|
|
/* 총발주금액 주석처리
|
|
var _sum=0;
|
|
var _sum2=0;
|
|
var text =" <font size='2px' color='red'>총발주금액(원) : ";
|
|
//var text2 =" <font size='2px' color='red'>단일발주금액(원) : ";
|
|
$.ajax({
|
|
url:"/purchaseOrder/purchaseOrderMasterListSum.do",
|
|
type:"POST",
|
|
data:$("#form1").serializeObject(),
|
|
dataType:"json",
|
|
async:false,
|
|
success:function(data){
|
|
_sum = numberWithCommas(data.TOTAL_SUPPLY_PRICE);
|
|
//_sum2 = numberWithCommas(data.TOTAL_SUPPLY_PRICE);
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
text +=_sum+"</font> ";
|
|
//text2 +=_sum2+"</font>";
|
|
//text2 = '';
|
|
//$(".purchaseOrderSum").html(text+text2);
|
|
$(".purchaseOrderSum").html(text);
|
|
*/
|
|
}
|
|
|
|
function rowSelectionControl (data, rows) {
|
|
|
|
//alert('rowSelectionChanged');
|
|
|
|
rows.forEach(function (row) {
|
|
var rowData = row.getData();
|
|
//row.select(); // 활성화된 행은 선택됨
|
|
//row.deselect(); // 비활성화된 행은 선택 취소됨
|
|
|
|
var MULTI_YN = fnc_checkNull(row.getData().MULTI_YN);
|
|
var MULTI_MASTER_YN = fnc_checkNull(row.getData().MULTI_MASTER_YN);
|
|
if(MULTI_YN == 'Y' && MULTI_MASTER_YN != 'Y'){ // && targetStatus != 'COMPLETE'
|
|
row.deselect(); // 선택 비활성화
|
|
}
|
|
|
|
//row.getElement().querySelector(".tabulator-row-select").disabled = true; // 비활성화된 행의 체크박스를 비활성화
|
|
/*
|
|
// 선택된 행의 상태를 확인하고 활성화/비활성화를 설정
|
|
if (rowData.status === "active") {
|
|
row.getElement().style.backgroundColor = "green"; // 활성화된 행의 배경색을 변경
|
|
} else {
|
|
row.getElement().style.backgroundColor = "red"; // 비활성화된 행의 배경색을 변경
|
|
}
|
|
*/
|
|
});
|
|
}
|
|
|
|
function rowCheckControl(row) {
|
|
// rowSelected 이벤트 핸들러
|
|
var rowData = row.getData();
|
|
|
|
var MULTI_YN = fnc_checkNull(row.getData().MULTI_YN);
|
|
var MULTI_MASTER_YN = fnc_checkNull(row.getData().MULTI_MASTER_YN);
|
|
if(MULTI_YN == 'Y' && MULTI_MASTER_YN != 'Y'){ // && targetStatus != 'COMPLETE'
|
|
return false; // 선택 비활성화
|
|
}
|
|
|
|
// 여기에서 원하는 특정 값에 대한 조건을 설정
|
|
if (rowData.status === "inactive") {
|
|
//return false; // 선택 비활성화
|
|
}
|
|
|
|
return true; // 선택 활성화
|
|
}
|
|
|
|
function fn_openSaleRegPopup(orderNo, saleNo){
|
|
var popup_width = 1000;
|
|
var popup_height = 550;
|
|
// 한글 프로젝트 번호 인코딩 처리
|
|
var url = "/salesMgmt/salesRegForm.do?orderNo=" + encodeURIComponent(orderNo) + "&saleNo=" + (saleNo ? encodeURIComponent(saleNo) : "");
|
|
fn_centerPopup(popup_width, popup_height, url);
|
|
}
|
|
|
|
function fn_searchOld(){
|
|
document.form1.action = "/purchaseOrder/purchaseOrderList_new.do";
|
|
document.form1.submit();
|
|
}
|
|
|
|
//등록,수정,뷰
|
|
function fn_formPopUp(objId, copy, formType){
|
|
var popup_width = 1460;
|
|
var popup_height = 1050;
|
|
|
|
// 양식 타입에 따라 다른 팝업 열기
|
|
formType = fnc_checkNull(formType, 'general');
|
|
|
|
var hiddenForm = document.hiddenForm;
|
|
var target = "";
|
|
var url = "";
|
|
|
|
if(formType == 'outsourcing'){
|
|
// 외주가공 발주서 양식
|
|
target = "purchaseOrderFormPopup_outsourcing";
|
|
url = "/purchaseOrder/purchaseOrderFormPopup_outsourcing.do";
|
|
popup_width = 1200;
|
|
popup_height = 900;
|
|
} else if(formType == 'general'){
|
|
// 일반 발주서 양식
|
|
target = "purchaseOrderFormPopup_general";
|
|
url = "/purchaseOrder/purchaseOrderFormPopup_general.do";
|
|
popup_width = 1000;
|
|
popup_height = 900;
|
|
} else {
|
|
// 기존 발주서 양식 (FORM_TYPE이 없거나 기존 데이터)
|
|
target = "purchaseOrderFormPopup_new";
|
|
url = "/purchaseOrder/purchaseOrderFormPopup_new.do";
|
|
}
|
|
|
|
fn_centerPopup(popup_width, popup_height, "", target);
|
|
|
|
hiddenForm.PURCHASE_ORDER_MASTER_OBJID.value = objId;
|
|
hiddenForm.actionType.value = copy;
|
|
hiddenForm.action = url;
|
|
hiddenForm.target = target;
|
|
hiddenForm.submit();
|
|
}
|
|
|
|
function fn_save(){
|
|
var formData = $("#form1").serialize();
|
|
|
|
if(confirm("저장하시겠습니까?")){
|
|
|
|
var param = $("#form1").serializeObject();
|
|
param.dataListJson = JSON.stringify(_tabulGrid.getData());
|
|
//param.dataListJson = JSON.stringify(_tabulGrid.getSelectedData());
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/purchaseOrder/updatePurchaseOrderList.do",
|
|
//data: $("#form1").serialize(),
|
|
//data: $("#form1").serializeObject(),
|
|
data: param,
|
|
//data: {"dataListJson" : JSON.stringify(_tabulGrid.getData())},
|
|
dataType:"json",
|
|
success:function(data){
|
|
alert(data.msg);
|
|
if(data.result){
|
|
fn_search();
|
|
}
|
|
},
|
|
beforeSend:function(){
|
|
//_startLoading("저장중입니다. 데이터에 따라 시간이 걸릴 수 있습니다.");
|
|
_startLoading("저장중입니다.");
|
|
},
|
|
complete:function(){
|
|
_endLoading();
|
|
},
|
|
error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
function fn_cancel(){
|
|
//var selectedRowIds = fn_jqGrid_selarrrow(grid1);
|
|
var checkedObj = _tabulGrid.getSelectedData();
|
|
if(checkedObj.length==0){
|
|
Swal.fire("취소할 행을 선택해 주십시오.");
|
|
return false;
|
|
}else if(checkedObj.length>1){
|
|
Swal.fire("한번에 한개의 취소만 가능합니다.");
|
|
return false;
|
|
}else{
|
|
var checkObjs = new Array();
|
|
/*
|
|
for(var i=0; i<selectedRowIds.length; i++){
|
|
checkObjs.push( grid1.getCell(selectedRowIds[i], "OBJID") );
|
|
}
|
|
*/
|
|
var checkArr = new Array();
|
|
var ngCnt = 0;
|
|
var existsMultiMaster = false; //동시발주 마스터
|
|
var existsMultiSub = false; //동시발주 sub
|
|
for(var i=0;i<checkedObj.length;i++){
|
|
var objId = fnc_checkNull(checkedObj[i].OBJID);
|
|
var currentStatus = fnc_checkNull(checkedObj[i].STATUS);
|
|
var targetStatusName = fnc_checkNull(checkedObj[i].APPR_STATUS_NAME);
|
|
var writer = fnc_checkNull(checkedObj[i].WRITER);
|
|
|
|
/* */
|
|
//if(currentStatus != "" ){ //|| writer != "${connectUserId}"
|
|
//if(targetStatusName == "결재완료" || targetStatusName == "결재중"){
|
|
if(currentStatus == "cancel"){
|
|
ngCnt++;
|
|
break;
|
|
}else{
|
|
checkArr.push(objId);
|
|
}
|
|
|
|
var MULTI_MASTER_YN = fnc_checkNull(checkedObj[i].MULTI_MASTER_YN);
|
|
var MULTI_YN = fnc_checkNull(checkedObj[i].MULTI_YN);
|
|
if(!existsMultiMaster && MULTI_YN == 'Y' && MULTI_MASTER_YN == 'Y'){
|
|
existsMultiMaster = true;
|
|
}
|
|
|
|
if(!existsMultiSub && MULTI_YN == 'Y' && MULTI_MASTER_YN != 'Y'){
|
|
existsMultiSub = true;
|
|
}
|
|
}
|
|
|
|
if(0 < ngCnt){
|
|
Swal.fire("이미 취소된 건입니다.");
|
|
return false;
|
|
}else if(existsMultiSub){
|
|
Swal.fire("동시발주서 하위건은 취소할 수 없습니다.");
|
|
return false;
|
|
}else{
|
|
|
|
var msg = "";
|
|
if(existsMultiMaster){
|
|
msg = "동시발주서 마스터정보 취소시 동시발주서 모두 취소됩니다. ";
|
|
}
|
|
|
|
if(confirm(msg+"취소 하시겠습니까?")){
|
|
$("#materOrdObjId").val(checkArr.join(","));
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/purchaseOrder/purchaseOrderCancel.do",
|
|
data: $("#hiddenForm").serialize(),
|
|
dataType:"json",
|
|
success:function(data){
|
|
if(data =="SUCCESS"){
|
|
Swal.fire("취소되었습니다.");
|
|
fn_search();
|
|
};
|
|
}
|
|
,error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function fn_delete(){
|
|
//var selectedRowIds = fn_jqGrid_selarrrow(grid1);
|
|
var checkedObj = _tabulGrid.getSelectedData();
|
|
if(checkedObj.length==0){
|
|
Swal.fire("삭제할 행을 선택해 주십시오.");
|
|
return false;
|
|
}else{
|
|
var checkObjs = new Array();
|
|
/*
|
|
for(var i=0; i<selectedRowIds.length; i++){
|
|
checkObjs.push( grid1.getCell(selectedRowIds[i], "OBJID") );
|
|
}
|
|
*/
|
|
var checkArr = new Array();
|
|
var ngCnt = 0;
|
|
var existsMultiMaster = false; //동시발주 마스터
|
|
var existsMultiSub = false; //동시발주 sub
|
|
for(var i=0;i<checkedObj.length;i++){
|
|
var objId = fnc_checkNull(checkedObj[i].OBJID);
|
|
var currentStatus = fnc_checkNull(checkedObj[i].STATUS);
|
|
var targetStatusName = fnc_checkNull(checkedObj[i].APPR_STATUS_NAME);
|
|
var writer = fnc_checkNull(checkedObj[i].WRITER);
|
|
|
|
//if(currentStatus != "" ){ //|| writer != "${connectUserId}"
|
|
if(targetStatusName == "결재완료" || targetStatusName == "결재중"){
|
|
ngCnt++;
|
|
break;
|
|
}else{
|
|
checkArr.push(objId);
|
|
}
|
|
|
|
var MULTI_MASTER_YN = fnc_checkNull(checkedObj[i].MULTI_MASTER_YN);
|
|
var MULTI_YN = fnc_checkNull(checkedObj[i].MULTI_YN);
|
|
if(!existsMultiMaster && MULTI_YN == 'Y' && MULTI_MASTER_YN == 'Y'){
|
|
existsMultiMaster = true;
|
|
}
|
|
|
|
if(!existsMultiSub && MULTI_YN == 'Y' && MULTI_MASTER_YN != 'Y'){
|
|
existsMultiSub = true;
|
|
}
|
|
}
|
|
|
|
if(0 < ngCnt){
|
|
Swal.fire("작성중/반려 건만 삭제할 수 있습니다.");
|
|
return false;
|
|
}else if(existsMultiSub){
|
|
Swal.fire("동시발주서 하위건은 삭제할 수 없습니다.");
|
|
return false;
|
|
}else{
|
|
|
|
var msg = "";
|
|
if(existsMultiMaster){
|
|
msg = "동시발주서 마스터정보 삭제시 동시발주서 모두 삭제됩니다. ";
|
|
}
|
|
|
|
if(confirm(msg+"삭제 하시겠습니까?")){
|
|
$("#materOrdObjId").val(checkArr.join(","));
|
|
|
|
$.ajax({
|
|
type : "POST",
|
|
url : "/purchaseOrder/purchaseOrderDelete.do",
|
|
data: $("#hiddenForm").serialize(),
|
|
dataType:"json",
|
|
success:function(data){
|
|
if(data =="SUCCESS"){
|
|
Swal.fire("삭제되었습니다.");
|
|
fn_search();
|
|
};
|
|
}
|
|
,error: function(jqxhr, status, error){
|
|
}
|
|
});
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
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>';
|
|
|
|
}else if(options.colModel.name == "APPR_STATUS_NAME" ){ //상태
|
|
if(cellvalue=="결재중" || cellvalue=="결재완료"){
|
|
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, 370, \''+url+'\', \'approvalDetailPopup\');">'+cellvalue+'</a>';
|
|
}else{
|
|
return_fmt = cellvalue;
|
|
}
|
|
|
|
}
|
|
return return_fmt;
|
|
}
|
|
/**
|
|
unFormatter : grid1.getRowData(), getCell(n,colname) 에서 값만 나오게하는 함수
|
|
*/
|
|
function col_custom_fmt_un(cellvalue, options, cell) {
|
|
return cellvalue;
|
|
}
|
|
|
|
// 발주서 송부 (메일 발송 팝업)
|
|
function fn_sendPurchaseOrder(){
|
|
var selectedData = _tabulGrid.getSelectedData();
|
|
|
|
if(selectedData.length < 1){
|
|
Swal.fire("발주서를 송부할 행을 선택해주세요.");
|
|
return false;
|
|
} else if(selectedData.length > 1){
|
|
Swal.fire("한번에 한 개의 발주서만 발송 가능합니다.");
|
|
return false;
|
|
}
|
|
|
|
var status = fnc_checkNull(selectedData[0].STATUS);
|
|
var objId = fnc_checkNull(selectedData[0].OBJID);
|
|
var MULTI_YN = fnc_checkNull(selectedData[0].MULTI_YN);
|
|
var MULTI_MASTER_YN = fnc_checkNull(selectedData[0].MULTI_MASTER_YN);
|
|
var mailSendYn = fnc_checkNull(selectedData[0].MAIL_SEND_YN);
|
|
|
|
// 취소 상태 확인
|
|
if(status === "cancel"){
|
|
Swal.fire("취소된 발주서는 발송할 수 없습니다.");
|
|
return false;
|
|
}
|
|
|
|
// 동시발주 하위건 확인
|
|
if(MULTI_YN === 'Y' && MULTI_MASTER_YN !== 'Y'){
|
|
Swal.fire("동시발주 하위건은 마스터건으로 발송해주세요.");
|
|
return false;
|
|
}
|
|
|
|
// 이미 발송된 경우 재발송 확인
|
|
if(mailSendYn === 'Y'){
|
|
Swal.fire({
|
|
title: '이미 발송된 발주서입니다.',
|
|
text: '다시 발송하시겠습니까?',
|
|
icon: 'warning',
|
|
showCancelButton: true,
|
|
confirmButtonText: '재발송',
|
|
cancelButtonText: '취소'
|
|
}).then((result) => {
|
|
if(result.isConfirmed){
|
|
fn_openMailFormPopup(objId);
|
|
}
|
|
});
|
|
return false;
|
|
}
|
|
|
|
// 메일 발송 팝업 열기
|
|
fn_openMailFormPopup(objId);
|
|
}
|
|
|
|
// 발주서 메일 발송 팝업 열기
|
|
function fn_openMailFormPopup(purchaseOrderObjId){
|
|
if(!purchaseOrderObjId || purchaseOrderObjId === ''){
|
|
Swal.fire("잘못된 요청입니다.");
|
|
return;
|
|
}
|
|
|
|
var popup_width = 900;
|
|
var popup_height = 750;
|
|
var url = "/purchaseOrder/purchaseOrderMailFormPopup.do?purchaseOrderObjId=" + purchaseOrderObjId;
|
|
|
|
window.open(url, "purchaseOrderMailForm", "width="+popup_width+",height="+popup_height+",menubar=no,scrollbars=yes,resizable=yes");
|
|
}
|
|
|
|
</script>
|
|
<body class="<%--bodyNoScrollX--%>">
|
|
<form name="hiddenForm" id="hiddenForm" method="post">
|
|
<input type="hidden" name="PURCHASE_ORDER_MASTER_OBJID" id="PURCHASE_ORDER_MASTER_OBJID">
|
|
<input type="hidden" name="actionType" id="actionType">
|
|
<input type="hidden" name="materOrdObjId" id="materOrdObjId">
|
|
</form>
|
|
<form name="form1" id="form1" action="" method="post">
|
|
<input type="hidden" name="actionType" id="actionType">
|
|
|
|
<div class="content-box" style="">
|
|
<div class="content-box-s">
|
|
<div class="plm_menu_name_gdnsi">
|
|
<h2>
|
|
<span><%=menuName%></span>
|
|
</h2>
|
|
|
|
<div class="btnArea">
|
|
<!-- <input type="button" class="plm_btns" value="발주서작성" id="btnReg">
|
|
<input type="button" class="plm_btns" value="복사" id="btnCopy">
|
|
<input type="button" class="plm_btns" value="결재상신" id="btnApproval">
|
|
<input type="button" class="plm_btns" value="취소" id="btnCancel">
|
|
<input type="button" class="plm_btns" value="삭제" id="btnDelete">
|
|
<input type="button" class="plm_btns" value="저장" id="btnSave"> -->
|
|
<input type="button" class="plm_btns" value="발주서 송부" id="btnSend">
|
|
<input type="button" class="plm_btns" value="조회" id="btnSearch">
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="plmSearchZon">
|
|
<table class="">
|
|
|
|
<tr>
|
|
<td><label for="Year">년도</label></td>
|
|
<td>
|
|
<select name="Year" id="Year" class="select2" autocomplete="off" style="">
|
|
<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=""><option value="">선택</option>${code_map.customer_cd}</select></td>
|
|
|
|
<td><label for="">프로젝트번호</label></td>
|
|
<td><select name="project_no" id="project_no" class="select2" autocomplete="off" style="width:190px;" multiple="multiple"><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=""/></td>
|
|
|
|
<td><label for="">공급업체</label></td>
|
|
<td><select name="partner_objid" id="partner_objid" class="select2" autocomplete="off" style=""><option value="">선택</option>${code_map.partner_objid}</select></td>
|
|
|
|
<td><label for="">품번</label></td>
|
|
<td>
|
|
<select name="SEARCH_PART_NO" id="SEARCH_PART_NO" class="select2-part" style="width:150px;">
|
|
<option value="">품번 선택</option>
|
|
</select>
|
|
<input type="hidden" name="SEARCH_PART_OBJID" id="SEARCH_PART_OBJID" value="">
|
|
</td>
|
|
|
|
<td><label for="">품명</label></td>
|
|
<td>
|
|
<select name="SEARCH_PART_NAME" id="SEARCH_PART_NAME" class="select2-part" style="width:150px;">
|
|
<option value="">품명 선택</option>
|
|
</select>
|
|
</td>
|
|
|
|
<%-- 발주부품, 발주구분 주석처리
|
|
<td><label for="">발주부품</label></td>
|
|
<td><select name="type" id="type" class="select2" autocomplete="off" style=""><option value="">선택</option>${code_map.type}</select></td>
|
|
|
|
<td><label for="">발주구분</label></td>
|
|
<td><select name="order_type_cd" id="order_type_cd" class="select2" autocomplete="off" style=""><option value="">선택</option>${code_map.order_type_cd}</select></td>
|
|
--%>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class=""><label>입고요청일</label></td>
|
|
<td>
|
|
<input type="text" name="delivery_start_date" id="delivery_start_date" style="width:77px;" autocomplete="off" value="${param.delivery_start_date}" class="date_icon">~
|
|
<input type="text" name="delivery_end_date" id="delivery_end_date" style="width:77px;" autocomplete="off" value="${param.delivery_end_date }" class="date_icon">
|
|
</td>
|
|
|
|
<td><label>발주일</label></td>
|
|
<td>
|
|
<input type="text" name="reg_start_date" id="reg_start_date" style="width:77px;" autocomplete="off" value="${param.reg_start_date}" class="date_icon">~
|
|
<input type="text" name="reg_end_date" id="reg_end_date" style="width:77px;" autocomplete="off" value="${param.reg_end_date }" class="date_icon">
|
|
</td>
|
|
|
|
<td><label for="">주문유형</label></td>
|
|
<td><select name="category_cd" id="category_cd" class="select2" autocomplete="off" style=""><option value="">선택</option>${code_map.category_cd}</select></td>
|
|
|
|
<td><label for="">제품구분</label></td>
|
|
<td><select name="product_cd" id="product_cd" class="select2" autocomplete="off" style=""><option value="">선택</option>${code_map.product_cd}</select></td>
|
|
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div style="width:50%;float:left; color: RED;" class="purchaseOrderSum">
|
|
</div>
|
|
|
|
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</body>
|
|
</html> |