Signatures
A customer or mobile worker signature may be required for all or specific tasks. Use the showSignatureIcon
preference to specify if the signature icon is shown to the mobile worker.
showSignatureIcon | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Boolean | true | false | + | + |
Signature images may require specific sizes. In that case, use the signatureImageHeight
and signatureImageWidth
preferences to specify the required size.
signatureImageHeight | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Pixel | Undefined | 140 | + | - |
signatureImageWidth | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Pixel | Undefined | 80 | + | - |
Equivalent to the image's compress quality, the signature compress quality can also be specified with the compressQualityImage
preference as defined above.
Depending on the task's characteristics, the customer may be required to sign the task. The requiresCustomerSignature
preference can be used to identify this requirement.
requiresCustomerSignature | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Boolean | false | true | + | + |
Suppose the customer has to sign the service, but is not present. In that case, the mobile worker needs to confirm with his own signature. Normally, the mobile worker will have to enter a note explaining the situation. To deviate from this default behavior, one can change the preference avoidNoteWhenSignedByMobileWorker
to true. In that case, the mobile worker will not be asked to enter a note.
avoidNoteWhenSignedByMobileWorker | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Boolean | false | true | + | - |
To avoid the possibility to enter the mobile worker's signature in case the customer is not present, set the preference avoidNoCustomerPresentButton
to true.
avoidNoCustomerPresentButton | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Boolean | false | true | + | - |
When a customer signature is required, but the driver decides to give his own signature on behalf of the customer, the driver can be asked for a reason why the customer didn't sign himself. The set of possible reasons, the driver can choose from, must bedefined in an Option Widget under the special MobileUI -OMD-
. The name of this Option Widget must be referred to by the flow preference mobileWorkerSignatureReasons
. The prompt of the Widget will be used as label for the No Customer Present
button.
mobileWorkerSignatureReasons | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
String | -none- | MobileWorkerSignatureReasons | + | - |
In certain configurations, it is desirable that a customer can confirm the presence of the mobile worker with a signature before the mobile worker has completed all planned items.
If the preference allowPrematureSignature
is turned on, a checkbox will appear in the signature screen to inform the customer about possible changes to the quantities after signature. The customer will not be able to continue the signature screen if the customer does not confirm the checkbox's text by checking it. Once checked, the mobile worker can continue to edit the items planned after having received the signature, which is normally not allowed when the preference is not set.
allowPrematureSignature | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Boolean | false | true | + | + |
The text used for the checkbox is retrieved from a widget called prematureSignaturePrompt
under the internal -OMD-
Mobile UI. If needed, this widget can be translated into several languages by using the translation table of the widget. The presented prompt will then depend on the language settings of the mobile device.
Example for a prematureSignaturePrompt
:
For approval of execution. Quantities are indicative and may change depending on the ultimate work performed.
If a customer signature is not possible the mobile worker may choose to sign the task himself. To avoid overwriting the personal name in the top of the signature screen, the preference signatureAvoidEditResourceName
can be set to true. The personal name is always editable through the Settings dialog, regardless of the value of this preference.
signatureAvoidEditResourceName | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Boolean | false | true | + | - |
The mobile app can be configured to ask for the customer's signature first and then for the resource's signature as well. The process flow preference collectCustomerResourceSignature
enables this behavior. This option can only be used alternatively to requiresCustomerSignature
.
collectCustomerResourceSignature | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Boolean | false | true | + | + |
If the preference allowCustomerResourceSignature
is set to true, the mobile worker needs to sign after the customer has signed.
allowCustomerResourceSignature | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
Boolean | false | true | + | + |
As an alternative for acquiring a customer's signature, a barcode can be scanned at the customer's location. For activation and barcode validation, the task must provide a reference code with the string representation of the barcode to be scanned. See below for an example of a suitable XML to put in the task's extra field:
<Data signatureRefBarcode="123456789" newRefBarcodeRequired="false" signatureBarcodeLocation="On the right, next to the main entrance"/>
To enable entering of a new code and a location description, at the customer's site, an arbitrary reference code can be provided and the flag for allowing a new code must be set to true :
<Data signatureRefBarcode="000000000" newRefBarcodeRequired="true" signatureBarcodeLocation="Please fill in location after applying barcode sticker!"/>
The modified location text and the actually scanned code is sent to the ERP when closing the task. See the OMD Attachments documentation for more details!
The preference signatureBarcodeReferenceQuery
defines an XPath query to retrieve the string value of a reference barcode, from the task's extra field.
signatureBarcodeReferenceQuery | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
String | string(//Data/@signatureRefBarcode[1]) | - | + | - |
The preference signatureBarcodeLocationQuery
defines an XPath query to retrieve the string value of the location descrition, where to find the barcode to be scanned.
signatureBarcodeLocationQuery | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
String | string(//Data/@signatureBarcodeLocation[1]) | - | + | - |
The preference signatureBarcodeNewCodeQuery
defines an XPath query to retrieve the string representation of the flag, deciding, whether an unknown barcode may be scanned. If set to false, the scanned barcode must match the provided reference code.
signatureBarcodeNewCodeQuery | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
String | string(//Data/@newRefBarcodeRequired[1]) | false | + | + |
The preference showSignByMail
shows an additonal icon "Sign by Mail" in the Acceptance Screen of OMD Mobile for Android. It allows the user to send a mail to the customers mail address where the customer can confirm the delivered goods or services by mail instead of taking the signature onSite.
With templates called signByMailTemplate
and signByMailSubjectTemplate
the content of E-Mail and Subject can be defined. When the Mail was confirmed by the customer, the signature attachment will be added to that task afterwards.
A signByMail
Attachment indicates that this task was not signed onSite.
showSignByMail | ||||
---|---|---|---|---|
Type | Default Value | Example | Android | HTML 5 |
boolean | false | false | + | - |
Example for a signByMailTemplate
:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output media-type="text/html" />
<xsl:template match="/Data">
<html>
<style type="text/css">
.body { color:#FFF;background-color:#000; }
.red_header { color:#F00;padding-top:15px; }
.table1 { color:#000;background-color:#FFF;border-collapse:collapse;padding-bottom:5px; }
.table1 th { padding:5px;border-left:solid #000;font-weight: normal; }
.table1 td { padding:5px;border-left:solid #000;background-color:#CCC; }
</style>
<body>
<p>Dear customer,</p>
<br/>
Please confirm our delivered services (in the servicesheet atatched):<br/>
<br/>
<div id="confirm-wrapper" style="margin-bottom:30px;">
<a id='confirm-section' class="confirm-link" status='IP-C' width="100%" href="https://qa.optimizemyday.com/omdservices/rs/v1/customer/signByMail/confirm?configId={{configurationId}}&taskId={{taskId}}&attachmentId={{attachmentId}}&authentication={{authToken}}" style="display:inline-block;text-align:center;vertical-align:top;line-height:40px;width:100%;border-radius: 7px;color:#ffffff;font-size:20px;font-weight:bold;background-color:#1d9c03;cursor:pointer;">CONFIRM</a>
</div>
<br/>
<p>Best regards</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>