unit uEditorPedidosProveedor; 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, uBizPedidosProveedor, uIEditorPedidosProveedor, uPedidosProveedorController, uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase, uViewPedidosProveedor, JvExComCtrls, JvStatusBar, JSDialog; type TfEditorPedidosProveedor = class(TfEditorGridBase, IEditorPedidosProveedor) frViewPedidosProveedor1: TfrViewPedidosProveedor; N4: TMenuItem; Cambiarsituacin1: TMenuItem; actRecibirPedido: TAction; TBXItem37: TTBXItem; TBXSeparatorItem17: TTBXSeparatorItem; JsNuevoPedidoProveedorDialog: TJSDialog; procedure FormShow(Sender: TObject); procedure actCambiarSituacionExecute(Sender: TObject); procedure actRecibirPedidoUpdate(Sender: TObject); procedure actRecibirPedidoExecute(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); protected FPedidos: IBizPedidoProveedor; FController : IPedidosProveedorController; function GetPedidos: IBizPedidoProveedor; procedure SetPedidos(const Value: IBizPedidoProveedor); function GetController : IPedidosProveedorController; virtual; procedure SetController (const Value : IPedidosProveedorController); virtual; procedure NuevoInterno; override; procedure ModificarInterno; override; procedure EliminarInterno; override; procedure DuplicarInterno; override; procedure ImprimirInterno; override; procedure PrevisualizarInterno; override; public procedure PonerTitulos(const ATitulo: string = ''); override; property Pedidos: IBizPedidoProveedor read GetPedidos write SetPedidos; property Controller : IPedidosProveedorController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uDataModulePedidosProveedor, uDataModuleUsuarios, uEditorDBBase, uInventarioController, uBizInventario, uDialogUtils, uAlbaranesProveedorController, uBizAlbaranesProveedor, uGenerarPedidosProvUtils, uGenerarAlbaranesProvUtils; {$R *.dfm} { *************************** TfEditorPedidosProveedor *************************** } procedure TfEditorPedidosProveedor.actCambiarSituacionExecute(Sender: TObject); begin inherited; FController.CambiarSituacion(FPedidos) end; procedure TfEditorPedidosProveedor.actEliminarUpdate(Sender: TObject); begin inherited; (Sender as TAction).Enabled := HayDatos and (FPedidos.SITUACION = SITUACION_PEDIDO_PENDIENTE); end; procedure TfEditorPedidosProveedor.actRecibirPedidoExecute(Sender: TObject); begin inherited; RecibirPedidoProv(FPedidos); actRefrescar.Execute; end; procedure TfEditorPedidosProveedor.actRecibirPedidoUpdate(Sender: TObject); begin inherited; // (Sender as TAction).Enabled := HayDatos and (FPedidos.SITUACION <> SITUACION_PEDIDO_RECIBIDO); end; constructor TfEditorPedidosProveedor.Create(AOwner: TComponent); begin inherited; ViewGrid := frViewPedidosProveedor1; //CreateView(TfrViewPedidosProveedor) as IViewPedidosProveedor; end; destructor TfEditorPedidosProveedor.Destroy; begin FPedidos := NIL; FController := NIL; inherited; end; procedure TfEditorPedidosProveedor.DuplicarInterno; var APedido : IBizPedidoProveedor; begin inherited; APedido := FController.Duplicar(Pedidos); try FController.Ver(APedido); finally actRefrescar.Execute; end; end; procedure TfEditorPedidosProveedor.EliminarInterno; begin if (Application.MessageBox('¿Desea borrar este pedido a proveedor?', 'Atención', MB_YESNO) = IDYES) then begin FController.Eliminar(Pedidos); inherited; end; end; procedure TfEditorPedidosProveedor.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Pedidos) then raise Exception.Create('No hay ningún pedido asignado'); Pedidos.DataTable.Active := True; ViewGrid.GotoFirst; end; function TfEditorPedidosProveedor.GetController: IPedidosProveedorController; begin Result := FController; end; function TfEditorPedidosProveedor.GetPedidos: IBizPedidoProveedor; begin Result := FPedidos; end; procedure TfEditorPedidosProveedor.ImprimirInterno; begin inherited; FController.Print(FPedidos); end; procedure TfEditorPedidosProveedor.ModificarInterno; begin inherited; FController.Ver(Pedidos); end; procedure TfEditorPedidosProveedor.NuevoInterno; var Respuesta : Integer; begin inherited; Respuesta := JsNuevoPedidoProveedorDialog.Execute; if Respuesta <> IDCANCEL then begin case JsNuevoPedidoProveedorDialog.CustomButtonResult of 200 : begin // Utilizar un pedido GenerarPedidosProv; actRefrescar.Execute; end; 100 : begin // Pedido nuevo vacio FController.Anadir(Pedidos); FController.Ver(Pedidos); end; end; end; end; procedure TfEditorPedidosProveedor.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Lista de pedidos a proveedor - ' + dmUsuarios.EmpresaActual.NOMBRE; inherited PonerTitulos(FTitulo); end; procedure TfEditorPedidosProveedor.PrevisualizarInterno; begin inherited; FController.Preview(FPedidos); end; procedure TfEditorPedidosProveedor.SetController(const Value: IPedidosProveedorController); begin FController := Value; end; procedure TfEditorPedidosProveedor.SetPedidos(const Value: IBizPedidoProveedor); begin FPedidos := Value; dsDataTable.DataTable := FPedidos.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewPedidosProveedor).Pedidos := Pedidos; end; end.