Générer et exporter la comptabilité

Il est possible d'automatiser l'importation dans un logiciel de comptabilité depuis Sinao grâce à l'API. Cela permet de synchroniser à fréquence souhaitée et automatiquement Sinao et votre logiciel de comptabilité.

📘

Important :

Toutes les transactions bancaires de la période doivent être préalablement justifiées.

Votre comptabilité sur Sinao doit être générée mois par mois

Générer la comptabilité (les écritures) d'une période définie

La période se définit via le paramètre : until.

L'API va identifier automatiquement la dernière date générée et générer de cette date à celle de until, raison pour laquelle pour le mois de février on cherche les éléments en date inférieure au 1 mars d'où until=2023-03-01T00:00:00Z.

OK, générons la comptabilité.

Il faut fournir le mois à l'endpoint suivant /apps/appId/exports, la requête va lancer la génération sur nos serveurs pour la période souhaitée (ici le mois d'août 2020).

var myHeaders = new Headers();

myHeaders.append("Authorization", "Bearer <token>");

var month = "09";
var dateString = `2020-${month}-01T00:00:00Z`;

var requestOptions = {
		method: 'POST',
		headers: myHeaders,
		body: raw,
		redirect: 'follow'
};

fetch("https://api.sinao.app/v1/apps/:appId/exports?until=" + dateString, requestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));
{
  "status": "processing",
  "period_end": "2020-09-01T00:00:00.000000Z",
  "period_start": "2020-08-01T00:00:00.000000Z",
   "id":4
}

Notez que le status est processing : la comptabilité est en cours de génération.

Pour récupérer les écritures, il faut donc patienter jusqu'à ce que le status soit finished.

Vous pouvez interroger (par exemple toutes les 30s)

var myHeaders = new Headers();

myHeaders.append("Authorization", "Bearer <token>");

var export_id = 4;
var get_params = `filters[0][name]=id&filters[0][comparator]==&filters[0][value]=${export_id}`;

var requestOptions = {
		method: 'GET',
		headers: myHeaders,
		body: raw,
		redirect: 'follow'
};

fetch("https://api.sinao.app/v1/apps/:appId/exports?" + get_params, requestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));
"data": [
  {
    "id": 4,
    "period_start": "2020-08-01T00:00:00.000000Z",
    "period_end": "2020-09-O1T00:00:00.000000Z",
    "last_exported_at": null,
    "exported_at": null,
    "entries_count": 689,
    "total_debit": 100053677,
    "total_credit": 100053677,
    "status": "finished",
    "created_at": "2023-10-19T08:16:05.000000Z",
    "updated_at": "2023-10-19T08:16:07.000000Z"
  }
]

Le status est "finished" : la génération est terminée.

Récupérer les écritures comptables par id d'export

Vous disposez de l'id de l'export, vous pouvez le mettre dans le paramètre : export_entities_ids, qui est un array
.

var myHeaders = new Headers();

myHeaders.append("Authorization", "Bearer <token>");

var format = "universal"; // quadra, universal, Fiducial ou Agiris
var id = 4;
var get_params = `format=${format}&export_entities_ids[0]=${id}`;
// si vous vouliez récupérer aussi le id 5 :
//var get_params = `format=${format}&export_entities_ids[0]=4&export_entities_ids[1]=5`;

var requestOptions = {
		method: 'GET',
		headers: myHeaders,
		redirect: 'follow'
};

fetch(`https://api.sinao.app/v1/apps/:appId/exports/download?format=${format}&start_at=${start_at}&end_at=${end_at}`, requestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));
{
    "id": 2,
    "period_start": "2003-08-01T00:00:00.000000Z",
    "period_end": "2020-09-01T00:00:00.000000Z",
    "file_url": "https://sinao.test/storage/apps/16/exports/2.zip",
    "file_size": 1763529,
    "format": "universal",
    "entries_count": 2032,
    "status": "finished",
    "downloaded_at": "2020-10-19T09:14:08.000000Z",
    "error_message": null,
    "info_message": null,
    "created_at": "2020-10-19T09:07:25.000000Z",
    "updated_at": "2020-10-19T09:14:08.000000Z"
}

Il ne vous reste plus qu'a télécharger le fichier à l'url : file_url.

Récupérer les écritures comptables par dates de début et fin

Une fois la comptabilité générée, vous pouvez la télécharger en différents formats :

  • quadra : Format du logiciel Quadratus
  • universal : Format FEC, intégrable dans tous les logiciels de comptabilité du marché
  • Agiris :Format du logiciel Agiris
  • Fiducial : Format du logiciel Fiducial
var myHeaders = new Headers();

myHeaders.append("Authorization", "Bearer <token>");

var format = "quadra"; // quadra, universal, Fiducial ou Agiris
var start_at = "2021-09-01T00:00:00Z";
var end_at = "2021-10-01T00:00:00Z";

var requestOptions = {
		method: 'GET',
		headers: myHeaders,
		redirect: 'follow'
};

fetch(`https://api.sinao.app/v1/apps/:appId/exports/download?format=${format}&start_at=${start_at}&end_at=${end_at}`, requestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));
{
    "id": 2,
    "period_start": "021-09-01T00:00:00.000000Z",
    "period_end": "021-10-01T00:00:00.000000Z",
    "file_url": "https://sinao.test/storage/apps/16/exports/2.zip",
    "file_size": 1763529,
    "format": "universal",
    "entries_count": 2032,
    "status": "finished",
    "downloaded_at": "2023-10-19T09:14:08.000000Z",
    "error_message": null,
    "info_message": null,
    "created_at": "2023-10-19T09:07:25.000000Z",
    "updated_at": "2023-10-19T09:14:08.000000Z"
}

ll ne vous reste plus qu'a télécharger le fichier à l'url : file_url.