unit uEditorCalendarioRecepciones;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uEditorCalendarioConFiltro, dxPSGlbl, dxPSUtl, dxPSEngn,
  dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
  dxPSEdgePatterns, dxPrnDlg, dxPSCore, dxPScxCommon, dxPScxScheduler2Lnk,
  DB, uDADataTable, cxSchedulerStorage, cxSchedulerDBStorage,
  dxLayoutLookAndFeels, JvAppStorage, JvAppRegistryStorage, cxCheckBox,
  JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns,
  ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage,
  ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uCustomView,
  uViewBase, uViewCalendarioBase, uViewCalendarioConFiltro, uBizCitas;

type
  IEditorCalendarioRecepciones = interface(IEditorCalendarioConFiltro)
  ['{108A5E35-18F4-4100-B4EB-F059AC86BBB4}']
    function GetDocumentos: IBizDocumentos;
    procedure SetDocumentos(const Value: IBizDocumentos);
    property Documentos : IBizDocumentos read GetDocumentos write SetDocumentos;
  end;

  TfEditorCalendarioRecepciones = class(TfEditorCalendarioConFiltro, IEditorCalendarioRecepciones)
    frViewCalendarioRecepciones: TfrViewCalendarioConFiltro;
    DADataSource2: TDADataSource;

  private
    FDocumentos: IBizDocumentos;
    procedure CargarLista; override;
    function GetDocumentos: IBizDocumentos;
    procedure SetDocumentos(const Value: IBizDocumentos);

  protected
    procedure InicializarCampos; override;
    procedure InicializarEvento (var aEvent : TcxSchedulerControlEvent); override;

  public
    property Documentos : IBizDocumentos read GetDocumentos write SetDocumentos;
    constructor Create(AOwner: TComponent); override;
  end;

var
  fEditorCalendarioRecepciones: TfEditorCalendarioRecepciones;

implementation

{$R *.dfm}
{ TfEditorCalendarioRecepciones }
uses schCitasClient_Intf, uEditorCalendarioBase, uDataModuleCalendarios;

procedure TfEditorCalendarioRecepciones.CargarLista;
begin
  NombreLista := 'Documentos';
  inherited;
end;

constructor TfEditorCalendarioRecepciones.Create(AOwner: TComponent);
begin
  inherited;
  ViewCitas := frViewCalendarioRecepciones;
//  (ViewCitas as IViewCalendarioConFiltro).Resources.OnEditValueChanged := Nil;
end;

function TfEditorCalendarioRecepciones.GetDocumentos: IBizDocumentos;
begin
  Result := FDocumentos;
end;

procedure TfEditorCalendarioRecepciones.InicializarCampos;
var
  aField : TcxSchedulerDBStorageField;
begin
  inherited;

  with cxSchedulerDBStorage.CustomFields do
  begin
    try
      BeginUpdate;

      aField := Add;
      aField.FieldName := CTE_TIPO_DOCUMENTO;

    finally
      EndUpdate;
    end;
  end;

end;

procedure TfEditorCalendarioRecepciones.InicializarEvento(var aEvent: TcxSchedulerControlEvent);
var
  ItemSeleccionado: Integer;
  ItemTextSeleccionado: String;
  ADocumento : IBizDocumentos;
begin
  inherited;

  with AEvent do
  begin
    SetCustomFieldValueByName(fld_CITASTIPOTAREA, TextoTipoCita[Ord(tcRecepcion)]);

    //Preparamos la fuente de datos para que se cargen los tipos de pedido del documento seleccionado
    //CAMBIARÁ


    with (ViewCitas as IViewCalendarioConFiltro).Resources do
    begin
      Items.BeginUpdate;
      for ItemSeleccionado := 0 to Items.Count - 1 do
          if Items[ItemSeleccionado].Checked then
             Break;
      Items.EndUpdate;
    end;
    ItemTextSeleccionado := (ViewCitas as IViewCalendarioConFiltro).Resources.Items[ItemSeleccionado].Text;

    ADocumento := dmCalendarios.GetDocumento(ItemTextSeleccionado);
    ADocumento.DataTable.Active := True;
    SetCustomFieldValueByName(CTE_TIPO_DOCUMENTO, ADocumento.CODIGO);
    ADocumento := Nil;

    AllDayEvent := True;
  end;
end;

procedure TfEditorCalendarioRecepciones.SetDocumentos(const Value: IBizDocumentos);
begin
  FDocumentos := Value;

  if Assigned(FDocumentos) then
  begin
    DADataSource2.DataTable := FDocumentos.DataTable;

    if not FDocumentos.DataTable.Active then
       FDocumentos.DataTable.Active := True;
  end
  else
    DADataSource2.DataTable := Nil;
end;

end.
