Advertisement
filhotecmail

Descontos Interface

Sep 24th, 2017
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.80 KB | None | 0 0
  1. unit DescontoUnitario;
  2.  
  3. interface
  4.  
  5. uses SysUtils,DB,AcbrUtil;
  6.  
  7.  type TTipoDesconto = (aTpValor,aTpPercentual);
  8.  
  9.  type IDescontoUnitario = interface
  10.     ['{58F2148F-3468-4B8F-8D18-DF84B034FEB0}']
  11.    function AddNumerodaVenda(NumVenda: INteger): Integer;
  12.    function AddPosicaodoItem(Posicao: Integer): Integer;
  13.    function AddValorUnitarioProd(aValor: Currency): Currency;
  14.    function AddValordoDesconto(aValor: Currency): Currency;
  15.    Function AddQuantidade(aQuantidade: Currency): Currency;
  16.    function AddPercentualDesconto(aValor: Currency): Currency;
  17.    Function VerificaPermissaodoUsuario(apercentdescUser: Currency): Boolean;
  18.    Procedure ContabilizaValordoDesconto(aDatasetVendas,aDatasetItens: Tdataset);
  19.  
  20.  end;
  21.  
  22.  type TDescontoUnitario = class(TInterfacedObject,IDescontoUnitario )
  23.  private
  24.     FTipodesconto: TTipoDesconto;
  25.     NumeroVenda: integer;
  26.     PosicaoItem: INteger;
  27.     ValorUn: Currency;
  28.     ValorDesconto: Currency;
  29.     Quantidade: Currency;
  30.     PercentualDesconto: Currency;
  31.  {Private declaration}
  32.  protected
  33.  {Protected declaration}
  34.  public
  35.  {Public declaration declaration}
  36.    function New: IDescontoUnitario;
  37.    function AddNumerodaVenda(NumVenda: INteger): Integer;
  38.    function AddPosicaodoItem(Posicao: Integer): Integer;
  39.    function AddValorUnitarioProd(aValor: Currency): Currency;
  40.    function AddPercentualDesconto(aValor: Currency): Currency;
  41.    function AddValordoDesconto(aValor: Currency): Currency;
  42.    Function AddQuantidade(aQuantidade: Currency): Currency;
  43.    function RetornaPct(adescontoValue,aValeUn,aQtd: Currency): Currency;
  44.    Function VerificaPermissaodoUsuario(apercentdescUser: Currency): Boolean;
  45.    Function CalulaValordoDesconto: Currency;
  46.    Procedure ContabilizaValordoDesconto(aDatasetVendas,aDatasetItens: Tdataset);
  47.    property Tipodesconto: TTipoDesconto read FTipodesconto write FTipodesconto;
  48.    procedure AfterConstruction; Override;
  49.    procedure BeforeDestruction; Override;
  50.    constructor Create; (*Metodos do Constructor*)
  51.    destructor Destroy; override;
  52.  
  53.  published
  54.  {Protected declaration}
  55.  end;
  56.  
  57. implementation
  58.  
  59. { TDescontoUnitario }
  60.  
  61. uses FuncoesLibraryClass;
  62.  
  63. function TDescontoUnitario.AddNumerodaVenda(NumVenda: INteger): Integer;
  64. begin
  65.  NumeroVenda:= NumVenda;
  66. end;
  67.  
  68. function TDescontoUnitario.AddPercentualDesconto(aValor: Currency): Currency;
  69. begin
  70.   PercentualDesconto := aValor;
  71.   Result:=  (ValorUn * PercentualDesconto) / 100;
  72.   ValorDesconto:= Result;
  73. end;
  74.  
  75. function TDescontoUnitario.AddPosicaodoItem(Posicao: Integer): Integer;
  76. begin
  77.  PosicaoItem := Posicao;
  78. end;
  79.  
  80. function TDescontoUnitario.AddQuantidade(aQuantidade: Currency): Currency;
  81. begin
  82.   Quantidade:= aQuantidade;
  83.   Result:= Quantidade;
  84. end;
  85.  
  86. function TDescontoUnitario.AddValordoDesconto(aValor: Currency): Currency;
  87. begin
  88.  ValorDesconto:= aValor;
  89.  Result:= RetornaPct(aValor,ValorUn,Quantidade);
  90. end;
  91.  
  92. function TDescontoUnitario.AddValorUnitarioProd(aValor: Currency): Currency;
  93. begin
  94.   ValorUn:= aValor;
  95.  
  96. end;
  97.  
  98. procedure TDescontoUnitario.AfterConstruction;
  99. begin
  100.   inherited AfterConstruction;
  101.  
  102. end;
  103.  
  104. procedure TDescontoUnitario.BeforeDestruction;
  105. begin
  106.   inherited BeforeDestruction;
  107.  
  108. end;
  109.  
  110. function TDescontoUnitario.CalulaValordoDesconto: Currency;
  111. begin
  112.  
  113. end;
  114.  
  115. procedure TDescontoUnitario.ContabilizaValordoDesconto(aDatasetVendas,aDatasetItens: Tdataset);
  116.  var ValorTotalDescontos: Currency;
  117. begin
  118.   CarregaWait('Aplicando descontos na venda ' ,500);
  119.   aDatasetItens.Edit;
  120.   aDatasetItens.FieldByName('ITENS_DESCVL').AsCurrency:= 0;
  121.   aDatasetItens.FieldByName('ITENS_DESCVL').AsCurrency := ValorDesconto;
  122.   aDatasetItens.FieldByName('ITENS_TOTAL').AsFloat :=
  123.   (aDatasetItens.FieldByName('ITENS_VLUN').AsFloat - ValorDesconto) *
  124.    aDatasetItens.FieldByName('ITENS_QUANTIDADE').AsFloat;
  125.  aDatasetItens.FieldByName('ITENS_SITUACAO').AsString := 'VDC';
  126.  aDatasetItens.Post;
  127.  aDatasetItens.Refresh;
  128.  
  129.  ValorTotalDescontos := 0;
  130.       aDatasetItens.First;
  131.       while not aDatasetItens.Eof do
  132.       begin
  133.         CarregaWait('Ajustando descontos ' ,200);
  134.         ValorTotalDescontos := ValorTotalDescontos +
  135.           aDatasetItens.FieldByName('ITENS_DESCVL').AsCurrency;
  136.         aDatasetItens.Next;
  137.       end;
  138.       { aqui eu posiciono a tabela da venda em edição }
  139.       aDatasetVendas.Edit;
  140.       { Aqui eu começo a posicionar os totalizadores da venda ja com os calculos dos descontos }
  141.       aDatasetVendas.FieldByName('VENDA_DESCONTOS').AsFloat :=
  142.         ValorTotalDescontos;
  143.       // (DESC * TDtmItensdaVenda.CDSITENS.FieldByName('ITENS_QUANTIDADE').AsFloat);
  144.  
  145.       { Alimento aqui o valor total da venda na tabela CDSVENDA }
  146.      aDatasetVendas.FieldByName('VENDA_VALORTOTAL').AsFloat :=
  147.         AcbrUtil.RoundABNT(aDatasetVendas.FieldByName('VENDA_VALORVENDA')
  148.         .AsCurrency + aDatasetVendas.FieldByName('VENDA_ACRESCIMOS')
  149.         .AsCurrency - aDatasetVendas.FieldByName('VENDA_DESCONTOS')
  150.         .AsCurrency, 2);
  151.       { Aqui eu gravo a tabela da venda }
  152.       aDatasetVendas.Post;
  153.    CarregaWait('Desconto Aplicado com sucesso! ' ,1000);
  154. end;
  155.  
  156. constructor TDescontoUnitario.Create;
  157. begin
  158.  inherited Create;
  159. end;
  160.  
  161. destructor TDescontoUnitario.Destroy;
  162. begin
  163.  
  164.   inherited;
  165. end;
  166.  
  167.  function TDescontoUnitario.New: IDescontoUnitario;
  168. begin
  169.   Result:= TDescontoUnitario.Create;
  170. end;
  171.  
  172. function TDescontoUnitario.RetornaPct(adescontoValue, aValeUn, aQtd: Currency): Currency;
  173. begin
  174.   Result:= (adescontoValue / aValeUn * aQtd ) * 100;
  175. end;
  176.  
  177. function TDescontoUnitario.VerificaPermissaodoUsuario(apercentdescUser: Currency): Boolean;
  178. begin
  179.  
  180.   if apercentdescUser < PercentualDesconto then begin
  181.     Result:= False;
  182.     CarregaWait('Usuário sem permissão para aplicar descontos ' ,3000);
  183.   end else
  184.   if apercentdescUser >= PercentualDesconto then begin
  185.     Result:= true;
  186.  
  187.   end;
  188.  
  189. end;
  190.  
  191. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement