FactuGES2/Source/Modulos/Contactos/Model/uBizClientesServer.pas

233 lines
8.8 KiB
ObjectPascal
Raw Blame History

unit uBizClientesServer;
interface
uses
schContactosServer_Intf, uDAInterfaces, uDADelta,
uDADataTable, uDABusinessProcessor, uBizContactosServer;
const
BIZ_SERVER_CLIENTE = 'Server.Cliente';
type
TBizClienteServer = class(TBizContactosServer)
private
FReferenciaAutomatica : Boolean;
function DarReferencia : String;
function IncrementarReferencia : Boolean;
protected
procedure Insert_Datos_Contacto(aChange: TDADeltaChange); override;
procedure Update_Datos_Contacto(aChange: TDADeltaChange); override;
procedure Delete_Datos_Contacto(aChange: TDADeltaChange); override;
procedure BeforeProcessDelta(Sender: TDABusinessProcessor; const aDelta: IDADelta); override;
procedure AfterProcessChange(Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); override;
end;
implementation
uses
uDataModuleServer, uDAClasses, srvContabilidad_Impl,
schContactosClient_Intf, uBusinessUtils;
const
REF_CLIENTE = 'REF_CLIENTE';
{ TBizClienteServer }
procedure TBizClienteServer.AfterProcessChange(Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean);
begin
inherited;
// Actualizamos el contador de referencias.
case aChange.ChangeType of
ctInsert, ctUpdate: begin
if FReferenciaAutomatica then
begin
IncrementarReferencia;
FReferenciaAutomatica := False;
end;
end;
end;
end;
procedure TBizClienteServer.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 TBizClienteServer.DarReferencia: String;
begin
Result := _DarReferenciaInterna(REF_CLIENTE);
end;
procedure TBizClienteServer.Delete_Datos_Contacto(aChange: TDADeltaChange);
var
ASchema : TDASchema;
ACurrentConn : IDAConnection;
ACommand : IDASQLCommand;
begin
inherited;
ASchema := BusinessProcessor.Schema;
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
ACommand := ASchema.NewCommand(ACurrentConn, 'Delete_ClientesDatos');
try
with ACommand do
begin
ParamByName('OLD_ID_CLIENTE').Value := aChange.OldValueByName[fld_ClientesID];
Execute;
end;
finally
ACommand := NIL;
end;
end;
function TBizClienteServer.IncrementarReferencia: Boolean;
begin
Result := _IncrementarReferenciaInterna(REF_CLIENTE);
end;
procedure TBizClienteServer.Insert_Datos_Contacto(aChange: TDADeltaChange);
var
ASchema : TDASchema;
ACurrentConn : IDAConnection;
ACommand : IDASQLCommand;
idCliente: integer;
idTienda: integer;
idEmpresa: integer;
Nombre: string;
begin
inherited;
ASchema := BusinessProcessor.Schema;
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_ClientesDatos');
try
with ACommand do
begin
ParamByName('ID_CLIENTE').Value := aChange.NewValueByName[fld_ClientesID];
// ParamByName('ID_AGENTE').Value := aChange.NewValueByName[fld_ClientesID_AGENTE];
ParamByName('GRUPO_CLIENTE').Value := aChange.NewValueByName[fld_ClientesGRUPO_CLIENTE];
ParamByName('NOMBRE_COMERCIAL').Value := aChange.NewValueByName[fld_ClientesNOMBRE_COMERCIAL];
ParamByName('VENCIMIENTO_FACTURAS').Value := aChange.NewValueByName[fld_ClientesVENCIMIENTO_FACTURAS];
ParamByName('BLOQUEADO').Value := aChange.NewValueByName[fld_ClientesBLOQUEADO];
ParamByName('MOTIVO_BLOQUEO').Value := aChange.NewValueByName[fld_ClientesMOTIVO_BLOQUEO];
ParamByName('RECARGO_EQUIVALENCIA').Value := aChange.NewValueByName[fld_ClientesRECARGO_EQUIVALENCIA];
ParamByName('REGIMEN_IVA').Value := aChange.NewValueByName[fld_ClientesREGIMEN_IVA];
ParamByName('ID_TIPO_IVA').Value := aChange.NewValueByName[fld_ClientesID_TIPO_IVA];
ParamByName('ID_FORMA_PAGO').Value := aChange.NewValueByName[fld_ClientesID_FORMA_PAGO];
ParamByName('TIENDA_WEB').Value := aChange.NewValueByName[fld_ClientesTIENDA_WEB];
ParamByName('CODIGO_ASIGNADO').Value := aChange.NewValueByName[fld_ClientesCODIGO_ASIGNADO];
ParamByName('IGNORAR_CONTABILIDAD').Value := aChange.NewValueByName[fld_ClientesIGNORAR_CONTABILIDAD];
ParamByName('TIENE_SUBCUENTA').Value := aChange.NewValueByName[fld_ClientesTIENE_SUBCUENTA];
ParamByName('PROCEDENCIA_CLIENTE').Value := aChange.NewValueByName[fld_ClientesPROCEDENCIA_CLIENTE];
Execute;
end;
//En caso de no ignorar contabilidad se deber<65> dar de alta una cuenta para el cliente si el usuario no la ha asignado
if (aChange.NewValueByName[fld_ClientesIGNORAR_CONTABILIDAD] = 0)
and (aChange.NewValueByName[fld_ClientesTIENE_SUBCUENTA] = 0) then
begin
with TsrvContabilidad.Create(NIL) do
try
IdCliente := aChange.NewValueByName[fld_ClientesID];
IdTienda := aChange.NewValueByName[fld_ClientesID_TIENDA];
IdEmpresa := aChange.NewValueByName[fld_ClientesID_EMPRESA];
Nombre := aChange.NewValueByName[fld_ClientesNOMBRE];
if not TieneCuentaAsociada(idCliente, idEmpresa) then
AnadirSubCuentaCliente(idCliente, idTienda, idEmpresa, Nombre);
finally
Free;
end;
end;
finally
ACommand := NIL;
end;
end;
procedure TBizClienteServer.Update_Datos_Contacto(aChange: TDADeltaChange);
var
ASchema : TDASchema;
ACurrentConn : IDAConnection;
ACommand : IDASQLCommand;
idCliente: integer;
idTienda: integer;
idEmpresa: integer;
begin
inherited;
ASchema := BusinessProcessor.Schema;
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
ACommand := ASchema.NewCommand(ACurrentConn, 'Update_ClientesDatos');
try
with ACommand do
begin
ParamByName('OLD_ID_CLIENTE').Value := aChange.OldValueByName[fld_ClientesID];
ParamByName('ID_CLIENTE').Value := aChange.NewValueByName[fld_ClientesID];
// ParamByName('ID_AGENTE').Value := aChange.NewValueByName[fld_ClientesID_AGENTE];
ParamByName('GRUPO_CLIENTE').Value := aChange.NewValueByName[fld_ClientesGRUPO_CLIENTE];
ParamByName('NOMBRE_COMERCIAL').Value := aChange.NewValueByName[fld_ClientesNOMBRE_COMERCIAL];
ParamByName('VENCIMIENTO_FACTURAS').Value := aChange.NewValueByName[fld_ClientesVENCIMIENTO_FACTURAS];
ParamByName('BLOQUEADO').Value := aChange.NewValueByName[fld_ClientesBLOQUEADO];
ParamByName('MOTIVO_BLOQUEO').Value := aChange.NewValueByName[fld_ClientesMOTIVO_BLOQUEO];
ParamByName('RECARGO_EQUIVALENCIA').Value := aChange.NewValueByName[fld_ClientesRECARGO_EQUIVALENCIA];
ParamByName('REGIMEN_IVA').Value := aChange.NewValueByName[fld_ClientesREGIMEN_IVA];
ParamByName('ID_TIPO_IVA').Value := aChange.NewValueByName[fld_ClientesID_TIPO_IVA];
ParamByName('ID_FORMA_PAGO').Value := aChange.NewValueByName[fld_ClientesID_FORMA_PAGO];
ParamByName('TIENDA_WEB').Value := aChange.NewValueByName[fld_ClientesTIENDA_WEB];
ParamByName('CODIGO_ASIGNADO').Value := aChange.NewValueByName[fld_ClientesCODIGO_ASIGNADO];
ParamByName('IGNORAR_CONTABILIDAD').Value := aChange.NewValueByName[fld_ClientesIGNORAR_CONTABILIDAD];
ParamByName('TIENE_SUBCUENTA').Value := aChange.NewValueByName[fld_ClientesTIENE_SUBCUENTA];
ParamByName('PROCEDENCIA_CLIENTE').Value := aChange.NewValueByName[fld_ClientesPROCEDENCIA_CLIENTE];
Execute;
end;
//En caso de no ignorar contabilidad se deber<65> dar de alta una cuenta para el cliente si el usuario no la ha asignado
if (aChange.NewValueByName[fld_ClientesIGNORAR_CONTABILIDAD] = 0)
and (aChange.NewValueByName[fld_ClientesTIENE_SUBCUENTA] = 0) then
begin
with TsrvContabilidad.Create(NIL) do
try
IdCliente := aChange.NewValueByName[fld_ClientesID];
IdTienda := aChange.NewValueByName[fld_ClientesID_TIENDA];
IdEmpresa := aChange.NewValueByName[fld_ClientesID_EMPRESA];
Nombre := aChange.NewValueByName[fld_ClientesNOMBRE];
if not TieneCuentaAsociada(idCliente, idEmpresa) then
AnadirSubCuentaCliente(idCliente, idTienda, idEmpresa, Nombre);
finally
Free;
end;
end;
finally
ACommand := NIL;
end;
end;
initialization
RegisterBusinessProcessorRules(BIZ_SERVER_CLIENTE, TBizClienteServer);
end.