فهرست منبع

Reorganize docs into docs/ folder and add fresh README.md

Move readme.md, instructions.txt, and translations.txt under docs/ (via git mv,
preserving history). Add a new root-level README.md with comprehensive plugin
documentation (features, install, CSV formats, architecture, changelog).
Add a Documentation section to CLAUDE.md pointing at all docs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dalibor Votruba 2 ماه پیش
والد
کامیت
c1771942f0

+ 11 - 0
studiou-wc-ord-print-statuses/CLAUDE.md

@@ -12,6 +12,17 @@ This is a WordPress plugin that extends WooCommerce functionality to manage prin
 - Requires: WordPress 5.8+, WooCommerce 3.0+, PHP 7.2+
 - Tested with: WordPress 6.8.3, WooCommerce 10.2.2
 
+## Documentation
+
+User-facing and historical documentation lives at the project root and under `docs/`. Consult these alongside this file before making changes:
+
+- [`README.md`](README.md) — Primary, up-to-date plugin documentation (features, install, CSV formats, architecture, changelog).
+- [`docs/readme.md`](docs/readme.md) — Previous user-facing readme; retained for history.
+- [`docs/instructions.txt`](docs/instructions.txt) — Original feature specification used to scaffold the plugin. Useful when verifying intended behaviour against current implementation.
+- [`docs/translations.txt`](docs/translations.txt) — EN → CS translation reference for the bundled `cs_CZ` locale.
+
+When adding new documentation files, place them in `docs/` and add a one-line pointer here.
+
 ## Recent Changes
 
 ### Version 1.3.2 (2025-10-18)

+ 214 - 0
studiou-wc-ord-print-statuses/README.md

@@ -0,0 +1,214 @@
+# QDR — Studiou WC Order Print Statuses
+
+WordPress plugin that extends WooCommerce with a dedicated workflow for managing print orders sent to third-party print providers. It adds custom order statuses, tracking fields, CSV export, protocol-based CSV imports, and search/filter capabilities tailored to a print fulfillment pipeline.
+
+- **Plugin slug / text domain:** `studiou-wc-ord-print-statuses`
+- **Current version:** 1.3.2
+- **Author:** Dalibor Votruba — [quadarax.com](https://www.quadarax.com)
+- **License:** GPL v2 or later
+
+---
+
+## Requirements
+
+| Component   | Minimum | Tested up to |
+|-------------|---------|--------------|
+| WordPress   | 5.8     | 6.8.3        |
+| WooCommerce | 3.0     | 10.2.2       |
+| PHP         | 7.2     | —            |
+
+Compatible with WooCommerce **High-Performance Order Storage (HPOS)** — the plugin declares `custom_order_tables` compatibility and queries the HPOS `wc_orders` table directly.
+
+---
+
+## Installation
+
+1. Copy the `studiou-wc-ord-print-statuses` folder into `wp-content/plugins/`.
+2. Make sure WooCommerce is installed and active.
+3. Activate the plugin from **Plugins** in the WordPress admin.
+
+No additional setup is required — custom statuses, fields, columns, and bulk actions are registered on activation.
+
+---
+
+## Features
+
+### 1. Custom order statuses
+
+Two new statuses are inserted in the WooCommerce status pipeline, right after `processing`:
+
+| Slug          | Label                | Purpose                                         |
+|---------------|----------------------|-------------------------------------------------|
+| `wc-to-print` | Prepare to Printing  | Order is queued and exported to the print shop. |
+| `wc-in-print` | In Printing          | Print shop has accepted the order.              |
+
+Status transitions automatically stamp the related metadata field (`to_print_date` / `in_print_date`) with the current server time.
+
+### 2. Print Information fields on the order edit page
+
+A new **Print Information** panel is added to the order details screen with four editable fields:
+
+- **Prepare To Print Date** (`to_print_date`)
+- **In Print Date** (`in_print_date`)
+- **External Order Number** (`external_ref_ord_no`)
+- **External Order Delivered** (`external_ref_ord_delivered`)
+
+An additional internal field `external_ref_ord_date` is populated during InPrint protocol imports.
+
+### 3. Bulk actions on the Orders list
+
+Available in the **Bulk actions** dropdown on **WooCommerce → Orders**:
+
+- **Prepare to Printing Export** — runs the print-shop export SQL across the selected orders, streams the result as a CSV download, and moves every selected order to `wc-to-print`.
+- **Set Status to Prepare to Printing** — moves selected orders to `wc-to-print` and stamps `to_print_date`.
+- **Set Status to In Printing** — moves selected orders to `wc-in-print` and stamps `in_print_date`.
+
+### 4. Extra columns in the Orders list
+
+Three columns are appended after **Total**:
+
+- **To Print Date**
+- **In Print Date**
+- **External Order Number**
+
+### 5. Search by External Order Number
+
+The Orders list gains a search input that filters orders on the `external_ref_ord_no` meta value (LIKE match).
+
+### 6. Protocol imports
+
+A **WooCommerce → Import Protocols** submenu exposes two CSV upload forms:
+
+- **Import InPrint Protocol** — for every row in the file, the matching order is set to `wc-in-print` and the external reference number / date are saved.
+- **Import Delivered Protocol** — for every row in the file, the matching order is set to `wc-completed` and the delivery timestamp is recorded.
+
+Both importers require the `manage_woocommerce` capability and are protected by WordPress nonces.
+
+---
+
+## CSV formats
+
+### Export — Prepare to Printing
+
+Generated file: `prepare_to_printing_export.csv`
+
+Columns (in order):
+
+```
+order_no, prod_cat, prod_name, prod_var, prod_var_type, prod_img_url, qty, email
+```
+
+`prod_var_type` is sourced from the variation's `attribute_pa_format` postmeta, resolved against the `wp_terms` table.
+
+### Import — InPrint Protocol
+
+Required headers (case-sensitive):
+
+```
+order_no, externalorder, externalorderdate
+```
+
+Effect per row: order → status `wc-in-print`, sets `in_print_date` (now), `external_ref_ord_no`, `external_ref_ord_date`.
+
+### Import — Delivered Protocol
+
+Required header:
+
+```
+order_no
+```
+
+Effect per row: order → status `wc-completed`, sets `external_ref_ord_delivered` (now).
+
+---
+
+## Architecture
+
+The plugin follows a manager-based pattern. The main bootstrapper (`studiou-wc-ord-print-statuses.php`) wires up specialised classes, each owning one slice of behaviour:
+
+| Class                     | File                                       | Responsibility                                   |
+|---------------------------|--------------------------------------------|--------------------------------------------------|
+| `Order_Status_Manager`    | `includes/class-order-status-manager.php`  | Register custom statuses, handle transitions.    |
+| `Order_Fields_Manager`    | `includes/class-order-fields-manager.php`  | Render and persist Print Information fields.    |
+| `Bulk_Actions_Manager`    | `includes/class-bulk-actions-manager.php`  | Register and dispatch bulk actions.             |
+| `Custom_Columns_Manager`  | `includes/class-custom-columns-manager.php`| Inject extra columns into the Orders list.      |
+| `Import_Manager`          | `includes/class-import-manager.php`        | Admin UI + handlers for protocol CSV imports.   |
+| `Order_Search_Manager`    | `includes/class-order-search-manager.php`  | Extend order search to external reference no.    |
+| `Studiou_DB_Manager`      | `includes/class-db-manager.php`            | All SQL and protocol-processing logic.           |
+| `UtilsLog`                | `includes/utils-log.php`                   | Lightweight logging helper (uses `WP_DEBUG`).   |
+
+The export query in `Studiou_DB_Manager::get_orders_for_printing()` joins `wc_orders`, `wc_order_product_lookup`, `posts` (products + variations), `postmeta` (variation attribute + thumbnail), `terms`, `term_taxonomy`, and `term_relationships` to assemble the print-shop payload in a single round-trip.
+
+---
+
+## Internationalization
+
+- Text domain: `studiou-wc-ord-print-statuses`
+- Translation files: `languages/`
+- Bundled locales: **Czech (`cs_CZ`)** — see `docs/translations.txt` for the EN→CS reference list.
+
+Use the standard WordPress functions (`__()`, `_e()`, `_x()`, `_n_noop()`) for any new strings.
+
+---
+
+## Logging
+
+`UtilsLog::log($message)` writes to the WordPress error log when `WP_DEBUG` is enabled. With `WP_DEBUG_LOG` on, log output ends up in `wp-content/debug.log`. The plugin logs initialization, dependency loading, status changes, bulk actions, and SQL failures.
+
+---
+
+## Project layout
+
+```
+studiou-wc-ord-print-statuses/
+├── studiou-wc-ord-print-statuses.php   # Plugin bootstrap (header + main class)
+├── includes/
+│   ├── class-db-manager.php
+│   ├── class-order-status-manager.php
+│   ├── class-order-fields-manager.php
+│   ├── class-order-search-manager.php
+│   ├── class-bulk-actions-manager.php
+│   ├── class-custom-columns-manager.php
+│   ├── class-import-manager.php
+│   └── utils-log.php
+├── languages/                          # .po / .mo translation files
+├── docs/                               # Project documentation (see below)
+├── README.md                           # This file
+└── CLAUDE.md                           # Guidance for Claude Code sessions
+```
+
+---
+
+## Documentation
+
+Reference documents live under [`docs/`](docs/):
+
+- [`docs/readme.md`](docs/readme.md) — Previous user-facing readme (kept for history).
+- [`docs/instructions.txt`](docs/instructions.txt) — Original feature specification used to scaffold the plugin.
+- [`docs/translations.txt`](docs/translations.txt) — EN → CS translation reference.
+
+Project-internal guidance for AI-assisted development is documented in [`CLAUDE.md`](CLAUDE.md).
+
+---
+
+## Changelog
+
+### 1.3.2 — 2025-10-18
+- **Fixed:** `prod_var_type` column was empty in `prepare_to_printing_export.csv`. Variation attribute is now resolved through `postmeta.attribute_pa_format` joined against `wp_terms.name`.
+- **Fixed:** HPOS incompatibility warning. Plugin now explicitly declares `custom_order_tables` compatibility.
+- **Tested:** WordPress 6.8.3, WooCommerce 10.2.2 with HPOS enabled.
+
+### 1.3.1
+- Previous stable release.
+
+---
+
+## Support
+
+For bug reports, feature requests or commercial support, contact **[quadarax.com](https://www.quadarax.com)**.
+
+---
+
+## License
+
+Released under the **GNU General Public License v2.0 or later** — see [https://www.gnu.org/licenses/gpl-2.0.html](https://www.gnu.org/licenses/gpl-2.0.html).

+ 0 - 0
studiou-wc-ord-print-statuses/instructions.txt → studiou-wc-ord-print-statuses/docs/instructions.txt


+ 0 - 0
studiou-wc-ord-print-statuses/readme.md → studiou-wc-ord-print-statuses/docs/readme.md


+ 0 - 0
studiou-wc-ord-print-statuses/translations.txt → studiou-wc-ord-print-statuses/docs/translations.txt