unit Efectivo;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DBCtrls, Db, DBTables, Mask, Buttons, ExtCtrls, Grids, DBGrids,
  ComCtrls;

type
  TFormaSalidasEfectivo = class(TForm)
    Panel1: TPanel;
    EditCantidad: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    TablaRetiros: TTable;
    DataSource1: TDataSource;
    ListaConceptos: TDBComboBox;
    Panel2: TPanel;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    Calendario: TDateTimePicker;
    DBGrid1: TDBGrid;
    Guardar: TBitBtn;
    DBNavigator1: TDBNavigator;
    Panel3: TPanel;
    BitBtn1: TBitBtn;
    procedure BitBtn3Click(Sender: TObject);
    procedure CalendarioChange(Sender: TObject);
    procedure ListaConceptosDblClick(Sender: TObject);
    procedure GuardarClick(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormaSalidasEfectivo: TFormaSalidasEfectivo;

procedure AbreSalidasEfectivo(rut:string);
implementation

{$R *.DFM}
function leeempresa:String;
var
arch1:TextFile;
ruta:string;
begin
if FileExists('c:\sif2000.ini') then
begin
AssignFile(arch1,'c:\sif2000.ini');
reset(arch1);
Readln(arch1,ruta);
Readln(arch1,ruta);
CloseFile(arch1);
leeempresa:=ruta;
end
else
//MuestraMensaje('El Archivo de Inicio No Existe Revise su configuración');

end;

function ruta(linea:integer):String;
var
arch:TextFile;
aux,directorioactual:string;
i:integer;
begin
{GetDir(0,directorioactual);}
if FileExists(leeempresa) then
begin
AssignFile(arch,leeempresa);
Reset(arch);
for i:=1 to linea do
Readln(arch,aux);
CloseFile(arch);
ruta:=aux;
end
else
//MuestraMensaje('El Archivo '+leeempresa+' No Existe');
end;


procedure AbreSalidasEfectivo(rut:string);
var
arch:TextFile;
linea:string;
begin
with FormaSalidasEfectivo do
begin
TablaRetiros.DatabaseName:=rut;
  Calendario.Date:=Date;
 TablaRetiros.Open;
 TablaRetiros.Filter:='FEDOC_F='''+DateToStr(Calendario.Date)+'''';
 TablaRetiros.Filtered:=True;

//carga los conceptos
if FileExists(ruta(8)+'\Salidas.cnf') then
begin
Assignfile(arch,ruta(8)+'\Salidas.cnf');
Reset(arch);
ListaConceptos.Clear;
while not eof(arch) do
begin
Readln(arch,LINEA);
ListaConceptos.Items.Add(linea);
end;
CloseFile(arch);
end;//if

EditCantidad.Enabled:=False;
ListaConceptos.Enabled:=False;


//SumaTotal;


ShowModal;
end;
end;

procedure Tabulador_Enter(key:word);
begin
with  FormaSalidasEfectivo do
case Key of
13: begin
       Key := 0;
       Perform(WM_NEXTDLGCTL, 0, 0);              //MUEVE AL SIGUIENTE CONTROL
   end;

40: begin
       Key := 0;
       Perform(WM_NEXTDLGCTL, 0, 0);              //MUEVE AL SIGUIENTE CONTROL
   end;

  38:  begin
      Perform(WM_NEXTDLGCTL, 1,0 );              //MUEVE AL anterior CONTROL
//       Key := 0;
   end
end;//case
end;


function RedondeaTotal(su:real;Di:integer):real;
var
T:real;
decimal:integer;
ajustar:real;
modu:integer;
begin
Di:=Di*10;

decimal:=Trunc(Frac(su)*100);
T:=su;
modu:=decimal mod Di;
//MuestraMensaje(FloatToStr(modu));
if decimal<>0 then
begin
decimal:=decimal div Di;
if modu>0 then
T:=Trunc(su)+(((decimal*Di)+Di)/100)
else
T:=Trunc(su)+((decimal*Di)/100)

end;

RedondeaTotal:=T;

end;


Procedure SumaTotal;
var
Tabla:TTable;
suma:Real;
begin
with FormaSalidasEfectivo do
begin
Tabla:=TTable.Create(Application);
Tabla.TableName:=TablaRetiros.TableName;
Tabla.DatabaseName:=TablaRetiros.DatabaseName;
Tabla.Open;

   Tabla.First;
   suma:=0;
   while not Tabla.Eof do
   begin
   suma:=suma+Tabla.FieldByName('CANTIDAD').AsFloat;

   Tabla.Next;
   end;

Panel3.Caption:='Retiros  '+FloatToStr( RedondeaTotal(suma,2));
Tabla.Close;
Tabla.Free;
end;
end;



procedure TFormaSalidasEfectivo.BitBtn3Click(Sender: TObject);
var
ultimo:integer;
begin

TablaRetiros.Last;
ultimo:=TablaRetiros.FieldByName('CLDOC_F').AsInteger;
ultimo:=ultimo+1;

TablaRetiros.Append;
EditCantidad.Enabled:=True;
ListaConceptos.Enabled:=True;

 TablaRetiros.FieldByName('CLDOC_F').AsInteger:=ultimo;
 TablaRetiros.FieldByName('FEDOC_F').AsDateTime:=Date;
 TablaRetiros.FieldByName('HORA').AsString:=TimeToStr(Time);

 ListaConceptos.SetFocus;
end;

procedure TFormaSalidasEfectivo.CalendarioChange(Sender: TObject);
begin
try
TablaRetiros.Filter:='FEDOC_F='''+DateToStr(Calendario.Date)+'''';
TablaRetiros.Filtered:=True;
SumaTotal;
except
end;
end;

procedure TFormaSalidasEfectivo.ListaConceptosDblClick(Sender: TObject);
begin
winExec(PChar('notepad.exe '+ruta(8)+'\Salidas.cnf'),SW_SHOWNOACTIVATE);
end;

procedure TFormaSalidasEfectivo.GuardarClick(Sender: TObject);
begin
TablaRetiros.Post;
EditCantidad.Enabled:=False;
ListaConceptos.Enabled:=False;
SumaTotal;

end;

procedure TFormaSalidasEfectivo.BitBtn4Click(Sender: TObject);
begin
TablaRetiros.Delete;
SumaTotal;
end;

procedure TFormaSalidasEfectivo.FormShow(Sender: TObject);
begin
SumaTotal;
end;

procedure TFormaSalidasEfectivo.BitBtn1Click(Sender: TObject);
begin
Tag:=1;
Close;
end;

procedure TFormaSalidasEfectivo.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
Tabulador_Enter(key);
end;

end.
