Merge pull request 'V2025111901' (#82) from V2025111901 into main
Reviewed-on: #82
This commit was merged in pull request #82.
This commit is contained in:
@@ -15,10 +15,22 @@ var helpViewArr = new Array();
|
||||
var refArr = new Array();
|
||||
var refViewArr = new Array();
|
||||
|
||||
// URL 파라미터에서 값 가져오기 (한글 인코딩 처리)
|
||||
function getUrlParameter(name) {
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
return urlParams.get(name) || '';
|
||||
}
|
||||
|
||||
$(function(){
|
||||
|
||||
var callbackFnc = "${param.callbackFnc}";
|
||||
|
||||
// URL에서 approvalTitle 파라미터 가져와서 설정 (한글 인코딩 문제 해결)
|
||||
var approvalTitleFromUrl = getUrlParameter('approvalTitle');
|
||||
if(approvalTitleFromUrl) {
|
||||
$("#approvalTitle").val(approvalTitleFromUrl);
|
||||
}
|
||||
|
||||
//창 닫기
|
||||
$('#btn_close').click(function(){
|
||||
self.close();
|
||||
|
||||
@@ -86,19 +86,20 @@ function _fnc_datepick(){
|
||||
|
||||
// 그리드 컬럼 정의
|
||||
var columns = [
|
||||
{title:'OBJID', field:'OBJID', visible: false},
|
||||
{title:'CONTRACT_OBJID', field:'CONTRACT_OBJID', visible: false},
|
||||
{title:'BOM_REPORT_OBJID', field:'BOM_REPORT_OBJID', visible: false},
|
||||
{title:'MBOM_HEADER_OBJID', field:'MBOM_HEADER_OBJID', visible: false},
|
||||
{title:'PURCHASE_LIST_OBJID', field:'PURCHASE_LIST_OBJID', visible: false},
|
||||
{title:'OBJID', field:'OBJID', visible: false,frozen: true,},
|
||||
{title:'CONTRACT_OBJID', field:'CONTRACT_OBJID', visible: false,frozen: true,},
|
||||
{title:'BOM_REPORT_OBJID', field:'BOM_REPORT_OBJID', visible: false,frozen: true,},
|
||||
{title:'MBOM_HEADER_OBJID', field:'MBOM_HEADER_OBJID', visible: false,frozen: true,},
|
||||
{title:'PURCHASE_LIST_OBJID', field:'PURCHASE_LIST_OBJID', visible: false,frozen: true,},
|
||||
|
||||
// 1. 체크박스
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'center',
|
||||
width: 40,
|
||||
width: 30,
|
||||
title: '<input type="checkbox" id="checkAll">',
|
||||
field: 'CHK',
|
||||
frozen: true,
|
||||
formatter: function(cell, formatterParams, onRendered) {
|
||||
return '<input type="checkbox" class="rowCheck" data-objid="' + cell.getRow().getData().OBJID + '">';
|
||||
},
|
||||
@@ -109,9 +110,16 @@ var columns = [
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'left',
|
||||
width: 130,
|
||||
width: 120,
|
||||
title: '프로젝트번호',
|
||||
field: 'PROJECT_NO'
|
||||
field: 'PROJECT_NO',
|
||||
frozen: true,
|
||||
formatter: fnc_createGridAnchorTag,
|
||||
cellClick: function(e, cell){
|
||||
var orderNo = cell.getData().PROJECT_NO;
|
||||
// 프로젝트 번호 클릭 시: 결재 정보 조회 모드 (saleNo에 "detail" 전달)
|
||||
fn_openSaleRegPopup(orderNo, "detail");
|
||||
}
|
||||
},
|
||||
|
||||
// 3. 주문유형
|
||||
@@ -145,7 +153,7 @@ var columns = [
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'center',
|
||||
width: 90,
|
||||
width: 80,
|
||||
title: '접수일',
|
||||
field: 'RECEIPT_DATE'
|
||||
},
|
||||
@@ -181,7 +189,7 @@ var columns = [
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'left',
|
||||
// width: 150,
|
||||
width: 150,
|
||||
title: '품명',
|
||||
field: 'PART_NAME'
|
||||
},
|
||||
@@ -239,13 +247,40 @@ var columns = [
|
||||
}
|
||||
},
|
||||
|
||||
// 16. 작성자 (M-BOM 작성자)
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'center',
|
||||
width: 90,
|
||||
title: '작성자',
|
||||
field: 'MBOM_EDITOR'
|
||||
},
|
||||
|
||||
// 16. 최종저장일 (M-BOM 작성일)
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'center',
|
||||
width: 100,
|
||||
title: '최종저장일',
|
||||
width: 90,
|
||||
title: '저장일',
|
||||
field: 'MBOM_REGDATE'
|
||||
},
|
||||
|
||||
// 17. 버전 (M-BOM 버전)
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'center',
|
||||
width: 70,
|
||||
title: '버전',
|
||||
field: 'MBOM_VERSION'
|
||||
},
|
||||
|
||||
// 18. 구매리스트 생성일
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'center',
|
||||
width: 130,
|
||||
title: '구매리스트 생성일',
|
||||
field: 'PURCHASE_LIST_DATE'
|
||||
}
|
||||
];
|
||||
|
||||
@@ -399,6 +434,14 @@ function fn_openBomCopyPopupWindow(objId) {
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
// 할당 정보 확인 후 M-BOM 팝업 열기
|
||||
function fn_checkAssignmentAndOpenMbom(projectObjId) {
|
||||
// 먼저 해당 프로젝트의 M-BOM이 실제로 존재하는지 확인
|
||||
|
||||
@@ -100,7 +100,7 @@ var pageSize = 20;
|
||||
|
||||
$(document).ready(function(){
|
||||
initEbomTable();
|
||||
fn_searchEbom();
|
||||
//fn_searchEbom();
|
||||
|
||||
// 조회 버튼 클릭 이벤트
|
||||
$("#btnSearch").click(function(){
|
||||
|
||||
@@ -543,8 +543,8 @@ $(document).ready(function(){
|
||||
$("#SALES_MNG_USER_HP").val($(this).find("option:selected").attr("data-cell_phone"));
|
||||
});
|
||||
|
||||
<c:if test="${empty info || empty info.OBJID || info.actType eq 'C'}">
|
||||
$("#PO_CLIENT_ID").val('-1130201617'); //우성 default
|
||||
<c:if test="${empty info || empty info.PO_CLIENT_ID || info.actType eq 'C'}">
|
||||
$("#PO_CLIENT_ID").val('-1130201617'); //RPS default
|
||||
$("#PO_CLIENT_ID").trigger("change");
|
||||
</c:if>
|
||||
|
||||
|
||||
@@ -7,6 +7,11 @@
|
||||
<%--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>
|
||||
@@ -16,29 +21,8 @@
|
||||
|
||||
<link rel="stylesheet" href="/css/selectMulti.css">
|
||||
|
||||
<style>
|
||||
/* //.tabulator-row-select { */
|
||||
.tabulator-row .tabulator-cell {
|
||||
/*
|
||||
width: 20px !important;
|
||||
*/
|
||||
}
|
||||
|
||||
/*
|
||||
.tabulator-row .tabulator-cell input[type="checkbox"] {
|
||||
/*width: 20px; 원하는 너비로 조절하세요 */
|
||||
}
|
||||
*/
|
||||
</style>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
//fnc_changePaginationAndTotalCountArea();
|
||||
|
||||
//$(".tabulator-row > .tabulator-cell").has('input').css('width', '10px');
|
||||
//$(".tabulator-cell input[type='checkbox']").css("width", "20px"); // 원하는 너비로 조절하세요
|
||||
//$(".tabulator-row .tabulator-cell input[type='checkbox']").css("width", "20px !important"); // 원하는 너비로 조절하세요
|
||||
|
||||
$("input").keyup(function(e){
|
||||
if(e.keyCode == 13){
|
||||
@@ -161,102 +145,7 @@ $(document).ready(function(){
|
||||
});
|
||||
|
||||
});
|
||||
/*
|
||||
grid1 = $("#grid1").jqGrid({
|
||||
url: ""
|
||||
,datatype: "local"
|
||||
,data : $.parseJSON($("#grid1Data").val())
|
||||
,colNames: ["OBJID","결재1","결재2"
|
||||
,"년도","고객사","고객사 프로젝트명","당사프로젝트번호","발주부품","발주 No.", "발주구분","발주서_제목","납품장소","검수방법","결재조건","입고요청일","공급업체"
|
||||
//,"레이저업체","용접업체","가공업체" // TODO: 협의중
|
||||
,"구매담당","발주일","발주금액","상태"]
|
||||
,colModel: [
|
||||
{name:"OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
|
||||
,{name:"APPROVAL_OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
|
||||
,{name:"ROUTE_OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
|
||||
|
||||
,{name:"CM_YEAR" , index:"", width:45, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"CUSTOMER_NAME" , index:"", width:100, align:"left", hidden:false, sortable:false, editable:false}
|
||||
,{name:"CUSTOMER_PROJECT_NAME", index:"", width:150, align:"left", hidden:false, sortable:false, editable:false}
|
||||
,{name:"PROJECT_NO" , index:"", width:120, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"TYPE_NAME" , index:"", width:70, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"PURCHASE_ORDER_NO" , index:"", width:100, align:"center", hidden:false, sortable:false, editable:false, formatter: col_custom_fmt, unformat:col_custom_fmt_un}
|
||||
|
||||
,{name:"ORDER_TYPE_CD_NAME" , index:"", width:70, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"TITLE" , index:"", width:200, align:"left", hidden:false, sortable:false, editable:false}
|
||||
,{name:"DELIVERY_PLACE_NAME" , index:"", width:90, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"INSPECT_METHOD_NAME" , index:"", width:90, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"PAYMENT_TERMS_NAME" , index:"", width:120, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"DELIVERY_DATE" , index:"", width:90, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"PARTNER_NAME" , index:"", width:120, align:"left", hidden:false, sortable:false, editable:false}
|
||||
|
||||
//,{name:"SUPPLY1" , index:"", width:110, align:"center", hidden:false, sortable:false, editable:false} // TODO: 협의중
|
||||
//,{name:"SUPPLY2" , index:"", width:110, align:"center", hidden:false, sortable:false, editable:false} // TODO: 협의중
|
||||
//,{name:"SUPPLY3" , index:"", width:110, align:"center", hidden:false, sortable:false, editable:false} // TODO: 협의중
|
||||
|
||||
,{name:"SALES_MNG_USER_NAME" , index:"", width:80, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"REGDATE" , index:"", width:90, align:"center", hidden:false, sortable:false, editable:false}
|
||||
,{name:"TOTAL_PRICE_ALL" , index:"", width:120, align: "right", hidden:false, sortable:false, editable:false, formatter :"integer"}
|
||||
,{name:"APPR_STATUS_NAME" , index:"", width:80, align:"center", hidden:false, sortable:false, editable:false, formatter: col_custom_fmt, unformat:col_custom_fmt_un}
|
||||
]
|
||||
,ignoreCase : true //로컬 검색 및 정렬이 대,소문자를 구분하지 않도록 하려면true
|
||||
,rownumbers : false //row번호 표시
|
||||
,viewrecords : true //pager가 있을경우 표시되는 record number
|
||||
,autowidth : true //그리드 너비가 자동으로 부모 요소의 너비로 다시 계산
|
||||
,sortable : false //마우스로 열을 끌어다 놓아 열을 재정렬
|
||||
,shrinkToFit : true //모든 열은 너비에 비례하여 크기가 조정
|
||||
,forceFit : false //컬럼의 width를 변화시킬때 그리드의 width를 고정 여부
|
||||
,multiselect : true //선택가능. 체크박스표시
|
||||
//,height : 650
|
||||
,height : 'auto'
|
||||
//,rowNum : "${countPerPage}"
|
||||
,rowNum : 90000
|
||||
,jsonReader : {repeatitems: false}
|
||||
,mtype :"POST"
|
||||
,footerrow : false //바닥합계
|
||||
,userDataOnFooter: false //바닥합계
|
||||
//,caption :"제목"
|
||||
//,pager :"#grid1Pager"
|
||||
,loadComplete: function(data){ //모든 서버 요청 직후에 실행
|
||||
var gid = this.id;
|
||||
var grid_wrap_div = $("#gbox_"+gid);
|
||||
|
||||
$.each($("#"+gid).getDataIDs(), function(i,o){
|
||||
var st = $("#"+gid).getCell(o, "APPR_STATUS_NAME");
|
||||
if(st=="결재중"){
|
||||
$("#jqg_"+gid+"_"+o).attr("disabled", true); //체크불가 행 설정
|
||||
}
|
||||
});
|
||||
|
||||
setTimeout("fn_jqGrid_init($('#"+gid+"'), true);", 50); //윈도우크기 비례 자동조절
|
||||
//footer 커스텀..
|
||||
}
|
||||
,onSelectRow : function(rowid, status, e){ //행 선택시
|
||||
var gid = $(this).attr("id");
|
||||
var disabled = $("#jqg_"+gid+"_"+rowid).attr("disabled");
|
||||
if(disabled){ //체크불가 처리한 행처리
|
||||
$("#jqg_"+gid+"_"+rowid).attr("checked",false);
|
||||
$("#jqg_"+gid+"_"+rowid).attr("value","off");
|
||||
//$("tr.jqgrow#"+rowid, $("#gbox_"+gid)).removeClass("ui-state-highlight").attr("aria-selected", "false");
|
||||
}
|
||||
}
|
||||
,onSelectAll : function(aRowids,status){ //전체선택시
|
||||
var gid = $(this).attr("id");
|
||||
if(status){
|
||||
for(var i=1;i<=aRowids.length;i++){
|
||||
var disabled = $("#jqg_"+gid+"_"+i).attr("disabled");
|
||||
if(disabled){ //체크불가 처리한 행처리
|
||||
$("#jqg_"+gid+"_"+i).attr("checked",false);
|
||||
$("#jqg_"+gid+"_"+i).attr("value","off");
|
||||
$("tr.jqgrow#"+i, $("#gbox_"+gid)).removeClass("ui-state-highlight").attr("aria-selected", "false");
|
||||
}else{
|
||||
$("#jqg_"+gid+"_"+i).attr("value","on");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
|
||||
fn_search();
|
||||
|
||||
@@ -354,27 +243,32 @@ function fn_createGridAnchorTag(cell, formatterParams, onRendered){
|
||||
var appendText = "";
|
||||
var fieldValue = fnc_checkNull(cell.getValue());
|
||||
|
||||
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 MULTI_MASTER_OBJID = fnc_checkNull(cell.getData().MULTI_MASTER_OBJID);
|
||||
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='#' href='#none' style='color:#0000EE'>"+fieldValue+"</a>";
|
||||
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 MULTI_MASTER_OBJID = fnc_checkNull(cell.getData().MULTI_MASTER_OBJID);
|
||||
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 //&& "REJECT" != targetStatus
|
||||
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='#' href='#none' style='color:#0000EE'>"+fieldValue+"</a>";
|
||||
appendText = "<a href='#none' style='color:#0000EE'>"+fieldValue+"</a>";
|
||||
}else{
|
||||
appendText = fieldValue;
|
||||
}
|
||||
@@ -384,12 +278,23 @@ function fn_createGridAnchorTag(cell, formatterParams, onRendered){
|
||||
}
|
||||
|
||||
var columns = [
|
||||
{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:'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 : '96', title : '발주 No.', field : "PURCHASE_ORDER_NO", 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;
|
||||
@@ -398,108 +303,32 @@ var columns = [
|
||||
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'
|
||||
//&& 1==2//for test
|
||||
){
|
||||
if(MULTI_YN == 'Y' && MULTI_MASTER_YN == 'N' && targetStatus != 'COMPLETE'){
|
||||
objId = MULTI_MASTER_OBJID;
|
||||
}else{
|
||||
fn_formPopUp(objId);
|
||||
}
|
||||
//fn_formPopUp(objId); //for test(링크 다 열림)
|
||||
}
|
||||
},
|
||||
/*
|
||||
{title:"프로젝트정보", headerHozAlign:'center',
|
||||
columns:[
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '50', title : '년도', field : "CM_YEAR" },
|
||||
{headerHozAlign : 'center', hozAlign : 'left' , width : '100', title : '고객사', field : "CUSTOMER_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'left' , width : '100', title : '고객사 프로젝트명', field : "CUSTOMER_PROJECT_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'left' , width : '100', title : '유닛명', field : "UNIT_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '프로젝트번호', field : "PROJECT_NO" },
|
||||
],
|
||||
frozen:true
|
||||
},
|
||||
*/
|
||||
{title:"발주내용", headerHozAlign:'center',
|
||||
columns:[
|
||||
|
||||
//{headerHozAlign : 'center', hozAlign : 'center', width : '50', title : '년도', field : "PO_YEAR" },
|
||||
{headerHozAlign : 'center', hozAlign : 'left' , width : '95', title : '고객사', field : "CUSTOMER_NAME" },
|
||||
//{headerHozAlign : 'center', hozAlign : 'left' , width : '100', title : '고객사 프로젝트명', field : "CUSTOMER_PROJECT_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '프로젝트번호', field : "PROJECT_NO" },
|
||||
{headerHozAlign : 'center', hozAlign : 'left' , width : '140', title : '유닛명', field : "UNIT_NAME" },
|
||||
|
||||
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '60', title : '부품', field : "TYPE_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '50', title : '구분', field : "ORDER_TYPE_CD_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '50', title : '동시', field : "MULTI_YN" }, //MULTI_YN_MAKED
|
||||
|
||||
{headerHozAlign : 'center', hozAlign : 'left ', width : '200', title : '발주서제목', field : "TITLE" },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '63', title : '납품장소', field : "DELIVERY_PLACE_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '73', title : '검수방법', field : "INSPECT_METHOD_NAME" },
|
||||
//{headerHozAlign : 'center', hozAlign : 'center', width : '73', title : '결재조건', field : "PAYMENT_TERMS_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '85', title : '입고요청일', field : "DELIVERY_DATE" },
|
||||
{headerHozAlign : 'center', hozAlign : 'left' , /*width : '100',*/ title : '공급업체', field : "PARTNER_NAME" },
|
||||
//{headerHozAlign : 'center', hozAlign : 'left' , /*width : '100',*/ title : '레이져업체명', field : "PARTNER_NAME" },
|
||||
//{headerHozAlign : 'center', hozAlign : 'left' , /*width : '100',*/ title : '용접업체명', field : "PARTNER_NAME" },
|
||||
//{headerHozAlign : 'center', hozAlign : 'left' , /*width : '100',*/ title : '가공업체명', field : "PARTNER_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '50', title : '구매', field : "SALES_MNG_USER_NAME" },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '발주일', field : "REGDATE" }, //발주서 작성일 기준(240312 확인)
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '61', title : '상태', field : "APPR_STATUS_NAME" , formatter:fn_createGridAnchorTag,
|
||||
cellClick:function(e, cell){
|
||||
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 MULTI_MASTER_OBJID = fnc_checkNull(cell.getData().MULTI_MASTER_OBJID);
|
||||
var MULTI_MASTER_OBJID = fnc_checkNull(cell.getData().MULTI_MASTER_OBJID);
|
||||
var status = fnc_checkNull(cell.getData().STATUS).toUpperCase();
|
||||
|
||||
if(!fnc_isEmpty(targetStatus) && "CREATE" != targetStatus && "CANCEL" != status //&& "REJECT" != targetStatus
|
||||
&& (MULTI_YN != 'Y' || MULTI_YN == 'Y' && MULTI_MASTER_YN == 'Y' || MULTI_YN == 'Y' && MULTI_MASTER_YN == 'N' && targetStatus == 'COMPLETE') ){
|
||||
fnc_approvalDetail(cell.getData().APPROVAL_OBJID, cell.getData().ROUTE_OBJID);
|
||||
}
|
||||
}},
|
||||
|
||||
/*
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '등록자', field : 'SPEC_WRITER_NAME' },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '등록일', field : 'SPEC_REG_DATE' },
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '상태', field : 'SPEC_STATUS_NAME' },
|
||||
*/
|
||||
{visible:false, headerHozAlign : 'center', hozAlign : 'right' , /* width : '90', */ title : '부가세포함공급가', field : "TOTAL_SUPPLY_UNIT_PRICE", formatter:"money", formatterParams:{ thousand:",", symbolAfter:"p", precision:false, } },
|
||||
{headerHozAlign : 'center', hozAlign : 'right' , /* width : '90', */ title : '공급가', field : "TOTAL_SUPPLY_PRICE", formatter:"money", formatterParams:{ thousand:",", symbolAfter:"p", precision:false, } },
|
||||
{headerHozAlign : 'center', hozAlign : 'right' , /* width : '90', */ title : '실공급가', field : "TOTAL_REAL_SUPPLY_PRICE", formatter:"money", formatterParams:{ thousand:",", symbolAfter:"p", precision:false, } },
|
||||
],
|
||||
},
|
||||
/*
|
||||
{title:"단일", headerHozAlign:'center',
|
||||
columns:[
|
||||
{headerHozAlign : 'center', hozAlign : 'right' , width : '75', title : '공급가', field : "TOTAL_SUPPLY_PRICE" ,
|
||||
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false, } },
|
||||
],
|
||||
},
|
||||
*/
|
||||
|
||||
{title:"할인(NEGO)", headerHozAlign:'center', //고객정보
|
||||
columns:[
|
||||
{headerHozAlign : 'center', hozAlign : 'right' , width : '80', title : '할인금액', field : "DISCOUNT_PRICE_ALL", editable:editCheck, //DISCOUNT_PRICE
|
||||
formatter:"money", formatterParams:{ thousand:",", symbolAfter:"p", precision:false, },
|
||||
editor:"number", editorParams:{
|
||||
min:0, max:9999999999, maxlength:10,//step:10, mask:"999",
|
||||
elementAttributes:{ maxlength:"10", pattern:"\d*",min:0, max:9999999999, oninput:"fnc_maxLengthCheck(this)" },
|
||||
selectContents:true, verticalNavigation:"table", //up and down arrow keys navigate away from cell without changing value
|
||||
}
|
||||
},
|
||||
{headerHozAlign : 'center', hozAlign : 'center', width : '85', title : '네고율(%)', field : "NEGO_RATE", headerSort:true,
|
||||
editor:"number", editorParams:{
|
||||
min:0, max:100, maxlength:3,//step:10, mask:"999",
|
||||
elementAttributes:{ maxlength:"3", pattern:"\d*",min:0, max:100, oninput:"fnc_maxLengthCheck(this)" },
|
||||
selectContents:true, verticalNavigation:"table", //up and down arrow keys navigate away from cell without changing value
|
||||
}
|
||||
},
|
||||
{headerHozAlign : 'center', hozAlign : 'right' , /* width : '115', */ title : '할인공급가', field : "TOTAL_PRICE_ALL" , //TOTAL_PRICE
|
||||
formatter:"money", formatterParams:{ thousand:",", symbolAfter:"p", precision:false, } }, //NEGO_ORDER_PRICE
|
||||
],
|
||||
{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_PRICE_ALL',
|
||||
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false}
|
||||
},
|
||||
{headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'메일발송', field:'MAIL_SEND_YN'},
|
||||
{headerHozAlign:'center', hozAlign:'center', widthGrow:1, title:'발주일', field:'REGDATE'}
|
||||
];
|
||||
|
||||
function editCheck (cell) {
|
||||
@@ -538,29 +367,7 @@ function fn_search(){
|
||||
$("#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.rowSelection = rowCheckControl;
|
||||
//_tabulGrid.rowSelectionChanged = rowSelectionControl;
|
||||
_tabulGrid.on("rowSelectionChanged", rowSelectionControl);
|
||||
//_tabulGrid.selectable = false; //true
|
||||
|
||||
//_tabulGrid.selectRow();
|
||||
//_tabulGrid.deselectRow();
|
||||
|
||||
/*
|
||||
var rows = _tabulGrid.getRows();
|
||||
rows.forEach(function (row) {
|
||||
var rowData = row.getData();
|
||||
//row.select(); // 활성화된 행은 선택됨
|
||||
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"; // 비활성화된 행의 배경색을 변경
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
var _sum=0;
|
||||
var _sum2=0;
|
||||
@@ -630,6 +437,13 @@ function rowCheckControl(row) {
|
||||
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";
|
||||
@@ -891,67 +705,29 @@ function col_custom_fmt_un(cellvalue, options, cell) {
|
||||
</form>
|
||||
<form name="form1" id="form1" action="" method="post">
|
||||
<input type="hidden" name="actionType" id="actionType">
|
||||
<%--
|
||||
<input type="hidden" name="countPerPage" id="countPerPage" value="${countPerPage }">
|
||||
--%>
|
||||
|
||||
<div class="content-box" style="">
|
||||
<div class="content-box-s">
|
||||
<div class="plm_menu_name_gdnsi">
|
||||
<h2>
|
||||
<span>발주관리_발주관리</span>
|
||||
<span><%=menuName%></span>
|
||||
</h2>
|
||||
|
||||
<div class="btnArea">
|
||||
<input type="button" class="plm_btns" value="발주서작성" id="btnReg">
|
||||
<!-- <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="btnSave"> -->
|
||||
<input type="button" class="plm_btns" value="발주서 송부" id="btnSend">
|
||||
<input type="button" class="plm_btns" value="조회" id="btnSearch">
|
||||
<!--
|
||||
<input type="button" value="Excel Download" class="plm_btns" id="btnExcel">
|
||||
-->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="plmSearchZon">
|
||||
<table class="">
|
||||
<!--
|
||||
<colgroup>
|
||||
<col width="70px">
|
||||
<col width="*">
|
||||
<col width="60px">
|
||||
<col width="*">
|
||||
<col width="80px">
|
||||
<col width="*">
|
||||
<col width="50px">
|
||||
<col width="*">
|
||||
<col width="60px">
|
||||
<col width="*">
|
||||
<col width="60px">
|
||||
<col width="*">
|
||||
<col width="60px">
|
||||
<col width="7%">
|
||||
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
<col width="*">
|
||||
</colgroup>
|
||||
-->
|
||||
|
||||
<tr>
|
||||
<td><label for="Year">년도</label></td>
|
||||
@@ -1042,30 +818,7 @@ function col_custom_fmt_un(cellvalue, options, cell) {
|
||||
<div style="width:50%;float:left; color: RED;" class="purchaseOrderSum">
|
||||
</div>
|
||||
|
||||
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
|
||||
<%--
|
||||
<section class="contents_page_basic_margin">
|
||||
<div class="btn_wrap">
|
||||
<div class="plm_btn_wrap">
|
||||
<input type="button" class="plm_btns" value="결재상신" id="btnApproval">
|
||||
<input type="button" class="plm_btns" value="삭제" id="btnDelete">
|
||||
<input type="button" class="plm_btns" value="발주서작성" id="btnReg">
|
||||
<input type="button" class="plm_btns" value="조회" id="btnSearch">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="plm_table_wrap" style="overflow-x: auto;">
|
||||
<table id="grid1"></table>
|
||||
<!-- <div id="grid1Pager"></div> -->
|
||||
<textarea style="width:0px; height:0px; visibility: hidden;" id="grid1Data">${LIST}<c:if test="${empty LIST}">[]</c:if></textarea><!-- [{},{},{}] -->
|
||||
</div>
|
||||
|
||||
<div class="pdm_page">${PAGE_HTML}</div>
|
||||
</section>
|
||||
|
||||
<textarea style="width:0px; height:0px; visibility: hidden;" id="jsonLevel3_csmCategory">${code_map.jsonLevel3_csmCategory}</textarea><!-- 코드동적설정 -->
|
||||
--%>
|
||||
|
||||
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
1073
WebContent/WEB-INF/view/purchaseOrder/purchaseOrderList_new_back.jsp
Normal file
1073
WebContent/WEB-INF/view/purchaseOrder/purchaseOrderList_new_back.jsp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -85,28 +85,31 @@ $(document).ready(function(){
|
||||
|
||||
// 결재상신
|
||||
$("#btnApproval").click(function(){
|
||||
var selectedRowIds = _tabulGrid.getSelectedData();
|
||||
if(selectedRowIds.length < 1){
|
||||
Swal.fire("결재상신할 행을 선택해주십시오.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(selectedRowIds.length > 1){
|
||||
Swal.fire("결재상신은 한 건씩만 가능합니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var objId = fnc_checkNull(selectedRowIds[0].OBJID);
|
||||
var status = fnc_checkNull(selectedRowIds[0].STATUS);
|
||||
|
||||
if(status != 'create' && status != 'reject'){
|
||||
Swal.fire("미결재 또는 반려 상태만 결재상신 가능합니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var title = encodeURIComponent("품의서 결재");
|
||||
window.open("/approval/registApproval.do?targetType=PROPOSAL&targetObjId="+objId+"&approvalTitle="+title+"&callbackFnc=fn_search","registApproval","width=700,height=700");
|
||||
});
|
||||
var selectedData = _tabulGrid.getSelectedData();
|
||||
if(selectedData.length<1){
|
||||
Swal.fire("결재상신할 행을 선택해주십시오.");
|
||||
return false;
|
||||
}else if(selectedData.length>1){
|
||||
Swal.fire("한번에 한개의 결재만 가능합니다.");
|
||||
return false;
|
||||
}else{
|
||||
|
||||
var targetStatus = fnc_checkNull(selectedData[0].STATUS_TITLE);
|
||||
var status = fnc_checkNull(selectedData[0].STATUS);
|
||||
|
||||
if(targetStatus == "결재완료" || targetStatus == "결재중" || status == "cancel"){
|
||||
Swal.fire("작성중/결재반려인 상태만 결재상신 가능합니다.");
|
||||
return false;
|
||||
}else{
|
||||
if(confirm("결재상신 하시겠습니까?")){
|
||||
var objId = fnc_checkNull(selectedData[0].OBJID);
|
||||
//var title = encodeURIComponent(fnc_checkNull(selectedData[0].CONTRACT_NO));
|
||||
var title = encodeURIComponent("품의서 결재");
|
||||
window.open("/approval/registApproval.do?targetType=PROPOSAL&targetObjId="+objId+"&approvalTitle="+title,"registApproval","width=700,height=700");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 발주서생성
|
||||
$("#btnCreatePO").click(function(){
|
||||
@@ -116,25 +119,45 @@ $(document).ready(function(){
|
||||
return false;
|
||||
}
|
||||
|
||||
var status = fnc_checkNull(selectedRowIds[0].STATUS);
|
||||
if(status != 'approvalComplete'){
|
||||
var statusTitle = fnc_checkNull(selectedRowIds[0].STATUS_TITLE);
|
||||
if(statusTitle != '결재완료'){
|
||||
Swal.fire("결재완료 상태만 발주서 생성이 가능합니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO: 발주서 생성 로직 구현
|
||||
Swal.fire("발주서 생성 기능은 준비 중입니다.");
|
||||
});
|
||||
|
||||
// 초기화
|
||||
$("#btnReset").click(function(){
|
||||
$("#form1")[0].reset();
|
||||
$('.select2').val('').trigger('change');
|
||||
});
|
||||
|
||||
// 엑셀 다운로드
|
||||
$("#btnExcel").click(function(){
|
||||
fn_excelExport($("#mainGrid"), "품의서관리");
|
||||
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){
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
fn_search();
|
||||
@@ -158,14 +181,12 @@ var columns = [
|
||||
{headerHozAlign:'center', hozAlign:'left', title:"품번", field:"PART_NO", widthGrow:1.5},
|
||||
{headerHozAlign:'center', hozAlign:'left', title:"품명", field:"PART_NAME", widthGrow:1.8},
|
||||
{headerHozAlign:'center', hozAlign:'center', title:"결재상태", field:"STATUS_TITLE", widthGrow:1.0,
|
||||
formatter: function(cell){
|
||||
var value = cell.getValue();
|
||||
var color = '';
|
||||
if(value == '결재완료') color = '#28a745';
|
||||
else if(value == '결재중') color = '#007bff';
|
||||
else if(value == '반려') color = '#dc3545';
|
||||
else color = '#6c757d';
|
||||
return '<span style="color:' + color + '; font-weight:bold;">' + fnc_checkNull(value) + '</span>';
|
||||
formatter:fnc_createGridAnchorTag,
|
||||
cellClick:function(e, cell){
|
||||
var statusTitle = fnc_checkNull(cell.getData().STATUS_TITLE);
|
||||
if(statusTitle == "결재중" || statusTitle == "결재완료" || statusTitle == "반려"){
|
||||
fnc_approvalDetail(cell.getData().APPROVAL_OBJID, cell.getData().ROUTE_OBJID);
|
||||
}
|
||||
}
|
||||
},
|
||||
{headerHozAlign:'center', hozAlign:'center', title:"작성일", field:"REGDATE_TITLE", widthGrow:1.0}
|
||||
@@ -182,6 +203,16 @@ function fn_openProposalFormPopUp(objId){
|
||||
window.open(url, "proposalFormPopUp", "width=1200,height=700,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
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
@@ -198,8 +229,6 @@ function fn_openProposalFormPopUp(objId){
|
||||
<input type="button" value="조회" class="plm_btns" id="btnSearch">
|
||||
<input type="button" value="결재상신" class="plm_btns" id="btnApproval" style="background:#17a2b8; color:white;">
|
||||
<input type="button" value="발주서생성" class="plm_btns" id="btnCreatePO" style="background:#28a745; color:white;">
|
||||
<%-- <input type="button" value="초기화" class="plm_btns" id="btnReset">
|
||||
<input type="button" value="엑셀 다운로드" class="plm_btns" id="btnExcel"> --%>
|
||||
</div>
|
||||
</div>
|
||||
<div id="plmSearchZon">
|
||||
|
||||
@@ -2963,6 +2963,18 @@
|
||||
LIMIT 1
|
||||
)
|
||||
LIMIT 1) AS PURCHASE_LIST_OBJID,
|
||||
-- 구매리스트 생성일
|
||||
(SELECT TO_CHAR(SRM.REGDATE, 'YYYY-MM-DD')
|
||||
FROM SALES_REQUEST_MASTER SRM
|
||||
WHERE SRM.MBOM_HEADER_OBJID = (
|
||||
SELECT MH.OBJID::VARCHAR
|
||||
FROM MBOM_HEADER MH
|
||||
WHERE MH.PROJECT_OBJID = PM.OBJID::VARCHAR
|
||||
AND MH.STATUS = 'Y'
|
||||
ORDER BY MH.REGDATE DESC
|
||||
LIMIT 1
|
||||
)
|
||||
LIMIT 1) AS PURCHASE_LIST_DATE,
|
||||
-- M-BOM 상태: 새 MBOM_HEADER 테이블에서 조회
|
||||
COALESCE(
|
||||
(SELECT
|
||||
@@ -2993,7 +3005,29 @@
|
||||
WHERE MH.PROJECT_OBJID = PM.OBJID::VARCHAR
|
||||
AND MH.STATUS = 'Y'
|
||||
ORDER BY COALESCE(MH.EDIT_DATE, MH.REGDATE) DESC
|
||||
LIMIT 1) AS MBOM_REGDATE
|
||||
LIMIT 1) AS MBOM_REGDATE,
|
||||
-- M-BOM 작성자: 새 MBOM_HEADER 테이블에서 조회
|
||||
(SELECT USER_NAME(COALESCE(MH.EDITER, MH.WRITER))
|
||||
FROM MBOM_HEADER MH
|
||||
WHERE MH.PROJECT_OBJID = PM.OBJID::VARCHAR
|
||||
AND MH.STATUS = 'Y'
|
||||
ORDER BY COALESCE(MH.EDITER, MH.WRITER) DESC
|
||||
LIMIT 1) AS MBOM_EDITOR,
|
||||
-- M-BOM 히스토리 카운트 (버전, 0이면 NULL)
|
||||
NULLIF(
|
||||
(
|
||||
SELECT COUNT(1)::INTEGER
|
||||
FROM MBOM_HISTORY MHI
|
||||
WHERE MHI.MBOM_HEADER_OBJID = (
|
||||
SELECT MH.OBJID::VARCHAR
|
||||
FROM MBOM_HEADER MH
|
||||
WHERE MH.PROJECT_OBJID = PM.OBJID::VARCHAR
|
||||
AND MH.STATUS = 'Y'
|
||||
ORDER BY MH.REGDATE DESC
|
||||
LIMIT 1
|
||||
)
|
||||
), 0
|
||||
) AS MBOM_VERSION
|
||||
FROM
|
||||
PROJECT_MGMT PM
|
||||
LEFT JOIN CONTRACT_MGMT CM ON PM.CONTRACT_OBJID = CM.OBJID
|
||||
|
||||
@@ -578,8 +578,8 @@
|
||||
(
|
||||
#{OBJID},
|
||||
#{PO_CLIENT_ID},
|
||||
<!-- (SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||LPAD((COALESCE(MAX(SUBSTR(PURCHASE_ORDER_NO,9,11)),'0')::INTEGER+1)::TEXT,3,'0') FROM PURCHASE_ORDER_MASTER), -->
|
||||
(SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||(COALESCE(MAX(case when SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) = '' or PURCHASE_ORDER_NO is null then '0' else SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) end ::numeric ))::INTEGER+1)::TEXT FROM PURCHASE_ORDER_MASTER),
|
||||
<!-- 기존: PO-YYMM-순번, 신규: RPSYY-MMDD-순번 (예: RPS25-0926-01) -->
|
||||
(SELECT 'RPS'||TO_CHAR(NOW(),'YY')||'-'||TO_CHAR(NOW(),'MMDD')||'-'||LPAD((COALESCE(MAX(CASE WHEN PURCHASE_ORDER_NO LIKE 'RPS'||TO_CHAR(NOW(),'YY-MMDD')||'-%' THEN SPLIT_PART(PURCHASE_ORDER_NO, '-', 3) ELSE '0' END)::INTEGER, 0) + 1)::TEXT, 2, '0') FROM PURCHASE_ORDER_MASTER),
|
||||
#{CATEGORY_CD},
|
||||
#{PRODUCT_GROUP},
|
||||
#{PRODUCT},
|
||||
@@ -757,8 +757,8 @@
|
||||
(
|
||||
#{OBJID},
|
||||
#{PO_CLIENT_ID},
|
||||
(SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||(COALESCE(MAX(case when SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) = '' or PURCHASE_ORDER_NO is null then '0' else SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) end ::numeric ))::INTEGER+1)::TEXT FROM PURCHASE_ORDER_MASTER),
|
||||
<!-- (SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||LPAD((COALESCE(MAX(SUBSTR(PURCHASE_ORDER_NO,9,11)),'0')::INTEGER+1)::TEXT,3,'0') FROM PURCHASE_ORDER_MASTER), -->
|
||||
(SELECT 'RPS'||TO_CHAR(NOW(),'YY')||'-'||TO_CHAR(NOW(),'MMDD')||'-'||LPAD((COALESCE(MAX(CASE WHEN PURCHASE_ORDER_NO LIKE 'RPS'||TO_CHAR(NOW(),'YY-MMDD')||'-%' THEN SPLIT_PART(PURCHASE_ORDER_NO, '-', 3) ELSE '0' END)::INTEGER, 0) + 1)::TEXT, 2, '0') FROM PURCHASE_ORDER_MASTER),
|
||||
<!-- 기존: PO-YYMM-순번, 신규: RPSYY-MMDD-순번 (예: RPS25-0926-01) -->
|
||||
#{PARTNER_OBJID},
|
||||
#{DELIVERY_REQUEST_DATE},
|
||||
#{DELIVERY_PLACE},
|
||||
@@ -839,6 +839,64 @@
|
||||
GROUP BY PARTNER_OBJID
|
||||
</select>
|
||||
|
||||
<!-- 품의서용 공급업체 조회 (VENDOR_PM 사용) -->
|
||||
<select id="getVendorListByProposalObjid" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
VENDOR_PM as PARTNER_OBJID
|
||||
FROM
|
||||
SALES_REQUEST_PART SRP
|
||||
LEFT OUTER JOIN SALES_REQUEST_MASTER SRM ON SRP.SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
||||
WHERE SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_OBJID}
|
||||
AND VENDOR_PM IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM PURCHASE_ORDER_MASTER AS P WHERE P.SALES_REQUEST_OBJID = SRM.OBJID AND P.PARTNER_OBJID = SRP.VENDOR_PM)
|
||||
GROUP BY VENDOR_PM
|
||||
</select>
|
||||
|
||||
<!-- 품의서의 공급업체별 품목 조회 (VENDOR_PM 기준) -->
|
||||
<select id="getProposalPartsByVendor" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
SRP.OBJID,
|
||||
SRP.PART_OBJID,
|
||||
SRP.QTY,
|
||||
COALESCE(SRP.PO_QTY, SRP.QTY::NUMERIC, 0) AS ORDER_QTY, -- 발주수량 (PO_QTY 우선, 없으면 QTY)
|
||||
SRP.UNIT_PRICE AS PARTNER_PRICE,
|
||||
SRP.TOTAL_PRICE,
|
||||
SRP.VENDOR_PM AS PARTNER_OBJID,
|
||||
PM.PART_NO,
|
||||
PM.PART_NAME,
|
||||
PM.SPEC,
|
||||
PM.UNIT,
|
||||
PM.MAKER
|
||||
FROM
|
||||
SALES_REQUEST_PART SRP
|
||||
LEFT JOIN PART_MNG PM ON PM.OBJID::VARCHAR = SRP.PART_OBJID
|
||||
WHERE
|
||||
SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_OBJID}
|
||||
AND SRP.VENDOR_PM = #{PARTNER_OBJID}
|
||||
</select>
|
||||
|
||||
<!-- 구매요청서의 공급업체별 품목 조회 (PARTNER_OBJID 기준) -->
|
||||
<select id="getSalesRequestPartsByVendor" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
SRP.OBJID,
|
||||
SRP.PART_OBJID,
|
||||
SRP.QTY,
|
||||
SRP.UNIT_PRICE AS PARTNER_PRICE,
|
||||
SRP.TOTAL_PRICE,
|
||||
SRP.PARTNER_OBJID,
|
||||
PM.PART_NO,
|
||||
PM.PART_NAME,
|
||||
PM.SPEC,
|
||||
PM.UNIT,
|
||||
PM.MAKER
|
||||
FROM
|
||||
SALES_REQUEST_PART SRP
|
||||
LEFT JOIN PART_MNG PM ON PM.OBJID::VARCHAR = SRP.PART_OBJID
|
||||
WHERE
|
||||
SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_OBJID}
|
||||
AND SRP.PARTNER_OBJID = #{PARTNER_OBJID}
|
||||
</select>
|
||||
|
||||
<update id="mergePurchaseOrderMasterPrice" parameterType="map">
|
||||
INSERT INTO PURCHASE_ORDER_MASTER
|
||||
(
|
||||
@@ -887,7 +945,7 @@
|
||||
(
|
||||
#{OBJID},
|
||||
#{PO_CLIENT_ID},
|
||||
(SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||LPAD((COALESCE(MAX(SUBSTR(PURCHASE_ORDER_NO,9,11)),'0')::INTEGER+1)::TEXT,3,'0') FROM PURCHASE_ORDER_MASTER),
|
||||
(SELECT 'RPS'||TO_CHAR(NOW(),'YY')||'-'||TO_CHAR(NOW(),'MMDD')||'-'||LPAD((COALESCE(MAX(CASE WHEN PURCHASE_ORDER_NO LIKE 'RPS'||TO_CHAR(NOW(),'YY-MMDD')||'-%' THEN SPLIT_PART(PURCHASE_ORDER_NO, '-', 3) ELSE '0' END)::INTEGER, 0) + 1)::TEXT, 2, '0') FROM PURCHASE_ORDER_MASTER),
|
||||
#{CATEGORY_CD},
|
||||
#{PRODUCT_GROUP},
|
||||
#{PRODUCT},
|
||||
@@ -2969,7 +3027,6 @@ SELECT
|
||||
</if>
|
||||
</select>
|
||||
|
||||
|
||||
<select id="purchaseOrderMasterList_new" parameterType="map" resultType="map">
|
||||
SELECT POM.OBJID
|
||||
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(OBJID),',') FROM PURCHASE_ORDER_MASTER S
|
||||
@@ -3030,6 +3087,255 @@ SELECT POM.OBJID
|
||||
,A.APPROVAL_OBJID
|
||||
,A.APPR_DATE
|
||||
|
||||
,SALES_REQUEST_OBJID
|
||||
,SRM.REQUEST_MNG_NO AS PROPOSAL_NO
|
||||
,CODE_NAME(SRM.PURCHASE_TYPE) AS PURCHASE_TYPE_NAME
|
||||
,CODE_NAME(CM.PRODUCT) AS PRODUCT_NAME
|
||||
,CODE_NAME(CM.CATEGORY_CD) AS CATEGORY_NAME
|
||||
-- 발주서 품목 정보 (첫번째 품번/품명 + 외 N건)
|
||||
,(SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) > 1 THEN MIN(POP.PART_NO) || ' 외 ' || (COUNT(*) - 1) || '건'
|
||||
ELSE MIN(POP.PART_NO)
|
||||
END
|
||||
FROM PURCHASE_ORDER_PART POP
|
||||
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
||||
) AS PART_NO
|
||||
,(SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) > 1 THEN MIN(POP.PART_NAME) || ' 외 ' || (COUNT(*) - 1) || '건'
|
||||
ELSE MIN(POP.PART_NAME)
|
||||
END
|
||||
FROM PURCHASE_ORDER_PART POP
|
||||
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
||||
) AS PART_NAME
|
||||
FROM PURCHASE_ORDER_MASTER AS POM
|
||||
LEFT OUTER JOIN(
|
||||
SELECT B.OBJID AS ROUTE_OBJID
|
||||
,B.STATUS AS APPR_STATUS
|
||||
,CASE B.STATUS
|
||||
WHEN 'inProcess' THEN '결재중'
|
||||
WHEN 'complete' THEN '결재완료'
|
||||
WHEN 'reject' THEN '반려'
|
||||
WHEN 'cancel' THEN '취소'
|
||||
ELSE '' END APPR_STATUS_NAME
|
||||
,A.OBJID AS APPROVAL_OBJID
|
||||
,A.TARGET_OBJID
|
||||
,B.ROUTE_SEQ
|
||||
,TO_CHAR(B.REGDATE,'YYYY-MM-DD') AS APPR_DATE
|
||||
FROM APPROVAL A
|
||||
,( SELECT T1.*
|
||||
FROM ( SELECT TARGET_OBJID
|
||||
,MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
||||
FROM ROUTE T
|
||||
GROUP BY T.TARGET_OBJID
|
||||
) T
|
||||
,ROUTE T1
|
||||
WHERE T.TARGET_OBJID = T1.TARGET_OBJID
|
||||
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
||||
) B
|
||||
WHERE A.OBJID = B.APPROVAL_OBJID
|
||||
AND TARGET_TYPE IN ('PURCHASE_ORDER')
|
||||
) AS A ON ( POM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
||||
<!-- 동시발주건 조건 주석처리(속도)240813
|
||||
OR EXISTS (SELECT 1 FROM APPROVAL_TARGET AT WHERE AT.APPROVAL_OBJID = A.APPROVAL_OBJID AND AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR)
|
||||
-->
|
||||
)
|
||||
<!--
|
||||
INNER JOIN PROJECT_MGMT AS CM
|
||||
-->
|
||||
LEFT OUTER JOIN PROJECT_MGMT AS CM
|
||||
ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
||||
left outer join SALES_REQUEST_MASTER as SRM
|
||||
on POM.SALES_REQUEST_OBJID = SRM.OBJID
|
||||
and SRM.DOC_TYPE = 'PROPOSAL'
|
||||
<!-- 230907 outer join으로 변경
|
||||
,PROJECT_MGMT AS CM
|
||||
WHERE POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
||||
-->
|
||||
WHERE 1=1
|
||||
<!-- for test
|
||||
-->
|
||||
AND (MULTI_MASTER_YN = 'Y' OR NVL(MULTI_MASTER_YN, '') != 'Y' AND NVL(MULTI_YN, '') != 'Y')
|
||||
<if test="Year !=null and Year != '' ">
|
||||
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
|
||||
<!--
|
||||
AND EXISTS (
|
||||
SELECT 'E' FROM PROJECT_MGMT AS S_P
|
||||
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
|
||||
AND TO_CHAR(S_P.REGDATE,'YYYY') = #{Year}
|
||||
)
|
||||
-->
|
||||
</if>
|
||||
<if test="customer_cd !=null and customer_cd != '' ">
|
||||
AND EXISTS (
|
||||
SELECT 'E' FROM PROJECT_MGMT AS S_P
|
||||
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
|
||||
AND S_P.CUSTOMER_OBJID = #{customer_cd}
|
||||
)
|
||||
</if>
|
||||
<if test="customer_project_name !=null and customer_project_name != '' ">
|
||||
AND CM.CUSTOMER_PROJECT_NAME = #{customer_project_name}
|
||||
</if>
|
||||
<!-- <if test="project_no !=null and project_no != '' ">
|
||||
AND POM.CONTRACT_MGMT_OBJID = #{project_no}
|
||||
</if> -->
|
||||
<if test="project_nos != null and project_nos != ''">
|
||||
AND POM.CONTRACT_MGMT_OBJID IN
|
||||
<foreach item="state" collection="project_nos.split(',')"
|
||||
open="(" separator="," close=")">
|
||||
#{state}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="unit_code !=null and unit_code != '' ">
|
||||
AND POM.UNIT_CODE LIKE '%'||#{unit_code}||'%'
|
||||
</if>
|
||||
<if test="purchase_order_no !=null and purchase_order_no != '' ">
|
||||
AND POM.PURCHASE_ORDER_NO LIKE '%'||#{purchase_order_no}||'%'
|
||||
</if>
|
||||
<if test="type !=null and type != '' ">
|
||||
AND POM.TYPE = #{type}
|
||||
</if>
|
||||
<if test="order_type_cd !=null and order_type_cd != '' ">
|
||||
AND POM.ORDER_TYPE_CD = #{order_type_cd}
|
||||
</if>
|
||||
<if test="delivery_start_date !=null and delivery_start_date != '' ">
|
||||
AND TO_DATE(POM.DELIVERY_DATE ,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{delivery_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="delivery_end_date !=null and delivery_end_date != '' ">
|
||||
AND TO_DATE(POM.DELIVERY_DATE ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{delivery_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="partner_objid !=null and partner_objid != '' ">
|
||||
AND POM.PARTNER_OBJID = #{partner_objid}
|
||||
</if>
|
||||
<!--
|
||||
<if test="sales_mng_user_id !=null and sales_mng_user_id != '' ">
|
||||
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
|
||||
</if>
|
||||
-->
|
||||
<if test="sales_mng_user_ids != null and sales_mng_user_ids != ''">
|
||||
AND POM.SALES_MNG_USER_ID IN
|
||||
<foreach item="value" collection="sales_mng_user_ids.split(',')"
|
||||
open="(" separator="," close=")">
|
||||
#{value}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="reg_start_date !=null and reg_start_date != '' ">
|
||||
AND TO_DATE(TO_CHAR(POM.REGDATE,'YYYY-MM-DD') ,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{reg_start_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="reg_end_date !=null and reg_end_date != '' ">
|
||||
AND TO_DATE(TO_CHAR(POM.REGDATE,'YYYY-MM-DD') ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{reg_end_date}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
<if test="appr_status !=null and appr_status != '' ">
|
||||
<choose>
|
||||
<when test="'cancel'.equals(appr_status)">
|
||||
AND POM.STATUS = #{appr_status}
|
||||
</when>
|
||||
<when test="'complete'.equals(appr_status)">
|
||||
AND POM.STATUS = 'approvalComplete'
|
||||
</when>
|
||||
<when test="'create'.equals(appr_status)">
|
||||
AND ( POM.STATUS = #{appr_status}
|
||||
AND NOT EXISTS (SELECT 1 FROM APPROVAL AT
|
||||
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
||||
)
|
||||
AND NOT EXISTS (SELECT 1 FROM APPROVAL_TARGET AT
|
||||
WHERE AT.TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
||||
OR AT.MASTER_TARGET_OBJID::VARCHAR = POM.OBJID::VARCHAR
|
||||
)
|
||||
)
|
||||
</when>
|
||||
<otherwise>
|
||||
AND A.APPR_STATUS = #{appr_status}
|
||||
</otherwise>
|
||||
</choose>
|
||||
</if>
|
||||
<if test="SEARCH_PART_NO !=null and SEARCH_PART_NO != '' ">
|
||||
AND EXISTS (SELECT 1
|
||||
FROM PURCHASE_ORDER_PART POP
|
||||
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
||||
AND TRIM(UPPER(POP.PART_NO)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NO}))||'%'
|
||||
)
|
||||
</if>
|
||||
<if test="SEARCH_PART_NAME !=null and SEARCH_PART_NAME != '' ">
|
||||
AND EXISTS (SELECT 1
|
||||
FROM PURCHASE_ORDER_PART POP
|
||||
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
||||
AND TRIM(UPPER(POP.PART_NAME)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NAME}))||'%'
|
||||
)
|
||||
</if>
|
||||
<if test="SEARCH_PART_SPEC !=null and SEARCH_PART_SPEC != '' ">
|
||||
AND EXISTS (SELECT 1
|
||||
FROM PURCHASE_ORDER_PART POP
|
||||
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
||||
AND TRIM(UPPER(POP.SPEC)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_SPEC}))||'%'
|
||||
)
|
||||
</if>
|
||||
|
||||
ORDER BY SPLIT_PART( PURCHASE_ORDER_NO, '-', 3)::NUMERIC DESC
|
||||
</select>
|
||||
|
||||
<select id="purchaseOrderMasterList_new_old" parameterType="map" resultType="map">
|
||||
SELECT POM.OBJID
|
||||
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(OBJID),',') FROM PURCHASE_ORDER_MASTER S
|
||||
WHERE POM.OBJID = S.MULTI_MASTER_OBJID) MULTI_OBJIDS
|
||||
,TO_CHAR(CM.REGDATE, 'YYYY') AS CM_YEAR
|
||||
,TO_CHAR(POM.REGDATE, 'YYYY') AS PO_YEAR
|
||||
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
||||
,CM.CUSTOMER_PROJECT_NAME
|
||||
,CM.PROJECT_NO
|
||||
,POM.PURCHASE_ORDER_NO
|
||||
,(CASE WHEN POM.MULTI_YN = 'Y' AND POM.MULTI_MASTER_YN != 'Y' THEN 'ㅡ'
|
||||
WHEN POM.MULTI_YN = 'Y' AND POM.MULTI_MASTER_YN != 'Y' THEN ' '
|
||||
ELSE '' END)||POM.TITLE TITLE
|
||||
,POM.DELIVERY_PLACE
|
||||
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.DELIVERY_PLACE) AS DELIVERY_PLACE_NAME
|
||||
,POM.INSPECT_METHOD
|
||||
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.INSPECT_METHOD) AS INSPECT_METHOD_NAME
|
||||
,POM.PAYMENT_TERMS
|
||||
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.PAYMENT_TERMS) AS PAYMENT_TERMS_NAME
|
||||
,POM.DELIVERY_DATE
|
||||
|
||||
,POM.TYPE
|
||||
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.TYPE) AS TYPE_NAME
|
||||
|
||||
,POM.PARTNER_OBJID
|
||||
,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME
|
||||
|
||||
,POM.SALES_MNG_USER_ID
|
||||
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME
|
||||
,TO_CHAR(POM.REGDATE,'YYYY-MM-DD') AS REGDATE
|
||||
,POM.TOTAL_PRICE
|
||||
,POM.TOTAL_PRICE_ALL
|
||||
,POM.DISCOUNT_PRICE
|
||||
,POM.DISCOUNT_PRICE_ALL
|
||||
,POM.TOTAL_SUPPLY_PRICE
|
||||
,POM.TOTAL_SUPPLY_UNIT_PRICE
|
||||
,POM.TOTAL_REAL_SUPPLY_PRICE
|
||||
,POM.NEGO_RATE
|
||||
<!--
|
||||
,POM.TOTAL_SUPPLY_UNIT_PRICE::NUMERIC - POM.DISCOUNT_PRICE::NUMERIC as TOTAL_SUPPLY_UNIT_PRICE_NEGO
|
||||
-->
|
||||
|
||||
,POM.ORDER_TYPE_CD
|
||||
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = POM.ORDER_TYPE_CD) AS ORDER_TYPE_CD_NAME
|
||||
,POM.UNIT_CODE
|
||||
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = POM.UNIT_CODE) AS UNIT_NAME
|
||||
,POM.MULTI_YN
|
||||
,POM.MULTI_MASTER_YN
|
||||
,POM.MULTI_MASTER_OBJID
|
||||
,CASE WHEN POM.MULTI_MASTER_YN = 'Y' THEN '' ELSE POM.MULTI_YN END MULTI_YN_MAKED
|
||||
|
||||
,POM.STATUS
|
||||
,A.APPR_STATUS
|
||||
,CASE WHEN POM.STATUS = 'cancel' then '취소'
|
||||
ELSE COALESCE(A.APPR_STATUS_NAME,'작성중')
|
||||
END AS APPR_STATUS_NAME
|
||||
,A.ROUTE_OBJID
|
||||
,A.APPROVAL_OBJID
|
||||
,A.APPR_DATE
|
||||
|
||||
FROM PURCHASE_ORDER_MASTER AS POM
|
||||
LEFT OUTER JOIN(
|
||||
SELECT B.OBJID AS ROUTE_OBJID
|
||||
@@ -5414,7 +5720,8 @@ FROM(
|
||||
-->
|
||||
WHERE 1=1
|
||||
AND SRM.OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
||||
AND PARTNER_OBJID = #{PARTNER_OBJID}
|
||||
AND SRP.VENDOR_PM = #{PARTNER_OBJID}
|
||||
<!-- AND PARTNER_OBJID = #{PARTNER_OBJID} -->
|
||||
</select>
|
||||
|
||||
<select id="purchaseOrderStatusGoods" parameterType="map" resultType="map">
|
||||
|
||||
@@ -3615,9 +3615,9 @@ ORDER BY V.PATH2
|
||||
SRM.STATUS,
|
||||
CASE
|
||||
WHEN A.APPR_STATUS IS NOT NULL THEN A.APPR_STATUS
|
||||
WHEN SRM.STATUS = 'create' THEN '미결재'
|
||||
WHEN SRM.STATUS = 'approvalComplete' THEN '결재완료'
|
||||
WHEN SRM.STATUS = 'reject' THEN '반려'
|
||||
WHEN SRM.STATUS = 'create' THEN '작성중'
|
||||
-- WHEN SRM.STATUS = 'approvalComplete' THEN '결재완료'
|
||||
-- WHEN SRM.STATUS = 'reject' THEN '반려'
|
||||
ELSE ''
|
||||
END AS STATUS_TITLE,
|
||||
SRM.WRITER,
|
||||
@@ -3758,7 +3758,8 @@ ORDER BY V.PATH2
|
||||
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.WRITER) AS WRITER_NAME,
|
||||
SRM.REGDATE,
|
||||
TO_CHAR(SRM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
||||
SRM.REMARK
|
||||
SRM.REMARK,
|
||||
SRM.DOC_TYPE
|
||||
FROM
|
||||
SALES_REQUEST_MASTER SRM
|
||||
WHERE
|
||||
|
||||
@@ -1783,7 +1783,127 @@ public class PurchaseOrderService {
|
||||
}
|
||||
}
|
||||
|
||||
public void savePurchaseOrder_salesRequest(HttpServletRequest request,Map paramMap) throws Exception{
|
||||
/**
|
||||
* 구매요청서/품의서에서 발주서 생성 (신규)
|
||||
* - 품의서(PROPOSAL): VENDOR_PM 기준으로 공급업체별 발주서 생성
|
||||
* - 구매요청서(PURCHASE_REQUEST): PARTNER_OBJID 기준으로 공급업체별 발주서 생성
|
||||
*/
|
||||
public void savePurchaseOrder_salesRequest(HttpServletRequest request, Map paramMap) throws Exception{
|
||||
SqlSession sqlSession = null;
|
||||
try{
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
|
||||
|
||||
HttpSession session = request.getSession();
|
||||
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
|
||||
String writer = CommonUtils.checkNull(person.getUserId());
|
||||
|
||||
// 선택된 구매요청서/품의서 목록
|
||||
List<Map<String, Object>> gridDataList = JsonUtil.JsonToList(CommonUtils.checkNull(paramMap.get("jqGrid")));
|
||||
|
||||
for(int i = 0; i < gridDataList.size(); i++){
|
||||
Map<String, Object> selectedItem = gridDataList.get(i);
|
||||
String salesRequestObjid = CommonUtils.checkNull((String) selectedItem.get("OBJID"));
|
||||
|
||||
if("".equals(salesRequestObjid)){
|
||||
continue;
|
||||
}
|
||||
|
||||
// DOC_TYPE 조회하여 품의서인지 구매요청서인지 구분
|
||||
Map<String, Object> queryParam = new HashMap<>();
|
||||
queryParam.put("PROPOSAL_OBJID", salesRequestObjid);
|
||||
queryParam.put("SALES_REQUEST_OBJID", salesRequestObjid);
|
||||
|
||||
Map salesRequestInfo = (Map) sqlSession.selectOne("salesMng.getProposalInfo", queryParam);
|
||||
String docType = CommonUtils.checkNull((String) salesRequestInfo.get("doc_type"));
|
||||
|
||||
// 품의서(PROPOSAL)인 경우 VENDOR_PM 사용, 구매요청서는 PARTNER_OBJID 사용
|
||||
String queryId = "PROPOSAL".equals(docType)
|
||||
? "purchaseOrder.getVendorListByProposalObjid"
|
||||
: "purchaseOrder.grtPartnerObjidBySalesRequestObjid";
|
||||
|
||||
// 공급업체별 목록 조회
|
||||
List<Map<String, Object>> vendorList = sqlSession.selectList(queryId, queryParam);
|
||||
|
||||
// 공급업체별로 발주서 마스터 생성
|
||||
for(Map<String, Object> vendorMap : vendorList){
|
||||
String partnerObjid = CommonUtils.checkNull((String) vendorMap.get("partner_objid"));
|
||||
|
||||
if("".equals(partnerObjid)){
|
||||
continue;
|
||||
}
|
||||
|
||||
// 발주서 마스터 OBJID 생성
|
||||
String purchaseOrderMasterObjid = CommonUtils.createObjId();
|
||||
|
||||
// 발주서 마스터 생성
|
||||
Map<String, Object> masterParam = new HashMap<>();
|
||||
masterParam.put("OBJID", purchaseOrderMasterObjid);
|
||||
masterParam.put("SALES_REQUEST_OBJID", salesRequestObjid);
|
||||
masterParam.put("PARTNER_OBJID", partnerObjid);
|
||||
masterParam.put("WRITER", writer);
|
||||
masterParam.put("STATUS", "create");
|
||||
|
||||
// 원본 데이터의 프로젝트 정보 등 복사
|
||||
masterParam.putAll(selectedItem);
|
||||
masterParam.put("OBJID", purchaseOrderMasterObjid); // OBJID는 새로 생성한 것으로
|
||||
masterParam.put("PARTNER_OBJID", partnerObjid); // PARTNER_OBJID 덮어쓰기
|
||||
|
||||
sqlSession.update("purchaseOrder.mergePurchaseOrderMasterBySalesRequest", masterParam);
|
||||
|
||||
// 해당 공급업체의 품목 조회
|
||||
String partQueryId = "PROPOSAL".equals(docType)
|
||||
? "purchaseOrder.getProposalPartsByVendor"
|
||||
: "purchaseOrder.getSalesRequestPartsByVendor";
|
||||
|
||||
Map<String, Object> partQueryParam = new HashMap<>();
|
||||
partQueryParam.put("SALES_REQUEST_OBJID", salesRequestObjid);
|
||||
partQueryParam.put("PARTNER_OBJID", partnerObjid);
|
||||
|
||||
List<Map<String, Object>> partList = sqlSession.selectList(partQueryId, partQueryParam);
|
||||
|
||||
// 발주서 품목 생성
|
||||
for(Map<String, Object> partMap : partList){
|
||||
Map<String, Object> partParam = new HashMap<>();
|
||||
partParam.put("OBJID", CommonUtils.createObjId());
|
||||
partParam.put("PURCHASE_ORDER_MASTER_OBJID", purchaseOrderMasterObjid);
|
||||
partParam.put("PART_OBJID", CommonUtils.checkNull((String) partMap.get("part_objid")));
|
||||
partParam.put("QTY", CommonUtils.checkNull(partMap.get("qty"), "0"));
|
||||
// ORDER_QTY는 쿼리에서 PO_QTY 우선으로 계산된 값 사용
|
||||
partParam.put("ORDER_QTY", CommonUtils.checkNull(partMap.get("order_qty"), "0"));
|
||||
partParam.put("PARTNER_PRICE", CommonUtils.checkNull(partMap.get("partner_price"), "0"));
|
||||
partParam.put("PART_NO", CommonUtils.checkNull((String) partMap.get("part_no")));
|
||||
partParam.put("PART_NAME", CommonUtils.checkNull((String) partMap.get("part_name")));
|
||||
partParam.put("SPEC", CommonUtils.checkNull((String) partMap.get("spec")));
|
||||
partParam.put("UNIT", CommonUtils.checkNull((String) partMap.get("unit")));
|
||||
partParam.put("MAKER", CommonUtils.checkNull((String) partMap.get("maker")));
|
||||
partParam.put("WRITER", writer);
|
||||
partParam.put("STATUS", "create");
|
||||
|
||||
sqlSession.insert("purchaseOrder.mergePurchaseOrderPartInfo", partParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sqlSession.commit();
|
||||
}catch(Exception e){
|
||||
if(sqlSession != null){
|
||||
sqlSession.rollback();
|
||||
}
|
||||
e.printStackTrace();
|
||||
throw new Exception(e);
|
||||
}finally{
|
||||
if(sqlSession != null){
|
||||
sqlSession.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 구매요청서/품의서에서 발주서 생성 (기존 백업)
|
||||
* @deprecated 신규 메서드로 대체됨
|
||||
*/
|
||||
@Deprecated
|
||||
public void savePurchaseOrder_salesRequest_old(HttpServletRequest request,Map paramMap) throws Exception{
|
||||
SqlSession sqlSession = null;
|
||||
try{
|
||||
String MASTER_OBJID = CommonUtils.createObjId();
|
||||
|
||||
Reference in New Issue
Block a user