{ =============================================================================== Copyright (©) 2001. 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: 04-10-2004 Versión actual: 1.0.0 Fecha versión actual: 04-10-2004 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit TablaAlbaranesProveedor; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, BaseDatos, Ibdatabase, dxDBGrid, Contadores; type TDatosAlbaranProveedor = class(TPersistent) public CodigoEmpresa : integer; Codigo : string; FechaAlta : string; Usuario : string; CodigoProveedor : string; NIFCIF : string; Nombre : string; Calle : string; Numero : string; Piso : string; CodigoPostal : string; Poblacion : string; Provincia : string; PersonaContacto : string; Telefono : string; Fax : string; BaseImponible : string; Descuento : string; IVA : string; ImporteTotal : string; Descripcion : string; end; TdmTablaAlbaranesProveedor = class(TDataModule) private procedure IniciarSQLAlbaran; procedure IniciarSQLDetalles; procedure IniciarSQLGrids; public sqlInsertarAlbaran : TStrings; sqlModificarAlbaran : TStrings; sqlConsultarAlbaran : TStrings; sqlEliminarAlbaran : TStrings; sqlConsultarGridAlbaranes : TStrings; sqlConsultarGridAlbaranesPro : TStrings; sqlInsertarDetalles : TStrings; sqlModificarDetalles : TStrings; sqlConsultarDetalles : TStrings; sqlEliminarDetalles : TStrings; sqlConsultarGridDetalles : TStrings; //Metodos que llamaran a contador function DarNuevoCodigo : String; function IncrementarCodigo: boolean; function InsertarContador: boolean; function ValidarCodigo(Codigo : String) : Boolean; function FormatearCodigo(Codigo : String) : String; function DarDatosAlbaran(Albaran : TDatosAlbaranProveedor): Boolean; function ExisteCodigo(CodigoEmpresa: Integer; Codigo : String) : Boolean; procedure InicializarGridDetalles(var Grid: TdxDBGrid); procedure InicializarGridAlbaranes(var Grid: TdxDBGrid); procedure InicializarTablaAlbaranes(Tabla: TPTabla); procedure InicializarTablaDetalles(Tabla: TPTabla); constructor Create (AOwner : TComponent); override; destructor Destroy; override; function DarListaAnos(CodigoEmpresa: Integer): TStringList; end; var dmTablaAlbaranesProveedor: TdmTablaAlbaranesProveedor; implementation {$R *.DFM} uses IBSQL, Mensajes, StrFunc, IB, DB, Excepciones, TablaUnidadesMedida, dxDBCtrl, dxDBTLCL, IBCustomDataSet, dxTL, Constantes, Literales, RdxGestorContadores; { TdmTablaAlbaranesCliente } constructor TdmTablaAlbaranesProveedor.Create(AOwner: TComponent); begin inherited; { Cabecera } sqlInsertarAlbaran := TStringList.Create; sqlModificarAlbaran := TStringList.Create; sqlConsultarAlbaran := TStringList.Create; sqlEliminarAlbaran := TStringList.Create; { Detalles } sqlInsertarDetalles := TStringList.Create; sqlModificarDetalles := TStringList.Create; sqlConsultarDetalles := TStringList.Create; sqlEliminarDetalles := TStringList.Create; sqlConsultarGridDetalles := TStringList.Create; { Grids } sqlConsultarGridAlbaranes := TStringList.Create; sqlConsultarGridAlbaranesPro := TStringList.Create; IniciarSQLAlbaran; IniciarSQLDetalles; IniciarSQLGrids; end; destructor TdmTablaAlbaranesProveedor.Destroy; begin { Cabecera } sqlInsertarAlbaran.Free; sqlModificarAlbaran.Free; sqlConsultarAlbaran.Free; sqlEliminarAlbaran.Free; { Detalles } sqlInsertarDetalles.Free; sqlModificarDetalles.Free; sqlConsultarDetalles.Free; sqlEliminarDetalles.Free; sqlConsultarGridDetalles.Free; { Grids } sqlConsultarGridAlbaranes.Free; sqlConsultarGridAlbaranesPro.Free; inherited; end; function TdmTablaAlbaranesProveedor.DarDatosAlbaran( Albaran: TDatosAlbaranProveedor): Boolean; var oSQL : TIBSQL; begin Result := False; if EsCadenaVacia(Albaran.Codigo) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select * from ALBARANESPROVEEDOR '); SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)'); ParamByName('CODIGOEMPRESA').AsInteger := Albaran.CodigoEmpresa; ParamByName('CODIGO').AsString := Albaran.Codigo; try Prepare; ExecQuery; //Compruebo que el codigo de albarán existe. Si no existe, devuelvo false if (RecordCount > 0) then begin with Albaran do begin FechaAlta := FieldByName('FECHAALTA').AsString; Usuario:= FieldByName('USUARIO').AsString; CodigoProveedor := FieldByName('CODIGOPROVEEDOR').AsString; 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; PersonaContacto := FieldByName('PERSONACONTACTO').AsString; Telefono := FieldByName('TELEFONO').AsString; Fax := FieldByName('FAX').AsString; BaseImponible := FieldByName('BASEIMPONIBLE').AsString; Descuento := FieldByName('DESCUENTO').AsString; IVA := FieldByName('IVA').AsString; ImporteTotal := FieldByName('IMPORTETOTAL').AsString; Descripcion := FieldByName('DESCRIPCION').AsString; Result := True; end; end; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaAlbaranesProveedor.DarNuevoCodigo: String; begin Result := GestorContadores.DarNuevoCodigo(contAlbaranesProveedor); end; function TdmTablaAlbaranesProveedor.ExisteCodigo(CodigoEmpresa: Integer; Codigo: String): Boolean; var oSQL : TIBSQL; Contador : String; begin Result := False; oSQL := TIBSQL.Create(Self); oSQL.Database := dmBaseDatos.BD; oSQL.Transaction := dmBaseDatos.Transaccion; oSQL.SQL.Add('select CODIGO '); oSQL.SQL.Add('from ALBARANESPROVEEDOR '); oSQL.SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)'); try with oSQL do begin ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa; ParamByName('CODIGO').AsString := Codigo; Prepare; ExecQuery; Contador := Fields[0].AsString; Result := (Codigo = Contador); end; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; oSQL.Close; oSQL.Transaction := NIL; oSQL.Free; end; function TdmTablaAlbaranesProveedor.FormatearCodigo(Codigo: String): String; begin Result := GestorContadores.FormatearCodigo(contAlbaranesProveedor, Codigo); end; function TdmTablaAlbaranesProveedor.IncrementarCodigo: boolean; begin Result := GestorContadores.IncrementarValor(contAlbaranesProveedor); end; procedure TdmTablaAlbaranesProveedor.InicializarGridAlbaranes(var Grid: TdxDBGrid); var Columna : TdxDBTreeListColumn; begin with Grid do begin DestroyColumns; ShowSummaryFooter := True; {Columna CODIGO} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'CODIGO'; Columna.Caption := 'Código'; Columna.Width := tamColCodigo; Columna.Sorted := csDown; Columna.SummaryFooterType := cstCount; Columna.SummaryFooterFormat := 'Total: 0 albaranes'; {Columna ANO} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'ANO'; Columna.Caption := 'Año'; Columna.Width := tamColFecha; Columna.Visible := False; {Columna FECHAALTA} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'FECHAALTA'; Columna.Caption := 'Fecha alta'; Columna.Width := tamColFecha; {Columna CODIGOPROVEEDOR} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'CODIGOPROVEEDOR'; Columna.Caption := 'Cód. proveedor'; Columna.Width := tamColCodigo; {Columna NIFCIF} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'NIFCIF'; Columna.Caption := 'NIF/CIF'; Columna.Width := tamColNIFCIF; {Columna NOMBRE} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'NOMBRE'; Columna.Caption := 'Nombre'; Columna.Width := tamColNombre; {Columna IMPORTETOTAL} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'IMPORTETOTAL'; Columna.Caption := 'Importe total'; Columna.Width := tamColPrecio; end; end; procedure TdmTablaAlbaranesProveedor.InicializarGridDetalles(var Grid: TdxDBGrid); var Columna : TdxDBTreeListColumn; begin with Grid do begin DestroyColumns; {Columna CODIGOALBARAN} Columna := CreateColumn(TdxDBTreeListColumn); Columna.Visible := False; Columna.FieldName := 'CODIGOALBARAN'; {Columna NUMCONCEPTO} Columna := CreateColumn(TdxDBTreeListColumn); Columna.Visible := False; Columna.FieldName := 'NUMCONCEPTO'; {Columna CODIGOARTICULO} Columna := CreateColumn(TdxDBTreeListButtonColumn); Columna.FieldName := 'CODIGOARTICULO'; Columna.Caption := 'Cód. material'; Columna.Width := tamColCodigo; {Columna DESCRIPCION} Columna := CreateColumn(TdxDBTreeListButtonColumn); Columna.FieldName := 'DESCRIPCION'; Columna.Caption := 'Descripción'; Columna.Width := tamColDescripcion; {Columna CANTIDAD} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'CANTIDAD'; Columna.Caption := 'Cantidad'; Columna.Width := tamColCantidad; {Columna UNIDADESMEDIDA} Columna := CreateColumn(TdxDBTreeListPickColumn); Columna.FieldName := 'UNIDADESMEDIDA'; Columna.Caption := 'Unid. medida'; (Columna as TdxDBTreeListPickColumn).Items := dmTablaUnidadesMedida.DarUnidadesMedida; Columna.Width := tamColUnidadesMedida; {Columna PRECIOUNIDAD} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'PRECIOUNIDAD'; Columna.Caption := 'Precio unidad'; Columna.Width := tamColPrecio; {Columna TOTAL} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'TOTAL'; Columna.ReadOnly := True; Columna.Caption := 'Precio total'; Columna.Width := tamColPrecio; end; end; procedure TdmTablaAlbaranesProveedor.InicializarTablaAlbaranes( Tabla: TPTabla); begin with Tabla^.Fields do begin if FindField('FECHAALTA') <> NIL then with (FieldByName('FECHAALTA') as TDateField) do begin EditMask := MASK_FECHA; end; if FindField('BASEIMPONIBLE') <> NIL then //with (FieldByName('BASEIMPONIBLE') as TFloatField) do begin with (FieldByName('BASEIMPONIBLE') as TIBBCDField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; if FindField('DESCUENTO') <> NIL then with (FieldByName('DESCUENTO') as TFloatField) do begin DisplayFormat := DISPLAY_DTO; EditFormat := EDIT_DTO; end; if FindField('IMPORTEDESCUENTO') <> NIL then //with (FieldByName('IMPORTEDESCUENTO') as TFloatField) do begin with (FieldByName('IMPORTEDESCUENTO') as TIBBCDField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; if FindField('IVA') <> NIL then with (FieldByName('IVA') as TFloatField) do begin DisplayFormat := DISPLAY_DTO; EditFormat := EDIT_DTO; end; if FindField('IMPORTEIVA') <> NIL then //with (FieldByName('IMPORTEIVA') as TFloatField) do begin with (FieldByName('IMPORTEIVA') as TIBBCDField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; if FindField('IMPORTETOTAL') <> NIL then //with (FieldByName('IMPORTETOTAL') as TFloatField) do begin with (FieldByName('IMPORTETOTAL') as TIBBCDField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; end; end; procedure TdmTablaAlbaranesProveedor.InicializarTablaDetalles( Tabla: TPTabla); begin with Tabla^.Fields do begin with (FieldByName('PRECIOUNIDAD') as TFloatField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; with (FieldByName('TOTAL') as TFloatField) do begin DisplayFormat := DISPLAY_EUROS2; EditFormat := EDIT_EUROS2; end; end; end; procedure TdmTablaAlbaranesProveedor.IniciarSQLAlbaran; begin with sqlInsertarAlbaran do begin Add('insert into ALBARANESPROVEEDOR '); Add('(CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, DESCRIPCION, '); Add('CODIGOPROVEEDOR, NIFCIF, NOMBRE, CALLE, NUMERO, PISO, CODIGOPOSTAL, '); Add('POBLACION, PROVINCIA, PERSONACONTACTO, TELEFONO, FAX, '); Add('BASEIMPONIBLE, DESCUENTO, IVA, IMPORTETOTAL, IMPORTEDESCUENTO, '); Add('IMPORTEIVA)' ); Add('values (:CODIGOEMPRESA, :CODIGO, :FECHAALTA, :USUARIO, '); Add(':DESCRIPCION, :CODIGOPROVEEDOR, :NIFCIF, :NOMBRE, :CALLE, :NUMERO, '); Add(':PISO, :CODIGOPOSTAL, :POBLACION, :PROVINCIA, '); Add(':PERSONACONTACTO, :TELEFONO, :FAX, :BASEIMPONIBLE, '); Add(':DESCUENTO, :IVA, :IMPORTETOTAL, :IMPORTEDESCUENTO, :IMPORTEIVA)'); end; with sqlModificarAlbaran do begin Add('update ALBARANESPROVEEDOR set '); Add('FECHAALTA = :FECHAALTA, '); Add('USUARIO = :USUARIO, '); Add('DESCRIPCION = :DESCRIPCION, '); Add('CODIGOPROVEEDOR = :CODIGOPROVEEDOR, '); Add('NIFCIF = :NIFCIF, '); Add('NOMBRE = :NOMBRE, '); Add('CALLE = :CALLE, '); Add('NUMERO = :NUMERO, '); Add('PISO = :PISO, '); Add('CODIGOPOSTAL = :CODIGOPOSTAL, '); Add('POBLACION = :POBLACION, '); Add('PROVINCIA = :PROVINCIA, '); Add('PERSONACONTACTO = :PERSONACONTACTO, '); Add('TELEFONO = :TELEFONO, '); Add('FAX = :FAX, '); Add('BASEIMPONIBLE = :BASEIMPONIBLE, '); Add('DESCUENTO = :DESCUENTO, '); Add('IMPORTEDESCUENTO = :IMPORTEDESCUENTO, '); Add('IVA = :IVA, '); Add('IMPORTEIVA = :IMPORTEIVA, '); Add('IMPORTETOTAL = :IMPORTETOTAL '); Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)'); end; with sqlEliminarAlbaran do begin Add('delete from ALBARANESPROVEEDOR '); Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)'); end; with sqlConsultarAlbaran do begin Add('select * from ALBARANESPROVEEDOR '); Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)'); end; end; procedure TdmTablaAlbaranesProveedor.IniciarSQLDetalles; begin with sqlInsertarDetalles do begin Add('insert into DETALLESALBARANESPROVEEDOR '); Add('(CODIGOEMPRESA, CODIGOALBARAN, NUMCONCEPTO, CODIGOARTICULO, DESCRIPCION, '); Add('CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, TOTAL) '); Add('values (:CODIGOEMPRESA, :CODIGOALBARAN, :NUMCONCEPTO, :CODIGOARTICULO, '); Add(':DESCRIPCION, :CANTIDAD, :UNIDADESMEDIDA, :PRECIOUNIDAD, :TOTAL)'); end; with sqlModificarDetalles do begin Add('update DETALLESALBARANESPROVEEDOR set '); Add('NUMCONCEPTO = :NUMCONCEPTO, '); Add('CODIGOARTICULO = :CODIGOARTICULO, '); Add('DESCRIPCION = :DESCRIPCION, '); Add('CANTIDAD = :CANTIDAD, '); Add('UNIDADESMEDIDA = :UNIDADESMEDIDA, '); Add('PRECIOUNIDAD = :PRECIOUNIDAD, '); Add('TOTAL = :TOTAL '); Add('where (CODIGOALBARAN = :CODIGOALBARAN) '); Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) '); Add('and (NUMCONCEPTO = :NUMCONCEPTO)'); end; with sqlEliminarDetalles do begin Add('delete from DETALLESALBARANESPROVEEDOR '); Add('where (CODIGOALBARAN = :CODIGOALBARAN) '); Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) '); Add('and (NUMCONCEPTO = :NUMCONCEPTO)'); end; with sqlConsultarDetalles do begin Add('select CODIGOALBARAN, NUMCONCEPTO, CODIGOARTICULO, '); Add('DESCRIPCION, CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, TOTAL '); Add('from DETALLESALBARANESPROVEEDOR '); Add('where (CODIGOALBARAN = :CODIGOALBARAN) '); Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) '); Add('and (NUMCONCEPTO = :NUMCONCEPTO)'); end; end; procedure TdmTablaAlbaranesProveedor.IniciarSQLGrids; begin with sqlConsultarGridAlbaranes do begin Add('select CODIGO, FECHAALTA, CODIGOPROVEEDOR, NIFCIF, '); Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, '); Add('NOMBRE, IMPORTETOTAL'); Add('from ALBARANESPROVEEDOR '); Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) '); Add('order by CODIGO'); end; with sqlConsultarGridAlbaranesPro do begin Add('select CODIGO, FECHAALTA, CODIGOPROVEEDOR, NIFCIF, '); Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, '); Add('NOMBRE, IMPORTETOTAL'); Add('from ALBARANESPROVEEDOR '); Add('where (CODIGOPROVEEDOR = :CODIGOPROVEEDOR) '); Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) '); Add('order by CODIGO'); end; with sqlConsultarGridDetalles do begin Add('select CODIGOEMPRESA, CODIGOALBARAN, NUMCONCEPTO, '); Add('CODIGOARTICULO, DESCRIPCION, '); Add('CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, TOTAL '); Add('from DETALLESALBARANESPROVEEDOR '); Add('where (CODIGOALBARAN = :CODIGOALBARAN) '); Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) '); Add('order by NUMCONCEPTO'); end; end; function TdmTablaAlbaranesProveedor.InsertarContador: boolean; begin Result := GestorContadores.InsertarContador(contAlbaranesProveedor); end; function TdmTablaAlbaranesProveedor.ValidarCodigo(Codigo: String): Boolean; begin Result := GestorContadores.ValidarCodigo(contAlbaranesProveedor, Codigo); end; function TdmTablaAlbaranesProveedor.DarListaAnos(CodigoEmpresa: Integer): TStringList; var oSQL : TIBSQL; Lista : TStringList; begin Lista := TStringList.Create; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select distinct (EXTRACT (YEAR FROM FECHAALTA)) ANO '); SQL.Add('from ALBARANESPROVEEDOR '); SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) '); SQL.Add('order by FECHAALTA desc'); ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa; try Prepare; ExecQuery; Lista.Add(CTE_TODOS); while not EOF do begin Lista.Add(Fields[0].AsString); Next; end; result := Lista; finally Close; Transaction := NIL; Free; end; end; end; end.