unit uViewPedidoCliente; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, uBizPedidosCliente, DB, uDADataTable, uCustomView, AppEvnts, StdCtrls, Mask, DBCtrls, uViewObservaciones, cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo, uViewDireccionEntregaPedidoCli, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uFormasPagoController, ActnList, uDAInterfaces, uBizFormasPago, uPedidosClienteController, uViewDatosYSeleccionClientePedido; type IViewPedidoCliente = interface(IViewBase) ['{6FF2FC16-307F-4B8B-A46A-3FEA270ED568}'] function GetPedido: IBizPedidoCliente; procedure SetPedido(const Value: IBizPedidoCliente); property Pedido: IBizPedidoCliente read GetPedido write SetPedido; function GetController : IPedidosClienteController; procedure SetController (const Value : IPedidosClienteController); property Controller : IPedidosClienteController read GetController write SetController; function GetViewClientePedido: IViewDatosYSeleccionClientePedido; property ViewClientePedido: IViewDatosYSeleccionClientePedido read GetViewClientePedido; end; TfrViewPedidoCliente = class(TfrViewBase, IViewPedidoCliente) DADataSource: TDADataSource; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item2: TdxLayoutItem; edtFechaPedido: TcxDBDateEdit; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Group2: TdxLayoutGroup; dxLayoutControl1Item6: TdxLayoutItem; memObservaciones: TcxDBMemo; dxLayoutControl1Item3: TdxLayoutItem; eReferencia: TcxDBTextEdit; dxLayoutControl1Group6: TdxLayoutGroup; dxLayoutControl1Group7: TdxLayoutGroup; dxLayoutControl1Group8: TdxLayoutGroup; dxLayoutControl1Group3: TdxLayoutGroup; dxLayoutControl1Item8: TdxLayoutItem; frViewDireccionEntregaPedidoCli1: TfrViewDireccionEntregaPedidoCli; dxLayoutControl1Item9: TdxLayoutItem; cbFormaPago: TcxDBLookupComboBox; dxLayoutControl1Item10: TdxLayoutItem; bFormasPago: TButton; dxLayoutControl1Group4: TdxLayoutGroup; dsFormaPago: TDADataSource; ActionList1: TActionList; actVerPedidoCli: TAction; frViewDatosYSeleccionClientePedido1: TfrViewDatosYSeleccionClientePedido; dxLayoutControl1Item1: TdxLayoutItem; dxLayoutControl1Item14: TdxLayoutItem; eRefCliente: TcxDBTextEdit; dxLayoutControl1Item15: TdxLayoutItem; edtFechaPrevistaEnvio: TcxDBDateEdit; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure bFormasPagoClick(Sender: TObject); procedure actVerPedidoCliExecute(Sender: TObject); procedure actVerPedidoCliUpdate(Sender: TObject); procedure frViewClientePedidoButton1Click(Sender: TObject); procedure frViewClientePedidoButton2Click(Sender: TObject); procedure CustomViewShow(Sender: TObject); protected FPedido : IBizPedidoCliente; FController : IPedidosClienteController; FViewClientePedido : IViewDatosYSeleccionClientePedido; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; function GetPedido: IBizPedidoCliente; procedure SetPedido(const Value: IBizPedidoCliente); virtual; function GetController : IPedidosClienteController; procedure SetController (const Value : IPedidosClienteController); function GetViewClientePedido: IViewDatosYSeleccionClientePedido; public property Pedido: IBizPedidoCliente read GetPedido write SetPedido; property Controller : IPedidosClienteController read GetController write SetController; property ViewClientePedido: IViewDatosYSeleccionClientePedido read GetViewClientePedido; end; implementation {$R *.dfm} uses uStringsUtils; { TfrViewPedidoCliente } procedure TfrViewPedidoCliente.actVerPedidoCliExecute(Sender: TObject); begin inherited; // FPedidoCliController.Ver(FPedidoCliAsociado); end; procedure TfrViewPedidoCliente.actVerPedidoCliUpdate(Sender: TObject); begin inherited; // if (Sender as TAction).Enabled then // (Sender as TAction).Enabled := Assigned(FPedidoCliAsociado) end; procedure TfrViewPedidoCliente.bFormasPagoClick(Sender: TObject); begin inherited; if Assigned(FFormasPago) then FFormasPagoController.VerTodos(FFormasPago); end; procedure TfrViewPedidoCliente.CustomViewCreate(Sender: TObject); begin inherited; FFormasPago := Nil; FFormasPagoController := TFormasPagoController.Create; FViewClientePedido := frViewDatosYSeleccionClientePedido1; eReferencia.Enabled := False; end; procedure TfrViewPedidoCliente.CustomViewDestroy(Sender: TObject); begin FViewClientePedido := Nil; FController := Nil; FFormasPago := Nil; FFormasPagoController := NIL; end; procedure TfrViewPedidoCliente.CustomViewShow(Sender: TObject); begin inherited; // end; procedure TfrViewPedidoCliente.frViewClientePedidoButton1Click(Sender: TObject); begin if Assigned(Pedido) and Assigned(Pedido.Cliente) and Assigned (Pedido.Detalles) and (Pedido.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Si cambia de Cliente, se eliminarán todos sus artículos del pedido actual, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; FViewClientePedido.ElegirCliente; end; procedure TfrViewPedidoCliente.frViewClientePedidoButton2Click(Sender: TObject); begin if Assigned(Pedido) and Assigned(Pedido.Cliente) and Assigned (Pedido.Detalles) and (Pedido.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Si cambia de Cliente, se eliminarán todos sus artículos del pedido actual, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; FViewClientePedido.AnadirNuevoCliente; end; function TfrViewPedidoCliente.GetController: IPedidosClienteController; begin Result := FController; end; function TfrViewPedidoCliente.GetPedido: IBizPedidoCliente; begin Result := FPedido; end; function TfrViewPedidoCliente.GetViewClientePedido: IViewDatosYSeleccionClientePedido; begin Result := FViewClientePedido; end; procedure TfrViewPedidoCliente.SetController(const Value: IPedidosClienteController); begin FController := Value; end; procedure TfrViewPedidoCliente.SetPedido(const Value: IBizPedidoCliente); begin FPedido := Value; if Assigned(FPedido) then begin DADataSource.DataTable := FPedido.DataTable; FFormasPago := FFormasPagoController.BuscarTodos; dsFormaPago.DataTable := FFormasPago.DataTable; dsFormaPago.DataTable.Active := True; // FPedidoCliAsociado := NIL; // if (FPedido.ID_PEDIDO_CLIENTE > 0) then // begin // FPedidoCliAsociado := FPedidoCliController.Buscar(FPedido.ID_PEDIDO_CLIENTE); // if Assigned(FPedidoCliAsociado) then // begin // FPedidoCliAsociado.DataTable.Active := True; // eReferenciaPedidoCli.Text := FPedidoCliAsociado.REFERENCIA // end // else // eReferenciaPedidoCli.Text := ''; // end // else // eReferenciaPedidoCli.Text := 'No hay pedido asociado'; FViewClientePedido.Pedido := FPedido; frViewDireccionEntregaPedidoCli1.PedidoCliente := FPedido; end else begin DADataSource.DataTable := NIL; dsFormaPago.DataTable := NIL; // FPedidoCliAsociado := NIL; FViewClientePedido.Pedido := NIL; end; end; end.