----Conteo de los que son clientes innombrables
SELECT @nCamposLlaveInnombrable = COUNT(*)
FROM tmpprecargaarchivo WHERE cestatus IS NULL
AND nid_base = @nId_Base
AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
AND cbanderacampollave IS NULL
AND cbanderainnombrable = 'S'
----Conteo Sin Telefono
SELECT @nCamposLlaveSinTelefono1 = COUNT(*)
FROM tmpprecargaarchivo WHERE cestatus IS NULL
AND nid_base = @nId_Base
AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
AND cbanderacampollave IS NULL
AND (ctelefono1 IS NULL
OR Ltrim(Rtrim(ctelefono1)) = ''
OR Len(ctelefono1) = 0)
----Conteo Longitud Telefono
SELECT @nCamposLLaveTamanoTelefono1 = COUNT(*)
FROM tmpprecargaarchivo WHERE cestatus IS NULL
AND nid_base = @nId_Base
AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
AND cbanderacampollave IS NULL
AND (Len (ctelefono1) > 0
AND Len(ctelefono1) < 10)
----Conteo Campo Error Telefono
SELECT @nCamposLLaveErrorTelefono1 = COUNT(*)
FROM tmpprecargaarchivo WHERE cestatus IS NULL
AND nid_base = @nId_Base
AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
AND cbanderacampollave IS NULL
AND (Isnumeric(ctelefono1) = 0)
----Conteo cliente inmarcable
SELECT @nCamposLlaveInmarcable = COUNT(*)
FROM tmpprecargaarchivo WHERE cestatus IS NULL
AND nid_base = @nId_Base
AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
AND cbanderainmarcable = 'S'
---Paso 5: Una vez teniendo los contadores activos, actualizamos las tablas de tmpRegistrosNoCargados
INSERT INTO tmpregistrosnocargados (nid_base, nId_ArchivoBase,ccolumnavalidacion, ccampollave, ctelefono1, ctelefono2, ctelefono3, cnombre1, cnombre2, cappaterno, capmaterno, cdomicilio, cnumexterior, cnuminterior, ccolonia, ccp, cciudad, cestado, cmunipdel, crfc, dfechanacimiento, cemail, cidcliente, cadicional1, cadicional2, cadicional3, cadicional4, cadicional5, cadicional6, cadicional7, cadicional8, cadicional9, cadicional10, cusuarioalta, dfechaalta)
SELECT nid_base,nId_ArchivoBase, ccolumnavalidacion, ccampollave, ctelefono1, ctelefono2, ctelefono3, cnombre1, cnombre2, cappaterno, capmaterno, cdomicilio, cnumexterior, cnuminterior, ccolonia, ccp, cciudad, cestado, cmunipdel, crfc, dfechanacimiento, cemail, cidcliente, cadicional1, cadicional2, cadicional3, cadicional4, cadicional5, cadicional6, cadicional7, cadicional8, cadicional9, cadicional10, cusuarioalta, dfechaalta
FROM tmpprecargaarchivo WHERE cestatus IS NULL
AND nid_base = @nId_Base
AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
AND cbanderacampollave IS NULL
AND (cbanderaenbase = 'S'
OR cbanderacampollave = 'S'
OR cbanderanovalidados = 'S'
OR cbanderadatos = 'S'
OR cbanderanombre1 = 'S'
OR cbanderaappaterno = 'S'
OR cbanderaapmaterno = 'S'
OR cbanderatelefono = 'S'
OR cbanderaerrortelefono='S'
OR cbanderatelefonolongitud='S'
OR cbanderainnombrable = 'S'
OR cbanderainmarcable = 'S'
OR cbanderarepetido = 'S')
----Y despues actualizamos la tabla destino con los registros que cumplan los requerimientos
SET @cComandoBase = ' INSERT INTO ' + @cNombreBase
SET @cComandoBase =@cComandoBase + ' (nId_Base, cColumnaValidacion, cCampoLlave, cTelefono1, cTelefono2, cTelefono3, cNombre1, cNombre2, cApPaterno, cApMaterno, cDomicilio, '
SET @cComandoBase =@cComandoBase + ' cNumExterior, cNumInterior, cColonia, cCP, cCiudad, cEstado, cMunipDel, cRFC, dFechaNacimiento, cEmail, cIDCliente, cAdicional1, cAdicional2, '
SET @cComandoBase =@cComandoBase + ' cAdicional3, cAdicional4, cAdicional5, cAdicional6, cAdicional7, cAdicional8, cAdicional9, cAdicional10, cUsuarioAlta, dFechaAlta)'
SET @cComandoBase =@cComandoBase + ' SELECT nId_Base,cColumnaValidacion, cCampoLlave, cTelefono1, cTelefono2, cTelefono3, cNombre1, cNombre2, cApPaterno, cApMaterno, cDomicilio, cNumExterior,'
SET @cComandoBase =@cComandoBase + ' cNumInterior, cColonia, cCP, cCiudad, cEstado, cMunipDel, cRFC, dFechaNacimiento, cEmail, cIDCliente, cAdicional1, cAdicional2, cAdicional3, '
SET @cComandoBase =@cComandoBase + ' cAdicional4, cAdicional5, cAdicional6, cAdicional7, cAdicional8, cAdicional9, cAdicional10, cUsuarioAlta, dFechaAlta '
SET @cComandoBase =@cComandoBase + ' FROM tmpPreCargaArchivo '
SET @cComandoBase =@cComandoBase + ' WHERE cEstatus IS NULL AND nId_Base=' + CAST( @nId_Base AS VARCHAR)
SET @cComandoBase = @cComandoBase +' AND cColumnaValidacion=''S'' AND cbanderacampollave IS NULL AND nId_ArchivoBase=' + CAST( @nId_Archivo AS VARCHAR)
SET @cComandoBase = @cComandoBase + ' AND ( cBanderaEnBase IS NULL AND cBanderaCampoLlave IS NULL AND cBanderaNoValidados IS NULL'
SET @cComandoBase = @cComandoBase + ' AND cBanderaDatos IS NULL AND cBanderaNombre1 IS NULL AND cBanderaApPaterno IS NULL '
SET @cComandoBase = @cComandoBase + ' AND cBanderaApMaterno IS NULL AND cBanderaTelefono IS NULL AND cBanderaErrorTelefono IS NULL AND cBanderaTelefonoLongitud IS NULL AND cBanderaInnombrable IS NULL '
SET @cComandoBase =@cComandoBase + ' AND cBanderaInmarcable IS NULL AND cBanderaRepetido IS NULL )'
EXEC(@cComandoBase)
----PRINT @cComandoBase
-----Si se selecciona la opcion de base existente, se realiza la condicion
IF @cBaseExistente = 'S'
BEGIN
INSERT INTO tblhistoricobase (nid_base, caccion, cusuario, dalta)
VALUES (@nId_Base, 'ACTUALIZACION DE BASE (' + CAST( @nTotalRegistrosSubidos AS VARCHAR ) + ')', @cUsuario + '', Getdate())
SET @cAccionBase = 'ACTUALIZACION DE BASE (' + CAST( @nTotalRegistrosSubidos AS VARCHAR) + ')'
UPDATE tblbasescompletas
SET cusuarioultimaact = CAST(@cUsuario AS VARCHAR) ,
ntotalregistros = ntotalregistros + @nTotalRegistrosSubidos,
dfechaultimaact = Getdate() WHERE cestatus IS NULL
AND nid_campana = @nId_Campana
AND nid_base = @nId_Base
END
ELSE
BEGIN
SET @cAccionBase = 'ALTA DE BASE (' + CAST(@nTotalRegistrosSubidos AS VARCHAR) + ')' ----Insertamos actualizacion en la tabla de bases completas
UPDATE tblbasescompletas
SET ntotalregistros = @nTotalRegistrosSubidos WHERE cestatus IS NULL
AND nid_campana = @nId_Campana
AND nid_base = @nId_Base
END
----Insertamos los contadores en la tabla de registros
INSERT INTO tblhistoricobasedetalle (nid_campana, nid_base, cnombrearchivo, cnombrebase, caccion, ntotalregistros, ntotalregistrossubidos, ntotalregistrosnovalidados, ntotalregistrosnocargados, ncampollavevacio, ncampollaverepetidos, ncamposllaveenbase, ncamposllavesinnombre, ncamposllavesinappat, ncamposllavesinapmat, ncamposllaveinnombrable, ncamposllavesintelefono1, ncamposllavetamanotelefono1, ncamposllaveerrortelefono1, cusuarioalta, dfechaalta)
VALUES (@nId_Campana, @nId_Base, @cNombreArchivo, @cNombreBase, @cAccionBase, @nTotalRegistros, @nTotalRegistrosSubidos, @nTotalRegistrosNoValidados, @nRegistrosNoCargados, @nCampoLlaveVacio, @nCampoLlaveRepetidos, @nCamposLlaveEnBase, @nCamposLlaveSinNombre, @nCamposLlaveSinApPat, @nCamposLlaveSinApMat, @nCamposLlaveInnombrable, @nCamposLlaveSinTelefono1, @nCamposLlaveTamanoTelefono1, @nCamposLlaveErrorTelefono1, @cUsuario, Getdate()) ---Y por ultimo tomamos el id del historico para mostrar el detalle
SELECT @nId_HistoricoDetalle = MAX(nid_historicobasedetalle)
FROM tblhistoricobasedetalle WHERE cestatus IS NULL
AND nid_campana = @nId_Campana
AND nid_base = @nId_Base
AND cnombrearchivo = @cNombreArchivo
AND cnombrebase = @cNombreBase
----Y tomamos el id para sacar los contadores
SELECT @nId_HistoricoDetalle AS nId_HistoricoBaseDetalle
GO