gpt4 book ai didi

php - 特定优惠券的 Woocommerce 总销售额

转载 作者:可可西里 更新时间:2023-11-01 06:52:04 26 4
gpt4 key购买 nike

问题:

我需要一种方法来首先获取使用特定优惠券代码进行的所有销售。然后从所有这些销售中获得总收入(最好减去这些销售的任何返回。以获得实际收入值)。

执行的想法

我为此使用了 woocommerce 2.6.8 和 MySql 数据库。我的猜测是,我将不得不首先计算使用 PHP 和 MySql 使用特定优惠券进行的销售数量。然后,对于每个带有特定优惠券的唯一订单 ID,对总计进行新查询。

非常感谢任何关于 PHP 和查询的建议 :)

我应该指出,我不希望从优惠券中获得折扣总额。我需要计算使用特定优惠券(不是折扣)售出的总值(value)。

好的,到目前为止还没有有效的解决方案。但我认为这是它的基本结构。获得总数并不是那么容易,因为优惠券与订单没有直接关联。我相信查询必须符合以下内容:

{TBLPRFX}_woocommerce_order_items

第 1 步。获取 order_id FOR order_item_name={COUPON_NAME}

第 2 步。GET order_item_id FOR order_item_type=line_item WHERE order_id EQUAL {RESULT FROM STEP 1}

| order_item_id | order_item_name |订单项目类型 |订单编号 |

| 40971 | {COUPON_NAME} |优惠券 | 001

| 40970 |增值税 |税 | 001

| 40969 | {PRODUCT_NAME} |订单项 | 001

--

{TBLPRFX}_woocommerce_order_itemmeta

第 3 步。将 meta_value FROM meta_key=_line_tax AND meta_key=_line_total WHERE order_item_id={RESULT FROM STEP 2}

| order_item_id |元键 |元值 |

| 40969 | _line_tax | {VALUE_TAX}

| 40969 | _line_total | 总计{VALUE_TOTAL}

| 40969 | _product_id | {PRODUCT_ID}

--

这是我需要帮助弄清楚的查询 :) 不太确定如何在 MySql 和 PHP 中请求这个。我的想法是使它成为一个 foreach,其中“order_item_name={COUPON_NAME_VARIABLE}”,这样我就可以总结使用该优惠券的所有销售总额(即不是优惠券折扣值)。

最佳答案

经过大量测试,我想出了一个可行的解决方案。它不是最时尚的,但可以完成工作。

如果任何 SQL 忍者看到这个,如果您可以建议任何更简化的查询,那就太好了 :)

在制定第一个可行的解决方案后,我意识到需要检查更多步骤以获得更准确的总数。处理退款、税收、折扣等,并确保我只从已完成的订单中获取数据(因为取消、搁置、待处理等在完成之前不是销售)。

所以,这就是我的结局。就像我说的,我知道它需要一些工作并且可能做得更好。但就目前而言,它有效。

  • 修改后的 FUNCTIONS.PHP 代码 -

    // COUPON CHECK
    function couponcheck() {
    global $wpdb;

    $gtl = 0; // Grand Total
    $total_sales = 0;
    $cpn = $_GET['cpn']; // Get coupon name from URL string
    $tblprfx = '[YOUR_TABLE_PREFIX]'; // Table prefix
    $wpps = 'posts'; // Look for post_status
    $wppm = 'postmeta';
    $wcoi = 'woocommerce_order_items';
    $conversion_value = 1;
    $base_currency = '[YOUR_BASE_CURRENCY]';
    $currency;
    $orders_made;

    // Check to make sure there is a couon name in string
    if(isset($cpn) && !empty($cpn)){
    // Query chain
    $init_result = $wpdb->get_results("SELECT order_id FROM {$tblprfx}{$wcoi} WHERE order_item_name='$cpn'");
    $orders_made = count($init_result);
    foreach($init_result as $ir){
    $r1 = $ir->order_id;
    $completed_result = $wpdb->get_results( "SELECT ID FROM {$tblprfx}{$wpps} WHERE post_status='wc-completed' AND ID=$r1" );
    foreach($completed_result as $post_rows) {
    $pr = $post_rows->ID;
    $completed_sales += 1;
    $currency_result = $wpdb->get_results( "SELECT meta_value FROM {$tblprfx}{$wppm} WHERE post_id=$pr AND meta_key='_order_currency'" );
    foreach($currency_result as $cr) {
    $currency = $cr->meta_value;
    if($currency === 'EUR'){
    $currency = 'EUR';
    $currency_rate = $wpdb->get_results( "SELECT meta_value FROM {$tblprfx}{$wppm} WHERE post_id=$pr AND meta_key='_woocs_order_rate'" ); foreach($currency_rate as $rv) {
    $rate_value = $rv->meta_value;
    $conversion_value = $rate_value;
    }
    }
    }
    $data_result = $wpdb->get_results( "SELECT meta_value FROM {$tblprfx}{$wppm} WHERE post_id=$pr AND meta_key='_order_total'" );
    foreach($data_result as $dr) {
    $d = $dr->meta_value;
    if($currency === 'EUR'){
    $eur += $d;
    $d = $d/$conversion_value;
    }else{
    $[YOUR_BASE_CURRENCY] += $d;
    }
    $gtl += $d;
    }
    }
    }
    // Total number of sales
    $refunded_orders = $orders_made-$completed_sales;
    $order_avg = $gtl/$completed_sales;
    echo '<p>Total <strong>completed, non-refunded, sales made (after discounts)</strong> with coupon <strong>' . strtoupper($cpn) . '</strong>: <br />(Number of refunded orders: <strong>' . $refunded_orders . ')</strong></p><h2>' . $completed_sales . '</h2><p>At a total <strong>sales value</strong> of:</p><h2>' . number_format($[YOUR_BASE_CURRENCY],2) . ' [YOUR_BASE_CURRENCY]</h2><h2>&euro;' . number_format($eur,2) . '</h2><p>Adding up to a <strong>sum total</strong> of:</p><h2>' . number_format($gtl,2) . ' [YOUR_BASE_CURRENCY]</h2><p>Creating an average order value of:<br /><strong>' . number_format($order_avg,2) . ' [YOUR_BASE_CURRENCY]</strong>';

    }

    } add_shortcode('coupons', 'couponcheck');

请注意,我将我的实际基础货币更改为 [YOUR_BASE_CURRENCY]。欢迎评论(建设性的):)

关于php - 特定优惠券的 Woocommerce 总销售额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41185586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com