Varela_PuntosVenta/Source/Modulos/ReferenciaGenerica/Reglas/uBizReferenciaGenerica.pas

318 lines
7.9 KiB
ObjectPascal
Raw Blame History

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.