Mettre des articles en option ou quantité 0

Bonjour,
Sur mes devis, je souhaite proposer des articles en options. c’est Ă  dires qu’ils apparaissent sans ĂȘtre pris dans le calcul du total.

Comment puis-je le faire ?

  • ajout d’une case option ?
  • mettre Ă  zĂ©ro la quantitĂ© ? j’ai un message de non autorisĂ©.

Je veux aussi mettre des prestations gratuites, mais la vĂ©rification des prix me l’interdit. Comment faire pour avoir cette vĂ©rification et mettre des articles Ă  0 ?

Merci pour ces infos

Bonjour @oryxr,

L’ajout d’une ligne avec un tarif Ă  0 passera forcĂ©ment par un tarif Ă  0 (ou un champ de texte libre, mais je ne pense que ce soit ce que vous cherchez).

Pour la vĂ©rification des prix, vous parlez bien de l’option “Valider le prix de vente de l’article par rapport Ă  son prix d’achat ou son taux de valorisation” dans les paramĂštres des ventes ?

Si cette option est activĂ©e, il n’y a que deux possibilitĂ©s pour que le systĂšme n’applique pas ce contrĂŽle sur une ligne:

  1. qu’il n’y ait pas de code article: C’est possible dans les factures, mais pas encore dans les devis, mĂȘme si c’est Ă  l’étude cĂŽtĂ© ERPNext: fix(selling): allow arbitrary quotation lines by casesolved-co-uk · Pull Request #33215 · frappe/erpnext · GitHub
  2. avoir la case “Est un article gratuit” cochĂ©; Mais cette case ne peut ĂȘtre cochĂ©e que si l’article a Ă©tĂ© ajoutĂ© automatiquement via une rĂšgle de prix

Donc malheureusement, Ă  ce stade je n’ai pas d’autre option Ă  vous proposer que de dĂ©sactiver la validation du prix si vous souhaitez mettre des articles gratuits. Mais ça devrait changer bientĂŽt si la proposition est acceptĂ©e cĂŽtĂ© ERPNext, sinon on pourra rĂ©flĂ©chir Ă  une solution cĂŽtĂ© Dokos.

Pour les options par contre, je ne vois pas trop d’autre solution que de passer par la description ou un tableau additionnel via une personnalisation si ça ne doit pas ĂȘtre pris en compte dans le total.
Peut-ĂȘtre qu’une solution intermĂ©diaire serait d’afficher des sections avec des sous-totaux en jouant sur le format d’impression.

Voici un exemple de champ HTML personnalisĂ© pour l’affichage des lignes du devis dans des sections en fonction d’un champ personnalisĂ© categorie. Ca peut vous servir de base:

<div data-fieldname="items" data-fieldtype="Table">
		<table class="table table-bordered table-condensed">
			<thead>
				<tr class="table-header">
				    <th class="text-left;" data-fieldname="items" data-fieldtype="Table" style="width: 40%;">
                        {{ _("LIBÉLLÉ") }}
                    </th>
                    <th class="text-left;" data-fieldname="items" data-fieldtype="Table" style="width: 10%;">
                        {{ _("QUANT") }}
                    </th>
                    <th class="text-left;" data-fieldname="items" data-fieldtype="Table" style="width: 20%;">
                        {{ _("PUHT") }}
                    </th>
                    <th class="text-left;" data-fieldname="items" data-fieldtype="Table" style="width: 20%;">
                        {{ _("TOTAL HT") }}
                    </th>
                    <th class="text-left;" data-fieldname="items" data-fieldtype="Table" style="width: 10%;">
                        {{ _("TVA") }}
                    </th>
				</tr>
			</thead>
			<tbody>
			    {% set ns = namespace(lastTitle=None, lastAmount=0.0, totalAmount=0.0) %}
				{% for d in doc.items %}
				{% if d.categorie and d.categorie != ns.lastTitle %}
				{% set ns.lastTitle = d.categorie %}
				<tr><td></td></tr>
				<tr>
					<td class="bold print-title" colspan="5">{{ d.categorie or "" }}</td>
				</tr>
				{% endif %}
				{% set ns.lastAmount = ns.lastAmount + frappe.utils.flt(d.amount) %}
				{% set ns.totalAmount = ns.totalAmount + frappe.utils.flt(d.amount) %}
				<tr>
					<td>
					    <div class="value">{{ frappe.format(d.item_name) }}</div>
					    <div class="text-muted small">{{ frappe.format(d.description) }}</div>
					</td>
					<td>
					    <div class="value">{{ frappe.format(d.qty) }}</div>
					</td>
					<td>
					    <div class="value">{{ frappe.format(d.rate, df={"fieldtype": "Currency"}, doc=doc, currency=doc.currency) }}</div>
					</td>
					<td>
					    <div class="value">{{ frappe.format(d.amount, df={"fieldtype": "Currency"}, doc=doc, currency=doc.currency) }}</div>
					</td>
					<td>
					    <div class="value">{{ frappe.format(d.tax_rate) }} %</div>
					</td>
				</tr>
				{% if (loop.index == loop.length) or (loop.index < loop.length and doc.items[loop.index].categorie and doc.items[loop.index].categorie != d.categorie) %}
				<tr>
				    <td colspan="3">
			            <div><strong>Sous-Total HT</strong></div>
				    </td>
				    <td>
			            <div class="value bold"><strong>{{ frappe.utils.fmt_money(ns.lastAmount, currency=doc.currency) }}</strong></div>
				    </td>
				</tr>
				{% set ns.lastAmount = 0.0 %}
				{% endif %}
				{% endfor %}
				{%- if doc.discount_amount -%}
				<tr><td></td></tr>
				<tr>
				    <td colspan="3">
			            <div><strong>Total HT</strong></div>
				    </td>
				    <td>
			            <div class="value"><strong>{{ frappe.utils.fmt_money(ns.totalAmount, currency=doc.currency) }}</strong></div>
				    </td>
				</tr>
				<tr>
					<td class="bold print-title" colspan="3">{{ doc.discount_description or "Remise Exceptionnelle" }}</td>
				    <td class="bold print-title" colspan="2">{{ doc.get_formatted("discount_amount", doc) }}</td>
				</tr>
				{% endif %}
			</tbody>
		</table>
	</div>

Bon week-end

Bonjour,

Je rebondis sur ton message Charles-Henri !

Pouvoir avoir des sous-totaux serait absolument magnifique et amĂšnerait des rĂ©ponses Ă  beaucoup d’autres questions que les options (en plus d’apporter une solution Ă©lĂ©gantes aux options aussi) ! Pour des devis Ă  tiroir, des diffĂ©rentiations par coĂ»t unique / rĂ©current (mise en place d’un outil + maintenance annuelle par exemple), etc.

Je note l’astuce des catĂ©gories proposĂ©es, je vais voir si ça peut nous suffire, mais une intĂ©gration par dĂ©faut serait vraiment super ! Par exemple via une ligne (comme un article) du type “nouvelle section”, oĂč l’intitulĂ© serait le titre de la section, avec des sous-totaux A, B(, etc.), puis le total habituel, du coup A+B(+
) !

Merci en tout cas pour tout ça :slight_smile:

2 « J'aime »

Bonjour @chdecultot, y a-t-il eu des avancé sur les sous-totaux ?

J’ai vu maintenant que l’on pouvais crĂ©er des lignes dans le devis sans crĂ©er des articles dans la base, c’est dĂ©jĂ  top.

Merci d’avance pour le retour. Je vais regarder si je peux faire un script qui dĂ©tecte la ligne de titre (1 case Ă  cocher sous total) et faire la somme des produits qui la suive jusqu’au sous-total d’aprĂšs.
Calcul fait dans le model jinja.

Bonjour @oryxr,

Nous n’avons pas encore eu le temps de travailler sur ce sujet.
Par contre, nous avons introduit il y a quelques jours la possibilité de mettre des articles alternatifs (options) développé par ERPNext: feat: Support for Alternative Items in Quotation by marination · Pull Request #33874 · frappe/erpnext · GitHub

Je n’ai pas encore eu le temps de faire la documentation correspondante, mais c’est dĂ©jĂ  disponible dans Dokos pour ceux qui veulent essayer.

Bonne journée

Bonjour,

je déterre ce post car je pense que cela fait sens de venir poser ma question ici.

Depuis la création de ce post, est apparue la possibilité de mettre un article en option, en cochant la dite case dans le devis :

Le prix de l’article n’est alors pas pris en compte etc. C’est parfait.

En revanche, ce n’est vraiment pas trùs lisible sur le devis PDF. En effet, de base tout parait normal si ce n’est que le total ne correspond pas aux lignes du devis.
J’ai essayĂ© de modifiĂ© le format d’impression en ajoutant le champ “est une option” dans les colonnes du tableau d’articles pour faire apparaitre le fait que c’est une option, mais cela n’est toujours pas hyper convaincant, voir ci-dessous.

j’aurais aimĂ© pouvoir modifier l’ordre des lignes du tableau pour pouvoir avoir quelque chose comme ceci :

(Est une option)

Matériau

Bois encore plus tout beau

Et que le Montant soit entre parenthÚses également.




Que ça ressemble Ă  un article en option comme on y est habituĂ©s dans tous nos devis de fournisseurs quoi


Une piste ? :blush:

Merci !

Bonjour Nathan,

Avec l’éditeur de format d’impression basique, il faut que l’affichage voulu soit prĂ©vu dans le code de Dokos pour que ça s’affiche comme on le souhaite “comme par magie”. Sinon il faut passer par du HTML.

Je suis d’accord avec ta remarque, il faudrait qu’on propose un affichage standard pour ce genre de cas.

Peux-tu ouvrir un ticket sur Gitlab pour demander une Ă©volution en faisant une proposition d’affichage qui te semble pertinent ? Ca nous aiderait Ă  valider la fonctionnalitĂ© et Ă  dĂ©clencher des dĂ©veloppements.

Merci,

Charles-Henri

Voilà qui est fait : [feat] Improve visibility of optional items in PDF quotes (#624) · Issues · Dokos / Dokos · GitLab

2 « J'aime »