version 2.0.4 git-svn-id: https://192.168.0.254/svn/Proyectos.EstudioCarnicero_ProGestion/trunk@13 1b8572a8-2d6b-b84e-8c90-20ed86fa4eca
415 lines
13 KiB
ObjectPascal
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.
|
|
|