美文网首页
运费分摊

运费分摊

作者: 四夕皓月 | 来源:发表于2024-07-09 18:03 被阅读0次
  1. 获取订单下的所有的 trackings
  2. 获取每个tracking 的运费跟真实运费
// 还原 cost 的 markup
// 9开头的运单都是usps,没有加 markup
if(preg_match('/^9|^42/', $item->tracking_number)){
    $markup = 1;
} else {
    // 2023-11-10把markup从1.2改为1.26,假设第二天这些单开始被发货时应用新的markup,取11月11日中间的一个order作为分界点
    // 2024-01-19改回1.2,air改为1.1
    if($item->order_id > 5619000 && $item->order_id <= 5830547) {
        $factor1 = 1.15;
        $factor2 = 1.26;
    } else {
        $factor1 = 1.1;
        $factor2 = 1.2;
    }
    $markup = in_array($item->service, ['FIRST_OVERNIGHT', 'PRIORITY_OVERNIGHT'])? $factor1 : $factor2;
}
// 计算预估运费
$item->cost = round($item->cost / $markup, 2);
  1. 获取 tracking 跟 job 之间的关系, 分摊每个 tracking,按照 op 的 shipping_cost 进行加权
// 判断订单的所有运费是否已经获取到 invoice,如果不是就使用预估运费
$costType = $ordersTrackingsNotInvoiced[strval($orderId)] ?? false ? 'cost' : 'net';

$ops->groupBy('shipping_group')->each(function ($sgops, $shippingGroupId) use ($costType, &$trackings, &$opIds, $orderId) {
    // 不存在 Combine shipping 不需要分摊
    if (! $shippingGroupId ) {
        $sgops->each(function ($op) use ($costType) {
            $op->shipping_cost = $op->{$costType};
        });
    } else {
        $total = 0;
        $weight = [];
        foreach ($sgops as $op) {
            // 每个运费只计算一次,join 表的时候数据会多出来
            if (!isset($trackings[$op->tracking_number])) {
                $total += $op->{$costType};
                $trackings[$op->tracking_number] = true;
            }
            if (!isset($opIds[strval($op->orders_products_id)])) {
                // 按照 shipping_fee 进行分摊
                $weight[] = $op->shipping_fee;
                $opIds[strval($op->orders_products_id)] = true;
            } else {
                $weight[] = 0;
            }
        }
        $shippCosts = divide_by_weights($total, $weight);
        foreach ($sgops as $i => $op) {
            $op->shipping_cost = $shippCosts[$i] ?? 0;
        }
        if ($orderId == $this->orderId) {
            \dump($sgops, $total, $weight);
        }
    }
});

相关文章

  • 亚马逊计算利润时怎么分摊头程运费?

    计算利润时你还不会做头程分摊吗?这篇实操文章值得一看。 了解头程运输的方式 头程运费:即中国出口商将货物从国内通过...

  • SAP Business One(SAP-B1)销售运费分摊解决

    EXPAND思邦 SAP Business One云化方案(Cloud Solution)非常方便地布署在云端,是...

  • 分摊

    分摊 CASE 甲公司与客户签订合同,销售A、B、C三种产品(分别构成履约义务),合同总价款为120万 A、B、C...

  • 总部资产减值

    总部资产里能分摊的分摊到各个资产组。不能分摊的最后组成资产组组合(这里的组合是各个资产组,能分摊的总部资产,不能分...

  • 拼多多如何设置运费模板

    一、什么是运费模版 1.运费模版就是为一批商品设置同一个运费。当您需要修改配送地区和运费的时候,这些关联商品的运费...

  • 运费

    今天吃完晚饭就回房间玩电脑了,姐姐在大厅看电视,玩着玩着突然想吃水果,又不想动,就叫她帮我拿进来,结果,她帮我拿进...

  • 运费

    今天和几个小伙伴一起买了些东西,东西到后,科室小伙伴问我几个人,算运费呢?我说算两个人吧!谁知算完后,仅仅运费就要...

  • 运费

    一早,小孩就发微信说让我帮他邮寄一些物品,这是他放假时和我说好的。 邮寄的物品是键帽和键盘裸架...

  • 压力分摊

    原来我一直是一个报喜不报忧,有事自己扛的人,这样成就了自己一颗强大的内心,但是也造就了别人的理所当然。有时候在思考...

  • 责任分摊

    上周在做红包的项目,要求周五上线,为此周五凌晨四点才回去。至此,我经历了两次比较艰苦的上线,觉得自己还没有完全适应...

网友评论

      本文标题:运费分摊

      本文链接:https://www.haomeiwen.com/subject/myrzcjtx.html