unit movinv;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  StdCtrls, Forms, DBCtrls, DB, DBGrids, Mask, DBTables, Grids, ExtCtrls,
  Buttons, Menus, Spin,Dialogos, ComCtrls, Tabnotbk,checa, Graficos,{concen,}
  Dialogs;

type
  TFormaMovimientosInventario = class(TForm)
    TIPMOV: TLabel;
    TablaInventario: TTable;
    TablaConcepto: TTable;
    DialogoImpresora: TPrintDialog;
    DataSource3: TDataSource;
    TablaDeta: TTable;
    DataSource2: TDataSource;
    Tablamovinve: TTable;
    Tablamovinvd: TTable;
    TablamovinvdCANTI_MI: TFloatField;
    TablamovinvdCLPRO_MI: TStringField;
    TablamovinvdCOSUN_MI: TFloatField;
    TablamovinvdCLDOC_MI: TStringField;
    DataSource1: TDataSource;
    MainMenu1: TMainMenu;
    Archivo1: TMenuItem;
    Salir1: TMenuItem;
    Registro1: TMenuItem;
    Nuevo1: TMenuItem;
    Modificar1: TMenuItem;
    Guardar1: TMenuItem;
    Buscar1: TMenuItem;
    Imprimir1: TMenuItem;
    Reportes1: TMenuItem;
    Consultas1: TMenuItem;
    Ayuda1: TMenuItem;
    TablaReporte: TTable;
    DataSource4: TDataSource;
    TablaReporteCLDOC_MI: TFloatField;
    TablaReporteCLPRO_MI: TStringField;
    TablaReporteDESCR_MI: TStringField;
    TablaReporteFEDOC_MI: TDateField;
    TablaReporteCANTI_MI: TFloatField;
    TablaReportePUNIT_MI: TFloatField;
    TablaReporteCOSUN_MI: TFloatField;
    TablaDetaCANTIDAD: TFloatField;
    TablaDetaCLAVE: TStringField;
    TablaDetaDESCRIPCION: TStringField;
    TablaDetaCOSTO: TCurrencyField;
    TablaDetaPRECIO: TCurrencyField;
    TablaDetaIMPORTE: TCurrencyField;
    dos: TLabel;
    uno: TLabel;
    Bevel1: TBevel;
    Panel1: TPanel;
    BotonNuevo: TSpeedButton;
    BotonGuardar: TSpeedButton;
    BotonBuscar: TSpeedButton;
    BotonImprimir: TSpeedButton;
    BotonSalir: TSpeedButton;
    BotonMail: TSpeedButton;
    Usuario: TLabel;
    Botonsiguiente1: TBitBtn;
    Botonanterior: TBitBtn;
    Botonprimero: TBitBtn;
    Botonultimo: TBitBtn;
    Panel3: TPanel;
    Caja: TPanel;
    Label3: TLabel;
    Label1: TLabel;
    Label4: TLabel;
    Label2: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    EditFEDOC_MI: TDBEdit;
    EditAlmacen: TSpinEdit;
    EditCLDOC_MI: TDBEdit;
    EditREFMO_MI: TDBEdit;
    EditCLPRO_MI: TDBEdit;
    EditTIMOV_MI: TDBEdit;
    Detalle: TDBGrid;
    Entradas1: TMenuItem;
    Salidas1: TMenuItem;
    PopupMenu1: TPopupMenu;
    Costeo1: TMenuItem;
    Utilidad1: TMenuItem;
    Temas1: TMenuItem;
    Bevel2: TBevel;
    Bevel3: TBevel;
    Bevel4: TBevel;
    Bevel5: TBevel;
    Bevel6: TBevel;
    Bevel7: TBevel;
    aa: TLabel;
    BotonPreliminar: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure DBNavigatorClick(Sender: TObject; Button: TNavigateBtn);
    procedure BotonsiguienteClick(Sender: TObject);
    procedure BotonprimeroClick(Sender: TObject);
    procedure BotonultimoClick(Sender: TObject);
    procedure BotonanteriorClick(Sender: TObject);
    procedure BotonSalirClick(Sender: TObject);
    procedure EditTIMOV_MIKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BotonNuevoClick(Sender: TObject);
    procedure EditFEDOC_MIEnter(Sender: TObject);
    procedure DetalleColEnter(Sender: TObject);
    procedure BotonGuardarClick(Sender: TObject);
    procedure EditCLDOC_MIEnter(Sender: TObject);
    procedure EditTIMOV_MIExit(Sender: TObject);
    procedure EditFEDOC_MIKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditCLDOC_MIKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditCLPRO_MIKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditAlmacenKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditREFMO_MIKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DetalleKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormActivate(Sender: TObject);
    procedure BotonBuscarClick(Sender: TObject);
    procedure Consultas1Click(Sender: TObject);
    procedure EditREFMO_MIExit(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FolderChange(Sender: TObject; NewTab: Integer;
      var AllowChange: Boolean);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure AreaGraficaPaint(Sender: TObject);
    procedure BotonImprimirClick(Sender: TObject);
    procedure BotonMailClick(Sender: TObject);
    procedure EditCLPRO_MIEnter(Sender: TObject);
    procedure EditAlmacenEnter(Sender: TObject);
    procedure EditREFMO_MIEnter(Sender: TObject);
    procedure DetalleColExit(Sender: TObject);
    procedure EditFEDOC_MIExit(Sender: TObject);
    procedure EditFEDOC_MIMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditCLDOC_MIMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditCLPRO_MIMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditAlmacenMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditREFMO_MIMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditTIMOV_MIMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditTIMOV_MIEnter(Sender: TObject);
    procedure Entradas1Click(Sender: TObject);
    procedure Salidas1Click(Sender: TObject);
    procedure TablamovinveEditError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure TablamovinvePostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure BotonNuevoMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonGuardarMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonBuscarMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonMailMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonImprimirMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Utilidad1Click(Sender: TObject);
    procedure Temas1Click(Sender: TObject);
    procedure BotonPreliminarClick(Sender: TObject);
    procedure DetalleKeyPress(Sender: TObject; var Key: Char);
  private
    { private declarations }
  public
    { public declarations }
  end;


var
  FormaMovimientosInventario: TFormaMovimientosInventario;
  ultimo:longInt;
  indice:integer;
  entrada,salida:Array [1..12]of Real;
  nombreformato:string;

procedure posicionamovimientos(clave:string);
implementation

uses ConMovinv, ConPromo, ConPro, buscar, consulta, cerrar,formato, mail,
  barras, formatos,describe,progreso, Costeo,AyudaMod, edicion;

{$R *.DFM}



procedure generamail;
type
movinv=record
fecha:String[60];
numero:integer;
proveedor:String[8];
almacen:String[5];
Documento:String[8];
Tipo:Integer;
cantidad:Real;
Clave:String[15];
Descripcion:String[40];
costo:Real;
precio:Real;
end;

var
mov:movinv;
arch:file of movinv;
a,m,d:Word;
nume,ante:LongInt;
begin
with FormaMovimientosInventario do
begin
Tablamovinve.IndexName:='FEDOC_MI';
Tablamovinve.SetRange([FormaMail.Fecha.Text],[FormaMail.Fecha.Text]);
nume:=1;
ante:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;

if FormaMail.Fecha.Text<>'' then
DecodeDate(StrToDateTime(FormaMail.Fecha.Text),a,m,d);
AssignFile(arch,leeruta+'\'+InttoStr(d)+InttoStr(m)+InttoStr(a)+'.mai');
ReWrite(arch);
Tablamovinve.First;
while not Tablamovinve.Eof do
begin
Tablamovinve.Edit;
mov.fecha:=Tablamovinve.FieldByName('FEDOC_MI').AsString;
if Tablamovinve.FieldByName('CLDOC_MI').AsString='' then
mov.numero:=0
else
mov.numero:=nume;
mov.proveedor:=Tablamovinve.FieldByName('CLPRV_MI').AsString;
mov.almacen:=Tablamovinve.FieldByName('NALMA_MI').AsString;
mov.Documento:=Tablamovinve.FieldByName('REFMO_MI').AsString;
if Tablamovinve.FieldByName('TIMOV_MI').AsString='' then
mov.Tipo:=0
else
mov.Tipo:=Tablamovinve.FieldByName('TIMOV_MI').AsInteger;
mov.cantidad:=Tablamovinve.FieldByName('CANTI_MI').AsFloat;
mov.Clave:=Tablamovinve.FieldByName('CLPRO_MI').AsString;
mov.Descripcion:=Tablamovinve.FieldByName('DESCR_MI').AsString;
mov.costo:=Tablamovinve.FieldByName('COSUN_MI').AsFloat;
mov.precio:=Tablamovinve.FieldByName('PUNIT_MI').AsFloat;
Write(arch,mov);
Tablamovinve.Next;
if Tablamovinve.FieldByName('CLDOC_MI').AsInteger<>ante then
begin
ante:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
nume:=nume+1;
end;
end;
CloseFile(arch);
Tablamovinve.IndexName:='IMOVINV';
end;
end;


procedure actualizamail;
type
movinv=record
fecha:String[60];
numero:integer;
proveedor:String[8];
almacen:String[5];
Documento:String[8];
Tipo:Integer;
cantidad:Real;
Clave:String[15];
Descripcion:String[40];
costo:Real;
precio:Real;
end;

var
mov:movinv;
arch:file of movinv;
a,m,d:Word;
ultimo,i,mayor:longint;
begin
with FormaMovimientosInventario do
begin

DecodeDate(StrToDateTime(FormaMail.Fecha.Text),a,m,d);
if (FileExists(leeruta+'\'+InttoStr(d)+InttoStr(m)+InttoStr(a)+'.mai'))and (FormaMail.Fecha.Text<>'') then
begin

{MuestraMensaje('si existe');}
AssignFile(arch,leeruta+'\'+InttoStr(d)+InttoStr(m)+InttoStr(a)+'.mai');
Reset(arch);
Tablamovinve.Last;
ultimo:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
ultimo:=ultimo+1;

for i:=0 to FileSize(arch)-1 do
begin
Read(arch,mov);
Tablamovinve.Last;
{ultimo:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
ultimo:=ultimo+1;}
Tablamovinve.Insert;
Tablamovinve.FieldByName('FEDOC_MI').AsString:=mov.fecha;
Tablamovinve.FieldByName('CLDOC_MI').AsInteger:=ultimo+mov.numero-1;
Tablamovinve.FieldByName('CLPRV_MI').AsString:=mov.proveedor;
Tablamovinve.FieldByName('NALMA_MI').AsString:=mov.almacen;
Tablamovinve.FieldByName('REFMO_MI').AsString:=mov.Documento;
Tablamovinve.FieldByName('TIMOV_MI').AsInteger:=mov.Tipo;

TablaInventario.First;

if mov.Tipo>=51 then
begin
if TablaInventario.FindKey([mov.Clave]) then
begin
TablaInventario.Edit;
TablaInventario.FieldByName('EXIST_I').AsFloat:=TablaInventario.FieldByName('EXIST_I').AsFloat+mov.cantidad;
TablaInventario.Post;
end
else
begin
TablaInventario.Insert;
TablaInventario.FieldByName('CLPRO_MI').AsString:=mov.Clave;
TablaInventario.FieldByName('DESCR_MI').AsString:=mov.Descripcion;
TablaInventario.FieldByName('EXIST_I').AsFloat:=TablaInventario.FieldByName('EXIST_I').AsFloat+mov.cantidad;
TablaInventario.Post;
end;


end
else
begin
if TablaInventario.FindKey([mov.Clave]) then
begin
TablaInventario.Edit;
TablaInventario.FieldByName('EXIST_I').AsFloat:=TablaInventario.FieldByName('EXIST_I').AsFloat-mov.cantidad;
TablaInventario.Post;
end
else
begin
TablaInventario.Insert;
TablaInventario.FieldByName('CLPRO_MI').AsString:=mov.Clave;
TablaInventario.FieldByName('DESCR_MI').AsString:=mov.Descripcion;
TablaInventario.FieldByName('EXIST_I').AsFloat:=TablaInventario.FieldByName('EXIST_I').AsFloat-mov.cantidad;
TablaInventario.Post;
end;

end;
Tablamovinve.FieldByName('CANTI_MI').AsFloat:=mov.cantidad;
Tablamovinve.FieldByName('CLPRO_MI').AsString:=mov.Clave;
Tablamovinve.FieldByName('DESCR_MI').AsString:=mov.Descripcion;
Tablamovinve.FieldByName('COSUN_MI').AsFloat:=mov.costo;
Tablamovinve.FieldByName('PUNIT_MI').AsFloat:=mov.precio;
Tablamovinve.Post;
end;

CloseFile(arch);
end
else
MuestraMensaje('El Archivo No Existe');

end;
end;



procedure asignatipo;
type
datos=record
archivo:String[60];
descrip:String[125];
end;
var
dat:datos;
faltan:Boolean;
arch,arch2:file of datos;
i:integer;
begin
with FormaConsulta do
begin
{MuestraMensaje(leeruta+'\report\inventar.for');}
AssignFile(arch,leeruta+'\report\movinven.for');
Reset(arch);
Archivo.Items.Clear;
Descripcion.Clear;
faltan:=True;
for i:=0 to FileSize(arch)-1 do
begin
Read(arch,dat);
if FileExists(Dat.archivo) then
Archivo.Items.Append(Dat.archivo)
else
faltan:=False;
end;
CloseFile(arch);


if faltan=False then
begin
AssignFile(arch,leeruta+'\report\movinven.for');
Reset(arch);
AssignFile(arch2,leeruta+'\report\Cliente2.for');
Rewrite(arch2);

for i:=0 to FileSize(arch)-1 do
begin
Read(arch,dat);
if FileExists(Dat.archivo) then
write(arch2,dat);
end;
CloseFile(arch);
CloseFile(arch2);
{******************}
AssignFile(arch,leeruta+'\report\movinven.for');
Rewrite(arch);
AssignFile(arch2,leeruta+'\report\Cliente2.for');
Reset(arch2);

for i:=0 to FileSize(arch2)-1 do
begin
Read(arch2,dat);
if FileExists(Dat.archivo) then
write(arch,dat);
end;
CloseFile(arch);
CloseFile(arch2);
end;


Archivo.Text:=Archivo.Items[0];
Descripcion.lines.Add(Dat.Descrip);

ReporteDe.Caption:='Reporte de Clientes';
Archi.Caption:='movinven.for';
end;

end;





procedure calcuaexistencias;
begin
end;


procedure calculamontos;
var
a,m,d:word;
begin
With FormaMovimientosInventario do
begin
entrada[1]:=0;entrada[2]:=0;entrada[3]:=0;entrada[4]:=0;entrada[5]:=0;entrada[6]:=0;entrada[7]:=0;entrada[8]:=0;entrada[9]:=0;entrada[10]:=0;entrada[11]:=0;entrada[12]:=0;
salida[1]:=0;salida[2]:=0;salida[3]:=0;salida[4]:=0;salida[5]:=0;salida[6]:=0;salida[7]:=0;salida[8]:=0;salida[9]:=0;salida[10]:=0;salida[11]:=0;salida[12]:=0;
{NumeroMov.Caption:='Numero de Movtos';}
{NumeroMov.Caption:=NumeroMov.Caption+'  '+IntToStr(TablaCuCobrar.RecordCount);}
TablaReporte.First;

while not TablaReporte.EOF do
begin

DecodeDate(TablaReporte.FieldByName('FEDOC_MI').AsDateTime,a,m,d);
if TablaReporte.FieldByName('TIMOV_MI').AsString<>'' then
if TablaReporte.FieldByName('TIMOV_MI').AsInteger <50 then
begin
entrada[m]:=entrada[m]+TablaReporte.FieldByName('canti_mi').AsFloat;
end
else
begin
salida[m]:=salida[m]+TablaReporte.FieldByName('canti_mi').AsFloat;
end;

TablaReporte.Next;
end;
{asignavalores;}
end;
end;

procedure dibujabarras;
var i:integer;
    max:integer;
    inter:Real;
    Etiq:array [1..12] of String[3];
begin
{calculamontos;
Etiq[1]:='Ene';
Etiq[2]:='Feb';
Etiq[3]:='Mar';
Etiq[4]:='Abr';
Etiq[5]:='May';
Etiq[6]:='Jun';
Etiq[7]:='Jul';
Etiq[8]:='Ago';
Etiq[9]:='Sep';
Etiq[10]:='Oct';
Etiq[11]:='nov';
Etiq[12]:='Dic';

with FormaMovimientosInventario do
begin
AreaGrafica.Canvas.Pen.Color:=clBlack;
max:=0;
for i:=1 to 12 do
begin
if (max<Round(salida[i]))  then
begin
max:=Round(salida[i]);
if  (max<Round(entrada[i])) then
max:=Round(entrada[i]);
end;
end;
if max<>0 then
inter:=200/max
else
inter:=0;

for i:=1 to 12 do
begin
AreaGrafica.Canvas.Brush.Color:=clNavy;
AreaGrafica.Canvas.Rectangle(10+(i*40),200,50+(i*40)-20,200-Round(salida[i]*inter));
AreaGrafica.Canvas.Brush.Color:=clRed;
AreaGrafica.Canvas.Rectangle(50+(i*40)-20,200,50+(i*40),200-Round(entrada[i]*inter));
AreaGrafica.Canvas.TextOut(10+(i*40),205,Etiq[i]);
end;
AreaGrafica.Canvas.MoveTo(29,200);
AreaGrafica.Canvas.LineTo(AreaGrafica.Width-10,200);

end;}
end;

{function ruta(linea:integer):String;
var
arch:TextFile;
aux:string;
i:integer;
begin
AssignFile(arch,leeempresa);
Reset(arch);
for i:=1 to linea do
Readln(arch,aux);
CloseFile(arch);
ruta:=aux;

end;}

procedure rutas;
var
  j: Integer;
begin

with FormaMovimientosInventario do
begin
  for j := 0 to ComponentCount -1 do
    begin
     if Components[j] is TTable  then
       begin
       TTable(Components[j]).DatabaseName:=ruta(8);
       end;
    end;
TablaDeta.DatabaseName:=leeruta;
  for j := 0 to ComponentCount -1 do
    begin
     if Components[j] is TTable  then
       begin
       try
       TTable(Components[j]).Open;
       except
       MuestraMensaje('Ha Ocurrido un Error al Abrir una de las Bases de Datos.');
       end;
       
       end;
    end;


end;

end;



procedure limpiar;
var
  I: Integer;
begin

with FormaMovimientosInventario do
begin
  for I := 0 to ComponentCount -1 do
    begin
     if Components[I] is TDBEdit  then
       TDBEdit(Components[I]).Text :='';
     if Components[I] is TSpinEdit then
       TSpinEdit(Components[I]).Text :='';
  end;
 TIPMOV.Caption:='';
end;

end;


procedure activa;
var
  I: Integer;
begin
with FormaMovimientosInventario do
begin
{  for I := 0 to ComponentCount -1 do
    begin
     if Components[I] is TDBEdit  then
       TDBEdit(Components[I]).Enabled :=True;
     if Components[I] is TLabel then
       TLabel(Components[I]).Enabled :=True;
     if Components[I] is TSpinEdit then
       TSpinEdit(Components[I]).Enabled :=True;
end; }
Detalle.Enabled:=True;
TablaDeta.Edit;
Caja.Enabled:=True;
end;
end;

procedure desactiva;
var
  I: Integer;
begin
with FormaMovimientosInventario do
begin
{  for I := 0 to ComponentCount -1 do
    begin
     if Components[I] is TDBEdit then
       TDBEdit(Components[I]).Enabled :=False;
     if Components[I] is TLabel then
       TLabel(Components[I]).Enabled :=False;
     if Components[I] is TSpinEdit then
       TSpinEdit(Components[I]).Enabled :=False;
end;}

{Detalle.Enabled:=False;}
Caja.Enabled:=False;
end;
end;

procedure saldos;
var cos,tot,uti:Real;
begin
With FormaMovimientosInventario do
begin
TablaDeta.First;
tot:=0;cos:=0;

while not TablaDeta.Eof do
begin
tot:=tot+TablaDeta.FieldByName('Precio').Asfloat;
cos:=cos+TablaDeta.FieldByName('Costo').Asfloat;

TablaDeta.Next;
end;
uti:=tot-cos;


end;

end;


procedure cursor1;
begin
With FormaMovimientosInventario do
begin
if indice < 1 then indice:=1;
case indice of
1:EditFEDOC_MI.SetFocus;
2:EditCLDOC_MI.SetFocus;
3:EditCLPRO_MI.SetFocus;
4:EditAlmacen.SetFocus;
5:EditREFMO_MI.SetFOcus;
6:EditTIMOV_MI.SetFocus;
end;
end;
end;

function revisa(cad:string):boolean;
begin
With FormaMovimientosInventario do
begin
if cad='' then
begin
MuestraMensaje('No se puede Guardar faltan datos');
revisa:=false;
end
else  revisa:=true;
end;
end;


procedure guardamovimiento;
var
fecha,ref,prov:string[20];
tipomov,conta:integer;
begin
With FormaMovimientosInventario do
begin

ultimo:=StrToInt(EditCLDOC_MI.Text);
fecha:=EditFEDOC_MI.Text;
prov:=EditCLPRO_MI.Text;
tipomov:=StrToInt(EditTIMOV_MI.Text);
ref:=EditREFMO_MI.Text;
TablaDeta.First;
conta:=1;


While not TablaDeta.Eof do
begin
if TablaDeta.FieldByName('CANTIDAD').AsFloat<>0 then
begin
if conta=1 then
Tablamovinve.Edit
else
Tablamovinve.Insert;
conta:=conta+1;

Tablamovinve.FieldByName('CANTI_MI').AsFloat:=TablaDeta.FieldByName('CANTIDAD').AsFloat;
Tablamovinve.FieldByName('CLPRO_MI').AsString:=TablaDeta.FieldByName('CLAVE').AsString;
Tablamovinve.FieldByName('CLPRV_MI').AsString:=prov;
Tablamovinve.FieldByName('DESCR_MI').AsString:=TablaDeta.FieldByName('DESCRIPCION').AsString;
Tablamovinve.FieldByName('FEDOC_MI').AsString:=fecha;
Tablamovinve.FieldByName('REFMO_MI').AsString:=ref;
Tablamovinve.FieldByName('CLCOP_MI').AsString:=EditCLPRO_MI.Text;
Tablamovinve.FieldByName('COSUN_MI').AsFloat:=TablaDeta.FieldByName('COSTO').AsFloat;
Tablamovinve.FieldByName('NALMA_MI').AsInteger:=StrToInt(EditAlmacen.Text);
Tablamovinve.FieldByName('TIMOV_MI').AsInteger:=tipomov;
Tablamovinve.FieldByName('PUNIT_MI').AsFloat:=TablaDeta.FieldByName('PRECIO').AsFloat;
Tablamovinve.FieldByName('CLDOC_MI').AsInteger:=ULTIMO;

if tipomov>=51 then
begin

if TablaInventario.FindKey([TablaDeta.FieldByName('CLave').AsString]) then
begin
TablaInventario.Edit;
TablaInventario.FieldByName('EXIST_I').AsFloat:=TablaInventario.FieldByName('EXIST_I').AsFloat+TablaDeta.FieldByName('CANTIDAD').AsFloat;
TablaInventario.Post;
end;

end
else
begin
if TablaInventario.FindKey([TablaDeta.FieldByName('CLave').AsString]) then
begin
TablaInventario.Edit;
TablaInventario.FieldByName('EXIST_I').AsFloat:=TablaInventario.FieldByName('EXIST_I').AsFloat-TablaDeta.FieldByName('CANTIDAD').AsFloat;
TablaInventario.Post;
end;
end;

Tablamovinve.Post;
end;
TablaDeta.Next;
end;
end;
end;

procedure borradetalle;
begin
With FormaMovimientosInventario do
begin

TablaDeta.First;
While not TablaDeta.EoF do
begin
TablaDeta.Delete;
end;

end;

end;

procedure actualizadetalle;
begin
With FormaMovimientosInventario do
begin
Tablamovinve.Last;
While not Tablamovinve.BoF do
begin
TablaDeta.Insert;
TablaDeta.FieldByName('CANTIDAD').AsFloat:=Tablamovinve.FieldByName('CANTI_MI').AsFloat;
TablaDeta.FieldByName('ClAVE').AsString:=Tablamovinve.FieldByName('CLPRO_MI').AsString;
TablaDeta.FieldByName('DESCRIPCION').AsString:=Tablamovinve.FieldByName('DESCR_MI').AsString;
TablaDeta.FieldByName('COSTO').AsFloat:=Tablamovinve.FieldByName('COSUN_MI').AsFloat;
TablaDeta.FieldByName('PRECIO').AsFloat:=Tablamovinve.FieldByName('PUNIT_MI').AsFloat;
if Tablamovinve.FieldByName('TIMOV_MI').AsString<>'' then
if Tablamovinve.FieldByName('TIMOV_MI').AsInteger<50 then
begin
TablaDeta.FieldByName('IMPORTE').AsFloat:=Tablamovinve.FieldByName('CANTI_MI').AsFloat*
Tablamovinve.FieldByName('PUNIT_MI').AsFloat;
end
else
begin
TablaDeta.FieldByName('IMPORTE').AsFloat:=Tablamovinve.FieldByName('CANTI_MI').AsFloat*
Tablamovinve.FieldByName('COSUN_MI').AsFloat;
end;

TablaDeta.Post;
if Tablamovinve.FieldByName('CANTI_MI').AsFloat=0 then
Tablamovinve.Delete;
{else}
Tablamovinve.Prior;

end;
ultimo:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
end;
end;

procedure nuevo;
begin

guardamovimiento;
borradetalle;

end;

procedure borradetalleanterior;
begin

With FormaMovimientosInventario do
begin
Tablamovinvd.SetRange([EditCLDOC_MI],[EditCLDOC_MI]);
while not Tablamovinvd.Eof do
begin
Tablamovinvd.Delete;
end;


end;

end;

procedure cambio;
begin

borradetalleanterior;
guardamovimiento;
borradetalle;

end;

procedure cancela;
begin


end;


procedure TFormaMovimientosInventario.FormCreate(Sender: TObject);
begin
FormatosPais;
nombreformato:=leeruta+'\consulta\'+ruta(18);
end;

procedure guardatodo;
begin
With FormaMovimientosInventario do
begin
if (revisa(EditFEDOC_MI.Text)) and (revisa(EditCLDOC_MI.Text))and (revisa(EditTIMOV_MI.Text)) then
begin
nuevo;
borradetalle;
desactiva;
limpiar;
BotonGuardar.Enabled:=False;
Guardar1.Enabled:=False;
BotonNuevo.Enabled:=True;
{limpiacampos;}
end;
end;
end;

{xxx********************}
procedure posicionamovimientos(clave:string);
begin
with FormaMovimientosInventario do
begin
if FormaMovimientosInventario.Tag=0 then

begin
rutas;
desactiva;
limpiar;
{  BotonGuardar.Enabled:=False;
  BotonNuevo.Enabled:=True;
  borradetalle;
  actualizadetalle;}


end;
FormaMovimientosInventario.Tag:=1;
if Tablamovinve.FindKey([clave])then
begin
TablamovinvE.SetRange([Tablamovinve.FieldByName('CLDOC_MI').AsString],[Tablamovinve.FieldByName('CLDOC_MI').AsString]);
EditAlmacen.Text:=Tablamovinve.FieldByName('NALMA_MI').AsString;
borradetalle;
actualizadetalle;
Tablamovinve.CancelRange;

if TablaConcepto.FindKey([EditTIMOV_MI.Text]) then
TIPMOV.Caption:=TablaConcepto.Fields[1].AsString;
saldos;
end;
  indice:=1;
end;
end;
{*****************}


procedure TFormaMovimientosInventario.DBNavigatorClick(Sender: TObject;
  Button: TNavigateBtn);
begin
{if Table1.FindKey([Table2.FieldByName('CLDOC_MI').AsString]) then}
Tablamovinvd.SetRange([Tablamovinve.FieldByName('CLDOC_MI').AsString],[Tablamovinve.FieldByName('CLDOC_MI').AsString]);
end;

procedure TFormaMovimientosInventario.BotonsiguienteClick(Sender: TObject);
var
siguiente,anterior:Integer;
begin

if not Tablamovinve.EOF then
begin
anterior:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
siguiente:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;

while (anterior=siguiente) and not (Tablamovinve.Eof) do
begin
Tablamovinve.Next;
siguiente:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
end;


TablamovinvE.SetRange([Tablamovinve.FieldByName('CLDOC_MI').AsString],[Tablamovinve.FieldByName('CLDOC_MI').AsString]);
EditAlmacen.Text:=Tablamovinve.FieldByName('NALMA_MI').AsString;
borradetalle;
actualizadetalle;
Tablamovinve.CancelRange;

if TablaConcepto.FindKey([EditTIMOV_MI.Text]) then
TIPMOV.Caption:=TablaConcepto.Fields[1].AsString;
saldos;
end;

end;

procedure TFormaMovimientosInventario.BotonprimeroClick(Sender: TObject);
var siguiente:integer;
begin

Tablamovinve.First;
siguiente:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
Tablamovinve.SetRange([siguiente],[siguiente]);
EditAlmacen.Text:=Tablamovinve.FieldByName('NALMA_MI').AsString;
borradetalle;
actualizadetalle;
Tablamovinve.CancelRange;

if TablaConcepto.FindKey([EditTIMOV_MI.Text]) then
TIPMOV.Caption:=TablaConcepto.Fields[1].AsString;
saldos;
end;

procedure TFormaMovimientosInventario.BotonultimoClick(Sender: TObject);
var
siguiente:longint;
begin

Tablamovinve.Last;
siguiente:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
Tablamovinve.SetRange([siguiente],[siguiente]);
EditAlmacen.Text:=Tablamovinve.FieldByName('NALMA_MI').AsString;
borradetalle;
actualizadetalle;
Tablamovinve.CancelRange;

if TablaConcepto.FindKey([EditTIMOV_MI.Text]) then
TIPMOV.Caption:=TablaConcepto.Fields[1].AsString;
saldos;

end;

procedure TFormaMovimientosInventario.BotonanteriorClick(Sender: TObject);
var
siguiente,anterior:Integer;
begin
anterior:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
siguiente:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;

while (anterior=siguiente) and not (Tablamovinve.Bof) do
begin
Tablamovinve.Prior;
siguiente:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
end;

TablamovinvE.SetRange([Tablamovinve.FieldByName('CLDOC_MI').AsString],[Tablamovinve.FieldByName('CLDOC_MI').AsString]);
EditAlmacen.Text:=Tablamovinve.FieldByName('NALMA_MI').AsString;
borradetalle;
actualizadetalle;
Tablamovinve.CancelRange;

if TablaConcepto.FindKey([EditTIMOV_MI.Text]) then
TIPMOV.Caption:=TablaConcepto.Fields[1].AsString;
saldos;
end;

procedure TFormaMovimientosInventario.BotonSalirClick(Sender: TObject);
begin
Close;

end;

procedure TFormaMovimientosInventario.EditTIMOV_MIKeyDown(Sender: TObject;

var Key: Word; Shift: TShiftState);
begin
if Ord(Char(Key))=113 then
begin
FormaConMovimiento.ShowModal;
end;
if Ord(Char(Key))=13 then
Detalle.SetFocus;
Detalle.SelectedIndex:=1;
end;

procedure TFormaMovimientosInventario.BotonNuevoClick(Sender: TObject);

begin
if caso(StrToInt(usuario.Caption),35) then
begin
activa;
Tablamovinve.Last;
ultimo:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger+1;
Tablamovinve.Insert;
EditCLDOC_MI.Text:=IntToStr(ultimo);
Tablamovinve.Post;
Tablamovinve.Edit;
borradetalle;
EditFEDOC_MI.SetFocus;
EditFEDOC_MI.Text:=DateTimeToStr(Date);
EditAlmacen.Text:='1';
indice:=1;
BotonGuardar.Enabled:=True;
Guardar1.Enabled:=True;
BotonNuevo.Enabled:=False;
end;
end;

procedure TFormaMovimientosInventario.EditFEDOC_MIEnter(Sender: TObject);
begin
indice:=1;
if EditFEDOC_MI.Text='' then EditFEDOC_MI.Text:=DateToStr(Date);
Uno.Caption:=comenta(1,'movin.des');
Dos.Caption:=comenta(2,'movin.des');
end;

procedure TFormaMovimientosInventario.DetalleColEnter(Sender: TObject);
var valor:Real;
    code:integer;
    cadena:string;
begin

case Detalle.SelectedIndex of

0:begin
{SUMA:=0;
   TablaDeta.First;
   while not TablaDeta.Eof do
   begin
   suma:=suma+TablaDeta.FieldByName('Importe').AsFloat;
   TablaDeta.Next;
   end;
   TablaDeta.Last;
   Str(suma:12:3,cadena);
   SumarTotal.Caption:=cadena;}
 end;


1:begin
if TablaDeta.FieldByName('Cantidad').AsString='' then
  Detalle.SelectedIndex:=Detalle.SelectedIndex-1
  else
  begin
  Val(TablaDeta.FieldByName('Cantidad').AsString,valor,code);
  if code<>0 then
  TablaDeta.FieldByName('Cantidad').AsString:='0';
  end;

  end;

2:begin
if TablaDeta.FieldByName('Cantidad').AsString='' then
  Detalle.SelectedIndex:=Detalle.SelectedIndex-1
  else

  if TablaInventario.FindKey([TablaDeta.FieldByName('Clave').AsString]) then
  begin

  TablaDeta.Edit;
  TablaDeta.FieldByName('DESCRIPCION').AsString:=  TablaInventario.FieldByName('DSCPR_I').AsString;
  TablaDeta.FieldByName('COSTO').AsFloat:=  TablaInventario.FieldByName('ULCOS_I').AsFloat;
  TablaDeta.FieldByName('PRECIO').AsFloat:=  TablaInventario.FieldByName('PPUBL_I').AsFloat;

{  if EditDECOT_F.Text='' then
  TablaDeta.FieldByName('DESCUENTO').AsString:='0'
  else
  TablaDeta.FieldByName('COSTO').AsFloat:= EditDECOT_F.Text;}

{  TablaDeta.FieldByName('importe').AsFloat:=  TablaDeta.FieldByName('cantidad').AsFloat*
  TablaDeta.FieldByName('Precio').AsFloat-(TablaDeta.FieldByName('cantidad').AsFloat*TablaDeta.FieldByName('Precio').AsFloat*
  TablaDeta.FieldByName('DESCUENTO').AsFloat/100)+0.000;




  Str(TablaDeta.FieldByName('importe').AsFloat:12:4,cadena);
  FormatFloat( CADENA,3);
  TablaDeta.FieldByName('importe').AsString:=cadena;    }


  Detalle.SelectedIndex:=3;

  end
  else
  begin


  Detalle.SelectedIndex:=Detalle.SelectedIndex-1;
  MuestraMensaje('El Producto No Se encuenta');
  end;

  end;
 5:begin
  TablaDeta.Edit;
  TablaDeta.FieldByName('importe').AsFloat:=  TablaDeta.FieldByName('cantidad').AsFloat*
  TablaDeta.FieldByName('Precio').AsFloat;
{  Str(TablaDeta.FieldByName('importe').AsFloat:12:3,cadena);
  TablaDeta.FieldByName('importe').AsString:=cadena;}
   end;

end;
end;


procedure TFormaMovimientosInventario.BotonGuardarClick(Sender: TObject);
begin

guardatodo;
end;

procedure TFormaMovimientosInventario.EditCLDOC_MIEnter(Sender: TObject);
begin
indice:=2;
Tablamovinve.FieldByName('CLDOC_MI').AsInteger:=ultimo;
Uno.Caption:=comenta(3,'movin.des');
Dos.Caption:=comenta(4,'movin.des');
end;

procedure TFormaMovimientosInventario.EditTIMOV_MIExit(Sender: TObject);
begin
if  EditTIMOV_MI.Text='' then
begin
MuestraMensaje('No Existe Tipo de Movimiento');
EditTIMOV_MI.SetFocus;
end
else
begin
TablaConcepto.First;
if TablaConcepto.FindKey([EditTIMOV_MI.Text]) then
TipMov.Caption:=FormaConMovimiento.TablaConMovinv.FieldByName('DECON_CM').AsString;
end;
end;

procedure TFormaMovimientosInventario.EditFEDOC_MIKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if Key=114 then
EditFEDOC_MI.Text:=DateToStr(Date);

if (Ord(Char(Key))=13) or (Ord(Char(Key))=40) then
begin
indice:=indice+1;
cursor1;
end;
if Ord(Char(Key))=38 then
begin
indice:=indice-1;
cursor1;
end;
end;

procedure TFormaMovimientosInventario.EditCLDOC_MIKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if Ord(Char(Key))=13 then
EditCLPRO_MI.SetFocus;
end;

procedure TFormaMovimientosInventario.EditCLPRO_MIKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if (Ord(Char(Key))=13) or (Ord(Char(Key))=40) then
begin
indice:=indice+1;
cursor1;
end;
if Ord(Char(Key))=38 then
begin
indice:=indice-1;
cursor1;
end;
if Ord(Char(Key))= 113 then
begin
FormaConProvee.Panel1.Tag:=1;
FormaConProvee.ShowModal;
EditCLPRO_MI.Tag:=1;
end;
end;

procedure TFormaMovimientosInventario.EditAlmacenKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if Ord(Char(Key))=13 then
EditREFMO_MI.SetFocus;
end;

procedure TFormaMovimientosInventario.EditREFMO_MIKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if Ord(Char(Key))=13 then
EditTIMOV_MI.SetFocus;
end;

procedure TFormaMovimientosInventario.DetalleKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if Ord(Char(Key))=13 then
begin
if Detalle.SelectedIndex =4 then
Detalle.SelectedIndex:=0
else
Detalle.SelectedIndex:=Detalle.SelectedIndex +1;
end;
if (Ord(Char(Key))=113) and (Detalle.SelectedIndex=1) then
begin
Detalle.Tag:=1;
TablaDeta.Post;
TablaDeta.Edit;
FormaConProduct.ShowModal;
end;
end;


procedure TFormaMovimientosInventario.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  {Tablamovinve.Close;
  Tablamovinvd.Close;
  TablaDeta.Close;
  TablaInventario.Close;}
if (Tablamovinve.State=dsEdit)or (Tablamovinve.State=dsInsert) then
begin
FormaCerrar.ShowModal;
if FormaCerrar.Tag=1 then
begin
guardatodo;
end;
if FormaCerrar.Tag=2 then
begin
Tablamovinve.Cancel;
end;
if FormaCerrar.Tag=3 then
Action:=caNone;
FormaCerrar.Tag:=0;

end;
BotonSalir.Tag:=1000;
end;

procedure TFormaMovimientosInventario.FormActivate(Sender: TObject);
begin
if FormaMovimientosInventario.Tag=0 then
begin
rutas;
desactiva;
limpiar;
  BotonGuardar.Enabled:=False;
  BotonNuevo.Enabled:=True;
  borradetalle;
end;
FormaMovimientosInventario.Tag:=1;

  {limpiacampos;}

{  Tablamovinve.Open;
  Tablamovinvd.Open;
  TablaDeta.Open;
  TablaInventario.Open;}
  indice:=1;
 { TablaReporte.First;
  Edit1.text:=TablaReporte.FieldByname('CLPRO_MI').AsString;
  TablaReporte.Last;
  Edit2.text:=TablaReporte.FieldByname('CLPRO_MI').AsString;
  TablaReporte.First}
end;

procedure TFormaMovimientosInventario.BotonBuscarClick(Sender: TObject);
var siguiente:LongInt;
begin
FormaBusqueda.ShowModal;
Tablamovinve.FindNearest([FormaBusqueda.CajaBuscar.Text]);
siguiente:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
Tablamovinve.SetRange([siguiente],[siguiente]);
borradetalle;
actualizadetalle;
Tablamovinve.CancelRange;

end;

procedure TFormaMovimientosInventario.Consultas1Click(Sender: TObject);
begin
FormaConsulta.TablaConsulta.DataBaseName:=ruta(8);
FormaConsulta.TablaConsulta.IndexName:='IMOVINV';
FormaConsulta.TablaConsulta.TableName:='Movinven.DBF';

FormaConsulta.TablaConsulta.Open;
FormaConsulta.TablaConsulta.First;
FormaConsulta.De.Text:=FormaConsulta.TablaConsulta.Fields[0].AsString;
FormaConsulta.TablaConsulta.Last;
FormaConsulta.Hasta.Text:=FormaConsulta.TablaConsulta.Fields[0].AsString;
FormaConsulta.TablaConsulta.First;

FormaConsulta.RutaCampos.Text:=leeruta+'\consulta\MOVINVEN.CMP';
FormaConsulta.TipoVista.Text:=leeruta+'\consulta\MOVINVEN.VIS';
FormaConsulta.Destino.Text:=leeruta+'\tempo\repmoinv.rep';
FormaConsulta.NumCampo.Caption:='0';
FormaConsulta.RutaCampos.Text:=leeruta+'\consulta\MOVINVEN.CMP';
asignatipo;
leearchivocampos(185,196);
FormaConsulta.ShowModal;

end;


procedure TFormaMovimientosInventario.EditREFMO_MIExit(Sender: TObject);
begin

if EditREFMO_MI.Text='' then
begin
MuestraMensaje('Falta Referencia');
EditREFMO_MI.SetFocus;

end;
end;





procedure TFormaMovimientosInventario.BitBtn1Click(Sender: TObject);
begin
{ TablaReporte.CancelRange;

 TablaReporte.SetRange([Edit1.text],[Edit2.text]);
 calcuaexistencias;
 TablaReporte.First;
 }
end;

procedure TFormaMovimientosInventario.FolderChange(Sender: TObject;
  NewTab: Integer; var AllowChange: Boolean);
begin

{dibujabarras;}
end;

procedure TFormaMovimientosInventario.SpeedButton1Click(Sender: TObject);
var
clave:String[20];
begin
TablaReporte.CancelRange;
TablaReporte.First;
Clave:=TablaReporte.FieldByName('CLPRO_MI').AsString;
TablaReporte.SetRange([clave],[clave]);
calcuaexistencias;
end;

procedure TFormaMovimientosInventario.SpeedButton4Click(Sender: TObject);
var
clave:String[20];
begin
TablaReporte.CancelRange;
TablaReporte.Last;
Clave:=TablaReporte.FieldByName('CLPRO_MI').AsString;
TablaReporte.SetRange([clave],[clave]);
calcuaexistencias;
end;

procedure TFormaMovimientosInventario.SpeedButton2Click(Sender: TObject);
var
clave:String[20];
begin
TablaReporte.First;
TablaReporte.CancelRange;
TablaReporte.Prior;
Clave:=TablaReporte.FieldByName('CLPRO_MI').AsString;
TablaReporte.SetRange([clave],[clave]);
calcuaexistencias;
end;

procedure TFormaMovimientosInventario.SpeedButton3Click(Sender: TObject);
var
clave:String[20];
begin
TablaReporte.Last;
TablaReporte.CancelRange;
TablaReporte.Next;
Clave:=TablaReporte.FieldByName('CLPRO_MI').AsString;
TablaReporte.SetRange([clave],[clave]);
calcuaexistencias;
end;

procedure TFormaMovimientosInventario.AreaGraficaPaint(Sender: TObject);
begin
dibujabarras;
end;

procedure TFormaMovimientosInventario.BotonImprimirClick(Sender: TObject);
begin
if ImpresoraLista then
begin
if FileExists(leeruta+'\consulta\'+ruta(18)) then
forma(Tablamovinve,TablaDeta,leeruta+'\consulta\'+ruta(18),'i')
else
MuestraMensaje('El Formato '+leeruta+'\consulta\'+ruta(18)+'No Existe');
end
else
MuestraMensaje('La Impresora No Se Encuentra Lista...');

end;



procedure TFormaMovimientosInventario.BotonMailClick(Sender: TObject);
begin
Tablamovinve.Cancel;
FormaMail.Fecha.Text:='';
FormaMail.ShowModal;
if FormaMail.Enviar.checked then
generamail;
if FormaMail.Actualizar.checked then
actualizamail;

end;

procedure TFormaMovimientosInventario.EditCLPRO_MIEnter(Sender: TObject);
begin
indice:=3;
Uno.Caption:=comenta(5,'movin.des');
Dos.Caption:=comenta(6,'movin.des');
end;

procedure TFormaMovimientosInventario.EditAlmacenEnter(Sender: TObject);
begin
indice:=4;
Uno.Caption:=comenta(7,'movin.des');
Dos.Caption:=comenta(8,'movin.des');
end;

procedure TFormaMovimientosInventario.EditREFMO_MIEnter(Sender: TObject);
begin
indice:=5;
Uno.Caption:=comenta(9,'movin.des');
Dos.Caption:=comenta(10,'movin.des');
end;

procedure TFormaMovimientosInventario.DetalleColExit(Sender: TObject);
begin
case Detalle.SelectedIndex of
 4:begin
  TablaDeta.Edit;
  TablaDeta.FieldByName('importe').AsFloat:=  TablaDeta.FieldByName('cantidad').AsFloat*
  TablaDeta.FieldByName('Precio').AsFloat;
   end;

end;

end;

procedure TFormaMovimientosInventario.EditFEDOC_MIExit(Sender: TObject);
begin
if not fechavalida(EditFEDOC_MI.Text) then
EditFEDOC_MI.Text:=DateTimeToStr(Date);
end;

procedure TFormaMovimientosInventario.EditFEDOC_MIMouseMove(
  Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(1,'movin.des');
Dos.Caption:=comenta(2,'movin.des');
end;

procedure TFormaMovimientosInventario.EditCLDOC_MIMouseMove(
  Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(3,'movin.des');
Dos.Caption:=comenta(4,'movin.des');

end;

procedure TFormaMovimientosInventario.EditCLPRO_MIMouseMove(
  Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(5,'movin.des');
Dos.Caption:=comenta(6,'movin.des');

end;

procedure TFormaMovimientosInventario.EditAlmacenMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(7,'movin.des');
Dos.Caption:=comenta(8,'movin.des');

end;

procedure TFormaMovimientosInventario.EditREFMO_MIMouseMove(
  Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(9,'movin.des');
Dos.Caption:=comenta(10,'movin.des');
end;

procedure TFormaMovimientosInventario.EditTIMOV_MIMouseMove(
  Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(11,'movin.des');
Dos.Caption:=comenta(12,'movin.des');
end;

procedure TFormaMovimientosInventario.EditTIMOV_MIEnter(Sender: TObject);
begin
Uno.Caption:=comenta(11,'movin.des');
Dos.Caption:=comenta(12,'movin.des');
end;

procedure TFormaMovimientosInventario.Entradas1Click(Sender: TObject);
var
siguiente,anterior:Integer;
desde,hastavalor:string;
begin
FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,False,False,true,true,true,true,'movinven.cmp');
Tablamovinve.First;
desde:=Tablamovinve.FieldByName('CLDOC_MI').AsString;
Tablainventario.Last;
hastavalor:=Tablamovinve.FieldByName('CLDOC_MI').AsString;
{valoresiniciales('','',desde,hastavalor);}

FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption);
Concentrar(Tablamovinve,FormaFormatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_MI',FormaFormatos.Inicial.Text,FormaFormatos.Final.Text,'CLPRO_MI','DESCR_MI','CANTI_MI','COSUN_MI','','','','','','','TIMOV_MI','=','51','D');
poneetiquetas('Clave','Producto','-Cantidad','Costo','','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;

FormaBarras.Concentrado.Clear;
FormaBarras.Caption:='Reporte de Entradas de Productos';

FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
{***********************}
Tablamovinve.First;
siguiente:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
Tablamovinve.SetRange([siguiente],[siguiente]);
EditAlmacen.Text:=Tablamovinve.FieldByName('NALMA_MI').AsString;
borradetalle;
actualizadetalle;
Tablamovinve.CancelRange;

if TablaConcepto.FindKey([EditTIMOV_MI.Text]) then
TIPMOV.Caption:=TablaConcepto.Fields[1].AsString;
saldos;
{*******************}


end;

procedure TFormaMovimientosInventario.Salidas1Click(Sender: TObject);
var
siguiente,anterior:Integer;
desde,hastavalor:string;
begin
FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,False,False,true,true,true,true,'movinven.cmp');

Tablamovinve.First;
desde:=Tablamovinve.FieldByName('CLDOC_MI').AsString;
Tablainventario.Last;
hastavalor:=Tablamovinve.FieldByName('CLDOC_MI').AsString;
{valoresiniciales('','',desde,hastavalor);}

FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption);
Concentrar(Tablamovinve,FormaFormatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_MI',FormaFormatos.Inicial.Text,FormaFormatos.Final.Text,'CLPRO_MI','DESCR_MI','CANTI_MI','COSUN_MI','','','','','','','TIMOV_MI','=','1','D');
poneetiquetas('Clave','Producto','-Cantidad','Costo','','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;

FormaBarras.Concentrado.Clear;
FormaBarras.Caption:='Reporte de Salidas de Productos';

FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
{***********************}
Tablamovinve.First;
siguiente:=Tablamovinve.FieldByName('CLDOC_MI').AsInteger;
Tablamovinve.SetRange([siguiente],[siguiente]);
EditAlmacen.Text:=Tablamovinve.FieldByName('NALMA_MI').AsString;
borradetalle;
actualizadetalle;
Tablamovinve.CancelRange;

if TablaConcepto.FindKey([EditTIMOV_MI.Text]) then
TIPMOV.Caption:=TablaConcepto.Fields[1].AsString;
saldos;
{*******************}


end;

procedure TFormaMovimientosInventario.TablamovinveEditError(
  DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
DatabaseError('No se Pueden Editar los Datos ha Ocurrido un Error');
end;

procedure TFormaMovimientosInventario.TablamovinvePostError(
  DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
DatabaseError('No se Pueden Guardar los Datos ha Ocurrido un Error');
end;

procedure TFormaMovimientosInventario.BotonNuevoMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaMovimientosInventario.Left+BotonNuevo.Left,FormaMovimientosInventario.Top+BotonNuevo.Top+BotonNuevo.Height,37);
end;

procedure TFormaMovimientosInventario.BotonGuardarMouseDown(
  Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
describir(Button,FormaMovimientosInventario.Left+BotonGuardar.Left,FormaMovimientosInventario.Top+BotonGuardar.Top+Botonguardar.Height,38);
end;

procedure TFormaMovimientosInventario.BotonBuscarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaMovimientosInventario.Left+BotonBuscar.Left,FormaMovimientosInventario.Top+BotonBuscar.Top+BotonBuscar.Height,39);
end;

procedure TFormaMovimientosInventario.BotonMailMouseDown(
  Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
describir(Button,FormaMovimientosInventario.Left+BotonMail.Left,FormaMovimientosInventario.Top+BotonMail.Top+BotonMail.Height,40);
end;

procedure TFormaMovimientosInventario.BotonImprimirMouseDown(
  Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
describir(Button,FormaMovimientosInventario.Left+BotonImprimir.Left,FormaMovimientosInventario.Top+BotonImprimir.Top+BotonImprimir.Height,41);
end;

procedure TFormaMovimientosInventario.Utilidad1Click(Sender: TObject);
begin
FormaCosteo.Show;
end;

procedure TFormaMovimientosInventario.Temas1Click(Sender: TObject);
begin
PoneAyuda(leeruta+'\ayuda\movinv.rtf',0);
end;







procedure TFormaMovimientosInventario.BotonPreliminarClick(
  Sender: TObject);
begin
if FileExists(nombreformato) then
begin
forma(Tablamovinve,TablaDeta,nombreformato,'p');
end
else
MuestraMensaje('El Formato '+nombreformato+'No Existe');
FormaEdicion.Hoja.Tag:=0;
FormaEdicion.ShowModal;
end;

procedure TFormaMovimientosInventario.DetalleKeyPress(Sender: TObject;
  var Key: Char);
begin
key:=CambiaLetras(key);
end;

end.
