diff --git a/Application/Admin/Controller/AggregateFinanceSetController.class.php b/Application/Admin/Controller/AggregateFinanceSetController.class.php new file mode 100644 index 000000000..6f3b4f3ab --- /dev/null +++ b/Application/Admin/Controller/AggregateFinanceSetController.class.php @@ -0,0 +1,229 @@ +<?php + +namespace Admin\Controller; +use Think\Controller; + +/** + * 后台总览聚合 + * @author cz + */ +class AggregateFinanceSetController extends Controller { + public $apihost; + public $token = "LYHTQDJS"; + + public function _initialize(){ + $apihost = M("Kv")->field("value")->where("`key` = 'aggregate_finance_api'")->find(); + if(empty($apihost)){ + echo "请先设置请求接口aggregate_finance_api的值".PHP_EOL;die; + } + $this->apihost = $apihost['value']; + } + public function setFreeDateCount($begin,$end='') + { + if($end == '') $end = $begin; + //判断日期格式 + $patten = "/^\d{4}[\-](0?[1-9]|1[012])[\-](0?[1-9]|[12][0-9]|3[01])$/"; + if (!preg_match($patten, $begin)) { + die("开始时间格式错误"); + } + if (!preg_match($patten, $end)) { + die("结束时间格式错误"); + } + if(strtotime($end) < strtotime($begin)){ + die("结束时间不能比开始时间小"); + } + if(strtotime($end)+86399-24*3600 > time()){ + die("结束时间不能大于当前"); + } + + $starttime = $begin?strtotime($begin):mktime(0,0,0,date('m'),date('d'),date('Y')); + $endtime = $end?strtotime($end)+86399:$starttime+86399; + $datelist = get_date_list($starttime,$endtime,1); + $countdate = count($datelist); + for($i=0;$i<$countdate;$i++){ + $this->setDailyCount($datelist[$i]); + } + } + public function setDailyCount($stime="now") + { + if($stime=="now"){ + $stime=time(); + }else{ + $stime = strtotime($stime); + } + $nowdate = date("Y-m-d",$stime); + $w = (int)date("w",$stime); + $d = (int)date("d",$stime); + + if($w == 1 || $d == 1){ + if($w == 1){ + echo $nowdate.":".PHP_EOL; + echo "--周结begin".PHP_EOL; + $this->setWeekCount($stime); + } + if($d == 1){ + echo $nowdate.":".PHP_EOL; + echo "--月结&补点begin".PHP_EOL; + $this->setMonthCount($stime); + } + }else{ + echo $nowdate."非周一和月初,无需任何处理".PHP_EOL; + } + } + public function setWeekCount($stime)//进行周结 + { + $begintime = mktime(0,0,0,date('m',$stime),date('d',$stime)-7,date('Y',$stime)); + $endtime = mktime(0,0,0,date('m',$stime),date('d',$stime),date('Y',$stime))-1; + $this->getAndSaveData(0,$begintime,$endtime); + } + public function setMonthCount($stime)//进行周结 + { + $thismonth = date('m',$stime); + $thisyear = date('Y',$stime); + if ($thismonth == 1) { + $lastmonth = 12; + $lastyear = $thisyear - 1; + } else { + $lastmonth = $thismonth - 1; + $lastyear = $thisyear; + } + $lastStartDay = $lastyear . '-' . $lastmonth . '-1'; + $lastEndDay = $lastyear . '-' . $lastmonth . '-' . date('t', strtotime($lastStartDay)); + $begintime = strtotime($lastStartDay);//上个月的月初时间戳 + $endtime = strtotime($lastEndDay)+24*3600-1;//上个月的月末时间戳 + //普通月结 + $this->getAndSaveData(1,$begintime,$endtime); + //补点 + $this->getAndSaveData(2,$begintime,$endtime); + + } + protected function getAndSaveData($type,$begintime,$endtime) + { + $sign = md5($begintime.$endtime.$type.$this->token); + $arr = [ + "begintime"=>$begintime, + "endtime"=>$endtime, + "type"=>$type, + "sign"=>$sign + ]; + $dataurl .= $this->apihost."&".http_build_query($arr); + $html = file_get_contents($dataurl); + $rsp = json_decode($html,true); + if($rsp['code'] != 1){ + echo $rsp['error'].PHP_EOL;die; + } + //成功插入 + $Aggregate = M("aggregate_statement","tab_"); + $begintimestr = date("Y-m-d",$begintime); + $endtimestr = date("Y-m-d",$endtime); + if($rsp['count'] > 0){ + //插入数据 + foreach ($rsp['data'] as $k => $v) { + foreach ($v["game_list"] as $ke => &$va) { + $va['begintime'] = $begintimestr; + $va['endtime'] = $endtimestr; + $va['fax_ratio'] = 0; + } + $v["statement_info"] = json_encode($v["game_list"],JSON_UNESCAPED_UNICODE); + unset($v["game_list"]); + $v['begintime'] = $begintime; + $v['endtime'] = $endtime; + $v['create_time'] = time(); + $v['admin_name'] = "system"; + $v['admin_id'] = 0; + $v['second_party_info'] = json_encode([ + "partner"=>$v['channel_name'] + ],JSON_UNESCAPED_UNICODE); + $Aggregate->add($v); + } + } + + if($type == 0){ + echo "----周结统计ok".PHP_EOL; + }elseif($type == 1){ + echo "----月结统计ok".PHP_EOL; + }elseif($type == 2){ + echo "----补点统计ok".PHP_EOL; + } + } + public function updateAggregateFinanceData($id) + { + //获取基础信息 + $Aggregate = M("aggregate_statement","tab_"); + $info = $Aggregate->where("id='{$id}'")->find(); + $sign = md5($info['begintime'].$info['endtime'].$info['withdraw_type'].$this->token); + $arr = [ + "begintime"=>$info['begintime'], + "endtime"=>$info['endtime'], + "type"=>$info['withdraw_type'], + "sign"=>$sign, + "channel_id"=>$info['channel_id'] + ]; + $dataurl .= $this->apihost."&".http_build_query($arr); + $html = file_get_contents($dataurl); + $rsp = json_decode($html,true); + if($rsp['code'] != 1){ + echo $rsp['error'].PHP_EOL;die; + } + //更新信息 + $begintimestr = date("Y-m-d",$info['begintime']); + $endtimestr = date("Y-m-d",$info['endtime']); + + if($rsp['count'] > 0){ + //插入数据 + foreach ($rsp['data'] as $k => $v) { + foreach ($v["game_list"] as $ke => &$va) { + $va['begintime'] = $begintimestr; + $va['endtime'] = $endtimestr; + $va['fax_ratio'] = 0; + } + $v["statement_info"] = json_encode($v["game_list"],JSON_UNESCAPED_UNICODE); + unset($v["game_list"]); + $v['create_time'] = time(); + $v['admin_name'] = $_SESSION['onethink_admin']['user_auth']['username']; + $v['admin_id'] = $_SESSION['onethink_admin']['user_auth']['uid']; + $v['verify_status'] = 0; + + $first_party_info = json_decode($info['first_party_info'], 1); + if($first_party_info['partner'] == $info['channel_name']){ + $v['second_party_info'] = $info['first_party_info']; + $v['first_party_info'] = $info['second_party_info']; + $v['pay_type'] =0; + } + + $res = $Aggregate->where("id='{$id}'")->save($v); + if(empty($res)){ + return false; + } + } + }else{ + $savedata = [ + "create_time"=>time(), + "admin_name"=>$_SESSION['onethink_admin']['user_auth']['username'], + "admin_id"=>$_SESSION['onethink_admin']['user_auth']['uid'], + "verify_status"=>0, + "statement_info"=>json_encode([],JSON_UNESCAPED_UNICODE), + "ratio_money"=>0, + "pay_money"=>0 + ]; + + $first_party_info = json_decode($info['first_party_info'], 1); + if($first_party_info['partner'] == $info['channel_name']){ + $savedata['second_party_info'] = $info['first_party_info']; + $savedata['first_party_info'] = $info['second_party_info']; + $savedata['pay_type'] =0; + } + + $res = $Aggregate->where("id='{$id}'")->save($savedata); + if(empty($res)){ + return false; + } + } + return true; + } + + + + + +} diff --git a/Application/Admin/Controller/AggregateFinanceStatementController.class.php b/Application/Admin/Controller/AggregateFinanceStatementController.class.php new file mode 100644 index 000000000..f211a8a1b --- /dev/null +++ b/Application/Admin/Controller/AggregateFinanceStatementController.class.php @@ -0,0 +1,729 @@ +<?php + +namespace Admin\Controller; +/** + * 聚合下游结算 + * @author 王贺 + */ +class AggregateFinanceStatementController extends ThinkController +{ + public $verify_status = [ + "-1"=>"审核拒绝", + "0"=>"未申请开票", + "1"=>"申请开票", + "2"=>"审核同意", + "3"=>"已开票", + "4"=>"已上传凭证", + "5"=>"已到账" + ]; + public $admininfo; + public $OpAuthList=[]; + //TODO: + public function _initialize() + { + $this->admininfo = $_SESSION['onethink_admin']['user_auth']; + parent::_initialize(); + } + + public function lists() { + $is_export= false; + if (isset($_REQUEST['export']) && $_REQUEST['export']==1){ + $is_export = true; + } + //权限 + if(!IS_ROOT){ + $this->getAuth(); + } + + //分页 + $page = intval(I('get.p', 0)); + $page = $page ? $page : 1; //默认显示第一页数据 + $row = intval(I('row', 0)); + $row = empty($row) ? 10 : $row;//每页条数 + + $map = []; + + + if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) { + $time_start = strtotime($_REQUEST['time_start']); + $time_end = strtotime($_REQUEST['time_end'])+ 86399; + $map["_string"] = "(begintime BETWEEN {$time_start} AND {$time_end}) OR (endtime BETWEEN {$time_start} AND {$time_end})"; + } elseif (isset($_REQUEST['time_start'])) { + $time_start = strtotime($_REQUEST['time_start']); + $map["_string"] = "(begintime >= {$time_start} ) OR (endtime >= {$time_start})"; + } elseif (isset($_REQUEST['time_end'])) { + $time_end = strtotime($_REQUEST['time_end'])+ 86399; + $map["_string"] = "(begintime <= {$time_end} ) OR (endtime <= {$time_end})"; + } + + if (isset($_REQUEST['time_start2']) && isset($_REQUEST['time_end2'])) { + $map['create_time'] = ['between', [strtotime($_REQUEST['time_start2']), strtotime($_REQUEST['time_end2']) + 86399]]; + } elseif (isset($_REQUEST['time_start2'])) { + $map['create_time'] = ['EGT', strtotime($_REQUEST['time_start2'])]; + } elseif (isset($_REQUEST['time_end2'])) { + $map['create_time'] = ['ELT', strtotime($_REQUEST['time_end2']) + 86399]; + } + + if ($_REQUEST['verify_status']) { + $map['verify_status'] = $_REQUEST['verify_status']; + } + if ($_REQUEST['channel_id']) { + $map['channel_id'] = $_REQUEST['channel_id']; + } + $typeflag = false; + if (isset($_REQUEST['withdraw_type'])) { + if($_REQUEST['withdraw_type'] == 1){ + $typeflag = 1;//月结 + $map["withdraw_type"] = 1; + }else{ + $typeflag = 2;//周结 + $map["withdraw_type"] = ["in",[0,2]]; + } + } + if (isset($_REQUEST['withdraw_type2'])) { + if($_REQUEST['withdraw_type2'] == 2){ + if($typeflag == 1){ //月结的补点找不到 + $map['withdraw_type'] = 999; + }else{ //周结的补点就是补点 + $map['withdraw_type'] = 2; + } + }else{ + if($typeflag == 1){//月结的正常=月结 + $map['withdraw_type'] = 1; + }elseif($typeflag == 2){//周结的正常=周结 + $map['withdraw_type'] = 0; + }else{//没选的正常是 非补点 + $map['withdraw_type'] = ["in",[0,1]]; + } + } + } + $data = M("aggregate_statement","tab_") + ->where($map) + ->order("create_time Desc")->page($page,$row)->select(); + foreach($data as $key => $value) { + $data[$key]['verify_status_str'] = $this->verify_status[$value['verify_status']]; + $data[$key]['create_time'] = date('Y-m-d H:i:s',$value['create_time']); + $data[$key]['begintime'] = date('Y-m-d',$value['begintime']); + $data[$key]['endtime'] = date('Y-m-d',$value['endtime']); + $data[$key]['withdraw_type_1'] = ($value['withdraw_type'] == 1 ? "月结" :"周结"); + $data[$key]['withdraw_type_2'] = ($value['withdraw_type'] == 2 ? "补点" :"正常结算"); + + $data[$key]['oplist'] = $this->OpAuth($value); + } + $count = M("aggregate_statement","tab_")->field("count(id) count,SUM(ratio_money) ratio_money,SUM(pay_money) pay_money")->where($map)->find(); + + //分页 + $parameter['p'] = $page; + $parameter['row'] = $row; + $page = set_pagination($count['count'], $row, $parameter); + if ($page) { + $this->assign('_page', $page); + } + // + $this->assign('menubtn',$this->menuAuth()); + $this->assign('data',$data); + $this->assign('total',$count['ratio_money']); + $this->assign('pay_money',$count['pay_money']); + $this->assign('channel',$this->getAggChannel()); + $this->assign('verify_status',$this->verify_status); + $this->display(); + + } + //获取所有下游渠道 + public function getAggChannel() + { + return M("aggregate_statement","tab_")->field("channel_id,channel_name")->group("channel_id")->select(); + } + //申请开票 + public function createStatement(){ + if (isset($_REQUEST['id'])){ + $id = $_REQUEST['id']; + }else{ + $this->error("参数错误"); + } + $info = M("aggregate_statement","tab_")->field("statement_info,pay_money,ratio_money")->where("id={$id}")->find(); + $statement_info = json_decode($info['statement_info'],true); + $this->assign('data',$statement_info); + $this->assign('data_count',["pay_money"=>$info['pay_money'],"ratio_money"=>$info['ratio_money']]); + $this->assign('id',$id); + $this->display(); + } + public function doAddStatement(){ + $first_partner_type = $_REQUEST['first_partner_type']; + $second_party_info = $_REQUEST['second_party_info']; + $statement_info = $_REQUEST['statement_info']; + $admininfo = $_SESSION['onethink_admin']['user_auth']; + $data_count = $_REQUEST['statement_count']; + if(!isset($_REQUEST['statement_id'])){ + $this->error("参数错误"); + } + + //拼凑数据 + $adddata = array( + "pay_money"=>$data_count['pay_money'], + "ratio_money"=>$data_count['ratio_money'], + "pay_type"=>$_REQUEST['statement_type'] == 0 ? 1 :0, + "first_party_info"=>json_encode($_REQUEST['first_party_info'],JSON_UNESCAPED_UNICODE), + "second_party_info"=>json_encode($_REQUEST['second_party_info'],JSON_UNESCAPED_UNICODE), + "statement_info"=>json_encode($statement_info,JSON_UNESCAPED_UNICODE), + "admin_name"=>$admininfo['username'], + "admin_id"=>$admininfo['uid'], + "verify_status"=>1, + "create_time"=>time() + ); + $id = $_REQUEST['statement_id']; + $res = M("aggregate_statement","tab_")->where("id = '{$id}'")->save($adddata); + if($res !== false){ + $this->doAddOperationLog($id,"申请开票"); + $this->ajaxReturn(array("success"=>"ok","code"=>0)); + }else{ + $this->ajaxReturn(array("error"=>"database error","code"=>2000)); + } + } + + //获取公司信息 + public function getCompanyList() + { + $id = $_REQUEST['id']; + $cpCompany = M("aggregate_statement","tab_")->field("id,second_party_info")->where("id={$id}")->find(); + + $data = array(); + $data['ptCompany']= M("CompanyInfo","tab_")->field('id,partner')->select(); + $data['cpCompany']= [[ + "id"=> $cpCompany['id'], + "partner"=>json_decode($cpCompany['second_party_info'],true)['partner'] + ]]; + $this->ajaxReturn(array("success"=>$data,"code"=>2000)); + } + public function getCpCompanyInfo() + { + $CompanyId = $_REQUEST['company_id']; + $company_type = $_REQUEST['company_type']; + if($company_type == 'pt'){ + $info = M("CompanyInfo","tab_")->field("id,partner,link_man,link_phone,address,company_tax_no,payee_name,bank_account,opening_bank")->where("id = '{$CompanyId}'")->find(); + }else{ + $cpCompany = M("aggregate_statement","tab_")->field("id,second_party_info")->where("id={$CompanyId}")->find(); + $info = json_decode($cpCompany['second_party_info'],true); + } + $info['invoice_item'] = "信息技术服务费"; + $info['invoice_type'] = "增值税专用发票"; + if(empty($info)){ + $this->ajaxReturn(array("error"=>"no find","code"=>2000)); + }else{ + $this->ajaxReturn(array("success"=>$info,"code"=>0)); + } + + } + public function editStatement(){ + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + $dbres = M("aggregate_statement","tab_")->where("id = '{$id}'")->find(); + $first_party_info = json_decode($dbres['first_party_info'],true); + $second_party_info = json_decode($dbres['second_party_info'],true); + $statement_info = json_decode($dbres['statement_info'],true); + + // if($dbres['company_name'] == $first_party_info['partner']){ + // $first_partner_type=0; + // }else{ + // $first_partner_type=1; + // } + // $fine = array_pop($statement_info); + $senddata = array( + // "first_partner_type"=>1, + "statement_id"=>$dbres['id'], + "first_part_company"=>$first_party_info['partner'], + "second_part_company"=>$second_party_info['partner'], + "statement_type"=>$dbres['pay_type'] == 0 ? 1 :0, + "first_party_info"=>$first_party_info, + "second_party_info"=>$second_party_info, + "statement_info"=>$statement_info, + "statement_count"=>array("pay_money"=>$dbres['pay_money'],"ratio_money"=>$dbres['ratio_money']) + ); + + $this->assign("data",$senddata); + if($dbres['pay_type'] == 0){ + $this->assign("company",$second_party_info['partner']); + }else{ + $this->assign("company",$first_party_info['partner']); + } + $this->assign("company_id",$dbres['company_id']); + $this->assign("company_name",$dbres['company_name']); + $this->assign("id",$dbres['id']); + $this->display(); + } + //查看发票信息 + public function viewStatement(){ + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + $dbres = M("aggregate_statement","tab_")->where("id = '{$id}'")->find(); + $first_party_info = json_decode($dbres['first_party_info'],true); + $second_party_info = json_decode($dbres['second_party_info'],true); + $statement_info = json_decode($dbres['statement_info'],true); + + if($dbres['pay_type'] == 0){ + $company = $second_party_info['partner']; + $pyinfo = $second_party_info; + }else{ + $company = $first_party_info['partner']; + $pyinfo = $first_party_info; + } + $senddata = array( + "company"=>$company, + "payinfo"=>$pyinfo, + "first_part_company"=>$first_party_info['partner'], + "second_part_company"=>$second_party_info['partner'], + "statement_type"=>$dbres['pay_type'], + "first_party_info"=>$first_party_info, + "second_party_info"=>$second_party_info, + "statement_info"=>$statement_info, + "statement_count"=>array("pay_money"=>$dbres['pay_money'],"ratio_money"=>$dbres['ratio_money'],"big_ratio_money"=>convertAmountToCn($dbres['ratio_money'])) + ); + $this->assign("data",$senddata); + $this->display(); + } + //上传凭证 + public function uploadVoucher() + { + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + $this->assign("id",$id); + $this->display(); + } + //修改凭证 + public function editVoucher() + { + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + $info = M("aggregate_statement","tab_")->field("id,verify_status,ext_field")->where("id = '{$id}'")->find(); + $this->assign("id",$id); + $this->assign("ext_field",$info['ext_field']); + $this->display(); + } + //保存凭证 + public function saveVoucher() + { + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + + $path = '/Uploads/'; + $upload = new \Think\Upload();// 实例化上传类 + $upload->maxSize = 0 ;// 设置附件上传大小 + $upload->exts = array('jpg', 'gif', 'png', 'jpeg');;// 设置附件上传类型 + $upload->rootPath = '.'.$path; // 设置附件上传根目录 + $upload->savePath = ''; // 设置附件上传(子)目录 + // 上传文件 + $info = $upload->upload(); + if(!$info) {// 上传错误提示错误信息 + $msg = $upload->getError(); + $array= array('status' => 0, 'info' => $msg); + }else{// 上传成功 + // + $pf = $path.$info['file']['savepath'].$info['file']['savename']; + $save = [ + "ext_field"=>$pf, + ]; + //获取旧值,存在删除 + $info = M("aggregate_statement","tab_")->field("id,verify_status,ext_field")->where("id = '{$id}'")->find(); + if(!empty($info['ext_field'])){ + unlink("./".$info['ext_field']); + } + //如果是开票状态就改状态 + if($info["verify_status"] == 3){ + $save['verify_status'] = 4; + $save['create_time'] = time(); + $save["admin_name"]=$this->admininfo["username"]; + $save["admin_id"]=$this->admininfo["uid"]; + } + M("aggregate_statement","tab_")->where("id = '{$id}'")->save($save); + $this->doAddOperationLog($id,"上传凭证"); + $array=array( + 'status' => 1, + "info"=>"上传成功", + "file_path"=>$pf, + ); + } + $this->ajaxReturn($array); + } + //删除凭证 + public function delVoucher(){ + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + $info = M("aggregate_statement","tab_")->field("id,ext_field,verify_status")->where("id = '{$id}'")->find(); + if(!empty($info['ext_field'])){ + unlink("./".$info['ext_field']); + } + $save = [ + "ext_field"=>'', + ]; + //如果是已上传凭证状态就回退到审核通过 + if($info["verify_status"] == 4){ + $save['verify_status'] = 3; + $save['create_time'] = time(); + $save["admin_name"]=$this->admininfo["username"]; + $save["admin_id"]=$this->admininfo["uid"]; + } + M("aggregate_statement","tab_")->where("id = '{$id}'")->save($save); + $this->doAddOperationLog($id,"删除凭证"); + $this->ajaxReturn(array( + 'status' => 1, + 'info' => "删除成功" + )); + } + //新增备注 + public function saveRemark(){ + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + $remark = $_REQUEST['remark']; + M("aggregate_statement","tab_")->where("id = '{$id}'")->save(['remark'=>$remark]); + $this->doAddOperationLog($id,"新增备注"); + $this->ajaxReturn(array( + 'status' => 1, + 'info' => "操作成功" + )); + } + //审批通过 + public function agreeApply(){ + if(!isset($_REQUEST['ids'])) $this->error("参数错误"); + $ids = $_REQUEST['ids']; + $savedata = ["verify_status"=>2,"create_time"=>time(),"admin_name"=>$this->admininfo["username"],"admin_id"=>$this->admininfo["uid"]]; + M("aggregate_statement","tab_")->where("id in ({$ids})")->save($savedata); + + $ids = explode(",",$ids); + foreach($ids as $k=>$v){ + $this->doAddOperationLog($v,"审批通过"); + } + + $this->ajaxReturn(array( + 'status' => 1, + "info"=>"审批通过成功" + )); + } + //审核拒绝 + public function refuseApply(){ + if(!isset($_REQUEST['ids'])) $this->error("参数错误"); + $ids = $_REQUEST['ids']; + $savedata = ["verify_status"=>-1,"create_time"=>time(),"admin_name"=>$this->admininfo["username"],"admin_id"=>$this->admininfo["uid"]]; + M("aggregate_statement","tab_")->where("id in ({$ids})")->save($savedata); + + $ids = explode(",",$ids); + foreach($ids as $k=>$v){ + $this->doAddOperationLog($v,"审批拒绝"); + } + + $this->ajaxReturn(array( + 'status' => 1, + "info"=>"审批拒绝成功" + )); + } + //已开票 + public function Invoiced(){ + if(!isset($_REQUEST['ids'])) $this->error("参数错误"); + $ids = $_REQUEST['ids']; + $savedata = ["verify_status"=>3,"create_time"=>time(),"admin_name"=>$this->admininfo["username"],"admin_id"=>$this->admininfo["uid"]]; + M("aggregate_statement","tab_")->where("id in ({$ids})")->save($savedata); + + $ids = explode(",",$ids); + foreach($ids as $k=>$v){ + $this->doAddOperationLog($v,"已开票"); + } + + $this->ajaxReturn(array( + 'status' => 1, + "info"=>"已开票成功" + )); + } + //已到账 + public function Received(){ + if(!isset($_REQUEST['ids'])) $this->error("参数错误"); + $ids = $_REQUEST['ids']; + $savedata = ["verify_status"=>5,"create_time"=>time(),"admin_name"=>$this->admininfo["username"],"admin_id"=>$this->admininfo["uid"]]; + M("aggregate_statement","tab_")->where("id in ({$ids})")->save($savedata); + + $ids = explode(",",$ids); + foreach($ids as $k=>$v){ + $this->doAddOperationLog($id,"已到账"); + } + + $this->ajaxReturn(array( + 'status' => 1, + "info"=>"已到账成功" + )); + } + //重算金额 + public function updateStatement() + { + if(!isset($_REQUEST['ids'])) $this->error("参数错误"); + $ids = explode(",",$_REQUEST['ids']); + foreach ($ids as $k => $v) { + $res = A("AggregateFinanceSet")->updateAggregateFinanceData($v); + if(!$res){ + $this->ajaxReturn(array( + 'status' => 0, + "info"=>"重算结算金额失败" + )); + }else{ + $this->doAddOperationLog($v,"重算结算金额"); + } + } + $this->ajaxReturn(array( + 'status' => 1, + "info"=>"算结算金额成功" + )); + + } + //撤销审核 + public function cancelVerify(){ + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + $savedata = ["verify_status"=>1,"create_time"=>time(),"admin_name"=>$this->admininfo["username"],"admin_id"=>$this->admininfo["uid"]]; + M("aggregate_statement","tab_")->where("id ='{$id}'")->save($savedata); + $this->doAddOperationLog($id,"撤销审核"); + $this->ajaxReturn(array( + 'status' => 1, + "info"=>"撤销审核成功" + )); + } + //撤销申请 + public function cancelApply(){ + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + $data = M("aggregate_statement","tab_")->where("id = '{$id}'")->find(); + $savedata = ["verify_status"=>0,"create_time"=>time(),"admin_name"=>$this->admininfo["username"],"admin_id"=>$this->admininfo["uid"]]; + $first_party_info = json_decode($data['first_party_info'], 1); + if($first_party_info['partner'] == $data['channel_name']){ + $savedata['second_party_info'] = $data['first_party_info']; + $savedata['first_party_info'] = $data['second_party_info']; + $savedata['pay_type'] =0; + } + M("aggregate_statement","tab_")->where("id ='{$id}'")->save($savedata); + $this->doAddOperationLog($id,"撤销申请"); + $this->ajaxReturn(array( + 'status' => 1, + "info"=>"撤销申请成功" + )); + } + //导出 + public function export() + { + if(!isset($_REQUEST['id'])) $this->error("参数错误"); + $id = $_REQUEST['id']; + + $data = M("aggregate_statement","tab_")->where("id = '{$id}'")->find(); + + $data['first_party_info'] = json_decode($data['first_party_info'], 1);//甲方 + $data['second_party_info'] = json_decode($data['second_party_info'], 1);//乙方 + $data['statement_info'] = json_decode($data['statement_info'], 1);//结算记录 + //收款方 + $big_pay_money = convertAmountToCn($data['ratio_money']);//大写 + $data['receive_company'] = $data['pay_type'] ? $data['first_party_info'] : $data['second_party_info']; + $data['pay_company'] = $data['pay_type'] ? $data['second_party_info'] : $data['first_party_info']; + $this->doAddOperationLog($id,"导出"); + $this->excelDownStreamTemplate($data,$big_pay_money); + } + public function excelDownStreamTemplate($data,$big_all_sum_money) { + + header("Content-type: text/html; charset=utf-8"); + error_reporting(E_ALL); + ini_set('display_errors', TRUE); + ini_set('display_startup_errors', TRUE); + + define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); + + date_default_timezone_set('Europe/London'); + Vendor("PHPExcel.PHPExcel"); + $objPHPExcel = new \PHPExcel(); + $objReader = \PHPExcel_IOFactory::createReader('Excel5'); + //设置模板文件 + $objPHPExcel = $objReader->load("Public/Admin/excel/aggregate_stream.xls"); + $statement_begin_time = date('Y.m.d', $data['begintime']);//对账开始时间 + $statement_end_time = date('Y.m.d',$data['endtime']);//对账截止时间 + $objPHPExcel->getActiveSheet()->setCellValue('A1', "《 {$data['channel_name']} 》结算单 + ({$statement_begin_time}-{$statement_end_time})"); + + if ($data['withdraw_type'] == '2') { + $objPHPExcel->getActiveSheet()->setCellValue('D2','补点比例'); + } + $line = 3; + foreach ($data['statement_info'] as $key => $value) { + $objPHPExcel->getActiveSheet()->insertNewRowBefore($line,1); + $objPHPExcel->getActiveSheet()->removeConditionalStyles(); + $objPHPExcel->getActiveSheet()->setCellValue('A'.$line, $value['begintime'] . '-' . $value['endtime']); + $product_name = $value['game_name']; + $objPHPExcel->getActiveSheet()->setCellValue('D'.$line, $value['ratio'] . '%'); + $objPHPExcel->getActiveSheet()->setCellValue('E'.$line, $value['fax_ratio'] . '%'); + $objPHPExcel->getActiveSheet()->setCellValue('C'.$line, $value['money']); + $objPHPExcel->getActiveSheet()->setCellValue('B'.$line, $product_name); + $objPHPExcel->getActiveSheet()->setCellValue('F'.$line, $value['ratio_money']); + + $objPHPExcel->getActiveSheet()->getStyle('A'.$line)->getFont()->setBold(false); + $objPHPExcel->getActiveSheet()->getStyle('B'.$line)->getFont()->setBold(false); + $objPHPExcel->getActiveSheet()->getStyle('C'.$line)->getFont()->setBold(false); + $objPHPExcel->getActiveSheet()->getStyle('D'.$line)->getFont()->setBold(false); + $objPHPExcel->getActiveSheet()->getStyle('E'.$line)->getFont()->setBold(false); + $objPHPExcel->getActiveSheet()->getStyle('F'.$line)->getFont()->setBold(false); + $line++; + } + $objPHPExcel->getActiveSheet()->setCellValue('C'.($line), $data['pay_money']);//合计-平台总额 + $objPHPExcel->getActiveSheet()->setCellValue('F'.($line), $data['ratio_money']);//合计-结算金额 + $objPHPExcel->getActiveSheet()->setCellValue('B'.($line+1), $big_all_sum_money);//大写支付结算金额 + //甲方信息 + $objPHPExcel->getActiveSheet()->setCellValue('B'.($line+3), $data['first_party_info']['partner']);//甲方 + $objPHPExcel->getActiveSheet()->setCellValue('B'.($line+4), $data['first_party_info']['link_man']);//联系人 + $objPHPExcel->getActiveSheet()->setCellValue('B'.($line+5), $data['first_party_info']['link_phone']);//联系电话 + $objPHPExcel->getActiveSheet()->setCellValue('B'.($line+6), $data['second_party_info']['invoice_item']);//开票项目 + $objPHPExcel->getActiveSheet()->setCellValue('B'.($line+7), $data['second_party_info']['invoice_type']);//发票类型 + //乙方信息 + $objPHPExcel->getActiveSheet()->setCellValue('E'.($line+3), $data['second_party_info']['partner']);//乙方 + $objPHPExcel->getActiveSheet()->setCellValue('E'.($line+4), $data['second_party_info']['link_man']);//联系人 + $objPHPExcel->getActiveSheet()->setCellValue('E'.($line+5), $data['second_party_info']['link_phone']);//联系电话 + $objPHPExcel->getActiveSheet()->setCellValue('E'.($line+6), $data['second_party_info']['address']);//邮寄地址 + $objPHPExcel->getActiveSheet()->setCellValue('E'.($line+8), $data['second_party_info']['payee_name']);//户名 + $objPHPExcel->getActiveSheet()->setCellValue('E'.($line+9), $data['second_party_info']['bank_account']);//银行账号 + $objPHPExcel->getActiveSheet()->setCellValue('E'.($line+10), $data['second_party_info']['opening_bank']);//开户行 + if($data['withdraw_type'] == 1){ + $m = date('Y.m', $data['begintime']); + $fileName = "{$data['second_party_info']['partner']}&{$data['first_party_info']['partner']}-对账单{$m}"; + }else{ + $fileName = "{$data['second_party_info']['partner']}&{$data['first_party_info']['partner']}-对账单{$statement_begin_time}-{$statement_end_time}"; + } + ob_end_clean();//清除缓冲区,避免乱码 + header('pragma:public'); + header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $fileName .'".xls'); + header("Content-Disposition:attachment;filename={$fileName}.xls");//attachment新窗口打印inline本窗口打印 + $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); + $objWriter->save('php://output'); + } + //获取权限 + public function getAuth() + { + $group = $_SESSION['onethink_admin']['user_group_id']; + //获取全部权限列表 + $ruleList = M("AuthGroup")->field("rules")->where("id='{$group}'")->find()['rules']; + //获取所有含有规则的数据 + $authlist = M("AuthRule")->field('name')->where("name like 'Admin/AggregateFinanceStatement%' AND id in ($ruleList)")->select(); + $Auth = []; + foreach ($authlist as $k => $v) { + $a = str_replace("Admin/AggregateFinanceStatement/","",$v['name']); + $Auth[] = $a; + } + $this->OpAuthList = $Auth; + } + public function OpAuth($info) + { + $id = $info['id']; + $img = $info['ext_field']; + $remark = $info['remark']; + //原始列表 + $opBtn = [ + "viewStatement"=>"<a class='confirm viewStatement' data-id='{$id}'>查看</a>", + "createStatement"=>"<a class='confirm createStatement' data-id='{$id}'>申请开票</a>", + "editStatement"=>"<a class='confirm editStatement' data-id='{$id}'>编辑</a>", + "uploadVoucher"=>"<a class='confirm uploadVoucher' data-id='{$id}'>上传凭证</a>", + "viewVoucher"=>"<a class='confirm viewVoucher' data-img='{$img}' data-id='{$id}'>查看凭证</a>", + "editVoucher"=>" <a class='confirm editVoucher' data-id='{$id}'>编辑凭证</a>", + "addRemark"=>"<a class='confirm addRemark' data-id='{$id}'>新增备注</a>", + "editRemark"=>"<a class='confirm editRemark' data-remark='{$remark}' data-id='{$id}'>修改备注</a>", + "viewRemark"=>"<a class='confirm viewRemark' data-remark='{$remark}' data-id='{$id}'>查看备注</a>", + "cancelVerify"=>"<a class='confirm cancelVerify' data-id='{$id}' style='color: red;'>撤销审核</a>", + "cancelApply"=>"<a class='confirm cancelApply' data-id='{$id}' style='color: red;'>撤销申请</a>", + ]; + //操作对应菜单 + $optist = []; + switch ($info['verify_status']) { + case '-1': + $optist = ["viewStatement","cancelVerify","addRemark","viewRemark","editRemark"]; + break; + case '0': + $optist = ["viewStatement","createStatement"]; + break; + case '1': + $optist = ["viewStatement","editStatement","cancelApply"]; + break; + case '2': + $optist = ["viewStatement","cancelVerify","addRemark","viewRemark","editRemark"]; + break; + case '3': + $optist = ["viewStatement","uploadVoucher","viewVoucher","editVoucher","addRemark","viewRemark","editRemark"]; + break; + case '4': + $optist = ["viewStatement","viewVoucher","editVoucher","addRemark","viewRemark","editRemark"]; + break; + case '5': + $optist = ["viewStatement","uploadVoucher","viewVoucher","editVoucher","addRemark","viewRemark","editRemark"]; + break; + default: + break; + } + //判断凭证和备注 + if(empty($info['ext_field'])){ + //未上传凭证 + $optist = array_diff($optist, ["viewVoucher", "editVoucher"]); + }else{ + $optist = array_diff($optist, ["uploadVoucher"]); + } + if(empty($info['remark'])){ + //未上传备注 + $optist = array_diff($optist, ["editRemark", "viewRemark"]); + }else{ + $optist = array_diff($optist, ["addRemark"]); + } + // + $resarr = []; + foreach ($optist as $k => $v) { + if(IS_ROOT){ + $resarr[] = $opBtn[$v]; + }else{ + if(in_array($v,$this->OpAuthList)){ + $resarr[] = $opBtn[$v]; + } + } + } + return $resarr; + } + public function menuAuth() + { + $optist = ['agreeApply',"refuseApply","Invoiced","Received","updateStatement","export"]; + $mentBtn = [ + "agreeApply"=>"<a class='butn' id='agreeApply'>审批通过</a>", + "refuseApply"=>"<a class='butn' id='refuseApply' style='background-color: red;'>审批拒绝</a>", + "Invoiced"=>"<a class='butn' id='Invoiced'>已开票</a>", + "Received"=>"<a class='butn' id='Received'>已到账</a>", + "updateStatement"=>"<a class='butn' id='updateStatement' style='width: 150px;background-color:green;'>重算结算金额</a>", + "export"=>"<a class='butn' id='export'>批量导出</a>" + ]; + $resarr = []; + foreach ($optist as $k => $v) { + if(IS_ROOT){ + $resarr[] = $mentBtn[$v]; + }else{ + if(in_array($v,$this->OpAuthList)){ + $resarr[] = $mentBtn[$v]; + } + } + } + return $resarr; + } + //操作日志 + public function doAddOperationLog($id,$op_name) + { + $d= M("aggregate_statement","tab_")->where("id = '{$id}'")->find(); + $first_party_info = json_decode($d['first_party_info'],true); + $second_party_info = json_decode($d['second_party_info'],true); + + $statement_begin_time = date('Y.m.d', $d['begintime']);//对账开始时间 + $statement_end_time = date('Y.m.d',$d['endtime']);//对账截止时间 + $menu = "财务-结算管理-聚合渠道结算单管理"; + + if($d['withdraw_type'] == 1){ + $m = date('Y.m', $d['begintime']); + $key = "{$second_party_info['partner']}&{$first_party_info['partner']}【{$m} 月结】"; + }elseif($d['withdraw_type'] == 0){ + $key ="{$second_party_info['partner']}&{$first_party_info['partner']}【{$statement_begin_time}-{$statement_end_time} 周结 正常结算】"; + }else{ + $key ="{$second_party_info['partner']}&{$first_party_info['partner']}【{$statement_begin_time}-{$statement_end_time} 周结 补点】"; + } + addOperationLog(['op_type'=>1,'key'=>$key,"op_name"=>$op_name,'url'=>U(CONTROLLER_NAME.'/lists',$GetData),'menu'=>$menu]); + } + + +} diff --git a/Application/Admin/View/AggregateFinanceStatement/createStatement.html b/Application/Admin/View/AggregateFinanceStatement/createStatement.html new file mode 100644 index 000000000..15b16ea59 --- /dev/null +++ b/Application/Admin/View/AggregateFinanceStatement/createStatement.html @@ -0,0 +1,896 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta charset="UTF-8"> + <title></title> + <link rel="stylesheet" type="text/css" href="__CSS__/base.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/common.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/style.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/default_color.css" media="all"> + <link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css"> + <link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css"> + <link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" /> + + <script type="text/javascript" src="__STATIC__/jquery-2.0.3.min.js"></script> + <script type="text/javascript" src="__JS__/select2.min.js"></script> + <script type="text/javascript" src="__STATIC__/layer3/layer.js"></script> + <script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script> + <script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"charset="UTF-8"></script> + <script src="__STATIC__/juicer-min.js" type="text/javascript"></script> +</head> +<style> + html { + min-width:100%; + } + body { + padding: 0px 0px 150px; + width: 960px; + margin: auto; + } + .tabcon1711 table{ + width: 480px; + } + table{ + + margin: auto; + } + .hidebox{ + display: none; + } + .r{ + width: 300px; + } + .l{ + width: 180px; + } + .select2-container--default .select2-selection--single { + color: #000; + resize: none; + border-width: 1px; + border-style: solid; + border-color: #a7b5bc #ced9df #ced9df #a7b5bc; + box-shadow: 0px 3px 3px #F7F8F9 inset; + height: 35px; + height: 28px; + border-radius: 3px; + font-size: 12px; + } + + .select2-container--default .select2-selection--single .select2-selection__rendered { + line-height: 35px; + line-height: 28px; + } + + .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + } + + .select2-container--default .select2-search--dropdown .select2-search__field { + height: 26px; + line-height: 26px; + font-size: 12px; + } + + .select2-results__option[aria-selected] { + font-size: 12px; + } + .input-list, .i_list { + float: left; + margin: 0; + } + +</style> +<body> + <!-- <div style="width: 100%;line-height: 100px;font-size: 25px;font-weight: 600;text-align: center;"> + 海南万盟天下科技有限公司 + </div> --> + <div style="display: flex;margin: auto;"> + <div class="tab-content tabcon1711" id="firstPartBaseInfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">甲方类型:</td> + <td class="r"> + <div class="input-list input-list-game search_label_rehab"> + <select id="first_partner_type" name="first_partner_type" class="select_gallery"> + <option value="">请选择甲方公司类型</option> + <option value="0">合作公司</option> + <option value="1">平台归属公司</option> + </select> + </div> + </td> + </tr> + <tr> + <td class="l">甲方:</td> + <td class="r"> + <div class="input-list input-list-game search_label_rehab"> + <select id="first_partner_id" name="partner_id" class="select_gallery"> + <option value="">请选择合作公司</option> + </select> + </div> + </td> + </tr> + <tbody id="first_part_bser_info_show"> + <tr> + <td class="l">联系人:</td> + <td class="r"> + <input type="text" class="txt" name="link_man" value="" disabled="disabled" placeholder="请先选择甲方公司"> + </td> + </tr> + <tr> + <td class="l">联系电话:</td> + <td class="r"> + <input type="text" class="txt" name="link_phone" value="" disabled="disabled" placeholder="请先选择甲方公司"> + </td> + </tr> + <tr> + <td class="l">邮寄地址:</td> + <td class="r"> + <input type="text" class="txt" name="address" value="" disabled="disabled" placeholder="请先选择甲方公司"> + </td> + </tr> + <tr> + <td class="l">公司税号:</td> + <td class="r"> + <input type="text" class="txt" name="company_tax_no" disabled="disabled" value="" placeholder="请先选择甲方公司"> + </td> + </tr> + </tbody> + </tbody> + </table> + </div> + <div class="tab-content tabcon1711" id="secondPartBaseInfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l"></td> + <td class="r"></td> + </tr> + <tr> + <td class="l">乙方:</td> + <td class="r"> + <div class="input-list input-list-game search_label_rehab"> + <select id="second_partner_id" name="partner_id" class="select_gallery"> + <option value="">请选择合作公司</option> + </select> + </div> + </td> + </tr> + <tbody id="second_part_bser_info_show"> + <tr> + <td class="l">联系人:</td> + <td class="r"> + <input type="text" class="txt" name="link_man" value="" disabled="disabled" placeholder="请先选择合作公司"> + </td> + </tr> + <tr> + <td class="l">联系电话:</td> + <td class="r"> + <input type="text" class="txt" name="link_phone" value="" disabled="disabled" placeholder="请先选择合作公司"> + </td> + </tr> + <tr> + <td class="l">邮寄地址:</td> + <td class="r"> + <input type="text" class="txt" name="address" value="" disabled="disabled" placeholder="请先选择合作公司"> + </td> + </tr> + <tr> + <td class="l">公司税号:</td> + <td class="r"> + <input type="text" class="txt" name="company_tax_no" value="" disabled="disabled" placeholder="请先选择合作公司"> + </td> + </tr> + </tbody> + </tbody> + </table> + </div> + </div> + <div style="padding: 30px 0px 10px;display: block;height:30px;"> + <div class="input-list input-list-server search_label_rehab"> + <p style="font-size: 20px;font-weight: 600;">支付给:</p> + </div> + <div class="input-list input-list-server search_label_rehab" style="margin-left: 20px;"> + <select id="statement_type" name="statement_type" class="select_gallery" style="width: 215px;"> + <option value="">请选择合作公司</option> + </select> + </div> + </div> + <!-- <div class="search_list" style="display: block;line-height: 30px;height: 10px;"> + <div class="input-list input-list-server search_label_rehab"> + <p>请选择需要生成结算订单的月份:</p> + </div> + <div class="input-list" style="margin-left: 20px;"> + <input type="text" readonly id="time_start" name="time_start" class="" value="{:I('time_start')}" + placeholder="开始时间" /> + - + <div class="input-append date" id="datetimepicker" style="display:inline-block"> + <input type="text" readonly id="time_end" name="time_end" class="" value="{:I('time_end')}" + placeholder="结束时间" /> + <span class="add-on"><i class="icon-th"></i></span> + </div> + </div> + <div class="input-list" style="margin-left: 30px;"> + <a class="sch-btn" href="javascript:;" id="getSpendStatement" style="width: 100px;">生成</a> + </div> + </div> --> + <!-- <div style="font-size: 12px;color:#777;">仅当选择时间为每月的1号至当月的最后一天才满足月结梯度分成比例,否则默认比例为最低分成比例。</div> --> + <div class="data_list box_mt" style="margin-top: 10px;"> + <div class=""> + <table> + <!-- 表头 --> + <thead> + <tr> + <th style="border-right: solid 1px #b6cad2;">结算时间</th> + <th style="border-right: solid 1px #b6cad2;">产品</th> + <th style="border-right: solid 1px #b6cad2;">平台总额</th> + <th style="border-right: solid 1px #b6cad2;">分成比例</th> + <th style="border-right: solid 1px #b6cad2;">税费费率</th> + <th >结算金额</th> + </tr> + </thead> + + <!-- 列表 --> + <tbody id="statementInit" class=""> + <tr style="height: 100px;"> + <td colspan=8> + 请先选择生成条件后点击生成对账数据 + </td> + </tr> + </tbody> + + <tbody id="statementShow"> + + </tbody> + </table> + </div> + </div> + <div id="partpatinfo" style="display: flex;margin: auto;"> + <div class="tab-content tabcon1711" id="skf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">收款方名称:</td> + <td class="r"> + <input type="text" class="txt" name="" disabled="disabled" placeholder="请先选择支付给谁" value=""> + </td> + </tr> + <tr> + <td class="l">银行账号:</td> + <td class="r"> + <input type="text" class="txt" name="" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> + <tr> + <td class="l">开户行:</td> + <td class="r"> + <input type="text" class="txt" name="password" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> + </tbody> + </table> + </div> + <div class="tab-content tabcon1711" id="fkf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">开票项目:</td> + <td class="r"> + <input type="text" class="txt" disabled="disabled" placeholder="请先选择支付给谁" name="invoice_item" value=""> + </td> + </tr> + <tr> + <td class="l">发票类型:</td> + <td class="r"> + <input type="text" class="txt" disabled="disabled" placeholder="请先选择支付给谁" name="invoice_type" value=""> + </td> + </tr> + + <!-- <tr> + <td class="l">付款方名称:</td> + <td class="r"> + <input type="text" class="txt" name="" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> + <tr> + <td class="l">银行账号:</td> + <td class="r"> + <input type="text" class="txt" name="password" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> + <tr> + <td class="l">开户行:</td> + <td class="r"> + <input type="text" class="txt" name="" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> --> + </tbody> + </table> + </div> + </div> + <div class="search_list" style="display: flex;justify-content:flex-end;width:960px;"> + <div class="input-list" style="margin-left: 30px;float: right;"> + <a class="sch-btn" href="javascript:;" id="createStatement" style="width: 150px;">申请开票</a> + </div> + </div> + +<script type="text/html" id="partbasetpl"> + <tr> + <td class="l">联系人:</td> + <td class="r"> + <input type="text" class="txt normalchange" data-change="${type}.link_man" name="link_man" value="${link_man|nonull}" placeholder="请输入联系人"> + </td> + </tr> + <tr> + <td class="l">联系电话:</td> + <td class="r"> + <input type="text" class="txt normalchange" name="link_phone" data-change="${type}.link_phone" value="${link_phone|nonull}" placeholder="请输入联系电话"> + </td> + </tr> + <tr> + <td class="l">邮寄地址:</td> + <td class="r"> + <input type="text" class="txt normalchange" name="address" data-change="${type}.address" value="${address|nonull}" placeholder="请输入地址"> + </td> + </tr> + <tr> + <td class="l">公司税号:</td> + <td class="r"> + <input type="text" class="txt normalchange" name="company_tax_no" data-change="${type}.company_tax_no" value="${company_tax_no|nonull}" placeholder="请输入公司税号"> + </td> + </tr> +</script> +<script type="text/html" id="partpaytpl"> + <div class="tab-content tabcon1711" id="skf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">收款方名称:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入收款方名称" data-change="${'skf'|setChange}.payee_name" name="payee_name" value="${skfdata.payee_name|nonull}"> + </td> + </tr> + <tr> + <td class="l">银行账号:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入银行账号" name="bank_account" data-change="${'skf'|setChange}.bank_account" value="${skfdata.bank_account|nonull}"> + </td> + </tr> + <tr> + <td class="l">开户行:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入开户行" data-change="${'skf'|setChange}.opening_bank" value="${skfdata.opening_bank|nonull}" name="opening_bank"> + </td> + </tr> + </tbody> + </table> + </div> + <div class="tab-content tabcon1711" id="fkf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">开票项目:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="信息技术服务费" data-change="${'skf'|setChange}.invoice_item" name="invoice_item" value="${skfdata.invoice_item|nonull}"> + </td> + </tr> + <tr> + <td class="l">发票类型:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="增值税专用发票" name="invoice_type" data-change="${'skf'|setChange}.invoice_type" value="${skfdata.invoice_type|nonull}"> + </td> + </tr> + <!-- <tr> + <td class="l">付款方名称:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入付款方名称" data-change="${'fkf'|setChange}.payee_name" name="payee_name" value="${fkfdata.payee_name|nonull}"> + </td> + </tr> + <tr> + <td class="l">银行账号:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入银行账号" data-change="${'fkf'|setChange}.bank_account" name="bank_account" value="${fkfdata.bank_account|nonull}" > + </td> + </tr> + <tr> + <td class="l">开户行:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入开户行" data-change="${'fkf'|setChange}.opening_bank" value="${fkfdata.opening_bank|nonull}" name="opening_bank"> + </td> + </tr> --> + </tbody> + </table> + </div> +</script> +<script type="text/html" id="statementTpl"> + {@each list as it,index} + <tr> + <td>${it.begintime}~${it.endtime}</td> + <td>${it.game_name}</td> + <td>${it.money}元</td> + <td><input type="text" class="txt statementchange" name="ratio" data-index ="${index}" data-change="statement_info[${index}]['ratio']" value="${it.ratio}" style="width: 40px;">%</td> + <td><input type="text" class="txt statementchange" name="fax_ratio" data-index ="${index}" data-change="statement_info[${index}]['fax_ratio']" value="${it.fax_ratio}" style="width: 40px;">%</td> + <td>${it.ratio_money}元</td> + </tr> + {@/each} + + <tr> + <td>合计</td> + <td></td> + <td>${count.pay_money}元</td> + <td></td> + <td></td> + <td>${count.ratio_money}元</td> + </tr> + <tr> + <td colspan=5>本月分成总金额(人民币大写):</td> + <td>${count.ratio_money|number_chinese}</td> + </tr> +</script> +<script> + $(function(){ + TPLSHOW.juicerInit(); + $(".select_gallery").select2(); + $('#time_start').datetimepicker({ + format: 'yyyy-mm-dd', + language: "zh-CN", + minView: 2, + autoclose: true, + endDate:new Date() + }); + + $('#datetimepicker').datetimepicker({ + format: 'yyyy-mm-dd', + language: "zh-CN", + minView: 2, + endDate:new Date(), + autoclose: true, + pickerPosition: 'bottom-left' + }) + EVENT.changeCompany(); + EVENT.createStatement(); + //获取账单信息 + TPLSHOW.showStatementList(true); + // $("#first_partner_id").change();//默认甲方只能是我们公司 + + }); + //基础类 + var PUBLIC = { + CompanyKeyName:{ + id:"公司表id", + partner:"公司名称", + link_man:'联系人', + link_phone:"联系电话", + address:'邮寄地址', + company_tax_no:'公司税号', + payee_name:'名称', + bank_account:"银行账号", + opening_bank:"开户行" + }, + checkCompanyKey(type,key){ + //获取公司名 + var company = ''; + if(key == "payee_name" || key == "bank_account" || key == "opening_bank"){ + if((DATAOBJ.statement_type == 0 && type == "first_party_info") || (DATAOBJ.statement_type == 1 && type == "second_party_info")){ + company = "收款方"; + } + if((DATAOBJ.statement_type == 0 && type == "second_party_info")|| (DATAOBJ.statement_type == 1 && type == "first_party_info")){ + company = "付款方"; + } + }else{ + if(type == "first_party_info"){ + company = "甲方"; + }else{ + company = "乙方"; + } + } + //获取键名 + try { + var keyname = company+PUBLIC.CompanyKeyName[key]; + } catch (error) { + var keyname = false; + } + //验证 + if(DATAOBJ[type][key] ===''){ + layer.msg(keyname+"不能为空"); + return false; + } + if(key == "link_phone" && !CHECK.mobile.test(DATAOBJ[type][key])){ + layer.msg(keyname+"格式错误"); + return false; + } + if(key == "bank_account" && !CHECK.BankNo.test(DATAOBJ[type][key])){ + layer.msg(keyname+"格式错误"); + return false; + } + return true; + }, + postData(url,data,callback){ + $.ajax({ + url:url, + data:data, + type:"post", + dataType:"json", + success:function(data){ + callback(data) + } + }) + }, + floatAdd(a,b){ + return Math.round(a*100+b*100)/100; + }, + floatCut(a,b){ + return Math.round(a*100-b*100)/100; + } + } + //数据类 + var DATAOBJ = { + first_partner_type:false, + first_part_company:false, + second_part_company:false, + + statement_type:false, + first_party_info:false, + second_party_info:false, + statement_info:{$data|json_encode=###,JSON_UNESCAPED_UNICODE}, + statement_count:{$data_count|json_encode=###,JSON_UNESCAPED_UNICODE}, + fine:0, + // statement_begin_time:false, + // statement_end_time:false, + statement_id:{$id} + } + //事件类 + var EVENT = { + changeCompany(){ + $("#first_partner_type").on("change",function(){ + var type = $(this).find("option:selected").val(); + if(type == ''){ + type=false; + } + DATAOBJ.first_partner_type = type; + //获取cp和内部公司 + var url = "{:U('getCompanyList')}"; + PUBLIC.postData(url,{id:DATAOBJ.statement_id},function(data){ + var ptCompany = data.success.ptCompany; + var cpCompany = data.success.cpCompany; + var ptstr = '<option value="">请选择平台归属公司</option>'; + + for (var i in ptCompany) { + ptstr += "<option value='" + ptCompany[i].id + "'>" + ptCompany[i].partner + "</option>" + } + var cpstr = '<option value="">请选择合作公司</option>'; + for (var i in cpCompany) { + cpstr += "<option value='" + cpCompany[i].id + "'>" + cpCompany[i].partner + "</option>" + } + // + if(type == 0){ + $("#first_partner_id").html(cpstr); + $("#second_partner_id").html(ptstr); + }else{ + $("#first_partner_id").html(ptstr); + $("#second_partner_id").html(cpstr); + } + $("#first_partner_id").select2(); + $("#second_partner_id").select2(); + //重置数据 + + DATAOBJ.first_part_company=false; + DATAOBJ.second_part_company=false; + TPLSHOW.pushStatementTypeOption(); + }) + }) + $("#first_partner_id").on("change",function(){ + //获取数据 + var comid = $(this).find("option:selected").val(); + //获取基础数据 + var url = "{:U('getCpCompanyInfo')}"; + var company_type; + if(DATAOBJ.first_partner_type == 0){ + //CP上游公司 + company_type = "cp"; + }else{ + company_type = "pt"; + } + PUBLIC.postData(url,{company_id:comid,company_type:company_type},function(data){ + DATAOBJ.first_part_company = data.success.partner; + DATAOBJ.first_party_info = data.success; + data.success.type = "first_party_info"; + TPLSHOW.firstPartInfo(data.success); + }) + }) + $("#second_partner_id").on("change",function(){ + //获取数据 + var comid = $(this).find("option:selected").val(); + //获取基础数据 + var url = "{:U('getCpCompanyInfo')}"; + var company_type; + if(DATAOBJ.first_partner_type == 0){ + //CP上游公司 + company_type = "pt"; + }else{ + company_type = "cp"; + } + PUBLIC.postData(url,{company_id:comid,company_type:company_type},function(data){ + DATAOBJ.second_part_company = data.success.partner; + DATAOBJ.second_party_info = data.success; + data.success.type = "second_party_info"; + TPLSHOW.secondPartInfo(data.success); + }) + }) + //生成订单 + // $("#getSpendStatement").on("click",function(){ + // //获取开始结束时间 + // var time_start = $("#time_start").val(); + // var time_end = $("#time_end").val(); + // if(time_start == '' || time_end == '' || DATAOBJ.statement_type === false){ + // layer.msg("收款方或账单开始结束时间均不允许为空"); + // return false; + // } + // if (Date.parse(time_start) > Date.parse(time_end)){ + // layer.msg('开始时间必须小于等于结束时间'); + // return false; + // } + // var company_id; + // if(DATAOBJ.first_partner_type == 0){ + // //CP上游公司 + // company_id = $("#first_partner_id").find("option:selected").val(); + // }else{ + // company_id = $("#second_partner_id").find("option:selected").val(); + // } + // //发起查询 + // var selectData = { + // "time_start":time_start, + // "time_end":time_end, + // "statement_type":DATAOBJ.statement_type, + // "first_partner_type":DATAOBJ.first_partner_type, + // "company_id": company_id + // } + // var url = "{:U('getSpendStatement')}"; + // PUBLIC.postData(url,selectData,function(data){ + // console.log(data); + // if(data.code > 0){ + // layer.alert(data.error); + // return false; + // }else{ + // DATAOBJ.statement_begin_time = time_start; + // DATAOBJ.statement_end_time = time_end; + // DATAOBJ.statement_info = data.success; + // DATAOBJ.statement_count = data.count; + // TPLSHOW.showStatementList(true); + // } + + + // }) + + // }) + }, + createStatement(){ + $("#createStatement").on("click",function(){ + //验证信息 + for (const key in DATAOBJ) { + if(DATAOBJ[key] === false){ + layer.msg('页面中的参数均是必填项目,请先填满'); + return false; + } + } + //验证甲方信息 + // for (const key in DATAOBJ.first_party_info) { + // var t = DATAOBJ.first_party_info; + // var flag = PUBLIC.checkCompanyKey("first_party_info",key); + // if(!flag){ + // return flag; + // } + // } + // //乙方 + // for (const key in DATAOBJ.second_party_info) { + // var t = DATAOBJ.second_party_info; + // var flag = PUBLIC.checkCompanyKey("second_party_info",key); + // if(!flag){ + // return flag; + // } + // } + + layer.load(2); + $("#createStatement").off("click");//自我解绑 + PUBLIC.postData("{:U('doAddStatement')}",DATAOBJ,function(data){ + if(data.success){ + layer.closeAll('loading'); + layer.msg('添加成功'); + setTimeout(function(){ + window.parent.reload(); + },350); + }else{ + alert("添加失败,请联系管理员") + } + }); + //发送添加请求 + + }) + }, + normalchange(){ + $(".normalchange").off("blur"); + $(".normalchange").on("blur",function(){ + var val = $(this).val(); + var index = $(this).data("change"); + var str = "DATAOBJ."+index+"='"+val+"';"; + eval(str); + }) + }, + statementchange(){ + $(".statementchange").off("blur"); + $(".statementchange").on("blur",function(){ + // alert(1); + var sort = $(this).data("change"); + var val = $(this).val(); + var vdata = eval("DATAOBJ."+sort);//原先值 + var dom = $(this); + if(!CHECK.number.test(val)){ + layer.msg('结算单中的税率必须是数字,且不能为空'); + dom.val(vdata); + return false; + } + var str = "DATAOBJ."+sort+"='"+val+"';"; + if(val > 100 || val < 0){ + layer.msg('结算单中的税率不允许大于100和小于0'); + dom.val(vdata); + return false; + } + eval(str); + var index = $(this).data("index"); + var td = DATAOBJ.statement_info[index]; + var ratio = td['ratio']/100; + DATAOBJ.statement_count['ratio_money'] = PUBLIC.floatCut(DATAOBJ.statement_count['ratio_money'],td['ratio_money']); + td['ratio_money'] = Math.round((td['money']*ratio*(100-td['fax_ratio'])/100)* 100) / 100 ; + DATAOBJ.statement_count['ratio_money']=PUBLIC.floatAdd(DATAOBJ.statement_count['ratio_money'],td['ratio_money']); + TPLSHOW.showStatementList(true); + }) + }, + changeStatementType(){ + $("#statement_type").off("change") + $("#statement_type").on("change",function(){ + //获取数据 + var statement_type = $(this).find("option:selected").val(); + if(statement_type == ''){ + statement_type = false; + } + DATAOBJ.statement_type = statement_type; + TPLSHOW.showPartPayInfo(); + + // TPLSHOW.showStatementList(true); + }) + $(".select_gallery").select2(); + } + } + var CHECK = { + number: /^\d+(\.{1}\d+)?$/, + mobile:/^1[3456789]\d{9}$/, + // BankNo:/^([1-9]{1})(\d{15}|\d{18})$/, + BankNo:/^([1-9]{1})\d{10,19}$/, + money:/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/ + } + // + var TPLSHOW = { + juicerInit(){ + var nonull = function(data) { + if(!data){ + return ''; + } + return data; + }; + var setChange = function(typestr) { + if(DATAOBJ.statement_type == 0){ + if(typestr == "fkf"){ + return 'second_party_info'; + }else{ + return 'first_party_info'; + } + }else{ + if(typestr == "fkf"){ + return 'first_party_info'; + }else{ + return 'second_party_info'; + } + } + }; + var number_chinese = function (str) { + var num = parseFloat(str); + var strOutput = "", + strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分'; + num += "00"; + var intPos = num.indexOf('.'); + if (intPos >= 0){ + num = num.substring(0, intPos) + num.substr(intPos + 1, 2); + } + strUnit = strUnit.substr(strUnit.length - num.length); + for (var i=0; i < num.length; i++){ + strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i,1),1) + strUnit.substr(i,1); + } + return strOutput.replace(/零角零分$/, '整').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿|万])/g, '$1').replace(/零+元/, '元').replace(/亿零{0,3}万/, '亿').replace(/^元/, "零元") + + } + juicer.register('nonull', nonull); + juicer.register('setChange', setChange); + juicer.register('number_chinese', number_chinese); + }, + // + firstPartInfo(data){ + var tpl =$("#partbasetpl").html(); + var html = juicer(tpl, data); + $("#first_part_bser_info_show").html(html); + TPLSHOW.pushStatementTypeOption(); + }, + secondPartInfo(data){ + var tpl =$("#partbasetpl").html(); + var html = juicer(tpl, data); + $("#second_part_bser_info_show").html(html); + TPLSHOW.pushStatementTypeOption(); + }, + //支付给公司 + pushStatementTypeOption(){ + + EVENT.normalchange(); + + DATAOBJ.statement_type = false;//重新选择 + // TPLSHOW.showStatementList(false); + + if(DATAOBJ.first_part_company && DATAOBJ.second_part_company){ + var str = "<option value=''>请选择合作公司</option><option value='0' selected>"+DATAOBJ.first_part_company+"</option>"; + str += ("<option value='1' >"+DATAOBJ.second_part_company+"</option>");//默认支付给甲方 + $("#statement_type").html(str); + EVENT.changeStatementType(); + $("#statement_type").change();//默认支付给乙方 + // TPLSHOW.showPartPayInfo();//查看底下是否有值 + }else{ + var str = "<option value=''>请选择合作公司</option>"; + $("#statement_type").html(str); + EVENT.changeStatementType(); + } + }, + //支付信息显示 + showPartPayInfo(){ + var data = {}; + if(DATAOBJ.statement_type !== false){ + if(DATAOBJ.statement_type == 1){ + data.fkfdata = DATAOBJ.first_party_info; + data.skfdata = DATAOBJ.second_party_info; + }else{ + data.skfdata = DATAOBJ.first_party_info; + data.fkfdata = DATAOBJ.second_party_info; + } + data.type = DATAOBJ.statement_type; + + }else{ + data.skfdata = {}; + data.fkfdata = {}; + } + var tpl =$("#partpaytpl").html(); + var html = juicer(tpl, data); + $("#partpatinfo").html(html); + EVENT.normalchange(); + + }, + //订单信息显示 + showStatementList(flag){ + if(flag){ + var data = {list:DATAOBJ.statement_info,count:DATAOBJ.statement_count,fine:DATAOBJ.fine}; + console.log(DATAOBJ); + $("#statementInit").addClass("hidebox"); + var tpl =$("#statementTpl").html(); + var html = juicer(tpl, data); + $("#statementShow").html(html); + EVENT.statementchange(); + }else{ + // DATAOBJ.statement_info = false; + // DATAOBJ.statement_count = false; + // DATAOBJ.fine = 0; + $("#statementInit").removeClass("hidebox"); + $("#statementShow").html(''); + } + + } + } +</script> + +</body> +</html> diff --git a/Application/Admin/View/AggregateFinanceStatement/editStatement.html b/Application/Admin/View/AggregateFinanceStatement/editStatement.html new file mode 100644 index 000000000..319ccda07 --- /dev/null +++ b/Application/Admin/View/AggregateFinanceStatement/editStatement.html @@ -0,0 +1,879 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta charset="UTF-8"> + <title></title> + <link rel="stylesheet" type="text/css" href="__CSS__/base.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/common.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/style.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/default_color.css" media="all"> + <link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css"> + <link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css"> + <link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" /> + + <script type="text/javascript" src="__STATIC__/jquery-2.0.3.min.js"></script> + <script type="text/javascript" src="__JS__/select2.min.js"></script> + <script type="text/javascript" src="__STATIC__/layer3/layer.js"></script> + <script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script> + <script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"charset="UTF-8"></script> + <script src="__STATIC__/juicer-min.js" type="text/javascript"></script> +</head> +<style> + html { + min-width:100%; + } + body { + padding: 0px 0px 150px; + width: 960px; + margin: auto; + } + .tabcon1711 table{ + width: 480px; + } + table{ + + margin: auto; + } + .hidebox{ + display: none; + } + .r{ + width: 300px; + } + .l{ + width: 180px; + } + .select2-container--default .select2-selection--single { + color: #000; + resize: none; + border-width: 1px; + border-style: solid; + border-color: #a7b5bc #ced9df #ced9df #a7b5bc; + box-shadow: 0px 3px 3px #F7F8F9 inset; + height: 35px; + height: 28px; + border-radius: 3px; + font-size: 12px; + } + + .select2-container--default .select2-selection--single .select2-selection__rendered { + line-height: 35px; + line-height: 28px; + } + + .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + } + + .select2-container--default .select2-search--dropdown .select2-search__field { + height: 26px; + line-height: 26px; + font-size: 12px; + } + + .select2-results__option[aria-selected] { + font-size: 12px; + } + .input-list, .i_list { + float: left; + margin: 0; + } + +</style> +<body> + <!-- <div style="width: 100%;line-height: 100px;font-size: 25px;font-weight: 600;text-align: center;"> + 海南万盟天下科技有限公司 + </div> --> + <div style="display: flex;margin: auto;"> + <div class="tab-content tabcon1711" id="firstPartBaseInfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">甲方:</td> + <td class="r"> + <div class="input-list input-list-game search_label_rehab"> + <select id="first_partner_id" name="partner_id" class="select_gallery"> + <option value="{$data['first_party_info']['id']}" selected>{$data['first_part_company']}</option> + </select> + </div> + </td> + </tr> + <tbody id="first_part_bser_info_show"> + <tr> + <td class="l">联系人:</td> + <td class="r"> + <input type="text" class="txt" name="link_man" value="" disabled="disabled" placeholder="请先选择甲方公司"> + </td> + </tr> + <tr> + <td class="l">联系电话:</td> + <td class="r"> + <input type="text" class="txt" name="link_phone" value="" disabled="disabled" placeholder="请先选择甲方公司"> + </td> + </tr> + <tr> + <td class="l">邮寄地址:</td> + <td class="r"> + <input type="text" class="txt" name="address" value="" disabled="disabled" placeholder="请先选择甲方公司"> + </td> + </tr> + <tr> + <td class="l">公司税号:</td> + <td class="r"> + <input type="text" class="txt" name="company_tax_no" disabled="disabled" value="" placeholder="请先选择甲方公司"> + </td> + </tr> + </tbody> + </tbody> + </table> + </div> + <div class="tab-content tabcon1711" id="secondPartBaseInfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">乙方:</td> + <td class="r"> + <div class="input-list input-list-game search_label_rehab"> + <select id="second_partner_id" name="partner_id" class="select_gallery"> + <option value="{$data['second_party_info']['id']}" selected>{$data['second_part_company']}</option> + </select> + </div> + </td> + </tr> + <tbody id="second_part_bser_info_show"> + <tr> + <td class="l">联系人:</td> + <td class="r"> + <input type="text" class="txt" name="link_man" value="" disabled="disabled" placeholder="请先选择合作公司"> + </td> + </tr> + <tr> + <td class="l">联系电话:</td> + <td class="r"> + <input type="text" class="txt" name="link_phone" value="" disabled="disabled" placeholder="请先选择合作公司"> + </td> + </tr> + <tr> + <td class="l">邮寄地址:</td> + <td class="r"> + <input type="text" class="txt" name="address" value="" disabled="disabled" placeholder="请先选择合作公司"> + </td> + </tr> + <tr> + <td class="l">公司税号:</td> + <td class="r"> + <input type="text" class="txt" name="company_tax_no" value="" disabled="disabled" placeholder="请先选择合作公司"> + </td> + </tr> + </tbody> + </tbody> + </table> + </div> + </div> + <div style="padding: 30px 0px 10px;display: block;height:30px;"> + <div class="input-list input-list-server search_label_rehab"> + <p style="font-size: 20px;font-weight: 600;">支付给:<spen style="margin-left: 15px;font-size: 16px;">{$company} + </spen> + </p> + </div> + <!-- <div class="input-list input-list-server search_label_rehab" style="margin-left: 20px;"> + <select id="statement_type" name="statement_type" class="select_gallery" style="width: 215px;"> + <option value="">请选择合作公司</option> + </select> + </div> --> + </div> + <!-- <div class="search_list" style="display: block;line-height: 30px;height: 10px;"> + <div class="input-list input-list-server search_label_rehab"> + <p>请选择需要生成结算订单的月份:</p> + </div> + <div class="input-list" style="margin-left: 20px;"> + <input type="text" readonly id="time_start" name="time_start" class="" value="{:I('time_start')}" + placeholder="开始时间" /> + - + <div class="input-append date" id="datetimepicker" style="display:inline-block"> + <input type="text" readonly id="time_end" name="time_end" class="" value="{:I('time_end')}" + placeholder="结束时间" /> + <span class="add-on"><i class="icon-th"></i></span> + </div> + </div> + <div class="input-list" style="margin-left: 30px;"> + <a class="sch-btn" href="javascript:;" id="getSpendStatement" style="width: 100px;">生成</a> + </div> + </div> --> + <!-- <div style="font-size: 12px;color:#777;">仅当选择时间为每月的1号至当月的最后一天才满足月结梯度分成比例,否则默认比例为最低分成比例。</div> --> + <div class="data_list box_mt" style="margin-top: 10px;"> + <div class=""> + <table> + <!-- 表头 --> + <thead> + <tr> + <th style="border-right: solid 1px #b6cad2;">结算时间</th> + <th style="border-right: solid 1px #b6cad2;">产品</th> + <th style="border-right: solid 1px #b6cad2;">平台总额</th> + <th style="border-right: solid 1px #b6cad2;">分成比例</th> + <th style="border-right: solid 1px #b6cad2;">税费费率</th> + <th >结算金额</th> + </tr> + </thead> + + <!-- 列表 --> + <tbody id="statementInit" class=""> + <tr style="height: 100px;"> + <td colspan=8> + 请先选择生成条件后点击生成对账数据 + </td> + </tr> + </tbody> + + <tbody id="statementShow"> + + </tbody> + </table> + </div> + </div> + <div id="partpatinfo" style="display: flex;margin: auto;"> + <div class="tab-content tabcon1711" id="skf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">收款方名称:</td> + <td class="r"> + <input type="text" class="txt" name="" disabled="disabled" placeholder="请先选择支付给谁" value=""> + </td> + </tr> + <tr> + <td class="l">银行账号:</td> + <td class="r"> + <input type="text" class="txt" name="" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> + <tr> + <td class="l">开户行:</td> + <td class="r"> + <input type="text" class="txt" name="password" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> + </tbody> + </table> + </div> + <div class="tab-content tabcon1711" id="fkf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">开票项目:</td> + <td class="r"> + <input type="text" class="txt" disabled="disabled" placeholder="请先选择支付给谁" name="invoice_item" value=""> + </td> + </tr> + <tr> + <td class="l">发票类型:</td> + <td class="r"> + <input type="text" class="txt" disabled="disabled" placeholder="请先选择支付给谁" name="invoice_type" value=""> + </td> + </tr> + + <!-- <tr> + <td class="l">付款方名称:</td> + <td class="r"> + <input type="text" class="txt" name="" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> + <tr> + <td class="l">银行账号:</td> + <td class="r"> + <input type="text" class="txt" name="password" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> + <tr> + <td class="l">开户行:</td> + <td class="r"> + <input type="text" class="txt" name="" value="" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> --> + </tbody> + </table> + </div> + </div> + <div class="search_list" style="display: flex;justify-content:flex-end;width:960px;"> + <div class="input-list" style="margin-left: 30px;float: right;"> + <a class="sch-btn" href="javascript:;" id="createStatement" style="width: 150px;">确认修改</a> + </div> + </div> + +<script type="text/html" id="partbasetpl"> + <tr> + <td class="l">联系人:</td> + <td class="r"> + <input type="text" class="txt normalchange" data-change="${type}.link_man" name="link_man" value="${link_man|nonull}" placeholder="请输入联系人"> + </td> + </tr> + <tr> + <td class="l">联系电话:</td> + <td class="r"> + <input type="text" class="txt normalchange" name="link_phone" data-change="${type}.link_phone" value="${link_phone|nonull}" placeholder="请输入联系电话"> + </td> + </tr> + <tr> + <td class="l">邮寄地址:</td> + <td class="r"> + <input type="text" class="txt normalchange" name="address" data-change="${type}.address" value="${address|nonull}" placeholder="请输入地址"> + </td> + </tr> + <tr> + <td class="l">公司税号:</td> + <td class="r"> + <input type="text" class="txt normalchange" name="company_tax_no" data-change="${type}.company_tax_no" value="${company_tax_no|nonull}" placeholder="请输入公司税号"> + </td> + </tr> +</script> +<script type="text/html" id="partpaytpl"> + <div class="tab-content tabcon1711" id="skf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">收款方名称:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入收款方名称" data-change="${'skf'|setChange}.payee_name" name="payee_name" value="${skfdata.payee_name|nonull}"> + </td> + </tr> + <tr> + <td class="l">银行账号:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入银行账号" name="bank_account" data-change="${'skf'|setChange}.bank_account" value="${skfdata.bank_account|nonull}"> + </td> + </tr> + <tr> + <td class="l">开户行:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入开户行" data-change="${'skf'|setChange}.opening_bank" value="${skfdata.opening_bank|nonull}" name="opening_bank"> + </td> + </tr> + </tbody> + </table> + </div> + <div class="tab-content tabcon1711" id="fkf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">开票项目:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="信息技术服务费" data-change="${'skf'|setChange}.invoice_item" name="invoice_item" value="${skfdata.invoice_item|nonull}"> + </td> + </tr> + <tr> + <td class="l">发票类型:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="增值税专用发票" name="invoice_type" data-change="${'skf'|setChange}.invoice_type" value="${skfdata.invoice_type|nonull}"> + </td> + </tr> + <!-- <tr> + <td class="l">付款方名称:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入付款方名称" data-change="${'fkf'|setChange}.payee_name" name="payee_name" value="${fkfdata.payee_name|nonull}"> + </td> + </tr> + <tr> + <td class="l">银行账号:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入银行账号" data-change="${'fkf'|setChange}.bank_account" name="bank_account" value="${fkfdata.bank_account|nonull}" > + </td> + </tr> + <tr> + <td class="l">开户行:</td> + <td class="r"> + <input type="text" class="txt normalchange" placeholder="请输入开户行" data-change="${'fkf'|setChange}.opening_bank" value="${fkfdata.opening_bank|nonull}" name="opening_bank"> + </td> + </tr> --> + </tbody> + </table> + </div> +</script> +<script type="text/html" id="statementTpl"> + {@each list as it,index} + <tr> + <td>${it.begintime}~${it.endtime}</td> + <td>${it.game_name}</td> + <td>${it.money}元</td> + <td><input type="text" class="txt statementchange" name="ratio" data-index ="${index}" data-change="statement_info[${index}]['ratio']" value="${it.ratio}" style="width: 40px;">%</td> + <td><input type="text" class="txt statementchange" name="fax_ratio" data-index ="${index}" data-change="statement_info[${index}]['fax_ratio']" value="${it.fax_ratio}" style="width: 40px;">%</td> + <td>${it.ratio_money}元</td> + </tr> + {@/each} + + <tr> + <td>合计</td> + <td></td> + <td>${count.pay_money}元</td> + <td></td> + <td></td> + <td>${count.ratio_money}元</td> + </tr> + <tr> + <td colspan=5>本月分成总金额(人民币大写):</td> + <td>${count.ratio_money|number_chinese}</td> + </tr> +</script> +<script> + $(function(){ + TPLSHOW.juicerInit(); + $(".select_gallery").select2(); + $('#time_start').datetimepicker({ + format: 'yyyy-mm-dd', + language: "zh-CN", + minView: 2, + autoclose: true, + endDate:new Date() + }); + + $('#datetimepicker').datetimepicker({ + format: 'yyyy-mm-dd', + language: "zh-CN", + minView: 2, + endDate:new Date(), + autoclose: true, + pickerPosition: 'bottom-left' + }) + EVENT.changeCompany(); + EVENT.createStatement(); + //获取账单信息 + TPLSHOW.showStatementList(true); + $("#first_partner_id").change(); + + }); + //基础类 + var PUBLIC = { + CompanyKeyName:{ + id:"公司表id", + partner:"公司名称", + link_man:'联系人', + link_phone:"联系电话", + address:'邮寄地址', + company_tax_no:'公司税号', + payee_name:'名称', + bank_account:"银行账号", + opening_bank:"开户行" + }, + checkCompanyKey(type,key){ + //获取公司名 + var company = ''; + if(key == "payee_name" || key == "bank_account" || key == "opening_bank"){ + if((DATAOBJ.statement_type == 0 && type == "first_party_info") || (DATAOBJ.statement_type == 1 && type == "second_party_info")){ + company = "收款方"; + } + if((DATAOBJ.statement_type == 0 && type == "second_party_info")|| (DATAOBJ.statement_type == 1 && type == "first_party_info")){ + company = "付款方"; + } + }else{ + if(type == "first_party_info"){ + company = "甲方"; + }else{ + company = "乙方"; + } + } + //获取键名 + try { + var keyname = company+PUBLIC.CompanyKeyName[key]; + } catch (error) { + var keyname = false; + } + //验证 + if(DATAOBJ[type][key] ===''){ + layer.msg(keyname+"不能为空"); + return false; + } + if(key == "link_phone" && !CHECK.mobile.test(DATAOBJ[type][key])){ + layer.msg(keyname+"格式错误"); + return false; + } + if(key == "bank_account" && !CHECK.BankNo.test(DATAOBJ[type][key])){ + layer.msg(keyname+"格式错误"); + return false; + } + return true; + }, + postData(url,data,callback){ + $.ajax({ + url:url, + data:data, + type:"post", + dataType:"json", + success:function(data){ + callback(data) + } + }) + }, + floatAdd(a,b){ + return Math.round(a*100+b*100)/100; + }, + floatCut(a,b){ + return Math.round(a*100-b*100)/100; + } + } + //数据类 + var DATAOBJ = {$data|json_encode=###,JSON_UNESCAPED_UNICODE}; + //事件类 + var EVENT = { + changeCompany(){ + + $("#first_partner_id").on("change", function () { + TPLSHOW.firstPartInfo(DATAOBJ.first_party_info); + TPLSHOW.secondPartInfo(DATAOBJ.second_party_info); + TPLSHOW.showPartPayInfo(); + TPLSHOW.showStatementList(true); + }) + // $("#first_partner_id").on("change", function () { + // TPLSHOW.secondPartInfo(DATAOBJ.second_party_info); + // }) + + + // $("#first_partner_type").on("change",function(){ + // var type = $(this).find("option:selected").val(); + // if(type == ''){ + // type=false; + // } + // DATAOBJ.first_partner_type = type; + // //获取cp和内部公司 + // var url = "{:U('getCompanyList')}"; + // PUBLIC.postData(url,{id:DATAOBJ.statement_id},function(data){ + // var ptCompany = data.success.ptCompany; + // var cpCompany = data.success.cpCompany; + // var ptstr = '<option value="">请选择平台归属公司</option>'; + + // for (var i in ptCompany) { + // ptstr += "<option value='" + ptCompany[i].id + "'>" + ptCompany[i].partner + "</option>" + // } + // var cpstr = '<option value="">请选择合作公司</option>'; + // for (var i in cpCompany) { + // cpstr += "<option value='" + cpCompany[i].id + "'>" + cpCompany[i].partner + "</option>" + // } + // // + // if(type == 0){ + // $("#first_partner_id").html(cpstr); + // $("#second_partner_id").html(ptstr); + // }else{ + // $("#first_partner_id").html(ptstr); + // $("#second_partner_id").html(cpstr); + // } + // $("#first_partner_id").select2(); + // $("#second_partner_id").select2(); + // //重置数据 + + // DATAOBJ.first_part_company=false; + // DATAOBJ.second_part_company=false; + // TPLSHOW.pushStatementTypeOption(); + // }) + // }) + // $("#first_partner_id").on("change",function(){ + // //获取数据 + // var comid = $(this).find("option:selected").val(); + // //获取基础数据 + // var url = "{:U('getCpCompanyInfo')}"; + // var company_type; + // if(DATAOBJ.first_partner_type == 0){ + // //CP上游公司 + // company_type = "cp"; + // }else{ + // company_type = "pt"; + // } + // PUBLIC.postData(url,{company_id:comid,company_type:company_type},function(data){ + // DATAOBJ.first_part_company = data.success.partner; + // DATAOBJ.first_party_info = data.success; + // data.success.type = "first_party_info"; + // TPLSHOW.firstPartInfo(data.success); + // }) + // }) + // $("#second_partner_id").on("change",function(){ + // //获取数据 + // var comid = $(this).find("option:selected").val(); + // //获取基础数据 + // var url = "{:U('getCpCompanyInfo')}"; + // var company_type; + // if(DATAOBJ.first_partner_type == 0){ + // //CP上游公司 + // company_type = "pt"; + // }else{ + // company_type = "cp"; + // } + // PUBLIC.postData(url,{company_id:comid,company_type:company_type},function(data){ + // DATAOBJ.second_part_company = data.success.partner; + // DATAOBJ.second_party_info = data.success; + // data.success.type = "second_party_info"; + // TPLSHOW.secondPartInfo(data.success); + // }) + // }) + //生成订单 + // $("#getSpendStatement").on("click",function(){ + // //获取开始结束时间 + // var time_start = $("#time_start").val(); + // var time_end = $("#time_end").val(); + // if(time_start == '' || time_end == '' || DATAOBJ.statement_type === false){ + // layer.msg("收款方或账单开始结束时间均不允许为空"); + // return false; + // } + // if (Date.parse(time_start) > Date.parse(time_end)){ + // layer.msg('开始时间必须小于等于结束时间'); + // return false; + // } + // var company_id; + // if(DATAOBJ.first_partner_type == 0){ + // //CP上游公司 + // company_id = $("#first_partner_id").find("option:selected").val(); + // }else{ + // company_id = $("#second_partner_id").find("option:selected").val(); + // } + // //发起查询 + // var selectData = { + // "time_start":time_start, + // "time_end":time_end, + // "statement_type":DATAOBJ.statement_type, + // "first_partner_type":DATAOBJ.first_partner_type, + // "company_id": company_id + // } + // var url = "{:U('getSpendStatement')}"; + // PUBLIC.postData(url,selectData,function(data){ + // console.log(data); + // if(data.code > 0){ + // layer.alert(data.error); + // return false; + // }else{ + // DATAOBJ.statement_begin_time = time_start; + // DATAOBJ.statement_end_time = time_end; + // DATAOBJ.statement_info = data.success; + // DATAOBJ.statement_count = data.count; + // TPLSHOW.showStatementList(true); + // } + + + // }) + + // }) + }, + createStatement(){ + $("#createStatement").on("click",function(){ + //验证信息 + for (const key in DATAOBJ) { + if(DATAOBJ[key] === false){ + layer.msg('页面中的参数均是必填项目,请先填满'); + return false; + } + } + //验证甲方信息 + // for (const key in DATAOBJ.first_party_info) { + // var t = DATAOBJ.first_party_info; + // var flag = PUBLIC.checkCompanyKey("first_party_info",key); + // if(!flag){ + // return flag; + // } + // } + // //乙方 + // for (const key in DATAOBJ.second_party_info) { + // var t = DATAOBJ.second_party_info; + // var flag = PUBLIC.checkCompanyKey("second_party_info",key); + // if(!flag){ + // return flag; + // } + // } + layer.load(2); + $("#createStatement").off("click");//自我解绑 + PUBLIC.postData("{:U('doAddStatement')}",DATAOBJ,function(data){ + if(data.success){ + layer.closeAll('loading'); + layer.msg('添加成功'); + setTimeout(function(){ + window.parent.reload(); + },350); + }else{ + alert("添加失败,请联系管理员") + } + }); + //发送添加请求 + + }) + }, + normalchange(){ + $(".normalchange").off("blur"); + $(".normalchange").on("blur",function(){ + var val = $(this).val(); + var index = $(this).data("change"); + var str = "DATAOBJ."+index+"='"+val+"';"; + eval(str); + }) + }, + statementchange(){ + $(".statementchange").off("blur"); + $(".statementchange").on("blur",function(){ + // alert(1); + var sort = $(this).data("change"); + var val = $(this).val(); + var vdata = eval("DATAOBJ."+sort);//原先值 + var dom = $(this); + if(!CHECK.number.test(val)){ + layer.msg('结算单中的税率必须是数字,且不能为空'); + dom.val(vdata); + return false; + } + var str = "DATAOBJ."+sort+"='"+val+"';"; + if(val > 100 || val < 0){ + layer.msg('结算单中的税率不允许大于100和小于0'); + dom.val(vdata); + return false; + } + eval(str); + var index = $(this).data("index"); + var td = DATAOBJ.statement_info[index]; + var ratio = td['ratio']/100; + DATAOBJ.statement_count['ratio_money'] = PUBLIC.floatCut(DATAOBJ.statement_count['ratio_money'],td['ratio_money']); + td['ratio_money'] = Math.round((td['money']*ratio*(100-td['fax_ratio'])/100)* 100) / 100 ; + DATAOBJ.statement_count['ratio_money']=PUBLIC.floatAdd(DATAOBJ.statement_count['ratio_money'],td['ratio_money']); + TPLSHOW.showStatementList(true); + }) + }, + changeStatementType(){ + $("#statement_type").off("change") + $("#statement_type").on("change",function(){ + //获取数据 + var statement_type = $(this).find("option:selected").val(); + if(statement_type == ''){ + statement_type = false; + } + DATAOBJ.statement_type = statement_type; + TPLSHOW.showPartPayInfo(); + + // TPLSHOW.showStatementList(true); + }) + $(".select_gallery").select2(); + } + } + var CHECK = { + number: /^\d+(\.{1}\d+)?$/, + mobile:/^1[3456789]\d{9}$/, + // BankNo:/^([1-9]{1})(\d{15}|\d{18})$/, + BankNo:/^([1-9]{1})\d{10,19}$/, + money:/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/ + } + // + var TPLSHOW = { + juicerInit(){ + var nonull = function(data) { + if(!data){ + return ''; + } + return data; + }; + var setChange = function(typestr) { + if(DATAOBJ.statement_type == 0){ + if(typestr == "fkf"){ + return 'second_party_info'; + }else{ + return 'first_party_info'; + } + }else{ + if(typestr == "fkf"){ + return 'first_party_info'; + }else{ + return 'second_party_info'; + } + } + }; + var number_chinese = function (str) { + var num = parseFloat(str); + var strOutput = "", + strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分'; + num += "00"; + var intPos = num.indexOf('.'); + if (intPos >= 0){ + num = num.substring(0, intPos) + num.substr(intPos + 1, 2); + } + strUnit = strUnit.substr(strUnit.length - num.length); + for (var i=0; i < num.length; i++){ + strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i,1),1) + strUnit.substr(i,1); + } + return strOutput.replace(/零角零分$/, '整').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿|万])/g, '$1').replace(/零+元/, '元').replace(/亿零{0,3}万/, '亿').replace(/^元/, "零元") + + } + juicer.register('nonull', nonull); + juicer.register('setChange', setChange); + juicer.register('number_chinese', number_chinese); + }, + // + firstPartInfo(data){ + var tpl =$("#partbasetpl").html(); + var html = juicer(tpl, data); + $("#first_part_bser_info_show").html(html); + TPLSHOW.pushStatementTypeOption(); + }, + secondPartInfo(data){ + var tpl =$("#partbasetpl").html(); + var html = juicer(tpl, data); + $("#second_part_bser_info_show").html(html); + TPLSHOW.pushStatementTypeOption(); + }, + //支付给公司 + pushStatementTypeOption(){ + + EVENT.normalchange(); + + // DATAOBJ.statement_type = false;//重新选择 + // // TPLSHOW.showStatementList(false); + + // if(DATAOBJ.first_part_company && DATAOBJ.second_part_company){ + // var str = "<option value=''>请选择合作公司</option><option value='0' selected>"+DATAOBJ.first_part_company+"</option>"; + // str += ("<option value='1' >"+DATAOBJ.second_part_company+"</option>");//默认支付给甲方 + // $("#statement_type").html(str); + // EVENT.changeStatementType(); + // $("#statement_type").change();//默认支付给乙方 + // // TPLSHOW.showPartPayInfo();//查看底下是否有值 + // }else{ + // var str = "<option value=''>请选择合作公司</option>"; + // $("#statement_type").html(str); + // EVENT.changeStatementType(); + // } + }, + //支付信息显示 + showPartPayInfo(){ + var data = {}; + if(DATAOBJ.statement_type !== false){ + if(DATAOBJ.statement_type == 1){ + data.fkfdata = DATAOBJ.first_party_info; + data.skfdata = DATAOBJ.second_party_info; + }else{ + data.skfdata = DATAOBJ.first_party_info; + data.fkfdata = DATAOBJ.second_party_info; + } + data.type = DATAOBJ.statement_type; + + }else{ + data.skfdata = {}; + data.fkfdata = {}; + } + var tpl =$("#partpaytpl").html(); + var html = juicer(tpl, data); + $("#partpatinfo").html(html); + EVENT.normalchange(); + + }, + //订单信息显示 + showStatementList(flag){ + if(flag){ + var data = {list:DATAOBJ.statement_info,count:DATAOBJ.statement_count,fine:DATAOBJ.fine}; + console.log(DATAOBJ); + $("#statementInit").addClass("hidebox"); + var tpl =$("#statementTpl").html(); + var html = juicer(tpl, data); + $("#statementShow").html(html); + EVENT.statementchange(); + }else{ + // DATAOBJ.statement_info = false; + // DATAOBJ.statement_count = false; + // DATAOBJ.fine = 0; + $("#statementInit").removeClass("hidebox"); + $("#statementShow").html(''); + } + + } + } +</script> + +</body> +</html> diff --git a/Application/Admin/View/AggregateFinanceStatement/editVoucher.html b/Application/Admin/View/AggregateFinanceStatement/editVoucher.html new file mode 100644 index 000000000..b57b9a5f8 --- /dev/null +++ b/Application/Admin/View/AggregateFinanceStatement/editVoucher.html @@ -0,0 +1,120 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta charset="UTF-8"> + <title></title> + <link href="http://admin.vlcms.com/Public/icon.ico" type="image/x-icon" rel="shortcut icon"> + <link rel="stylesheet" type="text/css" href="__CSS__/base.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/common.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/module.css"> + <link rel="stylesheet" type="text/css" href="__CSS__/style.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/default_color.css" media="all"> + <script type="text/javascript" src="__STATIC__/jquery-2.0.3.min.js"></script> + <script src="__STATIC__/layer/layer.js" type="text/javascript"></script> +</head> +<style> + html { + min-width:100%; + } + body { + padding: 0px; + } + .hide{ + display: none !important; + } +</style> +<body> +<div id="main" class="main" style="min-height: 342px;margin-top: 20px;padding-left: 50px;"> + <table border="0" cellspacing="0" cellpadding="0"> + <tr style="padding: 10px;height: 50px;"> + <td class="l">文件选择: </td> + <td > + <input type="file" id="fileinput" name="file" accept="image/*"> + </td> + <td style="color: #777;font-size: 12px;">仅能添加一张凭证,重复添加将覆盖</td> + </tr> + </table> + <div class="jssearch search_list fl cf"> + <div class="input-list"> + <div class="sch-btn uploadfile" style="width: 100px;padding: 5px;">确认修改</div> + <div id="delVoucher" class="sch-btn " style="width: 100px;padding: 5px;background-color: red;">删除凭证</div> + </div> + </div> + <div style="display: block;clear: both;"> + <img id="voucher" src="{$ext_field}" class="" style="width: auto;height: 350px;margin: auto;"> + </div> +</div> + + +<script> + var id = {$id}; + $(function(){ + $(".uploadfile").on("click",function(){ + var acceptedTypes = ['image/png','image/jpeg','image/jpg','image/gif']; + var type = document.getElementById('fileinput').files[0].type; + if (acceptedTypes.indexOf(type) === -1) { + layer.msg("只允许图片格式文件"); + return false; + } + var formData = new FormData(); + formData.append("id",id); + formData.append("file", document.getElementById("fileinput").files[0]); + + var index = layer.load(); + $.ajax({ + url:"{:U('saveVoucher')}", + type:"post", + data:formData, + processData:false, + contentType:false, + success:function(data){ + layer.close(index); + if(data.status == 1){ + //file_path\ + layer.msg("上传成功"); + $('#voucher').attr("src",data.file_path).removeClass("hide"); + $('#delVoucher').removeClass("hide"); + $("#fileinput").val(''); + }else{ + layer.alert(data.info); + } + }, + error:function(e){ + layer.alert("网络错误"); + } + }); + }) + $("#delVoucher").on("click",function(){ + var index = layer.load(); + var formData = new FormData(); + formData.append("id",id); + $.ajax({ + url:"{:U('delVoucher')}", + type:"post", + data:formData, + processData:false, + contentType:false, + success:function(data){ + layer.close(index); + if(data.status == 1){ + //file_path\ + layer.msg("删除成功"); + $('#voucher').attr("src",'').addClass("hide"); + $('#delVoucher').addClass("hide"); + $("#fileinput").val(''); + }else{ + layer.alert(data.info); + } + }, + error:function(e){ + layer.alert("网络错误"); + } + }); + }) + + }); +</script> + +</body> +</html> diff --git a/Application/Admin/View/AggregateFinanceStatement/lists.html b/Application/Admin/View/AggregateFinanceStatement/lists.html new file mode 100644 index 000000000..ad186aa04 --- /dev/null +++ b/Application/Admin/View/AggregateFinanceStatement/lists.html @@ -0,0 +1,798 @@ +<extend name="Public/base"/> + +<block name="body"> + <link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" /> + <link rel="stylesheet" href="__CSS__/pro_promote.css" type="text/css" /> + <script src="__STATIC__/jquery.form.js"></script> + <script src="__STATIC__/layer/layer.js"></script> + <script type="text/javascript" src="__JS__/bootstrap.min.js"></script> + <script type="text/javascript" src="__JS__/select2.min.js"></script> + <script type="text/javascript" src="__STATIC__/layer3/layer.js"></script> + + <style> + .select2-container--default .select2-selection--single { + color: #000; + resize: none; + border-width: 1px; + border-style: solid; + border-color: #a7b5bc #ced9df #ced9df #a7b5bc; + box-shadow: 0px 3px 3px #F7F8F9 inset;height:35px; + height:28px;border-radius:3px;font-size:12px; + } + .select2-container--default .select2-selection--single .select2-selection__rendered { + line-height:35px; + line-height:28px; + } + .select2-container--default .select2-selection--single .select2-selection__arrow { + height:26px; + } + .select2-container--default .select2-search--dropdown .select2-search__field { + height:26px;line-height:26px;font-size:12px; + } + .select2-results__option[aria-selected] {font-size:12px;} + .layui-layer-dialog .layui-layer-content{color:red} + .butnbox {padding:10px 0 10px;} + .butnbox .butnlist {overflow:hidden;clear:both;} + .butnbox .butnlist .butn,.butnbox .butnlist .butn:hover {text-decoration:none;border:none;} + .butnbox .butnlist .butn {display:inline-block;width:120px;height:28px;line-height:28px;text-align:center;color:#FFF;background:#3C95C8;border-radius:3px;} + .butnbox .butnlist .butn.last {background:#009900;} + .butnbox .butnlist .butn~.butn {margin-left:20px;} + .data_list table tbody tr a.disabled,.data_list table tbody tr a.disabled:hover {color:#999;cursor:default;} + .layui-layer-title { + text-align: center; + height: 80px; + line-height: 80px; + font-weight: 600; + font-size: 18px; + } + </style> + + <div class="cf main-place top_nav_list navtab_list"> + <h3 class="page_title">聚合渠道结算单管理</h3> + <p class="description_text">流程说明:结算自动生成对账单--->发起人申请开票--->财务审核开票--->寄发票--->发起人上传收款凭证--->财务确认到账</p> + </div> + <div class="cf top_nav_list" style="height: 38px;"> + <!-- 高级搜索 --> + <div class="jssearch fl cf search_list" style="margin-bottom: 0"> + <div class="input-list input-list-promote search_label_rehab"> + <select id="channel_id" name="channel_id" class="select_gallery" > + <option company-type="" value="">请选择或输入合作公司</option> + <volist name="channel" id="vo"> + <option value="{$vo.channel_id}" <?php echo $vo.channel_id == I('channel_id') ? 'selected':''; ?> >{$vo.channel_name}</option> + </volist> + </select> + </div> + + <div class="input-list input-list-promote search_label_rehab"> + <select id="withdraw_type" name="withdraw_type" class="select_gallery" style="width:150px;"> + <option value="">结算周期</option> + <option value="0">周结</option> + <option value="1">月结</option> + </select> + </div> + <div class="input-list input-list-promote search_label_rehab"> + <select id="withdraw_type" name="withdraw_type2" class="select_gallery" style="width:150px;"> + <option value="">结算类型</option> + <option value="1">正常计算</option> + <option value="2">补点</option> + </select> + </div> + + <div class="input-list"> + <input type="text" readonly id="time_start" name="time_start" class="" value="{:I('time_start')}" placeholder="结算开始时间" /> + - + <div class="input-append date" id="datetimepicker" style="display:inline-block"> + <input type="text" readonly id="time_end" name="time_end" class="" value="{:I('time_end')}" placeholder="结算结束时间" /> + <span class="add-on"><i class="icon-th"></i></span> + </div> + </div> + + <div class="input-list input-list-promote search_label_rehab"> + <select id="verify_status" name="verify_status" class="select_gallery" > + <option value="">请选择审核状态</option> + <foreach name="verify_status" item="vo" > + <option value="{$key}" <?php echo (isset($_REQUEST['verify_status']) && $key == I('verify_status')) ? 'selected':''; ?> >{$vo}</option> + </foreach> + </select> + </div> + + <div class="input-list"> + <input type="text" readonly id="time_start2" name="time_start2" class="" value="{:I('time_start2')}" placeholder="操作开始时间" /> + - + <div class="input-append date" id="datetimepicker2" style="display:inline-block"> + <input type="text" readonly id="time_end2" name="time_end2" class="" value="{:I('time_end2')}" placeholder="操作结束时间" /> + <span class="add-on"><i class="icon-th"></i></span> + </div> + </div> + <div class="input-list"> + <a class="sch-btn" href="javascript:;" id="search" url="{:U('AggregateFinanceStatement/lists','model='.$model['name'] .'&row='.I('row'),false)}">搜索</a> + </div> + + </div> + </div> + + <div class="butnbox" > + <div class="butnlist jscheckbutn" style="margin-left: 2px"> + <foreach name="menubtn" item="vo" > + {$vo} + </foreach> + </div> + </div> + + <!-- 数据列表 --> + <div class="data_list"> + <div class=""> + <table> + <!-- 表头 --> + <thead> + <tr> + <th><input class="check-all" type="checkbox"></th> + + <th>合作公司</th> + <th>结算日期</th> + <th>结算周期</th> + <th>结算类型</th> + <th>结算金额</th> + <th>审批状态</th> + <th>操作人</th> + <th>操作时间</th> + <th>操作</th> + </tr> + </thead> + + <!-- 列表 --> + <tbody> + <if condition = "empty($data)"> + <tr> + <td colspan="16" class="text-center">aOh! 暂时还没有内容!</td> + </tr> + </if> + <notemtpy name = "data"> + <volist name="data" id="data"> + <tr> + <td ><input class="ids" type="checkbox" data-status="{$data.verify_status}" value="{$data['id']}" name="ids[]" > + </td> + <td>{$data.channel_name}</td> + <td>{$data.begintime}-{$data.endtime}</td> + <td>{$data.withdraw_type_1}</td> + <td>{$data.withdraw_type_2}</td> + <td>{$data.ratio_money}</td> + <td>{$data.verify_status_str}</td> + <td>{$data.admin_name}</td> + <td>{$data.create_time}</td> + <td> + <foreach name="data.oplist" item="vo" > + {$vo} + </foreach> + </td> + + </tr> + </volist> + <tr><td>合计</td><td colspan="10">结算总流水:{$pay_money}元    结算金额:{$total}元 </td></tr> + </notemtpy> + </tbody> + </table> + </div> + + </div> + <div class="page"> + {$_page|default=''} + </div> +</block> + +<block name="script"> + <link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css"> + <php>if(C('COLOR_STYLE')=='blue_color') echo ' + <link href="__STATIC__/datetimepicker/css/datetimepicker_blue.css" rel="stylesheet" type="text/css"> + '; + </php> + <link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css"> + <script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script> + <script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" + charset="UTF-8"></script> + <script src="__STATIC__/layer/layer.js" type="text/javascript"></script> + <script src="__STATIC__/layer/extend/layer.ext.js"></script> + <script type="text/javascript"> + </script> + <script> + <volist name=":I('get.')" id="vo"> + Think.setValue('{$key}',"{$vo}"); + </volist> + $(".select_gallery").select2(); + </script> + <script type="text/javascript"> + //导航高亮 + highlight_subnav("{:U('AggregateFinanceStatement/lists')}"); + function reload() { + window.location.reload(); + } + + $(function(){ + $("#export").click(function () { + var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { + return $(elem).val(); + }).get(); + + if(text.length > 20){ + layer.msg("<font style='color:white'>" + '暂不支持超过20条的批量导出' + "</font>"); + return; + } + if(text.length < 1){ + layer.msg("<font style='color:white'>" + '请先选择要导出的结算单' + "</font>"); + return; + } + for (var index = 0; index < text.length; index++) { + var id = text[index]; + var url ="{:U('export')}"+"&id="+id; + var iframeExcel = "<iframe src='"+url+"' width='0px' height='0px' style='z-index:-1;position: absolute;top: -999999px;'></iframe>"//添加下载的地址到iframe,这里是公司信息,我用**表示了。 + $("body").append(iframeExcel) + } + }) + //审批通过 + $("#agreeApply").on("click",function(){ + var flag = false; + var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { + if($(elem).data("status") != 1){ + flag = true; + }else{ + return $(elem).val(); + } + }).get().join(","); + if(text == ''){ + layer.msg("<font style='color:white'>" + '无需要审核通过的结算单' + "</font>"); + return; + } + if(flag){ + layer.confirm("审批成功仅会对 [已申请发票] 结算单处理,选择中包含其他的状态的结算单将被忽略,点击取消停止操作",{title:false}, function(index){ + _doAgreeApply(); + layer.close(index); + }); + }else{ + _doAgreeApply(); + } + function _doAgreeApply(){ + //执行 + $.ajax({ + type: "POST", + url: "{:U('agreeApply')}", + dataType: 'json', + async: false, + data: {ids:text}, + success:function(data){ + if(data.status==1){ + layer.msg("<font style='color:white'>" + data.info + "</font>"); + setTimeout(function(){ + window.location.reload(); + },1500); + } + } + }); + } + }) + //审批拒绝 + $("#refuseApply").on("click",function(){ + var flag = false; + var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { + if($(elem).data("status") != 1){ + flag = true; + }else{ + return $(elem).val(); + } + }).get().join(","); + if(text == ''){ + layer.msg("<font style='color:white'>" + '无需要审核拒绝的结算单' + "</font>"); + return; + } + if(flag){ + layer.confirm("审批拒绝仅会对 [已申请发票] 结算单处理,选择中包含其他的状态的结算单将被忽略,点击取消停止操作",{title:false}, function(index){ + _doRefuseApply(); + layer.close(index); + }); + }else{ + _doRefuseApply(); + } + function _doRefuseApply(){ + //执行 + $.ajax({ + type: "POST", + url: "{:U('refuseApply')}", + dataType: 'json', + async: false, + data: {ids:text}, + success:function(data){ + if(data.status==1){ + layer.msg("<font style='color:white'>" + data.info + "</font>"); + setTimeout(function(){ + window.location.reload(); + },1500); + } + } + }); + } + }) + //已开票 + $("#Invoiced").on("click",function(){ + var flag = false; + var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { + if($(elem).data("status") != 2){ + flag = true; + }else{ + return $(elem).val(); + } + }).get().join(","); + if(text == ''){ + layer.msg("<font style='color:white'>" + '无需要进行已开票的结算单' + "</font>"); + return; + } + if(flag){ + layer.confirm("已开票仅会对 [审核同意] 结算单处理,选择中包含其他的状态的结算单将被忽略,点击取消停止操作",{title:false}, function(index){ + _doInvoiced(); + layer.close(index); + }); + }else{ + _doInvoiced(); + } + function _doInvoiced(){ + //执行 + $.ajax({ + type: "POST", + url: "{:U('Invoiced')}", + dataType: 'json', + async: false, + data: {ids:text}, + success:function(data){ + if(data.status==1){ + layer.msg("<font style='color:white'>" + data.info + "</font>"); + setTimeout(function(){ + window.location.reload(); + },1500); + } + } + }); + } + }) + //已到账 + $("#Received").on("click",function(){ + var flag = false; + var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { + if($(elem).data("status") == 3 || $(elem).data("status") == 4){ + return $(elem).val(); + }else{ + flag = true; + } + }).get().join(","); + if(text == ''){ + layer.msg("<font style='color:white'>" + '无需要进行已到账的结算单' + "</font>"); + return; + } + if(flag){ + layer.confirm("已到账仅会对 [已开票]或[已上传凭证] 结算单处理,选择中包含其他的状态的结算单将被忽略,点击取消停止操作",{title:false}, function(index){ + _doReceived(); + layer.close(index); + }); + }else{ + _doReceived(); + } + function _doReceived(){ + //执行 + $.ajax({ + type: "POST", + url: "{:U('Received')}", + dataType: 'json', + async: false, + data: {ids:text}, + success:function(data){ + if(data.status==1){ + layer.msg("<font style='color:white'>" + data.info + "</font>"); + setTimeout(function(){ + window.location.reload(); + },1500); + } + } + }); + } + }) + //重算金额 + $("#updateStatement").on("click",function(){ + var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { + if($(elem).data("status") == 0 || $(elem).data("status") == 1 || $(elem).data("status") == -1){ + return $(elem).val(); + }else{ + flag = true; + } + // return $(elem).val(); + }).get().join(","); + if(text == ''){ + layer.msg("<font style='color:white'>" + '无需要进行重新结算的结算单' + "</font>"); + return; + } + layer.confirm("重算结算金额会对结算单回退到未申请发票状态,请慎重处理,点击取消停止操作",{title:false}, function(index){ + _doReceived(); + layer.close(index); + }); + function _doReceived(){ + //执行 + $.ajax({ + type: "POST", + url: "{:U('updateStatement')}", + dataType: 'json', + async: false, + data: {ids:text}, + success:function(data){ + if(data.status==1){ + layer.msg("<font style='color:white'>" + data.info + "</font>"); + setTimeout(function(){ + window.location.reload(); + },1500); + } + } + }); + } + }) + + + $("#shenhe").click(function () { + var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { + return $(elem).val(); + }).get().join(","); + + layer.confirm('【警告】撤销后将不可回退,如需继续请点击确认', { + btn: ['确认','取消'], + title:false + }, function(index) { + if (!text) { + layer.msg("<em style='color:white'>" + '请选择后再进行操作' + "</em>"); + return; + } + + $.ajax({ + url: "{:U('statementMangement/verifyStatementStatus')}", + type: "get", + data: {order: text}, + dataType: 'json', + success: function (data) { + if (data.status == 0) { + layer.msg("<em style='color:white'>" + '审核通过失败' + "</em>"); + } else { + layer.msg("<em style='color:white'>" + '审核通过成功' + "</em>") + setTimeout(function(){ + window.parent.reload(); + },1500); + } + } + }); + }) + + + }) + + $("#reject").click(function () { + var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) { + return $(elem).val(); + }).get().join(","); + + + layer.confirm('【警告】撤销后将不可回退,如需继续请点击确认', { + btn: ['确认','取消'], + title:false + }, function(index) { + if (!text) { + layer.msg("<em style='color:white'>" + '请选择后再进行操作' + "</em>"); + return; + } + + $.ajax({ + url: "{:U('statementMangement/rejectStatementStatus')}", + type: "get", + data: {order: text}, + dataType: 'json', + success: function (data) { + if (data.status == 0) { + layer.msg("<em style='color:white'>" + '审核拒绝失败' + "</em>"); + } else { + layer.msg("<em style='color:white'>" + '审核拒绝成功' + "</em>") + + setTimeout(function(){ + window.parent.reload(); + },1500); + } + } + }); + + }) + + }) + + //查看开票信息 + $(".viewStatement").click(function () { + var id = $(this).data("id"); + layer.open({ + type: 2, + title: "查看开票信息", + shadeClose: true, + shade: 0.8, + area: ['70%', '80%'], + content:'/admin.php?s=/AggregateFinanceStatement/viewStatement/id/'+id + }); + }); + //申请开票 + $(".createStatement").click(function () { + var id = $(this).data("id"); + layer.open({ + type: 2, + title: "申请开票", + shadeClose: true, + shade: 0.8, + area: ['70%', '80%'], + content:'/admin.php?s=/AggregateFinanceStatement/createStatement/id/'+id + }); + }); + //开票编辑 + $(".editStatement").click(function () { + var id = $(this).data("id"); + layer.open({ + type: 2, + title: "开票编辑", + shadeClose: true, + shade: 0.8, + area: ['70%', '80%'], + content:'/admin.php?s=/AggregateFinanceStatement/editStatement/id/'+id + }); + }); + //上传凭证 + $(".uploadVoucher").click(function () { + var id = $(this).data("id"); + layer.open({ + type: 2, + title: "上传凭证", + shadeClose: true, + shade: 0.8, + area: ['60%', '60%'], + content:'/admin.php?s=/AggregateFinanceStatement/uploadVoucher/id/'+id, + end:function(){ + reload(); + } + }); + }); + //查看凭证 + $(".viewVoucher").click(function () { + var img = $(this).data("img"); + layer.open({ + type: 1, + title:false, + content:"<img src='"+img+"' style='width: auto;height: 450px;margin: auto;'>" + }); + }); + //编辑凭证 + $(".editVoucher").click(function () { + var id = $(this).data("id"); + layer.open({ + type: 2, + title: "编辑凭证", + shadeClose: true, + shade: 0.8, + area: ['60%', '60%'], + content:'/admin.php?s=/AggregateFinanceStatement/editVoucher/id/'+id, + end:function(){ + reload(); + } + }); + }); + //新增批注 + $(".addRemark").click(function(){ + var id = $(this).data("id"); + layer.prompt({ + formType: 2, + value: '', + title: '输入备注', + area: ['360px', '300px'] //自定义文本域宽高 + }, function(value, index, elem){ + if(value != ''){ + $.ajax({ + type: "POST", + url: "{:U('saveRemark')}", + dataType: 'json', + async: false, + data: {id:id,remark:value}, + success:function(data){ + if(data.status==1){ + layer.msg("<font style='color:white'>" + data.info + "</font>"); + setTimeout(function(){ + window.location.reload(); + },1500); + } + } + }); + }else{ + layer.closeAll(); + } + }); + }) + //编辑批注 + $(".editRemark").click(function(){ + var id = $(this).data("id"); + var remark = $(this).data("remark"); + layer.prompt({ + formType: 2, + title: '修改备注', + value:remark, + area: ['360px', '300px'], + btnAlign: 'c', + id: 'prompt', + yes: function (index, layero) { + // 获取文本框输入的值 + var value = layero.find(".layui-layer-input").val(); + $.ajax({ + type: "POST", + url: "{:U('saveRemark')}", + dataType: 'json', + async: false, + data: {id:id,remark:value}, + success:function(data){ + if(data.status==1){ + layer.msg("<font style='color:white'>" + data.info + "</font>"); + setTimeout(function(){ + window.location.reload(); + },1500); + } + } + }); + } + }); + }) + //查看批注 + $(".viewRemark").click(function () { + var remark = $(this).data("remark"); + layer.open({ + type: 1, + title:false, + content:"<div style='width: 300;height:auto;margin: auto;padding:20px;'>"+remark+"</div>" + }); + }); + //撤销审核 + $(".cancelVerify").click(function(){ + var id = $(this).data("id"); + layer.confirm("撤销审核将回退到[已申请开票]状态,点击取消停止操作",{title:false}, function(index){ + $.ajax({ + type: "POST", + url: "{:U('cancelVerify')}", + dataType: 'json', + async: false, + data: {id:id}, + success:function(data){ + if(data.status==1){ + layer.msg("<font style='color:white'>" + data.info + "</font>"); + setTimeout(function(){ + window.location.reload(); + },1500); + } + } + }); + // layer.close(index); + }); + }) + //撤销申请 + $(".cancelApply").click(function(){ + var id = $(this).data("id"); + layer.confirm("撤销申请将回退到[未申请开票]状态,点击取消停止操作",{title:false}, function(index){ + $.ajax({ + type: "POST", + url: "{:U('cancelApply')}", + dataType: 'json', + async: false, + data: {id:id}, + success:function(data){ + if(data.status==1){ + layer.msg("<font style='color:white'>" + data.info + "</font>"); + setTimeout(function(){ + window.location.reload(); + },1500); + } + } + }); + // layer.close(index); + }); + }) + + + $(".statement_del").click(function () { + var del = $(this).data(); + layer.confirm('【警告】撤销后将不可回退,如需继续请点击确认', { + btn: ['确认','取消'], + title:false + }, function(){ + if(del.type == 0){ + var url = "/admin.php?s=/Statement/delCpStatement/id/"+del.id; + }else{ + var url = "/admin.php?s=/StatementMangement/delStatementData/id/"+del.id; + } + layer.load(2); + $.ajax({ + url: url, + type: "get", + dataType: "json", + success: function (data) { + if(data.code == 0){ + layer.closeAll('loading'); + layer.msg("<font style='color:#fff'>删除成功</font>"); + setTimeout(function(){ + window.location.reload(); + },350); + }else{ + alert("删除失败,请联系管理员") + } + } + }) + + }, function(){ + + }); + + + + }); + + $("#search").click(function(){ + + var start = $("#time_start").val(); + var end = $("#time_end").val(); + if(start !='' && end != ''){ + if (Date.parse(start) > Date.parse(end)){ + layer.msg('开始时间必须小于等于结束时间'); + return false; + } + } + + var url = $(this).attr('url'); + var query = $('.jssearch').find('input').serialize(); + query += "&"+$('.jssearch').find('select').serialize(); + query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,''); + query = query.replace(/^&/g,''); + if( url.indexOf('?')>0 ){ + url += '&' + query; + }else{ + url += '?' + query; + } + window.location.href = url; + }); + + $('#time_start').datetimepicker({ + format: 'yyyy-mm-dd', + language: "zh-CN", + minView: 2, + autoclose: true + }); + + $('#datetimepicker').datetimepicker({ + format: 'yyyy-mm-dd', + language: "zh-CN", + minView: 2, + autoclose: true, + pickerPosition: 'bottom-left' + }) + + $('#time_start2').datetimepicker({ + format: 'yyyy-mm-dd', + language: "zh-CN", + minView: 2, + autoclose: true + }); + + $('#datetimepicker2').datetimepicker({ + format: 'yyyy-mm-dd', + language: "zh-CN", + minView: 2, + autoclose: true, + pickerPosition: 'bottom-left' + }) + //回车自动提交 + $('.jssearch').find('input').keyup(function(event){ + if(event.keyCode===13){ + $("#search").click(); + } + }); + }) + + + </script> +</block> diff --git a/Application/Admin/View/AggregateFinanceStatement/uploadVoucher.html b/Application/Admin/View/AggregateFinanceStatement/uploadVoucher.html new file mode 100644 index 000000000..45f383823 --- /dev/null +++ b/Application/Admin/View/AggregateFinanceStatement/uploadVoucher.html @@ -0,0 +1,120 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta charset="UTF-8"> + <title></title> + <link href="http://admin.vlcms.com/Public/icon.ico" type="image/x-icon" rel="shortcut icon"> + <link rel="stylesheet" type="text/css" href="__CSS__/base.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/common.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/module.css"> + <link rel="stylesheet" type="text/css" href="__CSS__/style.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/default_color.css" media="all"> + <script type="text/javascript" src="__STATIC__/jquery-2.0.3.min.js"></script> + <script src="__STATIC__/layer/layer.js" type="text/javascript"></script> +</head> +<style> + html { + min-width:100%; + } + body { + padding: 0px; + } + .hide{ + display: none !important; + } +</style> +<body> +<div id="main" class="main" style="min-height: 342px;margin-top: 20px;padding-left: 50px;"> + <table border="0" cellspacing="0" cellpadding="0"> + <tr style="padding: 10px;height: 50px;"> + <td class="l">文件选择: </td> + <td > + <input type="file" id="fileinput" name="file" accept="image/*"> + </td> + <td style="color: #777;font-size: 12px;">仅能添加一张凭证,重复添加将覆盖</td> + </tr> + </table> + <div class="jssearch search_list fl cf"> + <div class="input-list"> + <div class="sch-btn uploadfile" style="width: 100px;padding: 5px;">确认添加</div> + <div id="delVoucher" class="sch-btn hide" style="width: 100px;padding: 5px;background-color: red;">删除凭证</div> + </div> + </div> + <div style="display: block;clear: both;"> + <img id="voucher" src="" class="hide" style="width: auto;height: 350px;margin: auto;"> + </div> +</div> + + +<script> + var id = {$id}; + $(function(){ + $(".uploadfile").on("click",function(){ + var acceptedTypes = ['image/png','image/jpeg','image/jpg','image/gif']; + var type = document.getElementById('fileinput').files[0].type; + if (acceptedTypes.indexOf(type) === -1) { + layer.msg("只允许图片格式文件"); + return false; + } + var formData = new FormData(); + formData.append("id",id); + formData.append("file", document.getElementById("fileinput").files[0]); + + var index = layer.load(); + $.ajax({ + url:"{:U('saveVoucher')}", + type:"post", + data:formData, + processData:false, + contentType:false, + success:function(data){ + layer.close(index); + if(data.status == 1){ + //file_path\ + layer.msg("上传成功"); + $('#voucher').attr("src",data.file_path).removeClass("hide"); + $('#delVoucher').removeClass("hide"); + $("#fileinput").val(''); + }else{ + layer.alert(data.info); + } + }, + error:function(e){ + layer.alert("网络错误"); + } + }); + }) + $("#delVoucher").on("click",function(){ + var index = layer.load(); + var formData = new FormData(); + formData.append("id",id); + $.ajax({ + url:"{:U('delVoucher')}", + type:"post", + data:formData, + processData:false, + contentType:false, + success:function(data){ + layer.close(index); + if(data.status == 1){ + //file_path\ + layer.msg("删除成功"); + $('#voucher').attr("src",'').addClass("hide"); + $('#delVoucher').addClass("hide"); + $("#fileinput").val(''); + }else{ + layer.alert(data.info); + } + }, + error:function(e){ + layer.alert("网络错误"); + } + }); + }) + + }); +</script> + +</body> +</html> diff --git a/Application/Admin/View/AggregateFinanceStatement/viewStatement.html b/Application/Admin/View/AggregateFinanceStatement/viewStatement.html new file mode 100644 index 000000000..9d7bf0bb3 --- /dev/null +++ b/Application/Admin/View/AggregateFinanceStatement/viewStatement.html @@ -0,0 +1,277 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta charset="UTF-8"> + <title></title> + <link rel="stylesheet" type="text/css" href="__CSS__/base.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/common.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/style.css" media="all"> + <link rel="stylesheet" type="text/css" href="__CSS__/default_color.css" media="all"> + <link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css"> + <link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css"> + <link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" /> + + <script type="text/javascript" src="__STATIC__/jquery-2.0.3.min.js"></script> + <script type="text/javascript" src="__JS__/select2.min.js"></script> + <script type="text/javascript" src="__STATIC__/layer3/layer.js"></script> + <script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script> + <script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"charset="UTF-8"></script> + <script src="__STATIC__/juicer-min.js" type="text/javascript"></script> +</head> +<style> + html { + min-width:100%; + } + body { + padding: 0px 0px 150px; + width: 960px; + margin: auto; + } + .tabcon1711 table{ + width: 480px; + } + table{ + + margin: auto; + } + .hidebox{ + display: none; + } + .r{ + width: 300px; + } + .l{ + width: 180px; + } + .select2-container--default .select2-selection--single { + color: #000; + resize: none; + border-width: 1px; + border-style: solid; + border-color: #a7b5bc #ced9df #ced9df #a7b5bc; + box-shadow: 0px 3px 3px #F7F8F9 inset; + height: 35px; + height: 28px; + border-radius: 3px; + font-size: 12px; + } + + .select2-container--default .select2-selection--single .select2-selection__rendered { + line-height: 35px; + line-height: 28px; + } + + .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + } + + .select2-container--default .select2-search--dropdown .select2-search__field { + height: 26px; + line-height: 26px; + font-size: 12px; + } + + .select2-results__option[aria-selected] { + font-size: 12px; + } + .input-list, .i_list { + float: left; + margin: 0; + } + +</style> +<body> + <!-- <div style="width: 100%;line-height: 100px;font-size: 25px;font-weight: 600;text-align: center;"> + 海南万盟天下科技有限公司 + </div> --> + <div style="display: flex;margin: auto;"> + <if condition="$data['first_party_info']"> + <div class="tab-content tabcon1711" id="firstPartBaseInfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">甲方:</td> + <td class="r"> + <div class="input-list input-list-game search_label_rehab"> + <select id="first_partner_id" name="partner_id" class="select_gallery"> + <option value="{$data['first_party_info']['id']}" selected>{$data['first_part_company']}</option> + </select> + </div> + </td> + </tr> + <tbody id="first_part_bser_info_show"> + <tr> + <td class="l">联系人:</td> + <td class="r"> + <input type="text" class="txt" name="link_man" value="{$data['first_party_info']['link_man']}" disabled="disabled" placeholder=""> + </td> + </tr> + <tr> + <td class="l">联系电话:</td> + <td class="r"> + <input type="text" class="txt" name="link_phone" value="{$data['first_party_info']['link_phone']}" disabled="disabled" placeholder=""> + </td> + </tr> + <tr> + <td class="l">邮寄地址:</td> + <td class="r"> + <input type="text" class="txt" name="address" value="{$data['first_party_info']['address']}" disabled="disabled" placeholder=""> + </td> + </tr> + <tr> + <td class="l">公司税号:</td> + <td class="r"> + <input type="text" class="txt" name="company_tax_no" disabled="disabled" value="{$data['first_party_info']['company_tax_no']}" placeholder=""> + </td> + </tr> + </tbody> + </tbody> + </table> + </div> + </if> + <if condition="$data['second_party_info']"> + <div class="tab-content tabcon1711" id="secondPartBaseInfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">乙方:</td> + <td class="r"> + <div class="input-list input-list-game search_label_rehab"> + <select id="second_partner_id" name="partner_id" class="select_gallery"> + <option value="{$data['second_party_info']['id']}" selected>{$data['second_part_company']}</option> + </select> + </div> + </td> + </tr> + <tbody id="second_part_bser_info_show"> + <tr> + <td class="l">联系人:</td> + <td class="r"> + <input type="text" class="txt" name="link_man" value="{$data['second_party_info']['link_man']}" disabled="disabled" placeholder=""> + </td> + </tr> + <tr> + <td class="l">联系电话:</td> + <td class="r"> + <input type="text" class="txt" name="link_phone" value="{$data['second_party_info']['link_phone']}" disabled="disabled" placeholder=""> + </td> + </tr> + <tr> + <td class="l">邮寄地址:</td> + <td class="r"> + <input type="text" class="txt" name="address" value="{$data['second_party_info']['address']}" disabled="disabled" placeholder=""> + </td> + </tr> + <tr> + <td class="l">公司税号:</td> + <td class="r"> + <input type="text" class="txt" name="company_tax_no" value="{$data['second_party_info']['company_tax_no']}" disabled="disabled" placeholder=""> + </td> + </tr> + </tbody> + </tbody> + </table> + </div> + </if> + </div> + <if condition="$data['company']"> + <div style="padding: 30px 0px 10px;display: block;height:30px;"> + <div class="input-list input-list-server search_label_rehab"> + <p style="font-size: 20px;font-weight: 600;">支付给:<spen style="margin-left: 15px;font-size: 16px;">{$data.company} + </spen> + </p> + </div> + </div> + </if> + <div class="data_list box_mt" style="margin-top: 10px;"> + <div class=""> + <table> + <!-- 表头 --> + <thead> + <tr> + <th style="border-right: solid 1px #b6cad2;">结算时间</th> + <th style="border-right: solid 1px #b6cad2;">产品</th> + <th style="border-right: solid 1px #b6cad2;">平台总额</th> + <th style="border-right: solid 1px #b6cad2;">分成比例</th> + <th style="border-right: solid 1px #b6cad2;">税费费率</th> + <th >结算金额</th> + </tr> + </thead> + <tbody id="statementShow"> + <foreach name="data.statement_info" item="it" > + <tr> + <td>{$it.begintime}~{$it.endtime}</td> + <td>{$it.game_name}</td> + <td>{$it.money}元</td> + <td><input type="text" class="txt statementchange" name="ratio" disabled="disabled" value="{$it.ratio}" style="width: 40px;">%</td> + <td><input type="text" class="txt statementchange" name="fax_ratio" disabled="disabled" value="{$it.fax_ratio}" style="width: 40px;">%</td> + <td>{$it.ratio_money}元</td> + </tr> + <!-- {$key}|{$vo} --> + </foreach> + + <tr> + <td>合计</td> + <td></td> + <td>{$data.statement_count.pay_money}元</td> + <td></td> + <td></td> + <td>{$data.statement_count.ratio_money}元</td> + </tr> + <tr> + <td colspan=5>本月分成总金额(人民币大写):</td> + <td>{$data.statement_count.big_ratio_money}</td> + </tr> + </tbody> + </table> + </div> + </div> + <if condition="$data['payinfo']"> + <div id="partpatinfo" style="display: flex;margin: auto;"> + <div class="tab-content tabcon1711" id="skf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">收款方名称:</td> + <td class="r"> + <input type="text" class="txt" name="" disabled="disabled" placeholder="" value="{$data.payinfo.payee_name}"> + </td> + </tr> + <tr> + <td class="l">银行账号:</td> + <td class="r"> + <input type="text" class="txt" name="" value="{$data.payinfo.bank_account}" disabled="disabled" placeholder=""> + </td> + </tr> + <tr> + <td class="l">开户行:</td> + <td class="r"> + <input type="text" class="txt" name="password" value="{$data.payinfo.opening_bank}" disabled="disabled" placeholder="请先选择支付给谁"> + </td> + </tr> + </tbody> + </table> + </div> + <div class="tab-content tabcon1711" id="fkf_payinfo"> + <table border="0" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td class="l">开票项目:</td> + <td class="r"> + <input type="text" class="txt" disabled="disabled" placeholder="" name="invoice_item" value="{$data.payinfo.invoice_item}"> + </td> + </tr> + <tr> + <td class="l">发票类型:</td> + <td class="r"> + <input type="text" class="txt" disabled="disabled" placeholder="" name="invoice_type" value="{$data.payinfo.invoice_type}"> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </if> +</body> +</html> diff --git a/Data/update.sql b/Data/update.sql index ea4f7764f..5a36ceed2 100644 --- a/Data/update.sql +++ b/Data/update.sql @@ -1605,3 +1605,43 @@ CREATE TABLE `tab_finance_compare_info` ( KEY `pay_way` (`pay_way`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='财务导入对账详情表'; + +--新增参数kv表 chenzhi 20200422 +CREATE TABLE `sys_kv` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `key` varchar(50) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT 'key', + `value` varchar(1000) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT 'value', + `type` varchar(50) DEFAULT NULL COMMENT '类型说明', + `remark` varchar(1000) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`id`), + UNIQUE KEY `key_name` (`key`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='系统简单kv储存表'; + +INSERT INTO `platform`.`sys_kv` (`key`, `value`, `type`, `remark`) VALUES ('aggregate_finance_api', 'http://admin.cz.com/index.php?g=api&m=FinanceWeekCount&a=returnFinanceAccountsDataList', 'string', '聚合下游结算Api地址'); + +--聚合渠道结算单 chenzhi 20200422 +CREATE TABLE `tab_aggregate_statement` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键', + `withdraw_type` tinyint(2) DEFAULT '0' COMMENT '对账类型(0-周结,1月结,2补点)', + `channel_id` int(11) DEFAULT '0' COMMENT '对账公司id', + `channel_name` varchar(60) NOT NULL COMMENT '对账公司名称', + `link_phone` varchar(24) DEFAULT NULL COMMENT '对账公司联系人电话', + `begintime` int(11) NOT NULL DEFAULT '0' COMMENT '对账开始时间', + `endtime` int(11) NOT NULL DEFAULT '0' COMMENT '对账截止时间', + `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建对账单时间', + `ratio_money` decimal(10,2) DEFAULT '0.00' COMMENT '对账金额', + `pay_money` decimal(10,2) DEFAULT '0.00' COMMENT '原始金额合计', + `pay_type` tinyint(2) DEFAULT '0' COMMENT '收款方(0-甲方付给乙方,乙方收款;1-乙方付给甲方,甲方收款)', + `ext_field` longtext COMMENT '凭证地址', + `first_party_info` longtext DEFAULT NULL COMMENT '甲方相关信息json', + `second_party_info` longtext DEFAULT NULL COMMENT '乙方相关信息json', + `statement_info` longtext NOT NULL COMMENT '订单相关信息json', + `admin_name` varchar(60) NOT NULL COMMENT '操作人名称', + `admin_id`int(11) DEFAULT '0' COMMENT '操作人id', + `verify_status` tinyint(2) DEFAULT '0' COMMENT '审核状态 -1审核拒绝 0:系统生成结算单 1:申请开票 2:审核同意 3:已开票 4:上传收款凭证 5已到账', + `remark` longtext DEFAULT NULL COMMENT '备注信息', + PRIMARY KEY (`id`), + KEY `withdraw_type` (`withdraw_type`) USING BTREE, + KEY `channel_id` (`channel_id`) USING BTREE, + KEY `link_phone` (`link_phone`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='聚合渠道结算单'; \ No newline at end of file diff --git a/Public/Admin/excel/aggregate_stream.xls b/Public/Admin/excel/aggregate_stream.xls new file mode 100644 index 000000000..c34f0dfbe Binary files /dev/null and b/Public/Admin/excel/aggregate_stream.xls differ