Tecsitel_FactuGES2/Source/Modulos/Obras/Model/uBizObrasServer.pas

143 lines
4.0 KiB
ObjectPascal

unit uBizObrasServer;
interface
uses
SysUtils, schObrasServer_Intf, uDAInterfaces,
uDADataTable, uDABusinessProcessor, uDADelta;
const
BIZ_SERVER_OBRA = 'Server.Obra';
type
TBizObrasServer = class(TObrasBusinessProcessorRules)
protected
procedure Insert_Datos_Obra(aChange: TDADeltaChange);
procedure Update_Datos_Obra(aChange: TDADeltaChange);
procedure Delete_Datos_Obra(aChange: TDADeltaChange);
procedure AfterProcessChange(Sender: TDABusinessProcessor;
aChange: TDADeltaChange; Processed: Boolean;
var CanRemoveFromDelta: Boolean); override;
procedure ProcessError(Sender: TDABusinessProcessor;
aChangeType: TDAChangeType; aChange: TDADeltaChange;
const aCommand: IDASQLCommand; var CanRemoveFromDelta: Boolean;
Error: Exception); override;
end;
implementation
{ TBizObrasServer }
uses
uDataModuleServer, uDAClasses, Variants,
schObrasClient_Intf, uBusinessUtils;
procedure TBizObrasServer.AfterProcessChange(Sender: TDABusinessProcessor;
aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean);
begin
inherited;
{ Por defecto, mantenemos los deltas por si alguna tabla hija los necesita }
CanRemoveFromDelta := False;
case aChange.ChangeType of
ctInsert: begin
Insert_Datos_Obra(aChange);
end;
ctUpdate: begin
Update_Datos_Obra(aChange);
end;
ctDelete: begin
Delete_Datos_Obra(aChange);
end;
end;
end;
procedure TBizObrasServer.Delete_Datos_Obra(aChange: TDADeltaChange);
var
ASchema : TDASchema;
ACurrentConn : IDAConnection;
ACommand : IDASQLCommand;
begin
ASchema := BusinessProcessor.Schema;
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
ACommand := ASchema.NewCommand(ACurrentConn, 'Delete_OBRAS_DATOS');
try
with ACommand do
begin
ParamByName('OLD_ID_ALMACEN').Value := aChange.OldValueByName[fld_ObrasID];
Execute;
end;
finally
ACommand := NIL;
end;
end;
procedure TBizObrasServer.Insert_Datos_Obra(aChange: TDADeltaChange);
var
ASchema : TDASchema;
ACurrentConn : IDAConnection;
ACommand : IDASQLCommand;
begin
ASchema := BusinessProcessor.Schema;
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_OBRAS_DATOS');
try
with ACommand do
begin
ParamByName('ID_ALMACEN').Value := aChange.NewValueByName[fld_ObrasID];
ParamByName('ID_CLIENTE').Value := aChange.NewValueByName[fld_ObrasID_CLIENTE];
ParamByName('ID_SUBCONTRATA').Value := aChange.NewValueByName[fld_ObrasID_SUBCONTRATA];
Execute;
end;
finally
ACommand := NIL;
end;
end;
procedure TBizObrasServer.ProcessError(Sender: TDABusinessProcessor;
aChangeType: TDAChangeType; aChange: TDADeltaChange;
const aCommand: IDASQLCommand; var CanRemoveFromDelta: Boolean;
Error: Exception);
begin
inherited;
//IMPORTANTE ESTO HACE QUE EL CLIENTE SE ENTERE DEL ERROR Y LOS BP ASOCIADOS EN EL
//SCHEMA HAGAN ROLLBACK TAMBIEN
CanRemoveFromDelta := True;
raise Exception.Create(Error.Message);
end;
procedure TBizObrasServer.Update_Datos_Obra(aChange: TDADeltaChange);
var
ASchema : TDASchema;
ACurrentConn : IDAConnection;
ACommand : IDASQLCommand;
begin
ASchema := BusinessProcessor.Schema;
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
ACommand := ASchema.NewCommand(ACurrentConn, 'Update_OBRAS_DATOS');
try
with ACommand do
begin
ParamByName('OLD_ID_ALMACEN').Value := aChange.NewValueByName[fld_ObrasID];
ParamByName('ID_CLIENTE').Value := aChange.NewValueByName[fld_ObrasID_CLIENTE];
ParamByName('ID_SUBCONTRATA').Value := aChange.NewValueByName[fld_ObrasID_SUBCONTRATA];
Execute;
end;
finally
ACommand := NIL;
end;
end;
initialization
RegisterBusinessProcessorRules(BIZ_SERVER_OBRA, TBizObrasServer);
end.