<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://wiki.sage.fr/index.php?action=history&amp;feed=atom&amp;title=SumSens_%28ope%29</id>
	<title>SumSens (ope) - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.sage.fr/index.php?action=history&amp;feed=atom&amp;title=SumSens_%28ope%29"/>
	<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=SumSens_(ope)&amp;action=history"/>
	<updated>2026-05-25T01:54:09Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://wiki.sage.fr/index.php?title=SumSens_(ope)&amp;diff=14528&amp;oldid=prev</id>
		<title>Syfre : Page créée avec « &#039;&#039;&#039;Exemple:&#039;&#039;&#039;  &lt;source lang=&quot;delphi&quot;&gt; procedure TTestFrameworkView.Test_view_ope_sumSens; var rg:TregClass; Args:Array[0..3] of Variant; ARslt,AExp:Currency; begin   doCl... »</title>
		<link rel="alternate" type="text/html" href="http://wiki.sage.fr/index.php?title=SumSens_(ope)&amp;diff=14528&amp;oldid=prev"/>
		<updated>2023-09-03T08:51:34Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &amp;#039;&amp;#039;&amp;#039;Exemple:&amp;#039;&amp;#039;&amp;#039;  &amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt; procedure TTestFrameworkView.Test_view_ope_sumSens; var rg:TregClass; Args:Array[0..3] of Variant; ARslt,AExp:Currency; begin   doCl... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Exemple:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TTestFrameworkView.Test_view_ope_sumSens;&lt;br /&gt;
var rg:TregClass; Args:Array[0..3] of Variant; ARslt,AExp:Currency;&lt;br /&gt;
begin&lt;br /&gt;
  doCleanAll;&lt;br /&gt;
  //                               E       A         B&lt;br /&gt;
  CreateInstanceD(&amp;#039;D1&amp;#039;,&amp;#039;D1.1&amp;#039;,Date,1,&amp;#039;EUR&amp;#039;,2.0,&amp;#039;EUR&amp;#039;,1.0);  //1: B-A = -1&lt;br /&gt;
  CreateInstanceD(&amp;#039;D1&amp;#039;,&amp;#039;D1.2&amp;#039;,Date,1,&amp;#039;EUR&amp;#039;,1.0,&amp;#039;EUR&amp;#039;,2.0);  //1: B-A = 1&lt;br /&gt;
&lt;br /&gt;
  CreateInstanceD(&amp;#039;D1&amp;#039;,&amp;#039;D1.3&amp;#039;,Date,0,&amp;#039;EUR&amp;#039;,1.0,&amp;#039;EUR&amp;#039;,2.0);  //0: A-B = -1&lt;br /&gt;
  CreateInstanceD(&amp;#039;D1&amp;#039;,&amp;#039;D1.4&amp;#039;,Date,0,&amp;#039;EUR&amp;#039;,2.0,&amp;#039;EUR&amp;#039;,1.0);  //0: A-B = 1&lt;br /&gt;
  //&lt;br /&gt;
  rg := ModelManager.FindRegClass(&amp;#039;ProcessusA&amp;#039;,false);&lt;br /&gt;
  Check(Assigned(rg),&amp;#039;ProcessusA not found&amp;#039;);&lt;br /&gt;
  try&lt;br /&gt;
    //case C=1 then B-A else A-B)&lt;br /&gt;
    doCreateOperation(rg,&amp;#039;function ViewTypeDef(const iCode:string; iEntier:Integer):Currency;&amp;#039;,&lt;br /&gt;
       &amp;#039;Type&amp;#039;+&lt;br /&gt;
       &amp;#039;  MyView = viewof(ClassD)&amp;#039;+&lt;br /&gt;
       &amp;#039;    unCode:string = unCodeA primary;&amp;#039;+&lt;br /&gt;
       &amp;#039;    unEntier:Integer = unEntierA;&amp;#039;+ // needed in group by&lt;br /&gt;
       &amp;#039;    sumMontant:TMoneyDT = sumSens(unMontantDT,unMontantDT_2,unEntierA);&amp;#039;+&lt;br /&gt;
       &amp;#039;  end;&amp;#039;+&lt;br /&gt;
       &amp;#039;&amp;#039;+&lt;br /&gt;
       &amp;#039;var inst:MyView;&amp;#039;+&lt;br /&gt;
       &amp;#039;begin&amp;#039;#13+&lt;br /&gt;
       &amp;#039;  inst := MyView.Find(&amp;#039;&amp;#039;(unCode=%1) and (unEntier=%2)&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;&amp;#039;,true,[iCode,iEntier]);&amp;#039;+&lt;br /&gt;
       &amp;#039;  if Assigned(inst)&amp;#039;+&lt;br /&gt;
       &amp;#039;     then Result := inst.sumMontant.Value&amp;#039;+&lt;br /&gt;
       &amp;#039;     else Result := 0;&amp;#039;+&lt;br /&gt;
       &amp;#039;end;&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    Args[0] := &amp;#039;D1&amp;#039;;&lt;br /&gt;
    Args[1] := 1;&lt;br /&gt;
    AExp  := 0.0;&lt;br /&gt;
    ARslt := doExecuteMethod(rg, &amp;#039;ViewTypeDef&amp;#039;, Args);&lt;br /&gt;
    Check(ARslt=AExp,Format(&amp;#039;Find in view failed (1), rslt:%0.2f expected:%0.2f&amp;#039;,[ARslt,AExp]));&lt;br /&gt;
&lt;br /&gt;
    Args[0] := &amp;#039;D1&amp;#039;;&lt;br /&gt;
    Args[1] := 0;&lt;br /&gt;
    AExp  := 0.0;&lt;br /&gt;
    ARslt := doExecuteMethod(rg, &amp;#039;ViewTypeDef&amp;#039;, Args);&lt;br /&gt;
    Check(ARslt=AExp,Format(&amp;#039;Find in view failed (0), rslt:%0.2f expected:%0.2f&amp;#039;,[ARslt,AExp]));&lt;br /&gt;
  finally&lt;br /&gt;
  ModelManager.DestroyPackage(sTypeDefPackage);&lt;br /&gt;
  doDeleteOperation(rg,&amp;#039;ViewTypeDef&amp;#039;);&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Requête:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select   &lt;br /&gt;
case when ISNULL(t0.unEntierA, 0)=1 then sum(ISNULL(t0.unMontantDT_2, 0)-ISNULL(t0.unMontantDT, 0)) else sum(ISNULL(t0.unMontantDT, 0)-ISNULL(t0.unMontantDT_2, 0)) end  as &amp;quot;sumMontant&amp;quot;,&lt;br /&gt;
t0.unMontantDT_CodeDevise  as &amp;quot;sumMontant_CodeDevise&amp;quot;,&lt;br /&gt;
Convert(DateTime,&amp;#039;2023-09-03 00:00:00&amp;#039;,120) as &amp;quot;sumMontant_Date&amp;quot;,&lt;br /&gt;
NULL  as &amp;quot;sumMontant_RPConv&amp;quot;,&lt;br /&gt;
case when ISNULL(t0.unEntierA, 0)=1 then sum(ISNULL(t0.unMontantDT_2_RPValue, 0)-ISNULL(t0.unMontantDT_RPValue, 0)) else sum(ISNULL(t0.unMontantDT_RPValue, 0)-ISNULL(t0.unMontantDT_2_RPValue, 0)) end  as &amp;quot;sumMontant_RPValue&amp;quot;,&lt;br /&gt;
NULL  as &amp;quot;sumMontant_TCConv&amp;quot;,&lt;br /&gt;
case when ISNULL(t0.unEntierA, 0)=1 then sum(ISNULL(t0.unMontantDT_2_TCValue, 0)-ISNULL(t0.unMontantDT_TCValue, 0)) else sum(ISNULL(t0.unMontantDT_TCValue, 0)-ISNULL(t0.unMontantDT_2_TCValue, 0)) end  as &amp;quot;sumMontant_TCValue&amp;quot;,t0.unCodeA  as &amp;quot;unCode&amp;quot;&lt;br /&gt;
from dbo.CLASSD t0&lt;br /&gt;
where (t0.unCodeA = &amp;#039;D1&amp;#039;) and (t0.unEntierA=1)&lt;br /&gt;
group by t0.unMontantDT_CodeDevise,t0.unCodeA,t0.unEntierA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Résultat :&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unCodeA                          unEntierA   unMontantDT           unMontantDT_2&lt;br /&gt;
================================================================================&lt;br /&gt;
D1                               1           2.00                  1.00&lt;br /&gt;
D1                               1           1.00                  2.00&lt;br /&gt;
D1                               0           1.00                  2.00&lt;br /&gt;
D1                               0           2.00                  1.00&lt;br /&gt;
&lt;br /&gt;
(4 rows affected)&lt;br /&gt;
&lt;br /&gt;
sumMontant            sumMontant_CodeDevise sumMontant_Date         sumMontant_RPConv sumMontant_RPValue    sumMontant_TCConv sumMontant_TCValue    unCode&lt;br /&gt;
==========================================================================================================================================================&lt;br /&gt;
0.00                  EUR                   2023-09-03 00:00:00.000 NULL              0.00                  NULL              0.00                  D1&lt;br /&gt;
&lt;br /&gt;
(1 row affected)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Completion time: 2023-09-03T10:46:38.3932410+02:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Syfre</name></author>
	</entry>
</feed>