Funcions en Access: calcular el preu de les diferents entrades d’una comanda, albarà o factura

En el següent exemple crearem una funció que ens permetrà calcular el preu d'un producte o servei amb diferents descomptes i l'import final de la línea d'un albarà. En Access les funcions es diferencien dels subprocediments perquè aquestes retornen un valor. Les funcions permeten emmagatzemar càlculs complexes que ens oferiran un valor quan els passem els paràmetres, que podem facilitar des de qualsevol lloc d’Access, com per exemple qualsevol control d’un formulari o camps d’una taula.

Una avantatge important de les funcions és que l’abast és “públic”, es pot utilitzar en qualsevol procediment de l’aplicació.

La funció que a continuació crearem la podrem reutilitzar per calcular l’import d’un producte o servei, tant en una comanda com en un albarà o factura, estalviant-nos haver de composar la fórmula cada vegada.

Els passos que seguirem per al nostre exemple seran:

  1. Crear la funció en un mòdul
  2. Passar els paràmetres a la funció des del formulari que conté les línees d’un albarà, utilitzant l’event BeforeUpdate ( Antes de actualizar ) del formulari i els valors dels controls que contenen el preu, quantitat, descompte1, descompte2 i descompte 3, per obtenir l’import final de la línea, és a dir, del producte o servei que estiguem introduint.

1. Crear la funció en un mòdul

Vés a la fitxa Crear > Otros > Macro > Módulo 



i introdueix el següent codi 





Guardem el mòdul amb el nom que vulguem i anem al formulari on tenim les línees de l'albarà, i on hem de trobar els camps que continguin la informació relativa a la quantitat, preu, Descompte1, Descompte2 i Descompte3. Recordem que quan haguem d’utilitzar la funció, la cridarem pel nom que li haguem donat en el codi, en aquest cas CalcularImportLinea i no pel nom que li haguem posat al mòdul.

2. Passar els paràmetres a la funció des del formulari que conté les línees de l’albarà

En el meu cas vaig crear el següent formulari , que com podeu veure conté els camps quantitat, preu, dte1 ( descompte 1 ), dte2 i dte 3, que utilitzarem com a paràmetres per passar a la funció i calcular l’Import Línea ( en el nostre cas el camp TOTLAL ).



Per passar els paràmetres seleccionarem el formulari que conté les línees de l’albarà, obrirem la Fulla de Propietats> Eventos > Antes de actualizar i obrirem el generador de codi 



A continuació introduirem el codi que crida a la funció per calcular l’import final de la línea, és a dir, de l’article o servei que estem introduint en l’albarà, i que en el nostre cas és el camp Me.TOTLAL.

Per obtenir aquest valor passem a la funció com a paràmetres els controls del nostre formulari que contenen la Quantitat ( Me.CANLAL ), el Preu ( Me.PRELAL ), el Descompte 1 ( Me.DT1LAL ), el Descompte 2 ( Me.DT2LAL ) i el Descompte 3 ( Me.DT3LAL ).



Un cop introduït el codi podem tancar la fulla de propietats, mostrar el formulari en Vista Formulario  i observem que el valor del camp Me.TOTLAL ( Import Línea ) s’actualitza cada vegada que saltem de línea ja que el codi que hem creat en l’event BeforeUpdate ( Antes de actualizar ) s’encarrega de cridar a la funció CalcularImportLinea ( que es troba dins del mòdul que hem creat anteriorment ) i que calcula l’import d’aquest camp en funció de la quantitat, preu, descompte 1, 2 i 3 informats en la línea de l’albarà.

Nota important: podrem tornar a cridar la funció CalcularImportLinea per exemple, en el cas que també tinguem formularis d’ofertes, comandes o factures, estalviant-nos de fer cada vegada els càlculs per obtenir l’import de la línea.



Aplicacions i usos en les empreses

MÈTODE PER CALCULAR UN PREU AMB MÉS D'UN DESCOMPTE:

Per calcular el preu d'un producte o servei amb més d'un descompte:
Apliquem el primer descompte del 10 %: ( 25 € x ( 90/100) ) = 22,50 €
Apliquem el segon descompte del 5% sobre el resultat: 22,50 € x ( 95 / 100 ) = 21,375 €
I així successivament

Escrit tot en una única fórmula seria ( 25 € x ( 90 / 100 ) ) x ( 95 / 100 ) ) = 21,375

I la fórmula genèrica és: preu x ( 1-dte1 ) x ( 1-dte2 ) x ( 1- dte3 ) x .....x ( 1-dten ), amb dte < 1 i per tant hem de dividir el dten entre 100 ( exemples: 5% : 5 / 100 = 0,05, 20%: 20 / 100 = 0,20 .... )

Aquesta fórmula és la que hem fet servir quan hem creat la funció CalcularImportLinea explicada anteriorment.

Comentaris

Entrades populars