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

755 lines
24 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.1.0
Fecha versión actual: 06-03-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
12-11-2001 Se ha añadido el procedimiento para inicializar el grid
de localizar artículos.
27-11-2001 Se ha añadido la funcion esAlmacen.
18-01-2002 Ordenar por descripción el grid de almacenes.
01-02-2002 Repaso de orden por descripcion.
24-02-2002 Los procedimientos darAlmacenes, darAlmacenesFisicos y
darAlmacenesObras han sido modificados, ahora los parametros
que se le pasan por parametros se limpian por si contienen
previamente algo.
07-04-2002 Cambio de todos los procedimientos en los que se utiliza
una transaccion nueva, por una unica transacción.
Se ha eliminado el procedomiento sobrecargado ExisteAlmacen que utilizaba una
transaccion pasada por parametro.
27-05-2002 Cambio a un objeto contador (TContadorAlmacen)
16-11-2002 p250. Poner el número total de almacenes dados de alta
en la inicialización del grid.
06-03-2004 P272. Adaptación a multiempresa.
===============================================================================
}
unit TablaAlmacenes;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms,
Dialogs, DBTables, DB, IBCustomDataSet, IBSQL, BaseDatos, IBDatabase,
dxDBGrid, dxDBCtrl, dbgrids, StrFunc, Mensajes, IB, Contadores, dxDBTLCL;
type
TDatosAlmacen = class(TPersistent)
public
CodigoEmpresa : Integer;
Tipo : String;
Codigo : Integer;
Nombre : String;
Calle : String;
Numero : String;
Piso : String;
CodigoPostal : String;
Poblacion : String;
Provincia : String;
Telefono : String;
PersonaContacto : String;
CodigoCliente : String;
end;
type
TdmTablaAlmacenes = class(TDataModule)
private
procedure IniciarSQL;
public
sqlInsertarFisicos : TStrings;
sqlInsertarObras : TStrings;
sqlModificar : TStrings;
sqlConsultar : TStrings;
sqlEliminar : TStrings;
sqlGrid : TStrings;
sqlGridFisicos : TStrings;
sqlGridObras : TStrings;
sqlLocalizarGrid : TStrings;
sqlInsertarPresupuesto : TStrings;
sqlModificarPresupuesto : TStrings;
sqlConsultarPresupuesto : TStrings;
sqlEliminarPresupuesto : TStrings;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
//Metodos que llamaran a contador
function DarNuevoCodigo : Variant;
function IncrementarCodigo: boolean;
function InsertarContador: boolean;
function ValidarCodigo(Codigo : Variant) : Boolean;
function ExisteAlmacen(CodigoEmpresa: Integer; CodigoAlmacen : Variant) : Boolean; overload;
function DarDatosAlmacen(var Datos : TDatosAlmacen) : Boolean;
function EsAlmacen(CodigoEmpresa: Integer; CodigoAlmacen : Integer) : Boolean;
procedure InicializarGridAlmacenes(var Grid: TdxDBGrid);
procedure InicializarGridLocalizar(var Grid: TdxDBGrid);
procedure InicializarGridDetallesPresupuestos(var Grid: TdxDBGrid);
function DarAlmacenes(CodigoEmpresa: Integer): TStrings; overload;
procedure DarAlmacenes(CodigoEmpresa: Integer; var AlmacenCodigo, CodigoAlmacen : TStringList); overload;
procedure DarAlmacenesFisicos(CodigoEmpresa: Integer; var AlmacenCodigo, CodigoAlmacen : TStringList);
procedure DarAlmacenesObras(CodigoEmpresa: Integer; var AlmacenCodigo, CodigoAlmacen : TStringList);
function HayExistenciasEnAlmacen(CodigoEmpresa: Integer; CodigoAlmacen : Integer):Boolean;
function ExistePresupuestoEnObra(CodigoPresupuesto: Variant): Boolean;
end;
var
dmTablaAlmacenes: TdmTablaAlmacenes;
implementation
{$R *.DFM}
uses
Excepciones, RdxGestorContadores, RdxEmpresaActiva;
constructor TdmTablaAlmacenes.Create (AOwner : TComponent);
begin
inherited;
sqlInsertarFisicos := TStringList.Create;
sqlInsertarObras := TStringList.Create;
sqlModificar := TStringList.Create;
sqlConsultar := TStringList.Create;
sqlEliminar := TStringList.Create;
sqlGrid := TStringList.Create;
sqlGridFisicos := TStringList.Create;
sqlGridObras := TStringList.Create;
sqlLocalizarGrid := TStringList.Create;
sqlInsertarPresupuesto := TStringList.Create;
sqlModificarPresupuesto := TStringList.Create;
sqlConsultarPresupuesto := TStringList.Create;
sqlEliminarPresupuesto := TStringList.Create;
IniciarSQL;
end;
destructor TdmTablaAlmacenes.Destroy;
begin
sqlInsertarFisicos.Free;
sqlInsertarObras.Free;
sqlModificar.Free;
sqlConsultar.Free;
sqlEliminar.Free;
sqlGrid.Free;
sqlGridFisicos.Free;
sqlGridObras.Free;
sqlLocalizarGrid.Free;
sqlInsertarPresupuesto.Free;
sqlModificarPresupuesto.Free;
sqlConsultarPresupuesto.Free;
sqlEliminarPresupuesto.Free;
inherited;
end;
procedure TdmTablaAlmacenes.IniciarSQL;
begin
with sqlInsertarFisicos do
begin
Add('insert into ALMACENES ');
Add('(CODIGOEMPRESA, TIPO, CODIGO, NOMBRE, CALLE, NUMERO, PISO, ');
Add('CODIGOPOSTAL, POBLACION, PROVINCIA, TELEFONO, ');
Add('PERSONACONTACTO, CODIGOCLIENTE) ');
Add('values (:CODIGOEMPRESA, ''F'', :CODIGO, :NOMBRE, :CALLE, :NUMERO, :PISO, ');
Add(':CODIGOPOSTAL, :POBLACION, :PROVINCIA, :TELEFONO, ');
Add(':PERSONACONTACTO, :CODIGOCLIENTE)');
end;
with sqlInsertarObras do
begin
Add('insert into ALMACENES ');
Add('(CODIGOEMPRESA, TIPO, CODIGO, NOMBRE, CALLE, NUMERO, PISO, ');
Add('CODIGOPOSTAL, POBLACION, PROVINCIA, TELEFONO, ');
Add('PERSONACONTACTO, CODIGOCLIENTE) ');
Add('values (:CODIGOEMPRESA, ''O'', :CODIGO, :NOMBRE, :CALLE, :NUMERO, :PISO, ');
Add(':CODIGOPOSTAL, :POBLACION, :PROVINCIA, :TELEFONO, ');
Add(':PERSONACONTACTO, :CODIGOCLIENTE)');
end;
with sqlModificar do
begin
Add('update ALMACENES set ');
Add('NOMBRE = :NOMBRE, ');
Add('CALLE = :CALLE, ');
Add('NUMERO = :NUMERO, ');
Add('PISO = :PISO, ');
Add('CODIGOPOSTAL = :CODIGOPOSTAL, ');
Add('POBLACION = :POBLACION, ');
Add('PROVINCIA = :PROVINCIA, ');
Add('TELEFONO = :TELEFONO, ');
Add('PERSONACONTACTO = :PERSONACONTACTO, ');
Add('CODIGOCLIENTE = :CODIGOCLIENTE ');
Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
end;
with sqlEliminar do
begin
Add('delete from ALMACENES ');
Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
end;
with sqlConsultar do
begin
Add('select ALMACENES.*, CLIENTES.NOMBRE NOMBRECLIENTE, CLIENTES.NIFCIF NIFCIF ');
Add('from ALMACENES, CLIENTES ');
Add('where (ALMACENES.CODIGO = :CODIGO) and ');
Add('(ALMACENES.CODIGOEMPRESA = :CODIGOEMPRESA) and ');
Add('(ALMACENES.CODIGOCLIENTE = CLIENTES.CODIGO) ');
Add('union ');
Add('select ALMACENES.*, cast('''' as varchar(100)), cast('''' as varchar(10)) ');
Add('from ALMACENES ');
Add('where (ALMACENES.CODIGO = :CODIGO) and ');
Add('(ALMACENES.CODIGOEMPRESA = :CODIGOEMPRESA) and ');
Add('(CODIGOCLIENTE is null)');
end;
with sqlGrid do
begin
Add('select ALMACENES.CODIGO as "ALMACENES.CODIGO", ');
Add('ALMACENES.NOMBRE as "ALMACENES.NOMBRE", TELEFONO, ');
Add('ALMACENES.PERSONACONTACTO as "ALMACENES.PERSONACONTACTO", ');
Add('CLIENTES.CODIGO as "CLIENTES.CODIGO", ');
Add('CLIENTES.NOMBRE AS "CLIENTES.NOMBRE", NIFCIF ');
Add('from ALMACENES left join CLIENTES ');
Add('on ALMACENES.CODIGOCLIENTE = CLIENTES.CODIGO ');
Add('where (ALMACENES.CODIGOEMPRESA = :CODIGOEMPRESA)');
Add('order by ALMACENES.NOMBRE');
end;
with sqlGridFisicos do
begin
Add('select ALMACENES.CODIGO as "ALMACENES.CODIGO", ');
Add('ALMACENES.NOMBRE as "ALMACENES.NOMBRE", TELEFONO, ');
Add('ALMACENES.PERSONACONTACTO as "ALMACENES.PERSONACONTACTO", ');
Add('CLIENTES.CODIGO as "CLIENTES.CODIGO", ');
Add('CLIENTES.NOMBRE AS "CLIENTES.NOMBRE", NIFCIF ');
Add('from ALMACENES left join CLIENTES ');
Add('on ALMACENES.CODIGOCLIENTE = CLIENTES.CODIGO ');
Add('where (ALMACENES.TIPO = ''F'') and (ALMACENES.CODIGOEMPRESA = :CODIGOEMPRESA)');
Add('order by ALMACENES.NOMBRE');
end;
with sqlGridObras do
begin
Add('select ALMACENES.CODIGO as "ALMACENES.CODIGO", ');
Add('ALMACENES.NOMBRE as "ALMACENES.NOMBRE", TELEFONO, ');
Add('ALMACENES.PERSONACONTACTO as "ALMACENES.PERSONACONTACTO", ');
Add('CLIENTES.CODIGO as "CLIENTES.CODIGO", ');
Add('CLIENTES.NOMBRE AS "CLIENTES.NOMBRE", NIFCIF ');
Add('from ALMACENES left join CLIENTES ');
Add('on (ALMACENES.CODIGOCLIENTE = CLIENTES.CODIGO) ');
Add('where (TIPO = ''O'') and (ALMACENES.CODIGOEMPRESA = :CODIGOEMPRESA)');
Add('order by ALMACENES.NOMBRE');
end;
with sqlLocalizarGrid do
begin
Add('select AL.CODIGO, AL.NOMBRE, AL.CALLE, EA.EXISTENCIAS ');
Add('from ALMACENES AL, ESTADOALMACEN EA ');
Add('where (AL.CODIGOEMPRESA = :CODIGOEMPRESA) ');
Add('and (EA.CODIGOEMPRESA = AL.CODIGOEMPRESA) ');
Add('and (EA.CODIGOARTICULO = :CODIGOARTICULO) ');
Add('and AL.CODIGO in (select EA2.CODIGOALMACEN ');
Add('from ESTADOALMACEN EA2 ');
Add('where (EA2.CODIGOARTICULO = EA.CODIGOARTICULO) and ');
Add('(EA2.CODIGOEMPRESA = EA.CODIGOEMPRESA)) ');
Add('and (EA.CODIGOALMACEN = AL.CODIGO) ');
Add('order by AL.NOMBRE ');
end;
with sqlInsertarPresupuesto do
begin
Add('insert into OBRASPRESUPUESTOS ');
Add('(CODIGOEMPRESA, CODIGOALMACEN, CODIGOPRESUPUESTO) ');
Add('values (:CODIGOEMPRESA, :CODIGOALMACEN, :CODIGOPRESUPUESTO) ');
end;
with sqlModificarPresupuesto do
begin
Add('update OBRASPRESUPUESTOS set');
Add('CODIGOEMPRESA = :CODIGOEMPRESA,');
Add('CODIGOALMACEN = :CODIGOALMACEN,');
Add('CODIGOPRESUPUESTO = :CODIGOPRESUPUESTO');
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA)');
Add('and (CODIGOALMACEN = :CODIGOALMACEN)');
Add('and (CODIGOPRESUPUESTO = :CODIGOPRESUPUESTO)');
end;
with sqlConsultarPresupuesto do
begin
Add('select * from OBRASPRESUPUESTOS ');
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA)');
Add('and (CODIGOALMACEN = :CODIGOALMACEN)');
end;
with sqlEliminarPresupuesto do
begin
Add('delete from OBRASPRESUPUESTOS ');
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA)');
Add('and (CODIGOALMACEN = :CODIGOALMACEN)');
Add('and (CODIGOPRESUPUESTO = :CODIGOPRESUPUESTO)');
end;
end;
function TdmTablaAlmacenes.DarNuevoCodigo : Variant;
begin
Result := GestorContadores.DarNuevoCodigo(contAlmacenes);
end;
function TdmTablaAlmacenes.IncrementarCodigo: boolean;
begin
Result := GestorContadores.IncrementarValor(contAlmacenes);
end;
function TdmTablaAlmacenes.validarCodigo(Codigo : Variant) : Boolean;
begin
Result := GestorContadores.ValidarCodigo(contAlmacenes, Codigo);
end;
function TdmTablaAlmacenes.InsertarContador: boolean;
begin
Result := GestorContadores.InsertarContador(contAlmacenes);
end;
function TdmTablaAlmacenes.ExisteAlmacen(CodigoEmpresa: Integer; CodigoAlmacen: Variant): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGO ');
SQL.Add('from ALMACENES ');
SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
ParamByName('CODIGO').AsInteger := CodigoAlmacen;
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
try
Prepare;
ExecQuery;
if (RecordCount > 0) then
Result := True;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaAlmacenes.DarDatosAlmacen(var Datos: TDatosAlmacen): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select * from ALMACENES ');
SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
ParamByName('CODIGO').AsInteger := Datos.Codigo;
ParamByName('CODIGOEMPRESA').AsInteger := Datos.CodigoEmpresa;
try
Prepare;
ExecQuery;
if (RecordCount > 0) then
begin
with Datos do
begin
Tipo := FieldByName('TIPO').AsString;
Nombre := FieldByName('NOMBRE').AsString;
Calle := FieldByName('CALLE').AsString;
Numero := FieldByName('NUMERO').AsString;
Piso := FieldByName('PISO').AsString;
CodigoPostal := FieldByName('CODIGOPOSTAL').AsString;
Poblacion := FieldByName('POBLACION').AsString;
Provincia := FieldByName('PROVINCIA').AsString;
Telefono := FieldByName('TELEFONO').AsString;
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
CodigoCliente := FieldByName('CODIGOCLIENTE').AsString;
Result := True;
end;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaAlmacenes.InicializarGridAlmacenes(var Grid: TdxDBGrid);
var
Columna : TdxDBTreeListColumn;
begin
with Grid do begin
DestroyColumns;
ShowSummaryFooter := True;
{Columna CODIGO}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'ALMACENES.CODIGO';
Columna.Caption := 'Código';
Columna.Width := tamColCodigo2;
Columna.SummaryFooterType := cstCount;
Columna.SummaryFooterFormat := 'Total: 0 almacenes';
{Columna NOMBRE}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'ALMACENES.NOMBRE';
Columna.Caption := 'Nombre';
Columna.Width := tamColDescripcion3;
{Columna TELEFONO}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'TELEFONO';
Columna.Caption := 'Teléfono';
Columna.Width := tamColTelefono;
{Columna PERSONACONTACTO}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'ALMACENES.PERSONACONTACTO';
Columna.Caption := 'Persona de contacto';
Columna.Width := tamColDescripcion3;
{Columna CODIGOCLIENTE}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'CODIGOCLIENTE';
Columna.Visible := False;
{Columna NOMBRECLIENTE}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'CLIENTES.NOMBRE';
Columna.Caption := 'Cliente asociado';
Columna.Width := tamColDescripcion3;
{Columna NIFCIF}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'NIFCIF';
Columna.Visible := False;
end;
end;
procedure TdmTablaAlmacenes.DarAlmacenes(CodigoEmpresa: Integer; var AlmacenCodigo, CodigoAlmacen : TStringList);
var
oSQL : TIBSQL;
begin
if (AlmacenCodigo = nil) or (CodigoAlmacen = nil) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGO, NOMBRE from ALMACENES');
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
SQL.Add('order by NOMBRE');
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
try
Prepare;
ExecQuery;
//Limpiamos los valores que tubieran antes
AlmacenCodigo.Clear;
CodigoAlmacen.Clear;
while not EOF do
begin
AlmacenCodigo.Values[FieldByName('NOMBRE').AsString] := FieldByName('CODIGO').AsString;
CodigoAlmacen.Values[FieldByName('CODIGO').AsString] := FieldByName('NOMBRE').AsString;
Next;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaAlmacenes.DarAlmacenesFisicos (CodigoEmpresa: Integer; var AlmacenCodigo, CodigoAlmacen : TStringList);
var
oSQL : TIBSQL;
begin
if (AlmacenCodigo = nil) or (CodigoAlmacen = nil) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGO, NOMBRE from ALMACENES');
SQL.Add('where (TIPO = ''F'') ');
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
SQL.Add('order by NOMBRE');
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
try
Prepare;
ExecQuery;
//Limpiamos los valores que tubieran antes
AlmacenCodigo.Clear;
CodigoAlmacen.Clear;
while not EOF do
begin
AlmacenCodigo.Values[FieldByName('NOMBRE').AsString] := FieldByName('CODIGO').AsString;
CodigoAlmacen.Values[FieldByName('CODIGO').AsString] := FieldByName('NOMBRE').AsString;
Next;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaAlmacenes.darAlmacenesObras (CodigoEmpresa: Integer; var AlmacenCodigo, CodigoAlmacen : TStringList);
var
oSQL : TIBSQL;
begin
if (AlmacenCodigo = nil) or (CodigoAlmacen = nil) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGO, NOMBRE from ALMACENES');
SQL.Add('where (TIPO = ''O'') ');
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
SQL.Add('order by NOMBRE');
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
try
Prepare;
ExecQuery;
//Limpiamos los valores que tubieran antes
AlmacenCodigo.Clear;
CodigoAlmacen.Clear;
while not EOF do
begin
AlmacenCodigo.Values[FieldByName('NOMBRE').AsString] := FieldByName('CODIGO').AsString;
CodigoAlmacen.Values[FieldByName('CODIGO').AsString] := FieldByName('NOMBRE').AsString;
Next;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaAlmacenes.DarAlmacenes(CodigoEmpresa: Integer): TStrings;
var
oSQL : TIBSQL;
Lista : TStringList;
begin
Lista := TStringList.Create;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select NOMBRE from ALMACENES');
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
SQL.Add('order by NOMBRE');
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
try
Prepare;
ExecQuery;
while not EOF do begin
Lista.Add(Fields[0].AsString);
Next;
end;
result := Lista;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaAlmacenes.HayExistenciasEnAlmacen(CodigoEmpresa: Integer;
CodigoAlmacen: Integer): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select sum(EXISTENCIAS) ');
SQL.Add('from ESTADOALMACEN ');
SQL.Add('where (CODIGOALMACEN = :CODIGOALMACEN) ');
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
SQL.Add('group by CODIGOALMACEN ');
ParamByName('CODIGOALMACEN').AsInteger := CodigoAlmacen;
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
try
Prepare;
ExecQuery;
if RecordCount <> 0 then
if Fields[0].AsString <> '0' then
Result := True;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaAlmacenes.InicializarGridLocalizar(var Grid: TdxDBGrid);
var
Columna : TdxDBTreeListColumn;
begin
with Grid do begin
DestroyColumns;
{Columna CODIGO}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'CODIGO';
Columna.Caption := 'Cód. almacén/obra';
Columna.Width := 65;
{Columna NOMBRE}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'NOMBRE';
Columna.Caption := 'Nombre de almacén/obra';
Columna.Width := 150;
{Columna CALLE}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'CALLE';
Columna.Caption := 'Calle';
Columna.Width := 150;
{Columna EXISTENCIAS}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'EXISTENCIAS';
Columna.Caption := 'Existencias';
Columna.Width := 65;
end;
end;
function TdmTablaAlmacenes.EsAlmacen(CodigoEmpresa: Integer; CodigoAlmacen: Integer): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
if EsCadenaVacia(CodigoAlmacen) then
Exit;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select * from ALMACENES ');
SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
SQL.Add('and (TIPO = ''F'') ');
ParamByName('CODIGO').AsInteger := CodigoAlmacen;
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
try
Prepare;
ExecQuery;
if (RecordCount > 0) then
Result := True;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaAlmacenes.InicializarGridDetallesPresupuestos(
var Grid: TdxDBGrid);
var
Columna : TdxDBTreeListColumn;
begin
with Grid do begin
DestroyColumns;
{Columna CODIGOEMPRESA}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.Visible := False;
Columna.FieldName := 'CODIGOEMPRESA';
{Columna CODIGOALMACEN}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.Visible := False;
Columna.FieldName := 'CODIGOALMACEN';
{Columna CODIGOPRESUPUESTO}
Columna := CreateColumn(TdxDBTreeListButtonColumn);
Columna.FieldName := 'CODIGOPRESUPUESTO';
Columna.Caption := 'Cód. presupuesto';
Columna.Width := tamColCodigo;
Columna.ReadOnly := True;
end;
end;
function TdmTablaAlmacenes.ExistePresupuestoEnObra(
CodigoPresupuesto: Variant): Boolean;
var
oSQL : TIBSQL;
begin
Result := False;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGOALMACEN ');
SQL.Add('from OBRASPRESUPUESTOS ');
SQL.Add('where CODIGOEMPRESA = :CODIGOEMPRESA ');
SQL.Add('and CODIGOPRESUPUESTO = :CODIGOPRESUPUESTO ');
try
ParamByName('CODIGOEMPRESA').AsString := EmpresaActiva.Codigo;
ParamByName('CODIGOPRESUPUESTO').AsString := CodigoPresupuesto;
Prepare;
ExecQuery;
Result := RecordCount <> 0;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
end.