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/Informes/InformeEstadoAlmacen.pas
2007-06-21 15:47:20 +00:00

141 lines
6.4 KiB
ObjectPascal

unit InformeEstadoAlmacen;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
InformeBase, FR_IBXDB, FR_Shape, FR_Class, Db, IBCustomDataSet, IBQuery,
IBDatabase, FR_DSet, FR_DBSet, Tipos;
type
TdmInformeEstadoAlmacen = class(TdmInformeBase)
TablaEstado: TIBQuery;
frdsTablaEstado: TfrDBDataSet;
private
FAlmacen: Integer;
FFamIni: string;
FFamFin: string;
FNombreAlmacen: string;
FTipo: TTipoInforme;
FDesIni: string;
FDesFin: string;
procedure InformeGetParametersText(Memo : TStringList);
protected
procedure PrepararConsultas; override;
public
constructor Create(AOwner: TComponent); override;
published
property Tipo : TTipoInforme read FTipo write FTipo;
property DescripcionIni : string read FDesIni write FDesIni;
property DescripcionFin : string read FDesFin write FDesFin;
property FamiliaIni : string read FFamIni write FFamIni;
property FamiliaFin : string read FFamFin write FFamFin;
property CodigoAlmacen : Integer read FAlmacen write FAlmacen;
property NombreAlmacen : string read FNombreAlmacen write FNombreAlmacen;
end;
var
dmInformeEstadoAlmacen: TdmInformeEstadoAlmacen;
implementation
{$R *.DFM}
{ TdmInformeEstadoAlmacen }
uses
RdxEmpresaActiva, Literales;
constructor TdmInformeEstadoAlmacen.Create(AOwner: TComponent);
begin
inherited;
FNombreInforme := 'ListadoEstadoAlmacen.frf';
OnGetParametersText := InformeGetParametersText;
Tipo := tiTodo;
end;
procedure TdmInformeEstadoAlmacen.InformeGetParametersText(
Memo: TStringList);
begin
with Memo do
begin
Add('Almacén: ' + IntToStr(CodigoAlmacen) + ' - ' + NombreAlmacen);
case Tipo of
tiTodo : Add(msgInfIntervaloTodosArt);
tiPorDescripcion : Add(SysUtils.Format(msgInfIntervaloDesArt, [FDesIni, FDesFin]));
tiPorFamilias : Add(SysUtils.Format(msgInfIntervaloFam, [FFamIni, FFamFin]));
end;
end;
end;
procedure TdmInformeEstadoAlmacen.PrepararConsultas;
begin
TablaEstado.Database := FBaseDatos;
TablaEstado.Transaction := FTransaccion;
with TablaEstado.SQL do
begin
Clear;
case Tipo of
tiTodo : begin
Add('select distinct E.CODIGOARTICULO, A.DESCRIPCION, E.EXISTENCIAS, ');
Add('E.STOCKMIN, E.STOCKMAX, sum(PENDIENTES) as "PENDIENTE" ');
Add('from ARTICULOS A, ESTADOALMACEN E ');
Add('left outer join PEDIDOSPROVEEDOR P ');
Add('on (P.CODIGOALMACEN = E.CODIGOALMACEN and P.CODIGOEMPRESA = E.CODIGOEMPRESA) ');
Add('left outer join DETALLESPEDIDOSPROVEEDOR D ');
Add('on ((D.CODIGOPEDIDO = P.CODIGO) and (D.CODIGOARTICULO = E.CODIGOARTICULO) and ');
Add('(D.CODIGOEMPRESA = P.CODIGOEMPRESA)) ');
Add('where E.CODIGOEMPRESA = :CODIGOEMPRESA ');
Add('and E.CODIGOALMACEN = :CODIGOALMACEN ');
Add('and A.CODIGO = E.CODIGOARTICULO ');
Add('group by E.CODIGOARTICULO, A.DESCRIPCION, E.EXISTENCIAS, ');
Add('E.STOCKMIN, E.STOCKMAX ');
Add('order by E.CODIGOARTICULO ');
end;
tiPorDescripcion: begin
Add('select distinct E.CODIGOARTICULO, A.DESCRIPCION, E.EXISTENCIAS, ');
Add('E.STOCKMIN, E.STOCKMAX, sum(PENDIENTES) as "PENDIENTE" ');
Add('from ARTICULOS A, ESTADOALMACEN E ');
Add('left outer join PEDIDOSPROVEEDOR P ');
Add('on (P.CODIGOALMACEN = E.CODIGOALMACEN and P.CODIGOEMPRESA = E.CODIGOEMPRESA) ');
Add('left outer join DETALLESPEDIDOSPROVEEDOR D ');
Add('on ((D.CODIGOPEDIDO = P.CODIGO) and (D.CODIGOARTICULO = E.CODIGOARTICULO) and ');
Add('(D.CODIGOEMPRESA = P.CODIGOEMPRESA)) ');
Add('where E.CODIGOEMPRESA = :CODIGOEMPRESA ');
Add('and E.CODIGOALMACEN = :CODIGOALMACEN ');
Add('and A.CODIGO = E.CODIGOARTICULO ');
Add('and upper(A.DESCRIPCION) between upper(:DESCRIPCIONINI) and upper(:DESCRIPCIONFIN) ');
Add('group by E.CODIGOARTICULO, A.DESCRIPCION, E.EXISTENCIAS, ');
Add('E.STOCKMIN, E.STOCKMAX ');
Add('order by E.CODIGOARTICULO ');
TablaEstado.ParamByName('DESCRIPCIONINI').AsString := FDesIni;
TablaEstado.ParamByName('DESCRIPCIONFIN').AsString := FDesFin;
end;
tiPorFamilias : begin
Add('select distinct E.CODIGOARTICULO, A.DESCRIPCION, E.EXISTENCIAS, ');
Add('E.STOCKMIN, E.STOCKMAX, sum(PENDIENTES) as "PENDIENTE" ');
Add('from ARTICULOS A, ESTADOALMACEN E ');
Add('left outer join PEDIDOSPROVEEDOR P ');
Add('on (P.CODIGOALMACEN = E.CODIGOALMACEN and P.CODIGOEMPRESA = E.CODIGOEMPRESA) ');
Add('left outer join DETALLESPEDIDOSPROVEEDOR D ');
Add('on ((D.CODIGOPEDIDO = P.CODIGO) and (D.CODIGOARTICULO = E.CODIGOARTICULO) and ');
Add('(D.CODIGOEMPRESA = P.CODIGOEMPRESA)) ');
Add('where E.CODIGOEMPRESA = :CODIGOEMPRESA ');
Add('and E.CODIGOALMACEN = :CODIGOALMACEN ');
Add('and A.FAMILIA between :FAMILIAINI and :FAMILIAFIN ');
Add('and A.CODIGO = E.CODIGOARTICULO ');
Add('group by E.CODIGOARTICULO, A.DESCRIPCION, E.EXISTENCIAS, ');
Add('E.STOCKMIN, E.STOCKMAX ');
Add('order by E.CODIGOARTICULO ');
TablaEstado.ParamByName('FAMILIAINI').AsString := FFamIni;
TablaEstado.ParamByName('FAMILIAFIN').AsString := FFamFin;
end;
end;
TablaEstado.ParambyName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
TablaEstado.ParambyName('CODIGOALMACEN').AsInteger := CodigoAlmacen;
end;
end;
end.