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; type TfEditorPedidosProveedor = class(TfEditorGridBase, IEditorPedidosProveedor) frViewPedidosProveedor1: TfrViewPedidosProveedor; N4: TMenuItem; Cambiarsituacin1: TMenuItem; actRecibirPedido: TAction; TBXItem37: TTBXItem; TBXSeparatorItem17: TTBXSeparatorItem; 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; {$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); var AInventarioController : IInventarioController; AAlbaranesController : IAlbaranesProveedorController; AAlbaran : IBizAlbaranProveedor; bGenerarAlbaran : Boolean; AInventarioRecibido: IBizInventario; begin inherited; bGenerarAlbaran := False; AInventarioRecibido := NIL; // ¿Hay almacén asociado al pedido? if FPedidos.ID_ALMACEN = 0 then begin if (ShowConfirmMessage('Recepción de pedido a proveedor', 'Este pedido no tiene un almacén asociado por lo que se generará el albarán de proveedor correspondiente sin hacer ningún cambio en el stock de los almacenes.' + #10#13 + #10#13 + '¿Desea continuar?') = IDYES) then bGenerarAlbaran := True; end else begin AInventarioController := TInventarioController.Create; try // En AInventarioRecibido tenemos la lista de articulos que hemos recibido y // que utilizaremos para hacer el albarán try bGenerarAlbaran := AInventarioController.EntradaPedido(nil, FPedidos.ID_ALMACEN, FPedidos.Detalles, AInventarioRecibido); except on E : Exception do ShowMessage(E.Message); end; finally AInventarioController := NIL; end; end; if bGenerarAlbaran then begin AAlbaranesController := TAlbaranesProveedorController.Create; try AAlbaran := AAlbaranesController.Nuevo; // En AInventarioRecibido tenemos la lista de articulos que hemos recibido y // que utilizaremos para hacer el albarán if AAlbaranesController.Anadir(AAlbaran, FPedidos.ID, AInventarioRecibido) then AAlbaranesController.Ver(AAlbaran); actRefrescar.Execute; finally AAlbaranesController := NIL; AAlbaran := NIL; end; end; 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; begin inherited; FController.Anadir(Pedidos); FController.Ver(Pedidos); 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.