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.