관리 메뉴

bright jazz music

5. 분개 본문

기타/파이썬 회계

5. 분개

bright jazz music 2022. 11. 8. 21:40

 

# 2022년 1월 1일: 자본금 100,000,000원을 주주로부터 현금 출자받다.
# 2022년 1월 2일: 사무실을 빌리고 1개월 임차료 1,000,000원을 현금으로 지급
# 2022년 1월 3일: 중고 자동차 1대를 구입하고 1,500,000원을 현금으로 지급
# 2022년 1월 4일: 경리부 직원에 대한 급여 700,000을 현금으로 지급
# 2022년 1월 5일: 기계장치 5,000,000원을 B사로부터 외상으로 구입
# 2022년 1월 6일: 용역을 제공하고 그 대가로 4,000,000원을 수취하기로 하였다.
# 2022년 1월 7일: A은행으로부터 현금 40,000,000을 만기 2년으로 차입

#2022년 1월 중에 발생한 거래를 아래와 같은 양식으로 분개할 것

 

 

계정과목명 계정그룹 기준위치
현금 자산 차변
매출채권 자산 차변
상품 자산 차변
차량운반구 자산 차변
기계 자산 차변
매입채무 부채 대변
미지급금 부채 대변
장기차입금 부채 대변
자본금 자본 대변
이익잉여금 자본 대변
매출 수익 대변
매출원가 비용 차변
급여 비용 차변
임차료 비용 차변

 

계정과목을 아래와 같은 양식으로 분개할 것

일자 계정과목명 차변 대변
1월 1일 현금 100,000,000  
1월 1일 자본금   1,000,000
1월 2일 임차료 1,000,000  
1월 2일 현금   1,000,000
1월 3일 차량운반구 1,500,000  
1월 3일 현금   1,000,000
1월 4일 급여 700,000  
1월 4일 현금   700,000
1월 5일 기계 5,000,000  
1월 5일 미지급금   5,000,000
1월 6일 매출채권 4,000,000  
1월 6일 매출   4,000,000
1월 7일 현금 40,000,000  
1월 7일 장기차입금   40,000,000

 

 

 

분개장의 내용을 계정코드 별로  아래와 같이 전기하여 보여줘라.

(아래는 현금 계정에 대한 전기 결과이다)

# 2022년 1월 1일: 자본금 100,000,000원을 주주로부터 현금 출자받다.
# 2022년 1월 2일: 사무실을 빌리고 1개월 임차료 1,000,000원을 현금으로 지급
# 2022년 1월 3일: 중고 자동차 1대를 구입하고 1,500,000원을 현금으로 지급
# 2022년 1월 4일: 경리부 직원에 대한 급여 700,000을 현금으로 지급
# 2022년 1월 5일: 기계장치 5,000,000원을 B사로부터 외상으로 구입
# 2022년 1월 6일: 용역을 제공하고 그 대가로 4,000,000원을 수취하기로 하였다.
# 2022년 1월 7일: A은행으로부터 현금 40,000,000을 만기 2년으로 차입

#2022년 1월 중에 발생한 거래를 아래와 같은 양식으로 분개할 것
일자 계정과목명 차변 대변
1월 1일 현금 100,000,000  
1월 1일 현금   1,000,000
1월 2일 현금   1,500,000
1월 3일 현금   700,000
1월 4일 현금    
1월 5일 현금    
1월 6일 현금    
1월 7일 현금 40,000,000  
소계   140,000,000 3,200,000
잔액   136,800,000  

 

 

 

 

#분개
분개_1월1일 = [["1월1일"],
           ["차변", ["현금", 100_000_000]],
           ["대변", ["자본금", 100_000_000]]
           ]

분개_1월2일 = [["1월2일"],
           ["차변", ["임차료", 1_000_000]],
           ["대변", ["현금", 1_000_000]]
           ]

분개_1월3일 = [["1월3일"],
           ["차변", ["차량운반구", 1_500_000]],
           ["대변", ["현금", 1_500_000]]
           ]

분개_1월4일 = [["1월4일"],
           ["차변", ["급여", 700_000]],
           ["대변", ["현금", 700_000]]
           ]

분개_1월5일 = [["1월5일"],
           ["차변", ["기계", 5_000_000]],
           ["대변", ["미지급금", 5_000_000]]
           ]

분개_1월6일 = [["1월6일"],
           ["차변", ["매출채권", 4_000_000]],
           ["대변", ["매출", 4_000_000]]
           ]

분개_1월7일 = [["1월7일"],
           ["차변", ["현금", 40_000_000]],
           ["대변", ["미지급금", 40_000_000]]
           ]

###########################################

전체분개 = [
        분개_1월1일, 분개_1월2일,
        분개_1월3일, 분개_1월4일,
        분개_1월5일, 분개_1월6일,
        분개_1월7일
        ]

##########################################

분개_차변 = [분개세부내역[1][1] for 일자별분개 in 전체분개
         for 분개세부내역 in 일자별분개 if 분개세부내역[0] == "차변"]
         
         #분개세부내역[1][1] == ["차변", ["현금", 40_000_000]]

분개_대변 = [분개세부내역[1][1] for 일자별분개 in 전체분개
         for 분개세부내역 in 일자별분개 if 분개세부내역[0] == "대변"]

print("@@@ 분개 @@@")
print("\n분개 차변")
print(분개_차변)

print("\n분개 대변")
print(분개_대변)

##########################################

print("\n분개차변합계: ", sum(분개_차변))
print("분개대변합계: ", sum(분개_대변))

#@@@ 분개 @@@
#
# 분개 차변
# [100000000, 1000000, 1500000, 700000, 5000000, 4000000, 40000000]
#
# 분개 대변
# [100000000, 1000000, 1500000, 700000, 5000000, 4000000, 40000000]
#
# 분개차변합계:  152200000
# 분개대변합계:  152200000


#전기
def 계정전기(입력계정):
    if 입력계정 in [세세부내역[0] for 일자별분개 in 전체분개
                for 분개세부내역 in 일자별분개
                for 세세부내역 in 분개세부내역]:
        print([[일자별분개[0], 분개세부내역[0], 세세부내역[1]] for 일자별분개 in 전체분개
               for 분개세부내역 in 일자별분개
               for 세세부내역 in 분개세부내역 if 세세부내역[0] == 입력계정])
    else:
        print("계정과목없음")


def 계정전기합계(입력계정):
    if 입력계정 in [세세부내역[0] for 일자별분개 in 전체분개
                for 분개세부내역 in 일자별분개
                for 세세부내역 in 분개세부내역] :
                차변계정금액 = [세세부내역[1] for 일자별분개 in 전체분개
                          for 분개세부내역 in 일자별분개 if 분개세부내역[0] == "차변"
                          for 세세부내역 in 분개세부내역 if 세세부내역[0] == 입력계정]
                대변계정금액 = [세세부내역[1] for 일자별분개 in 전체분개
                          for 분개세부내역 in 일자별분개 if 분개세부내역[0] == "대변"
                          for 세세부내역 in 분개세부내역 if 세세부내역[0] == 입력계정]
                if sum(차변계정금액) > sum(대변계정금액):
                    print("차변잔액: ", abs(sum(차변계정금액)-sum(대변계정금액)))
                else:
                    print("대변잔액: ", abs(sum(차변계정금액)-sum(대변계정금액)))
    else:
        print("계정과목 없음")

print("\n@@@ 전기 @@@")

계정전기("현금")
print("*************************")
계정전기합계("현금")


# @@@ 전기 @@@
# [[['1월1일'], '차변', 100000000], [['1월2일'], '대변', 1000000], [['1월3일'], '대변', 1500000], [['1월4일'], '대변', 700000], [['1월7일'], '차변', 40000000]]
# *************************
# 차변잔액:  136800000

 

코드 설명

그림은 pythontutor.com 사용

1) 리스트를 이용하여 분개 일자별 거래를 입력

 

분개를 입력하는 순서를 아래와 같이 가정:

  • 일자 => 차변 => 계정과목 => 금액

위 가정을 토대로

  • [일자], [차변 분개 내용],  [대변 분개 내용] 을 각 일자별 분개 리스트에 하위 리스트로 넣는다.
  • 이 때 차변 먼저 기입하고 대변은 자웅에 기입하여 모든 분개 리스트의 순서를 일치시켜야 한다.
  • 또한 가독성을 위해 금액을 천단위로 언더바를 사용하였다.
분개_1월1일 = [["1월1일"],
           ["차변", ["현금", 100_000_000]],
           ["대변", ["자본금", 100_000_000]]
           ]

분개_1월2일 = [["1월2일"],
           ["차변", ["임차료", 1_000_000]],
           ["대변", ["현금", 1_000_000]]
           ]

2) 분개를 리스트 형태로 모두 입력 (분개장 생성)

  • 분개를 만들었으면 이를 리스트 형태로 관리한다. 변수명은 "전체분개"로 한다.
  • 이렇게 만든 리스트가 분개장의 개념이 된다. 이 때 튜플이 아닌 리스트로 생성해야 한다.
  • 튜플을 사용한다면 분개를 수정해야 할 경우 수정이 불가하기 때문이다.
전체분개 = [
        분개_1월1일, 분개_1월2일,
        분개_1월3일, 분개_1월4일,
        분개_1월5일, 분개_1월6일,
        분개_1월7일
        ]

3) 차변과 대변의 잔액 합계를 구하고 확인

cf. sum([1, 2])  == 3

분개_차변 = [분개세부내역[1][1] for 일자별분개 in 전체분개
         for 분개세부내역 in 일자별분개 if 분개세부내역[0] == "차변"]

분개_대변 = [분개세부내역[1][1] for 일자별분개 in 전체분개
         for 분개세부내역 in 일자별분개 if 분개세부내역[0] == "대변"]

print("@@@ 분개 @@@")
print("\n분개 차변")
print(분개_차변)

##########################################

print("\n분개차변합계: ", sum(분개_차변))
print("분개대변합계: ", sum(분개_대변))

#@@@ 분개 @@@
#
# 분개 차변
# [100000000, 1000000, 1500000, 700000, 5000000, 4000000, 40000000]
#
# 분개 대변
# [100000000, 1000000, 1500000, 700000, 5000000, 4000000, 40000000]
#
# 분개차변합계:  152200000
# 분개대변합계:  152200000

 

위 코드는 실제적으로 아래와 같다.

"일자별분개"와 "분개세부내역"은, 리스트에서 요소를 하나씩 꺼내어 대입하기 위해 for문 내에서 생성한 변수이다.

전체분개 = [분개_1월1일, 분개_1월2일]
for 일자별분개 in 전체분개:
	for 분개세부내역 in 일자별분개:
    	print(분개세부내역)
               
#['1월1일']
#['차변', ['현금', 100000000]]
#['대변', ['자본금', 100000000]]
#['1월2일']
#['차변', ['임차료', 1000000]]
#['대변', ['현금', 1000000]]

 

참고로 리스트 안에서 표현할 수 있는 문법은 기본적으로 다음과 같다.

[표현식 for 개별항목 in 반복가능항목 if 조건]

===========================

for 개별항목 in 반복가능항목
	if 조건:
    	표현식
	
===========================


#for문의 중복사용도 가능하다.

[표현식 for 개별항목1 in 반복가능항목1 if 조건1]
		for 개별항목2 in 반복가능항목2 if 조건2
    		...
    			for 개별항목n in 반복가능항목n if 조건n]

 

위에서 리스트를 반복문과 조건문으로 활용한 코드를 참고하여, 아래의 코드를 보자

분개_차변 = [분개세부내역[1][1] for 일자별분개 in 전체분개
         for 분개세부내역 in 일자별분개 if 분개세부내역[0] == "차변"]
         
         
# '전체분개' 안(in)에서
# 각각(for)의 '일자별분개(e.g. [분개_1월1일])'를 고르고, #
# 다시 '일자별분개' 안에서
# 각각의 '분개세부내역(e.g. [['1월1일'], ['차변', ['현금', 100000000]], ['대변', ['자본금', 100000000]]])'을 고르고,
# 각각의 '분개세부내역' 리스트 순서 중 첫 번째, 즉 [0]번 원소의 값이 '차변'이라면(if)
# '분개세부내역'의 두 번째[1]의 두 번째[1]를 리스트 순서대로 출력한다.

 

#전체분개
전체분개==[[['1월1일'], ['차변', ['현금', 100000000]], ['대변', ['자본금', 100000000]]], [['1월2일'], ['차변', ['임차료', 1000000]], ['대변', ['현금', 1000000]]], [['1월3일'], ['차변', ['차량운반구', 1500000]], ['대변', ['현금', 1500000]]], [['1월4일'], ['차변', ['급여', 700000]], ['대변', ['현금', 700000]]], [['1월5일'], ['차변', ['기계', 5000000]], ['대변', ['미지급금', 5000000]]], [['1월6일'], ['차변', ['매출채권', 4000000]], ['대변', ['매출', 4000000]]], [['1월7일'], ['차변', ['현금', 40000000]], ['대변', ['미지급금', 40000000]]]]

'기타 > 파이썬 회계' 카테고리의 다른 글

4. 거래분석  (0) 2022.09.01
3. 회계상 거래판별  (0) 2022.07.24
2. 확장된 회계등식  (0) 2022.07.23
1. 회계등식  (0) 2022.07.23
Comments