Execute (TSearchAction)
De Wiki1000
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 :