SOFI bill to Primmo

L'outil sofi-bill-to-primmo est un script installé sur le même serveur que le logiciel Primmo et permet d'automatiser le transfert des services à la carte (SAC) facturables acceptés dans SOFI vers le logiciel Primmo. Ceci évite d'avoir à générer le fichier de transfert (format MDG) manuellement dans la tuile “Facturation des services” pour chaque résidence, éliminant ainsi la perte de temps et le risque d'erreur humaine.

Pour importer dans Primmo les services de soins dispenser dans SOFI qui seront facturables, le client doit acheter un module d’importation de facturation « Maître D » (MDG) auprès de la compagnie Hopem.

Ce script exécute les opérations suivantes:

  • Pour chacune des résidences configurées dans le fichier de configuration
    • Obtenir par l'API de SOFI la liste des SAC ayant le statut “Accepté” (en référence à la tuile “Facturation des services”) dans la plage de date configurée dans le fichier de config sofi-bill-to-primmo (s'il n'y a pas de dates précisées, alors sofi-bill-to-primmo prends tous les services avec le statut “Accepté” sans égards aux dates.)
    • Inscrire dans un fichier compatible à l'importation dans Primmo (format MDG) tous les SAC acceptés retrouvés à l'étape précédente afin de les facturer dans Primmo. Notez que tant que la transaction n'est pas complétée pour la résidence, alors le fichier des résultats est marqué comme temporaire (.tmp).
    • Assigner par l'API de SOFI le statut “Archivé” à tous les SAC qui ont été extraits dans le fichier (seulement si sofi-bill-to-primmo n'est pas exécuté en mode DryRun).
    • Enlever le statut temporaire au fichier des résultats (csv).
  • L'outil génère un fichier de journalisation localement (aucune transmission par courriel). Ce fichier de journalisation est cyclé à chaque jour et donne le sommaire des opérations et des transactions effectuées.
  • Aucune donnée de facturation n'est produite pour un résident qui n'a pas d’identifiant externe (ExternalID).
  • S'il n'y a aucun SAC acceptés identifiés pour une résidence, alors sofi-bill-to-primmo génère un fichier de résultats vide.
  • Le nom des fichiers de résultats générés ainsi que le contenu des fichiers de résultats sont conformes au format MDG.
  • Les fichiers de journalisation générés par sofi-bill-to-primmo sont enregistrés dans le répertoire précisé dans la configuration “FilePath”
  • Les fichiers de facturation sont générés dans le répertoire précisé dans la configuration “OutputDirectory”.
  • Les services avec un même SKU mais un prix différent ne sont pas regroupés.

Pour une exécution de l'outil à fréquence fixe, vous devez utiliser un céduleur de tâche externe, tel que Windows task scheduler.

Afin de se protéger contre des erreurs d'importation, sofi-bill-to-primmo ne fera aucun traitement s'il est exécuté lorsqu'un ou plusieurs fichiers de types .csv ou .tmp sont encore présents dans son répertoire de fichiers de facturation (OutputDirectory).

L'installation de Node.js est requis pour le bon fonctionnement de l'outil.

Le fonctionnement de l'outil requiert un utilisateur avec les droits et la clé pour accéder aux données de SOFI.

Vous devez créer un employé bien identifié dans l'instance SOFI avec la clé API et le secret utilisé dans l'application ayant besoin d'un accès.

S'assurer que l'utilisateur créé ait la case Connexion à l'API autorisée cochée et que le groupe d'accès de cet utilisateur ait tous les droits requis pour utiliser cet outil, voir plus bas. Pour des raisons de sécurité, utiliser un utilisateur différent dans la (les) résidence(s) pour chaque outil avec des droits d’accès limiter à cet outil seulement.

Télécharger la dernière version de l'outil. Suivez le lien: https://gitlab.telemedic.ca/client-tools/sofi-bill-to-primmo/-/releases

Extraire le contenu du fichier compressé dans un sous-répertoire à la racine du disque C: (ex: c:\telemedic\billtoprimmo)

Il faut avoir les informations ci-dessous pour compléter la configuration.

Les informations de l'instance SOFI qui permettront a sofi-bill-to-primmo d'accéder aux données et les informations venant de Primmo qui identifient l'établissement qui doit être synchronisé.

ParamètreDescription
De l'instance SOFI
urlURL vers le point d’accès de l’API SOFI
apiaccesskeyClé d’accès à l’API.
apisecretSecret associé à la clé d’accès.
Venant de Primmo
VendorIdVendor ID (selon la valeur configurée dans MDG)
Les valeurs MdgFormatCol doivent être entre des guillemets
MdgFormatCol09Valeur à inscrire dans la colonne 9 du fichier MDG
MdgFormatCol11Valeur à inscrire dans la colonne 11 du fichier MDG
MdgFormatCol14Valeur à inscrire dans la colonne 14 du fichier MDG
MdgFormatCol15VValeur à inscrire dans la colonne 15V du fichier MDG
MdgFormatCol15PValeur à inscrire dans la colonne 15P du fichier MDG

Toutes ces valeurs sont optionnelles

Paramètre Description
“StartDate”: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ssZDate et heure de début pour la recherche de SAC acceptés. Paramètre optionnel.
“EndDate”: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ssZDate et heure de fin pour la recherche de SAC acceptés. Paramètre optionnel.
“Language”: “FR” ou “EN”Langue utilisée pour la description des services dans les fichiers Primmo. Paramètre optionnel (défaut=“FR”) .
“DryRun”: true or false Permet d'exécuter le programme en mode de simulation, i.e. sans archiver les SAC acceptés. Paramètre optionnel (défaut=false).
“OutputDirectory”: “output”Permet de préciser le répertoire où seront générés les fichiers de facturation. Paramètre optionnel (défaut=“output”).
“FileLogging”: { “FilePath”: “log” } Permet de préciser le répertoire où seront générés les fichiers de journalisation. Paramètre optionnel (défaut=“log”).
“_comment”“_comment”: “StartDate 2023-01-01T00:00:00Z”permet de mettre en commentaire la ligne.

Le «backslash» (\\) est utilisé comme caractère d'échappement pour les caractères spéciaux tels que la tabulation (\t), le saut de ligne (\n), et d'autres. Afin d'interpréter correctement les «backslashs» dans un répertoire pour un fichier JSON, il est nécessaire de les doubler.

Les chemins des répertoires dans la configuration pour OutputDirectory et FileLogging doivent donc contenir des «backslashs» doublés pour interpréter littéralement le «backslash». Par exemple, “\\ordi\chemin1\chemin2” devrait être écrit comme “\\\\ordi\\chemin1\\chemin2”.

{
	"Companies": [
		{
			"url": "https://siteduclient1.telemedic.ca",
			"apiaccesskey": "COMPANY1_API_ACCESS_KEY",
			"apisecret": "API_SECRET",
			"PrimmoBilling": {
				"VendorId": null, 
				"MdgFormatCol09": null, 
				"MdgFormatCol11": null, 
				"MdgFormatCol14": null, 
				"MdgFormatCol15V": null, 
				"MdgFormatCol15P": null
			}
		},
		{
			"url": "https://siteduclient2.telemedic.ca",
			"apiaccesskey": "COMPANY1_API_ACCESS_KEY",
			"apisecret": "API_SECRET",
			"PrimmoBilling": {
				"VendorId": null, 
				"MdgFormatCol09": null, 
				"MdgFormatCol11": null, 
				"MdgFormatCol14": null, 
				"MdgFormatCol15V": null, 
				"MdgFormatCol15P": null
			}
		}
	],
	"DryRun": true,
	"_comment": "StartDate 2023-01-01T00:00:00Z",
	"_comment": "EndDate 2023-08-16T23:59:59Z",
	"Language": "FR",
	"OutputDirectory": "output",
	"FileLogging": {
		"FilePath": "log"
	}
}

Exécuter «run.cmd»

Droits requis

ModuleDroit
AdminVoir
FactureVoir
Renseignements GénérauxVoir

Le groupe d'accès utilisé doit disposer des autorisations nécessaires pour effectuer des archivages dans sa liste de droits.

 {
   "Billing": {
        "CanArchive": true
    }
 }

Avertissements, infos et erreurs dans les logs

[WARN] IMPORTANT! DryRun will create the files but will not set archived status for charges. : Indique que sofi-bill-to-primmo s’exécute en mode DryRun et donc ne fera pas l’archivage des SAC facturables.

[ERROR] Files found in the output directory, check logs and clean output directory before retrying : sofi-bill-to-primmo arrête son exécution puisqu’il y a déjà des fichiers de type .csv ou .tmp dans le répertoire de sortie.

[ERROR] Invalid client credentials for VendorId X : L’information de clé-secret fournie pour se connecter à l’API du vendor ID est erronée ou l’utilisateur n’a pas les droits d’accès sur l’API.

[ERROR] default - Invalid output directory 'XXXX' : Le répertoire de sortie pour les fichiers de facturation n’existe pas.

[INFO] default - Log directory 'XXXX' created : L’outil sofi-bill-to-primmo informe de la création du répertoire de journalisation XXXX.

[INFO] default - Output directory is set to 'output' : L’outil sofi-bill-to-primmo informe que le répertoire par défaut ‘output’ est utilisé pour la génération des fichiers de facturation.

[INFO] default - Company XXXX, VendorId: 901. 1 resident(s) not processed (missing ExternalId) : indique que sofi-bill-to-primmo a détecté un (des) résident(s) qui a(ont) des services facturables, mais qui n’ont pas d’ExternalID. Ces services ne seront pas traités par sofi-bill-to-primmo.