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<61>a no s<> 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.
|
||
|