--Hash:1CEF5D6C0A42AE05AC6BF38E52CD526C
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 < 938
)
RAISERROR('Error : hay un script que no se ejecuto , debe ejecutarlo manualmente.', 20, -1) with log
--//

--Colocar contenido de script diferencial aqui (Ziur.Database.publish.sql)

/*
 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

GO
PRINT N'Dropping Index [dbo].[VInventarios_CostoPromedio_00].[IX_CostoProm]...';


GO
DROP INDEX [IX_CostoProm]
    ON [dbo].[VInventarios_CostoPromedio_00];


GO
PRINT N'Removing schema binding from [dbo].[VInventarios_CostoPromedio_00]...';


GO
ALTER VIEW [dbo].[VInventarios_CostoPromedio_00]
AS
SELECT EncMov.IdInventario,
       EncMovCP.Orden,
       EncMov.IdEncabMov,
       Enc.IdEncab,
       EncMovCP.CostoProm,
       EncMovCP.CantAcum,
       EncMovCP.CostoAcum
FROM   dbo.Encabezados AS Enc
       INNER JOIN
       dbo.Encabezados_Mov AS EncMov
       ON Enc.IdEncab = EncMov.IdEncab
       INNER JOIN
       dbo.Encabezados_Mov_CostoProm AS EncMovCP
       ON EncMov.IdEncabMov = EncMovCP.IdEncabMov
WHERE  (NOT (EncMovCP.Orden IS NULL));


GO
PRINT N'Altering Table [dbo].[Encabezados_Mov]...';


GO
ALTER TABLE [dbo].[Encabezados_Mov]
    ADD [FactorImpuesto] NUMERIC (28, 6) CONSTRAINT [DF_Encabezados_Mov_FactorImpto] DEFAULT ((1)) NOT NULL;


GO
PRINT N'Refreshing View [dbo].[VClientesPuntos]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VClientesPuntos]';


GO
PRINT N'Altering View [dbo].[VContab_EncMov]...';


GO
ALTER VIEW dbo.VContab_EncMov
AS
SELECT        EncMov.IdEncabMov, EncMov.IdEncab, EncMov.IdInventario, EncMov.IdBodega, EncMov.IdLote, EncMov.Cantidad, EncMov.ValorTRM, 
                         EncMov.Cantidad * EncMov.FactorCantidad AS CantConFactor, EncMov.CantidadFisica, EncMov.IdUnidad, EncMov.FactorCantidad, EncMov.FactorMovim, 
                         EncMov.ValorUnitario, EncMov.ValorUnitarioExt, EncMov.ValorIva, EncMov.TipoImptoConsumo, COALESCE (EncMov.ValorImptoConsumo, 0) AS ValorImptoConsumo, 
                         EncMov.TotalMov, EncMov.IdCliente, EncMov.Vence, EncMov.IdCentroCosto, EncMov.Dcto, EncMov.EsIvaAlCosto, 
                         EncMov.ValorUnitario * EncMov.Dcto / 100 AS ValorDctoUnit, (EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario) * (1 - EncMov.Dcto / 100)
                         AS SubTotal, EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario AS SubTotalSinDcto, 
                         EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario * EncMov.Dcto / 100 AS ValorDcto, 
                         (EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario) * (1 - EncMov.Dcto / 100) * EncMov.ValorIva / 100 AS SubIVA, 
                         CASE WHEN EncMov.TipoImptoConsumo = 0 THEN 1 ELSE 0 END AS FactorImpoConsPorc, 
                         CASE WHEN EncMov.TipoImptoConsumo = 1 THEN 1 ELSE 0 END AS FactorImpoConsValor, EncMov.ValorTRM AS Expr1, EncMov.IdMoneda, 
                         CASE WHEN EncMov.ValorIva = 0 THEN (EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario) * (1 - EncMov.Dcto / 100) ELSE 0 END AS SubTotExento,
                         CASE WHEN EncMov.ValorIva > 0 THEN (EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario) * (1 - EncMov.Dcto / 100) ELSE 0 END AS SubTotGravado,
                         ValorPuntos,
                         (EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario) * (1 - EncMov.Dcto / 100) * EncMov.FactorImpuesto AS SubTotal2
FROM            dbo.Encabezados_Mov AS EncMov INNER JOIN
                         dbo.Encabezados AS Enc ON EncMov.IdEncab = Enc.IdEncab
WHERE        (Enc.FinanDebe = 0 AND EncMov.EsVisible = 1) OR (Enc.FinanDebe = 1 AND EncMov.FactorMovim=0)
GO
PRINT N'Refreshing View [dbo].[VCostoProm_Historico_Agrup]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VCostoProm_Historico_Agrup]';


GO
PRINT N'Refreshing View [dbo].[VCostoPromedio]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VCostoPromedio]';


GO
PRINT N'Refreshing View [dbo].[VCruces_Origen]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VCruces_Origen]';


GO
PRINT N'Refreshing View [dbo].[VCruces_Sumas]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VCruces_Sumas]';


GO
PRINT N'Refreshing View [dbo].[VCruces_TodosDocs]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VCruces_TodosDocs]';


GO
PRINT N'Refreshing View [dbo].[VIngresoProducto]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VIngresoProducto]';


GO
PRINT N'Adding schema binding to [dbo].[VInventarios_CostoPromedio_00]...';


GO

ALTER VIEW VInventarios_CostoPromedio_00
with schemabinding 
AS
SELECT     EncMov.IdInventario, EncMovCP.Orden, EncMov.IdEncabMov, Enc.IdEncab, EncMovCP.CostoProm, EncMovCP.CantAcum, EncMovCP.CostoAcum
FROM         dbo.Encabezados AS Enc INNER JOIN
                      dbo.Encabezados_Mov AS EncMov ON Enc.IdEncab = EncMov.IdEncab INNER JOIN
                      dbo.Encabezados_Mov_CostoProm AS EncMovCP ON EncMov.IdEncabMov = EncMovCP.IdEncabMov
WHERE     (NOT (EncMovCP.Orden IS NULL))
GO
PRINT N'Creating Index [dbo].[VInventarios_CostoPromedio_00].[IX_CostoProm]...';


GO
CREATE UNIQUE CLUSTERED INDEX [IX_CostoProm]
    ON [dbo].[VInventarios_CostoPromedio_00]([IdInventario] ASC, [Orden] ASC, [IdEncabMov] ASC);


GO
PRINT N'Refreshing View [dbo].[VInventarios_Existencia]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VInventarios_Existencia]';


GO
PRINT N'Refreshing View [dbo].[VInventariosHistoricoCosto]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VInventariosHistoricoCosto]';


GO
PRINT N'Refreshing View [dbo].[VInventariosLotesCons01]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VInventariosLotesCons01]';


GO
PRINT N'Refreshing View [dbo].[VInvExistPorLote]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VInvExistPorLote]';


GO
PRINT N'Refreshing View [dbo].[VMov_Factor]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VMov_Factor]';


GO
PRINT N'Refreshing View [dbo].[VProduccion]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VProduccion]';


GO
PRINT N'Refreshing View [dbo].[VSeriales]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VSeriales]';


GO
PRINT N'Refreshing View [dbo].[VSesionesSaldos]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VSesionesSaldos]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc____Totales]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc____Totales]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc____TRMPromedio]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc____TRMPromedio]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc_00]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc_00]';


GO
PRINT N'Refreshing View [dbo].[VTot_EncMov]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VTot_EncMov]';


GO
PRINT N'Refreshing View [dbo].[VCruces_Agrup]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VCruces_Agrup]';


GO
PRINT N'Refreshing View [dbo].[VInventarios_Existencia_Recursos]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VInventarios_Existencia_Recursos]';


GO
PRINT N'Refreshing View [dbo].[VInventariosLotesCons02]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VInventariosLotesCons02]';


GO
PRINT N'Refreshing View [dbo].[VAgrupadoPorCliVend_01]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VAgrupadoPorCliVend_01]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc____TotPorCuentas_00]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc____TotPorCuentas_00]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc____TotPorCuentas_Fin]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc____TotPorCuentas_Fin]';


GO
PRINT N'Refreshing View [dbo].[VCostoPromedio_Cruces]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VCostoPromedio_Cruces]';


GO
PRINT N'Altering View [dbo].[VEncabezadosMov]...';


GO
ALTER VIEW dbo.VEncabezadosMov
AS
SELECT        IdEncabMov, IdEncab, IdInventario, IdBodega, IdLote, Cantidad, IdUnidad, ValorUnitario, IVAporc, NotaMov, NomInventario, CodInventario, NomBodega, NomLote, NombresClienteMov, NombresEmpleadoMov, 
                         NomCentroCostoMov, VenceMov, TotalMov, ValorImptoConsumo, FactorCantidad, Dcto, IdCentroCostoMov, CodLote, EspecialInv_01, EspecialInv_02, EspecialInv_03, EspecialInv_04, EspecialInv_05, 
                         EspecialInv_06, EspecialInv_07, EspecialInv_08, EspecialInv_09, EspecialInv_10, EspecialInv_11, EspecialInv_12, EspecialInv_13, EspecialInv_14, EspecialInv_15, EspecialInv_16, EspecialInv_17, 
                         EspecialInv_18, EspecialInv_19, EspecialInv_20, NumSerial, IdEncabMov2, EsVisible, TotalMovCalExt AS TotalMovExt, ValorUnitarioExt, DocCruce, Abreviatura, EspecialMov_01, EspecialMov_02, 
                         EspecialMov_03, EspecialMov_04, EspecialMov_05, EspecialMov_06, EspecialMov_07, EspecialMov_08, EspecialMov_09, EspecialMov_10, EspecialMov_12, EspecialMov_11, EspecialMov_13, 
                         EspecialMov_14, EspecialMov_15, EspecialMov_16, EspecialMov_17, EspecialMov_18, EspecialMov_19, EspecialMov_20, NomUnidad, NumPlacaMov, NumChasisMov, NumMotorMov, ColorMov, 
                         KilometrajeMov, ModeloMov, IdMarcaMov, NomMarcaMov, VenceLote, IdClasifImpto, FactorMovim, IdCliente, IdInmueble, PeriodoIni, CostoPromCosto, CostoPromCant, CostoPromValor, FinanNumCuotas, 
                         FinanInteres, FinanAporte, PeriodoFin, FechaIniActividad, FechaFinActividad, IdEmpleado, SubTotalSinDcto, ValorDcto, ValorIva, ValorImptoConsumoMov, TipoImptoConsumo, 
                         SubTotalSinDcto + ValorImptoConsumoMov AS TotalMovCal, SubTotalSinDcto - ValorDcto AS SubTotalMov, ValorUnitario - ValorDctoUnitario AS ValorUnitarioConDcto, 
                         SubTotalSinDcto - ValorDcto + ValorIva + ValorImptoConsumoMov AS TotalMovMasIva, CASE WHEN (qMov.Cantidad * qMov.FactorCantidad) 
                         > 0 THEN (SubTotalSinDcto - ValorDcto + ValorIva + ValorImptoConsumoMov) / (qMov.Cantidad * qMov.FactorCantidad) ELSE 0 END AS ValorUnitConIva, Recurso AS ImagenInv, IdEncabMov3, CodigoBarras, 
                         NomAgrup1, NomAgrup2, EsRevisado, CantidadIni, CantidadFin, CantidadDcto, NotaDcto, IdUnidad1, NomUnidad1, Cantidad1, NomTipoInven AS TipoInv, EsExcluir, ValorUnitarioUnidad, 
                         FactorCantidad1, FactorCantidad2, NomTalla, TallaAgrup1, TallaAgrup2, TallaAgrup3, FactorCantidad3, FactorCantidad4, ValorComision, SubTotalSinDctoExt, ValorDctoExt, SubTotalSinDctoExt - ValorDctoExt AS SubTotalMovExt
FROM            (SELECT        EncMov.IdEncabMov, EncMov.IdEncab, EncMov.IdInventario, EncMov.IdBodega, EncMov.IdLote, EncMov.Cantidad, EncMov.IdUnidad, EncMov.ValorUnitario, EncMov.ValorIva AS IVAporc, 
                                                    EncMov.Nota AS NotaMov, Inv.NomInventario, Inv.CodInventario, InvBod.NomBodega, InvLot.NomLote, COALESCE (Cli.Nombre1, N'') + N' ' + COALESCE (Cli.Nombre2, N'') 
                                                    + N' ' + COALESCE (Cli.Apellido1, N'') + N' ' + COALESCE (Cli.Apellido2, N'') AS NombresClienteMov, COALESCE (Cli2.Nombre1, N'') + N' ' + COALESCE (Cli2.Nombre2, N'') 
                                                    + N' ' + COALESCE (Cli2.Apellido1, N'') + N' ' + COALESCE (Cli2.Apellido2, N'') AS NombresEmpleadoMov, CCosto.NomCentroCosto AS NomCentroCostoMov, EncMov.Vence AS VenceMov, 
                                                    EncMov.TotalMov, EncMov.ValorImptoConsumo, EncMov.FactorCantidad,
													EncMov.Dcto, CCosto.IdCentroCosto AS IdCentroCostoMov, InvLot.CodLote, InvEsp.Especial_01 AS EspecialInv_01, 
                                                    InvEsp.Especial_02 AS EspecialInv_02, InvEsp.Especial_03 AS EspecialInv_03, InvEsp.Especial_04 AS EspecialInv_04, InvEsp.Especial_05 AS EspecialInv_05, 
                                                    InvEsp.Especial_06 AS EspecialInv_06, InvEsp.Especial_07 AS EspecialInv_07, InvEsp.Especial_08 AS EspecialInv_08, InvEsp.Especial_09 AS EspecialInv_09, 
                                                    InvEsp.Especial_10 AS EspecialInv_10, InvEsp.Especial_11 AS EspecialInv_11, InvEsp.Especial_12 AS EspecialInv_12, InvEsp.Especial_13 AS EspecialInv_13, 
                                                    InvEsp.Especial_14 AS EspecialInv_14, InvEsp.Especial_15 AS EspecialInv_15, InvEsp.Especial_16 AS EspecialInv_16, InvEsp.Especial_17 AS EspecialInv_17, 
                                                    InvEsp.Especial_18 AS EspecialInv_18, InvEsp.Especial_19 AS EspecialInv_19, InvEsp.Especial_20 AS EspecialInv_20, EncMov.NumSerial, EncMov.IdEncabMov2, EncMov.EsVisible, 
                                                    EncMov.Cantidad * EncMov.ValorUnitarioExt AS TotalMovCalExt, EncMov.ValorUnitarioExt, VCruc.DescripcionDocs AS DocCruce, 
                                                    InvBod.Abreviatura, MovEsp.Especial_01 AS EspecialMov_01, MovEsp.Especial_02 AS EspecialMov_02, MovEsp.Especial_03 AS EspecialMov_03, MovEsp.Especial_04 AS EspecialMov_04, 
                                                    MovEsp.Especial_05 AS EspecialMov_05, MovEsp.Especial_06 AS EspecialMov_06, MovEsp.Especial_07 AS EspecialMov_07, MovEsp.Especial_08 AS EspecialMov_08, 
                                                    MovEsp.Especial_09 AS EspecialMov_09, MovEsp.Especial_10 AS EspecialMov_10, MovEsp.Especial_12 AS EspecialMov_12, MovEsp.Especial_11 AS EspecialMov_11, 
                                                    MovEsp.Especial_13 AS EspecialMov_13, MovEsp.Especial_14 AS EspecialMov_14, MovEsp.Especial_15 AS EspecialMov_15, MovEsp.Especial_16 AS EspecialMov_16, 
                                                    MovEsp.Especial_17 AS EspecialMov_17, MovEsp.Especial_18 AS EspecialMov_18, MovEsp.Especial_19 AS EspecialMov_19, MovEsp.Especial_20 AS EspecialMov_20, Uni.NomUnidad, 
                                                    RepAuto.NumPlaca AS NumPlacaMov, RepAuto.NumChasis AS NumChasisMov, RepAuto.NumMotor AS NumMotorMov, RepAuto.Color AS ColorMov, RepAuto.Kilometraje AS KilometrajeMov, 
                                                    RepAuto.Modelo AS ModeloMov, RepAuto.IdMarca AS IdMarcaMov, RepMarc.NomMarca AS NomMarcaMov, CONVERT(VARCHAR(10), InvLot.FechaVence, 110) AS VenceLote, Inv.IdClasifImpto, 
                                                    EncMov.FactorMovim, EncMov.IdCliente, EncMov.IdInmueble, EncMov.PeriodoIni, EncMov.CostoPromCosto, EncMov.CostoPromCant, EncMov.CostoPromValor, EncMov.FinanNumCuotas, 
                                                    EncMov.FinanInteres, EncMov.FinanAporte, EncMov.PeriodoFin, EncMov.FechaIniActividad, EncMov.FechaFinActividad, EncMov.IdEmpleado, 
                                                    EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario AS SubTotalSinDcto, EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario * EncMov.Dcto / 100 AS ValorDcto, 
                                                    EncMov.ValorUnitario * EncMov.Dcto / 100 AS ValorDctoUnitario, (EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario) * (1 - EncMov.Dcto / 100) * (EncMov.ValorIva / 100) * EncMov.FactorImpuesto AS ValorIva, 
                                                    CASE WHEN EncMov.TipoImptoConsumo = 1 THEN (EncMov.Cantidad * EncMov.FactorCantidad) * COALESCE (EncMov.ValorImptoConsumo, 0) 
                                                    ELSE (EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitario) * (1 - EncMov.Dcto / 100) * COALESCE (EncMov.ValorImptoConsumo, 0) / 100 END AS ValorImptoConsumoMov, 
                                                    EncMov.TipoImptoConsumo, Rec.Recurso, EncMov.IdEncabMov3, Inv.CodigoBarras, invAgrup1.NomAgrup1, invAgrup2.NomAgrup2, EncMov.EsRevisado, EncMov.CantidadIni, EncMov.CantidadFin, 
                                                    EncMov.CantidadDcto, EncMov.NotaDcto, EncMov.IdUnidad1, Uni1.NomUnidad AS NomUnidad1, COALESCE (EncMov.Cantidad1, EncMov.Cantidad * Uni.FactorEscala / Uni1.FactorEscala) 
                                                    AS Cantidad1, Invtipos.NomTipoInven, EncMov.EsExcluir, EncMov.ValorUnitario * EncMov.FactorCantidad AS ValorUnitarioUnidad, EncMov.CantDim1 AS FactorCantidad1, 
                                                    EncMov.CantDim2 AS FactorCantidad2, Talla.NomTalla, Talla.Agrup1 AS TallaAgrup1, Talla.Agrup2 AS TallaAgrup2, Talla.Agrup3 AS TallaAgrup3, EncMov.ValorComision, 
                                                    EncMov.CantDim3 AS FactorCantidad3, EncMov.CantDim4 AS FactorCantidad4, EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitarioExt AS SubTotalSinDctoExt,
													EncMov.Cantidad * EncMov.FactorCantidad * EncMov.ValorUnitarioExt * EncMov.Dcto / 100 AS ValorDctoExt
                          FROM            dbo.Inventarios_Lotes AS InvLot RIGHT OUTER JOIN
                                                    dbo.Clientes AS Cli RIGHT OUTER JOIN
                                                    dbo.Encabezados_Mov AS EncMov INNER JOIN
                                                    dbo.Inventarios_Bodegas AS InvBod ON EncMov.IdBodega = InvBod.IdBodega INNER JOIN
                                                    dbo.Inventarios AS Inv ON EncMov.IdInventario = Inv.IdInventario LEFT OUTER JOIN
                                                    dbo.Clientes AS Cli2 ON EncMov.IdEmpleado = Cli2.IdCliente ON Cli.IdCliente = EncMov.IdCliente ON InvLot.IdLote = EncMov.IdLote LEFT OUTER JOIN
                                                    dbo.Reparacion_Automotores AS RepAuto ON EncMov.NumSerial = RepAuto.IdAutomotor AND EncMov.IdTipoReg = 1 LEFT OUTER JOIN
                                                    dbo.Reparacion_Marcas AS RepMarc ON RepAuto.IdMarca = RepMarc.IdMarca LEFT OUTER JOIN
                                                    dbo.Inventarios_Unidades AS Uni ON EncMov.IdUnidad = Uni.IdUnidad LEFT OUTER JOIN
                                                    dbo.Encabezados_MovEspecial AS MovEsp ON EncMov.IdEncabMov = MovEsp.IdEncabMov LEFT OUTER JOIN
                                                    dbo.Inventarios_Especial AS InvEsp ON Inv.IdInventario = InvEsp.IdInventario LEFT OUTER JOIN
                                                    dbo.CentroCostos AS CCosto ON EncMov.IdCentroCosto = CCosto.IdCentroCosto LEFT OUTER JOIN
                                                    dbo.VCruces_Agrup AS VCruc ON EncMov.IdEncabMov = VCruc.IdEncabMov1 LEFT OUTER JOIN
                                                    dbo.Parametros_Recursos AS Rec ON Inv.IdRecursoPOS = Rec.IdRecurso LEFT OUTER JOIN
                                                    dbo.Inventarios_Agrup1 AS invAgrup1 ON invAgrup1.IdAgrup1 = Inv.IdAgrup1 LEFT OUTER JOIN
                                                    dbo.Inventarios_Agrup2 AS invAgrup2 ON invAgrup2.IdAgrup2 = Inv.IdAgrup2 LEFT OUTER JOIN
                                                    dbo.Inventarios_Unidades AS Uni1 ON EncMov.IdUnidad1 = Uni1.IdUnidad INNER JOIN
                                                    dbo.Inventarios_Tipos AS Invtipos ON Inv.IdTipoInv = Invtipos.IdInvenTipo LEFT OUTER JOIN
                                                    dbo.Inventarios_Colores_Tallas AS Talla ON EncMov.NumSerial = Talla.CodTalla AND EncMov.IdTipoReg = 2) AS qMov
GO
PRINT N'Refreshing View [dbo].[VMovimientosFactElectronica]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VMovimientosFactElectronica]';


GO
PRINT N'Refreshing View [dbo].[VEncabezados]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VEncabezados]';


GO
PRINT N'Refreshing View [dbo].[VEncabezadosMov_Det]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VEncabezadosMov_Det]';


GO
PRINT N'Refreshing View [dbo].[VEncabezadoFactElectronica]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VEncabezadoFactElectronica]';


GO
PRINT N'Refreshing View [dbo].[VEncabezadosCont_Det]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VEncabezadosCont_Det]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc_01]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc_01]';


GO
PRINT N'Refreshing View [dbo].[VCierresDocs]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VCierresDocs]';


GO
PRINT N'Refreshing View [dbo].[VCierresDocsCont]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VCierresDocsCont]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc____TotRetes_Fin]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc____TotRetes_Fin]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc_01_01]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc_01_01]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc_02]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc_02]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc_03]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc_03]';


GO
PRINT N'Refreshing View [dbo].[VContabDoc_Fin]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VContabDoc_Fin]';


GO
PRINT N'Refreshing Function [dbo].[CostoPromedioPorInventario_v2]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CostoPromedioPorInventario_v2]';


GO
PRINT N'Refreshing Function [dbo].[CostoPromedioPorInventario]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CostoPromedioPorInventario]';


GO
PRINT N'Altering Function [dbo].[ufnContabilizacion_Normal]...';


GO
ALTER FUNCTION [dbo].[ufnContabilizacion_Normal] (@IdEncab INT)
RETURNS @RetContab TABLE 
(
    IdEncab INT NOT NULL, 
    IdCuenta INT NULL, 
    IdInvActivoFijo INT NULL, 
    IdGrupoCuenta INT NULL, 
    IdCuentaTipo INT NOT NULL,
    SumDebitos NUMERIC(28,6) NOT NULL,
	SumCreditos NUMERIC(28,6) NOT NULL,
	C_IdCliente INT NOT NULL,
	TotCtaBase NUMERIC(28,6) NULL,
	TotCtaPorc NUMERIC(28,6) NULL,
	C_Vence DATETIME NULL, 
	C_IdCentroCosto INT NULL
)
AS

BEGIN

DECLARE @IdEncabT int
DECLARE @cte_VContabDoc_00 TABLE (IdEncab INT, IdContab INT, IdDocumento INT, IdTipoRegimen INT, IdInventario INT, IdTipoInv INT, CantConFactor NUMERIC(24,8), ValorUnitario NUMERIC(24,8), ValorIva NUMERIC(28,6), SubTotal NUMERIC(24,8), SubTotal2 NUMERIC(24,8), ValorDcto NUMERIC(24,8), C_ImptoConsumo NUMERIC(24,8), IdCentroCosto INT, Vence DATETIME, VenceEnc DATETIME, C_DctoDev SMALLINT, C_AplicaICA BIT, C_AplicaIVA BIT, C_IdCliente INT, C_AutoRetiene BIT, EsNoHaceRete BIT, EsCree BIT, ValorTarifaCree NUMERIC(28,6), IdCuentaCree INT, ValorTarifaCree_CD NUMERIC(28,6), EsExcluirRetencion BIT, ValorTarifaICA NUMERIC(28,6), FactorReteIca SMALLINT,IdClienteProp INT)

SET @IdEncabT = @IdEncab

;WITH

cte_VContabDoc_Ini (IdEncab, IdInventario, IdCliente, IdCentroCosto, Vence, ValorIva, ValorDcto, CantConFactor, ValorUnitario, SubTotal, SubTotal2, C_ImptoConsumo)
AS
(
	SELECT 
		IdEncab, 
		IdInventario, 
		IdCliente, 
		IdCentroCosto, 
		Vence, 
		ValorIva, 
		SUM(ValorDcto), 
		SUM(CantConFactor) AS CantConFactor, 
		SUM(ValorUnitario) AS ValorUnitario,
		SUM(SubTotal) AS SubTotal,
		SUM(SubTotal2) AS SubTotal2,
		SUM(CASE WHEN TipoImptoConsumo = 0 THEN SubTotal * (COALESCE (ValorImptoConsumo, 0) / 100) ELSE CantConFactor * COALESCE (ValorImptoConsumo, 0) END) AS C_ImptoConsumo
	FROM VContab_EncMov AS VEnc_M
	WHERE IdEncab = @IdEncabT
	GROUP BY IdEncab, IdInventario, IdCliente, IdCentroCosto, Vence, ValorIva
),

cte_VContabDoc_00 (IdEncab, IdContab, IdDocumento, IdTipoRegimen, IdInventario, IdTipoInv, CantConFactor, ValorUnitario, ValorIva, SubTotal, SubTotal2, ValorDcto, C_ImptoConsumo, IdCentroCosto, Vence, VenceEnc, C_DctoDev, C_AplicaICA, C_AplicaIVA, C_IdCliente, C_AutoRetiene, EsNoHaceRete, EsCree, ValorTarifaCree, IdCuentaCree, ValorTarifaCree_CD, EsExcluirRetencion, ValorTarifaICA, FactorReteIca,IdClienteProp)
AS
(
	SELECT 
		Enc.IdEncab, 
		Inv.IdContab, 
		Enc.IdDocumento, 
		Cli_Enc.IdTipoRegimen, 
		VEnc_M.IdInventario, 
		Inv.IdTipoInv, 
		VEnc_M.CantConFactor, 
		VEnc_M.ValorUnitario, 
		VEnc_M.ValorIva,
		VEnc_M.SubTotal, 
		VEnc_M.SubTotal2, 
		VEnc_M.ValorDcto, 
		VEnc_M.C_ImptoConsumo, 
		VEnc_M.IdCentroCosto, 
		CASE WHEN FinanDebe = 0 THEN Enc.Vence ELSE VEnc_M.Vence END AS Vence, 
		Enc.Vence AS VenceEnc, 
		Doc.ContabDcto AS C_DctoDev, 
		CASE WHEN Doc.AgruparClientes2 = 1 THEN Cli_Enc.EsReteIca ELSE Cli_Enc_M.EsReteIca END AS C_AplicaICA, 
		~ Emp.EsExentoIVA AS C_AplicaIVA, 
		CASE WHEN Doc.AgruparClientes2 = 1 THEN Cli_Enc.IdCliente ELSE Cli_Enc_M.IdCliente END AS C_IdCliente, 
		Cli_Enc.EsAutoRetenedor AS C_AutoRetiene, 
		Emp.EsNoHaceRete,
		Cli_Enc.EsCree,
		CASE WHEN Enc.IdDocumento = 2 THEN COALESCE (ActivEmp.ValorTarifaCree, 0) ELSE COALESCE (ActivCli.ValorTarifaCree, 0) END AS ValorTarifaCree, 
		Cli_Enc.IdCuentaCree,
		COALESCE (ActivEmp.ValorTarifaCree_Pers, ActivEmp.ValorTarifaCree) AS ValorTarifaCree_CD,
		Doc.EsExcluirRetencion,
		CASE WHEN Doc.AgruparClientes2 = 1 THEN Cli_Enc.TarifaIca ELSE Cli_Enc_M.TarifaIca END AS ValorTarifaICA,
		Doc.FactorReteIca as FactorReteIca,
		IdClienteProp
	FROM            
		dbo.Encabezados AS Enc INNER JOIN
		dbo.Clientes AS Cli_Enc ON Enc.IdCliente1 = Cli_Enc.IdCliente INNER JOIN
		dbo.Documentos AS Doc ON Enc.IdDocumento = Doc.IdDocumento INNER JOIN
		cte_VContabDoc_Ini AS VEnc_M ON Enc.IdEncab = VEnc_M.IdEncab INNER JOIN
		dbo.Inventarios AS Inv ON VEnc_M.IdInventario = Inv.IdInventario INNER JOIN
		dbo.Empresas AS Emp ON Enc.IdEmpresa = Emp.IdEmpresa LEFT OUTER JOIN
		dbo.Empresas_ActividadesEcon AS ActivEmp ON Emp.EmpresaIdActivEconPrinc = ActivEmp.IdActividad LEFT OUTER JOIN
		dbo.Clientes AS Cli_Enc_M ON VEnc_M.IdCliente = Cli_Enc_M.IdCliente LEFT OUTER JOIN
		dbo.Empresas_ActividadesEcon AS ActivCli ON Cli_Enc.IdActividad = ActivCli.IdActividad
	WHERE Enc.IdEncab = @IdEncabT
)

INSERT INTO @cte_VContabDoc_00 (IdEncab, IdContab, IdDocumento, IdTipoRegimen, IdInventario, IdTipoInv, CantConFactor, ValorUnitario, ValorIva, SubTotal, SubTotal2, ValorDcto, C_ImptoConsumo, IdCentroCosto, Vence, VenceEnc, C_DctoDev, C_AplicaICA, C_AplicaIVA, C_IdCliente, C_AutoRetiene, EsNoHaceRete, EsCree, ValorTarifaCree, IdCuentaCree, ValorTarifaCree_CD, EsExcluirRetencion, ValorTarifaICA, FactorReteIca,IdClienteProp)
SELECT IdEncab, IdContab, IdDocumento, IdTipoRegimen, IdInventario, IdTipoInv, CantConFactor, ValorUnitario, ValorIva, SubTotal, SubTotal2, ValorDcto, C_ImptoConsumo, IdCentroCosto, Vence, VenceEnc, C_DctoDev, C_AplicaICA, C_AplicaIVA, C_IdCliente, C_AutoRetiene, EsNoHaceRete, EsCree, ValorTarifaCree, IdCuentaCree, ValorTarifaCree_CD, EsExcluirRetencion, ValorTarifaICA, FactorReteIca,IdClienteProp
FROM cte_VContabDoc_00

;WITH 

cte_TotPorCuentasFin (IdEncab, IdCuenta, TotCtaValor, TotCtaBase, TotCtaPorc, TotPorCuenta, TotFactorCtaPorc)
AS
(
	SELECT q1.IdEncab, 
	q1.IdCuenta, 
	CASE WHEN q1.TotPorCuenta > COALESCE (Cta.ValorBase, 0) THEN q1.TotPorCuenta * Cta.ValorPorcentaje / 100 ELSE 0 END AS TotCtaValor, 
	CASE WHEN q1.TotPorCuenta > Cta.ValorBase THEN Cta.ValorBase ELSE 0 END AS TotCtaBase, 
	CASE WHEN q1.TotPorCuenta > Cta.ValorBase THEN Cta.ValorPorcentaje / 100 ELSE 0 END AS TotCtaPorc, 
	q1.TotPorCuenta,
	CASE WHEN q1.TotPorCuenta > Cta.ValorBase THEN 1 ELSE 0 END AS TotFactorCtaPorc
	FROM
	(
		SELECT r1.IdEncab, Cont_Det.IdCuenta, SUM(r1.SubTotal) AS TotPorCuenta
		FROM 
		(
			SELECT IdEncab, IdContab, IdDocumento, IdTipoRegimen, SUM(SubTotal) AS SubTotal
			FROM @cte_VContabDoc_00
			GROUP BY IdEncab, IdContab, IdDocumento, IdTipoRegimen
		) as r1 INNER JOIN dbo.Contabilizaciones_Det AS Cont_Det ON r1.IdContab = Cont_Det.IdContab AND r1.IdDocumento = Cont_Det.IdDocumento AND r1.IdTipoRegimen = Cont_Det.IdTipoRegimen
		GROUP BY r1.IdEncab, Cont_Det.IdCuenta
	) AS q1 INNER JOIN dbo.Cuentas AS Cta ON q1.IdCuenta = Cta.IdCuenta
) ,

cte_VContabDoc_01 (IdEncab, IdContab, IdInventario, IdInvActivoFijo, IdCuenta, CodCuenta, NomCuenta, CantConFactor, ValorIva, ValorDcto, SubTotal, IdGrupoCuenta, IdCuentaTipo, IdManejo, C_IdCliente, C_AplicaICA, C_DctoDev, C_SubTotal, C_SubTotalSinDcto, C_SubTotalDcto, C_ContDcto, C_TesoreriaIni, C_TesoreriaFactor, C_ReteFuente, C_ReteFuente_CREE, C_Iva, C_ReteIva, C_ReteIca, C_ReteIvaRSC, C_ReteIvaRSD, C_Porcentaje, C_ImptoConsumo, C_IvaTotal, C_BaseRetNormal, C_Vence, C_VenceAll, C_IdCentroCosto, C_IdCentroCostoAgrup, TotCtaBase, TotCtaPorc, C_AutoReteCREE_C, C_AutoReteCREE_D)
AS
(
	SELECT T.IdEncab, 
	T.IdContab, 
	T.IdInventario, 
	CASE WHEN Cta.IdCuentaTipo = 6 AND T.IdTipoInv = 3 THEN T.IdInventario ELSE NULL END AS IdInvActivoFijo, 
	CASE WHEN Cta.IdGrupoCuenta = 30 THEN COALESCE (T.IdCuentaCree, Cont_D.IdCuenta) ELSE Cont_D.IdCuenta END AS IdCuenta, 
	Cta.CodCuenta, 
	Cta.NomCuenta, 
	T.CantConFactor, 
	T.ValorIva, 
	T.ValorDcto, 
	T.SubTotal, 
	Cta.IdGrupoCuenta, 
	Cta.IdCuentaTipo, 
	Cont_D.IdManejo, 
	CASE WHEN ISNULL(Cont_D.IdTipo,0) = 1 THEN ISNULL(T.IdClienteProp,C_IdCliente) ELSE T.C_IdCliente END AS C_IdCliente, 
	T.C_AplicaICA, 
	T.C_DctoDev, 
	CASE WHEN Cta.IdGrupoCuenta = 1 THEN T.SubTotal ELSE 0 END AS C_SubTotal, 
	CASE WHEN Cta.IdGrupoCuenta = 1 AND T.C_DctoDev = 0 THEN T.SubTotal ELSE 0 END AS C_SubTotalSinDcto, 
	CASE WHEN Cta.IdGrupoCuenta = 1 AND T.C_DctoDev = - 1 THEN T.CantConFactor * T.ValorUnitario ELSE 0 END AS C_SubTotalDcto, 
	CASE WHEN Cta.IdGrupoCuenta = 1 AND T.C_DctoDev = - 1 AND (Cta.IdCuentaTipo = 22 OR Cta.IdCuentaTipo = 23) THEN T.CantConFactor * T.ValorDcto ELSE 0 END AS C_ContDcto, 
	CASE WHEN Cta.IdGrupoCuenta = 2 THEN T.SubTotal + T.SubTotal2 * ValorIva / 100 + T.C_ImptoConsumo ELSE 0 END AS C_TesoreriaIni, 
	CASE WHEN Cta.IdGrupoCuenta = 2 THEN 1 ELSE 0 END AS C_TesoreriaFactor, 
	CASE WHEN Cta.IdGrupoCuenta = 4 THEN T.SubTotal2 * Tot.TotCtaPorc ELSE 0 END * CASE WHEN ((T.IdDocumento = 1 AND 
							 CONVERT(INT, T.C_AutoRetiene) * CONVERT(INT, ~ T.EsExcluirRetencion) = 1) OR
							 (T.IdDocumento = 15 AND CONVERT(INT, T.C_AutoRetiene) * CONVERT(INT, ~ T.EsExcluirRetencion) = 1) OR
							 (T.IdDocumento = 16 AND CAST(T.C_AutoRetiene AS INT) * CONVERT(INT, ~ T.EsExcluirRetencion) = 1) OR
							 ((T.IdDocumento = 2 AND CONVERT(INT, T.C_AutoRetiene) * CONVERT(INT, ~ T.EsExcluirRetencion) = 1) OR
							 (T.IdDocumento = 44 AND CONVERT(INT, T.C_AutoRetiene) * CONVERT(INT, ~ T.EsExcluirRetencion) = 1) OR
							 T.EsNoHaceRete = 1)) THEN 0 ELSE 1 END AS C_ReteFuente, 
	CASE WHEN Cta.IdGrupoCuenta = 30 THEN T.SubTotal * T.ValorTarifaCree / 100 ELSE 0 END * CASE WHEN T.EsCree = 1 THEN 1 ELSE 0 END AS C_ReteFuente_CREE, 
	CASE WHEN Cta.IdGrupoCuenta = 5 THEN (T.SubTotal2 * T.ValorIva / 100) * T.C_AplicaIVA ELSE 0 END AS C_Iva, 
	CASE WHEN Cta.IdGrupoCuenta = 6 THEN (T.SubTotal2 * Tot.TotCtaPorc * T.ValorIva / 100) * T.C_AplicaIVA ELSE 0 END AS C_ReteIva, 
	CASE WHEN Cta.IdGrupoCuenta = 7 THEN ( CASE WHEN T.FactorReteIca = 0 THEN T.C_AplicaICA * (T.SubTotal2 * Tot.TotCtaPorc) ELSE T.C_AplicaICA * (CASE WHEN T.ValorTarifaICA IS NULL THEN T.SubTotal2 * Tot.TotCtaPorc ELSE T.SubTotal2 * Tot.TotFactorCtaPorc * (T.ValorTarifaICA /100) END) END) ELSE 0 END AS C_ReteIca,
	CASE WHEN Cta.IdGrupoCuenta = 10 THEN (T.SubTotal * Tot.TotCtaPorc) * T.C_AplicaIVA ELSE 0 END AS C_ReteIvaRSC, 
	CASE WHEN Cta.IdGrupoCuenta = 9 THEN (T.SubTotal * Tot.TotCtaPorc)  * T.C_AplicaIVA ELSE 0 END AS C_ReteIvaRSD, 
	CASE WHEN Cta.IdGrupoCuenta = 5 THEN Cta.ValorPorcentaje ELSE 0 END AS C_Porcentaje, 
	CASE WHEN Cta.IdGrupoCuenta = 11 THEN T.C_ImptoConsumo ELSE 0 END AS C_ImptoConsumo, 
	T.SubTotal * T.ValorIva / 100 AS C_IvaTotal, 
	CASE WHEN Cta.IdGrupoCuenta = 5 THEN T.SubTotal WHEN Cta_G.EsRetencion = 1 THEN T.SubTotal * Tot.TotPorCuenta ELSE 0 END AS C_BaseRetNormal, 
	CASE WHEN Cta.IdGrupoCuenta = 2 THEN T.Vence ELSE NULL END AS C_Vence, 
	T.Vence AS C_VenceAll, 
	T.IdCentroCosto AS C_IdCentroCosto, 
	CASE WHEN Cta.EsIncluirCC = 1 THEN IdCentroCosto ELSE NULL END AS C_IdCentroCostoAgrup, 
	Tot.TotCtaBase,

	--Tot.TotCtaPorc,
	CASE WHEN Cta.IdGrupoCuenta = 7 AND T.FactorReteIca = 1 AND T.C_AplicaICA = 1 AND T.ValorTarifaICA IS NOT NULL THEN T.ValorTarifaICA/100 ELSE Tot.TotCtaPorc END AS TotCtaPorc,

	CASE WHEN Cta.IdGrupoCuenta = 33 THEN T.SubTotal * T.ValorTarifaCree_CD / 100 ELSE 0 END AS C_AutoReteCREE_C, 
	CASE WHEN Cta.IdGrupoCuenta = 34 THEN T.SubTotal * T.ValorTarifaCree_CD / 100 ELSE 0 END AS C_AutoReteCREE_D
	FROM            
		@cte_VContabDoc_00 AS T INNER JOIN
		dbo.Contabilizaciones_Det AS Cont_D ON T.IdContab = Cont_D.IdContab AND T.IdTipoRegimen = Cont_D.IdTipoRegimen AND T.IdDocumento = Cont_D.IdDocumento INNER JOIN
		dbo.Cuentas AS Cta ON Cont_D.IdCuenta = Cta.IdCuenta INNER JOIN
		dbo.Cuentas_Tipos AS Cta_Tip ON Cta.IdCuentaTipo = Cta_Tip.IdCuentaTipo INNER JOIN
		dbo.Cuentas_Clases AS Cta_Clase ON Cta_Tip.IdClase = Cta_Clase.IdClase INNER JOIN
		cte_TotPorCuentasFin AS Tot ON T.IdEncab = Tot.IdEncab AND Cont_D.IdCuenta = Tot.IdCuenta LEFT OUTER JOIN
		dbo.Cuentas_Grupos AS Cta_G ON Cta.IdGrupoCuenta = Cta_G.IdGrupoCuenta
),


cte_TotReteFin(IdEncab, IdJoin, MinFecha, IdInventario, C_IdCentroCosto, SumReteFuente, SumReteIva, SumReteIca, SumReteIvaRSC, SumReteFuente_CREE, SumReteFuente_CREE_C, SumReteFuente_CREE_D)
AS
(
	SELECT IdEncab, 
	CAST(IdInventario AS NVARCHAR(100)) + N' -' + COALESCE (CAST(C_IdCentroCosto AS NVARCHAR(100)), N'') AS IdJoin, 
	COALESCE (CONVERT(char(8), MIN(C_VenceAll), 112), N'') AS MinFecha, 
	IdInventario, 
	C_IdCentroCosto, 
	SUM(C_ReteFuente) AS SumReteFuente, 
	SUM(C_ReteIva) AS SumReteIva, 
	SUM(C_ReteIca) AS SumReteIca, 
	SUM(C_ReteIvaRSC) AS SumReteIvaRSC, 
	SUM(C_ReteFuente_CREE) AS SumReteFuente_CREE, 
	SUM(C_AutoReteCREE_C) AS SumReteFuente_CREE_C, 
	SUM(C_AutoReteCREE_D) AS SumReteFuente_CREE_D
	FROM cte_VContabDoc_01
	GROUP BY IdEncab, IdInventario, C_IdCentroCosto, CAST(IdInventario AS NVARCHAR(100)) + N' -' + COALESCE (CAST(C_IdCentroCosto AS NVARCHAR(100)), N'')
),

cte_VContabDoc_01_01 (IdEncab, IdJoin, IdContab, IdInventario, IdInvActivoFijo, IdCuenta, IdGrupoCuenta, IdCuentaTipo, C_IdCliente, C_IdCentroCosto, C_IdCentroCostoAgrup, C_VenceAll, C_Vence, C_TesoreriaFactor, TotCtaBase, TotCtaPorc, IdManejo, C_SubTotal, C_Iva, C_ReteFuente, C_ReteFuente_CREE, C_ReteIva, C_ReteIca, C_ReteIvaRSC, C_ReteIvaRSD, C_ImptoConsumo, C_AutoReteCREE_C, C_AutoReteCREE_D, C_TesoreriaIni, FechaYYYYmmdd)
AS
(
	SELECT        
		IdEncab, 
		CAST(IdInventario AS NVARCHAR(100)) + N' -' + COALESCE (CAST(C_IdCentroCosto AS NVARCHAR(100)), N'') AS IdJoin, 
		IdContab, 
		IdInventario, 
		IdInvActivoFijo, 
		IdCuenta, 
		IdGrupoCuenta, 
		IdCuentaTipo, 
		C_IdCliente, 
		C_IdCentroCosto, 
		C_IdCentroCostoAgrup, 
		C_VenceAll, 
		C_Vence, 
		MAX(C_TesoreriaFactor) AS C_TesoreriaFactor, 
		MAX(TotCtaBase) AS TotCtaBase, 
		MAX(TotCtaPorc) AS TotCtaPorc, 
		MAX(IdManejo) AS IdManejo, 
		SUM(C_SubTotal) AS C_SubTotal, 
		SUM(C_Iva) AS C_Iva, 
		SUM(C_ReteFuente) AS C_ReteFuente, 
		SUM(C_ReteFuente_CREE) AS C_ReteFuente_CREE, 
		SUM(C_ReteIva) AS C_ReteIva, 
		SUM(C_ReteIca) AS C_ReteIca, 
		SUM(C_ReteIvaRSC) AS C_ReteIvaRSC, 
		SUM(C_ReteIvaRSD) AS C_ReteIvaRSD, 
		SUM(C_ImptoConsumo) AS C_ImptoConsumo, 
		SUM(C_AutoReteCREE_C) AS C_AutoReteCREE_C, 
		SUM(C_AutoReteCREE_D) AS C_AutoReteCREE_D, 
		SUM(C_TesoreriaIni) AS C_TesoreriaIni, 
		COALESCE (CONVERT(char(8), C_VenceAll, 112), N'') AS FechaYYYYmmdd
	FROM
		cte_VContabDoc_01
	GROUP BY IdEncab, IdContab, IdInventario, IdCuenta, C_IdCentroCosto, C_IdCliente, C_VenceAll, CAST(IdInventario AS NVARCHAR(100)) + N' -' + COALESCE (CAST(C_IdCentroCosto AS NVARCHAR(100)), N''), C_Vence, COALESCE (CONVERT(char(8), C_VenceAll, 112), N''), IdGrupoCuenta, IdCuentaTipo, C_IdCentroCostoAgrup, IdInvActivoFijo
)

INSERT INTO @RetContab
SELECT IdEncab, IdCuenta, IdInvActivoFijo, IdGrupoCuenta, IdCuentaTipo, SUM(CASE WHEN IdManejo = 1 THEN ISNULL(C_Total,0) ELSE 0 END) AS SumDebitos, SUM(CASE WHEN IdManejo = 2 THEN ISNULL(C_Total,0) ELSE 0 END) AS SumCreditos, C_IdCliente, TotCtaBase, TotCtaPorc, C_Vence, C_IdCentroCostoAgrup AS C_IdCentroCosto
FROM  
(
	SELECT IdEncab, IdContab, IdInventario, IdInvActivoFijo, IdCuenta, IdGrupoCuenta, IdCuentaTipo, C_IdCliente, C_Vence, C_SubTotal, C_Iva, C_ReteFuente, C_ReteFuente_CREE, C_AutoReteCREE_C, C_AutoReteCREE_D, C_ReteIca, C_ReteIva, C_ReteIvaRSC, C_ReteIvaRSD, C_ImptoConsumo, C_Tesoreria, C_SubTotal + C_Iva + C_ReteFuente + C_ReteFuente_CREE + C_AutoReteCREE_C + C_AutoReteCREE_D + C_ReteIca + C_ReteIva + C_ReteIvaRSC + C_ReteIvaRSD + C_ImptoConsumo + C_Tesoreria AS C_Total, C_IdCentroCosto, C_IdCentroCostoAgrup, TotCtaBase, TotCtaPorc, IdManejo
	FROM  
	(
		SELECT T.IdEncab, T.IdContab, T.IdInventario, T.IdInvActivoFijo, T.IdCuenta, T.IdGrupoCuenta, T.IdCuentaTipo, T.C_IdCliente, T.C_IdCentroCosto, T.C_IdCentroCostoAgrup, T.C_Vence, T.IdManejo, T.C_SubTotal, T.C_Iva, T.C_ReteFuente, T.C_ReteFuente_CREE, T.C_AutoReteCREE_C, T.C_AutoReteCREE_D, T.C_ReteIva, T.C_ReteIca, T.C_ReteIvaRSC, T.C_ReteIvaRSD, T.C_ImptoConsumo,  (T.C_TesoreriaIni - (CASE WHEN MinFecha <> FechaYYYYMMdd THEN 0 ELSE 1 END) * (TotRet.SumReteFuente + TotRet.SumReteIva + TotRet.SumReteIca + TotRet.SumReteFuente_CREE)) * T.C_TesoreriaFactor AS C_Tesoreria, T.TotCtaBase, T.TotCtaPorc
		FROM cte_VContabDoc_01_01 AS T INNER JOIN cte_TotReteFin AS TotRet ON T.IdEncab = TotRet.IdEncab AND T.IdJoin = TotRet.IdJoin
	) u
) t
GROUP BY IdEncab, IdCuenta, C_IdCliente, TotCtaBase, TotCtaPorc, C_Vence, C_IdCentroCostoAgrup, IdGrupoCuenta, IdCuentaTipo, IdInvActivoFijo


RETURN;




END
GO
PRINT N'Refreshing Procedure [dbo].[ActualizarAbonaDoc]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[ActualizarAbonaDoc]';


GO
PRINT N'Refreshing Procedure [dbo].[ActualizarAudit]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[ActualizarAudit]';


GO
PRINT N'Refreshing Procedure [dbo].[CalcularCostoPromedio]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CalcularCostoPromedio]';


GO
PRINT N'Refreshing Procedure [dbo].[CalcularCostoVenta]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CalcularCostoVenta]';


GO
PRINT N'Refreshing Procedure [dbo].[CalcularRutasProduccionMov]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CalcularRutasProduccionMov]';


GO
PRINT N'Refreshing Procedure [dbo].[CierresDocsUpdate]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CierresDocsUpdate]';


GO
PRINT N'Refreshing Procedure [dbo].[CopiarDocumentos]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CopiarDocumentos]';


GO
PRINT N'Refreshing Procedure [dbo].[CopiarDocumentosBasados]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CopiarDocumentosBasados]';


GO
PRINT N'Refreshing Procedure [dbo].[CostoPromHistoDeleteALL]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CostoPromHistoDeleteALL]';


GO
PRINT N'Refreshing Procedure [dbo].[CrucesDocumentosDeleteALL]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CrucesDocumentosDeleteALL]';


GO
PRINT N'Refreshing Procedure [dbo].[CrucesDocumentosInsertar]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[CrucesDocumentosInsertar]';


GO
PRINT N'Refreshing Procedure [dbo].[EncabezadosDeleteALL]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[EncabezadosDeleteALL]';


GO
PRINT N'Refreshing Procedure [dbo].[ExcluirCruce]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[ExcluirCruce]';


GO
PRINT N'Refreshing Procedure [dbo].[FinanciarMovimientos]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[FinanciarMovimientos]';


GO
PRINT N'Refreshing Procedure [dbo].[GenerarAlertaMantenimientos]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GenerarAlertaMantenimientos]';


GO
PRINT N'Refreshing Procedure [dbo].[GenerarCierreInventario]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GenerarCierreInventario]';


GO
PRINT N'Refreshing Procedure [dbo].[GetClientesPuntos]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetClientesPuntos]';


GO
PRINT N'Refreshing Procedure [dbo].[GetCostoPromedioDet]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetCostoPromedioDet]';


GO
PRINT N'Refreshing Procedure [dbo].[GetDocumentosCierre]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetDocumentosCierre]';


GO
PRINT N'Refreshing Procedure [dbo].[GetExistenciasPorProducto]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetExistenciasPorProducto]';


GO
PRINT N'Refreshing Procedure [dbo].[GetInventarios_Existencia_RecursosOrig]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetInventarios_Existencia_RecursosOrig]';


GO
PRINT N'Refreshing Procedure [dbo].[GetInvKardexPorLote]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetInvKardexPorLote]';


GO
PRINT N'Refreshing Procedure [dbo].[GetKardexInventario]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetKardexInventario]';


GO
PRINT N'Refreshing Procedure [dbo].[GetKardexInventarioPorAgrupaciones]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetKardexInventarioPorAgrupaciones]';


GO
PRINT N'Refreshing Procedure [dbo].[GetTablaAmortizacion]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetTablaAmortizacion]';


GO
PRINT N'Refreshing Procedure [dbo].[GetTareasCitas]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetTareasCitas]';


GO
PRINT N'Refreshing Procedure [dbo].[GetVEncabezados]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetVEncabezados]';


GO
PRINT N'Refreshing Procedure [dbo].[GetVentasAgrupadoPorCliVend]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetVentasAgrupadoPorCliVend]';


GO
PRINT N'Refreshing Procedure [dbo].[GetVentasPorMes]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetVentasPorMes]';


GO
PRINT N'Refreshing Procedure [dbo].[SaldoVentasClientesPorProducto]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[SaldoVentasClientesPorProducto]';


GO
PRINT N'Refreshing Procedure [dbo].[TrasladarInventarios]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[TrasladarInventarios]';


GO
PRINT N'Refreshing Procedure [dbo].[TrasladarTerceros]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[TrasladarTerceros]';


GO
PRINT N'Refreshing Procedure [dbo].[UltimoValorUnitario]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[UltimoValorUnitario]';


GO
PRINT N'Refreshing Procedure [dbo].[Ziur_CrearClienteDeSistema]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[Ziur_CrearClienteDeSistema]';


GO
PRINT N'Refreshing Procedure [dbo].[ValorUnitarioPorCostoPromedio]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[ValorUnitarioPorCostoPromedio]';


GO
PRINT N'Refreshing Procedure [dbo].[ContabilizarDoc_Validar]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[ContabilizarDoc_Validar]';


GO
PRINT N'Refreshing Procedure [dbo].[GetArqueoCaja]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetArqueoCaja]';


GO
PRINT N'Refreshing Procedure [dbo].[GetDocsDiferencias]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetDocsDiferencias]';


GO
PRINT N'Refreshing Procedure [dbo].[GetDocsSinCruzar]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetDocsSinCruzar]';


GO
PRINT N'Refreshing Procedure [dbo].[GetInformeRIPS]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetInformeRIPS]';


GO
PRINT N'Refreshing Procedure [dbo].[GetComisiones]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetComisiones]';


GO
PRINT N'Refreshing Procedure [dbo].[GetMovimientosFactElec]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetMovimientosFactElec]';


GO
PRINT N'Refreshing Procedure [dbo].[GetInventarios_Existencia_Recursos]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetInventarios_Existencia_Recursos]';


GO
PRINT N'Refreshing Procedure [dbo].[GetCostoActual]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetCostoActual]';


GO
PRINT N'Refreshing Procedure [dbo].[ContabilizarDoc]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[ContabilizarDoc]';


GO
PRINT N'Refreshing Procedure [dbo].[GenerarCrucesCont]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GenerarCrucesCont]';


GO
PRINT N'Refreshing Procedure [dbo].[GetActivosFijosDet]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GetActivosFijosDet]';


GO
PRINT N'Refreshing Procedure [dbo].[ComisionesPorDoc]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[ComisionesPorDoc]';


GO
PRINT N'Refreshing Procedure [dbo].[GenerarFormulaPorInventario]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[GenerarFormulaPorInventario]';


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


	IF NOT EXISTS(SELECT * FROM Documentos WHERE MovCamposDisp like '%FactorImpuesto%' and EsMov=1 and EsCont=1)
	   UPDATE Documentos SET MovCamposDisp = MovCamposDisp + ',FactorImpuesto' WHERE EsMov=1 and EsCont=1
GO

GO
PRINT N'Update complete.';


GO

--Actualizar datos de la version
INSERT INTO ZiurVersiones (IdVersion, NumVersion, Descripcion)
VALUES (348,938,'ENVIO DE FACTURAS AIU')
GO

COMMIT
GO
