私はそれを解決する方法のアイデアを持っているシナリオがありますが、私はそれを必要以上に複雑にしないようにしたいと思います。私はUbercartに不慣れで、Drupal一般に(ただし、ソフトウェア開発/データベースでの経験があります)。
一般化:ユーザーが製品を構築して製品を注文するために選択できる原材料の在庫レベルを管理する必要があります。特定のシナリオを以下に示します。
サイトでは、ユーザーはバッグをカスタマイズできます。具体的には、バッグの各モデルは4つの部分に分かれています。ユーザーはパーツごとに特定のファブリックを選択できますが、どのファブリックを選択するかはモデルによって異なります。
例。ユーザーは、bag1のパーツにはファブリックA、B、C、Dを選択し、bag2にはファブリックC、D、E、Fを選択できます。
生地レベルで在庫を管理する必要がありますが、カートには最終的にカスタマイズされたバッグレベルのみが表示されます。
したがって、十分な注文がファブリックCを使用してbag2で行われ、不足する場合、オプションのファブリックCはbag1で使用できなくなります。
Ubercartで上記を直接実行することはできないように思えるので、私の考えは補助データベースを使用することです。しかし、おそらくそれは構成および/またはいくつかの追加モジュールで行うことができます-私の最初の質問は、コードのカスタマイズ/追加のデータベースを行う必要なしにこれをどうにかして構成できるかどうかです。
ユーザーがバッグモデルを選択できる特定のモジュールを作成し、パーツのファブリックを選択して、現在カスタマイズされているバッグを表示することを計画しています。
2番目の質問は、追加のデータベースが必要であると仮定した場合、以下の解決策は良い解決策ですか、それともおそらく必要な作業が少ない方法があるでしょうか。
編集:これは、Drupalの外部の補助データベースに依存する必要がない方法です。
このアイデアでは、製品キットの数は豊富になるので、これらをコードで生成する必要があります。サイトのマネージャーは、Drupalファブリック、バッグモデル、バッグモデルパーツを使用して簡単に管理できます。サイト管理者は、もう少し面倒ですが、バッグを追加することもできます。 Part-Fabric。製品キットを生成するコードは、Drupalでこのデータを見つけ、Bag-Part-Fabricから画像をフェッチして、各製品キットの最終的な画像を生成します。
製品キットを生成するコードは、サイトマネージャーが時々実行するためにトリガーできるモジュールであると思います(新しいバッグパーツファブリックのバッチが作成された後)。
バッグをカスタマイズするためにサイトにアクセスするユーザーのフローは、次のとおりです。#バッグモデルパーツのいずれかを選択します#そのモデルのバッグモデルパーツごとに、可能性の中から1つのファブリックを選択します。 Bag-Part-Fabricのセットがあります。ユーザーがカートに追加したとき/場合、これらを使用して特定のカスタマイズされたバッグ製品キットを見つけ、カスタマイズされたバッグ製品キットをカートに入れます。
これは問題ありませんか?より簡単な、またはより良いものはありますか?
Ubertcartと補助データベースを使用してシナリオを解決する方法に関するアイデア。
製品クラスの作成:生地とバッグモデル
次の製品キットを作成します:バッグバッグは最終構成です(例:3つのモデル、10のファブリック、4つのパーツの場合、630バッグ)
Drupal以外の補助データベースを作成します。
サイトの所有者による
ユーザーはバッグモデルの中から選択します
ユーザーがカスタマイズするパーツを選択します
ユーザーがパーツの生地を選択します
カートに追加(ユーザーが各パーツをカスタマイズしたら)
チェックアウト
既存のモジュールと、おそらく小さなカスタムコードを使用すると、現在提案されているソリューションよりも優れたワークフローで何かを実行できるはずです。
おそらくすでにuc_stockを見たことがあるでしょう。従来の物理的な製品の在庫をうまく追跡します。属性と bercart Stock Manager With Attributes を使用すると、さまざまな属性を持つ製品の在庫を追跡できます。たとえば、小、中、大のサイズのTシャツを販売するには、Tシャツ製品に属性S、M、Lを指定します。 属性にSKUを変更させる ; uc_multi_stockは、小、中、大のTシャツの在庫を個別に追跡できます。
原材料の数量を追跡する必要があるため、アイテムを購入するたびに、同じ属性を持つ他の製品の在庫を減らす必要があります。 S/M/L Tシャツの例から、複数のTシャツデザインを販売しているが、それらはオンデマンドで印刷されているとします。小、中、大のTシャツを印刷する数に制限があります。小さなTシャツを購入するたびに、他のすべての小さなTシャツ(など)の在庫を減らします。
同様に、すべての小さなTシャツの在庫を同時に設定できるように設定する必要があります。
条件付きアクション を使用するか、hook_orderを実装する小さなカスタムモジュールを構築することで、これを実装できます。カスタムモジュールをお勧めします。これは、移植性が高く、バージョン管理が容易だからです。コードで行う場合、uc_stock_adjust($ sku、$ qty)は$ skuの在庫を$ qtyで調整し、uc_stock_set($ sku、$ qty)は$ skuの数量を$ qtyに設定します。
幸せなコーディング!