j'ai créé une nouvelle classe avec une méthode statique que je peux facilement appeler de toute méthode .update()
me alerter quand un enregistrement change, et ce qui a changé dans le dossier. Il utilise également les modèles d'e-mail intégrés de Axe.
static void CompareAndEmail(str emailTemplateName, str nameField, str recipient, Common original, Common modified)
{
UserInfo userInfo;
Map emailParameterMap = new Map(Types::String, Types::String);
str changes;
int i, fieldId;
DictTable dictTable = new DictTable(original.TableId);
DictField dictField;
;
for (i=1; i<=dictTable.fieldCnt(); i++)
{
fieldId = dictTable.fieldCnt2Id(i);
dictField = dictTable.fieldObject(fieldId);
if (dictField.isSystem())
continue;
if (original.(fieldId) != modified.(fieldId))
{
changes += strfmt("%1: %2 -> %3 \n\r",
dictField.name(),
original.(fieldId),
modified.(fieldId)
);
}
}
//Send Notification Email
select Name from UserInfo where userInfo.id == curUserId();
emailParameterMap.insert("modifiedBy", userInfo.Name);
emailParameterMap.insert("tableName", dictTable.name());
emailParameterMap.insert("recordName", original.(dictTable.fieldName2Id(nameField)));
emailParameterMap.insert("recordChanges", changes);
SysEmailTable::sendMail(emailTemplateName, "en-us", recipient, emailParameterMap);
}
Puis, dans la méthode .update()
j'ajouter juste cette ligne
//Compare and email differences
RecordChangeNotification::CompareAndEmail(
"RecChange", //Template to use
"Name", //Name field of the record (MUST BE VALID)
"[email protected]", //Recipient email
this_Orig, //Original record
this //Modified record
);
Les seules choses que je veux améliorer sont:
- déplacer le nom du modèle et le destinataire dans une table , pour faciliter la maintenance
- meilleur formatage pour la liste des modifications, je ne sais pas comment modéliser cela (voir: here)
Ce n'est pas une "demande bidon". Lorsque les modifications sont enregistrées, nous souhaitons envoyer un e-mail unique avec les champs modifiés et leurs valeurs antérieures. Envoyer un lot quotidien est trop tard.Nous sommes en 2010, nous ne devrions pas travailler avec des lots nocturnes pour fournir des informations. Les vendeurs sont rarement mis à jour, mais s'ils sont modifiés, nos dirigeants veulent savoir IMMÉDIATEMENT. – CaffGeek
Ok, puis exécutez le rapport chaque minute ou heure ce qui convient à vos cadres. –
La solution que j'ai fournie est assez simple et délivre. Vous ne pouvez pas vous attendre à ce qu'AX fournisse une fonction imaginable dans la boîte. Votre demande de cadres n'est pas commune! –