AlonsoYSal_FactuGES2/Source/ApplicationBase/Ejercicios/Model/uBizEjerciciosServer.pas
2019-11-18 10:36:42 +00:00

79 lines
2.5 KiB
ObjectPascal

unit uBizEjerciciosServer;
interface
uses
uDAInterfaces, uDADelta, uDABusinessProcessor,
schEjerciciosServer_Intf;
const
BIZ_SERVER_EJERCICIOS = 'Server.Ejercicios';
type
TBizEjerciciosServer = class(TEjerciciosBusinessProcessorRules)
protected
procedure BeforeProcessDelta(Sender: TDABusinessProcessor; const aDelta: IDADelta); override;
end;
implementation
uses
Variants, uDAClasses, uReferenciasUtils, uBusinessUtils, uROClasses, uDataModuleServer,
schEjerciciosClient_Intf;
{ TBizEjerciciosServer }
procedure TBizEjerciciosServer.BeforeProcessDelta(Sender: TDABusinessProcessor; const aDelta: IDADelta);
var
ASchema : TDASchema;
ACurrentConn : IDAConnection;
Empresa : Variant;
Id : Variant;
begin
inherited;
case Sender.CurrentChange.ChangeType of
ctInsert, ctUpdate: begin
//Si el ejercicio es activo debemos poner los demas ejercicios de la empresa a no activos
if (Sender.CurrentChange.NewValueByName[fld_EjerciciosACTIVO] = 1) then
begin
ASchema := BusinessProcessor.Schema;
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
try
//Siempre va a estar rellena
Empresa := Sender.CurrentChange.NewValueByName[fld_EjerciciosID_EMPRESA];
ASchema.NewCommand(ACurrentConn, 'SetEjerciciosNoActivos', ['ID_EMPRESA'], [Empresa])
except
RaiseError('Error al desactivar los ejercicios de la empresa');
end;
end;
end;
ctDelete: begin
//Si el ejercicio es activo debemos poner los demas ejercicios de la empresa a no activos, y poner el más
//cercano como activo.
if (Sender.CurrentChange.OldValueByName[fld_EjerciciosACTIVO] = 1) then
begin
ASchema := BusinessProcessor.Schema;
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
try
//Siempre va a estar rellena
Empresa := Sender.CurrentChange.OldValueByName[fld_EjerciciosID_EMPRESA];
ASchema.NewCommand(ACurrentConn, 'SetEjerciciosNoActivos', ['ID_EMPRESA'], [Empresa]);
Id := Sender.CurrentChange.OldValueByName[fld_EjerciciosID];
ASchema.NewCommand(ACurrentConn, 'SetUltimoEjercicioActivo', ['ID'], [Id])
except
RaiseError('Error al desactivar los ejercicios de la empresa');
end;
end;
end;
end;
end;
initialization
RegisterBusinessProcessorRules(BIZ_SERVER_EJERCICIOS, TBizEjerciciosServer);
end.