Régie, facturation, encaissement...

Nécessite Koha 19.11 + développements complémentaires

1. Migration des données

Points importants pour les bibliothèques qui utilisaient le code javascript spécifique mis en place par BibLibre :

1) les codes des types de crédits et des types de paiement utilisés dans les lignes de comptes sont repris à la mise à jour, et visibles dans les nouvelles tables Types de crédit et Types de débit. Les libellés correspondants ne sont pas repris automatiquement, et devront être mis à jour à la main, par BibLibre ou par le client, en reprenant pour chaque code le libellé défini dans le javascript.

2) le mode de fonctionnement, qui était particulier (on enregistrait un paiement dans l'onglet crédit, de façon à correspondre à une dette dans l'onglet débit), n'a plus lieu d'être : un paiement est enregistré directement en lien avec sa facturation. En conséquence, dans le tableau des comptes, une facture sera bien indiquée comme payée.

2. Configuration

Les types de crédit et de débit étaient définis jusqu'à présent dans des listes de valeurs autorisées (MANUAL_INV) ; désormais ils sont gérés, indépendamment les uns des autres, dans des tables distinctes account_credit_types et account_debit_types ; ils peuvent être limités à un ou plusieurs sites, ce qui est géré dans les tables account_credit_types_branches et account_debit_types_branches.

Le paramétrage des types de crédit et de débit se fait dans Administration / Comptabilité / Types de débit (ou Type de crédit, de façon parfaitement similaire).

Type de débit

  • Ajouter un type de débit (type de facture) :
  • Cliquer le bouton Nouveau type de débit
  • Saisir le code : de préférence sans espace ni caractères accentués ; cette valeur sera enregistrée dans les lignes de comptes de la base de données
  • Il est possible de définir un montant par défaut pour le type de débit, qui sera positionné automatiquement lors de la création d'une facture manuelle pour les adhérents (mais pourra être modifié)
  • Description : ce qui sera affiché à l'écran
  • Peut être ajouté manuellement : ce débit pourra être imputé à un lecteur manuellement.
  • Limiter aux bibliothèques : sélectionner une ou plusieurs bibliothèques pour y limiter l'accès à ce type de débit ; par défaut sera accessible à tous les sites (de même que quand Tous les listes est sélectionné).

Certains types de débits peuvent être positionnés automatiquement, et ne sont pas dans la liste ci-dessus :

  • ACCOUNT : inscription
  • ACCOUNT_RENEW : renouvellement d'inscription
  • RESERVE_EXPIRED : durée de mise à disposition d'une réservation expirée (quand ceci est soumis à pénalité)
  • LOST : exemplaire perdu à re-payer
  • sundry : ??
  • NEW_CARD : nouvelle carte
  • OVERDUE : amendes de retard
  • PROCESSING :
  • RENT : frais de location (les 3 suivantes liées aux frais de location)
  • RENT_DAILY
  • RENT_RENEW
  • RENT_DAILY_RENEW
  • RESERVE : frais de réservation (quand réservation payante)

Le tableau, triable et filtrable, affiche la liste des types de débit et leurs caractéristiques.

Type de crédit

L'ajout d'un type de crédit se fait selon une procédure similaire.

Certains types de crédit peuvent être positionnés automatiquement :

  • CREDIT : crédit
  • PAYMENT : paiement
  • FORGIVEN : ??? différence avec perte et profit ?
  • LOST_RETURN : exemplaire perdu rendu
  • WRITEOFF : perte et profit

Les préférences système liées à la régie sont les suivantes (Administration / Préférences système / Comptabilité) :

  • AutoCreditNumber : permet de définir une numérotation automatique des reçus, et de choisir le type de numérotation
  • AccountAutoReconcile : permet de tenir compte automatiquement des crédits et des débits à chaque transaction
  • FinePaymentAutoPopup : permet d'afficher un popup pour l'impression des reçus de paiement à chaque paiement
  • UseCashRegisters : permet de définir des caisses pour enregistrer les paiements. Une caisse peut être rattachée à un site ; un montant initial de caisse peut être saisi.

PAYMENT_TYPE : les types de paiements sont toujours dans cette liste de valeurs autorisées

Une valeur par défaut est : CASH (a priori requise pour l'usage des caisses?)

3. Fonctionnement

Les factures et encaissements sont gérés dans l'onglet Comptabilité de la fiche adhérent.

Le tableau récapitule la liste des factures et des paiements, qu'ils aient été ajoutés manuellement ou automatiquement.

Le montant d'une facture est positif en rouge, le montant d'un paiement ou d'un crédit est négatif en vert.

Différentes actions sont possibles pour les factures ou les paiements, accessibles dans la colonne Actions du tableau, pour chaque ligne.

Pour une facture :

  • Imprimer : ceci imprime la facture en suivant le modèle de notification paramétrable ACCOUNT_DEBIT
  • Détails : affiche dans une page dédiée le détail de la facture ainsi que le paiement associé dans le cas où elle a été payée
  • Payer : bascule vers l'onglet Encaisser pour cette facture
  • Annuler la facture : permet d'annuler une facture manuelle (on ne peut pas annuler les factures automatiques comme les frais d'inscriptions ou les amendes de retard ; dans ce cas passer en Pertes et profits) ; dans ce cas la mention (Annulé) s'affiche dans la colonne Type de compte, et le montant dû passe à 0.

Pour un crédit :

  • Imprimer : ceci imprime le reçu de paiement en suivant le modèle de notification paramétrable ACCOUNT_CREDIT
  • Détails : affiche dans une page dédiée le détail du crédit / du paiement ainsi que le détail des frais payés
  • Annuler le paiement : il est possible d'annuler un paiement, dans ce cas le montant total à recouvrer est mis à jour, et la ligne de paiement se voit affecter un montant de 0, et une mention (Annulé) dans la colonne Type de compte

Aller dans l'onglet Créer facture manuelle

Choisir :

  • le type de débit : les types sont définis dans Administration / types de débit, et sont limités par site : la bibliothèque ne voit que les types qui la concernent
  • Code barre : facultatif, si le facture concerne un exemplaire
  • Description : par défaut reprend le libellé du type de débit, peut être modifiée
  • Note : note complémentaire
  • Montant : le montant (ce montant peut être positionné par défaut s'il est défini dans le type de débit)

Une fois les informations saisies, il est possible :

  • d'enregistrer : la ligne sera alors visible dans Transactions, et dans Encaisser
  • d'enregistrer et payer directement dans la foulée

A partir de l'onglet Créer crédit manuel

  • Type de crédit : les types sont définis dans Administration / Types de crédit, et sont limités par site : la bibliothèque ne voit que les types qui la concernent
  • Code barre : facultatif, si la facture concerne un exemplaire
  • Description : pour préciser le crédit
  • Note : note complémentaire
Important pour les ex-utilisateurs de la régie en javascript : le crédit ne devrait plus servir à gérer les paiements ! Les paiements devraient être faits directement à partir des factures.

L'encaissement d'une facture est possible à partir de plusieurs points au choix :

1) Directement lors de la validation de la facture

2) Onglet Transactions : choisir le bouton Payer dans la colonne Actions de la facture correspondante

3) Onglet Encaisser :

  • bouton Payer pour une ligne de facture
  • bouton Payer la sélection après avoir sélectionné les factures (la sélection de toutes les factures est faite par défaut), pour payer plusieurs factures en une seule opération.

Dans le tableau des factures à encaisser :

  • si la préférence système AccountAutoReconcile est sur "Ne pas réconcilier automatiquement", les crédits s'il en existe ne sont pas automatiquement déduits de la somme à payer, mais visibles : pour les déduire, cliquer sur le bouton Appliquer (suivi de la somme à déduire). Vous pouvez ne pas les déduire.

Si le choix est fait d'Appliquer les crédits, il ne reste qu'une ligne à payer, avec le restant dû :

  • si la préférence système AccountAutoReconcile est sur "Réconcilier automatiquement", les crédits sont automatiquement déduits et on ne voit que le total à facturer

Une fois la façon de payer choisie, on peut procéder au paiement :

Dans l'onglet Transactions, il est possible de voir, pour chaque facture, la façon dont elle a été soldée, en cliquant sur le bouton Détails dans la colonne Action :

  • Détail des frais : récapitule la facture
  • Paiements : récapitule les paiements pour cette facture, en une fois ou en plusieurs fois, ou avec une déduction de crédits comme c'est le cas dans l'exemple ci-dessous :

Si la préférence système "AutoCreditNumber" est activée avec le choix d'un modèle d'incrémentation, chaque facture se verra affecter un numéro unique, visible dans le tableau des Transactions, colonne Numéro de paiement.

A noter que si le paiement est annulé, il conserve son numéro.

Les numérotations actuellement possibles sont :

  • <year>-0001 : 2020-0001, 2020-0002…
  • <branchcode>yyyymm0001 : CHY-JR2020040001, CHY-JR2020040002… CHY-JR20200450001…
  • numérotation incrémentale simple à partir de 1 : 1, 2, 3…

4. Notifications et tickets

Différentes notifications sont associées aux opérations de facturation et d'encaissement, et configurables dans Outils / Notifications et tickets.

Le reçu de facturation est ACCOUNT_CREDIT

FIXME à compléter

5. Rapports de régie

Notes : il faut tenir compte d'une nouvelle table [account_offsets] présente depuis la version 17.11 afin de pouvoir 'lier ' chaque type de facture à chaque encaissement.

Exemples de rapport : Encaissement/Type facture/Catégorie Adherents/Dates/Id de connexion au poste

select date_format(a2.date,'%d/%m/%y') as Date_Paiement,
case
when a.debit_type_code     ='LOST' then 'Exemplaire perdu'/*<== NOUVELLE COLONNE ET NOUVEAU CODE*/
when a.debit_type_code     ='NEW_CARD' then 'Nouvelle carte'/*<== NOUVELLE COLONNE ET NOUVEAU CODE*/
when a.debit_type_code     ='MANUAL' then 'Divers'/*<== NOUVELLE COLONNE ET NOUVEAU CODE*/
when a.debit_type_code     ='ACCOUNT' then 'Inscription' /*Nouvelle inscription*/
when a.debit_type_code     ='ACCOUNT_RENEW' then 'Inscription' /*Ré-inscription*/
when a.debit_type_code     ='OVERDUE' then 'Pénalité de retard'/*<== NOUVELLE COLONNE ET NOUVEAU CODE*/
when a.debit_type_code     ='PMELC' then 'Porte monnaie électronique'/*<== NOUVELLE COLONNE ancien CODE maintenu*/
else 'AUTRE' end as Type_facture,
a2.payment_type as Type_Paiement,
b2.categorycode as Type_abonnement,
concat(b2.surname, '  ',b2.firstname) as Nom_Prénom,
b2.cardnumber as N_Carte,
substring_index(convert(sum(o.amount),DECIMAL(6,2)),'-',-1) as 'Montants encaissés'
from
account_offsets o
LEFT JOIN accountlines a2 ON (o.credit_id=a2.accountlines_id)
LEFT JOIN accountlines a ON (o.debit_id=a.accountlines_id)
LEFT JOIN borrowers b2 ON (b2.borrowernumber=a.borrowernumber)
LEFT JOIN borrowers b3 ON (b3.borrowernumber=a2.borrowernumber)
where  o.type='Payment' and o.amount like '-%'
and a2.date >=<<date sup. égale à |date>> and a2.date <=<<date inf. égale à|date>>
and a2.manager_id=<<Id du poste>>
group by Type_facture,Type_Paiement,a2.date,Nom_Prénom,b2.cardnumber

Encaissement/Type facture/Catégorie Adherents/Dates/Id poste[caisse]

select date_format(a2.date,'%d/%m/%y') as Date_Paiement,
case
when a.debit_type_code     ='LOST' then 'Exemplaire perdu'/*<== NOUVELLE COLONNE ET NOUVEAU CODE*/
when a.debit_type_code     ='NEW_CARD' then 'Nouvelle carte'/*<== NOUVELLE COLONNE ET NOUVEAU CODE*/
when a.debit_type_code     ='MANUAL' then 'Divers'/*<== NOUVELLE COLONNE ET NOUVEAU CODE*/
when a.debit_type_code     ='ACCOUNT' then 'Inscription' /*Nouvelle inscription*/
when a.debit_type_code     ='ACCOUNT_RENEW' then 'Inscription' /*Ré-inscription*/
when a.debit_type_code     ='OVERDUE' then 'Pénalité de retard'/*<== NOUVELLE COLONNE ET NOUVEAU CODE*/
when a.debit_type_code     ='PMELC' then 'Porte monnaie électronique'/*<== NOUVELLE COLONNE ancien CODE maintenu*/
else 'AUTRE' end as Type_facture,
a2.payment_type as Type_Paiement,
b2.categorycode as Type_abonnement,
concat(b2.surname, '  ',b2.firstname) as Nom_Prénom,
b2.cardnumber as N_Carte,
substring_index(convert(sum(o.amount),DECIMAL(6,2)),'-',-1) as 'Montants encaissés'
from
account_offsets o
LEFT JOIN accountlines a2 ON (o.credit_id=a2.accountlines_id)
LEFT JOIN accountlines a ON (o.debit_id=a.accountlines_id)
LEFT JOIN borrowers b2 ON (b2.borrowernumber=a.borrowernumber)
LEFT JOIN borrowers b3 ON (b3.borrowernumber=a2.borrowernumber)
where  o.type='Payment' and o.amount like '-%'
and a2.date >=<<date sup. égale à |date>> and a2.date <=<<date inf. égale à|date>>
and a2.register_id=<<Id de la caisse>>
group by Type_facture,Type_Paiement,a2.date,Nom_Prénom,b2.cardnumber