{ =============================================================================== Copyright (©) 2006. 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: 22-05-2006 Versión actual: 1.0.0 Fecha versión actual: 22-05-2006 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit uEditorFormaPago; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Grids, DBGrids, StdCtrls, Mask, DBCtrls, DB, uBizFormasPago, uBizFormasPagoPlazos, uFormasPagoController, uFormasPagoPlazosController, uDADataTable, uIEditorFormaPago, ActnList, ExtCtrls, JvExControls, JvComponent, JvEnterTab, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxSpinEdit, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, uDAInterfaces, dxLayoutControl, dblookup, cxRadioGroup, cxContainer, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uBizSubCuentas, uSubCuentasController, cxCheckBox, cxDBEdit; type TfEditorFormaPago = class(TForm, IEditorFormaPago) ActionList1: TActionList; dsFormaPago: TDADataSource; actAnadir: TAction; actEliminar: TAction; actAceptar: TAction; actCancelar: TAction; actCerrar: TAction; actModificar: TAction; dsPlazos: TDADataSource; JvEnterAsTab1: TJvEnterAsTab; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item1: TdxLayoutItem; eReferencia: TDBEdit; dxLayoutControl1Item3: TdxLayoutItem; ListaFormasPago: TcxGrid; ListaFormasPagoDBTableView1: TcxGridDBTableView; ListaFormasPagoDBTableView1NUM_DIAS: TcxGridDBColumn; ListaFormasPagoDBTableView1PORCENTAJE: TcxGridDBColumn; ListaFormasPagoLevel1: TcxGridLevel; dxLayoutControl1Group3: TdxLayoutGroup; dxLayoutControl1Item4: TdxLayoutItem; bAnadir: TButton; panelPlazosDePago: TdxLayoutGroup; dxLayoutControl1Item5: TdxLayoutItem; bEliminar: TButton; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Item6: TdxLayoutItem; bAceptar: TButton; dxLayoutControl1Item7: TdxLayoutItem; bCancelar: TButton; dxLayoutControl1Item8: TdxLayoutItem; Bevel4: TBevel; dxLayoutControl1Group2: TdxLayoutGroup; dxLayoutControl1Group5: TdxLayoutGroup; dxLayoutControl1Item9: TdxLayoutItem; Bevel2: TBevel; rdPagoPlazos: TcxRadioButton; dxLayoutControl1Item10: TdxLayoutItem; dxLayoutControl1Item11: TdxLayoutItem; rdPagoVencimiento: TcxRadioButton; dsSubcuentas: TDADataSource; dxLayoutControl1Item12: TdxLayoutItem; cbSubcuenta: TcxDBLookupComboBox; cxDBCheckBox1: TcxDBCheckBox; checkIgnorarContabilidad: TdxLayoutItem; panelVencimiento: TdxLayoutGroup; dxLayoutControl1Item2: TdxLayoutItem; eDescripcion: TDBMemo; procedure FormShow(Sender: TObject); procedure actAnadirExecute(Sender: TObject); procedure actEliminarExecute(Sender: TObject); procedure actAceptarExecute(Sender: TObject); procedure actCancelarExecute(Sender: TObject); procedure actCerrarExecute(Sender: TObject); procedure actAnadirUpdate(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); procedure rdPagoPlazosClick(Sender: TObject); protected FFormaPago: IBizFormaPago; FPlazos : IBizFormaPagoPlazos; FSubCuentas: IBizSubCuenta; FSubCuentasController: TSubCuentasController; FController : IFormasPagoController; FPlazosController: IFormasPagoPlazosController; function GetFormaPago: IBizFormaPago; procedure SetFormaPago(const Value: IBizFormaPago); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property FormaPago: IBizFormaPago read GetFormaPago write SetFormaPago; end; implementation {$R *.dfm} { TfEditorFormasPago } uses Dialogs, uDialogUtils, uDataModuleFormasPago; function TfEditorFormaPago.GetFormaPago: IBizFormaPago; begin Result := FFormaPago; end; procedure TfEditorFormaPago.rdPagoPlazosClick(Sender: TObject); begin if rdPagoPlazos.Checked then begin panelPlazosDePago.Enabled := True; panelVencimiento.Enabled := False; end else begin panelPlazosDePago.Enabled := False; panelVencimiento.Enabled := True; end end; procedure TfEditorFormaPago.SetFormaPago(const Value: IBizFormaPago); begin FFormaPago := Value; if Assigned(FFormaPago) then begin FPlazos := FFormaPago.Plazos; dsFormaPago.DataTable := FFormaPago.DataTable; dsPlazos.DataTable := FPlazos.DataTable; dsFormaPago.DataTable.Open; dsPlazos.DataTable.Open; end else begin dsFormaPago.DataTable := NIL; dsPlazos.DataTable := NIL; end; end; procedure TfEditorFormaPago.actAnadirExecute(Sender: TObject); begin if Assigned(FFormaPago) and (FFormaPago.State = dsInsert) then FController.Guardar(FFormaPago); FPlazos.Append; end; procedure TfEditorFormaPago.actEliminarExecute(Sender: TObject); begin FPlazos.Delete; end; procedure TfEditorFormaPago.actEliminarUpdate(Sender: TObject); begin (Sender as TAction).Enabled := Assigned(FPlazos) and FPlazos.DataTable.Active and (FPlazos.DataTable.RecordCount > 0); end; constructor TfEditorFormaPago.Create(AOwner: TComponent); begin inherited; FController := TFormasPagoController.Create; FPlazosController := TFormasPagoPlazosController.Create; FSubCuentasController := TSubCuentasController.Create; FSubCuentas := FSubCuentasController.BuscarCajasBancos; dsSubcuentas.DataTable := FSubCuentas.DataTable; end; destructor TfEditorFormaPago.Destroy; begin dsSubcuentas.DataTable := Nil; FFormaPago := NIL; FSubCuentas := NIL; FSubCuentasController := NIL; FPlazosController := NIL; FController := NIL; inherited; end; procedure TfEditorFormaPago.actAceptarExecute(Sender: TObject); begin if (ListaFormasPago.ActiveView.DataController.RecordCount = 0) then if (ShowConfirmMessage('Forma de pago sin plazos', 'No ha indicado plazos de pago para esta forma de pago por lo tanto no se podrán generarar los recibos correspondientes.' + #10#13 + '¿Desea continuar guardando la forma de pago?') = IDNO) then Exit; if FController.Guardar(FFormaPago) then actCerrar.Execute; end; procedure TfEditorFormaPago.actCancelarExecute(Sender: TObject); begin FController.DescartarCambios(FFormaPago); actCerrar.Execute; end; procedure TfEditorFormaPago.actCerrarExecute(Sender: TObject); begin Close; end; procedure TfEditorFormaPago.actAnadirUpdate(Sender: TObject); begin (Sender as TAction).Enabled := Assigned(FPlazos) and FPlazos.DataTable.Active; end; procedure TfEditorFormaPago.FormShow(Sender: TObject); begin rdPagoVencimiento.Checked := True; if not FSubCuentas.DataTable.Active then FSubCuentas.DataTable.Active := True; if not FFormaPago.DataTable.Active then FFormaPago.DataTable.Active := True; if FFormaPago.EsNuevo then Self.Caption := 'Nueva forma de pago' else begin Self.Caption := 'Modificar forma de pago'; if (FFormaPago.Plazos.RecordCount > 0) then rdPagoPlazos.Checked := True; end; end; end.