Nja, det finns flera lösningar, du kan ha en värdelista på kundkortet, som anger ett par olika beräkningar som kunden kan välja mellan.
(Jo förresten, om ni i er affärsprocess tillåter tokigheter som att varenda kund skall ha en unik kalkyl och andra specialvillkor, undantag från dessa och mera specialvillkor ovanpå det, så kan ni slänga bort alla databaser och börja om med färgkritor och kartoteks-kort, ni blir precis lika effektiva.)
Eller så kan du förlänga din ifsats något, dvs göra om den till en sk case-sats.
Case (
villkor ; villkoret är sant ;
villkor ; villkoret är sant ;
villkor ; villkoret är sant ;
villkor ; villkoret är sant ;
villkor ; villkoret är sant ;
returvärde )
Exempel, säg att de tre kunder som skall ha detta heter HS, AB och CC
Case (
Kundnummer="HS" ; (410/2*,37/15,5)*(Sidor) ;
Kundnummer="AB" ; (410/2*,37/15,5)*(Sidor) ;
Kundnummer="CC" ; (410/2*,37/15,5)*(Sidor) ;
Sidor)
Det betyder att om villkoret inte uppfylls på första raden, går FileMaker vidare till nästa och nästa, och om det inte finns flera villkor, så returnerar FileMaker vad som nu står som sista grej, returvärdet. Så fort FileMaker dock har hittat ett villkor som uppfylls, så slutar FileMaker att utvärdera villkoren, vilket ju är bra.
Så länge antalet kunder som skall ha specialkalkyler är litet så kan du ju bygga det hela på det här viset.
Alternativ kan du på kundkortet införa någon (eller flera) av tre olika saker:
A. En värdelista med kryssryta Ja/Nej vilket betyder att denna kund skall ha specialformeln. Specialkalkyl kan vi kalla det fältet.
B. En värdelista med fyra-fem olika värden som alla representerar olika kalkyler, tex 1=Den du har, 2=en variant med 0,3 istället för 0,37 osv... Kalkylmetod kan vi kalla det fältet.
C. Ett fält som endast innehåller siffran ifråga, 0.33, 0.35, 0.37 osv osv. Kalkylvärde kan vi kalla det fältet. Är det tomt kör man med den vanliga kalkylen.
Så här kan A realiseras:
If(Kunder::Specialkalkyl="Ja"; (410/2*,37/15,5)*(Sidor) ; Sidor)
Så här kan B realiseras:
Case (
Kunder::Kalkylmetod="1" ; (410/2*,37/15,5)*(Sidor) ;
Kunder::Kalkylmetod="2" ; (410/2*,35/15,5)*(Sidor) ;
Kunder::Kalkylmetod="3" ; (410/2*,33/15,5)*(Sidor) ;
Sidor)
Så här kan C reliseras:
If (
not IsEmpty(Kunder::Kalkylvärde) ; (410/2 * Kunder::Kalkylvärde /15,5)*(Sidor) ;
Sidor)
Jo, not betyder inte och IsEmpty tittar om ett fält är tomt. Så tillsammans blir dessa "Inte tomt".
Lycka till.