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; }
function getpartsaleandnosendall($sku, $storeid) { //获取虚拟代发货库存+部分包货占用代发货库存 //add by Herman.Xi @20131021 list($packagingnums, $inums) = get_partsalenosend($sku, $storeid); $salensend = getsaleandnosendall($sku, $storeid) + $packagingnums; return $salensend; }