1

1. 問題:

重さを量った生鮮食品を販売したい (したがって、顧客が実際に注文した重量と正確に一致することはありません)。特定の製品が入手できなくなった場合、同様の製品が出荷されることがあります。
例えば:

注文: 1.000 kg リンゴ (品種 A)  
出荷: 0.975 kg りんご (品種 B)

顧客が請求書でこれを確認できるようにしたい:

製品 | キロ注文 | 出荷されたキロ  
____|____________|____________
りんご (品種 A) | 1.000キロ | 0.000kg
りんご (品種 B) | 0.000 キロ | 0.975キロ
  • これは、WooCommerce が Qty 列/変数 (古いものとカスタムのもの) の両方の数量をfloatではなくとして処理することを「確信」する必要があることを意味しますinteger
  • したがって、バックオフィスで注文を更新するときに、数量がゼロの製品の削除を停止するために WooCommerce も必要です ( product_qty)。

部分的な一時的な解決策:

\woocommerce\includes\admin\wc-admin-functions.php  

Line284:

$item->delete();
// $item->delete();
  • また、テーブルの新しいカスタム列 (既に作成したもの) (「グッド プラクティス」でない場合 - この列をどこに & どのように追加すればよいですか?) を使用して、顧客が作成した瞬間に(同じテーブル内の) 列から値を取得します。注文。product_quantity_ordered{prefix}wc_order_product_lookupproduct_qty{prefix}wc_order_product_lookup

部分的な一時的な解決策: phpMyAdmin
の SQL クエリ:
UPDATE L16_wc_order_product_lookup SET product_qty_ordered = product_qty WHERE date_created BETWEEN '2020-06-24' AND '2020/07/14';

  • アドミンの注文編集ページ請求書の両方で、両方の数量列を並べて表示することもできます (最初に注文した数量、次に出荷した数量) 。

2.私が試したこと:

  1. テーブルに新しいカスタム列 を追加しました(繰り返しますが、これが「ベスト プラクティス」ではない場合... この新しい列をどこに追加すればよいでしょうか?) 画像を参照してください: product_quantity_ordered{prefix}wc_order_product_lookup
    phpMyAdmin - product_qty_ordered
  2. Order Details の Show product meta in order items テーブルのコード スニペットを使用しました(これにより、新しい列 column が表示され、そこに からの値が取り込まれますproduct_qty)。ただし、注文の編集ページで商品の数量を編集するとすぐに、もちろん、WooCommerce は両方の数量列を更新します。
    画像を参照してください: ここに画像の説明を入力

3.私のコード:

当面の間、このスニペットのみ ( [注文の詳細] の [注文アイテム] テーブルに製品メタを表示するから):

add_action('woocommerce_admin_order_item_headers', 'my_woocommerce_admin_order_item_headers');
function my_woocommerce_admin_order_item_headers() {
    // set the column name
    $column_name = 'Qty ordered';
    echo '<th>' . $column_name . '</th>';
}
add_action('woocommerce_admin_order_item_values', 'my_woocommerce_admin_order_item_values', 10, 3);
function my_woocommerce_admin_order_item_values($_product, $item, $item_id = null) {
    $value = $item->get_quantity( 'edit' ); // this line of code stems from Line28 of \woocommerce\packages\woocommerce-admin\src\Overrides\OrderTraits.php 
echo '<td>' . $value . '</td>';
}
4

0 に答える 0