Эх сурвалжийг харах

feat: order and rebate update

igb 15 цаг өмнө
parent
commit
e6171ee245

+ 2 - 2
order.php

@@ -224,7 +224,7 @@ $sqlStr .= " $fliterStr ORDER BY {$ordStr}o.created_at DESC";
             <div class="col2">序号</div>
             <div class="col3">销售开单号</div>
             <div class="col4">客户编码</div>
-            <div class="col5">客户</div>
+<!--            <div class="col5">客户</div>-->
             <div class="col7">出货单日期</div>
             <div class="col9">订单金额</div>
             <div class="col10">操作</div>
@@ -283,7 +283,7 @@ $sqlStr .= " $fliterStr ORDER BY {$ordStr}o.created_at DESC";
                     <div class="col2"><?= $tempNum ?></div>
                     <div class="col3 slidepanel"><?= htmlspecialcharsFix($row['order_code']) ?></div>
                     <div class="col4"><?= htmlspecialcharsFix($row['cs_code']) ?></div>
-                    <div class="col5"><?= htmlspecialcharsFix($row['cs_company']) ?></div>
+<!--                    <div class="col5">--><?php //= htmlspecialcharsFix($row['cs_company']) ?><!--</div>-->
                     <div class="col7"><?= date('Y-m-d', strtotime($row['order_date'])) ?></div>
                     <div class="col9"><?= number_format($row['total_amount'], 2) ?></div>
                     <div class="col10">

+ 25 - 17
rebate_expiring.php

@@ -32,23 +32,30 @@ $employee_id = $_SESSION['employee_id'];
 $isAdmin = checkIfAdmin();
 
 // 查询即将过期的返点订单
-// 这里我们获取那些在90天期限内,但是已经接近过期的订单(比如只剩7天有效期)
-$cutoffDate = date('Y-m-d', strtotime("-" . (90 - $expiryDays) . " days"));
-$expiryDate = date('Y-m-d', strtotime("-90 days"));
+// 这里我们获取那些在有效期内,但是已经接近过期的订单
+// 现在改为:从上个月1号到本月底有效,并根据离月底的天数判断是否即将过期
+// 计算本月最后一天和当前日期的天数差
+$lastDayOfMonth = date('Y-m-t'); // 获取当前月的最后一天
+$currentDate = date('Y-m-d');
+$daysToMonthEnd = (strtotime($lastDayOfMonth) - strtotime($currentDate)) / (60 * 60 * 24);
 
+// 获取上个月1号作为有效期开始时间
+$startDate = date('Y-m-01', strtotime('-1 month'));
+
+// 只查找剩余天数少于expiryDays的记录
 $customerListSql = "SELECT DISTINCT 
     o.customer_id,
     c.cs_company AS customer_name,
     c.cs_code,
     MIN(o.order_date) AS oldest_order_date,
-    DATE_ADD(MIN(o.order_date), INTERVAL 90 DAY) AS expiry_date,
-    DATEDIFF(DATE_ADD(MIN(o.order_date), INTERVAL 90 DAY), CURRENT_DATE()) AS days_left
+    '$lastDayOfMonth' AS expiry_date,
+    DATEDIFF('$lastDayOfMonth', CURRENT_DATE()) AS days_left
 FROM orders o
 JOIN order_items oi ON o.id = oi.order_id
 JOIN customer c ON o.customer_id = c.id
 JOIN products p ON oi.product_id = p.id
 WHERE 
-    o.order_date BETWEEN '$expiryDate' AND '$cutoffDate'
+    o.order_date >= '$startDate'
     AND o.order_type = 1
     AND p.rebate = 1
     AND NOT EXISTS (
@@ -67,7 +74,7 @@ WHERE
         JOIN orders o2 ON oi2.order_id = o2.id
         WHERE o2.customer_id = o.customer_id
         AND oi2.product_id = oi.product_id
-        AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+        AND o2.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
         AND NOT EXISTS (
             SELECT 1
             FROM rebate_redemption_items rri
@@ -77,7 +84,8 @@ WHERE
         SELECT MIN(rr.min_quantity)
         FROM rebate_rules rr
         WHERE rr.product_id = oi.product_id
-    )";
+    )
+    AND DATEDIFF('$lastDayOfMonth', CURRENT_DATE()) <= $expiryDays";
 
 // 非管理员只能查看自己的客户返点
 if (!$isAdmin) {
@@ -142,7 +150,7 @@ foreach ($paginatedCustomers as &$customer) {
                     WHERE o2.customer_id = o.customer_id
                     AND o2.order_type = 1
                     AND oi2.product_id = oi.product_id
-                    AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+                    AND o2.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
                     AND NOT EXISTS (
                         SELECT 1
                         FROM rebate_redemption_items rri
@@ -163,7 +171,7 @@ foreach ($paginatedCustomers as &$customer) {
     WHERE 
         o.customer_id = $customer_id
         AND o.order_type = 1
-        AND o.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+        AND o.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
         AND p.rebate = 1
         AND NOT EXISTS (
             SELECT 1
@@ -348,7 +356,7 @@ foreach ($paginatedCustomers as &$customer) {
 <body>
 <div id="man_zone">
     <div class="alert-box">
-        <strong>注意!</strong> 此页面显示即将过期的返点信息。返点订单在创建后90天内有效,过期后将无法兑换。请尽快处理以下客户的返点兑换。
+        <strong>注意!</strong> 此页面显示即将过期的返点信息。返点订单从上个月1号到本月底有效,过期后将无法兑换。请尽快处理以下客户的返点兑换。
     </div>
 
     <div class="fastSelect clear">
@@ -360,10 +368,10 @@ foreach ($paginatedCustomers as &$customer) {
             <input type="date" name="fliterToDate" class="date-input filterSearch" value="<?= $fliterToDate ?>">
             <label>过期天数</label>
             <select name="expiryDays" class="select-days filterSearch">
-                <option value="3" <?= $expiryDays == 3 ? 'selected' : '' ?>>3天内</option>
-                <option value="7" <?= $expiryDays == 7 ? 'selected' : '' ?>>7天内</option>
-                <option value="14" <?= $expiryDays == 14 ? 'selected' : '' ?>>14天内</option>
-                <option value="30" <?= $expiryDays == 30 ? 'selected' : '' ?>>30天内</option>
+                <option value="3" <?= $expiryDays == 3 ? 'selected' : '' ?>>距月底3天内</option>
+                <option value="7" <?= $expiryDays == 7 ? 'selected' : '' ?>>距月底7天内</option>
+                <option value="14" <?= $expiryDays == 14 ? 'selected' : '' ?>>距月底14天内</option>
+                <option value="30" <?= $expiryDays == 30 ? 'selected' : '' ?>>本月所有</option>
             </select>
         </div>
         <div class="inputSearch">
@@ -384,7 +392,7 @@ foreach ($paginatedCustomers as &$customer) {
         <div class="theader">
             <div class="col2">序号</div>
             <div class="col3">客户编码</div>
-            <div class="col4">客户名称</div>
+<!--            <div class="col4">客户名称</div>-->
             <div class="col5">最早订单日期</div>
             <div class="col6">过期日期</div>
             <div class="col7">剩余天数</div>
@@ -410,7 +418,7 @@ foreach ($paginatedCustomers as &$customer) {
                 <div class="tline <?= $rowClass ?>">
                     <div class="col2"><?= $tempNum ?></div>
                     <div class="col3"><?= htmlspecialcharsFix($customer['cs_code']) ?></div>
-                    <div class="col4"><?= htmlspecialcharsFix($customer['customer_name']) ?></div>
+<!--                    <div class="col4">--><?php //= htmlspecialcharsFix($customer['customer_name']) ?><!--</div>-->
                     <div class="col5"><?= date('Y-m-d', strtotime($customer['oldest_order_date'])) ?></div>
                     <div class="col6"><?= date('Y-m-d', strtotime($customer['expiry_date'])) ?></div>
                     <div class="col7 <?= $daysLeft <= 3 ? 'expiry-warning' : '' ?>"><?= $daysLeft ?> 天</div>

+ 2 - 2
rebate_history.php

@@ -285,7 +285,7 @@ while ($row = mysqli_fetch_assoc($result)) {
         <div class="theader">
             <div class="col2">序号</div>
             <div class="col3">客户编码</div>
-            <div class="col4">客户名称</div>
+<!--            <div class="col4">客户名称</div>-->
             <div class="col5">兑换日期</div>
             <div class="col6">产品数</div>
             <div class="col7">返点金额</div>
@@ -303,7 +303,7 @@ while ($row = mysqli_fetch_assoc($result)) {
                 <div class="tline">
                     <div class="col2"><?= $tempNum ?></div>
                     <div class="col3 rb-slidepanel" data-id="<?= $redemption['redemption_id'] ?>"><?= htmlspecialcharsFix($redemption['cs_code']) ?></div>
-                    <div class="col4 rb-slidepanel" data-id="<?= $redemption['redemption_id'] ?>"><?= htmlspecialcharsFix($redemption['customer_name']) ?></div>
+<!--                    <div class="col4 rb-slidepanel" data-id="--><?php //= $redemption['redemption_id'] ?><!--">--><?php //= htmlspecialcharsFix($redemption['customer_name']) ?><!--</div>-->
                     <div class="col5"><?= date('Y-m-d', strtotime($redemption['redemption_date'])) ?></div>
                     <div class="col6"><?= $redemption['product_count'] ?></div>
                     <div class="col7 <?= $statusClass ?>"><?= number_format($redemption['total_rebate_amount'], 2) ?> 元</div>

+ 5 - 5
rebate_redeem.php

@@ -41,7 +41,7 @@ SELECT
             WHERE o2.customer_id = o.customer_id
             AND o2.order_type = 1
             AND oi2.product_id = oi.product_id
-            AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+            AND o2.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
             AND NOT EXISTS (
                 SELECT 1
                 FROM rebate_redemption_items rri
@@ -62,7 +62,7 @@ SELECT
             WHERE o2.customer_id = o.customer_id
             AND o2.order_type = 1
             AND oi2.product_id = oi.product_id
-            AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+            AND o2.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
             AND NOT EXISTS (
                 SELECT 1
                 FROM rebate_redemption_items rri
@@ -83,7 +83,7 @@ SELECT
             WHERE o2.customer_id = o.customer_id
             AND o2.order_type = 1
             AND oi2.product_id = oi.product_id
-            AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+            AND o2.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
             AND NOT EXISTS (
                 SELECT 1
                 FROM rebate_redemption_items rri
@@ -102,7 +102,7 @@ JOIN
 WHERE 
     o.customer_id = $customerId
     AND o.order_type = 1
-    AND o.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+    AND o.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
     AND p.rebate = 1
     AND NOT EXISTS (
         SELECT 1
@@ -121,7 +121,7 @@ WHERE
             WHERE o2.customer_id = o.customer_id
             AND o2.order_type = 1
             AND oi2.product_id = oi.product_id
-            AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+            AND o2.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
             AND NOT EXISTS (
                 SELECT 1
                 FROM rebate_redemption_items rri

+ 7 - 7
rebate_summary.php

@@ -38,7 +38,7 @@ JOIN order_items oi ON o.id = oi.order_id
 JOIN customer c ON o.customer_id = c.id
 JOIN products p ON oi.product_id = p.id
 WHERE 
-    o.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+    o.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
     AND o.order_type = 1
     AND p.rebate = 1
     AND NOT EXISTS (
@@ -58,7 +58,7 @@ WHERE
         WHERE o2.customer_id = o.customer_id
         AND o2.order_type = 1
         AND oi2.product_id = oi.product_id
-        AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+        AND o2.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
         AND NOT EXISTS (
             SELECT 1
             FROM rebate_redemption_items rri
@@ -174,7 +174,7 @@ if (!empty($customers)) {
                     WHERE o2.customer_id = o.customer_id
                     AND o2.order_type = 1
                     AND oi2.product_id = oi.product_id
-                    AND o2.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+                    AND o2.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
                     AND NOT EXISTS (
                         SELECT 1
                         FROM rebate_redemption_items rri
@@ -195,7 +195,7 @@ if (!empty($customers)) {
     WHERE 
         o.customer_id IN ($customerIdsForDetailsStr)
         AND o.order_type = 1
-        AND o.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+        AND o.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
         AND p.rebate = 1
         AND NOT EXISTS (
             SELECT 1
@@ -241,7 +241,7 @@ if (!empty($customers)) {
         WHERE 
             o.customer_id = $customerId
             AND o.order_type = 1
-            AND o.order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
+            AND o.order_date >= DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-01')
             AND p.rebate = 1
             AND NOT EXISTS (
                 SELECT 1
@@ -417,7 +417,7 @@ if (!empty($customers)) {
         <div class="theader">
             <div class="col2">序号</div>
             <div class="col3">客户编码</div>
-            <div class="col4">客户名称</div>
+<!--            <div class="col4">客户名称</div>-->
             <div class="col5">返点产品数</div>
             <div class="col6">返点金额合计</div>
             <div class="col7">处理人</div>
@@ -434,7 +434,7 @@ if (!empty($customers)) {
                 <div class="tline">
                     <div class="col2"><?= $tempNum ?></div>
                     <div class="col3 slidepanel "><?= htmlspecialcharsFix($customer['cs_code']) ?></div>
-                    <div class="col4 slidepanel " data-id="<?= $customer['customer_id'] ?>"><?= htmlspecialcharsFix($customer['customer_name']) ?></div>
+<!--                    <div class="col4 slidepanel " data-id="--><?php //= $customer['customer_id'] ?><!--">--><?php //= htmlspecialcharsFix($customer['customer_name']) ?><!--</div>-->
                     <div class="col5"><?= $customer['qualifying_products'] ?></div>
                     <div class="col6"><?= number_format($customer['total_rebate_amount'], 2) ?> 元</div>
                     <div class="col7">