<?php

namespace Scm_product\Lib;

use Dever;

class Stock
{
	public function out_check($id, $name, $data)
	{
		$table = Dever::input('table');
		$col = Dever::input('col');
		$goods = Dever::param('goods', $data);
		list($goods_id, $sku_id) = explode('-', $goods);
		$where['goods_id'] = $goods_id;
		$where['sku_id'] = $sku_id;
		$where[$col] = Dever::input('update_' . $col);
		$info = Dever::db($table)->getOne($where);
		if ($info) {
			$num = Dever::param('num', $data);
			if ($info['total'] < $num) {
				$goods_info = Dever::load('scm_product/lib/info')->getBaseInfo($goods_id, $sku_id);
				return Dever::alert('【' . $goods_info['aname'] . '】剩余库存:' . $info['total'] . $goods_info['unit'] . ',已不足出库');
			}
		} else {
			$goods_info = Dever::load('scm_product/lib/info')->getBaseInfo($goods_id, $sku_id);
			return Dever::alert('【' . $goods_info['aname'] . '】剩余库存:0' . $goods_info['unit'] . ',已不足出库');
		}
	}

    # 更新库存
    public function update_commit($id, $name, $data)
    {
    	$table = Dever::input('table');
    	$type = Dever::input('type');
    	$col = Dever::input('col');
    	$stock = Dever::input('stock');

    	$info = Dever::db($table)->find($id);
    	if ($table && $type && $info && $info['status'] == 1) {
    		$audit = Dever::param('audit', $data);
    		$admin = Dever::load('manage/auth.info');
    		if ($admin) {
    			$update['audit_admin'] = $admin['id'];
    		}
    		$update['status'] = $audit;
    		$update['where_id'] = $id;
    		Dever::db($table)->update($update);
    		if ($audit == 2) {
    			# 审核通过 更新库存
    			$this->up($table, $type, $col, $stock, $info);
    		}
    		Dever::db($table . '_goods')->updates(array('option_order_id' => $info['id'], 'set_status' => $update['status']));
    	}
    }

    public function up($table, $type, $col, $stock, $info)
    {
    	if ($col && $stock && isset($info[$col])) {
    		$order_goods = Dever::db($table . '_goods')->select(array('order_id' => $info['id'], 'status' => 1));
			if ($order_goods) {
				foreach ($order_goods as $k => $v) {
					$update = array('goods_id' => $v['goods_id'], $col => $info[$col]);
					$goods = Dever::db($stock)->find($update);
					if (!$goods) {
						Dever::db($stock)->insert($update);
					}
					$update['sku_id'] = $v['sku_id'];
					$goods = Dever::db($stock . '_sku')->find($update);
					if (!$goods) {
						if ($type == 'in') {
							if (!$v['batch']) {
								$v['batch'] = date('Ymd');
							}
							$where['batch'] = $v['batch'];
							$where['cash'] = $v['cash'];
						}
						$id = Dever::db($stock . '_sku')->insert($update);
						$where['where_id'] = $id;
					} else {
						$where['where_id'] = $goods['id'];
					}

					$where[$type . '_num'] = $v['num'];
					$method = $type . 'Update';
					Dever::db($stock . '_sku')->$method($where);

					//Dever::db($table . '_goods')->update(array('where_id' => $v['id'], 'status' => 2));
				}
			}
		}
    }
}