全部
常见问题
产品动态
精选推荐

普通商品核销后退款,流水记录有误

管理 管理 编辑 删除

问题说明:普通商品门店后台先核销然后退款,流水记录会多一条信息

修改文件:app\services\store\finance\StoreFinanceFlowServices

修改方法:setFinance()

public function setFinance($order, $type = 1, $price = 0)
    {
        /** @var StoreOrderServices $storeOrderServices */
        $storeOrderServices = app()->make(StoreOrderServices::class);
        switch ($type) {
            case 1 ://商品订单
                if ($order['store_id'] > 0) {
                    //门店订单
                    //2.1修改门店流水按照下单支付金额计算,
                    if ($order['type'] == 8) {
                        $order['pay_price'] = $order['total_price'];
                    }
                    $total_price = $order['pay_price'];
                    //支付金额+积分抵扣(由平台承担)
                    $total_price = bcadd((string)$total_price, (string)($order['deduction_price'] ?? 0), 2);
                    $append = [
                        'pay_price' => $total_price,
                        'total_price' => $total_price,
                        'rate' => 1
                    ];
                    //支付订单
                    $this->savaData($order, $total_price, 1, 1, 1);
                    //现金支付增加
                    if ($order['pay_type'] == PayServices::CASH_PAY) {
                        //交易订单记录
                        $this->savaData($order, $order['pay_price'], 0, 2, 1, $append);
                    }
                    $product_type = $storeOrderServices->value(['id' => $order['id']], 'product_type');
                    if (!in_array($product_type, [4, 5, 6])) {
                        //门店订单
                        $this->savaData($order, $total_price, 1, 2, 1, $append);
                    }
                    [$type, $rate] = $this->getRate(1, (int)$order['shipping_type']);
                    //费率按实付金额计算
                    $total_price = bcmul((string)$order['pay_price'], (string)$this->getPercent($rate), 2);
                    $append['rate'] = $rate;
                    //交易订单记录
                    if (!in_array($product_type, [4, 5, 6])) {
                        $this->savaData($order, $total_price, 1, $type, 2, $append);
                        $this->savaData($order, $total_price, 0, 3, 1, $append);
                    }
                } else {
                    $orderList = $storeOrderServices->getSonOrder($order['id'], '*', 1);
                    if ($orderList) {
                        foreach ($orderList as $order) {
                            $total_price = $order['pay_price'];
                            $append = [
                                'pay_price' => $total_price,
                                'total_price' => $total_price,
                                'rate' => 1
                            ];
                            //支付订单
                            $this->savaData($order, $total_price, 1, 1, 1);
                            //门店订单
                            $this->savaData($order, $total_price, 1, 2, 1, $append);
                            [$type, $rate] = $this->getRate(1, (int)$order['shipping_type']);
                            //费率按实付金额计算
                            $total_price = bcmul((string)$order['pay_price'], (string)$this->getPercent($rate), 2);
                            $append['rate'] = $rate;
                            //交易订单记录
                            $this->savaData($order, $total_price, 1, $type, 2);
                            $this->savaData($order, $total_price, 0, 3, 1, $append);
                        }
                    }
                }
                break;
            case 2://充值订单
                //充值订单返点
                [$type, $rate] = $this->getRate(2);
                $order['pay_type'] = $order['recharge_type'];
                $append = [
                    'pay_price' => $order['price'],
                    'total_price' => $order['price'],
                    'rate' => $rate
                ];
                //订单账单
                $this->savaData($order, $order['price'], 1, $type, 2, $append);

                //收银台充值线下付款记录一条负记录
                if (in_array($order['recharge_type'], [PayServices::OFFLINE_PAY, PayServices::CASH_PAY])) {
                    $this->savaData($order, $order['price'], 0, $type, 1, $append);
                }
                //返点
                $pay_price = bcmul($order['price'], $this->getPercent($rate), 2);
                $this->savaData($order, $pay_price, 1, 5, 1, $append);
                break;
            case 3://付费会员订单
                //购买付费会员返点
                [$type, $rate] = $this->getRate(2);
                $append = [
                    'pay_price' => $order['pay_price'],
                    'total_price' => $order['pay_price'],
                    'rate' => $rate
                ];
                //订单账单
                $this->savaData($order, $order['pay_price'], 1, $type, 2, $append);

                //收银台充值线下付款记录一条负记录
                if (in_array($order['pay_type'], [PayServices::OFFLINE_PAY, PayServices::CASH_PAY])) {
                    $this->savaData($order, $order['pay_price'], 0, $type, 1, $append);
                }
                //返点
                $pay_price = bcmul($order['pay_price'], $this->getPercent($rate), 2);
                $this->savaData($order, $pay_price, 1, 6, 1, $append);
                break;
            case 4://退款
                //取下单流水记录费率
                $rate = $this->dao->value(['link_id' => $order['order_id'], 'type' => 3, 'trade_type' => 1], 'rate');
                if (!$rate) {
                    //获取失败,如果是子订单;在查询主订单
                    if (isset($order['pid']) && $order['pid']) {
                        $order_id = $storeOrderServices->value(['id' => $order['pid']], 'order_id');
                        if ($order_id) $rate = $this->dao->value(['link_id' => $order_id, 'type' => 3, 'trade_type' => 1], 'rate');
                    }
                }
                if (!$rate) {//未获取到,下单保存费率;获取系统配置
                    [$type, $rate] = $this->getRate(1, (int)$order['shipping_type']);
                }
                $total_price = bcmul($price, $this->getPercent($rate), 2);
                $append['rate'] = $rate;

                //退款
                $this->savaData($order, $price, 0, 4, 1, $append);
                $this->savaData($order, $total_price, 1, 3, 1, $append);
                break;
            case 5://充值退款
                //取充值流水记录费率
                $rate = $this->dao->value(['link_id' => $order['order_id'], 'type' => 5, 'trade_type' => 1], 'rate');
                if (!$rate) {//获取失败,取系统配置
                    $rate = sys_config('store_recharge_order_rate');
                }
                $order['pay_type'] = $order['recharge_type'];
                $append = [
                    'pay_price' => $order['price'],
                    'total_price' => $order['price'],
                    'rate' => $rate
                ];
                //订单账单
                $this->savaData($order, $price, 0, 4, 2, $append);
                //返点扣除
                $pay_price = bcmul($price, $this->getPercent($rate), 2);
                $this->savaData($order, $pay_price, 0, 5, 1, $append);
                break;
            case 6://配送订单
                $append = ['pay_price' => $order['cargo_price']];
                $this->savaData($order, $price, 0, 13, 1, $append);
                break;
            case 7://取消配送订单
                $append = ['pay_price' => $order['cargo_price']];
                $this->savaData($order, $price, 1, 13, 1, $append);
                break;
            case 8://核销次卡、卡项、预约
                $product_type = $storeOrderServices->value(['id' => $order['id']], 'product_type');
                if (!in_array($product_type, [4, 5, 6])) return true;
                [$type, $rate] = $this->getRate(1, (int)$order['shipping_type']);
                //费率金额计算
                $total_price = bcmul((string)$price, (string)$this->getPercent($rate), 2);
                $append['rate'] = $rate;
                $append = [
                    'pay_price' => $price,
                    'total_price' => $price
                ];
                $this->savaData($order, $price, 1,   14, 1, $append);
                //交易订单记录
                $this->savaData($order, $total_price, 1, $type, 2, $append);
                $this->savaData($order, $total_price, 0, 3, 1, $append);
                break;
        }
    }



请登录后查看

全 最后编辑于2025-04-28 15:05:37

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
36
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服