1

1.问题:

我想出售经过称重的易腐烂物品(因此重量永远不会与客户实际订购的重量完全匹配),有时如果某个特定产品不再可用,则会运送类似的产品。
例如:

订购:1.000 公斤苹果(A 品种)  
装运:0.975 公斤苹果(B 品种)

我希望客户能够在他们的发票中看到这一点:

产品 | 公斤订购 | 公斤装运  
_____|____________|___________
苹果(A 品种)| 高分辨率照片| CLIPARTO 1.000 公斤 | 0.000 公斤
苹果(B 类)| 高分辨率照片| CLIPARTO 0.000 公斤 | 0.975 公斤
  • 这意味着 WooCommerce 应该被“说服”处理两个数量列/变量(旧的和自定义的)中的数量,float而不是integer.
  • 因此,我还需要 WooCommerce 停止删除数量为零的产品(product_qty)(在后台更新订单时)。

部分临时解决方案:

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

第 284 行:

$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 table 中的代码片段(它显示了新的列并用来自 的值填充它product_qty)。但是,一旦我在编辑订单页面中编辑产品数量 - 当然 - WooCommerce 会更新两个数量列。
    看图片: 在此处输入图像描述

3.我的代码:

暂时只有这个片段(来自Show product meta in order items table in Order Details):

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