728x90
반응형
728x90
반응형
728x90
반응형

키움 api에 접속이 잘 되던것이 갑자기 "타인계좌는 사용할 수 없습니다"라고 알림창이 뜰 때가 있다.

이번 시간에는 뜬금없이 나를 타인계좌를 이용하려는 범죄자로 만드는 이 메시지의 해결방법을 알아보자.

윈도우 화면 오른쪽 아래에 있는 api 아이콘을 선택 후 마우스 오른쪽 클릭해서 계좌비밀번호 저장을 클릭하면 계좌비밀번호를 입력할 수 있는 팝업창이 뜬다.

그런데 다음과 같이 자신의 계좌번호에 아무것도 표시가 되지 않을 때가 있다. 이럴 경우 "타인계좌는 사용할 수 없습니다."라고 뜨는 것이다. 

기존에 비밀번호까지 다 등록해서 정상적으로 접속하던 것인데 이렇게 갑자기 계좌번호가 사라진다.

이를 해결하기 위해서는 버전처리라는 것을 해야 한다.

 

이럴 때 API를 테스트할 수 있는 KOA StudioSA를 실행한 후 Open API 접속을 한다. 

로그인을 하면

버전처리를 받으라고 메시지가 나온다. 이 때 확인 버튼을 바로 누르지 말고 반드시 KOA StudioSA를 먼저 종료 후 버전처리 메시지의 확인 버튼을 눌러야 한다!!!

그리고 다시 윈도우 화면 오른쪽 아래에 있는 api 아이콘을 선택 후 마우스 오른쪽 클릭해서 계좌비밀번호 저장을 클릭한다.

그러면 자신의 계좌가 다시 나오는 것을 볼 수 있다.

이 때 비밀번호를 등록하고 다시 api 접속을 하면 정상적으로 접속되는 것을 볼 수 있다.

 

그런데 이렇게 버전처리를 받았는데도 안 될 경우가 있다.

그럼 최후의 방법으로 open api를 삭제하고 다시 설치해보기 바란다.

 

728x90
반응형
728x90
반응형

주식의 종가(Close) 데이터를 이용하여 기술적지표 중 가장 기본이 되는 이동평균선을 만들어보자.

 

주가 데이터는 FinanceDataReader 라이브러리를 이용해서 가져오도록 하자.

설치시 pip install FinanceDataReader가 아니라 pip install -U finance-datareader 를 입력해서 설치하자.

 

예전에는 야후 파이낸스에서 제공하는 pandas_datareader api를 이용했는데 미국 주식 데이터는 정확하지만 국내 주식은 데이터가 빠져있는 등 데이터를 가공하기에 적합하지 않다.

 

참고로 FinanceDataReader는 네이버 증권에 있는 주가 데이터를 가져온다.

 

다음과 같이 주가 데이터를 가져와보자.

DataReader의 첫번째 파라미터에는 원하는 종목코드를, 두번째 파라미터에는 연도를 입력하자.

import FinanceDataReader as fdr
df = fdr.DataReader("019175", "2020")
print(df)

Jupyter Notebook을 이용해서 실행하면 다음과 같이 조회된다.

 

종가(Close)를 이용하여 이동평균선 값을 구해보자.

df = df[['Close']]
df['MA5'] = df['Close'].rolling(window=5).mean() # 5일선
df['MA10'] = df['Close'].rolling(window=10).mean() # 10일선
df['MA20'] = df['Close'].rolling(window=20).mean() # 20일선
df['MA60'] = df['Close'].rolling(window=60).mean() # 60일선
df['MA120'] = df['Close'].rolling(window=120).mean() #120일선
print(df)

이번에는 종가의 변화율을 만들어보자.

df['Close_dpc'] = (df['Close'] / df['Close'].shift(1) - 1) * 100  #종가 변화율 일반식
df['Close_pct_change'] = df['Close'].pct_change() * 100 #종가 변화율 pct_change함수 사용
print(df)

변화율은 간편하게 pct_change() 함수를 이용하면 된다. 

기본값은 하루전 종가와의 변화율이고 며칠 전 종가와의 변화율도 pct_change()를 이용하면 간단하게 구할 수 있다.

df = df[['Close']]
df['Close_pct_change5'] = df['Close'].pct_change(5) * 100 #5일 전 종가와 당일종가의 변화율
print(df.tail(10))

2020-11-13 종가(138,500)와 5일전인 2020-11-06 종가(143,500)의 변화율을 구하면 -3.484321로 계산됨을 알 수 있다.

 

728x90
반응형
728x90
반응형

아나콘다에서 32비트로 가상환경을 만들었는데 32비트로 잘 만들어졌는지 어떻게 알 수 있을까?

 

우선 아나콘다 프롬프트로 들어간다. 

 

프롬프트 창에서 activate py35_32bit 입력하여 32비트 가상환경으로 전환한다.

 

32비트 가상환경 프롬프트 바로가기가 있으면 그걸로 들어가도 된다.

 

프롬프트 창에서 python을 입력 후 파이썬 명령어를 입력할 수 있는 상태가 되면

 

다음과 같이 입력한다.

import platform
print(platform.architecture())

프린트 한 내용을 보면 32비트인지 64비트인지 확인할 수 있다.

 

728x90
반응형
728x90
반응형

sql developer를 설치할 때 다음과 같이 jdk 경로(JDK home)를 입력하라는 창이 나오게 된다.

 

전자정부프레임워크 폴더 안에도 jdk가 있어 이 경로로 설정해보았다.

그런데 다음과 같이 오류가 발생한다.

 

unable to launch the Java Virtual Machine Located at path: jdk 경로.

위 경로 msvcr100.dll 로는 virtual machine을 실행할 수 없다는 얘기이다. C:\eGovFrame-3.9.0\bin\jdk8u242-b08\jre\bin에 가서 확인해보니 msvcr100.dll 은 없고 msvcr120.dll만 존재한다. 그래서 실행할 수 없었던 것이다.

 

 

sql developer 19 버전은 msvcr100.dll로 실행해야 한다. 혹시나 해서 내 pc에 처음 설정한 jdk 폴더로 들어가보았다.

이 경로에는 msvcr100.dll 파일이 존재한다.

 

그런데 이미 설정한 경로를 어떻게 바꿔야 할까?

 

다음 경로에 있는 파일을 수정해야 한다.

 

C:\Users\username\AppData\Roaming\sqldeveloper\19.2.1\product.conf

 

appdata 폴더는 숨겨져 있으므로 숨김항목을 풀고 확인해야 한다.

위 경로에 들어가서 product.conf 파일을 열어보자.

다음과 같이 처음 설정했던 경로가 sql developer javahome으로 설정되어 있다.

 

위 경로를 msvcr100.dll이 존재하는 jdk 경로로 변경해주고 다시 sql developer를 실행해보자.

정상적으로 실행되는 것을 확인 할 수 있다.

 

 

728x90
반응형

'DBMS > Oracle' 카테고리의 다른 글

[Oracle XE 18c] HR 스키마 생성하기  (0) 2020.12.01
728x90
반응형

다음 예제를 보자.

function object(a, b){
    var x = 10;
    var innerFunc = function(innerParam){ console.log((a + b) / (innerParam + x))};
    return innerFunc;
}

var pointer = object(2, 4);
pointer(2);

책에 보면 클로저를 설명하기 위해 실행 컨텍스트, 변수 객체, 스코프 체인, 스코프 프로퍼티 등등 처음보면 이해하기 어려운 내용들이 마구마구 나오게 된다.

이런 개념들을 알면 좋지만 몰라도 위 예제를 쉽게 이해할 수 있게 설명해보겠다.

 

전역 컨텍스트에서 object(2, 4)함수를 호출해 pointer 변수에 담고 pointer를 실행하고 있다. 하나 하나씩 나눠서 보도록 하자. 

object(2, 4)는 2와 4를 파라미터로 넘기기까지 한 함수(객체)이고 함수 내부에서 변수 x, innterFunc만 담은 함수(객체)라고 생각하자. 함수도 객체다. 그리고 object(2, 4)을 pointer 변수에 담는데 pointer변수에 위 객체의 메모리 주소를 담는 것이다. C언어를 배운 사람이라면 pointer 변수가 포인터 역할을 한다고 이해할 수 있을 것이다. 

 

pointer 변수에 (2)를 붙여 호출한다. 

결과값이 어떻게 될까?

우선 object 함수 a, b 파라미터는 2, 4로 넘어가고 pointer(2)를 실행할 때 x에는 10, innerParam에 2값을 넘김으로써 console창에는 (2 + 4) / (2 + 10), 즉 0.5가 표시된다.

 

여기서 pointer(2)를 실행하기 전까지 pointerobject() 안에 innerFunc를 계속해서 참조하고 있다. 함수객체니까 리턴값을 참조하고 있는 것이다. 

 

C언어에서 포인터를 배운 사람이라면 클로저를 금방 이해할 수 있을 것이다. 

 

그럼 클로저를 사용할 때 유의해야 할 사항들을 알아보자.

다음 예제를 보자.

function object(param){
    var num = param;
    return function(x){
        num += x;
        console.log('num: ' + num);
    }
}
var pointer = object(40);
pointer(5);
pointer(-10);

pointer 변수는 파라미터로 40을 넘기는 object함수 객체를 가리키고 있다. 같은 곳을 포인터로 가리키고 있는 것이다. 그러므로 pointer 변수를 계속 실행하면 num값이 계속해서 변한다. 

 

다음 유의해야할 경우를 보자.

function object(){
    var x = 1;
    return {
        func1 : function(){ console.log(++x)},
        func2 : function(){ console.log(--x)}
    };
};
var pointer = object();
pointer.func1();
pointer.func2();

반환되는 객체에 두 개의 함수가 정의되어 있는데, 두 함수가 모두 같은 변수 x를 참조한다. 그래서 각각의 함수를 호출할 때마다 x 값이 변화한다. 

 

다음으로 루프 안에서 클로저를 사용할 때 주의할 점이다.

function countingSec(x){
    for (var i = 1; i <= x; i++){
        setTimeout(function(){
            console.log(i);
        }, i + 1000)
    }
}

countingSec(3);

이 함수를 실행하면 1, 2, 3이라고 출력될 것 같다. 하지만 결과는 4만 연속 3번 출력된다. 왜냐하면 setTimeout에 들어가는 함수가 i를 참조하는데 이 함수가 실행되는 시점은 countingSec함수 실행이 종료된 이후이고, i 값은 이미 4가 된 상태이기 때문이다.

그렇다면 1, 2, 3으로 출력되게 하려면 어떻게 해야 할까?

function countingSec(x){
    for (var i = 1; i <= x; i++){
        (function(thisI){
            setTimeout(function(){
                console.log(thisI);
            }, thisI * 1000);
        }(i))
    }
}

countingSec(3);

즉시 실행 함수를 실행시켜 i값을 thisI에 복사해서 setTimeout 함수에 넘겨주면 원하는 결과를 얻을 수 있다.

728x90
반응형
728x90
반응형

이번에는 객체 리터럴 방식과 생성자 함수를 통한 객체 생성의 차이에 대해 알아 보겠다.

다음 예제를 보자.

var kim = {
    name : 'kim',
    age : 40,
    gender : 'man'
};
console.dir(kim);

function Person(name, age, gender){
    this.name = name;
    this.age = age;
    this.gender = gender
}

var man = new Person('kim', 40, 'man');
console.dir(man);

var woman = new Person('kim', 35, 'woman');
console.dir(woman);

kim은 리터럴 방식으로 생성한 객체이고 man과 woman은 Person이라는 생성자 함수로 객체를 생성하였다.

 

콘솔창에 나오는 것을 보면 리터럴 방식으로 생성한 객체는 모든 객체의 조상인 Object객체와 연결되어 있다. 반면 생성자 함수로 생성한 객체는 자신을 만든 생성자 객체인 Person.prototype을 참조하고 있음을 알 수 있다.

참고로 자바스크립트 함수는 함수가 생성될 때 constructor 프로퍼티 하나만 있는 객체를 생성해서 함수의 prototype과 연결한다. Person 생성자 함수를 통해서 만든 객체의 constructor 프로퍼티를 보면 Person 객체가 매핑되어 있음을 알 수 있다.

 

 

728x90
반응형
728x90
반응형

자바스크립트에서 함수를 호출할 때 인자값과 arguments 객체, this 인자가 내부적으로 전달된다. 이번 시간에는 함수 호출 패턴에 따라 this가 어떤 객체에 바인딩 되는지, 이를 이용한 코딩 방법을 알아보자.

 

1. 객체의 메서드를 호출할 때 this 바인딩

객체의 메서드를 호출할 때, 메서드 내부에 사용된 this는 해당 메서드를 호출한 객체로 바인딩된다.

var kimMan = {
    name : 'kim',
    myNameIs : function(){
        console.log(this.name);
    }
};

var otherGuy = {
    name : 'lee'
};

otherGuy.myNameIs = kimMan.myNameIs;

kimMan.myNameIs(); //kim
otherGuy.myNameIs(); //lee

 

myNameIs 메서드는 자신의 name 프로퍼티에 있는 값을 출력하는 함수이다. 객체 매서드에서 호출하는 경우 this는 호출한 객체를 가리킨다고 했으므로 kimMan.myNameIs()에서 this는 kimMan객체가 되어 kim이 출력되고, otherGuy.myNameIs()에서 this는 otherGuy 객체가 되어 lee가 출력된다.

 

2. 함수를 호출할 때 this 바인딩

함수를 호출할 때 this는 전역 객체에 바인딩 된다. 브라우저 환경에서 자바스크립트를 실행할 경우 전역 객체는 window가 되고 Node.js와 같은 자바스크립트 런타임 환경에서의 전역 객체는 global 객체가 된다.

다음 예제를 보면 함수를 호출할 때 this는 전역 객체 window에 바인딩 됨을 알 수 있다.

var t = 'this is javascript';
console.log(window.t); // this is javascript

var ref = function(){
    console.log(this.t);// this is javascript
}

ref();

 

 

다음 예제를 보면 내부함수도 함수 호출이므로 내부함수를 호출할 때 this도 전역 객체에 바인딩 된다. 

var name = 'windowMan';

var objectMan = {
    name : 'objectMan',
    func1 : function(){
        console.log('what is your name : ' + this.name); 

        func2 = function(){
            console.log('what is your name : ' + this.name);
        };

        func2();
    }
};

objectMan.func1();

 

위 함수를 호출하면 func2를 호출할 때 objectMan이 아닌 windowMan이 출력된다. 내부함수 호출도 this가 전역 객체에 바인딩 되기 때문이다. 

func2 호출할 때도 objectMan이 출력되려면 어떻게 해야할까?

var name = 'windowMan';

var objectMan = {
    name : 'objectMan',
    func1 : function(){
        that = this;
        console.log('what is your name : ' + this.name);

        func2 = function(){
            console.log('what is your name : ' + that.name);
        };

        func2();
    }
};

objectMan.func1();

 

위와 같이 하거나 다음과 같이 코딩하면 원하는 값을 출력할 수 있다.

var name = 'windowMan';

var objectMan = {
    name : 'objectMan',
    func1 : function(){
        console.log('what is your name : ' + this.name);

        func2 = function(){
            console.log('what is your name : ' + this.name);
        };

        func2.apply(objectMan);
    }
};

objectMan.func1();

 

728x90
반응형
728x90
반응형

자바스크립트에서 함수는 일반 객체처럼 값으로 취급된다. 

값으로 취급된다는 것은 어떠한 변수에 값을 담을 수 있는 것처럼 함수를 변수에 담고 함수가 값이 된다는 의미이다.

 

자바스크립트에서 다음과 같이 함수를 생성해보자.

function sum(x, y){
   return x + y;
}

var sum = function(x, y){
   return x + y;
};

위에 정의된 함수도 sum이라는 자바스크립트 변수에 담겨진 일종의 값이 되는 것이다. 자바스크립트의 함수는 변수에 담을 수 있다는 속성을 가지고 있다는 것인데 이는 다른 언어의 함수와 다른 점이다.

참고로 첫 번째 방법을 함수 선언문 방식이라 하고 두 번째 방법을 함수 표현식이라고 한다.

 

함수 표현식은 보통 함수 이름을 넣지 않는데 함수 이름을 넣는 경우를 보자.

var sum = function plusReturn(x, y){
   return x + y;
}

console.log(sum(1, 2)); // 3
console.log(plusReturn(1, 2));// 에러

함수 참조값을 가지는 sum으로 호출 했을 경우는 제대로 실행되지만 함수 이름으로 호출했을 때는 오류가 발생한다. 함수 표현식에서 사용된 함수이름은 외부에서 접근할 수 없기 때문이다. 

 

외부에서 접근할 수 없기 때문에 보통 함수 표현식에 함수 이름은 넣지 않는다. 그러나 함수 이름이 필요할 때가 있다. 바로 재귀함수다.

var refVal = function factorial(a){
   if(a <= 1){
      return 1;
   }
   return a * factorial(a-1);
};

console.log(refVal(3)); //6

 

다음 챕터에서는 함수 호출에 대해 자세히 알아보도록 하겠다.

728x90
반응형
728x90
반응형

키움 OpenApi+ 개발가이드에 보면 7.에러코드표가 있다. 

 

이 에러코드표를 파이썬에서 사용하려고 할 때 어떤 자료형이 좋을까? 튜플에 넣어서 사용하는 것이 좋을 것이다.

튜플 자료형에 대한 내용은 다음에 정리하도록 하겠다.

 

다음과 같이 err_code를 파라미터로 던지면 해당하는 튜플 값을 리턴하는 함수를 만들자.

def return_err_tuple(err_code):

    err_dic = {0:('OP_ERR_NONE', '정상처리'),
               -10:('OP_ERR_FAIL', '실패'),
               -100:('OP_ERR_LOGIN', '사용자정보교환실패'),
               -101:('OP_ERR_CONNECT', '서버접속실패'),
               -102:('OP_ERR_VERSION', '버전처리실패'),
               -103:('OP_ERR_FIREWALL', '개인방화벽실패'),
               -104:('OP_ERR_MEMORY', '메모리보호실패'),
               -105:('OP_ERR_INPUT', '함수입력값오류'),
               -106:('OP_ERR_SOCKET_CLOSED', '통신연결종료'),
               -200:('OP_ERR_SISE_OVERFLOW', '시세조회과부하'),
               -201:('OP_ERR_RQ_STRUCT_FAIL', '전문작성초기화실패'),
               -202:('OP_ERR_RQ_STRING_FAIL', '전문작성입력값오류'),
               -203:('OP_ERR_NO_DATA', '데이터없음'),
               -204:('OP_ERR_OVER_MAX_DATA', '조회가능한종목수초과'),
               -205:('OP_ERR_DATA_RCV_FAIL', '데이터수신실패'),
               -206:('OP_ERR_OVER_MAX_FID', '조회가능한FID수초과'),
               -207:('OP_ERR_REAL_CANCEL', '실시간해제오류'),
               -300:('OP_ERR_ORD_WRONG_INPUT', '입력값오류'),
               -301:('OP_ERR_ORD_WRONG_ACCTNO', '계좌비밀번호없음'),
               -302:('OP_ERR_OTHER_ACC_USE', '타인계좌사용오류'),
               -303:('OP_ERR_MIS_2BILL_EXC', '주문가격이20억원을초과'),
               -304:('OP_ERR_MIS_5BILL_EXC', '주문가격이50억원을초과'),
               -305:('OP_ERR_MIS_1PER_EXC', '주문수량이총발행주수의1 % 초과오류'),
               -306:('OP_ERR_MIS_3PER_EXC', '주문수량은총발행주수의3 % 초과오류'),
               -307:('OP_ERR_SEND_FAIL', '주문전송실패'),
               -308:('OP_ERR_ORD_OVERFLOW', '주문전송과부하'),
               -309:('OP_ERR_MIS_300CNT_EXC', '주문수량300계약초과'),
               -310:('OP_ERR_MIS_500CNT_EXC', '주문수량500계약초과'),
               -340:('OP_ERR_ORD_WRONG_ACCTINFO', '계좌정보없음'),
               -500:('OP_ERR_ORD_SYMCODE_EMPTY', '종목코드없음')
               }

    tuple = err_dic[err_code]

    return tuple

호출하는 쪽에서는 다음과 같이 사용할 수 있을 것이다.

    def comm_connect(self):
        self.dynamicCall("CommConnect()")
        self.login_event_loop = QEventLoop()
        self.login_event_loop.exec_()
        
    def _connect_slot(self, err_code):
        print(return_err_tuple(err_code)[1]) #정상처리
        self.login_event_loop.exit()        

키움 서버 접속 이벤트가 발생하면 _connect_slot 함수를 호출할 것이고 정상접속되면 err_code에 0 코드를 받아와서 0에 해당하는 튜플 값을 리턴할 것이다. 여기서는 1값을 호출했으므로 '정상처리'라고 log창에 표시될 것이다.

728x90
반응형
728x90
반응형

재무회계를 공부하면 대부분의 분개처리들이 회계기간(보통1년)동안 합리적으로 경영성과를 배분하는 작업의 연속이라는 것을 알게 된다. 기업의 거래는 귀속시점이 명확히 구분되어 거래가 발생될 때마다 기록하면 수정할 필요가 없지만 어떤 거래는 연속적으로 발생되어 귀속기간을 나눌 필요가 있게 된다. 그래서 보고기간이 종료되더라도 회계기간 동안의 수익 비용을 확정하는 장부 마감 절차가 필요하다. 

이렇게 보고기간 종료 후 결산수정분개 처리를 하는데 이런 결산수정분개가 필요한 이유는 회계가 현금이 유입, 유출되었을 때 인식하는 것이 아니라 수익은 실현되었을 때, 비용은 발생되었을 때 인식해야 하기 때문이다.

 

결산수정분개 처리 중 선급비용, 선수수익, 미지급비용, 미수수익 회계처리 방법에 대해 알아보자.

 

선급비용

당기에 비용으로 계상한 항목 중 차기 이후에 귀속되는 금액은 결산시 당기의 비용에서 차감하고 이연시키는 계정이다. 대표적으로 선급임대료, 선급보험료가 있다.

2020년 7월 1일에 1년동안 건물을 임대했다고 하자.

 

2020.7.1 : 차변 임대료 1,200,000 대변 보통예금 1,200,000

 

건물을 사용할 수 있는 기간은 2021년 6월까지인데 당기에 비용을 모두 인식하면 당기에 비용을 과대계상한 것이 된다.

그러므로 2020년 말에 결산수정분개가 필요하다.

 

2020.12.31 : 차변 선급비용 600,000 대변 임대료 600,000

 

차기에 귀속되어야 할 비용을 선급비용이라는 자산계정을 이용하여 차기로 이연시켜야 한다. 차기년도 6월까지 보험 혜택을 받을 권리가 아직 남아 있으므로 자산계정이 되는 것이다.

 

선수수익

이번에는 거꾸로 1년동안 임대를 해줘야 하는 입장에서 살펴보자. 

 

2020.7.1 : 차변 보통예금 1,200,000 대변 임대료 1,200,000

 

이렇게 당기에 수익을 모두 인식하면 당기에 과대계상한 것이 된다.

그러므로 2020년 말에 결산수정분개가 필요하다.

 

2020.12.31 : 차변 임대료 600,000 대변 선수수익 600,000

 

차기에 귀속되어야 할 수익을 선수수익이라는 부채계정을 이용하여 차기로 이연시켜야 한다. 차기년도 6월까지 임차인에게 건물을 사용하도록 할 의무가 남아 있으므로 부채계정이 되는 것이다.

 

미지급비용

당기에 현금이 지출되지는 않았지만 당기에 귀속되는 것은 당기에 비용으로 인식해야 하는 것들이 있다. 차입금에 대한 이자비용을 생각해보자.

2020년 10월 1일에 1,000,000 은행에서 차입하고 12% 이자지급조건으로 원리금은 차기년도 9월 30일에 지급한다고 하자.

 

2020.10.1 :  차변 현금 1,000,000 대변 단기차입금 1,000,000

 

2020.12.31 : 차변 이자비용 30,000 대변 미지급비용 30,000

당기에 3개월동안 차입금을 이용하는 댓가로 30,000의 이자비용을 계상하는 것이다.

차기년도 9월30일에는 120,000원을 현금으로 지급하면서 차기년도 9개월에 해당하는 90,000원을 비용을 계상하고 전년도에 인식한 30,000원의 의무도 사라지므로 다음과 같이 분개를 하면 된다.

 

2021.9.30 : 차변 단기차입금 1,000,000 대변 현금 1,120,000

                      이자비용 90,000

                      미지급비용 30,000

 

미수수익

이번에는 거꾸로 돈을 대여한 입장에서 살펴보자.

 

2020.10.1 : 차변 대여금 1,000,000 대변 현금 1,000,000

 

아직 이자를 현금으로 수취하지 못했지만 발생주의 개념에 의하여 당기에도 수익을 인식해야 한다.

그러므로 당기말에 다음과 같이 분개처리 해야 한다.

 

2020.12.31 : 차변 미수수익 30,000 대변 이자수익 30,000

 

 

4가지 결산분개과정을 보면서 회계는 발생주의 원칙에 의해 처리된다는 것과 자산은 내가 뭔가 이용할 수 있는 권리이고 부채는 내가 무엇을 이용할 수 있게 해줘야 하는 의무라는 것을 알 수 있다.

 

이 개념이 중급회계, 고급회계를 공부할 때까지 가장 기초가 되는 개념이므로 이를 바탕으로 다양한 거래유형을 배워나가도록 하자. 

 

728x90
반응형

+ Recent posts