Dolibarr / dolibarr

Dolibarr ERP CRM is a modern software package to manage your company or foundation's activity (contacts, suppliers, invoices, orders, stocks, agenda, accounting, ...). it's an open source Web application (written in PHP) designed for businesses of any sizes, foundations and freelancers.
https://www.dolibarr.org
GNU General Public License v3.0
5.45k stars 2.79k forks source link

Sort by payment type in the table dolibarr/compta/payment/list.php #26342

Closed MechMachOth closed 9 months ago

MechMachOth commented 1 year ago

Bug

When I modify the file dolibarr/compta/payment/list.php by adding 'c.libelle' to the query:

// DISTINCT is to avoid duplicate when there is a link to sales representatives $sql = "SELECT DISTINCT p.rowid, p.ref, p.datep, p.fk_bank, p.amount, p.statut, p.num_paiement, c.libelle"; $sql .= ", c.code as paiement_code"; $sql .= ", ba.rowid as bid, ba.ref as bref, ba.label as blabel, ba.number, ba.account_number as account_number, ba.fk_accountancy_journal as accountancy_journal"; $sql .= ", s.rowid as socid, s.nom as name, s.email";

The sorting is done correctly, and I no longer encounter any errors.

Environment Version

18.0.1

Environment OS

No response

Environment Web server

No response

Environment PHP

No response

Environment Database

No response

Environment URL(s)

No response

Expected and actual behavior

When I click on 'type' in the payments table to sort it in ascending or descending order, I expect the data to be sorted correctly. However, instead, I receive the following error:

Requested URL: /dolibarr/compta/payment/list.php?sortfield=c.libelle&sortorder=asc&begin=&contextpage=paymentlist Referer: http://localhost/dolibarr/compta/payment/list.php?sortfield=c.libelle&sortorder=desc&begin=&contextpage=paymentlist Menu Handler: eldy_menu.php Modules/Applications: syslog, user, api, contract, ficheinter, supplier_proposal, incoterm, tax, loan, propal, productbatch, stock, product, expedition, project, mailing, workflow, import, export, bookmark, fckeditor, gravatar, paypal, notification, clicktodial, blockedlog, agenda, bank, barcode, cron, order, donation, ecm, expensereport, supplier, holiday, margin, opensurvey, paybox, printing, resource, salaries, service, company, modulebuilder, webhook, emailcollector, debugbar, knowledgemanagement, externalids, ticket, invoice, direct_debit, recovery Database Manager Type: mysqli Error in the last database access: SELECT DISTINCT p.rowid, p.ref, p.datep, p.fk_bank, p.amount, p.statut, p.num_paiement, c.code as payment_code, ba.rowid as bid, ba.ref as bref, ba.label as blabel, ba.number, ba.account_number as account_number, ba.fk_accountancy_journal as accountancy_journal, s.rowid as socid, s.nom as name, s.email FROM llx_paiement as p LEFT JOIN llx_c_paiement as c ON p.fk_paiement = c.id LEFT JOIN llx_bank as b ON p.fk_bank = b.rowid LEFT JOIN llx_bank_account as ba ON b.fk_account = ba.rowid LEFT JOIN llx_payment_invoice as pf ON p.rowid = pf.fk_payment LEFT JOIN llx_invoice as f ON pf.fk_invoice = f.rowid LEFT JOIN llx_company as s ON f.fk_soc = s.rowid WHERE p.entity IN (1) ORDER BY c.libelle ASC LIMIT 26 Last database access return code in error: DB_ERROR_3065 Information on the last database access error: Expression #1 of ORDER BY clause is not in SELECT list, references column 'dolibarr18.0.1.c.libelle' which is not in SELECT list; this is incompatible with DISTINCT."

Steps to reproduce the behavior

"The error occurs when I click on the 'type' column in the payment table dolibarr/compta/payment/list.php.

Attached files

No response

atm-maxime commented 11 months ago

Hi ! Thanks for the feedback. Can you tell us how you get on this page "/compta/payment/list.php" because it doesn't exist in Dolibarr project. The one I found most approaching is "/compta/paiement/list.php"

MechMachOth commented 9 months ago

Ah, oui, je n'ai pas fait attention à cela. J'ai utilisé un traducteur et je pense qu'il a même traduit le lien. Je parlais de la même page '/compta/paiement/list.php'.

Voici l'erreur que j'ai rencontrée : Dolibarr a détecté une erreur technique. Ces informations peuvent être utiles à des fins de diagnostic (vous pouvez définir l'option $dolibarr_main_prod sur '1' pour masquer les informations sensibles) : Date: 20240117203154 Dolibarr: 18.0.1 - https://www.dolibarr.org Niveau de fonctionnalités: 0 PHP: 7.4.3-4ubuntu2.19 Server: Apache/2.4.41 (Ubuntu) OS: Linux LinuxMint 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64 User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Url sollicitée: /dolibarr/compta/paiement/list.php?sortfield=c.libelle&sortorder=desc&begin=&contextpage=paymentlist Referer: http://localhost/dolibarr/compta/paiement/list.php?leftmenu=customers_bills_payment Gestionnaire de menu: eldy_menu.php

Modules/Applications: syslog, user, api, contrat, ficheinter, supplier_proposal, incoterm, tax, loan, propal, productbatch, stock, product, expedition, projet, mailing, workflow, import, export, bookmark, fckeditor, gravatar, paypal, notification, clicktodial, blockedlog, agenda, banque, barcode, cron, commande, don, ecm, expensereport, fournisseur, holiday, margin, opensurvey, paybox, printing, resource, salaries, service, societe, modulebuilder, webhook, emailcollector, debugbar, knowledgemanagement, externalids, ticket, facture, prelevement, paymentbybanktransfer, recouvrement Type gestionnaire de base de données: mysqli Requête dernier accès en base en erreur: SELECT DISTINCT p.rowid, p.ref, p.datep, p.fk_bank, p.amount, p.statut, p.num_paiement, c.code as paiement_code, ba.rowid as bid, ba.ref as bref, ba.label as blabel, ba.number, ba.account_number as account_number, ba.fk_accountancy_journal as accountancy_journal, s.rowid as socid, s.nom as name, s.email FROM llx_paiement as p LEFT JOIN llx_c_paiement as c ON p.fk_paiement = c.id LEFT JOIN llx_bank as b ON p.fk_bank = b.rowid LEFT JOIN llx_bank_account as ba ON b.fk_account = ba.rowid LEFT JOIN llx_paiement_facture as pf ON p.rowid = pf.fk_paiement LEFT JOIN llx_facture as f ON pf.fk_facture = f.rowid LEFT JOIN llx_societe as s ON f.fk_soc = s.rowid WHERE p.entity IN (1) ORDER BY c.libelle DESC LIMIT 26 Code retour dernier accès en base en erreur: DB_ERROR_3065 Information sur le dernier accès en base en erreur: Expression #1 of ORDER BY clause is not in SELECT list, references column 'dolibarr18.0.1.c.libelle' which is not in SELECT list; this is incompatible with DISTINCT."

hregis commented 9 months ago

@MechMachOth @atm-maxime fixed wtih this PR https://github.com/Dolibarr/dolibarr/pull/27643 thanks