Year 2024 in review

Let's review what happened in the year 2024. In total I visited seven of the thirteen FileMaker conferences this year. We run our own Xojo conference in Andernach. And we released six updates to our plugins for FileMaker and Xojo.

January

January started with the development of new 14.0 and 24.0 plugins, a lot of blog posts advertising for the conferences.

(more)

PDF Rechnung mit oder ohne ZUGFeRD empfangen?

Ab 1. Januar 2025 könnte jeder empfange PDF Rechnung eine e-Rechnung im ZUGFeRD Format sein. Es steht ja nicht immer dabei und bei einer ZUGFeRD Rechnung sollte der XML Anteil ausgewertet oder wenigstens kontrolliert werden.

Jede Rechnung im Eingang sollte geprüft werden, u.a.

  • Sind alle Angaben nach §14 UStG einhalten?
  • Sind die Mengen korrekt?
  • Sind die Beträge und folglich die Summen korrekt?
  • Ist die Umsatzsteuer korrekt ausgewiesen?
  • passt die Rechnung zum Angebot bzw. Bestellung?
(more)

Merry Christmas

Frohe Weihnachten und ein gutes neues Jahr!

Merry Christmas & Happy New Year

Joyeux Noël et Bonne Année

Buon Natale e Felice Anno Nuovo


Franziska, Sebastian, Michael, Monika & Christian Schmitz

MBS FileMaker Advent calendar - Door 24 - Merry Christmas with Apple Script

candy cane Monkeybread Monkey as an elf candy cane
Day 24 - Merry Christmas with Apple Script

It's December 24th and it's time for the presents to be delivered. That's why we want to wish you a Merry Christmas in our application and we want to do this in a very special way, with Apple Script.

AppleScript is a scripting language developed by Apple that makes it possible to automate applications on macOS and simplify various tasks. Since its introduction in 1993, AppleScript has served as a bridge between the operating system and numerous programs to control them through scripts. The scripting language makes it possible to automate recurring processes, exchange data between applications or create complex workflows. AppleScript is particularly useful when many recurring tasks have to be performed manually. An example of this would be editing and sorting files, extracting information or controlling external applications such as Safari, Finder or Microsoft Word. The basic syntax of AppleScript is comparatively easy to learn. With the MBS FileMaker Plugin you can also start Apple Scripts from FileMaker. Today I will show you how this works. I would like to take this opportunity to point out that this door is not a course on Apple Script syntax, but simply presents three different examples.

(more)

MBS FileMaker Advent calendar - Door 23 - Printing a PDF

candy cane Monkeybread Monkey as an elf candy cane
Day 23 - Printing a PDF

Today our monkey wants to make a list of the presents that need to be bought by Christmas Eve so that he can check off what is there and what still needs to be bought. Our monkey would like to document this in a PDF.

So first we have to create this list. Do you remember how we read out the wish lists on day 10?

We now need the list of things that our Giftee wants. This list contains the wishes as text, each separated by a line break. We now want to write these entries in a table. Each gift should have a data record and be able to be assigned to the gift without mistakes. To do this, we first create a new table Gifts, which has the fields Giftee and Gift. The Giftee table is linked to this table via its primary key and the Giftee Foreinkey in the Gifts table to enable it to be assigned to a Giftee. In our script, we first transfer the gift list for a person into a variable and ask how many entries this list has. We also note the PrimaryKey for the person and then open a window to our new table. We then go through each entry in our list in a loop and combine it with the primary key of the gift to form a record. Once we have added all the entries to our database, we close the window again.

Set Variable [ $Gifts ; Value: Giftee::Presents ]
Set Variable [ $Length ; Value: ValueCount ( $Gifts ) ]
Set Variable [ $Key ; Value: Giftee::PrimaryKey ]
New Window [ Style: Document ; Name: "Gifts" ; 
	 Using layout: "Gifts" (Gifts) ]
Set Variable [ $i ; Value: 1 ]
Loop [ Flush: Always ]
	Exit Loop If [ $i>$Length ]
	New Record/Request
	Set Field [ Gifts::Giftee ; $Key ]
	Set Field [ Gifts::Gift ; GetValue ( $Gifts ; $i ) ]
	Set Variable [ $i ; Value: $i+1 ]
End Loop
Close Window [ Name: "Gifts" ; Current file ]

The layout in which we would like to display our data looks like this:

(more)

MBS FileMaker Advent calendar - Door 22 - Taking Photos

candy cane Monkeybread Monkey as an elf candy cane
Day 22 - Taking Photos

Our monkey is worried that someone might log in with a coworker account who shouldn't actually have access, like Grumonky the grumpy ex-Christmas elf. Our monkey has come up with a solution. When opening the application, he wants to take a picture of who is sitting in front of the computer and save it in a table.

To record the photo, we use a separate table, which we call User. In this table we have the standard fields that are created directly with the table and also the container field Image in which the recorded image is to be found later. We create the list layout Layout User as shown in the picture:

(more)

MBS FileMaker Advent calendar - Door 21 - Continuity Camera and Vision

candy cane Monkeybread Monkey as an elf candy cane
Day 21 - Continuity Camera and Vision

Yesterday we saw how we can scan a wish list and use text recognition for Windows. Today we would like to look at a way of scanning a document and recognizing the text for Apple users. To do this, we first use the Continuity Camera functions in combination with the iPhone for scanning and then recognize the text with Vision.

The ContinuityCamera functions allow you to capture an image or scan a page by controlling your iPhone from your Mac and having it perform the scan or image capture. The requirement for this is that the devices are logged into iCloud with the same Apple ID, are on the same network, Bluetooth is enabled, the mobile device is running iOS 12 (or newer) and the computer is a Mac with macOS Mojave (or newer).

(more)

MBS FileMaker Advent calendar - Door 20 - Scan and Recognize

candy cane Monkeybread Monkey as an elf candy cane
Day 20 - Scan and Recognize

In this day and age, there are still people who like to receive things in printed form, and Christmas is no exception. Some people still fill out their wish lists and send them by mail. But we also have ways to make this easier. Here I would like to make a distinction between Mac and Windows. Today I'll show you the Windows part. First, we want to digitalize the piece of paper. To do this, we first scan it with functions from the WIA component and then run the Windows text recognition over it.

(more)

MBS FileMaker Advent calendar - Door 19 - Hot Keys

candy cane Monkeybread Monkey as an elf candy cane
Day 19 - Hot Keys

In Door 17 we got to know the UserNotifications, which we display once every time the solution is opened. But our little monkey doesn't think that's enough, so he wants to be able to call it up more often. However, he doesn't want an additional button on the layout, but would like to start the script automatically with a key combination. The HotKey functions under Mac and Windows are available in the plugin for this purpose. We can use them to define hotkeys to start scripts or calculations.

With the HotKey.Register function, we can register a specific key combination by first entering the virtual key code of the key to watch in the parameters. This can be the function keys (F), for example. So that the keys cannot fire if only this key is pressed, as otherwise normal use would not be possible, we also enter so-called keyboard modifiers. These can be the additional keys command, shift, alpha, option, control, RightShift, RightOption and RightControl. We can also specify other optional parameters in this function. For example, we can specify whether a hotkey should be exclusively assignable for this solution, which would prohibit other applications that also want to register this combination, because this combination is already assigned and can only be used again when this hotkey is released. Then we can also define the script in the parameters that is to be started when this combination is pressed. To do this, we specify the name of the database in which the script is located and the script name.

(more)

MBS FileMaker Plugin, version 14.6pr6

New in this prerelease of version 14.6 of the MBS FileMaker Plugin:
  • Updated DynaPDF to version 4.0.96.273.
  • Added MinDataInterval, MaxDataInterval, DataRate, MinDataRate, MaxDataRate and isOpen as property names for Phidget.GetProperty function.
  • Added DataRate as property name for Phidget.SetProperty function.
  • Added DynaPDF.DeleteOutputIntent function.
  • Increased the column width for script IDs so you see more digits.
Download at monkeybreadsoftware.com/filemaker/files/Prerelease/

You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.


Use Image Playground in FileMaker

Since macOS 15.2 we can use Image Playground in our applications. The users love to generate an image with Apple Intelligence. Whether you need a cool image to add to a social post, a placeholder image for some operation, the AI can just generate something based on a few keywords.

Our ImagePlayground functions add this functionality to FileMaker. You create the image playground, configure it with maybe a few concept phrases, a source image and then show it. We recommend to show it from a button somewhere in the user interface.

(more)

MBS FileMaker Advent calendar - Door 18 - ics-Files

candy cane Monkeybread Monkey as an elf candy cane
Day 18 - ics-Files

In door 16 we took care of the fact that we can enter appointments in our calendar, but what do we do if our monkey wants to share an appointment with someone, e.g. as an attachment for an appointment confirmation. We can also realize this by assembling an ics file that contains the data for an appointment. As with the business card that we embedded in the QR code, an ics file also has a specific form, where some data is required and some is optional. But let's take a look at the structure of such a file by exporting an existing appointment from the calendar and opening it in an editor. It is an event that takes place on 24th December 2024 from 17:00 to 23:30 and has the title Christmas Eve Dinner. It takes place in Home, has a further description and a link to a website. And this is what it looks like in the editor:

(more)

MBS @ FMTraining.TV - Exporting to Excel from FileMaker using MBS

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch.

A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.

We check out the XL functions in MBS FileMaker Plugin to export data from FileMaker to Excel files. With LibXL we can edit xls and xlsx files without having Microsoft Excel installed, do custom imports and exports by scripts.

(more)

MBS FileMaker Advent calendar - Door 17 - User Notifications

candy cane Monkeybread Monkey as an elf candy cane
Day 17 - User Notifications

Advent is running faster and faster and there are not many days left until Christmas. We want our monkey to keep an eye on the time and so we always want to receive a user notification when FileMaker is opened showing how many days are left until Christmas.

I will now show you how this works with our user notifications under Windows and Mac.

First we have to determine the number of days left until Christmas. We always start from the current year, so if it is December 30th we want a negative number to come out. First we get the current date in a variable. Then we determine the date of December 25th in the current year by taking the year from the current date. Internally, a date value is seen as a number of days since a specified day. For this reason, we get the exact number of days by subtracting the current date from the Christmas date.

(more)

MBS FileMaker Plugin, version 14.6pr5

New in this prerelease of version 14.6 of the MBS FileMaker Plugin:
  • Updated to Xcode 16.2.
  • Added Process.LoadFramework function.
  • Fixed a problem with CGImageSource.SetProperty function not passing floating point numbers in automatic mode.
  • Deprecated Calendar functions. Please move to Events functions.
  • Updated DynaPDF to version 4.0.96.272.
  • Added ImagePlayground functions.
  • Added DynaPDF.ConvToFreeTextCallout function.
  • When logging that you have a ton of objects, we now list the object type and script name.
  • Fixed contextual menu additions to not show up in database design dialog, broken in pr3.
Download at monkeybreadsoftware.com/filemaker/files/Prerelease/

You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.


MBS FileMaker Advent calendar - Door 16 - Add Entries In Apple Calendar

candy cane Monkeybread Monkey as an elf candy cane
Day 16 - Add Entries In Apple Calendar

Our monkey has lots of appointments and uses the Apple Calendar app to keep track of them. Now it would be nice if our monkey could also enter appointments directly from FileMaker into this calendar and we would like to implement this today. The functions from the Calendar section are available for this purpose.

Since our layout is getting pretty full and we don't need to see the information from the last created appointment on the layout all the time, we use a button with a popover and position our fields on this popover. As the fields do not belong to a specific data record, we create these fields as global fields in the Data table. We need the following fields:

Appointment_Title Text
Appointment_Start Timestamp
Appointment_End Timestamp
Appointment_All Day Text
Appointment_URL Text
Appointment_Location Text
Appointment_Notes Text

We can fill these fields with information later when we create an appointment. The appointment should then be transferred to the calendar app by clicking on a button. Behind this button is the script that I would now like to introduce to you.

(more)

MBS FileMaker Advent calendar - Door 15 - vCard QR

candy cane Monkeybread Monkey as an elf candy cane
Day 15 - vCard QR

Today we want to create QR codes that contain the contact details of one of our giftee. If we scan this contact with our cell phone, it can be transferred directly to the phone's address book. To do this, we first have to write a so-called vcf file. The ending vcf stands for Virtual Contact File. We can see how such a file is structured if we export a contact from the Apple calendar and open it in a text editor. It may look like this:

BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//macOS 13.4.1//EN
N:Mustermann;Max;;;
FN:Max Mustermann
ORG:Mustermann AG;
EMAIL;type=INTERNET;type=WORK;type=pref:xyz@abc.de
TEL;type=CELL;type=VOICE;type=pref:012346789
TEL;type=IPHONE;type=CELL;type=VOICE:1011121314
TEL;type=HOME;type=FAX:15161718
ADR;type=HOME;type=pref:;;Musterstraße 3;Musterstadt;;1234;Germany
NOTE:Conference 
item1.URL;type=pref:www.xyz.com
item1.X-ABLabel:_$!<HomePage>!$_
BDAY:2000-04-01
END:VCARD 

We have different key and value pairs here that are separated from each other with a colon.

(more)

MBS FileMaker Advent calendar - Door 14 - XML

candy cane Monkeybread Monkey as an elf candy cane
Day 14 - XML

When rebuilding the weather station, you have probably already seen that you can get the data not only as JSON, but also as XML.

XML stands for eXtensible Markup Language and is a markup language that was developed to store and transport data in a structured and easily readable form. It was standardized by the World Wide Web Consortium (W3C) and first published in 1998. Similar to JSON, XML is often used to exchange data between interfaces. Like JSON, XML is also structured in layers, but the way it is written is more reminiscent of HTML. This is because in XML we also work with tags.

(more)

MBS FileMaker Advent calendar - Door 13 - Share Files With Apple Dialog

candy cane Monkeybread Monkey as an elf candy cane
Day 13 - Share Files With Apple Dialog

As today is Friday the 13th and we don't want to push our luck too far, we're only adding one little thing today, but it's very effective. Because under Mac we can also use the typical sharing dialog in FileMaker.

Today we want to add this option for the files in the portal. To do this, we create an additional button in the portal. Then we call the following script step with it:

Set Variable [ $r ; Value: MBS( "SharingService.ShareItems"; ""; Files::File ) ]

This function shows us the dialog. In the first parameter, we can specify which service is to be used for sharing.

com.apple.messages.ShareExtension Messages
com.apple.Notes.SharingExtension Notes
com.apple.reminders.sharingextension Reminders
com.apple.share.AirDrop.send AirDrop
com.apple.share.Mail.compose Mail
com.apple.share.System.add-to-iphoto Add to Photos

If you specify one of these service identifiers in the parameter, the file is shared via this single option. If you want to give the user the choice of which of the options they want to use, simply leave this parameter empty. We have also chosen this option.

(more)

MBS FileMaker Plugin, version 14.6pr4

New in this prerelease of version 14.6 of the MBS FileMaker Plugin:
  • Added StoreKit.LastError function.
  • Added StoreKit.SetRequestFailedTrigger function to set a script trigger for an error.
  • Changed Script ID column for script workspace to be wider and allow more digits to show.
  • Updated curl library to version 8.11.1.
  • Added UTF-8 validation checks to WordFile functions to avoid creating invalid word files with invalid text.
  • Fixed an insufficient escaping for JSON.SortWithEvaluate function, which sometimes caused an internal error and prevented sorting.
  • Added our field picker extension to another field picker dialog in FileMaker, which you see when you duplicate a portal and reassign the fields. This dialog also now gets tooltips for fields.
  • Added FileNames parameter for Plugin.LimitFunction function.
  • Fixed a problem with font handling for XL functions.
  • Changed custom function auto complete to not add bracket for function name if you are not at the end of the text.
  • Added checkbox for custom functions autocomplete.
  • Added SyntaxColoring.AutoCompleteCustomFunctions.GetEnabled and SyntaxColoring.AutoCompleteCustomFunctions.SetEnabled functions.
  • Improved auto complete for custom functions to show MBS FileMaker Plugin names.
  • Added Plugin.LibExpatVersion function.
  • Updated expat library to version 2.6.4.
  • Updated mongo-c-driver library to version 1.29.1.
  • Updated ShowURL function for iOS to work again in newest iOS SDK version.
  • Fixed an issue where custom function auto complete would show Get multiple times.
Download at monkeybreadsoftware.com/filemaker/files/Prerelease/

You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.


MBS FileMaker Advent calendar - Door 12 - Sending Mails

candy cane Monkeybread Monkey as an elf candy cane
Day 12 - Sending Mails

We have already put together an archive in one of the previous doors. We would now like to be able to send this archive by email with the click of a button. To do this, we create a button in the mail portal.

When the button is pressed, a dialog is displayed. In this dialog we then set our text and our subject. In addition, we would like to have three buttons here with which we can either Cancel, Send the mail without archive attachment or Send with archive.

To create the dialog we use the functions from the dialog area. With these functions we can freely design our dialog. We can add buttons and fields and even display an icon to give the dialog a nicer look.

(more)

MBS FileMaker Advent calendar - Door 11 - Know Your Way

candy cane Monkeybread Monkey as an elf candy cane
Day 11 - Know Your Way

Today we are already on day 11 of our advent calendar. Our little monkey would like to take a look at the region where the recipients live. The best way to do this is to take a look at the map. MBS has the MapView functions for Mac and iOS to display maps from Apple Maps.

To do this, we mark the position where we want to display our map with a rectangle. We name this rectangle Map. Now we want to create our map. We can either use the MapView.CreateWithSize function to place the map with a specific size at specific coordinates on the screen or we can use the MapView.CreateWithControl function and place our map on a control that we have previously placed on your layout. We want to place our map on our rectangle with the name Map. So we use the second option. In the function, we first specify the window in which we want to create this map. As we want to place the button in the same window in which we want to display the map and the window must be the frontmost one, we can enter a 0 for the window index, followed by the name of the control on which we want to place the map. Optionally, we can now enter x and y values by an amount that we would like to move the map in relation to the control. We don't want to do this, so we will leave it out.

Set Variable [ $$Mapview ; Value: MBS("MapView.CreateWithControl"; 0; "Map") ]

Now that we have a map, we want to display the customer's address on the map. To do this, we use the MapView.ShowAddress function to set the focus of our map on the address. In this function, we first enter our Mapview reference and then our address, which we have put together from the street, city, state and country, separated by commas. But we don't just want to display the address, we also want to mark it with a picture of our monkey. We already have this image in the global variable $$Overlay_Image. To mark the point of the address on the map, we use the function MapView.AddPoint. We pass this function a JSON with the information about this point. We have already seen how a JSON is structured on day 8. Now we create new information in an empty object with the functions JSON.AddStringToObject and JSON.AddNumberToObject. In these two functions, we first specify the JSON object to which we want to add the information and then the key and the value. In our case, we want to specify the address, the title of the annotation, the image of the annotation and the size of this image in the JSON. For our title, we take the first and last name. The title is displayed next to the icon when we move the mouse over it. The part of the script then looks like this:

(more)

Extend the context menu for layout and browse mode in FileMaker

As you may know we have a feature where you can add new contextual menu commands to the Script Workspace with our SyntaxColoring.AddContextMenuCommand function. The custom commands can edit script lines, paste some template code or do whatever you like. Read more here Goodies 33: Custom context menu commands and Adding ChatGPT to the ScriptWorkspace context menu

For the next MBS FileMaker Plugin version 14.6 we add the possibility to do the same for the contextual menus in Layout and Browse mode for FileMaker. Just call SyntaxColoring.AddContextMenuCommand with the new flags 16 for browse mode and 32 for layout mode. The plugin will show your custom commands and run whatever you pass as expression if the user selects them. And as usual we store them in the preferences file, so they presist.

(more)

Three weeks till year's end

The year 2024 will end in less than three weeks. Do you need some more licenses?
  • You can order licenses for 2025 or later and have invoice, delivery and payment done in 2024.
    This way you secure the current pricing and the possibility to keep upgradeability for older licenses.
  • And of course you can order updates for several years in advance for all your MBS products.
  • As all our Xojo and DynaPDF plugin licenses are per developer, you should check if you got a new developer in your team this year and adjust licenses to match team size.
  • For MBS FileMaker Plugin please check if you have enough license for the number of seats or servers you have in use.
    If you upgrade to unlimited seats or servers, the plugin won't need to check the usage counts.
  • For LibXL you can check if you like to upgrade from individual developer licenses to the Enterprise level. We can assist and may apply a special upgrade price.

Especially if you run on a budget and you want to spend some money in the old year, you can buy updates for several years in advance.
If you need help to decide what Xojo, FileMaker or plugin license you need, we may be able to assist you.


MBS FileMaker Advent calendar - Door 10 - Reading The Wish List

candy cane Monkeybread Monkey as an elf candy cane
Day 10 - Reading The Wish List

Welcome to Door 10. A few days have passed since we sent out our wish list forms and the first wish lists are slowly rolling in. It's time for us to incorporate readout into our solution. For this reason, we first create a container in which we can place the file to read it out and create a new script. Since we also need DynaPDF here, we must first initialize it. Then we load the file from the container into a newly created working environment as we have already seen in the previous doors.

If [ MBS("DynaPDF.IsInitialized")=0 ]
	Perform Script [ Specified: From list ; “InitDynaPDF” ; Parameter:    ]
End If
# 
Set Variable [ $pdf ; Value: MBS("DynaPDF.New") ]
Set Variable [ $r ; Value: MBS("DynaPDF.OpenPDFFromContainer"; $pdf; Giftee::WishlistIn) ]
Set Variable [ $r ; Value: MBS("DynaPDF.ImportPDFFile"; $pdf) ]
(more)

MBS FileMaker Plugin, version 14.6pr3

New in this prerelease of version 14.6 of the MBS FileMaker Plugin:
  • Improved stack printing for Windows to help debugging issues.
  • Updated SQLite to version 3.47.2.
  • Improved SyntaxColoring.AddContextMenuCommand function to allow them to show in browse and layout mode.
  • Fixed crash in DuckDB client for SQL functions.
  • Added a sort feature to the plugin for the Show Window list.
  • Added Archive.IsOpen function.
Download at monkeybreadsoftware.com/filemaker/files/Prerelease/

You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.


Menu Sorting

If you have a lot of databases in FileMaker and not all windows are visible, you are certainly a power user with a huge database project. And whenever you go to the window menu to show a window, you have to scan the list to find the one you like. To make live easier, the MBS Plugin now sorts this starting with 14.6pr3 later this week.



As you see we just sort the menu entries in place if the plugin is installed. Enjoy!
Available for macOS only in MBS Plugin 14.6pr3 and later.

MBS FileMaker Advent calendar - Door 9 - Archives

candy cane Monkeybread Monkey as an elf candy cane
Day 9 - Archives

Our monkey likes to have things together in a compact form. For this reason, it also likes archives and would like to have the option of creating an archive from the children's information and the individual files in the portal. We want to implement this now.

(more)

MBS FileMaker Advent calendar - Door 8 - Weather data with JSON

candy cane Monkeybread Monkey as an elf candy cane
Day 8 - Weather data with JSON

Today is day 8 of our advent calendar and winter is getting a bit chilly for our monkey. To avoid any surprises at Christmas, he wants to be able to call up the current temperature and weather conditions for each customer in FileMaker.

We would like to retrieve the weather data from a weather database. The weather data can be found on the website openweathermap.org. A few years ago we already made a video about how we implement this with FileMaker nativ functions. Today I would like to show you how this works with the JSON functions of MBS. These have the advantage that they can work very quickly, even with large amounts of data.

(more)

ZUGFeRD Update

Many customers in Germany are currently interested in the topic of electronic invoices. With the MBS FileMaker Plugin and the DynaPDF functions, we can help you to implement this in FileMaker solutions.

ZUGFeRD

If you are looking into the topic of e-invoicing, then you should read on the website of the Forum elektronische Rechnung Deutschland what ZUGFeRD, what XRechnung and what Factur-XX is.

Then download the current standard: ZUGFeRD 2.3.2. In the download you will find the specification for ZUGFeRD (and Factur-X). There are also various code lists, schema files and many sample invoices.

(more)

MBS FileMaker Advent calendar - Door 7 - Open Files With Roundabout Route Via Temporary Files

candy cane Monkeybread Monkey as an elf candy cane
Door 7 - Open Files With Roundabout Route Via Temporary Files

Welcome to day 7 of our advent calendar. Today we would like to add a function to our document portal from day 3. So far we can add documents to this portal via drag and drop, what we are missing now is the possibility to open them from FileMaker.

To do this, we use the MBS function Files.LaunchFile. We can pass a path to this function and the file or folder located at this path is then launched with the standard program provided for this purpose.

But we realize now that we have a container value and no path, how do we do this now? You could perhaps come up with the idea of writing the path to a field when reading it in. This procedure becomes problematic, if we move the original file to a new location and the path is no longer correct. So we have to take a different way. We save the file in the temporary folder and display it from there.

To do this, we first create the path where we want to save the file. We determine the temporary folder with the Folders.UserTemporary function. In the Folders area, we also have further functions for other special folders such as Desktop, Applications or Documents.

Once we have the path to this folder, we still need to append the file name with the correct file extension. The file name is made up of the primary key and the file name. The file name already contains the file extension. We now put together this determined file name with the Path.AddPathComponent function, specifying our temporary path in the parameters.

(more)

MBS FileMaker Advent calendar - Door 6 - Sending Out Wishlist Forms

candy cane Monkeybread Monkey as an elf candy cane
Door 6 - Sending Out Wishlist Forms

Today it is time for us to take care of the wish lists of the giftees. We want to prepare a form that we send by e-mail to the giftees, who fill out this form. In a later door we can then read this information from our returned document.

To do this, we first create the template we want to send. To do this, we first need a simple PDF file on which we can position our fields. We have the option of either building this form with DynaPDF, or we can use a pre-designed PDF in which we create fields. I chose this method now. The document was created with Pages and then output as a PDF via the print settings. We want to write several labels in this file. The labels are not only important for the labeling, so that the customer knows which data is to be entered there, but also for positioning the form fields. We want to position these behind the labels.

Now we have everything we need to create our template.

Since we are working with DynaPDF, we first have to initialize it again, as we already explained in door 4.

If [ MBS("DynaPDF.IsInitialized")=0 ]
	Perform Script [ Specified: From list ; "InitDynaPDF" ; Parameter:    ]
End If
(more)

MBS FileMaker Plugin, version 14.6pr2

New in this prerelease of version 14.6 of the MBS FileMaker Plugin:
  • Removed the dependency on VCRUNTIME140_1.DLL. Appeared back in pr1.
  • Updated DynaPDF to version 4.0.95.269.
  • Added DynaPDF.GetLastTextPosXAbs and DynaPDF.GetLastTextPosYAbs functions.
  • Improved XML.SetPathValue to not create duplicate nodes when finding them using namespaces.
  • Tuned formatting of calculations to break behind and/or for long lines.
Download at monkeybreadsoftware.com/filemaker/files/Prerelease/

You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.


MBS FileMaker Advent calendar - Door 5 - Apple Contacts

candy cane Monkeybread Monkey as an elf candy cane
Door 5 - Apple Contacts

Today is day 5 of our calendar and our monkey has a few calls to make on his iPhone. He just doesn't want to keep typing in the number and searching for the customer. It would be much easier if he could simply save the specific contacts in Apple Contacts with the touch of a button. That's no problem, because as a Mac user you can read and write data in Apple Contacts. We use our Contacts functions for this.

But before we can start, we first need to be able to assign phone numbers and email addresses to our contacts. Until now, this was very complicated because we had to leave the giftee layout and enter the data in the respective layouts of the tables. We would now like to change this. To do this, we go to our relationship diagram and double-click on the equal sign between our phone and giftee relationship. Then the Edit Relationship dialog opens and we can make settings. Here we can decide whether we can delete or create data records via this relationship. To do this, we can make a choice in the checkboxes at the bottom. We tick Allow creation of records in this table via this relationship and Delete related records in this table when a record is deleted in the other table for the Telphone table. This allows us to create records in our portal and if a gifte is deleted, the associated telephone numbers are also deleted. We now do the same for the mail addresses.

(more)

MBS FileMaker Advent calendar - Door 4 - Add GTC with DynaPDF

candy cane Monkeybread Monkey as an elf candy cane
Door 4 - Add GTC with DynaPDF

Today I would like to show you a tool that you can use in FileMaker with the MBS FileMaker Plugin: DynaPDF. With DynaPDF you have the possibility to create, edit, merge, analyze or sign PDF documents in FileMaker. DynaPDF offers you many possibilities around the topic of PDF.

Our monkey also wants to use one of these functionalities today. Because today we want to build the possibility to attach user terms and conditions to a PDF document. The user terms and conditions always remain the same and can be attached to any outgoing document, e.g. an invoice. I will show you how this works today in this door.

First we have to initialize DynaPDF, which means we have to tell FileMaker where the DynaPDF function library is located. The files are automatically delivered with the download of the plugin and can be found in Examples > DynaPDF. The files have the extension dll and dylib. Which of the files you need depends on your operating system. If you want to use DynaPDF on a Mac, you will need the path to the dynapdf.dylib file. If we are working with Windows, it also depends on whether we are working with a 32 or 64 bit version. If you are using FileMaker 19 or higher, this decision is easy, as only a 64 system can be used here. In any case, the library has the extension .dll. If you are not sure, just put both dll in the same folder and the plugin will grab the file it needs. The next piece of information we need is the DynaPDF license key. If you want to use DynaPDF in your solutions, you need an appropriate DynaPDF license and an MBS FileMaker Plugin license.

There are four different DynaPDF licenses. Which license you need depends mainly on which DynaPDF functions you use. If you need more information, please visit our website to find out which license is right for you. However, we do not necessarily need a license to try it out, but need to live with the watermark. After we have determined the path to the libraries and the license key, if available, we can now call the DynaPDF.Initialize function. In the parameters we first enter the path to the library and then the license key. If we do not yet have a license key, we pass an empty string here.

(more)

ZUGFeRD Update

This is the German version. See the English version here.

Viele Kunden interessieren sich im Moment für das Thema elektronische Rechnungen. Mit dem MBS Plugin und den DynaPDF Funktionen können wir Ihnen helfen dies in FileMaker Lösungen und Xojo Anwendungen zu implementieren.

ZUGFeRD

Wenn Sie in das Thema e-Rechnung rein schauen, dann sollten Sie auf der Webeite vom Forum elektronische Rechnung Deutschland einmal lesen, was ZUGFeRD, was XRechnung und was Factur-X ist.

Dann laden Sie sich den aktuellen Standard mal runter: ZUGFeRD 2.3.2. In dem Download finden Sie dann die Spezifikation für ZUGFeRD (und Factur-X). Dazu kommen noch diverse Code Listen, Schema Dateien und viele Musterrechnungen.

(more)

MBS FileMaker Advent calendar - Door 3 - Drag & Drop

candy cane Monkeybread Monkey as an elf candy cane
Door 3 - Drag & Drop

Welcome to our third door in this advent calendar. Today we would like to start expanding our database. We want to have the possibility to store additional documents for the giftees. For this purpose, we will create a table with the name Files. This table should store the name of the file, the type and the file itself as a container value. In addition, we also need a field with the Foreigen Key here, because we want to establish a relationship so that the files can also be assigned to the giftee.

Now we have to think about how we want to bring these files into our database. We want to use drag and drop to do this. So we build an area where we can drag the desired file and the type and name are then automatically read out and the file and the remaining information are then stored in a record in the new table. This data record should be related to the giftee that is currently displayed.

We can create drag and drop areas with the MBS FileMaker Plugin. To avoid wasting useful space for a drag and drop field on our layout, we would like to place this drag and drop field as an overlay, i.e. a freely movable area on our layout that can be activated and deactivated by clicking a button. To do this, we first need to create an overlay and then assign drag and drop functionality to it.

So let's start with the overlay first. To do this, we have the functions from the Overlay section. First, we create a new overlay with the MBS function Overlay.Create. This function returns a reference. We also need to specify this reference in the other functions so that we know exactly which overlay in our project the functions should be applied to. Next, we want to determine the size and starting position of our overlay. To do this, we use the Overlay.SetFrame function and, as already mentioned, specify the overlay reference, the position with X and Y coordinates and the height and width of the overlay in pixels. So we want the top left corner of our overlay to be 30 pixels away from the right and top edge. In addition, our overlay should be square and 200 x 200 pixels in size. Our function call looks like this:

Set Variable [ $r ; Value: MBS("Overlay.SetFrame"; $overlay; 30; 30; 200; 200) ]
(more)

MBS FileMaker Advent calendar - Door 2 - Install the MBS FileMaker Plugin

candy cane Monkeybread Monkey as an elf candy cane
Door 2 - Install the MBS FileMaker Plugin

Welcome to the second door. Today we want to install the MBS plugin together, which we need for the other doors. Even if you do not have a license for our plugin yet, you can simply download it for testing.
Click here to go to the website and download it.

Here we have the choice between two archives. On the one hand a dmg archive for Mac and iOS users and a zip archive for Windows and Linux users. However, both archives have the same content. So click on the archive that suits you and download it.

(more)

MBS FileMaker Plugin, version 14.6pr1

New in this prerelease of version 14.6 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/

You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.


MBS FileMaker Advent calendar - Door 1

candy cane Monkeybread Monkey as an elf candy cane
Door 1 - The Database

Hello and welcome to this year's MBS FileMaker Advent calendar. This year our logo monkey has turned into a Christmas elf and has to take care of the coordinated distribution of presents at Christmas. What could be more obvious for our monkey than to get an overview with a FileMaker database. Over the next 24 days, we'll show you how to pimp a simple database with the help of the MBS FileMaker Plugin. All you need is to have fun with FileMaker. We'll start by creating the database and work our way through step by step. Even though the advent calendar is suitable for beginners, advanced users and professionals can certainly use some of the ideas from the advent calendar for their own purposes.

So let's start with our first door and thus with the basis for this calendar. Our FileMaker database. Although we provide you with this database, it can be useful to deal with the topic of how such a database can be set up. Initially, we only have a few tables, which we will expand over the course of the Advent calendar. Initially, our database consists of 3 tables. The table with the name of the giftee is our main table in which we find the information about the giftee, such as the last name, first name, date of birth and address. In addition, each recipient has their own identification number that can be uniquely assigned to them. This means that the number exists exactly once for each recipient. In this example, we call it the Primary Key in the table.

(more)

Archives

Jan 2025
Dec 2024
Nov 2024
Oct 2024
Sep 2024
Aug 2024
Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008