CREATE TABLE MotivoRechazo ( 
codigo INT NOT NULL,
descripcion VARCHAR(250) NOT NULL
 CONSTRAINT PK_MotivoRechazo PRIMARY KEY CLUSTERED (codigo))
CREATE TABLE Ordenes ( 
NumOrden VARCHAR(36) NOT NULL,
CodAutoriza VARCHAR(50) NOT NULL,
TipoOrden CHAR(1) DEFAULT ('S') NOT NULL,
CodCliente VARCHAR(20) NOT NULL,
NumPedido INT DEFAULT ((0)) NOT NULL,
IdCia CHAR(2) DEFAULT ('00') NOT NULL,
FecPedido SMALLDATETIME NOT NULL,
FecEntrega SMALLDATETIME NOT NULL,
EtdoPedido INT DEFAULT ((0)) NOT NULL,
TipoTrans VARCHAR(10) DEFAULT ('0') NOT NULL,
nVehiculo VARCHAR(10),
nRemolque VARCHAR(10),
CedConductor VARCHAR(20),
Conductor VARCHAR(100),
CodPlanta VARCHAR(20),
Observacion VARCHAR(250),
TipoAcepta INT DEFAULT ((0)) NOT NULL,
EtdoEnvio INT DEFAULT ((0)) NOT NULL,
FecRadica SMALLDATETIME NOT NULL,
FecAcepta SMALLDATETIME,
FecDespacho SMALLDATETIME,
Comentarios VARCHAR(1000),
FecAnula SMALLDATETIME,
DescRechazo VARCHAR(250),
RowVersionS VARCHAR(20)
 CONSTRAINT PK_Ordenes PRIMARY KEY CLUSTERED (NumOrden),
 CONSTRAINT CK_OrdenesCodAutoriza CHECK ((len([CodAutoriza])>(0))),
 CONSTRAINT CK_OrdenesCodCliente CHECK ((len([CodCliente])>(0))),
 CONSTRAINT CK_OrdenesIdCia CHECK ((len([IdCia])>(0))),
 CONSTRAINT CK_OrdenesTipoOrden CHECK ((len([TipoOrden])>(0))),
 CONSTRAINT CK_OrdenesTipoTrans CHECK ((len([TipoTrans])>(0))))
CREATE TABLE Pedido ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
codigoAgente VARCHAR(6) NOT NULL,
nitAgente VARCHAR(32) NOT NULL,
codigoAutorizacionOP VARCHAR(15) NOT NULL,
codigoCliente VARCHAR(16) NOT NULL,
codigoPlantaDespacho VARCHAR(6) NOT NULL,
codigoPlantaRecibo VARCHAR(6) NOT NULL,
tipoVehiculo CHAR(1),
placaVehiculo VARCHAR(6),
fechaSugeridaEntrega DATETIME NOT NULL,
placaRemolque VARCHAR(6),
pedidoSobreCupo CHAR(10) NOT NULL,
conductor VARCHAR(100),
cedula VARCHAR(20),
fechaOrdenPedido DATETIME NOT NULL,
observacion VARCHAR(512),
estadoOrdenPedido VARCHAR(50) NOT NULL,
RowVersionS VARCHAR(16) NOT NULL
 CONSTRAINT PK_Pedido PRIMARY KEY CLUSTERED (numeroOrdenPedido))
CREATE TABLE PedidoAceptado ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
password VARCHAR(32) NOT NULL,
numeroAutorizacionOP VARCHAR(15) NOT NULL,
tipoVehiculo CHAR(1),
placaVehiculo VARCHAR(6),
codigoPlantaDespacho VARCHAR(6) NOT NULL,
placaRemolque VARCHAR(6),
RowVersionS VARCHAR(16) NOT NULL
 CONSTRAINT PK_PedidoAceptado PRIMARY KEY CLUSTERED (numeroOrdenPedido))
CREATE TABLE PedidoAnulado ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
password VARCHAR(32) NOT NULL,
numeroAutorizacionOP VARCHAR(15) NOT NULL,
RowVersionS VARCHAR(16) NOT NULL
 CONSTRAINT PK_PedidoAnulado PRIMARY KEY CLUSTERED (numeroOrdenPedido))
CREATE TABLE PedidoCerrado ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
password VARCHAR(32) NOT NULL,
GuiaTte VARCHAR(20) NOT NULL,
numeroAutorizacionOP VARCHAR(15) NOT NULL,
RowVersionS VARCHAR(16) NOT NULL
 CONSTRAINT PK_PedidoCerrado PRIMARY KEY CLUSTERED (numeroOrdenPedido))
CREATE TABLE PedidoDespachado ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
password VARCHAR(32) NOT NULL,
numeroAutorizacionOP VARCHAR(15) NOT NULL,
tipoTransporte VARCHAR(1) NOT NULL,
placaTransporte VARCHAR(6) NOT NULL,
placaRemolque VARCHAR(6) NOT NULL,
tipoTemperatura VARCHAR(1) NOT NULL,
DespEscTemp VARCHAR(1) NOT NULL,
temperatura INT NOT NULL,
numeroGuiaUnica VARCHAR(20) NOT NULL,
vigenciaGuiaUnica VARCHAR(4) NOT NULL,
IdConductor VARCHAR(20) NOT NULL,
FecGuiaTte DATETIME NOT NULL,
numeroFactura VARCHAR(32) NOT NULL,
SeguridadUsNum VARCHAR(32) NOT NULL,
RowVersionS VARCHAR(16) NOT NULL
 CONSTRAINT PK_PedidoDespachado PRIMARY KEY CLUSTERED (numeroOrdenPedido))
CREATE TABLE PedidoRechazado ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
password VARCHAR(32) NOT NULL,
numeroAutorizacionOP VARCHAR(15) NOT NULL,
motivoRechazo INT NOT NULL,
descripcionRechazo VARCHAR(128) NOT NULL,
RowVersionS VARCHAR(16) NOT NULL
 CONSTRAINT PK_PedidoRechazado PRIMARY KEY CLUSTERED (numeroOrdenPedido))
CREATE TABLE Producto ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
volumenSugerido DECIMAL(12,2) NOT NULL,
codigoProducto VARCHAR(8) NOT NULL,
Cliente VARCHAR(16)
 CONSTRAINT PK_Producto PRIMARY KEY CLUSTERED (numeroOrdenPedido,codigoProducto))
CREATE TABLE ProductoAceptado ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
volumen DECIMAL(12,2) NOT NULL,
codigoProducto VARCHAR(8) NOT NULL
 CONSTRAINT PK_ProductoAceptado PRIMARY KEY CLUSTERED (numeroOrdenPedido,codigoProducto))
CREATE TABLE ProductoCerrado ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
volumen DECIMAL(12,2) NOT NULL,
codigoProducto VARCHAR(8) NOT NULL,
Cliente VARCHAR(16)
 CONSTRAINT PK_ProductoCerrado PRIMARY KEY CLUSTERED (numeroOrdenPedido,codigoProducto))
CREATE TABLE ProductoDespachado ( 
numeroOrdenPedido VARCHAR(36) NOT NULL,
volumen DECIMAL(12,2) NOT NULL,
codigoProducto VARCHAR(8) NOT NULL,
API FLOAT NOT NULL
 CONSTRAINT PK_ProductoDespachado PRIMARY KEY CLUSTERED (numeroOrdenPedido,codigoProducto))
CREATE TABLE TipoTemperatura ( 
codigo CHAR(1) NOT NULL,
descripcion VARCHAR(50) NOT NULL
 CONSTRAINT PK_TipoTemperatura PRIMARY KEY CLUSTERED (codigo))
CREATE TABLE TipoTransporte ( 
codigo INT NOT NULL,
descripcion VARCHAR(50) NOT NULL
 CONSTRAINT PK_TipoTransporte PRIMARY KEY CLUSTERED (codigo))
GO
 CREATE NONCLUSTERED INDEX IX_OrdenesNumPedido ON Ordenes(NumPedido,IdCia)
 CREATE NONCLUSTERED INDEX IX_OrdenesCodCliente ON Ordenes(CodCliente)
 CREATE NONCLUSTERED INDEX IX_OrdenesCodAutoriza ON Ordenes(CodAutoriza)

GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[Pa_Actualizar] (@pmTabla VARCHAR(50),@pmCampos VARCHAR(2000),@pmCriterio VARCHAR(1000))
AS

BEGIN
 Declare @pmQry VARCHAR(2000)
 SET @pmQry=''
 SET @pmQry=@pmQry + 'UPDATE '+ @pmTabla+' SET ' + @pmCampos
 IF LEN(@pmCriterio)>0 
  BEGIN
   SET  @pmQry=@pmQry + ' WHERE ' + @pmCriterio
  END

EXECUTE  (@pmQry)

RETURN
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[Pa_Agregar] (@pmTabla VARCHAR(50),@pmCampos VARCHAR(1000),@pmValores VARCHAR(2000))
AS

BEGIN
 Declare @pmQry VARCHAR(2000)
 SET @pmQry=''
 SET @pmQry=@pmQry + 'INSERT INTO '+ @pmTabla+' '
 SET @pmQry=@pmQry + '('+ @pmCampos+') VALUES '
 SET @pmQry=@pmQry + '('+ @pmValores+')'
 EXECUTE  (@pmQry)

RETURN
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[Pa_Eliminar] (@pmTabla VARCHAR(50),@pmCriterio VARCHAR(500))
AS

BEGIN
 Declare @pmQry VARCHAR(500)
 SET @pmQry=''
 SET @pmQry=@pmQry + 'DELETE FROM '+ @pmTabla
 IF LEN(@pmCriterio)>0 
  BEGIN
   SET @pmQry=@pmQry +'  WHERE ' + @pmCriterio
  END

EXECUTE  (@pmQry)

RETURN
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[Pa_InsertSelect]  
(@pmDB VARCHAR(50),
@pmOwn VARCHAR(50),
@pmTabla VARCHAR(50),
@pmCampos VARCHAR(1000),
@pmQuery VARCHAR(2000))

AS

BEGIN
 Declare @pmQry VARCHAR(2500)
 SET @pmQry=''
 SET @pmQry=@pmQry + 'INSERT INTO '+ @pmDB + '.'+ @pmOwn +'.'+@pmTabla
 SET @pmQry=@pmQry + ' ('+ @pmCampos+') '+ @pmQuery
 EXECUTE  (@pmQry)

RETURN
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[Pa_Query] 
(@pmCampos VARCHAR(3500),
 @pmTabla VARCHAR(1500),
@pmCriterio VARCHAR(2000),
@pmOrden VARCHAR(200),
@pmGroup VARCHAR(500),
@pmHaving VARCHAR(100))

AS

BEGIN
 Declare @pmQry VARCHAR(7800)
 SET @pmQry=''
 SET @pmQry=@pmQry + 'SELECT '+ @pmCampos + '  FROM ' + @pmTabla
 IF Len(@pmCriterio)>0
 BEGIN
  SET @pmQry=@pmQry + '  WHERE '+ @pmCriterio
 END
 IF Len(@pmGroup)>0 
 BEGIN
  SET @pmQry=@pmQry + ' GROUP BY ' + @pmGroup
 END
 IF Len(@pmHaving)>0 
 BEGIN
  SET @pmQry=@pmQry + ' HAVING '+ @pmHaving
 END
 IF Len(@pmOrden)>0 
 BEGIN
  SET @pmQry=@pmQry + ' ORDER BY '+ @pmOrden
 END
EXECUTE  (@pmQry)

RETURN
END
GO
