VbzCart/tables/stk places

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< VbzCart‎ | tables
Revision as of 11:14, 22 April 2017 by Woozle (talk | contribs) (flag revisions)
Jump to navigation Jump to search

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 that this terminology is basically backwards. A Place is "active" if it is "enabled" AND is not contained by a Place that has been disabled (un-"enabled").
      • 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 the following things need to happen:
        • "isEnabled" should be renamed "isActiveSpace" (done)
        • "isActive" should be renamed "isSelfActive" (done)
        • 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 earlier)
  • Fields:
    • isSelfActive: if FALSE, then normal operations should ignore this place and all places inside it.
    • isActiveSpace: (calculated by code) 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