Advertisement
filhotecmail

MovFinalizadorasModel

Feb 27th, 2020
694
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.87 KB | None | 0 0
  1. unit LeopardGerenciador.Core.Financeiro.RelatoriosPDV.MovFinalizadoras.Model.MovFinalizadorasModel;
  2.  
  3. interface
  4.  
  5.    uses
  6.     System.Classes,
  7.     System.SysUtils,
  8.     System.VarUtils,
  9.     System.Variants,
  10.     // Vcl
  11.     vcl.Dialogs,
  12.     Vcl.Graphics,
  13.     Vcl.ExtCtrls,
  14.     Vcl.Forms,
  15.     Vcl.StdCtrls,
  16.     Vcl.Consts,
  17.     Vcl.Controls,
  18.     Data.DB,
  19.     // Leopard
  20.     LeopardDriverDataset,
  21.     StringsH.Helpers.Model,
  22.     FireDAC.Phys.Intf,FireDAC.Stan.Option, FireDAC.Stan.Intf, FireDAC.Comp.Client,
  23.     Dialog.Rai.Model,
  24.     LeopardGerenciador.BaseClass.InterfaceModelGenericClass.InterfaceModelGenericBaseClass,
  25.     LeopardGerenciador.BaseClass.InjectableBaseclass.InjectableBaseClassModel,
  26.     LeopardGerenciador.Core.Financeiro.RelatoriosPDV.MovFinalizadoras.Dependency.MovFinalizadorasDependency;
  27.  
  28.    type IMovFinalizadorasModel = Interface( IModelBaseInterface )
  29.       ['{680CA34F-3B71-4A60-A67E-7D92D8304697}']
  30.      function Inject( InjectDeps: TProc<TObject> ):TInterfacedObject;
  31.      function SetEvents( InjectDeps: TProc<TObject> ):TInterfacedObject;
  32.      function Response( Done: TProc<TObject>; Fail: TProc<Exception> ):TInterfacedObject;
  33.  
  34.      function PrintData:TInterfacedObject;
  35.      function ExportToXml:TInterfacedObject;
  36.      function ExportToCsv:TInterfacedObject;
  37.      function ExportToJson:TInterfacedObject;
  38.  
  39.    End;
  40.  
  41.    type TMovFinalizadorasModel = class(TInterfacedObject,IMovFinalizadorasModel)
  42.  
  43.      strict private
  44.       FBaseModel: IModelBaseInterface;
  45.       FDeps: TMovFinalizadoraDeps;
  46.       FData: TLeopardDriverDataset;
  47.       procedure SetDeps(const Value: TInjectableBaseClassModel); virtual; abstract;
  48.       function getFDeps: TInjectableBaseClassModel; virtual; abstract;
  49.       function MakeDataset(  Done: TProc<TObject,IModelBaseInterface> ):TInterfacedObject; overload; virtual; abstract;
  50.       function MakeDataset( const GeneratorName,Field: String ;Done: TProc<TObject,IModelBaseInterface> ):TInterfacedObject; overload; virtual; abstract;
  51.       procedure AlertEvent;
  52.   public
  53.  
  54.      function Inject( InjectDeps: TProc<TObject> ):TInterfacedObject;
  55.      function SetEvents( InjectDeps: TProc<TObject> ):TInterfacedObject;
  56.      function Response( Done: TProc<TObject>; Fail: TProc<Exception> ):TInterfacedObject;
  57.  
  58.      function PrintData:TInterfacedObject;
  59.      function ExportToXml:TInterfacedObject;
  60.      function ExportToCsv:TInterfacedObject;
  61.      function ExportToJson:TInterfacedObject;
  62.  
  63.     procedure AfterConstruction; override;
  64.     procedure BeforeDestruction; override;
  65.     class function New: IMovFinalizadorasModel;
  66.  
  67.    end;
  68.  
  69. implementation
  70.  
  71. { TMovFinalizadorasModel }
  72.  
  73. procedure TMovFinalizadorasModel.AfterConstruction;
  74. begin
  75.   inherited AfterConstruction;
  76.   FBaseModel:= TModelBaseObjConcret.New;
  77.  
  78.   FDeps := TMovFinalizadoraDeps.Create;
  79.   FDeps.Response := FBaseModel.Deps.Response;
  80.   FDeps.Parametros := FBaseModel.Deps.Parametros;
  81.   FDeps.Eventos    := FBaseModel.Deps.Eventos;
  82.  
  83.   FBaseModel.MakeDataset(
  84.   procedure
  85.   ( ResData: TObject; Model: IModelBaseInterface )
  86.   begin
  87.    FData:= TMovFinalizadoraDeps(ResData).Response.DataL[0];
  88.    FDeps.PostEventFB.AlertEvent := AlertEvent;
  89.    FDeps.NameEvent := 'MovFinalizadorasEvent';
  90.    FDeps.Connection := FData.DataFire.Connection;
  91.    FDeps.UsePostEvent := Not FDeps.UsePostEvent;
  92.   end);
  93.  
  94. end;
  95.  
  96. procedure TMovFinalizadorasModel.AlertEvent;
  97.  const cFIN_VALORREC: string = 'FIN_VALORREC';
  98. var
  99.   vFinRec: Extended;
  100.   RecCount: integer;
  101. begin
  102.   FData.Refresh;
  103.   vFinRec := 0.00;
  104.   RecCount:= 0;
  105.   if not FData.IsEmpty then
  106.   begin
  107.     FData.DataFire.ForEach(FData.DataFire,
  108.     procedure
  109.     begin
  110.      vFinRec:= vFinRec + FData.Field('FIN_VALORREC').AsCurrency
  111.     end);
  112.     RecCount:= FData.RecCount;
  113.     FData.First;
  114.   end;
  115.  if Assigned(FDeps.OnSumValuesEvent) then
  116.     FDeps.OnSumValuesEvent([vFinRec,RecCount]);
  117. end;
  118.  
  119. procedure TMovFinalizadorasModel.BeforeDestruction;
  120. begin
  121.   inherited BeforeDestruction;
  122.  
  123. end;
  124.  
  125. function TMovFinalizadorasModel.ExportToCsv: TInterfacedObject;
  126. begin
  127.  FData.SaveToCstFile('',False);
  128.  result:= Self;
  129. end;
  130.  
  131. function TMovFinalizadorasModel.ExportToJson: TInterfacedObject;
  132. begin
  133.  FData.SaveToJsonFile('',False);
  134.  result:= Self;
  135. end;
  136.  
  137. function TMovFinalizadorasModel.ExportToXml: TInterfacedObject;
  138. begin
  139.  FData.SaveToXmlFile('',False);
  140.  result:= Self;
  141. end;
  142.  
  143. function TMovFinalizadorasModel.Inject(InjectDeps: TProc<TObject>): TInterfacedObject;
  144. begin
  145.  
  146.  if Assigned(InjectDeps) then
  147.     InjectDeps(FDeps);
  148.  
  149.  Result:= Self;
  150. end;
  151.  
  152. class function TMovFinalizadorasModel.New: IMovFinalizadorasModel;
  153. begin
  154.  Result:= TMovFinalizadorasModel.Create;
  155. end;
  156.  
  157. function TMovFinalizadorasModel.PrintData: TInterfacedObject;
  158. begin
  159.  
  160. end;
  161.  
  162. function TMovFinalizadorasModel.Response(Done: TProc<TObject>; Fail: TProc<Exception>): TInterfacedObject;
  163. begin
  164.   try
  165.    try
  166.     FData.Open(FDeps.GetSqlData,
  167.                [ FDeps.Parametros.DataInicial,
  168.                  FDeps.Parametros.DataFinal,
  169.                  Tcaption(FDeps.ParametrosFinalizadora.DescricaoFinalizadora).CheckNullisTodos,
  170.                  Tcaption(FDeps.Parametros.NumeroPDV).CheckNullisTodos,
  171.                  FDeps.ParametrosFinalizadora.NumerodaVenda,
  172.                  Tcaption(FDeps.ParametrosFinalizadora.SituacaoDaVenda).CheckNullisTodos ],
  173.                      [FtDate,
  174.                       FtDate,
  175.                       FtString,
  176.                       FtString,
  177.                       FtString,
  178.                       ftString]).AMaskMoneytoAllField('###,##0.00');
  179.  
  180.    finally
  181.     if FData.Active then
  182.     begin
  183.        if Assigned(Done) then
  184.           Done(FDeps);
  185.        AlertEvent;
  186.     end;
  187.  
  188.    end;
  189.   Except
  190.    on E: Exception do
  191.       if Assigned(Fail) then
  192.          Fail(E);
  193.   end;
  194.  Result:= Self;
  195. end;
  196.  
  197. function TMovFinalizadorasModel.SetEvents(InjectDeps: TProc<TObject>): TInterfacedObject;
  198. begin
  199.  
  200. end;
  201.  
  202. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement