This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/BaseDatos/TablaMovimientos.pas
2007-06-21 15:47:20 +00:00

305 lines
10 KiB
ObjectPascal

{
===============================================================================
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.