318 lines
7.9 KiB
ObjectPascal
318 lines
7.9 KiB
ObjectPascal
|
|
unit uBizReferenciaGenerica;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Classes, DB, SysUtils, uROClasses, uDADataTable, uDBSelectionList,
|
|||
|
|
schReferenciaGenericaClient_Intf;
|
|||
|
|
|
|||
|
|
const
|
|||
|
|
BIZ_REFERENCIAGENERICA = 'Client.ReferenciaGenerica';
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TRefGenEstado = (rgPendiente, rgEnEspera, rgResuelto);
|
|||
|
|
|
|||
|
|
IBizReferenciaGenerica = interface(IReferenciaGenerica)
|
|||
|
|
['{31C0DE0B-9B92-43A6-810D-7E94F5FF12FE}']
|
|||
|
|
procedure VerTodos;
|
|||
|
|
procedure VerPendientes;
|
|||
|
|
procedure VerEnEspera;
|
|||
|
|
procedure VerResueltos;
|
|||
|
|
procedure DesglosarReferencia;
|
|||
|
|
procedure Show;
|
|||
|
|
procedure Print (const Centro, Vendedor : string; const Estado : TRefGenEstado; const AFiltro : String = '');
|
|||
|
|
procedure Preview (const Centro, Vendedor : string; const Estado : TRefGenEstado; const AFiltro : String = '');
|
|||
|
|
procedure SetEstado(const AValue : TRefGenEstado);
|
|||
|
|
function GetEstado : TRefGenEstado ;
|
|||
|
|
property Estado : TRefGenEstado read GetEstado write SetEstado;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
TBizReferenciaGenericaDataTableRules = class(TReferenciaGenericaDataTableRules,
|
|||
|
|
IBizReferenciaGenerica, ISelectedRowList)
|
|||
|
|
private
|
|||
|
|
FSelectedRows : TSelectedRowList;
|
|||
|
|
protected
|
|||
|
|
procedure SetEstado(const AValue : TRefGenEstado);
|
|||
|
|
function GetEstado : TRefGenEstado ;
|
|||
|
|
function GetSelectedRows : TSelectedRowList;
|
|||
|
|
procedure OnNewRecord(Sender: TDADataTable); override;
|
|||
|
|
public
|
|||
|
|
procedure VerTodos;
|
|||
|
|
procedure VerPendientes;
|
|||
|
|
procedure VerEnEspera;
|
|||
|
|
procedure VerResueltos;
|
|||
|
|
procedure DesglosarReferencia;
|
|||
|
|
procedure Show;
|
|||
|
|
procedure Print (const Centro, Vendedor : string; const Estado : TRefGenEstado; const AFiltro : String = '');
|
|||
|
|
procedure Preview (const Centro, Vendedor : string; const Estado : TRefGenEstado; const AFiltro : String = '');
|
|||
|
|
property Estado : TRefGenEstado read GetEstado write SetEstado;
|
|||
|
|
property SelectedRows : TSelectedRowList read GetSelectedRows;
|
|||
|
|
constructor Create(aDataTable: TDADataTable); override;
|
|||
|
|
destructor Destroy; override;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
uEditorUtils, uDataModuleReferenciaGenerica, uDataTableUtils, uDACDSDataTable;
|
|||
|
|
|
|||
|
|
|
|||
|
|
{ TBizReferenciaGenericaDataTableRules }
|
|||
|
|
|
|||
|
|
constructor TBizReferenciaGenericaDataTableRules.Create(
|
|||
|
|
aDataTable: TDADataTable);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
FSelectedRows := TSelectedRowList.Create(aDataTable);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.DesglosarReferencia;
|
|||
|
|
var
|
|||
|
|
ADataTable : TDACDSDataTable;
|
|||
|
|
AEstado : TRefGenEstado;
|
|||
|
|
i : integer;
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
if (Abs(VTAPROCESO) < 2) and
|
|||
|
|
(Abs(VTAFINAL) < 2) and
|
|||
|
|
(Abs(VTATERM) < 2) then
|
|||
|
|
Exit; // No se puede desglosar si la cantidad es menor que 2.
|
|||
|
|
|
|||
|
|
AEstado := Estado;
|
|||
|
|
DataTable.Edit;
|
|||
|
|
try
|
|||
|
|
if (VTAPROCESO <> 0) then
|
|||
|
|
begin
|
|||
|
|
if (VTAPROCESO > 0) then
|
|||
|
|
VTAPROCESO := VTAPROCESO - 1
|
|||
|
|
else
|
|||
|
|
VTAPROCESO := VTAPROCESO + 1
|
|||
|
|
end
|
|||
|
|
else begin
|
|||
|
|
if (VTAFINAL <> 0) then
|
|||
|
|
begin
|
|||
|
|
if (VTAFINAL > 0) then
|
|||
|
|
VTAFINAL := VTAFINAL - 1
|
|||
|
|
else
|
|||
|
|
VTAFINAL := VTAFINAL + 1
|
|||
|
|
end
|
|||
|
|
else begin
|
|||
|
|
if (VTATERM <> 0) then
|
|||
|
|
begin
|
|||
|
|
if (VTATERM > 0) then
|
|||
|
|
VTATERM := VTATERM - 1
|
|||
|
|
else
|
|||
|
|
VTATERM := VTATERM + 1
|
|||
|
|
end
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
DataTable.Post;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
SelectedRows.Clear;
|
|||
|
|
SelectedRows.CurrentRowSelected := True;
|
|||
|
|
ADataTable := TDACDSDataTable.Create(nil);
|
|||
|
|
try
|
|||
|
|
ADataTable.RemoteFetchEnabled := False;
|
|||
|
|
ADataTable.LogChanges := False;
|
|||
|
|
CopyDataTable(DataTable, ADataTable, True);
|
|||
|
|
|
|||
|
|
// Duplicar el registro
|
|||
|
|
DataTable.Next;
|
|||
|
|
if not DataTable.EOF then
|
|||
|
|
DataTable.Insert
|
|||
|
|
else
|
|||
|
|
DataTable.Append;
|
|||
|
|
for i := 0 to DataTable.FieldCount - 1 do
|
|||
|
|
DataTable.Fields[i].Value := ADataTable.Fields[i].Value;
|
|||
|
|
DataTable.Post;
|
|||
|
|
|
|||
|
|
finally
|
|||
|
|
ADataTable.Free;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
DataTable.Edit;
|
|||
|
|
Estado := AEstado;
|
|||
|
|
FECHACAMBIO := Now;
|
|||
|
|
|
|||
|
|
{ Todav<EFBFBD>a no s<EFBFBD> el valor que va a tener asi que le asigno uno cualquiera para
|
|||
|
|
que en el cliente pueda diferenciar la fila nueva }
|
|||
|
|
NUMCON := 99;
|
|||
|
|
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
if (VTAPROCESO <> 0) then
|
|||
|
|
begin
|
|||
|
|
if (VTAPROCESO > 0) then
|
|||
|
|
VTAPROCESO := 1
|
|||
|
|
else
|
|||
|
|
VTAPROCESO := -1
|
|||
|
|
end
|
|||
|
|
else begin
|
|||
|
|
if (VTAFINAL <> 0) then
|
|||
|
|
begin
|
|||
|
|
if (VTAFINAL > 0) then
|
|||
|
|
VTAFINAL := 1
|
|||
|
|
else
|
|||
|
|
VTAFINAL := -1
|
|||
|
|
end
|
|||
|
|
else begin
|
|||
|
|
if (VTATERM <> 0) then
|
|||
|
|
begin
|
|||
|
|
if (VTATERM > 0) then
|
|||
|
|
VTATERM := 1
|
|||
|
|
else
|
|||
|
|
VTATERM := -1
|
|||
|
|
end
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
DataTable.Post;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
destructor TBizReferenciaGenericaDataTableRules.Destroy;
|
|||
|
|
begin
|
|||
|
|
FreeAndNil(FSelectedRows);
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TBizReferenciaGenericaDataTableRules.GetEstado: TRefGenEstado;
|
|||
|
|
var
|
|||
|
|
aux : String;
|
|||
|
|
begin
|
|||
|
|
aux := GetESTADOValue;
|
|||
|
|
Result := rgPendiente;
|
|||
|
|
if aux = 'E' then
|
|||
|
|
Result := rgEnEspera
|
|||
|
|
else
|
|||
|
|
if aux = 'R' then
|
|||
|
|
Result := rgResuelto;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TBizReferenciaGenericaDataTableRules.GetSelectedRows: TSelectedRowList;
|
|||
|
|
begin
|
|||
|
|
Result := FSelectedRows;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.OnNewRecord(
|
|||
|
|
Sender: TDADataTable);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
ESTADO := rgPendiente;
|
|||
|
|
FECHACAMBIO := Now;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.Preview(const Centro,
|
|||
|
|
Vendedor: string; const Estado : TRefGenEstado; const AFiltro : String);
|
|||
|
|
var
|
|||
|
|
AEstado : String;
|
|||
|
|
begin
|
|||
|
|
case Estado of
|
|||
|
|
rgPendiente : AEstado := 'P';
|
|||
|
|
rgEnEspera : AEstado := 'E';
|
|||
|
|
rgResuelto : AEstado := 'R';
|
|||
|
|
else
|
|||
|
|
AEstado := '';
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
dmReferenciaGenerica.Preview(Centro, Vendedor, AEstado, AFiltro);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.Print(const Centro,
|
|||
|
|
Vendedor: string; const Estado : TRefGenEstado; const AFiltro : String);
|
|||
|
|
var
|
|||
|
|
AEstado : String;
|
|||
|
|
begin
|
|||
|
|
case Estado of
|
|||
|
|
rgPendiente : AEstado := 'P';
|
|||
|
|
rgEnEspera : AEstado := 'E';
|
|||
|
|
rgResuelto : AEstado := 'R';
|
|||
|
|
else
|
|||
|
|
AEstado := '';
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
dmReferenciaGenerica.Print(Centro, Vendedor, AEstado, AFiltro);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.SetEstado(
|
|||
|
|
const AValue: TRefGenEstado);
|
|||
|
|
begin
|
|||
|
|
case AValue of
|
|||
|
|
rgPendiente : SetESTADOValue('P');
|
|||
|
|
rgEnEspera : SetESTADOValue('E');
|
|||
|
|
rgResuelto : SetESTADOValue('R');
|
|||
|
|
else
|
|||
|
|
SetESTADOValue('P');
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.Show;
|
|||
|
|
begin
|
|||
|
|
ShowEditor(IBizReferenciaGenerica, Self, etItem);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.VerEnEspera;
|
|||
|
|
begin
|
|||
|
|
with Self.DataTable do
|
|||
|
|
begin
|
|||
|
|
DisableControls;
|
|||
|
|
DisableEventHandlers;
|
|||
|
|
try
|
|||
|
|
Filtered := False;
|
|||
|
|
Filter := '(' + fld_ReferenciaGenericaESTADO + ' = ''E'')';
|
|||
|
|
Filtered := True;
|
|||
|
|
finally
|
|||
|
|
EnableEventHandlers;
|
|||
|
|
EnableControls;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.VerPendientes;
|
|||
|
|
begin
|
|||
|
|
with Self.DataTable do
|
|||
|
|
begin
|
|||
|
|
DisableControls;
|
|||
|
|
DisableEventHandlers;
|
|||
|
|
try
|
|||
|
|
Filtered := False;
|
|||
|
|
Filter := '(' + fld_ReferenciaGenericaESTADO + ' = ''P'') OR '
|
|||
|
|
+ '(' + fld_ReferenciaGenericaESTADO + ' IS NULL)';
|
|||
|
|
Filtered := True;
|
|||
|
|
finally
|
|||
|
|
EnableEventHandlers;
|
|||
|
|
EnableControls;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.VerResueltos;
|
|||
|
|
begin
|
|||
|
|
with Self.DataTable do
|
|||
|
|
begin
|
|||
|
|
DisableControls;
|
|||
|
|
DisableEventHandlers;
|
|||
|
|
try
|
|||
|
|
Filtered := False;
|
|||
|
|
Filter := '(' + fld_ReferenciaGenericaESTADO + ' = ''R'')';
|
|||
|
|
Filtered := True;
|
|||
|
|
finally
|
|||
|
|
EnableEventHandlers;
|
|||
|
|
EnableControls;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TBizReferenciaGenericaDataTableRules.VerTodos;
|
|||
|
|
begin
|
|||
|
|
Self.DataTable.Filtered := False;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
initialization
|
|||
|
|
RegisterDataTableRules(BIZ_REFERENCIAGENERICA, TBizReferenciaGenericaDataTableRules);
|
|||
|
|
|
|||
|
|
end.
|
|||
|
|
|