ConstruccionesCNJ_FactuGES/Modulos/Montaje completo/Model/uBizMontajesCompleto.pas
2007-06-21 15:50:59 +00:00

248 lines
6.9 KiB
ObjectPascal

unit uBizMontajesCompleto;
interface
uses
uDADataTable, uBizMontajesDetalles, uBizPedidosMontaje, uBizCobrosMontaje,
schMontajesClient_Intf, uBizDocumentosAsociados;
const
BIZ_CLIENT_GASTOS_MONTAJE = 'Client.GastosMontaje';
BIZ_CLIENT_MONTAJE_COMPLETO = 'Client.Montaje.Completo';
type
IBizGastosMontaje = interface(IMontajes_Gastos)
['{B740859C-7326-437E-ACB4-2035DF9743BA}']
function EsNuevo: Boolean;
end;
IBizMontajeCompleto = interface(IBizMontajeDetalles)
['{6D72F72F-010D-4727-8002-239EDE0774F7}']
function GetGastos: IBizGastosMontaje;
procedure SetGastos(Value: IBizGastosMontaje);
property Gastos: IBizGastosMontaje read GetGastos write SetGastos;
procedure SetPedidos(AValue : IBizPedidoMontaje);
function GetPedidos : IBizPedidoMontaje;
property Pedidos : IBizPedidoMontaje read GetPedidos write SetPedidos;
procedure SetCobros(AValue : IBizCobroMontaje);
function GetCobros : IBizCobroMontaje;
property Cobros : IBizCobroMontaje read GetCobros write SetCobros;
//DOCUMENTOS ASOCIADOS
function GetGestorDocumentos: TGestorDocumentos;
procedure SetGestorDocumentos(Value: TGestorDocumentos);
property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos;
end;
//Clase de negocio de los gastos del montaje
TBizGastosMontaje = class(TMontajes_GastosDataTableRules, IBizGastosMontaje)
private
FContadorID: Integer;
protected
procedure OnNewRecord(Sender: TDADataTable); override;
public
function EsNuevo: Boolean;
constructor Create(aDataTable: TDADataTable); override;
end;
//Clase de negocio de montajes a los que le añadimos pedidos y cobros
TBizMontajeCompleto = class(TBizMontajeDetalles, IBizMontajeCompleto,
IBizDocumentosAsociados)
protected
FGastos : IBizGastosMontaje;
FGastosLink : TDADataSource;
FPedidos : IBizPedidoMontaje;
FCobros : IBizCobroMontaje;
//DOCUMENTOS ASOCIADOS
FGestorDocumentos: TGestorDocumentos;
function GetGestorDocumentos: TGestorDocumentos;
procedure SetGestorDocumentos(Value: TGestorDocumentos);
function GetGastos: IBizGastosMontaje;
procedure SetGastos(Value: IBizGastosMontaje);
procedure SetPedidos(AValue : IBizPedidoMontaje);
function GetPedidos : IBizPedidoMontaje;
procedure SetCobros(AValue : IBizCobroMontaje);
function GetCobros : IBizCobroMontaje;
procedure BeforeDelete(Sender: TDADataTable); override;
procedure BeforeCancel(Sender: TDADataTable); override;
procedure SetIDValue(const aValue: Integer); override;
public
property Gastos: IBizGastosMontaje read GetGastos write SetGastos;
property Pedidos : IBizPedidoMontaje read GetPedidos write SetPedidos;
property Cobros : IBizCobroMontaje read GetCobros write SetCobros;
//DOCUMENTOS ASOCIADOS
property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos;
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
implementation
uses SysUtils, Variants, uDataModuleConfiguracion, uDataTableUtils;
{ TBizMontajeCompleto }
procedure TBizMontajeCompleto.BeforeCancel(Sender: TDADataTable);
begin
if Assigned(GestorDocumentos) then
GestorDocumentos.procesarCancelTable;
end;
procedure TBizMontajeCompleto.BeforeDelete(Sender: TDADataTable);
begin
if Assigned(GestorDocumentos) then
GestorDocumentos.procesarDeleteTable;
end;
constructor TBizMontajeCompleto.Create(aDataTable: TDADataTable);
var
Ruta: Variant;
begin
inherited;
FGastosLink := TDADataSource.Create(NIL);
FGastosLink.DataTable := aDataTable;
FPedidos := Nil;
FCobros := Nil;
//DOCUMENTOS ASOCIADOS
//En caso de no poder acceder a la ruta de red (Caso de dos tiendas conectadas por internet)
//deshabilitamos el gestor de documentos
// showmessage(ExtractFilePath(Application.ExeName) + 'Documentos' + PathDelim);
Ruta := dmConfiguracion.darValor(CTE_DOCUMENTOS);
if (not VarIsNull(Ruta)) and (DirectoryExists(Ruta)) then
begin
FGestorDocumentos := TGestorDocumentos.Create(Nil);
FGestorDocumentos.RootDocumentos := dmConfiguracion.darValor(CTE_DOCUMENTOS);
aDataTable.BeforeCancel := BeforeCancel;
// aDataTable.AfterCancel := AfterCancel;
end
else
FGestorDocumentos := Nil
end;
destructor TBizMontajeCompleto.Destroy;
begin
FPedidos := Nil;
FCobros := Nil;
FGastos := NIL;
FGastosLink.Free;
FreeAndNil(FGestorDocumentos);
inherited;
end;
function TBizMontajeCompleto.GetCobros: IBizCobroMontaje;
begin
Result := FCobros;
end;
function TBizMontajeCompleto.GetGastos: IBizGastosMontaje;
begin
Result := FGastos;
end;
function TBizMontajeCompleto.GetGestorDocumentos: TGestorDocumentos;
begin
if Assigned(FGestorDocumentos) then
FGestorDocumentos.Directorio := ID;
Result := FGestorDocumentos;
end;
function TBizMontajeCompleto.GetPedidos: IBizPedidoMontaje;
begin
Result := FPedidos;
end;
procedure TBizMontajeCompleto.SetCobros(AValue: IBizCobroMontaje);
begin
FCobros := AValue;
if Assigned(FCobros) then
begin
if not FCobros.DataTable.Active then
FCobros.DataTable.Active := True;
end;
end;
procedure TBizMontajeCompleto.SetGastos(Value: IBizGastosMontaje);
begin
FGastos := Value;
EnlazarMaestroDetalle(FGastosLink, FGastos);
end;
procedure TBizMontajeCompleto.SetGestorDocumentos(Value: TGestorDocumentos);
begin
FGestorDocumentos := Value;
end;
procedure TBizMontajeCompleto.SetIDValue(const aValue: Integer);
begin
// frViewDocumentosAsociados.DeshabilitarDocumentos;
try
if Assigned(GestorDocumentos) then
GestorDocumentos.Directorio := aValue;
except
on E: Exception do
begin
// Error := True;
// ErrorText := E.Message;
// DisplayValue := frViewObra.frViewDatosObra.edtNombre.EditValue;
end;
end;
// frViewDocumentosAsociados.HabilitarDocumentos;
inherited;
end;
procedure TBizMontajeCompleto.SetPedidos(AValue: IBizPedidoMontaje);
begin
FPedidos := AValue;
if Assigned(FPedidos) then
begin
if not FPedidos.DataTable.Active then
FPedidos.DataTable.Active := True;
end;
end;
{ TBizGastosMontaje }
constructor TBizGastosMontaje.Create(aDataTable: TDADataTable);
begin
inherited Create(aDataTable);
FContadorID := -1;
end;
function TBizGastosMontaje.EsNuevo: Boolean;
begin
Result := (ID < 0);
end;
procedure TBizGastosMontaje.OnNewRecord(Sender: TDADataTable);
begin
inherited;
ID := FContadorID; // -1, -2, -3...
FECHA_GASTO := Date;
Dec(FContadorID);
end;
initialization
RegisterDataTableRules(BIZ_CLIENT_GASTOS_MONTAJE, TBizGastosMontaje);
RegisterDataTableRules(BIZ_CLIENT_MONTAJE_COMPLETO, TBizMontajeCompleto);
finalization
end.