8 Commits

Author SHA1 Message Date
wpdev c2bd02e9ec fix(2meet-data-optimizer-woocommerce-addon): record no negative commission for a fully refunded taxed order
- the amounts follow Marketplace::get_order_profit() (what the vendor is
  paid), which subtracts the full order tax after refunds; a fully refunded
  taxed order came out at subtotal = commission = -tax. The subtotal is now
  floored at 0 (security review M2); partial refunds keep matching what
  Marketplace pays
- Verify: WCOrdersInterceptorTest (full refund with tax), integration 28, unit 11, phpcs
- PR: PR-112 (2.3 acceptance security review)
2026-09-27 17:23:31 +08:00
wpdev 50989396a8 fix(2meet-data-optimizer-woocommerce-addon): recompute commission amounts on every tracked status change and refund
- the commission upsert replaces subtotal, commission, vendor_payout and
  commission_rate on conflict (it kept the first amounts, so a partial refund
  before completion never reached the row)
- woocommerce_order_refunded recomputes a tracked or already recorded order;
  a fully refunded order keeps its row at zero, untracked orders get none
- Verify: WCOrdersInterceptorTest (5 new), integration 27, unit 11, phpcs;
  dev36 flow_wc partial refund -> completed
- PR: PR-092
2026-09-27 16:29:28 +08:00
wpdev c3c4e1de44 refactor(2meet-data-optimizer-woocommerce-addon): drop the product/order hot fields and the user hot group
- Stop registering WC product/order/subscription zone fields and the user hot group; WC reads its meta directly and writes stock by SQL, so a flat copy drifts
- Keep the custom tables registration, the HPOS notice and the commissions
- Verify: composer test / test:integration; dev36 customer save, order stock reduce/restore with no DB errors
- PR: PR-085
2026-09-27 09:48:33 +08:00
wpdev 094248b75d fix(2meet-data-optimizer-woocommerce-addon): read real Marketplace commission keys
Tests / PHP Lint (pull_request) Successful in 11s
Tests / Integration Tests (pull_request) Successful in 59s
Tests / Unit Tests (pull_request) Successful in 59s
- Marketplace writes hp_vendor / hp_commission_rate / hp_commission_fee (no
  underscore); the _hp_* keys never existed, so no commission was recorded
- Compute subtotal, vendor payout and commission the way
  Marketplace::get_order_profit() does, honouring hp_vendor_include_taxes
- Store the vendor's user ID, the product's parent listing, and the platform
  commission percentage (Marketplace stores the vendor share, e.g. 0.9)

Verify: phpunit-integration --filter WCOrdersInterceptorTest (4 tests);
  WC unit 10 OK, integration 22 OK
PR: PR-012
2026-09-25 22:47:35 +08:00
wpdev 0118fc3a1a feat(fields): 補 3 個 WC runtime usermeta 欄位
Tests / Integration Tests (push) Successful in 1m7s
Tests / Unit Tests (push) Failing after 14m20s
Tests / PHP Lint (push) Failing after 14m28s
wc_last_active / wc_order_count_<prefix> / last_update 先前未註冊,會落回
wp_usermeta。三者皆由 WooCommerce 在 order/session 事件寫入,繁忙商店為高頻。

wc_order_count 走 Users::update_site_user_meta(),key 是
'wc_order_count' . '_' . rtrim( get_blog_prefix(), '_' );來源外掛寫死主站
形式 'wc_order_count_wp',multisite 子站(_wp_2)會漏接,這裡改用同一條運算式。
2026-07-31 10:18:33 +08:00
wpdev 2f9ed57390 chore(wc): 同步 A v3.4.6 的 WooCommerce 整合 + TablePrefix header(F4/F5)
4 個整合檔(woocommerce / wc-orders-interceptor / wc-term-count-filter /
admin-wc)對齊 A v3.4.6;主檔補 TablePrefix header。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
2026-07-31 06:07:39 +08:00
wpdev 955689ddd2 feat(back-compat): 加入 WPDO_* class alias(E3)
核心的 class-tmdo-back-compat.php 在 plugins_loaded:4 執行,AddOn 於 :6
才載入,所以核心的 alias 表涵蓋不到 AddOn 類別 —— 姊妹外掛或第三方若
以 WPDO_* 名稱引用本 AddOn 的類別會直接 fatal。

新增 includes/back-compat-aliases.php,於 plugins_loaded:7 為本 AddOn
自有類別建立 WPDO_ alias;主檔加入 require。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
2026-07-31 06:03:47 +08:00
wpdev 47288db826 chore: initial snapshot of 2meet-data-optimizer-woocommerce-addon v0.1.0
Baseline before backporting wp-data-optimizer v3.0.1-v3.4.6.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
2026-07-31 05:06:36 +08:00