unit concupag;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Db, DBTables, Grids, DBGrids, DBCtrls, StdCtrls, Mask, ExtCtrls,checa,
  Menus, Buttons{, Concen}, conver,
  describe, ComCtrls,Impresor,dialogos,Apertura;

type
  TFormaConsultaCuePagar = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    ClaveProveedor: TDBEdit;
    Nombre: TLabel;
    Saldo: TLabel;
    DBNavigator1: TDBNavigator;
    Detalle: TDBGrid;
    TablaDeta: TTable;
    TablaProveedo: TTable;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    MainMenu1: TMainMenu;
    Archivo1: TMenuItem;
    Procesos1: TMenuItem;
    Reportes1: TMenuItem;
    Salir1: TMenuItem;
    ActualizalosSaldos1: TMenuItem;
    EliminaCuentasSaldadas1: TMenuItem;
    ProvedoresconSaldo1: TMenuItem;
    TodoslosProveedores1: TMenuItem;
    BotonBuscar: TSpeedButton;
    BotonSaldos: TSpeedButton;
    Bevel1: TBevel;
    Abonos: TLabel;
    Cargos: TLabel;
    BitBtn1: TBitBtn;
    Consulta1: TMenuItem;
    StatusBar1: TStatusBar;
    ImprimeRango1: TMenuItem;
    BotonSalir: TSpeedButton;
    procedure ClaveProveedorChange(Sender: TObject);
    procedure DetalleDblClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure ProvedoresconSaldo1Click(Sender: TObject);
    procedure TodoslosProveedores1Click(Sender: TObject);
    procedure TablaDetaFilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure BotonBuscarClick(Sender: TObject);
    procedure ActualizalosSaldos1Click(Sender: TObject);
    procedure Consulta1Click(Sender: TObject);
    procedure BotonBuscarMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonSaldosMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Salir1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ImprimeRango1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BotonSalirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormaConsultaCuePagar: TFormaConsultaCuePagar;

implementation

uses cxpd, formatos, barras, buscar,progreso, consulta;

{$R *.DFM}
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\Clientes.for');}
AssignFile(arch,ruta(8)+'\report\Cxp.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,ruta(8)+'\report\Cxp.for');
Reset(arch);
AssignFile(arch2,ruta(8)+'\report\Cxp2.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,ruta(8)+'\report\Cxp.for');
Rewrite(arch);
AssignFile(arch2,ruta(8)+'\report\Cxp2.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 Cuentas Por Pagar';
Archi.Caption:='Cxp.for';
end;
end;

procedure saldos(inicio,final:String);
var
abono,cargo:Real;
begin
with FormaConsultaCuePagar do
begin
TablaProveedo.First;
While not TablaProveedo.Eof do
begin
TablaDeta.Filtered:=False;
Nombre.Caption:='Nombre  '+TablaProveedo.FieldByName('NOMBR_P').AsString;
{if (EditCliente.Text<>'')and(EditCliente.Text<>'') then
TablaDeta.SetRange([EditCliente.Text],[EditCliente.Text]);}
TablaDeta.Filtered:=True;
cargo:=0;
abono:=0;
TablaDeta.First;
while not TablaDeta.EOF do
begin
if (inicio<>'')and(final<>'') then
begin
if (TablaDeta.FieldByName('FEAPL_CP').AsDateTime>=StrToDateTime(inicio))and(TablaDeta.FieldByName('FEAPL_CP').AsDateTime<=StrToDatetime(final)) then
begin
cargo:=cargo+TablaDeta.FieldByName('IMCUE_CP').AsFloat;
abono:=abono+(TablaDeta.FieldByName('IMCUE_CP').AsFloat-TablaDeta.FieldByName('SALDO_CP').AsFloat);
end;
end
else
begin
cargo:=cargo+TablaDeta.FieldByName('IMCUE_CP').AsFloat;
abono:=abono+(TablaDeta.FieldByName('IMCUE_CP').AsFloat-TablaDeta.FieldByName('SALDO_CP').AsFloat);
end;
TablaDeta.Next;
end;
TablaProveedo.Edit;
TablaProveedo.FieldByName('CARGO_P').AsFloat:=cargo;
TablaProveedo.FieldByName('ABONO_P').AsFloat:=abono;
TablaProveedo.FieldByName('SALDO_P').AsFloat:=cargo-abono;
TablaProveedo.Post;
TablaProveedo.Next;
end;
end;
end;
{**************************}

procedure rangos;
var
cargo,abono:Currency;
begin
With FormaConsultaCuePagar do
begin
Refresh;
TablaDeta.CancelRange;
TablaDeta.SetRange([ClaveProveedor.Text],[ClaveProveedor.Text]);
Nombre.Caption:='Nombre:  '+TablaDeta.FieldByName('NOMBR_CP').AsString;
{*****}
cargo:=0;
abono:=0;
TablaDeta.First;
while not TablaDeta.EOF do
begin
cargo:=cargo+TablaDeta.FieldByName('IMCUE_CP').AsFloat;
abono:=abono+(TablaDeta.FieldByName('IMCUE_CP').AsFloat-TablaDeta.FieldByName('SALDO_CP').AsFloat);
TablaDeta.Next;
end;
Cargos.Caption:='Cargos :   '+convierte('###,###,##0.00',CurrToStr(cargo),'$');
Abonos.Caption:='Abonos : - '+convierte('###,###,##0.00',CurrToStr(abono),'$');
cargo:=cargo-abono;
Saldo.Caption:='Saldo  :   '+convierte('###,###,##0.00',CurrToStr(cargo),'$');
{******}
end;
end;

procedure rutas;
var
  I: Integer;
begin

with FormaConsultaCuePagar do
begin
  for I := 0 to ComponentCount -1 do
    begin
     if Components[I] is TTable  then
     begin
       TTable(Components[I]).DatabaseName:=ruta(8);
//       TTable(Components[I]).Open;
AbreTablaTotal(TTable(Components[I]));
     end;

    end;
end;
end;

procedure TFormaConsultaCuePagar.ClaveProveedorChange(Sender: TObject);
begin
rangos;
end;

procedure TFormaConsultaCuePagar.DetalleDblClick(Sender: TObject);
begin
posicionacxp(TablaDeta.FieldByName('NUDOC_CP').AsString);
FormaCxPDetalle.ShowModal;
TablaDeta.Edit;
TablaDeta.UpdateRecord;
TablaDeta.Post;
end;

procedure TFormaConsultaCuePagar.FormActivate(Sender: TObject);
begin
Refresh;
if FormaConsultaCuePagar.Tag=0 then
begin
rutas;
TablaDeta.Filtered:=True;
end;
FormaconsultaCuePagar.Tag:=1;
end;

procedure TFormaConsultaCuePagar.ProvedoresconSaldo1Click(Sender: TObject);
var
desde:string;
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
FormaFormatos.ShowModal;
saldos(DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date));
Concentrar(TablaProveedo,FormaFormatos.De.Text,FormaFormatos.Hasta.Text,'f','f','f','CLAVE_P','NOMBR_P','CARGO_P','ABONO_P','SALDO_P','','','','','','SALDO_P','!','0','D');
poneetiquetas('Proveedor','Nombre','Cargos','Abonos','Saldo','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
FormaBarras.Tag:=1;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;
FormaBarras.Concentrado.Clear;
//FormaBarras.Caption:=AgregaTitulo2('Reporte de '+ProvedoresconSaldo1.Caption,FormaFormatos.Titulo.Text);
//******pone el titulo
 with Sender as TMenuItem do
  begin
  desde:=Caption;
  end;
FormaBarras.Caption:=AgregaTitulo2('Reporte de '+desde,FormaFormatos.Titulo.Text);
//******termina pone el titulo
FormaBarras.ShowModal;
FormaFormatos.Free;
FormaBarras.Free;

end;

procedure TFormaConsultaCuePagar.TodoslosProveedores1Click(
  Sender: TObject);
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
FormaFormatos.ShowModal;
saldos(DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date));
Concentrar(TablaProveedo,FormaFormatos.De.Text,FormaFormatos.Hasta.Text,'f','f','f','CLAVE_P','NOMBR_P','CARGO_P','ABONO_P','SALDO_P','','','','','','SALDO_P','!','0','D');
poneetiquetas('Proveedor','Nombre','Cargos','Abonos','Saldo','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
FormaBarras.Tag:=1;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;
FormaBarras.Concentrado.Clear;
FormaBarras.Caption:=AgregaTitulo2('Reporte de '+TodoslosProveedores1.Caption,FormaFormatos.Titulo.Text);
FormaBarras.ShowModal;

FormaFormatos.Free;
FormaBarras.Free;

end;

procedure TFormaConsultaCuePagar.TablaDetaFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
Accept:=DataSet['TIMOV_CP']='51';
end;

procedure TFormaConsultaCuePagar.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
rangos;
end;

procedure TFormaConsultaCuePagar.BotonBuscarClick(Sender: TObject);
begin
FormaBusqueda:=TFormaBusqueda.Create(Application);
FormaBusqueda.ShowModal;
TablaProveedo.FindNearest([FormaBusqueda.CajaBuscar.Text]);
rangos;
FormaBusqueda.Free;
end;

procedure TFormaConsultaCuePagar.ActualizalosSaldos1Click(Sender: TObject);
begin
saldos('','');
end;

procedure TFormaConsultaCuePagar.Consulta1Click(Sender: TObject);
begin
FormaConsulta.TablaConsulta.DataBaseName:=ruta(8);
FormaConsulta.TablaConsulta.IndexName:='CLPRO_CP';
FormaConsulta.TablaConsulta.TableName:='Cuepagar.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\cxp.cmp';
FormaConsulta.TipoVista.Text:=leeruta+'\consulta\ctaxp.vis';
FormaConsulta.Destino.Text:=leeruta+'\tempo\repcxp.rep';
FormaConsulta.NumCampo.Caption:='0';
asignatipo;
leearchivocampos('cuepagar.dbf','');
formaConsulta.ShowModal;
end;

procedure TFormaConsultaCuePagar.BotonBuscarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaConsultaCuePagar.Left+BotonBuscar.Left,FormaConsultaCuePagar.Top+BotonBuscar.Top+BotonBuscar.Height,47);
end;

procedure TFormaConsultaCuePagar.BotonSaldosMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaConsultaCuePagar.Left+BotonSaldos.Left,FormaConsultaCuePagar.Top+BotonSaldos.Top+BotonSaldos.Height,48);
end;

procedure TFormaConsultaCuePagar.Salir1Click(Sender: TObject);
begin
Close;
end;

procedure TFormaConsultaCuePagar.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
Salir1.Tag:=1000;
end;

procedure TFormaConsultaCuePagar.ImprimeRango1Click(Sender: TObject);
var
uno1,dos1:integer;
begin
if ImpresoraLista then
begin
TablaDeta.First;
iniciaimpresora('Reporte de Cuentas por Cobrar Detallado al Día '+DateToStr(Date),Nombre.Caption,2);
FormaCxPDetalle.Show;
while not TablaDeta.Eof do
begin
uno1:=TablaDeta.FieldByName('NUCOM_CP').AsInteger;
rangoimprimecuentaxpagar(uno1,dos1);
TablaDeta.Next;
end;
finalizaimpresora(Cargos.Caption,Abonos.Caption,Saldo.Caption,'s');
FormaCxPDetalle.Close;
end
else
MuestraMensaje('La Impresora No Se Encuentra Lista...');
end;

procedure TFormaConsultaCuePagar.BitBtn1Click(Sender: TObject);
begin
posicionacxp(TablaDeta.FieldByName('NUDOC_CP').AsString);
FormaCxPDetalle.ShowModal;
TablaDeta.Edit;
TablaDeta.UpdateRecord;
TablaDeta.Post;
end;

procedure TFormaConsultaCuePagar.BotonSalirClick(Sender: TObject);
begin
close;
end;

end.
