Lets say that a user is entering a ship date and a delivery date for a customer order. The customer wants it delivered on a particular day. The customer has blackout days such as weekends and holidays that they don't accept delivery.

Likewise the shipping warehouse has blackout days.

There is some nominal travel time in days.

The user has the ability to override the blackout days and the travel time. The only restriction is that the delivery date may not be earlier than the ship date.

Oh, and this is a legacy WinForm App, so extra points for using common controls!

Here is what I have in mind:

The user enters a delivery date and the system calculates the ship date based on the nominal travel days. If the ship date lands on a warehouse blackout day, the system subtracts a day and tries again. Repeat until an open shipping day is found.

If the user edits the ship date the delivery date will be recalculated by adding the travel days. If the ship date lands on a blackout day, add a day and keep trying until an open customer receiving day is found.

Allow the user to link or unlink the ship and delivery date to stop the automatic recalc when either one is edited.

If the user overrides the blackout dates or the dates are less than the nominal travel days, warn the user with a warning icon. enter image description here

  • The date is always the sooner as possible? If not , what's the maximum lapse of time since the user enter the data for the shipping and delivery, till the delivery is actually made? E.g: 2 weeks?, 1 month?, 2 months? Jun 6, 2015 at 17:42
  • The customer may call with an order for the following day, or may be calling in orders to be delivered throughout the entire year. The warehouse wants to ship at the last possible moment - the carrier charges a daily fee for sitting idle.
    – Shmoken
    Jun 8, 2015 at 15:22
  • 1
    What is the question? Is the question on how to build most usable interface for the fulfillment user assuming auto update and auto calculations on these fields?
    – Igorek
    Nov 3, 2015 at 22:07
  • Yes, what is the most usable interface that uses the auto-update, and allows the user to override the Ship Date and Delivery Date? The problem I have with auto-updating is that it if the user doesn't know what the constraints are (black out days and travel days) the calculations often seem arbitrary. And if the user overrides a date it should be clear what rule is being overridden.
    – Shmoken
    Nov 4, 2015 at 22:49
  • In what sense is your customer interested in knowing the actual shipping day? I would only see this handy considering the above if they want to have a version of the sold product manufactured at a specific time of year for some reason? Otherwise, why don't you just hide the shipping date entirely and calculate it internally based on the other constraints? Jan 7, 2016 at 13:37

2 Answers 2


If I have the correct understanding the only thing that cannot be overridden is the customer blackout date. If that's correct I would simply employ a standard calendar control to select delivery date. Dates that are customer blackouts would be disabled and could not be selected.

Instead of nominal date I would have a max shipping days setup in the customer profile. Above the calendar I would have a preferred shipping days selection.

Then I would recommend a change to the business logic. If the delivery date selected, based on the preferred shipping days, falls on a ship date blackout attempt to step back to the next available ship date, until the ship days exceeds the max ship days. If the date selected exceeds the max ship days step forward a ship date until the ship days is one, because the least you can ship is overnight. If that's not possible then override the ship date.

If there are multiple shipping options (ie. 1 day, 3 day ect) based on the delivery date consider displaying them below the calendar. You could default one of these, possibly based on customer profile. If the user selects an option other than the default the system will recalculate the ship date.

Since the system will be calculating the shipping days controls for the user I would still display the result for them to see but they wouldn't be controls the user could interact with. Additionally I'm assuming there are certain cost increases related to the ship date modifications. You might consider warning the user of a shipping cost increase when shipping on a blackout date.

  • The customer blackout date can be overridden, too. For some emergency deliveries the customer will arrange for a crew to be available to unload the product. Nominal travel days are stored for the customer. The sales rep can choose shorter travel time at higher cost, but that is by exception. There is no max ship days limitation, but the more it exceeds the nominal travel days, the more expensive it is.
    – Shmoken
    Jun 8, 2015 at 15:44

I would have thought the most usable solution would be a calendar picker with the blackout days greyed out (or blacked out). If the user clicks on the blackout date, a message is displayed at the bottom of the calendar picker saying "the warehouse is closed" or "we can't deliver on this date". Add some animation (e.g. slide up) and colour to the message to draw attention to it.

  • A calendar picker with highlights has been considered, but the user has to know what the highlights mean. Animation would be great, but we're using windows forms (legacy app here), so that is not really an option.
    – Shmoken
    Jan 8, 2016 at 16:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.