2 marzo, 2024

UDF EN POWER APPS PARA CONTAR DÍAS LABORABLES Y DÍAS NATURALES ENTRE DOS FECHAS

Hola a todos,

Y dado que ya he inaugurado la posibilidad de crear UDF’s en Power Apps, no he podido resistirme a crear dos funciones muy típicas, estas son: calculas días laborables entre dos fechas y calcular días naturales entre dos fechas.

Para ello vamos escribir estas dos funciones en la propiedad Formulas de nuestra App:

//Creamos funcion para calcular días laborables
DiasLab(Inicio: DateTime; Final: DateTime): Number =
    CountRows(
        Filter(
            Sequence(
                DateDiff(Inicio; Final; TimeUnit.Days) + 1
            );
            Weekday(Inicio + Value - 1) in [2; 3; 4; 5; 6]
        )
    );;

//Creamos funcion para calcular días naturales
DiasNat(Inicio: DateTime; Final: DateTime): Number =
    DateDiff(Inicio; Final; TimeUnit.Days) + 1 ;;


Una vez que tenemos las funciones creadas, las pasamos a variables en la propiedad OnSelect del botón Calcular días:

Set(TdiasLab;DiasLab(txtInicio.Text;txtFin.Text));;
Set(TdiasNat;DiasNat(txtInicio.Text;txtFin.Text))

Y luego colocamos cada variables en la propiedad text de cada textInput. Con el siguiente resultado:

Para finalizar he decidido crear otra función para comprobar si el año que seleccionamos es o no es bisiesto:

//Creamos función para comprobar si año es bisiesto
EsBisiesto(Year: Number) :Boolean=
    If(
        Mod(Year; 4) = 0;
        If(
            Mod(Year; 100) <> 0 || Mod(Year; 400) = 0;
            true;
            false
        );
        false
    );;

Y pasamos la función a una variable en la propiedad OnSelect del botón Comprobar año bisiesto:

If(EsBisiesto(txtBis.Text); Set(Comprobacion; "Es Bisiesto"); Set(Comprobacion; "No es Bisiesto"))

Por otra parte, no he incluido la función de año bisiesto en los cálculos de las funciones de los días, he preferido dejarla a parte para que el usuario compruebe si es bisiesto y lo tenga en cuenta en los resultados.

Por supuesto, el botón Reset es para dejar en blanco las tres variables que estamos usando:

Set(TdiasNat;Blank());;
Set(TdiasLab;Blank());;
Set(Comprobacion;Blank());;


Y esto es todo!!

Espero que sea de utilidad!!

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies