unit uViewAlbaranProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, uBizAlbaranesProveedor, DB, uDADataTable, uCustomView, AppEvnts, StdCtrls, Mask, DBCtrls, uViewObservaciones, uViewDatosYSeleccionProveedor, cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo, uViewDireccionEntregaAlbaranProv, Buttons, ActnList, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uFormasPagoController, uBizPedidosProveedor, uPedidosProveedorController, uBizFormasPago, uDAInterfaces, uAlbaranesProveedorController, uViewTienda; type IViewAlbaranProveedor = interface(IViewBase) ['{2DA099CE-359A-46E8-90A0-D004FF09040A}'] function GetController : IAlbaranesProveedorController; procedure SetController (const Value : IAlbaranesProveedorController); property Controller : IAlbaranesProveedorController read GetController write SetController; function GetAlbaran: IBizAlbaranProveedor; procedure SetAlbaran(const Value: IBizAlbaranProveedor); property Albaran: IBizAlbaranProveedor read GetAlbaran write SetAlbaran; function GetViewProveedorAlbaran: TfrViewDatosYSeleccionProveedor; procedure SetViewProveedorAlbaran(const Value: TfrViewDatosYSeleccionProveedor); property ViewProveedorAlbaran: TfrViewDatosYSeleccionProveedor read GetViewProveedorAlbaran write SetViewProveedorAlbaran; end; TfrViewAlbaranProveedor = class(TfrViewBase, IViewAlbaranProveedor) DADataSource: TDADataSource; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item2: TdxLayoutItem; edtFechaAlbaran: TcxDBDateEdit; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Group2: TdxLayoutGroup; dxLayoutControl1Item3: TdxLayoutItem; eReferencia: TcxDBTextEdit; dxLayoutControl1Group6: TdxLayoutGroup; dxLayoutControl1Group7: TdxLayoutGroup; dxLayoutControl1Group8: TdxLayoutGroup; dxLayoutControl1Group3: TdxLayoutGroup; dxLayoutControl1Item1: TdxLayoutItem; frViewProveedorAlbaran: TfrViewDatosYSeleccionProveedor; ActionList1: TActionList; actElegirDireccion: TAction; dxLayoutControl1Item4: TdxLayoutItem; frViewDireccionEntregaAlbaranProv1: TfrViewDireccionEntregaAlbaranProv; dxLayoutControl1Item5: TdxLayoutItem; cbFormaPago: TcxDBLookupComboBox; dxLayoutControl1Item7: TdxLayoutItem; bFormasPago: TButton; dxLayoutControl1Group4: TdxLayoutGroup; dsFormaPago: TDADataSource; dxLayoutControl1Item8: TdxLayoutItem; eReferenciaPedidoCli: TcxTextEdit; dxLayoutControl1Item9: TdxLayoutItem; Button1: TButton; dxLayoutControl1Group5: TdxLayoutGroup; actVerPedido: TAction; dxLayoutControl1Item10: TdxLayoutItem; eRefFactura: TcxDBTextEdit; dxLayoutControl1Item11: TdxLayoutItem; eReferenciaProveedor: TcxDBTextEdit; dxLayoutControl1Item12: TdxLayoutItem; eReferenciaFacturaProveedor: TcxDBTextEdit; dxLayoutControl1Item13: TdxLayoutItem; frViewTienda1: TfrViewTienda; dxLayoutControl1Group9: TdxLayoutGroup; frViewObservaciones1: TfrViewObservaciones; dxLayoutControl1Item6: TdxLayoutItem; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure actElegirDireccionExecute(Sender: TObject); procedure frViewProveedorAlbaranButton1Click(Sender: TObject); procedure frViewProveedorAlbaranButton2Click(Sender: TObject); procedure bFormasPagoClick(Sender: TObject); procedure actVerPedidoExecute(Sender: TObject); procedure frViewProveedorAlbaranactElegirContactoUpdate(Sender: TObject); procedure frViewProveedorAlbaranactAnadirContactoUpdate(Sender: TObject); procedure actElegirDireccionUpdate(Sender: TObject); procedure actVerPedidoUpdate(Sender: TObject); protected FAlbaran : IBizAlbaranProveedor; FController : IAlbaranesProveedorController; FViewProveedorAlbaran : TfrViewDatosYSeleccionProveedor; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; FPedidoAsociado : IBizPedidoProveedor; FPedidoController : IPedidosProveedorController; function GetAlbaran: IBizAlbaranProveedor; procedure SetAlbaran(const Value: IBizAlbaranProveedor); virtual; function GetController : IAlbaranesProveedorController; procedure SetController (const Value : IAlbaranesProveedorController); function GetViewProveedorAlbaran: TfrViewDatosYSeleccionProveedor; procedure SetViewProveedorAlbaran(const Value: TfrViewDatosYSeleccionProveedor); public property Albaran: IBizAlbaranProveedor read GetAlbaran write SetAlbaran; property Controller : IAlbaranesProveedorController read GetController write SetController; property ViewProveedorAlbaran: TfrViewDatosYSeleccionProveedor read GetViewProveedorAlbaran; end; implementation {$R *.dfm} { TfrViewAlbaranProveedor } uses uProveedoresController, uBizDireccionesContacto, schAlbaranesProveedorClient_Intf; procedure TfrViewAlbaranProveedor.actElegirDireccionExecute(Sender: TObject); var AProveedoresController : IProveedoresController; AAlbaranController : IAlbaranesProveedorController; ADireccion : IBizDireccionesContacto; begin inherited; { AProveedoresController := TProveedoresController.Create; AAlbaranController := TAlbaranesProveedorController.Create; try ADireccion := AProveedoresController.ElegirDireccionEntrega(FAlbaran.Proveedor.Direcciones, 'Seleccione la dirección del Proveedor que quiere utilizar como dirección de envio de este Albaran.'); if Assigned(ADireccion) then AAlbaranController.CopiarDireccionEnvio(ADireccion, FAlbaran); finally AProveedoresController := NIL; AAlbaranController := NIL; end; } end; procedure TfrViewAlbaranProveedor.actElegirDireccionUpdate(Sender: TObject); begin inherited; if (Sender as TAction).Enabled then (Sender as TAction).Enabled := (not ReadOnly) and Assigned(FAlbaran) and Assigned(FViewProveedorAlbaran) and FAlbaran.DataTable.Active and Assigned(FAlbaran.Proveedor) and Assigned(FAlbaran.Proveedor) and Assigned(FAlbaran.Proveedor.Direcciones) and FAlbaran.Proveedor.Direcciones.DataTable.Active and (FAlbaran.Proveedor.Direcciones.DataTable.RecordCount > 0); end; procedure TfrViewAlbaranProveedor.actVerPedidoExecute(Sender: TObject); begin inherited; FPedidoController.Ver(FPedidoAsociado); end; procedure TfrViewAlbaranProveedor.actVerPedidoUpdate(Sender: TObject); begin inherited; if (Sender as TAction).Enabled then (Sender as TAction).Enabled := (Albaran.REF_PED_PROVEEDOR <> '') end; procedure TfrViewAlbaranProveedor.bFormasPagoClick(Sender: TObject); begin inherited; if Assigned(FFormasPago) then FFormasPagoController.VerTodos(FFormasPago); end; procedure TfrViewAlbaranProveedor.CustomViewCreate(Sender: TObject); begin inherited; FPedidoAsociado := NIL; FPedidoController := TPedidosProveedorController.Create; FFormasPago := Nil; FFormasPagoController := TFormasPagoController.Create; FViewProveedorAlbaran := frViewProveedorAlbaran; FViewProveedorAlbaran.MsgElegirProveedor := 'Elija el proveedor de este albarán.'; eReferencia.Enabled := False; end; procedure TfrViewAlbaranProveedor.CustomViewDestroy(Sender: TObject); begin FPedidoController := NIL; FFormasPago := Nil; FFormasPagoController := NIL; FPedidoAsociado := NIL; FViewProveedorAlbaran := Nil; inherited; end; procedure TfrViewAlbaranProveedor.frViewProveedorAlbaranactAnadirContactoUpdate(Sender: TObject); begin if (Sender as TAction).Enabled then (Sender as TAction).Enabled := not Assigned(FPedidoAsociado); end; procedure TfrViewAlbaranProveedor.frViewProveedorAlbaranactElegirContactoUpdate(Sender: TObject); begin if (Sender as TAction).Enabled then (Sender as TAction).Enabled := (not Assigned(FPedidoAsociado)); end; procedure TfrViewAlbaranProveedor.frViewProveedorAlbaranButton1Click(Sender: TObject); begin if Assigned(Albaran) and Assigned(Albaran.Proveedor) and Assigned (Albaran.Detalles) and (Albaran.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Si cambia de proveedor, se eliminarán todos sus artículos de la orden de devolución actual, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; frViewProveedorAlbaran.actElegirContacto.Execute; end; procedure TfrViewAlbaranProveedor.frViewProveedorAlbaranButton2Click(Sender: TObject); begin if Assigned(Albaran) and Assigned(Albaran.Proveedor) and Assigned (Albaran.Detalles) and (Albaran.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Si cambia de proveedor, se eliminarán todos sus artículos del la orden de devolución actual, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; frViewProveedorAlbaran.actAnadirContacto.Execute; end; function TfrViewAlbaranProveedor.GetAlbaran: IBizAlbaranProveedor; begin Result := FAlbaran; end; function TfrViewAlbaranProveedor.GetController: IAlbaranesProveedorController; begin Result := FController; end; function TfrViewAlbaranProveedor.GetViewProveedorAlbaran: TfrViewDatosYSeleccionProveedor; begin Result := FViewProveedorAlbaran; end; procedure TfrViewAlbaranProveedor.SetAlbaran(const Value: IBizAlbaranProveedor); begin FAlbaran := Value; if Assigned(FAlbaran) then begin DADataSource.DataTable := FAlbaran.DataTable; frViewTienda1.DataItem := FAlbaran.DataTable; FFormasPago := FFormasPagoController.BuscarTodos; dsFormaPago.DataTable := FFormasPago.DataTable; dsFormaPago.DataTable.Active := True; frViewProveedorAlbaran.Proveedor := FAlbaran.Proveedor; frViewDireccionEntregaAlbaranProv1.AlbaranProveedor := FAlbaran; eReferenciaPedidoCli.Enabled := False; eRefFactura.Enabled := False; FPedidoAsociado := NIL; if (FAlbaran.ID_PEDIDO > 0) then begin FPedidoAsociado := FPedidoController.Buscar(FAlbaran.ID_PEDIDO); if Assigned(FPedidoAsociado) then begin FPedidoAsociado.DataTable.Active := True; eReferenciaPedidoCli.Text := FPedidoAsociado.REFERENCIA end else eReferenciaPedidoCli.Text := ''; end else eReferenciaPedidoCli.Text := 'No hay pedido asociado'; end else begin DADataSource.DataTable := NIL; dsFormaPago.DataTable := NIL; frViewProveedorAlbaran.Proveedor := nil; frViewDireccionEntregaAlbaranProv1.AlbaranProveedor := Nil; end; end; procedure TfrViewAlbaranProveedor.SetController(const Value: IAlbaranesProveedorController); begin FController := Value; if Assigned(FController) then ViewProveedorAlbaran.Controller := Controller.ProveedorController; end; procedure TfrViewAlbaranProveedor.SetViewProveedorAlbaran(const Value: TfrViewDatosYSeleccionProveedor); begin FViewProveedorAlbaran := Value; end; end.