02 - Oefening Geavanceerde Expressies
Je hebt een uitgebreide gereedschapskist aan functies leren kennen. Kun je de juiste functie kiezen voor elk scenario?
Het business object
Factuur
├── FactuurNummer: F-2024-0158
├── Datum: 2024-03-15
├── BetaalTermijn: 30
├── Klant
│ ├── Naam: Slagerij van Dam
│ ├── Plaats: Utrecht
│ └── Telefoon: 030-123 4567
└── Regels
├── Regel
│ ├── Omschrijving: Vleeskruiden mix
│ ├── Aantal: 25
│ └── PrijsPerStuk: 4.50
└── Regel
├── Omschrijving: Pekelmengsel
├── Aantal: 10
└── PrijsPerStuk: 7.80 Vraag 1 — Betaaldatum berekenen
Schrijf een expressie die de uiterste betaaldatum toont als Betalen voor: 14 april 2024. Gebruik de factuurdatum en de betaaltermijn.
Denk na voor je doorgaat naar het antwoord.
Vraag 2 — Telefoonnummer opschonen
Het telefoonnummer bevat een streepje en een spatie. Schrijf een expressie die het toont als 0301234567 (zonder streepje en zonder spatie).
Denk na voor je doorgaat naar het antwoord.
Vraag 3 — Klantnaam in hoofdletters
Schrijf een expressie die de plaatsnaam van de klant in hoofdletters toont op het verzendetiket.
Denk na voor je doorgaat naar het antwoord.
Vraag 4 — Regeltotaal correct afronden
Het regeltotaal (aantal × prijs) moet worden afgerond op 2 decimalen. Schrijf de expressie.
Denk na voor je doorgaat naar het antwoord.
Vraag 5 — Eerste beschikbare waarde
De klant heeft soms een afleveradres, soms niet. Als er geen afleveradres is, wil je het factuuradres tonen. Welke ReflexBlue-functie gebruik je, en hoe ziet de expressie eruit?
Denk na voor je doorgaat naar het antwoord.
Vraag 6 — Weeknummer
Op een interne productiebon moet het ISO-weeknummer van de orderdatum staan. Schrijf de expressie.
Denk na voor je doorgaat naar het antwoord.
Stop hier. Beantwoord alle zes de vragen voordat je verder scrolt.
Antwoorden
Vraag 1
Details
Antwoord: Betaaldatum
Betalen voor: {Format("{0:dd MMMM yyyy}", AddDays(Invoice.InvoiceDate, Invoice.PaymentTerm.Days))} AddDays berekent de datum, Format maakt er leesbare tekst van. Omdat het tekstvak statische tekst combineert met een veld, is Format() verplicht.
Vraag 2
Details
Antwoord: Telefoonnummer
{Replace(Replace(Invoice.InvoiceAddress.Phone, "-", ""), " ", "")} Twee geneste Replace()-aanroepen: eerst het streepje verwijderen, dan de spatie.
Vraag 3
Details
Antwoord: Hoofdletters
{ToUpperCase(Invoice.InvoiceAddress.City)} Resultaat: UTRECHT
Vraag 4
Details
Antwoord: Afronden
{Round(Lines.Quantity * Lines.Price, 2)} | Rij | Berekening | Resultaat |
|---|---|---|
| 1 | 25 × 4.50 | 112.50 |
| 2 | 10 × 7.80 | 78.00 |
In dit geval zijn de uitkomsten al rond, maar bij een prijs als 4.567 voorkomt Round() dat er een onverwacht lang decimaal verschijnt.
Vraag 5
Details
Antwoord: Coalesce
{Coalesce(Invoice.DeliveryAddress.AddressLine1, Invoice.InvoiceAddress.AddressLine1)} Coalesce() geeft de eerste niet-lege waarde terug. Heeft de klant een afleveradres? Dan wordt dat getoond. Zo niet? Dan het factuuradres. Je kunt ook meer dan twee waarden meegeven.
Vraag 6
Details
Antwoord: Weeknummer
Week {ISOWeek(PackingSlip.DeliveryDate)} Resultaat: Week 12. De functie ISOWeek() geeft het weeknummer volgens ISO 8601 — de standaard die in Europa wordt gebruikt.
Meer in deze rubriek
- 01 - Geavanceerde Expressies
- 02 - Oefening Geavanceerde Expressies
- 03 - Berekende Velden
- 04 - Oefening Berekeningen
- 05 - Systeemvariabelen
- 06 - Oefening Systeemvariabelen
- 07 - Subrapporten
- 08 - Oefening Subrapporten
- 09 - Afdrukken en Exporteren
- 10 - Oefening Exporteren
- 11 - Factuur Bouwen
- 12 - Oefening Factuur