brotherton-erpnext/erpnext/templates/pages/wishlist.py

71 lines
1.9 KiB
Python

# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
import frappe
from erpnext.e_commerce.doctype.e_commerce_settings.e_commerce_settings import (
get_shopping_cart_settings,
)
from erpnext.e_commerce.shopping_cart.cart import _set_price_list
from erpnext.utilities.product import get_price
def get_context(context):
is_guest = frappe.session.user == "Guest"
settings = get_shopping_cart_settings()
items = get_wishlist_items() if not is_guest else []
selling_price_list = _set_price_list(settings) if not is_guest else None
items = set_stock_price_details(items, settings, selling_price_list)
context.body_class = "product-page"
context.items = items
context.settings = settings
context.no_cache = 1
def get_stock_availability(item_code, warehouse):
stock_qty = frappe.utils.flt(
frappe.db.get_value("Bin",
{
"item_code": item_code,
"warehouse": warehouse
},
"actual_qty")
)
return bool(stock_qty)
def get_wishlist_items():
if not frappe.db.exists("Wishlist", frappe.session.user):
return []
return frappe.db.get_all(
"Wishlist Item",
filters={
"parent": frappe.session.user
},
fields=[
"web_item_name", "item_code", "item_name",
"website_item", "warehouse",
"image", "item_group", "route"
])
def set_stock_price_details(items, settings, selling_price_list):
for item in items:
if settings.show_stock_availability:
item.available = get_stock_availability(item.item_code, item.get("warehouse"))
price_details = get_price(
item.item_code,
selling_price_list,
settings.default_customer_group,
settings.company
)
if price_details:
item.formatted_price = price_details.get('formatted_price')
item.formatted_mrp = price_details.get('formatted_mrp')
if item.formatted_mrp:
item.discount = price_details.get('formatted_discount_percent') or \
price_details.get('formatted_discount_rate')
return items