{ =============================================================================== Copyright (©) 2002. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 01-12-2002 Versión actual: 1.0.0 Fecha versión actual: 01-12-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit TablaVendedores; interface uses //Generales SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB, //Particulares //Aplicacion Framework, StrFunc, Entidades, Constantes, BaseDatos; type //////////////////////////////////////////////////////////////////////////////// //TDatosVendedor //////////////////////////////////////////////////////////////////////////////// TDatosVendedor = class(TPersistent) public Codigo : String; Nombre : String; NIFCIF : String; Calle : String; Numero : String; Piso : String; CodigoPostal : String; Poblacion : String; Provincia : String; Telefono1 : String; Telefono2 : String; Movil1 : String; Movil2 : String; Porcentaje : String; Observaciones : String; end; //////////////////////////////////////////////////////////////////////////////// //TdmTablaVendedores //////////////////////////////////////////////////////////////////////////////// TdmTablaVendedores = class(TDataModule) private procedure IniciarSQL; procedure IniciarSQLGrids; public sqlInsertar : TStrings; sqlModificar : TStrings; sqlConsultar : TStrings; sqlEliminar : TStrings; sqlGrid : TStrings; sqlConsultarGridVendedoresComisiones : TStrings; //Metodos que llamaran a contador function DarNuevoCodigo : String; constructor Create (AOwner : TComponent); override; destructor Destroy; override; function ExisteCodigo(CodigoVendedor : String) : Boolean; function DarDatosVendedor(var Datos: TDatosVendedor): Boolean; procedure InicializarGridVendedores(var vGrid: TcxGridDBTableView); procedure InicializarGridVendedoresComisiones(var Grid: TcxGridDBTableView); procedure InicializarTablaVendedores(Tabla: TPTabla); end; var dmTablaVendedores: TdmTablaVendedores; implementation {$R *.DFM} //////////////////////////////////////////////////////////////////////////////// //TdmTablaVendedores //////////////////////////////////////////////////////////////////////////////// constructor TdmTablaVendedores.Create (AOwner : TComponent); begin inherited; sqlInsertar := TStringList.Create; sqlModificar := TStringList.Create; sqlConsultar := TStringList.Create; sqlEliminar := TStringList.Create; sqlGrid := TStringList.Create; sqlConsultarGridVendedoresComisiones := TStringList.Create; IniciarSQL; IniciarSQLGrids; end; destructor TdmTablaVendedores.Destroy; begin sqlInsertar.Free; sqlModificar.Free; sqlConsultar.Free; sqlEliminar.Free; sqlGrid.Free; sqlConsultarGridVendedoresComisiones.Free; inherited; end; procedure TdmTablaVendedores.IniciarSQL; begin with sqlInsertar do begin Add('INSERT INTO VENDEDORES ('); Add('CODIGO, NOMBRE, NIFCIF, CALLE, NUMERO, PISO, CODIGOPOSTAL, '); Add('POBLACION, PROVINCIA, TELEFONO1, TELEFONO2, MOVIL1, MOVIL2, '); Add('PORCENTAJE, OBSERVACIONES, FECHAALTA, USUARIO) '); Add('values (:CODIGO, :NOMBRE, :NIFCIF, :CALLE, :NUMERO, :PISO, :CODIGOPOSTAL, '); Add(':POBLACION, :PROVINCIA, :TELEFONO1, :TELEFONO2, :MOVIL1, :MOVIL2, '); Add(':PORCENTAJE, :OBSERVACIONES, :FECHAALTA, :USUARIO)'); end; with sqlModificar do begin Add('UPDATE VENDEDORES SET '); Add('NOMBRE = :NOMBRE, '); Add('NIFCIF = :NIFCIF, '); Add('CALLE = :CALLE, '); Add('NUMERO = :NUMERO, '); Add('PISO = :PISO, '); Add('CODIGOPOSTAL = :CODIGOPOSTAL, '); Add('POBLACION = :POBLACION, '); Add('PROVINCIA = :PROVINCIA, '); Add('TELEFONO1 = :TELEFONO1, '); Add('TELEFONO2 = :TELEFONO2, '); Add('MOVIL1 = :MOVIL1, '); Add('MOVIL2 = :MOVIL2, '); Add('PORCENTAJE = :PORCENTAJE, '); Add('OBSERVACIONES = :OBSERVACIONES '); Add('WHERE (CODIGO = :CODIGO)'); end; with sqlEliminar do begin Add('delete from VENDEDORES '); Add('where CODIGO = :CODIGO'); end; with sqlConsultar do begin Add('select * from VENDEDORES '); Add('where CODIGO = :CODIGO'); end; end; function TdmTablaVendedores.darNuevoCodigo : String; var oSQL : TIBSQL; begin Result := '0'; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select max(CODIGO) + 1 '); SQL.Add('from VENDEDORES '); try Prepare; ExecQuery; if not esCadenaVacia(Fields[0].AsString) then Result := Fields[0].AsString; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaVendedores.ExisteCodigo(CodigoVendedor: String): Boolean; var oSQL : TIBSQL; Codigo : String; begin Result := False; if Length(Trim(CodigoVendedor)) = 0 then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select CODIGO '); SQL.Add('from VENDEDORES '); SQL.Add('where CODIGO = :CODIGO '); try ParamByName('CODIGO').AsString := CodigoVendedor; Prepare; ExecQuery; Codigo := FieldByName('CODIGO').AsString; Result := (CodigoVendedor = Codigo); finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaVendedores.DarDatosVendedor(var Datos: TDatosVendedor): Boolean; var oSQL : TIBSQL; begin Result := False; if EsCadenaVacia(Datos.Codigo) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select * from VENDEDORES '); SQL.Add('where CODIGO = :CODIGO'); try ParamByName('CODIGO').AsString := Datos.Codigo; Prepare; ExecQuery; if (RecordCount > 0) then begin with Datos do begin NifCif := FieldByName('NIFCIF').AsString; Nombre := FieldByName('NOMBRE').AsString; Calle := FieldByName('CALLE').AsString; Numero := FieldByName('NUMERO').AsString; Piso := FieldByName('PISO').AsString; CodigoPostal := FieldByName('CODIGOPOSTAL').AsString; Poblacion := FieldByName('POBLACION').AsString; Provincia := FieldByName('PROVINCIA').AsString; Telefono1 := FieldByName('TELEFONO1').AsString; Telefono2 := FieldByName('TELEFONO2').AsString; Movil1 := FieldByName('MOVIL1').AsString; Movil2 := FieldByName('MOVIL2').AsString; Porcentaje := FieldByName('PORCENTAJE').AsString; Observaciones := FieldByName('OBSERVACIONES').AsString; Result := True; end; end; finally Close; Transaction := NIL; Free; end; end; end; procedure TdmTablaVendedores.InicializarGridVendedores(var vGrid: TcxGridDBTableView); var Columna : TcxGridDBColumn; begin with vGrid do begin ClearItems; OptionsView.Footer := True; {Columna CODIGO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGO'; Columna.Caption := 'Código'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do try try BeginUpdate; Column := Columna; FieldName := Columna.DataBinding.FieldName; Format := 'Total: 0 vendedores'; Kind := skCount; finally EndUpdate; end; except DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1); end; {Columna NIFCIF} Columna := CreateColumn; Columna.DataBinding.FieldName := 'NIFCIF'; Columna.Caption := 'NIF/CIF'; Columna.Width := tamColNIFCIF; Columna.Options.Filtering := False; {Columna NOMBRE} Columna := CreateColumn; Columna.DataBinding.FieldName := 'NOMBRE'; Columna.Caption := 'Nombre'; Columna.Width := tamColNombre; Columna.Options.Filtering := False; Columna.SortOrder := soAscending; {Columna TELEFONO 1} Columna := CreateColumn; Columna.DataBinding.FieldName := 'TELEFONO1'; Columna.Caption := 'Teléfono 1'; Columna.Width := tamColTelefono; Columna.Options.Filtering := False; {Columna MOVIL1} Columna := CreateColumn; Columna.DataBinding.FieldName := 'MOVIL1'; Columna.Caption := 'Móvil 1'; Columna.Width := tamColTelefono; Columna.Options.Filtering := False; end; end; procedure TdmTablaVendedores.IniciarSQLGrids; begin with sqlGrid do begin Add('select CODIGO, NOMBRE, NIFCIF, TELEFONO1, MOVIL1 '); Add('from VENDEDORES '); Add('order by NOMBRE'); end; with sqlConsultarGridVendedoresComisiones do begin Add('select NOMBRE, PORCENTAJE, CAST ((0) as float) as IMPORTE'); Add('from VENDEDORES '); Add('order by NOMBRE '); end; end; procedure TdmTablaVendedores.InicializarGridVendedoresComisiones(var Grid: TcxGridDBTableView); var Columna : TcxGridDBColumn; begin with Grid do begin {Columna NOMBRE} Columna := CreateColumn; Columna.DataBinding.FieldName := 'NOMBRE'; Columna.Caption := 'Nombre del vendedor'; Columna.Width := tamColNombre; Columna.Options.Filtering := False; Columna.Options.Editing := False; {Columna PORCENTAJE} Columna := CreateColumn; Columna.DataBinding.FieldName := 'PORCENTAJE'; Columna.Caption := 'Porcentaje'; Columna.Width := tamColPorcentaje; Columna.HeaderAlignmentHorz := taRightJustify; Columna.Options.Filtering := False; Columna.Options.Editing := False; {Columna IMPORTE} Columna := CreateColumn; Columna.DataBinding.FieldName := 'IMPORTE'; Columna.Caption := 'Importe'; Columna.HeaderAlignmentHorz := taRightJustify; Columna.Width := tamColImporte; Columna.Options.Filtering := False; Columna.Options.Editing := False; end; end; procedure TdmTablaVendedores.InicializarTablaVendedores(Tabla: TPTabla); begin with Tabla^.Fields do begin if FindField('PORCENTAJE') <> NIL then with (FieldByName('PORCENTAJE') as TFloatField) do begin DisplayFormat := DISPLAY_DTO; EditFormat := EDIT_DTO; end; end; with Tabla^.Fields do begin if FindField('IMPORTE') <> NIL then with (FieldByName('IMPORTE') as TFloatField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; end; end; end.