R/anslag_avrund.R

Defines functions anslag_avrund

Documented in anslag_avrund

#' anslag_avrund
#'
#' @description
#' Avrunder etter avrundingsregler til budsjettanslag til Budsjettgruppa.
#'
#' @details
#' Avrunder verdi etter avrundingsreglene til hvordan budsjettanslag skal leveres til Budsjettgruppa.
#' *Poster på under 2 mill. kroner blir avrundet til nærmeste 0,1 mill. kroner.
#' *Poster i intervallet 2–199 mill. kroner blir avrundet til nærmeste 1 mill. kroner.
#' *Poster i intervallet 200–999 mill. kroner blir avrundet til nærmeste 5 mill. kroner.
#' *Poster på 1000 mill. kroner eller mer blir avrundet til nærmeste 10 mill. kroner
#'
#' @param x verdi som skal avrundes.
#' @param i_mill_kr boolean TRUE eller FALSE i mill.kr eller i hele kroner. Default er FALSE

#' @examples
#' anslag_avrund(x = 204.1, i_mill_kr = T)
#' returns 205



anslag_avrund <- function( x,i_mill_kr = F) {

    if( i_mill_kr == FALSE){
        #
        if(x <= 2*10^6)     { return( round(x, -5) ) }
        else if( x > 2*10^6 & x < 199*10^6){ return( round(x, -6))}
        else if( dplyr::between(x, 200*10^6, 999*10^6) ){ return( plyr::round_any(x, 5*10^6, f = round) )}
        else if( x > 999*10^6){return( round(x,-7))}
    }
    if( i_mill_kr == TRUE){
        #
        if(x <= 2)     { return( round(x, 1) ) }
        else if( x > 2 & x < 199){ return( round(x, .1))}
        else if( dplyr::between(x, 200 , 999 ) ){ return( plyr::round_any( x, 5, f = round) ) }
        else if( x > 1000){return( round(x,-1))}
    }


}
eal024/navR documentation built on Jan. 29, 2024, 4:36 p.m.