deleted supplier bill still appears in stats

Bonjour à tous,

DOLIBARR 2.6.0

Je regarde les dépenses 2008 ( http://modified/compta/resultat/clientfourn.php?year=2008 ) et je vois sur la 1ere ligne une dépense qui n’a pas de fournisseur (14 686F) …
Pas de facture fournisseur avec cette somme dans Dolibarr.
Je cherche dans les tables cette somme et je trouve : [code]

– Contenu de la table llx_bank

INSERT INTO llx_bank (rowid, datec, datev, dateo, amount, label, fk_account, fk_user_author, fk_user_rappro, fk_type, num_releve, num_chq, rappro, note, fk_bordereau, banque, emetteur, author) VALUES
(189, ‘2009-05-18 09:30:51’, ‘2008-07-25’, ‘2008-07-25’, -14686.00000000, ‘(SupplierInvoicePayment)’, 1, 1, NULL, ‘PRE’, NULL, NULL, 0, NULL, 0, NULL, NULL, NULL);
[/code][code]

– Contenu de la table llx_paiementfourn

INSERT INTO llx_paiementfourn (rowid, tms, datec, fk_facture_fourn, datep, amount, fk_user_author, fk_paiement, num_paiement, note, fk_bank, statut) VALUES
(152, ‘20090518093051’, ‘2009-05-18 09:30:51’, NULL, ‘2008-07-25 12:00:00’, 14686, 1, 3, ‘’, ‘’, 189, 0);
[/code][code]

– Contenu de la table llx_paiementfourn_facturefourn

INSERT INTO llx_paiementfourn_facturefourn (rowid, fk_paiementfourn, fk_facturefourn, amount) VALUES
(152, 152, 170, 14686);
[/code]La facture fournisseur #170 n’existe pas. Elle a été effacée à cause d’une erreur de saisie, mais son montant apparait tout de même dans le rapport.

La facture avait été marquée réglée : l’écriture bancaire #189 correspondant au règlement de cette facture n’a pas été effacée en même temps que la facture (est-ce normal ?) … donc si je clique sur le bouton ‘SHOW ACCOUNT’ ( http://modified/compta/bank/fiche.php?id=212 ), j’ai une erreur :[code]
Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic:
Dolibarr: 2.6.0
Date: 20090603082450
Niveau de fonctionnalités: 0
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.7a mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.5
Referer: http://modified/compta/bank/search.php?page=5&sortfield=b.dateo&sortorder=asc
Url sollicitée: /compta/bank/fiche.php?id=212
MenuManager: eldy_backoffice.php/eldy_backoffice.php

Type gestionnaire de base de donnée: mysql
Requete dernier acces en base en erreur: SELECT COUNT(rowid) as nb FROM llx_bank WHERE fk_account=
Code retour dernier acces en base en erreur: DB_ERROR_SYNTAX
Information sur le dernier accès en base en erreur: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1
[/code]

La gestion des factures et la gestion des écritures sur le compte bancaires sont 2 choses distinctes. Il est normal que la facture supprimée ne fasse pas effacer la ligne sur le compte bancaire.
C’est pour cela (mais pas uniquement) qu’existe les opérations de rapprochement qui consiste a supprimer les lignes du compte bancaire qui ne correspondent pas aux relevés evoyés par la banque. Ce genre d’ecart se détecte et se corrige a ce moment la.

Merci pour les éclaircissements factures <-> écritures bancaires.

J’ai effacé l’écriture bancaire #189 correspondant au règlement de cette (ancienne) facture #170.
L’entrée dans la table llx_bank a bien été effacée.

Par contre, lors de l’effacement de la facture #170, les paiements de cette facture sont restés : tables llx_paiementfourn et llx_paiementfourn_facturefourn : Est-ce normal ? Si oui, comment doit-on procéder pour effacer une facture marquée Payée ?

la somme ‘14 686F’ apparait donc toujours seule, sans fournisseur dans Rapport / 2008 ( http://modified/compta/resultat/clientfourn.php?year=2008 ) …

Ca non, c’est pas normal.
Quand on efface une facture, on doit effacer ces enregistrements fils donc les paiements llx_paiementfourn…
Je regarde si c’est un bug…

Tu peux essayer les requetes suivante pour nettoyer ces orphelins (faire une sauvegarde avant au cas ou).

delete from llx_paiementfourn where rowid not in (select fk_paiementfourn from llx_paiementfourn_facturefourn);

delete from llx_paiementfourn_facturefourn where fk_facturefourn not in (select rowid from llx_facture_fourn);