Difference between revisions of "VbzCart/tables/stk places"
Jump to navigation
Jump to search
(flag revisions) |
(rewrite of changes) |
||
Line 5: | Line 5: | ||
** '''2012-02-06''' added '''isEnabled''' field so cat_items stock can be calculated properly by query | ** '''2012-02-06''' added '''isEnabled''' field so cat_items stock can be calculated properly by query | ||
*** Also corrected type for isActive to match actual table | *** Also corrected type for isActive to match actual table | ||
− | ** '''2017-04-22''' Finally worked out | + | ** '''2017-04-22''' |
− | *** At first, I thought maybe the caching of "is this Place within a Place that has not been disabled?" was unnecessary, but it turns out the customer-facing calculations of what is currently in stock use queries which depend on the isEnabled field. So | + | *** Finally worked out better terminology. A Place is "active" if it is "enabled" AND is not contained by a Place that has been disabled (un-"enabled") -- but that's kind of the opposite of how we were using the terms. Rather than reverse them, I came up with something more specific and unambiguous. |
− | + | **** Renamed "isEnabled" to "isActiveSpace". | |
− | + | **** Renamed "isActive" to "isSelfActive". | |
− | **** Whenever a Place record is saved and isSelfActive has changed, the code should update | + | *** At first, I thought maybe the caching of "is this Place within a Place that has not been disabled?" was unnecessary, but it turns out the customer-facing calculations of what is currently in stock use queries which depend on the isEnabled field. So now this needs to happen: |
− | *** Also changing from MYISAM to InnoDB, because there's really no reason to use MYISAM. (apparently this was done earlier) | + | **** Whenever a Place record is saved and '''isSelfActive''' has changed, the code should update '''isActiveSpace''' for all contained Places. |
+ | *** Also changing from MYISAM to InnoDB, because there's really no reason to use MYISAM. (apparently this was done to the actual db earlier) | ||
* '''Fields''': | * '''Fields''': | ||
** '''isSelfActive''': if FALSE, then normal operations should ignore this place ''and all places inside it''. | ** '''isSelfActive''': if FALSE, then normal operations should ignore this place ''and all places inside it''. | ||
− | ** '''isActiveSpace''': (calculated | + | ** '''isActiveSpace''': (calculated) if TRUE, all parent-container Places are active (isSelfActive = TRUE) |
==SQL== | ==SQL== | ||
<mysql>CREATE TABLE `stk_places` ( | <mysql>CREATE TABLE `stk_places` ( |
Revision as of 11:18, 22 April 2017
About
- Purpose: places where bins may be found, organized hierarchically
- History:
- 2010-11-30 added isActive field, so we can hide all the old GA places
- 2012-02-06 added isEnabled field so cat_items stock can be calculated properly by query
- Also corrected type for isActive to match actual table
- 2017-04-22
- Finally worked out better terminology. A Place is "active" if it is "enabled" AND is not contained by a Place that has been disabled (un-"enabled") -- but that's kind of the opposite of how we were using the terms. Rather than reverse them, I came up with something more specific and unambiguous.
- Renamed "isEnabled" to "isActiveSpace".
- Renamed "isActive" to "isSelfActive".
- At first, I thought maybe the caching of "is this Place within a Place that has not been disabled?" was unnecessary, but it turns out the customer-facing calculations of what is currently in stock use queries which depend on the isEnabled field. So now this needs to happen:
- Whenever a Place record is saved and isSelfActive has changed, the code should update isActiveSpace for all contained Places.
- Also changing from MYISAM to InnoDB, because there's really no reason to use MYISAM. (apparently this was done to the actual db earlier)
- Finally worked out better terminology. A Place is "active" if it is "enabled" AND is not contained by a Place that has been disabled (un-"enabled") -- but that's kind of the opposite of how we were using the terms. Rather than reverse them, I came up with something more specific and unambiguous.
- Fields:
- isSelfActive: if FALSE, then normal operations should ignore this place and all places inside it.
- isActiveSpace: (calculated) if TRUE, all parent-container Places are active (isSelfActive = TRUE)
SQL
<mysql>CREATE TABLE `stk_places` (
`ID` INT NOT NULL AUTO_INCREMENT, `ID_Parent` INT COMMENT "self.ID of place in which this place is found; may be NULL", `isSelfActive` TINYINT(1) NOT NULL COMMENT "FALSE = don't normally show this place in lists or count its stock in totals", `isActiveSpace` TINYINT(1) NOT NULL COMMENT "(calculated field) TRUE = all ancestors are isSelfActive=TRUE", `Name` VARCHAR(63) NOT NULL COMMENT "brief descriptive name for listings and tree-paths", `Descr` VARCHAR(127) DEFAULT NULL COMMENT "(optional) description of this place, so it can be located", PRIMARY KEY(`ID`) ) ENGINE = InnoDB;</mysql>
Archive
These notes do not currently apply. They may be things we will want to use at some point, but are not currently in use on this table.
- Rules: Both stock Bins and order Packages can be in Places. Later, Places may have attributes to tell us whether we can ship items directly from there (or at all) and whether or not they are effectively "local" to us, but for now they don't.
- Fields:
- isLocal: FALSE = items aren't where we are, so they must either be shipped here first or shipped to customer in separate pkg
- isWhse: TRUE = items have to be fetched for shipping; some delay involved, and may want to print out lists of stuff to fetch
- ID_Supp: NOT NULL = this location is a supplier's stock, and items must be ordered from it in order to be shippable