{ =============================================================================== 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.