<?php

namespace Agent\Lib;

use Dever;

class Agreement
{
	private $font_size = 12;

	# 查看合同
	public function show_api()
	{
		$p = Dever::input('p');
		if (!$p) {
			Dever::alert('传入参数有误');
		}
		$p = Dever::json_decode(Dever::decode($p));
		if (!$p) {
			Dever::alert('传入参数有误');
		}
		$source = $p['source'];
		if ($source == 2) {
            # 获取当前登录的uid
            $mid = Dever::load('passport/user')->check(false);
            if (!$mid || $mid <= 0) {
                //$mid = 1000000;
                Dever::alert('请先登录');
            }
			
		} else {
			Dever::load('manage/auth')->init();
            $mid = false;
		}
		$agreement_id = $p['agreement_id'];
		$status = $p['status'];
		$id = $p['id'];

		if ($status == 1) {
			$info = Dever::db('agent/order')->find($id);
            $info['create_state'] = 2;
		} elseif ($status == 2) {
			$info = Dever::db('agent/member_agreement')->find($id);
			if (!$info) {
				Dever::alert('未生成合同');
			}
            $info['create_state'] = 1;
			$agreement_id = $info['agreement_id'];
		}
		$agreement = Dever::db('setting/agreement')->find($agreement_id);
		if (!$agreement) {
			Dever::alert('合同模板不存在');
		}

		if ($mid && $mid != $info['mid']) {
			Dever::alert('您没有权限查看');
		}

		$method = 'pdf_' . $agreement['type'];
		return $this->$method($agreement, $info);
	}

	# 生成跳转链接
	public function location_api()
	{
		Dever::load('manage/auth')->init();
		$id = Dever::input('id');
		$info = Dever::db('agent/member_agreement')->find($id);
		$info = $this->name($info['agreement_id'], $info, $info['role'], 2, 3);

		Dever::location($info[1]);
	}

	# 合同名称
    public function name($agreement, $info, $role, $status = -1, $source = 1)
    {
    	if (is_numeric($agreement)) {
    		$agreement = Dever::db('setting/agreement')->find($agreement);
    	}
    	if (is_numeric($role)) {
    		$role = Dever::db('setting/role')->find($role);
    	}
    	$name = $agreement['name'];
        if (strstr($name, '{name}')) {
        	$name = str_replace('{name}', $info['name'], $name);
        }
        if (strstr($name, '{role}')) {
        	$name = str_replace('{role}', $role['name'], $name);
        }
        if (strstr($name, '{area}')) {
        	$info['area'] = Dever::load("area/api.string", $info['area'], '');
        	$name = str_replace('{area}', $info['area'], $name);
        }
        if (strstr($name, '{date}')) {
        	if (isset($info['sdate'])) {
        		$sdate = date('Y年m月d日', $info['sdate']);
        	} else {
        		$sdate = date('Y年m月d日');
        	}
        	$name = str_replace('{date}', $sdate, $name);
        }

        if ($status > 0) {
        	$param = array();
        	$param['source'] = $source;
        	$param['status'] = $status;
        	$param['id'] = $info['id'];
        	$param['agreement_id'] = $agreement['id'];
        	$param = Dever::encode(Dever::json_encode($param));
        	$link = Dever::url('agent/lib/agreement.show?p=' . $param);
        	if ($source == 1) {
	        	# 1 是未生成合同，预览
	        	# 2 是已生成合同
	        	$name = '<a href="'.$link.'" target="_blank">'.$name.'</a>';
	        } else {
	        	return array($name, $link);
	        }
        }

        return $name;
    }

	# 新建合同
	public function up($order, $status = 2, $type = false)
	{
        if ($type) {
            $agreement = Dever::db('setting/agreement')->select(array('type' => $type));
        } else {
            $agreement = Dever::db('setting/agreement')->getData();
        }
		// print_r($agreement);die;
		$role = Dever::db('setting/role')->find($order['role']);
        $order['oprice'] = $order['price'];
        foreach ($agreement as $k => $v) {
            if ($k == 3) {
                if (isset($order['soft_cash']) && $order['soft_cash'] > 0) {
                    $order['price'] = $order['soft_cash'];
                } else {
                    continue;
                }
            } else {
                if (isset($order['agent_cash']) && $order['agent_cash'] > 0) {
                    $order['price'] = $order['agent_cash'];
                } else {
                    $order['price'] = $order['oprice'];
                }
            }
        	if ($k >= 5) {
        		continue;
        	}
        	if ($k == 2 && $order['order_type'] == 1) {
        		continue;
        	}
        	if ($k == 4 && $order['order_type'] == 2) {
        		continue;
        	}
        	$qdate = (isset($order['cdate']) && $order['cdate']) ? $order['cdate'] : time();
        	$sdate = $qdate;
        	$edate = strtotime('+3 year', $sdate);
        	if ($k == 2 && $order['order_type'] == 2) {
        		# 查找旧合同
        		$old = Dever::db('agent/member_agreement')->getOld(array('mid' => $order['mid'], 'agreement_id' => 1));
        		if (!$old) {
        			continue;
        		} else {
        			$sdate = $old['sdate'];
        			$edate = $old['edate'];
        		}
        	}

            $where['mid'] = $order['mid'];
            $where['agreement_id'] = $v['id'];
            $where['order_id'] = $order['id'];
            $where['clear'] = true;

            $info = Dever::db('agent/member_agreement')->find($where);

            $where['order_num'] = $this->getOrderId();
            $where['agreement_name'] = $this->name($v, $order, $role);
            $where['type'] = $order['type'];
            $where['sign'] = $order['sign'];
            $where['name'] = $order['name'];
            $where['mobile'] = $order['mobile'];
            $where['role'] = $order['role'];
            $where['price'] = $order['price'];
            $where['area'] = $order['area'];
            $where['idcard'] = $order['idcard'];
            $where['idcard_front'] = $order['idcard_front'];
            $where['idcard_back'] = $order['idcard_back'];
            $where['company_name'] = $order['company_name'];
            $where['company_pic'] = $order['company_pic'];
            $where['address'] = '';
            $where['status'] = $status;
            $where['udate'] = $where['cdate'] = time();
            $where['qdate'] = $qdate;
            $where['sdate'] = $sdate;
            $where['edate'] = $edate;

            $method = 'content_' . $v['type'];

            if ($info) {
                $up['name'] = $where['name'];
                $up['content'] = Dever::array_encode($this->$method($v, $info));
                $up['where_id'] = $info['id'];
                $state = Dever::db('agent/member_agreement')->update($up);
                // print_R($state);die;
            } else {
                $up = $where;

                $up['content'] = Dever::array_encode($this->$method($v, $up));
                $state = Dever::db('agent/member_agreement')->insert($up);
            }
        }
        if($state){
            return $state;
        }
	}

    # 更新合同内容
    public function upContent($id)
    {
        $state = false;
        $info = Dever::db('agent/member_agreement')->find($id);
        if ($info) {
            $agreement = Dever::db('setting/agreement')->find($info['agreement_id']);

            if ($agreement) {
                $method = 'content_' . $agreement['type'];
                $up = array();
                $order = Dever::db('agent/order')->find($info['order_id']);
                if ($order) {
                    if ($agreement['type'] == 1) {
                        if (isset($order['agent_cash']) && $order['agent_cash'] > 0) {
                            $order['price'] = $order['agent_cash'];
                        }
                    } elseif ($agreement['type'] == 3) {
                        if (isset($order['soft_cash']) && $order['soft_cash'] > 0) {
                            $order['price'] = $order['soft_cash'];
                        }
                    }
                    $info['price'] = $up['price'] = $order['price'];
                }
                
                $up['content'] = Dever::array_encode($this->$method($agreement, $info));
                $up['where_id'] = $info['id'];
                $member = Dever::db('agent/member')->find($info['mid']);
                $up['name'] = $member['name'];
                $up['type'] = $member['type'];
                $up['company_number'] = $member['company_number'];
                $up['idcard'] = $member['idcard'];
                $up['mobile'] = $member['mobile'];
                $up['role'] = $member['role'];
                $up['area'] = $member['area'];
                $up['idcard_front'] = $member['idcard_front'];
                $up['idcard_back'] = $member['idcard_back'];
                $up['company_name'] = $member['company_name'];
                $up['company_pic'] = $member['company_pic'];
                $role = Dever::db('setting/role')->find($up['role']);
                $up['agreement_name'] = $this->name($agreement, $up, $role);
                $state = Dever::db('agent/member_agreement')->update($up);
            }
        }
        return $state;
    }

    # 作废并生成
    public function drop($id)
    {
        $info = Dever::db('agent/member_agreement')->find($id);
        if ($info) {
            $agreement = Dever::db('setting/agreement')->find($info['agreement_id']);

            if ($agreement) {
                $state = Dever::db('agent/member_agreement')->update(array('where_id' => $info['id'], 'status' => 3));
                if ($state) {
                    # 生成新的合同
                    unset($info['id']);
                    unset($info['cdate']);
                    unset($info['sdate']);
                    unset($info['edate']);
                    unset($info['qdate']);
                    unset($info['sign']);
                    $member = Dever::db('agent/member')->find($info['mid']);

                    $info['name'] = $member['name'];
                    $info['type'] = $member['type'];
                    $info['company_number'] = $member['company_number'];
                    $info['idcard'] = $member['idcard'];
                    $info['mobile'] = $member['mobile'];
                    $info['role'] = $member['role'];
                    $info['area'] = $member['area'];
                    $info['idcard_front'] = $member['idcard_front'];
                    $info['idcard_back'] = $member['idcard_back'];
                    $info['company_name'] = $member['company_name'];
                    $info['company_pic'] = $member['company_pic'];

                    $info['sign'] = '';
                    $info['status'] = 1;
                    $role = Dever::db('setting/role')->find($info['role']);
                    $info['agreement_name'] = $this->name($agreement, $info, $role);
                    Dever::db('agent/member_agreement')->insert($info);
                }
            }
        }
    }

	/**
     * 生成订单号
     *
     * @return mixed
     */
    public function getOrderId()
    {
        $where['order_num'] = Dever::order('AG');
        $state = Dever::db('agent/member_agreement')->one($where);
        if (!$state) {
            return $where['order_num'];
        } else {
            return $this->getOrderId();
        }
    }

    public function content($name, $content)
    {
        return array('name' => $name, 'content' => $content);
    }

    public function content_4($agreement, $info)
    {
        $content = array();
        $content[] = $this->content('', ' 承诺人曾与中食民安（北京）科技有限公司（以下简称“中食民安”）签订《中食民安（北京）科技有限公司代理商合作协议》，为便于更好的工作，承诺人自愿成为中食民安的市场管理培训师并销售产品，为更好的开展相关工作，承诺如下：');

        $content[] = $this->content('一、我知悉相关定义', '市场管理培训师（以下简称培训师）：是培训和辅导其管理区域内其他代理商，在进行销售渠道的拓展、营销推广技巧、公司政策的传达和讲解的辅导后，达到提升销售额、完成业绩指标，并对其他代理商进行监督和管理的身份。');

        $content[] = $this->content('二、我确认培训师与被培训人的关系', '1、培训师管理区域与《中食民安（北京）科技有限公司代理商合作协议》中授权区域保持一致。
    2、被培训人：指每个培训师管理区域内的其他代理，被培训人以中食民安规定方式签订《中食民安（北京）科技有限公司代理商合作协议》，即视为被培训人同意成为并自愿接受培训师的培训和管理。');

        $content[] = $this->content('三、培训师及被培训人的权利和义务', '1、培训师的权利
    1)培训师的服务费，按周结算，具体服务费标准与培训内容、培训时间另行约定；
    2)管理和被管理关系存续期间，根据实际的培训情况、政策讲解的掌握、业绩完成情况，进行综合评定，评定标准见《市场管理培训费》，完成考核的培训师在每个奖励周期相应收益（包括物质和荣誉奖励，愿意服从中食民安根据实际完成情况及市场状态等定期或不定期调整奖励内容及标准）
    2、培训师的义务
    1)及时传达中食民安各项新颁布的通知、公告等各类文件并将内容解读清楚；
    2)每周不少于三次，对被培训人进行业务培训，包括社群的建立、销售技巧、销售渠道拓展、客户服务、如何办理沙龙等；
    3)随时帮助被培训人解决实际销售中遇到的任何问题。
    3、被培训人的义务
    1)督促并指导被培训人按照中食民安要求进行招商活动，接受中食民安监管；
    2)督促并指导被培训人在培训师的培训指导下，积极开拓市场，努力完成业绩。
    ');

        $content[] = $this->content('四、其它', '1、培训师与被培训人，合作过程中出现任何争议，可申请中食民安进行协调；
    2、本承诺书作为《中食民安（北京）科技有限公司代理商合作协议》的附件，是《中食民安（北京）科技有限公司代理商合作协议》的不可分割部分，我愿意遵守。
    ');

        return $content;
    }

	# 市场管理培训师承诺书
    public function pdf_4($agreement, $info)
    {
    	$base = Dever::db('setting/base')->find();

        if (isset($info['qdate']) && $info['qdate']) {
        	$qdate = date('Y年m月d日', $info['qdate']);
        } else {
        	$qdate = date('Y年m月d日');
        }
        $role = Dever::db('setting/role')->find($info['role']);
        $name = $this->name($agreement, $info, $role);

        $pdf = Dever::load('pdf/lib/core')->init();
        $pdf->SetTitle($name);
        $pdf->setCellHeightRatio(1.8);
        $pdf->setCellPaddings(10, 0, 10, 0);
        $pdf->font(18, 'B');
        $pdf->center('市场管理培训师承诺书');
        $pdf->br();
        $pdf->font($this->font_size, 'B');
        $pdf->left('承诺人：' . $info['name']);
        $pdf->left('身份证号：' . $info['idcard']);
        $pdf->left('电话：' . $info['mobile']);
        $pdf->br(2);

        if (isset($info['content']) && $info['content']) {
            $info['content'] = Dever::array_decode($info['content']);
            foreach($info['content'] as $k => $v) {
                $pdf->content($v['name'], $v['content'], $this->font_size);
            }
        } else {
            $method = 'content_' . $agreement['type'];
            $content = $this->$method($agreement, $info);

            foreach ($content as $k => $v) {
                $pdf->content($v['name'], $v['content'], $this->font_size);
            }

            if (isset($info['create_state']) && $info['create_state'] == 1) {
                $up = array();
                $up['content'] = Dever::array_encode($content);
                $up['where_id'] = $info['id'];
                $state = Dever::db('agent/member_agreement')->update($up);
            }
        }

        $pdf->center('                                                                                  承诺人：');
        $pdf->center('                                                                                                             日期：' . $qdate);

        $pic = Dever::pic($base['agreement_sign']);

        $cx = $pdf->GetX();
        $cy = $pdf->GetY();

        $x = $cx - 50;
        $y = $cy - 15;

        if ($info['sign']) {
        	$info['sign'] = Dever::pic($info['sign']);
            $temp = explode('?', $info['sign']);
            $info['sign'] = $temp[0];
        	if (strstr($info['sign'], 'http')) {
        		$pdf->Image($info['sign'], $x, $y, 20, 20);
        	}
        }

        $pdf->out($name);
    }

    public function content_2($agreement, $info, $data = false)
    {
        if ($data) {
            list($role, $name, $oname, $sdate, $edate, $qdate) = $data;
        } else {
            $role = Dever::db('setting/role')->find($info['role']);
            $name = $this->name($agreement, $info, $role);

            $oagreement = Dever::db('setting/agreement')->find(1);
            $oname = $this->name($oagreement, $info, $role);

            if (isset($info['sdate']) && $info['sdate']) {
                $sdate = date('Y年m月d日', $info['sdate']);
                $edate = date('Y年m月d日', $info['edate']);
                $qdate = date('Y年m月d日', $info['qdate']);
            } else {
                $sdate = date('Y年m月d日');
                $edate = date('Y年m月d日', strtotime('+3 year'));
                $qdate = $sdate;

                $old = Dever::db('agent/member_agreement')->getOld(array('mid' => $info['mid'], 'agreement_id' => 1));
                if ($old) {
                    $sdate = date('Y年m月d日', $old['sdate']);
                    $edate = date('Y年m月d日', $old['edate']);
                }
            }
        }
        

        $content = array();
        $content[] = $this->content('', '        甲乙双方曾于'.$sdate.'签订《'.$oname.'》（以下简称“原协议”），原协议有效期至'.$edate.'，现经甲乙双方友、充分协商，决定解除双方签订的原协议，具体内容如下：
                第一，原协议自'.$qdate.'解除，自解除之日起，原协议中约定的双方权利义务终止。
            第二，本协议由甲乙双方签字或盖章后生效，本协议生效之日，原协议解除，双方互不追究因原协议履行而产生的法律责任。
            第三，本协议一式两份，甲乙双方各执一份，均具有同等法律效力');

        return $content;
    }

    # 合同解除协议
    public function pdf_2($agreement, $info)
    {
    	$base = Dever::db('setting/base')->find();

        if (isset($info['agreement_id'])) {
        	$order_num = $info['order_num'];
        } else {
        	$order_num = '待生成';
        }
        if ($info['type'] == 1) {
        	$idcard = $info['idcard'];
        } else {
        	$idcard = $info['company_number'];
        }

        $role = Dever::db('setting/role')->find($info['role']);
        $name = $this->name($agreement, $info, $role);

        $oagreement = Dever::db('setting/agreement')->find(1);
        $oname = $this->name($oagreement, $info, $role);

        $price = $info['price'];

        $area = Dever::load("area/api.string", $info['area'], '');

        $address = $area;

        if (isset($info['sdate']) && $info['sdate']) {
        	$sdate = date('Y年m月d日', $info['sdate']);
        	$edate = date('Y年m月d日', $info['edate']);
        	$qdate = date('Y年m月d日', $info['qdate']);
        } else {
        	$sdate = date('Y年m月d日');
        	$edate = date('Y年m月d日', strtotime('+3 year'));
        	$qdate = $sdate;

        	$old = Dever::db('agent/member_agreement')->getOld(array('mid' => $info['mid'], 'agreement_id' => 1));
        	if ($old) {
        		$sdate = date('Y年m月d日', $old['sdate']);
        		$edate = date('Y年m月d日', $old['edate']);
        	}
        }

        $company_name = '中食民安（北京）科技有限公司';

        $pdf = Dever::load('pdf/lib/core')->init();
        $pdf->SetTitle($name);
        $pdf->font(18, 'B');
        $pdf->center('合 同 解 除 协 议');
        $pdf->br(2);
        
        $content = array();

        $content[] = array
        (
        	'name' => array
	        (
	        	'甲 方',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' 中食民安（北京）科技有限公司(以下简称“甲方”)',
	        	100,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'统一社会信用代码',
	        	26,
	        	STR_PAD_LEFT,
	        	45,
	        ),
	        'content' => array
	        (
	        	' 91110106MA01T8R42B',
	        	100,
	        	STR_PAD_RIGHT,
	        	40,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'地 址',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' 北京经济技术开发区经海四路22号院四区5号楼14层1706',
	        	100,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'电 话',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' 010-53391855',
	        	160,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'乙 方',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' ' . $info['name'],
	        	100,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'统一社会信用代码/身份证号码',
	        	37,
	        	STR_PAD_LEFT,
	        	67,
	        ),
	        'content' => array
	        (
	        	' ' . $idcard,
	        	100,
	        	STR_PAD_RIGHT,
	        	40,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'地 址',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' ' . $address,
	        	100,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'电 话',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' ' . $info['mobile'],
	        	160,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );
        $pdf->setCellHeightRatio(2);
        foreach ($content as $k => $v) {
        	$pdf->font($this->font_size);
	        $pdf->left(Dever::mb_str_pad($v['name'][0] . '：', $v['name'][1], ' ', $v['name'][2]), $v['name'][3]);
	        $pdf->font($this->font_size, '');
	        $pdf->left(Dever::mb_str_pad($v['content'][0], $v['content'][1], ' ', $v['content'][2]), $v['content'][3]);
	        $pdf->br();
	        if ($k == 3) {
	        	$pdf->br();
	        }
        }

        $pdf->br();
        $pdf->setCellPaddings(10, 0, 10, 0);
        
        $oname = str_replace('.pdf', '', $oname);

        if (isset($info['content']) && $info['content']) {
            $info['content'] = Dever::array_decode($info['content']);
            foreach($info['content'] as $k => $v) {
                $pdf->content($v['name'], $v['content'], $this->font_size);
            }
        } else {
            $method = 'content_' . $agreement['type'];
            $content = $this->$method($agreement, $info, array($role, $name, $oname, $sdate, $edate, $qdate));

            foreach ($content as $k => $v) {
                $pdf->content($v['name'], $v['content'], $this->font_size);
            }

            if (isset($info['create_state']) && $info['create_state'] == 1) {
                $up = array();
                $up['content'] = Dever::array_encode($content);
                $up['where_id'] = $info['id'];
                $state = Dever::db('agent/member_agreement')->update($up);
            }
        }

        $pdf->br(1, 20);
        $pdf->font($this->font_size, '');
        $pdf->left('甲 方（盖章）：', 90)->left('乙 方（盖章/签字）：', 90);
        $pdf->br();

        $pdf->br(1, 1);
        $pdf->font($this->font_size, '');
        $pdf->left('日                      期：'.$qdate, 90);
        $pdf->left('日                      期：'.$qdate, 80);
        $pdf->br();

        $pic = Dever::pic($base['agreement_sign']);

        $cx = $pdf->GetX();
        $cy = $pdf->GetY();

        $x = $cx + 50;
        $y = $cy - 25;

        $pdf->Image($pic, $x, $y, 15, 15);

        $x += 100;

        if ($info['sign']) {
        	$info['sign'] = Dever::pic($info['sign']);
            $temp = explode('?', $info['sign']);
            $info['sign'] = $temp[0];
        	if (strstr($info['sign'], 'http')) {
        		$pdf->Image($info['sign'], $x, $y, 15, 15);
        	}
        }

        

        $pdf->out($name);
    }


    public function content_1($agreement, $info, $data = false)
    {
        if ($data) {
            list($role, $name, $price, $price_str, $area, $sdate, $edate, $qdate) = $data;
        } else {
            $role = Dever::db('setting/role')->find($info['role']);
            $name = $this->name($agreement, $info, $role);

            $price = $info['price'];
            # 转大写
            $price_str = Dever::convertNum($price);

            $area = '【' . Dever::load("area/api.string", $info['area'], '') . '】';

            if (isset($info['sdate']) && $info['sdate']) {
                $sdate = date('Y年m月d日', $info['sdate']);
                $edate = date('Y年m月d日', $info['edate']);
                $qdate = date('Y年m月d日', $info['qdate']);
            } else {
                //$sdate = date('Y年m月d日', $info['cdate']);
                $sdate = date('Y年m月d日');
                $edate = date('Y年m月d日', strtotime('+3 year'));
                $qdate = $sdate;
            }
        }

        $content = array();
        $content[] = $this->content('', '（1）甲方是一家依法成立、合法存续的有限公司，具有技术开发、技术服务、电商运营、市场拓展、产品设计、产品生产等经验；
（2）乙方认同甲方公司营业执照上许可的经营内容，经市场考察及调研后愿意成为甲方的代理商，在相关区域进行市场推广及业务拓展；
（3）本协议所称“代理”非《中和人民共和国民法典》第七章之规定的代理法律关系，乙方非甲方授权代理人。双方系平等民事主体合作关系，乙方以自己名义独立开展与甲方及其他第三方民事活动，独自承担民事责任。
（4）乙方为依法成立、合法存续的企业法人或具有完全行为能力的自然人，在其经营地拥有丰富的社会资源并有能力依法按照本协议的约定搭建各项管理架构、成立线下门店、以及履行运营规则及相关义务。
根据《中华人民共和国民法典》及我国相关法律法规定，甲乙双方本着“平等自愿，互惠互利、共同发展”的原则，就乙方自愿成为甲方代理商并销售甲方产品相关事宜，经双方友好协商一致，达成如下协议：');

        $content[] = $this->content('第一条  主体合法', '1.1：甲方和乙方分别向对方承诺：本协议的主体依法具有履行本协议要求的行为能力（包括但不限于依法设立且仍存续合法有效），拥有履行本协议要求的合法有效的资格或资质。
1.2：若乙方为企业法人的，则必须以独立法人形式运营，其公司经营地须在中华人民共和国境内，乙方同时承诺其股东之间的任何争议事项（如有）均不影响本协议的签订及履行。');

        $content[] = $this->content('第二条  能力要求与代理职责','2.1：行为能力
2.1.1：本协议生效后，乙方应有能力合法协调和充分运用本协议规定的业务覆盖区域内的各种资源，确保协议顺利履行。
2.1.2：本协议有效期间，乙方应有能力及时完成本协议约定的事项，推动实现本协议目的。
2.2：行为规范
乙方保证遵守国家法律规定和甲方商业模式及电商平台公布的行为规则。
2.3：乙方职责
①乙方须规范其业务覆盖区域内的代理行为，，包括符合甲方要求或甲方对代理商的制度要求，合法合规经营；
②负责对业务覆益区域内的下属代理商提供业务培训及其他必要服务；
③积极推动业务覆盖区域内代理商的业务拓展、指导，监督业务覆盖区域所有代理商管理、经营业务等；
④每月5日前通过书面形式向甲方报告业务覆盖区域上月各项业务情况；
⑤对甲方在业务覆盖区域内设立的其他代理商或相应机构的工作，负有配合义务；
⑥每季度至少一次对业务覆盖区域内代理的业务进行检查并形成书面报告提交给甲方；
⑦乙方须依法合规开展经营活动，并对辖区代理的业务自行承担一切法律行政等责任；
⑧乙方须严格执行甲方统一的经营政策和管理制度，维护甲方合法利益和经营收益权；
⑨乙方须积极维护甲方及相关平台商誉，及时处理因经营产生的任何争议；
⑩完成甲方交办的其他事项。');

        $content[] = $this->content('第三条  具体合作内容', '3.1：合作方式：
甲方提供产品、线上销售平台，并为乙方提供销售培训、线下销售店面装修设计建议、线下收银系统等服务。乙方进行线下销售，或介绍客户至甲方线上平台购买商品。乙方亦可向甲方介绍新的代理商。乙方应按合同约定合作期限向甲方支付代理费，乙方可以获得本协议第五条约定的相关收益。
乙方销售的所有产品，皆通过甲方销售管理系统进行收费及结算，乙方不得私自收费。否则甲方有权要求乙方返还全部收益并赔偿损失，并有权解除本协议。
3.2：合作期限：
自本协议生效之日起有效期三年。即自【'.$sdate.'至'.$edate.'】止。合同到期后，乙方无违约或侵权行为，并经过甲方考核合格后可申请顺延。甲方考核标准见附件1《代理商考核办法》。
3.3：甲方授权乙方在'.$area.'区域内推广、发展、销售甲方产品相关业务。
3.4：乙方在此不可撤销地承诺并确认：在签署本协议时，乙方已经知悉并接受甲方的商业模式、运作思路等信息，所收取的代理费用将不予退还。乙方同时承诺将不得以个人原因或使用频率不高、未实际使用或收益太少等其他事由要求单方提前解约等为由提出任何形式的抗辩或退费要求。
3.5：代理级别及费用
代理级别为：【'.$role['name'].'】，代理费用为【'.$price.'】元，大写：【'.$price_str.'】，自本协议签订之日起的5日内，乙方向甲方缴纳代理费用。');

        $content[] = $this->content('第四条  甲方服务内容','乙方签订完毕本协议并支付代理费后3日内，甲方作为权利人将：
4.1：向乙方交付中食民安经销商后台管理系统、线上商城分销系统等科技软件使用权。
4.2：合法授权乙方在辖区内根据甲方的市场运营方案做项目推广，享有相应的权益。
4.3：合法授权乙方销售甲方已有产品，并向乙方提供此类产品，以便乙方销售。若提前向乙方提供产品的，甲方有权收取相应的产品成本费用，在向乙方分配该部分产品收益时一并退还。
4.4：开始向乙方提供技术及服务支持，包括但不限于人员培训、业务考核、系统开通、产品发布、代理商申请等。
');
        $content[] = $this->content('第五条  乙方收益', '5.1：乙方可享受以下收益。
5.1.1：享有中食民安经销商后台管理系统、线上商城分销系统等科技软件使用权；
5.1.2：享有招商销售收益并享受相关的权益；
5.1.3：享受产品销售推荐收益；
5.1.4：享受区域产品销售管理收益；
5.1.5：享有按公司政策置换期权的资格；
5.2：甲方将视产品及平台发展的需要不定时调整收益规则，相关调整收益规则将通过甲方公司系统平台发布，经乙方阅读、理解并接受后生效，具体以甲方系统平台每次公布的收益规则为准；乙方有及时查阅甲方系统平台公告的义务，甲方将相关调整收益规则在平台发布后7个自然日内乙方未向甲方提出书面异议的，视为接受该规则。
5.3：甲方保留收益规则在法律规定范围内的解释权和调整权，乙方因本协议约定而获得的一切收益，需依法缴纳税费，若乙方为个人，则相应所得税由甲方代扣代缴。
5.4：若乙方服务区域内或乙方介绍到线上的客户出现交易取消而产生退款，乙方应于该等交易取消之日起3个自然日内将所有的收益全额及时退还甲方，如乙方未及时退还给乙方，甲方直接从乙方的收益中扣除对等金额。
');

        $content[] = $this->content('第六条  甲方权利及义务', '6.1：甲方有权监督、检查乙方服务期间的运营管理活动；
6.2：甲方负责提供合格的智能电器产品、半成品食材以及稳定的网络平台和技术服务，保证产品用户端顺利运作；
6.3：甲方按约定支付约定收益给乙方，若乙方为个人，甲方提供所得税的代扣代缴义务；
6.4：如果甲方被第三方收购，或者发生与其它公司之合并、拆分、重组的，甲方的权利义务由第三方公司或新公司承担，并不影响本合同的继续履行，不影响乙方在本合同中的权利义务；
6.5：若乙方辖区运营达不到同级别平均水平（《级别标准》见附件2），甲方有权在乙方管辖区内另行设立分公司或相应的机构，乙方有义务配合上述机构的工作与安排，且不得以此为由追究甲方违约责任。
');

        $content[] = $this->content('第七条  乙方的权利及义务', '7.1：乙方在本协议签订完毕之后，甲方作为权利人交付给乙方中食民安经销商后台管理系统、线上商城分销系统等科技软件使用权。乙方有权使用公司相关技术入驻公司线上商城并在线下开展自己的经营活动；
7.2：乙方在本协议签订完毕之后，甲方作为权利人合法授权乙方在辖区内根据甲方的市场运营方案做项目推广，享有相应的权益：
7.3：乙方在本协议签订完毕之后，甲方作为权利人合法授权乙方销售甲方已有产品；
7.4：乙方承诺遵守法律规定和甲方制定的市场推广方案以及甲方的各项运营规则和甲方相关系统的后台规则；
7.5：乙方承诺乙方及其分支机构或子公司或关联企业在本协议履行期间及本协议终止后五年内不得参与本协议规定的(或类似)业务与甲方竞争；
7.6：乙方有权获得本协议约定的各项相关收益；
7.7：乙方有义务监督与管理其业务覆盖区域内的经营行为与业务的开展，积极推动平台业务在服务区域内的健康发展；
7.8：乙方有义务及时处理解决其业务覆盖区域内业务中遇到的困难；
7.9：乙方独自承担业务开展过程中的所有费用，独自对自身行为与后果承担法律责任；乙方行为导致第三方损失，应由乙方承担，如甲方承担的，甲方有权向乙方追偿，追偿款项可以直接从乙方收益中扣除；
7.10：乙方经营期间因任何行为导致甲方及其分支机构承担任何民事、刑事、行政法律责任，乙方有义务赔偿甲方损失；
7.11：乙方经营行为严格限定在甲方授权的经营范围和业务覆盖区域内，不得超越经营范围或区域从事经营活动。如果乙方超越业务覆盖区域从事经营活动侵犯了甲方授权的其他方的合法权利，乙方有义务赔偿甲方损失。
7.12：乙方成为甲方代理商后，应当向甲方提供乙方市场开发计划，且不得私自转让或变相转让乙方实际控制人的权益及股权，否则，甲方有权解除本合同。
7.13：乙方有义务在授权区域内就假冒甲方品牌的现象向甲方提供侵权线索，并应当协助甲方的维权工作，最大限度保护甲方品牌形象;
7.14：如甲方在合作过程中提供了相应设备、设施给乙方使用，乙方确认前述设备的所有权属于甲方，乙方仅有使用权并应尽到妥善保管义务，且基于前述设备的使用按甲方要求向其提供相应数据。因乙方原因造成的设备损毁丢失，乙方应进行相应赔偿（具体价格双方可选择采用书面或邮件等方式确认）。
7.15：无论本合同因任何原因终止，乙方承诺立即停止以任何方式使用甲方/平台相关的商标、标识、网站名称、网站内容等。
7.16：乙方应按照合同约定及平台规则向用户提供商品/服务，否则由此引起用户投诉或给用户/甲方/甲方关联方/甲方合作方造成损失的，相应责任均由乙方承担，且甲方有权解除合同并要求乙方按本合同约定支付违约金。
7.17：乙方不得通过任何手段、以任何方式自行或者委托他人进行如下行为（包括但不限于虚拟交易、虚标价格、虚拟验证、自买自卖、伪造网络用户真实消费、体验、刷单等违反平台规则、损害甲方/甲方关联方/甲方合作方利益的行为，或伪造、仿冒等其他违反国家法律法规的行为，或其他违反公平竞争诚实信用原则与商业道德的行为），否则，甲方有权解除合同，并要求甲方关联方/甲方合作方在代收净额中扣除上述行为给甲方/甲方关联方/甲方合作方造成的损失，并要求乙方支付违约金。
7.18：如在合同履行期限内，因乙方原因造成的方案、项目或合同中止（包括但不限于服务方案已下线或停止营业），乙方应自中止事由出现之日起一日内通知甲方通知甲方。如因乙方怠于通知造成的一切纠纷和责任（包括但不限于用户投诉、行政机关处罚等）由乙方承担，若由此给甲方/甲方关联方/甲方合作方造成经济损失，乙方应进行赔偿。
7.19：若乙方自行推广的，乙方保证推广/广告应事先获得甲方批准，且内容中不含有任何违反中国有关法律、法规的内容，包括但不限于危害国家安全、淫秽色情、虚假、违法、诽谤、恐吓或骚扰、侵犯他人知识产权、人身权或其他合法权益或利益以及有违公序良俗的内容。
7.20：因乙方原因造成的用户投诉、经济损失等相关后果均由乙方承担，造成甲方损失的，由乙方赔偿。
7.21：乙方不得通过任何手段、以任何方式自行或者委托他人进行违法或者作弊行为以获得不正当交易机会。
');
        
        $content[] = $this->content('第八条  结算方式', '8.1：自甲方信息发布/约定功能上线之日起，乙方关联方/乙方合作方按双方约定的结算周期将代收净额结算到乙方账户，每单的结算时间以C端确认收货为时间点，系统自动将代收净额结算到乙方账户。
8.2：若双方数据存在差异，乙方同意代收净额数据以甲方平台数据为准。本协议项下款项结算活动，依据甲方平台定期制定和发布的规则和流程进行。
8.3：甲方通过平台自助结算，将相关款项付至双方约定的平台上乙方管理账户内，由乙方自行转入到个人银行卡内。
');

        $content[] = $this->content('第九条  违约责任', '9.1：双方应正当行使权利，履行义务，保证本协议的顺利履行。任何一方没有充分、及时履行义务的，应当承担违约责任：违约方给守约方造成损失的，应赔偿守约方由此所遭受的实际损失（包括但不限于直接经济损失、预期利益损失以及守约方为维护其权益而发生的律师费、诉讼费、保全费、公证费等其他合理费用)；如违约方按前述约定支付的违约金不足以弥补因其违约行为给守约方造成的经济损失时，违约方还应承担赔偿责任。
9.2：乙方存在如下任一违约情形的，甲方有权解除本协议，且乙方应按照本协议有效期内代理费用总金额的30%标准向甲方支付违约金，并赔偿给甲方造成的所有损失，该损失包括但不限于甲方为实施权利救济而发生的人力成本、公证费、律师费等：
9.2.1：乙方不具备签订本协议的合法经营资质；
9.2.2：乙方拒绝甲方对乙方服务期间的经营管理活动合法合规的监督；
9.2.3:  乙方违反甲方商城平台使用规则的；
9.2.4：乙方违反本协议项下任何义务及承诺或保证性条款的；
9.2.5：乙方未完成市场开发计划且经甲方敦促仍未改观的。
9.3：乙方无正当理由逾期支付各项费用的，每逾期一日，应当向甲方支付应付未付金额千分之二的违约金。
9.4：如乙方存有违约行为的，甲方有权从其收益中暂扣。');

        $content[] = $this->content('第十条  保密协议', '10.1：除另有约定外，本合同任何一方未经对方书面确认均应对其获得的对方之业务内容、专利技术、经营模式、后台数据、客户信息、财务状况和其他保密资料予以严格保密，不得以任何形式向任何第三方披露。否则，因此给另一方造成任何损失的，违约方应承担因此给守约方造成的全部损失。保密义务在合同有效期间及终止后始终有效，不因本合同的解除或本合同其他条款整体或部分无效、被撤销而失效。
10.2：乙方保证，未经甲方的事先书面同意，乙方及乙方工作人员、乙方关联方、外部顾问、会计师事务所及律师不得向其他人员泄露任何甲方/甲方关联方/甲方合作方商业秘密及其他保密信息，商业秘密及其他保密信息包括但不限于：业务数据、客户信息、财务报表、甲方管理制度等。乙方除以下情况外，不可使任何保密信息公开化：乙方在相关案件、诉讼或索赔中应司法行政程序要求而泄露，即便如此，乙方应先通知甲方以使甲方有充足机会采取保护措施。
10.3：如果一方因盗用另一方的商业秘密或违反本“保密协议”条款约定而导致对方涉诉的，应承担合理的诉讼相关费用并赔偿损失。
');
        $content[] = $this->content('第十一条 合同终止和解除', '11.1：本合同期限届满或本合同约定的其他终止情形发生时，本合同终止。除合同另有约定外，合同履行过程中，一方经书面通知对方且经双方协商一致后，可解除本合同。
11.2：本合同终止或解除后，甲方有权删除平台上已发布的乙方信息（若有），且有权拒绝提供相关信息；
11.3：本合同终止或解除后，在合同终止前乙方已与用户达成的尚未履行完毕的订单.乙方应按照本本合同及订单的约定继续履行相应义务；
11.4：本合同终止或解除后，按照相关法律法规，乙方理解并同意甲方保存乙方资质信息、商品信息、交包记录等相关资料。
11.5：如任何一方出现违约情况，且经守约方书面通知后3日内未能纠正违约行为的，守约方有权决定是否解除本协议，如守约方解除本协议的，则本协议自守约方发出的解除通知送达违约方时终止；如守约方决定继续履行本协议的，则违约方按照本协议约定承担完相应的违约责任后，本协议继续履行。');

        $content[] = $this->content('第十二条 有限责任', '12.1：甲方无需对平台使用人（包括但不限于乙方、发展商、乙方的客户、有效上线者等）因第三方原因产生的传输、联络迟延、错误和疏漏（包括但不限于用户个人网络不稳定、个人电脑、网站遭遇攻击）而产生的损害承担责任。
12.2：甲乙双方认可不论在任何情况下，对因网络连接故障、通讯、电力或其他系统故障，罢工、暴乱、火灾、洪水等不可抗力事件，以及战争、政府行为、政府管制政府行政措施、银行限制规定等原因导致的甲方无法提供服务或提供服务迟延的情形，甲方均无需承担责任。
12.3：使用本公司平台服务下载或者获取任何资料的行为均出于乙方的独立判断，并由乙方自行承担因此产生的风险和责任，但不得侵犯甲方的知识产权。
12.4：本协议提及的相应规则、规范和注意事项，将通过甲方进行公示，任何未经甲方确认、承认或盖章生效的文件、承诺对甲方无法律约束力。
12.5：乙方同意，因下述两种特殊情形导致甲方不能按时发布信息的，不视为甲方违约：
12.5.1：乙方理解，基于市场整体利益考虑及经营需要，甲方可能不定期对产品、服务内容、版面布局、页面设计等有关方面进行调整，如因上述调整而影响乙方信息的发布（包括发布位置和/或发布期间等)，乙方将给予充分的谅解，甲方则应该尽可能将上述影响减少到最低程度。
12.5.2：乙方理解，为了信息推广/广告发布媒体正常运行，甲方需要定期或不定期地进行停机维护，如因此类情况而造成乙方信息推广/广告不能按计划发布，乙方将予以谅解，甲方则有义务尽力避免服务中断或将中断时间限制在最短时间内。
');
        $content[] = $this->content('第十三条 其他条款', '13.1：若甲方向乙方发出书面的通知，甲方可不经过乙方同意向其关联公司部分或全部转让本合同项下权利、义务。本合同对双方各自的继受人和允许的受让人有约束力。
13.2：与本合同有关的全部通知，双方可选择采用书面、邮件或平台公告任一方式变更及确认。乙方确认本协议中所列明的联系方式系乙方真实联系方式，协议有效期内，甲方通过本协议联系方式向乙方送达的所有信息都视为已成功送达，送达即产生法律效力。
13.3：乙方作为甲方的代理商，在任何情况任何场合都不得以任何形式诋毁甲方，包括但不限于用微信、微博、社群、自媒体、百度贴吧、各类视频平台等发布不实或有损于甲方声誉、形象包括甲方董事、股东、管理团队的言论帖子或图片、动画等。
13.4：作为长期合作及潜在持股的代理商，乙方应积极维护公司的形象和利益，遇到有损于甲方及甲方关联公司的形象、利益的事件应及时阻止、反馈。
13.5：乙方作为甲方的代理商，不误传误导未经甲方确认，签字、盖章的不实信息。
13.6：乙方作为甲方的代理商，不做也不参与第三方合作与甲方有竞争性的业务，并积极参与甲方的各项业务推广。
13.7：甲方已经就本协议同乙方进行了充分沟通，反复磋商，对于乙方不清楚之条款及含义，甲方进行了详细的解释、说明。乙方承诺本协议签订系在充分了解合同条款的情况下自愿签订，不存在欺诈、胁迫或其他情形。
13.8：本合同内容均以打印版本为准，修改、增加、减少，均需甲乙双方签章确认。如有未尽事宜，应另行签订书面补充合同。任何形式的口头协议均属无效。
13.9：为体现合同双方的自愿原则，本合同文本中相关条款中有空白行，供双方自行约定或补充约定。合同签订生效后，未被修改的文本印刷文字视为双方同意内容。本合同文本中涉及到的选择、填写内容，双方作约定时，应在空格部位打√，以示约定适用。
13.10：本协议的订立、有效性、解释、履行、签署、修订和终止以及争议的解决均应适用中华人民共和国法律。
13.11：如因履行本协议产生争议的，双方应当协商解决。协商不能解决的，任何方均可向甲方住所地人民法院提起诉讼，
13.12：本合同中的任何一方在任何时间未要求另一方履行本合同任何条款都不影响其在以后任何时间里要求履行此条款的权利；任何一方对违反本合同中任一条款的行为不予追究，不构成其放弃以后对同一条款或其他条款的违约行为追究的权利。
13.13：本协议自双方盖章或签字之日起生效，一式两份，甲乙双方各执一份，具有同等的法律效力。');

        return $content;
    }

	# 代理商合同模板
    public function pdf_1($agreement, $info)
    {
        $base = Dever::db('setting/base')->find();

        if (isset($info['agreement_id'])) {
        	$order_num = $info['order_num'];
        } else {
        	$order_num = '待生成';
        }
        if ($info['type'] == 1) {
        	$idcard = $info['idcard'];
        } else {
        	$idcard = $info['company_number'];
        }
        $area = Dever::load("area/api.string", $info['area'], '');
        $address = $area;

        $role = Dever::db('setting/role')->find($info['role']);
        $name = $this->name($agreement, $info, $role);

        $price = $info['price'];
        # 转大写
        $price_str = Dever::convertNum($price);

        $area = '【' . $area . '】';

        if (isset($info['sdate']) && $info['sdate']) {
        	$sdate = date('Y年m月d日', $info['sdate']);
        	$edate = date('Y年m月d日', $info['edate']);
        	$qdate = date('Y年m月d日', $info['qdate']);
        } else {
        	//$sdate = date('Y年m月d日', $info['cdate']);
        	$sdate = date('Y年m月d日');
        	$edate = date('Y年m月d日', strtotime('+3 year'));
        	$qdate = $sdate;
        }

        $company_name = '中食民安（北京）科技有限公司';

        $pdf = Dever::load('pdf/lib/core')->init();
        $pdf->SetTitle($name);
        //$pdf->setPrintHeader(true);
        //$pdf->setPrintFooter(true);
        $pdf->SetHeaderData('', 0, $company_name);

        $pdf->font(25, 'B');
        $pdf->center('');
        $pdf->br(3);
        $pdf->center($company_name);
        $pdf->br(3);
        $pdf->center('代');
        $pdf->br();
        $pdf->center('理');
        $pdf->br();
        $pdf->center('商');
        $pdf->br();
        $pdf->center('合');
        $pdf->br();
        $pdf->center('作');
        $pdf->br();
        $pdf->center('协');
        $pdf->br();
        $pdf->center('议');

        $pdf->AddPage();
        $pdf->font(18, 'B');
        $pdf->center('代理商合作协议');
        $pdf->br();
        $pdf->font($this->font_size, '');
        $pdf->right('合同编号：' . $order_num);
        $pdf->br(2);

        $content = array();

        $content[] = array
        (
        	'name' => array
	        (
	        	'甲 方',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' 中食民安（北京）科技有限公司(以下简称“甲方”)',
	        	100,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'统一社会信用代码',
	        	26,
	        	STR_PAD_LEFT,
	        	45,
	        ),
	        'content' => array
	        (
	        	' 91110106MA01T8R42B',
	        	100,
	        	STR_PAD_RIGHT,
	        	40,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'地 址',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' 北京经济技术开发区经海四路22号院四区5号楼14层1706',
	        	100,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'电 话',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' 010-53391855',
	        	160,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'乙 方',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' ' . $info['name'],
	        	100,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'统一社会信用代码/身份证号码',
	        	37,
	        	STR_PAD_LEFT,
	        	67,
	        ),
	        'content' => array
	        (
	        	' ' . $idcard,
	        	100,
	        	STR_PAD_RIGHT,
	        	40,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'地 址',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' ' . $address,
	        	100,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );

        $content[] = array
        (
        	'name' => array
	        (
	        	'电 话',
	        	15,
	        	STR_PAD_LEFT,
	        	20,
	        ),
	        'content' => array
	        (
	        	' ' . $info['mobile'],
	        	160,
	        	STR_PAD_RIGHT,
	        	80,
	        ),
        );
        $pdf->setCellHeightRatio(2);
        foreach ($content as $k => $v) {
        	$pdf->font($this->font_size);
	        $pdf->left(Dever::mb_str_pad($v['name'][0] . '：', $v['name'][1], ' ', $v['name'][2]), $v['name'][3]);
	        $pdf->font($this->font_size, '');
	        $pdf->left(Dever::mb_str_pad($v['content'][0], $v['content'][1], ' ', $v['content'][2]), $v['content'][3]);
	        $pdf->br();
	        if ($k == 3) {
	        	$pdf->br();
	        }
        }

        $pdf->br(1,1);
        $pdf->font($this->font_size, 'B');
        $pdf->left('        鉴于：');
        $pdf->br();
        $pdf->font($this->font_size, '');
        $pdf->setCellPaddings(16, 0, 16, 0);

        if (isset($info['content']) && $info['content']) {
            $info['content'] = Dever::array_decode($info['content']);
            foreach($info['content'] as $k => $v) {
                $pdf->content($v['name'], $v['content'], $this->font_size);
            }
        } else {
            $method = 'content_' . $agreement['type'];
            $content = $this->$method($agreement, $info, array($role, $name, $price, $price_str, $area, $sdate, $edate, $qdate));

            foreach ($content as $k => $v) {
                $pdf->content($v['name'], $v['content'], $this->font_size);
            }

            if (isset($info['create_state']) && $info['create_state'] == 1) {
                $up = array();
                $up['content'] = Dever::array_encode($content);
                $up['where_id'] = $info['id'];
                $state = Dever::db('agent/member_agreement')->update($up);
            }
        }

        $pdf->AddPage();

        $pdf->br(1, 1);
        $pdf->font($this->font_size, 'B');
        $pdf->left('【以下为签署页，无正文】', 100);
        $pdf->br();

        $pdf->br(1, 1);
        $pdf->font($this->font_size, '');
        $pdf->left('甲 方（盖章）：', 90)->left('乙 方（盖章/签字）：', 90);
        $pdf->br();

        $pdf->br(1, 1);
        $pdf->font($this->font_size, '');
        $sign = '';
        $pdf->left('代表人（签字）：' . $sign, 90)->left('代表人（签字）：' . $sign, 90);
        $pdf->br();

        $pdf->br(1, 1);
        $pdf->font($this->font_size, '');
        $mobile = '';
        //$base['agreement_mobile']
        $pdf->left('代  表  人  电  话：' . '', 90)->left('代  表  人  电  话：' . $mobile, 90);
        $pdf->br();

        $pdf->br(1, 1);
        $pdf->font($this->font_size, '');
        $pdf->left('日                      期：'.$qdate, 90);
        $pdf->left('日                      期：'.$qdate, 80);
        $pdf->br();

        $pic = Dever::pic($base['agreement_sign']);

        $cx = $pdf->GetX();
        $cy = $pdf->GetY();

        $x = $cx + 48;
        $y = $cy - 42;

        $pdf->Image($pic, $x, $y, 30, 30);

        $x += 100;

        if ($info['sign']) {
        	$info['sign'] = Dever::pic($info['sign']);
            $temp = explode('?', $info['sign']);
            $info['sign'] = $temp[0];
        	if (strstr($info['sign'], 'http')) {
        		$pdf->Image($info['sign'], $x, $y, 30, 30);
        	}
        }

        $pdf->out($name);
    }

    public function content_3($agreement, $info, $data = false)
    {
        if ($data) {
            list($role, $name, $oname, $sdate, $edate, $qdate) = $data;
        } else {
            $role = Dever::db('setting/role')->find($info['role']);
            $name = $this->name($agreement, $info, $role);

            $oagreement = Dever::db('setting/agreement')->find(1);
            $oname = $this->name($oagreement, $info, $role);

            if (isset($info['sdate']) && $info['sdate']) {
                $sdate = date('Y年m月d日', $info['sdate']);
                $edate = date('Y年m月d日', $info['edate']);
                $qdate = date('Y年m月d日', $info['qdate']);
            } else {
                $sdate = date('Y年m月d日');
                $edate = date('Y年m月d日', strtotime('+3 year'));
                $qdate = $sdate;

                $old = Dever::db('agent/member_agreement')->getOld(array('mid' => $info['mid'], 'agreement_id' => 1));
                if ($old) {
                    $sdate = date('Y年m月d日', $old['sdate']);
                    $edate = date('Y年m月d日', $old['edate']);
                }
            }
        }
        

        $content = array();

        $type = 2;

        if (!isset($info['soft_cash'])) {
            $info['soft_cash'] = $info['price'];
        }

        # 这里加判断
        if ($role['type'] == 2 && $role['area'] == 1) {
            $type = 1;   
        } elseif ($info['soft_cash'] > 6000 && $info['soft_cash'] <= 30000 && $info['soft_cash']%5000 == 0) {
            $type = 3;
        } elseif ($info['soft_cash'] <= 6000 && $info['soft_cash']%1000 == 0) {
            $type = 4;
        } else {
            $type = 2;
        }

        # 城市代理
        if ($type == 1) {
            $name = '城市代理版';
            $year = 1;
            $cash = '3.1合同金额：按定制收费，合计总金额['.$info['soft_cash'].']元，其中总金额的90%为软件服务费，总金额的10%为购买开店所需电器及菜品费用。';
        }
        # 定制版
        elseif ($type == 2) {
            $name = '定制版';
            $year = 1;
            $cash = '3.1合同金额：按定制收费，合计总金额['.$info['soft_cash'].']元。';
        }
        # 升级版
        elseif ($type == 3) {
            $name = '升级版';
            $year = intval($info['soft_cash']/5000);
            if ($year > 6) {
                $year = 6;
            }
            $cash = '3.1合同金额：5000元/每年，合计总金额['.$info['soft_cash'].']元。';
        }
        # 基础版
        else {
            $name = '基础版';
            $year = intval($info['soft_cash']/1000);
            if ($year > 6) {
                $year = 6;
            }
            //$year = 6;
            $cash = '3.1合同金额：1000元/每年，合计总金额['.$info['soft_cash'].']元。';
        }

        $content[] = $this->content('', '鉴于甲方购买乙方名称为《 厨人易料业务管理系统 》版本为《 '.$name.' 》的系统使用权（以下简称为“软件”），双方经协商一致，由乙方为甲方提供软件服务，双方达成本服务合同。');

        $content[] = $this->content('第一条服务事项', '1.1服务内容包括：
1.技术维护服务
（1）设备变更带来的环境适配调整；
（2）各类操作系统与软件适配带来的调整工作；
（3）网络故障带来的软件重新安装、数据修复；
（4）及时更新产品及同版本升级程序；
（5）产品故障、普通问题、重大问题的远程技术支持；
（6）接受产品程序改进意见并酌情纳入新产品开发计划；
（7）其他无法预计的故障的排除。
2.远程实施指导
提供产品说明和演示文档，远程指导参数设置及数据导入（以及上线测试）。
3.远程应用培训
对软件管理员提供远程培训及操作手册。
1.2 服务方式及响应时间
（1）服务方式：电话、电子邮件和微信；乙方通常先以电话的方式了解甲方需要解决的问题，并为甲方提出处理的办法，引导甲方自行解决，在无法解决时，乙方将由技术人员上门解决。针对登录故障、软件故障判断、软件安装与注册、软件适用与指导、数据备份、数据修正、数据恢复、版本更新等服务项目提供电子支持、远程、热线服务。
（2）响应时间：在接到甲方报障信息后乙方视情况缓急尽快响应，处于人机并行试运行阶段时，属于产品故障在24小时内响应，普通问题三天内答复，重大问题特殊处理。
1.3 服务期限：
乙方为甲方提供['.$year.']年的服务，服务期最长6年，服务期满后，如甲方还需要乙方为甲方提供服务，甲、乙双方需重新协商签订服务协议。
1.4 软件保修与版本升级：
（1）正常使用时损坏，致使软件无法正常运行给予保修；
（2）接受甲方对产品程序提出的改进意见并酌情纳入升级计划；
（3）非正常使用造成软件损坏，一律收费保修；
（4）对不同运行环境需要单独具体升级软件的，按甲方发布的有关规定办理。');

        $content[] = $this->content('第二条信息保密', '2.1甲方不得以任何形式对所购买软件进行解密，并保证不交给任何第三方人员使用、展示。
2.2乙方为甲方的数据保密，保证不将甲方的数据泄露给第三者，除非依据有关法律、法规的规定应向有关政府主管部门办理有关批准、备案的手续；或为履行在本合同项下的义务或声明与保证须向第三人披露。');

        $content[] = $this->content('第三条结算金额及方式', $cash . '
3.2结算方式：厨人易料商城线上支付。');

        $content[] = $this->content('第四条 期权赠与', '甲方采购乙方的软件，在签署乙方的《软件服务合同》并支付成功后，拥有以零元价格认购乙方等值合同金额额度原始期权的权利。根据2021年11月市场机构的评估报告数据计算，乙方公司整体估值约为5.01亿元，乙方所赠期权的行权要求如下：
4.1乙方成功在中国境内外合法的证券交易所上市交易；
4.2甲方认同乙方的经营理念和经营规划；
4.3甲方不得转让该赠与期权的权利，该权利有效期截止至甲方将所赠额度兑换完毕；
4.4甲方期权兑换完毕后须锁定12个月方可自由交易，即股票有1年的禁售期。');

        $content[] = $this->content('第五条 争议解决', '5.1本协议未尽之事宜，由双方友好协商后另行签订补充协议，补充协议与本协议具有同等法律效力。
5.2因本合同引起的或与本合同有关的任何争议，由合同各方协商解决，也可由有关部门调解；协商或调解不成的，应向乙方所在地有管辖权的人民法院起诉。');

        $content[] = $this->content('第六条 保密条款', '本合同各方保证，除非依据有关法律、法规的规定应向有关政府主管部门办理有关批准、备案的手续；或为履行在本合同项下的义务或声明与保证须向第三人披露；或经本合同其他方事先书面同意，本合同任何一方对本合同另一方及合同项下之所有内容、信息、事务均负有保密义务（除已在公开渠道获得的信息外），泄露秘密一方应向其他方赔偿由此造成的经济损失及其他损失。本条款不因本合同的终止而失效。');

        $content[] = $this->content('第七条 其他', '7.1本合同一经支付立即生效，鉴于交付系统已经产生所有费用，一律无法终止本合同，无法退款。
7.2本合同自双方签字或盖章后生效。除本合同另有约定外，合同的任何变更应经双方共同签署书面合同后方可生效。
7.3本合同一式两份，甲乙双方各执一份。各份合同文本具有同等法律效力。');

        return $content;
    }

    # 软件服务合同
    public function pdf_3($agreement, $info)
    {
        $base = Dever::db('setting/base')->find();

        if (isset($info['agreement_id'])) {
            $order_num = $info['order_num'];
        } else {
            $order_num = '待生成';
        }
        $idcard = $info['idcard'];
        if (isset($info['company_number']) && $info['company_number']) {
            $idcard = $info['company_number'];
        }

        $role = Dever::db('setting/role')->find($info['role']);
        $name = $this->name($agreement, $info, $role);

        $oagreement = Dever::db('setting/agreement')->find(1);
        $oname = $this->name($oagreement, $info, $role);

        $price = $info['price'];

        $area = Dever::load("area/api.string", $info['area'], '');

        $address = '';

        if (isset($info['sdate']) && $info['sdate']) {
            $sdate = date('Y年m月d日', $info['sdate']);
            $edate = date('Y年m月d日', $info['edate']);
            $qdate = date('Y年m月d日', $info['qdate']);
        } else {
            $sdate = date('Y年m月d日');
            $edate = date('Y年m月d日', strtotime('+3 year'));
            $qdate = $sdate;

            $old = Dever::db('agent/member_agreement')->getOld(array('mid' => $info['mid'], 'agreement_id' => 1));
            if ($old) {
                $sdate = date('Y年m月d日', $old['sdate']);
                $edate = date('Y年m月d日', $old['edate']);
            }
        }

        $company_name = '中食民安（北京）科技有限公司';

        $pdf = Dever::load('pdf/lib/core')->init();
        $pdf->SetTitle($name);
        $pdf->font(18, 'B');
        $pdf->center('软 件 服 务 合 同');
        $pdf->br(2);
        
        $content = array();

        $content[] = array
        (
            'name' => array
            (
                '甲方（服务接受方）',
                30,
                STR_PAD_LEFT,
                50,
            ),
            'content' => array
            (
                ' ' . $info['name'],
                100,
                STR_PAD_RIGHT,
                80,
            ),
        );

        $content[] = array
        (
            'name' => array
            (
                '统一社会信用代码或身份证',
                36,
                STR_PAD_LEFT,
                63,
            ),
            'content' => array
            (
                ' ' . $idcard,
                100,
                STR_PAD_RIGHT,
                40,
            ),
        );

        $content[] = array
        (
            'name' => array
            (
                '居住地址',
                20,
                STR_PAD_LEFT,
                29,
            ),
            'content' => array
            (
                ' ' . $address,
                100,
                STR_PAD_RIGHT,
                80,
            ),
        );

        $content[] = array
        (
            'name' => array
            (
                '联系方式',
                20,
                STR_PAD_LEFT,
                29,
            ),
            'content' => array
            (
                ' ' . $info['mobile'],
                160,
                STR_PAD_RIGHT,
                80,
            ),
        );

        $content[] = array
        (
            'name' => array
            (
                '乙方（服务提供方）',
                30,
                STR_PAD_LEFT,
                50,
            ),
            'content' => array
            (
                ' ' . $company_name,
                100,
                STR_PAD_RIGHT,
                80,
            ),
        );

        $content[] = array
        (
            'name' => array
            (
                '统一社会信用代码',
                28,
                STR_PAD_LEFT,
                46,
            ),
            'content' => array
            (
                ' 91110106MA01T8R42B',
                100,
                STR_PAD_RIGHT,
                40,
            ),
        );

        $content[] = array
        (
            'name' => array
            (
                '法定代表人',
                22,
                STR_PAD_LEFT,
                33,
            ),
            'content' => array
            (
                ' 王雷',
                100,
                STR_PAD_RIGHT,
                40,
            ),
        );

        $content[] = array
        (
            'name' => array
            (
                '居住地址',
                20,
                STR_PAD_LEFT,
                29,
            ),
            'content' => array
            (
                ' 北京市北京经济技术开发区经海四路22号院四区5号楼14层1706',
                100,
                STR_PAD_RIGHT,
                80,
            ),
        );

        $content[] = array
        (
            'name' => array
            (
                '联系方式',
                20,
                STR_PAD_LEFT,
                29,
            ),
            'content' => array
            (
                ' 010-53391855',
                160,
                STR_PAD_RIGHT,
                80,
            ),
        );
        $pdf->setCellHeightRatio(2);
        foreach ($content as $k => $v) {
            $pdf->font($this->font_size);
            $pdf->left(Dever::mb_str_pad($v['name'][0] . '：', $v['name'][1], ' ', $v['name'][2]), $v['name'][3]);
            $pdf->font($this->font_size, '');
            $pdf->left(Dever::mb_str_pad($v['content'][0], $v['content'][1], ' ', $v['content'][2]), $v['content'][3]);
            $pdf->br();
            if ($k == 3) {
                $pdf->br();
            }
        }

        $pdf->br();
        $pdf->setCellPaddings(10, 0, 10, 0);
        
        $oname = str_replace('.pdf', '', $oname);

        if (isset($info['content']) && $info['content']) {
            $info['content'] = Dever::array_decode($info['content']);
            foreach($info['content'] as $k => $v) {
                $pdf->content($v['name'], $v['content'], $this->font_size);
            }
        } else {
            $method = 'content_' . $agreement['type'];
            $content = $this->$method($agreement, $info, array($role, $name, $oname, $sdate, $edate, $qdate));

            foreach ($content as $k => $v) {
                $pdf->content($v['name'], $v['content'], $this->font_size);
            }

            if (isset($info['create_state']) && $info['create_state'] == 1) {
                $up = array();
                $up['content'] = Dever::array_encode($content);
                $up['where_id'] = $info['id'];
                $state = Dever::db('agent/member_agreement')->update($up);
            }
        }

        $pdf->AddPage();

        $pdf->br(1, 1);
        $pdf->font($this->font_size, 'B');
        $pdf->left('【以下为签署页，无正文】', 100);
        $pdf->br();

        $pdf->br(1, 20);
        $pdf->font($this->font_size, '');
        $pdf->left('甲 方（盖章）：', 100);
        $pdf->br();

        $pdf->br(1, 20);
        $pdf->left('法定代表人或授权代表（签字）：', 100);
        $pdf->br();

        $pdf->br(1, 1);
        $pdf->font($this->font_size, '');
        $pdf->left('签署时间：'.$qdate, 90);
        $pdf->br();

        $pdf->br(1, 20);
        $pdf->font($this->font_size, '');
        $pdf->left('乙方（盖章）：', 100);
        $pdf->br();

        $pdf->br(1, 20);
        $pdf->left('法定代表人或授权代表（签字）：王雷', 100);
        $pdf->br();

        $pdf->br(1, 1);
        $pdf->font($this->font_size, '');
        $pdf->left('签署时间：'.$qdate, 90);
        $pdf->br();

        $pic = Dever::pic($base['agreement_sign']);

        $cx = $pdf->GetX();
        $cy = $pdf->GetY();

        $x = $cx + 50;
        $y = $cy - 50;

        $pdf->Image($pic, $x, $y, 30, 30);

        $x += 20;
        $y -= 48;

        if ($info['sign']) {
            $info['sign'] = Dever::pic($info['sign']);
            $temp = explode('?', $info['sign']);
            $info['sign'] = $temp[0];
            if (strstr($info['sign'], 'http')) {
                $pdf->Image($info['sign'], $x, $y, 30, 30);
            }
        }

        

        $pdf->out($name);
    }

    public function data($id){
        $info = Dever::db('agent/member_agreement')->find($id);
        $cdate = date('Y-m-d H:i',$info['cdate']);
        $udate = date('Y-m-d H:i',$info['udate']);
        $qdate = '-';
        if ($info['qdate']) {
            $qdate = date('Y-m-d H:i',$info['qdate']);
        }
        
        $html = $cdate.'<br />'.$udate.'<br />'.$qdate;
        return $html;
    }
}