879 lines
32 KiB
Plaintext
879 lines
32 KiB
Plaintext
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||
<%@ page import="com.pms.common.utils.*"%>
|
||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||
<%@ page import="java.util.*" %>
|
||
<%@include file= "/init_new.jsp" %>
|
||
<%
|
||
Map info = (HashMap)(request.getAttribute("resultMap"));
|
||
boolean isModify = true;
|
||
if(info!=null &&
|
||
( CommonUtils.checkNull(info.get("STATUS_TITLE")).equals( "결재중" )
|
||
||CommonUtils.checkNull(info.get("STATUS_TITLE")).equals( "결재완료" )
|
||
||CommonUtils.checkNull(info.get("STATUS_TITLE")).equals( "접수" )
|
||
||CommonUtils.checkNull(info.get("STATUS")).equals( "confirmed" )
|
||
)
|
||
){
|
||
isModify = false; //수정불가
|
||
}
|
||
String actType = (String)request.getAttribute("actType");
|
||
%>
|
||
<%
|
||
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
|
||
String userId = CommonUtils.checkNull(person.getUserId());
|
||
%>
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
<title><%=Constants.SYSTEM_NAME%></title>
|
||
</head>
|
||
<script>
|
||
|
||
var grid;
|
||
|
||
$(function(){
|
||
$("._table1").scroll(function () {
|
||
$("._table2").scrollLeft($("._table1").scrollLeft());
|
||
});
|
||
$("._table2").scroll(function () {
|
||
$("._table1").scrollLeft($("._table2").scrollLeft());
|
||
});
|
||
|
||
if(fnc_isNotEmpty("${resultMap.WRITER}") && "${resultMap.WRITER}" != "${connectUserId}"){
|
||
$("#btnReg").hide();
|
||
$("#btnAppr").hide();
|
||
}
|
||
|
||
// 전체 체크 기능
|
||
$("#allCheck").click(function() {
|
||
if ($("#allCheck").prop("checked")) {
|
||
$("input[type=checkbox]").prop("checked", true);
|
||
} else {
|
||
$("input[type=checkbox]").prop("checked", false);
|
||
}
|
||
});
|
||
|
||
$("#btnReg").click(function(){
|
||
// 물품구매요청서를 저장한다.
|
||
if(fnc_validate("form1")){
|
||
if(0 < $("#partListArea tr").length){
|
||
var zeroQty = false;
|
||
$("input[name*=QTY]").each(function(){
|
||
if ($(this).val() == 0){
|
||
Swal.fire('수량이 0 입니다.');
|
||
zeroQty = true;
|
||
return;
|
||
}
|
||
});
|
||
if (!zeroQty) {
|
||
fn_save();
|
||
}
|
||
}else{
|
||
Swal.fire('저장할 품목이 존재 하지 않습니다.');
|
||
return;
|
||
}
|
||
}
|
||
});
|
||
|
||
$("#btnAddRow").click(function(){
|
||
//물품구매요청서 행을 추가한다
|
||
fn_AddRow();
|
||
});
|
||
|
||
$("#btnDeleteRow").click(function(){
|
||
//물품구매요청서 행을 삭제한다
|
||
fn_deleteRow();
|
||
});
|
||
|
||
// 확정 버튼 클릭
|
||
$("#btnConfirm").click(function(){
|
||
fn_confirm();
|
||
});
|
||
|
||
$("#btnAppr").click(function(){ //결재상신
|
||
if(fnc_valitate("form1")){
|
||
var objId = "${resultMap.OBJID}";
|
||
/* if(""==grid.getRowData()){
|
||
Swal.fire('저장할 품목이 존재 하지 않습니다');
|
||
return;
|
||
} */
|
||
//var title = encodeURIComponent($("#TITLE").val());
|
||
var title = encodeURIComponent("발주서 상신");
|
||
window.open("/approval/registApproval.do?targetType=SALES_REQUEST&targetObjId="+objId+"&approvalTitle="+title+"&callbackFnc=fn_callbackFnc","registApproval","width=700,height=700");
|
||
}
|
||
});
|
||
|
||
//상신된 결재라인 가져오기
|
||
fn_getApprLine();
|
||
|
||
fnc_getAjaxProductMgmtList("PRODUCT_CODE", "", "", "${resultMap.PRODUCT_CODE}");
|
||
fnc_getUserList2("SALES_MNG_USER_ID", "${resultMap.SALES_MNG_USER_ID}");
|
||
fnc_getCodeListAppend("0000259","REQUEST_STATUS","${resultMap.REQUEST_STATUS}");
|
||
// 유닛 관련 주석처리
|
||
// fn_UnitCodeList("${resultMap.PROJECT_NO}", "UNIT_NAME", "${resultMap.UNIT_NAME}","");
|
||
|
||
fnc_datepick();
|
||
$(".select2").select2();
|
||
|
||
fn_getSalesRequestTargetPartList("${resultMap.OBJID}","${param.bom_report_objid}");
|
||
|
||
$("#ORDER_NUMBER").change(function(){
|
||
var orderQty = fnc_checkNull($(this).val());
|
||
|
||
if("" != orderQty && 0 < orderQty){
|
||
$(".TARGET_OBJID").each(function(i){
|
||
var targetObjId = $(this).val();
|
||
|
||
var orgQty = fnc_checkNull($("#ORG_QTY_"+targetObjId).val());
|
||
|
||
if(null != orgQty && "" != orgQty){
|
||
$("#QTY_"+targetObjId).val(orgQty * orderQty);
|
||
}
|
||
});
|
||
}
|
||
});
|
||
|
||
|
||
<% if(isModify){ %>
|
||
//수정가능
|
||
$("#REQUEST_CD,#PROJECT_NO,#CUSTOMER_NAME,#PRODUCT_NAME,#MECHANICAL_TYPE,#PROJECT_NAME,#SETUP,#RELEASE_DATE,#REQUEST_REASONS,#REQUEST_USER_ID,#DELIVERY_REQUEST_DATE,#PURCHASE_TYPE,#ORDER_TYPE,#AREA_CD,#CUSTOMER_OBJID,#PAID_TYPE").prop("disabled","");
|
||
|
||
//프로젝트명 변경시 정보 셋팅 (유닛명 제거)
|
||
$("#PROJECT_NO").change(function(){
|
||
$("#CUSTOMER_NAME, #PRODUCT_NAME, #MECHANICAL_TYPE, #PROJECT_NAME, #SETUP, #RELEASE_DATE").val("");
|
||
$("#partListArea").empty(); // 기존 품번 목록 초기화
|
||
|
||
if($(this).val()!=""){
|
||
//프로젝트번호로 지정된 정보를 가져온다
|
||
var list = fnc_getJsonAllDataListBySqlId({"sqlId":"salesMng.purchaseOrderAdminSupplyInfo", "PROJECT_NO":$(this).val()});
|
||
if(fnc_checkNull( list )!=""){
|
||
var row = list[0];
|
||
|
||
// console.log("프로젝트 정보:", row); // 디버깅용
|
||
|
||
// 기존 필드 (읽기전용 텍스트)
|
||
$("#CUSTOMER_NAME" ).val( row["CUSTOMER_NAME" ] );
|
||
$("#MECHANICAL_TYPE" ).val( row["MECHANICAL_TYPE" ] );
|
||
$("#PROJECT_NAME" ).val( row["PROJECT_NAME" ] );
|
||
$("#SETUP" ).val( row["SETUP" ] );
|
||
$("#RELEASE" ).val( row["RELEASE_DATE" ] );
|
||
|
||
// 프로젝트관리 진행관리 데이터 자동 채우기 (드롭다운)
|
||
// 제품구분 (PRODUCT from PROJECT_MGMT) - 드롭다운
|
||
if(fnc_checkNull(row["PRODUCT"]) != ""){
|
||
$("#PRODUCT_NAME").val(row["PRODUCT"]).trigger("change");
|
||
// console.log("제품구분 설정:", row["PRODUCT"]);
|
||
}
|
||
|
||
// 국내/해외 (AREA_CD from PROJECT_MGMT)
|
||
if(fnc_checkNull(row["AREA_CD"]) != ""){
|
||
$("#AREA_CD").val(row["AREA_CD"]).trigger("change");
|
||
// console.log("국내/해외 설정:", row["AREA_CD"]);
|
||
}
|
||
|
||
// 고객사 (CUSTOMER_OBJID from PROJECT_MGMT)
|
||
if(fnc_checkNull(row["CUSTOMER_OBJID"]) != ""){
|
||
$("#CUSTOMER_OBJID").val(row["CUSTOMER_OBJID"]).trigger("change");
|
||
// console.log("고객사 설정:", row["CUSTOMER_OBJID"]);
|
||
}
|
||
|
||
// 유/무상 (PAID_TYPE from CONTRACT_MGMT)
|
||
if(fnc_checkNull(row["PAID_TYPE"]) != ""){
|
||
$("#PAID_TYPE").val(row["PAID_TYPE"]).trigger("change");
|
||
// console.log("유/무상 설정:", row["PAID_TYPE"]);
|
||
}
|
||
|
||
// 주문유형 (CATEGORY_CD from CONTRACT_MGMT)
|
||
if(fnc_checkNull(row["CATEGORY_CD"]) != ""){
|
||
$("#ORDER_TYPE").val(row["CATEGORY_CD"]).trigger("change");
|
||
// console.log("주문유형 설정:", row["CATEGORY_CD"]);
|
||
}
|
||
}
|
||
|
||
// ★★★ M-BOM 품목 자동 로드 ★★★
|
||
fn_loadMbomParts($(this).val());
|
||
}
|
||
});
|
||
|
||
$("#REQUEST_USER_ID").val('<%=connectUserId%>');
|
||
$(".select2").select2();
|
||
|
||
<% }else{ %>
|
||
$("#REQUEST_USER_ID").val('<%=connectUserId%>');
|
||
$(".select2").select2();
|
||
$("#btnSupplySave").click(function(){ fn_Supply_save(); }); //공급업체저장
|
||
<% } %>
|
||
});
|
||
|
||
</script>
|
||
<script>
|
||
|
||
//상신된 결재라인가져오기
|
||
function fn_getApprLine(){
|
||
if('${resultMap.OBJID}'!=''){
|
||
$.ajax({
|
||
url:"/common/getApprovalLine.do",
|
||
type:"POST",
|
||
data:{"objId":"${resultMap.OBJID}"},
|
||
dataType:"json",
|
||
async:false,
|
||
success:function(data){
|
||
$.each(data.RESULT, function(i,o){
|
||
if(i==0){
|
||
$("#appr"+i).html(o.WRITER +"<br/>"+ o.REGDATE);
|
||
}
|
||
$("#appr"+(i+1)).html(o.TARGET_USER_NAME +"<br/>"+ (o.PROC_DATE!=undefined?o.PROC_DATE:" "));
|
||
});
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
function fn_getSalesRequestTargetPartList(masterObjId,bomObjId){
|
||
|
||
$("#partListArea").empty();
|
||
var requestStatus = $("#STATUS").val();
|
||
|
||
var appendText = "";
|
||
$.ajax({
|
||
url:"/salesMng/getSalesRequestTargetList.do",
|
||
type:"POST",
|
||
data:{"SALES_REQUEST_MASTER_OBJID":"${resultMap.OBJID}"},
|
||
dataType:"json",
|
||
async:false,
|
||
success:function(data){
|
||
var resultData = data;
|
||
|
||
$.each(resultData, function(i){
|
||
// console.log("resultData["+i+"]:"+resultData[i]);
|
||
|
||
//var RNUM = fnc_checkNull(resultData[i].RNUM);
|
||
var rowObjId = fnc_checkNull(resultData[i].OBJID);
|
||
var PART_OBJID = fnc_checkNull(resultData[i].PART_OBJID);
|
||
var PART_NO = fnc_checkNull(resultData[i].PART_NO);
|
||
var PART_NAME = fnc_checkNull(resultData[i].PART_NAME);
|
||
//var SPEC = fnc_checkNull(resultData[i].SPEC);
|
||
var QTY = fnc_checkNull(resultData[i].QTY);
|
||
var PARTNER_OBJID = fnc_checkNull(resultData[i].PARTNER_OBJID);
|
||
//var DELIVERY_REQUEST_DATE = fnc_checkNull(resultData[i].DELIVERY_REQUEST_DATE);
|
||
//var REMARK = fnc_checkNull(resultData[i].REMARK);
|
||
|
||
var SALES_REQUEST_MASTER_OBJID = fnc_checkNull(resultData[i].SALES_REQUEST_MASTER_OBJID);
|
||
|
||
|
||
appendText += " <tr class='dataTr' id='"+rowObjId+"'>";
|
||
appendText += " <input type='hidden' name='OBJID' value='"+rowObjId+"'class='TARGET_OBJID'>";
|
||
appendText += " <td class='align_c'>";
|
||
appendText += " <input type='checkbox' name='chkOBJID"+rowObjId+"' value='"+rowObjId+"' class='chkBox'>";
|
||
appendText += " </td>";
|
||
//appendText += " <td class='align_l' value='RNUM'>";
|
||
//appendText += " <input type='text' name='RNUM_"+rowObjId+"' value='"+RNUM+"'>";
|
||
//appendText += " </td>";
|
||
//appendText += " <td class='input_title'><label>품번</label></td>";
|
||
appendText += " <td class='align_l' colspan=''>";
|
||
if(requestStatus == 'approvalComplete' || requestStatus == 'reception'){
|
||
appendText += " <input type='text' name='PART_NO_"+rowObjId+"' id='PART_NO_"+rowObjId+"' value='"+PART_NO+"' readonly style='width: 100%;'>";
|
||
}else{
|
||
appendText += " <select name='PART_OBJID_"+rowObjId+"' id='PART_OBJID_"+rowObjId+"' reqTitle='품번' type='select' class='select2' style='width: 100%;'>";
|
||
appendText += " </select>";
|
||
}
|
||
appendText += " </td>";
|
||
//appendText += " <td class='input_title'><label>품명</label></td>";
|
||
appendText += " <td class='align_l' colspan=''>";
|
||
appendText += " <input type='text' name='PART_NAME_"+rowObjId+"' value='"+PART_NAME+"' readonly style='width: 100%;'>";
|
||
appendText += " </td>";
|
||
//appendText += " <td class='align_l'>";
|
||
//appendText += " <input type='text' name='SPEC_"+rowObjId+"' value='"+SPEC+"'>";
|
||
//appendText += " </td>";
|
||
//appendText += " <td class='input_title'><label>수량</label></td>";
|
||
appendText += " <td class='align_c' type='number'>";
|
||
appendText += " <input type='number' name='QTY_"+rowObjId+"' value='"+QTY+"' reqTitle='수량' required style='text-align: center;'>";
|
||
appendText += " </td>";
|
||
// 공급업체
|
||
appendText += " <td class='align_l'>";
|
||
appendText += " <select name='PARTNER_OBJID_"+rowObjId+"' id='PARTNER_OBJID_"+rowObjId+"' type='select' class='select2' style='width:100%;'>";
|
||
appendText += " </select>";
|
||
appendText += " </td>";
|
||
// 단가
|
||
var PARTNER_PRICE = fnc_checkNull(resultData[i].PARTNER_PRICE);
|
||
appendText += " <td class='align_r'>";
|
||
appendText += " <input type='text' name='PARTNER_PRICE_"+rowObjId+"' id='PARTNER_PRICE_"+rowObjId+"' value='"+PARTNER_PRICE+"' style='text-align: right; width:100%;'>";
|
||
appendText += " </td>";
|
||
appendText += " </tr>";
|
||
|
||
|
||
//fnc_getSupplyCodeListAppend("PARTNER_OBJID_"+rowObjId, PARTNER_OBJID);
|
||
//fn_addBomPart("PART_OBJID_"+rowObjId, PART_NO);
|
||
});
|
||
$("#partListArea").append(appendText);
|
||
|
||
// 프로젝트번호가 설정되어 있는지 확인하고, 없으면 품번 드롭다운을 채울 수 없음
|
||
var projectNo = $("#PROJECT_NO").val();
|
||
if(!projectNo || projectNo == "") {
|
||
console.warn("프로젝트번호가 선택되지 않아 품번 목록을 불러올 수 없습니다.");
|
||
}
|
||
|
||
$.each(resultData, function(i){
|
||
var rowObjId = fnc_checkNull(resultData[i].OBJID);
|
||
var PART_OBJID = fnc_checkNull(resultData[i].PART_OBJID);
|
||
var PART_NO = fnc_checkNull(resultData[i].PART_NO);
|
||
var PART_NAME = fnc_checkNull(resultData[i].PART_NAME);
|
||
|
||
// 공급업체 셋팅
|
||
var PARTNER_OBJID = fnc_checkNull(resultData[i].PARTNER_OBJID);
|
||
fnc_getAdminSupCdListAppend("", "PARTNER_OBJID_"+rowObjId, PARTNER_OBJID);
|
||
|
||
fn_addBomPart("PART_OBJID_"+rowObjId, PART_OBJID, "PART_NAME_"+rowObjId,"");
|
||
|
||
// M-BOM에 없는 품번이면 수동으로 추가
|
||
if(PART_OBJID != "" && PART_NO != "") {
|
||
var selectBox = $("#PART_OBJID_"+rowObjId);
|
||
// 이미 옵션이 있는지 확인
|
||
if(selectBox.find("option[value='"+PART_OBJID+"']").length == 0) {
|
||
selectBox.append("<option value='"+PART_OBJID+"'>"+PART_NO+"</option>");
|
||
}
|
||
selectBox.val(PART_OBJID);
|
||
$("#PART_NAME_"+rowObjId).val(PART_NAME);
|
||
}
|
||
});
|
||
$(".select2").select2();
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
|
||
});
|
||
|
||
//$("#partListArea").append(appendText);
|
||
|
||
}
|
||
|
||
|
||
/* 물품구매요청서 Row 추가 */
|
||
function fn_AddRow(){
|
||
// 유닛명 체크 제거 - 필수 아님
|
||
// if($("#UNIT_NAME").val() == '' || $("#UNIT_NAME").val() == null){
|
||
// Swal.fire("유닛명을 먼저 선택해주세요");
|
||
// return false;
|
||
// }
|
||
var rowObjId = fnc_createObjId();
|
||
|
||
var appendText = "";
|
||
appendText += " <tr class='dataTr' id='"+rowObjId+"'>";
|
||
appendText += " <input type='hidden' name='OBJID' value='"+rowObjId+"'class='TARGET_OBJID'>";
|
||
|
||
appendText += " <td class='align_c'>";
|
||
appendText += " <input type='checkbox' name='chkOBJID"+rowObjId+"' value='"+rowObjId+"' class='chkBox'>";
|
||
appendText += " </td>";
|
||
//appendText += " <td class='align_l' value='RNUM'>";
|
||
//appendText += " <input type='text' name='RNUM_"+rowObjId+"'>";
|
||
//appendText += " </td>";
|
||
//appendText += " <td class='input_title'><label>품번</label></td>";
|
||
appendText += " <td class='align_l' value='PART_OBJID' title='PART_OBJID' colspan=''>";
|
||
appendText += " <select name='PART_OBJID_"+rowObjId+"' id='PART_OBJID_"+rowObjId+"' reqTitle='품번' type='select' class='select2' style='width: 100%;'>";
|
||
appendText += " </select>";
|
||
appendText += " </td>";
|
||
//appendText += " <td class='input_title'><label>품명</label></td>";
|
||
appendText += " <td class='align_l' value='PART_NAME' title='PART_NAME' colspan=''>";
|
||
appendText += " <input type='text' name='PART_NAME_"+rowObjId+"' id='PART_NAME_"+rowObjId+"' readonly style='width: 100%;'>";
|
||
appendText += " </td>";
|
||
//appendText += " <td class='align_l' value='SPEC' title='UNIT_TITLE'>";
|
||
//appendText += " <input type='text' name='SPEC_"+rowObjId+"'>";
|
||
//appendText += " </td>";
|
||
//appendText += " <td class='input_title'><label>수량</label></td>";
|
||
appendText += " <td class='align_c' value='QTY' type='number' readonly>";
|
||
appendText += " <input type='number' name='QTY_"+rowObjId+"' reqTitle='수량' required style='text-align: center;'>";
|
||
appendText += " </td>";
|
||
// 공급업체
|
||
appendText += " <td class='align_l' value='PARTNER_OBJID'>";
|
||
appendText += " <select name='PARTNER_OBJID_"+rowObjId+"' id='PARTNER_OBJID_"+rowObjId+"' type='select' class='select2' style='width:100%;'>";
|
||
appendText += " </select>";
|
||
appendText += " </td>";
|
||
// 단가
|
||
appendText += " <td class='align_r' value='PARTNER_PRICE'>";
|
||
appendText += " <input type='text' name='PARTNER_PRICE_"+rowObjId+"' id='PARTNER_PRICE_"+rowObjId+"' style='text-align: right; width:100%;'>";
|
||
appendText += " </td>";
|
||
appendText += " </tr>";
|
||
|
||
if(0 < $("#partListArea tr:first").lenght || typeof $("#partListArea tr:first").lenght != "undefined") {
|
||
$("#partListArea tr:first").before(appendText);
|
||
}else{
|
||
$("#partListArea").append(appendText);
|
||
}
|
||
// 공급업체 셋팅
|
||
fnc_getAdminSupCdListAppend("", "PARTNER_OBJID_"+rowObjId, "");
|
||
fn_addBomPart("PART_OBJID_"+rowObjId, "", "PART_NAME_"+rowObjId, "");
|
||
fnc_datepick();
|
||
$(".select2").select2();
|
||
}
|
||
|
||
/* Row 삭제 */
|
||
function fn_deleteRow(){
|
||
|
||
$(".chkBox:checked").length;
|
||
|
||
if(0 < $(".chkBox:checked").length){
|
||
if(confirm("선택된 내용을 삭제하시겠습니까?")){
|
||
$(".chkBox:checked").each(function(i){
|
||
var targetOBJID = $(this).val();
|
||
$("#"+targetOBJID).remove();
|
||
});
|
||
}
|
||
}else{
|
||
Swal.fire("선택된 내용이 없습니다.");
|
||
return false;
|
||
}
|
||
}
|
||
|
||
<!--
|
||
//결재정보를 가져온다.
|
||
function fn_getApprovalLine(){
|
||
var scheduleList = new Array();
|
||
|
||
<c:forEach items="${approvalList}" var="approvalItem">
|
||
var seq = "${approvalItem.SEQ}";
|
||
var targetUserName = "${approvalItem.TARGET_USER_NAME}";
|
||
var procDate = "${approvalItem.PROC_DATE}";
|
||
|
||
if(1 == seq){
|
||
$("#reviewerName").append(targetUserName);
|
||
$("#reviewerDate").append(procDate);
|
||
}
|
||
|
||
if(2 == seq){
|
||
$("#confirmName").append(targetUserName);
|
||
$("#confirmDate").append(procDate);
|
||
}
|
||
</c:forEach>
|
||
}
|
||
-->
|
||
|
||
|
||
// 물품구매요청서 내용을 저장한다.
|
||
function fn_save(){
|
||
|
||
var formData = $("#form1").serialize();
|
||
if(confirm("저장하시겠습니까?")){
|
||
$.ajax({
|
||
type: "POST",
|
||
url: "/salesMng/saveSalesRequestInfo.do",
|
||
data: $("#form1").serialize(),
|
||
dataType:"json",
|
||
success:function(data){
|
||
//Swal.fire(data.msg);
|
||
alert(data.msg);
|
||
if(typeof opener.fn_search =="function"){ opener.fn_search() };
|
||
self.close();
|
||
if(data.result){
|
||
opener.fn_search();
|
||
self.close();
|
||
}
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
//공급업체 내용을 저장한다.
|
||
function fn_Supply_save(){
|
||
|
||
var formData = $("#form1").serialize();
|
||
if(confirm("저장하시겠습니까?")){
|
||
$.ajax({
|
||
type: "POST",
|
||
url: "/salesMng/saveSalesRequestSupplyInfo.do",
|
||
data: $("#form1").serialize(),
|
||
dataType:"json",
|
||
success:function(data){
|
||
//Swal.fire(data.msg);
|
||
alert(data.msg);
|
||
if(data.result){
|
||
opener.fn_search();
|
||
self.close();
|
||
}
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
// 구매요청서 확정 처리
|
||
function fn_confirm(){
|
||
var masterObjId = $("#SALES_REQUEST_MASTER_OBJID").val();
|
||
|
||
if(fnc_checkNull(masterObjId) == ""){
|
||
Swal.fire("먼저 저장해주세요.");
|
||
return;
|
||
}
|
||
|
||
// 품목이 있는지 확인
|
||
if($("#partListArea tr").length < 1){
|
||
Swal.fire("품목이 없습니다. 먼저 품목을 추가하고 저장해주세요.");
|
||
return;
|
||
}
|
||
|
||
Swal.fire({
|
||
title: '확정',
|
||
text: '확정하시겠습니까? 확정 후에는 수정이 불가능합니다.',
|
||
icon: 'warning',
|
||
showCancelButton: true,
|
||
confirmButtonColor: '#5cb85c',
|
||
cancelButtonColor: '#d33',
|
||
confirmButtonText: '확정',
|
||
cancelButtonText: '취소'
|
||
}).then((result) => {
|
||
if (result.isConfirmed) {
|
||
$.ajax({
|
||
type: "POST",
|
||
url: "/salesMng/confirmSalesRequest.do",
|
||
data: { "SALES_REQUEST_MASTER_OBJID": masterObjId },
|
||
dataType: "json",
|
||
success: function(data){
|
||
if(data.result){
|
||
Swal.fire({
|
||
title: '완료',
|
||
text: '확정되었습니다.',
|
||
icon: 'success'
|
||
}).then(() => {
|
||
if(typeof opener.fn_search == "function"){
|
||
opener.fn_search();
|
||
}
|
||
self.close();
|
||
});
|
||
} else {
|
||
Swal.fire('오류', data.msg || '확정 처리 중 오류가 발생했습니다.', 'error');
|
||
}
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
Swal.fire('오류', '서버 통신 중 오류가 발생했습니다.', 'error');
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
// ★★★ 프로젝트 선택 시 M-BOM 품목 자동 로드 ★★★
|
||
function fn_loadMbomParts(projectObjId){
|
||
if(fnc_checkNull(projectObjId) == "") return;
|
||
|
||
// console.log("M-BOM 품목 로드 시작, PROJECT_OBJID:", projectObjId);
|
||
|
||
// M-BOM 품목 조회
|
||
var paramData = {"sqlId":"salesMng.SalesBomPartListByProjectUnit", "PROJECT_OBJID":projectObjId};
|
||
var resultList = fnc_getJsonAllDataListBySqlId(paramData);
|
||
|
||
// console.log("M-BOM 품목 조회 결과:", resultList);
|
||
|
||
if(resultList && resultList.length > 0){
|
||
// 기존 품목 초기화
|
||
$("#partListArea").empty();
|
||
|
||
// M-BOM 품목을 행으로 추가
|
||
$.each(resultList, function(i, item){
|
||
var rowObjId = fnc_createObjId();
|
||
var PART_OBJID = fnc_checkNull(item.PART_OBJID);
|
||
var PART_NO = fnc_checkNull(item.PART_NO);
|
||
var PART_NAME = fnc_checkNull(item.PART_FULL_NAME) || fnc_checkNull(item.PART_NAME);
|
||
var QTY = fnc_checkNull(item.ORDER_QTY) || 1;
|
||
|
||
var appendText = "";
|
||
appendText += "<tr class='dataTr' id='"+rowObjId+"'>";
|
||
appendText += " <input type='hidden' name='OBJID' value='"+rowObjId+"' class='TARGET_OBJID'>";
|
||
appendText += " <td class='align_c'>";
|
||
appendText += " <input type='checkbox' name='chkOBJID"+rowObjId+"' value='"+rowObjId+"' class='chkBox'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_l'>";
|
||
appendText += " <select name='PART_OBJID_"+rowObjId+"' id='PART_OBJID_"+rowObjId+"' reqTitle='품번' type='select' class='select2' style='width: 100%;'>";
|
||
appendText += " <option value='"+PART_OBJID+"'>"+PART_NO+"</option>";
|
||
appendText += " </select>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_l'>";
|
||
appendText += " <input type='text' name='PART_NAME_"+rowObjId+"' id='PART_NAME_"+rowObjId+"' value='"+PART_NAME+"' readonly style='width: 100%;'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_c'>";
|
||
appendText += " <input type='number' name='QTY_"+rowObjId+"' value='"+QTY+"' reqTitle='수량' required style='text-align: center;'>";
|
||
appendText += " </td>";
|
||
// 공급업체
|
||
appendText += " <td class='align_l'>";
|
||
appendText += " <select name='PARTNER_OBJID_"+rowObjId+"' id='PARTNER_OBJID_"+rowObjId+"' type='select' class='select2' style='width:100%;'>";
|
||
appendText += " </select>";
|
||
appendText += " </td>";
|
||
// 단가
|
||
appendText += " <td class='align_r'>";
|
||
appendText += " <input type='text' name='PARTNER_PRICE_"+rowObjId+"' id='PARTNER_PRICE_"+rowObjId+"' style='text-align: right; width:100%;'>";
|
||
appendText += " </td>";
|
||
appendText += "</tr>";
|
||
|
||
$("#partListArea").append(appendText);
|
||
|
||
// 품번 드롭다운에 M-BOM 전체 품목 옵션 추가
|
||
fn_addBomPart("PART_OBJID_"+rowObjId, PART_OBJID, "PART_NAME_"+rowObjId, "");
|
||
// 공급업체 셋팅
|
||
fnc_getAdminSupCdListAppend("", "PARTNER_OBJID_"+rowObjId, "");
|
||
});
|
||
|
||
$(".select2").select2();
|
||
// console.log("M-BOM 품목 " + resultList.length + "건 로드 완료");
|
||
} else {
|
||
// console.log("M-BOM 품목이 없습니다.");
|
||
}
|
||
}
|
||
|
||
//계약제품, 업체명으로 BOM에 등록된 부품정보를 자동 추가
|
||
function fn_addBomPart(selectboxId,selectedVal,sql_id,sql_supply){
|
||
$("#BOM_REPORT_OBJID").val("");
|
||
|
||
var project_objid = $("#PROJECT_NO").val(); //프로젝트명
|
||
var unit_code = $("#UNIT_NAME").val(); //유닛명
|
||
|
||
$("#"+selectboxId).empty();
|
||
$("#"+selectboxId).append("<option value=''>선택</option>");
|
||
|
||
var resultList = [];
|
||
|
||
// 1. 프로젝트가 선택되어 있으면 M-BOM 품목 먼저 조회
|
||
if(fnc_checkNull(project_objid)!=""){
|
||
var paramData = {"sqlId":"salesMng.SalesBomPartListByProjectUnit", "PROJECT_OBJID":project_objid};
|
||
if(fnc_checkNull(unit_code)!=""){
|
||
paramData.UNIT_CODE = unit_code;
|
||
}
|
||
resultList = fnc_getJsonAllDataListBySqlId(paramData);
|
||
// console.log("M-BOM 품목 조회 결과:", resultList.length, "건");
|
||
}
|
||
|
||
// 2. M-BOM 품목이 없으면 전체 PART_MNG에서 조회
|
||
if(resultList.length == 0){
|
||
// console.log("M-BOM 품목이 없어 전체 품목에서 조회합니다.");
|
||
var allPartData = {"sqlId":"salesMng.getAllPartMngList"};
|
||
resultList = fnc_getJsonAllDataListBySqlId(allPartData);
|
||
// console.log("전체 품목 조회 결과:", resultList.length, "건");
|
||
|
||
// 전체 품목 조회 결과 처리
|
||
if(0 < resultList.length){
|
||
for (var i = 0; i < resultList.length; i++) {
|
||
var commonCodeId = resultList[i].OBJID;
|
||
var commonCodeName = resultList[i].PART_NO;
|
||
var partName = resultList[i].PART_NAME;
|
||
$("#"+selectboxId).append("<option value='"+commonCodeId+"' data-part_name='"+partName+"'>"+commonCodeName+"</option>");
|
||
}
|
||
}
|
||
} else {
|
||
// M-BOM 품목 처리
|
||
for (var i = 0; i < resultList.length; i++) {
|
||
var commonCodeId = resultList[i].PART_OBJID;
|
||
var commonCodeName = resultList[i].PART_NO;
|
||
var partName = resultList[i].PART_NAME || resultList[i].PART_FULL_NAME;
|
||
var supplyObjid = resultList[i].SUPPLY_OBJID;
|
||
$("#"+selectboxId).append("<option value='"+commonCodeId+"' data-part_name='"+partName+"' data-supplyObjid='"+supplyObjid+"'>"+commonCodeName+"</option>");
|
||
}
|
||
}
|
||
|
||
// 선택값 설정 및 change 이벤트 바인딩
|
||
if(fnc_checkNull(selectedVal) != ""){
|
||
$("#"+selectboxId).val(selectedVal);
|
||
}
|
||
$("#"+selectboxId).off("change").on("change", function(){
|
||
$("#"+sql_id).val($(this).find("option:selected").attr("data-part_name"));
|
||
if(sql_supply){
|
||
$("#"+sql_supply).val($(this).find("option:selected").attr("data-supplyObjid"));
|
||
}
|
||
});
|
||
|
||
$("#"+selectboxId).trigger("change");
|
||
}
|
||
|
||
function fn_callbackFnc(){
|
||
opener.fn_search();
|
||
self.close();
|
||
}
|
||
|
||
</script>
|
||
<style>
|
||
.input_title {border-left:1px solid #ccc;}
|
||
.input_sub_title {border-left:1px solid #ccc;}
|
||
.pmsPopupForm tr:last-child td{border-bottom:1px solid #ccc;}
|
||
.required-mark { color: red; font-weight: bold; margin-left: 2px; }
|
||
</style>
|
||
<body>
|
||
<form name="form1" id="form1" action="" method="post">
|
||
<input type="hidden" name="SALES_REQUEST_MASTER_OBJID" id="SALES_REQUEST_MASTER_OBJID" value="${resultMap.OBJID}">
|
||
<input type="hidden" name="STATUS" id="STATUS" value="${resultMap.STATUS}">
|
||
<input type="hidden" name="DOC_TYPE" id="DOC_TYPE" value="${param.DOC_TYPE}">
|
||
<input type="hidden" name="TARGET_DRAWING_DOWNLOAD" id="TARGET_DRAWING_DOWNLOAD">
|
||
<section>
|
||
<div class="plm_menu_name" style="display:flex;">
|
||
<h2 style="width:100%;height:80px;text-align:center;margin-top:15px;">
|
||
<span style="font-size:30px;">구매요청서 (Purchase Request)</span>
|
||
</h2>
|
||
</div>
|
||
|
||
<div id="businessPopupFormWrap" style="z-index:99;">
|
||
<table class="pmsPopupForm" style="z-index:99;">
|
||
<colgroup>
|
||
<col width="10%">
|
||
<col width="15%">
|
||
<col width="10%">
|
||
<col width="15%">
|
||
<col width="10%">
|
||
<col width="15%">
|
||
<col width="10%">
|
||
<col width="15%">
|
||
</colgroup>
|
||
|
||
<!-- 1행: 구매유형, 프로젝트번호, 구매유형, 주문유형 -->
|
||
<tr>
|
||
<td class="input_title"><label for="">구매유형<span class="required-mark">*</span></label></td>
|
||
<td>
|
||
<select name="PURCHASE_TYPE" id="PURCHASE_TYPE" reqTitle="구매유형" required type="select" class="select2" style="width: 100%;">
|
||
<option value="">선택</option> ${code_map.purchase_type}
|
||
</select>
|
||
</td>
|
||
<td class="input_title"><label for="">프로젝트번호</label></td>
|
||
<td>
|
||
<select name="PROJECT_NO" id="PROJECT_NO" reqTitle="프로젝트번호" type="select" class="select2" style="width: 100%;">
|
||
<option value="">선택</option> ${code_map.project_no}
|
||
</select>
|
||
</td>
|
||
<td class="input_title"><label for="">구매유형<span class="required-mark">*</span></label></td>
|
||
<td>
|
||
<select name="PURCHASE_TYPE2" id="PURCHASE_TYPE2" reqTitle="구매유형" required type="select" class="select2" style="width: 100%;">
|
||
<option value="">선택</option> ${code_map.purchase_type}
|
||
</select>
|
||
</td>
|
||
<td class="input_title"><label for="">주문유형<span class="required-mark">*</span></label></td>
|
||
<td>
|
||
<select name="ORDER_TYPE" id="ORDER_TYPE" reqTitle="주문유형" required type="select" class="select2" style="width: 100%;">
|
||
<option value="">선택</option> ${code_map.category_cd}
|
||
</select>
|
||
</td>
|
||
</tr>
|
||
<!-- 2행: 제품구분, 국내/해외, 고객사, 유/무상 -->
|
||
<tr>
|
||
<td class="input_title"><label for="">제품구분<span class="required-mark">*</span></label></td>
|
||
<td>
|
||
<select name="PRODUCT_NAME" id="PRODUCT_NAME" reqTitle="제품구분" required type="select" class="select2" style="width: 100%;">
|
||
<option value="">선택</option> ${code_map.product_name}
|
||
</select>
|
||
</td>
|
||
<td class="input_title"><label for="">국내/해외<span class="required-mark">*</span></label></td>
|
||
<td>
|
||
<select name="AREA_CD" id="AREA_CD" reqTitle="국내/해외" required type="select" class="select2" style="width: 100%;">
|
||
<option value="">선택</option> ${code_map.area_cd}
|
||
</select>
|
||
</td>
|
||
<td class="input_title"><label for="">고객사<span class="required-mark">*</span></label></td>
|
||
<td>
|
||
<select name="CUSTOMER_OBJID" id="CUSTOMER_OBJID" reqTitle="고객사" required type="select" class="select2" style="width: 100%;">
|
||
<option value="">선택</option> ${code_map.customer_objid}
|
||
</select>
|
||
</td>
|
||
<td class="input_title"><label for="">유/무상<span class="required-mark">*</span></label></td>
|
||
<td>
|
||
<select name="PAID_TYPE" id="PAID_TYPE" reqTitle="유/무상" required type="select" class="select2" style="width: 100%;">
|
||
<option value="">선택</option> ${code_map.paid_type}
|
||
</select>
|
||
</td>
|
||
</tr>
|
||
<!-- 3행: 입고요청일 -->
|
||
<tr>
|
||
<td class="input_title"><label for="">입고요청일</label></td>
|
||
<td>
|
||
<input type="text" class="date_icon" name="DELIVERY_REQUEST_DATE" id="DELIVERY_REQUEST_DATE" reqTitle="입고요청일" value="${resultMap.DELIVERY_REQUEST_DATE}">
|
||
<input type="hidden" name="REQUEST_USER_ID" id="REQUEST_USER_ID" value="${resultMap.REQUEST_USER_ID}">
|
||
</td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="btn_wrap">
|
||
<% if(isModify){ %>
|
||
<div class="plm_btn_wrap" style="padding:0 8 0 8; text-align: right;">
|
||
<input type="button" value="행추가" class="plm_btns" id="btnAddRow" name="btnAddRow">
|
||
<input type="button" value="행삭제" class="plm_btns" id="btnDeleteRow" name="btnDeleteRow">
|
||
<input type="button" value="저장" class="plm_btns" id="btnReg">
|
||
<input type="button" value="닫기" class="plm_btns" onclick="window.close();">
|
||
<input type="button" value="확정" class="plm_btns" id="btnConfirm" style="background-color:#5cb85c; color:white;">
|
||
</div>
|
||
<% }else{ %>
|
||
<div class="plm_btn_wrap" style="padding:0 8 0 8; text-align: right;">
|
||
<input type="button" value="닫기" class="plm_btns" onclick="window.close();">
|
||
</div>
|
||
<% } %>
|
||
</div>
|
||
|
||
<div id="businessPopupFormWrap" style="z-index:99;">
|
||
<table class="pmsPopupForm" style="z-index:99;">
|
||
<!-- <tr>
|
||
<td class="input_title">
|
||
<label for="">구매의뢰 부품</label>
|
||
</td>
|
||
</tr> -->
|
||
<tr>
|
||
<td style="border-top:1px solid #ccc;">
|
||
<div class="in_table_scroll_wrap _table1" style="height:40px;width:100%;">
|
||
<table class="plm_table">
|
||
<colgroup>
|
||
<col width="30px">
|
||
<col width="180px">
|
||
<col width="180px">
|
||
<col width="80px">
|
||
<col width="150px">
|
||
<col width="100px">
|
||
</colgroup>
|
||
<thead>
|
||
<tr class="plm_thead">
|
||
<td><input type="checkbox" name="allCheck" id="allCheck"></td>
|
||
<td>품번</td>
|
||
<td>품명</td>
|
||
<td>수량</td>
|
||
<td>공급업체</td>
|
||
<td>단가</td>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
</div>
|
||
<div class="in_table_scroll_wrap _table2" style="height:250px;width:100%;">
|
||
<table class="plm_table">
|
||
<colgroup>
|
||
<col width="30px">
|
||
<col width="180px">
|
||
<col width="180px">
|
||
<col width="80px">
|
||
<col width="150px">
|
||
<col width="100px">
|
||
</colgroup>
|
||
<tbody id="partListArea">
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<!-- <div class="btn_wrap"> -->
|
||
<!-- <%-- <c:if test="${'create' eq resultMap.STATUS}"> --%> -->
|
||
<!-- <div class="plm_btn_wrap" style="padding:0 8 0 8; text-align: right;"> -->
|
||
<!-- <input type="button" value="수정" class="plm_btns" id="btnAddRow" name="btnAddRow" style="background:#dfeffc"> -->
|
||
<!-- <% if(isModify){ %> -->
|
||
<!-- <input type="button" value="결재상신" class="plm_btns" id="btnAppr" name="btnAppr" style="background:#dfeffc"> -->
|
||
<!-- <input type="button" value="저장" class="plm_btns" id="btnReg" style="background:#dfeffc"> -->
|
||
<!-- <% }else{ %> -->
|
||
<!-- <input type="button" value="공급업체저장" class="plm_btns" id="btnSupplySave" style="background:#dfeffc"> -->
|
||
<!-- <% } %> -->
|
||
<!-- <input type="button" value="닫기" class="plm_btns" style="background:#dfeffc" onclick="window.close();" > -->
|
||
<!-- </div> -->
|
||
<!-- <%-- </c:if> --%> -->
|
||
<!-- </div> -->
|
||
</div>
|
||
</section>
|
||
</form>
|
||
</body>
|
||
</html> |