{ =============================================================================== Copyright (©) 2002. 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: 03-11-2002 Versión actual: 1.0.1 Fecha versión actual: 16-04-2003 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 16-04-2003 Los abonos se han puesto de color rojo oscuro. =============================================================================== } unit PagosClientes; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, ComCtrls, RdxBotones, ToolWin, ExtCtrls, Menus, am2000menuitem, am2000popupmenu, am2000, Db, DBTables, RXDBCtrl, RdxPaneles, RdxBarras, TablaClientes, RdxDBFrame, RdxFramePagos, RdxFrame, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, cxDBData, cxGridTableView, cxGridCustomTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, Configuracion, StdCtrls, Buttons, AdvPanel, cxContainer, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, ActnList, RdxEmpresaActiva, am2000utils, cxDataStorage; type TfrPagosClientes = class(TRdxFramePagos) dsPagosClientes: TDataSource; brSeleccion: TRdxBarraInferior; bSeleccionar: TRdxBoton; bCancelar: TRdxBoton; BarraPagosClientes: TRdxBarraSuperior; MenuOpciones: TPopupMenu2000; mnuOpPagoA: TMenuItem2000; mnuEliminar: TMenuItem2000; gridPagosClientesDBTableView1: TcxGridDBTableView; gridPagosClientesLevel1: TcxGridLevel; gridPagosClientes: TcxGrid; mnuConsultar: TMenuItem2000; pnlCuerpo: TPanel; pnlSeparador: TPanel; Acciones: TActionList; actAnadirPago: TAction; actEliminar: TAction; actConsultar: TAction; actSeleccionar: TAction; actCancelar: TAction; pnlCuerpo2: TRdxPanel; pnlExtra: TRdxBarraSuperior; bAnadir: TRdxBotonMenu; menuAnadir: TPopupMenu2000; mnuPagoA: TMenuItem2000; mnuOpPagoB: TMenuItem2000; actImprimir: TAction; mnuImprimir: TMenuItem2000; bModificar: TRdxBotonSuperior; bConsultar: TRdxBotonSuperior; bEliminar: TRdxBotonSuperior; bSeparador1: TShape; bImprimir: TRdxBotonSuperior; actModificar: TAction; mnuAbonoA: TMenuItem2000; mnuAnadir: TMenuItem2000; mnuOpAbonoA: TMenuItem2000; mnuOpAbonoB: TMenuItem2000; mnuOpSep: TMenuItem2000; mnuOpSep2: TMenuItem2000; actAnadirAbono: TAction; mnuModificar: TMenuItem2000; imgSombra: TImage; bRefrescar: TRdxBoton; Shape1: TShape; RdxBotonSuperior1: TRdxBotonSuperior; actConsultarCobros: TAction; Panel1: TPanel; Label1: TLabel; Buscar: TcxTextEdit; RdxBoton1: TRdxBoton; procedure actAnadirPagoExecute(Sender: TObject); procedure actAnadirAbonoExecute(Sender: TObject); procedure actAnadirPagoBExecute(Sender: TObject); procedure actAnadirAbonoBExecute(Sender: TObject); procedure actModificarExecute(Sender: TObject); procedure actConsultarExecute(Sender: TObject); procedure actEliminarExecute(Sender: TObject); procedure actImprimirExecute(Sender: TObject); procedure actSeleccionarExecute(Sender: TObject); procedure actCancelarExecute(Sender: TObject); procedure bLimpiarClick(Sender: TObject); procedure RdxFramePagosClientesShow(Sender: TObject); procedure gridPagosClientesDBTableView1DblClick(Sender: TObject); procedure cxLookupComboBox1PropertiesEditValueChanged(Sender: TObject); procedure gridPagosClientesDBTableView1CustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure actRefrescarDatosExecute(Sender: TObject); procedure actConsultarCobrosExecute(Sender: TObject); procedure BuscarPropertiesChange(Sender: TObject); private procedure ActualizarBotones; protected procedure BuscarPago; override; procedure FreeContenido; override; procedure SetContenido (NuevoFrame : TRdxFrame); override; public constructor Create (AOwner : TComponent); override; destructor Destroy; override; published end; var frPagosClientes: TfrPagosClientes; implementation {$R *.DFM} uses Constantes, IBCustomDataSet, BaseDatos, Entidades, PagoCliente, Variants, TablaPagosCliente, Mensajes, Literales, ImprimirPagoCliente, TablaEmpresas, ListadoPagosCliente; //////////////////////////////////////////////////////////////////////////////// // PRIVATE //////////////////////////////////////////////////////////////////////////////// procedure TfrPagosClientes.ActualizarBotones; begin if BaseDatos.IsReadOnly then begin actAnadirPago.Enabled := False; actAnadirAbono.Enabled := False; actModificar.Enabled := False; actEliminar.Enabled := False; actConsultar.Enabled := True; actImprimir.Enabled := True; actConsultarCobros.Enabled := True; Exit; end; if TablaPagos.RecordCount = 0 then begin actAnadirPago.Enabled := True; actAnadirAbono.Enabled := True; actModificar.Enabled := False; actEliminar.Enabled := False; actConsultar.Enabled := False; actImprimir.Enabled := False; actConsultarCobros.Enabled := False; end else begin actAnadirPago.Enabled := True; actAnadirAbono.Enabled := True; actModificar.Enabled := True; actEliminar.Enabled := True; actConsultar.Enabled := True; actImprimir.Enabled := True; actConsultarCobros.Enabled := True; end; end; //////////////////////////////////////////////////////////////////////////////// // PROTECTED //////////////////////////////////////////////////////////////////////////////// procedure TfrPagosClientes.BuscarPago; begin with TablaPagos do begin DisableControls; Close; Open; dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos); ActualizarBotones; EnableControls; if not Locate('CODIGO', CodigoPago, []) then gridPagosClientesDBTableView1.Controller.GoToFirst else gridPagosClientesDBTableView1.Controller.TopRowIndex := gridPagosClientesDBTableView1.Controller.FocusedRowIndex; end; end; procedure TfrPagosClientes.FreeContenido; begin if (Contenido is TRdxFramePagos) then begin CodigoPago := (Contenido as TRdxFramePagos).CodigoPago; end; inherited FreeContenido; //gridPagosClientes.SetFocus; end; //////////////////////////////////////////////////////////////////////////////// // PUBLIC //////////////////////////////////////////////////////////////////////////////// constructor TfrPagosClientes.Create (AOwner : TComponent); begin inherited Create(AOwner); Entidad := entCobroCliente; BaseDatos := dmBaseDatos.BD; Transaccion := dmBaseDatos.Transaccion; TablaPagos := TIBDataSet.Create(Self); dsPagosClientes.DataSet := TablaPagos; with TablaPagos do begin DisableControls; Database := BaseDatos; Transaction := Transaccion; SelectSQL.Assign(dmTablaPagosCliente.sqlGrid); ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; Prepare; Open; ActualizarBotones; EnableControls; end; dmTablaPagosCliente.InicializarGridPagosClientes(gridPagosClientesDBTableView1); dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos); gridPagosClientesDBTableView1.OnDblClick := gridPagosClientesDBTableView1DblClick; gridPagosClientesDBTableView1.Controller.GoToFirst; end; destructor TfrPagosClientes.Destroy; begin TablaPagos.Close; TablaPagos.Unprepare; TablaPagos.Free; inherited; end; procedure TfrPagosClientes.actAnadirPagoExecute(Sender: TObject); begin if (Contenido <> Nil) and (Contenido.Modo = Anadir) then exit; Contenido := TfrPagoCliente.Create(Self); Contenido.Entidad := entCobroCliente; Contenido.Modo := Anadir; end; procedure TfrPagosClientes.actAnadirAbonoExecute(Sender: TObject); begin if (Contenido <> Nil) and (Contenido.Modo = Anadir) then exit; Contenido := TfrPagoCliente.Create(Self); Contenido.Entidad := entAbonoCliente; Contenido.Modo := Anadir; end; procedure TfrPagosClientes.actAnadirPagoBExecute(Sender: TObject); begin if (Contenido <> Nil) and (Contenido.Modo = Anadir) then exit; Contenido := TfrPagoCliente.Create(Self); Contenido.Entidad := entCobroCliente; Contenido.Modo := Anadir; end; procedure TfrPagosClientes.actAnadirAbonoBExecute(Sender: TObject); begin if (Contenido <> Nil) and (Contenido.Modo = Anadir) then exit; Contenido := TfrPagoCliente.Create(Self); Contenido.Entidad := entAbonoCliente; Contenido.Modo := Anadir; end; procedure TfrPagosClientes.actModificarExecute(Sender: TObject); begin Contenido := TfrPagoCliente.Create(Self); Contenido.Modo := Modificar; end; procedure TfrPagosClientes.actConsultarExecute(Sender: TObject); begin Contenido := TfrPagoCliente.Create(Self); Contenido.Modo := Consultar; end; procedure TfrPagosClientes.actEliminarExecute(Sender: TObject); begin Contenido := TfrPagoCliente.Create(Self); Contenido.Modo := Eliminar; end; procedure TfrPagosClientes.actImprimirExecute(Sender: TObject); begin Contenido := TfrImprimirPagoCliente.Create(Self); Contenido.Modo := Imprimir; (Contenido as TfrImprimirPagoCliente).codigoPago := TablaPagos.fieldbyname('CODIGO').AsString; end; procedure TfrPagosClientes.actSeleccionarExecute(Sender: TObject); begin if TablaPagos.RecordCount = 0 then begin VerMensaje(msgCliNoExistePag); exit; end; CodigoPago := TablaPagos.FieldByName('CODIGO').AsString; CloseFrame; end; procedure TfrPagosClientes.actCancelarExecute(Sender: TObject); begin CodigoPago := NULL; CloseFrame; end; procedure TfrPagosClientes.RdxFramePagosClientesShow(Sender: TObject); begin Buscar.SetFocus end; procedure TfrPagosClientes.gridPagosClientesDBTableView1DblClick(Sender: TObject); begin if Modo = Seleccionar then actSeleccionar.Execute else actModificar.Execute; end; procedure TfrPagosClientes.cxLookupComboBox1PropertiesEditValueChanged(Sender: TObject); begin TablaPagos.Locate('CODIGO', (Sender as TcxLookupComboBox).EditValue, [loCaseInsensitive]); end; procedure TfrPagosClientes.gridPagosClientesDBTableView1CustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var IndiceCol : Integer; begin if not AViewInfo.Selected then begin IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('TIPOPAGO').Index; if AViewInfo.GridRecord.DisplayTexts[IndiceCol] = CTE_ABONO then ACanvas.Canvas.Font.Color := $000000CC; end; end; procedure TfrPagosClientes.actRefrescarDatosExecute(Sender: TObject); begin FCodigoPago := TablaPagos.FieldByName('CODIGO').AsString; BuscarPago; end; procedure TfrPagosClientes.actConsultarCobrosExecute(Sender: TObject); begin Contenido := TfrListadoPagosCliente.Create(Self); Contenido.Modo := Consultar; (Contenido as TfrListadoPagosCliente).activarFacturasCobrosCliente; end; procedure TfrPagosClientes.SetContenido(NuevoFrame: TRdxFrame); begin inherited; if (Contenido is TfrListadoPagosCliente) then (Contenido as TfrListadoPagosCliente).CodigoCliente := TablaPagos.FieldByName('CODIGOCLIENTE').AsVariant; end; procedure TfrPagosClientes.bLimpiarClick(Sender: TObject); begin Buscar.Text := ''; end; procedure TfrPagosClientes.BuscarPropertiesChange(Sender: TObject); begin FiltrarGrid(gridPagosClientes, Buscar.Text); end; end.