[ ] Remove Territory table You will have to write a patch based on country match
[ ] Add Country table
[ ] Button to fetch all Items with show_in_website checked
[ ] Validate that all Items with show_in_website checked are added in this Price List
[ ] If show_in_website is checked for a new Item, validate that the Price Lists for Shopping Cart should have this Item's price
Warehouses to determine availability of stock
[ ] Add a checkbox Use for Shopping Cart
Country to determine which Price List to use
[ ] Use Location API if enabled in browser / mobile
[ ] Use frappe.session.get("session_country"). This is based on GeoIP database and might not be accurate
If a Price List does not exist for that Country, show "This product is not available in your Country". Show a contact us button.
On clicking Add to Cart / Update Cart / Remove Item
[ ] If user is not logged in, ask them to signup/login
[ ] Once logged in, the user should be redirected back to the Item page and the Item should get added to the cart
[ ] Create a Quotation and add or Update Item
[ ] Does a Customer record exist with the current logged in User as the Contact?
If not
[ ] Does a Lead record exist with the current logged in User as the email id?
[ ] If not, create a Lead using the current user's email id
[ ] Convert that Lead to Customer
[ ] Add or Update Item and fetch Item Price (TBD: also fetch applicable Pricing Rule?)
[ ] If Billing Address is already specified, use Tax Rule to determine correct Tax Template (only those that are checked as 'Use for Shopping Cart') and apply Taxes
[ ] If Shipping Address is already specified, use Shipping Rule to add/update Shipping Charges in the Tax table
[ ] Save
If Item is already added to Cart
[ ] Determine this by searching for a Quotation where owner is currently logged in website user and that is of type "Shopping Cart" and status is Draft, get the latest one
[ ] Show Quantity box and Update button
Ability to discart a cart
Change status to "Quotation Lost"
Place Order
Submit Quotation and create Sales Order using mapper function that exists, and submit that Sales Order
Other things to consider
[ ] Company, Customer Group, Naming Series are determined based on Shopping Cart Settings
[ ] Remove Default Territory field from Shopping Cart Settings
[ ] Address Selector
[ ] User Profile editor - Company Name, Customer Name, Phone, Email Address goes into Customer / Contact record
[ ] Open Cart Item Count
[ ] Always check if Shopping Cart is enabled in Add To Cart / Update Cart / Show Cart in menu
[ ] Add City, State, Country in Shipping Rule and make its selection similar to Tax Rule. However in Tax Rule, one Tax Rule is selected, but for Shipping Rule, the user is given the option to select a Shipping out of available Shipping Rules (3-5 Business Days, 10 Business Days, Courier, Post, etc.)
Gaps:
[ ] Image Scaling
[ ] Variant Selection
[ ] Variant Item Specifications in a table
[ ] Filters using specifications
[ ] Payment Gateway
[ ] Taxes using rule engine
[ ] Shipping based on weight and volume
[ ] List view / Grid view (toggle or configuration?)
You will have to write a patch based on country match
show_in_website
checkedshow_in_website
checked are added in this Price Listshow_in_website
is checked for a new Item, validate that the Price Lists for Shopping Cart should have this Item's pricefrappe.session.get("session_country")
. This is based on GeoIP database and might not be accurateowner
is currently logged in website user and that is of type "Shopping Cart" and status is Draft, get the latest oneGaps: