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))
},
})