Calcul d'ensemble de produits

Bonjour, après la dernière mise à jour la case de calcul d’ensemble de prix du prix de vente est passé dans le doctype ensemble de prix. Mais même si la case est coché dokos ne calcul plus les ensemble de prix. J’ai essayé sur la démo et le calcul se fait bien. La seul diff avec la démo est que j’utilise l’application chantier. Y a t il un impact?

S’il y a encore des développement pour finaliser la modif des ensembles de produits, comment réactiver la case dans les paramètres de ventes car nous nous en servons tout les jours et c’est assez bloquant.

J’ai certaines suggestion supplémentaires sur les ensemble de produits:

  • pouvoir activer ou dĂ©sactiver le calcul des ensembles de produits directement au sein des devis, commandes ou factures.
  • Si on bascule une commande en facture ou que l’on fait un dupliquer : les prix sont recalculer dans la facture, ce qui nous oblige Ă  enlever le calcul des ensemble de prix et Ă  faire la copie, puis Ă  la rĂ©activer (ce qui devient plus compliquĂ© si on doit passer par chaque ensemble) D’ou l’intĂ©rĂŞt de pouvoir activer ou dĂ©sactiver ce calcul au niveau de chaque document. Par exemple quand on duplique un devis, il est fait avec le calcul dĂ©sactivĂ©, comme les prix sont identiques et on peut activer le calcul pour mettre Ă  jour le devis si l’on souhaite.

Merci pour votre retour

Bonjour @oryxr,

Peux-tu nous dire quelle version de l’application « Construction Â» tu utilises s’il te plait ?

Je viens de faire un test sur un site avec l’application installée et ça semble fonctionner correctement. As-tu des personnalisations ?
Peux-tu vérifier à nouveau que la case est bien cochée dans l’ensemble de produits concerné ?

@corentin est en train de travailler à l’amélioration des Ensembles de produits:

Il va également y avoir un dialogue de création d’ensembles directement dans les transactions (devis/commandes) et il sera possible d’activer/désactiver les options de calcul des prix dans chaque transaction. Ca devrait répondre à tes deux suggestions.

Bonne nouvelle pour le développement des ensemble de prix. Quand pensez vous avoir finalisé ces features ?
Sinon, ci-dessous les applis


Quand il y avait la mise à jour, la case était décoché. Du coup, elle est décoché dans tous les ensemble de produit, mais je l’ai bien coché.

J’ai aussi certaines personnalisation que j’avais commencé

L’objectif était de simplifier la création des ensembles en ayant le prix de revient directement dans l’ensemble.
Ci-dessous, les script associés

frappe.ui.form.on('Product Bundle', {
	custom_update_pr(frm, cdt, cdn) {
	    for (const item of frm.doc.items){
	        console.log(item)
	        frappe.call({
    			method: "erpnext.stock.get_item_details.get_item_details",
    			args: {
    				doc: frm.doc,
    				args: {
    					item_code: item.item_code,
    					barcode: item.barcode,
    					serial_no: item.serial_no,
    					batch_no: item.batch_no,
    					warehouse: item.warehouse,
    					supplier: item.custom_pl_selected_supplier,
    					currency: frm.doc.currency,
    					update_stock: 0,
    					conversion_rate: frm.doc.conversion_rate,
    					price_list: "Achat Standard",
    					price_list_currency: frm.doc.price_list_currency,
    					plc_conversion_rate: frm.doc.plc_conversion_rate,
    					company: "SAS St Jo Energies",
    					ignore_pricing_rule: frm.doc.ignore_pricing_rule,
    					doctype: frm.doc.doctype,
    					name: frm.doc.name,
    					project: item.project || frm.doc.project,
    					qty: item.qty || 1,
    					net_rate: item.rate,
    					stock_qty: item.stock_qty,
    					conversion_factor: item.conversion_factor,
    					weight_per_unit: item.weight_per_unit,
    					uom: item.uom,
    					weight_uom: item.weight_uom,
    					manufacturer: item.manufacturer,
    					stock_uom: item.stock_uom,
    					cost_center: item.cost_center,
    					tax_category: frm.doc.tax_category,
    					item_tax_template: item.item_tax_template,
    					child_docname: item.name,
    					transaction_type: "buying"
    				}
    			}
    		}).then(r => {
    		    console.log(r)
    		    if (flt(r.message.supplier_unit_cost_price)===0) {
    		            frappe.model.set_value(item.doctype, item.name, "nom_article", "**"+item.nom_article)
    		    }
    		    frappe.model.set_value(item.doctype, item.name, "custom_pl_selected_supplier", r.message.supplier)
    	        frappe.model.set_value(item.doctype, item.name, "custom_pl_supplier_price_list_rate", flt(r.message.supplier_unit_cost_price))
    	        frappe.model.set_value(item.doctype, item.name, "custom_pl_supplier_discount_percentage", flt(r.message.discount_percentage || 0))
    	        frappe.model.set_value(item.doctype, item.name, "custom_pl_unit_cost", flt(r.message.supplier_unit_cost_price  - (r.message.supplier_unit_cost_price * (r.message.discount_percentage || 0) / 100)))
    		})
	    }
	},
})

frappe.ui.form.on('Product Bundle Item', {
	custom_pl_selected_supplier(frm, cdt, cdn) {
	    const item = locals[cdt][cdn]

		frappe.call({
			method: "erpnext.stock.get_item_details.get_item_details",
			args: {
				doc: frm.doc,
				args: {
					item_code: item.item_code,
					barcode: item.barcode,
					serial_no: item.serial_no,
					batch_no: item.batch_no,
					warehouse: item.warehouse,
					supplier: item.custom_pl_selected_supplier,
					currency: frm.doc.currency,
					update_stock: 0,
					conversion_rate: frm.doc.conversion_rate,
					price_list: "Achat Standard",
					price_list_currency: frm.doc.price_list_currency,
					plc_conversion_rate: frm.doc.plc_conversion_rate,
					company: "SAS St Jo Energies",
					ignore_pricing_rule: frm.doc.ignore_pricing_rule,
					doctype: frm.doc.doctype,
					name: frm.doc.name,
					project: item.project || frm.doc.project,
					qty: item.qty || 1,
					net_rate: item.rate,
					stock_qty: item.stock_qty,
					conversion_factor: item.conversion_factor,
					weight_per_unit: item.weight_per_unit,
					uom: item.uom,
					weight_uom: item.weight_uom,
					manufacturer: item.manufacturer,
					stock_uom: item.stock_uom,
					cost_center: item.cost_center,
					tax_category: frm.doc.tax_category,
					item_tax_template: item.item_tax_template,
					child_docname: item.name,
					transaction_type: "buying"
				}
			}
		}).then(r => {
		    //console.log(r)
	        frappe.model.set_value(item.doctype, item.name, "custom_pl_supplier_price_list_rate", flt(r.message.supplier_unit_cost_price))
	        frappe.model.set_value(item.doctype, item.name, "custom_pl_supplier_discount_percentage", flt(r.message.discount_percentage || 0))
	        frappe.model.set_value(item.doctype, item.name, "custom_pl_unit_cost", flt(r.message.supplier_unit_cost_price  - (r.message.supplier_unit_cost_price * (r.message.discount_percentage || 0) / 100)))
		})
	},
    custom_pl_mo_cost(frm, cdt, cdn) {
        const item = locals[cdt][cdn]
        frappe.model.set_value(item.doctype, item.name, "custom_pl_pr_mo", flt(item.custom_pl_mo_cost*item.custom_pl_nb_hour_mo))
        frappe.model.set_value(item.doctype, item.name, "custom_pl_prt_item", flt(item.custom_pl_pr_mo + item.custom_pl_unit_cost))
    },
    custom_pl_nb_hour_mo(frm, cdt, cdn) {
        const item = locals[cdt][cdn]
        frappe.model.set_value(item.doctype, item.name, "custom_pl_pr_mo", flt(item.custom_pl_mo_cost*item.custom_pl_nb_hour_mo))
        frappe.model.set_value(item.doctype, item.name, "custom_pl_prt_item", flt(item.custom_pl_pr_mo + item.custom_pl_unit_cost))
    },
    custom_pl_unit_cost(frm, cdt, cdn) {
        const item = locals[cdt][cdn]
        frappe.model.set_value(item.doctype, item.name, "custom_pl_pr_mo", flt(item.custom_pl_mo_cost*item.custom_pl_nb_hour_mo))
        frappe.model.set_value(item.doctype, item.name, "custom_pl_prt_item", flt(item.custom_pl_pr_mo + item.custom_pl_unit_cost))
    },
	custom_pl_set_selling_rate(frm, cdt, cdn) {
    const item = locals[cdt][cdn]
    frappe.model.set_value(item.doctype, item.name, "rate", flt(item.custom_pl_prt_item*(100+item.custom_pl_margemaj)/100))
	},
})

Bonjour @oryxr,

Autant pour moi, @corentin a identifié un bug dans la logique d’ensembles de produits qui pourrait expliquer tes problèmes: fix: Fix editable bundle rates not checking correct field (!5423) · Merge requests · Dokos / Dokos · GitLab
Je publie un patch ce soir.

Il travaille justement sur tout ce volet. Je n’ai pas de date précise à te donner car c’est un gros chantier, mais c’est probablement une question de semaines.

Bon week-end

3 Likes