01_청구 항목 등록 폼(라이브러리 활용안)
청구 항목 등록 폼에서의 라이브러리 활용 방안
Section titled “청구 항목 등록 폼에서의 라이브러리 활용 방안”목표는 “효율성과 정확성” 두 마리 토끼를 모두 잡는 것입니다. 관리자는 대부분의 항목을 10초 안에 등록할 수 있어야 하고, 회계적 오류는 시스템이 막아줘야 합니다.
Step 1: ‘청구 항목 추가’ 시작
Section titled “Step 1: ‘청구 항목 추가’ 시작”- 시작점: 관리비 부과 설정 화면에서 관리자는
[+ 청구 항목 추가]버튼을 클릭합니다. 버튼 클릭으로 청구 항목 등록 절차가 시작됩니다.
Step 2: ‘라이브러리에서 선택’을 기본으로 제공
Section titled “Step 2: ‘라이브러리에서 선택’을 기본으로 제공”- 모달 창: 버튼을 누르면, 비어있는 폼 대신 ‘항목 선택’ 모달(팝업) 창이 먼저 나타납니다.
이 모달 창은 표준화된 항목을 쉽게 선택할 수 있도록 돕습니다.
예: 신규 항목 등록 시, 관리자는 사전 정의된 라이브러리에서 항목을 선택하여 시간 절약.
화면 구성 아이디어:
- 좌측 (라이브러리 영역): 항목 구분(item_type)(예: ‘공용관리비’, ‘개별사용료’)이 탭이나 아코디언 메뉴로 제공됩니다. 각 구분을 클릭하면, 해당 구분에 포함된 표준 청구 항목들(예: 일반관리비, 청소비, 세대 전기료…)이 목록으로 표시됩니다.
- 우측 (미리보기 및 선택 영역): 좌측에서 특정 항목(예: ‘승강기유지비’)을 클릭하면, 우측에 해당 항목의 **표준 설명과 기본 회계 처리 규칙(
매핑 규칙)**이 간략하게 표시됩니다. 이를 통해 관리자는 선택한 항목의 회계적 처리 방식을 직관적으로 이해할 수 있습니다. - 하단 버튼:
[선택 완료]버튼: 현재 선택된 항목을 사용하겠다는 의미입니다.[+ 라이브러리에 없는 항목 직접 등록]버튼: 표준 라이브러리에 없는 항목을 새로 등록할 때 사용합니다.
Step 3: ‘90% 자동 완성’ 폼 확인 및 저장
Section titled “Step 3: ‘90% 자동 완성’ 폼 확인 및 저장”-
자동 완성 폼: 관리자가 라이브러리에서 ‘승강기유지비’를 선택하고
[선택 완료]를 누르면, **‘청구 항목 등록 폼’**이 나타납니다. 이 폼은 라이브러리 정보로 대부분의 필드가 자동으로 채워져 있어, 관리자의 입력 시간을 단축시킵니다.예: ‘승강기유지비’ 선택 시, 항목명, 설명, 항목 구분, 회계 규칙 등이 자동으로 입력됨.
-
자동 채워지는 항목:
- 항목명:
승강기유지비(수정 가능) - 설명:
승강기 안전 점검, 보수 및 보험료를 포함한 비용(수정 가능) - 항목 구분:
공용관리비(고정) - 회계 매핑 규칙:
DIRECT_REVENUE_BILLING(숨겨져 있거나, 고급 설정에서만 확인 가능) - 연결 회계 계정:
관리비수익 - 승강기유지비(숨겨져 있거나, 고급 설정에서만 확인 가능)
- 항목명:
-
최종 작업: 관리자는 필요에 따라 항목명을 ‘1-3호기 승강기유지비’처럼 구체적으로 수정하는 등 약간의 커스터마이징 후 바로 저장하면 됩니다.
라이브러리에 없는 신규 항목 등록 방안
Section titled “라이브러리에 없는 신규 항목 등록 방안”모든 건물의 특수한 상황을 표준 라이브러리가 100% 감당할 수는 없습니다. 이때 필요한 것이 바로 ‘사용자 직접 등록’ 기능입니다.
Step 1: ‘직접 등록’ 선택
Section titled “Step 1: ‘직접 등록’ 선택”- 직접 등록 시작: ‘항목 선택’ 모달 창에서
[+ 라이브러리에 없는 항목 직접 등록]버튼을 클릭합니다. 이 버튼을 통해 표준 라이브러리에 없는 새로운 항목을 시스템에 추가할 수 있습니다.
Step 2: 빈 등록 폼 입력 (단, 규칙은 선택하도록 유도)
Section titled “Step 2: 빈 등록 폼 입력 (단, 규칙은 선택하도록 유도)”-
신규 항목 폼: **비어있는 ‘청구 항목 등록 폼’**이 나타납니다. 여기서 가장 중요한 기획 포인트는 관리자가 필요한 정보를 정확히 입력하도록 유도하는 것입니다.
-
필수 입력 필드:
- 항목명: 관리자가 자유롭게 입력합니다.
예:
옥상 텃밭 이용료 - 항목 구분:
공용관리비,시설이용료등 기존 구분 중에서 선택하도록 합니다. 이는 리포트의 일관성을 유지하기 위함입니다. - 설명: 관리자가 자유롭게 입력합니다.
★회계 매핑 규칙: 관리자가 반드시 선택해야 하는 드롭다운 목록을 제공합니다. 목록에는수익 직접 청구(DIRECT_REVENUE_BILLING),보증금 처리(DEPOSIT_HANDLING)등 사전에 정의된 규칙이 포함됩니다.★연결 회계 계정: 선택한 매핑 규칙에 따라, 연결 가능한 회계 계정 목록(예: 관리외수익, 예수금 계열)을 보여주고 선택하게 합니다.
- 항목명: 관리자가 자유롭게 입력합니다.
전문가 제언: 시스템 제어 및 관리
Section titled “전문가 제언: 시스템 제어 및 관리”결론적으로, **‘라이브러리를 통한 빠른 선택’**과 **‘규칙 기반의 자유로운 추가’**라는 투트랙(Two-track) 방식을 제공하는 것이 가장 이상적입니다.
- 초보 관리자 및 일반 상황: 라이브러리를 통해 95%의 작업을 빠르고 정확하게 처리합니다. 이를 통해 업무 효율성을 극대화하고 오류 발생 가능성을 줄입니다.
- 숙련된 관리자 및 특수 상황: 직접 등록 기능을 통해 유연하게 대처할 수 있습니다. 건물의 특수한 요구사항이나 예외적인 청구 항목을 시스템에 반영할 수 있습니다.
이렇게 설계한다면 사용자의 편의성과 시스템의 데이터 정합성을 모두 만족시키는 아주 훌륭한 서비스가 될 것입니다.
SaaS 건물관리 시스템 표준 청구 항목 라이브러리
Section titled “SaaS 건물관리 시스템 표준 청구 항목 라이브러리”1. 문서 개요
Section titled “1. 문서 개요”- 목적: 본 문서는 SaaS형 건물관리 시스템에서 기본으로 제공하는 전체 표준 청구 항목(BILLING_ITEMS)의 라이브러리를 정의합니다.
각 테넌트(고객사)는 이 라이브러리에서 자신의 건물 특성과 운영 정책에 맞는 항목을 선택(활성화)하여 관리비 부과 업무에 사용하게 됩니다.
[추가]또는[보완]으로 표시된 항목은 다양한 건물 유형과 운영 상황에 대응하기 위해 확장된 제안입니다.
2. 표준 청구 항목 목록
Section titled “2. 표준 청구 항목 목록”가. 공용관리비 (item_type: 공용관리비)
Section titled “가. 공용관리비 (item_type: 공용관리비)”- 정의: 모든 입주사가 함께 부담하는, 건물의 유지 관리를 위한 필수적인 공통 비용입니다. 면적 등의 기준에 따라 배분됩니다.
| 항목명 (item_name) | 정렬 순서 (sort_order) | 설명 |
|---|---|---|
| 일반관리비 | 101 | 인건비, 사무용품비 등 단지 운영을 위한 전반적인 비용 |
| 청소비 | 102 | 공용 공간의 청결 유지를 위한 내/외부 용역 비용 |
| 경비비 | 103 | 건물 보안 및 순찰 등 물리적/인적 보안 용역 비용 |
| 보안시스템유지비 | 104 | CCTV, 출입 통제 시스템 등 보안 장비의 유지보수 비용 |
| 소독비(방역비) | 105 | 정기적인 해충 방제 및 전염병 예방 소독 비용 |
| 승강기유지비 | 106 | 승강기 안전 점검, 보수 및 보험료를 포함한 비용 |
| 공용 전기료 | 107 | 복도, 엘리베이터, 지하주차장 등 공용 공간에서 사용된 전기 요금 |
| 공용 수도료 | 108 | 공용 화장실, 조경 용수 등 공용 공간에서 사용된 수도 요금 |
| 공용 난방/급탕비 | 109 | 커뮤니티 시설 등 공용 공간에 공급된 난방 및 온수 비용 |
| 수선유지비 | 110 | 공용 시설물의 긴급/간단한 수리 및 부품 교체 비용 |
| 조경관리비 | 111 | 건물 내/외부 녹지 공간의 유지 및 관리 비용 |
| 폐기물처리비 | 112 | 생활/대형 폐기물의 수거 및 처리에 관한 비용 |
| 건물보험료 | 113 | 화재, 배상책임 등 건물에 필요한 각종 손해보험료 |
| 안전점검비 | 114 | 소방시설, 건축물 등 법정 정기 안전진단 및 점검에 소요되는 비용 |
| 위탁관리수수료 | 115 | 전문 관리업체에 위탁 시 지급하는 수수료 |
| 장기수선충당금 | 116 | [보완] 주요 시설 교체 및 대규모 수선을 위한 법정/계약상 의무 적립금 |
| 대수선비 | 117 | 장기수선계획 외의 비정기적인 대규모 수선 공사 비용 |
| 공동체 활성화 비용 | 118 | 입주민 행사, 교육, 소식지 발행 등 공동체 활동 지원 비용 (의결 시) |
나. 개별사용료 (item_type: 개별사용료)
Section titled “나. 개별사용료 (item_type: 개별사용료)”- 정의: 각 세대(호실)에서 사용한 만큼만 실비로 정산하여 부과하는 비용입니다. 관리회사는 요금 대납 후 정산하는 역할을 주로 수행합니다.
| 항목명 (item_name) | 정렬 순서 (sort_order) | 설명 |
|---|---|---|
| 세대 전기료 | 201 | 각 세대(호실)가 사용한 전기 요금 |
| 세대 수도료 | 202 | 각 세대(호실)가 사용한 수도 요금 |
| 세대 가스료 | 203 | 각 세대(호실)가 사용한 가스 요금 |
| 세대 난방비 | 204 | 각 세대(호실)가 사용한 난방(열) 요금 |
| 세대 급탕비 | 205 | 각 세대(호실)가 사용한 온수 요금 |
| 세대 통신료 | 206 | (중앙 공급 시) 각 세대가 사용한 인터넷, TV 요금 |
| 세대 환기(공조)료 | 207 | 중앙공조식 환기 시스템 가동 시 세대별 사용량에 따른 비용 |
다. 시설이용료 (item_type: 시설이용료)
Section titled “다. 시설이용료 (item_type: 시설이용료)”- 정의: 입주민이 특정 공용 시설을 이용할 때, 실제 사용자에게만 부과되는 수익성 비용입니다. 모든 세대가 부담하는 공용관리비와는 구별됩니다.
| 항목명 (item_name) | 정렬 순서 (sort_order) | 설명 |
|---|---|---|
| 월 주차료 | 301 | 지정된 주차 공간에 대한 월 단위 사용료 |
| 전기차 충전요금 | 302 | 공용 전기차 충전기 사용에 대한 요금 (사용량 기반) |
| 헬스장 이용료 | 303 | 커뮤니티 내 헬스장 사용에 대한 월/연 단위 요금 |
| 골프연습장 이용료 | 304 | 커뮤니티 내 골프 연습장 사용에 대한 요금 |
| 독서실/스터디룸 이용료 | 305 | 지정 좌석 또는 공간 사용에 대한 요금 |
| 게스트룸 이용료 | 306 | 커뮤니티 내 게스트룸 예약 사용 요금 |
| 사물함 이용료 | 307 | 공용 공간의 사물함 대여 요금 |
| 회의실/연회장 대관료 | 308 | 입주사 및 외부인 대상 회의실, 연회장 등 공간 대여료 |
| 공유주방 이용료 | 309 | 파티, 요리 등 목적의 공유주방 시간제 사용 요금 |
| 셀프 세차장 이용료 | 310 | 건물 내 셀프 세차 공간 및 장비 사용 요금 |
라. 기타청구항목 (item_type: 기타청구항목)
Section titled “라. 기타청구항목 (item_type: 기타청구항목)”- 정의: 정기 관리비 외에, 비정기적으로 발생하는 일회성 비용이나 변동 비용을 특정 세대에 부과할 때 사용합니다.
| 항목명 (item_name) | 정렬 순서 (sort_order) | 설명 |
|---|---|---|
| 관리비 연체료 | 401 | 관리비 미납 시 규정에 따라 부과되는 지연 배상금 |
| 주차 등록비 (1회) | 402 | 차량 등록 시 발생하는 일회성 행정 비용 |
| 주차 위반금 | 403 | 규정 위반 주차 차량에 부과하는 비용 |
| 카드키 재발급비 | 404 | 분실 또는 파손된 출입 카드키 재발급 비용 |
| 세대 창고 이용료 | 405 | 별도로 제공되는 세대별 창고 공간의 대여료 |
| 공사 동의서 발급비 | 406 | 세대 인테리어 공사 시 입주민 동의서 날인 대행 수수료 |
| 대형폐기물 처리비 (세대) | 407 | 세대에서 배출한 대형 폐기물 처리 대행 시 발생하는 실비 |
| 제증명 발급 수수료 | 408 | 관리비 납부확인서 등 각종 증명서 발급에 따른 행정 비용 |
| 입주/이사 수수료 | 409 | 입주/이사 시 발생하는 행정처리, 점검, 청소 등에 대한 비용 |
마. 보증금 (item_type: 보증금)
Section titled “마. 보증금 (item_type: 보증금)”- 정의: 특정 서비스 이용이나 물품 대여 시 예치했다가, 계약 종료나 물품 반납 시 환불해주는 금액입니다. 회계적으로는 부채로 처리됩니다.
| 항목명 (item_name) | 정렬 순서 (sort_order) | 설명 |
|---|---|---|
| 관리비 예치금 | 501 | 최초 입주 시 일정 기간의 관리비를 선납 형식으로 예치하는 금액 |
| 이사 엘리베이터 보증금 | 502 | 이사 시 공용 시설물 손상에 대비한 예치금 |
| 주차카드 보증금 | 503 | 주차장 출입 카드 발급 시 받는 예치금 |
| 커뮤니티 시설 대관 보증금 | 504 | 게스트룸, 회의실 등 대관 시 시설물 손상에 대비한 예치금 |
청구 항목 종류(item_type) 설명 및 예시
Section titled “청구 항목 종류(item_type) 설명 및 예시”1. 문서 개요
Section titled “1. 문서 개요”- 목적: 본 문서는 건물관리 시스템의
BILLING_ITEMS테이블에 사용되는item_type(청구 항목 종류)을 정의하고, 각 종류의 역할과 구체적인 사용 예시를 설명합니다. 관리비 부과 업무의 정확성과 일관성을 유지하기 위한 기준으로 활용할 수 있습니다.
2. item_type 상세 설명
Section titled “2. item_type 상세 설명”| item_type (항목 종류) | 설명 | 주요 사용 예시 |
|---|---|---|
공용관리비 | 건물의 공용 부분을 유지, 관리하기 위해 모든 입주사가 면적 등의 기준에 따라 함께 부담하는 정기적인 비용입니다. | 일반관리비청소비경비비승강기유지비소독비화재보험료장기수선충당금 |
개별사용료 | 각 세대(호실)에서 사용한 만큼만 실비로 정산하여 부과하는 비용입니다. 관리회사는 보통 요금을 대납하고 정산해주는 역할을 합니다. | 세대 전기료세대 수도료세대 가스료세대 난방비세대 급탕비 |
시설이용료 | 입주민이 특정 공용 시설을 예약하거나 사용할 때 발생하는 비용입니다. 모든 세대가 부담하는 공용관리비와는 별개로, 실제 사용자에게만 부과됩니다. | 헬스장/골프연습장 월 이용료게스트룸/회의실 예약 사용료독서실 이용료 |
기타청구항목 | 정기 관리비 외에, 비정기적으로 발생하는 일회성 비용이나 변동 비용을 특정 세대에 부과할 때 사용합니다. | 주차 위반 벌금세대 열쇠/카드키 재발급 비용특정 세대 요청에 따른 추가 수리비폐기물 스티커 발급 비용 |
보증금 | 특정 서비스 이용이나 물품 대여 시 예치했다가, 계약 종료나 물품 반납 시 환불해주는 금액입니다. 회계적으로 부채로 처리됩니다. | 이사 시 엘리베이터 사용 보증금행사용 비품 대여 보증금단기 주차권 보증금 |
3. 시스템 적용 가이드
Section titled “3. 시스템 적용 가이드”- 항목 등록 시: 새로운 청구 항목(
BILLING_ITEMS)을 등록할 때는 위 표를 참고하여 가장 적절한item_type을 선택해야 합니다. 선택된item_type은 시스템의 회계 처리 로직에 영향을 미칩니다. - 회계 처리: 선택된
item_type에 따라 시스템의 내부 회계 처리 로직(비용 배분, 수익 인식, 부채 처리 등)이 달라져야 하므로, 각item_type의 성격을 명확히 이해하는 것이 중요합니다.예:
보증금타입은 수익이 아닌 부채로 처리. - 확장: 건물 특성에 따라 새로운 유형이 필요할 경우, 위 표에 새로운
item_type을 정의하고 시스템에 해당 로직을 추가하여 확장할 수 있습니다. 새로운item_type추가 시에는 회계팀과의 협의가 필요합니다.
mapping_rule 전체 목록 및 설명
Section titled “mapping_rule 전체 목록 및 설명”1. 문서 개요
Section titled “1. 문서 개요”- 목적: 본 문서는 건물관리 시스템의
BILLING_MAPPING테이블에 사용되는mapping_rule의 전체 목록과 그 의미, 처리 로직, 사용 예시를 정의합니다. 개발자는 이 규칙 코드를 기반으로 각 청구 항목의 성격에 맞는 자동 회계 처리 로직을 구현할 수 있습니다.
2. mapping_rule 목록
Section titled “2. mapping_rule 목록”그룹 1: 기본 규칙 (Basic Rules)
Section titled “그룹 1: 기본 규칙 (Basic Rules)”- 설명: 가장 일반적인 1:1 매핑 규칙입니다. 하나의 청구 항목이 하나의 회계 계정에 직접적으로 영향을 미치는 경우 사용됩니다.
| mapping_rule | 의미 | 처리 로직 | 사용 예시 |
|---|---|---|---|
DIRECT_EXPENSE_BILLING | 비용 직접 청구 | 청구 금액만큼 매핑된 비용(Expense) 계정에서 발생한 금액을 회수하는 것으로 처리합니다. (시스템상으로는 비용 회수로 처리되거나, 입주사 부과금액 총액과 비용 총액을 비교하는 리포트에서 활용) | 청구 항목: 청소비 회계 계정: 5100 청소비 |
DIRECT_REVENUE_BILLING | 수익 직접 청구 | 청구 금액만큼 매핑된 수익(Revenue) 계정에 직접적인 수익을 발생시킵니다. | 청구 항목: 헬스장 이용료 회계 계정: 6100 시설이용료수익 |
DEPOSIT_HANDLING | 보증금 처리 | 청구 금액만큼 매핑된 부채(Liability) 계정에 예수금을 증가시킵니다. 이는 수익이 아니며, 나중에 환불해 줘야 할 돈입니다. | 청구 항목: 이사 엘리베이터 보증금 회계 계정: 2500 보증금예수금 |
그룹 2: 복합 규칙 (Complex Rules)
Section titled “그룹 2: 복합 규칙 (Complex Rules)”- 설명: 하나의 청구 항목이 여러 회계 계정에 영향을 미치는 경우 사용합니다. 주로 비용 차감이나 부가세 처리 등 복잡한 회계 처리에 활용됩니다.
| mapping_rule | 의미 | 처리 로직 | 사용 예시 |
|---|---|---|---|
REVENUE_WITH_OFFSET | 비용 차감을 동반한 수익 | 하나의 청구 항목에 대해 2개의 매핑이 필요합니다. 1. (REVENUE_GENERATION): 매핑된 수익 계정에 수익을 발생시킵니다. 2. (EXPENSE_OFFSET): 매핑된 비용 계정에서 해당 수익만큼 비용을 감소(차감)시킵니다. | 청구 항목: 세대 전기료 1. (수익): 6000 전기료수익 발생 2. (비용): 5400 공용전기료 차감 |
REVENUE_WITH_VAT | 부가가치세 포함 수익 | 하나의 청구 항목에 대해 2개의 매핑이 필요합니다. 1. 공급가액만큼 매핑된 수익 계정에 수익을 발생시킵니다. 2. 부가세액만큼 매핑된 부채(VAT 예수금) 계정에 부채를 증가시킵니다. | 청구 항목: 상가 임대료 1. (수익): 임대료수익 발생 2. (부채): 부가세예수금 발생 |
그룹 3: 조정 및 특수 규칙 (Adjustment & Special Rules)
Section titled “그룹 3: 조정 및 특수 규칙 (Adjustment & Special Rules)”- 설명: 할인, 환불, 선수금 등 특별한 상황에 대한 처리 규칙입니다. 일반적인 청구-수익/비용 관계를 벗어나는 거래들을 처리합니다.
| mapping_rule | 의미 | 처리 로직 | 사용 예시 |
|---|---|---|---|
DISCOUNT_OR_WAIVER | 할인 및 감면 | 매핑된 수익 계정의 금액을 감소시키거나, 특정 비용 계정(예: 판매촉진비)을 발생시키는 방식으로 처리합니다. | 항목: 장기계약 할인 로직: 시설이용료수익을 차감 |
REFUND_PROCESSING | 환불 처리 | 기존에 발생했던 거래의 반대 회계 처리를 수행합니다. (예: 수익 감소, 부채 감소 등) | 항목: 게스트룸 예약 취소 로직: 시설이용료수익 감소 및 현금/예금 자산 감소 |
PREPAYMENT_HANDLING | 선수금 처리 | 최초 청구 시에는 매핑된 부채(선수수익) 계정에 금액을 기록하고, 매월 서비스 제공 시점에 해당 부채를 감소시키고 수익을 인식합니다. | 항목: 시설 이용료 1년 선납 로직: 최초 선수수익(부채) 기록 후, 매월 시설이용료수익으로 대체 |
BAD_DEBT_WRITEOFF | 대손 처리 | 회수가 불가능한 미수 관리비 등을 회계상 손실로 처리합니다. 매핑된 비용(대손상각비) 계정을 발생시키고, **자산(미수금)**을 감소시킵니다. | 항목: 미납 관리비 대손처리 로직: 대손상각비 발생 |
이러한 mapping_rule들을 시스템에 정의하고 각 청구 항목에 적절히 할당함으로써, 복잡하고 다양한 건물 관리 거래를 자동화하고 회계 장부의 정확성을 획기적으로 높일 수 있습니다.
-- =====================================================================-- 건물관리 시스템: '청구-회계 매핑' 모델 데이터베이스 초기화 스크립트 (5가지 항목 종류 반영)-- 데이터베이스 종류: PostgreSQL 기준-- 실행 순서:-- 1. 기존 객체 삭제-- 2. 테이블 생성 (FEE_ACCOUNTS, BILLING_ITEMS, BILLING_MAPPING)-- 3. 타임스탬프 자동 업데이트를 위한 트리거 함수 생성 및 적용-- 4. 회계 계정 마스터 데이터 삽입 (FEE_ACCOUNTS)-- 5. 청구 항목 마스터 데이터 삽입 (BILLING_ITEMS)-- 6. 청구-회계 매핑 데이터 삽입 (BILLING_MAPPING)-- =====================================================================
-- ** 섹션 1: 테이블 및 관련 객체 정리/생성 **
-- 기존 테이블 및 관련 객체 삭제 (초기화 시에만 사용)DROP TABLE IF EXISTS BILLING_MAPPING;DROP TABLE IF EXISTS BILLING_ITEMS;DROP TABLE IF EXISTS FEE_ACCOUNTS;DROP FUNCTION IF EXISTS update_updated_at_column();
-- 테이블 1: FEE_ACCOUNTS (회계 계정 마스터)CREATE TABLE FEE_ACCOUNTS ( account_id SERIAL PRIMARY KEY, account_code VARCHAR(10) NOT NULL UNIQUE, account_name VARCHAR(100) NOT NULL, account_type VARCHAR(20) NOT NULL, -- '비용', '수익', '자산', '부채' 등 description TEXT, is_active BOOLEAN DEFAULT TRUE, created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP);COMMENT ON TABLE FEE_ACCOUNTS IS '회계 장부에 기록되는 모든 계정과목의 마스터 테이블';COMMENT ON COLUMN FEE_ACCOUNTS.account_type IS '계정의 종류 (비용, 수익, 자산, 부채 등)';
-- 테이블 2: BILLING_ITEMS (청구 항목 마스터)CREATE TABLE BILLING_ITEMS ( billing_item_id SERIAL PRIMARY KEY, item_name VARCHAR(100) NOT NULL, item_type VARCHAR(20) NOT NULL, -- '공용관리비', '개별사용료', '시설이용료', '기타청구항목', '보증금' sort_order INT DEFAULT 0, description TEXT, is_active BOOLEAN DEFAULT TRUE, created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP);COMMENT ON TABLE BILLING_ITEMS IS '관리비 고지서에 표시되는 청구 항목의 마스터 테이블';COMMENT ON COLUMN BILLING_ITEMS.item_type IS '청구 항목의 성격';
-- 테이블 3: BILLING_MAPPING (청구-회계 매핑 테이블)CREATE TABLE BILLING_MAPPING ( mapping_id SERIAL PRIMARY KEY, billing_item_id INT NOT NULL, account_id INT NOT NULL, mapping_rule VARCHAR(100), -- 예: 'DIRECT_BILLING', 'REVENUE_GENERATION' 등 시스템이 해석할 규칙 CONSTRAINT fk_billing_item FOREIGN KEY(billing_item_id) REFERENCES BILLING_ITEMS(billing_item_id) ON DELETE CASCADE, CONSTRAINT fk_account FOREIGN KEY(account_id) REFERENCES FEE_ACCOUNTS(account_id) ON DELETE CASCADE);COMMENT ON TABLE BILLING_MAPPING IS '청구 항목과 회계 계정을 연결하고 규칙을 정의하는 테이블';
-- ** 섹션 2: 타임스탬프 자동 업데이트를 위한 트리거 생성 및 적용 **
CREATE OR REPLACE FUNCTION update_updated_at_column()RETURNS TRIGGER AS $$BEGIN NEW.updated_at = NOW(); RETURN NEW;END;$$ language 'plpgsql';
CREATE TRIGGER update_fee_accounts_updated_atBEFORE UPDATE ON FEE_ACCOUNTSFOR EACH ROWEXECUTE FUNCTION update_updated_at_column();
CREATE TRIGGER update_billing_items_updated_atBEFORE UPDATE ON BILLING_ITEMSFOR EACH ROWEXECUTE FUNCTION update_updated_at_column();
-- ** 섹션 3: 회계 계정 마스터 데이터 삽입 (FEE_ACCOUNTS) **-- 시스템에서 사용하는 모든 비용, 수익, 부채 계정을 등록합니다.
INSERT INTO FEE_ACCOUNTS (account_code, account_name, account_type) VALUES-- 비용 계정('5000', '일반관리비', '비용'), ('5100', '청소비', '비용'), ('5200', '경비비', '비용'),('5900', '소독비', '비용'), ('5301', '승강기유지비', '비용'), ('5303', '수선유지비', '비용'),('5500', '위탁관리수수료', '비용'), ('5600', '화재보험료', '비용'), ('5700', '장기수선충당금', '비용'),('5400', '공용전기료', '비용'), ('5402', '공용수도료', '비용'),-- 수익 계정('6000', '전기료수익', '수익'), ('6001', '수도료수익', '수익'), ('6008', '가스료수익', '수익'),('6009', '난방비수익', '수익'), ('6010', '급탕비수익', '수익'),('6100', '시설이용료수익', '수익'), -- 신규: 시설이용료 관련 수익 계정('6200', '기타수익', '수익'), -- 신규: 기타청구항목 관련 수익 계정-- 부채 계정('2500', '보증금예수금', '부채'); -- 신규: 보증금 관련 부채 계정
-- ** 섹션 4: 청구 항목 마스터 데이터 삽입 (BILLING_ITEMS) **-- 실제 관리비 고지서에 표시될 항목들을 5가지 분류에 맞게 등록합니다.
INSERT INTO BILLING_ITEMS (item_name, item_type, sort_order) VALUES-- 공용 관리비('일반관리비', '공용관리비', 101), ('청소비', '공용관리비', 102), ('경비비', '공용관리비', 103),('소독비', '공용관리비', 104), ('승강기유지비', '공용관리비', 105), ('수선유지비', '공용관리비', 106),('위탁관리수수료', '공용관리비', 107), ('화재보험료', '공용관리비', 108), ('장기수선충당금', '공용관리비', 109),-- 개별 사용료('세대 전기료', '개별사용료', 201), ('세대 수도료', '개별사용료', 202), ('세대 가스료', '개별사용료', 203),('세대 난방비', '개별사용료', 204), ('세대 급탕비', '개별사용료', 205),-- 시설 이용료('헬스장 이용료', '시설이용료', 301), ('게스트룸 이용료', '시설이용료', 302),-- 기타 청구 항목('주차 위반금', '기타청구항목', 401), ('카드키 재발급비', '기타청구항목', 402),-- 보증금('이사 엘리베이터 보증금', '보증금', 501);
-- ** 섹션 5: 청구-회계 매핑 데이터 삽입 (BILLING_MAPPING) **-- 청구 항목과 회계 계정의 관계를 정의합니다.
-- 1. 공용관리비 매핑 (1:1 직접 매핑)INSERT INTO BILLING_MAPPING (billing_item_id, account_id, mapping_rule)SELECT b.billing_item_id, a.account_id, 'DIRECT_EXPENSE_BILLING' -- '해당 비용을 직접 청구' 규칙FROM BILLING_ITEMS bJOIN FEE_ACCOUNTS a ON b.item_name = a.account_nameWHERE b.item_type = '공용관리비';
-- 2. 개별사용료 매핑 (1:N 복합 매핑)-- 세대 전기료 매핑INSERT INTO BILLING_MAPPING (billing_item_id, account_id, mapping_rule) VALUES((SELECT billing_item_id FROM BILLING_ITEMS WHERE item_name = '세대 전기료'), (SELECT account_id FROM FEE_ACCOUNTS WHERE account_code = '6000'), 'REVENUE_GENERATION'), -- 전기료수익 발생((SELECT billing_item_id FROM BILLING_ITEMS WHERE item_name = '세대 전기료'), (SELECT account_id FROM FEE_ACCOUNTS WHERE account_code = '5400'), 'EXPENSE_OFFSET'); -- 공용전기료 비용 차감-- 세대 수도료 매핑INSERT INTO BILLING_MAPPING (billing_item_id, account_id, mapping_rule) VALUES((SELECT billing_item_id FROM BILLING_ITEMS WHERE item_name = '세대 수도료'), (SELECT account_id FROM FEE_ACCOUNTS WHERE account_code = '6001'), 'REVENUE_GENERATION'),((SELECT billing_item_id FROM BILLING_ITEMS WHERE item_name = '세대 수도료'), (SELECT account_id FROM FEE_ACCOUNTS WHERE account_code = '5402'), 'EXPENSE_OFFSET');
-- 3. 시설이용료 매핑 (수익으로 직접 매핑)INSERT INTO BILLING_MAPPING (billing_item_id, account_id, mapping_rule)SELECT b.billing_item_id, (SELECT account_id FROM FEE_ACCOUNTS WHERE account_code = '6100'), -- '시설이용료수익' 계정에 매핑 'DIRECT_REVENUE_BILLING'FROM BILLING_ITEMS bWHERE b.item_type = '시설이용료';
-- 4. 기타청구항목 매핑 (수익으로 직접 매핑)INSERT INTO BILLING_MAPPING (billing_item_id, account_id, mapping_rule)SELECT b.billing_item_id, (SELECT account_id FROM FEE_ACCOUNTS WHERE account_code = '6200'), -- '기타수익' 계정에 매핑 'DIRECT_REVENUE_BILLING'FROM BILLING_ITEMS bWHERE b.item_type = '기타청구항목';
-- 5. 보증금 매핑 (부채로 직접 매핑)INSERT INTO BILLING_MAPPING (billing_item_id, account_id, mapping_rule)SELECT b.billing_item_id, (SELECT account_id FROM FEE_ACCOUNTS WHERE account_code = '2500'), -- '보증금예수금' 계정에 매핑 'DEPOSIT_HANDLING'FROM BILLING_ITEMS bWHERE b.item_type = '보증금';
-- 스크립트 종료 --