Files
wace_plm/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderList_new.jsp

886 lines
32 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>
</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();
//조회
$("#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},
{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 objId = fnc_checkNull(cell.getData().OBJID);
if(MULTI_YN == 'Y' && MULTI_MASTER_YN == 'N' && targetStatus != 'COMPLETE'){
objId = MULTI_MASTER_OBJID;
}else{
fn_formPopUp(objId);
}
}
},
{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 ="&nbsp;&nbsp; <font size='2px' color='red'>총발주금액(원) : ";
//var text2 ="&nbsp;&nbsp; <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>&nbsp;&nbsp;";
//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){
var popup_width = 1460;
var popup_height = 1050;
var hiddenForm = document.hiddenForm;
var target = "purchaseOrderFormPopup_new";
var 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="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 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="sales_mng_user_id" id="sales_mng_user_id" class="select2" autocomplete="off" style="width:190px;" multiple="multiple" ><option value="">선택</option>${code_map.sales_mng_user_id}</select></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>
<input type="text" name="SEARCH_PART_NO" id="SEARCH_PART_NO" style="" autocomplete="off" value="${param.SEARCH_PART_NO}">
</td>
<td><label for="">품명</label></td>
<td>
<input type="text" name="SEARCH_PART_NAME" id="SEARCH_PART_NAME" style="" autocomplete="off" value="${param.SEARCH_PART_NAME}">
</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>