Execute (TSearchAction)
Function Execute(action:TjsonStruct; resp:TJson):boolean;
Cette fonction exécute l'action et peut retourner une facet qui sera affichée dans le panneau ouvert par l'action.
| Paramètre | Usage |
|---|---|
| action | Une structure json qui comprend les paramètres du résultat de la recherche |
| resp | Une structure json en réponse |
| Result | True si l'action a été exécutée |
Exemple :
//function Action_piece_ecritures.Execute(action:TjsonStruct; resp:TJson):boolean;
Type
vueEcriture = viewOf(TEcriture)
oidPiece:TOID = oidPiece;
numero:Integer = numero;
//
codeCompte:string = compteGeneral.codeCompte;
libelleCompte:string = compteGeneral.Caption;
idCompteGeneral:TOID = oidCompteGeneral;
//
codeTiers:string = roleTiers.+Tiers.+Code;
libelleTiers:string = roleTiers.+Tiers.+Caption;
idRoleTiers:TOID = oidRoleTiers;
idTiers:TOID = roleTiers.+oidTiers;
//
libelleEcriture:String = Caption;
debit:TMoneyDT = debit;
credit:TMoneyDT = credit;
//
dateLettrage:TDatetime = dateLettrage;
lettre:String = lettrageEcriture.+lettre;
//
profilTVA:String = ProfilTVA.+Caption;
dateDeclarationTVA:TDatetime = DeclarationTVALigne.+DeclarationTVA.+dDate;
end;
function _GetTitle():string;
begin
Result := Format(_TP('Ecritures pour la pièce %s'),[
action.param.KeyValue['numero'],
]);
end;
var itemId:string; vSel:TSelector; inst:vueEcriture;
idx,idv,idr,limits:Integer; SF,ST,SR:TjsonStruct; SA:TjsonArray;
begin
Result := FALSE;
// This is TPiece oid
if action.Exists('param.itemId')
then itemId := action.param.itemId
else itemId := '';
if itemId='' then Exit;
SR := resp.AddStruct('panel','{panelId:"ecritures-'+itemId+'", title:"'+_GetTitle+'"}');
/////////////////////////////////////
SR.addStruct('layout','{ name:"body" }');
SF := FacetBuilder.AddFacet(SR,'body','list','');
ST := FacetBuilder.AddValueTable(SF,_GetTitle,'');
SA := ST.table.columnDefs;
SA.AddStruct('{field:"n", headerName:"'+_TP('Numéro')+'", width:100}');
SA.AddStruct('{field:"a", headerName:"'+_TP('Compte')+'", cellRenderer: "linkRenderer" }');
SA.AddStruct('{field:"b", headerName:"'+_TP('Tiers')+'", cellRenderer: "linkRenderer" }');
SA.AddStruct('{field:"c", headerName:"'+_TP('Débit')+'", width:160}');
SA.AddStruct('{field:"d", headerName:"'+_TP('Crédit')+'", width:160}');
SA.AddStruct('{field:"e", headerName:"'+_TP('Libellé')+'"}');
SA.AddStruct('{field:"f", headerName:"'+_TP('Date lettrage')+'", width:132}');
SA.AddStruct('{field:"g", headerName:"'+_TP('Lettrage')+'", width:100}');
SA.AddStruct('{field:"h", headerName:"'+_TP('Profil de TVA')+'"}');
SA.AddStruct('{field:"i", headerName:"'+_TP('Déclaration TVA')+'"}');
SA := ST.table.rows;
idr := 0; limits := -1;
vSel := vueEcriture.CreateSelector('(oidPiece=%1)', '', false, [itemId]);
foreach inst in vSel.AsCursor do
begin
SA.addDatum('id','',opeDatumSet,['id','n','a','b','c','d','e','f','g','h','i'],[
inst.oid,
inst.numero,
_FormatLinkObject(_FormatTitle(inst.codeCompte,inst.libelleCompte),Format(_TP('Compte géénrale %s'),[inst.codeCompte]),inst.idCompteGeneral),
_FormatLinkObject(_FormatTitle(inst.codeTiers,inst.libelleTiers),Format(_TP('Tiers %s'),[inst.codeTiers]),inst.idTiers),
_FormatMontant(inst.debit),
_FormatMontant(inst.credit),
inst.libelleEcriture,
_FormatDateObject(inst.dateLettrage),
inst.lettre,
inst.profilTVA,
_FormatDate(inst.dateDeclarationTVA)
]);
idr := idr+1;
if idr=limits then break;
end;
Result := True;
end;
Voir aussi :