unit uEditorFacturasCliente; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorGrid, Menus, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uViewGrid, pngimage, uBizFacturasCliente, JvComponentBase, dxLayoutLookAndFeels, uCustomView, uViewBase, uViewBarraSeleccion, StdCtrls; type IEditorFacturasCliente = interface(IEditorGrid) ['{597BF875-BD19-4B68-898F-B09982B3360A}'] function GetFacturasCliente: IBizFacturasCliente; procedure SetFacturasCliente(const Value: IBizFacturasCliente); property FacturasCliente: IBizFacturasCliente read GetFacturasCliente write SetFacturasCliente; end; TfEditorFacturasCliente = class(TfEditorGrid, IEditorFacturasCliente) actAbonar: TAction; TBXItem35: TTBXItem; procedure actEliminarExecute(Sender: TObject); procedure actModificarExecute(Sender: TObject); procedure actNuevoExecute(Sender: TObject); procedure actDuplicarExecute(Sender: TObject); procedure actAbonarExecute(Sender: TObject); procedure actAbonarUpdate(Sender: TObject); private FFacturasCliente: IBizFacturasCliente; protected function GetFacturasCliente: IBizFacturasCliente; procedure SetFacturasCliente(const Value: IBizFacturasCliente); procedure SetViewGrid(const Value: IViewGrid); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property FacturasCliente: IBizFacturasCliente read GetFacturasCliente write SetFacturasCliente; end; var fEditorFacturasCliente: TfEditorFacturasCliente; implementation uses uDataModuleFacturasCliente, uViewFacturasCliente, uEditorUtils; {$R *.dfm} function ShowEditorFacturasCliente (ABizObject : TDADataTableRules) : TModalResult; var AEditor: TfEditorFacturasCliente; begin AEditor := TfEditorFacturasCliente.Create(Application); try AEditor.FacturasCliente := (ABizObject as IBizFacturasCliente); Result := AEditor.ShowModal; finally AEditor.Release; end; end; function ShowSelectEditorFacturasCliente (ABizObject : TDADataTableRules) : TModalResult; var AEditor: TfEditorFacturasCliente; begin AEditor := TfEditorFacturasCliente.Create(Application); try AEditor.FacturasCliente := (ABizObject as IBizFacturasCliente); // AEditor.SelectionBarVisible := True; Result := AEditor.ShowModal; finally AEditor.Release; end; end; { *************************** TfEditorFacturasCliente *************************** } constructor TfEditorFacturasCliente.Create(AOwner: TComponent); begin inherited; ViewGrid := CreateView(TfrViewFacturasCliente) as IViewFacturasCliente; end; destructor TfEditorFacturasCliente.Destroy; begin FFacturasCliente := NIL; inherited; end; procedure TfEditorFacturasCliente.actEliminarExecute(Sender: TObject); begin if (Application.MessageBox('¿Desea borrar esta factura de cliente?', 'Atención', MB_YESNO) = IDYES) then begin inherited; ViewGrid.RefreshGrid; end; end; procedure TfEditorFacturasCliente.actModificarExecute(Sender: TObject); begin inherited; FacturasCliente.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; procedure TfEditorFacturasCliente.actNuevoExecute(Sender: TObject); begin inherited; FacturasCliente.Insert; case ViewGrid.Grid.ActiveLevel.Index of 0: begin FacturasCliente.CLASEFACTURA := CTE_NORMAL; FacturasCliente.PAGADA := SITUACION_PENDIENTE; FacturasCliente.setReferencia(CTE_NORMAL); end; 1: begin FacturasCliente.CLASEFACTURA := CTE_NORMAL; FacturasCliente.PAGADA := SITUACION_PAGADO; FacturasCliente.setReferencia(CTE_NORMAL); end; 2: begin FacturasCliente.CLASEFACTURA := CTE_PROFORMA; FacturasCliente.setReferencia(CTE_PROFORMA); end; end; FacturasCliente.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; function TfEditorFacturasCliente.GetFacturasCliente: IBizFacturasCliente; begin Result := FFacturasCliente; end; procedure TfEditorFacturasCliente.SetFacturasCliente(const Value: IBizFacturasCliente); begin FFacturasCliente := Value; dsDataTable.DataTable := FFacturasCliente.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewFacturasCliente).FacturasCliente := FacturasCliente; end; procedure TfEditorFacturasCliente.SetViewGrid(const Value: IViewGrid); begin inherited; if Assigned(ViewGrid) and Assigned(FacturasCliente) then (ViewGrid as IViewFacturasCliente).FacturasCliente := FFacturasCliente; end; procedure TfEditorFacturasCliente.actDuplicarExecute(Sender: TObject); var AFactura : IBizFacturasCliente; begin inherited; AFactura := dmFacturasCliente.GetItem(FacturasCliente.CODIGO); FacturasCliente.Insert; FacturasCliente.CopyFrom(AFactura); FacturasCliente.DataTable.ApplyUpdates; ViewGrid.RefreshGrid; ViewGrid.GotoFirst; end; procedure TfEditorFacturasCliente.actAbonarExecute(Sender: TObject); var AFactura : IBizFacturasCliente; begin ViewGrid.SyncFocusedRecordsFromGrid; // Esto va ANTES. No cambiar. if (FacturasCliente.CLASEFACTURA = CTE_NORMAL) then begin AFactura := dmFacturasCliente.GetItem(FacturasCliente.CODIGO); FacturasCliente.Insert; FacturasCliente.CopyFrom(AFactura, False); FacturasCliente.Edit; FacturasCliente.CLASEFACTURA := CTE_ABONO; FacturasCliente.cambiarSigno; FacturasCliente.Post; FacturasCliente.DataTable.ApplyUpdates; MessageBox(0, 'Se ha abonado correctamente la factura elegida.', 'Factura abonada', MB_ICONWARNING or MB_OK); ViewGrid.RefreshGrid; ViewGrid.GotoFirst; end; end; procedure TfEditorFacturasCliente.actAbonarUpdate(Sender: TObject); begin inherited; if Assigned(dsDataTable.DataTable) then (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) and not (dsDataTable.DataTable.State = dsInsert) else (Sender as TAction).Enabled := False; if (Sender as TAction).Enabled then (Sender as TAction).Enabled := (Sender as TAction).Enabled and (ViewGrid.Grid.ActiveLevel.Index <> 2); end; initialization RegisterEditor(IBizFacturasCliente, ShowEditorFacturasCliente, etItems); RegisterEditor(IBizFacturasCliente, ShowSelectEditorFacturasCliente, etSelectItems); finalization end.