# Features — printafoil (Printafoil Portal)

Evidence date: 2026-10-06. Source: `master` at `058841e9`.

Status values used here:

- **Current** — present in the catalogue or as a running screen at this commit.
- **Present, not in catalogue** — generated PHP exists; `getTableList()` does not register the table, so the homepage will not show it.
- **Vendored** — third-party code in the tree. Active only if configured in a database this repo does not prove.
- **Unknown** — not established.

No feature in git is marked planned, in development, or removed. The history is three commits and does not describe a roadmap. Recently changed at `058841e9`: files under `images/` and Webalizer output under `stats/`. Application PHP was already in `72ec57ca`.

## Portal shell

| Feature | Status | Where |
|---|---|---|
| Sign in, sign out, homepage of allowed tables | Current | `index.php`, `login.php`, `home.php` |
| Membership admin (groups, members, ownership, CSV, mail, backup, maintenance mode) | Current | `admin/` |
| Per-table list, detail, lookup | Current | `*_view.php`, `*_dml.php`, `*_autofill.php` |
| Calculated fields refresh | Current | `ajax-update-calculated-fields.php`, `cli-update-calculated-fields.php`, `calculated_fields()` |
| Charlotte Rhys client landing on finished stock | Current | `hooks/__global.php`, `finish_stock_client_view.php` |
| Failed-login log, including the attempted password | Current | `hooks/__global.php`, table `log_failed_logins` |
| AppGini plugin folder | Present | `plugins/` (`projects`, `spm`, `plugins-resources`). No custom plugin was identified |

## Catalogue by menu group

Captions are the strings in `getTableList()`. Empty homepage descriptions are omitted. Group **System** is summarised after the user-facing groups because it holds 113 lookup and setup tables.

### Finishing / Dispatch / Stores (6)

| Table | Caption | Homepage description |
|---|---|---|
| `order_create_die` | Die's - Manage | A. Order New Die \| B. Find a Die \| C. Manage a Die's location |
| `work_ticket_move` | W/T Movement | Look Up Ticket Movements |
| `pf_maint_repair_request` | PF - Maint. / Repairs | Printafoil General Maintenance and Repairs and any required items required |
| `workticketstatus` | Work Ticket Status Change | |
| `dispatch_sys` | Dispatch Portal | |
| `die_line_management` | Die Line Manage | |

### Purchase Orders (3)

| Table | Caption |
|---|---|
| `purchase_order` | Purchase Order |
| `po_items` | PO Items Detail |
| `suppliers` | Printafoil Suppliers List |

### Admin (5)

| Table | Caption |
|---|---|
| `clients` | Printafoil Clients |
| `it_asset_manager` | Asset Manage |
| `it_product_user` | IT User |
| `keyregister` | PF Key Register |
| `log_failed_logins` | Log of Failed Login's |

### Sales Force CRM (2)

| Table | Caption |
|---|---|
| `client_contacts` | Contacts for PF Clients |
| `crm_salesopportunities` | Sales Opportunities - ALL |

### Sales (2) and Sales Admin (1)

| Table | Caption | Group |
|---|---|---|
| `sales_enquiry_carton` | Sales Enquiry | Sales |
| `sales_enquiry_order` | Sales Order Confirmation | Sales |
| `salesassist` | Sales Assistant Portal | Sales Admin |

### Store Manager (12)

| Table | Caption |
|---|---|
| `finish_stock` | Finish Stock Manager |
| `finish_stock_move` | Finish Stock Move |
| `pf_product_code` | Finish Stock Item Code |
| `goods_return_voucher` | Goods Return System |
| `production_spoilage` | Reasons for Spoilage |
| `production_person` | Packers & Checkers |
| `dispatch_pick` | Stores Pick Slip |
| `dispatch_pick_qty` | Picked Quantity |
| `stores_receiving` | Stores Receiving |
| `stores_released` | Stores Items Released |
| `finish_stock_adjusting` | Finish Stock Adjustments |
| `finish_stock_pics` | Finish Stock Pics |

Extra screens on `finish_stock`, not extra tables: `finish_stock_client_view.php`, `finish_stock_full_view.php`.

### Production System (4) and Production Reports (1)

| Table | Caption |
|---|---|
| `production_finishing` | WT Production |
| `wip_hud` | Live WIP Board - FD |
| `wip_movement` | Move - Locate WIP |
| `wip_operations` | Operations - WIP |
| `group_production_all` | Production all Reports FD |

Extra screens on `wip_hud`: `wip_hud_cnc_view.php`, `wip_hud_completed_view.php`, `wip_hud_embos_view.php`, `wip_hud_foil_view.php`, `wip_hud_glue_view.php`, `wip_hud_onmachine_view.php`, `wip_hud_plan_view.php`, `wip_hud_q_view.php`, `wip_hud_q_cnc_view.php`, `wip_hud_q_handw_view.php`, `wip_hud_q_sorting_view.php`, `wip_hud_qty_view.php`, `wip_hud_sort_view.php`, `wip_hud_strip_view.php`, `wip_hud_wip_view.php`.

Operation report menus, one table each, caption pattern "Allow Group Menu for Reports":

| Table | Group |
|---|---|
| `group_foiling` | Foiling |
| `group_emboss` | Embossing |
| `group_cutcreasing` | Cutting Creasing |
| `group_windowing` | Windowing |
| `group_stripping` | Stripping |
| `group_gluing` | Gluing |
| `group_sorting` | Sorting |
| `group_handwork` | Handwork |
| `group_covering` | Covering |
| `group_staying` | Staying |

### Digital Orders (7)

| Table | Caption |
|---|---|
| `digital_work` | Digital Work Ticket |
| `pnd_orders` | PnD Orders — homepage text: Vpress Print and Deliver Orders |
| `pnd_product_detail` | Production Detail |
| `pnd_product_items` | PnD Products |
| `pnd_wip_operations` | Operations PnD - WIP |
| `paf_digital_sample_request` | Digital Sample Request — homepage text: HP Printer print a Sample Request |
| `pnd_operation_setup` | PnD Operation Setup |

### Print Item Manage (7)

| Table | Caption |
|---|---|
| `equipservicechecklist` | Equipment Service Check List |
| `foilingblock` | Blocks |
| `colorpassbag` | Color Pass Bag |
| `printingpflight` | Operation Precheck |
| `inks_manager2` | Passbag Colour Mix |
| `inks_pantone` | Inks Pantone Colours |
| `inks_stock` | Inks Stock |

### PrePress (5)

| Table | Caption |
|---|---|
| `jetplate` | Jet Plate |
| `platesimaged` | Plates Imaged Details |
| `platesimagedstatus` | Plates Imaged Status |
| `filmpossieneg` | Film Requests |
| `prepress_reprorequest` | Prepress Repro Request |

### Colour Standard (6)

`colourstd`, `colourstdmovement`, `colourstdsupplier`, `colourstdpress` (Colour STD Sheet, before CnC/sorting), `colourstddetails` (Colour STD Sorting CTN), `colourstdapproval`.

### Consumables (4)

| Table | Caption |
|---|---|
| `consumablesmanage` | Consumables Manage |
| `consumitem` | Consumable Item Adding |
| `consumuser` | Consumable User By or Dept |
| `consumlocations` | Consumable Locations |

Quantity detail tables for three sites are under System: `consumdetails` (finishing), `consumdetailsmainbld` (main building), `consumdetailsno12` (9 Glosderry).

### Stock - Materials (2)

| Table | Caption |
|---|---|
| `new_stk_item` | Material Stocks — homepage text: All Materials Use |
| `new_stk_move` | Stock Move Detail |

### Sample Dept (3)

`samplerequest` (Sample Request), `die_line_manage` (Die Line Details), `die_line_range` (Die Line Range Name).

### HSE-ISO (19)

Supplier evaluation; equipment items, operator or location, machine type, equipment details, service history; HSE action list and HSE documents; ISO action register, documents, manual, procedures, SOPs, records, record detail, audits, non-conformance, waste items; SEDEX policy documents.

### HR (10)

`hr_management`, `hr_documents`, `hr_training`, `hr_training_details`, `hr_policys`, `hr_draft_docs`, `hr_jobdescriptions`, `hr_accesssec`, `hr_template_docs`, `hr_access_name`.

### FSC (6)

`fsc_audits`, `fsc_training`, `fsc_policys`, `fsc_manual`, `fsc_procedures`, `fsc_sops`.

### Document Template Manager (1) and P-Planning (1)

`document_management` (PF Document Management). `resources` (Resources for Operations).

### Manny Test (3)

`fin_stock_costing` (Finish Stock Value), `customer_survey_create`, `customer_survey_detail`. The group name is the caption group in code. Whether it is still a test area is **Unknown / Requires Confirmation**.

### System (113)

Lookup and setup tables, not a separate product. Themes inside this group:

- Die movement, die status, die locations, die line number, die line movement.
- PO department, who approved a PO, PO quotes, PO status, company to invoice.
- Work-ticket locations, sample numbers `samplespecno` through `samplespecno_10`, sample maker, sample status, sample request details.
- IT category, location, software.
- HR document group, HR approval, job title, department.
- Consumable detail at finishing, main building, and 9 Glosderry; consumable item groups.
- Equipment contractor and service items; ISO approval and non-conformance "raised by".
- Block movement for foiling, embossing, debossing, and colour-pass bags; print-item status and location; plates; preflight status.
- Sales people, enquiry amendments, sales status, glueing, material thickness, delivery cost, repro cost, quote priority, order details.
- Legacy material, laminate, foil, and movements, including separate movement tables for Peters Papers, Jak Paper, Gerber Paper, Papersmith, and location 5.
- CRM stage and reasons; repro drawing number; sales-assist approval.
- Dispatch status and type; finish-stock item part; ink category and ink movements at main building and at 9 Glosderry.
- Production part and finish production status; delivery address.
- Document type and department.
- PnD status notifications, operations, operators, resources, and their list tables.
- New material codes, stock movement type, laminate grade, sample number.
- Finish-stock adjustment type.
- Production operation setup, operator, resource, and name lists.
- WIP move type.
- Maintenance locations and PF status (`pf_mrr_location`, `pf_status`).
- Supplier "approved by" and supplier support documents.

## Screens present, not in the catalogue

These `*_view.php` files set `TableName` to a table that `getTableList()` does not register. Status: **Present, not in catalogue**. Whether the MySQL tables still exist, and whether anyone opens the URLs, is **Unknown / Requires Confirmation**.

`b2b_order_rfq`, `b2b_order_sys`, `b2b_order_sys_detail`, `customer_survey`, `dispatch_pick_label`, `group_client_1701`, `group_client_charlotte`, `new_stk_move_type`, `pnd_operator_name`, `pnd_product_detail_material`, `pnd_production_operation`, `pnd_production_operators`, `pnd_production_process`, `pnd_production_resource`, `pnd_production_transactions`, `pnd_resource_name`, `prod_activity`, `prod_operation_list`, `prod_start_stop`, `prod_wip_function`, `stk_grade`, `stk_material`, `wip_hud_pd`, `wip_hud_transact`, `wip_movement_pd`, `wip_operations_pd`, `wip_operations_transactions`, `wip_type_id`.

`group_client_charlotte` and `group_client_1701` line up with the empty menu names Charlotte Rhys and 1701 Nougat. They are files only.

## WordPress / WooCommerce shop

Status: **Vendored** under `b2b/`.

- WordPress 6.1.1, WooCommerce 7.0.0.
- Themes: Best Shop, Cartsy Lite, Green Farm, Modern Shop, Organic Farm, Startup Shop, Startup Store, Storefront Ecommerce, Superb Ecommerce, Twenty Twenty, Twenty Twenty-One, Twenty Twenty-Two, Twenty Twenty-Three.
- Plugins include WooCommerce, PDF invoices and packing slips, WooCommerce Jetpack, variation swatches, popup cart, booking and rental, advanced product search, Elementor, Beaver Builder Lite, SiteOrigin Panels, Jetpack, MailPoet, Contact Form 7, Wordfence, Ultimate Member, User Registration, Facebook for WooCommerce, Google Listings and Ads, Kirki, Classic Widgets, breadcrumb NavXT.

The January 2023 SQL dump contains `wp_*` tables, including MailPoet and Google Listings (`wp_gla_*`) tables, so those plugins had been used on a database by 11 January 2023. That does not prove they are active on the code at `058841e9`.

## phpMyAdmin

phpMyAdmin 5.2.0 is in `phpmyadmin/`. Status: **Vendored**. Whether it is exposed on the host is **Unknown / Requires Confirmation**.

## Usage statistics

`stats/` holds Webalizer HTML and PNG reports for January and February 2023 (`usage_202301.html`, `usage_202302.html`, and matching charts). Status: **Current** as committed artefacts. The site they measured is **Unknown**.

## Not found

- Mobile app.
- Automated test suite.
- CI pipeline.
- A documented roadmap or deprecated-feature list.
- An API between the portal and the WooCommerce shop.
