unit Proveedo;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  StdCtrls, Forms, DBCtrls, DB, DBTables, Mask, ExtCtrls, Buttons, Menus,
  ComCtrls, Tabnotbk,Dialogos{, Graficos,Concen};

type
  TFormaProveedo = class(TForm)
    DataSource1: TDataSource;
    TablaProveedor: TTable;
    MainMenu1: TMainMenu;
    Archivo1: TMenuItem;
    Salir1: TMenuItem;
    Registro1: TMenuItem;
    Nuevo1: TMenuItem;
    Modificar1: TMenuItem;
    Guardar1: TMenuItem;
    Buscar1: TMenuItem;
    Imprimir1: TMenuItem;
    Reportes1: TMenuItem;
    Graficas1: TMenuItem;
    Ayuda1: TMenuItem;
    Consultas1: TMenuItem;
    TablaCompras: TTable;
    Eliminar1: TMenuItem;
    Panel1: TPanel;
    BotonNuevo: TSpeedButton;
    BotonGuardar: TSpeedButton;
    BotonImprimir: TSpeedButton;
    BotonSalir: TSpeedButton;
    BotonBuscar: TSpeedButton;
    BotonCambios: TSpeedButton;
    Usuario: TLabel;
    Navegador: TDBNavigator;
    Panel2: TPanel;
    Caja: TScrollBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    EditCLAVE_P: TDBEdit;
    EditNOMBR_P: TDBEdit;
    EditSTATU_P: TDBEdit;
    EditRFCXX_P: TDBEdit;
    EditDIREC_P: TDBEdit;
    EditPOBLA_P: TDBEdit;
    EditCPXXX_P: TDBEdit;
    EditDREPA_P: TDBEdit;
    EditZONAX_P: TDBEdit;
    EditDCRED_P: TDBEdit;
    EditFULCO_P: TDBEdit;
    EditCLVEN_P: TDBEdit;
    EditSALDO_P: TDBEdit;
    EditCOMPR_P: TDBEdit;
    Bevel1: TBevel;
    uno: TLabel;
    dos: TLabel;
    TablaRepetido: TTable;
    CprasAnuales1: TMenuItem;
    Saldo1: TMenuItem;
    CprasySaldos1: TMenuItem;
    TablaProveedorCLAVE_P: TStringField;
    TablaProveedorNOMBR_P: TStringField;
    TablaProveedorSTATU_P: TStringField;
    TablaProveedorRFCXX_P: TStringField;
    TablaProveedorDIREC_P: TStringField;
    TablaProveedorPOBLA_P: TStringField;
    TablaProveedorCPXXX_P: TStringField;
    TablaProveedorDREPA_P: TStringField;
    TablaProveedorZONAX_P: TStringField;
    TablaProveedorFULCO_P: TDateField;
    TablaProveedorCLVEN_P: TStringField;
    TablaProveedorSALDO_P: TFloatField;
    TablaProveedorCOMPR_P: TFloatField;
    Saldos1: TMenuItem;
    Bevel2: TBevel;
    Bevel3: TBevel;
    Bevel4: TBevel;
    Bevel5: TBevel;
    Bevel6: TBevel;
    Bevel7: TBevel;
    Bevel8: TBevel;
    Bevel9: TBevel;
    Bevel10: TBevel;
    Bevel11: TBevel;
    Bevel12: TBevel;
    Bevel13: TBevel;
    Bevel14: TBevel;
    Bevel15: TBevel;
    Formatos2: TMenuItem;
    ElegirFormato1: TMenuItem;
    DisearFormato1: TMenuItem;
    Estructura: TBatchMove;
    TablaAuxiliar: TTable;
    Cargos: TLabel;
    Abonos: TLabel;
    TablaProveedorCARGO_P: TFloatField;
    TablaProveedorABONO_P: TFloatField;
    CargosAbonosSaldo1: TMenuItem;
    ImprimePlantilla1: TMenuItem;
    Temas1: TMenuItem;
    ImprimeRango1: TMenuItem;
    CancelaMovimiento1: TMenuItem;
    BotonPreliminar: TSpeedButton;
    TablaProveedorDCRED_P: TFloatField;
    GroupBox1: TGroupBox;
    Label15: TLabel;
    SpeedButton1: TSpeedButton;
    Buscar2: TMenuItem;
    BusquedaRpida1: TMenuItem;
    BusquedaNoIndexada1: TMenuItem;
    DBEdit1: TDBEdit;
    TablaProveedorULTCO_P: TFloatField;
    procedure FormCreate(Sender: TObject);
    procedure BotonNuevoClick(Sender: TObject);
    procedure BotonGuardarClick(Sender: TObject);
    procedure BotonSalirClick(Sender: TObject);
    procedure Consultas1Click(Sender: TObject);
    procedure EditCLAVE_PKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormActivate(Sender: TObject);
    procedure BotonCambiosClick(Sender: TObject);
    procedure BotonBuscarClick(Sender: TObject);
    procedure AreaGraficaPaint(Sender: TObject);
    procedure FolderChange(Sender: TObject; NewTab: Integer;
      var AllowChange: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BotonImprimirClick(Sender: TObject);
    procedure EditCLAVE_PEnter(Sender: TObject);
    procedure EditNOMBR_PEnter(Sender: TObject);
    procedure EditSTATU_PEnter(Sender: TObject);
    procedure EditRFCXX_PEnter(Sender: TObject);
    procedure EditDIREC_PEnter(Sender: TObject);
    procedure EditPOBLA_PEnter(Sender: TObject);
    procedure EditCPXXX_PEnter(Sender: TObject);
    procedure EditDREPA_PEnter(Sender: TObject);
    procedure EditZONAX_PEnter(Sender: TObject);
    procedure EditDCRED_PEnter(Sender: TObject);
    procedure EditFULCO_PEnter(Sender: TObject);
    procedure EditCLVEN_PEnter(Sender: TObject);
    procedure EditSALDO_PEnter(Sender: TObject);
    procedure EditCOMPR_PEnter(Sender: TObject);
    procedure Eliminar1Click(Sender: TObject);
    procedure EditCLAVE_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditNOMBR_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditRFCXX_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditDIREC_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditPOBLA_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditCPXXX_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditDREPA_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditZONAX_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditDCRED_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditFULCO_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditCLVEN_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditSALDO_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure EditCOMPR_PMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Saldos1Click(Sender: TObject);
    procedure ElegirFormato1Click(Sender: TObject);
    procedure DisearFormato1Click(Sender: TObject);
    procedure TablaProveedorEditError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure TablaProveedorPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure EditCLAVE_PExit(Sender: TObject);
    procedure EditNOMBR_PExit(Sender: TObject);
    procedure EditSTATU_PExit(Sender: TObject);
    procedure EditRFCXX_PExit(Sender: TObject);
    procedure EditDIREC_PExit(Sender: TObject);
    procedure EditPOBLA_PExit(Sender: TObject);
    procedure EditCPXXX_PExit(Sender: TObject);
    procedure EditDREPA_PExit(Sender: TObject);
    procedure EditZONAX_PExit(Sender: TObject);
    procedure EditDCRED_PExit(Sender: TObject);
    procedure EditFULCO_PExit(Sender: TObject);
    procedure EditCLVEN_PExit(Sender: TObject);
    procedure EditSALDO_PExit(Sender: TObject);
    procedure EditCOMPR_PExit(Sender: TObject);
    procedure BotonCambiosMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    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 BotonImprimirMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure NavegadorClick(Sender: TObject; Button: TNavigateBtn);
    procedure CargosAbonosSaldo1Click(Sender: TObject);
    procedure ImprimePlantilla1Click(Sender: TObject);
    procedure Temas1Click(Sender: TObject);
    procedure ImprimeRango1Click(Sender: TObject);
    procedure CancelaMovimiento1Click(Sender: TObject);
    procedure BotonPreliminarClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure BusquedaNoIndexada1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  FormaProveedo: TFormaProveedo;
  indice:integer;
  meses:array [1..12]of Real;
  Color1:TColor;
  formatonum:word;
  nombreformato:String;

procedure posicionaproveedor(clave:string);
implementation

uses consulta, buscar, formatos, cerrar,formato,checa, barras, Conven,
  describe,progreso,conver,AyudaMod, imprime, edicion,
  ContProv, BusNoInd;

{$R *.DFM}



procedure actualizasaldos;
begin
with FormaProveedo do
begin
Cargos.Caption:='Cargos '+convierte('###,###,##0.00',TablaProveedor.FieldByName('CARGO_P').AsString,'$');
Abonos.Caption:='Abonos '+convierte('###,###,##0.00',TablaProveedor.FieldByName('ABONO_P').AsString,'$');
end;
end;

procedure activabotones(cambios,nuevo,guardar,buscar,imprimir,navegar,cancela:boolean);
begin
with FormaProveedo do
begin
BotonCambios.Enabled:=cambios;
Modificar1.Enabled:=cambios;

BotonNuevo.Enabled:=nuevo;
Nuevo1.Enabled:=nuevo;

BotonGuardar.Enabled:=guardar;
Guardar1.Enabled:=guardar;

BotonBuscar.Enabled:=buscar;

BotonImprimir.Enabled:=imprimir;

Navegador.Enabled:=navegar;

CancelaMovimiento1.Enabled:=cancela;
end;
end;

{*******************}



{*****procedimientos de red******}
procedure borraauxiliar;
begin
with FormaProveedo do
begin
Tablaauxiliar.First;
while not TablaAuxiliar.Eof do
begin
TablaAuxiliar.Delete;
end;
DataSource1.DataSet:=TablaProveedor;
end;
end;

procedure agregacambios;
var
i:integer;
begin
with FormaProveedo do
begin
{ablaauxiliar.Edit;}
TablaAuxiliar.Post;
TablaProveedor.Edit;
{for i:=1 to 15 do
begin
TablaCliente.Fields[i].AsString:=TablaAuxiliar.Fields[i].AsString;
end;}

{**************}
TablaProveedor.FieldByName('CLAVE_P').AsString:=TablaAuxiliar.FieldByName('CLAVE_P').AsString;
TablaProveedor.FieldByName('NOMBR_P').AsString:=TablaAuxiliar.FieldByName('NOMBR_P').AsString;
TablaProveedor.FieldByName('STATU_P').AsString:=TablaAuxiliar.FieldByName('STATU_P').AsString;
TablaProveedor.FieldByName('RFCXX_P').AsString:=TablaAuxiliar.FieldByName('RFCXX_P').AsString;
TablaProveedor.FieldByName('DIREC_P').AsString:=TablaAuxiliar.FieldByName('DIREC_P').AsString;
TablaProveedor.FieldByName('POBLA_P').AsString:=TablaAuxiliar.FieldByName('POBLA_P').AsString;
TablaProveedor.FieldByName('CPXXX_P').AsString:=TablaAuxiliar.FieldByName('CPXXX_P').AsString;
TablaProveedor.FieldByName('DREPA_P').AsString:=TablaAuxiliar.FieldByName('DREPA_P').AsString;
TablaProveedor.FieldByName('ZONAX_P').AsString:=TablaAuxiliar.FieldByName('ZONAX_P').AsString;
TablaProveedor.FieldByName('DCRED_P').AsString:=TablaAuxiliar.FieldByName('DCRED_P').AsString;
TablaProveedor.FieldByName('FULCO_P').AsString:=TablaAuxiliar.FieldByName('FULCO_P').AsString;
TablaProveedor.FieldByName('CLVEN_P').AsString:=TablaAuxiliar.FieldByName('CLVEN_P').AsString;
TablaProveedor.FieldByName('SALDO_P').AsString:=TablaAuxiliar.FieldByName('SALDO_P').AsString;
TablaProveedor.FieldByName('COMPR_P').AsString:=TablaAuxiliar.FieldByName('COMPR_P').AsString;
{**************}
borraauxiliar;


end;
end;

procedure copiaregistro;
begin

with FormaProveedo do
begin
TablaAuxiliar.Close;
Tablaauxiliar.DatabaseName:=leeruta;
Tablaauxiliar.TableName:='ProvAux.dbf';
Estructura.Execute;
DataSource1.DataSet:=TablaAuxiliar;
TablaAuxiliar.Open;
end;

{TablaAuxiliar.First;}

end;



{***termina proc de red********}

procedure ponecolor(indi:integer;col1:TColor);
begin
with FormaProveedo do
begin
color1:=col1;
TDBEdit(Components[indi]).Color:=ClRed;
end;
end;

procedure quitacolor(indi:integer);
begin
with FormaProveedo do
begin
TDBEdit(Components[indi]).Color:=Color1;

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\proveedo.for');}
AssignFile(arch,leeruta+'\report\proveedo.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\proveedo.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\proveedo.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:='proveedo.for';
end;

end;





procedure dibujabarras;
var i:integer;
    max:integer;
    inter:Real;
    Etiq:array [1..12] of String[3];
begin
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 FormaProveedo do
begin
max:=0;
for i:=1 to 12 do
begin
if max<Round(meses[i]) then
max:=Round(meses[i]);
end;
if max<>0 then
inter:=200/max
else
inter:=0;

for i:=1 to 12 do
begin
end;
{Folder.AreaGraficar.Canvas.Rectangle(10,10,30,300);}

end;


end;

procedure calculamontos;
var
Total:Real;
a,m,d:Word;
begin
with FormaProveedo do
begin
meses[1]:=0;meses[2]:=0;meses[3]:=0;meses[4]:=0;meses[5]:=0;meses[6]:=0;meses[7]:=0;meses[8]:=0;
meses[9]:=0;meses[10]:=0;meses[11]:=0;meses[12]:=0;
Total:=0;
TablaCompras.First;
while not TablaCompras.Eof do
begin
Total:=Total+Tablacompras.FieldByName('IMDOC_O').AsFloat;
DecodeDate(TablaCompras.FieldByName('FEDOC_O').AsDateTime,a,m,d);
meses[m]:=meses[m]+TablaCompras.FieldByName('IMDOC_O').AsFloat;
TablaCompras.Next;
end;


end;
end;


procedure rango;
var
compras:integer;
begin
With FormaProveedo do
begin
TablaCompras.Open;
TablaCompras.SetRange([TablaProveedor.FieldByName('CLAVE_P').AsString],[TablaProveedor.FieldByName('CLAVE_P').AsString]);
compras:=TablaCompras.RecordCount;

end;
end;

{function ruta(linea:integer):String;
var
arch:TextFile;
aux,directorioactual: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
  I: Integer;
begin

with FormaProveedo do
begin
  for I := 0 to ComponentCount -1 do
    begin
     if Components[I] is TTable  then
     begin
{       MuestraMensaje(ruta(8));}
       TTable(Components[I]).DatabaseName:=ruta(8);
       try
       TTable(Components[I]).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 FormaProveedo do
begin
  for I := 0 to ComponentCount -1 do
    begin
     if Components[I] is TDBEdit  then
       TDBEdit(Components[I]).Text :='';
     if Components[I] is TEdit  then
       TEdit(Components[I]).Text :='';

  end;
end;}
end;


procedure activa;
var
  I: Integer;
begin
with FormaProveedo 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 TEdit  then
       TEdit(Components[I]).Enabled :=True;
     if Components[I] is TLabel then
       TLabel(Components[I]).Enabled :=True;
end; }
Caja.Enabled:=True;
end;
end;

procedure desactiva;
var
  I: Integer;
begin
with FormaProveedo 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 TEdit then
       TEdit(Components[I]).Enabled :=False;
     if Components[I] is TLabel then
       TLabel(Components[I]).Enabled :=False;
end; }

Caja.Enabled:=False;

end;
end;

procedure cursor1;
begin
With FormaProveedo do
begin
if indice > 14 then indice:=1;
if indice < 1 then indice:=1;
case indice of
1:EditCLAVE_P.SetFocus;
2:EditNOMBR_P.SetFocus;
3:EditSTATU_P.SetFocus;
4:EditRFCXX_P.SetFocus;
5:EditDIREC_P.SetFocus;
6:EditPOBLA_P.SetFocus;
7:EditCPXXX_P.SetFocus;
8:EditDREPA_P.SetFocus;
9:EditZONAX_P.SetFocus;
10:EditDCRED_P.SetFocus;
11:EditFULCO_P.SetFocus;
12:EditCLVEN_P.SetFocus;
13:EditSALDO_P.SetFocus;
14:EditCOMPR_P.SetFocus;
end;
end;
end;

{xxx***********}

procedure posicionaproveedor(clave:string);
begin
with FormaProveedo do
begin
if FormaProveedo.Tag=0 then
begin
{if FileExists(leetapiz(1)) then
Fondo.Picture.LoadFromFile(leetapiz(1));}

{Fondo.Visible:=True;}

rutas;
desactiva;
{limpiar;}
BotonNuevo.Enabled:=True;
BotonGuardar.Enabled:=False;
BotonImprimir.Enabled:=False;
BotonCambios.Enabled:=True;

end;
FormaProveedo.Tag:=1;

indice:=1;
TablaProveedor.FindKey([clave]);
end;
end;
{*************}

procedure TFormaProveedo.FormCreate(Sender: TObject);
begin
FormatosPais;
  {rutas;
  TablaProveedor.Open;}
  nombreformato:=leeruta+'\consulta\'+ruta(24+1);
end;

procedure TFormaProveedo.BotonNuevoClick(Sender: TObject);
begin
if caso(StrToInt(usuario.Caption),17) then
begin
TablaProveedor.Insert;
TablaProveedor.Post;
TablaProveedor.Edit;
activabotones(False,False,True,False,False,False,True);
BotonCambios.Tag:=0;
BotonNuevo.Tag:=1;

activa;
EditCLAVE_P.SetFocus;
end;
end;

procedure TFormaProveedo.BotonGuardarClick(Sender: TObject);
begin

if (TablaRepetido.FindKey([EditCLAVE_P.Text]))and (BotonNuevo.Tag=1) then
begin
MuestraMensaje('La Clave ya Existe Es Necesario Cambiarla');
EditCLAVE_P.SetFocus;
end
else
begin
if EditCLAVE_P.Text<>'' then
begin
if BotonCambios.Tag=1 then
agregacambios;

TablaProveedor.Post;
activabotones(True,True,False,True,True,True,False);
BotonCambios.Tag:=0;
BotonNuevo.Tag:=0;

desactiva;
end
else
begin
MuestraMensaje('Falta la Clave...');
EditCLAVE_P.SetFocus;
end;
end;

end;

procedure TFormaProveedo.BotonSalirClick(Sender: TObject);
begin
Close;
end;

procedure TFormaProveedo.Consultas1Click(Sender: TObject);
begin

FormaConsulta.TablaConsulta.DataBaseName:=ruta(8);
FormaConsulta.TablaConsulta.IndexName:='ICLAPRO';
FormaConsulta.TablaConsulta.TableName:='proveedo.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\proveedo.cmp';
FormaConsulta.TipoVista.Text:=leeruta+'\consulta\proveedo.vis';
FormaConsulta.Destino.Text:=leeruta+'\tempo\reppro.rep';
FormaConsulta.NumCampo.Caption:='0';
asignatipo;
leearchivocampos(47,61);
formaConsulta.ShowModal;

end;

procedure TFormaProveedo.EditCLAVE_PKeyDown(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
FormaProveedo.Tag:=100;
FormaConVendedores.ShowModal;
end;
end;

procedure TFormaProveedo.FormActivate(Sender: TObject);
begin
if FormaProveedo.Tag=0 then
begin
{if FileExists(leetapiz(1)) then
Fondo.Picture.LoadFromFile(leetapiz(1));}

{Fondo.Visible:=True;}

rutas;
desactiva;
{limpiar;}
BotonNuevo.Enabled:=True;
BotonGuardar.Enabled:=False;
{BotonImprimir.Enabled:=False;}
BotonCambios.Enabled:=True;
actualizasaldos;
end;
FormaProveedo.Tag:=1;

indice:=1;
end;

procedure TFormaProveedo.BotonCambiosClick(Sender: TObject);
begin
if caso(StrToInt(usuario.Caption),19) then
begin
{TablaProveedor.Edit;}
copiaregistro;
activabotones(False,False,True,False,False,False,False);
BotonCambios.Tag:=1;
BotonNuevo.Tag:=0;

activa;
EditCLAVE_P.SetFocus;
end;
end;

procedure TFormaProveedo.BotonBuscarClick(Sender: TObject);
var siguiente:LongInt;
begin
if FormaBusqueda.Clave.Checked then
Tablaproveedor.IndexName:='ICLAPRO'
else
TablaProveedor.IndexName:='NOMBR_P';

FormaBusqueda.ShowModal;
TablaProveedor.FindNearest([FormaBusqueda.CajaBuscar.Text]);
end;
procedure TFormaProveedo.AreaGraficaPaint(Sender: TObject);
begin
dibujabarras;
end;

procedure TFormaProveedo.FolderChange(Sender: TObject;
  NewTab: Integer; var AllowChange: Boolean);
begin
rango;
calculamontos;
dibujabarras;
end;

procedure TFormaProveedo.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
if (BotonCambios.Tag=1)or (TablaProveedor.State=dsInsert) then
begin
FormaCerrar.ShowModal;
if FormaCerrar.Tag=1 then
begin
if BotonCambios.Tag=1 then
agregacambios;
TablaProveedor.Post;
activabotones(True,True,False,True,True,True,False);
BotonCambios.Tag:=0;
BotonNuevo.Tag:=0;

end;

if FormaCerrar.Tag=2 then
begin
TablaProveedor.Cancel;
if botonCambios.Tag=1 then
borraauxiliar;
activabotones(True,True,False,True,True,True,False);
BotonCambios.Tag:=0;
BotonNuevo.Tag:=0;

end;

if FormaCerrar.Tag=3 then
Action:=caNone;

FormaCerrar.Tag:=0;

end;
BotonSalir.Tag:=1000;
end;

procedure TFormaProveedo.BotonImprimirClick(Sender: TObject);
begin
if ImpresoraLista then
begin
forma(TablaProveedor,TablaProveedor,nombreformato,'i');
end
else
MuestraMensaje('La Impresora No Se Encuentra Lista...');
end;

procedure TFormaProveedo.EditCLAVE_PEnter(Sender: TObject);
begin
ponecolor(EditCLAVE_P.ComponentIndex,EditCLAVE_P.Color);
indice:=1;
Uno.Caption:=comenta(1,'proveedo.des');
Dos.Caption:=comenta(2,'proveedo.des');
end;

procedure TFormaProveedo.EditNOMBR_PEnter(Sender: TObject);
begin
ponecolor(EditNOMBR_P.ComponentIndex,EditNOMBR_P.Color);
indice:=2;
Uno.Caption:=comenta(3,'proveedo.des');
Dos.Caption:=comenta(4,'proveedo.des');
end;

procedure TFormaProveedo.EditSTATU_PEnter(Sender: TObject);
begin
ponecolor(EditSTATU_P.ComponentIndex,EditSTATU_P.Color);
indice:=3;
end;

procedure TFormaProveedo.EditRFCXX_PEnter(Sender: TObject);
begin
ponecolor(EditRFCXX_P.ComponentIndex,EditRFCXX_P.Color);
indice:=4;
Uno.Caption:=comenta(5,'proveedo.des');
Dos.Caption:=comenta(6,'proveedo.des');
end;

procedure TFormaProveedo.EditDIREC_PEnter(Sender: TObject);
begin
ponecolor(EditDIREC_P.ComponentIndex,EditDIREC_P.Color);
indice:=5;
Uno.Caption:=comenta(7,'proveedo.des');
Dos.Caption:=comenta(8,'proveedo.des');
end;

procedure TFormaProveedo.EditPOBLA_PEnter(Sender: TObject);
begin
ponecolor(EditPOBLA_P.ComponentIndex,EditPOBLA_P.Color);
indice:=6;
Uno.Caption:=comenta(9,'proveedo.des');
Dos.Caption:=comenta(10,'proveedo.des');
end;

procedure TFormaProveedo.EditCPXXX_PEnter(Sender: TObject);
begin
ponecolor(EditCPXXX_P.ComponentIndex,EditCPXXX_P.Color);
indice:=7;
Uno.Caption:=comenta(11,'proveedo.des');
Dos.Caption:=comenta(12,'proveedo.des');
end;

procedure TFormaProveedo.EditDREPA_PEnter(Sender: TObject);
begin
ponecolor(EditDREPA_P.ComponentIndex,EditDREPA_P.Color);
indice:=8;
Uno.Caption:=comenta(13,'proveedo.des');
Dos.Caption:=comenta(14,'proveedo.des');
end;

procedure TFormaProveedo.EditZONAX_PEnter(Sender: TObject);
begin
ponecolor(EditZONAX_P.ComponentIndex,EditZONAX_P.Color);
indice:=9;
Uno.Caption:=comenta(15,'proveedo.des');
Dos.Caption:=comenta(16,'proveedo.des');
end;

procedure TFormaProveedo.EditDCRED_PEnter(Sender: TObject);
begin
ponecolor(EditDCRED_P.ComponentIndex,EditDCRED_P.Color);
indice:=10;
Uno.Caption:=comenta(17,'proveedo.des');
Dos.Caption:=comenta(18,'proveedo.des');
end;

procedure TFormaProveedo.EditFULCO_PEnter(Sender: TObject);
begin
ponecolor(EditFULCO_P.ComponentIndex,EditFULCO_P.Color);
indice:=11;
Uno.Caption:=comenta(19,'proveedo.des');
Dos.Caption:=comenta(20,'proveedo.des');
end;

procedure TFormaProveedo.EditCLVEN_PEnter(Sender: TObject);
begin
ponecolor(EditCLVEN_P.ComponentIndex,EditCLVEN_P.Color);
indice:=12;
Uno.Caption:=comenta(21,'proveedo.des');
Dos.Caption:=comenta(22,'proveedo.des');
end;

procedure TFormaProveedo.EditSALDO_PEnter(Sender: TObject);
begin
ponecolor(EditSALDO_P.ComponentIndex,EditSALDO_P.Color);
indice:=13;
Uno.Caption:=comenta(23,'proveedo.des');
Dos.Caption:=comenta(24,'proveedo.des');
end;

procedure TFormaProveedo.EditCOMPR_PEnter(Sender: TObject);
begin
ponecolor(EditCOMPR_P.ComponentIndex,EditCOMPR_P.Color);
indice:=14;
Uno.Caption:=comenta(25,'proveedo.des');
Dos.Caption:=comenta(26,'proveedo.des');
end;

procedure TFormaProveedo.Eliminar1Click(Sender: TObject);
begin
if caso(StrToInt(usuario.Caption),18) then
begin
if TablaProveedor.FieldByName('SALDO_P').AsFloat=0 then
TablaProveedor.Delete
else
MuestraMensaje('No Es Posible Eliminar un Proveedor con Saldo');

end;
end;


procedure TFormaProveedo.EditCLAVE_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(1,'proveedo.des');
Dos.Caption:=comenta(2,'proveedo.des');
end;

procedure TFormaProveedo.EditNOMBR_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(3,'proveedo.des');
Dos.Caption:=comenta(4,'proveedo.des');
end;

procedure TFormaProveedo.EditRFCXX_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(5,'proveedo.des');
Dos.Caption:=comenta(6,'proveedo.des');
end;

procedure TFormaProveedo.EditDIREC_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(7,'proveedo.des');
Dos.Caption:=comenta(8,'proveedo.des');
end;

procedure TFormaProveedo.EditPOBLA_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(9,'proveedo.des');
Dos.Caption:=comenta(10,'proveedo.des');
end;

procedure TFormaProveedo.EditCPXXX_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(11,'proveedo.des');
Dos.Caption:=comenta(12,'proveedo.des');
end;

procedure TFormaProveedo.EditDREPA_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(13,'proveedo.des');
Dos.Caption:=comenta(14,'proveedo.des');
end;

procedure TFormaProveedo.EditZONAX_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(15,'proveedo.des');
Dos.Caption:=comenta(16,'proveedo.des');
end;

procedure TFormaProveedo.EditDCRED_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(17,'proveedo.des');
Dos.Caption:=comenta(18,'proveedo.des');
end;

procedure TFormaProveedo.EditFULCO_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(19,'proveedo.des');
Dos.Caption:=comenta(20,'proveedo.des');
end;

procedure TFormaProveedo.EditCLVEN_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(21,'proveedo.des');
Dos.Caption:=comenta(22,'proveedo.des');
end;

procedure TFormaProveedo.EditSALDO_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(23,'proveedo.des');
Dos.Caption:=comenta(24,'proveedo.des');
end;

procedure TFormaProveedo.EditCOMPR_PMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Uno.Caption:=comenta(25,'proveedo.des');
Dos.Caption:=comenta(26,'proveedo.des');
end;




procedure TFormaProveedo.Saldos1Click(Sender: TObject);
var
desde,hastavalor:string;

begin
FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,False,False,true,true,true,true,'proveedo.cmp');
TablaProveedor.First;
desde:=TablaProveedor.FieldByName('CLAVE_P').AsString;
TablaProveedor.Last;
hastavalor:=TablaProveedor.FieldByName('CLAVE_P').AsString;
valoresiniciales('','',desde,hastavalor);
FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
AsignaVariables('','','','','','','','','','','','','','','','');
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);
poneetiquetas('Proveedor','Nombre','Saldo','','','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
Concentrar(TablaProveedor,FormaFormatos.De.Text,FormaFormatos.Hasta.Text,'f','f','f','CLAVE_P','NOMBR_P','SALDO_P','','','','','','','','','X','','D');
parametrosgrafica('Gráfica de Saldos de Proveedores','Clave del Proveedor','Cantidad',1);
FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;

FormaBarras.Concentrado.Clear;
FormaBarras.Caption:='Reporte de Saldos de Proveedores';
FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;
end;

procedure TFormaProveedo.ElegirFormato1Click(Sender: TObject);
begin
FormaFormatos.Tag:=3;
FormaFormatos.Rangos.Visible:=False;
FormaFormatos.Formatos.Visible:=True;
FormaFormatos.ShowModal;
if FormaFormatos.Tag=3 then
begin
if FileExists(Formaformatos.Rutas.Text) then
begin
nombreformato:=Formaformatos.Rutas.Text;
{forma(TablaProveedor,TablaProveedor,Formaformatos.Rutas.Text,'i')}
end
else
MuestraMensaje('El Formato '+Formaformatos.Rutas.Text+' No Existe');
end;

 FormaFormatos.Tag:=1;
end;

procedure TFormaProveedo.DisearFormato1Click(Sender: TObject);
begin
FormaFormatos.Rangos.Visible:=False;
FormaFormatos.Formatos.Visible:=True;
FormaFormatos.ShowModal;

end;

procedure TFormaProveedo.TablaProveedorEditError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
DatabaseError('No se Pueden Editar los Datos ha Ocurrido un Error');
end;

procedure TFormaProveedo.TablaProveedorPostError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
DatabaseError('No se Pueden Guardar los Datos ha Ocurrido un Error');
end;


procedure TFormaProveedo.EditCLAVE_PExit(Sender: TObject);
begin
quitacolor(EditCLAVE_P.ComponentIndex);
end;

procedure TFormaProveedo.EditNOMBR_PExit(Sender: TObject);
begin
quitacolor(EditNOMBR_P.ComponentIndex);
end;

procedure TFormaProveedo.EditSTATU_PExit(Sender: TObject);
begin
quitacolor(EditSTATU_P.ComponentIndex);
end;

procedure TFormaProveedo.EditRFCXX_PExit(Sender: TObject);
begin
quitacolor(EditRFCXX_P.ComponentIndex);
end;

procedure TFormaProveedo.EditDIREC_PExit(Sender: TObject);
begin
quitacolor(EditDIREC_P.ComponentIndex);
end;

procedure TFormaProveedo.EditPOBLA_PExit(Sender: TObject);
begin
quitacolor(EditPOBLA_P.ComponentIndex);
end;

procedure TFormaProveedo.EditCPXXX_PExit(Sender: TObject);
begin
quitacolor(EditCPXXX_P.ComponentIndex);
end;

procedure TFormaProveedo.EditDREPA_PExit(Sender: TObject);
begin
quitacolor(EditDREPA_P.ComponentIndex);
end;

procedure TFormaProveedo.EditZONAX_PExit(Sender: TObject);
begin
quitacolor(EditZONAX_P.ComponentIndex);
end;

procedure TFormaProveedo.EditDCRED_PExit(Sender: TObject);
begin
quitacolor(EditDCRED_P.ComponentIndex);
end;

procedure TFormaProveedo.EditFULCO_PExit(Sender: TObject);
begin
quitacolor(EditFULCO_P.ComponentIndex);
end;

procedure TFormaProveedo.EditCLVEN_PExit(Sender: TObject);
begin
quitacolor(EditCLVEN_P.ComponentIndex);
end;

procedure TFormaProveedo.EditSALDO_PExit(Sender: TObject);
begin
quitacolor(EditSALDO_P.ComponentIndex);
end;

procedure TFormaProveedo.EditCOMPR_PExit(Sender: TObject);
begin
quitacolor(EditCOMPR_P.ComponentIndex);
end;

procedure TFormaProveedo.BotonCambiosMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaProveedo.Left+BotonCambios.Left,FormaProveedo.Top+BotonCambios.Top+BotonCambios.Height,10);
end;

procedure TFormaProveedo.BotonNuevoMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaProveedo.Left+BotonNuevo.Left,FormaProveedo.Top+BotonNuevo.Top+BotonNuevo.Height,11);
end;

procedure TFormaProveedo.BotonGuardarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaProveedo.Left+BotonGuardar.Left,FormaProveedo.Top+Botonguardar.Top+BotonGuardar.Height,12);
end;

procedure TFormaProveedo.BotonBuscarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaProveedo.Left+BotonBuscar.Left,FormaProveedo.Top+BotonBuscar.Top+Botonbuscar.Height,13);
end;

procedure TFormaProveedo.BotonImprimirMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaProveedo.Left+BotonImprimir.Left,FormaProveedo.Top+BotonImprimir.Top+BotonImprimir.Height,14);
end;

procedure TFormaProveedo.NavegadorClick(Sender: TObject;
  Button: TNavigateBtn);
begin
actualizasaldos;
end;

procedure TFormaProveedo.CargosAbonosSaldo1Click(Sender: TObject);
var
desde,hastavalor:string;

begin
FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,False,False,true,true,true,true,'proveedo.cmp');
TablaProveedor.First;
desde:=TablaProveedor.FieldByName('CLAVE_P').AsString;
TablaProveedor.Last;
hastavalor:=TablaProveedor.FieldByName('CLAVE_P').AsString;
valoresiniciales('','',desde,hastavalor);
FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
AsignaVariables('','','','','','','','','','','','','','','','');
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);
poneetiquetas('Proveedor','Nombre','Cargos','Abonos','Saldo','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
Concentrar(TablaProveedor,FormaFormatos.De.Text,FormaFormatos.Hasta.Text,'f','f','f','CLAVE_P','NOMBR_P','CARGO_P','ABONO_P','SALDO_P','','','','','','','X','','D');
parametrosgrafica('Gráfica de Cargos, Abonos y Saldo de Proveedores','Clave del Proveedor','Cantidad',3);
FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;

FormaBarras.Concentrado.Clear;
FormaBarras.Caption:='Reporte de Cargos, Abonos y Saldos de Proveedores';
FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;

end;

procedure TFormaProveedo.ImprimePlantilla1Click(Sender: TObject);
begin
FormaProveedo.Print;
end;

procedure TFormaProveedo.Temas1Click(Sender: TObject);
begin
PoneAyuda(leeruta+'\ayuda\proveedo.rtf',0);
end;

procedure TFormaProveedo.ImprimeRango1Click(Sender: TObject);
begin
DialogoImprimir.ShowModal;
if Tag=1 then
begin

TablaProveedor.SetRange([DialogoImprimir.PrimeraPagina.Text],[DialogoImprimir.UltimaPagina.Text]);

while not TablaProveedor.Eof do
begin
if FileExists(nombreformato) then
forma(TablaProveedor,TablaProveedor,nombreformato,'i');
TablaProveedor.Next;
end;

TablaProveedor.CancelRange;
{else
MuestraMensaje('El Formato '+leeruta+'\consulta\'+ruta(12)+'No Existe');}
end;

end;

procedure TFormaProveedo.CancelaMovimiento1Click(Sender: TObject);
begin
if (BotonNuevo.Tag=1) then
begin
TablaProveedor.Delete;
activabotones(True,True,False,True,True,True,False);
desactiva;
end;

if (BotonCambios.Tag=1) then
begin
TablaAuxiliar.Delete;
DataSource1.DataSet:=TablaProveedor;
activabotones(True,True,False,True,True,True,False);
desactiva;
end;
BotonNuevo.Tag:=0;
BotonCambios.Tag:=0;

end;


procedure TFormaProveedo.BotonPreliminarClick(Sender: TObject);
begin
FormaEdicion.BotonImprime.Tag:=0;
if FileExists(nombreformato) then
begin
forma(TablaProveedor,TablaProveedor,nombreformato,'p');
end
else
MuestraMensaje('El Formato '+nombreformato+'No Existe');
FormaEdicion.Hoja.Tag:=0;
FormaEdicion.ShowModal;

if FormaEdicion.BotonImprime.Tag=1 then
forma(TablaProveedor,TablaProveedor,nombreformato,'i');

end;


procedure TFormaProveedo.SpeedButton1Click(Sender: TObject);
begin
MuestraContactosProveedor(EditCLAVE_P.Text);
end;

procedure TFormaProveedo.BusquedaNoIndexada1Click(Sender: TObject);
begin
PoneCamposBusqueda('proveedo.cmp');
if FormaBusquedaNoIndexada.Tag=1 then
begin
try
if not TablaProveedor.Locate(FormaBusquedaNoIndexada.Campo2.Text, FormaBusquedaNoIndexada.Valor.Text, [loPartialKey])then
MuestraMensaje('No se Encuentra');
except
MuestraMensaje('Valor no Valido Revise Por Favor');
end;

end;

end;


end.


