품목별 입고관리 메뉴 추가
This commit is contained in:
@@ -1341,6 +1341,53 @@ public class PurchaseOrderController {
|
||||
return purchaseOrderService.updatePurchaseCloseDate(objIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 품목별 입고 관리 화면
|
||||
*/
|
||||
@RequestMapping("/purchaseOrder/deliveryMngAcceptancePartList.do")
|
||||
public String deliveryMngAcceptancePartList(HttpServletRequest request, @RequestParam Map paramMap){
|
||||
ArrayList list = new ArrayList();
|
||||
Map code_map = new HashMap();
|
||||
|
||||
try{
|
||||
// 고객사
|
||||
code_map.put("customer_cd", commonService.bizMakeOptionList("", (String)paramMap.get("customer_cd"), "common.getsupplyselect"));
|
||||
// 고객사프로젝트명
|
||||
code_map.put("customer_project_name", commonService.bizMakeOptionList("", (String)paramMap.get("customer_project_name"), "common.getsupplyselect"));
|
||||
// 당사프로젝트번호
|
||||
code_map.put("project_no", commonService.bizMakeOptionList("", (String)paramMap.get("project_no"), "common.getProjectNameList"));
|
||||
// PART구분
|
||||
code_map.put("part_type", commonService.bizMakeOptionList(Constants.PART_TYPE_CODE, (String)paramMap.get("part_type"), "common.getCodeselect"));
|
||||
// 발주구분
|
||||
code_map.put("type", commonService.bizMakeOptionList("0001068", (String)paramMap.get("type"), "common.getCodeselect"));
|
||||
// 공급업체 (공급업체 + 일반거래처 통합)
|
||||
code_map.put("partner_objid", commonService.bizMakeOptionList("", (String)paramMap.get("partner_objid"), "common.getAllSupplySelect"));
|
||||
// 조치담당자
|
||||
code_map.put("sales_mng_user_id", commonService.bizMakeOptionList("", (String)paramMap.get("sales_mng_user_id"), "common.getUserselect"));
|
||||
// 상태코드
|
||||
code_map.put("appr_status", commonService.bizMakeOptionList("0000099", (String)paramMap.get("appr_status"), "common.getCodeselect"));
|
||||
|
||||
list = commonService.selectListPaging("purchaseOrder.deliveryMngPartList", request, paramMap);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
request.setAttribute("code_map", code_map);
|
||||
request.setAttribute("LIST", JsonUtil.ListToJson(list));
|
||||
|
||||
return "/purchaseOrder/deliveryMngAcceptancePartList";
|
||||
}
|
||||
|
||||
/**
|
||||
* 품목별 입고 관리 그리드 조회
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/purchaseOrder/deliveryMngAcceptancePartGridList.do")
|
||||
public Map deliveryMngAcceptancePartGridList(HttpSession session, HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
|
||||
commonService.selectListPagingNew("purchaseOrder.deliveryMngPartList", request, paramMap);
|
||||
return paramMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 입고 관리
|
||||
*/
|
||||
|
||||
@@ -6156,4 +6156,165 @@ FROM(
|
||||
WHERE MULTI_MASTER_OBJID = #{OBJID}
|
||||
</update>
|
||||
|
||||
<!-- =====================================================
|
||||
품목별 입고 관리 리스트 조회
|
||||
===================================================== -->
|
||||
<select id="deliveryMngPartList" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
POP.OBJID AS PURCHASE_ORDER_PART_OBJID
|
||||
,POM.OBJID AS PURCHASE_ORDER_MASTER_OBJID
|
||||
,POM.STATUS
|
||||
,COALESCE(POM.FORM_TYPE, '') AS FORM_TYPE
|
||||
|
||||
<!-- 품의서 정보 -->
|
||||
,POM.SALES_REQUEST_OBJID
|
||||
,(SELECT REQUEST_MNG_NO FROM SALES_REQUEST_MASTER SRM
|
||||
WHERE SRM.OBJID::VARCHAR = POM.SALES_REQUEST_OBJID
|
||||
AND SRM.DOC_TYPE IN ('PROPOSAL', 'PURCHASE_REG_PROPOSAL')) AS PROPOSAL_NO
|
||||
|
||||
<!-- 발주서 정보 -->
|
||||
,POM.PURCHASE_ORDER_NO
|
||||
,CM.PROJECT_NO
|
||||
|
||||
<!-- 품목 정보 -->
|
||||
,POP.PART_NO
|
||||
,POP.PART_NAME
|
||||
|
||||
<!-- 공급업체 -->
|
||||
,(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME
|
||||
|
||||
<!-- 발주수량 -->
|
||||
,COALESCE(POP.ORDER_QTY::NUMERIC, 0) AS ORDER_QTY
|
||||
|
||||
<!-- 입고수량 (ARRIVAL_PLAN에서 합계) -->
|
||||
,COALESCE(AP_AGG.DELIVERY_QTY, 0) AS DELIVERY_QTY
|
||||
|
||||
<!-- 미입고수량 = 발주수량 - 입고수량 -->
|
||||
,(COALESCE(POP.ORDER_QTY::NUMERIC, 0) - COALESCE(AP_AGG.DELIVERY_QTY, 0)) AS NON_DELIVERY_QTY
|
||||
|
||||
<!-- 수입검사 검사현황 (품목별: INVENTORY_MGMT_IN → INVENTORY_MGMT → PART_MNG 연결) -->
|
||||
,(CASE
|
||||
WHEN IID_AGG.TOTAL_COUNT > 0 AND IID_AGG.TOTAL_COUNT = IID_AGG.COMPLETED_COUNT THEN '완료'
|
||||
WHEN IID_AGG.COMPLETED_COUNT > 0 THEN '진행중'
|
||||
ELSE ''
|
||||
END) AS INSPECTION_STATUS
|
||||
|
||||
<!-- 반품 처리결과 폐기수량 (품목별) -->
|
||||
,COALESCE(DEFECT_AGG.DEFECT_QTY, 0) AS DEFECT_QTY
|
||||
|
||||
<!-- 매입마감수량 확정입고수량 = 입고수량 - 폐기수량 -->
|
||||
,(COALESCE(AP_AGG.DELIVERY_QTY, 0) - COALESCE(DEFECT_AGG.DEFECT_QTY, 0)) AS CONFIRMED_QTY
|
||||
|
||||
<!-- 매입마감일 -->
|
||||
,POM.PURCHASE_CLOSE_DATE
|
||||
|
||||
<!-- 입고결과 -->
|
||||
,(CASE
|
||||
WHEN COALESCE(POP.ORDER_QTY::NUMERIC, 0) - COALESCE(AP_AGG.DELIVERY_QTY, 0) <![CDATA[ <= ]]> 0 THEN '입고완료'
|
||||
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
|
||||
ELSE '입고중'
|
||||
END) AS DELIVERY_STATUS
|
||||
|
||||
FROM PURCHASE_ORDER_PART POP
|
||||
INNER JOIN PURCHASE_ORDER_MASTER POM ON POM.OBJID::VARCHAR = POP.PURCHASE_ORDER_MASTER_OBJID
|
||||
LEFT OUTER JOIN PROJECT_MGMT CM ON POM.CONTRACT_MGMT_OBJID = CM.OBJID
|
||||
|
||||
<!-- 입고 수량 집계 (ARRIVAL_PLAN) -->
|
||||
LEFT OUTER JOIN (
|
||||
SELECT ORDER_PART_OBJID
|
||||
,SUM(COALESCE(RECEIPT_QTY::NUMERIC, 0)) AS DELIVERY_QTY
|
||||
FROM ARRIVAL_PLAN
|
||||
GROUP BY ORDER_PART_OBJID
|
||||
) AP_AGG ON POP.OBJID = AP_AGG.ORDER_PART_OBJID
|
||||
|
||||
<!-- 수입검사 현황 집계 (발주마스터+품목 기준: 불량상세가 있는 건만 카운트) -->
|
||||
LEFT OUTER JOIN (
|
||||
SELECT IMI.PURCHASE_ORDER_MASTER_OBJID
|
||||
,IM.PART_OBJID
|
||||
,COUNT(IDF.OBJID) AS TOTAL_COUNT /* 불량상세가 있는 건수 */
|
||||
,COUNT(CASE WHEN IDF.ACTION_RESULT IS NOT NULL AND IDF.ACTION_RESULT != '' THEN 1 END) AS COMPLETED_COUNT
|
||||
FROM INCOMING_INSPECTION_DETAIL IID
|
||||
INNER JOIN INVENTORY_MGMT_IN IMI ON IMI.OBJID = IID.INVENTORY_IN_OBJID
|
||||
INNER JOIN INVENTORY_MGMT IM ON IM.OBJID = IMI.PARENT_OBJID
|
||||
LEFT JOIN INCOMING_INSPECTION_DEFECT IDF ON IDF.INSPECTION_DETAIL_OBJID = IID.OBJID
|
||||
WHERE IMI.PURCHASE_ORDER_MASTER_OBJID IS NOT NULL
|
||||
GROUP BY IMI.PURCHASE_ORDER_MASTER_OBJID, IM.PART_OBJID
|
||||
) IID_AGG ON POM.OBJID::VARCHAR = IID_AGG.PURCHASE_ORDER_MASTER_OBJID
|
||||
AND POP.PART_OBJID = IID_AGG.PART_OBJID
|
||||
|
||||
<!-- 폐기수량 집계 (발주마스터+품목 기준) -->
|
||||
LEFT OUTER JOIN (
|
||||
SELECT IMI.PURCHASE_ORDER_MASTER_OBJID
|
||||
,IM.PART_OBJID
|
||||
,SUM(COALESCE(NULLIF(IDF.DEFECT_QTY, '')::NUMERIC, 0)) AS DEFECT_QTY
|
||||
FROM INCOMING_INSPECTION_DETAIL IID
|
||||
INNER JOIN INVENTORY_MGMT_IN IMI ON IMI.OBJID = IID.INVENTORY_IN_OBJID
|
||||
INNER JOIN INVENTORY_MGMT IM ON IM.OBJID = IMI.PARENT_OBJID
|
||||
LEFT JOIN INCOMING_INSPECTION_DEFECT IDF ON IDF.INSPECTION_DETAIL_OBJID = IID.OBJID
|
||||
WHERE IMI.PURCHASE_ORDER_MASTER_OBJID IS NOT NULL
|
||||
AND IDF.ACTION_RESULT IN ('폐기', 'SCRAP')
|
||||
GROUP BY IMI.PURCHASE_ORDER_MASTER_OBJID, IM.PART_OBJID
|
||||
) DEFECT_AGG ON POM.OBJID::VARCHAR = DEFECT_AGG.PURCHASE_ORDER_MASTER_OBJID
|
||||
AND POP.PART_OBJID = DEFECT_AGG.PART_OBJID
|
||||
|
||||
WHERE 1=1
|
||||
AND POM.MAIL_SEND_DATE IS NOT NULL
|
||||
AND pom.status = 'create'
|
||||
AND (POM.MULTI_MASTER_YN = 'Y' OR NVL(POM.MULTI_MASTER_YN, '') != 'Y' AND NVL(POM.MULTI_YN, '') != 'Y')
|
||||
|
||||
<if test="Year != null and Year != ''">
|
||||
AND TO_CHAR(POM.REGDATE, 'YYYY') = #{Year}
|
||||
</if>
|
||||
<if test="customer_cd != null and customer_cd != ''">
|
||||
AND CM.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
|
||||
</if>
|
||||
<if test="project_nos != null and project_nos != ''">
|
||||
AND CM.OBJID IN
|
||||
<foreach item="state" collection="project_nos.split(',')" open="(" separator="," close=")">
|
||||
#{state}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="purchase_order_no != null and purchase_order_no != ''">
|
||||
AND TRIM(UPPER(POM.PURCHASE_ORDER_NO)) LIKE '%'||TRIM(UPPER(#{purchase_order_no}))||'%'
|
||||
</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 = REPLACE(#{partner_objid}, 'C_', '')
|
||||
</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="delivery_status != null and delivery_status != ''">
|
||||
AND (CASE
|
||||
WHEN COALESCE(POP.ORDER_QTY::NUMERIC, 0) - COALESCE(AP_AGG.DELIVERY_QTY, 0) <![CDATA[ <= ]]> 0 THEN '입고완료'
|
||||
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
|
||||
ELSE '입고중'
|
||||
END) = #{delivery_status}
|
||||
</if>
|
||||
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
||||
AND TRIM(UPPER(POP.PART_NO)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NO}))||'%'
|
||||
</if>
|
||||
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
||||
AND TRIM(UPPER(POP.PART_NAME)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_NAME}))||'%'
|
||||
</if>
|
||||
<if test="SEARCH_PART_SPEC != null and SEARCH_PART_SPEC != ''">
|
||||
AND TRIM(UPPER(POP.SPEC)) LIKE '%'||TRIM(UPPER(#{SEARCH_PART_SPEC}))||'%'
|
||||
</if>
|
||||
ORDER BY POM.REGDATE DESC, POP.OBJID
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user