TxmlHtmlDocument (tech)

De Wiki1000
Version du 5 juillet 2023 à 13:25 par Syfre (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Introduction

Les objets TxmlHtmlDocument sont des descendants de TxmlDocument permettant de construire des documents xml html.

TxmlHtmlMailDocument est un descendants de TxmlHtmlDocument permettant de construire un document html compatible avec les lecteurs de messagerie.

Tip-20px.png Tip : Dans un mail destiné à une messagerie il n'est pas possible d'utiliser certaines fonctionnalités, en particulier il n'est pas possible d'inclure du script

Propriétés

Propriété Usage

Opérations

Méthode Usage

Exemple:

//function Execute(var aReason:string):boolean;
 Type
  VueValideur = viewOf(TPieceTaxable)
   vp1: TValideurPossible = join(ValidationEtat.EtatPossible.EtatMetier,EtatMetier);
   vp2: TValideurPossible = join(ValidationEtat.RegleValidation,RegleValidation);
   gcv: TGroupeContactValidation = leftjoin(TGroupeValidation,vp2.ContactEtablissement); 
   aId1:TOID = vp1.oid;
   aId2:TOID = vp2.oid; 
   aIdVP:TOID = vp2.oidValideurPrecedent;
   aIdDV:TOID = oiddernierValideur; 
   aIdCV:TOID = vp2.oidContactEtablissement; 
   aIdCE:TOID = ISNULL(gcv.oidTContactEtablissement,vp2.oidContactEtablissement); 
   // personne 
   Mail:string = ISNULL(gcv.TContactEtablissement+eMail,vp2.ContactEtablissement.eMail); 
   FirstName:string = ISNULL(gcv.TContactEtablissement+prenom,vp2.ContactEtablissement.prenom); 
   LastName:string = ISNULL(gcv.TContactEtablissement+nom,vp2.ContactEtablissement.nom); 
   Civility:string = ISNULL(gcv.TContactEtablissement+Civilite+Caption,vp2.ContactEtablissement+Civilite+Caption); 
   // pièce 
   estVomplet:boolean = estComplet; 
   noPiece:string = noPiece; 
   datePiece:Tdatetime = datePiece;
   totalHT: Tmoney = totalHT;
   typePieceCode:string = TypePieceGC.code; 
   typePieceLibelle:string = TypePieceGC+Caption;
   tiersFactureCode:string = RoleTiersFacture.Tiers.code;
   tiersFactureLibelle:string = RoleTiersFacture.Tiers.Caption;
   affaireCode:string = Affaire+code;
   affaireLibelle:string = Affaire+Caption; 
   // 
   [ (estComplet=True) and (aId1=aId2) and (aIdDV<>aIdCV) and  ((aIdVP='') or (aIdVP=aIdDV)) ] 
  end;
 
  function _SendEmail(eMail,Subject:string; doc:TxmlHtmlMailDocument):boolean;
  begin
    Result := True; 
    if (eMail<>'') and (doc<>nil) then
     begin
       Result := MailTo(eMail,Subject,doc.htmlContent); 
     end; 
  end; 
 
  function _Subject(inst:VueValideur):string;
  begin
    Result := _TP('(No reply) (Sage FRP 1000) Commande(s) en attente de validation') 
  end; 
 
  procedure _BodyHeader(doc:TxmlHtmlMailDocument; inst:VueValideur);
  begin
  end; 
 
  procedure _Body(table:ThtmlTable; inst:VueValideur);
  begin
    table.AddRow([
     inst.TranslateMsg(_TP('La pièce @noPiece@ en date du @datePiece@ d''un montant de @totalHT@ doit être validée'))
    ]); 
  end; 
 
var ls:TSelector; eMail,Subject:string; doc:TxmlhtmlMailDocument; table:ThmlTable; inst:VueValideur;
begin
  aReason := ''; 
  Result := True;
  // 
  ls := VueValideur.CreateSelector('','Mail,typePieceCode,datePiece',true,[]);
 
  eMail := ''; Subject := ''; doc := nil;
  foreach inst in ls.AsCursor do
   begin
     if inst.Mail<>eMail then
      begin
        if not _sendEMail(email,Subject,doc) then
         begin
           // do not continue if send mail failed 
           Result := False;
           aReason := _TP('Echec d''envoi de mail, vérifiez le paramétrage du service de messagerie'); 
           Exit; 
         end; 
        // 
        doc := TxmlHtmlMailDocument.Create(nil);
        doc.htmlbody.AddHeader(inst.TranslateMsg(_TP('A l''attention de @Civility@ @FirstName@ @LastName@')),'section');
        doc.htmlbody.AddHeader(_TP('A ce jour les pièces suivantes sont en attente de validation de votre part :'),'subsection'); 
        // 
        table := doc.htmlbody.AddTable([
         _TP('Type de pièce'),
         _TP('Tiers'),
         _TP('Affaire'),
         _TP('Pièce'),
         _TP('Date de pièce'), 
         _TP('Montant')
        ]);
 
        eMail := inst.Mail; 
        Subject := _Subject(inst);
      end; 
     //
     if Assigned(Table) then 
      begin 
        table.AddRow([
         inst.typePieceLibelle,  
         inst.tiersFactureLibelle,
         inst.affaireLibelle, 
         Format('%s#%s',[inst.noPiece,TFacadeModel.GetLinkUrlOfObject(inst.oid)]), 
         inst.TranslateMsg('@datePiece@'),
         inst.TranslateMsg('@totalHT@')
       ]); 
      end; 
   end;
  // 
  Result := _SendEmail(eMail,Subject,doc); 
end;

Voir aussi :

Code métierDéveloppement DSM

Outils personnels