| Components | All | New | MacOS | Windows | Linux | iOS | ||||
| Examples | Mac & Win | Server | Client | Guides | Statistic | FMM | Blog | Deprecated | Old | |
MBS FileMaker Plugin Example Databases
ISO20022 QR v2.3
All examples are included with download of MBS FileMaker Plugin.
| Overview | |
| Tables | 1 |
| Relationships | 0 |
| Layouts | 1 |
| Scripts | 5 |
| Value Lists | 1 |
| Custom Functions | 7 |
| Custom Menus | 24 |
| File Options | |
| Default custom menu set | [Standard FileMaker Menus] |
| Default theme | Apex Blue |
| When opening file | |
| Minimum allowed version | 12.0 |
| Login using | Account Name; Account= Admin |
| Allow user to save password | Off |
| Require iOS passcode | Off |
| Show Sign-in fields | Off |
| Switch to layout | Off |
| Hide all toolbars | Off |
| Script triggers | |
| OnFirstWindowOpen | Script: Resize |
| OnLastWindowClose | Off |
| OnWindowOpen | Off |
| OnWindowClose | Off |
| OnFileAVPlayerChange | Off |
| OnWindowTransaction | Off |
| Thumbnail Settings | |
| Generate Thumbnails | On; Temporary |
| Table Name | Statistics |
Comments |
Occurrences in Relationship Graph |
| EZ_QR | 27 fields defined, 5 records |
EZ_QR |
| Table Name: EZ_QR - 27 Fields | ||||||||
| Field Name | Type | Options | Comments | On Layouts | In Relationships | In Scripts | In Value Lists | |
| IBAN | Normal, Text |
Auto-Enter:
|
||||||
| ZE_Name | Normal, Text |
Auto-Enter:
|
||||||
| ZE_Strasse | Normal, Text |
Auto-Enter:
|
||||||
| ZE_Hausnummer | Normal, Number |
Auto-Enter:
|
||||||
| ZE_PLZ | Normal, Number |
Auto-Enter:
|
||||||
| ZE_Ort | Normal, Text |
Auto-Enter:
|
||||||
| EZE_Name | Normal, Text |
Auto-Enter:
|
||||||
| EZE_Strasse | Normal, Text |
Auto-Enter:
|
||||||
| EZE_Hausnummer | Normal, Number |
Auto-Enter:
|
||||||
| EZE_PLZ | Normal, Number |
Auto-Enter:
|
||||||
| EZE_Ort | Normal, Text |
Auto-Enter:
|
||||||
| EZP_Name | Normal, Text |
Auto-Enter:
|
||||||
| EZP_Strasse | Normal, Text |
Auto-Enter:
|
||||||
| EZP_Hausnummer | Normal, Number |
Auto-Enter:
|
||||||
| EZP_PLZ | Normal, Number |
Auto-Enter:
|
||||||
| EZP_Ort | Normal, Text |
Auto-Enter:
|
||||||
| zahlbar | Normal, Date |
Auto-Enter:
|
||||||
| Betrag | Normal, Number |
Auto-Enter:
|
||||||
| Ref_Nummer | Normal, Number |
Auto-Enter:
|
||||||
| f_QR | Calculated, Text |
Calculation:
|
||||||
| f_QR_Resume | Calculated, Text |
Calculation:
|
||||||
| f_Empfangsschein | Calculated, Text |
Calculation:
|
||||||
| QR_Code | Normal, Binary |
Auto-Enter:
|
||||||
| Dev_Notes | Normal, Text |
Auto-Enter:
|
||||||
| Zoom | Normal, Number |
Auto-Enter:
|
||||||
| empty | Normal, Text |
Auto-Enter:
|
||||||
| Type | Normal, Text |
Auto-Enter:
|
||||||
Layout Objects: EZ_QR_200
| Field Name: EZ_QR::ZE_Hausnummer | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::EZE_Hausnummer | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::EZP_Hausnummer | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::ZE_Ort | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::EZE_Ort | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::EZP_Ort | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::EZE_Name | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::EZE_Strasse | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::IBAN | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::ZE_Name | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::ZE_Strasse | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::ZE_PLZ | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::EZE_PLZ | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::EZP_Name | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::EZP_Strasse | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::EZP_PLZ | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::zahlbar | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::Betrag | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::Ref_Nummer | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::empty | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::ZE_Hausnummer | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Conditional Formatting | Condition | Format |
| 1. |
|
self:normal .self { background-color: rgba(98.8235%,95.2941%,1.96078%,1); } |
| Field Name: EZ_QR::EZE_Hausnummer | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::Type | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::f_QR | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::QR_Code | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
No | |
| Field Name: EZ_QR::Dev_Notes | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
No | |
| Field Name: EZ_QR::f_QR_Resume | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::QR_Code | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
No | |
| Field Name: EZ_QR::Betrag | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::Betrag | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Name: EZ_QR::f_Empfangsschein | |||||
| Field Properties | Coordinates | Field Format | Field Behavior | Quick Find | |
|
|
Field Format:
|
Field Behavior:
|
Yes | |
| Field Properties | Coordinates | Fields | Quick Find | ||||
|
|
No |
| Button Properties | Coordinates | Script/Script Step | |||
|
|
Show/Hide Toolbars [ Toggle ] | |||
| Button Bar Properties | Coordinates | |||||
|
|
|||||
| Button Segments |
| Button Properties | Coordinates | Script/Script Step | ||||
|
|
Go to Record/Request/Page [ Previous ] | ||||
| Button Properties | Coordinates | Script/Script Step | ||||
|
|
Perform Script [ “Make_QRCode” ] Scripts: |
||||
| Button Properties | Coordinates | Script/Script Step | ||||
|
|
New Record/Request | ||||
| Button Properties | Coordinates | Script/Script Step | ||||
|
|
Go to Record/Request/Page [ Next ] | ||||
| Button Bar Properties | Coordinates | |||||
|
|
|||||
| Button Segments |
| Button Properties | Coordinates | Script/Script Step | ||||
|
|
Perform Script [ “Zoom_In_Out”; Parameter: "Out" ] Scripts: |
||||
| Button Properties | Coordinates | Script/Script Step | ||||
|
|
Perform Script [ “Zoom_In_Out”; Parameter: "In" ] Scripts: |
||||
| Button Properties | Coordinates | Script/Script Step | ||||
|
|
Perform Script [ “close_PC” ] Scripts: |
||||
| Button Bar Properties | Coordinates | |||||
|
|
|||||
| Button Bar Properties | Coordinates | |||||
|
|
|||||
| Tab Control Properties | Coordinates | ||||||
|
|
||||||
| Tabs | |||||||
| Tab Properties | Tab Controls | Slide Controls | Fields | Buttons | Portals | Web Viewer Controls | Charts |
|
Field Objects
|
||||||
|
Field Objects
|
||||||
|
Field Objects
|
||||||
| Graphic Object Properties | Coordinates | ||||
|
|
| Graphic Object Properties | Coordinates | ||||
|
|
| Graphic Object Properties | Coordinates | ||||
|
|
| Graphic Object Properties | Coordinates | ||||
|
|
| Graphic Object Properties | Coordinates | ||||
|
|
| Graphic Object Properties | Coordinates | ||||
|
|
| Value List Name | Source | Values | On Layouts |
| Type | Custom |
|
| Make_QRCode |
| showMenu_OR_FullAccess |
| Zoom_In_Out |
| Resize |
| close_PC |
| Next Script: [showMenu_OR_FullAccess] |
| Script Name | Make_QRCode |
| Run script with full access privileges | Off |
| Siri Shortcut Visible | Off |
| Include In Menu | Yes |
| Layouts that use this script | |
| Scripts that use this script | |
| Script Definition | |
| Script Steps |
|
| Fields used in this script |
|
| Scripts used in this script | |
| Layouts used in this script | |
| Tables used in this script | |
| Table occurrences used by this script | |
| Custom Functions used by this script | |
| Custom menu set used by this script | |
| Previous Script: [Make_QRCode] | Next Script: [Zoom_In_Out] |
| Script Name | showMenu_OR_FullAccess |
| Run script with full access privileges | On |
| Siri Shortcut Visible | Off |
| Include In Menu | No |
| Layouts that use this script | |
| Scripts that use this script | |
| Script Definition | |
| Script Steps |
|
| Fields used in this script | |
| Scripts used in this script | |
| Layouts used in this script | |
| Tables used in this script | |
| Table occurrences used by this script | |
| Custom Functions used by this script | |
| Custom menu set used by this script | |
| Previous Script: [showMenu_OR_FullAccess] | Next Script: [Resize] |
| Script Name | Zoom_In_Out |
| Run script with full access privileges | Off |
| Siri Shortcut Visible | Off |
| Include In Menu | No |
| Layouts that use this script | |
| Scripts that use this script | |
| Script Definition | |
| Script Steps |
|
| Fields used in this script | |
| Scripts used in this script | |
| Layouts used in this script | |
| Tables used in this script | |
| Table occurrences used by this script | |
| Custom Functions used by this script | |
| Custom menu set used by this script | |
| Previous Script: [Zoom_In_Out] | Next Script: [close_PC] |
| Script Name | Resize |
| Run script with full access privileges | Off |
| Siri Shortcut Visible | Off |
| Include In Menu | Yes |
| Layouts that use this script | |
| Scripts that use this script | |
| Script Definition | |
| Script Steps |
|
| Fields used in this script | |
| Scripts used in this script | |
| Layouts used in this script | |
| Tables used in this script | |
| Table occurrences used by this script | |
| Custom Functions used by this script | |
| Custom menu set used by this script | |
| Previous Script: [Resize] |
| Script Name | close_PC |
| Run script with full access privileges | Off |
| Siri Shortcut Visible | Off |
| Include In Menu | No |
| Layouts that use this script | |
| Scripts that use this script | |
| Script Definition | |
| Script Steps |
|
| Fields used in this script | |
| Scripts used in this script | |
| Layouts used in this script | |
| Tables used in this script | |
| Table occurrences used by this script | |
| Custom Functions used by this script | |
| Custom menu set used by this script | |
| Function Name | Parameters | Availability | Definition | In Field Definitions | In Scripts |
| SPC_QRR200_S | ZE_Name;ZE_Strasse;ZE_Hausnummer;ZE_PLZ;ZE_Ort;EZE_Name;EZE_Strasse;EZE_Hausnummer;EZE_PLZ;EZE_Ort;EZP_Name;EZP_Strasse;EZP_Hausnummer;EZP_PLZ;EZP_Ort;IBAN;Ref_Nummer;Betrag;zahlbar;CR | All accounts | /* QR-Code Data Set für Swiss QR Code gem. ISO-18004 SPC - SwissPaymentCode QRR - QR Referenz (SCOR [ISO 11649], NON [ohne Referenz] nicht unterstützt) © Copyright 2017 - SIX Interbank Clearing AG, Version 1.0 vom 27.4.2017 MBS Text.ReplaceNewline = 3 für geforderter Zeilenumbruch CR UND LF (CarriageReturn UND LineFeed) Benjamin Fehr, EfficientBizz GmbH http://www.efficientbizz.com */ MBS( "Text.ReplaceNewline"; Let ( [ $CR = ¶ ; // Zahlungsempfänger - ZE $ZE = ZE_Name & $CR & ZE_Strasse & $CR & ZE_Hausnummer & $CR & ZE_PLZ & $CR & ZE_Ort & $CR & "CH" & $CR ; // Endgültiger Zahlungsempfänger - EZE $EZE = EZE_Name & $CR & EZE_Strasse & $CR & EZE_Hausnummer & $CR & EZE_PLZ & $CR & EZE_Ort & $CR & If ( not IsEmpty(EZE_Name);"CH" ) & $CR ; // Endgültiger Zahlungspflichtiger - EZP $EZP = EZP_Name & $CR & EZP_Strasse & $CR & EZP_Hausnummer & $CR & EZP_PLZ & $CR & EZP_Ort & $CR & If ( not IsEmpty(EZP_Name);"CH" ) & $CR ; // Betrag $Amount = Truncate ( Betrag;0 ) & "." & Right ( GetAsText((Betrag * 100)) ; 2 ) ; $paydate = ISO_Date ( zahlbar) ]; // QR Type "SPC" & $CR & // Version "0200" & $CR & // Coding "1" & $CR & // IBAN Substitute ( IBAN ; " " ; "" ) & $CR & // S - strukturiert, K - kombiniert "S" & $CR & // Biller $ZE & // $CR & // $EZE & for future use $CR & $CR & $CR & $CR & $CR & $CR & $CR & // Betrag $Amount & $CR & "CHF" & $CR & "S" & $CR & // Zahlungspflichtiger $EZP & // Referenztyp "QRR" & $CR & // 27-stellige Ref_N° Substitute ( Ref_Nummer ; " " ; "" ) & $CR & // $paydate "zahlbar bis: " & $paydate & $CR & // End-of-Payment "EPD" ) ; 3 ) | ||
| ISO_Date | input | All accounts | //ISO_Date Let ( [ yyyy = Year ( input ) ; mm = Right ( "0" & Month ( input ) ; 2) ; dd = Right ( "0" & Day ( input ) ; 2); sep = "-" ] ; yyyy & sep & mm & sep & dd ) | ||
| SPC_QRR_Resume | ZE_Name;ZE_Strasse;ZE_Hausnummer;ZE_PLZ;ZE_Ort;EZE_Name;EZE_Strasse;EZE_Hausnummer;EZE_PLZ;EZE_Ort;EZP_Name;EZP_Strasse;EZP_Hausnummer;EZP_PLZ;EZP_Ort;IBAN;Ref_Nummer;Betrag;zahlbar;LegSize;TxtSize | All accounts | /* Zahlteil QR_Rechnung ergänzend zu QRR - QR Referenz (SCOR [ISO 11649], NON [ohne Referenz] nicht unterstützt) © Copyright 2017 - SIX Interbank Clearing AG, Version 1.0 vom 27.4.2017 Benjamin Fehr, EfficientBizz GmbH http://www.efficientbizz.com */ Let ( [ // $CR = Char(10) ; // $CR = ¶ ; // $CR = "</BR>"; // Zahlungsempfänger - ZE $ZE = ZE_Name & ¶ & ZE_Strasse & " " & ZE_Hausnummer & ¶ & "CH-" & ZE_PLZ & " " & ZE_Ort ; // Endgültiger Zahlungsempfänger - EZE $EZE = EZE_Name & ¶ & EZE_Strasse & " " & EZE_Hausnummer & ¶ & "CH-" & EZE_PLZ & " " & EZE_Ort ; // Endgültiger Zahlungspflichtiger - EZP $EZP = EZP_Name & ¶ & EZP_Strasse & " " & EZP_Hausnummer & ¶& "CH-" & EZP_PLZ & " " & EZP_Ort ; // Betrag $Amount = Betrag ; $paydate = ISO_Date ( zahlbar) ]; // IBAN TextSize ("Konto / Zahlbar an" ; LegSize) & ¶ & TextSize ( Substitute ( IBAN ; " " ; "" ) ; TxtSize) & ¶ & // Biller // TextSize ( "Zahlungsempfänger" ; LegSize) & ¶ & TextSize ($ZE ; TxtSize) & ¶ & ¶ & // Infos TextSize ( "Zusätzliche Informationen" ; LegSize) & ¶ & TextSize ("Rechnung-Nr. " & GetAsNumber ( Middle ( Substitute ( Ref_Nummer ; " " ; "" ) ; 17 ; 9 ) ); TxtSize) & ¶ & ¶ & // Zahlungspflichtiger TextSize ( "Zahlbar durch" ; LegSize) & ¶ & TextSize ($EZP ; TxtSize) & ¶ ) & ¶ & /* If (not IsEmpty(EZE_Name); TextSize ( "Endgültiger Zahlungspflichtiger" ; LegSize) & ¶ & TextSize ($EZE ; TxtSize) & ¶ ) & ¶ & */ TextSize ( "Zahlbar bis" ; LegSize) & ¶ & TextSize (zahlbar ; TxtSize) | ||
| Modulo10rekursiv | SeedNumber | All accounts | // Name : Modulo10rekursiv // Creator : Daniel Wilhelm (wilhelm@datasol.ch , http://www.datasol.ch ) // Company : Datasol Wilhelm // Date : 15. Mai 2007 // Purpose : Used to return the checksum of a number // Parameters : SeedNumber - The number of witch you want to calculate the checksum // Uses : to calculate the checksums needed for the swiss ESR / BESR post payment order (Einzahlungsschein) // Info : It might not be the most elegant way, but it works. If you have any suggestions to make this simpler, please contact me Let([ $Startlength = Length ( SeedNumber ) ; $Restlength = Length ( $Rest) ] ;"")& If( $Startlength > $Restlength ; Let ([ $ZeileS = "0123456789" ; $Zeile0 = "094682713500" ; $Zeile1 = "946827135019" ; $Zeile2 = "468271350928" ; $Zeile3 = "682713509437" ; $Zeile4 = "827135094646" ; $Zeile5 = "271350946855" ; $Zeile6 = "713509468264" ; $Zeile7 = "135094682773" ; $Zeile8 = "350946827182" ; $Zeile9 = "509468271391" ; $rest = GetAsText(SeedNumber) ; $kb = "0" ; $P = "0"; $nächstezeile = Evaluate ( "$Zeile"&$kb ) ; $kb = Middle ( $nächstezeile ; Position ( $ZeileS ; Left ( $rest ; 1); 1; 1) ; 1) ; $P = Middle ( $nächstezeile; 12; 1) ; $nächstezeile = Case( Length ( $rest ) > 1 ;Evaluate ( "$Zeile"&$kb ) ; $nächstezeile ) ; $rest = Middle ( $rest ; 2; 1000) ; $nächstezeile = Evaluate ( "$Zeile"&$kb ) ]; Case( Length ( $rest ) > 0 ;Modulo10rekursiv ( $rest ) ; $P )) ; /*ELSE*/ Let ([ $kb = Middle ( $nächstezeile ; Position ( $ZeileS ; Left ( $rest ; 1); 1; 1) ; 1) ; $nächstezeile = Case( Length ( $rest ) > 0 ;Evaluate ( "$Zeile"&$kb ) ; $nächstezeile ) ; $P = Middle ( $nächstezeile; 12; 1) ; $rest = Middle ( $rest ; 2; 1000) ]; Case( Length ( $rest ) > 0 ;Modulo10rekursiv ( $rest ) ; $P )) ) | ||
| SPC_QRR_Empfangsschein | ZE_Name;ZE_Strasse;ZE_Hausnummer;ZE_PLZ;ZE_Ort;EZE_Name;EZE_Strasse;EZE_Hausnummer;EZE_PLZ;EZE_Ort;EZP_Name;EZP_Strasse;EZP_Hausnummer;EZP_PLZ;EZP_Ort;IBAN;Ref_Nummer;Betrag;zahlbar;LegSize;TxtSize | All accounts | /* Zahlteil QR_Rechnung ergänzend zu QRR - QR Referenz (SCOR [ISO 11649], NON [ohne Referenz] nicht unterstützt) © Copyright 2017 - SIX Interbank Clearing AG, Version 1.0 vom 27.4.2017 Benjamin Fehr, EfficientBizz GmbH http://www.efficientbizz.com */ Let ( [ // $CR = Char(10) ; // $CR = ¶ ; // $CR = "</BR>"; // Zahlungsempfänger - ZE $ZE = ZE_Name & ¶ & ZE_Strasse & " " & ZE_Hausnummer & ¶ & "CH-" & ZE_PLZ & " " & ZE_Ort ; // Endgültiger Zahlungsempfänger - EZE $EZE = EZE_Name & ¶ & EZE_Strasse & " " & EZE_Hausnummer & ¶ & "CH-" & EZE_PLZ & " " & EZE_Ort ; // Endgültiger Zahlungspflichtiger - EZP $EZP = EZP_Name & ¶ & EZP_Strasse & " " & EZP_Hausnummer & ¶& "CH-" & EZP_PLZ & " " & EZP_Ort ; // Betrag $Amount = Betrag ; $paydate = ISO_Date ( zahlbar) ]; // IBAN TextSize ("Konto / Zahlbar an" ; LegSize) & ¶ & TextSize ( Substitute ( IBAN ; " " ; "" ) ; TxtSize) & ¶ & // Biller // TextSize ( "Zahlungsempfänger" ; LegSize) & ¶ & TextSize ($ZE ; TxtSize) & ¶ & ¶ & // Zahlungspflichtiger TextSize ( "Zahlbar durch" ; LegSize) & ¶ & TextSize ($EZP ; TxtSize) ) | ||
| SPC_QRR200_K | ZE_Name;ZE_Strasse;ZE_PLZ;ZE_Ort;EZE_Name;EZE_Strasse;EZE_PLZ;EZE_Ort;EZP_Name;EZP_Strasse;EZP_PLZ;EZP_Ort;IBAN;Ref_Nummer;Betrag;zahlbar;CR | All accounts | /* QR-Code Data Set für Swiss QR Code gem. ISO-18004 SPC - SwissPaymentCode QRR - QR Referenz (SCOR [ISO 11649], NON [ohne Referenz] nicht unterstützt) © Copyright 2017 - SIX Interbank Clearing AG, Version 1.0 vom 27.4.2017 MBS Text.ReplaceNewline = 3 für geforderter Zeilenumbruch CR UND LF (CarriageReturn UND LineFeed) Benjamin Fehr, EfficientBizz GmbH http://www.efficientbizz.com */ MBS( "Text.ReplaceNewline"; Let ( [ $CR = ¶ ; // Zahlungsempfänger - ZE $ZE = ZE_Name & $CR & ZE_Strasse & $CR & // ZE_Hausnummer & ZE_PLZ & " " & ZE_Ort & $CR & $CR & $CR & "CH" & $CR ; // Endgültiger Zahlungsempfänger - EZE $EZE = EZE_Name & $CR & EZE_Strasse & $CR & // EZE_Hausnummer & $CR & EZE_PLZ & " " & EZE_Ort & $CR & $CR & If ( not IsEmpty(EZE_Name);"CH" ) & $CR ; // Endgültiger Zahlungspflichtiger - EZP $EZP = EZP_Name & $CR & EZP_Strasse & $CR & // EZP_Hausnummer & EZP_PLZ & " " & EZP_Ort & $CR & $CR & $CR & If ( not IsEmpty(EZP_Name);"CH" ) & $CR ; // Betrag $Amount = Truncate ( Betrag;0 ) & "." & Right ( GetAsText((Betrag * 100)) ; 2 ) ; $paydate = GetAsDate (zahlbar) ]; // QR Type "SPC" & $CR & // Version "0200" & $CR & // Coding "1" & $CR & // IBAN Substitute ( IBAN ; " " ; "" ) & $CR & // S - strukturiert, K - kombiniert // Biller "K" & $CR & $ZE & // $CR & // $EZE & for future use $CR & $CR & $CR & $CR & $CR & $CR & $CR & // $CR & // Betrag $Amount & $CR & "CHF" & $CR & // & $paydate & $CR & // Zahlungspflichtiger "K" & $CR & $EZP & // Referenztyp "QRR" & $CR & // 27-stellige Ref_N° Substitute ( Ref_Nummer ; " " ; "" ) & $CR & // $paydate "zahlbar bis: " & $paydate & $CR & // End-of-Payment "EPD" ) ; 3 ) | ||
| SplitAddresslineHousenumber_cf | AddressLineWithNumber;ResultStreetNumberFormat | All accounts | // Custom Function: SplitAddresslineHousenumber_CF // Parameters: AddressLineWithNumber (text) // The address line with or without the house number. The house number may be at the end or the beginning or may be completely missing // ResultStreetNumberFormat // Pass one of the following parameters "Street", "Number", "Pipe" (| Char), List (¶ Char) separated or "Debug" - if left empty, the original Input String is returned // Description: Separates the street from the house number in the given address // Author: Alexis Gehrt alexis@database-designs.ch // Notes: Well, if you find smarter options, you're welcome ;-) // Version: Dec 28, 2023 - First Release 1.0 // Version: Oct 22, 2025 - Improved Header Description // Sample Streets: Bahnhofstrasse 1 // Hans Musterstr. 14c // 1024, Oakwood Avenue // 20, Rue Des Corbieres // Sil Platz // Via Pianazzo, 5 Let ([ // Trick: RightWords removes all unwatend Characters such as Carriage Return // Usually the german street abbreviation is cleaned - however, double ss is a Swiss form of writing ~addressPreClened = Trim(RightWords( Substitute (AddressLineWithNumber ; "str." ; "strasse") ; 999)); // Find the position of a numeric first digit in the address Character 0123456789 ~ValidNummberDigits = "0123456789"; // There are adresses that do not have any numbers at all. ~HasNumberChars = If (not IsEmpty(Filter ( ~addressPreClened ; ~ValidNummberDigits )) ; 1 ; 0 ); ~firstNumberChar = If (~HasNumberChars = 1 ; Left(Filter ( ~addressPreClened ; ~ValidNummberDigits );1);""); ~firstNumberPosition = Position (~addressPreClened ; ~firstNumberChar ; 1 ; 1 ); // Determine the Position of any Space or Comma after the first digit. This will solve "25a, Rue de la Nation" in France // Note the SortValue by -2 (negative) will sort Numeric descending i.e. if there ist comma, space.. The last Position is used ~firstSpaceOrCommaAfterDigit = GetValue ( SortValues ( UniqueValues( Position (~addressPreClened ; " " ; ~firstNumberPosition ; 1 ) & "¶" & Position (~addressPreClened ; "," ; ~firstNumberPosition ; 1 ) ; 2 ) ; -2) ;1) ; // Find the first Position of any of the Characters in the Alphabet… // Might need to be Extended by more Umlaut Characters as you wish ~ValidAlphaDigits = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZöäüéàèëçÖÄÜÇ" ; ~HasAlphaChars = If (not IsEmpty(Filter ( ~addressPreClened ; ~ValidAlphaDigits )) ; 1 ; 0 ); ~firstAlphaChar = If (~HasAlphaChars = 1 ; Left(Filter ( ~addressPreClened ; ~ValidAlphaDigits );1);""); ~firstAlphaPosition = Position ( Upper(~addressPreClened) ; ~firstAlphaChar ; 1 ; 1 ) ; // Check if the first numeric digit is prior to any alpha digit ~isHouseNumberAtBeginning = (~firstNumberPosition > 0) and (~firstNumberPosition < ~firstAlphaPosition) ; // Extract the house number and street based on the position of the digits ~houseNumberAllCharacters = If (~HasNumberChars = 0 ; "" ; If (~isHouseNumberAtBeginning; Middle (~addressPreClened ; ~firstNumberPosition ; ~firstSpaceOrCommaAfterDigit - ~firstNumberPosition ); Middle (~addressPreClened; ~firstNumberPosition; 9999 )) ); // Trim it to eliminate any remaining garbage ~houseNumberCleaned = Trim( If ( Right(Trim(~houseNumberAllCharacters); 1) = ","; Left(Trim(~houseNumberAllCharacters); Length(Trim(~houseNumberAllCharacters))-1) ; ~houseNumberAllCharacters )) ; // The street is everything else, so just substitute the extracted housenumber (pre-garbage cleaned) ~street = Trim(Substitute (~addressPreClened ; ~houseNumberAllCharacters ; "" )); // More Clening Options ~streetCleaned = Case( Right ( ~street ; 1 ) = "," ; Left (~street; Length(~street) -1) ; ~street) ]; // End of Let Return the house number and street as a list Case( ResultStreetNumberFormat = "Street" ; ~streetCleaned ; ResultStreetNumberFormat = "Number" ; ~houseNumberCleaned; ResultStreetNumberFormat = "Pipe" ; ~streetCleaned & "|" & ~houseNumberCleaned; ResultStreetNumberFormat = "List" ; ~streetCleaned & "¶" & ~houseNumberCleaned; ResultStreetNumberFormat = "Debug" ; TextColor ( ~streetCleaned ; RGB ( 40 ; 140 ; 40 ) ) & " " & TextColor ( ~houseNumberCleaned ; RGB ( 255 ; 0 ; 0 ) ) ; AddressLineWithNumber ) ) |
| Menu Sets | Menus | In Scripts | In Layouts | Comments |
| [Standard FileMaker Menus] |
|
Download example: ISO20022 QR v2.3
Used functions: