From d9e06fe95db4d3ac671707b7349fb6f5ac11973c Mon Sep 17 00:00:00 2001 From: Johngreen Date: Fri, 17 Oct 2025 17:18:05 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A7=A4=EC=B6=9C=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=8B=A0=EA=B7=9C=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/pms/salesmgmt/mapper/contractMgmt.xml | 38 ++-- .../salesmgmt/salesMggmt/salesMgmtList.jsp | 0 .../salesmgmt/salesMgmt/revenueMgmtList.jsp | 191 ++++++++++++++++++ .../salesmgmt/salesMgmt/salesMgmtList.jsp | 157 +++++++------- .../view/salesmgmt/salesMgmt/salesRegForm.jsp | 114 +++++++++++ plan.md | 33 +++ .../SalesNcollectMgmtController.java | 70 ++++++- 7 files changed, 491 insertions(+), 112 deletions(-) create mode 100644 WebContent/WEB-INF/view/salesmgmt/salesMggmt/salesMgmtList.jsp create mode 100644 WebContent/WEB-INF/view/salesmgmt/salesMgmt/revenueMgmtList.jsp create mode 100644 WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesRegForm.jsp create mode 100644 plan.md diff --git a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml index 209f229..08e3dfb 100644 --- a/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml +++ b/WebContent/WEB-INF/classes/com/pms/salesmgmt/mapper/contractMgmt.xml @@ -500,6 +500,11 @@ ,EXCHANGE_RATE ,EST_PRICE ,EST_SUPPLY_PRICE + ,ORDER_DATE + ,ORDER_UNIT_PRICE + ,ORDER_SUPPLY_PRICE + ,ORDER_VAT + ,ORDER_TOTAL_AMOUNT ,(SELECT COUNT(1) FROM ESTIMATE_TEMPLATE WHERE CONTRACT_OBJID = T.OBJID) AS EST_STATUS ,( SELECT IS_SEND @@ -718,6 +723,13 @@ AND TO_DATE(DUE_DATE,'YYYY-MM-DD') TO_DATE(#{due_end_date}, 'YYYY-MM-DD') + + + AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') = ]]> TO_DATE(#{order_start_date}, 'YYYY-MM-DD') + + + AND TO_DATE(ORDER_DATE,'YYYY-MM-DD') TO_DATE(#{due_end_date}, 'YYYY-MM-DD') + ORDER BY REGDATE DESC @@ -877,9 +889,7 @@ ,CONTRACT_DEL_DATE ,CONTRACT_COMPANY ,CONTRACT_DATE - ,PO_NO ,MANUFACTURE_PLANT - ,CONTRACT_RESULT ,PROJECT_NAME ,SPEC_USER_ID ,SPEC_PLAN_DATE @@ -900,14 +910,8 @@ ,PART_NO ,PART_NAME ,SERIAL_NO - ,QUANTITY ,CUSTOMER_REQUEST ,EXCHANGE_RATE - ,ORDER_DATE - ,ORDER_UNIT_PRICE - ,ORDER_SUPPLY_PRICE - ,ORDER_VAT - ,ORDER_TOTAL_AMOUNT ) VALUES ( @@ -944,9 +948,7 @@ ,#{contract_del_date} ,#{contract_company} ,#{contract_date} - ,#{po_no} ,#{manufacture_plant} - ,#{contract_result} ,#{project_name} ,#{spec_user_id} ,#{spec_plan_date} @@ -967,14 +969,8 @@ ,#{part_no} ,#{part_name} ,#{serial_no} - ,#{quantity} ,#{customer_request} ,#{exchange_rate} - ,#{order_date} - ,#{unit_price} - ,#{supply_price} - ,#{vat} - ,#{total_amount} ) ON CONFLICT (OBJID) DO UPDATE @@ -1007,10 +1003,8 @@ ,REQ_DEL_DATE = #{req_del_date} ,CONTRACT_DEL_DATE = #{contract_del_date} ,CONTRACT_COMPANY = #{contract_company} - ,CONTRACT_DATE = #{contract_date} - ,PO_NO = #{po_no} + ,CONTRACT_DATE = #{contract_date} ,MANUFACTURE_PLANT = #{manufacture_plant} - ,CONTRACT_RESULT = #{contract_result} ,PROJECT_NAME = #{project_name} ,SPEC_USER_ID = #{spec_user_id} ,SPEC_PLAN_DATE = #{spec_plan_date} @@ -1031,14 +1025,8 @@ ,PART_NO = #{part_no} ,PART_NAME = #{part_name} ,SERIAL_NO = #{serial_no} - ,QUANTITY = #{quantity} ,CUSTOMER_REQUEST = #{customer_request} ,EXCHANGE_RATE = #{exchange_rate} - ,ORDER_DATE = #{order_date} - ,ORDER_UNIT_PRICE = #{unit_price} - ,ORDER_SUPPLY_PRICE = #{supply_price} - ,ORDER_VAT = #{vat} - ,ORDER_TOTAL_AMOUNT = #{total_amount} diff --git a/WebContent/WEB-INF/view/salesmgmt/salesMggmt/salesMgmtList.jsp b/WebContent/WEB-INF/view/salesmgmt/salesMggmt/salesMgmtList.jsp new file mode 100644 index 0000000..e69de29 diff --git a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/revenueMgmtList.jsp b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/revenueMgmtList.jsp new file mode 100644 index 0000000..313ddd4 --- /dev/null +++ b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/revenueMgmtList.jsp @@ -0,0 +1,191 @@ +<%@ 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.jsp" %> +<% + PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); + String connector = person.getUserId(); +%> + + + + +<%=Constants.SYSTEM_NAME%> + + + + + + +
+ + +
+ +
+ +
+
+
+
+

+ 영업관리_매출관리 +

+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + ~
~ ~
+
+ + <%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %> +
+
+
+
+ + diff --git a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp index a2cf63e..28943d5 100644 --- a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp +++ b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp @@ -1,43 +1,48 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ page import="com.pms.common.utils.*"%> +<%@ 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.*" %> +<%@ page import="java.util.*" %> <%@include file= "/init.jsp" %> <% PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); String connector = person.getUserId(); %> - - - - -<%=Constants.SYSTEM_NAME%> + + + + +판매 관리 - + -
- - -
-
@@ -96,11 +89,12 @@ function fn_excel() {

- 영업관리_매출관리 + 판매 관리

- + +
@@ -122,70 +116,65 @@ function fn_excel() { - - - - - - - + - - - - - - + + + + + + + + + + ~ + + ~ + + + + ~ + + + + + + - - - - - - - - - - - - ~ - - - - ~ - - ~ - + + + +
- - <%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %> + + <%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>
-
- + + diff --git a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesRegForm.jsp b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesRegForm.jsp new file mode 100644 index 0000000..56fae4f --- /dev/null +++ b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesRegForm.jsp @@ -0,0 +1,114 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/init.jsp" %> + + + + +판매 등록 + + + + + +
+
+
+

+ 판매 등록 +

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+
+ +
+
+ + +
+
+
+
+ + diff --git a/plan.md b/plan.md new file mode 100644 index 0000000..6754a95 --- /dev/null +++ b/plan.md @@ -0,0 +1,33 @@ +# 프로젝트: 판매 관리 기능 개발 + +## 개요 +판매 관리 페이지의 UI를 개선하고, 판매 등록 및 조회 기능을 TDD(테스트 주도 개발) 원칙에 따라 개발합니다. + +## 핵심 기능 +1. 판매 관리 페이지 UI 구현 +2. 판매 등록 팝업 기능 +3. 판매 목록 조회 및 필터링 +4. 데이터베이스 연동 및 CRUD 기능 구현 + +## 테스트 계획 +### 1단계: UI 및 기본 기능 +- [x] 판매 관리 페이지 기본 UI 생성 +- [x] 필터 및 테이블 컬럼 구성 +- [x] 컨트롤러 URL 매핑 및 이름 재정의 +- [x] '판매등록' 버튼 추가 +- [ ] **테스트 1**: '판매등록' 버튼 클릭 시 팝업창이 정상적으로 뜨는가? +- [ ] **테스트 2**: '출고방법' 드롭다운에 DB 데이터가 정상적으로 표시되는가? +- [ ] **테스트 3**: '인도조건' 드롭다운에 DB 데이터가 정상적으로 표시되는가? + +### 2단계: 데이터 처리 +- [ ] **테스트 4**: 판매 등록 팝업에서 '저장' 버튼 클릭 시 데이터가 DB에 저장되는가? +- [ ] **테스트 5**: 판매 목록 조회 시 DB에서 데이터를 가져와 그리드에 표시하는가? +- [ ] **테스트 6**: 검색 조건으로 필터링했을 때 결과가 정확히 조회되는가? + +## 에러 처리 계획 +- 필수 입력값 누락 시 유효성 검사 및 알림 +- 데이터 저장 실패 시 에러 메시지 처리 + +## 진행 상태 +- 완료된 테스트는 [x]로 표시합니다. +- 현재 진행 중인 테스트는 **[진행중]** 으로 표시합니다. diff --git a/src/com/pms/salesmgmt/controller/SalesNcollectMgmtController.java b/src/com/pms/salesmgmt/controller/SalesNcollectMgmtController.java index 10aafaf..c5909f5 100644 --- a/src/com/pms/salesmgmt/controller/SalesNcollectMgmtController.java +++ b/src/com/pms/salesmgmt/controller/SalesNcollectMgmtController.java @@ -99,8 +99,8 @@ public class SalesNcollectMgmtController { * @param paramMap - 검색 정보 * @return String */ - @RequestMapping(value = "/contractMgmt/salesMgmtList.do", method = RequestMethod.GET) - public String showSalesMgmtList(HttpServletRequest request, @RequestParam Map paramMap) { + @RequestMapping(value = "/revenueMgmt/revenueList.do", method = RequestMethod.GET) + public String showRevenueMgmtList(HttpServletRequest request, @RequestParam Map paramMap) { try { // 코드정보 Map codeMap = new HashMap(); @@ -143,6 +143,46 @@ public class SalesNcollectMgmtController { } catch (Exception e) { e.printStackTrace(); } + return "/salesmgmt/salesMgmt/revenueMgmtList"; + } + + /** + *
+	 * 신규 매출관리 목록 페이지
+	 * 
+ * @param request + * @param paramMap - 검색 정보 + * @return String + */ + @RequestMapping(value = "/contractMgmt/salesMgmtList.do", method = RequestMethod.GET) + public String showSalesMgmtList(HttpServletRequest request, @RequestParam Map paramMap) { + try { + // 코드정보 (기존 로직과 동일하게 설정 가능) + Map codeMap = new HashMap(); + + // 주문유형 + codeMap.put("orderTypeList", + salesMgmtCommonService.bizMakeOptionList("GE", "", "salesMgmtCommon.getCodeList")); + // 제품구분 + codeMap.put("productTypeList", + salesMgmtCommonService.bizMakeOptionList("", "", "salesMgmtCommon.getGoodsList")); + // 국내/해외 + codeMap.put("nationList", + salesMgmtCommonService.bizMakeOptionList("AR", "", "salesMgmtCommon.getCodeList")); + // 수주상태 + codeMap.put("orderStatusList", + commonService.bizMakeOptionList("0000932", "", "common.getCodeselect")); + // 출하대기 상태 + codeMap.put("shippingStatusList", + salesMgmtCommonService.bizMakeOptionList("SH", "", "salesMgmtCommon.getCodeList")); + // 담당자 + codeMap.put("managerList", + salesMgmtCommonService.bizMakeOptionList("", "", "salesMgmtCommon.getSalesmanList")); + + request.setAttribute("codeMap", codeMap); + } catch (Exception e) { + e.printStackTrace(); + } return "/salesmgmt/salesMgmt/salesMgmtList"; } @@ -155,7 +195,7 @@ public class SalesNcollectMgmtController { * @return Map */ @ResponseBody - @RequestMapping(value = "/salesMgmt/salesMgmtGridList.do", method = RequestMethod.POST) + @RequestMapping(value = "/revenueMgmt/revenueGridList.do", method = RequestMethod.POST) public Map salesMgmtGridList(HttpServletRequest request, @RequestParam Map paramMap) { Map resultMap = new HashMap(); @@ -175,6 +215,30 @@ public class SalesNcollectMgmtController { return resultMap; } + /** + *
+	 * 판매등록 폼 팝업
+	 * 
+ * @param request + * @param paramMap + * @return String + */ + @RequestMapping(value = "/salesMgmt/salesRegForm.do", method = RequestMethod.GET) + public String showSalesRegForm(HttpServletRequest request, @RequestParam Map paramMap) { + try { + Map codeMap = new HashMap(); + + // 담당자 + codeMap.put("managerList", + salesMgmtCommonService.bizMakeOptionList("", "", "salesMgmtCommon.getSalesmanList")); + + request.setAttribute("codeMap", codeMap); + } catch (Exception e) { + e.printStackTrace(); + } + return "/salesmgmt/salesMgmt/salesRegForm"; + } + /** *
 	 * 계약관리 목록 조회