Die orange Ampel bei abgeschlossenen Bestellungen ist KEIN ERP-Fehler: der
Endpoint /api/wp/status liefert für versendete Bestellungen bereits sent/close
(Live-DB: 111× shipped=2, 1× shipped=3). Ursache liegt shopseitig (Cron/Auth) —
wird per SSH geprüft. Unabhängig davon die latenten Mapping-Lücken geschlossen:
ERP (ShoppingOrder::$apiShippedTypes):
- Status 5 (Wartestellung) fehlte und lieferte den Default 'free' (im Shop gar
kein Licht). Jetzt 5 => 'process' (Shop-Ampel orange = in Bearbeitung).
Connector (partnercenter-api, Teil von v1.6.0 — noch nicht ausgerollt):
- admin/post-list.php: Ampel-Switch deckt jetzt 'pick_up' (Abholung ⇒ grün) und
'cancel' (storniert ⇒ neue rote Kugel) ab; vorher fielen beide auf ⚠️.
- woocommerce/order-status.php: 'pick_up' und 'cancel' gelten jetzt als
Endzustände und fallen aus der stündlichen Nachfrage-Liste
(_partnercenter_api_unclear_order_ids) — vorher wurden 12 stornierte
Bestellungen dauerhaft weiter gepollt.
Test: AP-38-Mapping prüft alle shipped-Werte (kein stiller 'free'-Fallback mehr).
Suite 338 grün.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
146 lines
3.3 KiB
PHP
146 lines
3.3 KiB
PHP
<?php
|
|
/*
|
|
* Add to Post List Class
|
|
*/
|
|
|
|
if (! defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
class PARTNERCENTER_API_Order_Post_List_Class
|
|
{
|
|
/**
|
|
* PARTNERCENTER_API_Order_Post_List_Class constructor.
|
|
*/
|
|
public function __construct()
|
|
{
|
|
|
|
// Add custom column
|
|
add_filter('manage_edit-shop_order_columns', [$this, 'manage_edit_shop_order_columns'], 20);
|
|
|
|
// Fill the column
|
|
add_action('manage_shop_order_posts_custom_column', [
|
|
$this,
|
|
'manage_shop_order_posts_custom_column',
|
|
], 20, 2);
|
|
|
|
// Style custom column
|
|
add_action('admin_print_styles', [$this, 'admin_print_styles'], 20);
|
|
|
|
}
|
|
|
|
/**
|
|
* Add custom column.
|
|
*
|
|
*
|
|
* @return array
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function manage_edit_shop_order_columns(array $columns)
|
|
{
|
|
|
|
$new_columns = [];
|
|
|
|
foreach ($columns as $column_name => $column_info) {
|
|
|
|
$new_columns[$column_name] = $column_info;
|
|
|
|
if ($column_name === 'order_status') {
|
|
$new_columns['partnercenter-status'] = __('PARTNERCENTER Status', 'partnercenter-api');
|
|
}
|
|
}
|
|
|
|
return $new_columns;
|
|
}
|
|
|
|
/**
|
|
* Add content to custom column.
|
|
*
|
|
* @param int $order_id
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function manage_shop_order_posts_custom_column(string $column, $order_id)
|
|
{
|
|
|
|
// Check if our column is worked on
|
|
if ($column !== 'partnercenter-status') {
|
|
return;
|
|
}
|
|
|
|
// Check if order was send to PARTNERCENTER
|
|
$forwarded = intval(get_post_meta($order_id, '_partnercenter_api_order_fulfillment_forwarded', true));
|
|
if ($forwarded === 0) {
|
|
return;
|
|
}
|
|
|
|
// Display the status from DB?>
|
|
<?php
|
|
switch (get_post_meta($order_id, '_partnercenter_api_order_status', true)) {
|
|
case 'free':
|
|
break;
|
|
case 'sent':
|
|
case 'close':
|
|
case 'pick_up': // AP-38: Abholung = erfüllt ⇒ grün
|
|
?>
|
|
<div class="partnercenter-status-circle green"></div>
|
|
<?php
|
|
break;
|
|
case 'open':
|
|
case 'process': ?>
|
|
<div class="partnercenter-status-circle orange"></div>
|
|
<?php
|
|
break;
|
|
case 'cancel': // AP-38: storniert ⇒ rot
|
|
?>
|
|
<div class="partnercenter-status-circle red"></div>
|
|
<?php
|
|
break;
|
|
default: ?>
|
|
<span style="font-size: 200%">
|
|
<?php _e('⚠️', 'partnercenter-api'); ?>
|
|
</span>
|
|
<?php break;
|
|
} ?>
|
|
|
|
<?php }
|
|
|
|
/**
|
|
* Style custom column.
|
|
*/
|
|
public function admin_print_styles()
|
|
{
|
|
|
|
// Get the screen
|
|
if (get_current_screen()->id !== 'edit-shop_order') {
|
|
return;
|
|
} ?>
|
|
|
|
<style type="text/css">
|
|
th.column-partnercenter-status {
|
|
text-align: center;
|
|
}
|
|
|
|
.partnercenter-status-circle {
|
|
width: 25px;
|
|
height: 25px;
|
|
border-radius: 100%;
|
|
background: darkorange;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.partnercenter-status-circle.green {
|
|
background: limegreen;
|
|
}
|
|
|
|
.partnercenter-status-circle.red {
|
|
background: crimson;
|
|
}
|
|
|
|
</style>
|
|
|
|
<?php }
|
|
}
|
|
|
|
new PARTNERCENTER_API_Order_Post_List_Class;
|