事業内容
同社のビジネスはコンピューター機器の修理に基づいており、単純化した形では非常に単純に見えます。
- 顧客はラップトップをサービスセンターに持ち込みます。
- ラップトップを検査し(修理を開始するためのベンダー要件がいくつかあります)、文書を作成して、サービスセンターの修理サイトに送信します。
- 作成されたアプリケーションによると、管理部門は、修理を実行する可能性、在庫を使用する可能性、またはコンポーネントを注文する必要性を決定します。
- 修理に必要な詳細が倉庫に表示された後、マネージャーはアプリケーションを「実行中」の状態に移行します。
- ラップトップと修理に必要なスペアパーツが修理現場に到着します。
- エンジニアが修理を行い、壊れた部品を作業員に交換します。
- ラップトップはサービスセンターに戻り、クライアントに修復の完了が通知されます。
- 機器は顧客に返されます。
株式に関連する作業の一部を検討します。
倉庫
すべてのサービスセンター用のすべての部品を受け取る中央倉庫があり、その後修理の要求に応じて部品が配布されます。
一部のサービスセンターは会社の関連会社であり、他のサービスセンターは承認され独立した組織です。
保証と有料修理
支払い済みのものはすべて非常に簡単で、クライアントに予備部品と作業コストを「販売」するか、パートナーがそれを行います。
保証修理の場合、ベンダーから部品を「引き換え」、修理を行い、壊れた部品をベンダーに返品します。その後、以前に購入した部品の修理と費用の支払いを受け取ります。 しかし...ベンダーは、部品の購入から修理までの期間、および欠陥部品の返品までの期間を設定します。 満たされていない-結構。 そのため、ロジスティクスの要件は非常に厳しく、部品の注文から修理までの間に数日かかります。
もちろん、すべての詳細を返す必要はないため、さらに混乱します。 部品は必ずしも必要ではなく、場合によっては「コンポーネントの修理」があります。 在庫の「実行中」部品の必須の可用性には要件があります。
そもそも
最初は何もはっきりしていなかったので、私たちのグループは椅子から立ち上がって、会社のすべての部門を歩き回りました。
その結果、ほとんどすべての内部および外部プロセスの小さなA3スキームができました。
コア物流
倉庫管理システムは、以下の小さなロジックセットに基づいています。
- 部品のリスト、すべてのサービスセンターのリスト、部品の動きのリストを保持する必要があります。
- 反復運動アクションを実装します。
4つの操作で十分です。
- 「Coming」(+ Qty);
- 「費用」(-数量);
- 「負債の作成」(数量);
- 「戻る」(数量+)。
最初の2つの操作は非常に論理的で、倉庫に「来て」棚に置きます。 部品がサービスセンターに送られると、「費用」が作成されます。
残りの2つの操作が必要です。サービスセンターに部品を送った後、機器から取り外された壊れた機器を返品することが期待されるためです。 壊れた部分が届くとすぐにサービスセンターの借金を返済することは論理的です。
数字の魔法
ロジスティクスの仕事の中心である最も興味深い部分、つまり可動部品を考えてみましょう。
システム内のどの部分にも一意の識別子SPI( S pare P art I nformation)があります
出入りは簡単な操作です。 倉庫に行くものはすべて部品の数を増やし、残っているものはすべて減少します。
これにはQtyRestフィールドで十分です。
レポートのために、スラットに何個のパーツが来たかを知ることは素晴らしいことです。 さらに、その期間の在庫残高の形成のために、実行された操作の時間を知る必要があります。
数量、EventDateフィールドが表示されます
ほとんどの場合、現在のデータに関心があるため、このスキームには「速度」がありません。 はい。QtyRest= 0の操作では、作業する意味もありません。
EventDateフィールドをIsOpen、OpenDate、CloseDateに置き換えます(IS NULL)
2つの操作のロジックは次のように記述できます。
教区は新しいレコードを追加します。これは、到着した詳細の数( Qty )と残っている詳細( QtyRest = Qty )を示します。 操作は「オープン」です、なぜなら ゼロ以外の剰余がある( IsOpen = true )
また、消費によって新しいレコードが追加されます。このレコードは、残されているパーツの数を示します( -Qty )。 否定演算( QtyRest = 0 )の剰余はありません。 経費トランザクションは、 収入の数量( QtyRest )を減らします。
操作QtyRest = 0の場合、 IsOpen = false 、 CloseDate = GETDATE()を 「クローズ」します。
負のバランス( QtyRest <0 )になることも不可能です。これは論理的ではなく、システムで他の目的で使用されます。
特に注意すべきこと:
- 操作はすべて新しいレコード(INSERT)です。 日付に基づいてかなり複雑なレポートを作成できるため、これは重要です。
- IsOpen = true操作(一般的な履歴と比較して比較的少ない操作)のみを使用しているため、パーティション分割を使用できます。
- 消費可能な操作は、開いている着信操作に十分な数のパーツがある場合にのみ実行できます。
継続する。
他の2つの操作「債務の作成」と「返済」、「倉庫のタイプ」の概念、および「倉庫間を移動する」アクションを見ていきます。