git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@2 c93665c3-c93d-084d-9b98-7d5f4a9c3376
159 lines
5.1 KiB
ObjectPascal
159 lines
5.1 KiB
ObjectPascal
unit uBizOscManufacturerServer;
|
||
|
||
interface
|
||
|
||
uses
|
||
schTiendaWebServer_Intf, uDAInterfaces, SysUtils,
|
||
uDADataTable, uDABusinessProcessor, uBusinessUtils;
|
||
|
||
const
|
||
BIZ_SERVER_OSC_MANUFACTURER= 'Server.OSC.Manufacturer';
|
||
|
||
type
|
||
TBizOscManufacturerServer = class(Tosc_ManufacturersBusinessProcessorRules)
|
||
protected
|
||
procedure Insert_Manufacturers_Info(aChange: TDADeltaChange);
|
||
procedure Update_Manufacturers_Info(aChange: TDADeltaChange);
|
||
procedure Delete_Manufacturers_Info(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
|
||
|
||
uses
|
||
Dialogs, Variants, uDataModuleServer, uDAClasses, DARemoteService_Impl,
|
||
schTiendaWebClient_Intf, uROClasses;
|
||
|
||
{ TBizOscManufacturerServer }
|
||
|
||
procedure TBizOscManufacturerServer.AfterProcessChange(Sender: TDABusinessProcessor;
|
||
aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean);
|
||
var
|
||
ASchema : TDASchema;
|
||
ACurrentConn : IDAConnection;
|
||
ADataset : IDADataset;
|
||
begin
|
||
ASchema := Sender.Schema;
|
||
ACurrentConn := GetBusinessProcessorConnection(Sender);
|
||
|
||
inherited;
|
||
|
||
case aChange.ChangeType of
|
||
ctInsert: begin
|
||
ADataSet := ASchema.NewDataset(ACurrentConn, 'GetLastID', [], [], True);
|
||
aChange.NewValueByName[fld_osc_Manufacturersmanufacturers_id] := ADataSet.FieldByName('last_id').AsInteger;
|
||
Insert_Manufacturers_Info(aChange);
|
||
end;
|
||
|
||
ctUpdate: Update_Manufacturers_Info(aChange);
|
||
ctDelete: Delete_Manufacturers_Info(aChange);
|
||
end;
|
||
|
||
CanRemoveFromDelta := False;
|
||
end;
|
||
|
||
procedure TBizOscManufacturerServer.Delete_Manufacturers_Info(
|
||
aChange: TDADeltaChange);
|
||
var
|
||
ASchema : TDASchema;
|
||
ACurrentConn : IDAConnection;
|
||
ACommand : IDASQLCommand;
|
||
AIdiomasDataSet : IDADataset;
|
||
I: Integer;
|
||
begin
|
||
// Borramos una fila por cada idioma que hay en OsCommerce y
|
||
// por cada fabricante que hay.
|
||
ASchema := BusinessProcessor.Schema;
|
||
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
|
||
|
||
ACommand := ASchema.NewCommand(ACurrentConn, 'Delete_osc_Manufacturers_info');
|
||
AIdiomasDataSet := ASchema.NewDataset(ACurrentConn, nme_osc_Languages);
|
||
try
|
||
AIdiomasDataSet.Open;
|
||
for I := 0 to AIdiomasDataSet.RecordCount - 1 do
|
||
begin
|
||
with ACommand do
|
||
begin
|
||
ParamByName('OLD_manufacturers_id').Value := aChange.OldValueByName[fld_osc_Manufacturersmanufacturers_id];
|
||
ParamByName('OLD_languages_id').Value := AIdiomasDataSet.FieldByName(fld_osc_Languageslanguages_id).Value;
|
||
Execute;
|
||
end;
|
||
AIdiomasDataSet.Next;
|
||
end;
|
||
AIdiomasDataSet.Close;
|
||
finally
|
||
ACommand := NIL;
|
||
AIdiomasDataSet := NIL;
|
||
end;
|
||
end;
|
||
|
||
procedure TBizOscManufacturerServer.Insert_Manufacturers_Info(
|
||
aChange: TDADeltaChange);
|
||
var
|
||
ASchema : TDASchema;
|
||
ACurrentConn : IDAConnection;
|
||
ACommand : IDASQLCommand;
|
||
AIdiomasDataSet : IDADataset;
|
||
I: Integer;
|
||
begin
|
||
// Aqu<71> insertamos una fila por cada idioma que hay en OsCommerce y
|
||
// por cada fabricante que hay. Se hace para que no falle la tienda
|
||
ASchema := BusinessProcessor.Schema;
|
||
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
|
||
|
||
ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_osc_Manufacturers_info');
|
||
AIdiomasDataSet := ASchema.NewDataset(ACurrentConn, nme_osc_Languages);
|
||
try
|
||
AIdiomasDataSet.Open;
|
||
for I := 0 to AIdiomasDataSet.RecordCount - 1 do
|
||
begin
|
||
with ACommand do
|
||
begin
|
||
ParamByName('manufacturers_id').Value := aChange.NewValueByName[fld_osc_Manufacturersmanufacturers_id];
|
||
ParamByName('languages_id').Value := AIdiomasDataSet.FieldByName(fld_osc_Languageslanguages_id).Value;
|
||
ParamByName('manufacturers_url').Value := '';
|
||
ParamByName('url_clicked').Value := 0;
|
||
ParamByName('date_last_click').Value := null;
|
||
Execute;
|
||
end;
|
||
AIdiomasDataSet.Next;
|
||
end;
|
||
AIdiomasDataSet.Close;
|
||
finally
|
||
ACommand := NIL;
|
||
AIdiomasDataSet := NIL;
|
||
end;
|
||
end;
|
||
|
||
procedure TBizOscManufacturerServer.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 TBizOscManufacturerServer.Update_Manufacturers_Info(
|
||
aChange: TDADeltaChange);
|
||
begin
|
||
// Aqu<71> no hace falta hacer nada por que la informaci<63>n
|
||
// que hay en manufacturers_info no la necesitamos.
|
||
end;
|
||
|
||
initialization
|
||
RegisterBusinessProcessorRules(BIZ_SERVER_OSC_MANUFACTURER, TBizOscManufacturerServer);
|
||
|
||
end.
|