An address template is a display format of the different elements composing an address.
## 1. Why address templates
The display of addresses beeing different country-wise, it is important to be able to display an address differently if we send an invoice in France, Germany or China.
For this reason, dokos allows the configuration of an address template per country and to define one of these templates as a default one if a template doesn't exist for a given country.
## 2. Create a template
To create a new template, go to `Settings > Address template` and click on new.
1. Select the country for which this template is applicable.
1. Check the box `Is default` if you want to use this template as the default one for your system.
1. Format your template with the [Jinja](http://jinja.pocoo.org/docs/templates/) language or leave it empty if you want the system to add a standard template when you save.
## 3. Edit a template
Here is the standard template:
```
{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>
{% if state %}{{ state }}<br>{% endif -%}
{% if pincode %}{{ pincode }}<br>{% endif -%}
{{ country }}<br>
{% if phone %}Phone: {{ phone }}<br>{% endif -%}
{% if fax %}Fax: {{ fax }}<br>{% endif -%}
{% if email_id %}Email: {{ email_id }}<br>{% endif -%}
```
Our address doesn't have any `address_line_2` or `fax` values, therefore the display will be:
```
2045 Royal Road
St Paul
06570
Phone: 07911 123456
Email: hello@example.com
```
We would like to display the zip code on the left of the city name and remove the `state` field that is never used in the UK.
Therefore, we need to edit our template the following way:
```
{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}
{% if pincode %}{{ pincode }} {% endif -%}
{{ city }}<br>
{{ country }}<br>
{% if phone %}Phone: {{ phone }}<br>{% endif -%}
{% if fax %}Fax: {{ fax }}<br>{% endif -%}
{% if email_id %}Email: {{ email_id }}<br>{% endif -%}
```
The result will be:
```
2045 Royal Road
06570 St Paul
Phone: 07911 123456
Email: hello@example.com
```
All fields within the `Address` doctype are accessible in an address template. Even custom fields.
For scripts that are to be called via document events, you must set the Reference Document Type and Event Name to define the trigger
- Before Insert
- Before Save
- After Save
- Before Submit
- After Submit
- Before Cancel
- After Cancel
- Before Delete
- After Delete
### 2.3 API Scripts
You can create a new API that can be accessed via `api/method/[methodname]` by the script type "API"
If you want the guest user to access the API, you must check on "Allow Guest"
The response can be set via a `frappe.response["message"]` object
### 2.3 Security
dokos uses the RestrictedPython library to restrict access to methods available for server scripts. Only the safe methods, listed below are available in server scripts
1. Keep the popup open to finish the connexion after step 1.2.
### 1.2. Register a new connexion on dokos
> Open dokos and go o module `Integrations`
1. Create a new `OAuth Client` document, give a name to the client application (E.g. Zapier) and paste the redirection URI copied earlier in fields `Redirection URIs` and `Default redirection URI`.
> To allow OAuth2 integrations types, at least one Frappe social login key is required.
1. Go to `Integrations > Social Login Key`
1. Create a new social login key
1. In the field **Social Login Provider**, select `Frappe`
1. In the field **Base URL** register the base URL of your site without any subdomain.
E.g. If your URL is `https://demo.dokos.io`, register `https://dokos.io`

1. Save
### 1.4. Finish Zapier authentication
> Go back to Zapier and open the window from section 1.1. again.
-**Base URL**: Register the Base URL of your dokos site. E.g. `https://demo.dokos.io`
-**Client ID**: Paste the corresponding key generated at step 1.2.
-**Client Secret**: Paste the corresponding key generated at step 1.2.
1. Click on `Yes, Continue`
1. You will be redirected to your dokos site to validate the authentication. Click on `Allow`
:tada: Your Zapier application is now connected to your dokos site.
You can create your first Zap.
### 2. Create a Zap
The **dokos** Zapier application allows the creation of two types of interactions:
- Triggering a Zap based on an event affecting a document
- Searching or creating an document
### 2.1. Generating a Zap
To generate a new Zap, select the **dokos** application in the Zap editor.
1. In the **Choose Trigger Event** field, select **Document events**.
1. Select an account to use. It will probably be the account created at step 1.
1. In the **Customize Document** section, select:
- The **DocType** (document type) used to trigger a Zap
- The event (**Trigger Event**) triggering this Zap.
This event can be one of the following:
-**After insert**: After the creation of a document
-**On change**: After the modification of a document (can be triggered simultaneously with `On update` or `On submit`)
-**On update**: After saving the document
-**On submit**: After the submission of the document
-**On update after submit**: After saving an already submitted document. Possible only if some fields are allowed to be edited after submission.
-**On cancel**: After cancellation of the document
-**On trash**: After deletion of the document
- The fields to send to Zapier (**Webhook Data**)
Click on the + button to add an additional field
:::tip Good to know
The Zapier integration creates new Webhooks in dokos.
You can find them in `Integrations > Webhooks`.
:::
You can then save and create you action with another Zapier application or with the dokos application.
### 2.2. Triggering an action on dokos
There are two types of actions available on dokos: **Create Document** or **Find Document**
#### 2.2.1. Create a document
Once you have selected the type of document to create, choose some values for the mandatory fields and test you Zap.
A new document should be created on your dokos site.
#### 2.2.2. Find a document
If you want to find a document, you can define 3 parameters:
1. The maximum number of documents to fetch
2. The name of the fields to fetch
3. A filter to find your documents
If you want to find a specific document, think about filtering per ID (Name in dokos).
By checking `Create dokos Document if it doesn't exist yet?` you autorize Zapier to create a new document if it doesn't find the document matching your filters.
Once your document found or created, you can go to the next step and reuse it in another Zap.
### 3. Data format
#### 3.1. Dates
When you send a field of type **Date** or **Datetime**, you need to use the following formats:
-**Date**: `YYYY-MM-DD`
E.g. 2019-11-30
-**Datetime**: `YYYY-MM-DD HH:mm:ss`
E.g. 2019-11-30 08:30:00
You can use the [Zapier Formatter](https://zapier.com/help/create/format/modify-date-formats-in-zaps) tool if needed.
For the **Datetime** format, you can select the option "Use a Custom Value":
**Item booking is a flexible document for registering timeslots booking for an Item.**
### Usage
### 1. Usage
You can use the Item Booking document type in two ways:
1. You can make a new booking manually through the desk.
2. You can configure the Item Booking document to allow your website users to book a slot themselves.
### Prerequisites
### 2. Prerequisites
#### Stock settings
#### 2.1. Stock settings
##### Minute UOM
If you want to allow guests to select an available slot on your website, you need to configure a unit of measure corresponding to one minute in the "Item Booking" section of the stock settings:
All slots being multiples of 1 minute, it is necessary to define it for dokos.
#### Unit of measure
##### Enable simultaneous booking
Option to autorize simultaneous item bookings (several bookings of the same item during the same timeslot).
It activates the possibility to set a number of allowed simultaneous bookings for each item in the item master data.
##### Clear drafts after x minutes
Setup to define the time interval between the last modification of an item booking draft and its automatic deletion by the software. Set 0 to deactivate this functionality.
#### 2.2. Unit of measure
In order for the system to be able to convert the sales unit of measure into minutes to calculate the slots available, you need to configure one or several unit of measure conversion factors.
...
...
@@ -41,7 +52,7 @@ You can, of course, adjust this value according to your business needs.
:::
#### Item Booking Calendar
#### 2.3. Item Booking Calendar
You can configure as many calendars as necessary per items and units of measure.
The calendar selection rule for an item booking is as follow:
...
...
@@ -53,7 +64,7 @@ The calendar selection rule for an item booking is as follow:
It is therefore useful to configure at least one calendar, not linked to any item nor unit of measure, that will be considered the default calendar.
#### Item
#### 2.4. Item
In order to allow the booking of timeslots on your website, you need to first show this item on your website: in the __Website__ section, select __Show in Website__.
Enabling this option will allow you to also __Enable Item Booking__.
...
...
@@ -63,10 +74,12 @@ Once enabled, your website users will be given a choice between buying units or
You can uncheck the field __Disabled unit purchasing__ to allow only the booking of timeslots.
__Simultaneous bookings allowed__: Set the number of allowed simultaneous bookings (After activation in the stock settings)
If you want to autorize bookings with different unit of measure (day, hour,...), add them in the unit of measure table.
Please note that the conversion for bookings will be done against conversion factors for one minute, as setup above.
### Slot booking
### 3. Slot booking
Your website users will be presented with a popup listing all available slots.
They can click on an available slot to add it to their shopping cart.
...
...
@@ -75,4 +88,12 @@ They can click on an available slot to add it to their shopping cart.
Un modèle d'adresse est un format d'affichage des différents éléments composants une adresse.
## 1. Pourquoi des modèles d'adresses
L'affichage des adresses étant différent en fonction des pays, il faut pouvoir afficher une adresse différemment si l'on envoie une facture en France, en Allemagne ou en Chine.
Pour cette raison, dokos permet de configurer un modèle d'adresse par pays et de définir un de ces modèles comme étant le modèle à utiliser par défaut (s'il n'existe pas de modèle pour un pays donnée).
## 2. Créer un modèle
Pour créer un nouveau modèle allez dans `Paramètres > Modèle d'adresse` et cliquez sur nouveau.
1. Choisissez le pays pour lequel appliquer ce modèle.
1. Cochez la case `Modèle par défaut` si vous souhaitez que ce modèle soit utilisé par défaut sur votre système.
1. Ajoutez un modèle au format [Jinja](http://jinja.pocoo.org/docs/templates/) ou laissez vide pour que le système ajoute un modèle standard lors de l'enregistrement.
## 3. Modifier un modèle
Voici le modèle standard:
```
{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}{{ city }}<br>
{% if state %}{{ state }}<br>{% endif -%}
{% if pincode %}{{ pincode }}<br>{% endif -%}
{{ country }}<br>
{% if phone %}Téléphone: {{ phone }}<br>{% endif -%}
{% if fax %}Fax: {{ fax }}<br>{% endif -%}
{% if email_id %}Email: {{ email_id }}<br>{% endif -%}
```
Notre addresse fictive ne comportant ni champ `address_line_2` ni champ `fax`, cela donne:
```
35 rue de la Paix
Paris
75001
Téléphone: 06.12.34.56.78
Email: hello@exemple.com
```
Par contre nous souhaitons faire apparaître le code postal à gauche du nom de la ville et supprimer le champ `state` qui n'existe pas en France.
Il faut donc modifier votre modèle de la façon suivante:
```
{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}
{% if pincode %}{{ pincode }} {% endif -%}
{{ city }}<br>
{{ country }}<br>
{% if phone %}Téléphone: {{ phone }}<br>{% endif -%}
{% if fax %}Fax: {{ fax }}<br>{% endif -%}
{% if email_id %}Email: {{ email_id }}<br>{% endif -%}
```
Le résultat sera:
```
35 rue de la Paix
75001 Paris
Téléphone: 06.12.34.56.78
Email: hello@exemple.com
```
Tous les champs du type de document `Adresse` sont accessibles dans un modèle d'addresse. Même les champs personnalisés.
Zapier est une plateforme permettant à des personnes sans connaissances techniques de connecter différentes applications entre elles.
:::warning Version beta
Cette application est en version beta sur invitation en cliquant sur ce [lien](https://zapier.com/developer/public-invite/33806/ce6c67ecce01c7125330cee32bd60910/).
Pour les utilisateurs d'ERPNext, cette application est également compatible avec la version 12.x.x.
:::
## 1. Installer l'application Zapier
### 1.1. Récupérer l'URI de redirection
> Allez sur zapier.com et connectez-vous ou créez-vous un compte
1. Dans la section `My Apps` cliquez dans `Connect a new account` et cherchez `dokos`
1. Gardez cette fenête ouverte pour terminer la connexion après l'étape 1.2.
### 1.2. Enregistrer une nouvelle connection sur dokos
> Ouvrez dokos et allez dans le module `Intégrations`
1. Créez un nouveau document `Client OAuth`, donnez un nom à l'application cliente (Ex. Zapier) et collez l'URI de redirection copiée plus haut dans les champs `URIs de redirection` et `URI de redirection par défaut`.
1. Enregistrez et dokos va générer automtiquement les deux informations manquantes pour terminer notre connexion à Zapier: L'ID client et le secret client.
> Retournez sur Zapier et ouvrez à nouveau la fenêtre de la section 1.1.
-**Base URL**: Entrez l'URL de base de votre site dokos. Ex. `https://demo.dokos.io`
-**Client ID**: Collez la clé générée à l'étape 1.2. correspondante
-**Client Secret**: Collez la clé générée à l'étape 1.2. correspondante
1. Cliquez sur `Yes, Continue`
1. Vous allez être redirigé sur votre site dokos pour valider l'authentification. Cliquez sur `Autoriser`
:tada: Votre application Zapier est désormais connectée à votre site dokos.
Vous pouvez créer votre premier Zap.
### 2. Créer un Zap
L'application Zapier **dokos** permet de créer deux types d'interactions:
- La génération d'un Zap en fonction d'un événement affectant un document
- La recherche ou la création d'un document
### 2.1. Génération d'un Zap
Pour générer un nouveau Zap, séléctionnez l'application **dokos** dans l'éditeur de Zap.
1. Dans le champ **Choose Trigger Event** sélectionnez **Document events**.
1. Sélectionnez le compte à utiliser. Il s'agit probablement du compte créé à l'étape 1.
1. Dans la section **Customize Document**, sélectionnez:
- Le **DocType** (Type de document) utilisé pour déclencher un Zap
- L'événement (**Trigger Event**) qui déclenchera ce Zap.
Cet évément peut être l'un des suivants:
-**After insert**: Après la création d'un document
-**On change**: Après la modification du document (peut être déclenché en même temps que `On update` ou `On submit`)
-**On update**: Après l'enregistrement du document
-**On submit**: Après la validation du document
-**On update after submit**: Après enregistrement d'un document déjà soumis. Possible seulement si certains champs sont éditables après validation.
-**On cancel**: Après l'annulation du document
-**On trash**: Après suppression du document
- Les champs à envoyer à Zapier (**Webhook Data**)
Cliquez sur le bouton + pour ajouter un champ supplémentaire
:::tip A savoir
L'intégration avec Zapier crée des nouveaux Webhooks dans dokos.
Vous pouvez les retrouver en allant dans `Intégrations > Webhooks`.
:::
Vous pouvez ensuite enregistrer et créer votre action avec une autre application Zapier ou avec l'application dokos si vous le souhaitez.
### 2.2. Déclenchement d'une action sur dokos
Il existe deux types d'actions disponibles sur dokos: **Créer un document** (Create Document) ou **Rechercher un document** (Find Document)
#### 2.2.1. Création de document
Un fois que vous avez sélectionné le type de document à créer, choisissez des valeurs pour les champs obligatoires et testez votre Zap.
Un nouveau document devrait être créé sur votre site dokos.
#### 2.2.2. Recherche de document
Si vous sélectionnez la recherche de documents, vous pouvez définir 3 paramètres:
1. Le nombre de document maximum à récupérer
2. Le nom des champs à récupérer
3. Un filtre pour trouver votre/vos documents
Si vous cherchez un document en particulier, pensez à filtrer par identifiant (Nom dans dokos).
En cochant la case `Create dokos Document if it doesn't exist yet?` vous autorisez Zapier à créer un nouveau document s'il ne trouve pas de document correspondant à vos filtres.
Une fois votre document trouvé ou créé, vous pouvez passer à l'étape suivante et le réutiliser dans un autre Zap.
### 3. Formats des données
#### 3.1. Dates
Lorsque vous envoyez un champ de type **Date** ou **Date/Heure**(Datetime), vous devez utiliser les formats suivants:
-**Date**: `YYYY-MM-DD`
Ex: 2019-11-30
-**Date/Heure**: `YYYY-MM-DD HH:mm:ss`
Ex: 2019-11-30 08:30:00
Vous pouvez utiliser les outils [Zapier Formatter](https://zapier.com/help/create/format/modify-date-formats-in-zaps) pour cela si besoin.
Pour le format **Date/Heure**, vous pouvez sélectionner l'option "Use a Custom Value":
Pour les scripts qui sont lancés via des événements de documents, vous devez définir le type de document de référence et nom de l'événement générateur
- Avant l'insertion
- Avant l'enregistrement
- Après l'enregistrement
- Avant la validation
- Après la validation
- Avant l'annulation
- Après l'annulation
- Avant la suppression
- Après la suppression
### 2.3 Scripts API
Vous pouvez créer une nouvelle API qui sera accessible via `api/method/[methodname]` en sélectionnant le type de script "API"
Si vous voulez qu'un utilisateur invité (non connecté) accède à l'API, cochez la case "Autoriser les invités".
La réponse sera envoyés dans un objet de type `frappe.response["message"]`
### 2.3 Securité
dokos utilise la librairie RestrictedPython pour restreindre l'accès aux méthodes disponibles pour les scripts python. Seules les méthodes sûres, listées ci-dessous sont disponibles dans les scripts serveur.
**La réservation d'articles est un document flexible permettant d'enregistrer des réservation de créneaux horaires pour un article.**
### Usage
### 1. Usage
Vous pouvez utiliser le document de réservation d'articles de deux façons:
1. Vous pouvez faire une nouvelle réservation manuellement depuis le bureau.
2. Vous pouvez configurer le document de réservation d'articles pour autoriser vos utilisateurs de site web à réserver un créneau eux-mêmes.
### Pré-requis
### 2. Pré-requis
#### Paramètres des stocks
#### 2.1. Paramètres des stocks
##### Unité de mesure pour 1 minute
Si vous voulez autoriser des invités à sélectionner un créneau disponible sur votre site web, vous devez configurer l'unité de mesure correspondant à une minute dans la section "Réservation d'articles" des paramètres de stock.
Tous les créneaux étant des multiples d'une minutes, il faut indiquer cette unité de mesure à dokos.
#### Unité de mesure
##### Autoriser les réservations simultanées
Option permettant d'autoriser les réservations simultanées d'articles (plusieurs réservation d'un même article pendant le même créneau).
Cela active la possibilité d'indiquer un nombre de réservations simultanées autorisées pour chaque article dans les fiche d'articles.
##### Supprimer les brouillons après x minutes
Paramétrage permettant de définir l'intervale de temps entre la dernière modification d'un brouillon de réservation d'articles et sa suppression automatique par le logiciel. Mettez 0 pour désactiver cette fonctionnalité.
#### 2.2. Unité de mesure
Afin que le système soit capable de convertir les unités de mesure de vente en minutes pour calculer les créneaux disponibles, vous devez configurer un ou plusieurs facteurs de conversion d'unité de mesure.
...
...
@@ -40,7 +51,7 @@ Veuillez noter qu'ici, 1 jour correspond à 480 minutes, car nous considérons q
Vous pouvez, bien sûr, ajuster cette valeur en fonction de vos besoins métiers.
:::
#### Calendrier de réservation d'articles
#### 2.3. Calendrier de réservation d'articles
Vous pouvez configurer autant de calendrier de réservation que vous le souhaitez par articles et unités de mesures.
La règle de sélection du calendrier correspondant à une réservation d'article est la suivante:
...
...
@@ -53,7 +64,7 @@ La règle de sélection du calendrier correspondant à une réservation d'articl
Il est donc utile de configurer au moins un calendrier qui ne soit lié ni à un article ni à une unité de mesure, pour qu'il puisse servir de calendrier par défaut.
#### Article
#### 2.4. Article
Pour pouvoir autoriser la réservation de créneaux horaires sur votre site web, vous devez d'abord afficher l'article sur votre site web: dans la section __Site web__, sélectionnez __Afficher sur le site web__.
Activer cette option vous permettra aussi d'__Autoriser la réservation d'articles__.
...
...
@@ -63,10 +74,12 @@ Une fois activée, vos utilisateurs de site web auront le choix entre acheter de
Vous pouvez cocher la case __Désactiver l'achat d'unités__ pour ne permettre que la réservation de créneaux.
__Réservations simultanées autorisées__: Définissez le nombre de réservations simultanées autorisées (Après activation dans les paramètres des stocks)
Si vous souhaitez autoriser la réservation avec différentes unités de mesure (jour, heure,...) ajoutez les dans le tableau des unités de mesure.
Notez que la conversion pour les réservations se fera selon les facteurs de conversions pour une minute définis ci-dessus.
### Réservation d'article
### 3. Réservation d'article
Vos utilisateurs de site web ont accès à un popup listant tous les créneaux disponibles.
Ils peuvent cliquer sur un créneau disponible et l'ajouter dans leur panier.
...
...
@@ -75,4 +88,13 @@ Ils peuvent cliquer sur un créneau disponible et l'ajouter dans leur panier.

Les réservations en brouillon (non validées) sont automatiquement supprimées toutes les 15 minutes pour les cas d'abandon de panier.
\ No newline at end of file
Les réservations en brouillon (non validées) sont automatiquement supprimées toutes les x minutes (définies dans les paramètres des stock) pour les cas d'abandon de panier.
#### 4. Portail
Vous pouvez activer le portail "Bookings" pour donner un accès à vos clients à la liste des créneaux qu'ils ont réservés.
Les différentes réservations apparaîtront avec les statuts "Confirmé", "Annulé" ou "Passé".
Si vous donnez l'autorisation d'annuler une réservation d'articles à vos clients, ceux-ci pourront également voir un bouton `Annuler` leur permettant d'annuler leur réservation.
Cette autorisation peut être donnée en cochant la case `Annuler` pour le rôle `Client` (par défaut) dans les gestionnaire des rôles et autorisation.
- Possibilité de poser des demi-journées de congés
- Nouveaux paramètres pour les exports DATEV
- Possibilité de permettre des réservations d'articles simultanées
- La période avant suppression des réservations d'articles en brouillon est désormais configurable
- La liste des réservations d'articles par utilisateur est désormais disponible sur le portail
- Modèle d'adresse spécifique pour la France (Nouvelles installations seulement. Pour les installations existantes, voir la documentation)
- Possibilité de mettre des valeurs dynamiques (en Jinja) dans les modèles de contrats
#### Corrections de bug
- Problèmes d'autorisations pour les abonnements générés depuis les webhooks
- Bug lors de la récupération des informations des prospects dans les opportunités et devis
- Corrections pour le connecteur Shopify
- Problèmes avec les adresses dans le panier
#### Modifications
- Le message par défaut pour les demandes de paiement situé dans les comptes de passerelle de paiement a été remplacé par un modèle d'email dans les modèles de passerelles de paiement.
## dodock [Modèle d'application]
#### Fonctionnalités
-[Scripts en python](/fr/dokos/installation/personnalisation/scripts-python)
- Centre de notification centralisé
- Vue en liste configurable
- Les emails non gérés de plus de 30 jours sont désormais supprimés toutes les nuits
- Possibilité d'ajouter des sauts de page dans les formats d'impression
#### Corrections de bug
- Correction du diagramme d'activité
- L'email de création d'un utilisateur depuis un contact était envoyé en double
- Problèmes de performance du bureau à cause d'une désactivation de cache
- Problèmes de formatage des devises
- Suppression automatique des caractères spéciaux lors de la création des liens de site web
- Possibilité de définir la largeur des colonnes en % dans les formats d'impression
#### Modifications
- Suppression du hook `jenv`
## Intégrations
:tada: Nouvelle application [Zapier](https://zapier.com) disponible en version beta.
Envoyez-nous un email à [hello@dokos.io](mailto:hello@dokos.io) pour être invité.