unit uEditorCobroMontaje;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dxLayoutLookAndFeels, DB, uDADataTable,
  JvAppStorage, JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList,
  PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar,
  pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane,



  uEditorCobroCliente, uIEditorCobroMontaje, uCobrosClienteController,
  uBizCobrosCliente, uCustomView, uViewBase, uViewCobroCliente, JvExComCtrls,
  JvStatusBar;


type
  TfEditorCobroMontaje = class(TfEditorCobroCliente, IEditorCobroMontaje)
  protected
    procedure OnMontajeChanged(Sender : TObject);

    //Si queremos crear otra vista para el editor heredado solo tendriamos que
    //sobreescribir este metodo
    procedure AsignarVista; override;
    //Para asignar los objetos de negocio que necesita la vista
    procedure SetController (const Value : ICobrosClienteController); override;
    procedure SetCobro(const Value: IBizCobroCliente); override;
  end;

implementation
{$R *.dfm}

uses uViewCobroMontaje, uBizCobrosMontaje, uCobrosMontajeController,
uBizMontajesDetalles;

{ TfEditorCobroMontaje }

procedure TfEditorCobroMontaje.AsignarVista;
var
  AViewCobroMontaje: TfrViewCobroMontaje;
begin
  AViewCobroMontaje := TfrViewCobroMontaje.create(Self);
  with AViewCobroMontaje do
  begin
    Parent := pagGeneral;
    Align := alClient;
    dxLayoutCobroCliente.LookAndFeel := dxLayoutOfficeLookAndFeel1;
  end;
  ViewCobroCliente := AViewCobroMontaje;
end;

procedure TfEditorCobroMontaje.OnMontajeChanged(Sender: TObject);
begin
  (Cobro as IBizCobroMontaje).Montaje := ((ViewCobroCliente as IViewCobroMontaje).ViewMontajeCobro.Montaje as IBizMontajeDetalles);

  if (Application.MessageBox('¿Desea asignar el cliente del montaje seleccionado al cobro?', 'Atención', MB_YESNO) = IDYES) then
  begin
    (Controller as ICobrosMontajeController).MontajeController.RecuperarCliente((Cobro as IBizCobroMontaje).Montaje);
     ViewCobroCliente.ViewClienteCobro.Cliente := (Cobro as IBizCobroMontaje).Montaje.Cliente;
  end;
end;

procedure TfEditorCobroMontaje.SetCobro(const Value: IBizCobroCliente);
begin
  inherited;
  if Assigned(FViewCobro) then
  begin
    (ViewCobroCliente as IViewCobroMontaje).ViewMontajeCobro.Montaje := (FCobro as IBizCobroMontaje).Montaje;
    (ViewCobroCliente as IViewCobroMontaje).ViewMontajeCobro.OnMontajeChanged := OnMontajeChanged;
  end;
end;

procedure TfEditorCobroMontaje.SetController(const Value: ICobrosClienteController);
begin
  inherited;
  if Assigned(FController) then
     (ViewCobroCliente as IViewCobroMontaje).ViewMontajeCobro.Controller := (FController as ICobrosMontajeController).MontajeController;
end;

end.
