unit uViewPedidoProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, uBizPedidosProveedor, DB, uDADataTable, uCustomView, AppEvnts, StdCtrls, Mask, DBCtrls, uViewObservaciones, cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo, uViewDireccionEntregaPedidoProv, cxLookupEdit, cxDBLookupEdit, // uBizPedidosCliente, uPedidosClienteController, cxDBLookupComboBox, uFormasPagoController, ActnList, uDAInterfaces, uBizFormasPago, uViewProveedorPedido, uViewObraReserva, uObrasController, uPedidosProveedorController, uViewDatosYSeleccionProveedorPedido, cxCheckBox; type IViewPedidoProveedor = interface(IViewBase) ['{6FF2FC16-307F-4B8B-A46A-3FEA270ED568}'] function GetPedido: IBizPedidoProveedor; procedure SetPedido(const Value: IBizPedidoProveedor); property Pedido: IBizPedidoProveedor read GetPedido write SetPedido; function GetController : IPedidosProveedorController; procedure SetController (const Value : IPedidosProveedorController); property Controller : IPedidosProveedorController read GetController write SetController; function GetViewProveedorPedido: IViewDatosYSeleccionProveedorPedido; property ViewProveedorPedido: IViewDatosYSeleccionProveedorPedido read GetViewProveedorPedido; end; TfrViewPedidoProveedor = class(TfrViewBase, IViewPedidoProveedor) DADataSource: TDADataSource; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item2: TdxLayoutItem; edtFechaPedido: TcxDBDateEdit; dxLayoutControl1Item4: TdxLayoutItem; edtFechaConfirmacion: TcxDBDateEdit; dxLayoutControl1Item5: TdxLayoutItem; edtFechaEntrega: TcxDBDateEdit; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Group2: TdxLayoutGroup; dxLayoutControl1Item6: TdxLayoutItem; memObservaciones: TcxDBMemo; dxLayoutControl1Item3: TdxLayoutItem; eReferencia: TcxDBTextEdit; dxLayoutControl1Group5: TdxLayoutGroup; dxLayoutControl1Group6: TdxLayoutGroup; dxLayoutControl1Group7: TdxLayoutGroup; dxLayoutControl1Group8: TdxLayoutGroup; dxLayoutControl1Group3: TdxLayoutGroup; dxLayoutControl1Item8: TdxLayoutItem; frViewDireccionEntregaPedidoProv1: TfrViewDireccionEntregaPedidoProv; dxLayoutControl1Item9: TdxLayoutItem; cbFormaPago: TcxDBLookupComboBox; dxLayoutControl1Item10: TdxLayoutItem; bFormasPago: TButton; dxLayoutControl1Group4: TdxLayoutGroup; dsFormaPago: TDADataSource; dxLayoutControl1Item7: TdxLayoutItem; edtFechaEnvio: TcxDBDateEdit; dxLayoutControl1Item11: TdxLayoutItem; eReferenciaPedidoCli: TcxTextEdit; dxLayoutControl1Item12: TdxLayoutItem; bVerPedidoCliente: TButton; dxLayoutControl1Group9: TdxLayoutGroup; dxLayoutControl1Group10: TdxLayoutGroup; ActionList1: TActionList; actVerPedidoCli: TAction; dxLayoutControl1Item13: TdxLayoutItem; frViewObraReserva1: TfrViewObraReserva; dxLayoutControl1Group11: TdxLayoutGroup; frViewDatosYSeleccionProveedorPedido1: TfrViewDatosYSeleccionProveedorPedido; dxLayoutControl1Item1: TdxLayoutItem; dxLayoutControl1Item14: TdxLayoutItem; ePedidoWeb: TcxDBCheckBox; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure bFormasPagoClick(Sender: TObject); procedure actVerPedidoCliExecute(Sender: TObject); procedure actVerPedidoCliUpdate(Sender: TObject); procedure frViewProveedorPedidoButton1Click(Sender: TObject); procedure frViewProveedorPedidoButton2Click(Sender: TObject); procedure ObraReservaEditValueChanged(Sender: TObject); procedure CustomViewShow(Sender: TObject); protected FPedido : IBizPedidoProveedor; FController : IPedidosProveedorController; FViewProveedorPedido : IViewDatosYSeleccionProveedorPedido; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; FObras: TStringList; FObrasController : IObrasController; // FPedidoCliAsociado : IBizPedidoCliente; // FPedidoCliController : IPedidosClienteController; function GetPedido: IBizPedidoProveedor; procedure SetPedido(const Value: IBizPedidoProveedor); virtual; function GetController : IPedidosProveedorController; procedure SetController (const Value : IPedidosProveedorController); function GetViewProveedorPedido: IViewDatosYSeleccionProveedorPedido; public property Pedido: IBizPedidoProveedor read GetPedido write SetPedido; property Controller : IPedidosProveedorController read GetController write SetController; property ViewProveedorPedido: IViewDatosYSeleccionProveedorPedido read GetViewProveedorPedido; end; implementation {$R *.dfm} uses uStringsUtils; { TfrViewPedidoProveedor } procedure TfrViewPedidoProveedor.actVerPedidoCliExecute(Sender: TObject); begin inherited; // FPedidoCliController.Ver(FPedidoCliAsociado); end; procedure TfrViewPedidoProveedor.actVerPedidoCliUpdate(Sender: TObject); begin inherited; // if (Sender as TAction).Enabled then // (Sender as TAction).Enabled := Assigned(FPedidoCliAsociado) end; procedure TfrViewPedidoProveedor.bFormasPagoClick(Sender: TObject); begin inherited; if Assigned(FFormasPago) then FFormasPagoController.VerTodos(FFormasPago); end; procedure TfrViewPedidoProveedor.CustomViewCreate(Sender: TObject); begin inherited; FFormasPago := Nil; FFormasPagoController := TFormasPagoController.Create; FObrasController := TObrasController.Create; FObras := FObrasController.DarListaObras; FViewProveedorPedido := frViewDatosYSeleccionProveedorPedido1; eReferencia.Enabled := False; end; procedure TfrViewPedidoProveedor.CustomViewDestroy(Sender: TObject); begin FViewProveedorPedido := Nil; FController := Nil; FFormasPago := Nil; FFormasPagoController := NIL; FObrasController := Nil; FreeAndNil(FObras) end; procedure TfrViewPedidoProveedor.CustomViewShow(Sender: TObject); begin inherited; if not FPedido.ID_OBRAISNull then begin frViewObraReserva1.ActivarObra(FPedido.ID_OBRA); frViewDireccionEntregaPedidoProv1.lblObra.Caption := FPedido.NOMBRE_OBRA; end; frViewObraReserva1.cbObraReserva.Properties.OnEditValueChanged := ObraReservaEditValueChanged; end; procedure TfrViewPedidoProveedor.ObraReservaEditValueChanged(Sender: TObject); var IDObra: String; begin inherited; IDObra := frViewObraReserva1.DarIDObraSeleccionada; Controller.AsignarIDObra(FPedido, IDObra); if EsCadenaVacia(IDObra) then begin frViewDireccionEntregaPedidoProv1.actListaObras.Enabled := False; frViewDireccionEntregaPedidoProv1.lblObra.Caption := frViewObraReserva1.cbObraReserva.Text; frViewDireccionEntregaPedidoProv1.actListaAlmacenes.Execute end else begin frViewDireccionEntregaPedidoProv1.actListaObras.Enabled := true; frViewDireccionEntregaPedidoProv1.actListaObras.Execute; frViewDireccionEntregaPedidoProv1.lblObra.Caption := frViewObraReserva1.cbObraReserva.Text; end; end; procedure TfrViewPedidoProveedor.frViewProveedorPedidoButton1Click(Sender: TObject); begin if Assigned(Pedido) and Assigned(Pedido.Proveedor) and Assigned (Pedido.Detalles) and (Pedido.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Si cambia de proveedor, se eliminarán todos sus artículos del pedido actual, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; FViewProveedorPedido.ElegirProveedor; end; procedure TfrViewPedidoProveedor.frViewProveedorPedidoButton2Click(Sender: TObject); begin if Assigned(Pedido) and Assigned(Pedido.Proveedor) and Assigned (Pedido.Detalles) and (Pedido.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Si cambia de proveedor, se eliminarán todos sus artículos del pedido actual, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; FViewProveedorPedido.AnadirNuevoProveedor; end; function TfrViewPedidoProveedor.GetController: IPedidosProveedorController; begin Result := FController; end; function TfrViewPedidoProveedor.GetPedido: IBizPedidoProveedor; begin Result := FPedido; end; function TfrViewPedidoProveedor.GetViewProveedorPedido: IViewDatosYSeleccionProveedorPedido; begin Result := FViewProveedorPedido; end; procedure TfrViewPedidoProveedor.SetController(const Value: IPedidosProveedorController); begin FController := Value; end; procedure TfrViewPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor); 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'; FViewProveedorPedido.Pedido := FPedido; frViewDireccionEntregaPedidoProv1.PedidoProveedor := FPedido; frViewObraReserva1.Obras := FObras; frViewObraReserva1.ObrasController := FObrasController; end else begin DADataSource.DataTable := NIL; dsFormaPago.DataTable := NIL; // FPedidoCliAsociado := NIL; FViewProveedorPedido.Pedido := NIL; end; end; end.