function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
clouduserclouduser 

Validation rule for date

Timesheet_week__c (Date field) should be 'Monday'. If the user is creating/updating the record, it should validate below things.

If the record is created/updated before Friday COB, it should allow the user to choose the current Monday or future monday also.

If the record is created/updated after Friday COB, it should allow the user to choose the future Monday only. 

 

Let me know your thoughts.

 

 

Best Answer chosen by Admin (Salesforce Developers) 
clouduserclouduser

I have resolved the issue by writing validation rules. I am sharing this and it might be helpful for others.

 

first one: checks for the remaining validation...before friday COB and after friday COB.

OR(
AND(ISNEW(), Timesheet_week__c < TODAY(),
CASE(MOD( TODAY() - DATE(1900, 1, 7), 7), 0, 0, 6, 0, 1) = 0),
AND(ISNEW(),
OR(
AND(Timesheet_week__c <= TODAY() - 7, MOD( TODAY() - DATE(1900, 1, 7), 7) = 1),
AND(Timesheet_week__c <= TODAY() - 8, MOD( TODAY() - DATE(1900, 1, 7), 7) = 2),
AND(Timesheet_week__c <= TODAY() - 9, MOD( TODAY() - DATE(1900, 1, 7), 7) = 3),
AND(Timesheet_week__c <= TODAY() - 10, MOD( TODAY() - DATE(1900, 1, 7), 7) = 4),
AND(Timesheet_week__c <= TODAY() - 11, MOD( TODAY() - DATE(1900, 1, 7), 7) = 5)
)),
AND(ISCHANGED( Timesheet_week__c), Timesheet_week__c < TODAY(),
CASE(MOD( TODAY() - DATE(1900, 1, 7), 7), 0, 0, 6, 0, 1) = 0),
AND(ISCHANGED( Timesheet_week__c),
OR(
AND(Timesheet_week__c <= TODAY() - 7, MOD( TODAY() - DATE(1900, 1, 7), 7) = 1),
AND(Timesheet_week__c <= TODAY() - 8, MOD( TODAY() - DATE(1900, 1, 7), 7) = 2),
AND(Timesheet_week__c <= TODAY() - 9, MOD( TODAY() - DATE(1900, 1, 7), 7) = 3),
AND(Timesheet_week__c <= TODAY() - 10, MOD( TODAY() - DATE(1900, 1, 7), 7) = 4),
AND(Timesheet_week__c <= TODAY() - 11, MOD( TODAY() - DATE(1900, 1, 7), 7) = 5)
)
)
)

 

another one: checks for the monday

OR(AND(ISNEW(), MOD(Timesheet_week__c - DATE(1900, 1, 7), 7) <> 1), AND(ISCHANGED(Timesheet_week__c), MOD(Timesheet_week__c - DATE(1900, 1, 7), 7) <> 1))

All Answers

AmitSahuAmitSahu
My personal choice would be apex instead of validation rules.... ;-)
clouduserclouduser

I have resolved the issue by writing validation rules. I am sharing this and it might be helpful for others.

 

first one: checks for the remaining validation...before friday COB and after friday COB.

OR(
AND(ISNEW(), Timesheet_week__c < TODAY(),
CASE(MOD( TODAY() - DATE(1900, 1, 7), 7), 0, 0, 6, 0, 1) = 0),
AND(ISNEW(),
OR(
AND(Timesheet_week__c <= TODAY() - 7, MOD( TODAY() - DATE(1900, 1, 7), 7) = 1),
AND(Timesheet_week__c <= TODAY() - 8, MOD( TODAY() - DATE(1900, 1, 7), 7) = 2),
AND(Timesheet_week__c <= TODAY() - 9, MOD( TODAY() - DATE(1900, 1, 7), 7) = 3),
AND(Timesheet_week__c <= TODAY() - 10, MOD( TODAY() - DATE(1900, 1, 7), 7) = 4),
AND(Timesheet_week__c <= TODAY() - 11, MOD( TODAY() - DATE(1900, 1, 7), 7) = 5)
)),
AND(ISCHANGED( Timesheet_week__c), Timesheet_week__c < TODAY(),
CASE(MOD( TODAY() - DATE(1900, 1, 7), 7), 0, 0, 6, 0, 1) = 0),
AND(ISCHANGED( Timesheet_week__c),
OR(
AND(Timesheet_week__c <= TODAY() - 7, MOD( TODAY() - DATE(1900, 1, 7), 7) = 1),
AND(Timesheet_week__c <= TODAY() - 8, MOD( TODAY() - DATE(1900, 1, 7), 7) = 2),
AND(Timesheet_week__c <= TODAY() - 9, MOD( TODAY() - DATE(1900, 1, 7), 7) = 3),
AND(Timesheet_week__c <= TODAY() - 10, MOD( TODAY() - DATE(1900, 1, 7), 7) = 4),
AND(Timesheet_week__c <= TODAY() - 11, MOD( TODAY() - DATE(1900, 1, 7), 7) = 5)
)
)
)

 

another one: checks for the monday

OR(AND(ISNEW(), MOD(Timesheet_week__c - DATE(1900, 1, 7), 7) <> 1), AND(ISCHANGED(Timesheet_week__c), MOD(Timesheet_week__c - DATE(1900, 1, 7), 7) <> 1))

This was selected as the best answer