unit uEditorAlbaranesProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uViewGrid, pngimage, JvComponentBase, uEditorGridBase, uBizAlbaranesProveedor, uIEditorAlbaranesProveedor, uAlbaranesProveedorController, uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase, uViewAlbaranesProveedor, JvExComCtrls, JvStatusBar, JSDialog; type TfEditorAlbaranesProveedor = class(TfEditorGridBase, IEditorAlbaranesProveedor) actGenerarFactura: TAction; TBXSeparatorItem17: TTBXSeparatorItem; JsNuevoAlbaranDialog: TJSDialog; TBXItem38: TTBXItem; procedure FormShow(Sender: TObject); procedure actGenerarFacturaExecute(Sender: TObject); procedure actGenerarFacturaUpdate(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); protected FAlbaranes: IBizAlbaranProveedor; FController : IAlbaranesProveedorController; function GetAlbaranes: IBizAlbaranProveedor; procedure SetAlbaranes(const Value: IBizAlbaranProveedor); function GetController : IAlbaranesProveedorController; virtual; procedure SetController (const Value : IAlbaranesProveedorController); virtual; procedure NuevoInterno; override; procedure ModificarInterno; override; procedure EliminarInterno; override; procedure DuplicarInterno; override; procedure PrevisualizarInterno; override; procedure ImprimirInterno; override; //Si queremos crear otra vista para el editor heredado solo tendriamos que //sobreescribir este metodo procedure AsignarVista; virtual; public procedure PonerTitulos(const ATitulo: string = ''); override; property Albaranes: IBizAlbaranProveedor read GetAlbaranes write SetAlbaranes; property Controller : IAlbaranesProveedorController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uDataModuleAlbaranesProveedor, uDataModuleUsuarios, uGenerarFacturasProvAlbProvUtils, uGenerarAlbaranesProvUtils, uEditorBase, schAlbaranesProveedorClient_Intf; {$R *.dfm} { *************************** TfEditorAlbaranesProveedor *************************** } procedure TfEditorAlbaranesProveedor.actEliminarUpdate(Sender: TObject); begin inherited; if (Sender as TAction).Enabled then (Sender as TAction).Enabled := HayDatos and (Albaranes.REF_FAC_PROVEEDOR = ''); end; procedure TfEditorAlbaranesProveedor.actGenerarFacturaExecute(Sender: TObject); begin inherited; GenerarFacturaProv(Albaranes.ID); actRefrescar.Execute; end; procedure TfEditorAlbaranesProveedor.actGenerarFacturaUpdate(Sender: TObject); begin inherited; (Sender as TAction).Enabled := HayDatos and (Albaranes.REF_FAC_PROVEEDOR = '') and ViewGrid.esSeleccionCeldaDatos; end; procedure TfEditorAlbaranesProveedor.AsignarVista; begin ViewGrid := CreateView(TfrViewAlbaranesProveedor) as IViewAlbaranesProveedor; end; constructor TfEditorAlbaranesProveedor.Create(AOwner: TComponent); begin inherited; AsignarVista; end; destructor TfEditorAlbaranesProveedor.Destroy; begin FAlbaranes := NIL; FController := NIL; inherited; end; procedure TfEditorAlbaranesProveedor.DuplicarInterno; var AAlbaran : IBizAlbaranProveedor; begin inherited; AAlbaran := FController.Duplicar(Albaranes); try FController.Ver(AAlbaran); finally actRefrescar.Execute; end; end; procedure TfEditorAlbaranesProveedor.EliminarInterno; begin if (Application.MessageBox('¿Desea borrar este albarán de proveedor?', 'Atención', MB_YESNO) = IDYES) then begin FController.Eliminar(Albaranes); inherited; end; end; procedure TfEditorAlbaranesProveedor.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Albaranes) then raise Exception.Create('No hay ningún albarán asignado'); Albaranes.DataTable.Active := True; ViewGrid.GotoFirst; end; function TfEditorAlbaranesProveedor.GetController: IAlbaranesProveedorController; begin Result := FController; end; procedure TfEditorAlbaranesProveedor.ImprimirInterno; begin inherited; end; function TfEditorAlbaranesProveedor.GetAlbaranes: IBizAlbaranProveedor; begin Result := FAlbaranes; end; procedure TfEditorAlbaranesProveedor.ModificarInterno; begin inherited; FController.Ver(Albaranes); end; procedure TfEditorAlbaranesProveedor.NuevoInterno; var Respuesta : Integer; begin inherited; Respuesta := JsNuevoAlbaranDialog.Execute; if Respuesta <> IDCANCEL then begin case JsNuevoAlbaranDialog.CustomButtonResult of 200 : begin // Utilizar un pedido GenerarAlbaranProv; actRefrescar.Execute; end; 100 : begin // Albaran nuevo vacio if FController.Anadir(Albaranes) then FController.Ver(Albaranes); end; end; end; end; procedure TfEditorAlbaranesProveedor.PonerTitulos(const ATitulo: string); var FTitulo : String; begin if (ATitulo = '') then FTitulo := 'Lista de albaranes de proveedor - ' + dmUsuarios.EmpresaActual.NOMBRE else FTitulo := ATitulo; inherited PonerTitulos(FTitulo); end; procedure TfEditorAlbaranesProveedor.PrevisualizarInterno; begin inherited; end; procedure TfEditorAlbaranesProveedor.SetController(const Value: IAlbaranesProveedorController); begin FController := Value; end; procedure TfEditorAlbaranesProveedor.SetAlbaranes(const Value: IBizAlbaranProveedor); begin FAlbaranes := Value; dsDataTable.DataTable := FAlbaranes.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewAlbaranesProveedor).Albaranes := Albaranes; end; end.