ProGestion/Modulos/Obras/Cliente/uEditorObra.pas

415 lines
13 KiB
ObjectPascal

{
===============================================================================
Copyright (©) 2006. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versión: 22-05-2006
Versión actual: 1.0.0
Fecha versión actual: 22-05-2006
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit uEditorObra;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorItem, ToolWin, ComCtrls, JvExControls, JvComponent,
JvNavigationPane, ActnList, uEditorBase, StdActns, TB2Dock, TB2Toolbar,
TBX, ImgList, PngImageList, TB2Item, uViewObra, uBizObra, uEditorDBItem,
DB, uDADataTable, uViewGrid, uCustomView, uViewBase, Grids, DBGrids, StdCtrls, dxLayoutLookAndFeels,
JvAppStorage, JvAppRegistryStorage, JvFormPlacement, ExtCtrls,
uViewContactosObra, JvComponentBase, uViewPresupuestosObra,
uViewTrabajosObra, uViewDocumentosAsociados, cxGridCustomTableView,
dxLayoutControl, cxControls, Menus;
type
IEditorObra = interface(IEditorDBItem)
['{5ED7D648-C211-48A3-AE53-4B3D925ADBC9}']
end;
TfEditorObra = class(TfEditorDBItem, IEditorObra)
pagContactos: TTabSheet;
frViewObra: TfrViewObra;
pagPresupuestos: TTabSheet;
pagTrabajos: TTabSheet;
pagNormativas: TTabSheet;
frViewDocumentosAsociados: TfrViewDocumentosAsociados;
frViewPresupuestosObra: TfrViewPresupuestosObra;
dxLayoutControl1Group_Root: TdxLayoutGroup;
dxLayoutControl1: TdxLayoutControl;
dxLayoutControl1Item1: TdxLayoutItem;
frViewContactosObra: TfrViewContactosObra;
dxLayoutControl1Group1: TdxLayoutGroup;
dxLayoutControl2Group_Root: TdxLayoutGroup;
dxLayoutControl2: TdxLayoutControl;
dxLayoutControl2Item1: TdxLayoutItem;
frViewTrabajosObra: TfrViewTrabajosObra;
dxLayoutControl2Group1: TdxLayoutGroup;
MenuTrabajos: TPopupMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuContactos: TPopupMenu;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
MenuItem8: TMenuItem;
MenuItem9: TMenuItem;
MenuItem10: TMenuItem;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
procedure FormShow(Sender: TObject);
procedure dsDataTableDataChange(Sender: TObject; Field: TField);
procedure actEliminarExecute(Sender: TObject);
procedure frViewContactosObraactAnadirExecute(Sender: TObject);
procedure frViewContactosObraactEliminarExecute(Sender: TObject);
procedure frViewContactosObraactEliminarTodoExecute(Sender: TObject);
procedure frViewContactosObraactEditarExecute(Sender: TObject);
procedure frViewPresupuestosObraactAnadirPreObrExecute(Sender: TObject);
procedure frViewPresupuestosObraactAnadirPreDecExecute(Sender: TObject);
procedure frViewPresupuestosObraactEditarPreObrExecute(Sender: TObject);
procedure frViewPresupuestosObraactEditarPreDecExecute(Sender: TObject);
procedure frViewTrabajosObraactEditarExecute(Sender: TObject);
procedure frViewTrabajosObraactAnadirExecute(Sender: TObject);
procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
//DOCUMENTOS ASOCIADOS
procedure frViewDatosObraedtNombrePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure frViewContactosObracxGridViewCellDblClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
procedure frViewTrabajoscxGridViewCellDblClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
private
FViewObra: IViewObra;
FViewContactosObra: IViewContactosObra;
FViewPresupuestosObra: IViewPresupuestosObra;
FViewTrabajosObra: IViewTrabajosObra;
FObra: IBizObra;
function GetObra: IBizObra; virtual;
procedure SetObra(const Value: IBizObra); virtual;
protected
//DOCUMENTOS ASOCIADOS
FViewNormativas : IViewDocumentosAsociados;
function GetViewNormativas: IViewDocumentosAsociados;
procedure SetViewNormativas(const Value: IViewDocumentosAsociados);
property ViewNormativas: IViewDocumentosAsociados read GetViewNormativas write SetViewNormativas;
public
property Obra: IBizObra read GetObra write SetObra;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
{$R *.dfm}
uses
uCustomEditor, uDataModuleObras, uDataModuleBase,
uEditorUtils, LiteralesObras, uDBSelectionList,
uDataModuleContactos, uBizContacto, uBizDocumentosAsociados;
function ShowEditorObra (ABizObject : TDADataTableRules) : TModalResult;
var
AEditor: TfEditorObra;
begin
AEditor := TfEditorObra.Create(Application);
try
AEditor.Obra := (ABizObject as IBizObra);
Result := AEditor.ShowModal;
finally
AEditor.Release;
end;
end;
{
******************************* TfEditorObra *******************************
}
procedure TfEditorObra.actEliminarExecute(Sender: TObject);
begin
if (MessageDlg(msgLitBorrar, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
inherited;
end;
function TfEditorObra.GetObra: IBizObra;
begin
Result := FObra;
end;
procedure TfEditorObra.SetObra(const Value: IBizObra);
begin
FObra := Value;
if Assigned(FObra) then
begin
dsDataTable.DataTable := FObra.DataTable;
FViewObra.Obra := Obra;
FViewContactosObra.ContactosObra := Obra.Contactos;
FViewPresupuestosObra.Presupuestos := Obra.Presupuestos;
FViewTrabajosObra.Presupuestos := Obra.Presupuestos;
//DOCUMENTOS ASOCIADOS
if Assigned(FViewNormativas) then
begin
if (Obra.ALMACEN = CTE_ALMACEN_ANTIGUO) then
FViewNormativas.GestorDocumentos := (Obra as IBizDocumentosAsociados).GestorDocumentos
else
FViewNormativas.GestorDocumentos := (Obra as IBizDocumentosAsociados).GestorDocumentosNuevo;
FViewNormativas.GestorDocumentos.ModoInsert := (Obra.DataTable.State = dsInsert);
end;
end
else
dsDataTable.DataTable := Nil;
end;
procedure TfEditorObra.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(Obra) then
raise Exception.Create(msgErrorNoObra);
if not Obra.DataTable.Active then
Obra.DataTable.Active := True;
pgPaginas.ActivePageIndex := 0;
end;
constructor TfEditorObra.Create(AOwner: TComponent);
begin
inherited;
FViewObra := frViewObra;
FViewContactosObra := frViewContactosObra;
FViewPresupuestosObra := frViewPresupuestosObra;
FViewTrabajosObra := frViewTrabajosObra;
//DOCUMENTOS ASOCIADOS
ViewNormativas := frViewDocumentosAsociados;
end;
procedure TfEditorObra.dsDataTableDataChange(Sender: TObject; Field: TField);
begin
inherited;
if Assigned(FObra) and (not (FObra.DataTable.Fetching) or
not (FObra.DataTable.Opening) or not (FObra.DataTable.Closing)) then
begin
if Length(FObra.NOMBRE) = 0 then
JvNavPanelHeader.Caption := msgLitObraNuv
else
JvNavPanelHeader.Caption := msgObras + FObra.NOMBRE;
Self.Caption := JvNavPanelHeader.Caption;
end;
end;
procedure TfEditorObra.frViewPresupuestosObraactAnadirPreObrExecute(Sender: TObject);
begin
inherited;
Obra.Presupuestos.Insert;
Obra.Presupuestos.CLASE := CLASE_PRESUPUESTO;
Obra.Presupuestos.TIPO := TIPO_OBRA;
Obra.Presupuestos.Show;
end;
procedure TfEditorObra.frViewContactosObraactEliminarExecute(Sender: TObject);
begin
if (MessageDlg(msgLitBorrarContacto, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
Obra.Contactos.Delete;
end;
procedure TfEditorObra.frViewContactosObraactEliminarTodoExecute(Sender: TObject);
begin
inherited;
if (MessageDlg(msgLitBorrarTContacto, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
Obra.Contactos.DataTable.ClearRows;
end;
procedure TfEditorObra.frViewContactosObraactAnadirExecute(Sender: TObject);
var
AContacto : IBizContacto;
begin
inherited;
AContacto := dmContactos.GetContactos;
try
if AContacto.ShowForMultiSelect = mrOK then
begin
AContacto := dmContactos.GetItemsSeleccionados(AContacto);
Obra.Contactos.AppendContactos(AContacto);
end;
finally
AContacto := NIL;
end;
end;
procedure TfEditorObra.frViewContactosObraactEditarExecute(Sender: TObject);
begin
inherited;
Obra.Contactos.Show;
end;
destructor TfEditorObra.Destroy;
begin
FViewObra := Nil;
FViewContactosObra := Nil;
FViewPresupuestosObra := Nil;
FViewTrabajosObra := Nil;
//DOCUMENTOS ASOCIADOS
FViewNormativas := NIL;
inherited;
end;
procedure TfEditorObra.frViewPresupuestosObraactAnadirPreDecExecute(Sender: TObject);
begin
inherited;
Obra.Presupuestos.Insert;
Obra.Presupuestos.CLASE := CLASE_PRESUPUESTO;
Obra.Presupuestos.TIPO := TIPO_DECORACION;
Obra.Presupuestos.Show;
end;
procedure TfEditorObra.frViewPresupuestosObraactEditarPreObrExecute(Sender: TObject);
begin
inherited;
Obra.Presupuestos.Show;
end;
procedure TfEditorObra.frViewPresupuestosObraactEditarPreDecExecute(Sender: TObject);
begin
inherited;
Obra.Presupuestos.Show;
end;
procedure TfEditorObra.frViewTrabajosObraactEditarExecute(Sender: TObject);
begin
inherited;
Obra.Presupuestos.Show;
end;
procedure TfEditorObra.frViewTrabajosObraactAnadirExecute(Sender: TObject);
begin
inherited;
Obra.Presupuestos.Insert;
Obra.Presupuestos.CLASE := CLASE_TRABAJO;
Obra.Presupuestos.Show;
end;
procedure TfEditorObra.pgPaginasChanging(Sender: TObject;
var AllowChange: Boolean);
begin
inherited;
//No se ha asignado aún el cliente
if Obra.Cliente.CODIGO = 0 then
begin
MessageBox(0, PChar(msgLitClienteObligatorio), 'Atención', MB_ICONWARNING or MB_OK);
AllowChange := False;
end;
end;
function TfEditorObra.GetViewNormativas: IViewDocumentosAsociados;
begin
Result := FViewNormativas;
end;
procedure TfEditorObra.SetViewNormativas(const Value: IViewDocumentosAsociados);
begin
FViewNormativas := Value;
if Assigned(FViewNormativas) and Assigned(Obra) then
begin
if (Obra.ALMACEN = CTE_ALMACEN_ANTIGUO) then
FViewNormativas.GestorDocumentos := (Obra as IBizDocumentosASociados).GestorDocumentos
else
FViewNormativas.GestorDocumentos := (Obra as IBizDocumentosASociados).GestorDocumentosNuevo;
end;
end;
procedure TfEditorObra.frViewDatosObraedtNombrePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
//Si cambia el nombre de la obra debe cambiar el nombre del directorio raiz de la estructura
if (frViewObra.frViewDatosObra.edtNombre.EditValue <> DisplayValue) then
begin
frViewDocumentosAsociados.DeshabilitarDocumentos;
if Length(DisplayValue)=0 then
begin
Error := True;
ErrorText := msgLitNombreObligatorio;
DisplayValue := frViewObra.frViewDatosObra.edtNombre.EditValue;
end
else
begin
try
frViewDocumentosAsociados.GestorDocumentos.Directorio := DisplayValue;
except
on E: Exception do
begin
Error := True;
ErrorText := E.Message;
DisplayValue := frViewObra.frViewDatosObra.edtNombre.EditValue;
end;
end;
end;
frViewDocumentosAsociados.HabilitarDocumentos;
end;
end;
procedure TfEditorObra.frViewContactosObracxGridViewCellDblClick(
Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
begin
inherited;
frViewContactosObraactEditarExecute(Self);
end;
procedure TfEditorObra.frViewTrabajoscxGridViewCellDblClick(
Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
begin
inherited;
frViewTrabajosObraactEditarExecute(Self);
end;
initialization
RegisterEditor(IBizObra, ShowEditorObra, etItem);
end.