jueves, 23 de agosto de 2018

Generar ultimos dias de fecha por periodo SQL

 alter proc Pa_ConsistenciaCuotaMantenimiento_Generar --5219, '01/01/2019' , '01/01/2019'
 @IDSocioNegocio int =5219   ,
 @FechaEmisionInicio datetime     ,
 @FechaEmisionFinal datetime   

 as

 declare @IDListaPrecio  int = 0
 declare @IDMoneda  int = 0

select  @IDListaPrecio   =  isnull(IDListaPrecio,0) from MAESTROS.MAE_CLIENTES WHERE CLI_NCODIGOCLIENTE = @IDSocioNegocio

select  @IDMoneda = isnull(IDMoneda,0)  FROM ventas.vent_listaprecioscabecera where listPrecios_nCodigoListaPrecios = @IDListaPrecio 

declare @IDProducto int = 0

select @IDProducto = isnull(pro_nCodigoProducto,0) from produccion.pro_productos where cuotamantenimiento = 1


declare @Importe decimal(18,6) = 0

SELECT  @Importe  = isnull(listPreciosDet_nPreciosListaPrecios,0) FROM Ventas.vent_listapreciosdetalle where listPrecios_nCodigoListaPrecios = @IDListaPrecio   and pro_nCodigoProducto = @IDProducto

select  @Importe  , @IDProducto  ,  @IDMoneda  , @IDListaPrecio 
 
declare @Fechas table
(
 FechaEmisionInicio  datetime    ,
 FechaEmisionFinal  datetime 
)

-- insert into @Fechas values(@FechaEmisionInicio ,  @FechaEmisionFinal)
 

--select * from [MAESTROS].[Anio] where cast( codigo as int)  between year(@FechaEmisionInicio) and year(@FechaEmisionFinal )

 declare @ini datetime = @FechaEmisionInicio
declare @fin datetime = @FechaEmisionFinal

 declare @begdate as datetime
declare @enddate as datetime
declare @diff as int

declare @T_Fecha Table
(
Periodo varchar(10),
Annio int  ,
Mes int  ,
Fecha datetime ,
Importe decimal(18,6) ,
Feriado bit
)

set @begdate = (select cast( @ini as datetime)  )
set @enddate = (select cast(@fin as datetime)  )
set @diff = datediff(day, @begdate ,@enddate)

declare @FechaFinal datetime 

while (@begdate <= @enddate) --insertar el registro hasta que fecha inicio y fin sean iguales
begin


SELECT @FechaFinal =CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@begdate))),DATEADD(mm,1,@begdate)),103) 

--select  cast ( @begdate as date ) Fecha1,cast( @FechaFinal as date) Fecha2

if( cast ( @begdate as date ) = cast( @FechaFinal as date) )
begin
     insert into @T_Fecha  values( ( cast( year(@begdate) as varchar)+ '-' + RIGHT( '00' + cast( month(@begdate) AS varchar), 2)  ) ,
year(@begdate),
month(@begdate),  @begdate, @Importe, 0)
end


  --insert into Calendario values( ( cast( year(@begdate) as varchar)+ '-' + RIGHT( '00' + cast( month(@begdate) AS varchar), 2)  ) , year(@begdate), month(@begdate),  @begdate , 0)
 set @begdate = dateadd(day,1,@begdate) --vamos incrementando los días
end


select * from @T_Fecha

miércoles, 22 de agosto de 2018

- La transacción asociada con la conexión actual se ha completado, pero no se ha desechado. Debe desecharse antes de utilizar la conexión para ejecutar instrucciones SQL.

Hola amigos,

En esta ocasion veremos como solucionar este problema "- La transacción asociada con la conexión actual se ha completado, pero no se ha desechado. Debe desecharse antes de utilizar la conexión para ejecutar instrucciones SQL." que nos da cuando usamos transacciones largas con transactionscope, estableciendo el tiempo mas largo en nuestro web.config solucionaremos este problema.




<configuration>
   <system.transactions>
    <defaultSettings timeout="00:40:00" />  
</system.transactions>

  
  <appSettings>


Slds

miércoles, 1 de agosto de 2018

An error occurred while parsing EntityName. Line 1, position 2083. Facturacion Electronica

Estimados,

Cuando tengamos este tipo de error, tenemos que tener en cuenta que al cargar el xml (LoadXml)
con el caracter & ya que esto ara que se caiga parse del documento.


Slds