This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES/Modulos/Tienda web/Model/uBizOscOrderServer.pas

134 lines
3.9 KiB
ObjectPascal

unit uBizOscOrderServer;
interface
uses
schTiendaWebServer_Intf, uDAInterfaces, SysUtils,
uDADataTable, uDABusinessProcessor, uBusinessUtils;
const
BIZ_SERVER_OSC_ORDER= 'Server.OSC.Order';
type
TBizOscOrderServer = class(Tosc_OrdersBusinessProcessorRules)
protected
procedure Insert_Orders_Info(aChange: TDADeltaChange);
procedure Update_Orders_Info(aChange: TDADeltaChange);
procedure Delete_Orders_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;
{ TBizOscOrderServer }
procedure TBizOscOrderServer.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_Ordersorders_id] := ADataSet.FieldByName('last_id').AsInteger;
Insert_Orders_Info(aChange);
end;
ctUpdate: Update_Orders_Info(aChange);
ctDelete: Delete_Orders_Info(aChange);
end;
CanRemoveFromDelta := False;
end;
procedure TBizOscOrderServer.Delete_Orders_Info(aChange: TDADeltaChange);
var
ASchema : TDASchema;
ACurrentConn : IDAConnection;
ACommand : IDASQLCommand;
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_Orders_status_history');
try
with ACommand do
begin
ParamByName('OLD_orders_id').Value := aChange.OldValueByName[fld_osc_Ordersorders_id];
Execute;
end;
finally
ACommand := NIL;
end;
end;
procedure TBizOscOrderServer.Insert_Orders_Info(aChange: TDADeltaChange);
begin
//
end;
procedure TBizOscOrderServer.ProcessError(Sender: TDABusinessProcessor;
aChangeType: TDAChangeType; aChange: TDADeltaChange;
const aCommand: IDASQLCommand; var CanRemoveFromDelta: Boolean;
Error: Exception);
begin
inherited;
end;
procedure TBizOscOrderServer.Update_Orders_Info(aChange: TDADeltaChange);
var
ASchema : TDASchema;
ACurrentConn : IDAConnection;
ACommand : IDASQLCommand;
begin
ASchema := BusinessProcessor.Schema;
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
if aChange.OldValueByName[fld_osc_Ordersorders_status] <> aChange.NewValueByName[fld_osc_Ordersorders_status] then
begin
ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_osc_Orders_status_history');
try
with ACommand do
begin
ACommand.ParamByName('orders_id').Value := aChange.OldValueByName[fld_osc_Ordersorders_id];
ACommand.ParamByName('orders_status_id').Value := aChange.NewValueByName[fld_osc_Ordersorders_status];
ACommand.ParamByName('customer_notified').Value := 0;
ACommand.ParamByName('comments').Value := aChange.NewValueByName[fld_osc_Orderscomments];
ACommand.Execute;
end;
finally
ACommand := NIL;
end;
end;
end;
initialization
RegisterBusinessProcessorRules(BIZ_SERVER_OSC_ORDER, TBizOscOrderServer);
end.