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

305 lines
10 KiB
ObjectPascal
Raw Permalink Normal View History

{
===============================================================================
Copyright (<EFBFBD>) 2001. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero s<EFBFBD>lo podr<EFBFBD> ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los t<EFBFBD>rminos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versi<EFBFBD>n: 01-10-2001
Versi<EFBFBD>n actual: 1.0.4
Fecha versi<EFBFBD>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<EFBFBD>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<EFBFBD>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<63>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.