영업 팝업창 컬럼 너비 등 조절, 제품구분 표시

This commit is contained in:
2026-03-27 14:54:50 +09:00
parent 2467b34bd0
commit 3815f4eecd
4 changed files with 46 additions and 43 deletions

View File

@@ -41,11 +41,16 @@
section.business_popup_min_width {
padding: 0 !important;
margin: 0 auto !important;
width: calc(100% - 16px) !important;
max-width: none !important;
width: calc(100% - 8px) !important;
border: none !important;
box-shadow: none !important;
}
#EntirePopupFormWrap {
width: 100% !important;
margin: 5px 0 0 0 !important;
padding: 0 5px 10px 5px !important;
box-sizing: border-box;
}
/* ===== 품목 그리드 컬럼 리사이즈 ===== */
@@ -483,52 +488,52 @@
// S/N
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_serial_no[]" class="item-serial-no" placeholder="클릭하여 S/N 추가" readonly style="width:95%; padding:5px; cursor:pointer; background-color:#f8f9fa;" onclick="fn_openItemSnPopup(\'' + itemId + '\')" />';
html += '<input type="text" name="item_serial_no[]" class="item-serial-no" placeholder="클릭하여 S/N 추가" readonly style="width:100%; padding:5px; cursor:pointer; background-color:#f8f9fa;" onclick="fn_openItemSnPopup(\'' + itemId + '\')" />';
html += '<input type="hidden" name="item_serial_no_list[]" id="' + itemId + '_sn_list" value="" />';
html += '</td>';
// 요청납기
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_due_date[]" class="item-due-date date_icon" style="width:90%; padding:5px;" />';
html += '<input type="text" name="item_due_date[]" class="item-due-date date_icon" style="width:100%; padding:5px;" />';
html += '</td>';
// 고객요청사항
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<textarea name="item_customer_request[]" class="item-customer-request" style="width:95%; padding:5px; min-height:34px; resize:vertical; font-family:inherit; font-size:inherit;" rows="1"></textarea>';
html += '<textarea name="item_customer_request[]" class="item-customer-request" style="width:100%; padding:5px; min-height:34px; resize:vertical; font-family:inherit; font-size:inherit;" rows="1"></textarea>';
html += '</td>';
// 반납사유
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<select name="item_return_reason[]" class="item-return-reason select2" style="width:95%;"></select>';
html += '<select name="item_return_reason[]" class="item-return-reason select2" style="width:100%;"></select>';
html += '</td>';
// 수주수량 (Machine이고 프로젝트가 있으면 readonly)
html += '<td style="padding:5px; border:1px solid #ddd;">';
if(isMachine && hasProject) {
html += '<input type="text" name="item_order_quantity[]" class="item-order-quantity" style="width:90%; padding:5px; text-align:right; background:#f5f5f5;" required numberOnly readonly title="Machine 제품은 프로젝트 생성 후 수량 변경이 불가능합니다." />';
html += '<input type="text" name="item_order_quantity[]" class="item-order-quantity" style="width:100%; padding:5px; text-align:right; background:#f5f5f5;" required numberOnly readonly title="Machine 제품은 프로젝트 생성 후 수량 변경이 불가능합니다." />';
} else {
html += '<input type="text" name="item_order_quantity[]" class="item-order-quantity" style="width:90%; padding:5px; text-align:right;" required numberOnly />';
html += '<input type="text" name="item_order_quantity[]" class="item-order-quantity" style="width:100%; padding:5px; text-align:right;" required numberOnly />';
}
html += '</td>';
// 수주단가
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_order_unit_price[]" class="item-order-unit-price" style="width:90%; padding:5px; text-align:right;" numberOnly />';
html += '<input type="text" name="item_order_unit_price[]" class="item-order-unit-price" style="width:100%; padding:5px; text-align:right;" numberOnly />';
html += '</td>';
// 수주공급가액 (자동계산 + 수정가능)
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_order_supply_price[]" class="item-order-supply-price" style="width:90%; padding:5px; text-align:right;" numberOnly />';
html += '<input type="text" name="item_order_supply_price[]" class="item-order-supply-price" style="width:100%; padding:5px; text-align:right;" numberOnly />';
html += '</td>';
// 수주부가세 (자동계산 + 수정가능)
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_order_vat[]" class="item-order-vat" style="width:90%; padding:5px; text-align:right;" numberOnly />';
html += '<input type="text" name="item_order_vat[]" class="item-order-vat" style="width:100%; padding:5px; text-align:right;" numberOnly />';
html += '</td>';
// 수주총액 (자동계산 + 수정가능)
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_order_total_amount[]" class="item-order-total-amount" style="width:90%; padding:5px; text-align:right;" numberOnly />';
html += '<input type="text" name="item_order_total_amount[]" class="item-order-total-amount" style="width:100%; padding:5px; text-align:right;" numberOnly />';
html += '</td>';
// 삭제 버튼
@@ -718,46 +723,39 @@
var returnReason = "<%= CommonUtils.checkNull(item.get("RETURN_REASON")) %>";
var savedProduct = "<%= CommonUtils.checkNull(item.get("PRODUCT")) %>";
// 제품구분 드롭다운
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<select name="item_product[]" id="PRODUCT_' + itemId + '" class="item-product select2" style="width:100%;" required>';
html += '<option value="">선택</option>';
html += '</select>';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_serial_no[]" class="item-serial-no" placeholder="클릭하여 S/N 추가" readonly style="width:95%; padding:5px; cursor:pointer; background-color:#f8f9fa;" onclick="fn_openItemSnPopup(\'' + itemId + '\')" value="' + serialNos + '" />';
html += '<input type="text" name="item_serial_no[]" class="item-serial-no" placeholder="클릭하여 S/N 추가" readonly style="width:100%; padding:5px; cursor:pointer; background-color:#f8f9fa;" onclick="fn_openItemSnPopup(\'' + itemId + '\')" value="' + serialNos + '" />';
html += '<input type="hidden" name="item_serial_no_list[]" id="' + itemId + '_sn_list" value="" />';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_due_date[]" class="item-due-date date_icon" style="width:90%; padding:5px;" value="' + dueDate + '" />';
html += '<input type="text" name="item_due_date[]" class="item-due-date date_icon" style="width:100%; padding:5px;" value="' + dueDate + '" />';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<textarea name="item_customer_request[]" class="item-customer-request" style="width:95%; padding:5px; min-height:34px; resize:vertical; font-family:inherit; font-size:inherit;" rows="1"></textarea>';
html += '<textarea name="item_customer_request[]" class="item-customer-request" style="width:100%; padding:5px; min-height:34px; resize:vertical; font-family:inherit; font-size:inherit;" rows="1"></textarea>';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<select name="item_return_reason[]" class="item-return-reason select2" style="width:95%;"></select>';
html += '<select name="item_return_reason[]" class="item-return-reason select2" style="width:100%;"></select>';
html += '</td>';
// 수주 정보 (Machine이고 프로젝트가 있으면 수량 readonly)
html += '<td style="padding:5px; border:1px solid #ddd;">';
if(isMachine && hasProject) {
html += '<input type="text" name="item_order_quantity[]" class="item-order-quantity" style="width:90%; padding:5px; text-align:right; background:#f5f5f5;" required numberOnly readonly title="Machine 제품은 프로젝트 생성 후 수량 변경이 불가능합니다." value="' + (orderQuantity ? formatInteger(orderQuantity) : '') + '" />';
html += '<input type="text" name="item_order_quantity[]" class="item-order-quantity" style="width:100%; padding:5px; text-align:right; background:#f5f5f5;" required numberOnly readonly title="Machine 제품은 프로젝트 생성 후 수량 변경이 불가능합니다." value="' + (orderQuantity ? formatInteger(orderQuantity) : '') + '" />';
} else {
html += '<input type="text" name="item_order_quantity[]" class="item-order-quantity" style="width:90%; padding:5px; text-align:right;" required numberOnly value="' + (orderQuantity ? formatInteger(orderQuantity) : '') + '" />';
html += '<input type="text" name="item_order_quantity[]" class="item-order-quantity" style="width:100%; padding:5px; text-align:right;" required numberOnly value="' + (orderQuantity ? formatInteger(orderQuantity) : '') + '" />';
}
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_order_unit_price[]" class="item-order-unit-price" style="width:90%; padding:5px; text-align:right;" numberOnly value="' + (orderUnitPrice ? addComma(orderUnitPrice) : '') + '" />';
html += '<input type="text" name="item_order_unit_price[]" class="item-order-unit-price" style="width:100%; padding:5px; text-align:right;" numberOnly value="' + (orderUnitPrice ? addComma(orderUnitPrice) : '') + '" />';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_order_supply_price[]" class="item-order-supply-price" style="width:90%; padding:5px; text-align:right;" numberOnly value="' + (orderSupplyPrice ? addComma(orderSupplyPrice) : '') + '" />';
html += '<input type="text" name="item_order_supply_price[]" class="item-order-supply-price" style="width:100%; padding:5px; text-align:right;" numberOnly value="' + (orderSupplyPrice ? addComma(orderSupplyPrice) : '') + '" />';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_order_vat[]" class="item-order-vat" style="width:90%; padding:5px; text-align:right;" numberOnly value="' + (orderVat ? addComma(orderVat) : '') + '" />';
html += '<input type="text" name="item_order_vat[]" class="item-order-vat" style="width:100%; padding:5px; text-align:right;" numberOnly value="' + (orderVat ? addComma(orderVat) : '') + '" />';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_order_total_amount[]" class="item-order-total-amount" style="width:90%; padding:5px; text-align:right;" numberOnly value="' + (orderTotalAmount ? addComma(orderTotalAmount) : '') + '" />';
html += '<input type="text" name="item_order_total_amount[]" class="item-order-total-amount" style="width:100%; padding:5px; text-align:right;" numberOnly value="' + (orderTotalAmount ? addComma(orderTotalAmount) : '') + '" />';
html += '</td>';
html += '<td style="text-align:center; padding:5px; border:1px solid #ddd;">';
@@ -1676,13 +1674,13 @@
<table class="pmsPopuptable" id="itemListTable">
<colgroup>
<col width="3%" /> <!-- 번호 -->
<col width="8%" /> <!-- 제품구분 -->
<col width="6%" /> <!-- 제품구분 -->
<col width="7%" /> <!-- 품번 -->
<col width="7%" /> <!-- 품명 -->
<col width="10%" /> <!-- 품명 -->
<col width="9%" /> <!-- S/N -->
<col width="7%" /> <!-- 요청납기 -->
<col width="11%" /> <!-- 고객요청사항 -->
<col width="7%" /> <!-- 반납사유 -->
<col width="6%" /> <!-- 반납사유 -->
<col width="6%" /> <!-- 수주수량 -->
<col width="7%" /> <!-- 수주단가 -->
<col width="7%" /> <!-- 수주공급가액 -->

View File

@@ -696,13 +696,13 @@
html += '<input type="text" name="item_quantity[]" class="item-quantity" style="width:90%; padding:5px;" value="' + quantity + '" required numberOnly />';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_due_date[]" class="item-due-date date_icon" style="width:90%; padding:5px;" value="' + dueDate + '" />';
html += '<input type="text" name="item_due_date[]" class="item-due-date date_icon" style="width:100%; padding:5px;" value="' + dueDate + '" />';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<select name="item_return_reason[]" class="item-return-reason select2" style="width:95%;"></select>';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<textarea name="item_customer_request[]" class="item-customer-request" style="width:95%; padding:5px; min-height:34px; resize:vertical; font-family:inherit; font-size:inherit;" rows="1"></textarea>';
html += '<textarea name="item_customer_request[]" class="item-customer-request" style="width:100%; padding:5px; min-height:34px; resize:vertical; font-family:inherit; font-size:inherit;" rows="1"></textarea>';
html += '</td>';
html += '<td style="text-align:center; padding:5px; border:1px solid #ddd;">';
html += '<button type="button" onclick="fn_deleteItemRow(\'' + itemId + '\')" class="plm_btns" style="padding:5px 10px; font-size:12px;">삭제</button>';
@@ -1499,13 +1499,13 @@
html += '<input type="text" name="item_quantity[]" class="item-quantity" style="width:90%; padding:5px;" required numberOnly />';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<input type="text" name="item_due_date[]" class="item-due-date date_icon" style="width:90%; padding:5px;" />';
html += '<input type="text" name="item_due_date[]" class="item-due-date date_icon" style="width:100%; padding:5px;" />';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<select name="item_return_reason[]" class="item-return-reason select2" style="width:95%;"></select>';
html += '</td>';
html += '<td style="padding:5px; border:1px solid #ddd;">';
html += '<textarea name="item_customer_request[]" class="item-customer-request" style="width:95%; padding:5px; min-height:34px; resize:vertical; font-family:inherit; font-size:inherit;" rows="1"></textarea>';
html += '<textarea name="item_customer_request[]" class="item-customer-request" style="width:100%; padding:5px; min-height:34px; resize:vertical; font-family:inherit; font-size:inherit;" rows="1"></textarea>';
html += '</td>';
html += '<td style="text-align:center; padding:5px; border:1px solid #ddd;">';
html += '<button type="button" onclick="fn_deleteItemRow(\'' + itemId + '\')" class="plm_btns" style="padding:5px 10px; font-size:12px;">삭제</button>';
@@ -2244,15 +2244,15 @@
<div style="max-height:300px; overflow-y:auto;">
<table class="pmsPopuptable" id="itemListTable">
<colgroup>
<col width="4%" /> <!-- 번호 -->
<col width="10%" /> <!-- 제품구분 -->
<col width="3%" /> <!-- 번호 -->
<col width="7%" /> <!-- 제품구분 -->
<col width="11%" /> <!-- 품번 -->
<col width="11%" /> <!-- 품명 -->
<col width="13%" /> <!-- S/N -->
<col width="7%" /> <!-- 수량 -->
<col width="17%" /> <!-- 품명 -->
<col width="11%" /> <!-- S/N -->
<col width="6%" /> <!-- 수량 -->
<col width="9%" /> <!-- 요청납기 -->
<col width="13%" /> <!-- 반납사유 -->
<col width="17%" /> <!-- 고객요청사항 -->
<col width="8%" /> <!-- 반납사유 -->
<col width="18%" /> <!-- 고객요청사항 -->
<col width="5%" /> <!-- 삭제 -->
</colgroup>
<thead>

View File

@@ -5288,6 +5288,9 @@ WHERE
ORDER_SUPPLY_PRICE = #{orderSupplyPrice},
ORDER_VAT = #{orderVat},
ORDER_TOTAL_AMOUNT = #{orderTotalAmount}
<if test="product != null and product != ''">
,PRODUCT = #{product}
</if>
WHERE OBJID = #{contractItemObjId}
</update>

View File

@@ -1787,8 +1787,10 @@ ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC
<!-- 프로젝트 기본 정보 조회 (CONTRACT_OBJID 포함) -->
<select id="getProjectInfo" parameterType="map" resultType="map">
/* salesNcollectMgmt.getProjectInfo - PROJECT_MGMT의 상세 정보 조회 (최신 1개) */
SELECT
SELECT
PM.CONTRACT_OBJID,
PM.PRODUCT,
CODE_NAME(PM.PRODUCT) AS PRODUCT_NAME,
PM.PART_NO,
PM.PART_NAME,
-- 요청납기 (CONTRACT_ITEM의 DUE_DATE 우선, 없으면 PROJECT_MGMT.DUE_DATE)