git-svn-id: https://192.168.0.254/svn/Proyectos.AbetoDesign_FactuGES/trunk@8 93f398dd-4eb6-7a46-baf6-13f46f578da2
261 lines
9.9 KiB
ObjectPascal
261 lines
9.9 KiB
ObjectPascal
unit uBizProveedoresServer;
|
||
|
||
interface
|
||
|
||
uses
|
||
schContactosServer_Intf, uDAInterfaces, uDADelta,
|
||
uDADataTable, uDABusinessProcessor, uBizContactosServer;
|
||
|
||
const
|
||
BIZ_SERVER_PROVEEDOR = 'Server.Proveedor';
|
||
|
||
type
|
||
TBizProveedorServer = 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
|
||
{$INCLUDE ..\..\..\FactuGES.inc}
|
||
|
||
uses
|
||
uDataModuleServer, uDAClasses, srvContabilidad_Impl,
|
||
schContactosClient_Intf, uBusinessUtils, FactuGES_Intf,
|
||
uROServer, SysUtils;
|
||
|
||
const
|
||
REF_PROVEEDOR = 'REF_PROVEEDOR';
|
||
|
||
{ TBizProveedorServer }
|
||
|
||
procedure TBizProveedorServer.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 TBizProveedorServer.CrearCuentaContable(aChange: TDADeltaChange);
|
||
var
|
||
AIDProveedor: Integer;
|
||
bEsAcreedor: Integer;
|
||
ANombre: string;
|
||
|
||
ASchema : TDASchema;
|
||
ACurrentConn : IDAConnection;
|
||
dsData: IDADataset;
|
||
|
||
Intf: IInterface;
|
||
AContabilidadService: IsrvContabilidad;
|
||
AClientID: TGUID;
|
||
begin
|
||
AIDProveedor := aChange.NewValueByName[fld_ProveedoresID];
|
||
bEsAcreedor := aChange.NewValueByName[fld_ProveedoresES_ACREEDOR];
|
||
ANombre := aChange.NewValueByName[fld_ProveedoresNOMBRE];
|
||
|
||
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'], [AIDProveedor]);
|
||
dsData.Active := True;
|
||
|
||
if not AContabilidadService.TieneCuentaAsociada(AIDProveedor, dsData.FieldValues[0]) then
|
||
begin
|
||
//Por cada ino de las empresas que tiene asociadas el contacto se a<>ade una subcuenta en su ejercicio activo
|
||
while not dsData.EOF do
|
||
begin
|
||
AContabilidadService.AnadirSubCuentaProveedor(AIDProveedor, bEsAcreedor, dsData.FieldValues[0], ANombre);
|
||
dsData.Next;
|
||
end;
|
||
end;
|
||
|
||
finally
|
||
dsData := NIL;
|
||
ACurrentConn := NIL;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TBizProveedorServer.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 TBizProveedorServer.DarReferencia: String;
|
||
begin
|
||
Result := _DarReferenciaInterna(REF_PROVEEDOR);
|
||
end;
|
||
|
||
procedure TBizProveedorServer.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_ProveedoresDatos');
|
||
try
|
||
with ACommand do
|
||
begin
|
||
ParamByName('OLD_ID_PROVEEDOR').Value := aChange.OldValueByName[fld_ProveedoresID];
|
||
Execute;
|
||
end;
|
||
finally
|
||
ACommand := NIL;
|
||
end;
|
||
end;
|
||
|
||
function TBizProveedorServer.IncrementarReferencia: Boolean;
|
||
begin
|
||
Result := _IncrementarReferenciaInterna(REF_PROVEEDOR);
|
||
end;
|
||
|
||
procedure TBizProveedorServer.Insert_Datos_Contacto(aChange: TDADeltaChange);
|
||
var
|
||
ACurrentConn : IDAConnection;
|
||
ACommand : IDASQLCommand;
|
||
ASchema : TDASchema;
|
||
begin
|
||
inherited;
|
||
|
||
ASchema := BusinessProcessor.Schema;
|
||
ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor);
|
||
|
||
ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_ProveedoresDatos');
|
||
try
|
||
with ACommand do
|
||
begin
|
||
ParamByName('ID_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresID];
|
||
ParamByName('DESCUENTO').Value := aChange.NewValueByName[fld_ProveedoresDESCUENTO];
|
||
ParamByName('DESCRIPCION_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresDESCRIPCION_PROVEEDOR];
|
||
ParamByName('CODIGO_ASIGNADO').Value := aChange.NewValueByName[fld_ProveedoresCODIGO_ASIGNADO];
|
||
ParamByName('REGIMEN_IVA').Value := aChange.NewValueByName[fld_ProveedoresREGIMEN_IVA];
|
||
ParamByName('ID_TIPO_IVA').Value := aChange.NewValueByName[fld_ProveedoresID_TIPO_IVA];
|
||
ParamByName('ID_FORMA_PAGO').Value := aChange.NewValueByName[fld_ProveedoresID_FORMA_PAGO];
|
||
ParamByName('TIENDA_WEB').Value := aChange.NewValueByName[fld_ProveedoresTIENDA_WEB];
|
||
ParamByName('HOMOLOGADO').Value := aChange.NewValueByName[fld_ProveedoresHOMOLOGADO];
|
||
ParamByName('CERTIFICACION').Value := aChange.NewValueByName[fld_ProveedoresCERTIFICACION];
|
||
ParamByName('GRUPO_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresGRUPO_PROVEEDOR];
|
||
ParamByName('IGNORAR_CONTABILIDAD').Value := aChange.NewValueByName[fld_ProveedoresIGNORAR_CONTABILIDAD];
|
||
ParamByName('TIENE_SUBCUENTA').Value := aChange.NewValueByName[fld_ProveedoresTIENE_SUBCUENTA];
|
||
ParamByName('NOMBRE_COMERCIAL').Value := aChange.NewValueByName[fld_ProveedoresNOMBRE_COMERCIAL];
|
||
ParamByName('ES_ACREEDOR').Value := aChange.NewValueByName[fld_ProveedoresES_ACREEDOR];
|
||
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];
|
||
|
||
Execute;
|
||
end;
|
||
|
||
{$IFDEF CONTABILIDAD}
|
||
//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_ProveedoresIGNORAR_CONTABILIDAD] = 0) and
|
||
(aChange.NewValueByName[fld_ProveedoresTIENE_SUBCUENTA] = 0) then
|
||
begin
|
||
CrearCuentaContable(aChange);
|
||
end;
|
||
{$ENDIF}
|
||
|
||
finally
|
||
ACommand := NIL;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TBizProveedorServer.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_ProveedoresDatos');
|
||
try
|
||
with ACommand do
|
||
begin
|
||
ParamByName('OLD_ID_PROVEEDOR').Value := aChange.OldValueByName[fld_ProveedoresID];
|
||
ParamByName('ID_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresID];
|
||
ParamByName('DESCUENTO').Value := aChange.NewValueByName[fld_ProveedoresDESCUENTO];
|
||
ParamByName('DESCRIPCION_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresDESCRIPCION_PROVEEDOR];
|
||
ParamByName('CODIGO_ASIGNADO').Value := aChange.NewValueByName[fld_ProveedoresCODIGO_ASIGNADO];
|
||
ParamByName('REGIMEN_IVA').Value := aChange.NewValueByName[fld_ProveedoresREGIMEN_IVA];
|
||
ParamByName('ID_TIPO_IVA').Value := aChange.NewValueByName[fld_ProveedoresID_TIPO_IVA];
|
||
ParamByName('ID_FORMA_PAGO').Value := aChange.NewValueByName[fld_ProveedoresID_FORMA_PAGO];
|
||
ParamByName('TIENDA_WEB').Value := aChange.NewValueByName[fld_ProveedoresTIENDA_WEB];
|
||
ParamByName('HOMOLOGADO').Value := aChange.NewValueByName[fld_ProveedoresHOMOLOGADO];
|
||
ParamByName('CERTIFICACION').Value := aChange.NewValueByName[fld_ProveedoresCERTIFICACION];
|
||
ParamByName('GRUPO_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresGRUPO_PROVEEDOR];
|
||
ParamByName('IGNORAR_CONTABILIDAD').Value := aChange.NewValueByName[fld_ProveedoresIGNORAR_CONTABILIDAD];
|
||
ParamByName('TIENE_SUBCUENTA').Value := aChange.NewValueByName[fld_ProveedoresTIENE_SUBCUENTA];
|
||
ParamByName('NOMBRE_COMERCIAL').Value := aChange.NewValueByName[fld_ProveedoresNOMBRE_COMERCIAL];
|
||
ParamByName('ES_ACREEDOR').Value := aChange.NewValueByName[fld_ProveedoresES_ACREEDOR];
|
||
|
||
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];
|
||
|
||
Execute;
|
||
end;
|
||
|
||
{$IFDEF CONTABILIDAD}
|
||
//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;
|
||
{$ENDIF}
|
||
|
||
finally
|
||
ACommand := NIL;
|
||
end;
|
||
end;
|
||
|
||
initialization
|
||
RegisterBusinessProcessorRules(BIZ_SERVER_PROVEEDOR, TBizProveedorServer);
|
||
|
||
end.
|