ConstruccionesCNJ_FactuGES/Modulos/Pedidos a proveedor/Views/uEditorPedidoProveedor.pas
2007-06-21 15:50:59 +00:00

288 lines
8.8 KiB
ObjectPascal
Raw Blame History

unit uEditorPedidoProveedor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane,
uViewPedidoProveedor, uCustomView, uViewBase, JvComponentBase,
StdCtrls, pngimage, AppEvnts, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, cxDBEdit,
uViewTotalPedido, uViewIncidencias,
uBizPedidosProveedor, uIEditorPedidoProveedor, uPedidosProveedorController,
uViewDetallesBase, uViewDetallesPedidoProveedor,
uViewDocumentosAsociados, uBizDocumentosAsociados, dxLayoutLookAndFeels,
JvExComCtrls, JvStatusBar;
type
TfEditorPedidoProveedor = class(TfEditorDBItem, IEditorPedidoProveedor)
pagContenido: TTabSheet;
frViewTotalPedido: TfrViewTotalPedido;
pagInicidencias: TTabSheet;
frViewIncidencias: TfrViewIncidencias;
frViewDetallesPedidoProveedor1: TfrViewDetallesPedidoProveedor;
pagDocumentos: TTabSheet;
frViewDocumentosAsociados1: TfrViewDocumentosAsociados;
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
procedure FormShow(Sender: TObject); override;
procedure actGuardarExecute(Sender: TObject);
procedure actEliminarExecute(Sender: TObject);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure actPrevisualizarExecute(Sender: TObject);
procedure actImprimirExecute(Sender: TObject);
// procedure frViewDatosYSeleccionContactoedtlNombrePropertiesChange(Sender: TObject);
private
FViewDocumentos : IViewDocumentosAsociados;
protected
FPedido: IBizPedidoProveedor;
FViewPedido: IViewPedidoProveedor;
FController : IPedidosProveedorController;
function GetController : IPedidosProveedorController;
procedure SetController (const Value : IPedidosProveedorController); virtual;
function GetPedido: IBizPedidoProveedor;
procedure SetPedido(const Value: IBizPedidoProveedor); virtual;
function GetViewPedido: IViewPedidoProveedor;
procedure SetViewPedido(const Value: IViewPedidoProveedor);
property ViewPedido: IViewPedidoProveedor read GetViewPedido write SetViewPedido;
//DOCUMENTOS ASOCIADOS
function GetViewDocumentos: IViewDocumentosAsociados;
procedure SetViewDocumentos(const Value: IViewDocumentosAsociados);
property ViewDocumentos: IViewDocumentosAsociados read GetViewDocumentos write
SetViewDocumentos;
procedure OnProveedorChanged(Sender : TObject);
//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 Controller : IPedidosProveedorController read GetController write SetController;
property Pedido: IBizPedidoProveedor read GetPedido write SetPedido;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uViewDatosYSeleccionProveedor, uDataModuleUsuarios;
{$R *.dfm}
{ TfEditorPedidoProveedor }
{
**************************** TfEditorPedidoProveedor ****************************
}
procedure TfEditorPedidoProveedor.actGuardarExecute(Sender: TObject);
begin
inherited;
FController.Guardar(FPedido);
Modified := False;
end;
procedure TfEditorPedidoProveedor.actImprimirExecute(Sender: TObject);
begin
inherited;
FController.Print(FPedido);
end;
procedure TfEditorPedidoProveedor.actPrevisualizarExecute(Sender: TObject);
begin
inherited;
FController.Preview(FPedido);
end;
procedure TfEditorPedidoProveedor.AsignarVista;
var
AViewPedidoProveedor: TfrViewPedidoProveedor;
begin
AViewPedidoProveedor := TfrViewPedidoProveedor.create(Self);
AViewPedidoProveedor.Parent := pagGeneral;
AViewPedidoProveedor.Align := alClient;
ViewPedido := AViewPedidoProveedor;
end;
constructor TfEditorPedidoProveedor.Create(AOwner: TComponent);
begin
inherited;
pgPaginas.ActivePageIndex := 0;
AsignarVista;
//DOCUMENTOS ASOCIADOS
// FViewDocumentos := Nil;
FViewDocumentos := frViewDocumentosAsociados1;
end;
procedure TfEditorPedidoProveedor.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
FViewPedido := NIL;
FPedido := NIL;
//DOCUMENTOS ASOCIADOS
FViewDocumentos.DeshabilitarDocumentos;
FViewDocumentos := NIL;
end;
destructor TfEditorPedidoProveedor.Destroy;
begin
// Utilizar mejor OnClose;
inherited;
end;
procedure TfEditorPedidoProveedor.actEliminarExecute(Sender: TObject);
begin
if (Application.MessageBox('<27>Desea borrar este pedido a proveedor?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
FController.Eliminar(FPedido);
inherited
end
end;
procedure TfEditorPedidoProveedor.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewPedido) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Pedido) then
raise Exception.Create('No hay ning<6E>n pedido asignado');
//DOCUMENTOS ASOCIADOS
if Assigned(Pedido.GestorDocumentos) then
begin
ViewDocumentos := CreateView(TfrViewDocumentosAsociados) as IViewDocumentosAsociados;
ViewDocumentos.ShowEmbedded(pagDocumentos);
end;
Pedido.DataTable.Active := True;
pgPaginas.ActivePage := pagGeneral;
end;
function TfEditorPedidoProveedor.GetController: IPedidosProveedorController;
begin
Result := FController;
end;
function TfEditorPedidoProveedor.GetPedido: IBizPedidoProveedor;
begin
Result := FPedido;
end;
function TfEditorPedidoProveedor.GetViewDocumentos: IViewDocumentosAsociados;
begin
Result := FViewDocumentos;
end;
function TfEditorPedidoProveedor.GetViewPedido: IViewPedidoProveedor;
begin
Result := FViewPedido;
end;
procedure TfEditorPedidoProveedor.OnProveedorChanged(Sender: TObject);
begin
FPedido.Proveedor := ViewPedido.ViewProveedorPedido.Proveedor;
end;
procedure TfEditorPedidoProveedor.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := ATitulo;
if (FTitulo = '') and Assigned(FPedido) then
begin
if FPedido.EsNuevo then
FTitulo := 'Nuevo pedido'
else
FTitulo := 'Pedido' + ' - ' + FPedido.Proveedor.Nombre
end;
inherited PonerTitulos(FTitulo);
Self.Caption := FTitulo + ' (' + dmUsuarios.EmpresaActual.NOMBRE + ')';
end;
procedure TfEditorPedidoProveedor.SetController(const Value: IPedidosProveedorController);
begin
FController := Value;
if Assigned(FController) then
begin
ViewPedido.ViewProveedorPedido.Controller := Controller.ProveedorController;
frViewDetallesPedidoProveedor1.Controller := Controller.DetallesController;
end;
end;
procedure TfEditorPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor);
begin
FPedido := Value;
if Assigned(FPedido) then
begin
dsDataTable.DataTable := FPedido.DataTable;
frViewTotalPedido.DADataSource.DataTable := dsDataTable.DataTable;
frViewIncidencias.DADataSource.DataTable := dsDataTable.DataTable;
if Assigned(FViewPedido) then
begin
FViewPedido.Pedido := FPedido;
ViewPedido.ViewProveedorPedido.Proveedor := FPedido.Proveedor;
ViewPedido.ViewProveedorPedido.OnProveedorChanged := OnProveedorChanged;
frViewDetallesPedidoProveedor1.Detalles := FPedido.Detalles;
end;
//DOCUMENTOS ASOCIADOS
if Assigned(FViewDocumentos) then
begin
if Assigned((Pedido as IBizDocumentosAsociados).GestorDocumentos) then
begin
FViewDocumentos.GestorDocumentos := (Pedido as IBizDocumentosAsociados).GestorDocumentos;
FViewDocumentos.GestorDocumentos.ModoInsert := (Pedido.DataTable.State = dsInsert);
pagDocumentos.TabVisible := True;
end
else
begin
Showmessage('La ruta de documentos asociados no es accesible, se proceder<65> a desactivar la funcionalidad');
pagDocumentos.TabVisible := False;
end;
end;
end;
end;
procedure TfEditorPedidoProveedor.SetViewDocumentos(const Value: IViewDocumentosAsociados);
begin
FViewDocumentos := Value;
if Assigned(FViewDocumentos) and Assigned(Pedido) then
if Assigned((Pedido as IBizDocumentosASociados).GestorDocumentos) then
FViewDocumentos.GestorDocumentos := (Pedido as IBizDocumentosASociados).GestorDocumentos;
end;
procedure TfEditorPedidoProveedor.SetViewPedido(const Value: IViewPedidoProveedor);
begin
FViewPedido := Value;
if Assigned(FViewPedido) and Assigned(Pedido) then
FViewPedido.Pedido := Pedido;
end;
end.