VbzCart/docs/tables/shop cart: Difference between revisions

From Woozle Writes Code
< VbzCart‎ | docs‎ | tables
Jump to navigation Jump to search
imported>Woozle
m (status::active)
imported>Woozle
(FieldData)
Line 16: Line 16:
** each {{vbzcart|table|shop_cart}} has zero or one {{vbzcart|table|core_custs}} record (it's only zero until the order is placed, but ID_Cust isn't necessarily filled in when this happens)
** each {{vbzcart|table|shop_cart}} has zero or one {{vbzcart|table|core_custs}} record (it's only zero until the order is placed, but ID_Cust isn't necessarily filled in when this happens)
** each {{vbzcart|table|core_custs}} record has one or more {{vbzcart|table|shop_cart}}s and one or more {{vbzcart|table|core_orders}}
** each {{vbzcart|table|core_custs}} record has one or more {{vbzcart|table|shop_cart}}s and one or more {{vbzcart|table|core_orders}}
* '''Fields''':
===Fields===
** '''ID_Cust''' is for future use when customers can log in to retrieve their personal data before checking out
* '''ID_Cust''' is for future use when customers can log in to retrieve their personal data before checking out
** '''ID_Sess''' is the ID of the session ({{vbzcart|table|shop_session}}) where the cart was created & accessed
* '''ID_Sess''' is the ID of the session ({{vbzcart|table|shop_session}}) where the cart was created & accessed
*** Different sessions cannot access the same cart. (Is there a good reason for this, or does it just ''sound'' good?)
** Different sessions cannot access the same cart. (Is there a good reason for this, or does it just ''sound'' good?)
*** One session may have multiple carts.
** One session may have multiple carts.
** '''ShipZone''' represents the string-code for the shipping zone, which is used to determine shipping cost
* '''ShipZone''' represents the string-code for the shipping zone, which is used to determine shipping cost
*** currently, this is hard-coded to apply a different multiplier for each zone - {US shipping cost}x{zone multiplier}
** currently, this is hard-coded to apply a different multiplier for each zone - {US shipping cost}x{zone multiplier}
* '''History''':
* '''FieldData''' is a [http://php.net/serialize serialize]d array of the data formerly stored in {{l/vc/table|shop_cart_data}}. This is an experimental field which will become permanent if it works out.
** '''2009-06-16''' Changing names to singular (tables not in use yet, so this is the time to do it)
===History===
** '''2009-07-10''' removing '''ID_Session''': each session ties to a cart, not vice-versa
* '''2009-06-16''' Changing names to singular (tables not in use yet, so this is the time to do it)
*** ...except that we still have ID_Sess
* '''2009-07-10''' removing '''ID_Session''': each session ties to a cart, not vice-versa
** '''2009-07-16''' added '''ShipZone''' field
** ...except that we still have ID_Sess
** '''2009-07-18''' added '''ID_Sess''' field (field documentation seems to think it was already there...)
* '''2009-07-16''' added '''ShipZone''' field
** '''2011-03-27''' added '''WhenVoided''' field so we never zero out ID_Cart
* '''2009-07-18''' added '''ID_Sess''' field (field documentation seems to think it was already there...)
* '''2011-03-27''' added '''WhenVoided''' field so we never zero out ID_Cart
* '''2016-03-07''' added '''FieldData''' field
==SQL==
==SQL==
<mysql>DROP TABLE IF EXISTS `shop_cart`;
<mysql>DROP TABLE IF EXISTS `shop_cart`;
Line 43: Line 45:
   `ID_Cust`    INT        DEFAULT NULL COMMENT "core_custs.ID of customer for this order",
   `ID_Cust`    INT        DEFAULT NULL COMMENT "core_custs.ID of customer for this order",
   `ShipZone`    VARCHAR(3) DEFAULT NULL COMMENT "shipping cost zone",
   `ShipZone`    VARCHAR(3) DEFAULT NULL COMMENT "shipping cost zone",
  `FieldData`  BLOB      DEFAULT NULL COMMENT "other values associated with the cart (serialized)",
   PRIMARY KEY(`ID`)
   PRIMARY KEY(`ID`)
  ) ENGINE = MYISAM;</mysql>
  ) ENGINE = INNODB;</mysql>

Revision as of 19:03, 8 March 2016

<hide> thing type::table design [[project::VbzCart]] subsystem::shopping status::active </hide>

About

Fields

  • ID_Cust is for future use when customers can log in to retrieve their personal data before checking out
  • ID_Sess is the ID of the session (Template:Vbzcart) where the cart was created & accessed
    • Different sessions cannot access the same cart. (Is there a good reason for this, or does it just sound good?)
    • One session may have multiple carts.
  • ShipZone represents the string-code for the shipping zone, which is used to determine shipping cost
    • currently, this is hard-coded to apply a different multiplier for each zone - {US shipping cost}x{zone multiplier}
  • FieldData is a serialized array of the data formerly stored in Template:L/vc/table. This is an experimental field which will become permanent if it works out.

History

  • 2009-06-16 Changing names to singular (tables not in use yet, so this is the time to do it)
  • 2009-07-10 removing ID_Session: each session ties to a cart, not vice-versa
    • ...except that we still have ID_Sess
  • 2009-07-16 added ShipZone field
  • 2009-07-18 added ID_Sess field (field documentation seems to think it was already there...)
  • 2011-03-27 added WhenVoided field so we never zero out ID_Cart
  • 2016-03-07 added FieldData field

SQL

<mysql>DROP TABLE IF EXISTS `shop_cart`; CREATE TABLE `shop_cart` (

 `ID`          INT            NOT NULL AUTO_INCREMENT,
 `WhenCreated` DATETIME       NOT NULL COMMENT "when the cart was first created",
 `WhenViewed`  DATETIME   DEFAULT NULL COMMENT "when the cart's contents were last displayed by the customer",
 `WhenUpdated` DATETIME   DEFAULT NULL COMMENT "when the cart's contents were last changed",
 `WhenOrdered` DATETIME   DEFAULT NULL COMMENT "when the cart's contents were transferred to an order",
 `WhenVoided`  DATETIME   DEFAULT NULL COMMENT "when this cart was discarded",
 `ID_Sess`     INT            NOT NULL COMMENT "shop_session.ID which used this cart",
 `ID_Order`    INT        DEFAULT NULL COMMENT "core_orders.ID of order into which cart was transferred",
 `ID_Cust`     INT        DEFAULT NULL COMMENT "core_custs.ID of customer for this order",
 `ShipZone`    VARCHAR(3) DEFAULT NULL COMMENT "shipping cost zone",
 `FieldData`   BLOB       DEFAULT NULL COMMENT "other values associated with the cart (serialized)",
  PRIMARY KEY(`ID`)
) ENGINE = INNODB;</mysql>