Use FileMaker to escape the work rut and automate manual processes. Two things that really help here: First the Perform Script on Server script step to offload work to the server and to do things in background. Than the use of plugins to provide the toolbox to do all the things which are not built-in to FileMaker itself.
We like to show you a few example workflows and how various plugin functions can help:
1. Image upload
- User takes a new picture on iPad for new product to go into the webshop
- FileMaker Go puts it in a record, triggers script on server.
- On server using GraphicsMagick functions, a script normalizes image orientation to 0°, image file format is converted if needed to PNG or JPEG. Colorspace may be conveyed to SRGB if needed. Borders can be automatically removed. Thumbnails are made as needed with removed metadata for images going to public (e.g. GPS removed).
- CoreML functions in MBS Plugins are used with machine learning model to detect image content and assign tags automatically to image to help to find this image later by keyword.
- Using GraphicsMagick or CGImageSource functions, we extract the EXIF, IPTC or XMP metadata of the image.
- If needed, image can be annotated with copyright label, article number or watermark.
- CURL functions for SFTP or AWS S3 are used to upload image to web server, so it can be referenced by URL later from websites.
- Regularly a nice PDF can be created to automatically show a gallery of new pictures and send to print shop.
2. PDF Documents
- User has interface to add documents to FileMaker database.
- DragDrop functions are used to allow dropping multiple files directly on the FileMaker script and process them.
- Alternatively FSEvents or Windows DirectoryWatcher functions can be used to watch an import folder and trigger script when new images arrive.
- A record is created for each file. Container functions help to read files and for folders, the plugin can get file listings.
- DynaPDF or PDFKit functions are used to generate a preview image for the PDF document, so it can show in a non-interactive container and without relaying on a PDF browser plugin.
- For each page, a separate record is created with the page extracted as it's own one page PDF document. The text of the page is put in a text field. Later users can search in PDFs and find pages containing search terms. Our DynaPDF highlight function can be used to show PDF pages and highlight search terms in the PDF page image.
- The original PDF is checked whether it is signed. If signed, we can verify signature and alert user about modified PDF. If not, we can sign it now ourselves. This way we can in years verify the PDFs are not modified.
- For archiving we use DynaPDF.Optimize function to repair errors, scale down images and remove private data. Than we convert PDF to PDF/A, so we can be sure it can be read in 10 years.
- Again the files can be uploaded to Webserver via SFTP, to Amazon S3 or copied to network drive to access later from other places.
- ProgressDialog functions in our plugin can be used to show overall progress.
3. Scanning papers
- User puts a stack of papers on the document scanner device in the office. The auto feeder grabs the papers and scans them with both sides (duplex mode).
- MBS Plugin functions for WIA (Windows), ImageCapture (Mac) or TWAIN (Mac & Win) are used to control scanner and get scanned documents into FileMaker. With dialog and interaction or completely automated without dialogs. See Scanning Options
- OCR functions in MBS Plugin are used to recognize text. Various languages and rotations can be tried to find the version with highest confidence. This is best done on server in background with PSoS.
- If documents got labeled with barcodes before scanning, the portion where bar code may be is sent to barcode detection function in our plugin.
- DynaPDF functions are used to generate PDF with scanned images. Text from OCR result is layered on top of each image to allow search and select & copy in PDF viewer later.
- Final PDF is signed and archived as PDF/A.
- OCR text is searched for key terms to automatically identify vendors or extract total amount for invoices. This can be done with RegEx functions or with CoreML functions and machine learning.
4. Order to Invoice
- Sales rep enters order on iPad with customer. When done, record is saved and script on server gets triggered.
- The server script generates invoice PDF.
- DynaPDF functions are used to add extra pages to invoice PDF for terms of order and current promotions. PDF can be signed digitally. Clickable links are added to the PDF for convenience.
- Barcode functions are used to create barcodes and put them on invoice, on package, on retour label and other documents. When anything comes back, you can scan barcode and find the record in database directly.
- SendMail functions are used to generate nice email with HTML and includes order confirmation PDF.
- Each email sent to customer includes unique ID in header, so bounce emails can be processed automatically. If client gave a wrong email and email bounces, we may get corrected email while client is still in the shop.
- SQL functions in MBS Plugin are used to connect to MySQL server for website and update the inventory counts for the webshop. If needed SSH functions can be used for tunneling remote database access though SSH tunnel.
- SQL functions for direct database access or CURL functions for web service are used to move invoice data to accounting software, if that is not done in FileMaker.
- PDF for customer may be printed at a printer near sales rep based on location (see iBeacons functions in FileMaker Go) to pickup, if physical signature is needed or paper should be given to client. DynaPDF.Print and PDFKit.Print functions send PDFs directly to printer on Mac/Windows.
- If needed, we can use label printer via CUPS, serial port or socket functions directly to send control commands to printer and print labels as needed.
- SerialPort or Socket functions are used to talk to scale and makes sure the package weight matches the expected weight for the items inside. Avoids packages with wrong or too many/few items.
- CURL functions are used to talk to post service (e.g. UPS) and generate a package label.
- SerialPort or Socket functions may be used to talk to POS system, credit card reader or cash drawer.