unit uDataModuleRecepciones;

interface

uses {vcl:} SysUtils, Classes, DB, DBClient,
     {RemObjects:} uDAClientDataModule, uDADataTable, uDAScriptingProvider,
  uDACDSDataTable, uDABINAdapter, uDataModuleBase, uROClient,
  uROServiceComponent, uRORemoteService, uBizRecepciones;

type
  TdmRecepciones = class(TDAClientDataModule)
    RORemoteService: TRORemoteService;
    tbl_Recepciones: TDACDSDataTable;
    ds_Recepciones: TDADataSource;
    tbl_RecepcionesAprobadas: TDACDSDataTable;
    ds_RecepcionesAprobadas: TDADataSource;
    tbl_RecepcionesPendientes: TDACDSDataTable;
    ds_RecepcionesPendientes: TDADataSource;
    tbl_RecepcionesAlbaran: TDACDSDataTable;
    ds_RecepcionesAlbaran: TDADataSource;
    procedure DAClientDataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    function GetItems : IBizRecepciones; overload;
    function GetItems(const AEstado : TInvRecepcionEstado) : IBizRecepciones; overload;
    function GetItemsAlbaran : IBizRecepcionesAlbaran; overload;
    function GetItemsAlbaran(const AEstado : TInvRecepcionAlbaranEstado) : IBizRecepcionesAlbaran; overload;
  end;

var
  dmRecepciones: TdmRecepciones;

implementation

{$R *.DFM}

uses
  Forms, Windows, Controls, VARELA_Intf, uEditorPreview,
  uDataTableUtils, uROTypes, cxControls, uDAInterfaces;


procedure TdmRecepciones.DAClientDataModuleCreate(Sender: TObject);
begin
  RORemoteService.Channel := dmBase.Channel;
  RORemoteService.Message := dmBase.Message;
end;

function TdmRecepciones.GetItems: IBizRecepciones;
var
  dtLista: TDACDSDataTable;
begin
  ShowHourglassCursor;
  try
    dtLista := TDACDSDataTable.Create(NIL);
    CloneDataTable(tbl_Recepciones, dtLista);
    dtLista.BusinessRulesID := BIZ_RECEPCIONES;
    Result := (dtLista as IBizRecepciones);
  finally
    HideHourglassCursor;
  end;
end;

function TdmRecepciones.GetItems(
  const AEstado: TInvRecepcionEstado): IBizRecepciones;
var
  dtLista: TDACDSDataTable;
  AStr : String;
begin
  ShowHourglassCursor;
  try
    dtLista := TDACDSDataTable.Create(NIL);

    case AEstado of
      tirPendiente : CloneDataTable(tbl_RecepcionesPendientes, dtLista);
      tirAprobado  : CloneDataTable(tbl_RecepcionesAprobadas, dtLista);
    end;

    dtLista.BusinessRulesID := BIZ_RECEPCIONES;
    Result := (dtLista as IBizRecepciones);
  finally
    HideHourglassCursor;
  end;
end;

function TdmRecepciones.GetItemsAlbaran: IBizRecepcionesAlbaran;
var
  dtLista: TDACDSDataTable;
begin
  ShowHourglassCursor;
  try
    dtLista := TDACDSDataTable.Create(NIL);
    CloneDataTable(tbl_RecepcionesAlbaran, dtLista);
    dtLista.BusinessRulesID := BIZ_RECEPCIONESALBARAN;
    Result := (dtLista as IBizRecepcionesAlbaran);
  finally
    HideHourglassCursor;
  end;
end;

function TdmRecepciones.GetItemsAlbaran(const AEstado: TInvRecepcionAlbaranEstado): IBizRecepcionesAlbaran;
var
  dtLista: IBizRecepcionesAlbaran;
begin
  ShowHourglassCursor;
  try
    dtLista := GetItemsAlbaran;

    with dtLista.DataTable.Where do
    begin
      Clear;
      case AEstado of
        tiraPendiente : AddCondition('ESTADOALBARAN', cEqual, 'P');
        tiraRecibido  : AddCondition('ESTADOALBARAN', cEqual, 'R');
      end;
    end;

    Result := dtLista;
  finally
    HideHourglassCursor;
  end;
end;

initialization
  dmRecepciones := TdmRecepciones.Create(nil);

finalization
  FreeAndNil(dmRecepciones);

end.
