2019-11-18 10:36:42 +00:00
|
|
|
|
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;
|
|
|
|
|
|
procedure CrearCuentaContable(aChange: TDADeltaChange);
|
|
|
|
|
|
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, FactuGES_Intf,
|
|
|
|
|
|
uROServer, SysUtils;
|
|
|
|
|
|
|
|
|
|
|
|
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.CrearCuentaContable(aChange: TDADeltaChange);
|
|
|
|
|
|
var
|
|
|
|
|
|
AContabilidadService : IsrvContabilidad;
|
|
|
|
|
|
Intf : IInterface;
|
|
|
|
|
|
AClientID : TGUID;
|
|
|
|
|
|
|
|
|
|
|
|
ASchema : TDASchema;
|
|
|
|
|
|
ACurrentConn : IDAConnection;
|
|
|
|
|
|
dsData: IDADataset;
|
|
|
|
|
|
|
|
|
|
|
|
ANombre: string;
|
|
|
|
|
|
AIDCliente: Integer;
|
|
|
|
|
|
AIDTienda: Integer;
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
AIDCliente := aChange.NewValueByName[fld_ClientesID];
|
|
|
|
|
|
AIDTienda := aChange.NewValueByName[fld_ClientesID_TIENDA];
|
|
|
|
|
|
ANombre := aChange.NewValueByName[fld_ClientesNOMBRE];
|
|
|
|
|
|
|
|
|
|
|
|
CreateGUID(AClientID);
|
|
|
|
|
|
GetClassFactory('srvContabilidad').CreateInstance(AClientID, Intf);
|
|
|
|
|
|
AContabilidadService := Intf as IsrvContabilidad;
|
|
|
|
|
|
|
|
|
|
|
|
ASchema := BusinessProcessor.Schema;
|
|
|
|
|
|
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
dsData := ASchema.NewDataset(ACurrentConn, 'DarEmpresasContacto', ['ID_CONTACTO'], [AIDCliente]);
|
|
|
|
|
|
dsData.Active := True;
|
|
|
|
|
|
|
|
|
|
|
|
//Por cada una de las empresas que tiene asociadas el contacto se a<>ade una subcuenta en su ejercicio activo, si no la tiene
|
|
|
|
|
|
while not dsData.EOF do
|
|
|
|
|
|
begin
|
|
|
|
|
|
if not AContabilidadService.TieneCuentaAsociada(AIDCliente, dsData.FieldValues[0]) then
|
|
|
|
|
|
AContabilidadService.AnadirSubCuentaCliente(AIDCliente, AIDTienda, dsData.FieldValues[0], ANombre);
|
|
|
|
|
|
dsData.Next;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
finally
|
|
|
|
|
|
dsData := NIL;
|
|
|
|
|
|
ACurrentConn := NIL;
|
|
|
|
|
|
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;
|
|
|
|
|
|
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('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];
|
|
|
|
|
|
|
|
|
|
|
|
ParamByName('VENCIMIENTO_FACTURAS_1').Value := aChange.NewValueByName[fld_ProveedoresVENCIMIENTO_FACTURAS_1];
|
|
|
|
|
|
ParamByName('VENCIMIENTO_FACTURAS_2').Value := aChange.NewValueByName[fld_ProveedoresVENCIMIENTO_FACTURAS_2];
|
|
|
|
|
|
ParamByName('VENCIMIENTO_FACTURAS_3').Value := aChange.NewValueByName[fld_ProveedoresVENCIMIENTO_FACTURAS_3];
|
|
|
|
|
|
|
2020-03-03 18:07:32 +00:00
|
|
|
|
ParamByName('LOPD').Value := aChange.NewValueByName[fld_ClientesLOPD];
|
|
|
|
|
|
|
2019-11-18 10:36:42 +00:00
|
|
|
|
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
|
|
|
|
|
|
CrearCuentaContable(aChange);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
finally
|
|
|
|
|
|
ACommand := NIL;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
procedure TBizClienteServer.Update_Datos_Contacto(aChange: TDADeltaChange);
|
|
|
|
|
|
var
|
|
|
|
|
|
ASchema : TDASchema;
|
|
|
|
|
|
ACurrentConn : IDAConnection;
|
|
|
|
|
|
ACommand : IDASQLCommand;
|
|
|
|
|
|
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('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];
|
|
|
|
|
|
|
|
|
|
|
|
ParamByName('VENCIMIENTO_FACTURAS_1').Value := aChange.NewValueByName[fld_ProveedoresVENCIMIENTO_FACTURAS_1];
|
|
|
|
|
|
ParamByName('VENCIMIENTO_FACTURAS_2').Value := aChange.NewValueByName[fld_ProveedoresVENCIMIENTO_FACTURAS_2];
|
|
|
|
|
|
ParamByName('VENCIMIENTO_FACTURAS_3').Value := aChange.NewValueByName[fld_ProveedoresVENCIMIENTO_FACTURAS_3];
|
|
|
|
|
|
|
2020-03-03 18:07:32 +00:00
|
|
|
|
ParamByName('LOPD').Value := aChange.NewValueByName[fld_ClientesLOPD];
|
|
|
|
|
|
|
2019-11-18 10:36:42 +00:00
|
|
|
|
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
|
|
|
|
|
|
CrearCuentaContable(aChange);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
finally
|
|
|
|
|
|
ACommand := NIL;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
initialization
|
|
|
|
|
|
RegisterBusinessProcessorRules(BIZ_SERVER_CLIENTE, TBizClienteServer);
|
|
|
|
|
|
|
|
|
|
|
|
end.
|