예제 #1
0
function create_purchase_list($name = '', $readcache = true, $skuarray = array())
{
    $run_starttime = time();
    //test
    global $user, $truename, $dbcon, $PURCHASE_POWER_SQL;
    $days7 = 0.7;
    $days15 = 0.2;
    $days30 = 0.1;
    $dataarrays = array();
    $searchname = empty($name) ? $truename : $name;
    $searchsql = !empty($name) ? " AND cguser='******' " : "AND cguser IN ({$PURCHASE_POWER_SQL})";
    if ($readcache) {
        $sql = "SELECT * FROM ebay_sku_statistics WHERE purchaseuser='******'";
        $sql = $dbcon->execute($sql);
        $storelists = $dbcon->getResultArray($sql);
        return $storelists;
    }
    $sql = "SELECT id,store_name FROM ebay_store WHERE ebay_user='******'";
    $sql = $dbcon->execute($sql);
    $storelists = $dbcon->getResultArray($sql);
    foreach ($storelists as $storelist) {
        $storeid = $storelist['id'];
        $store_name = $storelist['store_name'];
        $skuwhere = !empty($skuarray) ? "AND goods_sn IN (" . implode(',', array2strarray($skuarray)) . ")" : '';
        $sql = "SELECT goods_id,goods_sn,goods_name,factory,cguser FROM ebay_goods WHERE ebay_user='******' {$searchsql} {$skuwhere}";
        if ($truename == 'vipchen') {
            echo $sql . '<br>';
        }
        $sql = $dbcon->execute($sql);
        $goods_lists = $dbcon->getResultArray($sql);
        foreach ($goods_lists as $goods_list) {
            $dataarrays = array();
            $factory = $goods_list['factory'];
            $goods_sn = $goods_list['goods_sn'];
            $cguser = $goods_list['cguser'];
            //add by xiaojinhua
            $sql = "SELECT goods_count,goods_sx,goods_days,purchasedays FROM ebay_onhandle WHERE goods_sn='{$goods_sn}' AND store_id={$storeid}";
            $sql = $dbcon->execute($sql);
            $onhandle_list = $dbcon->getResultArray($sql);
            if (empty($onhandle_list)) {
                continue;
            }
            $goods_days = $onhandle_list[0]['goods_days'];
            $goods_count = $onhandle_list[0]['goods_count'];
            $sql = "SELECT * FROM ebay_sku_statistics WHERE sku='{$goods_sn}'";
            $sql = $dbcon->execute($sql);
            $sku_info = $dbcon->getResultArray($sql);
            if (!isset($sku_info[0]['first_sale']) || empty($sku_info[0]['first_sale'])) {
                $first_sale = get_firstsale($goods_sn);
            } else {
                $first_sale = $sku_info[0]['first_sale'];
            }
            // add by xiaojinhua
            $sql = "SELECT isuse FROM ebay_goods WHERE goods_sn='{$goods_sn}'";
            $sql = $dbcon->execute($sql);
            $goods_info = $dbcon->getResultArray($sql);
            $isuse = $goods_info[0]['isuse'];
            //sku 是否在线状态 0 在线 2零库存 1 下线
            //2013-02-19
            $everyday_sale = isset($sku_info[0]['everyday_sale']) && $sku_info[0]['everyday_sale'] != '0.00' ? $sku_info[0]['everyday_sale'] : 5;
            $stockused = stockbookused($goods_sn, $storeid, $cguser);
            if ($first_sale > 0) {
                $_time = time() - $first_sale;
                $saleday = ceil($_time / (3600 * 24));
                list($packagingnums, $inums) = get_partsalenosend($goods_sn, $storeid);
                $salensend = getsaleandnosendall($goods_sn, $storeid) + $packagingnums;
                $interceptnums = getinterceptall($goods_sn, $storeid) + $inums;
                $autointerceptnums = get_autointercept($goods_sn, $storeid);
                //自动拦截数量
                $auditingnums = getauditingall($goods_sn, $storeid);
                $last_sale = isset($sku_info[0]['last_sale']) ? $sku_info[0]['last_sale'] : 0;
                $thirtycheck = time() - 30 * 24 * 3600;
                $last_sale = get_lastsale($goods_sn);
                $total_count = $goods_count + $stockused;
                $alarm_count = $total_count - $salensend - $interceptnums - $auditingnums - $autointerceptnums;
                if ($truename == 'vipchen') {
                    var_dump($last_sale, $total_count, $salensend, $interceptnums, $auditingnums, $stockused, $saleday, $last_sale, $thirtycheck);
                }
                if ($saleday > 30) {
                    if ($last_sale > $thirtycheck) {
                        $end1 = strtotime(date('Y-m-d') . '23:59:59');
                        $start1 = $end1 - 7 * 24 * 3600;
                        $qty1 = getSaleProducts($start1, $end1, $goods_sn, $storeid, $everyday_sale);
                        $end2 = $start1;
                        $start2 = $end1 - 15 * 24 * 3600;
                        $qty2 = getSaleProducts($start2, $end2, $goods_sn, $storeid, $everyday_sale);
                        $end3 = $start2;
                        $start3 = $end1 - 30 * 24 * 3600;
                        $qty3 = getSaleProducts($start3, $end3, $goods_sn, $storeid, $everyday_sale);
                        //  取得已经预订的产品数量
                        if (!($isuse == "1" || $isuse == "3")) {
                            // 没下线的sku才进行这种计算
                            $everyday_sale = $qty1 / 7 * $days7 + $qty2 / 8 * $days15 + $qty3 / 15 * $days30;
                        }
                        $needqty = ceil($everyday_sale * $goods_days) + $interceptnums;
                        // 计算产品库存报警数量
                        if ($truename == 'vipchen') {
                            var_dump($alarm_count, '----------' . ($alarm_count < $needqty));
                        }
                        $dataarray['factory'] = $factory;
                        $dataarray['everyday_sale'] = $everyday_sale > 0.005 ? round($everyday_sale, 2) : 0;
                        $dataarray['storeid'] = $storeid;
                        $dataarray['booknums'] = $stockused;
                        $dataarray['sevendays'] = $qty1;
                        $dataarray['fifteendays'] = $qty2;
                        $dataarray['thirtydays'] = $qty3;
                        $dataarray['last_sale'] = $last_sale;
                        $dataarray['salensend'] = $salensend;
                        $dataarray['interceptnums'] = $interceptnums;
                        $dataarray['autointerceptnums'] = $autointerceptnums;
                        $dataarray['auditingnums'] = $auditingnums;
                        $dataarray['is_warning'] = $alarm_count < 1 || $alarm_count < $needqty ? 1 : 0;
                    } else {
                        $dataarray['factory'] = $factory;
                        $dataarray['everyday_sale'] = 0;
                        $dataarray['storeid'] = $storeid;
                        $dataarray['booknums'] = $stockused;
                        $dataarray['sevendays'] = 0;
                        $dataarray['fifteendays'] = 0;
                        $dataarray['thirtydays'] = 0;
                        $dataarray['last_sale'] = $last_sale;
                        $dataarray['salensend'] = $salensend;
                        $dataarray['interceptnums'] = $interceptnums;
                        $dataarray['autointerceptnums'] = $autointerceptnums;
                        $dataarray['auditingnums'] = $auditingnums;
                        $dataarray['is_warning'] = $alarm_count < 0 ? 1 : 0;
                    }
                } else {
                    $end = strtotime(date('Y-m-d') . '23:59:59');
                    $start = $end - $saleday * 24 * 3600;
                    $qty = getSaleProducts($start, $end, $goods_sn, $storeid, $everyday_sale);
                    if (!($isuse == "1" || $isuse == "3")) {
                        //判断是否在线
                        $everyday_sale = $qty / $saleday;
                    }
                    $stockused = stockbookused($goods_sn, $storeid, $cguser);
                    $needqty = ceil($everyday_sale * $goods_days) + $interceptnums;
                    // 计算产品库存报警数量
                    $dataarray['factory'] = $factory;
                    $dataarray['everyday_sale'] = round($everyday_sale, 2);
                    $dataarray['storeid'] = $storeid;
                    $dataarray['booknums'] = $stockused;
                    $dataarray['sevendays'] = 0;
                    $dataarray['fifteendays'] = 0;
                    $dataarray['thirtydays'] = 0;
                    $dataarray['last_sale'] = $last_sale;
                    $dataarray['salensend'] = $salensend;
                    $dataarray['interceptnums'] = $interceptnums;
                    $dataarray['autointerceptnums'] = $autointerceptnums;
                    $dataarray['auditingnums'] = $auditingnums;
                    $dataarray['is_warning'] = $alarm_count < 1 || $alarm_count < $needqty ? 1 : 0;
                }
            } else {
                $dataarray['factory'] = $factory;
                $dataarray['everyday_sale'] = 0;
                $dataarray['storeid'] = $storeid;
                $dataarray['booknums'] = $stockused;
                $dataarray['sevendays'] = 0;
                $dataarray['fifteendays'] = 0;
                $dataarray['thirtydays'] = 0;
                $dataarray['last_sale'] = 0;
                $dataarray['salensend'] = 0;
                $dataarray['auditingnums'] = 0;
                $dataarray['interceptnums'] = 0;
                $dataarray['autointerceptnums'] = 0;
                $dataarray['is_warning'] = 0;
            }
            $dataarray['lastupdate'] = time();
            $dataarray['first_sale'] = $first_sale;
            $dataarray['purchaseuser'] = $goods_list['cguser'];
            $sql = !empty($sku_info) ? "UPDATE ebay_sku_statistics SET " . array2sql($dataarray) . " WHERE sku='{$goods_sn}'" : "INSERT INTO ebay_sku_statistics SET sku='{$goods_sn}'," . array2sql($dataarray);
            if ($truename == 'vipchen') {
                echo $sql . "<br><br>";
            }
            $dbcon->update($sql);
            $dataarrays[] = $dataarray;
            unset($dataarray);
        }
    }
    $run_endtime = time();
    $speed_time = $run_endtime - $run_starttime;
    echo "更新缓存一共花了  " . $speed_time . "秒";
    return $dataarrays;
}
예제 #2
0
function getpartsaleandnosendall($sku, $storeid)
{
    //获取虚拟代发货库存+部分包货占用代发货库存
    //add by Herman.Xi @20131021
    list($packagingnums, $inums) = get_partsalenosend($sku, $storeid);
    $salensend = getsaleandnosendall($sku, $storeid) + $packagingnums;
    return $salensend;
}