unit uViewPresupuestoCliente; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, uBizPresupuestosCliente, DB, uDADataTable, uCustomView, AppEvnts, StdCtrls, Mask, DBCtrls, uViewObservaciones, uViewDatosYSeleccionCliente, cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo, uViewDireccionEntregaPresupuestoCliente, Buttons, ActnList, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uFormasPagoController, uDAInterfaces, uBizFormasPago, uViewTienda, uPresupuestosClienteController, uVendedoresController; type IViewPresupuestoCliente = interface(IViewBase) ['{C5385699-C1A4-4AEB-B3D0-EE3BDB322FE2}'] function GetController : IPresupuestosClienteController; procedure SetController (const Value : IPresupuestosClienteController); property Controller : IPresupuestosClienteController read GetController write SetController; function GetPresupuesto: IBizPresupuestoCliente; procedure SetPresupuesto(const Value: IBizPresupuestoCliente); property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto; function GetViewClientePresupuesto: TfrViewDatosYSeleccionCliente; procedure SetViewClientePresupuesto(const Value: TfrViewDatosYSeleccionCliente); property ViewClientePresupuesto: TfrViewDatosYSeleccionCliente read GetViewClientePresupuesto write SetViewClientePresupuesto; end; TfrViewPresupuestoCliente = class(TfrViewBase, IViewPresupuestoCliente) DADataSource: TDADataSource; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item2: TdxLayoutItem; edtFechaPresupuesto: TcxDBDateEdit; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Group2: TdxLayoutGroup; dxLayoutControl1Item6: TdxLayoutItem; memObservaciones: TcxDBMemo; dxLayoutControl1Item3: TdxLayoutItem; eReferencia: TcxDBTextEdit; dxLayoutControl1Group7: TdxLayoutGroup; dxLayoutControl1Item1: TdxLayoutItem; frViewClientePresupuesto: TfrViewDatosYSeleccionCliente; ActionList1: TActionList; actElegirDireccion: TAction; dxLayoutControl1Item4: TdxLayoutItem; cbFormaPago: TcxDBLookupComboBox; dxLayoutControl1Item5: TdxLayoutItem; bFormasPago: TButton; dxLayoutControl1Group5: TdxLayoutGroup; dsFormaPago: TDADataSource; dxLayoutControl1Group10: TdxLayoutGroup; dxLayoutControl1Item7: TdxLayoutItem; edtFechaDecision: TcxDBDateEdit; dxLayoutControl1Item15: TdxLayoutItem; eRefCliente: TcxDBTextEdit; dxLayoutControl1Item8: TdxLayoutItem; edtClienteFinal: TcxDBTextEdit; cbSituacion: TcxDBImageComboBox; dxLayoutControl1Item10: TdxLayoutItem; dxLayoutControl1Item9: TdxLayoutItem; frViewTienda1: TfrViewTienda; dxLayoutControl1Group3: TdxLayoutGroup; dxLayoutControl1Group4: TdxLayoutGroup; cbVendedor: TcxDBComboBox; dxLayoutControl1Item11: TdxLayoutItem; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure bFormasPagoClick(Sender: TObject); procedure frViewClientePresupuestoButton1Click(Sender: TObject); procedure frViewClientePresupuestoButton2Click(Sender: TObject); procedure cbVendedorPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); protected FPresupuesto : IBizPresupuestoCliente; FController : IPresupuestosClienteController; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; FListaVendedores : TStringList; FViewClientePresupuesto : TfrViewDatosYSeleccionCliente; function GetPresupuesto: IBizPresupuestoCliente; procedure SetPresupuesto(const Value: IBizPresupuestoCliente); virtual; function GetController : IPresupuestosClienteController; procedure SetController (const Value : IPresupuestosClienteController); function GetViewClientePresupuesto: TfrViewDatosYSeleccionCliente; procedure SetViewClientePresupuesto(const Value: TfrViewDatosYSeleccionCliente); public property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto; property Controller : IPresupuestosClienteController read GetController write SetController; property ViewClientePresupuesto: TfrViewDatosYSeleccionCliente read GetViewClientePresupuesto; end; implementation {$R *.dfm} { TfrViewPresupuestoCliente } uses uClientesController, uBizContactos, uBizDireccionesContacto, uFactuGES_App; procedure TfrViewPresupuestoCliente.bFormasPagoClick(Sender: TObject); begin inherited; if Assigned(FFormasPago) then FFormasPagoController.VerTodos(FFormasPago); end; procedure TfrViewPresupuestoCliente.cbVendedorPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); var AIndex : integer; begin inherited; if Assigned(FPresupuesto) and FPresupuesto.Active then begin AIndex := StrToInt(FListaVendedores.Values[DisplayValue]); FPresupuesto.Edit; FPresupuesto.ID_VENDEDOR := AIndex; end; end; procedure TfrViewPresupuestoCliente.CustomViewCreate(Sender: TObject); var i : integer; begin inherited; FListaVendedores := NIL; FFormasPago := NIL; FFormasPagoController := TFormasPagoController.Create; FViewClientePresupuesto := frViewClientePresupuesto; FViewClientePresupuesto.MsgElegirCliente := 'Elija el cliente al que se le realizará el presupuesto.'; with TVendedoresController.Create do begin try FListaVendedores := DarListaVendedores; with cbVendedor.Properties.Items do begin BeginUpdate; try Clear; for i := 0 to FListaVendedores.Count - 1 do Add(FListaVendedores.Names[i]); finally EndUpdate; end; end; finally Free; end; end; end; procedure TfrViewPresupuestoCliente.CustomViewDestroy(Sender: TObject); begin FreeAndNIL(FListaVendedores); FFormasPago := Nil; FFormasPagoController := NIL; FViewClientePresupuesto := NIL; inherited; end; procedure TfrViewPresupuestoCliente.frViewClientePresupuestoButton1Click(Sender: TObject); begin if Assigned(Presupuesto) and Assigned(Presupuesto.Cliente) and Assigned (Presupuesto.Detalles) and (Presupuesto.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Los descuentos de los artículos del presupuesto serán actualizados con los del nuevo cliente seleccionado, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; frViewClientePresupuesto.actElegirContacto.Execute; end; procedure TfrViewPresupuestoCliente.frViewClientePresupuestoButton2Click(Sender: TObject); begin if Assigned(Presupuesto) and Assigned(Presupuesto.Cliente) and Assigned (Presupuesto.Detalles) and (Presupuesto.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Los descuentos de los artículos del presupuesto serán actualizados con los del nuevo cliente seleccionado, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; frViewClientePresupuesto.actAnadirContacto.Execute; end; function TfrViewPresupuestoCliente.GetController: IPresupuestosClienteController; begin Result := FController; end; function TfrViewPresupuestoCliente.GetPresupuesto: IBizPresupuestoCliente; begin Result := FPresupuesto; end; function TfrViewPresupuestoCliente.GetViewClientePresupuesto: TfrViewDatosYSeleccionCliente; begin Result := FViewClientePresupuesto; end; procedure TfrViewPresupuestoCliente.SetController(const Value: IPresupuestosClienteController); begin FController := Value; end; procedure TfrViewPresupuestoCliente.SetPresupuesto(const Value: IBizPresupuestoCliente); var i : integer; begin FPresupuesto := Value; if Assigned(FPresupuesto) then begin DADataSource.DataTable := FPresupuesto.DataTable; cbVendedor.Text := ''; for i := 0 to FListaVendedores.Count-1 do begin if FListaVendedores.ValueFromIndex[i] = IntToStr(FPresupuesto.ID_VENDEDOR) then begin cbVendedor.Text := FListaVendedores.Names[i]; Break; end; end; FFormasPago := FFormasPagoController.BuscarTodos; dsFormaPago.DataTable := FFormasPago.DataTable; dsFormaPago.DataTable.Active := True; frViewClientePresupuesto.Cliente := FPresupuesto.Cliente; frViewTienda1.DataItem := FPresupuesto.DataTable; end else begin DADataSource.DataTable := NIL; dsFormaPago.DataTable := NIL; frViewClientePresupuesto.Cliente := nil; end; end; procedure TfrViewPresupuestoCliente.SetViewClientePresupuesto(const Value: TfrViewDatosYSeleccionCliente); begin FViewClientePresupuesto := Value; end; end.