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

755 lines
24 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.1.0
Fecha versi<EFBFBD>n actual: 06-03-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
12-11-2001 Se ha a<EFBFBD>adido el procedimiento para inicializar el grid
de localizar art<EFBFBD>culos.
27-11-2001 Se ha a<EFBFBD>adido la funcion esAlmacen.
18-01-2002 Ordenar por descripci<EFBFBD>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<EFBFBD>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<EFBFBD>mero total de almacenes dados de alta
en la inicializaci<EFBFBD>n del grid.
06-03-2004 P272. Adaptaci<EFBFBD>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<65>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<61>n/obra';
Columna.Width := 65;
{Columna NOMBRE}
Columna := CreateColumn(TdxDBTreeListColumn);
Columna.FieldName := 'NOMBRE';
Columna.Caption := 'Nombre de almac<61>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.