CroissanceCommune / autonomie

Autonomie est un progiciel de gestion à l'usage des CAE
GNU General Public License v3.0
20 stars 12 forks source link

devis/factures : Harmoniser l'affichage des décimales #951

Open eheliot12 opened 6 years ago

eheliot12 commented 6 years ago

EDIT: cette issue s'appelait initialement « devis/factures : 5 decimales dans les prix », d'où la discussion ci-dessous

dans certains cas, les 5 décimales s'affichent dans les prix paiement en 3 fois par exemple

JocelynDelalande commented 6 years ago

Là où on voudrait uniquement 2 décimales j'imagine.

paul-kilya commented 6 years ago

Oui, à l'affichage on n'en met que 2

JocelynDelalande commented 6 years ago

Y a-t-il des exceptions, c'est à dire des prix que l'on souhaite afficher avec plus de 2 décimales ?

eheliot12 commented 6 years ago

sur les devis et factures, je ne crois pas. ce serait pertinent sur le prix unitaire pour de très grosses quantités (ie industrie) mais pas dans notre cas.

JocelynDelalande commented 6 years ago

OK pour l'affichage.

Par contre ça introduirait une incohérence avec la saisie qui permet jusqu'à 5 chiffres après la virgule pour les champs de prix.

eheliot12 commented 6 years ago

il peut y avoir un écart entre prix unitaire et prix de la ligne

JocelynDelalande commented 6 years ago

Oui mais par ex pour le prix unitaire. Si on choisi de ne l'afficher (mode vue) qu'avec 2 décimales. Est-ce qu'on laisse pour autant la possibilité de saisir (mode formulaire) 5 décimales ?

paul-kilya commented 6 years ago

Oui c'est l'idée, les saisies et calculs se font avec 5 décimales mais à l'affichage on arrondi à 2

JocelynDelalande commented 6 years ago

OK, merci. (je suis dessus)

JocelynDelalande commented 6 years ago

Est-ce qu'on l'inclut à la 4.2 ? (est-ce une régression ?)

eheliot12 commented 6 years ago

bien present en 4.1. on peut l'inclure en 4.2

tonthon commented 6 years ago

Un traducteur doit pouvoir avoir un prix unitaires à 5 chiffres dans ses devis et factures. Le fonctionnement actuel a été ajouté à la demande de plusieurs CAE utilisatrices

JocelynDelalande commented 6 years ago

OK, j'ai harmonisé un peu tout ça, en vérifiant sur les pages devis et factures qu'il n'y avait pas d'oublis. (PR en cours de rédaction).

Ça ressemble à ça : 

image

L'usage des ellipses (« … ») me questionne un peu : je comprends leur utiité, mais je trouve que ça surcharge beaucoup (en fait, les trois petits points prennent quasiment autant de place que si on avait laissé deux décimales de plus).

JocelynDelalande commented 6 years ago

Solution prête pour review sur #957

JocelynDelalande commented 6 years ago

Du coup je me demande si il ne faut pas faire une passe sur l'ensemble des templates, pas uniquement cette vue, en faisant un peu de recherche dans les fichiers, je trouve tout ça de cas où on utilise un affichage à 5 décimales :


-*- mode: helm-ag -*-

Ag Results for `format_amount precision=5':

autonomie/templates/tasks/invoice_view_only.mako:196:                            ${api.format_amount(payment.amount, precision=5)|n} €
autonomie/templates/tasks/invoice_view_only.mako:225:                                d'un montant TTC de ${api.format_amount(cancelinvoice.ttc, precision=5)|n} €
autonomie/templates/tasks/view_only.mako:118:                                <dd>${api.format_amount(request.context.ht, precision=5)|n}&nbsp;€</dd>
autonomie/templates/tasks/view_only.mako:120:                                <dd>${api.format_amount(request.context.tva, precision=5)|n}&nbsp;€ </dd>
autonomie/templates/tasks/view_only.mako:122:                                <dd>${api.format_amount(request.context.ttc, precision=5)|n}&nbsp;€</dd>
autonomie/templates/estimations.mako:96:                <td><strong>${api.format_amount(totalht, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/estimations.mako:97:                <td><strong>${api.format_amount(totaltva, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/estimations.mako:98:                <td><strong>${api.format_amount(totalttc, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/estimations.mako:142:                        ${api.format_amount(ht, precision=5) | n}&nbsp;€
autonomie/templates/estimations.mako:146:                     ${api.format_amount(tva, precision=5) | n}&nbsp;€
autonomie/templates/estimations.mako:149:                     ${api.format_amount(ttc, precision=5) | n}&nbsp;€
autonomie/templates/estimations.mako:162:                <td><strong>${api.format_amount(totalht, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/estimations.mako:163:                <td><strong>${api.format_amount(totaltva, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/estimations.mako:164:                <td><strong>${api.format_amount(totalttc, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/company_index.mako:49:                ${format_customer(invoice.customer, False)} - ${api.format_amount(invoice.ttc, precision=5)|n}&nbsp;€
autonomie/templates/treasury/commercial.mako:68:                                        ${api.format_amount(turnover.value, trim=True, precision=5)|n}
autonomie/templates/treasury/commercial.mako:74:                                        title='${turnover.comment}' onclick='setTurnoverProjectionForm("${i}", "${api.format_amount(turnover.value, grouping=False, precision=5)}", this);'>
autonomie/templates/treasury/commercial.mako:83:                            ${api.format_amount(turnover_projections['year_total'], trim=True, precision=5)|n}
autonomie/templates/treasury/commercial.mako:88:                            <td>${api.format_amount(turnovers[i], trim=True, precision=5)|n}</td>
autonomie/templates/treasury/commercial.mako:91:                            ${api.format_amount(turnovers['year_total'], trim=True, precision=5)|n}
autonomie/templates/treasury/commercial.mako:97:                                ${api.format_amount(compute_turnover_difference(i, turnover_projections, turnovers), trim=True, precision=5)|n}
autonomie/templates/treasury/commercial.mako:101:                            ${api.format_amount(turnovers['year_total'] - turnover_projections['year_total'], trim=True, precision=5)|n}
autonomie/templates/business/overview.mako:93:                            ${api.format_amount(deadline.payment_line.amount, precision=5) | n}&nbsp;€
autonomie/templates/project/business_list.mako:122:                            ${api.format_amount(sum([i.ttc for i in business.invoices]), precision=5)|n}&nbsp;€
autonomie/templates/project/estimations.mako:97:                <td><strong>${api.format_amount(totalht, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/project/estimations.mako:98:                <td><strong>${api.format_amount(totaltva, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/project/estimations.mako:99:                <td><strong>${api.format_amount(totalttc, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/project/estimations.mako:143:                        ${api.format_amount(ht, precision=5) | n}&nbsp;€
autonomie/templates/project/estimations.mako:147:                     ${api.format_amount(tva, precision=5) | n}&nbsp;€
autonomie/templates/project/estimations.mako:150:                     ${api.format_amount(ttc, precision=5) | n}&nbsp;€
autonomie/templates/project/estimations.mako:163:                <td><strong>${api.format_amount(totalht, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/project/estimations.mako:164:                <td><strong>${api.format_amount(totaltva, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/project/estimations.mako:165:                <td><strong>${api.format_amount(totalttc, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/panels/task/estimation.mako:87:                            <td class='price'>${api.format_amount(task.deposit_amount_ttc(), precision=5)|n}&nbsp;€</td>
autonomie/templates/panels/task/estimation.mako:98:                                <td class='price'>${api.format_amount(line.amount, precision=5)|n}&nbsp;€</td>
autonomie/templates/panels/task/estimation.mako:100:                                <td class='price'>${api.format_amount(task.paymentline_amount_ttc(), precision=5)|n}&nbsp;€</td>
autonomie/templates/panels/task/estimation.mako:115:                            ${api.format_amount(task.sold(), precision=5)|n}&nbsp;€
autonomie/templates/panels/task/task_list.mako:50:            <td><strong>${api.format_amount(totalht, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/panels/task/task_list.mako:51:            <td><strong>${api.format_amount(totaltva, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/panels/task/task_list.mako:52:            <td><strong>${api.format_amount(totalttc, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/panels/task/task_list.mako:111:                <strong>${api.format_amount(ht, precision=5)|n}&nbsp;€</strong>
autonomie/templates/panels/task/task_list.mako:114:                ${api.format_amount(tva, precision=5)|n}&nbsp;€
autonomie/templates/panels/task/task_list.mako:117:                ${api.format_amount(ttc, precision=5)|n}&nbsp;€
autonomie/templates/panels/task/task_list.mako:133:                                    ${api.format_amount(payment.amount, precision=5)|n}&nbsp;€
autonomie/templates/panels/task/task_list.mako:166:            <td><strong>${api.format_amount(totalht, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/panels/task/task_list.mako:167:            <td><strong>${api.format_amount(totaltva, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/panels/task/task_list.mako:168:            <td><strong>${api.format_amount(totalttc, precision=5)|n}&nbsp;€</strong></td>
autonomie/templates/panels/task/base.mako:104:                                <td class="unity">${api.format_amount(line.cost, trim=False, precision=5)|n}&nbsp;€</td>
autonomie/templates/panels/task/base.mako:151:                            ${api.format_amount(task.expenses_ht, precision=5)|n}&nbsp;€
autonomie/templates/panels/task/base.mako:166:                            ${api.format_amount(task.groups_total_ht() + task.expenses_ht, trim=False, precision=5)|n}&nbsp;€
autonomie/templates/panels/task/base.mako:178:                                ${api.format_amount(discount.amount, precision=5)|n}&nbsp;€
autonomie/templates/panels/task/base.mako:192:                            ${api.format_amount(task.total_ht(), precision=5)|n}&nbsp;€
autonomie/templates/panels/task/base.mako:204:                            ${api.format_amount(task.total_ht(), precision=5)|n}&nbsp;€
autonomie/templates/panels/task/base.mako:242:                                ${api.format_amount(tva_amount, precision=5)|n}&nbsp;€
autonomie/templates/panels/task/base.mako:249:                                ${api.format_amount(tva_amount, precision=5)|n}&nbsp;€
autonomie/templates/panels/task/base.mako:260:                            ${api.format_amount(task.expenses_amount(), precision=5)|n}&nbsp;€
autonomie/templates/panels/task/base.mako:269:                        ${api.format_amount(task.total(), precision=5)|n}&nbsp;€
autonomie/tests/utils/test_strings.py:51:            strings.format_amount(c, trim=False, precision=5),
autonomie/tests/utils/test_strings.py:56:            strings.format_amount(c, trim=False,precision=5),
autonomie/tests/utils/test_strings.py:61:            strings.format_amount(c, trim=False,precision=5),
autonomie/tests/utils/test_strings.py:66:            strings.format_amount(c, trim=True, precision=5),
autonomie/tests/utils/test_strings.py:71:            strings.format_amount(c, trim=False, precision=5),
autonomie/scripts/simple_invoice_export.py:13:        'ht': format_amount(task.ht, grouping=False, precision=5),
autonomie/scripts/simple_invoice_export.py:14:        'tva': format_amount(task.tva, grouping=False, precision=5),
autonomie/scripts/simple_invoice_export.py:15:        'ttc': format_amount(task.ttc, grouping=False, precision=5),
autonomie/views/invoices/invoice.py:261:                format_amount(self.context.topay(), precision=5)

Si il y a probablement quelques cas légitimes, certains sont clairement de l'affichage et mériteraient probablement d'être rammenés à 2 décimales. Qu'en pensez-vous ?

tonthon commented 6 years ago

Comme indiqué ci-dessus, l'affichage à 5 chiffres étaient une demande utilisateur, elle a été rajoutée après coup, ainsi que la notation avec ellipses "..." Une option d'affichage pourrait éventuellement être mise à 2 chiffres et pourraient être passée à 5 pour les devis/factures qui le nécessite. Plusieurs corps de métiers ont besoin de ce niveau de détail (notamment les traducteurs).

JocelynDelalande commented 6 years ago

@tonthon désolé, j'ai manqué ton message précédent (on a posté en même temps, du coup il est passé sous mon radar).

image

Du coup il ne s'agirait pas vraiment d'un bug, mais plus d'une fonctionnalité à développer : rendre paramétrable le nombre de décimales affichées. Ça serait paramétrable par enseigne ou par préférence utilisateur ? (j'ai du mal à me rendre compte de si c'est intéressant que les accompagnateur·ice·s voient également ce niveau de détail).

Je propose de conserver #957 en enlevant le commit qui passe de 5 à 2 les décimales, étant donné qu'elle corrige des incohérences d'affichage également.

paul-kilya commented 6 years ago

Je pense que le mieux serait qu'on ait 2 décimales par défaut et qu'une option puisse être activée par devis/facture pour afficher les 5 (éventuellement avec un paramétrage par défaut par enseigne).

Mais effectivement ça c'est une amélioration qu'on pourra implémenter plus tard. Dans l'immédiat je suis d'accord avec ton plan Jocelyn.