외주가공발주서 양식변경 및 품의서 정보 가져오도록 수정

This commit is contained in:
2026-03-10 11:46:19 +09:00
parent 1eda7cf823
commit 98864c6079
4 changed files with 47 additions and 81 deletions

View File

@@ -65,23 +65,6 @@
font-size: 28px;
font-weight: bold;
}
.approval-box {
border: 1px solid #333;
width: 200px;
}
.approval-box table {
width: 100%;
border-collapse: collapse;
}
.approval-box th, .approval-box td {
border: 1px solid #333;
text-align: center;
padding: 5px;
font-size: 12px;
}
.approval-box th {
background-color: #f0f0f0;
}
.po-info-table {
width: 100%;
border-collapse: collapse;
@@ -95,7 +78,8 @@
.po-info-table .label {
/* background-color: #f5f5f5; */
font-weight: bold;
width: 20%;
width: 35%;
white-space: nowrap;
}
.po-manager-box {
border: 1px solid #333;
@@ -215,9 +199,6 @@ $(document).ready(function(){
$("#display_email2").text(email);
});
// 결재라인 가져오기
fn_getApprLine();
var unit_cd = $.parseJSON($("#unit_cd").val());
// 그리드 초기화 - 외주가공 발주서용 컬럼
@@ -225,15 +206,15 @@ $(document).ready(function(){
url: ""
,datatype: "local"
,data: $.parseJSON($("#gridDetailList").val())
,colNames: ["OBJID","PART_OBJID","No","발주번호","업체명","제품명","부품명","수량","단위","단가","합계","작업지시번호","부품품번","납기요청"]
,colNames: ["OBJID","PART_OBJID","No","업체명","제품명","부품명","수량","단위","단가","합계","작업지시번호","부품품번","입고요청"]
,colModel: [
{name:"OBJID" , hidden: true, sortable:false, editable:false}
,{name:"PART_OBJID" , hidden: true, sortable:false, editable:false}
,{name:"ROW_NUM" , width:35, align:"center", sortable:false, editable:false}
,{name:"PURCHASE_ORDER_NO" , width:110, align:"center", sortable:false, editable:false}
,{name:"PARTNER_NAME" , width:80, align:"center", sortable:false, editable:false}
//,{name:"PURCHASE_ORDER_NO" , width:110, align:"center", sortable:false, editable:false}
,{name:"PARTNER_NAME" , width:130, align:"left", sortable:false, editable:false}
,{name:"PRODUCT_NAME" , width:160, align:"left", sortable:false, editable:<%= isModify %>}
,{name:"PART_NAME" , width:80, align:"center", sortable:false, editable:false}
,{name:"PART_NAME" , width:140, align:"left", sortable:false, editable:false}
,{name:"ORDER_QTY" , width:50, align:"right", sortable:false, editable:<%= isModify %>
,formatter:"integer", formatoptions:{thousandsSeparator:","}
,editoptions:{
@@ -246,14 +227,14 @@ $(document).ready(function(){
,editoptions:{ value: unit_cd }
}
,{name:"PARTNER_PRICE" , width:80, align:"right", sortable:false, editable:<%= isModify %>
,formatter:"integer", formatoptions:{thousandsSeparator:","}
,formatter:"number", formatoptions:{thousandsSeparator:",", decimalPlaces:2}
,editoptions:{
dataInit: function(e){ e.style.textAlign = "right"; }
,dataEvents: [{type:"change", fn:function(e){ gridFn.calcRowAll(e); }}]
}
}
,{name:"SUPPLY_UNIT_PRICE" , width:90, align:"right", sortable:false, editable:false
,formatter:"integer", formatoptions:{thousandsSeparator:","}
,formatter:"number", formatoptions:{thousandsSeparator:",", decimalPlaces:2}
}
,{name:"WORK_ORDER_NO" , width:100, align:"center", sortable:false, editable:<%= isModify %>}
,{name:"PART_NO" , width:90, align:"center", sortable:false, editable:false}
@@ -306,17 +287,6 @@ $(document).ready(function(){
$("#btnAdd").click(function(){ fn_openPartMngListPopUp(); });
$("#btnDel").click(function(){ gridFn.delRow(); });
$("#btnSave").click(function(){ fn_save(); });
$("#btnAppr").click(function(){
if(fnc_valitate("form1")){
var objId = "${objId}";
if(""==grid.getRowData()){
Swal.fire('저장할 품목이 존재 하지 않습니다');
return;
}
var title = encodeURIComponent("외주가공 발주서");
window.open("/approval/registApproval.do?targetType=PURCHASE_ORDER_OUTSOURCING&targetObjId="+objId+"&approvalTitle="+title,"registApproval","width=700,height=700");
}
});
<% }else{ %>
$("#btnDown").click(function(){
document.form1.action = "/purchaseOrder/purchaseOrderFormPopup_outsourcing.do?actType=DOWN&PURCHASE_ORDER_MASTER_OBJID=${objId}";
@@ -331,29 +301,6 @@ $(document).ready(function(){
gridFn.footerSummary();
});
// 결재라인 가져오기
function fn_getApprLine(){
if('${objId}'!=''){
$.ajax({
url:"/common/getApprovalLine.do",
type:"POST",
data:{"objId":"${objId}"},
dataType:"json",
async:false,
success:function(data){
$.each(data.RESULT, function(i,o){
if(i==0){
$("#appr_writer").html(o.WRITER);
}
if(i < 3){
$("#appr"+(i+1)).html(o.TARGET_USER_NAME +"<br/>"+ (o.PROC_DATE!=undefined?o.PROC_DATE:""));
}
});
}
});
}
}
// 행추가 팝업
function fn_openPartMngListPopUp(){
var url = "/partMng/partMngListPopUp.do?callbackFnc=fn_addRow&callType=purchaseOrder";
@@ -499,9 +446,15 @@ var gridFn = {
});
$("#TOTAL_SUPPLY_PRICE").val(numberWithCommas(totalSupplyPrice));
$("#TOTAL_AMOUNT_DISPLAY").text(numberWithCommasDecimal(totalSupplyPrice) + " 원");
}
}
function numberWithCommasDecimal(num) {
var n = Number(num);
return n.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
// 라이브러리 로드 완료 후 dataLoaded 플래그 설정
$(window).on('load', function() {
setTimeout(function() {
@@ -718,20 +671,6 @@ function fn_generateAndUploadPdf(callback) {
<div class="po-company-title">㈜ 알피에스</div>
<div class="po-title">외주가공 발주서</div>
</div>
<div class="approval-box">
<table>
<tr>
<th>담당자</th>
<th>부사장</th>
<th>대표이사</th>
</tr>
<tr>
<td id="appr1" style="height:40px;">${info.MANAGER_NAME}</td>
<td id="appr2"></td>
<td id="appr3">전 결</td>
</tr>
</table>
</div>
</div>
<!-- 기본정보 + 담당자 영역 -->
@@ -757,6 +696,10 @@ function fn_generateAndUploadPdf(callback) {
</select>
</td>
</tr>
<tr>
<td class="label">4. 합계금액(VAT별도) :</td>
<td><span id="TOTAL_AMOUNT_DISPLAY" style="width:100%; display:inline-block;"></span></td>
</tr>
</table>
</div>
@@ -767,7 +710,7 @@ function fn_generateAndUploadPdf(callback) {
<td rowspan="4" style="width:25%; text-align:center; font-weight:bold; border:1px solid #000; letter-spacing:3px; vertical-align:middle; font-size:11px; background-color:#d9d9d9;">담 당 자</td>
<td style="border:1px solid #000; padding:2px 6px; text-align:center;">
<% if(isModify){ %>
<select name="SALES_MNG_USER_ID" id="SALES_MNG_USER_ID" style="width:150px; font-size:10px;">
<select name="SALES_MNG_USER_ID" id="SALES_MNG_USER_ID" class="select2" style="width:150px; font-size:10px;">
<option value="">선택</option>
<%
for(int u=0; u<userList.size(); u++){
@@ -802,7 +745,7 @@ function fn_generateAndUploadPdf(callback) {
<tr>
<td style="border:1px solid #000; padding:2px 6px; text-align:center;">
<% if(isModify){ %>
<select name="SALES_MNG_USER_ID2" id="SALES_MNG_USER_ID2" style="width:150px; font-size:10px;">
<select name="SALES_MNG_USER_ID2" id="SALES_MNG_USER_ID2" class="select2" style="width:150px; font-size:10px;">
<option value="">선택</option>
<%
for(int u=0; u<userList.size(); u++){
@@ -843,7 +786,7 @@ function fn_generateAndUploadPdf(callback) {
</div>
<!-- 상세내역 안내 -->
<div class="detail-label">[아래 상세내역 리스트 확인]</div>
<!-- <div class="detail-label">[아래 상세내역 리스트 확인]</div> -->
<!-- 버튼 영역 -->
<div style="text-align:right; margin-bottom:10px;">
@@ -867,7 +810,7 @@ function fn_generateAndUploadPdf(callback) {
<div class="total-section" style="margin-left:auto;">
<table>
<tr>
<td class="label">총 공 급 가 액</td>
<td class="label">총 공 급 가 액 (VAT별도)</td>
<td class="amount"><input type="text" name="TOTAL_SUPPLY_PRICE" id="TOTAL_SUPPLY_PRICE" value="" readonly style="border:none; text-align:right; width:100%; font-weight:bold; font-size:16px;"/></td>
</tr>
</table>

View File

@@ -911,6 +911,10 @@ public class PurchaseOrderController {
if("".equals(vendorName)) vendorName = CommonUtils.checkNull(partRow.get("vendor_name"));
detailRow.put("VENDOR_NAME", vendorName);
String productName = CommonUtils.checkNull(partRow.get("PROJECT_PRODUCT_NAME"));
if("".equals(productName)) productName = CommonUtils.checkNull(partRow.get("project_product_name"));
detailRow.put("PRODUCT_NAME", productName);
String partName = CommonUtils.checkNull(partRow.get("PART_NAME"));
if("".equals(partName)) partName = CommonUtils.checkNull(partRow.get("part_name"));
detailRow.put("PART_NAME", partName);

View File

@@ -887,11 +887,27 @@
PM.PART_NO,
PM.PART_NAME,
PM.SPEC,
PM.UNIT,
PM.MAKER
COALESCE(NULLIF(SRP.UNIT, ''), PM.UNIT) AS UNIT,
PM.MAKER,
(SELECT PJ.PART_NAME FROM PROJECT_MGMT PJ WHERE PJ.OBJID::VARCHAR = SRM.PROJECT_NO) AS PROJECT_PRODUCT_NAME,
COALESCE(SRP.DELIVERY_REQUEST_DATE,
CASE WHEN SRM.MBOM_HEADER_OBJID IS NOT NULL THEN
CASE WHEN COALESCE(SRP.MATERIAL_YN, 'N') = 'Y' THEN
(SELECT MIN(MD3.DELIVERY_REQUEST_DATE) FROM MBOM_DETAIL MD3
WHERE MD3.RAW_MATERIAL_PART_NO = PM.PART_NO
AND MD3.MBOM_HEADER_OBJID::VARCHAR = SRM.MBOM_HEADER_OBJID::VARCHAR)
ELSE
(SELECT MIN(MD3.DELIVERY_REQUEST_DATE) FROM MBOM_DETAIL MD3
WHERE MD3.PART_OBJID::VARCHAR = SRP.PART_OBJID::VARCHAR
AND MD3.MBOM_HEADER_OBJID::VARCHAR = SRM.MBOM_HEADER_OBJID::VARCHAR)
END
ELSE NULL
END
) AS DELIVERY_REQUEST_DATE
FROM
SALES_REQUEST_PART SRP
LEFT JOIN PART_MNG PM ON PM.OBJID::VARCHAR = SRP.PART_OBJID
LEFT JOIN SALES_REQUEST_MASTER SRM ON SRP.SALES_REQUEST_MASTER_OBJID = SRM.OBJID
WHERE
SRP.SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_OBJID}
AND SRP.VENDOR_PM = #{PARTNER_OBJID}

View File

@@ -1941,6 +1941,9 @@ public class PurchaseOrderService {
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("PRODUCT_NAME", CommonUtils.checkNull(partMap.get("project_product_name")));
Object deliveryDateObj = partMap.get("delivery_request_date");
partParam.put("DELIVERY_REQUEST_DATE", deliveryDateObj != null ? String.valueOf(deliveryDateObj).trim() : "");
partParam.put("WRITER", writer);
partParam.put("STATUS", "create");