Ejemplo n.º 1
3
 function export_order($id)
 {
     global $FANNIE_OP_DB, $FANNIE_ROOT;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $order = new PurchaseOrderModel($dbc);
     $order->orderID($id);
     $order->load();
     $items = new PurchaseOrderItemsModel($dbc);
     $items->orderID($id);
     $vendor = new VendorsModel($dbc);
     $vendor->vendorID($order->vendorID());
     $vendor->load();
     $contact = new VendorContactModel($dbc);
     $contact->vendorID($order->vendorID());
     $contact->load();
     if (!class_exists('FPDF')) {
         include_once $FANNIE_ROOT . 'src/fpdf/fpdf.php';
     }
     $pdf = new FPDF('P', 'mm', 'Letter');
     $pdf->AddPage();
     $pdf->SetFont('Arial', '', '12');
     $pdf->Cell(100, 5, 'Vendor: ' . $vendor->vendorName(), 0, 0);
     $pdf->Cell(100, 5, 'Date: ' . date('Y-m-d'), 0, 0);
     $pdf->Ln();
     $pdf->Cell(100, 5, 'Phone: ' . $contact->phone(), 0, 0);
     $pdf->Cell(100, 5, 'Fax: ' . $contact->fax(), 0, 0);
     $pdf->Ln();
     $pdf->Cell(100, 5, 'Email: ' . $contact->email(), 0, 0);
     $pdf->Cell(100, 5, 'Website: ' . $contact->website(), 0, 0);
     $pdf->Ln();
     $pdf->MultiCell(0, 5, "Ordering Info:\n" . $contact->notes(), 'B');
     $pdf->Ln();
     $cur_page = 0;
     $pdf->SetFontSize(10);
     foreach ($items->find() as $obj) {
         if ($cur_page != $pdf->PageNo()) {
             $cur_page = $pdf->PageNo();
             $pdf->Cell(25, 5, 'SKU', 0, 0);
             $pdf->Cell(20, 5, 'Order Qty', 0, 0);
             $pdf->Cell(30, 5, 'Brand', 0, 0);
             $pdf->Cell(65, 5, 'Description', 0, 0);
             $pdf->Cell(20, 5, 'Case Size', 0, 0);
             $pdf->Cell(20, 5, 'Est. Cost', 0, 0);
             $pdf->Ln();
         }
         $pdf->Cell(25, 5, $obj->sku(), 0, 0);
         $pdf->Cell(20, 5, $obj->quantity(), 0, 0, 'C');
         $pdf->Cell(30, 5, $obj->brand(), 0, 0);
         $pdf->Cell(65, 5, $obj->description(), 0, 0);
         $pdf->Cell(20, 5, $obj->caseSize(), 0, 0, 'C');
         $pdf->Cell(20, 5, sprintf('%.2f', $obj->caseSize() * $obj->unitCost() * $obj->quantity()), 0, 0);
         $pdf->Ln();
     }
     $pdf->Output('order_export.pdf', 'D');
 }
Ejemplo n.º 2
0
 public function export_order($id)
 {
     global $FANNIE_OP_DB;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $order = new PurchaseOrderModel($dbc);
     $order->orderID($id);
     $order->load();
     $items = new PurchaseOrderItemsModel($dbc);
     $items->orderID($id);
     $columns = array('Product Code', 'Inventory Item', 'Invoice Number', 'Date', 'Unit', 'Quantity', 'Cost', 'Description', 'Alt. Unit Indicator', 'Alternate Unit');
     foreach ($items->find() as $obj) {
         list($units, $unit_of_measure) = $this->getUnits($obj);
         echo $obj->sku() . ',';
         echo '"' . $obj->description() . '",';
         echo $order->vendorInvoiceID() . ',';
         echo date('Ymd', strtotime($obj->receivedDate())) . ',';
         printf('%f,', $units * $obj->caseSize() * $obj->quantity());
         echo $unit_of_measure . ',';
         printf('%.2f,', $obj->unitCost() * $obj->caseSize() * $obj->quantity());
         echo '"' . $obj->description() . '",';
         echo '"",';
         // alt. indicator
         echo '"",';
         // alt. unit
         echo "\r\n";
     }
 }
Ejemplo n.º 3
0
 function export_order($id)
 {
     global $FANNIE_OP_DB;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $order = new PurchaseOrderModel($dbc);
     $order->orderID($id);
     $order->load();
     $items = new PurchaseOrderItemsModel($dbc);
     $items->orderID($id);
     $vendor = new VendorsModel($dbc);
     $vendor->vendorID($order->vendorID());
     $vendor->load();
     echo 'Vendor,"' . $vendor->vendorName() . '",Order Date,' . date('Y-m-d') . "\r\n";
     echo "\r\n";
     echo "SKU,\"Order Qty\",Brand,Description,\"Case Size\",\"Est. Cost\"\r\n";
     foreach ($items->find() as $obj) {
         echo $obj->sku() . ',';
         echo $obj->quantity() . ',';
         echo '"' . $obj->brand() . '",';
         echo '"' . $obj->description() . '",';
         echo '"' . $obj->caseSize() . '",';
         printf('%.2f', $obj->unitCost() * $obj->caseSize() * $obj->quantity());
         echo "\r\n";
     }
 }
Ejemplo n.º 4
0
 public function guessCode()
 {
     $dbc = $this->connection;
     // case 1: item exists in products
     $deptP = $dbc->prepare('
         SELECT d.salesCode
         FROM products AS p
             INNER JOIN departments AS d ON p.department=d.dept_no
         WHERE p.upc=?');
     $deptR = $dbc->execute($deptP, array($this->internalUPC()));
     if ($dbc->numRows($deptR)) {
         $w = $dbc->fetchRow($deptR);
         return $w['salesCode'];
     }
     $order = new PurchaseOrderModel($dbc);
     $order->orderID($this->orderID());
     $order->load();
     // case 2: item is SKU-mapped but the order record
     // does not reflect the internal PLU
     $deptP = $dbc->prepare('
         SELECT d.salesCode
         FROM vendorSKUtoPLU AS v
             ' . DTrans::joinProducts('v', 'p', 'INNER') . '
             INNER JOIN departments AS d ON p.department=d.dept_no
         WHERE v.sku=?
             AND v.vendorID=?');
     $deptR = $dbc->execute($deptP, array($this->sku(), $order->vendorID()));
     if ($dbc->numRows($deptR)) {
         $w = $dbc->fetchRow($deptR);
         return $w['salesCode'];
     }
     // case 3: item is not normally carried but is in a vendor catalog
     // that has vendor => POS department mapping
     $deptP = $dbc->prepare('
         SELECT d.salesCode
         FROM vendorItems AS v
             INNER JOIN vendorDepartments AS z ON v.vendorDept=z.deptID AND v.vendorID=z.vendorID
             INNER JOIN departments AS d ON z.posDeptID=d.dept_no
         WHERE v.sku=?
             AND v.vendorID=?');
     $deptR = $dbc->execute($deptP, array($this->sku(), $order->vendorID()));
     if ($dbc->numRows($deptR)) {
         $w = $dbc->fetchRow($deptR);
         return $w['salesCode'];
     }
     return false;
 }
Ejemplo n.º 5
0
 /**
  * WarningModel::addStock()
  * 生成海外备货清单
  * @param string $ids
  * @param string $purchase
  * @return  bool
  */
 public static function addStock($ids, $purchase)
 {
     self::initDB();
     require_once WEB_PATH . "model/purchaseOrder.model.php";
     $sql = "SELECT sku,goodsCost FROM " . self::$prefix . self::$showtab . " WHERE id IN ({$ids})";
     $query = self::$dbConn->query($sql);
     if ($query) {
         $ret = self::$dbConn->fetch_array_all($query);
         $nowtime = time();
         $stocksn = PurchaseOrderModel::autoCreateOrderSn(66, 3);
         $sqlstock = "INSERT INTO " . self::$prefix . self::$owtab . "(ordersn,adduser,addtime,status) VALUES('{$stocksn}','{$purchase}','{$nowtime}','1')";
         $query = self::$dbConn->query($sqlstock);
         foreach ($ret as $v) {
             $skusql = "INSERT INTO " . self::$prefix . self::$owdetailtab . "(ordersn,sku,cost) VALUES('{$stocksn}', '{$v['sku']}', '{$v['goodsCost']}')";
             $query = self::$dbConn->query($skusql);
         }
         return true;
     } else {
         self::$errCode = "1060";
         self::$errMsg = "获取数据失败";
         return false;
     }
 }
Ejemplo n.º 6
0
 /**
  *功能:处理异常采购订单,例:采购补单、二次录入
  *@param $type 处理类型
  *@param $dataarray 料号 数量
  *@param $purid 采购员编号
  *日期:2013/08/05
  *作者:王民伟
  */
 public static function handleUnusualOrder()
 {
     $checkPur = UnusualOrderAct::checkPower();
     if ($checkPur !== true) {
         self::$errMsg = '无权限操作';
         return false;
     }
     $type = $_GET['type'];
     $dataarray = $_GET['datalist'];
     $purid = $_GET['purid'];
     global $dbConn;
     $errArr = array();
     if ($type == 'patchOrder') {
         //不能重复补单
         if (!empty($dataarray)) {
             $dbConn->begin();
             //开启事物
             $datalist = explode('@', $dataarray);
             $datanum = count($datalist);
             for ($i = 0; $i < $datanum; $i++) {
                 $infolist = explode('*', $datalist[$i]);
                 if (count($infolist) == 3) {
                     $oid = $infolist[0];
                     $oidlist = "('" . $oid . "')";
                     $sku = $infolist[1];
                     $amount = $infolist[2];
                     $skulist[] = $sku;
                     $rtn_infolist = PurchaseOrderModel::getPurSkuInfo($skulist, $purid);
                     //过滤不是自己负责的SKU,并返回所需数据
                     unset($skulist);
                     if (empty($rtn_infolist)) {
                         $errArr[] = $sku . '不属于你负责的sku';
                     } else {
                         //符合条件开始补单
                         $info_list_num = count($rtn_infolist);
                         for ($i = 0; $i < $info_list_num; $i++) {
                             $detailinfo = array();
                             $rtn_sku = $rtn_infolist[$i]['sku'];
                             //返回SKU
                             $rtn_partner_id = $rtn_infolist[$i]['partnerid'];
                             //返回供应商编号
                             $rtn_price = $rtn_infolist[$i]['goodsCost'];
                             //返回采购单价
                             $isExistPatchOrdersn = PurchaseOrderModel::isExistPatchOrdersn($rtn_partner_id, $purid);
                             //查找条件符合的补单号???
                             if (empty($isExistPatchOrdersn)) {
                                 //不存在符合的补单号
                                 //此次需判断生成订单跟踪号前缀---0:SWB;1:FZ;2:ZG
                                 $recordnumber = PurchaseOrderModel::autoCreateOrderSn($purid, 0);
                                 //生成采购补单号
                                 $maininfo['recordnumber'] = $recordnumber;
                                 //订单号
                                 $maininfo['purchaseuser_id'] = $purid;
                                 //采购员编号
                                 $maininfo['partner_id'] = $rtn_partner_id;
                                 //供应商编号
                                 $maininfo['company_id'] = 1;
                                 //公司编号
                                 $rtn_mainorder = PurchaseOrderModel::insertPatchMainOrder($maininfo);
                                 //添加补单主体信息
                                 if ($rtn_mainorder) {
                                     //主体添加成功
                                     $detailinfo['sku_id'] = PurchaseOrderModel::getSkuIdBySku($rtn_sku);
                                     //根据sku获SKU编号
                                     $detailinfo['price'] = $rtn_price;
                                     //采购单价
                                     $detailinfo['count'] = $amount;
                                     //补单数量
                                     $detailinfo['sku'] = $sku;
                                     //sku
                                     $poid = PurchaseOrderModel::getOrderIdByNum($recordnumber);
                                     $rtn_detailorder = PurchaseOrderModel::insertPatchDetailOrder($poid, $detailinfo);
                                     if ($rtn_detailorder) {
                                         $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'patchorder', $recordnumber);
                                         //通过API更新状态
                                         if ($rtn_api) {
                                             $dbConn->commit();
                                         } else {
                                             $dbConn->rollback();
                                             $errArr[] = $sku . '仓库数据修改失败';
                                         }
                                     } else {
                                         $dbConn->rollback();
                                         $errArr[] = $sku . '详情增加失败';
                                     }
                                 } else {
                                     $dbConn->rollback();
                                     $errArr[] = $sku . '主订单增加失败';
                                 }
                                 //self::$errMsg = 'success';
                             } else {
                                 //存在符合条件的补单号
                                 $detailinfo['sku_id'] = PurchaseOrderModel::getSkuIdBySku($rtn_sku);
                                 //根据sku获SKU编号
                                 $detailinfo['price'] = $rtn_price;
                                 //采购单价
                                 $detailinfo['count'] = $amount;
                                 //补单数量
                                 $detailinfo['sku'] = $sku;
                                 //sku
                                 $poid = PurchaseOrderModel::getOrderIdByNum($isExistPatchOrdersn);
                                 //根据跟踪号取编号
                                 $rtn_detailorder = PurchaseOrderModel::insertPatchDetailOrder($poid, $detailinfo);
                                 //添加采购订单明细
                                 if ($rtn_detailorder) {
                                     $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'patchorder', $isExistPatchOrdersn);
                                     //通过API更新状态
                                     if ($rtn_api) {
                                         $dbConn->commit();
                                     } else {
                                         $dbConn->rollback();
                                         $errArr[] = $sku . '仓库数据修改失败';
                                     }
                                 } else {
                                     $dbConn->rollback();
                                     $errArr[] = $sku . '详情增加失败';
                                 }
                             }
                         }
                     }
                 }
             }
         } else {
             $errArr[] = '未传入sku数据';
         }
         if (count($errArr) > 0) {
             $errStr = implode("<br/>", $errArr);
             self::$errMsg = $errStr;
         } else {
             self::$errCode = "111";
         }
     } else {
         if ($type == 'secondStockIn') {
             //二次补录
             if (!empty($dataarray)) {
                 $datalist = explode('@', $dataarray);
                 $datanum = count($datalist);
                 for ($i = 0; $i < $datanum; $i++) {
                     $infolist = explode('*', $datalist[$i]);
                     if (count($infolist) == 3) {
                         $oid = $infolist[0];
                         $oidlist = "('" . $oid . "')";
                         $sku = $infolist[1];
                         $amount = $infolist[2];
                         $skuid = PurchaseOrderModel::getSkuIdBySku($sku);
                         if (empty($skuid)) {
                             $errArr[] = $sku . "不存在库存中";
                             continue;
                         }
                         $rtnlist = PurchaseOrderModel::checkStockInOrder($skuid);
                         if (!empty($rtnlist)) {
                             //过滤找不到的,不再参与入库操作,否则会继续生成未订单
                             $rtn = PurchaseOrderAct::act_stockIn($sku, $amount);
                             $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'secondstockin', 'no');
                             if (!$rtn_api) {
                                 $errArr[] = $sku . "数据提交仓库系统失败";
                                 break;
                             }
                         } else {
                             $errArr[] = $sku . "未找到二次录入符合条件";
                         }
                     }
                 }
             } else {
                 $errArr[] = "传参有误";
             }
             if (count($errArr) > 0) {
                 self::$errMsg = implode("<br/>", $errArr);
                 return false;
             }
             self::$errCode = "111";
             return true;
         } else {
             if ($type == 'setZero') {
                 if (!empty($dataarray)) {
                     $dataarray_num = count($dataarray);
                     for ($i = 0; $i < $dataarray_num; $i++) {
                         $oidlist .= "'" . $dataarray[$i] . "',";
                     }
                     $oidlist = "(" . substr($oidlist, 0, strlen($oidlist) - 1) . ")";
                     $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'setzero', 'no');
                     $rtn['msg'] = $rtn_api;
                 } else {
                     $rtn['msg'] = 'null';
                 }
                 return $rtn;
                 exit;
             } else {
                 if ($type == 'comfirmOrder') {
                     if (!empty($dataarray)) {
                         $dataarray_num = count($dataarray);
                         for ($i = 0; $i < $dataarray_num; $i++) {
                             $oidlist .= "'" . $dataarray[$i] . "',";
                         }
                         $oidlist = "(" . substr($oidlist, 0, strlen($oidlist) - 1) . ")";
                         $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'comfirmorder', 'no');
                         $rtn['msg'] = $rtn_api;
                     } else {
                         $rtn['msg'] = 'null';
                     }
                     return $rtn;
                 } else {
                     if ($type == 'backOrder') {
                         //订单退货
                         $dataStr = trim($_GET['dataStr']);
                         $order_type = trim($_GET['order_type']);
                         $dbConn->begin();
                         if (!empty($dataarray) && !empty($dataStr) && !empty($order_type)) {
                             $dataarray_num = count($dataarray);
                             for ($i = 0; $i < $dataarray_num; $i++) {
                                 $oidlist .= "'" . $dataarray[$i] . "',";
                             }
                             $oidlist = "(" . substr($oidlist, 0, strlen($oidlist) - 1) . ")";
                             //生成退货订单
                             $datalist = explode('@', $dataStr);
                             $datanum = count($datalist);
                             for ($i = 0; $i < $datanum; $i++) {
                                 $infolist = explode('*', $datalist[$i]);
                                 if (count($infolist) == 3) {
                                     $oid = $infolist[0];
                                     $oidlist = "('" . $oid . "')";
                                     $sku = $infolist[1];
                                     $amount = $infolist[2];
                                     $skulist[] = $sku;
                                     $rtn_infolist = PurchaseOrderModel::getPurSkuInfo($skulist, $purid);
                                     //过滤不是自己负责的SKU,并返回所需数据
                                     unset($skulist);
                                     if (empty($rtn_infolist)) {
                                         $errArr[] = $sku . '不属于你负责的sku';
                                     } else {
                                         //符合条件开始补单
                                         $info_list_num = count($rtn_infolist);
                                         for ($i = 0; $i < $info_list_num; $i++) {
                                             $detailinfo = array();
                                             $rtn_sku = $rtn_infolist[$i]['sku'];
                                             //返回SKU
                                             $rtn_partner_id = $rtn_infolist[$i]['partnerid'];
                                             //返回供应商编号
                                             $rtn_price = $rtn_infolist[$i]['goodsCost'];
                                             //返回采购单价
                                             $status_type = " status = 5 AND order_type = {$order_type}";
                                             $isExistPatchOrdersn = PurchaseOrderModel::isExistPatchOrdersn($rtn_partner_id, $purid, $status_type);
                                             //查找条件符合的退货单???
                                             if (empty($isExistPatchOrdersn)) {
                                                 //不存在符合的单号
                                                 //此次需判断生成订单跟踪号前缀---0:SWB;1:FZ;2:ZG
                                                 $recordnumber = PurchaseOrderModel::autoCreateOrderSn($purid, 0);
                                                 //生成采购补单号
                                                 $maininfo['recordnumber'] = $recordnumber;
                                                 //订单号
                                                 $maininfo['purchaseuser_id'] = $purid;
                                                 //采购员编号
                                                 $maininfo['partner_id'] = $rtn_partner_id;
                                                 //供应商编号
                                                 $maininfo['company_id'] = 1;
                                                 //公司编号
                                                 $status = 5;
                                                 $rtn_mainorder = PurchaseOrderModel::insertPatchMainOrder($maininfo, $status, $order_type);
                                                 //添加主体信息
                                                 if ($rtn_mainorder) {
                                                     //主体添加成功
                                                     $detailinfo['sku_id'] = PurchaseOrderModel::getSkuIdBySku($rtn_sku);
                                                     //根据sku获SKU编号
                                                     $detailinfo['price'] = $rtn_price;
                                                     //采购单价
                                                     $detailinfo['count'] = $amount;
                                                     //数量
                                                     $detailinfo['sku'] = $sku;
                                                     $poid = PurchaseOrderModel::getOrderIdByNum($recordnumber);
                                                     $rtn_detailorder = PurchaseOrderModel::insertPatchDetailOrder($poid, $detailinfo);
                                                     if ($rtn_detailorder) {
                                                         $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'backorder', 'no');
                                                         if ($rtn_api) {
                                                             $dbConn->commit();
                                                         } else {
                                                             $dbConn->rollback();
                                                             $errArr[] = $sku . '仓库数据修改失败';
                                                         }
                                                     } else {
                                                         $dbConn->rollback();
                                                         $errArr[] = $sku . '详情增加失败';
                                                     }
                                                 } else {
                                                     $dbConn->rollback();
                                                     $errArr[] = $sku . '主订单增加失败';
                                                 }
                                                 //self::$errMsg = 'success';
                                             } else {
                                                 //存在符合条件的补单号
                                                 $detailinfo['sku_id'] = PurchaseOrderModel::getSkuIdBySku($rtn_sku);
                                                 //根据sku获SKU编号
                                                 $detailinfo['price'] = $rtn_price;
                                                 //采购单价
                                                 $detailinfo['count'] = $amount;
                                                 //补单数量
                                                 $detailinfo['sku'] = $sku;
                                                 $poid = PurchaseOrderModel::getOrderIdByNum($isExistPatchOrdersn);
                                                 //根据跟踪号取编号
                                                 $rtn_detailorder = PurchaseOrderModel::insertPatchDetailOrder($poid, $detailinfo);
                                                 //添加采购订单明细
                                                 if ($rtn_detailorder) {
                                                     $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'backorder', 'no');
                                                     if ($rtn_api) {
                                                         $dbConn->commit();
                                                     } else {
                                                         $dbConn->rollback();
                                                         $errArr[] = $sku . '仓库数据修改失败';
                                                     }
                                                 } else {
                                                     $dbConn->rollback();
                                                     $errArr[] = $sku . '详情增加失败';
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         } else {
                             $errArr[] = "传参有误";
                         }
                         if (count($errArr) > 0) {
                             self::$errMsg = implode("<br/>", $errArr);
                             return false;
                         }
                         self::$errCode = "111";
                         return true;
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 7
0
 public function post_vendorID_invoice_num_po_num_invoice_date_handler()
 {
     $dbc = FannieDB::get($this->config->get('OP_DB'));
     $skus = FormLib::get('sku', array());
     $upcs = FormLib::get('upc', array());
     $descriptions = FormLib::get('desc', array());
     $cases = FormLib::get('qty', array());
     $units = FormLib::get('units', array());
     $sizes = FormLib::get('size', array());
     $costs = FormLib::get('unitCost', array());
     $totals = FormLib::get('totalCost', array());
     $order = new PurchaseOrderModel($dbc);
     $order->vendorID($this->vendorID);
     $order->creationDate($this->invoice_date);
     $order->placed(1);
     $order->placedDate($this->invoice_date);
     $order->vendorOrderID($this->po_num);
     $order->vendorInvoiceID($this->invoice_num);
     $order->userID(0);
     $orderID = $order->save();
     $checkP = $dbc->prepare('
         SELECT v.sku
         FROM vendorItems AS v
         WHERE v.vendorID=?
             AND v.upc <> \'0000000000000\'
             AND v.upc <> \'\'
             AND v.upc IS NOT NULL
             AND v.sku=?');
     $vendorItem = new VendorItemsModel($dbc);
     $item = new PurchaseOrderItemsModel($dbc);
     for ($i = 0; $i < count($skus); $i++) {
         $sku = $skus[$i];
         $upc = BarcodeLib::padUPC(isset($upcs[$i]) ? $upcs[$i] : '');
         $qty = isset($cases[$i]) ? $cases[$i] : 1;
         $caseSize = isset($units[$i]) ? $units[$i] : 1;
         $unitSize = isset($sizes[$i]) ? $sizes[$i] : '';
         $unitCost = isset($costs[$i]) ? $costs[$i] : 0;
         $totalCost = isset($totals[$i]) ? $totals[$i] : 0;
         $desc = isset($descriptions[$i]) ? substr($descriptions[$i], 0, 50) : '';
         $item->reset();
         $item->orderID($orderID);
         $item->sku($sku);
         $item->quantity($qty);
         $item->unitCost($unitCost);
         $item->caseSize($caseSize);
         $item->receivedDate($this->invoice_date);
         $item->receivedQty($qty);
         $item->receivedTotalCost($totalCost);
         $item->unitSize($unitSize);
         $item->brand('');
         $item->description($desc);
         $item->internalUPC($upc);
         $item->save();
         /**
           Add entries to vendor catalog if they don't exist
         */
         $checkR = $dbc->execute($checkP, array($this->vendorID, $sku));
         if ($checkR && $dbc->numRows($checkR) == 0) {
             $vendorItem->vendorID($this->vendorID);
             $vendorItem->sku($sku);
             $vendorItem->upc($upc);
             $vendorItem->description($desc);
             $vendorItem->brand('');
             $vendorItem->units($caseSize);
             $vendorItem->size($unitSize);
             $vendorItem->cost($unitCost);
             $vendorItem->vendorDept(0);
             $vendorItem->save();
         }
     }
     header('Location: ' . filter_input(INPUT_SERVER, 'PHP_SELF') . '?complete=' . $orderID);
     return false;
 }
Ejemplo n.º 8
0
 public function addOrder()
 {
     global $dbConn;
     $dataArr = $_POST["dataArr"];
     $now = time();
     $status = 1;
     //未审核的订单
     $order_type = 4;
     //采购补单
     $warehouse_id = 1;
     $flag = array();
     $unOrderIdArr = array();
     $operater = $_SESSION['sysUserId'];
     $skuObj = new SkuAct();
     $skuComObj = new CommonAct();
     foreach ($dataArr as $item) {
         $price = PurchaseOrderModel::getPriceBySku($item['sku']);
         //SKU单价
         $partnerId = CommonAct::actgetPartnerIdBySku($item['sku']);
         //供应商ID
         $orderData = $this->getOrderSN($partnerId, $item['purchaseId'], 4);
         //判断同供应商、采购员跟踪号是否已存在
         $orderSN = $orderData['recordnumber'];
         if (isset($orderSN)) {
             //同一个供应商的订单已经存在
             $poid = $orderData['id'];
             $recordnumber = $orderSN;
         } else {
             $recordnumber = $this->autoCreateOrderSn($item['purchaseId'], 1);
             $sql = "INSERT INTO `ph_order`(`recordnumber`, `addtime`, `aduittime`,  `status`, `order_type`, `warehouse_id`, `purchaseuser_id`, `aduituser_id`, `partner_id`, `company_id`, `note`) VALUES ('{$recordnumber}',{$now},{$now},{$status},{$order_type},{$warehouse_id},{$item['purchaseId']},{$item['purchaseId']},{$partnerId},1,'异常到货采购补单')";
             if ($dbConn->execute($sql)) {
                 $poid = PurchaseOrderModel::getOrderIdByNum($recordnumber);
                 //根据跟踪号取采购主订单编号
             }
         }
         if (isset($poid)) {
             $sql = "select id totalNum from ph_order_detail where sku='{$item['sku']}' and po_id='{$poid}' ";
             $sql = $dbConn->execute($sql);
             $detailInfo = $dbConn->fetch_one($sql);
             if (isset($detailInfo['id'])) {
                 $sql = "update ph_order_detail set count=count+{$item['num']} WHERE id='{$poid}'";
             } else {
                 $sql = "insert into ph_order_detail (po_id,unOrderId,recordnumber,sku,count,price,stockqty) values ({$poid},'{$item['unOrderId']}','{$recordnumber}','{$item['sku']}',{$item['num']},{$price},'{$item['num']}')";
             }
             if ($dbConn->execute($sql)) {
                 $usql = "UPDATE `ph_sku_reach_record` SET `ordersn`='{$recordnumber}',operatime={$now}, operatorId={$operater},status = 1 WHERE id={$item['id']}";
                 //$skuObj->tallySkuRecord($item['sku'],$item['num'],1); // hold 住一部分数量
                 $dbConn->execute($usql);
                 $skuComObj->calcAlert($item['sku']);
                 $flag[] = 1;
                 $unOrderIdArr[] = $item["unOrderId"];
             } else {
                 $flag[] = 0;
             }
         }
     }
     //$pushObj = new CommonAct();
     //$pushObj->setTallyIsUse($unOrderIdArr);
     return json_encode($flag);
 }
Ejemplo n.º 9
0
 /**
  *根据供应商编号获取额度、预警额度、是否签约
  *@param $id  订单编号数组
  *日期:2013/11/27
  *作者:王民伟
  */
 public static function getParInfo($id)
 {
     self::initDB();
     $sql = "SELECT *  FROM ph_partner WHERE   id={$id} ";
     $query = self::$dbConn->query($sql);
     if ($query) {
         $ret = self::$dbConn->fetch_array_all($query);
         if (empty($ret[0])) {
             self::$errMsg = "无数据";
             return false;
         }
         return $ret;
     }
     self::$errMsg = "获取数据失败";
     return false;
 }
Ejemplo n.º 10
0
 /**
  * 生成海外备货单,根据下单人合并订单明细
  * Enter description here ...
  */
 public function createOwOrder()
 {
     global $dbConn;
     $skulist = $_POST['skulist'];
     $operator_id = $_SESSION[C('USER_AUTH_SYS_ID')];
     //操作人员ID
     $comid = $_SESSION[C('USER_COM_ID')];
     //公司ID
     $type = $_POST['type'];
     $rollback = false;
     $existSku = '';
     $ismark = 0;
     BaseModel::begin();
     //开始事务
     foreach ($skulist as $key => $sku) {
         $price = PurchaseOrderModel::getPriceBySku($sku['sku']);
         //SKU单价
         $purid = OwOrderModel::getPurchaseidBySku($sku['sku']);
         $parid = OwOrderModel::getPartnerId($sku['sku']);
         //供应商ID
         $parid = $parid['partnerId'];
         $storeid = 1;
         //仓库ID
         $orderData = OwOrderModel::getOwOrderNum($operator_id);
         //判断同操作员跟踪号是否已存在(未审核状态下)
         $orderSN = $orderData['recordnumber'];
         $main = array();
         $detail = array();
         if (!empty($orderSN)) {
             //存在符合条件的跟踪号,直接插入采购订单明细
             /*
             				$orderHasSku                        = OwOrderModel::orderExistSku($sku['sku']);
             				if($orderHasSku){
             					$existSku .= '['.$sku['sku'].'],';
             					continue;
             				}*/
             $detail['sku'] = $sku['sku'];
             $detail['price'] = $price;
             //单价
             $detail['count'] = $sku['rec'];
             //采购数量
             $detail['goods_recommend_count'] = $sku['rec'];
             //采购数量
             $detail['recordnumber'] = $orderData['recordnumber'];
             $poid = $orderData['id'];
             //根据跟踪号取采购主订单编号
             $detail['parid'] = $parid;
             //料号供应商ID
             $detail['po_id'] = $poid;
             $dataSet = array2sql($detail);
             $sql = "insert into ph_ow_order_detail set {$dataSet}  ";
             $rtndetail = $dbConn->execute($sql);
             if ($rtndetail === false) {
                 $rollback = true;
             } else {
                 $ismark = 1;
             }
         } else {
             //不存在符合条件的跟踪号重新生成
             $recordnumber = PurchaseOrderModel::autoCreateOrderSn($purid, $comid);
             //生成对应公司的采购订单跟踪号
             if (!empty($recordnumber)) {
                 //生成采购订单号成功
                 $main['recordnumber'] = $recordnumber;
                 //跟踪号
                 $main['purchaseuser_id'] = $purid;
                 //采购员ID
                 $main['operator_id'] = $operator_id;
                 //操作人员id
                 $main['warehouse_id'] = $storeid;
                 //仓库ID
                 $main['company_id'] = $comid;
                 //公司编号
                 $main['partner_id'] = $parid;
                 //供应商ID
                 $main['addtime'] = time();
                 if ($type == "oversea") {
                     $main['order_type'] = 5;
                     // 给海外仓备货的订单
                 } else {
                     $main['order_type'] = 1;
                     // 正常订单
                 }
                 $dataSet = array2sql($main);
                 $sql = "insert into ph_ow_order set {$dataSet}  ";
                 $rtnmain = $dbConn->execute($sql);
                 if ($rtnmain) {
                     //主订单添加成功
                     /*
                     						$orderHasSku                        = OwOrderModel::orderExistSku($sku['sku']);
                     						if($orderHasSku){
                     							$existSku .= '['.$sku['sku'].'],';
                     							continue;
                     						}*/
                     $detail['sku'] = $sku['sku'];
                     $detail['price'] = $price;
                     //单价
                     $detail['count'] = $sku['rec'];
                     //采购数量
                     $detail['goods_recommend_count'] = $sku['rec'];
                     //采购数量
                     $detail['parid'] = $parid;
                     //料号供应商ID
                     $detail['recordnumber'] = $recordnumber;
                     $poid = OwOrderModel::getOwPoid($recordnumber);
                     //根据跟踪号取采购主订单编号
                     $detail['po_id'] = $poid;
                     $dataSet = array2sql($detail);
                     $sql = "insert into ph_ow_order_detail set {$dataSet}  ";
                     $rtndetail = $dbConn->execute($sql);
                     if ($rtndetail === false) {
                         $rollback = true;
                     } else {
                         $ismark = 1;
                     }
                 } else {
                     $rollback = true;
                 }
             } else {
                 $rollback = true;
             }
         }
     }
     //$existSku = substr($existSku, 0, strlen($existSku) - 1);
     if ($rollback == false) {
         //if($ismark == 1){
         BaseModel::commit();
         BaseModel::autoCommit();
         $result['msg'] = 'yes';
         //}else{
         //	$result['msg'] = 'warn';
         //}
         //$result['tip'] = $existSku;
     } else {
         BaseModel::rollback();
         BaseModel::autoCommit();
         $result['msg'] = 'no';
     }
     return json_encode($result);
 }
Ejemplo n.º 11
0
 function process_file($linedata)
 {
     global $FANNIE_OP_DB;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $skuCol = $this->get_column_index('sku');
     $costCol = $this->get_column_index('cost');
     $uQtyCol = $this->get_column_index('unitQty');
     $cQtyCol = $this->get_column_index('caseQty');
     $uSizeCol = $this->get_column_index('unitSize');
     $cSizeCol = $this->get_column_index('caseSize');
     $brandCol = $this->get_column_index('brand');
     $descCol = $this->get_column_index('desc');
     $upcCol = $this->get_column_index('upc');
     $upccCol = $this->get_column_index('upcc');
     $vendorID = FormLib::get('vendorID');
     $inv = FormLib::get('identifier', '');
     $orderDate = FormLib::get('orderDate', date('Y-m-d H:i:s'));
     $recvDate = FormLib::get('recvDate', '');
     $order = new PurchaseOrderModel($dbc);
     $order->vendorID($vendorID);
     $order->creationDate($orderDate);
     $order->placedDate($orderDate);
     $order->placed(1);
     $order->userID(FannieAuth::getUID());
     $order->vendorOrderID($inv);
     $order->vendorInvoiceID($inv);
     $orderID = $order->save();
     $item = new PurchaseOrderItemsModel($dbc);
     $info = new VendorItemsModel($dbc);
     $ret = '';
     foreach ($linedata as $line) {
         if (!isset($line[$skuCol])) {
             continue;
         }
         if (!isset($line[$costCol])) {
             continue;
         }
         $sku = $line[$skuCol];
         $cost = $line[$costCol];
         $cost = trim($cost, ' ');
         $cost = trim($cost, '$');
         if (!is_numeric($cost)) {
             $ret .= "<i>Omitting item {$sku}. Cost {$cost} isn't a number</i><br />";
             continue;
         }
         $unitQty = $uQtyCol !== false && isset($line[$uQtyCol]) ? $line[$uQtyCol] : 0;
         $caseQty = $cQtyCol !== false && isset($line[$cQtyCol]) ? $line[$cQtyCol] : 0;
         if ($unitQty == 0 && $caseQty == 0) {
             // no qty specified.
             continue;
         }
         $unitSize = $uSizeCol !== false && isset($line[$uSizeCol]) ? $line[$uSizeCol] : 0;
         $caseSize = $cSizeCol !== false && isset($line[$cSizeCol]) ? $line[$cSizeCol] : 0;
         $brand = $brandCol !== '' && isset($line[$brandCol]) ? $line[$brandCol] : '';
         $desc = $descCol !== false && isset($line[$descCol]) ? $line[$descCol] : '';
         $upc = '';
         if ($upcCol !== false && isset($line[$upcCol])) {
             $upc = BarcodeLib::padUPC($line[$upcCol]);
         } elseif ($upccCol !== false && isset($line[$upccCol])) {
             $upc = BarcodeLib::padUPC($line[$upccCol]);
             $upc = '0' . substr($upc, 0, 12);
         }
         $info->reset();
         $info->vendorID($vendorID);
         $info->sku($sku);
         if ($info->load()) {
             if ($brand === '') {
                 $brand = $info->brand();
             }
             if ($desc === '') {
                 $desc = $info->description();
             }
             if ($unitSize === 0) {
                 $unitSize = $info->size();
             }
             if ($caseSize === 0) {
                 $caseSize = $info->units();
             }
             $upc = $info->upc();
         }
         if ($caseQty == 0 && $unitQty != 0) {
             if ($caseSize == 0) {
                 $caseQty = $unitQty;
                 $caseSize = 1;
             } else {
                 $caseQty = $unitQty / $caseSize;
             }
         } elseif ($caseQty != 0 && $unitQty == 0) {
             if ($caseSize == 0) {
                 $unitQty = $caseQty;
                 $caseSize = 1;
             } else {
                 $unitQty = $caseQty * $caseSize;
             }
         } elseif ($caseQty != 0 && $unitQty != 0) {
             if ($caseSize == 0) {
                 $caseSize = $caseQty / $unitQty;
             }
         }
         $unitCost = $cost / $unitQty;
         $item->orderID($orderID);
         $item->sku($sku);
         if ($item->load()) {
             // multiple records for same item
             $item->quantity($caseQty + $item->quantity());
             if ($recvDate !== '') {
                 $item->receivedTotalCost($cost + $item->receivedTotalCost());
                 $item->receivedQty($caseQty + $item->receivedQty());
                 $item->receivedDate($recvDate);
             }
         } else {
             $item->quantity($caseQty);
             if ($recvDate !== '') {
                 $item->receivedTotalCost($cost);
                 $item->receivedQty($caseQty);
                 $item->receivedDate($recvDate);
             }
         }
         $item->unitCost($unitCost);
         $item->caseSize($caseSize);
         $item->brand($brand);
         $item->description($desc);
         $item->internalUPC($upc);
         $item->save();
     }
     $ret .= "<p>Import Complete";
     $ret .= '<br />';
     $ret .= '<a href="' . $this->config->get('URL') . 'purchasing/ViewPurchaseOrders.php?id=' . $orderID . '">View Order</a></p>';
     $this->results = $ret;
     return true;
 }
Ejemplo n.º 12
0
 public function get_id_adjust_view()
 {
     $dbc = FannieDB::get($this->config->get('OP_DB'));
     $order = new PurchaseOrderModel($dbc);
     $order->orderID($this->adjust);
     $order->load();
     $orderJSON = $order->toJSON();
     $items = new PurchaseOrderItemsModel($dbc);
     $items->orderID($this->adjust);
     $itemsJSON = '[';
     foreach ($items->find() as $item) {
         $itemsJSON .= $item->toJSON() . ',';
     }
     if (strlen($itemsJSON) > 1) {
         $itemsJSON = substr($itemsJSON, 0, strlen($itemsJSON) - 1);
     }
     $itemsJSON .= ']';
     $orderJSON = str_replace('\\', '\\\\', $orderJSON);
     $itemsJSON = str_replace('\\', '\\\\', $itemsJSON);
     $this->addOnloadCommand("existingOrder('{$orderJSON}', '{$itemsJSON}');\n");
     return $this->get_id_view();
 }
Ejemplo n.º 13
0
 public function addNewOrder()
 {
     global $dbConn;
     $skulist = $_POST['skulist'];
     //$purchaseId = $_SESSION[C('USER_AUTH_SYS_ID')];//采购员ID
     $purchaseId = $skulist[0]["cguserId"];
     //采购员ID
     $comid = $_SESSION[C('USER_COM_ID')];
     //公司ID
     $skuComObj = new CommonAct();
     //重新计算这个sku 的已订购数量
     $purchaseOrder = new PurchaseOrderAct();
     $rollback = false;
     foreach ($skulist as $sku) {
         $price = $sku['price'];
         //SKU单价
         $partnerId = $purchaseOrder->getPartnerId($sku['sku']);
         //供应商ID
         $partnerId = $partnerId['partnerId'];
         $storeid = 1;
         //仓库ID
         $orderData = $purchaseOrder->getOrderSN($partnerId, $purchaseId);
         //判断同供应商、采购员跟踪号是否已存在
         $orderSN = $orderData['recordnumber'];
         $main = array();
         $detail = array();
         if (!empty($orderSN)) {
             //存在符合条件的跟踪号,直接插入采购订单明细
             $detail['sku'] = $sku['sku'];
             $detail['price'] = $price;
             //单价
             $detail['count'] = $sku['rec'];
             //采购数量
             $detail['goods_recommend_count'] = $sku['rec'];
             //采购数量
             $dataSet = array2sql($detail);
             $sql = "insert into ph_order_detail set {$dataSet}  ";
             $dbConn->execute($sql);
         } else {
             //不存在符合条件的跟踪号重新生成
             $recordnumber = PurchaseOrderModel::autoCreateOrderSn($purchaseId, $comid);
             //生成对应公司的采购订单跟踪号
             if (!empty($recordnumber)) {
                 //生成采购订单号成功
                 $main['recordnumber'] = $recordnumber;
                 //跟踪号
                 $main['purchaseuser_id'] = $purchaseId;
                 //采购员ID
                 $main['warehouse_id'] = $storeid;
                 //仓库ID
                 $main['partner_id'] = $partnerId;
                 //供应商ID
                 $main['company_id'] = $comid;
                 //公司编号
                 $dataSet = array2sql($main);
                 $sql = "insert into ph_order set {$dataSet}  ";
                 $dbConn->execute($sql);
                 if ($rtnmain) {
                     //主订单添加成功
                     $detail['sku'] = $sku['sku'];
                     $detail['price'] = $price;
                     //单价
                     $detail['count'] = $sku['rec'];
                     //采购数量
                     $detail['goods_recommend_count'] = $sku['rec'];
                     //采购数量
                     $detail['recordnumber'] = $recordnumber;
                     $dataSet = array2sql($detail);
                     $sql = "insert into ph_order_detail set {$dataSet}  ";
                     $dbConn->execute($sql);
                     $skuComObj->calcAlert($detail['sku']);
                     //重新计算已订购数量
                 }
             }
         }
     }
 }
Ejemplo n.º 14
0
 /**
   Receiving AJAX callback.
   Lookup item in the order and display form fields
   to enter required info 
 */
 public function get_id_sku_handler()
 {
     $dbc = $this->connection;
     $model = new PurchaseOrderItemsModel($dbc);
     $model->orderID($this->id);
     $model->sku($this->sku);
     // lookup by SKU but if nothing is found
     // try using the value as a UPC instead
     $found = false;
     if ($model->load()) {
         $found = true;
     } else {
         $model->reset();
         $model->orderID($this->id);
         $model->internalUPC(BarcodeLib::padUPC($this->sku));
         $matches = $model->find();
         if (count($matches) == 1) {
             $model = $matches[0];
             $found = true;
         }
     }
     // item not in order. need all fields to add it.
     if (!$found) {
         echo '<div class="alert alert-danger">SKU not found in order</div>';
         echo '<form onsubmit="saveReceive(); return false;">';
         echo '<table class="table table-bordered">';
         echo '<tr><th>SKU</th><th>UPC</th><th>Brand</th><th>Description</th>
             <th>Qty Ordered</th><th>Cost (est)</th><th>Qty Received</th><th>Cost Received</th></tr>';
         $order = new PurchaseOrderModel($dbc);
         $order->orderID($this->id);
         $order->load();
         $item = new VendorItemsModel($dbc);
         $item->vendorID($order->vendorID());
         $item->sku($this->sku);
         $item->load();
         printf('<tr>
             <td>%s<input type="hidden" name="sku" value="%s" /></td>
             <td><input type="text" class="form-control" name="upc" value="%s" /></td>
             <td><input type="text" class="form-control" name="brand" value="%s" /></td>
             <td><input type="text" class="form-control" name="description" value="%s" /></td>
             <td><input type="text" class="form-control" name="orderQty" value="%s" /></td>
             <td><input type="text" class="form-control" name="orderCost" value="%.2f" /></td>
             <td><input type="text" class="form-control" name="receiveQty" value="%s" /></td>
             <td><input type="text" class="form-control" name="receiveCost" value="%.2f" /></td>
             <td><button type="submit" class="btn btn-default">Add New Item</button><input type="hidden" name="id" value="%d" /></td>
             </tr>', $this->sku, $this->sku, $item->upc(), $item->brand(), $item->description(), 1, $item->cost() * $item->units(), 0, 0, $this->id);
         echo '</table>';
         echo '</form>';
     } else {
         // item in order. just need received qty and cost
         echo '<form onsubmit="saveReceive(); return false;">';
         echo '<table class="table table-bordered">';
         echo '<tr><th>SKU</th><th>UPC</th><th>Brand</th><th>Description</th>
             <th>Qty Ordered</th><th>Cost (est)</th><th>Qty Received</th><th>Cost Received</th></tr>';
         if ($model->receivedQty() === null) {
             $model->receivedQty($model->quantity());
         }
         if ($model->receivedTotalCost() === null) {
             $model->receivedTotalCost($model->quantity() * $model->unitCost() * $model->caseSize());
         }
         printf('<tr>
             <td>%s<input type="hidden" name="sku" value="%s" /></td>
             <td>%s</td>
             <td>%s</td>
             <td>%s</td>
             <td>%s</td>
             <td>%.2f</td>
             <td><input type="text" class="form-control" name="qty" value="%s" /></td>
             <td><input type="text" class="form-control" name="cost" value="%.2f" /></td>
             <td><button type="submit" class="btn btn-default">Save</button><input type="hidden" name="id" value="%d" /></td>
             </tr>', $this->sku, $this->sku, $model->internalUPC(), $model->brand(), $model->description(), $model->quantity(), $model->quantity() * $model->unitCost() * $model->caseSize(), $model->receivedQty(), $model->receivedTotalCost(), $this->id);
         echo '</table>';
         echo '</form>';
     }
     return false;
 }
Ejemplo n.º 15
0
 /**
  * ProductStockalarmModel::updateWarnNew()
  * 新更新选择料号的预警信息
  * @param array skuArr 料号数组
  * @param int gid 采购员ID
  * @return bool 
  */
 public static function updateWarnNew($sku)
 {
     self::initDB();
     $res = CommonModel::getSkuInfo($sku);
     print_r($res);
     exit;
     $res = json_decode($res, true);
     $days7 = 0.7;
     $days15 = 0.2;
     $days30 = 0.1;
     $dataarray = array();
     $run_starttime = time();
     $first_sale = CommonModel::getSkuFirstSaleTime($sku);
     $last_sale = CommonModel::getSkuLastSaleTime($sku);
     $stock_qty = CommonModel::getSkuStockqty($sku);
     // 实际库存
     $everyday_sale = $res[0]['everyday_sale'];
     // 每日均量
     $purchase_days = $res[0]['purchasedays'];
     // 采购天数
     $alert_days = $res[0]['goods_days'];
     // 预警天数
     $warehouse_id = 76;
     // 仓库编号
     $partner_id = 0;
     // 供应商编号
     $salensend = CommonModel::getSkuSalensend($sku);
     // 待发货数量
     $interceptnums = CommonModel::getSkuInterceptnums($sku);
     // 拦截数量
     $autointerceptnums = CommonModel::getSkuAutointerceptnums($sku);
     // 自动拦截数量
     $auditingnums = CommonModel::getSkuAuditingnums($sku);
     // 审核数量
     $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;
         // 可用库存数量
         if ($saleday > 30) {
             if ($last_sale > $thirtycheck) {
                 // 最近一次卖出时间已经超过一个月
                 $end1 = strtotime(date('Y-m-d') . '23:59:59');
                 $start1 = $end1 - 7 * 24 * 3600;
                 $qty1 = CommonModel::getSkuSaleProducts($start1, $end1, $sku, $everyday_sale);
                 // getSaleNum($start1, $end1, $sku, $warehouse_id, $everyday_sale);//取1~7天销售量
                 $end2 = $start1;
                 $start2 = $end1 - 15 * 4 * 600;
                 $qty2 = CommonModel::getSkuSaleProducts($start2, $end2, $sku, $everyday_sale);
                 // getSaleNum($start1, $end1, $sku, $warehouse_id, $everyday_sale);//取1~7天销售量
                 $end3 = $start2;
                 $start3 = $end1 - 30 * 24 * 3600;
                 $qty3 = CommonModel::getSkuSaleProducts($start3, $end3, $sku, $everyday_sale);
                 // getSaleNum($start1, $end1, $sku, $warehouse_id, $everyday_sale);//取1~7天销售量
                 $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')];
     $res = self::updateWarnInfo($sku, $dataarray);
     $run_endtime = time();
     $speed_time = $run_endtime - $run_starttime;
     if ($res) {
         return "料号:{$sku} 缓存更新成功!";
     } else {
         self::$errCode = 10001;
         self::$errMsg = "料号:{$sku} 缓存更新失败!";
         return false;
     }
 }