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, uEmpleadosController; 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; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure actElegirDireccionExecute(Sender: TObject); procedure actElegirDireccionUpdate(Sender: TObject); procedure bFormasPagoClick(Sender: TObject); procedure frViewClientePresupuestoButton1Click(Sender: TObject); procedure frViewClientePresupuestoButton2Click(Sender: TObject); procedure frViewTienda1cbTiendaPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); procedure frViewTienda1cbTiendaPropertiesChange(Sender: TObject); protected FPresupuesto : IBizPresupuestoCliente; FController : IPresupuestosClienteController; FFormasPago : IBizFormaPago; FFormasPagoController : IFormasPagoController; FEmpleadosController : IEmpleadosController; 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, uBizDireccionesContacto, uFactuGES_App; procedure TfrViewPresupuestoCliente.actElegirDireccionExecute(Sender: TObject); var AClientesController : IClientesController; APresupuestoController : IPresupuestosClienteController; ADireccion : IBizDireccionesContacto; begin inherited; AClientesController := TClientesController.Create; APresupuestoController := TPresupuestosClienteController.Create; try ADireccion := AClientesController.ElegirDireccionEntrega(FPresupuesto.Cliente.Direcciones, 'Seleccione la dirección del cliente que quiere utilizar como dirección de envio de este Presupuesto.'); if Assigned(ADireccion) then begin APresupuestoController.CopiarDireccionEnvio(ADireccion, FPresupuesto); FPresupuesto.Edit; FPresupuesto.IMPORTE_PORTE := ADireccion.PORTE; end; finally AClientesController := NIL; APresupuestoController := NIL; end; end; procedure TfrViewPresupuestoCliente.actElegirDireccionUpdate(Sender: TObject); begin inherited; (Sender as TAction).Enabled := (not ReadOnly) and Assigned(FPresupuesto) and Assigned(FViewClientePresupuesto) and FPresupuesto.DataTable.Active and Assigned(FPresupuesto.Cliente) and Assigned(FPresupuesto.Cliente) and Assigned(FPresupuesto.Cliente.Direcciones) and FPresupuesto.Cliente.Direcciones.DataTable.Active and (FPresupuesto.Cliente.Direcciones.DataTable.RecordCount > 0); end; procedure TfrViewPresupuestoCliente.bFormasPagoClick(Sender: TObject); begin inherited; if Assigned(FFormasPago) then FFormasPagoController.VerTodos(FFormasPago); end; procedure TfrViewPresupuestoCliente.CustomViewCreate(Sender: TObject); begin inherited; FFormasPago := Nil; FFormasPagoController := TFormasPagoController.Create; FViewClientePresupuesto := frViewClientePresupuesto; FViewClientePresupuesto.MsgElegirCliente := 'Elija el cliente al que se le realizará el Presupuesto.'; FEmpleadosController := TEmpleadosController.Create; frViewTienda1.dsVendedores.DataTable := FEmpleadosController.BuscarVendedores.DataTable; frViewTienda1.dsVendedores.DataTable.Active := true; end; procedure TfrViewPresupuestoCliente.CustomViewDestroy(Sender: TObject); begin 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; procedure TfrViewPresupuestoCliente.frViewTienda1cbTiendaPropertiesChange( Sender: TObject); begin inherited; { if assigned(Presupuesto) and assigned(Controller) then begin Controller.SetID_Tienda(Presupuesto, frViewTienda1.getIDTienda); end; } end; procedure TfrViewPresupuestoCliente.frViewTienda1cbTiendaPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin inherited; if assigned(Presupuesto) and assigned(Controller) then begin Controller.SetID_Tienda(Presupuesto, frViewTienda1.getIDTienda, frViewTienda1.cbTienda.Text); end; 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); begin FPresupuesto := Value; if Assigned(FPresupuesto) then begin DADataSource.DataTable := FPresupuesto.DataTable; FFormasPago := FFormasPagoController.BuscarTodos; dsFormaPago.DataTable := FFormasPago.DataTable; dsFormaPago.DataTable.Active := True; frViewClientePresupuesto.Cliente := FPresupuesto.Cliente; //REPASAR if FPresupuesto.EsNuevo then frViewTienda1.SetIDTienda(FPresupuesto.ID_TIENDA); 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.