2011-11-14 17:40:41 +00:00
unit uBizRecibosClienteServer;
interface
uses
uDAInterfaces, uDADelta, uDABusinessProcessor,
schRecibosClienteServer_Intf;
const
BIZ_SERVER_RECIBOS_CLIENTE = 'Server.RecibosCliente' ;
type
TBizRecibosClienteServer = class( TRecibosClienteBusinessProcessorRules)
private
FReferenciaAutomatica : Boolean ;
function DarReferencia : String ;
function IncrementarReferencia : Boolean ;
protected
procedure BeforeProcessDelta( Sender: TDABusinessProcessor; const aDelta: IDADelta) ; override ;
procedure AfterProcessChange( Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean ; var CanRemoveFromDelta: Boolean ) ; override ;
end ;
implementation
uses
Variants, uDAClasses, uReferenciasUtils, uBusinessUtils, uROClasses, uDataModuleServer,
schRecibosClienteClient_Intf, FactuGES_Intf, uROServer, SysUtils;
const
REF_RECIBOS_CLIENTE = 'REF_RECIBOS_CLIENTE' ;
{ TBizRecibosClienteServer }
procedure TBizRecibosClienteServer. AfterProcessChange( Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean ;
var CanRemoveFromDelta: Boolean ) ;
begin
2012-02-01 13:03:45 +00:00
inherited ;
2011-11-14 17:40:41 +00:00
// No hay que quitar los deltas para que los datos del contacto se
// mantengan por si alguna tabla detalle lo necesita
// (por ejemplo, DireccionesContacto)
CanRemoveFromDelta : = False ;
// Actualizamos el contador de referencias.
case aChange. ChangeType of
ctInsert, ctUpdate: begin
if FReferenciaAutomatica then
begin
IncrementarReferencia;
FReferenciaAutomatica : = False ;
end ;
end ;
end ;
end ;
procedure TBizRecibosClienteServer. BeforeProcessDelta(
Sender: TDABusinessProcessor; const aDelta: IDADelta) ;
begin
FReferenciaAutomatica : = False ;
case Sender. CurrentChange. ChangeType of
ctInsert, ctUpdate: begin
//Si la referencia no ha sido asignada le asignamos una nosotros
if REFERENCIAIsNull or ( Length( REFERENCIA) = 0 ) then
begin
FReferenciaAutomatica : = True ;
REFERENCIA : = DarReferencia;
end ;
end ;
end ;
end ;
function TBizRecibosClienteServer. DarReferencia: String ;
var
AReferenciasService : IsrvReferencias;
Intf : IInterface;
AClientID : TGUID;
begin
CreateGUID( AClientID) ;
GetClassFactory( 'srvReferencias' ) . CreateInstance( AClientID, Intf) ;
AReferenciasService : = Intf as IsrvReferencias;
2022-10-21 09:41:20 +00:00
Result : = AReferenciasService. DarNuevaReferencia( REF_RECIBOS_CLIENTE, ID_EMPRESA, - 1 ) //Referencia comun a todas las tiendas de la empresa
2011-11-14 17:40:41 +00:00
end ;
function TBizRecibosClienteServer. IncrementarReferencia: Boolean ;
var
AReferenciasService : IsrvReferencias;
Intf : IInterface;
AClientID : TGUID;
begin
CreateGUID( AClientID) ;
GetClassFactory( 'srvReferencias' ) . CreateInstance( AClientID, Intf) ;
AReferenciasService : = Intf as IsrvReferencias;
2022-10-21 09:41:20 +00:00
Result : = AReferenciasService. IncrementarValorReferencia( REF_RECIBOS_CLIENTE, Self. REFERENCIA, ID_EMPRESA, - 1 ) //Referencia com<6F> n a todas las tiendas de la empresa
2011-11-14 17:40:41 +00:00
end ;
initialization
RegisterBusinessProcessorRules( BIZ_SERVER_RECIBOS_CLIENTE, TBizRecibosClienteServer) ;
end .