샘플메뉴분석서 추가
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
# [1] 가전표등록 메뉴 분석 명세서
|
||||
|
||||
본 문서는 (주)삼안 ERP 시스템(SATIS)의 **가전표등록** 메뉴에 관련된 소스코드(컨트롤러, 모델 로직, 데이터베이스 쿼리)를 역공학하여 화면 구현 로직과 시스템 매핑 정보를 명세화한 것입니다.
|
||||
|
||||
---
|
||||
|
||||
## 🏛️ 1. 메뉴 개요 및 시스템 매핑 정보
|
||||
|
||||
* **메뉴명**: 가전표등록 (메뉴 ID: `[1]`)
|
||||
* **도메인**: 회계관리 (AM - Account)
|
||||
* **목적**: 회계전표 확정 전 단계에서 임시 전표(가전표)를 발행하고, 결의부서/계정코드/차대변 금액 및 관련 증빙 정보를 등록/수정/삭제 관리한다.
|
||||
* **연동 파일**:
|
||||
* **Controller**: [AccountSlipTemp_Controller.php](file:///d:/41.dev/10.saman/Satis/sys/controller/Account/AccountSlipTemp_Controller.php)
|
||||
* **Model (Logic)**: [AccountSlipTemp_logic.php](file:///d:/41.dev/10.saman/Satis/sys/model/Account/AccountSlipTemp_logic.php)
|
||||
* **View (Template)**: [SlipTempScreen_02_Main_mvc.tpl](file:///d:/41.dev/10.saman/Smarty/templates/Satis/Account/SlipTempScreen_02_Main_mvc.tpl)
|
||||
* **클라이언트 스크립트**: `common_jqGrid.js / common3.js`
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ 2. 화면 구조 및 UI 명세 (Storyboard)
|
||||
|
||||
### 2.1. 화면 레이아웃 구조 (Wireframe)
|
||||
메인 화면은 **상/하단 분할 그리드 구조 (Master-Detail)**로 구성되어 있으며, 전표의 기본 정보(마스터)와 세부 차변/대변 분개 내역(디테일)을 하나의 화면에서 관리합니다.
|
||||
|
||||
```
|
||||
+------------------------------------------------------------------------------------------------------------------------+
|
||||
| [로고] 가전표등록 [조회] [행추가] [행삭제] [복사/이동] [엑셀] [닫기] |
|
||||
+------------------------------------------------------------------------------------------------------------------------+
|
||||
| ■ 전표 마스터 정보 (상단 Form & Grid) |
|
||||
| - 결의일자: [ 2026-07-23 ] - 결의부서: [ 수주영업부 ▽ ] - 전표번호: [ 20260723-004 ] (신규: [채번]) |
|
||||
| - 결의자: [ 홍길동 ] - 결의금액: [ 1,500,000 원 ] - 전표구분: [ 일반대체 ▽ ] |
|
||||
+------------------------------------------------------------------------------------------------------------------------+
|
||||
| ■ 분개 상세 내역 (하단 Grid - 차변/대변 세부 항목) |
|
||||
| +----+------+----------+------------+------------+----------------------+--------------------+--------------------+ |
|
||||
| |순번|차/대 | 계정코드 | 차변금액 | 대변금액 | 거래처명 | 현장/사업코드 | 적요 | |
|
||||
| +----+------+----------+------------+------------+----------------------+--------------------+--------------------+ |
|
||||
| | 1 | 차변 | 110101 | 1,500,000 | 0 | (주)삼안 | 260341 (OO공사) | 여비교통비 청구 | |
|
||||
| | 2 | 대변 | 110102 | 0 | 1,500,000 | 신한은행 | 260341 (OO공사) | 보통예금 지급 | |
|
||||
| +----+------+----------+------------+------------+----------------------+--------------------+--------------------+ |
|
||||
| | [대차합계] | 1,500,000 | 1,500,000 | (차액: 0) | | | |
|
||||
| +----+------+----------+------------+------------+----------------------+--------------------+--------------------+ |
|
||||
+------------------------------------------------------------------------------------------------------------------------+
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2.2. 세부 팝업 및 연동 화면 명세
|
||||
본 화면은 대차 정산 및 전표 검색을 위해 2개의 주요 레이어 팝업과 유기적으로 연동됩니다.
|
||||
|
||||
1. **전표 검색 팝업 (`SlipTempScreen_02_Pop_Search_mvc.tpl`)**:
|
||||
* 조회 기간, 전표 종류, 결의 부서 등의 필터 조건으로 기존 가전표 목록을 일괄 검색하여 메인 화면으로 로드합니다.
|
||||
2. **반제/대차(D/C) 세부 정산 팝업 (`SlipTempScreen_02_Pop_DC_mvc.tpl`)**:
|
||||
* 외상매출금 회수, 미지급금 반제 등 반제 전표 작성 시 대변/차변의 상세 원장 데이터를 매핑하고 금액을 자동 정산하여 분개 라인을 자동 생성합니다.
|
||||
|
||||
---
|
||||
|
||||
### 2.3. 공통 제어 컴포넌트 명세 (UI Specification)
|
||||
* **결의부서 / 전표구분 / 세무코드 / 소득구분**: Select Box 컴포넌트로 구성되며 로그인 유저 권한(`satis_user_auth_div`) 및 부서 정보에 따라 권한별 조회가 제한됩니다.
|
||||
* **행추가 / 행삭제 버튼**: 하단 분개 그리드(`grid`) 내에서 분개 내역 라인을 동적으로 추가/삭제하며, 변경 시 실시간 대차 평균 검증(차변 합계 = 대변 합계)이 백엔드 저장 전에 클라이언트 단에서 수행됩니다.
|
||||
* **복사/이동 버튼 (`SlipMove`)**: 선택한 전표 정보를 타 부서 혹은 타 일자로 전표 이관 및 일괄 복사를 지원합니다.
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ 3. 핵심 비즈니스 로직 및 알고리즘
|
||||
|
||||
### 3.1. 전표번호 자동 채번 로직 (`Work_No`)
|
||||
신규 가전표를 발행할 때, 결의일자 및 결의부서에 해당하는 당일의 고유 일련번호를 자동 채번합니다.
|
||||
* **동작 방식**:
|
||||
* 회계 기준일자(`baseday`), 결의부서(`input_item_03`) 등의 파라미터를 넘겨 `Usp_Am_Slip_Temp_02_WN` 프로시저를 실행합니다.
|
||||
* 해당 부서의 당일 마지막 가전표 번호를 조회하여 `연월일-순번(4자리)` 형태의 유일한 전표 번호를 생성해 반환합니다.
|
||||
|
||||
---
|
||||
|
||||
### 3.2. 반제 전표 유형별 대차(D/C) 자동 분개 매핑
|
||||
미지급금이나 선급금 등 기존 거래와 매핑하여 반제 전표를 작성할 때, 반제 대상 정보(`par_item181` 값)에 따라 각기 다른 연동 프로시저를 동적으로 실행하여 대차 정산 내역을 산출합니다.
|
||||
|
||||
* **반제 구분별 데이터 바인딩 룰**:
|
||||
* **`000` (전표 정보 직접 연결)**: `USP_AM_SLIP_TEMP_02_DC_000` 프로시저를 통해 선택된 이전 전표 정보와 정확히 차대변을 일치시킵니다.
|
||||
* **`001` (거래처 기준 잔액 정산)**: `USP_AM_SLIP_TEMP_02_DC_001` 프로시저를 통해 특정 계정 및 거래처의 미수/미지급 잔액을 확인하여 반제 라인을 생성합니다.
|
||||
* **`002` / `004` (부서/현장별 정산)**: 부서별 또는 프로젝트(현장)별 지출 결의 잔액을 조회하여 정산합니다.
|
||||
* **`005` (상세 전표 항목 매핑)**: 개별 전표 순번 항목 단위의 정산 내역을 로드합니다.
|
||||
|
||||
---
|
||||
|
||||
### 3.3. 계정코드별 동적 관리항목 제어 로직
|
||||
그리드 분개 내역에서 특정 **계정코드**를 선택하면, 해당 계정의 성격에 맞춰 입력/필수 검증이 요구되는 **관리항목이 화면에서 동적으로 활성화(Editable)되거나 표시 제한**됩니다.
|
||||
|
||||
* **동작 프로세스**:
|
||||
1. 하단 그리드에서 **계정코드** 입력 ➡️ 포커스 아웃 시 Ajax 요청(`ActionMode=SCREEN_02&MainAction=AcntInfo`) 발생.
|
||||
2. 모델에서 프로시저 `usp_main_init_06`을 실행하여 선택된 계정코드에 정의된 **제어 속성 플래그 세트(ACNT_TARGET)**를 로드 및 리턴.
|
||||
3. 클라이언트 스크립트(`SlipTemp.js`)에서 리턴된 플래그 속성에 따라 그리드 내부 셀의 활성화 여부를 즉각 제어.
|
||||
* **핵심 관리항목 속성 제어 규칙**:
|
||||
* **거래처 및 은행 연동**: `CUST_YN`(거래처), `BANK_YN`(은행), `DEPOSIT_YN`(예장/예금 계좌) 값이 'Y'인 경우 거래처 팝업 및 은행 입력창 활성화.
|
||||
* **어음 및 카드 관리**: `BILL_YN`(어음), `CD_CARD_YN`(신용카드 번호) 활성화 여부 제어.
|
||||
* **자산 정보 연동**: `FA_NO_YN` 값이 'Y'인 경우 고정자산 정보(자산코드 등) 매핑 필드 활성화.
|
||||
* **가변 데이터 라벨 매핑**: `QTY1_NAME`(수량 라벨), `AMT1_NAME`(금액 라벨), `DATE1_NAME`(날짜 라벨), `DESC1_NAME`(가변 적요 라벨) 등의 동적 헤더 타이틀 표시 기능 적용.
|
||||
|
||||
---
|
||||
|
||||
## 🔄 4. 데이터 흐름도 (Data Flow Diagram)
|
||||
|
||||
가전표 신규 등록 및 상세 분개 내역 저장 시의 트랜잭션 시퀀스입니다.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
autonumber
|
||||
actor User as 회계담당자
|
||||
participant View as 가전표등록 UI (TPL)
|
||||
participant Ctrl as AccountSlipTemp_Controller
|
||||
participant Model as AccountSlipTemp_logic
|
||||
participant DB as Oracle DB (AM_SLIP_TEMP)
|
||||
|
||||
User->>View: 결의일자/부서 선택 후 '신규' 클릭
|
||||
View->>Ctrl: GET (ActionMode=SCREEN_02, MainAction=Ajax_00, SubAction=Work_No)
|
||||
Ctrl->>Model: Work_No 채번 로직 호출
|
||||
Model->>DB: Usp_Am_Slip_Temp_02_WN 프로시저 호출
|
||||
DB-->>Model: 신규 가전표 번호 반환
|
||||
Model-->>Ctrl: 전표번호 리턴
|
||||
Ctrl-->>View: 화면 UI에 전표번호 바인딩
|
||||
|
||||
User->>View: 분개 라인 추가 및 차대변 금액 입력 후 '저장'
|
||||
View->>Ctrl: POST (ActionMode=SCREEN_02, 저장 데이터)
|
||||
Ctrl->>Model: 마스터 저장 및 상세 분개 저장 실행
|
||||
Model->>DB: Usp_Am_Slip_Temp_02_In (마스터 등록)
|
||||
Model->>DB: Usp_Am_Slip_Temp_02_Detail_In (차대변 상세 분개 등록)
|
||||
DB-->>Model: 트랜잭션 COMMIT
|
||||
Model-->>Ctrl: 성공 플래그 리턴
|
||||
Ctrl-->>View: 화면 그리드 갱신 및 완료 메시지 출력
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💾 5. 화면(TPL) 및 DB 프로시저 상세 매핑
|
||||
|
||||
가전표등록 화면의 메인 뷰 및 연동 팝업 템플릿과 데이터베이스 프로시저 간의 상세 연동 구조입니다.
|
||||
|
||||
| 화면 구분 | 연동 스마트 템플릿 (TPL 파일) | 호출하는 주요 오라클 프로시저 | 프로시저 수행 비즈니스 역할 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **메인 화면** | `SlipTempScreen_02_Main_mvc.tpl` | `USP_AM_SLIP_TEMP_02_MASTER`<br>`USP_AM_SLIP_TEMP_02_MASTER_UP`<br>`Usp_Am_Slip_Temp_02_Master_Del` | 가전표 마스터 레코드의 조회, 등록, 수정, 삭제 트랜잭션 처리 |
|
||||
| **분개 상세 그리드** | (Main 템플릿 내부 jqGrid 바인딩) | `usp_am_slip_temp_02`<br>`Usp_Am_Slip_Temp_02_Detail_In`<br>`Usp_Am_Slip_Temp_02_Detail_Up`<br>`Usp_Am_Slip_Temp_02_Detail_Del` | 차변/대변 계정코드별 금액, 거래처, 적요 등 상세 분개 내역 조회/저장/수정/삭제 |
|
||||
| **전표 번호 채번** | (Main 화면 비동기 컨트롤) | `Usp_Am_Slip_Temp_02_WN`<br>`Usp_Am_Slip_Temp_02_WDNM`<br>`Usp_Am_Slip_Temp_02_GetNo` | 결의부서 및 일자 기준 신규 전표번호 생성 및 부서별 최종 전표번호 추적 |
|
||||
| **전표 검색 팝업** | `SlipTempScreen_02_Pop_Search_mvc.tpl` | `USP_AM_SLIP_TEMP_02_POP_SEARCH` | 조회 기간, 결의부서, 전표종류 등 다중 검색 조건 기준 기존 가전표 목록 일괄 검색 |
|
||||
| **대차(D/C) 팝업** | `SlipTempScreen_02_Pop_DC_mvc.tpl` | `USP_AM_SLIP_TEMP_02_DC`<br>`USP_AM_SLIP_TEMP_02_DC_000` ~ `005` | 반제 대상 전표 정보, 거래처 미수금 잔액, 부서 지출 잔액 등 대차 상세 분석 및 자동 분개 매핑 |
|
||||
| **기타 제어 로직** | (Main 화면 비동기 컨트롤) | `Usp_Am_Slip_Temp_02_Move`<br>`USP_AM_SLIP_TEMP_02_SLIPDATE` | 선택한 가전표의 타 부서/일자 복사 이동 및 결의일자 정합성 검증 |
|
||||
Reference in New Issue
Block a user