Пример #1
0
 public static function updateOrderProductStock($order_code)
 {
     if (!$order_code) {
         return false;
     }
     $stocklocks = ProductsStockLock::getList("order_code='{$order_code}'", '*', 'id ASC');
     if (!$stocklocks) {
         return false;
     }
     foreach ($stocklocks as $stocklock) {
         $product_sku = $stocklock['product_sku'];
         $product_num = $stocklock['product_num'];
         $exp_date = $stocklock['exp_date'];
         $orderpro = OrdersProducts::getOne(array("order_code" => $order_code, 'product_sku' => $product_sku), 'id, exp_date');
         $id = isset($orderpro['id']) ? (int) $orderpro['id'] : 0;
         $expdate = isset($orderpro['exp_date']) ? (int) $orderpro['exp_date'] : 0;
         if ($id && !$expdate) {
             OrdersProducts::update($id, array('product_num' => $product_num, 'exp_date' => $exp_date));
         } else {
             $data = array('order_code' => $order_code, 'product_sku' => $product_sku, 'product_num' => $product_num, 'exp_date' => $stocklock['exp_date']);
             OrdersProducts::insert($data);
         }
     }
 }
Пример #2
0
 public static function outStockInsertOrderProduct($order_code, $sku, $qt)
 {
     //DB::Debug();
     $stocknum = ProductsStock::getSkuStock($sku);
     //检查库存是否充足
     if ($stocknum < $qt) {
         return false;
     }
     DB::tranBegin('outStockInsertOrderProduct');
     //事务开始
     $stock_ids = ProductsStock::getSkuOutStock($sku, $qt);
     //查询库存中的批号
     if (!$stock_ids) {
         return false;
     }
     foreach ($stock_ids as $sid => $stocks) {
         $exp_date = isset($stocks['exp_date']) ? (int) $stocks['exp_date'] : 0;
         $stock = isset($stocks['stock']) ? (int) $stocks['stock'] : 0;
         if ($stock < 1) {
             continue;
         }
         ProductsStock::reduce("id='{$sid}'", 'stock', $stock);
         //从库存和批号中减去
         OrdersProducts::insert(array('order_code' => $order_code, 'product_sku' => $sku, 'product_num' => $stock, 'exp_date' => $exp_date));
     }
     $commit_status = DB::tranEnd('outStockInsertOrderProduct');
     return $commit_status;
 }
Пример #3
0
 //事务开始
 $address_id = ReceiverAddress::insert($address);
 $data = array('order_code' => $order_code, 'user_code' => $user_code, 'discount' => $discount, 'amount' => $newtotal, 'receiver_address_id' => $address_id, 'create_time' => time());
 $order_id = Orders::insert($data);
 foreach ($sku_ids as $sku_id => $qt) {
     $product_sku = ProductsSku::getData($sku_id, 'sku');
     $product_sku = isset($product_sku['sku']) ? $product_sku['sku'] : '';
     $stocknum = ProductsStock::getSkuStock($product_sku);
     if (!$product_sku || $stocknum < $qt) {
         DB::rollBack();
         Templates::Assign('errormsg', "订单保存失败,[{$product_sku}] 库存不足,错误代码 PY001");
         Templates::Display('error.html');
         exit;
     }
     $data = array('order_code' => $order_code, 'product_sku' => $product_sku, 'product_num' => $qt);
     OrdersProducts::insert($data);
     Cart::clearCart($userid, $sku_id);
     $locked = ProductsStockLock::add($order_code, $product_sku, $qt);
     if (!$locked) {
         break;
     }
 }
 if (!$locked) {
     DB::tranStop();
 }
 $commit_status = DB::tranEnd('pay');
 //--- end tran
 if (!$order_id || !$commit_status) {
     Templates::Assign('errormsg', "订单保存失败,[{$product_sku}] 库存不足,错误代码 PAY002");
     Templates::Display('error.html');
     exit;