/** * CommonAct::actGetSkuInfo() * 获取某个sku的代发货,实际库存等详细数据 * @param string $sku 料号 * @return array */ public static function actGetSkuInfo($sku) { $sku = isset($sku) ? post_check($sku) : ""; if (empty($sku)) { self::$errCode = 10000; self::$errMsg = "sku参数错误"; return false; } $res = CommonModel::getSkuInfo($sku); self::$errCode = CommonModel::$errCode; self::$errMsg = CommonModel::$errMsg; return $res; }
/** * ProductStockalarmModel::updateWarnOld() * 更新选择料号的预警信息 * @param array skuArr 料号数组 * @param int gid 采购员I * @return bool */ public static function updateWarnOld($gid, $skuArr) { self::initDB(); foreach ($skuArr as $v) { $res = CommonModel::getSkuInfo($v); $res = json_decode($res, true); $days7 = 0.7; $days15 = 0.2; $days30 = 0.1; $dataarray = array(); $run_starttime = time(); $first_sale = $res[0]['first_sale']; //$first_sale = get_firstSaleTime ($sku); //echo 'API返回第一次售出时间:'.$first_sale."<br/>"; //$last_sale = get_lastSaleTime($sku); $last_sale = $res[0]['last_sale']; $stock_qty = $res[0]['stock_qty']; // 实际库存 $everyday_sale = $res[0]['everyday_sale']; // 每日均量 $purchase_days = $res[0]['purchasedays']; // 采购天数 $alert_days = $res[0]['goods_days']; // 预警天数 $warehouse_id = 76; // 仓库编号 $partner_id = 0; // 供应商编号 $salensend = $res[0]['salensend']; // 待发货数量 $interceptnums = $res[0]['interceptnums']; // 拦截数量 $autointerceptnums = $res[0]['autointerceptnums']; // 自动拦截数量 $end = '1375290061'; $start = '1354294861'; //$rtnnum = get_saleNum ( $start, $end, $sku, 76, $everyday_sale ); // echo 'API返回销量:'.$rtnnum."<br/>"; $auditingnums = $res['auditingnums']; // 审核数量 //$hasbooknum = PurchaseOrderModel::hasBookNum ( $skuid, $warehouse_id, $purid ); // 已订购数量 $hasbooknum = !empty($hasbooknum) ? $hasbooknum : 0; if ($first_sale > 0) { $time = time() - $first_sale; $saleday = ceil($time / (3600 * 24)); // 至今距离第一次卖出时间天数 $thirtycheck = time() - 30 * 24 * 3600; // 一个月前 $totalqty = $stock_qty + $hasbooknum; // 总库存=实际库存+已订购数量 $hasuseqty = $totalqty - $salensend - $interceptnums - $auditingnums - $autointerceptnums; // 可用库存数量 // $saleday = 35; // 测试 // $thirtycheck = '1243705586'; if ($saleday > 30) { if ($last_sale > $thirtycheck) { // 最近一次卖出时间已经超过一个月 $end1 = strtotime(date('Y-m-d') . '23:59:59'); $start1 = $end1 - 7 * 24 * 3600; $qty1 = 5; // getSaleNum($start1, $end1, $sku, $warehouse_id, $everyday_sale);//取1~7天销售量 $end2 = $start1; $start2 = $end1 - 15 * 4 * 600; $qty2 = 12; // getSaleNum($start2, $end2, $sku, $warehouse_id, $everyday_sale);//取7~15天销售量 $end3 = $start2; $start3 = $end1 - 30 * 24 * 3600; $qty3 = 20; // getSaleNum($start3, $end3, $sku, $warehouse_id, $everyday_sale);//取16~30天销售量 $everyday_sale = $qty1 / 7 * $days7 + $qty2 / 8 * $days15 + $qty3 / 15 * $days30; // 每日均量计算 $needqty = ceil($everyday_sale * $alert_days) + $interceptnums; // 库存预警警数量 $dataarray['everyday_sale'] = $everyday_sale > 0.005 ? round($everyday_sale, 2) : 0; $dataarray['booknums'] = $hasbooknum; $dataarray['salensend'] = $salensend; $dataarray['auditingnums'] = $auditingnums; $dataarray['interceptnums'] = $interceptnums; $dataarray['autointerceptnums'] = $autointerceptnums; $dataarray['is_warning'] = $hasuseqty < 1 || $hasuseqty < $needqty ? 1 : 0; } else { $dataarray['everyday_sale'] = 0; $dataarray['booknums'] = $hasbooknum; $dataarray['salensend'] = $salensend; $dataarray['auditingnums'] = $auditingnums; $dataarray['interceptnums'] = $interceptnums; $dataarray['autointerceptnums'] = $autointerceptnums; $dataarray['is_warning'] = $hasuseqty < 0 ? 1 : 0; } } else { $end = strtotime(date('Y-m-d') . '23:59:59'); $start = $end - ($saleday + 1) * 24 * 3600; $qty = 20; // getSaleNum($start, $end, $sku, $warehouse_id, $everyday_sale); $everyday_sale = $qty / $saleday; $needqty = ceil($everyday_sale * $alert_days) + $interceptnums; // 计算产品库存报警数量 $dataarray['everyday_sale'] = round($everyday_sale, 2); $dataarray['booknums'] = $hasbooknum; $dataarray['salensend'] = $salensend; $dataarray['auditingnums'] = $auditingnums; $dataarray['interceptnums'] = $interceptnums; $dataarray['autointerceptnums'] = $autointerceptnums; $dataarray['is_warning'] = $hasuseqty < 1 || $hasuseqty < $needqty ? 1 : 0; } } else { $dataarray['everyday_sale'] = 0; $dataarray['booknums'] = $hasbooknum; $dataarray['salensend'] = 0; $dataarray['auditingnums'] = 0; $dataarray['interceptnums'] = 0; $dataarray['autointerceptnums'] = 0; $dataarray['is_warning'] = 0; } if ($needqty <= 0) { $dataarray['is_warning'] = 0; } $dataarray['lastupdate'] = time(); $dataarray['factory'] = $res[0]['factory']; $dataarray['purchaseuser'] = $res[0]['purchaseuser']; $dataarray['storeid'] = $res[0]['storeid']; $dataarray['sevendays'] = $res[0]['sevendays']; $dataarray['fifteendays'] = $res[0]['fifteendays']; $dataarray['thirtydays'] = $res[0]['thirtydays']; $dataarray['ow_stock'] = $res[0]['ow_count']; $dataarray['it_stock'] = $res[0]['it_count']; $dataarray['stock_qty'] = $res[0]['goods_count']; $dataarray['purchaseDays'] = $res[0]['purchasedays']; $dataarray['alertDays'] = $res[0]['goods_days']; $dataarray['purchaseId'] = $_SESSION[C('USER_AUTH_SYS_ID')]; $rtnupdatedata = self::updateWarnInfo($v, $dataarray); } $run_endtime = time(); $speed_time = $run_endtime - $run_starttime; return $rtnupdatedata; }