dbo.get_rate_valuta

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Null on Null Input

False

Schema Bound

False

Assembly

Parameters

Name Data Type Length Description
(Result) decimal 17
@valuta_date date 3
@valuta_code varchar 255

SQL Script

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

CREATE FUNCTION dbo.get_rate_valuta (@valuta_date date , @valuta_code varchar(255))
RETURNS decimal(38,4)
WITH EXECUTE AS CALLER 
AS
BEGIN  
declare @date_part int= DATEPART(dw,@valuta_date)
if @date_part <4
begin
 set  @valuta_date= dateadd(DAY,-(3 + @date_part),@valuta_date)
end
else if @date_part >4
begin
 set  @valuta_date= dateadd(DAY,-(@date_part-4),@valuta_date)
end

declare @rate  decimal(38,4) 
if not(@valuta_code='IDR')  
begin 
 set @rate=(SELECT   top(1)     dt_currencies.rate
 FROM            dt_currencies  INNER JOIN
        dt_currencies_header ON dt_currencies.headerid = dt_currencies_header.id INNER JOIN
        dt_currencies_master  ON dt_currencies.currenciesid = dt_currencies_master.id
 WHERE        (dt_currencies_header.startdate =@valuta_date)  AND (dt_currencies_master.currenciescode = @valuta_code)
 ) 
  if @rate is null and @valuta_date is not null
  begin 
  set  @rate=dbo.RunSQLStr (' dbo.sp_rate_valuta_new_insert_auto '''+ convert(varchar(10),@valuta_date,121) +''','''+ @valuta_code +'''')  
   end 
 
end 
else
begin
 set @rate=1
end 
    
return(@rate)
END;

GO