dポイントプレゼントキャンペーン実施中!

現在、簡易的な在庫管理システムを作成していますが、客先からの受注、業者への発注、
業者からの仕入、客先への出荷、それぞれの関係でどのシステムを構築したら良いか?で迷っています。


というのも、受注と出荷、発注と仕入というのは必ず紐付く為、データの相殺は簡単かと思われますが、
客先からの受注の単位と、業者への発注に関しては、同じ案件でのものであっても内容は異なる事から、
受注と業者への発注の紐付けをしない限り、出荷と同時に仕入で入ってきた在庫を減らす事はできないかと思われます。

但し、共通部品や先行手配であった場合、必ずしも受注と紐付ける事は不可能かと思われます。


そこで、上記のように、紐付ける事ができなかった場合でも、出荷と同時に仕入た在庫を引き落とすという
ような事は可能なのでしょうか?

やはり売上データは受注データを使って打ち消しを行い、出荷データは発注データを使って打ち消しを
行うように別々でやらなければならないのでしょうか???

一般的にはどのようにするのか?を教えて頂ければと思います。

よろしくお願いします。

A 回答 (7件)

No.3で回答したものです。



補足を読みました。

要するに、パッケージ化された商品(たとえば、筆箱セット)を出荷した際に、その筆箱セットを構成する各々の商品(たとえば、鉛筆、キャップ、ケースなど)も自動的に在庫から引き落としたいという意味ですかね?

だとするならば、まず、商品テーブルに商品区分(単品商品かパッケージ商品かを区別する区分)を追加して、さらに、新たにパッケージ構成テーブルを追加すれば良いのでは?

たとえば、No.3から修正したテーブルのイメージはこんな感じになります。

・仕入テーブル(発注日、仕入日、商品コード、業者コード、数量)
・出荷テーブル(受注日、出荷日、商品コード、お客様コード、数量)
・在庫テーブル(商品コード、仕入日、数量)

・商品テーブル(商品コード、商品区分、商品名、単価) ← 変更
・パッケージ構成テーブル(商品コード、構成番号、構成商品コード、構成数量) ← 追加

・業者テーブル(業者コード、業者名、住所、電話番号)
・お客様テーブル(お客様コード、お客様名、住所、電話番号)

この場合、出荷の際に商品テーブルの商品区分を参照して、パッケージ商品の場合はパッケージ構成テーブルから商品コードに紐付く全ての構成商品コードを取得して、構成商品コード毎に在庫から構成数量を引き当てる形になると思います。
    • good
    • 0

昔某ERPの販売に携わっていたことがありました。


在庫管理システムは簡単ではないと思いますよ。

>受注と出荷、発注と仕入というのは必ず紐付く為、データの相殺は簡単かと思われますが、
紐づくのは確かですが1:1と限らないのが面倒です。
1つの受注(発注)に対しn件出荷(仕入)というケースがあります。例を挙げますと

100個の受注を受けた。しかし在庫は50個しかない。お客さんはその50個だけでもすぐに欲しいといったので50個出荷した。残り50個は後日出荷とした。
このケースでは面倒ですが受注を50個×2回に入力しなおして出荷と1:1対応させることは可能ですが、現場はやりたがらないでしょうね。(面倒なうえにミスも増えるでしょうし。)

100個を発注したがそのうち5個は不良品だった。このため仕入を95で計上し残りを送りなおしてもらうことにした。(こっちも発注を分割して入力しなおすことは可能ですが・・・)


>客先からの受注の単位と、業者への発注に関しては、同じ案件でのものであっても内容は異なる事から、受注と業者への発注の紐付けをしない限り、出荷と同時に仕入で入ってきた在庫を減らす事はできないかと思われます。

このあたりは私の担当製品では割り切っていて、最小単位での在庫管理をしていました。1ケース24缶の清涼飲料水があったとして、これを24缶という最小単位の方で在庫数を管理していました。細かくやると何ケース+あまり何本になるのでしょうがそこまではしていませんでしたね。
このあたりは出荷を行う現場では可能な限りケースで出荷するという暗黙のお約束だったかなと思います。

>但し、共通部品や先行手配であった場合、必ずしも受注と紐付ける事は不可能かと思われます。

不可能ですね。この概念(受注に対応しない在庫がありえる)の時点で、受注と在庫(在庫数)を紐づけるという考えはムリだと思います。受注と出荷、発注と仕入(入荷)はそれぞれ紐づきますが、在庫数は受注や発注とは紐づきません。

>そこで、上記のように、紐付ける事ができなかった場合でも、出荷と同時に仕入た在庫を引き落とすというような事は可能なのでしょうか?

ですので、在庫数は受注や出荷とは独立したデータとし、出荷した数量を在庫数から差し引くというような考えになります。

>やはり売上データは受注データを使って打ち消しを行い、出荷データは発注データを使って打ち消しを行うように別々でやらなければならないのでしょうか???

売上データには当然対応する受注があるはずですが(ただし1:1の関係とは限らない)、前述のような受注と無関係な在庫の概念がある時点で出荷データと発注データの紐づけは困難です。できるとしたら受注を受けてからそのために発注するケースのみです。

一般的かはわかりませんが私の担当したシステムでは
受注、出荷、売上が1:m:nの関係で表現され、発注、入荷、仕入もやはり1:m:nの関係で表現され、在庫数はそれらとは別管理(紐づけなし)となっていました。
また、受注時に現在ある在庫から出荷の予約として受注数分を在庫引当で予約するようにもなっていました。

また在庫数は最小単位で管理し、発注(や受注)をケース単位で行っても、在庫の増減は最小単位に換算して行っていました。このため商品ごとに1ケース=最小単位何個分というマスタが存在していました。

補足にある筆箱セットの例に対しては部品表のような定義があり、1筆箱セット=鉛筆5本+消しゴム1個+筆箱1個のように定義され、それをもとに在庫を引き落としていました。
(正確には、事前に組立の入力があり、そこで筆箱セット100個の在庫を増やし、鉛筆500本+消しゴム100個+筆箱100個を在庫から引き落とすというような変換作業を行っていました。)

各処理の取り消しなども考えると在庫管理+周辺システムはかなり複雑です。
特定のお客様からの受託開発ならどの程度に割り切るかも重要かと思います。
    • good
    • 0

>筆箱セットのようにパーケージ化された物を受注した


>にも関わらず、自社の仕入は鉛筆、キャップ、ケースと
>仕入を行い、それをそのまま出荷したような場合
仕入れを別々にしたとしても、それをそのまま出荷しない
様にすれば良いだけでは?
福袋やBTOパソコン等の様に、セット商品の価格が商品個別
の価格の合計になるとは限りません。
鉛筆、キャップ、ケース等の個別商品から筆箱セットへの
商品の変更処理を行い、その時に在庫数の変更処理を行えば
良いと思います。
    • good
    • 0

>受注と業者への発注の紐付けをしない限り、...


なぜ、受注と発注を紐付けしないといけないのか
良くわからないのですが....?
1.未出庫の受注データがなければ処理終了
2.在庫があればそれを出荷し、在庫数から引いた
後、1.に戻る
3.在庫がなければ不足分を業者に発注
4.業者からの発注分が入荷したら、在庫数に追加
5.1.に戻る
在庫管理に関する限り問題になるのは、受注分の
商品在庫の有無だけで、それがどの発注で入荷した
分かを紐付ける必要はない様に思います。
#現在庫数と未出荷数、発注済みで未入荷分の個数
#から、不足分の有無を計算して必要に応じて追加
#発注を行う発注管理システムは別途に必要です。

>客先からの受注の単位と、業者への発注に関しては、
これは、荷姿の違いの事でしょうか?
#商品が10個入りの紙箱が4個ずつ1ケースに梱包されて
#いて、業者への発注はケース単位。
#客先からの受注はケース単位も紙箱単位も可能
その場合、ケース単位、紙箱単位、バラ個数単位での
在庫数管理が必要になります。
#ケースを開封して紙箱単位にする処理も必要
    • good
    • 0
この回答へのお礼

don_go様、ご回答ありがとうございます。

kirakirasmaily様への回答にも記載させて頂きましたが、受注したものと、仕入れたものが同じものであれば、
上記の考え方で全く問題ないかと思われます。

それが異なった場合では、別々の画面を作成し、出荷は出荷、仕入の消しこみは消しこみという画面を作成
しなければならないでしょうか、、、

わかりにくくて申し訳ありません。

よろしくお願いします。

お礼日時:2013/04/03 09:48

まず最初に、在庫が増えたり減ったりするのは仕入と出荷のタイミングだけですよね?



・在庫がなくなってきたので業者(仕入先)から商品を仕入れた→在庫が増える
・得意先(お客様)に商品を出荷した→在庫が減る

だとするならば、単純に在庫テーブルで商品毎の在庫を管理して、仕入のたびに在庫をインクリメント(足し算)、出荷のたびに在庫をデクリメント(引き算)すれば良いのでは?

この場合、少なくとも、以下の6つのテーブルが必要になると思います。

・仕入テーブル(発注日、仕入日、商品コード、業者コード、数量)
・出荷テーブル(受注日、出荷日、商品コード、お客様コード、数量)
・在庫テーブル(商品コード、仕入日、数量)
・商品テーブル(商品コード、商品名、単価)
・業者テーブル(業者コード、業者名、住所、電話番号)
・お客様テーブル(お客様コード、お客様名、住所、電話番号)

※1)仕入テーブルの仕入日は、発注の段階ではNULLまたは空白が入り、仕入が完了した時点で仕入日が入ります。
※2)出荷テーブルの出荷日も、受注の段階ではNULLまたは空白が入り、出荷が完了した時点で出荷日が入ります。

ちなみに、単純に在庫があといくら残ってるかを管理したいだけなら、在庫テーブルで仕入日を管理する必要はないと思います。
    • good
    • 0
この回答へのお礼

kirakirasmaily様、ご回答ありがとうございます。

細かな説明まで頂き、本当にありがとうございます。

ただ1点、受注したものと、仕入れたものが同じものであれば、上記の考え方で全く問題ないかと思われますが、
仮に筆箱セットのようにパーケージ化された物をを受注したにも関わらず、自社の仕入は鉛筆、キャップ、ケースと
仕入を行い、それをそのまま出荷したような場合は、出荷=それらの鉛筆、キャップ、ケースを自動で引き落とす
事は難しいかと思われます。

また、受注を待ってからそれらの鉛筆、キャップ、ケースを発注するとは考えにくく、受注番号さえ発注、仕入
データに忍ばせておけば、出荷と同時にそれらの引き落としが自動でできるはずですが、それも難しいかと、、、

上記のようなケースを考慮した場合、やはり出荷は出荷で受注の消しこみだけを行い、それとは別画面で仕入れた
物(鉛筆、キャップ、ケース)の数量調整を行わなくてはならないでしょうか?

わかりにくくて申し訳ありません。

お礼日時:2013/04/03 09:43

内向き と 外向き で区別する


顧客から受注 在庫から出荷 = 外向き
業者へ発注 商品の入荷 = 内向き

外向き は 出荷可能な在庫が
有るか無いかが問題であってその先の連動は考慮しない
どの時点 どういう状態 を「在庫」と考えるか確定させる
ある時点 ある状態 を在庫1とカウントして処理して
受注 引当 在庫管理を行う

内向き は 出荷可能な在庫のために
必要十分なものを用意しておくために機能させる
業者との間の 発注-入荷 に利用する 
対業者用の 製品コード 在庫数 を設定する

表用と裏用の二重にして
別の製品 別の在庫 として分離する


具体的にはどういう商品なのかによる
どういうスパンで商品が動くか
どういう管理をしたいか
質問からは今ひとつ話が見えない
    • good
    • 0

>>一般的にはどのようにするのか?を教えて頂ければと思います。



私も詳しくありませんが、基本は人間の手で在庫管理、発注管理等を行う場合にやっている作業を、順番にプログラミングすることになると思います。
    • good
    • 0
この回答へのお礼

lv4u様、ご回答ありがとうございます。
ご指摘頂いたように、人間の手作業をシステム化する事が前提ですが、少しでもその作業を
減らしたいと考えています。
ありがとうございました。

お礼日時:2013/04/03 09:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!