--Hash:EDF467AA06ABA0836096E3F79635B797
SET XACT_ABORT ON
BEGIN TRANSACTION;

GO

SET DATEFORMAT mdy;

--Validar que no existan scripts que no se hayan ejecutado
--//
IF EXISTS
(
	SELECT a.NumVersion + 1 AS HuecoInicio
	FROM ZiurVersiones a
	LEFT JOIN ZiurVersiones b ON a.NumVersion + 1 = b.NumVersion
	WHERE a.NumVersion>830 AND b.NumVersion IS NULL
	AND a.NumVersion + 1 < 897
)
RAISERROR('Error : hay un script que no se ejecuto , debe ejecutarlo manualmente.', 20, -1) with log
--//

/*
 Plantilla de script anterior a la implementación							
--------------------------------------------------------------------------------------
 Este archivo contiene instrucciones de SQL que se ejecutarán antes del script de compilación	
 Use la sintaxis de SQLCMD para incluir un archivo en el script anterior a la implementación			
 Ejemplo:      :r .\miArchivo.sql								
 Use la sintaxis de SQLCMD para hacer referencia a una variable en el script anterior a la implementación		
 Ejemplo:      :setvar TableName miTabla							
               SELECT * FROM [$(TableName)]					
--------------------------------------------------------------------------------------
*/
GO

ALTER VIEW vLibroAuxiliar_Mov
AS
SELECT        1 AS Orden, YEAR(Enc.Fecha) AS Anno, MONTH(Enc.Fecha) AS Mess, Cta.CodCuenta, Cta.NomCuenta, Enc_C.IdCliente, LTRIM(RTRIM(Cli.Apellidos + N' ' + Cli.Nombres)) AS NomTercero, '2011 01' AS MesLetras, Enc.Fecha, 
                         Enc_C.Debito, Enc_C.Credito, Enc_C.Nota, Enc_C.DocReferencia AS DocRef, Doc.CodDocumento + N' ' + COALESCE (Enc.IdPrefijo, N'') + N' ' + CAST(Enc.NumDocumento AS NVARCHAR) + COALESCE (Enc_C.DocReferencia, N'') 
                         AS Doc, Doc.CodDocumento + N' ' + Enc.NumDocumentoExt AS Doc_FC, Enc_C.IdEncabCont, Cta_C.Factor, Emp.IdEmpresa, Doc.CodDocumento, Cta.IdCuentaTipo, Enc_C.IdInventario, Enc_C.IdAbonaDoc, Enc_C.IdAbonaDif, 
                         Emp.EmpresaCodigo, Cta_T.IdClase, Enc_C.IdCentroCosto, dbo.CentroCostos.NomCentroCosto, Doc.IdDocumento, Enc.IdEncab, Enc_C.RetencionBase, Enc_C.RetencionPorc, Enc_C.EsNotGAAP, Enc_C.EsIFRS, Cli.Identificacion, 
                         Cli1.Identificacion + '-' + LTRIM(RTRIM(Cli1.Apellidos + N' ' + Cli1.Nombres)) AS NomEmpleado, Cta.CodCuentaIFRS, Cta.NomCuentaIFRS, ciud.NomCiudad, COALESCE (Enc.IdPrefijo, N'') 
                         + N' ' + CAST(Enc.NumDocumento AS NVARCHAR) AS NumDocumento, Doc.NomDocumento, LTRIM(RTRIM(Suc.CodSucursal + N'-' + Suc.NomSucursal)) AS Sucursal, Suc.IdSucursal, Enc_C.DebitoExt, Enc_C.CreditoExt
FROM            dbo.Encabezados_Cont AS Enc_C INNER JOIN
                         dbo.Encabezados AS Enc ON Enc_C.IdEncab = Enc.IdEncab INNER JOIN
                         dbo.Empresas AS Emp ON Enc.IdEmpresa = Emp.IdEmpresa LEFT JOIN
						 dbo.Sucursales AS Suc ON Enc.IdSucursal = Suc.IdSucursal INNER JOIN
                         dbo.VClientes2 AS Cli ON Enc_C.IdCliente = Cli.IdCliente INNER JOIN
                         dbo.Cuentas AS Cta ON Enc_C.IdCuenta = Cta.IdCuenta INNER JOIN
                         dbo.Cuentas_Tipos AS Cta_T ON Cta.IdCuentaTipo = Cta_T.IdCuentaTipo INNER JOIN
                         dbo.Cuentas_Clases AS Cta_C ON Cta_T.IdClase = Cta_C.IdClase INNER JOIN
                         dbo.Documentos AS Doc ON Enc.IdDocumento = Doc.IdDocumento LEFT OUTER JOIN
                         dbo.CentroCostos ON Enc_C.IdCentroCosto = dbo.CentroCostos.IdCentroCosto LEFT OUTER JOIN
                         dbo.VClientes2 AS Cli1 ON Enc_C.IdEmpleado = Cli1.IdCliente LEFT OUTER JOIN
                         dbo.Ciudades AS ciud ON ciud.IdCiudad = Cli.IdCiudad
WHERE        (Enc.EsAnulado = 0)

GO

ALTER PROCEDURE [dbo].[GetBalancePrueba]
	@FechaIni NVARCHAR(10) = '',
	@FechaFin NVARCHAR(10) = '',
	@CodCuentaIni NVARCHAR(200)='',
	@CodCuentaFin NVARCHAR(200)='',
    @Detallar BIT = 1,
	@IdEmpresas NVARCHAR(1000) = '',
	@IdDocsExc NVARCHAR(1000) ='',
	@IdCentroCosto INT = NULL,
	@EsNotGAAP BIT = NULL,
    @EsNotIFRS BIT = NULL,
	@IdCliente INT=NUll,
	@EsAgrupIFRS BIT = NULL	
AS
BEGIN

DECLARE

@IdTipoPUC INT,
@FechaIniT DATETIME,
@FechaFinT DATETIME,
@SepCuenta NVARCHAR(100)

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SELECT @IdTipoPUC = ValParametro FROM PARAMETROS WHERE CodParametro = 1
IF @IdTipoPUC IS NULL
	SET @IdTipoPUC = 1

SELECT @SepCuenta = ValParametro FROM PARAMETROS WHERE CodParametro = 9
IF @SepCuenta IS NULL
	SET @SepCuenta = '-'
	
SET @FechaIniT = CAST(CONVERT(DATETIME, @FechaIni, 103) + ' 00:00:00' AS DATETIME)
SET @FechaFinT = CAST(CONVERT(DATETIME, @FechaFin, 103) + ' 23:59:59' AS DATETIME)

;WITH tmpMov (CodCuenta, NomCuenta, DetallarCliente, Factor, SenDet, IdCliente, SaldoIni, Debito, Credito, SaldoIniExt, DebitoExt, CreditoExt, CodCuentaIFRS,DebitoGAAP,CreditoGAAP,DebitoIFRS,CreditoIFRS,SaldoIniGAAP,SaldoIniIFRS)
as
(
	SELECT 
	Cta.CodCuenta, Cta.NomCuenta, Cta.DetallarCliente, Factor, (@Detallar & Cta.DetallarCliente) as SenDet, CASE WHEN (@Detallar = 1 AND Cta.DetallarCliente = 1) THEN Enc_C.IdCliente ELSE NULL END AS [IdCliente],
	0.0 AS [SaldoIni], 
	CAST(SUM([Debito]) AS NUMERIC(28,6)) AS [Debitos], 
	CAST(SUM([Credito]) AS NUMERIC(28,6)) AS [Creditos], 	
	0.0 AS [SaldoIniExt],
	CAST(SUM([DebitoExt]) AS NUMERIC(28,6)) AS [DebitosExt], 
	CAST(SUM([CreditoExt]) AS NUMERIC(28,6)) AS [CreditosExt],
	CodCuentaIFRS,
	CAST(sum(case when Enc_C.EsNotGAAP=0 THEN  Debito else 0 end) AS NUMERIC(28,6)) DebitoGAAP,
	CAST(sum(case when Enc_C.EsNotGAAP=0 THEN  Credito else 0 end) AS NUMERIC(28,6))  CreditoGAAP,
	CAST(sum(case when Enc_C.EsIFRS=0 THEN  Debito else 0 end) AS NUMERIC(28,6)) DebitoIFRS,
	CAST(sum(case when Enc_C.EsIFRS=0 THEN  Credito else 0 end) AS NUMERIC(28,6)) CreditoIFRS,
	0.0 AS [SaldoIniGAAP],0.0 AS [SaldoIniIFRS]
	FROM 
	dbo.Encabezados AS Enc INNER JOIN dbo.Cuentas AS Cta INNER JOIN dbo.Cuentas_Tipos AS Cta_T ON Cta.IdCuentaTipo = Cta_T.IdCuentaTipo INNER JOIN dbo.Cuentas_Clases AS Cta_C ON Cta_T.IdClase = Cta_C.IdClase INNER JOIN dbo.Encabezados_Cont AS Enc_C ON Cta.IdCuenta = Enc_C.IdCuenta ON Enc.IdEncab = Enc_C.IdEncab
	WHERE
	(Enc.Fecha >= @FechaIniT And Enc.Fecha <= @FechaFinT) AND
	Cta.CodCuenta BETWEEN @CodCuentaIni And @CodCuentaFin AND
	Enc.IdEmpresa IN(select number from iter$simple_intlist_to_tbl(@IdEmpresas)) AND
	Enc.IdDocumento NOT IN(select nstr from iter$charlist_to_tbl(@IdDocsExc,DEFAULT)) AND
	Enc.EsAnulado=0 AND
	(@EsNotGAAP IS NULL OR Enc_C.EsNotGAAP=@EsNotGAAP) AND
	(@EsNotIFRS IS NULL OR Enc_C.EsIFRS=@EsNotIFRS) AND
	(@IdCentroCosto IS NULL OR Enc_C.IdCentroCosto=@IdCentroCosto) AND
	(@IdCliente IS NULL OR Enc_C.IdCliente=@IdCliente)
	GROUP BY
	Cta.CodCuenta, Cta.NomCuenta, Cta.DetallarCliente, Factor, (@Detallar & Cta.DetallarCliente), CASE WHEN (@Detallar = 1 AND Cta.DetallarCliente = 1) THEN Enc_C.IdCliente ELSE NULL END,CodCuentaIFRS
)
,
tmpSaldoIni (CodCuenta, NomCuenta, DetallarCliente, Factor, SenDet, IdCliente, SaldoIni, Debito, Credito,SaldoIniExt, DebitoExt, CreditoExt,CodCuentaIFRS,DebitoGAAP,CreditoGAAP,DebitoIFRS,CreditoIFRS,SaldoIniGAAP,SaldoIniIFRS)
as
(
	SELECT 
	Cta.CodCuenta, Cta.NomCuenta, Cta.DetallarCliente, Factor, (@Detallar & Cta.DetallarCliente) as SenDet, CASE WHEN (@Detallar = 1 AND Cta.DetallarCliente = 1) THEN Enc_C.IdCliente ELSE NULL END AS [IdCliente],
	CAST(SUM(([Debito]-[Credito])*[Factor]) AS NUMERIC(28,6)) AS [SaldoIni], 
	0.0 AS [Debitos], 
	0.0 AS [Creditos], 
	CAST(SUM(([DebitoExt]-[CreditoExt])*[Factor]) AS NUMERIC(28,6)) AS [SaldoIniExt],
	0.0 AS [DebitosExt], 
	0.0 AS [CreditosExt], 	
	CodCuentaIFRS,
	0.0 AS DebitoGAAP,0.0 AS CreditoGAAP,0.0 AS DebitoIFRS,0.0 AS CreditoIFRS,
	CAST(sum(case when Enc_C.EsNotGAAP=0 THEN  Factor * ([Debito]-[Credito]) else 0 end) AS NUMERIC(28,6)) SaldoFinGAAP,
	CAST(sum(case when Enc_C.EsIFRS=0 THEN  Factor * ([Debito]-[Credito]) else 0 end) AS NUMERIC(28,6)) SaldoFinIFRS
	FROM 
	dbo.Encabezados AS Enc INNER JOIN dbo.Cuentas AS Cta INNER JOIN dbo.Cuentas_Tipos AS Cta_T ON Cta.IdCuentaTipo = Cta_T.IdCuentaTipo INNER JOIN dbo.Cuentas_Clases AS Cta_C ON Cta_T.IdClase = Cta_C.IdClase INNER JOIN dbo.Encabezados_Cont AS Enc_C ON Cta.IdCuenta = Enc_C.IdCuenta ON Enc.IdEncab = Enc_C.IdEncab
	WHERE
	Enc.Fecha < @FechaIniT AND
	Cta.CodCuenta BETWEEN @CodCuentaIni And @CodCuentaFin AND
	Enc.IdEmpresa IN(select number from iter$simple_intlist_to_tbl(@IdEmpresas)) AND
	--Enc.IdDocumento NOT IN(select nstr from iter$charlist_to_tbl(@IdDocsExc,DEFAULT)) AND
	Enc.EsAnulado=0
	AND

	(@EsNotGAAP IS NULL OR Enc_C.EsNotGAAP=@EsNotGAAP) AND
	(@EsNotIFRS IS NULL OR Enc_C.EsIFRS=@EsNotIFRS) AND
	(@IdCentroCosto IS NULL OR Enc_C.IdCentroCosto=@IdCentroCosto) AND
	(@IdCliente IS NULL OR Enc_C.IdCliente=@IdCliente)

	GROUP BY
	Cta.CodCuenta, Cta.NomCuenta, Cta.DetallarCliente, Factor, (@Detallar & Cta.DetallarCliente), CASE WHEN (@Detallar = 1 AND Cta.DetallarCliente = 1) THEN Enc_C.IdCliente ELSE NULL END,CodCuentaIFRS
),

	tempCuentas(CodCuenta,NomCuentaBase,CodCuentaEspejo,NomCuentaEspejo)
		as(
			select CodAgrup,
			CASE WHEN @EsAgrupIFRS=1 and min(isnull(NomCuentaIFRS,'')) <>'' then min(isnull(NomCuentaIFRS,'')) else min(isnull(NomCuenta,'')) end NomCuenta,
			CASE WHEN @EsAgrupIFRS=1 then min(isnull(CodCuenta,'')) else min(isnull(CodCuentaIFRS,''))end CodCuentaEspejo,
			CASE WHEN @EsAgrupIFRS=1 then min(isnull(NomCuenta,'')) else min(isnull(NomCuentaIFRS,''))end NomCuentaEspejo
			from
			(
			select CodCuenta,NomCuenta,
			CodCuentaIFRS,NomCuentaIFRS,
			 case when @EsAgrupIFRS=1 and len(CodCuentaIFRS)> 0 then COALESCE(CodCuentaIFRS,CodCuenta) else CodCuenta end CodAgrup
			from cuentas
			where idtipoPuc=@IdTipoPUC
			)as q1
			group by CodAgrup
		)

SELECT
CodCuenta,
q1.Cuenta_Tercero, q1.Cuenta_Nit, q1.IdTipoIdent, q1.NomTipoIdent, q1.Identificacion, q1.DVCliente, q1.Direccion, q1.DireccionFormato1, q1.DireccionFormato2, q1.IdCiudad, q1.NomCiudad, 
q1.SaldoIni, q1.TotalDebitos, q1.TotalCreditos, q1.SaldoIniExt, q1.TotalDebitosExt, q1.TotalCreditosExt,  q1.SaldoFin, q1.SaldoFinExt, q1.DetallarCliente,
q1.SaldoIniGAAP, q1.TotalDebitosGAAP, q1.TotalCreditosGAAP,q1.SaldoFinGAAP,
q1.SaldoIniIFRS, q1.TotalDebitosIFRS, q1.TotalCreditosIFRS,q1.SaldoFinIFRS,
q1.CodNiv1 AS CodNiv1, CASE WHEN q1.CodNiv2 = q1.CodNiv1 THEN NULL ELSE q1.CodNiv7 END AS CodNiv2, CASE WHEN q1.CodNiv3 = q1.CodNiv2 THEN NULL ELSE q1.CodNiv7 END AS CodNiv3, CASE WHEN q1.CodNiv4 = q1.CodNiv3 THEN NULL ELSE q1.CodNiv7 END AS CodNiv4, CASE WHEN q1.CodNiv5 = q1.CodNiv4 THEN NULL ELSE q1.CodNiv7 END AS CodNiv5, CASE WHEN q1.CodNiv6 = q1.CodNiv5 THEN NULL ELSE q1.CodNiv6 END AS CodNiv6, CASE WHEN q1.CodNiv7 = q1.CodNiv6 THEN NULL ELSE q1.CodNiv7 END AS CodNiv7,
q1.NomCta1, q1.NomCta2, q1.NomCta3, q1.NomCta4, q1.NomCta5, q1.NomCta6, q1.NomCta7,
q1.CodNiv1 + @SepCuenta + q1.NomCta1 AS NomCuenta1, 
CASE WHEN q1.CodNiv2 = q1.CodNiv1 THEN NULL ELSE q1.CodNiv2 + @SepCuenta + q1.NomCta2 END AS NomCuenta2,
CASE WHEN q1.CodNiv3 = q1.CodNiv2 THEN NULL ELSE q1.CodNiv3 + @SepCuenta + q1.NomCta3 END AS NomCuenta3,
CASE WHEN q1.CodNiv4 = q1.CodNiv3 THEN NULL ELSE q1.CodNiv4 + @SepCuenta + q1.NomCta4 END AS NomCuenta4,
CASE WHEN q1.CodNiv5 = q1.CodNiv4 THEN NULL ELSE q1.CodNiv5 + @SepCuenta + q1.NomCta5 END AS NomCuenta5,
CASE WHEN q1.CodNiv6 = q1.CodNiv5 THEN NULL ELSE q1.CodNiv6 + @SepCuenta + q1.NomCta6 END AS NomCuenta6,
CASE WHEN q1.CodNiv7 = q1.CodNiv6 THEN NULL ELSE q1.CodNiv7 + @SepCuenta + q1.NomCta7 END AS NomCuenta7,

q1.CodEsp1 + @SepCuenta + q1.NomCtaEsp1 AS NomCuentaEsp1, 
CASE WHEN q1.CodNiv2 = q1.CodNiv1 THEN NULL ELSE q1.CodEsp2 + @SepCuenta + q1.NomCtaEsp2 END AS NomCuentaEsp2,
CASE WHEN q1.CodNiv3 = q1.CodNiv2 THEN NULL ELSE q1.CodEsp3 + @SepCuenta + q1.NomCtaEsp3 END AS NomCuentaEsp3,
CASE WHEN q1.CodNiv4 = q1.CodNiv3 THEN NULL ELSE q1.CodEsp4 + @SepCuenta + q1.NomCtaEsp4 END AS NomCuentaEsp4,
CASE WHEN q1.CodNiv5 = q1.CodNiv4 THEN NULL ELSE q1.CodEsp5 + @SepCuenta + q1.NomCtaEsp5 END AS NomCuentaEsp5,
CASE WHEN q1.CodNiv6 = q1.CodNiv5 THEN NULL ELSE q1.CodEsp6 + @SepCuenta + q1.NomCtaEsp6 END AS NomCuentaEsp6,
CASE WHEN q1.CodNiv7 = q1.CodNiv6 THEN NULL ELSE q1.CodEsp7 + @SepCuenta + q1.NomCtaEsp7 END AS NomCuentaEsp7,
CodCtaUgpp,
NomCtaUgpp

FROM 
(
	SELECT u.CodCuenta,u.CodCuentaIFRS,
	CASE WHEN u.SenDet = 1 THEN LTRIM(RTRIM(Cli.[Apellidos] + ' ' + Cli.[Nombres])) ELSE u.NomCuenta END AS [Cuenta_Tercero],
	CASE WHEN u.SenDet = 1 THEN LTRIM(RTRIM(Cli.[NomTipoIdent] + ' ' + Cli.[Identificacion])) ELSE '' END AS [Cuenta_Nit],
	CASE WHEN u.SenDet = 1 THEN Cli.IdTipoIdent ELSE '' END AS IdTipoIdent,
	CASE WHEN u.SenDet = 1 THEN Cli.NomTipoIdent ELSE '' END AS NomTipoIdent,
	CASE WHEN u.SenDet = 1 THEN Cli.Identificacion ELSE '' END AS Identificacion,
	CASE WHEN u.SenDet = 1 THEN Cli.DVCliente ELSE '' END AS DVCliente,
	CASE WHEN u.SenDet = 1 THEN CliDir.Direccion ELSE '' END AS Direccion,
	CASE WHEN u.SenDet = 1 THEN CliDir.DireccionFormato1 ELSE '' END AS DireccionFormato1,
	CASE WHEN u.SenDet = 1 THEN CliDir.DireccionFormato2 ELSE '' END AS DireccionFormato2,
	CASE WHEN u.SenDet = 1 THEN CliDir.IdCiudad ELSE '' END AS IdCiudad,
	CASE WHEN u.SenDet = 1 THEN CliDir.NomCiudad ELSE '' END AS NomCiudad,
	u.SaldoIni, u.SaldoIniExt, u.TotalDebitos, u.TotalDebitosExt, u.TotalCreditos, u.TotalCreditosExt, u.SaldoIni + (u.TotalDebitos - u.TotalCreditos) * u.Factor as SaldoFin, 	u.SaldoIniExt + (u.TotalDebitosExt - u.TotalCreditosExt) * u.Factor as SaldoFinExt,	u.SaldoIniGAAP, u.TotalDebitosGAAP, u.TotalCreditosGAAP, u.SaldoIniGAAP + (u.TotalDebitosGAAP - u.TotalCreditosGAAP) * u.Factor as SaldoFinGAAP, 
	u.SaldoIniIFRS, u.TotalDebitosIFRS, u.TotalCreditosIFRS, u.SaldoIniIFRS + (u.TotalDebitosIFRS - u.TotalCreditosIFRS) * u.Factor as SaldoFinIFRS,  
	u.DetallarCliente,
	SUBSTRING(u.CodCuenta,1,1) AS CodNiv1, SUBSTRING(u.CodCuenta,1,2) AS CodNiv2, SUBSTRING(u.CodCuenta,1,4) AS CodNiv3, SUBSTRING(u.CodCuenta,1,6) AS CodNiv4, SUBSTRING(u.CodCuenta,1,8) AS CodNiv5, SUBSTRING(u.CodCuenta,1,10) AS CodNiv6, SUBSTRING(u.CodCuenta,1,12) AS CodNiv7,
	Cta1.NomCuentaBase AS NomCta1, 
	Cta2.NomCuentaBase AS NomCta2, 
	Cta3.NomCuentaBase AS NomCta3, 
	Cta4.NomCuentaBase AS NomCta4, 
	Cta5.NomCuentaBase AS NomCta5, 
	Cta6.NomCuentaBase AS NomCta6, 
	Cta7.NomCuentaBase AS NomCta7,
    Cta1.NomCuentaEspejo AS NomCtaEsp1, 
	Cta2.NomCuentaEspejo AS NomCtaEsp2, 
	Cta3.NomCuentaEspejo AS NomCtaEsp3, 
	Cta4.NomCuentaEspejo AS NomCtaEsp4, 
	Cta5.NomCuentaEspejo AS NomCtaEsp5, 
	Cta6.NomCuentaEspejo AS NomCtaEsp6, 
	Cta7.NomCuentaEspejo AS NomCtaEsp7,
	Cta1.CodCuentaEspejo AS CodEsp1, 
	Cta2.CodCuentaEspejo AS CodEsp2, 
	Cta3.CodCuentaEspejo AS CodEsp3, 
	Cta4.CodCuentaEspejo AS CodEsp4, 
	Cta5.CodCuentaEspejo AS CodEsp5, 
	Cta6.CodCuentaEspejo AS CodEsp6, 
	Cta7.CodCuentaEspejo AS CodEsp7,
	isnull(Cta3.CodCuenta+', ' ,'')+isnull(Cta4.CodCuenta,'')  as CodCtaUgpp,
	isnull(Cta3.NomCuentaBase+', ' ,'')+isnull(Cta4.NomCuentaBase,'')  as NomCtaUgpp
	FROM
	(
		SELECT case when @EsAgrupIFRS=1 and len(CodCuentaIFRS)> 0 then COALESCE(CodCuentaIFRS,CodCuenta) else CodCuenta end CodCuenta, 
		NomCuenta, DetallarCliente, Factor, SenDet, IdCliente, SUM(SaldoIni) as SaldoIni, Sum(SaldoIniExt) as SaldoIniExt, SUM(Debito) as TotalDebitos, SUM(Credito) as TotalCreditos, SUM(DebitoExt) as TotalDebitosExt, SUM(CreditoExt) as TotalCreditosExt,max(isnull(CodCuentaIFRS,''))CodCuentaIFRS,
		SUM(DebitoGAAP) as TotalDebitosGAAP, SUM(CreditoGAAP) as TotalCreditosGAAP,SUM(DebitoIFRS) as TotalDebitosIFRS, SUM(CreditoIFRS) as TotalCreditosIFRS,SUM(SaldoIniGAAP) as SaldoIniGAAP,SUM(SaldoIniIFRS) as SaldoIniIFRS
		FROM 
		(
			SELECT * FROM tmpMov UNION ALL SELECT * FROM tmpSaldoIni 
		) t
		GROUP BY
		case when @EsAgrupIFRS=1 and len(CodCuentaIFRS)> 0 then COALESCE(CodCuentaIFRS,CodCuenta) else CodCuenta end, 
		NomCuenta, DetallarCliente, Factor, SenDet, IdCliente
		HAVING 
		NOT(SUM(SaldoIni)=0 And SUM(Debito)= 0 And SUM(Credito) = 0) 
) u	LEFT OUTER JOIN dbo.VClientes2 AS Cli ON u.IdCliente = Cli.IdCliente LEFT OUTER JOIN dbo.VClientesDir AS CliDir ON u.IdCliente = CliDir.IdCliente
	LEFT OUTER JOIN
	tempCuentas AS Cta1 ON SUBSTRING(u.CodCuenta,1,1) = Cta1.CodCuenta LEFT OUTER JOIN
	tempCuentas AS Cta2 ON SUBSTRING(u.CodCuenta,1,2) = Cta2.CodCuenta LEFT OUTER JOIN
	tempCuentas AS Cta3 ON SUBSTRING(u.CodCuenta,1,4) = Cta3.CodCuenta LEFT OUTER JOIN
	tempCuentas AS Cta4 ON SUBSTRING(u.CodCuenta,1,6) = Cta4.CodCuenta LEFT OUTER JOIN
	tempCuentas AS Cta5 ON SUBSTRING(u.CodCuenta,1,8) = Cta5.CodCuenta LEFT OUTER JOIN
	tempCuentas AS Cta6 ON SUBSTRING(u.CodCuenta,1,10) = Cta6.CodCuenta LEFT OUTER JOIN
	tempCuentas AS Cta7 ON SUBSTRING(u.CodCuenta,1,12) = Cta7.CodCuenta 
) q1
ORDER BY q1.CodCuenta, q1.[Cuenta_Tercero]
OPTION(RECOMPILE)
END
GO

ALTER PROCEDURE [dbo].[GetLibroAuxiliar]
	@FechaIni NVARCHAR(10) = '',
	@FechaFin NVARCHAR(10) = '',
	@CuentaIni NVARCHAR(100)='',
	@CuentaFin NVARCHAR(100)='',
    @IdEmpresas NVARCHAR(1000) = '',
    @IdCliente INT = NULL,
    @SenAgrupCC BIT = 0,
    @IdCentroCosto INT = NULL,
    @EsNotGAAP BIT = NULL,
    @EsNotIFRS BIT = NULL,
	@EsAgrupIFRS BIT = NULL,
	@IdSucursal INT = NULL	

    
AS
BEGIN

DECLARE

@FechaIniT DATETIME,
@FechaFinT DATETIME,
@FechaIniT2 DATETIME,
@CuenIni NVARCHAR(100)='',
@CuenFin NVARCHAR(100)='',
@IdEmp NVARCHAR(1000) = '',
@IdCli INT = NULL,
@AgrupCC BIT = 0,
@IdCentroC INT = NULL,
@NotGAAP BIT = NULL,
@NotIFRS BIT = NULL,
@AgrupIFRS BIT = NULL,
@IdTipoPUC INT,
@IdSuc INT = NULL


SET NOCOUNT ON;	

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SET @FechaIniT = CAST(CONVERT(DATETIME, @FechaIni, 103) + ' 00:00:00' AS DATETIME)
SET @FechaFinT = CAST(CONVERT(DATETIME, @FechaFin, 103) + ' 23:59:59' AS DATETIME)
SET @FechaIniT2 = DATEADD(DAY,-1,@FechaIniT)
SET @CuenIni=@CuentaIni
SET @CuenFin =@CuentaFin
SET @IdEmp =@IdEmpresas
SET @IdCli =@IdCliente
SET @AgrupCC=@SenAgrupCC
SET @IdCentroC=@IdCentroCosto
SET @NotGAAP=@EsNotGAAP
SET @NotIFRS=@NotIFRS
SET @AgrupIFRS =@AgrupIFRS
SET @IdSuc =@IdSucursal


SELECT @IdTipoPUC = ValParametro FROM PARAMETROS WHERE CodParametro = 1
IF @IdTipoPUC IS NULL
	SET @IdTipoPUC = 1

;WITH tempCuentas(CodCuenta,NomCuentaBase)
		as(
			select CodCuenta,
			MAX(NomCuenta)NomCuenta
			from
			(
			select CodCuenta,NomCuenta
			from cuentas
			where idtipoPuc=@IdTipoPUC
			)as q1
			group by CodCuenta
		)

SELECT
0 AS Orden,
YEAR(@FechaIniT2) AS Anno,
MONTH(@FechaIniT2) AS Mess,
CASE WHEN @EsAgrupIFRS=1 and len(CodCuentaIFRS)>0 then coalesce(CodCuentaIFRS,VSaldo1.CodCuenta) else VSaldo1.CodCuenta END AS CodCuenta,
CASE WHEN @EsAgrupIFRS=1 then VSaldo1.CodCuenta else CodCuentaIFRS END AS CodCuenta2,
Cta.NomCuenta,
CASE WHEN @EsAgrupIFRS=1 and len(CodCuentaIFRS)>0 then coalesce(cta.CodCuentaIFRS,VSaldo1.CodCuenta) + '-' + coalesce(cta.NomCuentaIFRS,Cta.NomCuenta)  else VSaldo1.CodCuenta + '-' + Cta.NomCuenta END AS DescripCuenta,
VSaldo1.IdCliente,
LTRIM(RTRIM(Cli.Apellidos + ' ' + Cli.Nombres)) AS NomTercero,
'SALDO INICIAL' AS MesLetras,
@FechaIniT2 AS Fecha,
VSaldo1.Debito AS Debito,
VSaldo1.Credito AS Credito,
VSaldo1.DebitoExt AS DebitoExt,
VSaldo1.CreditoExt AS CreditoExt,
'SALDO INICIAL' AS Nota,
'' AS DocRef, 
'' AS Doc,
'' AS Doc_FC, 
0 AS IdEncabCont,
Cta_C.Factor,
VSaldo1.IdEmpresa,
'' AS CodDocumento,
Cta.IdCuentaTipo,
NULL AS IdInventario,
0 AS IdAbonaDoc,
NULL AS IdAbonaDif,
Emp.EmpresaCodigo,
Cta_T.IdClase,
VSaldo1.IdCentroCosto,
CC.NomCentroCosto,
0 AS IdDocumento,
0 AS IdEncab,
null as RetencionBase,
null as RetencionPorc,
null as RetencionBaseCuenta,
cli.Identificacion,
null as NomEmpleado,
ciud.NomCiudad,
DebitoGAAP,
CreditoGAAP,
DebitoIFRS,
CreditoIFRS,
NULL AS CodCtaUgpp,
NULL AS NomCtaUgpp,
NULL AS NumDocumento,
NULL AS NomDocumento,
NULL AS IdSucursal
FROM
(
	SELECT
	Enc.IdEmpresa,
	Cta.IdCuenta, 
	Cta.CodCuenta,
	CASE WHEN @IdCli IS NULL THEN NULL ELSE Enc_C.IdCliente END AS IdCliente, 
	SUM(CASE WHEN Factor = 1 THEN ([Debito] - [Credito]) * [Factor] ELSE 0 END) AS Debito,
	SUM(CASE WHEN Factor = - 1 THEN ([Debito] - [Credito]) * [Factor] ELSE 0 END) AS Credito,

	SUM(CASE WHEN Factor = 1 THEN ([DebitoExt] - [CreditoExt]) * [Factor] ELSE 0 END) AS DebitoExt,
	SUM(CASE WHEN Factor = - 1 THEN ([DebitoExt] - [CreditoExt]) * [Factor] ELSE 0 END) AS CreditoExt,

	SUM(CASE WHEN Factor = 1 and Enc_C.EsNotGAAP=0 THEN ([Debito] - [Credito]) * [Factor] ELSE 0 END) AS DebitoGAAP,
	SUM(CASE WHEN Factor = - 1 and Enc_C.EsNotGAAP=0 THEN ([Debito] - [Credito]) * [Factor] ELSE 0 END) AS CreditoGAAP,

	SUM(CASE WHEN Factor = 1 and Enc_C.EsIFRS=0 THEN ([Debito] - [Credito]) * [Factor] ELSE 0 END) AS DebitoIFRS,
	SUM(CASE WHEN Factor = - 1 and Enc_C.EsIFRS=0 THEN ([Debito] - [Credito]) * [Factor] ELSE 0 END) AS CreditoIFRS,
	--Enc_C.IdInventario,
	--Enc_C.IdAbonaDif,
	CASE WHEN @AgrupCC = 1 THEN Enc_C.IdCentroCosto ELSE NULL END AS IdCentroCosto
	FROM Encabezados_Cont AS Enc_C INNER JOIN Encabezados AS Enc ON Enc_C.IdEncab = Enc.IdEncab INNER JOIN Cuentas AS Cta ON Enc_C.IdCuenta = Cta.IdCuenta INNER JOIN Cuentas_Tipos AS Cta_T ON Cta.IdCuentaTipo = Cta_T.IdCuentaTipo INNER JOIN Cuentas_Clases AS Cta_C ON Cta_T.IdClase = Cta_C.IdClase
	WHERE
	Enc.Fecha < @FechaIniT AND
	Cta.CodCuenta Between @CuenIni And @CuenFin AND
	Debito - Credito <> 0 AND
	Enc.IdEmpresa IN(select number from iter$simple_intlist_to_tbl(@IdEmpresas)) AND
	Enc.EsAnulado=0 and 
    (@NotGAAP is null OR Enc_C.EsNotGAAP =@NotGAAP) AND
    (@EsNotIFRS is null OR Enc_C.EsIFRS =@EsNotIFRS) AND
	(@IdSuc is null OR Enc.IdSucursal = @IdSuc)
	GROUP BY 
	Cta.IdCuenta, 
	CASE WHEN @IdCli IS NULL THEN NULL ELSE Enc_C.IdCliente END, 
	Cta.CodCuenta, 
	Enc.IdEmpresa, 
	--Enc_C.IdInventario, 
	--Enc_C.IdAbonaDif,
	CASE WHEN @AgrupCC = 1 THEN Enc_C.IdCentroCosto ELSE NULL END
)
VSaldo1 INNER JOIN
Empresas AS Emp ON VSaldo1.IdEmpresa = Emp.IdEmpresa INNER JOIN 
Cuentas AS Cta ON VSaldo1.IdCuenta = Cta.IdCuenta LEFT OUTER JOIN
VClientes2 AS Cli ON VSaldo1.IdCliente = Cli.IdCliente INNER JOIN
Cuentas_Tipos AS Cta_T ON Cta.IdCuentaTipo = Cta_T.IdCuentaTipo INNER JOIN
Cuentas_Clases AS Cta_C ON Cta_T.IdClase = Cta_C.IdClase LEFT OUTER JOIN
dbo.CentroCostos AS CC ON VSaldo1.IdCentroCosto = CC.IdCentroCosto LEFT OUTER JOIN
dbo.Ciudades as ciud ON ciud.IdCiudad=cli.idciudad
WHERE 

(@IdCli is null OR VSaldo1.IdCliente =@IdCli) AND
(@IdCentroC is null OR VSaldo1.IdCentroCosto =@IdCentroC) 

--COALESCE(VSaldo1.IdCliente,'') = COALESCE(@IdCli,COALESCE(VSaldo1.IdCliente,'')) AND
--COALESCE(VSaldo1.IdCentroCosto,'') = COALESCE(@IdCentroC,COALESCE(VSaldo1.IdCentroCosto,''))


UNION ALL

select Orden, Anno, Mess,
u.CodCuenta,
CodCuenta2,
NomCuenta,
DescripCuenta,
IdCliente, NomTercero, MesLetras, Fecha, Debito, Credito, DebitoExt, CreditoExt, Nota, DocRef, Doc, Doc_FC, IdEncabCont, Factor, IdEmpresa, CodDocumento, IdCuentaTipo, IdInventario, IdAbonaDoc, IdAbonaDif, EmpresaCodigo, IdClase, IdCentroCosto, NomCentroCosto,IdDocumento,IdEncab,
RetencionBase,RetencionPorc,RetencionBase as RetencionBaseCuenta,Identificacion,NomEmpleado,NomCiudad,
DebitoGAAP,
CreditoGAAP,
DebitoIFRS,
CreditoIFRS,
isnull(Cta3.CodCuenta+', ' ,'')+isnull(Cta4.CodCuenta,'')  as CodCtaUgpp,
isnull(Cta3.NomCuentaBase+', ' ,'')+isnull(Cta4.NomCuentaBase,'')  as NomCtaUgpp,
NumDocumento,NomDocumento,Sucursal
from
(
	SELECT Orden, Anno, Mess, 
		CASE WHEN @EsAgrupIFRS=1 and len(CodCuentaIFRS)>0 then coalesce(CodCuentaIFRS,CodCuenta) else CodCuenta END AS CodCuenta,
		CASE WHEN @EsAgrupIFRS=1 then CodCuenta else  CodCuentaIFRS END AS CodCuenta2,
		NomCuenta, 
		CASE WHEN @EsAgrupIFRS=1 and len(CodCuentaIFRS)>0  then coalesce(CodCuentaIFRS,CodCuenta) + '-' + coalesce(NomCuentaIFRS,NomCuenta)  else CodCuenta + '-' + NomCuenta END AS DescripCuenta,
		IdCliente, NomTercero, MesLetras, Fecha, Debito, Credito, DebitoExt, CreditoExt, Nota, DocRef, Doc, Doc_FC, IdEncabCont, Factor, IdEmpresa, CodDocumento, IdCuentaTipo, IdInventario, IdAbonaDoc, IdAbonaDif, EmpresaCodigo, IdClase, IdCentroCosto, NomCentroCosto,IdDocumento,IdEncab,
		case when coalesce(RetencionPorc,0)> 0 then abs(Debito-Credito)*100/RetencionPorc else 0 end RetencionBase,RetencionPorc,RetencionBase as RetencionBaseCuenta,Identificacion,NomEmpleado,NomCiudad,
		case when VMov1.EsNotGAAP=0 THEN  Debito else 0 end DebitoGAAP,
		case when VMov1.EsNotGAAP=0 THEN  Credito else 0 end  CreditoGAAP,
		case when VMov1.EsIFRS=0 THEN  Debito else 0 end DebitoIFRS,
		case when VMov1.EsIFRS=0 THEN  Credito else 0 end CreditoIFRS,
		NumDocumento,NomDocumento,Sucursal
	FROM vLibroAuxiliar_Mov VMov1
	WHERE
	VMov1.Fecha>=@FechaIniT AND VMov1.Fecha<=@FechaFinT AND
	VMov1.CodCuenta Between @CuenIni And @CuenFin AND
	VMov1.IdEmpresa IN(select number from iter$simple_intlist_to_tbl(@IdEmpresas)) AND 

	(@IdCli is null OR VMov1.IdCliente =@IdCli) AND
	(@IdCentroC is null OR VMov1.IdCentroCosto =@IdCentroC) AND
	(@NotGAAP is null OR VMov1.EsNotGAAP =@NotGAAP) AND
	(@EsNotIFRS is null OR VMov1.EsIFRS =@EsNotIFRS) AND	
	(@IdSucursal is null OR VMov1.IdSucursal = @IdSuc) 
)as u
LEFT OUTER JOIN
	tempCuentas AS Cta3 ON SUBSTRING(u.CodCuenta,1,4) = Cta3.CodCuenta LEFT JOIN
	tempCuentas AS Cta4 ON SUBSTRING(u.CodCuenta,1,6) = Cta4.CodCuenta 

ORDER BY CodCuenta, Orden, Fecha
OPTION(RECOMPILE)

END
GO

CREATE PROCEDURE [dbo].[Ziur_CrearClienteDeSistema]
@IdCliente INT,
@CliIdTipoIdent INT,
@CliIdentificacion NVARCHAR(100),
@CliDVCliente NVARCHAR(20),
@CliIdCiudad INT,
@CliCodInterno NVARCHAR(100),
@CliNombre1 NVARCHAR(200),
@CliNota NVARCHAR(200) = NULL,
@CliIdLista INT = NULL,
@CliAsociacion NVARCHAR(200) = NULL,
@DirDireccion NVARCHAR(400) = NULL,
@DirDireccionFormato1 NVARCHAR(400) = NULL,
@DirDireccionFormato2 NVARCHAR(400) = NULL,
@DirTelefonos NVARCHAR(400) = NULL,
@DirCelular NVARCHAR(400) = NULL,
@DirEMail NVARCHAR(400) = NULL,
@DirIdCiudad INT = NULL,
@DirCodigoPostal NVARCHAR(20) = NULL,

@Exito INT = 0 output

AS
BEGIN

DECLARE

@tCliIdentificacion NVARCHAR(100)

SET @tCliIdentificacion = 'XX-' + @CliIdentificacion;

--DESHABILITAR TRIGGERS DE TABLA CLIENTES
--//
EXEC('DISABLE TRIGGER TRG_AuditCli ON Clientes')
--//


--CREACION EPS EMPRESA PROMOTORA DE SALUD ECOOPSOS
IF NOT EXISTS(SELECT IdCliente FROM Clientes WHERE IdCliente=@IdCliente) 
BEGIN
     SET IDENTITY_INSERT dbo.Clientes ON
     INSERT INTO dbo.Clientes
     (IdCliente, IdTipoIdent, Identificacion, DVCliente, IdCiudad, CodigoInterno, Nombre1, Nombre2, Apellido1, Apellido2, EsActivo, Nota, IdTipoRegimen, TarifaIca, EsReteICA, IdCliVendedor, IdAgrup1, IdAgrup2, IdAgrup3, IdZona1, IdZona2, IdZona3, CupoCreditoTiene, CupoCreditoPlazo, CupoCreditoValor, IdLista, ComisionTiene, EsImptoNal, EsImptoLoc, EsEspecial, EsAutoRetenedor, IdPais, IdEstablec, IdActividad, EsCree, IdCuentaCree, IdRiesgo, FechaCreacion, FechaUltModificacion, IdMetodoMora, TasaMoraParteSuperior, TasaMoraParteInferior, FechaIngreso, EsExentoIVA, PlazoTiene, InvCupoTiene)
     VALUES
	 (@IdCliente,@CliIdTipoIdent,@tCliIdentificacion,@CliDVCliente,@CliIdCiudad,@CliCodInterno,@CliNombre1,NULL,NULL,NULL,1,@CliNota,3,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,@CliIdLista,NULL,0,0,1,0,48,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0)
	 SET IDENTITY_INSERT [dbo].[Clientes] OFF

	 INSERT INTO dbo.Clientes_Asociacion (IdCliente, IdTipo)
	 SELECT @IdCliente, number FROM iter$simple_intlist_to_tbl(@CliAsociacion)

	 INSERT INTO dbo.Clientes_Direcciones (IdCliente, IdTipoDir, Direccion, DireccionFormato1,DireccionFormato2, Telefonos, Celular, EMail, IdCiudad, EsDirPrincipal, CodigoPostal) 
	 VALUES (@IdCliente, 1, @DirDireccion, @DirDireccionFormato1, @DirDireccionFormato2, @DirTelefonos, @DirCelular, @DirEMail, @DirIdCiudad,1,@DirCodigoPostal)
END

--HABILITAR TRIGGERS DE TABLA CLIENTES
--//
EXEC('ENABLE TRIGGER TRG_AuditCli ON Clientes')
--//


--*************** ACTUALIZAR IDS ANTIGUOS DE CLIENTES *************
--*****************************************************************

IF OBJECT_ID(N'tempdb..#TercerosToUpdate') IS NOT NULL
   DROP TABLE #TercerosToUpdate

select a.idcliente as oldIdCliente, t.idcliente as newIdCliente, t.IdEstablec
into #TercerosToUpdate
from clientes a,
(
	select max(idcliente) as idcliente, replace(identificacion,'XX-','') as identif, IdEstablec, identificacion
	from clientes
	where (IdCliente=@IdCliente)
	group by identificacion, IdEstablec
) t
where 
a.identificacion = t.identif and a.IdEstablec = t.IdEstablec
and a.idcliente>@IdCliente

delete from Clientes_Asociacion where idcliente in (select oldIdCliente from #TercerosToUpdate)
delete from Clientes_InfoComercial where idcliente in (select oldIdCliente from #TercerosToUpdate)
delete from Clientes_Archivos where idcliente in (select oldIdCliente from #TercerosToUpdate)
delete from Clientes_Tributos where idcliente in (select oldIdCliente from #TercerosToUpdate)

update Calendarios_Turnos set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Calendarios_Turnos.IdCliente1 = z.oldIdCliente

update Citas_Clientes set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Citas_Clientes.IdCliente = z.oldIdCliente

update Clientes set IdCliVendedor = z.newIdCliente 
from #TercerosToUpdate z
where Clientes.IdCliVendedor = z.oldIdCliente

update Clientes_Antecedentes_Medicos set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Antecedentes_Medicos.IdCliente = z.oldIdCliente

update Clientes_Archivos set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Archivos.IdCliente = z.oldIdCliente

update Clientes_Asociacion set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Asociacion.IdCliente = z.oldIdCliente

update Clientes_Bancos_Codigos set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Bancos_Codigos.IdCliente1 = z.oldIdCliente

update Clientes_Bancos_Codigos set IdCliente2 = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Bancos_Codigos.IdCliente2 = z.oldIdCliente

update Clientes_Contactos set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Contactos.IdCliente = z.oldIdCliente

update Clientes_Direcciones set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Direcciones.IdCliente = z.oldIdCliente

update Clientes_DocRecursos set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_DocRecursos.IdCliente = z.oldIdCliente

update Clientes_Empleados set IdCli_Sena = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados.IdCli_Sena = z.oldIdCliente

update Clientes_Empleados set IdCli_Cesantia = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados.IdCli_Cesantia = z.oldIdCliente

update Clientes_Empleados set IdCli_ICBF = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados.IdCli_ICBF = z.oldIdCliente

update Clientes_Empleados set IdCli_Caja = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados.IdCli_Caja = z.oldIdCliente

update Clientes_Empleados set IdCli_Arp = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados.IdCli_Arp = z.oldIdCliente

update Clientes_Empleados set IdCli_Pension = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados.IdCli_Pension = z.oldIdCliente

update Clientes_Empleados set IdCli_Eps = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados.IdCli_Eps = z.oldIdCliente

update Clientes_Empleados set BancoIdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados.BancoIdCliente = z.oldIdCliente

update Clientes_Empleados set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados.IdCliente = z.oldIdCliente

update Clientes_Empleados_Bancos set BancoIdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Empleados_Bancos.BancoIdCliente = z.oldIdCliente

update Clientes_Especial set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Especial.IdCliente = z.oldIdCliente

update Clientes_Historia_Clinica set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Historia_Clinica.IdCliente1 = z.oldIdCliente

update Clientes_Historia_Clinica set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Historia_Clinica.IdCliente = z.oldIdCliente

update Clientes_Historia_Clinica set IdCliente2 = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Historia_Clinica.IdCliente2 = z.oldIdCliente

update Clientes_Historia_Clinica_Diagnostico set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Historia_Clinica_Diagnostico.IdCliente1 = z.oldIdCliente

update Clientes_Historia_Clinica_Evolucion set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Historia_Clinica_Evolucion.IdCliente1 = z.oldIdCliente

update Clientes_InfoComercial set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_InfoComercial.IdCliente = z.oldIdCliente

update Clientes_Inventarios_Cupos set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Inventarios_Cupos.IdCliente = z.oldIdCliente

update Clientes_Prospectos set IdClienteConv = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Prospectos.IdClienteConv = z.oldIdCliente

update Clientes_Prospectos set IdCliente2 = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Prospectos.IdCliente2 = z.oldIdCliente

update Clientes_Prospectos set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Prospectos.IdCliente1 = z.oldIdCliente

update Clientes_Prospectos_Seguim set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Prospectos_Seguim.IdCliente1 = z.oldIdCliente

update Clientes_ResponFiscal set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_ResponFiscal.IdCliente = z.oldIdCliente

update Clientes_Tributos set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Tributos.IdCliente = z.oldIdCliente

update Clientes_Vendedores set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Clientes_Vendedores.IdCliente = z.oldIdCliente

update Comisiones_Configuracion set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Comisiones_Configuracion.IdCliente = z.oldIdCliente

update ConciliacionBanc_Cruces set H_IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where ConciliacionBanc_Cruces.H_IdCliente = z.oldIdCliente

update ConciliacionBanc_MovExtracto set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where ConciliacionBanc_MovExtracto.IdCliente = z.oldIdCliente

update Empresas set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Empresas.IdCliente = z.oldIdCliente

EXEC('DISABLE TRIGGER TRG_AuditEnc ON Encabezados')


update Encabezados set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados.IdCliente1 = z.oldIdCliente

update Encabezados set IdCliente2 = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados.IdCliente2 = z.oldIdCliente

update Encabezados set IdClienteVend2 = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados.IdClienteVend2 = z.oldIdCliente

update Encabezados set IdClienteProp = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados.IdClienteProp = z.oldIdCliente

update Encabezados set IdClienteVend = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados.IdClienteVend = z.oldIdCliente


EXEC('ENABLE TRIGGER TRG_AuditEnc ON Encabezados')


update Encabezados_Cierres set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados_Cierres.IdCliente1 = z.oldIdCliente

update Encabezados_Clientes set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados_Clientes.IdCliente = z.oldIdCliente

update Encabezados_Cont set IdEmpleado = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados_Cont.IdEmpleado = z.oldIdCliente

update Encabezados_Cont set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados_Cont.IdCliente = z.oldIdCliente

update Encabezados_Cont set IdClienteBanco = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados_Cont.IdClienteBanco = z.oldIdCliente

update Encabezados_Mov set IdVendedor = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados_Mov.IdVendedor = z.oldIdCliente

update Encabezados_Mov set IdEmpleado = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados_Mov.IdEmpleado = z.oldIdCliente

update Encabezados_Mov set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados_Mov.IdCliente = z.oldIdCliente

update Encabezados_PagoDet_FormasPago set IdClienteBanco = z.newIdCliente 
from #TercerosToUpdate z
where Encabezados_PagoDet_FormasPago.IdClienteBanco = z.oldIdCliente

update Inventarios_ActivosFijos set IdClienteEncargado = z.newIdCliente 
from #TercerosToUpdate z
where Inventarios_ActivosFijos.IdClienteEncargado = z.oldIdCliente

update Inventarios_Bodegas set IdEncargado = z.newIdCliente 
from #TercerosToUpdate z
where Inventarios_Bodegas.IdEncargado = z.oldIdCliente

update Inventarios_Lotes set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Inventarios_Lotes.IdCliente = z.oldIdCliente

update MediosMag_CuentasFormato set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where MediosMag_CuentasFormato.IdCliente = z.oldIdCliente

update Nomina_Comisiones_Configuracion_Empleados set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Nomina_Comisiones_Configuracion_Empleados.IdCliente = z.oldIdCliente

update Nomina_Movimientos set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Nomina_Movimientos.IdCliente = z.oldIdCliente

update Nomina_Notas set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Nomina_Notas.IdCliente = z.oldIdCliente

update Nomina_Retefuente set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Nomina_Retefuente.IdCliente = z.oldIdCliente

update PH_Conjuntos set IdClienteAdmin = z.newIdCliente 
from #TercerosToUpdate z
where PH_Conjuntos.IdClienteAdmin = z.oldIdCliente

update PH_Inmuebles set IdInquilinio = z.newIdCliente 
from #TercerosToUpdate z
where PH_Inmuebles.IdInquilinio = z.oldIdCliente

update PH_Inmuebles set IdPropietario = z.newIdCliente 
from #TercerosToUpdate z
where PH_Inmuebles.IdPropietario = z.oldIdCliente

update PH_Inmuebles set IdCodeudor = z.newIdCliente 
from #TercerosToUpdate z
where PH_Inmuebles.IdCodeudor = z.oldIdCliente

update PH_Inmuebles_Codeudores set IdCodeudor = z.newIdCliente 
from #TercerosToUpdate z
where PH_Inmuebles_Codeudores.IdCodeudor = z.oldIdCliente

update PH_Inmuebles_Inquilinos set IdInquilino = z.newIdCliente 
from #TercerosToUpdate z
where PH_Inmuebles_Inquilinos.IdInquilino = z.oldIdCliente

update PH_Inmuebles_Propietarios set IdPropietario = z.newIdCliente 
from #TercerosToUpdate z
where PH_Inmuebles_Propietarios.IdPropietario = z.oldIdCliente

update Reparacion_Automotores set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Reparacion_Automotores.IdCliente = z.oldIdCliente

update Rips_Encabezados set IdClienteConductor = z.newIdCliente 
from #TercerosToUpdate z
where Rips_Encabezados.IdClienteConductor = z.oldIdCliente

update Rips_Encabezados set IdClienteMedico = z.newIdCliente 
from #TercerosToUpdate z
where Rips_Encabezados.IdClienteMedico = z.oldIdCliente

update Rips_Encabezados set IdClienteEnfermero = z.newIdCliente 
from #TercerosToUpdate z
where Rips_Encabezados.IdClienteEnfermero = z.oldIdCliente

update Rips_Encabezados set IdClienteSolicitante = z.newIdCliente 
from #TercerosToUpdate z
where Rips_Encabezados.IdClienteSolicitante = z.oldIdCliente

update Rips_Encabezados set IdClientePaciente = z.newIdCliente 
from #TercerosToUpdate z
where Rips_Encabezados.IdClientePaciente = z.oldIdCliente

update Rips_Encabezados set IdClienteElaboro = z.newIdCliente 
from #TercerosToUpdate z
where Rips_Encabezados.IdClienteElaboro = z.oldIdCliente

update Tickets set IdResponsable = z.newIdCliente 
from #TercerosToUpdate z
where Tickets.IdResponsable = z.oldIdCliente

update Tickets set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Tickets.IdCliente = z.oldIdCliente

update Tickets_Seguim set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Tickets_Seguim.IdCliente = z.oldIdCliente

update Usuarios set IdCliente = z.newIdCliente 
from #TercerosToUpdate z
where Usuarios.IdCliente = z.oldIdCliente

update Usuarios_Tareas set IdCliente2 = z.newIdCliente 
from #TercerosToUpdate z
where Usuarios_Tareas.IdCliente2 = z.oldIdCliente

update Usuarios_Tareas set IdCliente1 = z.newIdCliente 
from #TercerosToUpdate z
where Usuarios_Tareas.IdCliente1 = z.oldIdCliente


--Borrar los idclientes repetidos y quitar XX- de la identificacion
--//
EXEC('DISABLE TRIGGER TRG_AuditCli ON Clientes')

delete from clientes where idcliente in (select oldIdCliente from #TercerosToUpdate)
update clientes set identificacion = replace(identificacion,'XX-','') from clientes where IdCliente=@IdCliente

EXEC('ENABLE TRIGGER TRG_AuditCli ON Clientes')
--//


  IF @@error <> 0 GOTO ERR_HANDLER
    
    SET @Exito = 1
    RETURN
    
ERR_HANDLER:
  SET @Exito = 0

END
GO

--Crear EPS COOSALUD
[Ziur_CrearClienteDeSistema]
@IdCliente = 239,
@CliIdTipoIdent = 31,
@CliIdentificacion = '900226715',
@CliDVCliente = '3',
@CliIdCiudad = 13001,
@CliCodInterno = 'ESSC24',
@CliNombre1 = 'COOSALUD ENTIDAD PROMOTORA DE SALUD',
@CliNota = 'EPS',
@CliIdLista = 1,
@CliAsociacion = '22,8',
@DirDireccion = 'AV SAN MARTIN CLL 11 ESQ NORTE P 8 ED GRUPO AREA',
@DirDireccionFormato1 = 'AV san martin cll 11 ESQ NORTE P 8 ED grupo area',
@DirDireccionFormato2 = 'AV san martin cll 11 ESQ N p 8 ED grupo area',
@DirTelefonos = NULL,
@DirCelular = '3164544868',
@DirEMail = NULL,
@DirIdCiudad = 13001,
@DirCodigoPostal = NULL

--Inclusion de otros devengados no salarial 
--//
update Nomina_Clasificacion set NomClasif = 'Otros (Salarial)' where IdClasif=15
GO

IF NOT EXISTS(SELECT * FROM [dbo].[Nomina_Clasificacion] WHERE [IdClasif] =60)
INSERT INTO [dbo].[Nomina_Clasificacion]
([IdClasif],[NomClasif],[EsEspecial],[EsUsuario],[EsTerceroPpal],[EsNE])
VALUES (60, 'Otros (No Salarial)' , 1, 0, null, 1)
GO

INSERT INTO ZiurVersiones (IdVersion, NumVersion, Descripcion)
VALUES (307,897,N'Cambios de Nómina Electrónica y Performance')
GO

COMMIT;
GO
