unit uFormRegLancamentos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uFormModelodeCadastro, Menus, DB, StdCtrls, Buttons, ExtCtrls, Mask,
  DBCtrls, daDBEdit, Grids, DBGrids, WideStrings, SqlExpr, Provider, DBClient,
  FMTBcd, daEdit, MaskUtils;

type
  TfrmRegLancamentos = class(TfrmModelodeCadastro)
    Panel1: TPanel;
    Image1: TImage;
    Image5: TImage;
    Label2: TLabel;
    edtCodLote: TdaDBEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    edtCodTanque: TdaDBEdit;
    edtSobrevivencia: TdaDBEdit;
    edtDensidade: TdaDBEdit;
    edtBiomassa: TdaDBEdit;
    edtKg_m3: TdaDBEdit;
    edtPesoMedio: TdaDBEdit;
    edtDataEstocagem: TdaDBEdit;
    Label11: TLabel;
    Panel2: TPanel;
    Image6: TImage;
    Label36: TLabel;
    DBGrid1: TDBGrid;
    CDSRegLancamentos: TClientDataSet;
    DSPRegLancamentos: TDataSetProvider;
    SDSRegLancamentos: TSQLDataSet;
    SDSRegLancamentosID: TIntegerField;
    SDSRegLancamentosID_LOTE: TIntegerField;
    SDSRegLancamentosID_TANQUE: TIntegerField;
    SDSRegLancamentosSOBREVIVENCIA: TFMTBCDField;
    SDSRegLancamentosDENSIDADE: TFMTBCDField;
    SDSRegLancamentosBIOMASSA: TFMTBCDField;
    SDSRegLancamentosKG_M3: TFMTBCDField;
    SDSRegLancamentosPESO_MEDIO: TFMTBCDField;
    SDSRegLancamentosDATA_ESTOCAGEM: TDateField;
    SDSRegLancamentosFLAG: TSmallintField;
    CDSRegLancamentosID: TIntegerField;
    CDSRegLancamentosID_LOTE: TIntegerField;
    CDSRegLancamentosID_TANQUE: TIntegerField;
    CDSRegLancamentosSOBREVIVENCIA: TFMTBCDField;
    CDSRegLancamentosDENSIDADE: TFMTBCDField;
    CDSRegLancamentosBIOMASSA: TFMTBCDField;
    CDSRegLancamentosKG_M3: TFMTBCDField;
    CDSRegLancamentosPESO_MEDIO: TFMTBCDField;
    CDSRegLancamentosDATA_ESTOCAGEM: TDateField;
    SDSCadTanque: TSQLDataSet;
    DSPCadTanque: TDataSetProvider;
    CDSCadTanque: TClientDataSet;
    SDSCadTanqueID_LOTE: TIntegerField;
    SDSCadTanqueID_TANQUE: TIntegerField;
    SDSCadTanqueQTDE_ESTOCADA: TIntegerField;
    SDSCadTanqueVOLUME_TANQUE: TFMTBCDField;
    SDSCadTanqueFLAG: TSmallintField;
    CDSCadTanqueID_LOTE: TIntegerField;
    CDSCadTanqueID_TANQUE: TIntegerField;
    CDSCadTanqueQTDE_ESTOCADA: TIntegerField;
    CDSCadTanqueVOLUME_TANQUE: TFMTBCDField;
    CDSCadTanqueFLAG: TSmallintField;
    CDSRegLancamentosQuantidadeEstocada: TIntegerField;
    CDSRegLancamentosVolumeTanque: TFloatField;
    edtDataMovimento: TdaDBEdit;
    edtSemanas: TdaDBEdit;
    edtDias: TdaDBEdit;
    edtPeso: TdaDBEdit;
    edtQuantIndividual: TdaDBEdit;
    edtMortalidade: TdaDBEdit;
    edtGPD: TdaDBEdit;
    edtBiomassaDia: TdaDBEdit;
    edtTaxa: TdaDBEdit;
    edtRacao: TdaDBEdit;
    edtTratos: TdaDBEdit;
    edtRacao_AC: TdaDBEdit;
    edtFCA: TdaDBEdit;
    CDSItens_Lancamentos: TClientDataSet;
    SDSItens_Lancamentos: TSQLDataSet;
    DSPItens_Lancamentos: TDataSetProvider;
    DSItens_Lancamentos: TDataSource;
    SDSItens_LancamentosID_ENTRADA: TIntegerField;
    SDSItens_LancamentosDATA_MOVIMENTO: TDateField;
    SDSItens_LancamentosSEMANAS: TSmallintField;
    SDSItens_LancamentosDIAS: TSmallintField;
    SDSItens_LancamentosPESO_GR: TFMTBCDField;
    SDSItens_LancamentosQUANT_INDIV: TFMTBCDField;
    SDSItens_LancamentosMORTALIDADE_INDIV: TFMTBCDField;
    SDSItens_LancamentosGPD_GR_DIA: TFMTBCDField;
    SDSItens_LancamentosBIOMASSA_DIA: TFMTBCDField;
    SDSItens_LancamentosTAXA: TFMTBCDField;
    SDSItens_LancamentosRACAO_DIA: TFMTBCDField;
    SDSItens_LancamentosTRATOS_DIA: TFMTBCDField;
    SDSItens_LancamentosRACAO_AC: TFMTBCDField;
    SDSItens_LancamentosFCA_KG: TFMTBCDField;
    SDSItens_LancamentosFLAG: TSmallintField;
    CDSItens_LancamentosID_ENTRADA: TIntegerField;
    CDSItens_LancamentosDATA_MOVIMENTO: TDateField;
    CDSItens_LancamentosSEMANAS: TSmallintField;
    CDSItens_LancamentosDIAS: TSmallintField;
    CDSItens_LancamentosPESO_GR: TFMTBCDField;
    CDSItens_LancamentosQUANT_INDIV: TFMTBCDField;
    CDSItens_LancamentosMORTALIDADE_INDIV: TFMTBCDField;
    CDSItens_LancamentosGPD_GR_DIA: TFMTBCDField;
    CDSItens_LancamentosBIOMASSA_DIA: TFMTBCDField;
    CDSItens_LancamentosTAXA: TFMTBCDField;
    CDSItens_LancamentosRACAO_DIA: TFMTBCDField;
    CDSItens_LancamentosTRATOS_DIA: TFMTBCDField;
    CDSItens_LancamentosRACAO_AC: TFMTBCDField;
    CDSItens_LancamentosFCA_KG: TFMTBCDField;
    CDSItens_LancamentosFLAG: TSmallintField;
    qryLancamentos: TSQLQuery;
    CDSRegLancamentosFLAG: TSmallintField;
    Label12: TLabel;
    edtVolumeTanque: TdaEdit;
    CDSItens_LancamentosTotalMortalidade: TAggregateField;
    Label13: TLabel;
    edtDBTotalMortalidade: TDBText;
    Label14: TLabel;
    edtQuantEstocada: TdaEdit;
    Label15: TLabel;
    CDSItens_LancamentosSobrevivenciaCalc: TFloatField;
    procedure btnNovoClick(Sender: TObject);
    procedure edtCodLoteEnter(Sender: TObject);
    procedure edtCodLoteExit(Sender: TObject);
    procedure edtCodTanqueEnter(Sender: TObject);
    procedure edtCodTanqueExit(Sender: TObject);
    procedure btnSalvarClick(Sender: TObject);
    procedure CDSRegLancamentosAfterPost(DataSet: TDataSet);
    procedure edtDataEstocagemExit(Sender: TObject);
    procedure edtFCAKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure CDSItens_LancamentosCalcFields(DataSet: TDataSet);
  private
    procedure LimpaFormularios;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmRegLancamentos: TfrmRegLancamentos;

implementation

uses uDM, uFuncoes, uFormPesqLotes, uFormPesqTanques;

{$R *.dfm}

procedure TfrmRegLancamentos.btnNovoClick(Sender: TObject);
begin
  inherited;
  qryLancamentos.Close;
  qryLancamentos.Open;
  CDSRegLancamentosID.AsInteger := qryLancamentos.FieldByName('id_entrada').AsInteger;
  CDSItens_Lancamentos.Open;
  edtCodLote.SetFocus;
end;

procedure TfrmRegLancamentos.btnSalvarClick(Sender: TObject);
begin
  inherited;
  TRY
    dstGenerico.DataSet.Post;       
    AtivarBotoes(False);
    CaixadeMensagemAviso('Registro Gravado com Sucesso!');
    LimpaFormularios;
  Except
    ON EDataBaseError DO
      BEGIN
        CaixadeMensagemAviso('Deve conter [ TANQUES ] Preenchido!');
      END;
  END;
end;

procedure TfrmRegLancamentos.CDSItens_LancamentosCalcFields(DataSet: TDataSet);
begin
  inherited;

  CDSItens_LancamentosSobrevivenciaCalc.Value := 100-((CDSItens_Lancamentos.AggFields.FieldByName('TotalMortalidade').Value*(100))/3300);
end;

procedure TfrmRegLancamentos.CDSRegLancamentosAfterPost(DataSet: TDataSet);
begin
  inherited;
  CDSRegLancamentos.ApplyUpdates(-1);
  CDSItens_Lancamentos.ApplyUpdates(-1);
end;



procedure TfrmRegLancamentos.LimpaFormularios;
begin
  CDSRegLancamentos.Close;
  DBGrid1.Repaint;
  edtCodLote.Clear;
  PanelCenter.Enabled := False;
  btnNovo.SetFocus;
end;

procedure TfrmRegLancamentos.edtCodLoteEnter(Sender: TObject);
begin
  inherited;
  if (edtCodLote.Text = EmptyStr) then
  begin
    Application.CreateForm(TfrmPesqLotes, frmPesqLotes);
    if frmPesqLotes.ShowModal = mrOk then
    begin
       edtCodLote.Text := frmPesqLotes.CDSPesqLotesID_LOTE.AsString;
       frmPesqLotes.Close;
    end;                  
    FreeAndNil(frmPesqLotes);
  end;
end;

procedure TfrmRegLancamentos.edtCodLoteExit(Sender: TObject);
begin
  inherited;
  if edtCodLote.Text = EmptyStr then
  begin
    edtCodLote.SetFocus;
  end;
end;

procedure TfrmRegLancamentos.edtCodTanqueEnter(Sender: TObject);
begin
  inherited;
  if (edtCodTanque.Text = EmptyStr) then
  begin
    Application.CreateForm(TfrmPesqTanques, frmPesqTanques);
    if frmPesqTanques.ShowModal = mrOk then
    begin

           edtCodTanque.Text := frmPesqTanques.CDSPesqTanquesID_TANQUE.AsString;
       edtQuantEstocada.Text := frmPesqTanques.CDSPesqTanquesQTDE_ESTOCADA.AsString;
        edtVolumeTanque.Text := frmPesqTanques.CDSPesqTanquesVOLUME_TANQUE.AsString;
       frmPesqTanques.Close;
    end;
    FreeAndNil(frmPesqTanques);
  end;
end;

procedure TfrmRegLancamentos.edtCodTanqueExit(Sender: TObject);
begin
  inherited;
  if edtCodTanque.Text = EmptyStr then
  begin
    edtCodTanque.SetFocus;
  end;
end;

procedure TfrmRegLancamentos.edtDataEstocagemExit(Sender: TObject);
begin
  inherited;
  Panel2.Enabled := True;
  edtDataMovimento.SetFocus;
end;

procedure TfrmRegLancamentos.edtFCAKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  Case Key of
    VK_RETURN:
    BEGIN
      edtDataMovimento.SetFocus;
      //CDSItens_LancamentosID.AsInteger := CDSRegLancamentosID.AsInteger;
      CDSItens_LancamentosID_ENTRADA.AsInteger := CDSRegLancamentosID.AsInteger;
      CDSItens_Lancamentos.Post;
      CDSItens_Lancamentos.Append;
    END;

  End;  
end;

end.
