unit uBizRecibosProveedorServer; interface uses uDAInterfaces, uDADelta, uDABusinessProcessor, schRecibosProveedorServer_Intf; const BIZ_SERVER_RECIBOS_PROVEEDOR = 'Server.RecibosProveedor'; type TBizRecibosProveedorServer = class(TRecibosProveedorBusinessProcessorRules) 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, schRecibosProveedorClient_Intf, FactuGES_Intf, uROServer, SysUtils; const REF_RECIBOS_PROVEEDOR = 'REF_RECIBOS_PROVEEDOR'; { TBizRecibosProveedorServer } procedure TBizRecibosProveedorServer.AfterProcessChange(Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); begin // 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 TBizRecibosProveedorServer.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 TBizRecibosProveedorServer.DarReferencia: String; var AReferenciasService : IsrvReferencias; Intf : IInterface; AClientID : TGUID; begin CreateGUID(AClientID); GetClassFactory('srvReferencias').CreateInstance(AClientID, Intf); AReferenciasService := Intf as IsrvReferencias; Result := AReferenciasService.DarNuevaReferencia(REF_RECIBOS_PROVEEDOR, ID_EMPRESA, ID_TIENDA) end; function TBizRecibosProveedorServer.IncrementarReferencia: Boolean; var AReferenciasService : IsrvReferencias; Intf : IInterface; AClientID : TGUID; begin CreateGUID(AClientID); GetClassFactory('srvReferencias').CreateInstance(AClientID, Intf); AReferenciasService := Intf as IsrvReferencias; Result := AReferenciasService.IncrementarValorReferencia(REF_RECIBOS_PROVEEDOR, Self.REFERENCIA, ID_EMPRESA, ID_TIENDA) end; initialization RegisterBusinessProcessorRules(BIZ_SERVER_RECIBOS_PROVEEDOR, TBizRecibosProveedorServer); end.