JK 様
これまでの過去のトピックを見る限りでは、カート周りのこのような変更は、カスタマイズの範疇を超えて大幅な改造になってしまいますので、ほぼ不可能かと思います。
ただ、考え方を少し変えるだけで、お望みのカートを Welcart で実現できる可能性もあります。
残念ながらやりたいことを具体的に書かれてないので、前回のトピックを読んで誠に勝手ながら推測だけで進みますが、時間の都合、考え方のヒントだけでもお伝えできればと思います。
【考え方】
まず、商品を配送方法で分類します
1.ホールケーキなどの配送困難な生菓子類→店頭受け渡し予約販売とする
2.冷凍ケーキなどの通販可能なもの→冷凍便を使った通販(なければ無視してください)
3.チョコレート類→冷蔵便を使った通販(なければ無視してください)
4.焼き菓子類→常温での通常の通販
のように分類して、区分の異なる商品が同一のカートに入らないようにする。
配送設定で配送方法をそれぞれ設定する
1.ホールケーキなど生菓子類→「店頭受け渡し」 指定時間帯指定しない 配達日数は利用しない 送料固定無料
2.冷凍ケーキ→「宅配便」 指定時間帯を指定 配達希望日数を設定する クール区分 冷凍 送料固定有料
3.チョコレート類→「宅配便」 指定時間帯を指定 配達希望日数を設定する クール区分 冷蔵 送料固定有料
4.焼き菓子→「宅配便」 指定時間帯を指定 配達希望日数を設定する クール区分 常温 送料固定有料
配送設定で、配送方法を配送の優先順位を上から 1.→ 2.→ 3.→4.の順に並べる。
更に商品ごとに商品情報編集の配送方法で1.2.3.4.のどれに該当するか設定する。
1カートにつき1配送方法でしか注文できないので、オーダーレベルでは、これだけで自然と分かれます。
もし、ホールケーキと焼き菓子が同一カートに入れられたときには、店頭受け渡ししか選ぶことができなくなります。間違っても、ホールケーキに「宅配便」を選択されることはありません。焼き菓子を通販したければ、焼き菓子だけをカートに入れれば普通の通販の注文を受けられます。詳細な制御は、後述するバリデーションで制御するようにします。
また、ご利用方法として、同一カートに1.2.3.4の混載はできない旨説明しておきます。カートページ設定のヘッダなどにも記載しておくことをおすすめします。(ホールケーキ類と焼き菓子のご注文はカートを分けて別々に注文いただく。)
上記が基本です。
で、今回のご質問のところについてどうするか考えます。
カートの3ステップ目(配送・支払方法)では、最短の配達可能日を算定するために配送地域や商品ごとの発送準備期間、配送休業日を考慮して、内部計算が行われています。
ご要望の内容では、同一カート内の複数の商品ごとに、配達希望日をそれぞれ設定できるようにすることと同義になってしまいます。日時を変えて何度も配送しなくてはならず、これはシステム上極めて困難ですし、普通は誰も望まないでしょう。
例えば、クリスマスケーキの店頭受け渡しの予約販売を想定しておけばいいだけなのであれば、もっと単純に考える必要があります。配達可能日の内部計算もそもそも不要ですから。システムの日数計算は回避させます。
一日に焼けるホールケーキの制約もありますので、ケーキの種類、号数、そして、受け渡し予約販売日時をSKUで管理する必要があります。→プラグインWCEX SKU Select で作成します。
ろうそくの数やラッピングなどのオプションも必要になると思います。→プラグインWCEX Multi Price で作成します。
その他 ケーキに名前も入れる必要がありますので、名前を入れるオプションも必要です。
最近では、ケーキに顔写真を印刷できたりしますので写真を送ってもらう必要があったりします。これは、Contact Form 7 などで別に作ってもいいかもしれません。
SKU Select のところだけもう少し詳しく書きます。
ケーキは季節ものですので、年間を通じてそのケーキが購入できる期間がそれぞれある程度決まっていると思います。ですので、ケーキの種類ごとに1商品と考えます。
そして、ホールケーキならば、号数と予約販売日時をSKU Select の項目とします。
クリスマスケーキならば、焼き上がり予定日時で在庫管理ができるようになります。予め生産計画個数をSKUの在庫数に設定することで、販売計画が立ちます。生産計画を上回る受注はできなくなります。
焼き上がる日時(受け渡しの日時)をSKUの一つ目として、
例えば、
12/22 10時~12時
12/22 12時~14時
12/22 14時~16時
12/22 16時~18時
12/23 10時~12時
12/23 12時~14時
12/23 14時~16時
12/23 16時~18時
12/24 10時~12時
12/24 12時~14時
12/24 14時~16時
12/24 16時~18時
のように設定します。
SKUの二つ目をホールケーキの号数にします。
例えば
4号
5号
6号
7号
のように設定します。
あとは、受け渡し日時 ✕ 号数 でそれぞれ台数を設定します。
クリスマスケーキA
SKU
12/22 10時~12時 ✕ 4号 10台
12/22 10時~12時 ✕ 5号 10台
12/22 10時~12時 ✕ 6号 10台
12/22 10時~12時 ✕ 7号 5台
12/22 12時~14時 ✕ 4号 10台
12/22 12時~14時 ✕ 5号 10台
12/22 12時~14時 ✕ 6号 10台
12/22 12時~14時 ✕ 7号 5台
12/22 14時~16時 ✕ 4号 10台
12/22 14時~16時 ✕ 5号 10台
12/22 14時~16時 ✕ 6号 10台
12/22 14時~16時 ✕ 7号 5台
・
・
・
クリスマスケーキB
SKU
12/22 10時~12時 ✕ 4号 8台
12/22 10時~12時 ✕ 5号 8台
12/22 10時~12時 ✕ 6号 8台
12/22 10時~12時 ✕ 7号 3台
12/22 12時~14時 ✕ 4号 8台
12/22 12時~14時 ✕ 5号 8台
12/22 12時~14時 ✕ 6号 8台
12/22 12時~14時 ✕ 7号 3台
12/22 14時~16時 ✕ 4号 8台
12/22 14時~16時 ✕ 5号 8台
12/22 14時~16時 ✕ 6号 8台
12/22 14時~16時 ✕ 7号 3台
・
・
・
定番ケーキなど1年を通じて販売するものは、SKUが多くなりすぎるとシステムの負荷が重くなりますので、たとえ商品内容が同じであっても、SKU数が多くなりすぎないように、一定期間で区切って、複写したものを新しい商品として登録し直した方が良いと思います。削除すると購入履歴などに影響がありますので残しておくようにします。
以上のように設定すれば、ご質問内容のように、
到着希望日と到着時間の選択を、商品をカートに追加する際に選択できるようになります。
あとは、余力があれば・・・
ホールケーキは、配送がないので色々不都合な点が出てきます。
配送方法が「店頭受け渡し」という条件で、各々のフィルターフックで内容を差し替える必要があります。
・サンキューメールなどの「配送先」欄が不要なので、「受け取り方法」などに書き換え
・内容確認ページの配送先情報も同様に書き換え
私の場合は、「店頭受け渡し」の場合は、「店頭にて決済」を作って、それしか選択できないように制限したり、最初からラジオボタンにチェックが入るようにしたり、カスタマイズしています。
ケーキの予約販売なら、いらずら注文防止のため、クレカとか前払いとかにする方がいいのかもしれませんね。
カートの3ステップ目(配送・支払方法)→4ステップ目(内容確認)へ遷移する際のバリデーションが役に立ちます。→ usces_filter_delivery_check
選択できない配送方法やオプション等もこのフックを使ってゴリゴリにカスタマイズしていきます。
ここは、作り込みに結構時間が掛かります。
良いお店ができることを楽しみにしています。