git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
305 lines
10 KiB
ObjectPascal
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.
|