CREATE TABLE CxcCheques ( 
FechaCorte SMALLDATETIME NOT NULL,
IdCia CHAR(2) DEFAULT ('01') NOT NULL,
TipForma VARCHAR(3) DEFAULT ('CHE') NOT NULL,
Numero VARCHAR(20) NOT NULL,
IdBanco VARCHAR(4) NOT NULL,
Fecha SMALLDATETIME NOT NULL,
FecPago SMALLDATETIME NOT NULL,
VrForma MONEY DEFAULT (0) NOT NULL,
CtaForma VARCHAR(30) NOT NULL,
Beneficiario VARCHAR(150),
Referncia1 VARCHAR(50),
Referncia2 VARCHAR(50),
Detalle VARCHAR(150),
NitCliente VARCHAR(16) DEFAULT ('0') NOT NULL,
CdAgencia VARCHAR(16) DEFAULT ('0') NOT NULL,
CdVend VARCHAR(16) DEFAULT ('0') NOT NULL,
IdLocal VARCHAR(8) NOT NULL,
Recibo INT DEFAULT (0) NOT NULL,
IdEstado VARCHAR(4) NOT NULL,
NomCliente VARCHAR(150) NOT NULL,
NomAgencia VARCHAR(150),
NomVendedor VARCHAR(150) NOT NULL,
NomCiudad VARCHAR(50),
NomBanco VARCHAR(50)
 CONSTRAINT PK_CxcCheques PRIMARY KEY CLUSTERED (FechaCorte,IdCia,TipForma,Numero,IdBanco),
 CONSTRAINT CK_CxcChequesCdAgencia CHECK ((len([CdAgencia]) > 0)),
 CONSTRAINT CK_CxcChequesCdVend CHECK ((len([CdVend]) > 0)),
 CONSTRAINT CK_CxcChequesCtaForma CHECK ((len([CtaForma]) > 0)),
 CONSTRAINT CK_CxcChequesIdBanco CHECK ((len([IdBanco]) > 0)),
 CONSTRAINT CK_CxcChequesIdCia CHECK ((len([IdCia]) > 0)),
 CONSTRAINT CK_CxcChequesIdEstado CHECK ((len([IdEstado]) > 0)),
 CONSTRAINT CK_CxcChequesIdLocal CHECK ((len([IdLocal]) > 0)),
 CONSTRAINT CK_CxcChequesNitCliente CHECK ((len([NitCliente]) > 0)),
 CONSTRAINT CK_CxcChequesNomCliente CHECK ((len([NomCliente]) > 0)),
 CONSTRAINT CK_CxcChequesNomVendedor CHECK ((len([NomVendedor]) > 0)),
 CONSTRAINT CK_CxcChequesNumero CHECK ((len([Numero]) > 0)),
 CONSTRAINT CK_CxcChequesTipForma CHECK ((len([TipForma]) > 0)))
CREATE TABLE CxcCorte ( 
FechaCorte SMALLDATETIME NOT NULL,
IdCia CHAR(2) DEFAULT ('01') NOT NULL,
TipoCorte VARCHAR(10) DEFAULT ('CIERRE') NOT NULL,
IdUsuario VARCHAR(11) NOT NULL,
Nombre VARCHAR(50) NOT NULL,
TimeSys SMALLDATETIME NOT NULL,
NomCnia VARCHAR(50)
 CONSTRAINT PK_CxcCorte PRIMARY KEY CLUSTERED (FechaCorte,IdCia),
 CONSTRAINT CK_CxcCorteIdCia CHECK ((len([IdCia]) > 0)),
 CONSTRAINT CK_CxcCorteIdUsuario CHECK ((len([IdUsuario]) > 0)),
 CONSTRAINT CK_CxcCorteNombre CHECK ((len([Nombre]) > 0)),
 CONSTRAINT CK_CxcCorteTipoCorte CHECK ((len([TipoCorte]) > 0)))
CREATE TABLE CxcFacturas ( 
FechaCorte SMALLDATETIME NOT NULL,
TipDoc VARCHAR(3) DEFAULT ('FCR') NOT NULL,
Factura INT DEFAULT (0) NOT NULL,
IdCia CHAR(2) DEFAULT ('01') NOT NULL,
Item INT DEFAULT (1) NOT NULL,
Fecha SMALLDATETIME NOT NULL,
FechaVence SMALLDATETIME NOT NULL,
VrFactura MONEY DEFAULT (0) NOT NULL,
VrAbonado MONEY DEFAULT (0) NOT NULL,
IdCliente VARCHAR(16) NOT NULL,
IdAgencia VARCHAR(16) DEFAULT ('0') NOT NULL,
IdVend VARCHAR(16) NOT NULL,
Comision DECIMAL(14,4) DEFAULT (0) NOT NULL,
TarifDcto DECIMAL(14,4) DEFAULT (0) NOT NULL,
TipoDcto CHAR(1) DEFAULT ('%') NOT NULL,
TipoBase VARCHAR(10) DEFAULT ('TOTAL') NOT NULL,
FecLmtDcto SMALLDATETIME,
IdConcepto VARCHAR(4) NOT NULL,
Referencia VARCHAR(50),
Detalle VARCHAR(150),
TipRef VARCHAR(3) DEFAULT ('0') NOT NULL,
DocRef INT DEFAULT (0) NOT NULL,
IdCiaRef CHAR(2) DEFAULT ('00') NOT NULL,
FecUltPago SMALLDATETIME,
FecLiqMora SMALLDATETIME,
NomCliente VARCHAR(150) NOT NULL,
NomAgencia VARCHAR(150),
NomVendedor VARCHAR(150) NOT NULL,
NomConcepto VARCHAR(50)
 CONSTRAINT PK_CxcFacturas PRIMARY KEY CLUSTERED (FechaCorte,TipDoc,Factura,IdCia,Item),
 CONSTRAINT CK_CxcFacturasIdAgencia CHECK ((len([IdAgencia]) > 0)),
 CONSTRAINT CK_CxcFacturasIdCia CHECK ((len([IdCia]) > 0)),
 CONSTRAINT CK_CxcFacturasIdCiaRef CHECK ((len([IdCiaRef]) > 0)),
 CONSTRAINT CK_CxcFacturasIdCliente CHECK ((len([IdCliente]) > 0)),
 CONSTRAINT CK_CxcFacturasIdConcepto CHECK ((len([IdConcepto]) > 0)),
 CONSTRAINT CK_CxcFacturasIdVend CHECK ((len([IdVend]) > 0)),
 CONSTRAINT CK_CxcFacturasNomCliente CHECK ((len([NomCliente]) > 0)),
 CONSTRAINT CK_CxcFacturasNomVendedor CHECK ((len([NomVendedor]) > 0)),
 CONSTRAINT CK_CxcFacturasTipDoc CHECK ((len([TipDoc]) > 0)),
 CONSTRAINT CK_CxcFacturasTipoBase CHECK ((len([TipoBase]) > 0)),
 CONSTRAINT CK_CxcFacturasTipoDcto CHECK ((len([TipoDcto]) > 0)),
 CONSTRAINT CK_CxcFacturasTipRef CHECK ((len([TipRef]) > 0)))
CREATE TABLE CxpCorte ( 
FechaCorte SMALLDATETIME NOT NULL,
IdCia CHAR(2) DEFAULT ('01') NOT NULL,
TipoCorte VARCHAR(10) DEFAULT ('CIERRE') NOT NULL,
IdUsuario VARCHAR(11) NOT NULL,
Nombre VARCHAR(50) NOT NULL,
TimeSys SMALLDATETIME NOT NULL,
NomCnia VARCHAR(50)
 CONSTRAINT PK_CxpCorte PRIMARY KEY CLUSTERED (FechaCorte,IdCia),
 CONSTRAINT CK_CxpCorteIdCia CHECK ((len([IdCia]) > 0)),
 CONSTRAINT CK_CxpCorteIdUsuario CHECK ((len([IdUsuario]) > 0)),
 CONSTRAINT CK_CxpCorteNombre CHECK ((len([Nombre]) > 0)),
 CONSTRAINT CK_CxpCorteTipoCorte CHECK ((len([TipoCorte]) > 0)))
CREATE TABLE CxpFacturas ( 
FechaCorte SMALLDATETIME NOT NULL,
TipFac VARCHAR(3) NOT NULL,
Factura VARCHAR(15) NOT NULL,
IdCia CHAR(2) DEFAULT ('01') NOT NULL,
Item INT DEFAULT (1) NOT NULL,
IdProveedor VARCHAR(16) NOT NULL,
IdCuenta VARCHAR(16) NOT NULL,
TipDoc VARCHAR(3),
Documento INT DEFAULT (0) NOT NULL,
IdCiaDoc CHAR(2) DEFAULT ('01'),
FecEmision SMALLDATETIME NOT NULL,
FecVence SMALLDATETIME NOT NULL,
VrFactura MONEY DEFAULT (0) NOT NULL,
VrAbonado MONEY DEFAULT (0) NOT NULL,
TipCom VARCHAR(3),
Comprobante INT DEFAULT (0) NOT NULL,
ItemCom INT DEFAULT (0) NOT NULL,
Referencia VARCHAR(50),
Detalle VARCHAR(100),
pVehiculo VARCHAR(10),
TipRef VARCHAR(3),
DocRef INT DEFAULT (0) NOT NULL,
IdCiaRef CHAR(2) DEFAULT ('01'),
NomCuenta VARCHAR(100),
NomProveedor VARCHAR(150) NOT NULL,
TipoFactura VARCHAR(50)
 CONSTRAINT PK_CxpFacturas PRIMARY KEY CLUSTERED (FechaCorte,TipFac,Factura,IdCia,Item,IdProveedor),
 CONSTRAINT CK_CxpFacturasFactura CHECK ((len([Factura]) > 0)),
 CONSTRAINT CK_CxpFacturasIdCia CHECK ((len([IdCia]) > 0)),
 CONSTRAINT CK_CxpFacturasIdCuenta CHECK ((len([IdCuenta]) > 0)),
 CONSTRAINT CK_CxpFacturasIdProveedor CHECK ((len([IdProveedor]) > 0)),
 CONSTRAINT CK_CxpFacturasNomProveedor CHECK ((len([NomProveedor]) > 0)),
 CONSTRAINT CK_CxpFacturasTipFac CHECK ((len([TipFac]) > 0)))
GO
ALTER TABLE CxcCheques ADD 
 CONSTRAINT FK_CxcCheques_CxcCorte FOREIGN KEY (FechaCorte,IdCia) REFERENCES [dbo].[CxcCorte] (FechaCorte,IdCia)
GO
 CREATE NONCLUSTERED INDEX IX_CxcChequesFecha ON CxcCheques(Fecha)
 CREATE NONCLUSTERED INDEX IX_CxcChequesNitCliente ON CxcCheques(NitCliente)
 CREATE NONCLUSTERED INDEX IX_CxcChequesCdVend ON CxcCheques(CdVend)
 CREATE NONCLUSTERED INDEX IX_CxcChequesNumero ON CxcCheques(Numero,IdBanco,IdCia)

GO
ALTER TABLE CxcFacturas ADD 
 CONSTRAINT FK_CxcFacturas_CxcCorte FOREIGN KEY (FechaCorte,IdCia) REFERENCES [dbo].[CxcCorte] (FechaCorte,IdCia)
GO
 CREATE NONCLUSTERED INDEX IX_CxcFacturasFecha ON CxcFacturas(Fecha)
 CREATE NONCLUSTERED INDEX IX_CxcFacturasIdCliente ON CxcFacturas(IdCliente)
 CREATE NONCLUSTERED INDEX IX_CxcFacturasIdVend ON CxcFacturas(IdVend)
 CREATE NONCLUSTERED INDEX IX_CxcFacturasFactura ON CxcFacturas(TipDoc,Factura,IdCia)

GO
ALTER TABLE CxpFacturas ADD 
 CONSTRAINT FK_CxpFacturas_CxpCorte FOREIGN KEY (FechaCorte,IdCia) REFERENCES [dbo].[CxpCorte] (FechaCorte,IdCia)
GO
 CREATE NONCLUSTERED INDEX IX_CxpFacturasIdProveedor ON CxpFacturas(IdProveedor)
 CREATE NONCLUSTERED INDEX IX_CxpFacturasFactura ON CxpFacturas(TipFac,Factura,IdCia,IdProveedor)
 CREATE NONCLUSTERED INDEX IX_CxpFacturasFecEmision ON CxpFacturas(FecEmision)

GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


CREATE PROCEDURE 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 QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


CREATE PROCEDURE 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 QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


CREATE PROCEDURE 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 QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


CREATE PROCEDURE 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 QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


CREATE PROCEDURE 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
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


