Hi,
In inventory Management -- > Inquiries --> Batches --> Shelf life at and many more are there .You can check that once .
I have checked one form which is attached to inventory Management -- > Inquiries --> Batches
\Forms\PdsInventBatchBestBefore.
In this init method.The Date control is taking Default System date.
So after that it is actually getting range in form init method
public void addBasicRanges()
{
QueryBuildDataSource queryBuildDataSourceInventBatch = inventBatch_DS.queryBuildDataSource();
QueryBuildDataSource queryBuildDataSourceInventTable = inventTable_DS.queryBuildDataSource();
QueryBuildDataSource queryBuildDataSourceInventSum = inventSum_DS.queryBuildDataSource();
criteriaDate = queryBuildDataSourceInventBatch.addRange(fieldNum(InventBatch, PdsBestBeforeDate));
criteriaOnHand = queryBuildDataSourceInventSum.addRange(fieldNum(InventSum, ClosedQty));
// by the form, the sum is only joined to the dim, so it should link to the item
queryBuildDataSourceInventSum.addLink(
fieldNum(InventBatch, ItemId),
fieldNum(InventSum, ItemId),
inventBatch_DS.name());
criteriaDate.value(strFmt('((%1) && (%1 <= %2))',
fieldStr(InventBatch, PdsBestBeforeDate),
date2StrXpp(ctrlDate.dateValue())));
criteriaOnHand.value(queryValue(NoYes::No));
}
Here it is taking System date.
You can change your date like 3 months like that.and check.
This might give you a clue.
Check those forms and you can write logic according to that and run batch job.
Send alert.
For email sending code
You can refer link
http://www.microsoftdynamicsax365.com/?s=email
Regards.
Have a great day.