unit uViewContratoCliente; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, uBizContratosCliente, DB, uDADataTable, uCustomView, AppEvnts, StdCtrls, Mask, DBCtrls, uViewObservaciones, uViewDatosYSeleccionCliente, cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo, uViewDireccionEntregaContratoCliente, Buttons, ActnList, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uFormasPagoController, uDAInterfaces, uBizFormasPago, cxButtonEdit, uBizContactos, uContratosClienteController, uVendedoresController, uViewClienteContrato, uViewTienda, uViewDatosYSeleccionInstalador; type IViewContratoCliente = interface(IViewBase) ['{3DE0231D-760E-437B-88E5-144B88024797}'] function GetController : IContratosClienteController; procedure SetController (const Value : IContratosClienteController); property Controller : IContratosClienteController read GetController write SetController; function GetContrato: IBizContratoCliente; procedure SetContrato(const Value: IBizContratoCliente); property Contrato: IBizContratoCliente read GetContrato write SetContrato; end; TfrViewContratoCliente = class(TfrViewBase, IViewContratoCliente) DADataSource: TDADataSource; dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Item2: TdxLayoutItem; edtFechaContrato: 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; cbSituacion: TcxDBImageComboBox; dxLayoutControl1Item10: TdxLayoutItem; dxLayoutControl1Group8: TdxLayoutGroup; dxLayoutControl1Item1: TdxLayoutItem; dxLayoutControl1Item8: TdxLayoutItem; memFormaPago: TcxDBMemo; dxLayoutControl1Group3: TdxLayoutGroup; dxLayoutControl1Item9: TdxLayoutItem; memPlazoEntrega: TcxDBMemo; dxLayoutControl1Group4: TdxLayoutGroup; dxLayoutControl1Group6: TdxLayoutGroup; dxLayoutControl1Item11: TdxLayoutItem; dxLayoutControl1Group9: TdxLayoutGroup; cbVendedor: TcxDBLookupComboBox; dsVendedor: TDADataSource; dxLayoutControl1Item7: TdxLayoutItem; cbTipoContrato: TcxDBComboBox; dxLayoutControl1Group11: TdxLayoutGroup; dxLayoutControl1Item12: TdxLayoutItem; edtlREF_CLIENTE: TcxDBTextEdit; frViewClienteContrato1: TfrViewClienteContrato; dxLayoutControl1Item13: TdxLayoutItem; frViewTienda1: TfrViewTienda; dxLayoutControl1Group10: TdxLayoutGroup; dxLayoutControl1Item14: TdxLayoutItem; edtFechaUltRevision: TcxDBDateEdit; dxLayoutControl1Item15: TdxLayoutItem; frViewDatosYSeleccionInstalador1: TfrViewDatosYSeleccionInstalador; procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure bFormasPagoClick(Sender: TObject); procedure frViewClienteContratoButton1Click(Sender: TObject); procedure frViewClienteContratoButton2Click(Sender: TObject); protected FContrato : IBizContratoCliente; FFormasPago : IBizFormaPago; FVendedor : IBizVendedor; FFormasPagoController : IFormasPagoController; FVendedoresController : IVendedoresController; FController : IContratosClienteController; function GetContrato: IBizContratoCliente; procedure SetContrato(const Value: IBizContratoCliente); virtual; function GetController : IContratosClienteController; procedure SetController (const Value : IContratosClienteController); procedure OnInstaladorChanged(Sender : TObject); public property Controller : IContratosClienteController read GetController write SetController; property Contrato: IBizContratoCliente read GetContrato write SetContrato; end; implementation {$R *.dfm} { TfrViewContratoCliente } uses uFactuGES_App, uClientesController, uBizDireccionesContacto, uPresupuestosClienteController; procedure TfrViewContratoCliente.bFormasPagoClick(Sender: TObject); begin inherited; if Assigned(FFormasPago) then FFormasPagoController.VerTodos(FFormasPago); end; procedure TfrViewContratoCliente.CustomViewCreate(Sender: TObject); begin inherited; FFormasPago := Nil; FVendedor := Nil; FFormasPagoController := TFormasPagoController.Create; FVendedoresController := TVendedoresController.Create; cbTipoContrato.Properties.Items.Clear; cbTipoContrato.Properties.Items.Add(CTE_COCINA); cbTipoContrato.Properties.Items.Add(CTE_BANO); cbTipoContrato.Properties.Items.Add(CTE_ARMARIO); cbTipoContrato.Properties.Items.Add(CTE_SALON); cbTipoContrato.Properties.Items.Add(CTE_DORMITORIO); cbTipoContrato.Properties.Items.Add(CTE_JARDIN); cbTipoContrato.Properties.Items.Add(CTE_ELECTRODOMESTICO); cbTipoContrato.Properties.Items.Add(CTE_OBRA); cbTipoContrato.Properties.Items.Add(CTE_VARIOS); cbTipoContrato.Properties.Items.Add(CTE_MAMPARAS); cbTipoContrato.Properties.Items.Add(CTE_PUERTAS); cbTipoContrato.Properties.Items.Add(CTE_CERAMICA); cbTipoContrato.Properties.Items.Add(CTE_TARIMAS); cbTipoContrato.Properties.Items.Add(CTE_PAPEL); cbTipoContrato.Properties.Items.Add(CTE_VENTANAS); cbTipoContrato.Properties.Items.Add(CTE_CERRAJERIA); cbTipoContrato.Properties.Items.Add(CTE_VARIOSEXT); //Victor nos solicita que quitemos el cambio de fecha porque van a empezar a dar las comisiones cuando se acepta un contrato //El usuario administrador y gerencia verán todo if ((AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PERFIL_ADMINISTRADOR) OR (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PREFIL_GERENCIA_COMUN) OR (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PREFIL_GERENCIA_ACANA) OR (AppFactuGES.UsuarioActivo.ID_PERFIL = CTE_PREFIL_GERENCIA_CRISTINA) ) then dxLayoutControl1Item2.Enabled := True //todos los demás serán restringidos else dxLayoutControl1Item2.Enabled := False; end; procedure TfrViewContratoCliente.CustomViewDestroy(Sender: TObject); begin frViewDatosYSeleccionInstalador1.OnInstaladorChanged := Nil; FFormasPago := Nil; FFormasPagoController := NIL; FVendedor := Nil; FVendedoresController := NIL; inherited; end; procedure TfrViewContratoCliente.frViewClienteContratoButton1Click(Sender: TObject); begin if Assigned(Contrato) and Assigned(Contrato.Cliente) and Assigned (Contrato.Detalles) and (Contrato.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Los descuentos de los artículos del Contrato serán actualizados con los del nuevo cliente seleccionado, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; frViewClienteContrato1.actElegirContacto.Execute; end; procedure TfrViewContratoCliente.frViewClienteContratoButton2Click(Sender: TObject); begin if Assigned(Contrato) and Assigned(Contrato.Cliente) and Assigned (Contrato.Detalles) and (Contrato.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Los descuentos de los artículos del Contrato serán actualizados con los del nuevo cliente seleccionado, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; frViewClienteContrato1.actAnadirContacto.Execute; end; function TfrViewContratoCliente.GetContrato: IBizContratoCliente; begin Result := FContrato; end; function TfrViewContratoCliente.GetController: IContratosClienteController; begin Result := FController; end; procedure TfrViewContratoCliente.OnInstaladorChanged(Sender: TObject); begin if Assigned(FContrato) then begin FController.CambiarInstalador(FContrato, frViewDatosYSeleccionInstalador1.Instalador); end; end; procedure TfrViewContratoCliente.SetContrato(const Value: IBizContratoCliente); begin FContrato := Value; if Assigned(FContrato) then begin DADataSource.DataTable := FContrato.DataTable; frViewTienda1.DataItem := FContrato.DataTable; FFormasPago := FFormasPagoController.BuscarTodos; dsFormaPago.DataTable := FFormasPago.DataTable; dsFormaPago.DataTable.Active := True; FVendedor := (FVendedoresController.BuscarTodos as IBizVendedor); dsVendedor.DataTable := FVendedor.DataTable; dsVendedor.DataTable.Active := True; frViewDatosYSeleccionInstalador1.ID_Instalador := FContrato.ID_INSTALADOR; frViewDatosYSeleccionInstalador1.OnInstaladorChanged := OnInstaladorChanged; frViewClienteContrato1.MsgElegirCliente := 'Elija el cliente al que se le realizará el contrato.'; end else begin DADataSource.DataTable := NIL; dsFormaPago.DataTable := NIL; dsVendedor.DataTable := NIL; frViewClienteContrato1.Cliente := Nil; end; end; procedure TfrViewContratoCliente.SetController( const Value: IContratosClienteController); begin FController := Value; if Assigned(FController) then frViewClienteContrato1.Controller := FController.ClienteController; end; end.