git-svn-id: https://192.168.0.254/svn/Proyectos.Miguelo_FactuGES/trunk@6 172823e9-465a-9d4b-80ba-0a9f016f4eb1
154 lines
6.7 KiB
ObjectPascal
154 lines
6.7 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;
|
||
protected
|
||
procedure RellenarCabecera(Band: TfrBand); override;
|
||
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';
|
||
Tipo := tiTodo;
|
||
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;
|
||
|
||
procedure TdmInformeEstadoAlmacen.RellenarCabecera(Band: TfrBand);
|
||
var
|
||
iCont : Integer;
|
||
Objeto : TfrView;
|
||
begin
|
||
inherited;
|
||
with Band do
|
||
begin
|
||
for iCont := 0 to Objects.Count - 1 do
|
||
begin
|
||
Objeto := Objects[iCont];
|
||
if ((Objeto is TfrMemoView) and (Objeto.Name = 'CabParametros')) then
|
||
begin
|
||
with (Objeto as TfrMemoView) do
|
||
begin
|
||
Memo.Clear;
|
||
Memo.Add('Almac<61>n: ' + IntToStr(CodigoAlmacen) + ' - ' + NombreAlmacen);
|
||
case Tipo of
|
||
tiTodo : Memo.Add(msgInfIntervaloTodosArt);
|
||
tiPorDescripcion : Memo.Add(SysUtils.Format(msgInfIntervaloDesArt, [FDesIni, FDesFin]));
|
||
tiPorFamilias : Memo.Add(SysUtils.Format(msgInfIntervaloFam, [FFamIni, FFamFin]));
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
end.
|