Varela_PuntosVenta/Source/Modulos/ReferenciaGenerica/Reglas/uBizReferenciaGenericaServer.pas

146 lines
4.2 KiB
ObjectPascal

{*******************************************************}
{ }
{ Administración de puntos de venta }
{ }
{ Copyright (C) 2006 Rodax Software S.L. }
{ }
{*******************************************************}
unit uBizReferenciaGenericaServer;
interface
uses
Classes, SysUtils,
uDADataTable,
uDAInterfaces, schReferenciaGenericaServer_Intf,
uDABusinessProcessor, uDADelta;
const
BIZ_SERVER_REFERENCIA_GENERICA = 'Server.ReferenciaGenerica';
type
{ TBizReferenciaGenericaServerRules }
TBizReferenciaGenericaServerRules = class(TReferenciaGenericaBusinessProcessorRules)
private
function GetConnection: IDAConnection;
function GetSchema: IDASchema;
function GetDataSet(const AName : String) : IDADataset;
function GetCommand(const AName : String) : IDASQLCommand;
protected
function ExisteFila: Boolean;
function InsertarFila: Boolean;
procedure BeforeProcessChange(Sender: TDABusinessProcessor;
aChangeType: TDAChangeType; aChange: TDADeltaChange;
var ProcessChange: Boolean); override;
end;
implementation
uses
Dialogs, Variants, uDAClasses;
{ TBizReferenciaGenericaServerRules }
procedure TBizReferenciaGenericaServerRules.BeforeProcessChange(
Sender: TDABusinessProcessor; aChangeType: TDAChangeType;
aChange: TDADeltaChange; var ProcessChange: Boolean);
begin
inherited;
if aChangeType = ctUpdate then
begin
if not ExisteFila then
InsertarFila;
end;
end;
function TBizReferenciaGenericaServerRules.ExisteFila: Boolean;
var
Connection : IDAConnection;
ADataSet: IDADataSet;
begin
Result := True;
Connection := GetConnection;
ADataSet := GetDataSet('_ExisteFilaReferenciaGenerica');
with ADataSet do
begin
ParamByName('NUMINF').AsString := NUMINF;
ParamByName('CLAVE1').AsFloat := CLAVE1;
ParamByName('CLAVE2').AsInteger := CLAVE2;
ParamByName('CLAVE3').AsInteger := CLAVE3;
ParamByName('NUMCON').AsInteger := NUMCON;
end;
Connection.BeginTransaction;
try
ADataSet.Open;
Result := not ADataSet.IsEmpty;
ADataSet.Close;
finally
Connection.RollbackTransaction;
ADataSet := nil;
Connection := nil;
end;
end;
function TBizReferenciaGenericaServerRules.GetCommand(
const AName: String): IDASQLCommand;
begin
Result := GetSchema.NewCommand(GetConnection, AName);
end;
function TBizReferenciaGenericaServerRules.GetConnection: IDAConnection;
begin
Result := BusinessProcessor.Schema.ConnectionManager.NewConnection(BusinessProcessor.Schema.ConnectionManager.GetDefaultConnectionName);
end;
function TBizReferenciaGenericaServerRules.GetDataSet(
const AName: String): IDADataset;
begin
Result := GetSchema.NewDataset(GetConnection, AName);
end;
function TBizReferenciaGenericaServerRules.GetSchema: IDASchema;
begin
Result := BusinessProcessor.Schema;
end;
function TBizReferenciaGenericaServerRules.InsertarFila: Boolean;
var
Connection : IDAConnection;
ACommand: IDASQLCommand;
begin
Result := False;
Connection := GetConnection;
ACommand := GetCommand(BusinessProcessor.InsertCommandName);
with ACommand do
begin
ParamByName('NUMINF').AsString := NUMINF;
ParamByName('CLAVE1').AsFloat := CLAVE1;
ParamByName('CLAVE2').AsInteger := CLAVE2;
ParamByName('CLAVE3').AsInteger := CLAVE3;
ParamByName('FECHACAMBIO').AsDateTime := Now;
ParamByName('ESTADO').AsString := 'P'; // Pendiente por defecto
ParamByName('VTATERM').AsVariant := Null;
ParamByName('VTAPROCESO').AsVariant := Null;
ParamByName('VTAFINAL').AsVariant := Null;
ParamByName('VALTOT').AsVariant := Null;
ParamByName('CODIGO_BARRA').AsVariant := Null;
end;
Connection.BeginTransaction;
try
ACommand.Execute;
Connection.CommitTransaction;
Result := True;
except
Connection.RollbackTransaction;
end;
end;
initialization
RegisterBusinessProcessorRules(BIZ_SERVER_REFERENCIA_GENERICA, TBizReferenciaGenericaServerRules);
end.