CREATE TABLE Balances ( 
nAnno INT DEFAULT ((0)) NOT NULL,
IdCuenta VARCHAR(16) NOT NULL,
Item INT DEFAULT ((0)) NOT NULL,
Nid VARCHAR(16) NOT NULL,
CodMun VARCHAR(8),
CodDpto VARCHAR(8),
CodPais VARCHAR(8),
NidBenef VARCHAR(16),
SaldoAnt MONEY DEFAULT ((0)) NOT NULL,
Debitos MONEY DEFAULT ((0)) NOT NULL,
Creditos MONEY DEFAULT ((0)) NOT NULL,
NuevoSaldo MONEY DEFAULT ((0)) NOT NULL,
BaseGravb MONEY DEFAULT ((0)) NOT NULL
 CONSTRAINT PK_Balances PRIMARY KEY CLUSTERED (nAnno,IdCuenta,Item),
 CONSTRAINT CK_BalancesIdCuenta CHECK ((len([IdCuenta])>(0))),
 CONSTRAINT CK_BalancesNid CHECK ((len([Nid])>(0))))
CREATE TABLE ConcCuentas ( 
IdFmto INT DEFAULT ((0)) NOT NULL,
IdConcepto INT DEFAULT ((0)) NOT NULL,
Item INT DEFAULT ((0)) NOT NULL,
Operador CHAR(1) DEFAULT ('+') NOT NULL,
Cuentas VARCHAR(250),
Cuantia VARCHAR(3) DEFAULT ('S') NOT NULL,
IdCampo INT DEFAULT ((0)),
Tarifa DECIMAL(14,4) DEFAULT ((0)) NOT NULL,
NatCuenta CHAR(1) DEFAULT ('D') NOT NULL
 CONSTRAINT PK_ConcCuentas PRIMARY KEY CLUSTERED (IdFmto,IdConcepto,Item),
 CONSTRAINT CK_ConcCuentasCuantia CHECK ((len([Cuantia])>(0))),
 CONSTRAINT CK_ConcCuentasOperador CHECK ((len([Operador])>(0))))
CREATE TABLE Conceptos ( 
IdFmto INT DEFAULT (0) NOT NULL,
IdConcepto INT DEFAULT (0) NOT NULL,
Concepto VARCHAR(250) NOT NULL,
OrigenValor INT DEFAULT (1) NOT NULL,
VrMinimo MONEY DEFAULT (0) NOT NULL,
Criterios VARCHAR(250),
ColValor VARCHAR(3) DEFAULT ('S')
 CONSTRAINT PK_Conceptos PRIMARY KEY CLUSTERED (IdFmto,IdConcepto),
 CONSTRAINT CK_ConceptosConcepto CHECK ((len([Concepto]) > 0)))
CREATE TABLE Depmtos ( 
IdDpto VARCHAR(8) NOT NULL,
Dpto VARCHAR(100) NOT NULL,
IdPais VARCHAR(8) DEFAULT ('0') NOT NULL,
Inactivo BIT DEFAULT (0) NOT NULL
 CONSTRAINT PK_Depmtos PRIMARY KEY CLUSTERED (IdDpto),
 CONSTRAINT CK_DepmtosDpto CHECK ((len([Dpto]) > 0)),
 CONSTRAINT CK_DepmtosIdDpto CHECK ((len([IdDpto]) > 0)))
CREATE TABLE FmtoDetalle ( 
IdFmto INT DEFAULT ((0)) NOT NULL,
nAnno INT DEFAULT ((2000)) NOT NULL,
Numero INT DEFAULT ((0)) NOT NULL,
Item INT DEFAULT ((0)) NOT NULL,
IdConcepto INT DEFAULT ((0)) NOT NULL,
TDoc INT DEFAULT ((0)) NOT NULL,
Nid VARCHAR(20) NOT NULL,
Dv CHAR(1),
Apl1 VARCHAR(80),
Apl2 VARCHAR(60),
Nom1 VARCHAR(80),
Nom2 VARCHAR(60),
RazSocial VARCHAR(250),
Direccion VARCHAR(250),
Mun INT DEFAULT ((0)) NOT NULL,
Dpto INT DEFAULT ((0)) NOT NULL,
VrTotal MONEY DEFAULT ((0)) NOT NULL,
VrOtros MONEY DEFAULT ((0)) NOT NULL,
Referncia VARCHAR(50),
TDcnt INT DEFAULT ((0)) NOT NULL,
Nitcnt VARCHAR(20),
Dvcnt CHAR(1),
Apl1cnt VARCHAR(80),
Apl2cnt VARCHAR(60),
Nom1cnt VARCHAR(80),
Nom2cnt VARCHAR(60),
Razcnt VARCHAR(250),
Estado VARCHAR(20) DEFAULT (''),
Observ VARCHAR(100),
MunNom VARCHAR(50),
DptoNom VARCHAR(50),
CodPais VARCHAR(8),
ValorCol2 MONEY DEFAULT ((0)),
ValorCol3 MONEY DEFAULT ((0)),
ValorCol4 MONEY DEFAULT ((0)),
ValorCol5 MONEY DEFAULT ((0)),
ValorCol6 MONEY DEFAULT ((0)),
ValorCol7 MONEY DEFAULT ((0)),
ValorCol8 MONEY DEFAULT ((0)),
ValorCol9 MONEY DEFAULT ((0)),
ValorCol10 MONEY DEFAULT ((0)),
ValorCol11 MONEY DEFAULT ((0)),
ValorCol12 MONEY DEFAULT ((0))
 CONSTRAINT PK_FmtoDetalle PRIMARY KEY CLUSTERED (IdFmto,nAnno,Numero,Item),
 CONSTRAINT CK_FmtoDetallenAnno CHECK (([nAnno]>=(1990) AND [nAnno]<=(2020))),
 CONSTRAINT CK_FmtoDetalleNid CHECK ((len([Nid])>(0))))
CREATE TABLE FmtoEncab ( 
IdFmto INT DEFAULT (0) NOT NULL,
nAnno INT DEFAULT (2000) NOT NULL,
Numero INT DEFAULT (0) NOT NULL,
Modaldad INT DEFAULT (1) NOT NULL,
nVersion INT DEFAULT (0) NOT NULL,
Fecha SMALLDATETIME NOT NULL,
FecInicial SMALLDATETIME NOT NULL,
FecFinal SMALLDATETIME NOT NULL,
ValorTotal MONEY DEFAULT (0) NOT NULL,
CantReg INT DEFAULT (0) NOT NULL,
Estado VARCHAR(10) NOT NULL,
Observciones VARCHAR(250),
TimeSys SMALLDATETIME NOT NULL
 CONSTRAINT PK_FmtoEncab PRIMARY KEY CLUSTERED (IdFmto,nAnno,Numero),
 CONSTRAINT CK_FmtoEncabEstado CHECK ((len([Estado]) > 0)),
 CONSTRAINT CK_FmtoEncabModaldad CHECK (([Modaldad] = 1 or [Modaldad] = 2)),
 CONSTRAINT CK_FmtoEncabnAnno CHECK (([nAnno] >= 1990 and [nAnno] <= 2020)))
CREATE TABLE FmtoEnvios ( 
IdFmto INT DEFAULT (0) NOT NULL,
nAnno INT DEFAULT (2000) NOT NULL,
Consctivo INT DEFAULT (0) NOT NULL
 CONSTRAINT PK_FmtoEnvios PRIMARY KEY CLUSTERED (IdFmto,nAnno))
CREATE TABLE Formtos ( 
IdFmto INT DEFAULT ((0)) NOT NULL,
Formto VARCHAR(250) NOT NULL,
CantMax INT DEFAULT ((5000)) NOT NULL,
Version INT DEFAULT ((0)),
Grupo VARCHAR(20) NOT NULL
 CONSTRAINT PK_Formtos PRIMARY KEY CLUSTERED (IdFmto),
 CONSTRAINT CK_FormtosFormto CHECK ((len([Formto])>(0))),
 CONSTRAINT CK_FormtosGrupo CHECK ((len([Grupo])>(0))))
CREATE TABLE InfCnxion ( 
IdReg INT DEFAULT (0) NOT NULL,
CnxEngine VARCHAR(3) DEFAULT ('SQL') NOT NULL,
CnxProv VARCHAR(50) NOT NULL,
CnxDso VARCHAR(250) NOT NULL,
CnxDbname VARCHAR(50) NOT NULL,
CnxAutentic VARCHAR(3) DEFAULT ('SQL') NOT NULL,
CnxUid VARCHAR(50),
CnxPwd VARCHAR(50),
CnxOwner VARCHAR(20) DEFAULT ('dbo'),
CnxApp VARCHAR(10) DEFAULT ('SYSCOM') NOT NULL,
CnxVersn INT DEFAULT (0) NOT NULL
 CONSTRAINT PK_InfCnxion PRIMARY KEY CLUSTERED (IdReg),
 CONSTRAINT CK_InfCnxionCnxApp CHECK (([CnxApp] = 'SYSCOM40' or ([CnxApp] = 'BUSES' or [CnxApp] = 'SYSCOM30'))),
 CONSTRAINT CK_InfCnxionCnxAutentic CHECK (([CnxAutentic] = 'SQL' or [CnxAutentic] = 'WIN')),
 CONSTRAINT CK_InfCnxionCnxDbname CHECK ((len([CnxDbname]) > 0)),
 CONSTRAINT CK_InfCnxionCnxDso CHECK ((len([CnxDso]) > 0)),
 CONSTRAINT CK_InfCnxionCnxEngine CHECK (([CnxEngine] = 'JET' or [CnxEngine] = 'SQL')),
 CONSTRAINT CK_InfCnxionCnxProv CHECK ((len([CnxProv]) > 0)))
CREATE TABLE IngTerceros ( 
nAnno INT DEFAULT ((0)) NOT NULL,
IdCuenta VARCHAR(16) NOT NULL,
Item INT DEFAULT ((0)) NOT NULL,
TipDoc VARCHAR(3) NOT NULL,
NumDoc INT DEFAULT ((0)) NOT NULL,
IdCiaDoc CHAR(2) NOT NULL,
Nid VARCHAR(16) NOT NULL,
RazonSocial VARCHAR(250),
Apellido1 VARCHAR(80),
Apellido2 VARCHAR(60),
Nombre1 VARCHAR(80),
Nombre2 VARCHAR(60),
Tid CHAR(1) NOT NULL,
Dv CHAR(1),
Direccion VARCHAR(250),
Telefono VARCHAR(50),
CodMun VARCHAR(8),
CodDpto VARCHAR(8),
CodPais VARCHAR(8),
nPosNom INT DEFAULT ((0)) NOT NULL,
VrIngreso MONEY DEFAULT ((0)) NOT NULL,
NidBenef VARCHAR(16),
NomBenef VARCHAR(250),
ApeBenef1 VARCHAR(80),
ApeBenef2 VARCHAR(60),
NomBenef1 VARCHAR(80),
NomBenef2 VARCHAR(60),
TidBenef CHAR(1),
DvBenef CHAR(1),
DirBenef VARCHAR(250),
TelBenef VARCHAR(50),
MunBenef VARCHAR(8),
DptoBenef VARCHAR(8),
PaisBenef VARCHAR(8),
nPosBenef INT DEFAULT ((0)) NOT NULL
 CONSTRAINT PK_IngTerceros PRIMARY KEY CLUSTERED (nAnno,IdCuenta,Item),
 CONSTRAINT CK_IngTercerosIdCiaDoc CHECK ((len([IdCiaDoc])>(0))),
 CONSTRAINT CK_IngTercerosIdCuenta CHECK ((len([IdCuenta])>(0))),
 CONSTRAINT CK_IngTercerosNid CHECK ((len([Nid])>(0))),
 CONSTRAINT CK_IngTercerosTid CHECK ((len([Tid])>(0))),
 CONSTRAINT CK_IngTercerosTipDoc CHECK ((len([TipDoc])>(0))))
CREATE TABLE LogPro ( 
IdLog INT DEFAULT (0) NOT NULL,
IdPro VARCHAR(20) NOT NULL,
Fecha SMALLDATETIME NOT NULL,
TimeSys SMALLDATETIME NOT NULL,
IdUsuario VARCHAR(11) NOT NULL,
Nombre VARCHAR(50) NOT NULL,
NomTabla VARCHAR(20) NOT NULL,
IdFmto INT DEFAULT (0) NOT NULL,
nAnno INT DEFAULT (0) NOT NULL,
Observacion VARCHAR(250) NOT NULL
 CONSTRAINT PK_LogPro PRIMARY KEY CLUSTERED (IdLog,IdPro),
 CONSTRAINT CK_LogProIdPro CHECK ((len([IdPro]) > 0)),
 CONSTRAINT CK_LogProIdUsuario CHECK ((len([IdUsuario]) > 0)),
 CONSTRAINT CK_LogProNombre CHECK ((len([Nombre]) > 0)),
 CONSTRAINT CK_LogProNomTabla CHECK ((len([NomTabla]) > 0)),
 CONSTRAINT CK_LogProObservacion CHECK ((len([Observacion]) > 0)))
CREATE TABLE Municipios ( 
IdMcp VARCHAR(8) NOT NULL,
Municipio VARCHAR(100) NOT NULL,
IdDpto VARCHAR(8) NOT NULL,
Inactivo BIT DEFAULT (0) NOT NULL
 CONSTRAINT PK_Municipios PRIMARY KEY CLUSTERED (IdMcp),
 CONSTRAINT CK_MunicipiosIdDpto CHECK ((len([IdDpto]) > 0)),
 CONSTRAINT CK_MunicipiosIdMcp CHECK ((len([IdMcp]) > 0)),
 CONSTRAINT CK_MunicipiosMunicipio CHECK ((len([Municipio]) > 0)))
CREATE TABLE Puc ( 
IdCuenta VARCHAR(16) NOT NULL,
NomCuenta VARCHAR(100) NOT NULL,
Mayor BIT DEFAULT (0) NOT NULL,
Movimiento BIT DEFAULT (0) NOT NULL,
Tercero BIT DEFAULT (0) NOT NULL,
BaseGravable BIT DEFAULT (0) NOT NULL,
Naturaleza CHAR(1) DEFAULT ('D'),
IdFmto INT DEFAULT (0) NOT NULL,
IdConcepto INT DEFAULT (0) NOT NULL
 CONSTRAINT PK_Puc PRIMARY KEY CLUSTERED (IdCuenta),
 CONSTRAINT CK_PucIdCuenta CHECK ((len([IdCuenta]) > 0)),
 CONSTRAINT CK_PucNomCuenta CHECK ((len([NomCuenta]) > 0)))
CREATE TABLE Terceros ( 
Nid VARCHAR(16) NOT NULL,
RazonSocial VARCHAR(250) NOT NULL,
Tid CHAR(1) NOT NULL,
Dv CHAR(1),
Apellido1 VARCHAR(80),
Apellido2 VARCHAR(60),
Nombre1 VARCHAR(80),
Nombre2 VARCHAR(60),
Direccion VARCHAR(250),
Telefono VARCHAR(50),
CodMun VARCHAR(8) NOT NULL,
CodDpto VARCHAR(8) NOT NULL,
CodPais VARCHAR(8) NOT NULL
 CONSTRAINT PK_Terceros PRIMARY KEY CLUSTERED (Nid),
 CONSTRAINT CK_TercerosCodDpto CHECK ((len([CodDpto])>(0))),
 CONSTRAINT CK_TercerosCodMun CHECK ((len([CodMun])>(0))),
 CONSTRAINT CK_TercerosCodPais CHECK ((len([CodPais])>(0))),
 CONSTRAINT CK_TercerosNid CHECK ((len([Nid])>(0))),
 CONSTRAINT CK_TercerosRazonSocial CHECK ((len([RazonSocial])>(0))),
 CONSTRAINT CK_TercerosTid CHECK ((len([Tid])>(0))))
CREATE TABLE TiposId ( 
IdTdoc INT DEFAULT (0) NOT NULL,
TipoDoc VARCHAR(50) NOT NULL
 CONSTRAINT PK_TiposId PRIMARY KEY CLUSTERED (IdTdoc),
 CONSTRAINT CK_TiposIdTipoDoc CHECK ((len([TipoDoc]) > 0)))
CREATE TABLE tmDetalle ( 
IdEst CHAR(2) NOT NULL,
IdFmto INT DEFAULT ((0)) NOT NULL,
Item INT DEFAULT ((0)) NOT NULL,
IdConcepto INT DEFAULT ((0)) NOT NULL,
TDoc INT DEFAULT ((0)) NOT NULL,
Nid VARCHAR(20) NOT NULL,
Dv CHAR(1),
Apl1 VARCHAR(80),
Apl2 VARCHAR(60),
Nom1 VARCHAR(80),
Nom2 VARCHAR(60),
RazSocial VARCHAR(250),
Direccion VARCHAR(250),
Mun INT DEFAULT ((0)) NOT NULL,
Dpto INT DEFAULT ((0)) NOT NULL,
VrTotal MONEY DEFAULT ((0)) NOT NULL,
VrOtros MONEY DEFAULT ((0)) NOT NULL,
Referncia VARCHAR(50),
TDcnt INT DEFAULT ((0)) NOT NULL,
Nitcnt VARCHAR(20),
Dvcnt CHAR(1),
Apl1cnt VARCHAR(80),
Apl2cnt VARCHAR(60),
Nom1cnt VARCHAR(80),
Nom2cnt VARCHAR(60),
Razcnt VARCHAR(250),
Estado VARCHAR(20) NOT NULL,
Observ VARCHAR(100),
MunNom VARCHAR(50),
DptoNom VARCHAR(50),
CodPais VARCHAR(8),
ValorCol2 MONEY DEFAULT ((0)),
ValorCol3 MONEY DEFAULT ((0)),
ValorCol4 MONEY DEFAULT ((0)),
ValorCol5 MONEY DEFAULT ((0)),
ValorCol6 MONEY DEFAULT ((0)),
ValorCol7 MONEY DEFAULT ((0)),
ValorCol8 MONEY DEFAULT ((0)),
ValorCol9 MONEY DEFAULT ((0)),
ValorCol10 MONEY DEFAULT ((0)),
ValorCol11 MONEY DEFAULT ((0)),
ValorCol12 MONEY DEFAULT ((0))
 CONSTRAINT PK_tmDetalle PRIMARY KEY CLUSTERED (IdEst,IdFmto,Item),
 CONSTRAINT CK_tmDetalleEstado CHECK ((len([Estado])>(0))),
 CONSTRAINT CK_tmDetalleIdEst CHECK ((len([IdEst])>(0))),
 CONSTRAINT CK_tmDetalleNid CHECK ((len([Nid])>(0))))
GO
ALTER TABLE Balances ADD 
 CONSTRAINT FK_Balances_Puc FOREIGN KEY (IdCuenta) REFERENCES [dbo].[Puc] (IdCuenta)
GO
 CREATE NONCLUSTERED INDEX IX_BalancesIdCuenta ON Balances(IdCuenta)
 CREATE NONCLUSTERED INDEX IX_BalancesNid ON Balances(Nid)

GO
ALTER TABLE ConcCuentas ADD 
 CONSTRAINT FK_ConcCuentas_Conceptos FOREIGN KEY (IdFmto,IdConcepto) REFERENCES [dbo].[Conceptos] (IdFmto,IdConcepto)
GO
ALTER TABLE Conceptos ADD 
 CONSTRAINT FK_Conceptos_Formtos FOREIGN KEY (IdFmto) REFERENCES [dbo].[Formtos] (IdFmto)
GO
 CREATE NONCLUSTERED INDEX IX_ConceptosIdFmto ON Conceptos(IdFmto)
 CREATE NONCLUSTERED INDEX IX_ConceptosIdConcepto ON Conceptos(IdConcepto)

GO
ALTER TABLE FmtoDetalle ADD 
 CONSTRAINT FK_FmtoDetalle_Conceptos FOREIGN KEY (IdFmto,IdConcepto) REFERENCES [dbo].[Conceptos] (IdFmto,IdConcepto),
 CONSTRAINT FK_FmtoDetalle_FmtoEncab FOREIGN KEY (IdFmto,nAnno,Numero) REFERENCES [dbo].[FmtoEncab] (IdFmto,nAnno,Numero),
 CONSTRAINT FK_FmtoDetalle_Formtos FOREIGN KEY (IdFmto) REFERENCES [dbo].[Formtos] (IdFmto),
 CONSTRAINT FK_FmtoDetalle_TiposId FOREIGN KEY (TDoc) REFERENCES [dbo].[TiposId] (IdTdoc)
GO
 CREATE NONCLUSTERED INDEX IX_FmtoDetalleNumero ON FmtoDetalle(IdFmto,nAnno,Numero)
 CREATE NONCLUSTERED INDEX IX_FmtoDetalleIdConcepto ON FmtoDetalle(IdFmto,IdConcepto)
 CREATE NONCLUSTERED INDEX IX_FmtoDetalleItem ON FmtoDetalle(Item)
 CREATE NONCLUSTERED INDEX IX_FmtoDetalleTDoc ON FmtoDetalle(TDoc)
 CREATE NONCLUSTERED INDEX IX_FmtoDetalleNid ON FmtoDetalle(Nid)

GO
ALTER TABLE FmtoEncab ADD 
 CONSTRAINT FK_FmtoEncab_Formtos FOREIGN KEY (IdFmto) REFERENCES [dbo].[Formtos] (IdFmto)
GO
 CREATE NONCLUSTERED INDEX IX_FmtoEncabModaldad ON FmtoEncab(Modaldad)
 CREATE NONCLUSTERED INDEX IX_FmtoEncabnVersion ON FmtoEncab(nVersion)
 CREATE NONCLUSTERED INDEX IX_FmtoEncabFecha ON FmtoEncab(Fecha)

GO
ALTER TABLE FmtoEnvios ADD 
 CONSTRAINT FK_FmtoEnvios_Formtos FOREIGN KEY (IdFmto) REFERENCES [dbo].[Formtos] (IdFmto)
GO
 CREATE NONCLUSTERED INDEX IX_LogProIdLog ON LogPro(IdLog)
 CREATE NONCLUSTERED INDEX IX_LogProFecha ON LogPro(Fecha)
 CREATE NONCLUSTERED INDEX IX_LogProTimeSys ON LogPro(TimeSys)
 CREATE NONCLUSTERED INDEX IX_LogProIdFmto ON LogPro(IdFmto)
 CREATE NONCLUSTERED INDEX IX_LogPronAnno ON LogPro(nAnno)
 CREATE NONCLUSTERED INDEX IX_LogProIdUsuario ON LogPro(IdUsuario)

GO
ALTER TABLE Municipios ADD 
 CONSTRAINT FK_Municipios_Depmtos FOREIGN KEY (IdDpto) REFERENCES [dbo].[Depmtos] (IdDpto)
GO
 CREATE NONCLUSTERED INDEX IX_MunicipiosIdDpto ON Municipios(IdDpto)

GO
 CREATE NONCLUSTERED INDEX IX_PucIdFmto ON Puc(IdFmto)
 CREATE NONCLUSTERED INDEX IX_PucIdConcepto ON Puc(IdConcepto)

GO
 CREATE NONCLUSTERED INDEX IX_tmDetalleIdConcepto ON tmDetalle(IdConcepto)
 CREATE NONCLUSTERED INDEX IX_tmDetalleTDoc ON tmDetalle(TDoc)
 CREATE NONCLUSTERED INDEX IX_tmDetalleNid ON tmDetalle(Nid)
 CREATE NONCLUSTERED INDEX IX_tmDetalleMun ON tmDetalle(Mun)
 CREATE NONCLUSTERED INDEX IX_tmDetalleDpto ON tmDetalle(Dpto)
 CREATE NONCLUSTERED INDEX IX_tmDetalleIdFmto ON tmDetalle(IdFmto)

GO
