<?php
/**
 * Class voucher_checkout model
 */
class voucher_checkoutMod extends mod{
	function __construct(){
		$e = require(mvc::$cfg['ROOT'].'mod/element/voucher_checkout.php');
		parent::__construct($e);
    }
	/**
	 * Method 列表数据
	 * @param string $where 查询sql条件
	 * @param int $page 页码(从1开始)
	 * @param int $pagesize 分页大小
	 * @param string $sidx 排序字段(单个)
	 * @param string $sord 排序方式 asc|desc
	 * @param string $orderby 排序sql(可多个)[优先]
	 * @return array 数据集
	 */
	public function list($isview, $where='',$page=0,$pagesize=0,$sidx='',$sord='asc',$orderby=''){
		$sql = $this->e['view'];
		if(trim($where)!='') {
			if(strtolower(substr(trim($where),0,3))!=='and') $where = ' AND ' . $where;
			$sql .= $where;
		}
		if($sidx=='' && $orderby=="") $orderby =  $this->e['order']; //默认排序
		if($orderby!=''){
			$sql.= sprintf(' ORDER BY %s', $orderby);
		}else if($sidx!=''){
			$sql.= sprintf(' ORDER BY %s %s',$sidx,$sord);
		}
		if($page>0 && $pagesize>0){
			$pages = $this->dbRead->PageLimit($sql,$page,$pagesize);
			$sql .= $pages['limit'];
		}
		$rows = $this->dbRead->Table($sql);
		$sql = "select max(vc_cycle) from voucher_checkout";
		$maxCheckoutCycel = $this->dbRead->One($sql);
		$sql = "select min(vc_cycle) from voucher_checkout";
		$minCheckoutCycel = $this->dbRead->One($sql);
		$i=0;
		if(empty($isview)){
			$sql = sprintf("select v_cycle from voucher where v_cycle>'%s' group by v_cycle order by v_cycle desc",$maxCheckoutCycel);
			$rows2 = $this->dbRead->Table($sql);
			$cycleData = [];
			foreach($rows2 as $row){
				$cycleData[$i]['cycle'] = $row['v_cycle'];
				$cycleData[$i]['ischeckout'] = 0;
				$cycleData[$i]['view'] = 0;
				$cycleData[$i]['op'] = 0;
				if($i==count($rows2)-1) $cycleData[$i]['op'] = 1; //月结标识
				$i++;
			}
		}
		if($rows){
			$op = -1; //反结算标识
			foreach($rows as $row){
				$cycleData[$i]['cycle'] = $row['vc_cycle'];
				$cycleData[$i]['ischeckout'] = 1;
				$cycleData[$i]['view'] = 1;
				$cycleData[$i]['op'] = $op; //第一条为 -1 反结算标识
				if($op!=0) $op = 0;
				if($minCheckoutCycel == $row['vc_cycle']){
					$cycleData[$i]['ischeckout'] = -9; //科目初始余额
					if(count($rows)==1) $cycleData[$i]['op'] = -9; //科目初始余额
				}
				$i++;
			}
		}
		$footerData=[];
		$data = [
			'page'=> $pages['page'],
			'total'=> $pages['total'],
			'records' => $pages['records'],
			"userdata"=> $footerData,
			'rows' => $rows
		];
		return $cycleData;
	}
}

