ユーザーが顧客注文の出荷日と配送日を入力するとします。顧客は特定の日に配達されることを望んでいます。週末や休日など、配送を受け付けていない停電日があります。
同様に、配送倉庫にも停電日があります。
わずかな日数の移動時間があります。
ユーザーは、停電日と移動時間を上書きすることができます。唯一の制限は、配達日が出荷日より早くないことです。
ああ、これはレガシーWinFormアプリなので、コモンコントロールを使用するための追加のポイントです!
ここに私が心に留めているものがあります:
ユーザーが配達日を入力すると、システムは名目上の旅行日数に基づいて出荷日を計算します。出荷日が倉庫の停電日になると、システムは1日を差し引いて再試行します。開いている出荷日が見つかるまで繰り返します。
ユーザーが発送日を編集した場合、配達日は旅行日数を追加することにより再計算されます。出荷日が停電日に当たる場合は、日を追加して、空いている顧客の受け取り日が見つかるまで試行し続けます。
ユーザーが出荷日と配送日をリンクまたはリンク解除して、いずれかが編集されたときに自動再計算を停止できるようにします。
ユーザーがブラックアウトの日付を上書きするか、日付が通常の旅行日よりも短い場合、警告アイコンでユーザーに警告します。
私が正しく理解している場合、上書きできない唯一のことは、顧客のブラックアウト日です。それが正しければ、標準のカレンダーコントロールを使用して配達日を選択するだけです。顧客のブラックアウトである日付は無効になり、選択できませんでした。
名目上の日付の代わりに、顧客のプロファイルで最大出荷日を設定します。カレンダーの上に、希望する発送日の選択があります。
次に、ビジネスロジックの変更をお勧めします。選択された配達日が、優先発送日に基づいて、発送日が最大発送日を超えるまで、次に利用可能な発送日に戻ることを試みる発送日のブラックアウト試行に該当する場合。選択した日付が最大出荷日数を超える場合は、出荷日が1日になるまで出荷日を進めます。これは、出荷できる最低日数が翌日であるためです。それが不可能な場合は、出荷日を上書きします。
配送日に基づいて複数の配送オプション(1日、3日など)がある場合は、それらをカレンダーの下に表示することを検討してください。おそらく顧客プロファイルに基づいて、これらのいずれかをデフォルトにすることができます。ユーザーがデフォルト以外のオプションを選択した場合、システムは出荷日を再計算します。
システムはユーザーの発送日コントロールを計算するので、結果を表示してユーザーに表示しますが、ユーザーが操作できるコントロールではありません。さらに、出荷日変更に関連して一定のコストの増加があると想定しています。停電日に配送する場合は、送料の増加をユーザーに警告することを検討してください。
最も便利な解決策は、ブラックアウト日がグレー表示されている(またはブラックアウトされている)カレンダーピッカーだと思いました。ユーザーがブラックアウトの日付をクリックすると、カレンダーピッカーの下部に「倉庫は閉鎖されています」または「この日付には配達できません」というメッセージが表示されます。アニメーション(スライドアップなど)と色をメッセージに追加して、注意を引きます。