Constraints On Dates (feature)
From UG
(→Functionality: Required Pre-condition Constraint) |
(→RFC) |
||
Line 326: | Line 326: | ||
Good idea? How hard? | Good idea? How hard? | ||
+ | |||
+ | 3) Functionality: Required Pre-condition Constraint | ||
+ | |||
+ | Should we add to d) condition "or commodity table is empty" | ||
+ | |||
+ | 4) Should we re-design in terms of "CT consistent/ inconsistent state" because for example if user assign all commodities and then set Actual Deliv date BUT later unassign it gives you "strange message": | ||
+ | |||
+ | "Actual Delivery date can not be assigned - all commodity items must be assigned to containers" | ||
+ | |||
+ | It is better to say like this: "Inconsistent State: Actual Delivery date assigned but at least one commodity item is unassigned." | ||
== History == | == History == |
Revision as of 21:35, 12 January 2010
Parent Mantis
Business Need
We have a number of constraints / validation rules that we need to enforce for dates.
Requirements
All detailed requirements have been translated into specifications - see below.
Technical Specification
Summary
List of constraints on dates:
- #Functionality: Order Constraint Based On Chronological Order
- #Functionality: Required Pre-condition Constraint
- #Functionality: Actual Date Can Not Be A Future Date Constraint
User Interface
There is no UI here except some pop-up messages.
Functionality: Generic functionality
Point in Time When Data is Tested against Constraints
Ideally this should happen real-time any time date is entered. But because of a glitch in a framework (or lack of our knowledge of workaround) we can only test it "on Save".
Functionality: Order Constraint Based On Chronological Order
"On save" check the following order. See #Chronological Order.
no1 <= no2 <= no3 <= ...
If order is incorrect the show pop-up:
In CT#XXX, date <date name> can not be <earlier/later> than date <date name>" [OK].
Chronological Order
AIR:
[no1] [I] [----------------] ( Act) Created on Date [no2] [I] [----------------] ( Act) Notification Date [no3] [I] [----------------] ( Act) Authorized on [no4] [I] [COLLECTION EVENT] (Est / Act) Pick-up date [no5] [M] [DEPARTURE EVENT ] (Est / Act) Airport of Departure [no6] [M] [----------------] (Est / Act) Trans-shipment Airport [no7] [M] [ARRIVAL EVENT ] (Est / Act) Airport of Discharge [no8] [I] [----------------] ( Act) Customs Status Date [no9] [I] [----------------] ( Act) FDA Status Date [no10][I] [DELIVERY EVENT ] (Est / Act) Delivery Date
FCL:
[no1] [I] [----------------] ( Act) Created on Date [no2] [I] [----------------] ( Act) Notification Date [no3] [I] [----------------] ( Act) Authorized on [no4] [I] [COLLECTION EVENT] (Est / Act) Pick-up date, Container 1 [no4] [I] [COLLECTION EVENT] (Est / Act) Pick-up date, Container 2 (FCL only) ... [no4] [I] [COLLECTION EVENT] (Est / Act) Pick-up date, Container N (FCL only) [no5] [I] [DEPARTURE EVENT ] (Est / Act) Origin Terminal [no6] [M] [--------------- ] (Est / Act) Port Of Loading [no7] [M] [----------------] (Est / Act) Port Of Trans-shipment [no8] [M] [----------------] (Est / Act) Port Of Discharge [no9] [I] [ARRIVAL EVENT ] (Est / Act) Destination Terminal [---] [I] [----------------] ( Act) Customs Status Date [---] [I] [----------------] ( Act) FDA Status Date [no10] [I] [DELIVERY EVENT ] (Est / Act) Delivery Date, Container 1 [no10] [I] [DELIVERY EVENT ] (Est / Act) Delivery Date, Container 2 (FCL only) ... [no10] [I] [DELIVERY EVENT ] (Est / Act) Delivery Date, Container N (FCL only)
LCL:
[no1] [I] [----------------] ( Act) Created on Date [no2] [I] [----------------] ( Act) Notification Date [no3] [I] [----------------] ( Act) Authorized on [no4] [I] [COLLECTION EVENT] (Est / Act) Pick-up date [no5] [I] [DEPARTURE EVENT ] (Est / Act) Origin Terminal [no6] [M] [--------------- ] (Est / Act) Port Of Loading [no7] [M] [----------------] (Est / Act) Port Of Trans-shipment [no8] [M] [----------------] (Est / Act) Port Of Discharge [no9] [I] [ARRIVAL EVENT ] (Est / Act) Destination Terminal [---] [I] [----------------] ( Act) Customs Status Date [---] [I] [----------------] ( Act) FDA Status Date [no10] [I] [DELIVERY EVENT ] (Est / Act) Delivery Date
TRUCK-AIR:
[no1] [I] [----------------] ( Act) Created on Date [no2] [I] [----------------] ( Act) Notification Date [no3] [I] [----------------] ( Act) Authorized on [no4] [I] [COLLECTION EVENT?] (Est / Act) Pick-up date [no5][I] [DELIVERY EVENT? ] (Est / Act) Delivery Date
TRUCK-DOM:
[no1] [I] [----------------] ( Act) Created on Date [no2] [I] [----------------] ( Act) Notification Date [no3] [I] [----------------] ( Act) Authorized on [no4] [I] [COLLECTION EVENT?] (Est / Act) Pick-up date [no5][I] [DELIVERY EVENT? ] (Est / Act) Delivery Date
TRUCK-OCN:
[no1] [I] [----------------] ( Act) Created on Date [no2] [I] [----------------] ( Act) Notification Date [no3] [I] [----------------] ( Act) Authorized on [no4] [I] [COLLECTION EVENT] (Est / Act) Pick-up date, Container 1 [no4] [I] [COLLECTION EVENT] (Est / Act) Pick-up date, Container 2 (FCL only) ... [no4] [I] [COLLECTION EVENT] (Est / Act) Pick-up date, Container N (FCL only) [no5] [I] [DELIVERY EVENT ] (Est / Act) Delivery Date, Container 1 [no5] [I] [DELIVERY EVENT ] (Est / Act) Delivery Date, Container 2 (FCL only) ... [no5] [I] [DELIVERY EVENT ] (Est / Act) Delivery Date, Container N (FCL only)
Functionality: Required Pre-condition Constraint
The following validation must be implemented "on Save":
LCL / FCL
a) Issue error pop-up if “actual departure date” (Origin Terminal) is entered but there is no “container number” (not even one container exists).
b) Issue error pop-up if “actual arrival date” (Destination Terminal) is entered but there is no “actual departure date” (Origin Terminal).
c) Issue error pop-up if “delivery date” is entered (FCL:on ANY container) but there is no “actual arrival date” (Destination Terminal) set.
d) Issue error pop-up if “delivery date” is entered (FCL:on ANY container) but there is at least one line in commodity table unassigned.
AIR
a) Issue error pop-up if “actual departure date” (Airport of Departure) is entered but there is no “Master Air Waybill #”.
b) Issue error pop-up if “actual arrival date” (Airport of Destination) is entered but there is no “actual departure date” (Airport of Departure)
c) Issue error pop-up if “delivery date” is entered but there is no “actual arrival date” (Airport of Destination) set.
d) Issue error pop-up if “delivery date” is entered (FCL:on ANY container) but there is at least one line in commodity table unassigned.
TRUCK-AIR
TBD!!!
TRUCK-OCEAN
TBD!!!
TRUCK-DOM
TBD!!!
Examples of wording for Error Messages
Ocean:
“A container number must be entered before the actual departure date can be confirmed”
“The actual departure date must be confirmed before the actual arrival date can be confirmed”
“The actual arrival date must be confirmed before the actual delivery date can be confirmed”
Air:
“A MAWB number must be entered before the actual departure date can be confirmed”
“The actual departure date must be confirmed before the actual arrival date can be confirmed”
“The actual arrival date must be confirmed before the actual delivery date can be confirmed”
Functionality: Actual Date Can Not Be A Future Date Constraint
If user is trying to set any actual dates (see below) to the future date system must issue pop up: "Error while saving: <name of the date> can not be in the future [OK]".
List of actual dates in the system
UNDEF:
- Gentab.Actual export pickup
Truck-Dom:
- Gentab.Actual export pickup
- Gentab.Actual Delivery
Truck-Air:
- Gentab.Actual export pickup
- Gentab.Actual Delivery
Truck-Ocn:
- Conttab.Containers.ContainerX.Actual collection
- Conttab.Containers.ContainerX.Actual Delivery
AIR:
Gentab:
- Actual export pickup
Exptab:
- Airport of Departure. ATD
- Trans-shipment Airport.ATD
- Airport Of Destination. ATD
ImpTab:
- Actual Delivery Date
LCL:
Gentab:
- Actual export pickup
Exptab:
- Origin Terminal ATD
- Port Of Loading ATD
- Port Of Trans-shipment ATA
- Port Of Discharge ATA
- Destination Terminal ATA
ImpTab:
- Actual Delivery Date
FCL:
Conttab.Containers:
- ContainerX.Actual collection
- ContainerX.Actual Delivery
Exptab:
- Origin Terminal ATD
- Port Of Loading ATD
- Port Of Trans-shipment ATA
- Port Of Discharge ATA
- Destination Terminal ATA
Special case: CTs under Groups and Masters
In this case change to one date field can be applied to multiple CTs potentially breaking date constraints on multiple records.
In this case system must verify all related records and display error that spells out WHAT dates on WHAT records are breaking WHAT constraint.
Figures
Figure: XXX
RFC
1) Do you clear invalid values after error pop up is generated?
Yes you should clear these values. Now system does not.
Good idea?
2) Idea: have in Admin option to turn any validation.
Option for what records to turn off.
Good idea? How hard?
3) Functionality: Required Pre-condition Constraint
Should we add to d) condition "or commodity table is empty"
4) Should we re-design in terms of "CT consistent/ inconsistent state" because for example if user assign all commodities and then set Actual Deliv date BUT later unassign it gives you "strange message":
"Actual Delivery date can not be assigned - all commodity items must be assigned to containers"
It is better to say like this: "Inconsistent State: Actual Delivery date assigned but at least one commodity item is unassigned."
History
Spec created
--Alex 20:01, 12 January 2010 (UTC)
0001324: (Constraints On Dates) Display error that spells out WHAT dates on WHAT records are breaking WHAT constrain
--Alex 20:01, 12 January 2010 (UTC)
Known Non Critical Bugs
bug1) error is not specific to what date in what CT there is a problem
bug2) even if problem with ordering of actual dates system complains about "estimated"