git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
1281 lines
42 KiB
ObjectPascal
1281 lines
42 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.4
|
|
Fecha versión actual: 06-03-2004
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
20-10-2001 Cambiado el método 'FacturarPedido' para que compruebe antes
|
|
si ese pedido ya está facturado.
|
|
|
|
20-10-2001 Se ha añadido la función 'DarSituación'.
|
|
|
|
20-10-2001 Añadir la columna 'Nombre de almacén' a la lista de pedidos.
|
|
|
|
21-10-2001 La sentencia UPDATE de pedidos tenía para persona de contacto
|
|
del proveedor y para persona de contacto del almacén la misma
|
|
variable host, por lo que al actualizar un pedido se ponia
|
|
el mismo nombre en los dos campos.
|
|
|
|
02-11-2001 Se ha eliminado la columna FACTURADO por CODIGOFACTURA.
|
|
|
|
10-11-2001 Se han eliminado las DB_KEYS.
|
|
|
|
27-11-2001 Se han mejorado los procedimientos de devolver y recibir pedidos
|
|
obligando a que la situacion sea la idonea.
|
|
|
|
27-11-2001 En la columna 'Unid. medida' aparece una lista desplegable.
|
|
|
|
12-01-2002 Añadido el cliente final a los pedidos de proveedor.
|
|
|
|
22-01-2002 Se han cambiado las SQL para que la columna PENDIENTES no
|
|
dependa directamente de CANTIDAD. Es para permitir modificar
|
|
un pedido parcialmente recibido.
|
|
|
|
07-04-2002 Adaptar todas las funciones a la transacción única.
|
|
|
|
05-05-2002 Adaptación al grid 'TdxDBGrid'.
|
|
|
|
27-05-2002 Cambio a un objeto contador (TContadorPedidoProveedor)
|
|
|
|
16-11-2002 p250. Poner el número total de pedidos dados de alta
|
|
en la inicialización del grid.
|
|
|
|
08-04-2003 P263. Agrupar por años los pedidos, nueva función DarListaAnos.
|
|
|
|
06-03-2004 P272. Adaptación a multiempresa.
|
|
===============================================================================
|
|
}
|
|
|
|
unit TablaPedidosProveedor;
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, classes, forms, IB, IBSQL, IBDatabase, BaseDatos, dxDBGrid,
|
|
Contadores;
|
|
|
|
type
|
|
TDatosPedidoProveedor = class(TPersistent)
|
|
public
|
|
CodigoEmpresa : Integer;
|
|
Codigo : String;
|
|
FechaAlta : String;
|
|
FechaEmision : String;
|
|
FechaRecepcion : String;
|
|
Situacion : String;
|
|
Usuario : String;
|
|
Notas : String;
|
|
CodigoProveedor : String;
|
|
NifCif : String;
|
|
Nombre : String;
|
|
Fax : String;
|
|
PersonaContacto : String;
|
|
CodigoCliente : String;
|
|
CodigoAlmacen : String;
|
|
NombreAlmacen : String;
|
|
CalleAlmacen : String;
|
|
NumeroAlmacen : String;
|
|
PisoAlmacen : String;
|
|
CodigoPostalAlmacen : String;
|
|
PoblacionAlmacen : String;
|
|
ProvinciaAlmacen : String;
|
|
PersonaContactoAlmacen : String;
|
|
ImporteTotal : String;
|
|
CodigoFactura : String;
|
|
end;
|
|
|
|
TDatosDetallePedidoProveedor = class(TPersistent)
|
|
public
|
|
CodigoEmpresa : Integer;
|
|
CodigoPedido : String;
|
|
NumConcepto : Integer;
|
|
CodigoArticulo : String;
|
|
RefProveedor : String;
|
|
RefFabricante : String;
|
|
Descripcion : String;
|
|
Cantidad : String;
|
|
Precio : String;
|
|
Descuento : String;
|
|
Total : String;
|
|
Pendientes : String;
|
|
end;
|
|
|
|
TdmTablaPedidosProveedor = class(TDataModule)
|
|
private
|
|
procedure IniciarSQLPedido;
|
|
procedure IniciarSQLDetalles;
|
|
procedure IniciarSQLGrids;
|
|
public
|
|
sqlInsertarPedido : TStrings;
|
|
sqlModificarPedido : TStrings;
|
|
sqlConsultarPedido : TStrings;
|
|
sqlEliminarPedido : TStrings;
|
|
sqlConsultarGridPedidos : TStrings;
|
|
sqlConsultarGridPedidosProv : TStrings;
|
|
sqlConsultarGridPedidosRecibir : TStrings;
|
|
sqlConsultarGridPedidosDevolver : TStrings;
|
|
sqlConsultarGridPedidosFacturar : TStrings;
|
|
|
|
sqlInsertarDetalles : TStrings;
|
|
sqlModificarDetalles : TStrings;
|
|
sqlConsultarDetalles : TStrings;
|
|
sqlEliminarDetalles : TStrings;
|
|
sqlConsultarGridDetalles : TStrings;
|
|
|
|
//Metodos que llamaran a contador
|
|
function DarNuevoCodigo : String;
|
|
function InsertarContador : boolean;
|
|
function IncrementarCodigo : boolean;
|
|
function ValidarCodigo(Codigo : String) : Boolean;
|
|
function FormatearCodigo(Codigo : String) : String;
|
|
|
|
function DarDatosPedido(Pedido: TDatosPedidoProveedor): Boolean;
|
|
function ExisteCodigo(CodigoEmpresa: Integer; Codigo : String) : Boolean;
|
|
function EmitirPedido(CodigoEmpresa : Integer; Codigo: String;
|
|
FechaEmision: TDateTime): Boolean;
|
|
function CancelarPedido(CodigoEmpresa : Integer; Codigo : String) : Boolean;
|
|
function FacturarPedido(CodigoEmpresa : Integer; CodigoPedido,
|
|
CodigoFactura: String) : boolean;
|
|
function NoFacturarPedido(CodigoEmpresa : Integer; CodigoPedido: String) : boolean;
|
|
function PedidoFacturado(CodigoEmpresa : Integer; CodigoPedido: String): boolean;
|
|
function DevolverPedido(CodigoEmpresa : Integer; CodigoPedido, Fecha: String): boolean;
|
|
function BloquearPedido(CodigoEmpresa : Integer; CodigoPedido, Fecha : String): boolean;
|
|
function RecibirTotalmentePedido(CodigoEmpresa : Integer; CodigoPedido, Fecha : String): boolean;
|
|
function RecibirParcialmentePedido(CodigoEmpresa : Integer; CodigoPedido, Fecha : String): boolean;
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
procedure InicializarGridDetalles(var Grid: TdxDBGrid);
|
|
procedure InicializarGridPedidos(var Grid: TdxDBGrid);
|
|
procedure InicializarTablaPedidos(Tabla: TPTabla);
|
|
procedure InicializarTablaDetalles(Tabla: TPTabla);
|
|
function DarSituaciones : TStrings;
|
|
|
|
function ModificarUnidadesPendientesArticulo(Datos : TDatosDetallePedidoProveedor): Boolean;
|
|
function DarUnidadesPendientes(CodigoEmpresa: Integer; CodigoPedido: String): String;
|
|
function DarSituacion(CodigoEmpresa: Integer; CodigoPedido : String) : String;
|
|
function ExisteArticuloEnPedido(CodigoEmpresa: Integer; CodigoArticulo: String): Boolean;
|
|
function ExisteAlmacenEnPedido(CodigoEmpresa: Integer; CodigoAlmacen: String;
|
|
var CodigoPedido, Situacion : String): Boolean;
|
|
function DarListaAnos(CodigoEmpresa : Integer): TStringList;
|
|
end;
|
|
|
|
var
|
|
dmTablaPedidosProveedor: TdmTablaPedidosProveedor;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
Mensajes, db, dbgrids, StrFunc, Excepciones, TablaUnidadesMedida,
|
|
dxDBCtrl, dxDBTLCL, IBCustomDataSet, dxTL, Constantes, Literales,
|
|
RdxGestorContadores;
|
|
|
|
constructor TdmTablaPedidosProveedor.Create (AOwner : TComponent);
|
|
begin
|
|
inherited;
|
|
{ Cabecera }
|
|
sqlInsertarPedido := TStringList.Create;
|
|
sqlModificarPedido := TStringList.Create;
|
|
sqlConsultarPedido := TStringList.Create;
|
|
sqlEliminarPedido := TStringList.Create;
|
|
|
|
{ Detalles }
|
|
sqlInsertarDetalles := TStringList.Create;
|
|
sqlModificarDetalles := TStringList.Create;
|
|
sqlConsultarDetalles := TStringList.Create;
|
|
sqlEliminarDetalles := TStringList.Create;
|
|
|
|
{ Grids }
|
|
sqlConsultarGridPedidos := TStringList.Create;
|
|
sqlConsultarGridPedidosProv := TStringList.Create;
|
|
sqlConsultarGridDetalles := TStringList.Create;
|
|
sqlConsultarGridPedidosRecibir := TStringList.Create;
|
|
sqlConsultarGridPedidosDevolver := TStringList.Create;
|
|
sqlConsultarGridPedidosFacturar := TStringList.Create;
|
|
|
|
IniciarSQLPedido;
|
|
IniciarSQLDetalles;
|
|
IniciarSQLGrids;
|
|
end;
|
|
|
|
destructor TdmTablaPedidosProveedor.Destroy;
|
|
begin
|
|
{ Cabecera }
|
|
sqlInsertarPedido.Free;
|
|
sqlModificarPedido.Free;
|
|
sqlConsultarPedido.Free;
|
|
sqlEliminarPedido.Free;
|
|
|
|
{ Detalles }
|
|
sqlInsertarDetalles.Free;
|
|
sqlModificarDetalles.Free;
|
|
sqlConsultarDetalles.Free;
|
|
sqlEliminarDetalles.Free;
|
|
|
|
|
|
{ Grids }
|
|
sqlConsultarGridPedidos.Free;
|
|
sqlConsultarGridPedidosProv.Free;
|
|
sqlConsultarGridDetalles.Free;
|
|
sqlConsultarGridPedidosRecibir.Free;
|
|
sqlConsultarGridPedidosDevolver.Free;
|
|
sqlConsultarGridPedidosFacturar.Free;
|
|
|
|
inherited;
|
|
end;
|
|
|
|
procedure TdmTablaPedidosProveedor.IniciarSQLPedido;
|
|
begin
|
|
with sqlInsertarPedido do
|
|
begin
|
|
Add('insert into PEDIDOSPROVEEDOR ');
|
|
Add('(CODIGOEMPRESA, CODIGO, FECHAALTA, FECHAEMISION, FECHARECEPCION, ');
|
|
Add('SITUACION, USUARIO, NOTAS, CODIGOPROVEEDOR, NIFCIF, ');
|
|
Add('NOMBRE, FAX, PERSONACONTACTO, CODIGOCLIENTE, CODIGOALMACEN, ');
|
|
Add('NOMBREALMACEN, CALLEALMACEN, NUMEROALMACEN, PISOALMACEN, ');
|
|
Add('CODIGOPOSTALALMACEN, POBLACIONALMACEN, PROVINCIAALMACEN, ');
|
|
Add('PERSONACONTACTOALMACEN, IMPORTETOTAL, ');
|
|
Add('CODIGOOBRA, NOMBREOBRA) ');
|
|
Add('values (:CODIGOEMPRESA, :CODIGO, :FECHAALTA, :FECHAEMISION, :FECHARECEPCION, ');
|
|
Add(':SITUACION, :USUARIO, :NOTAS, :CODIGOPROVEEDOR, :NIFCIF, ');
|
|
Add(':NOMBRE, :FAX, :PERSONACONTACTO, :CODIGOCLIENTE, :CODIGOALMACEN, ');
|
|
Add(':NOMBREALMACEN, :CALLEALMACEN, :NUMEROALMACEN, :PISOALMACEN, ');
|
|
Add(':CODIGOPOSTALALMACEN, :POBLACIONALMACEN, :PROVINCIAALMACEN, ');
|
|
Add(':PERSONACONTACTOALMACEN, :IMPORTETOTAL, ');
|
|
Add(':CODIGOOBRA, :NOMBREOBRA)');
|
|
end;
|
|
|
|
with sqlModificarPedido do
|
|
begin
|
|
Add('update PEDIDOSPROVEEDOR set ');
|
|
Add('FECHAALTA = :FECHAALTA, ');
|
|
Add('FECHAEMISION = :FECHAEMISION, ');
|
|
Add('FECHARECEPCION = :FECHARECEPCION, ');
|
|
Add('SITUACION = :SITUACION, ');
|
|
Add('USUARIO = :USUARIO, ');
|
|
Add('NOTAS = :NOTAS, ');
|
|
Add('CODIGOPROVEEDOR = :CODIGOPROVEEDOR, ');
|
|
Add('NIFCIF = :NIFCIF, ');
|
|
Add('NOMBRE = :NOMBRE, ');
|
|
Add('FAX = :FAX, ');
|
|
Add('PERSONACONTACTO = :PERSONACONTACTO, ');
|
|
Add('CODIGOCLIENTE = :CODIGOCLIENTE, ');
|
|
Add('CODIGOALMACEN = :CODIGOALMACEN, ');
|
|
Add('NOMBREALMACEN = :NOMBREALMACEN, ');
|
|
Add('CALLEALMACEN = :CALLEALMACEN, ');
|
|
Add('NUMEROALMACEN = :NUMEROALMACEN, ');
|
|
Add('PISOALMACEN = :PISOALMACEN, ');
|
|
Add('CODIGOPOSTALALMACEN = :CODIGOPOSTALALMACEN, ');
|
|
Add('POBLACIONALMACEN = :POBLACIONALMACEN, ');
|
|
Add('PROVINCIAALMACEN = :PROVINCIAALMACEN, ');
|
|
Add('PERSONACONTACTOALMACEN = :PERSONACONTACTOALMACEN, ');
|
|
Add('IMPORTETOTAL = :IMPORTETOTAL, ');
|
|
Add('CODIGOOBRA = :CODIGOOBRA, ');
|
|
Add('NOMBREOBRA = :NOMBREOBRA ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO)');
|
|
end;
|
|
|
|
with sqlEliminarPedido do
|
|
begin
|
|
Add('delete from PEDIDOSPROVEEDOR ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO)');
|
|
end;
|
|
|
|
with sqlConsultarPedido do
|
|
begin
|
|
Add('select * from PEDIDOSPROVEEDOR ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO)');
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaPedidosProveedor.IniciarSQLDetalles;
|
|
begin
|
|
with sqlInsertarDetalles do
|
|
begin
|
|
Add('insert into DETALLESPEDIDOSPROVEEDOR ');
|
|
Add('(CODIGOEMPRESA, CODIGOPEDIDO, NUMCONCEPTO, CODIGOARTICULO, REFPROVEEDOR, REFFABRICANTE, DESCRIPCION, ');
|
|
Add('CANTIDAD, UNIDADESMEDIDA, PRECIO, DESCUENTO, TOTAL, PENDIENTES) ');
|
|
Add('values (:CODIGOEMPRESA, :CODIGOPEDIDO, :NUMCONCEPTO, :CODIGOARTICULO, :REFPROVEEDOR, :REFFABRICANTE, :DESCRIPCION, ');
|
|
Add(':CANTIDAD, :UNIDADESMEDIDA, :PRECIO, :DESCUENTO, :TOTAL, :PENDIENTES)');
|
|
end;
|
|
|
|
with sqlModificarDetalles do
|
|
begin
|
|
Add('update DETALLESPEDIDOSPROVEEDOR set ');
|
|
Add('CODIGOPEDIDO = :CODIGOPEDIDO, ');
|
|
Add('NUMCONCEPTO = :NUMCONCEPTO, ');
|
|
Add('CODIGOARTICULO = :CODIGOARTICULO, ');
|
|
Add('REFPROVEEDOR = :REFPROVEEDOR, ');
|
|
Add('REFFABRICANTE = :REFFABRICANTE, ');
|
|
Add('DESCRIPCION = :DESCRIPCION, ');
|
|
Add('CANTIDAD = :CANTIDAD, ');
|
|
Add('UNIDADESMEDIDA = :UNIDADESMEDIDA, ');
|
|
Add('PRECIO = :PRECIO, ');
|
|
Add('DESCUENTO = :DESCUENTO, ');
|
|
Add('TOTAL = :TOTAL, ');
|
|
Add('PENDIENTES = :PENDIENTES ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGOPEDIDO = :CODIGOPEDIDO) and ');
|
|
Add('(NUMCONCEPTO = :NUMCONCEPTO)');
|
|
end;
|
|
|
|
with sqlEliminarDetalles do
|
|
begin
|
|
Add('delete from DETALLESPEDIDOSPROVEEDOR ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGOPEDIDO = :CODIGOPEDIDO) and ');
|
|
Add('(NUMCONCEPTO = :NUMCONCEPTO)');
|
|
end;
|
|
|
|
with sqlConsultarDetalles do
|
|
begin
|
|
Add('select CODIGOPEDIDO, NUMCONCEPTO, ');
|
|
Add('CODIGOARTICULO, REFPROVEEDOR, REFFABRICANTE, DESCRIPCION, CANTIDAD, PRECIO, ');
|
|
Add('DESCUENTO, TOTAL, UNIDADESMEDIDA, PENDIENTES ');
|
|
Add('from DETALLESPEDIDOSPROVEEDOR ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGOPEDIDO = :CODIGOPEDIDO) and ');
|
|
Add('(NUMCONCEPTO = :NUMCONCEPTO)');
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.DarNuevoCodigo : String;
|
|
begin
|
|
Result := GestorContadores.DarNuevoCodigo(contPedidosProveedor);
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.InsertarContador : boolean;
|
|
begin
|
|
Result := GestorContadores.InsertarContador(contPedidosProveedor);
|
|
end;
|
|
|
|
|
|
function TdmTablaPedidosProveedor.IncrementarCodigo : Boolean;
|
|
begin
|
|
Result := GestorContadores.IncrementarValor(contPedidosProveedor);
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.ValidarCodigo(Codigo : String) : Boolean;
|
|
begin
|
|
Result := GestorContadores.ValidarCodigo(contPedidosProveedor, Codigo);
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.FormatearCodigo(Codigo : String) : String;
|
|
begin
|
|
Result := GestorContadores.FormatearCodigo(contPedidosProveedor, Codigo);
|
|
end;
|
|
|
|
procedure TdmTablaPedidosProveedor.InicializarTablaPedidos(Tabla : TPTabla);
|
|
begin
|
|
with Tabla^.Fields do
|
|
begin
|
|
if FindField('FECHAALTA') <> NIL then
|
|
with (FieldByName('FECHAALTA') as TDateField) do begin
|
|
EditMask := MASK_FECHA;
|
|
end;
|
|
|
|
if FindField('FECHAEMISION') <> NIL then
|
|
with (FieldByName('FECHAEMISION') as TDateField) do begin
|
|
EditMask := MASK_FECHA;
|
|
end;
|
|
|
|
if FindField('FECHARECEPCION') <> NIL then
|
|
with (FieldByName('FECHARECEPCION') as TDateField) do begin
|
|
EditMask := MASK_FECHA;
|
|
end;
|
|
|
|
if FindField('IMPORTETOTAL') <> NIL then
|
|
//with (FieldByName('IMPORTETOTAL') as TFloatField) do begin
|
|
with (FieldByName('IMPORTETOTAL') as TIBBCDField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
DisplayLabel := 'Importe total';
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaPedidosProveedor.InicializarGridPedidos(var Grid: TdxDBGrid);
|
|
var
|
|
Columna : TdxDBTreeListColumn;
|
|
begin
|
|
with Grid do begin
|
|
DestroyColumns;
|
|
ShowSummaryFooter := True;
|
|
{Columna CODIGO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CODIGO';
|
|
Columna.Caption := 'Código';
|
|
Columna.Width := tamColCodigo;
|
|
Columna.Sorted := csDown;
|
|
Columna.SummaryFooterType := cstCount;
|
|
Columna.SummaryFooterFormat := 'Total: 0 pedidos';
|
|
|
|
{Columna ANO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'ANO';
|
|
Columna.Caption := 'Año';
|
|
Columna.Width := tamColFecha;
|
|
Columna.Visible := False;
|
|
|
|
{Columna SITUACION}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'SITUACION';
|
|
Columna.Caption := 'Situación';
|
|
Columna.Width := tamColSituacion;
|
|
{Columna FECHAALTA}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'FECHAALTA';
|
|
Columna.Caption := 'Fecha alta';
|
|
Columna.Width := tamColFecha;
|
|
{Columna NOMBRE}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'NOMBRE';
|
|
Columna.Caption := 'Nombre';
|
|
Columna.Width := tamColNombre;
|
|
{Columna NOMBREALMACEN}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'NOMBREALMACEN';
|
|
Columna.Caption := 'Almacén';
|
|
Columna.Width := tamColNombreAlmacen;
|
|
{Columna NOMBREOBRA}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'NOMBREOBRA';
|
|
Columna.Caption := 'Cliente final';
|
|
Columna.Width := tamColNombre;
|
|
{Columna FECHAEMISION}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'FECHAEMISION';
|
|
Columna.Caption := 'Emisión';
|
|
Columna.Width := tamColFecha;
|
|
{Columna FECHARECEPCION}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'FECHARECEPCION';
|
|
Columna.Caption := 'Recepción';
|
|
Columna.Width := tamColFecha;
|
|
{Columna IMPORTETOTAL}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'IMPORTETOTAL';
|
|
Columna.Caption := 'Importe';
|
|
Columna.Width := tamColPrecio;
|
|
Columna.Visible := False;
|
|
{Columna CODIGOFACTURA}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CODIGOFACTURA';
|
|
Columna.Caption := 'Cód. factura';
|
|
Columna.Width := tamColCodigo;
|
|
{Columna NIFCIF}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'NIFCIF';
|
|
Columna.Caption := 'NIF/CIF';
|
|
Columna.Width := tamColNIFCIF;
|
|
{Columna CODIGOPROVEEDOR}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CODIGOPROVEEDOR';
|
|
Columna.Caption := 'Cód. prov.';
|
|
Columna.Width := tamColCodigo;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaPedidosProveedor.InicializarTablaDetalles(Tabla : TPTabla);
|
|
begin
|
|
with Tabla^.Fields do
|
|
begin
|
|
with (FieldByName('PRECIO') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
with (FieldByName('DESCUENTO') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_DTO;
|
|
EditFormat := EDIT_DTO;
|
|
end;
|
|
with (FieldByName('TOTAL') as TFloatField) do begin
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|
EditFormat := EDIT_EUROS2;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaPedidosProveedor.InicializarGridDetalles(var Grid: TdxDBGrid);
|
|
var
|
|
Columna : TdxDBTreeListColumn;
|
|
begin
|
|
with Grid do begin
|
|
DestroyColumns;
|
|
{Columna CODIGOPEDIDO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.Visible := False;
|
|
Columna.FieldName := 'CODIGOPEDIDO';
|
|
{Columna NUMCONCEPTO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.Visible := False;
|
|
Columna.FieldName := 'NUMCONCEPTO';
|
|
{Columna CODIGOARTICULO}
|
|
Columna := CreateColumn(TdxDBTreeListButtonColumn);
|
|
Columna.FieldName := 'CODIGOARTICULO';
|
|
Columna.Caption := 'Cód. material';
|
|
Columna.Width := tamColCodigo;
|
|
Columna.ReadOnly := True;
|
|
{Columna REFPROVEEDOR}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'REFPROVEEDOR';
|
|
Columna.Caption := 'Ref. proveedor';
|
|
Columna.Width := tamColCodigo;
|
|
{Columna REFFABRICANTES}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'REFFABRICANTE';
|
|
Columna.Caption := 'Ref. fabricante';
|
|
Columna.Width := tamColCodigo;
|
|
{Columna DESCRIPCION}
|
|
Columna := CreateColumn(TdxDBTreeListButtonColumn);
|
|
Columna.FieldName := 'DESCRIPCION';
|
|
Columna.Caption := 'Descripción material/servicio';
|
|
Columna.Width := tamColDescripcion;
|
|
{Columna CANTIDAD}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'CANTIDAD';
|
|
Columna.Alignment := taRightJustify;
|
|
Columna.Caption := 'Cantidad';
|
|
Columna.Width := tamColCantidad;
|
|
{Columna UNIDADESMEDIDA}
|
|
Columna := CreateColumn(TdxDBTreeListPickColumn);
|
|
Columna.FieldName := 'UNIDADESMEDIDA';
|
|
Columna.Caption := 'Unid. medida';
|
|
Columna.Width := tamColUnidadesMedida;
|
|
(Columna as TdxDBTreeListPickColumn).Items := dmTablaUnidadesMedida.DarUnidadesMedida;
|
|
{Columna PENDIENTES}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.Visible := False;
|
|
Columna.FieldName := 'PENDIENTES';
|
|
Columna.Width := tamColCantidad;
|
|
{Columna PRECIO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'PRECIO';
|
|
Columna.Caption := 'Precio unidad';
|
|
Columna.Width := tamColPrecio;
|
|
// Columna.Visible := False;
|
|
{Columna DESCUENTO}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'DESCUENTO';
|
|
Columna.Alignment := taRightJustify;
|
|
Columna.Caption := 'Dto (%)';
|
|
Columna.Width := tamColPorcentaje;
|
|
Columna.Visible := False;
|
|
{Columna TOTAL}
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|
Columna.FieldName := 'TOTAL';
|
|
Columna.Caption := 'Precio total';
|
|
Columna.ReadOnly := True;
|
|
Columna.Width := tamColPrecio;
|
|
// Columna.Visible := False;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.ExisteCodigo(CodigoEmpresa : Integer; Codigo: String): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
Contador : String;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select CODIGO ');
|
|
SQL.Add('from PEDIDOSPROVEEDOR ');
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO)');
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Contador := Fields[0].AsString;
|
|
Result := (Codigo = Contador);
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.EmitirPedido(CodigoEmpresa : Integer;
|
|
Codigo: String; FechaEmision: TDateTime): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update PEDIDOSPROVEEDOR set ');
|
|
SQL.Add('SITUACION = ''Emitido'', ');
|
|
SQL.Add('FECHAEMISION = :FECHAEMISION ');
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO)');
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('FECHAEMISION').AsDate := FechaEmision;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.CancelarPedido(CodigoEmpresa : Integer; Codigo: String): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(Codigo) then
|
|
Exit;
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update PEDIDOSPROVEEDOR set ');
|
|
SQL.Add('SITUACION = ''No emitido'', ');
|
|
SQL.Add('FECHAEMISION = NULL ');
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO)');
|
|
try
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmTablaPedidosProveedor.IniciarSQLGrids;
|
|
begin
|
|
with sqlConsultarGridPedidos do
|
|
begin
|
|
Add('select CODIGO, SITUACION, FECHAALTA, ');
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|
Add('NOMBRE, NOMBREALMACEN, NOMBREOBRA, FECHAEMISION, FECHARECEPCION, ');
|
|
Add('IMPORTETOTAL, CODIGOFACTURA, CODIGOPROVEEDOR, NIFCIF ');
|
|
Add('from PEDIDOSPROVEEDOR ');
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by CODIGO');
|
|
end;
|
|
|
|
with sqlConsultarGridPedidosProv do
|
|
begin
|
|
Add('select CODIGO, SITUACION, FECHAALTA, CODIGOPROVEEDOR, NIFCIF, ');
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|
Add('NOMBRE, FECHAEMISION, FECHARECEPCION, NOMBREALMACEN, ');
|
|
Add('NOMBREOBRA, IMPORTETOTAL, CODIGOFACTURA ');
|
|
Add('from PEDIDOSPROVEEDOR ');
|
|
Add('where (CODIGOPROVEEDOR = :CODIGOPROVEEDOR) ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by CODIGO');
|
|
end;
|
|
|
|
with sqlConsultarGridPedidosRecibir do
|
|
begin
|
|
Add('select CODIGO, SITUACION, FECHAALTA, CODIGOPROVEEDOR, NIFCIF, ');
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|
Add('NOMBRE, FECHAEMISION, FECHARECEPCION, NOMBREALMACEN, ');
|
|
Add('NOMBREOBRA, IMPORTETOTAL, CODIGOFACTURA ');
|
|
Add('from PEDIDOSPROVEEDOR ');
|
|
Add('where UPPER(SITUACION) IN (''EMITIDO'', ''PARCIALMENTE RECIBIDO'') ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by CODIGO');
|
|
end;
|
|
|
|
with sqlConsultarGridPedidosDevolver do
|
|
begin
|
|
Add('select CODIGO, SITUACION, FECHAALTA, CODIGOPROVEEDOR, NIFCIF, ');
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|
Add('NOMBRE, FECHAEMISION, FECHARECEPCION, NOMBREALMACEN, ');
|
|
Add('NOMBREOBRA, IMPORTETOTAL, CODIGOFACTURA ');
|
|
Add('from PEDIDOSPROVEEDOR ');
|
|
Add('where UPPER(SITUACION) = ''TOTALMENTE RECIBIDO'' ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by CODIGO');
|
|
end;
|
|
|
|
with sqlConsultarGridPedidosFacturar do
|
|
begin
|
|
Add('select CODIGO, SITUACION, FECHAALTA, CODIGOPROVEEDOR, NIFCIF, ');
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|
Add('NOMBRE, FECHAEMISION, FECHARECEPCION, NOMBREALMACEN, ');
|
|
Add('NOMBREOBRA, IMPORTETOTAL, CODIGOFACTURA ');
|
|
Add('from PEDIDOSPROVEEDOR ');
|
|
Add('where (CODIGOFACTURA is NULL) and ');
|
|
Add('(UPPER(SITUACION) IN (''TOTALMENTE RECIBIDO'', ''DEVUELTO'')) and ');
|
|
Add('(CODIGOPROVEEDOR = :CODIGOPROVEEDOR) ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by CODIGO');
|
|
end;
|
|
|
|
with sqlConsultarGridDetalles do
|
|
begin
|
|
Add('select CODIGOEMPRESA, CODIGOPEDIDO, NUMCONCEPTO, ');
|
|
Add('CODIGOARTICULO, REFPROVEEDOR, REFFABRICANTE, DESCRIPCION, ');
|
|
Add('CANTIDAD, PRECIO, DESCUENTO, TOTAL, UNIDADESMEDIDA, PENDIENTES ');
|
|
Add('from DETALLESPEDIDOSPROVEEDOR ');
|
|
Add('where CODIGOPEDIDO = :CODIGOPEDIDO ');
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
Add('order by NUMCONCEPTO');
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.DarDatosPedido(Pedido: TDatosPedidoProveedor): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
if EsCadenaVacia(Pedido.Codigo) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select * from PEDIDOSPROVEEDOR ');
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO)');
|
|
try
|
|
ParamByName('CODIGO').AsString := Pedido.Codigo;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := Pedido.CodigoEmpresa;
|
|
Prepare;
|
|
ExecQuery;
|
|
|
|
//Compruebo que el codigo de almacen existe si no existe devuelvo false
|
|
if (RecordCount > 0) then
|
|
begin
|
|
with Pedido do
|
|
begin
|
|
FechaAlta := FieldByName('FECHAALTA').AsString;
|
|
FechaEmision := FieldByName('FECHAEMISION').AsString;
|
|
FechaRecepcion := FieldByName('FECHARECEPCION').AsString;
|
|
Situacion := FieldByName('SITUACION').AsString;
|
|
Usuario:= FieldByName('USUARIO').AsString;
|
|
Notas := FieldByName('NOTAS').AsString;
|
|
CodigoProveedor := FieldByName('CODIGOPROVEEDOR').AsString;
|
|
NifCif := FieldByName('NIFCIF').AsString;
|
|
Nombre := FieldByName('NOMBRE').AsString;
|
|
Fax := FieldByName('FAX').AsString;
|
|
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
|
|
CodigoCliente := FieldByName('CODIGOCLIENTE').AsString;
|
|
CodigoAlmacen := FieldByName('CODIGOALMACEN').AsString;
|
|
NombreAlmacen := FieldByName('NOMBREALMACEN').AsString;
|
|
CalleAlmacen := FieldByName('CALLEALMACEN').AsString;
|
|
NumeroAlmacen := FieldByName('NUMEROALMACEN').AsString;
|
|
PisoAlmacen := FieldByName('PISOALMACEN').AsString;
|
|
CodigoPostalAlmacen := FieldByName('CODIGOPOSTALALMACEN').AsString;
|
|
PoblacionAlmacen := FieldByName('POBLACIONALMACEN').AsString;
|
|
ProvinciaAlmacen := FieldByName('PROVINCIAALMACEN').AsString;
|
|
PersonaContactoAlmacen := FieldByName('PERSONACONTACTOALMACEN').AsString;
|
|
ImporteTotal := FieldByName('IMPORTETOTAL').AsString;
|
|
CodigoFactura := FieldByName('CODIGOFACTURA').AsString;
|
|
Result := True;
|
|
end;
|
|
end;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TdmTablaPedidosProveedor.DarSituaciones: TStrings;
|
|
var
|
|
oSQL : TIBSQL;
|
|
Lista : TStringList;
|
|
begin
|
|
Result := NIL;
|
|
oSQL := TIBSQL.Create(Self);
|
|
Lista := TStringList.Create;
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select DESCRIPCION from SITUPEDIDOS');
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
while not EOF do begin
|
|
Lista.Append(Fields[0].AsString);
|
|
Next;
|
|
end;
|
|
Result := Lista;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TdmTablaPedidosProveedor.ModificarUnidadesPendientesArticulo(Datos: TDatosDetallePedidoProveedor): Boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update DETALLESPEDIDOSPROVEEDOR ');
|
|
SQL.Add('set PENDIENTES = PENDIENTES - :CANTIDAD ');
|
|
SQL.Add('where CODIGOPEDIDO = :CODIGOPEDIDO ');
|
|
SQL.Add('and CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
SQL.Add('and NUMCONCEPTO = :NUMCONCEPTO ');
|
|
SQL.Add('and (PENDIENTES - :CANTIDAD) >= 0 ');
|
|
ParamByName('CANTIDAD').AsFloat := StrToFloat(Datos.Cantidad);
|
|
ParamByName('CODIGOPEDIDO').AsString := Datos.CodigoPedido;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := Datos.CodigoEmpresa;
|
|
ParamByName('NUMCONCEPTO').AsInteger := Datos.NumConcepto;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
if RowsAffected <> 0 then
|
|
Result := True
|
|
else
|
|
raise Exception.Create(msgPedidoYaRecibido);
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.DarUnidadesPendientes(CodigoEmpresa: Integer;
|
|
CodigoPedido: String): String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := '-1';
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select sum(PENDIENTES) ');
|
|
SQL.Add('from DETALLESPEDIDOSPROVEEDOR ');
|
|
SQL.Add('where CODIGOPEDIDO = :CODIGOPEDIDO ');
|
|
SQL.Add('and CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
try
|
|
ParamByName('CODIGOPEDIDO').AsString := CodigoPedido;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsString;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TdmTablaPedidosProveedor.ExisteArticuloEnPedido(CodigoEmpresa: Integer; CodigoArticulo: String): Boolean;
|
|
{Comprueba si existe un articulo en un determinado almacen, pasandole por
|
|
parametro el codigo de articulo y el del almacen, devuelve true o false
|
|
dependiendo si existe o no}
|
|
var
|
|
oSQL : TIBSQL;
|
|
Codigo : String;
|
|
begin
|
|
Result := False;
|
|
if (Length(Trim(CodigoArticulo)) = 0) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select distinct DET.CODIGOARTICULO ');
|
|
SQL.Add('from PEDIDOSPROVEEDOR PED, DETALLESPEDIDOSPROVEEDOR DET');
|
|
SQL.Add('where DET.CODIGOARTICULO = :CODIGOARTICULO ');
|
|
SQL.Add('and DET.CODIGOEMPRESA = :CODIGOEMPRESA ');
|
|
SQL.Add('and PED.CODIGOEMPRESA = DET.CODIGOEMPRESA ');
|
|
SQL.Add('and PED.CODIGO = DET.CODIGOPEDIDO ');
|
|
SQL.Add('and UPPER(PED.SITUACION) IN (''NO EMITIDO'',''EMITIDO'',''PARCIALMENTE RECIBIDO'') ');
|
|
ParamByName('CODIGOARTICULO').AsString := CodigoArticulo;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
|
|
if (RecordCount = 0) then
|
|
Result := False;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.FacturarPedido(CodigoEmpresa : Integer; CodigoPedido, CodigoFactura: String) : boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update PEDIDOSPROVEEDOR set ');
|
|
SQL.Add('CODIGOFACTURA = :CODIGOFACTURA');
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO) ');
|
|
SQL.Add('and (CODIGOFACTURA is NULL) ');
|
|
ParamByName('CODIGO').AsString := CodigoPedido;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGOFACTURA').AsString := CodigoFactura;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := RowsAffected > 0;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.NoFacturarPedido(CodigoEmpresa : Integer; CodigoPedido: String): boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
if (Length(Trim(CodigoPedido)) = 0) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update PEDIDOSPROVEEDOR set ');
|
|
SQL.Add('CODIGOFACTURA = NULL');
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO) ');
|
|
ParamByName('CODIGO').AsString := CodigoPedido;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.ExisteAlmacenEnPedido(CodigoEmpresa: Integer;
|
|
CodigoAlmacen: String; var CodigoPedido, Situacion : String): Boolean;
|
|
{Comprueba si existe un almacen en un determinado pedido, pasandole por
|
|
parametro el codigo de almacen, devuelve true o false dependiendo
|
|
si existe o no}
|
|
var
|
|
oSQL : TIBSQL;
|
|
Codigo : String;
|
|
begin
|
|
Result := False;
|
|
Codigo := Trim(CodigoAlmacen);
|
|
if (Length(Codigo) = 0) then
|
|
Exit;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select CODIGO, SITUACION ');
|
|
SQL.Add('from PEDIDOSPROVEEDOR ');
|
|
SQL.Add('where (CODIGOALMACEN = :CODIGOALMACEN) ');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
SQL.Add('and (UPPER(SITUACION) NOT IN (''DEVUELTO''))');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGOALMACEN').AsString := Codigo;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
if (RecordCount <> 0) then
|
|
begin
|
|
CodigoPedido := FieldByName('CODIGO').AsString;
|
|
Situacion := FieldByName('SITUACION').AsString;
|
|
Result := True
|
|
end;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.DarSituacion(CodigoEmpresa: Integer; CodigoPedido: String): String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := '';
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select SITUACION ');
|
|
SQL.Add('from PEDIDOSPROVEEDOR ');
|
|
SQL.Add('where CODIGO = :CODIGOPEDIDO');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('CODIGOPEDIDO').AsString := CodigoPedido;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := UpperCase(FieldByName('SITUACION').AsString);
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.DevolverPedido(CodigoEmpresa : Integer;
|
|
CodigoPedido, Fecha: String): boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update PEDIDOSPROVEEDOR ');
|
|
SQL.Add('set SITUACION = ''Devuelto'', ');
|
|
SQL.Add('FECHADEVOLUCION = :FECHADEVOLUCION ');
|
|
SQL.Add('where CODIGO = :CODIGO ');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
SQL.Add('and (UPPER(SITUACION) = ''TOTALMENTE RECIBIDO'') ');
|
|
ParamByName('CODIGO').AsString := CodigoPedido;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('FECHADEVOLUCION').AsString := Fecha;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
if RowsAffected <> 0 then
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.RecibirParcialmentePedido(CodigoEmpresa : Integer;
|
|
CodigoPedido, Fecha: String): boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update PEDIDOSPROVEEDOR ');
|
|
SQL.Add('set SITUACION = ''Parcialmente recibido'', ');
|
|
SQL.Add('FECHARECEPCION = :FECHARECEPCION ');
|
|
SQL.Add('where CODIGO = :CODIGO ');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
SQL.Add('and (UPPER(SITUACION) in (''EMITIDO'', ''PARCIALMENTE RECIBIDO''))');
|
|
ParamByName('FECHARECEPCION').AsString := Fecha;
|
|
ParamByName('CODIGO').AsString := CodigoPedido;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
if RowsAffected <> 0 then
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.RecibirTotalmentePedido(CodigoEmpresa : Integer;
|
|
CodigoPedido, Fecha: String): boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update PEDIDOSPROVEEDOR ');
|
|
SQL.Add('set SITUACION = ''Totalmente recibido'', ');
|
|
SQL.Add('FECHARECEPCION = :FECHARECEPCION ');
|
|
SQL.Add('where (CODIGO = :CODIGO) ');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
SQL.Add('and (UPPER(SITUACION) in (''EMITIDO'',''PARCIALMENTE RECIBIDO''))');
|
|
ParamByName('FECHARECEPCION').AsString := Fecha;
|
|
ParamByName('CODIGO').AsString := CodigoPedido;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
if RowsAffected <> 0 then
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.BloquearPedido(CodigoEmpresa : Integer;
|
|
CodigoPedido, Fecha: String): boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('update PEDIDOSPROVEEDOR ');
|
|
SQL.Add('set FECHARECEPCION = :FECHARECEPCION ');
|
|
SQL.Add('where (CODIGO = :CODIGO) ');
|
|
SQL.Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
SQL.Add('and (UPPER(SITUACION) in (''EMITIDO'',''PARCIALMENTE RECIBIDO'',''TOTALMENTE RECIBIDO''))');
|
|
ParamByName('CODIGO').AsString := CodigoPedido;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
ParamByName('FECHARECEPCION').AsString := Fecha;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
if RowsAffected <> 0 then
|
|
Result := True;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.PedidoFacturado(CodigoEmpresa : Integer;
|
|
CodigoPedido: String): boolean;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := False;
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select CODIGOFACTURA ');
|
|
SQL.Add('from PEDIDOSPROVEEDOR ');
|
|
SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
ParamByName('CODIGO').AsString := CodigoPedido;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := not EsCadenaVacia(FieldByName('CODIGOFACTURA').AsString);
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaPedidosProveedor.DarListaAnos(CodigoEmpresa : Integer): TStringList;
|
|
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 distinct (EXTRACT (YEAR FROM FECHAALTA)) ANO ');
|
|
SQL.Add('from PEDIDOSPROVEEDOR ');
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|
SQL.Add('order by FECHAALTA desc');
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Lista.Add(CTE_TODOS);
|
|
while not EOF do begin
|
|
Lista.Add(Fields[0].AsString);
|
|
Next;
|
|
end;
|
|
result := Lista;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end.
|