이번에 재고관리 프로그램을 계획중입니다.
예전에도 SCM을 만들다 선입선출 때문에 머리가 아픈적이 있었는데요...ㅜㅜ
다시 하려니 또 머리가 아파옵니다....
일반적인 방법으로는 어떤것들이 있는지 궁굼합니다.
지금 만들려는 프로그램 특성상 반품 같은 경우도 자주 있다고 하는데요.
제가 생각하는 테이블은 아래와 같습니다.
------------------------------------------------
입고 table
------------------------------------------------
idx 품목 수량 금액
100 A 3 100
101 A 5 110
102 A 4 120
103 A 4 130
104 A 2 125
105 A 2 140
106 A 7 160
------------------------------------------------
출고 table
------------------------------------------------
idx 품목 수량
200 A 4
201 A 10
202 A 9
------------------------------------------------
출고 입고 매칭 table
------------------------------------------------
출고idx 입고idx 수량 금액
200 100 3 300
200 101 1 110
201 101 4 440
201 102 4 480
201 103 2 260
202 103 2 260
202 104 2 250
202 105 2 280
202 106 3 480
위와 같은 구조로 생각하고 있습니다.
출고 수량에 따라 입고된 순서로 수량을 빼는거죠.
출고idx 201번에서 반품이 들어왔을 경우
201 101 4 440
201 102 4 480
201 103 2 260
이 3가지 입고 목록에서 반품된 수량 만큼 입고된 순서대로 금액을 계산하여
입고 table에 다시 insert를 해주는 방식으로 생각하고 있습니다.
예로 6개가 반품이 들어왔을 경우
------------------------------------------------
입고 table
------------------------------------------------
idx 품목 수량 금액
107 A 4 440108 A 2 240
이와 같이 재입고를 하던지
입고table 해당 idx의 남은 재고 수량을 늘려주던지 방법이 있겠죠.
이럴때 발생되는 문제되는 점이나
아님 다른 좋은 방법이 있나요?
고수님들의 의견 부탁드립니다.
Comment 4
-
건우아빠
2014.04.01 22:33
-
조진원
2014.04.02 10:43
답변 감사합니다~~
그런데 남은 재고를 계산하고 남은 재고는 최근 입고분으로 본다는 말이 잘 이해가 안되네요.ㅜㅜ
반품을 최근 입고로 잡는 다는 말씀이신지요? 설명 부탁드릴께요. 죄송합니다.ㅜㅜ
-
건우아빠
2014.04.02 11:53
매출반품이 어느 시점의 매출인지 또 어느 시점의 매입분인지를 알기가 어렵다는겁니다.
결국은 최근 입고분에 대한 반품으로 정하자는거죠.
선입선출을 정확히 할려면 판매시점에 어느건의 입고 분인지 반품도 어느 시점의 판매에 대한 반품인지를 관리 해야 하는데 이경우는
전반적인 시스템 변경이 불가피 해집니다. 자동차나 가전같이 생산 번호 등을 가지도 판매가 처리가 된다면 어느 명확한 원가 관리가 되지만 이런 시스템이 아닌경우는 원가 적용의 룰은 정한 룰에 따라 처리가 됩니다. 이때 룰을 최근 매입분으로 보자는 거구요...
선입선출은 입고분이 어느 시점을 구분하고 원가를 산정하는 방법입니다.
반품의 비중과 재고원가에 미치는 영향이 적다면 남아있는 재고의 원가는 최근 매입분을 적용하는 방법 물론 수량에 따를 히스토리 적용으로 하시면 큰 무리는 없지 않을까 생각 됩니다.
또한 매출 원가도 이 방법을 통해 회계 방식으로 계산하면 원가도 선입선출 방식으로 계산이 되구요...
매충원가 = 기초재고원가 + 당기 매입원가 - 기말 재고원가
원가를 리터하는 함수를 만드셔서 이용하는게 쿼리를 짜기가 수월할듯 합니다..
-
맨즈밤
2014.04.02 09:39
단순히 재고수량에 대한 처리는 선입선출로 할수있습니다. 시간순서상에 따라 입고,출고를 매칭시키면 되니까요. 뭐 이건 선입선출이라고도 말할수 없지요. 계산하는 방식이 아닌 저렇게 매칭테이블을 만들게 되면 중간에 수정이 일어날경우 그 이후 자료를 모두 수정해주어야하게 됩니다. 계산하는 방식으로 바뀐다 해도 수년치 입출고 수불을 모두 계산하는것도 무리입니다. 때문에 년마감, 일마감등을 가져가야 할듯 하구요.
더큰 난관은 단가가 들어갔을때입니다. 출고시 그게 어떤 단가인지, 반품은 또 어느단가인지 알기 어렵기 때문에 사실상 선입선출에 의한 재고단가 평가 방식은 일부 특수한 분야에만 존재하는것으로 알고있습니다. 선입선출은 제조일자에 따른 수불처리, 고객 마일리지 차감정책등에 적용될수 있어도 일반제조업체에서 재고금액 산출방식에는 사실상 쓰기 어렵습니다.
우선 마감을 가져갈것인지, 단가를 가져갈것인지, 재고자산평가방법은 무엇인지등에 관한 업무정의가 필요할듯 보입니다.
또 굳이 선입선출방식을 한다면 건우아빠님 말씀처럼 역선입선출방식도 고려해야 할듯 합니다.
선입선출방법을 하실려는 목적이 보통 재고금액을 구할려고 하는 이유입니다...
매출원가를 선입 선출로 한다는건 매출시점에 원가를 적용하지 않으면 상당히 난해해집니다.
이런 츨면에서 반품이 어느 원가에 적용된 판매건이냐를 알기가 어렵 습니다. 물론 lot번호나 시리얼번호등으로 판매 정보를 알수 있고 그시점의 원거 적용된 입고분을 알수 있다면 그 루틴으로 입고 처리 하셔도 되지만 이걸 모른 다면 굳이 반품을 입고로 잡으실 필요가 있을까 생각 됩니다. 결국 임으로 잡으신 다는 의미이고 이게 어떻게 잡던 코딩하는 사람 맘이죠...
그런 츨면에서 저라면 남은 재고를 계산하고 남은 재고는 최근 입고 분으로 보는 방법으로 역 선입선출 개념으로 하시는것도 좋을듯 합니다. 각격의 변동성이 있을 경우는 특히 반품 처리에 대한 부분이 상당히 문제가 많습니다.