{*******************************************************}
{                                                       }
{       Administración de puntos de venta               }
{                                                       }
{       Copyright (C) 2006 Rodax Software S.L.          }
{                                                       }
{*******************************************************}

unit uDataModuleVentasProceso;

interface

uses {vcl:} SysUtils, Classes, DB, uDataModuleBase,
     {RemObjects:} uDAClientDataModule, uROClient, uROServiceComponent,
  uRORemoteService, uDADataTable, uDAScriptingProvider, uDACDSDataTable,
  uBizControlVentasProceso, uBizVentasProceso;

const
  CATEGORIA_VENTAS_PROCESO = 'VENTAPROCESO';

type
  TdmVentasEnProceso = class(TDAClientDataModule)
    RemoteService: TRORemoteService;
    tbl_VentasEnProcesoPendientes: TDACDSDataTable;
    tbl_VentasEnProcesoPendientes2: TDACDSDataTable;
    procedure DAClientDataModuleCreate(Sender: TObject);
  protected
    function GetItems : IBizVentasProceso;
  public
    function GetNameColumns: String;  
    function GetControl: IBizControlVentasProceso;
  end;

var
  dmVentasEnProceso: TdmVentasEnProceso;

implementation

{$R *.DFM}

uses
  Controls, Forms, uDataTableUtils,
  uDataModuleControles, schVentasEnProcesoClient_Intf, Dialogs, cxControls;

procedure TdmVentasEnProceso.DAClientDataModuleCreate(Sender: TObject);
begin
  RemoteService.Channel := dmBase.Channel;
  RemoteService.Message := dmBase.Message;
end;

function TdmVentasEnProceso.GetControl: IBizControlVentasProceso;
var
  aDataTable : TDACDSDataTable;
begin
  aDataTable := dmControles.GetItems(CATEGORIA_VENTAS_PROCESO);
  aDataTable.BusinessRulesID := BIZ_CONTROL_VENTASPROCESO;

  (aDataTable as IBizControlVentasProceso).Items := GetItems;
  Result := (aDataTable as IBizControlVentasProceso);
end;

function TdmVentasEnProceso.GetItems: IBizVentasProceso;
var
  dtVentas: TDACDSDataTable;
begin
  ShowHourglassCursor;
  try
    dtVentas := TDACDSDataTable.Create(NIL);
    CloneDataTable(tbl_VentasEnProcesoPendientes2, dtVentas);
    dtVentas.Fields.AssignFieldCollection(tbl_VentasEnProcesoPendientes.Fields);
    dtVentas.BusinessRulesID := BIZ_VENTASPROCESO;

    dtVentas.FieldByName(fld_VentasEnProcesoPendientesNUMINF).Visible := False;
    dtVentas.FieldByName(fld_VentasEnProcesoPendientesCLAVE1).Visible := False;
    dtVentas.FieldByName(fld_VentasEnProcesoPendientesCLAVE2).Visible := False;
    dtVentas.FieldByName(fld_VentasEnProcesoPendientesCLAVE3).Visible := False;

    dtVentas.LoadSchema;
    Result := (dtVentas as IBizVentasProceso);
  finally
    HideHourglassCursor;
  end;
end;

function TdmVentasEnProceso.GetNameColumns: String;
var
  AList : TStringList;
  i : integer;
begin
  AList := TStringList.Create;
  try
    for i := 0 to tbl_VentasEnProcesoPendientes.FieldCount - 1 do
      if tbl_VentasEnProcesoPendientes.Fields[i].Visible then
        AList.Add(tbl_VentasEnProcesoPendientes.Fields[i].Name);
    Result := AList.CommaText;
  finally
    FreeAndNil(AList);
  end;
end;


initialization
  dmVentasEnProceso := TdmVentasEnProceso.Create(nil);

finalization
  FreeAndNil(dmVentasEnProceso);

end.

