Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi

SUJET : [Résolu] Temp. ODT - Montant Prix Unitaire remisé

[Résolu] Temp. ODT - Montant Prix Unitaire remisé il y a 1 an 9 mois #96691

  • ITMang
  • Portrait de ITMang
  • Hors ligne
  • Fresh Boarder
  • Messages : 17
  • Remerciements reçus 2
  • Karma: 0
Bonjour à tous,

Voilà sur les template ODT nous avons le tag {line_discount_percent} qui permet donc d'obtenir le pourcentage de remise (dans ce cas précis, 30%).
Mais je souhaiterai savoir s'il existe un tag permettant d'afficher le prix unitaire remisé.
Car en effet, les clients me font souvent le même retour que le montant HT ne correspond pas a la multiplication de la quantité x le montant unitaire (ce qui est logique en soit, mais pour les clients, pas clair).

Voici un exemple concret:

Qté: 40
Prix unitaire non remisé: 173.73
Remise: 30%
Montant total HT: 4864.44

Sauf que, 173.73 x 40 = 6949.20
Mais bien évidemment le résultat est bon, car 6949.20 - 30% = 4864.44.

Mais les clients s'y perdent.

Je souhaiterai donc savoir si on pouvait ajouté un tag, permettant d'afficher le Prix Unitaire après remisé ce qui donnerait donc:

Qté: 40
Prix Unitaire HT: 173.73
Remise: 30%
Prix Unitaire remisé: 121.61
Montant HT: 4864.44.

Et les clients qui feront donc 121.61 x 40 tomberont bien sur 4864.4

Merci d'avance pour votre retour.

Cordialement.
Pièces jointes :
Dernière édition: il y a 1 an 9 mois par ITMang. Raison: Sujet marqué comme résolu
L'administrateur a désactivé l'accès en écriture pour le public.

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96694

  • dolibarr95
  • Portrait de dolibarr95
  • Hors ligne
  • Admin
  • Messages : 1312
  • Remerciements reçus 196
  • Karma: 27
Bonjour :)
Voici la liste des substitutions dispo :
github.com/Dolibarr/dolibarr/blob/dd022e...cgenerator.class.php
'line_fulldesc' => doc_getlinedesc($line,$outputlangs)
'line_product_ref' => $line->product_ref
'line_product_label' => $line->product_label
'line_product_type' => $line->product_type
'line_desc' => $line->desc
'line_vatrate' =>vatrate($line->tva_tx,true,$line->info_bits)
'line_up' =>price2num($line->subprice)
'line_up_locale' =>price($line->subprice, 0, $outputlangs)
'line_qty' => $line->qty
'line_discount_percent' =>($line->remise_percent?$line->remise_percent.'%':'')
'line_price_ht' =>price2num($line->total_ht)
'line_price_ttc' =>price2num($line->total_ttc)
'line_price_vat' =>price2num($line->total_tva)
'line_price_ht_locale' =>price($line->total_ht, 0, $outputlangs)
'line_price_ttc_locale' =>price($line->total_ttc, 0, $outputlangs)
'line_price_vat_locale' =>price($line->total_tva, 0, $outputlangs)
'line_date_start' =>dol_print_date($line->date_start, 'day', 'tzuser')
'line_date_start_locale' =>dol_print_date($line->date_start, 'day', 'tzuser', $outputlangs)
'line_date_start_rfc' =>dol_print_date($line->date_start, 'dayrfc', 'tzuser')
'line_date_end' =>dol_print_date($line->date_end, 'day', 'tzuser')
'line_date_end_locale' =>dol_print_date($line->date_end, 'day', 'tzuser', $outputlangs)
'line_date_end_rfc' =>dol_print_date($line->date_end, 'dayrfc', 'tzuser')
'line_multicurrency_code' => price2num($line->multicurrency_code)
'line_multicurrency_subprice' => price2num($line->multicurrency_subprice)
'line_multicurrency_total_ht' => price2num($line->multicurrency_total_ht)
'line_multicurrency_total_tva' => price2num($line->multicurrency_total_tva)
'line_multicurrency_total_ttc' => price2num($line->multicurrency_total_ttc)
'line_multicurrency_subprice_locale' => price($line->multicurrency_subprice, 0, $outputlangs)
'line_multicurrency_total_ht_locale' => price($line->multicurrency_total_ht, 0, $outputlangs)
'line_multicurrency_total_tva_locale' => price($line->multicurrency_total_tva, 0, $outputlangs)
'line_multicurrency_total_ttc_locale' => price($line->multicurrency_total_ttc, 0, $outputlangs)
L'administrateur a désactivé l'accès en écriture pour le public.

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96697

  • ITMang
  • Portrait de ITMang
  • Hors ligne
  • Fresh Boarder
  • Messages : 17
  • Remerciements reçus 2
  • Karma: 0
Bonjour,

Merci pour votre réponse, mais j'avais déjà découvert celle-ci sur le Wiki de Dolibarr.
Je me suis permis de poser la question sur le forum parce que justement je ne vois pas la substitution de disponible.
D'où le fait de ma question de savoir si cela était possible de le faire ?

Ce qui serait bien, c'est d'avoir par exemple:
{line_up} qui nous affiche bien le prix unitaire.
Et {line_up_discount} qui ferait:
{line_up} - {line_discount_percent} = {line_up_discount} qui nous afficherait le prix unitaire remisé.

Merci tout de même :)
Dernière édition: il y a 1 an 9 mois par ITMang.
L'administrateur a désactivé l'accès en écriture pour le public.

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96701

  • dolibarr95
  • Portrait de dolibarr95
  • Hors ligne
  • Admin
  • Messages : 1312
  • Remerciements reçus 196
  • Karma: 27
;)
Il faut alors proposer sur github un truc du genre je pense.
line_up_discount ='';
if($line->remise_percent>0)
{
line_up_discount =price2num( ($line->subprice*($line->remise_percent/100))+$line->subprice);
}
L'administrateur a désactivé l'accès en écriture pour le public.

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96742

  • ITMang
  • Portrait de ITMang
  • Hors ligne
  • Fresh Boarder
  • Messages : 17
  • Remerciements reçus 2
  • Karma: 0
Merci pour votre réponse, cela devient un peu trop "technique" pour moi .. :)
L'administrateur a désactivé l'accès en écriture pour le public.

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96743

  • dolibarr95
  • Portrait de dolibarr95
  • Hors ligne
  • Admin
  • Messages : 1312
  • Remerciements reçus 196
  • Karma: 27
Au pire :whistle: directement dans votre fichier (dont vous faites une sauvegarde avant :evil: ) :
htdocs/core/class/commondocgenerator.class.php
ajoutez dans la fonction :
get_substitutionarray_lines($line,$outputlangs)
après la ligne:
global $conf;
ajoutez :
$line_up_discount = '';//valeur par défaut

if($line->subprice>0 && $line->remise_percent>0)
{//si prix et remise existent
	$line_up_discount = price2num( ($line->subprice*($line->remise_percent/100))+$line->subprice);
}

puis dans le tableau:
$resarray= array(...);
ajouter la ligne:
'line_up_discount'=>$line_up_discount,

Ca devrait le faire dites moi si ca fonctionne pour vous (j'ai pas testé)
Dernière édition: il y a 1 an 9 mois par dolibarr95.
L'administrateur a désactivé l'accès en écriture pour le public.
Cet utilisateur a été remercié pour son message par: ITMang

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96748

  • ITMang
  • Portrait de ITMang
  • Hors ligne
  • Fresh Boarder
  • Messages : 17
  • Remerciements reçus 2
  • Karma: 0
Merci pour votre aide,
Cela fonctionne pour le tag, en revanche, il fait le PU + 30% et non PU -30%
Il fait 173.73 + 30% qui donne 225.849 au tag et non 173.73 - 30% qui devrait afficher 121.611.

Est-il également possible d'arrêter à 2 décimales ? Avec un arrondi au supérieur ? Exemple pour 121.611 = 121.61, et pour 121.619 = 121.62 ?

Merci d'avance :)
L'administrateur a désactivé l'accès en écriture pour le public.

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96749

  • dolibarr95
  • Portrait de dolibarr95
  • Hors ligne
  • Admin
  • Messages : 1312
  • Remerciements reçus 196
  • Karma: 27
Il faut alors remplacer par :
 $line_up_discount = price( $line->subprice -  ( $line->subprice * ( $line->remise_percent/100 ) ) );
si c'est pas bon au niveau de l'arrondi essaie alors :
 $line_up_discount = round($line->subprice -  ($line->subprice * ( $line->remise_percent/100 )), 2);
Dis moi si c'est bon ;)
Dernière édition: il y a 1 an 9 mois par dolibarr95.
L'administrateur a désactivé l'accès en écriture pour le public.
Cet utilisateur a été remercié pour son message par: ITMang

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96751

  • ITMang
  • Portrait de ITMang
  • Hors ligne
  • Fresh Boarder
  • Messages : 17
  • Remerciements reçus 2
  • Karma: 0
Merci à vous :)
Le 2e code fait son travail :) Je verrai sur un autre devis si l'arrondi supérieur se fait bien :)

Encore merci :)
L'administrateur a désactivé l'accès en écriture pour le public.

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96752

  • dolibarr95
  • Portrait de dolibarr95
  • Hors ligne
  • Admin
  • Messages : 1312
  • Remerciements reçus 196
  • Karma: 27
Chouette B)
  1. la première ligne correspond à la fonction price() de Dolibarr
  2. la deuxième correspond à la fonction php round() qui l'arrondi à 2 chiffre après la virgule
N'oubliez pas de marquer le sujet comme résolu dans le titre: [Résolu]

:)
L'administrateur a désactivé l'accès en écriture pour le public.

Template ODT - Montant Prix unitaire remisé il y a 1 an 9 mois #96754

  • ITMang
  • Portrait de ITMang
  • Hors ligne
  • Fresh Boarder
  • Messages : 17
  • Remerciements reçus 2
  • Karma: 0
Voilà qui est fait :)
Bonne journée à vous
L'administrateur a désactivé l'accès en écriture pour le public.

[Résolu] Temp. ODT - Montant Prix Unitaire remisé il y a 1 an 1 mois #105378

  • jbonlinea
  • Portrait de jbonlinea
  • Hors ligne
  • Junior Boarder
  • Messages : 25
  • Remerciements reçus 2
  • Karma: 0
Bonjour,

Je déterre un peu le topic avec une question un peu simplette.

Tout d'abord pouvez vous détailler la démarche ?
Je comprends bien ce qu'il faut faire dans le fichier htdocs/core/class/commondocgenerator.class.php, mais comment faire en sort que ça se répercute quelque part ? Il faut bien modifier un template ailleurs non ? la vous n'avez fait qu'ajouter la possibilité de faire ce calcul mais vous ne l'affichez pas ?!

En fait je travaille plutôt sur les template pdf, et je vousdrai faire exactement ce qui est proposé dans ce post, mais sur le template azur.

Est-ce que vous avez des recommandation ?
Merci d'avance
L'administrateur a désactivé l'accès en écriture pour le public.

[Résolu] Temp. ODT - Montant Prix Unitaire remisé il y a 1 an 1 mois #105394

  • ITMang
  • Portrait de ITMang
  • Hors ligne
  • Fresh Boarder
  • Messages : 17
  • Remerciements reçus 2
  • Karma: 0
jbonlinea écrit:
Bonjour,

Je déterre un peu le topic avec une question un peu simplette.

Tout d'abord pouvez vous détailler la démarche ?
Je comprends bien ce qu'il faut faire dans le fichier htdocs/core/class/commondocgenerator.class.php, mais comment faire en sort que ça se répercute quelque part ? Il faut bien modifier un template ailleurs non ? la vous n'avez fait qu'ajouter la possibilité de faire ce calcul mais vous ne l'affichez pas ?!

En fait je travaille plutôt sur les template pdf, et je vousdrai faire exactement ce qui est proposé dans ce post, mais sur le template azur.

Est-ce que vous avez des recommandation ?
Merci d'avance

Bonjour,

Pour ce qui est des templates PDF je ne suis pas "expert" en la matière.
En revanche pour les ODT et pour répondre à votre question "la vous n'avez fait qu'ajouter la possibilité de faire ce calcul mais vous ne l'affichez pas ?!"

En effet, c'est ce que le code sus-cité effectue comme manœuvre, il ne reste plus qu'à l'importer dans le fichier ODT comme n'importe quel autre tag, [line_up_discount] dans la case que l'on souhaite.

Cordialement.
Dernière édition: il y a 1 an 1 mois par ITMang.
L'administrateur a désactivé l'accès en écriture pour le public.