This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/Proveedores/FacturasProveedores.pas
2007-06-21 15:47:20 +00:00

437 lines
14 KiB
ObjectPascal

{
===============================================================================
Copyright (©) 2001. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versión: 01-10-2001
Versión actual: 1.0.7
Fecha versión actual: 07-01-2005
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
09-10-2001 Al pulsar la tecla ESC se activa el botón 'Cancelar'. Sólo
pasa cuando este frame está en una ventana modal.
07-04-2002 Se ha adaptado para la transacción única.
06-05-2002 Adaptación al grid 'TdxDBGrid'.
15-05-2002 P224. Poder cambiar la situación a muchas facturas a la vez.
08-04-2003 P263. Agrupar por años las facturas.
07-03-2004 Al hacer doble click sobre el grid, se pasará a modificar el
registro o se seleccionará, dependiendo del modo en el que
se encuentre la pantalla.
07-03-2004 p272. Adaptación a multiempresa.
07-01-2005 Arreglo de informes de facturas pendientes y facturas de iva que
llaman al mismo frame y no cambiaba pero al cambiar entidad solo si funciona.
===============================================================================
}
unit FacturasProveedores;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
RdxFrameFacturasProveedor, RdxBotones, ExtCtrls, RdxPaneles, RdxBarras,
Grids, DBGrids, RXDBCtrl, Menus, am2000menuitem, RdxFrame, am2000utils,
am2000popupmenu, am2000, Db, StdCtrls, RdxComboBox, dxCntner, dxTL,
dxDBCtrl, dxDBGrid;
type
TfrFacturasProveedores = class(TRdxFrameFacturasProveedor)
BarraFacturas: TRdxBarraSuperior;
bAnadir: TRdxBotonSuperior;
bModificar: TRdxBotonSuperior;
bEliminar: TRdxBotonSuperior;
bConsultar: TRdxBotonSuperior;
bBuscar: TRdxBotonSuperior;
bListar: TRdxBotonMenu;
pnlCuerpo: TRdxPanel;
pnlGridFacturas: TPanel;
dsFacturas: TDataSource;
menuListar: TPopupMenu2000;
mnuListadoFacturasPendientes: TMenuItem2000;
N1: TMenuItem2000;
mnuListadoIVA: TMenuItem2000;
brSeleccion: TRdxBarraInferior;
bSeleccionar: TRdxBoton;
bCancelarGuardar: TRdxBoton;
brSimple: TRdxBarraInferior;
bSalir: TRdxBoton;
pnlExtra: TRdxBarraSuperior;
bCambiarSituacion: TRdxBoton;
gridFacturas: TdxDBGrid;
N2: TMenuItem2000;
Listadodefacturasdeproveedor1: TMenuItem2000;
imgSombra: TImage;
RdxPanel1: TRdxPanel;
Label1: TLabel;
cbxAno: TRdxComboBox;
procedure bAnadirClick(Sender: TObject);
procedure bModificarClick(Sender: TObject);
procedure bEliminarClick(Sender: TObject);
procedure bConsultarClick(Sender: TObject);
procedure bBuscarClick(Sender: TObject);
procedure mnuListadoFacturasPendientesClick(Sender: TObject);
procedure bSeleccionarClick(Sender: TObject);
procedure bSalirClick(Sender: TObject);
procedure bCancelarGuardarClick(Sender: TObject);
procedure mnuListadoIVAClick(Sender: TObject);
procedure bCambiarSituacionClick(Sender: TObject);
procedure gridFacturasRefreshButton(Sender: TObject);
procedure gridFacturasCustomDrawCell(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
ASelected, AFocused, ANewItemRow: Boolean; var AText: String;
var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
var ADone: Boolean);
procedure Listadodefacturasdeproveedor1Click(Sender: TObject);
procedure cbxAnoChange(Sender: TObject);
procedure gridFacturasDblClick(Sender: TObject);
private
FCodigoProveedor : string;
procedure SetCodigoProveedor(Value : String);
procedure ActualizarBotones;
protected
procedure BuscarFactura; override;
procedure FreeContenido; override;
procedure VerModal; override;
procedure SetContenido (NuevoFrame : TRdxFrame); override;
public
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
property CodigoProveedor : String read FCodigoProveedor write SetCodigoProveedor;
property TablaFacturasProveedor;
property Entidad;
end;
var
frFacturasProveedores: TfrFacturasProveedores;
implementation
{$R *.DFM}
{ TfrFacturasProveedores }
uses
Tipos, BaseDatos, TablaFacturasProveedor, IBDatabase, Configuracion,
IBCustomDataSet, Mensajes, FacturaProveedor, BuscarFacturaProveedor,
ListadoFacturasProvPenIVA, PagarFacturaProveedor, StrFunc, ListadoFacturasProv,
Constantes, Literales, RdxEmpresaActiva;
procedure TfrFacturasProveedores.BuscarFactura;
begin
with TablaFacturasProveedor do
begin
DisableControls;
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
Open;
dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
ActualizarBotones;
EnableControls;
Locate('CODIGO', CodigoFactura, []);
end;
end;
constructor TfrFacturasProveedores.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Entidad := entFacturaProveedor;
ConfigurarFrame(Self, Self.Entidad);
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
TablaFacturasProveedor := TIBDataSet.Create(Self);
dsFacturas.DataSet := TablaFacturasProveedor;
with TablaFacturasProveedor do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaFacturasProveedor.sqlConsultarGridFacturas);
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
Open;
ActualizarBotones;
end;
dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
dmTablaFacturasProveedor.InicializarGridFacturas(gridFacturas);
gridFacturas.GotoFirst;
cbxAno.Items := dmTablaFacturasProveedor.DarListaAnos(EmpresaActiva.Codigo, True);
cbxAno.ItemIndex := 0;
end;
destructor TfrFacturasProveedores.Destroy;
begin
TablaFacturasProveedor.Close;
TablaFacturasProveedor.UnPrepare;
TablaFacturasProveedor.Free;
inherited;
end;
procedure TfrFacturasProveedores.FreeContenido;
begin
if (Contenido is TRdxFrameFacturasProveedor) then
CodigoFactura := (Contenido as TRdxFrameFacturasProveedor).CodigoFactura;
if (ContenidoModal is TfrPagarFacturaProveedor) then
CodigoFactura := (ContenidoModal as TfrPagarFacturaProveedor).ListaFacturas.Strings[0];
inherited FreeContenido;
end;
procedure TfrFacturasProveedores.SetCodigoProveedor(Value: String);
begin
if FCodigoProveedor = Value then
exit;
FCodigoProveedor := Value;
with TablaFacturasProveedor do
begin
DisableControls;
Close;
SelectSQL.Assign(dmTablaFacturasProveedor.sqlConsultarGridFacturasProv);
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
ParamByName('CODIGOPROVEEDOR').AsString := FCodigoProveedor;
Prepare;
Open;
ActualizarBotones;
EnableControls;
dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
Locate('CODIGO', CodigoFactura, []);
end;
end;
procedure TfrFacturasProveedores.bAnadirClick(Sender: TObject);
begin
inherited;
Contenido := TfrFacturaProveedor.Create(Self);
Contenido.Modo := Anadir;
Contenido.Visible := True;
end;
procedure TfrFacturasProveedores.bModificarClick(Sender: TObject);
begin
CodigoFactura := TablaFacturasProveedor.FieldByName('CODIGO').AsString;
if UpperCase(TablaFacturasProveedor.FieldByName('SITUACION').AsString) <> 'NO PAGADA' then
begin
VerMensaje(mFacturaNoModificar);
Exit;
end;
Contenido := TfrFacturaProveedor.Create(Self);
Contenido.Modo := Modificar;
Contenido.Visible := True;
end;
procedure TfrFacturasProveedores.bEliminarClick(Sender: TObject);
begin
CodigoFactura := TablaFacturasProveedor.FieldByName('CODIGO').AsString;
if UpperCase(TablaFacturasProveedor.FieldByName('SITUACION').AsString) <> 'NO PAGADA' then
begin
VerMensaje(mFacturaNoEliminar);
Exit;
end;
Contenido := TfrFacturaProveedor.Create(Self);
Contenido.Modo := Eliminar;
Contenido.Visible := True;
end;
procedure TfrFacturasProveedores.bConsultarClick(Sender: TObject);
begin
CodigoFactura := TablaFacturasProveedor.FieldByName('CODIGO').AsString;
Contenido := TfrFacturaProveedor.Create(Self);
Contenido.Modo := Consultar;
Contenido.Visible := True;
end;
procedure TfrFacturasProveedores.bBuscarClick(Sender: TObject);
begin
CodigoFactura := TablaFacturasProveedor.FieldByName('CODIGO').AsString;
Contenido := TfrBuscarFacturaProveedor.Create(Self);
end;
procedure TfrFacturasProveedores.mnuListadoFacturasPendientesClick(Sender: TObject);
begin
Contenido := TfrListadoFacturasProvPenIVA.Create(Self);
Contenido.Entidad := entListadoFacturasProvPendientes;
end;
procedure TfrFacturasProveedores.bSeleccionarClick(Sender: TObject);
begin
CodigoFactura := TablaFacturasProveedor.FieldByName('CODIGO').AsString;
CloseFrame;
end;
procedure TfrFacturasProveedores.bSalirClick(Sender: TObject);
begin
CloseFrame;
end;
procedure TfrFacturasProveedores.bCancelarGuardarClick(Sender: TObject);
begin
FCodigoFactura := NULL;
CloseFrame;
end;
procedure TfrFacturasProveedores.mnuListadoIVAClick(Sender: TObject);
begin
Contenido := TfrListadoFacturasProvPenIVA.Create(Self);
Contenido.Entidad := entListadoFacturasProvIVA;
end;
procedure TfrFacturasProveedores.bCambiarSituacionClick(Sender: TObject);
var
Situacion : String;
iAux : Integer;
begin
ListaFacturas := dmTablaFacturasProveedor.DarListaFacturas(gridFacturas, @TablaFacturasProveedor);
if (ListaFacturas = NIL) or (ListaFacturas.Count = 0) then
exit;
// Comprobar que todas las facturas tienen la misma situación
for iAux := 0 to ListaFacturas.Count - 1 do
begin
if iAux = 0 then
Situacion := dmTablaFacturasProveedor.DarSituacionFactura(EmpresaActiva.Codigo,
ListaFacturas.Strings[iAux])
else begin
if Situacion <> dmTablaFacturasProveedor.DarSituacionFactura(EmpresaActiva.Codigo,
ListaFacturas.Strings[iAux]) then
begin
VerMensaje(msgFacSitDistinta);
Exit;
end;
end;
end;
CaptionModal := 'Cambiar situación de factura de proveedor';
WidthModal := 460;
HeightModal := 200;
ModoModal := Pagar;
EntidadModal := entProveedor;
ContenidoModal := TfrPagarFacturaProveedor.Create(Self);
end;
procedure TfrFacturasProveedores.VerModal;
begin
if (ContenidoModal is TfrPagarFacturaProveedor) then
(ContenidoModal as TfrPagarFacturaProveedor).ListaFacturas := ListaFacturas;
inherited;
end;
procedure TfrFacturasProveedores.ActualizarBotones;
begin
if BaseDatos.IsReadOnly then
begin
bAnadir.Enabled := False;
bModificar.Enabled := False;
bEliminar.Enabled := False;
bConsultar.Enabled := True;
bBuscar.Enabled := True;
bListar.Enabled := True;
bCambiarSituacion.Enabled := False;
Exit;
end;
if TablaFacturasProveedor.RecordCount = 0 then
begin
bAnadir.Enabled := True;
bModificar.Enabled := False;
bEliminar.Enabled := False;
bConsultar.Enabled := False;
bBuscar.Enabled := False;
bListar.Enabled := False;
bCambiarSituacion.Enabled := False;
end
else begin
bAnadir.Enabled := True;
bModificar.Enabled := True;
bEliminar.Enabled := True;
bConsultar.Enabled := True;
bBuscar.Enabled := True;
bListar.Enabled := True;
bCambiarSituacion.Enabled := True;
end;
end;
procedure TfrFacturasProveedores.gridFacturasRefreshButton(Sender: TObject);
begin
BuscarFactura;
end;
procedure TfrFacturasProveedores.gridFacturasCustomDrawCell(
Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean;
var AText: String; var AColor: TColor; AFont: TFont;
var AAlignment: TAlignment; var ADone: Boolean);
var
IndiceCol : Integer;
begin
if not ASelected then
begin
IndiceCol := (Sender as TdxDBGrid).ColumnByFieldName('IMPORTETOTAL').Index;
if Copy(ANode.Strings[IndiceCol], 0, 1) = '-' then
AFont.Color := COLOR_ABONO;
end;
end;
procedure TfrFacturasProveedores.Listadodefacturasdeproveedor1Click(Sender: TObject);
begin
Contenido := TfrListadoFacturasProv.Create(Self);
end;
procedure TfrFacturasProveedores.cbxAnoChange(Sender: TObject);
begin
if cbxAno.Text = CTE_TODOS then begin
gridFacturas.Filter.Remove(gridFacturas.FindColumnByFieldName(CTE_ANO));
gridFacturas.Filter.Clear;
end
else begin
gridFacturas.Filter.Clear;
gridFacturas.Filter.Add(gridFacturas.FindColumnByFieldName(CTE_ANO), cbxAno.Text, cbxAno.Text);
end;
gridFacturas.SetFocus;
gridFacturas.GotoFirst;
//Falta seleccionar tupla
end;
procedure TfrFacturasProveedores.gridFacturasDblClick(Sender: TObject);
begin
if Modo = Seleccionar then
bSeleccionar.Click
else
bModificar.Click;
end;
procedure TfrFacturasProveedores.SetContenido(NuevoFrame: TRdxFrame);
begin
inherited;
if (Contenido is TfrListadoFacturasProv) then
(Contenido as TfrListadoFacturasProv).CodigoProveedor := TablaFacturasProveedor.FieldByName('CODIGOPROVEEDOR').AsString;
if (Contenido is TfrListadoFacturasProvPenIVA) then
(Contenido as TfrListadoFacturasProvPenIVA).CodigoProveedor := TablaFacturasProveedor.FieldByName('CODIGOPROVEEDOR').AsString;
end;
end.