--Hash:ED064DBA8EA57B62245A2054C29B6885
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 < 929
)
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'Altering View [dbo].[VMovimientosFactElectronica]...';


GO
ALTER VIEW [dbo].[VMovimientosFactElectronica]
	AS 
	
SELECT 
CAST(1 AS bigint) AS numLineas,
VEncMov.IdEncab,
VEncMov.IdEncabMov,
VEncMov.IdInventario,
VEncMov.Cantidad,
VEncMov.FactorCantidad,
VEncMov.FactorCantidad4,
VEncMov.NomInventario,
VEncMov.ValorUnitario,
VEncMov.CodInventario,
Mon.Abrev AS CodMoneda,
VEncMov.IVAporc,
VencMov.ValorIva,
CASE WHEN EncMov.ValorTRM <> 0 THEN VEncMov.ValorIva / EncMov.ValorTRM END ValorIvaExt,		
VEncMov.TipoImptoConsumo,
VEncMov.ValorImptoConsumo,
VEncMov.ValorImptoConsumoMov,
CASE WHEN EncMov.ValorTRM <> 0 THEN VEncMov.ValorImptoConsumoMov / EncMov.ValorTRM END ValorImptoConsumoMovExt,	
CASE WHEN VEncMov.SubTotalMov = 0 or VEncMov.SubTotalMov = NULL then 0 ELSE (VEncMov.ValorImptoConsumo * 100 / VEncMov.SubTotalMov) * 100 END PorcentajeImpCon,
VEncMov.Dcto,
CASE WHEN VEncMov.Dcto <> 0 THEN VEncMov.Dcto / 100 END AS DctoFactor,
VEncMov.ValorDcto,
VEncMov.ValorDctoExt,
VEncMov.SubTotalSinDcto,
VEncMov.SubTotalSinDctoExt,
VEncMov.TotalMovCal,
CASE WHEN EncMov.ValorTRM <> 0 THEN VEncMov.TotalMovCal / EncMov.ValorTRM END TotalMovCalExt,	
VEncMov.SubTotalMov,
VEncMov.SubTotalMovExt,
VEncMov.ValorUnitarioConDcto,
VEncMov.TotalMovMasIva,
VEncMov.ValorUnitConIva,
VEncMov.NotaMov,
VEncMov.EsVisible,

--Unidades de medida
--
InvUniDIAN.CodUnidadDIAN,
InvUniDIAN.NomUnidadDIAN,
InvUni.IdUnidad,
InvUni.Abreviatura AS AbrevMedida,
--

ClasUNSPSC.CodUNSPSC,
EncMov.Nota AS NotaLinea,
VEncMov.NomAgrup1,
VEncMov.NomAgrup2,
VEncMov.ValorUnitarioUnidad,
VEncMov.ValorUnitarioExt,
VEncMov.Cantidad * VEncMov.ValorUnitarioUnidad - VEncMov.ValorDcto + VEncMov.ValorImptoConsumo + VencMov.ValorIva AS PrecioTotal,
VEncMov.NomLote,
VEncMov.VenceMov

FROM dbo.Inventarios_Unidades_DIAN AS InvUniDIAN RIGHT OUTER JOIN
dbo.Inventarios_Unidades AS InvUni ON InvUniDIAN.IdUnidadDIAN = InvUni.IdUnidadDIAN RIGHT OUTER JOIN
dbo.VEncabezadosMov AS VEncMov INNER JOIN
dbo.Encabezados_Mov AS EncMov ON VEncMov.IdEncabMov = EncMov.IdEncabMov LEFT OUTER JOIN
dbo.Monedas AS Mon ON EncMov.IdMoneda = Mon.IdMoneda INNER JOIN
dbo.Inventarios AS Inv ON Inv.IdInventario = EncMov.IdInventario ON InvUni.IdUnidad = EncMov.IdUnidad LEFT OUTER JOIN
dbo.FacturacionElectronica_ClasificacionUNSPSC AS ClasUNSPSC ON ClasUNSPSC.IdUNSPSC = Inv.FeIdUNSPSC
GO
PRINT N'Altering Procedure [dbo].[GetMovimientosFactElec]...';


GO
ALTER PROCEDURE [dbo].[GetMovimientosFactElec]
	@idEncab int
AS
BEGIN


	SELECT  
	ROW_NUMBER()OVER(PARTITION BY VEncMov.IdEncab ORDER BY VEncMov.IdEncabMov) AS numLineas, VEncMov.IdEncab, VEncMov.IdEncabMov, VEncMov.IdInventario, VEncMov.Cantidad, VEncMov.FactorCantidad, VEncMov.NomInventario, VEncMov.ValorUnitario, VEncMov.CodInventario, VEncMov.CodMoneda, VEncMov.IVAporc, VEncMov.ValorIva, ValorIvaExt, VEncMov.TipoImptoConsumo, VEncMov.ValorImptoConsumo, VEncMov.ValorImptoConsumoMov, VEncMov.ValorImptoConsumoMovExt, VEncMov.PorcentajeImpCon, VEncMov.Dcto, VEncMov.DctoFactor, VEncMov.ValorDcto, ValorDctoExt, VEncMov.SubTotalSinDcto, VEncMov.SubTotalSinDctoExt, VEncMov.TotalMovCal, VEncMov.TotalMovCalExt, VEncMov.SubTotalMov, VEncMov.SubTotalMovExt, VEncMov.ValorUnitarioConDcto, VEncMov.TotalMovMasIva, VEncMov.ValorUnitConIva, VEncMov.NotaMov, VEncMov.EsVisible, VEncMov.CodUnidadDIAN, VEncMov.NomUnidadDIAN, VEncMov.CodUNSPSC, VEncMov.NotaLinea, VEncMov.NomAgrup1, VEncMov.NomAgrup2, VEncMov.ValorUnitarioUnidad, ValorUnitarioExt,
	  VEncMov.PrecioTotal, (Cantidad * ValorUnitarioExt - ValorDctoExt + ValorImptoConsumo + ValorIvaExt) AS PrecioTotalExt, VEncMov.NomLote, VEncMov.VenceMov, VEncMov.FactorCantidad4

FROM VMovimientosFactElectronica AS VEncMov
WHERE VEncMov.IdEncab = @idEncab
END
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)]					
	--------------------------------------------------------------------------------------
	*/

	--Nuevo parametro para la representacion grafica de la unidad de medida para el peso
	IF NOT EXISTS (SELECT * FROM Parametros WHERE CodParametro = 255)
	INSERT INTO Parametros (CodParametro, NomParametro, ValParametro, Descripcion, Grupo, EsActivo, IdTipoControl, EsEspecial)
	VALUES (255, 'Abreviatura de peso en la representacion grafica', -24, 'Indicativo de la unidad de medida que se graficara en los PDFs de Fact.Electronica', 'Fact. Electronica', 1, 1, 0)

GO

GO
PRINT N'Update complete.';


GO


--Actualizar datos de la version
INSERT INTO ZiurVersiones (IdVersion, NumVersion, Descripcion)
VALUES (339,929,'Unidades de Medida Abrev para Graficar')
GO

COMMIT
GO
