<?php
class w_pjldlAction extends action
{
    function __construct(){
        parent::__construct();
		$this->mod = new w_pjldlMod();
    }

    function __destruct(){
    }

	/**
	 * Method 列表数据
	 */
    function list(){
		$where = '';
		if($_POST['filters']){
			$groups = json_decode(htmlspecialchars_decode($_POST['filters']),true);
			$where = $this->groups2sql($groups);
		}
		$data = $this->mod->list($where, $_POST['page'], $_POST['rows'], $_POST['sidx'], $_POST['sord']);
		echo json_encode($data, JSON_UNESCAPED_UNICODE);
	}
	/**
	 * Method 通过关键字取一行数据
	 */
	function getRowByKey($key){
		$row = $this->mod->getRowByKey('*',$key);
		if($row){
			$this->exitJson(0,$row);
		}else{
			$this->exitJson(2000);
		}
	}
	/**
	 * Method 唯一值检测
	 */
	function onlyCheck(){
		$result = false;
		$wpd_id = (empty($_REQUEST['wpd_id'])) ? 0 : $_REQUEST['wpd_id'];
		$wpd_dls = $_REQUEST['wpd_dls'];
		if($wpd_dls!=''){
			$where = sprintf("wpd_id<>'%s' AND wpd_dls='%s'",$wpd_id,$wpd_dls);
			if($this->mod->getOne('1',$where)){
				$result = true;
			}
		}
		echo ($result) ? 'false' : 'true'; //存在不通过，不存在通过
	}
	/**
	 * Method 添加操作
	 */
	function add(){
		$input = file_get_contents('php://input');
		$params = json_decode($input,true);
		$key = $this->mod->e['key'];
		$post = $this->mod->checkValueForm($params,[$key]);//添加时,主键可以为空
		if($post['error']){
			$this->exitJson(2001,$post['error']);
		}
		$data = $post['data'];
		$this->mod->Begin();
		$lastID = $this->mod->addRow($data);
		$dbOk = $this->mod->End();
		if($dbOk && $lastID>0){
			$this->exitJson(0,['key'=>$lastID]);
		}else{
			$this->exitJson(2000);
		}
	}
	/**
	 * Method 修改操作
	 */
	function edit(){
		$input = file_get_contents('php://input');
		$params = json_decode($input,true);
		$post = $this->mod->checkValueForm($params);
		if($post['error']){
			$this->exitJson(2001,$post['error']);
		}
		$data = $post['data'];
		$key = $data[$this->mod->e['key']];
		$this->mod->Begin();
		$this->mod->setRowByKey($data,$key);
		$dbOk = $this->mod->End();
		if($dbOk){
			$this->exitJson(0,['key'=>$key]);
		}else{
			$this->exitJson(2000);
		}
	}
	/**
	 * Method 删除操作
	 */
	function delete(){
		$input = file_get_contents('php://input');
		$params = json_decode($input,true);
		if(empty($params['value'])){
			$this->exitJson(2001);
		}
		$this->mod->Begin();
		$this->mod->deleteRows("wpd_cycle='".trim($params['value'])."'");
		$dbOk = $this->mod->End();
		if($dbOk){
			$this->exitJson(0);
		}else{
			$this->exitJson(2000);
		}
	}
	/**
	 * 导入
	 */
	function import(){
		$object = new objectMod();
		$input = file_get_contents('php://input');
		$params = json_decode($input,true);
		$onamekeys = [];
		$cycle='';
		$wpd_ywcycle='';
		foreach($params as $i=>$row){
			$line = $i+1;
			$v = trim();
			foreach($row as $k=>$v){
				$v = trim($v);
				if($k=='wpd_cycle'){
					preg_match('/(\d+)年(\d+)月/',$v,$m);
					if(count($m)!=3 || !is_numeric($m[1]) || !is_numeric($m[2])){
						$this->exitJson(2001,'第 '.$line.' 行，会计期间格式不正确, 格式例: 2020年5月');
					}
					if($m[2].''<'10') $m[2] = '0'.$m[2];
					$v = $m[1].$m[2];
					if(strlen($v)!=6){
						$this->exitJson(2001,'第 '.$line.' 行，会计期间格式不正确, 格式例: 2020年5月');
					}
					if($cycle==''){
						$cycle = $v;
					}
					if($cycle!=$v){
						$this->exitJson(2001,'第 '.$line.' 行，出现了新的会计期间，一次仅支持导入一个会计期间的数据');
					}
				}else if($k=='wpd_ywcycle'){
					preg_match('/(\d+)年(\d+)月/',$v,$m);
					if(count($m)!=3 || !is_numeric($m[1]) || !is_numeric($m[2])){
						$this->exitJson(2001,'第 '.$line.' 行，业务期间格式不正确, 格式例: 2020年5月');
					}
					if($m[2].''<'10') $m[2] = '0'.$m[2];
					$v = $m[1].$m[2];
					if(strlen($v)!=6){
						$this->exitJson(2001,'第 '.$line.' 行，业务期间格式不正确, 格式例: 2020年5月');
					}
					if($wpd_ywcycle==''){
						$wpd_ywcycle = $v;
					}
					if($wpd_ywcycle!=$v){
						$this->exitJson(2001,'第 '.$line.' 行，出现了新的业务期间，一次仅支持导入一个业务期间的数据');
					}
				}else if($k=='wpd_date' && $v!=''){
					$v = date('Y-m-d',strtotime(str_replace('.','-',$v)));
					if($v<='1970-01-01'){
						$this->exitJson(2001,'第 '.$line.' 行，发放日期不是一个正确的日期格式');
					}
				}else if($k=='wpd_staff_text'){
					$o_id = $object->getOidByName(2,$v);
					if(empty($o_id) || $v==''){
						$o_id = 0;
					}
					$row['wpd_staff'] = $o_id;
				}else if($k=='wpd_dls_text'){
					$o_id = $object->getOidByName(4,$v);
					if(empty($o_id) || $v==''){
						$o_id = 0;
					}
					$row['wpd_dls'] = $o_id;
				}else if($k=='wpd_zch_text'){
					$o_id = 0;
					if($v!=''){
						if(isset($onamekeys[$v])){
							$o_id = $onamekeys[$v];
						}else{
							$orow = $object->getRowByName(200,$v);
							if(empty($orow)){
								$this->exitJson(2001,'第 '.$line.' 行，转出行 '.$v.'，没有在科目表中找到');
							}
							$o_id = $orow['o_id'];
							$onamekeys[$v] = $o_id;
						}
					}
					$row['wpd_zch'] = $o_id;
				}else if($k=='wpd_type_text'){
					$o_id=0;
					if($v!=''){
						if(isset($onamekeys[$v])){
							$o_id = $onamekeys[$v];
						}else{
							$orow = $object->getRowByName(200,$v);
							if(empty($orow)){
								$this->exitJson(2001,'第 '.$line.' 行，业务类型 '.$v.'，没有在科目表中找到');
							}
							$o_id = $orow['o_id'];
							$onamekeys[$v] = $o_id;
						}
					}
					$row['wpd_type'] = $o_id;
				}else if($k=='wpd_qty'){
					if($v=='')
						$v=1;
					else if(!is_numeric($v)){
						$this->exitJson(2001,'第 '.$line.' 行，数量 '.$v.'，不是一个数字');
					}
				}else if($k=='wpd_sr'){
					if($v=='')
						$v=0;
					else if(!is_numeric($v)){
						$this->exitJson(2001,'第 '.$line.' 行，收入金额 '.$v.'，不是一个数字');
					}
				}else if($k=='wpd_money'){
					if($v=='')
						$v=0;
					else if(!is_numeric($v)){
						$this->exitJson(2001,'第 '.$line.' 行，提成金额 '.$v.'，不是一个数字');
					}
				}
				$row[$k]=$v;
			}
			$params[$i] = $row;
		}
		$this->mod->Begin();
		$this->mod->import($cycle,$params);
		$isOk = $this->mod->End();
		if($isOk)
			$this->exitJson(0,$params);
		else
			$this->exitJson(2000);
	}
}