Obtener el tipo de cambio SUNAT con SQL Server


Hola amigos, a continuación les muestro el código de un procedimiento almacenado en SQL Server 2008 que me permite obtener el tipo de cambio de compra y venta de SUNAT del día actual, una vez obtenido ambos tipos de cambio los inserto en una tabla de mi base de datos.

Espero les sea de utilidad.


Código:

 
create procedure spr_cpsObtenerTipoCambioSunat             
as              
begin           
    
Declare @Object as Int;    
Declare @responseText as varchar(8000);    

set dateformat dmy
declare @dFecha_Actual datetime
declare @sFecha_Actual varchar(300)
declare @anio_Actual varchar(6)
declare @mes_Actual varchar(4)
declare @dia_Actual varchar(4)

select @dFecha_Actual = getdate()

set @anio_Actual = convert(varchar, year(@dFecha_Actual))
set @mes_Actual = RIGHT('0' + convert(varchar, month(@dFecha_Actual)),2)
set @dia_Actual = RIGHT('0' + convert(varchar, day(@dFecha_Actual)),2)

set @sFecha_Actual = @anio_Actual +'-'+ @mes_Actual + '-' + @dia_Actual

declare @urlWs varchar(max)
set @urlWs = 'http://code.staffsystems.us/webservices/tipo-de-cambio/serverside.php?work=get_sunat&anho='
+@anio_Actual+'&mes='+@mes_Actual+'&dia='+@dia_Actual

    
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;    
Exec sp_OAMethod @Object, 'open', NULL, 'get',@urlWs,'false'    
    
Exec sp_OAMethod @Object, 'send'    
Exec sp_OAMethod @Object, 'responseText', @responseText OUTPUT    

declare @cadena2 nvarchar(MAX)
declare @pos_primer_corchete int

set @pos_primer_corchete = CHARINDEX('[', @responseText)
set @cadena2 = substring( @responseText, @pos_primer_corchete + 1, LEN(@responseText) - @pos_primer_corchete - 2  )

set @cadena2 = Replace(@cadena2, '},', '};')
set @cadena2 = Replace(@cadena2, '{', '')
set @cadena2 = Replace(@cadena2, '}', '')
set @cadena2 = Replace(@cadena2, '"', '')
set @cadena2 = Replace(@cadena2, 'fecha:', '')
set @cadena2 = Replace(@cadena2, 'compra:', '')
set @cadena2 = Replace(@cadena2, 'venta:', '')

DECLARE @sFilaFechaActual varchar(MAX)

select @sFilaFechaActual = strData from fnc_Split(@cadena2, ';')
where substring(strData,1,10)= @sFecha_Actual

declare @tipoCambioCompra varchar(10)
declare @tipoCambioVenta varchar(10)

if @sFilaFechaActual is null
begin
 set @dFecha_Actual =  dateadd(day,-1,getdate()) --'04/09/2014'
 set @anio_Actual = convert(varchar, year(@dFecha_Actual))
 set @mes_Actual = RIGHT('0' + convert(varchar, month(@dFecha_Actual)),2)
 set @dia_Actual = RIGHT('0' + convert(varchar, day(@dFecha_Actual)),2)
 set @sFecha_Actual = @anio_Actual +'-'+ @mes_Actual + '-' + @dia_Actual 
 set @urlWs = 'http://code.staffsystems.us/webservices/tipo-de-cambio/serverside.php?work=get_sunat&anho='+@anio_Actual+
 '&mes='+@mes_Actual+'&dia='+@dia_Actual
 Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;    
 Exec sp_OAMethod @Object, 'open', NULL, 'get',@urlWs,'false'    
 Exec sp_OAMethod @Object, 'send'    
 Exec sp_OAMethod @Object, 'responseText', @responseText OUTPUT 
 set @pos_primer_corchete = CHARINDEX('[', @responseText)
 set @cadena2 = substring( @responseText, @pos_primer_corchete + 1, LEN(@responseText) - @pos_primer_corchete - 2  )
 set @cadena2 = Replace(@cadena2, '},', '};')
 set @cadena2 = Replace(@cadena2, '{', '')
 set @cadena2 = Replace(@cadena2, '}', '')
 set @cadena2 = Replace(@cadena2, '"', '')
 set @cadena2 = Replace(@cadena2, 'fecha:', '')
 set @cadena2 = Replace(@cadena2, 'compra:', '')
 set @cadena2 = Replace(@cadena2, 'venta:', '') 
 select @sFilaFechaActual = strData from fnc_Split(@cadena2, ';')
 where substring(strData,1,10)= @sFecha_Actual 
 
 set @tipoCambioCompra = (select strData as Compra from fnc_Split(@sFilaFechaActual, ',') where Id=2)
 set @tipoCambioVenta = (select strData as Venta from fnc_Split(@sFilaFechaActual, ',') where Id=3)
 insert into [Contabilidad.TipoCambioContable](TributarioCompra,TributarioVenta,FechaRegistra)
 values(@tipoCambioCompra,@tipoCambioVenta,getdate())
end
else
begin
 set @tipoCambioCompra = (select strData as Compra from fnc_Split(@sFilaFechaActual, ',') where Id=2)
 set @tipoCambioVenta = (select strData as Venta from fnc_Split(@sFilaFechaActual, ',') where Id=3)
 insert into [Contabilidad.TipoCambioContable](TributarioCompra,TributarioVenta,FechaRegistra)
 values(@tipoCambioCompra,@tipoCambioVenta,getdate())
end

Exec sp_OADestroy @Object    
        
end 

 

Share This Post →

4 comentarios:

Powered By Blogger |   Designed By Blogger Templates
DMCA.com