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