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, cxButtonEdit, uViewDatosYSeleccionClientePresupuesto, cxCheckBox; type IViewPresupuestoCliente = interface(IViewBase) ['{A970B43E-E542-40F5-B265-41B7EFA613F9}'] function GetPresupuesto: IBizPresupuestoCliente; procedure SetPresupuesto(const Value: IBizPresupuestoCliente); property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto; function GetViewClientePresupuesto: IViewDatosYSeleccionClientePresupuesto; property ViewClientePresupuesto: IViewDatosYSeleccionClientePresupuesto read GetViewClientePresupuesto; 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; ActionList1: TActionList; dxLayoutControl1Item4: TdxLayoutItem; cbFormaPago: TcxDBLookupComboBox; dxLayoutControl1Item5: TdxLayoutItem; bFormasPago: TButton; dxLayoutControl1Group5: TdxLayoutGroup; dsFormaPago: TDADataSource; dxLayoutControl1Item7: TdxLayoutItem; edtFechaDecision: TcxDBDateEdit; dxLayoutControl1Item15: TdxLayoutItem; eRefCliente: TcxDBTextEdit; dxLayoutControl1Item8: TdxLayoutItem; cbClienteFinal: TcxDBTextEdit; cbSituacion: TcxDBImageComboBox; dxLayoutControl1Item10: TdxLayoutItem; dxLayoutControl1Item9: TdxLayoutItem; eReferenciaAux: TcxDBTextEdit; dxLayoutControl1Group3: TdxLayoutGroup; dxLayoutControl1Group4: TdxLayoutGroup; dxLayoutControl1Group6: TdxLayoutGroup; dxLayoutControl1Group8: TdxLayoutGroup; frViewDatosYSeleccionClientePresupuesto1: TfrViewDatosYSeleccionClientePresupuesto; dxLayoutControl1Item1: TdxLayoutItem; dxLayoutControl1Item11: TdxLayoutItem; bElegirClienteFinal: TButton; actElegirClienteFinal: TAction; dxLayoutControl1Item12: TdxLayoutItem; Label1: TLabel; dxLayoutControl1Group9: TdxLayoutGroup; dxLayoutControl1Item13: TdxLayoutItem; eCertificadoISO: TcxDBCheckBox; dxLayoutControl1Item14: TdxLayoutItem; eFacturaWeb: TcxDBCheckBox; dxLayoutControl1Group10: TdxLayoutGroup; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure bFormasPagoClick(Sender: TObject); procedure frViewClientePresupuestoButton1Click(Sender: TObject); procedure frViewClientePresupuestoButton2Click(Sender: TObject); procedure cbClienteFinalPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure actElegirClienteFinalExecute(Sender: TObject); procedure actElegirClienteFinalUpdate(Sender: TObject); protected FPresupuesto : IBizPresupuestoCliente; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; FViewClientePresupuesto : IViewDatosYSeleccionClientePresupuesto; function GetPresupuesto: IBizPresupuestoCliente; procedure SetPresupuesto(const Value: IBizPresupuestoCliente); virtual; function GetViewClientePresupuesto: IViewDatosYSeleccionClientePresupuesto; public property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto; property ViewClientePresupuesto: IViewDatosYSeleccionClientePresupuesto read GetViewClientePresupuesto; end; implementation {$R *.dfm} { TfrViewPresupuestoCliente } uses uClientesController, uBizContactos, uBizDireccionesContacto, uPresupuestosClienteController; procedure TfrViewPresupuestoCliente.actElegirClienteFinalExecute( Sender: TObject); var ACliente : IBizCliente; AClienteController : IClientesController; begin inherited; AClienteController := TClientesController.Create; try ACliente := (AClienteController.ElegirContacto(AClienteController.BuscarTodos, 'Elija el cliente final de este presupuesto', False) as IBizCliente); if Assigned(ACliente) then begin ShowHourglassCursor; try Presupuesto.Edit; Presupuesto.CLIENTE_FINAL := ACliente.NOMBRE; finally HideHourglassCursor; end; end; finally ACliente := NIL; AClienteController := NIL; end; end; procedure TfrViewPresupuestoCliente.actElegirClienteFinalUpdate( Sender: TObject); begin inherited; (Sender as TAction).Enabled := (not ReadOnly); end; procedure TfrViewPresupuestoCliente.bFormasPagoClick(Sender: TObject); begin inherited; if Assigned(FFormasPago) then FFormasPagoController.VerTodos(FFormasPago); end; procedure TfrViewPresupuestoCliente.cbClienteFinalPropertiesButtonClick( Sender: TObject; AButtonIndex: Integer); var ACliente : IBizCliente; AClienteController : IClientesController; begin inherited; AClienteController := TClientesController.Create; try ACliente := (AClienteController.ElegirContacto(AClienteController.BuscarTodos, 'Elija el cliente final de este presupuesto', False) as IBizCliente); if Assigned(ACliente) then begin ShowHourglassCursor; try Presupuesto.Edit; Presupuesto.CLIENTE_FINAL := ACliente.NOMBRE; finally HideHourglassCursor; end; end; finally ACliente := NIL; AClienteController := NIL; end; end; procedure TfrViewPresupuestoCliente.CustomViewCreate(Sender: TObject); begin inherited; FFormasPago := Nil; FFormasPagoController := TFormasPagoController.Create; FViewClientePresupuesto := frViewDatosYSeleccionClientePresupuesto1; end; procedure TfrViewPresupuestoCliente.CustomViewDestroy(Sender: TObject); begin inherited; FFormasPago := Nil; FFormasPagoController := NIL; FViewClientePresupuesto := NIL; 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; frViewDatosYSeleccionClientePresupuesto1.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; frViewDatosYSeleccionClientePresupuesto1.actAnadirContacto.Execute; end; function TfrViewPresupuestoCliente.GetPresupuesto: IBizPresupuestoCliente; begin Result := FPresupuesto; end; function TfrViewPresupuestoCliente.GetViewClientePresupuesto: IViewDatosYSeleccionClientePresupuesto; begin Result := FViewClientePresupuesto; end; procedure TfrViewPresupuestoCliente.SetPresupuesto(const Value: IBizPresupuestoCliente); begin FPresupuesto := Value; if Assigned(FPresupuesto) then begin DADataSource.DataTable := FPresupuesto.DataTable; FFormasPago := FFormasPagoController.BuscarTodos; dsFormaPago.DataTable := FFormasPago.DataTable; dsFormaPago.DataTable.Active := True; FViewClientePresupuesto.Presupuesto := FPresupuesto; end else begin DADataSource.DataTable := NIL; dsFormaPago.DataTable := NIL; FViewClientePresupuesto.Presupuesto := Nil; end; end; end.