[DigiKey]複数のBOMファイルをまとめて、うまくbulk discountを活かしつつ一括で発注をかける

   2020/04/06

DigiKeyでは、BOMファイルから必要な部品をリストアップして自動的にカートに入れてくれる機能がある。
基板によっては100種類くらいの部品を使うこともあるから、この機能はマジで便利。
一つ一つ部品を検索してカートに入れていくとか正気の沙汰じゃねぇからな。

で、こいつはさらにbulk discountの提案も同時に行ってくれる。
これがまた便利で、何も考えなくても注文が安くなるように(しかももっと部品が手に入るように)仕向けてくれる。

例えば、とある集合抵抗を20個注文しようとしたとする。しかしこの部品には25個のbulk discountがあったようで、25個注文することを勧めてくる。こちらの方が安く、しかも5個多く部品が手に入る。

ただ、この機能をフルに活用するには、注文する部品が一つのBOMファイルにまとまっている必要がある。
例えば、CRCW0603100KJNEACというチップ抵抗をそれぞれ45個、30個要求するBOMファイルA,Bがあったとし、同時に発注をかけたい場合を考える。

CRCW0603100KJNEACの料金体系

二つのBOMファイルの部品を同時に注文するためには、それぞれのファイルごとにカートに入れる作業をしないといけない。
この時、まずファイルAを処理しようとすると、この抵抗を100個で注文することを勧められる(45個だと144円だが、100個だと132円に下がるため)。
ここでは、まだBで追加するからと提案を無視しておく。
次にファイルBを処理する。特に提案は表示されず、そのまま30個カートに入る。
結果、CRCW0603100KJNEACは75個の注文になっており、これは100個注文するより高くなってしまっている(カートからはbulk discountの画面を表示できない)。

じゃあAを処理するときに提案を受け入れ、抵抗100個をカートに入れたとすると、最終的にカートには130個の注文が入ってしまう。そんなにいらない。
この状態からカート内で部品数を調整するのは困難を極める作業である(必要な部品がそもそも多いのか、それとも余分に入ってしまっているのか、すべて手で計算しなおさなければならない)。

そもそも部品の種類やBOMファイルの数が多いと、「この部品はさっき提案を受けなかったから今回は受け入れて、こっちの部品はこのBOMファイルにしかないから提案を受け入れて...」とかやってられない。

BOMファイルをマージする機能が用意されていたら良かったが、そんなものはない。
ということで、うまいことBOMファイルをマージして、bulk discountを最大限活かせるような注文用BOMファイルをPythonで生成することにした。

Python3.x系で動く。

例えば、以下のようなBOMファイルがあったとする。

で、以下のコマンドを叩くと、下のようなcsvファイルが生成される。

CSVを一つにまとめたおかげで、CRCW0603100KJNEACは75個の注文になり、BOM Managerは「100個買え」という最適な提案をしてくれるはずである。

タイトルとURLをコピーしました

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

four × 2 =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください