cancel
Showing results for 
Search instead for 
Did you mean: 

custom validation message doesn't show in expense report

former_member606838
Participant
0 Kudos

Hi experts,

I have implemented some logic for one of the client in onSave validation to show some message if a condition met. The logic somehow works but it doesn't show the message:

the logic is as follow:

In the BO extension I have:

import AP.Common.GDT;
import AP.ExpenseReimbursementManagement.Global;
[Extension] businessobject AP.ExpenseReimbursementManagement.Global:ExpenseReport raises attachmentMessage, futurDateMessage {
      
message attachmentMessage text "No attachement found, Please attache documents to proceed";
message futurDateMessage text "You cannot select a future date";
   node Mileage {
       } 
   node Receipt {

      node ReceiptBeneficiary {
          } 
        }
}

In the validation I have:

import ABSL;
var flag = false;
var currentData = Context.GetCurrentSystemDate();
foreach(var r in this.Receipt)
{
if(r.Date.GreaterThan(currentData))
{
flag = true;
}
}
if(!this.AttachmentFolder.IsSet())
{
attachmentMessage.Create("E");
return false;
}
else if (flag)
{
futurDateMessage.Create("E");
}
else
{
return true;
}

Accepted Solutions (1)

Accepted Solutions (1)

former_member606838
Participant
0 Kudos

I missed the key word "raise" before the message...

Answers (1)

Answers (1)

former_member226
Employee
Employee

Hi,

I think it was due to a return false missing after raising error message "futurDateMessage.Create("E");"

Can you please try to use following code:

import ABSL;
var flag = false;
var currentData = Context.GetCurrentSystemDate();
foreach(var r in this.Receipt)
{
    if(r.Date.GreaterThan(currentData))
    {
        flag = true;
        futurDateMessage.Create("E");
        return false;
    }
}

if(!this.AttachmentFolder.IsSet())
{
    attachmentMessage.Create("E");
    return false;
}
else
{
    return true;
}

BR
Saurabh

former_member606838
Participant
0 Kudos

Hi Saurabh,

foreach(var r in this.Receipt){if(r.Date.GreaterThan(currentData)){
        flag = true;
        futurDateMessage.Create("E");return false;}}

this however will cause the message to repeat when we have more that one item level with a future data, I kept the flag that way to show that there are some items that need to be chacked.