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