Desactivation adresse de livraison

Bonjour,

Depuis la passage a la version 2.17.3, ma custom app qui me permet de désactiver l’obligation d’avoir une adresse de livraison pour une réservation ne fonctionne plus.

Dans le fichier cart.py de mon :slight_smile:
def place_order():
quotation = _get_cart_quotation()
cart_settings = frappe.db.get_value(“Shopping Cart Settings”, None,
[“company”, “allow_items_not_in_stock”], as_dict=1)
quotation.company = cart_settings.company

quotation.flags.ignore_permissions = True
quotation.submit()

if quotation.quotation_to == 'Lead' and quotation.party_name:
	# company used to create customer accounts
	frappe.defaults.set_user_default("company", quotation.company)

#if not (quotation.shipping_address_name or quotation.customer_address):
#	frappe.throw(_("Set Shipping Address or Billing Address"))

from erpnext.selling.doctype.quotation.quotation import _make_sales_order
sales_order = frappe.get_doc(_make_sales_order(quotation.name, ignore_permissions=True))
sales_order.payment_schedule = []

if not cint(cart_settings.allow_items_not_in_stock):
	for item in sales_order.get("items"):
		item.reserved_warehouse, is_stock_item = frappe.db.get_value("Item",
			item.item_code, ["website_warehouse", "is_stock_item"])

		if is_stock_item:
			item_stock = get_qty_in_stock(item.item_code, "website_warehouse")
			if not cint(item_stock.in_stock):
				throw(_("{1} Not in Stock").format(item.item_code))
			if item.qty > item_stock.stock_qty[0][0]:
				throw(_("Only {0} in Stock for item {1}").format(item_stock.stock_qty[0][0], item.item_code))

if sales_order.grand_total == 0.0:
	sales_order.per_billed = 100.0

sales_order.flags.ignore_permissions = True
sales_order.insert()
sales_order.submit()

if hasattr(frappe.local, "cookie_manager"):
	frappe.local.cookie_manager.delete_cookie("cart_count")

return sales_order.name

Et dans le hooks.py

fixtures = [“Custom Field”]
override_whitelisted_methods = {
‘erpnext.shopping_cart.cart.place_order’: ‘connecthe.shopping_cart.cart.place_order’
}

Merci de votre aide s’il vous plait

Bonjour @fmarch,

On a ajouté une autre vérification pour afficher un popup de remplissage d’adresse au lieu du message d’erreur qu’il y avait avant.
Ce popup s’ouvre en fonction du résultat de la méthode: erpnext.shopping_cart.cart.get_customer_address

Vous pouvez donc créer une méthode en whitelist qui écrase celle-ci (comme ce que vous avec fait pour place_order) et renvoyer un booléen True

@frappe.whitelist()
def get_customer_address():
    return True

Ca devrait régler le problème j’imagine (mais ne n’ai pas testé…)

Bonjour,

Merci pour votre réponse, j’ai testé mais cela ne fonctionne pas j’ai toujours la mire qui demande une nouvelle adresse.

hooks.py :
override_whitelisted_methods = {
‘erpnext.shopping_cart.cart.get_customer_address’: ‘connecthe.shopping_cart.cart.get_customer_address’
}

cart.py :
@frappe.whitelist()
def get_customer_address():
# This method is true if an address is already available or false if no address has been entered by the customer yet
return True

Bonjour @fmarch,

Il faut laisser votre personnalisation précédente et ajouter cette nouvelle méthode en plus.
La logique initiale n’a pas changé, on a juste ajouté une vérification supplémentaire.