unit uViewPedidoProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, uBizPedidosProveedor, DB, uDADataTable, uCustomView, AppEvnts, StdCtrls, Mask, DBCtrls, uViewObservaciones, uViewDatosYSeleccionProveedor, cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo, uViewDireccionEntregaPedidoProv, cxLookupEdit, cxDBLookupEdit, uBizContratosCliente, uContratosClienteController, cxDBLookupComboBox, uFormasPagoController, ActnList, uDAInterfaces, uBizFormasPago, uViewTienda, uPedidosProveedorController; type IViewPedidoProveedor = interface(IViewBase) ['{C5385699-C1A4-4AEB-B3D0-EE3BDB322FE2}'] function GetController : IPedidosProveedorController; procedure SetController (const Value : IPedidosProveedorController); property Controller : IPedidosProveedorController read GetController write SetController; function GetPedido: IBizPedidoProveedor; procedure SetPedido(const Value: IBizPedidoProveedor); property Pedido: IBizPedidoProveedor read GetPedido write SetPedido; function GetViewProveedorPedido: TfrViewDatosYSeleccionProveedor; procedure SetViewProveedorPedido(const Value: TfrViewDatosYSeleccionProveedor); property ViewProveedorPedido: TfrViewDatosYSeleccionProveedor read GetViewProveedorPedido write SetViewProveedorPedido; end; TfrViewPedidoProveedor = class(TfrViewBase, IViewPedidoProveedor) DADataSource: TDADataSource; frViewProveedorPedido: TfrViewDatosYSeleccionProveedor; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item1: TdxLayoutItem; dxLayoutControl1Item2: TdxLayoutItem; edtFechaPedido: TcxDBDateEdit; dxLayoutControl1Item4: TdxLayoutItem; edtFechaConfirmacion: TcxDBDateEdit; dxLayoutControl1Item5: TdxLayoutItem; edtFechaEntrega: TcxDBDateEdit; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Group2: TdxLayoutGroup; 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; eReferenciaContratoCli: TcxTextEdit; dxLayoutControl1Item12: TdxLayoutItem; Button1: TButton; dxLayoutControl1Group9: TdxLayoutGroup; dxLayoutControl1Group10: TdxLayoutGroup; ActionList1: TActionList; actVerPedidoCli: TAction; dxLayoutControl1Item13: TdxLayoutItem; frViewTienda1: TfrViewTienda; dxLayoutControl1Group11: TdxLayoutGroup; frViewObservaciones1: TfrViewObservaciones; dxLayoutControl1Item6: TdxLayoutItem; dxLayoutControl1Item14: TdxLayoutItem; cbSituacion: TcxDBImageComboBox; actAsignarContratoCli: TAction; 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 actAsignarContratoCliExecute(Sender: TObject); procedure actAsignarContratoCliUpdate(Sender: TObject); protected FPedido : IBizPedidoProveedor; FController : IPedidosProveedorController; FViewProveedorPedido : TfrViewDatosYSeleccionProveedor; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; FContratoCliAsociado : IBizContratoCliente; FContratoCliController : IContratosClienteController; function GetPedido: IBizPedidoProveedor; procedure SetPedido(const Value: IBizPedidoProveedor); virtual; function GetController : IPedidosProveedorController; procedure SetController (const Value : IPedidosProveedorController); function GetContratoCliAsociado: IBizContratoCliente; procedure SetContratoCliAsociado(const Value: IBizContratoCliente); function GetViewProveedorPedido: TfrViewDatosYSeleccionProveedor; procedure SetViewProveedorPedido(const Value: TfrViewDatosYSeleccionProveedor); public property Pedido: IBizPedidoProveedor read GetPedido write SetPedido; property ContratoCliAsociado: IBizContratoCliente read GetContratoCliAsociado write SetContratoCliAsociado; property Controller : IPedidosProveedorController read GetController write SetController; property ViewProveedorPedido: TfrViewDatosYSeleccionProveedor read GetViewProveedorPedido; end; implementation {$R *.dfm} { TfrViewPedidoProveedor } procedure TfrViewPedidoProveedor.actAsignarContratoCliExecute(Sender: TObject); var AContrato : IBizContratoCliente; begin inherited; AContrato := FContratoCliController.ElegirContratosParaCompras(FContratoCliController.BuscarPendientes, 'Elija el contrato de cliente que desea asignar al pedido.', False); if Assigned(AContrato) then begin FController.AsignarContrato(Pedido, AContrato.ID, AContrato.REFERENCIA, AContrato.NOMBRE_CLIENTE); ContratoCliAsociado := AContrato; end; end; procedure TfrViewPedidoProveedor.actAsignarContratoCliUpdate(Sender: TObject); begin inherited; //Lo modificamos para que el pedido de proveedor este asociado al contrato de cliente if (Sender as TAction).Enabled then (Sender as TAction).Enabled := (not ReadOnly) and not Assigned(FContratoCliAsociado) end; 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; FViewProveedorPedido := frViewProveedorPedido; FViewProveedorPedido.MsgElegirProveedor := 'Elija el proveedor al que se le realizará el pedido.'; eReferencia.Enabled := False; eReferenciaContratoCli.Enabled := False; FContratoCliAsociado := NIL; FContratoCliController := TContratosClienteController.Create; end; procedure TfrViewPedidoProveedor.CustomViewDestroy(Sender: TObject); begin FViewProveedorPedido := Nil; FFormasPago := Nil; FFormasPagoController := NIL; inherited; 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; frViewProveedorPedido.actElegirContacto.Execute; 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; frViewProveedorPedido.actAnadirContacto.Execute; end; function TfrViewPedidoProveedor.GetContratoCliAsociado: IBizContratoCliente; begin Result := FContratoCliAsociado; end; function TfrViewPedidoProveedor.GetController: IPedidosProveedorController; begin Result := FController; end; function TfrViewPedidoProveedor.GetPedido: IBizPedidoProveedor; begin Result := FPedido; end; function TfrViewPedidoProveedor.GetViewProveedorPedido: TfrViewDatosYSeleccionProveedor; begin Result := FViewProveedorPedido; end; procedure TfrViewPedidoProveedor.SetContratoCliAsociado(const Value: IBizContratoCliente); begin FContratoCliAsociado := Value; if Assigned(FContratoCliAsociado) then begin if not FContratoCliAsociado.DataTable.Active then FContratoCliAsociado.DataTable.Active := True; eReferenciaContratoCli.Text := FContratoCliAsociado.REFERENCIA end else eReferenciaContratoCli.Text := ''; end; procedure TfrViewPedidoProveedor.SetController(const Value: IPedidosProveedorController); begin FController := Value; if Assigned(FController) then ViewProveedorPedido.Controller := Controller.ProveedorController; 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; FContratoCliAsociado := NIL; if (FPedido.ID_CONTRATO_CLIENTE > 0) then ContratoCliAsociado := FContratoCliController.Buscar(FPedido.ID_CONTRATO_CLIENTE) else eReferenciaContratoCli.Text := 'No hay contrato asociado'; end else begin DADataSource.DataTable := NIL; dsFormaPago.DataTable := NIL; FContratoCliAsociado := NIL; end; frViewProveedorPedido.Proveedor := FPedido.Proveedor; frViewDireccionEntregaPedidoProv1.PedidoProveedor := FPedido; end; procedure TfrViewPedidoProveedor.SetViewProveedorPedido(const Value: TfrViewDatosYSeleccionProveedor); begin FViewProveedorPedido := Value; end; end.