You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

introduction_to_ecommerce.rst 3.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. ================
  2. eCommerce domain
  3. ================
  4. When building an e-commerce site, there are several components whose
  5. implementation is strongly domain-specific. That is, every site will have
  6. different requirements for how such a component should operate. As such, these components
  7. cannot easily be modelled using a generic system - no configurable system will be able
  8. to accurately capture all the domain-specific behaviour required.
  9. The design philosophy of oscar is to not make a decision for you here, but to
  10. provide the environment where any domain logic can be implemented, no matter
  11. how complex. This is achieved through the use of subclassable objects that can
  12. be tailored to your domain.
  13. This document lists the components which will require implementation according to the
  14. domain:
  15. Taxonomy
  16. --------
  17. How are products organised within the site? A common pattern is to have a single
  18. "category tree" where each product belongs to one category which sits within a tree structure
  19. of other categories?
  20. However, there are lots of other options such as having several separate taxonomy trees (eg split by
  21. brand, by theme, by product type).
  22. * Can a product belong to more than one category?
  23. * Can a category sit in more than one place within the tree? (eg a "children's fiction" category
  24. might sit beneath "children's books" and "fiction").
  25. Payment flow
  26. ------------
  27. * Will the customer be debited at point of checkout, or when the items are dispatched?
  28. * If charging after checkout, when are shipping charges collected?
  29. * What happens if an order is cancelled after partial payment?
  30. Payment sources
  31. ---------------
  32. How are customers going to pay for orders?
  33. Will it be a simple, single-payment source solution such as paying by bankcard or using
  34. Google checkout? Or something more complicated such as allowing payment to be split across
  35. multiple payment sources such as a bankcard and a giftcard?
  36. More commonly, multiple payment sources can be used - such as:
  37. * Bankcard
  38. * Google checkout
  39. * PayPal
  40. * Business account
  41. * Managed budget
  42. * No upfront payment but send invoices later
  43. * Giftcard
  44. The checkout app within django-oscar is suitable flexible that all of these methods (and in
  45. any combination) is supported. However, you will need to implement the logic for your domain
  46. by subclassing the relevant view/util classes.
  47. Domain logic is often required to:
  48. * Determine which sources are available to an order;
  49. * Determine if payment can be split across sources and in which combinations;
  50. * Determine the order in which to take payment
  51. Stock logic
  52. -----------
  53. * Does the site support pre-orders (ordering before the product is available to be shipped) or
  54. back-orders (ordering when the product does not have stock)?
  55. Availability
  56. ------------
  57. * Based on the stock information from a fulfilment partner, what messaging should be
  58. displayed on the site? Further, should
  59. Shipping
  60. --------
  61. Every client has a different requirement for shipping charges. At its core, shipping charges
  62. normall depend on the following:
  63. * Items in basket
  64. * Shipping method chosen (e.g., standard or courier delivery)
  65. * Dispatch method chosen (e.g., ship together or ship separately)
  66. * Shipping address (e.g., which country it is in)
  67. * Basket vouchers (e.g., a voucher which gives free delivery)
  68. Common questions:
  69. * Are items shipping together as one batch, or separately?
  70. Checkout
  71. --------