{ =============================================================================== 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: 01-10-2001 Versión actual: 1.0.4 Fecha versión actual: 06-03-2004 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 07-04-2002 Cambio de todos los procedimientos en los que se utiliza una transaccion nueva, por una unica transacción. Se han eliminado las funciones que utilizaban transacciones por parametro DarNuevoCodigo, InsertarContador, IncrementarCodigo. 09-05-2002 Cambio de grid en lugar de utilizar UltimDBGrid, utilizaremos dxDBGrid. 27-05-2002 Cambio a un objeto contador (TContadorMovimiento) 06-03-2004 P272. Adaptación a multiempresa. =============================================================================== } unit TablaMovimientos; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, DBTables, DB, IBCustomDataSet, IBSQL, BaseDatos, IBDatabase, dxDBGrid, dxDBCtrl, dxDBTLCL, Mensajes, IB, dbgrids, StrFunc, Contadores; type TDatosMovimiento = class(TPersistent) public Codigo : String; CodigoAlmacen : Integer; CodigoArticulo : String; NombreAlmacen : String; DescripcionArticulo : String; Familia : String; Unidades : String; TipoOperacion : String; TipoMovimiento : String; Cantidad : String; StockNuevo : String; StockAntiguo : String; Fecha : String; Hora : String; Usuario : String; Causa : String; NombreCliente : String; end; type TdmTablaMovimientos = class(TDataModule) private procedure IniciarSQL; public sqlConsultarDetalles : TStrings; sqlConsultarPedido : TStrings; //Metodos que llamaran a contador function DarNuevoCodigo : String; function InsertarContador : boolean; function IncrementarCodigo : boolean; constructor Create (AOwner : TComponent); override; destructor Destroy; override; function DarTiposMovimientos: TStrings; function InsertarMovimiento(Datos: TDatosMovimiento): Boolean; procedure InicializarGridDetalles(var Grid: TdxDBGrid); end; var dmTablaMovimientos: TdmTablaMovimientos; implementation {$R *.DFM} uses Excepciones, RdxGestorContadores, RdxEmpresaActiva; constructor TdmTablaMovimientos.Create(AOwner: TComponent); begin inherited; sqlConsultarDetalles := TStringList.Create; sqlConsultarPedido := TStringList.Create; IniciarSQL; end; destructor TdmTablaMovimientos.Destroy; begin sqlConsultarDetalles.Free; sqlConsultarPedido.Free; inherited; end; procedure TdmTablaMovimientos.IniciarSQL; begin with sqlConsultarDetalles do begin Add('select DPEDPROV.CODIGOPEDIDO, DPEDPROV.CODIGOARTICULO, ART.FAMILIA, '); Add('DPEDPROV.DESCRIPCION, DPEDPROV.UNIDADESMEDIDA, DESTALM.EXISTENCIAS, '); Add('DPEDPROV.CANTIDAD, DESTALM.STOCKMIN, DESTALM.STOCKMAX, DPEDPROV.PENDIENTES, DPEDPROV.NUMCONCEPTO, '); Add('DPEDPROV.PRECIO, DESTALM.PRECIORECEPCION, DESTALM.FECHARECEPCION'); Add('from DETALLESPEDIDOSPROVEEDOR DPEDPROV, ESTADOALMACEN DESTALM, ARTICULOS ART '); Add('where 1 = 2'); end; with sqlConsultarPedido do begin Add('select CODIGO, NOMBRE, NIFCIF, CODIGOALMACEN, FECHARECEPCION '); Add('from PEDIDOSPROVEEDOR '); Add('where (CODIGO = :CODIGO) and '); Add('(CODIGOEMPRESA = :CODIGOEMPRESA)'); end; end; procedure TdmTablaMovimientos.InicializarGridDetalles(var Grid: TdxDBGrid); var Columna : TdxDBTreeListColumn; begin with Grid do begin DestroyColumns; {Columna CODIGO} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'CODIGOPEDIDO'; Columna.Visible := False; {Columna CODIGOARTICULO} Columna := CreateColumn(TdxDBTreeListButtonColumn); Columna.FieldName := 'CODIGOARTICULO'; Columna.Caption := 'Cód. material'; Columna.Width := tamColCodigo2; {Columna FAMILIA} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'FAMILIA'; Columna.Visible := False; {Columna DESCRIPCION} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'DESCRIPCION'; Columna.Caption := 'Descripción de material'; Columna.Width := tamColDescripcion2; {Columna UNIDADES} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'UNIDADESMEDIDA'; Columna.Visible := False; {Columna EXISTENCIAS} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'EXISTENCIAS'; Columna.Caption := 'Existencias'; Columna.Width := tamColExistencias; {Columna CANTIDAD} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'CANTIDAD'; Columna.Caption := 'Cantidad'; Columna.Width := tamColCantidad2; {Columna STOCKMIN} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'STOCKMIN'; Columna.Caption := 'Stock mínimo'; Columna.Width := tamColStockMin; {Columna STOCKMAX} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'STOCKMAX'; Columna.Caption := 'Stock máximo'; Columna.Width := tamColStockMax; {Columna PENDIENTES} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'PENDIENTES'; Columna.Visible := False; {Columna NUMCONCEPTO} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'NUMCONCEPTO'; Columna.Visible := False; {Columna PRECIO} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'PRECIO'; Columna.Caption := 'Precio'; Columna.Visible := False; {Columna PRECIORECEPCION} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'PRECIORECEPCION'; Columna.Caption := 'Precio recepcion'; Columna.Visible := False; {Columna FECHARECEPCION} Columna := CreateColumn(TdxDBTreeListColumn); Columna.FieldName := 'FECHARECEPCION'; Columna.Caption := 'Fecha recepcion'; Columna.Visible := False; end; end; function TdmTablaMovimientos.insertarMovimiento(Datos: TDatosMovimiento): Boolean; {Inserta el articulo dado por parametro en la tabla EstadoAlmacen si algo sale mal devuelve false} var oSQL : TIBSQL; begin Result := False; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('insert into MOVIMIENTOS '); SQL.Add('(CODIGO, CODIGOEMPRESA, CODIGOALMACEN, CODIGOARTICULO, NOMBREALMACEN, DESCRIPCIONARTICULO, '); SQL.Add('FAMILIA, UNIDADES, TIPOOPERACION, TIPOMOVIMIENTO, CANTIDAD, STOCKNUEVO, '); SQL.Add('STOCKANTIGUO, FECHA, HORA, USUARIO, CAUSA, NOMBRECLIENTE) '); SQL.Add('values (:CODIGO, :CODIGOEMPRESA, :CODIGOALMACEN, :CODIGOARTICULO, :NOMBREALMACEN, '); SQL.Add(':DESCRIPCIONARTICULO, :FAMILIA, :UNIDADES, :TIPOOPERACION, '); SQL.Add(':TIPOMOVIMIENTO, :CANTIDAD, :STOCKNUEVO, :STOCKANTIGUO, CURRENT_DATE, '); SQL.Add('CURRENT_TIME, USER, :CAUSA, :NOMBRECLIENTE)'); try ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; ParamByName('CODIGO').AsString := Datos.Codigo; ParamByName('CODIGOALMACEN').AsInteger := Datos.CodigoAlmacen; ParamByName('CODIGOARTICULO').AsString := Datos.CodigoArticulo; ParamByName('NOMBREALMACEN').AsString := Datos.NombreAlmacen; ParamByName('DESCRIPCIONARTICULO').AsString := Datos.DescripcionArticulo; ParamByName('FAMILIA').AsString := Datos.Familia; ParamByName('UNIDADES').AsString := Datos.Unidades; ParamByName('TIPOOPERACION').AsString := Datos.TipoOperacion; ParamByName('TIPOMOVIMIENTO').AsString := Datos.TipoMovimiento; ParamByName('CANTIDAD').AsFloat := StrToFloat(Datos.Cantidad); ParamByName('STOCKNUEVO').AsFloat := StrToFloat(Datos.StockNuevo); ParamByName('STOCKANTIGUO').AsFloat := StrToFloat(Datos.StockAntiguo); ParamByName('CAUSA').AsString := Datos.Causa; ParamByName('NOMBRECLIENTE').AsString := Datos.NombreCliente; Prepare; ExecQuery; Result := True; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaMovimientos.DarNuevoCodigo: String; begin Result := GestorContadores.DarNuevoCodigo(contMovimientos); end; function TdmTablaMovimientos.InsertarContador: boolean; begin Result := GestorContadores.InsertarContador(contMovimientos); end; function TdmTablaMovimientos.darTiposMovimientos: TStrings; var oSQL : TIBSQL; Lista : TStringList; begin oSQL := TIBSQL.Create(Self); Lista := TStringList.Create; with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select DESCRIPCION from TIPOSMOVIMIENTOS'); try Prepare; ExecQuery; while not EOF do begin Lista.Append(Fields[0].AsString); Next; end; Result := Lista; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaMovimientos.IncrementarCodigo: Boolean; begin Result := GestorContadores.IncrementarValor(contMovimientos); end; end.