public function indexAction()
 {
     $this->view->customerAdmin = 0;
     if (Application_Model_User::checkPermissionByRoleName('客户管理员') || Application_Model_User::checkPermissionByRoleName('系统管理员')) {
         $this->view->customerAdmin = 1;
     }
 }
Example #2
0
 public function indexAction()
 {
     $user_session = new Zend_Session_Namespace('user');
     $this->view->defaultCurrency = '';
     $this->view->bpartnerAdminDisabled = 1;
     $this->view->supplierAdmin = 0;
     $this->view->customerAdmin = 0;
     $this->view->editDisable = 1;
     $this->view->user_id = 0;
     if (isset($user_session->user_info)) {
         $this->view->user_id = $user_session->user_info['user_id'];
         if (Application_Model_User::checkPermissionByRoleName('业务伙伴管理员')) {
             $this->view->bpartnerAdminDisabled = 0;
             $this->view->editDisable = 0;
         }
         if (Application_Model_User::checkPermissionByRoleName('供应商管理员') || Application_Model_User::checkPermissionByRoleName('系统管理员')) {
             $this->view->supplierAdmin = 1;
             $this->view->editDisable = 0;
         }
         if (Application_Model_User::checkPermissionByRoleName('客户管理员') || Application_Model_User::checkPermissionByRoleName('系统管理员')) {
             $this->view->customerAdmin = 1;
             $this->view->editDisable = 0;
         }
     }
     $currency = new Erp_Model_Setting_Currency();
     $this->view->defaultCurrency = $currency->getDefaultCurrency();
 }
Example #3
0
 public function indexAction()
 {
     $user_session = new Zend_Session_Namespace('user');
     $this->view->salesDisable = 1;
     $this->view->pmDisable = 1;
     $this->view->adminDisable = 1;
     $this->view->user_id = 0;
     if (isset($user_session->user_info)) {
         $this->view->user_id = $user_session->user_info['user_id'];
         if ($user_session->user_info['isSuperAdmin']) {
             $this->view->salesDisable = 0;
             $this->view->pmDisable = 0;
             $this->view->adminDisable = 0;
         } else {
             if (Application_Model_User::checkPermissionByRoleName('产品中心-市场') || Application_Model_User::checkPermissionByRoleName('产品中心-工程师')) {
                 $this->view->salesDisable = 0;
             }
             if (Application_Model_User::checkPermissionByRoleName('产品中心-PM')) {
                 $this->view->adminDisable = 0;
                 $this->view->salesDisable = 0;
                 $this->view->pmDisable = 0;
             }
             /* if(Application_Model_User::checkPermissionByRoleName('产品中心-审核')){
                    $this->view->reviewDisable = 0;
                } */
             if (Application_Model_User::checkPermissionByRoleName('系统管理员')) {
                 $this->view->salesDisable = 0;
                 $this->view->pmDisable = 0;
                 $this->view->adminDisable = 0;
             }
         }
     }
 }
Example #4
0
 public function indexAction()
 {
     $user_session = new Zend_Session_Namespace('user');
     $this->view->user_id = 0;
     $this->view->accessViewTotal = 0;
     if (isset($user_session->user_info)) {
         $this->view->user_id = $user_session->user_info['user_id'];
         if (Application_Model_User::checkPermissionByRoleName('系统管理员') || Application_Model_User::checkPermissionByRoleName('财务人员')) {
             $this->view->accessViewTotal = 1;
         }
     }
 }
Example #5
0
 public function indexAction()
 {
     $user_session = new Zend_Session_Namespace('user');
     $user_id = $user_session->user_info['user_id'];
     $user_number = $user_session->user_info['user_number'];
     if (isset($user_session->user_info)) {
         $this->view->user_id = $user_id;
         if (Application_Model_User::checkPermissionByRoleName('系统管理员')) {
             $this->view->admin = 1;
         }
     }
     // 获取默认日期范围(最近3个月)
     $time = time();
     $this->view->default_date_from = date('Y-m-01', strtotime(date('Y', $time) . '-' . (date('m', $time) - 1) . '-01'));
     $this->view->default_date_to = date('Y-m-t', strtotime(date('Y', $time) . '-' . (date('m', $time) + 1) . '-01'));
 }
Example #6
0
 public function indexAction()
 {
     $user_session = new Zend_Session_Namespace('user');
     $this->view->hraAdmin = 0;
     $this->view->user_id = 0;
     if (isset($user_session->user_info)) {
         $this->view->user_id = $user_session->user_info['user_id'];
         if ($user_session->user_info['isSuperAdmin']) {
             $this->view->hraAdmin = 1;
         } else {
             if (Application_Model_User::checkPermissionByRoleName('系统管理员') || Application_Model_User::checkPermissionByRoleName('人事主管')) {
                 $this->view->hraAdmin = 1;
             }
         }
     }
 }
Example #7
0
 public function getData($condition)
 {
     $where = "t1.apply_time >= '" . $condition['date_from'] . " 00:00:00' and t1.apply_time <= '" . $condition['date_to'] . " 23:59:59'";
     if ($condition['key'] != '') {
         $where .= " and (t3.cname like '%" . $condition['key'] . "%' or t3.ename like '%" . $condition['key'] . "%' or t3.number like '%" . $condition['key'] . "%')";
     }
     $sql = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name))->joinLeft(array('t2' => $this->_dbprefix . 'seal'), "t1.seal_id = t2.id", array('seal_name' => 'name'))->joinLeft(array('t3' => $this->_dbprefix . 'user'), "t1.apply_user = t3.id", array())->joinLeft(array('t4' => $this->_dbprefix . 'employee'), "t4.id = t3.employee_id", array('apply_user_name' => 'cname'))->joinLeft(array('t5' => $this->_dbprefix . 'user'), "t1.review_user = t5.id", array())->joinLeft(array('t6' => $this->_dbprefix . 'employee'), "t6.id = t5.employee_id", array('review_user_name' => 'cname'))->order(array('t1.review_state', 't1.apply_time desc'));
     if (!Application_Model_User::checkPermissionByRoleName('印章管理员') && !Application_Model_User::checkPermissionByRoleName('系统管理员')) {
         $user_session = new Zend_Session_Namespace('user');
         $user_id = $user_session->user_info['user_id'];
         $sql->where("apply_user = "******" or review_user = " . $user_id);
     }
     $total = $this->fetchAll($sql)->count();
     if ($condition['option'] != 'csv') {
         $sql->limitPage($condition['page'], $condition['limit']);
     }
     $data = $this->fetchAll($sql)->toArray();
     for ($i = 0; $i < count($data); $i++) {
         switch ($data[$i]['state']) {
             case 1:
                 $data[$i]['state'] = '新申请';
                 break;
             case 2:
                 $data[$i]['state'] = '批准';
                 break;
             case 3:
                 $data[$i]['state'] = '拒绝';
                 break;
             default:
                 $data[$i]['state'] = '无';
                 break;
         }
     }
     if ($condition['option'] == 'csv') {
         $data_csv = array();
         $title = array('cnt' => '#', 'state' => '状态', 'seal_name' => '印章', 'apply_reason' => '事由', 'review_user' => '审核人', 'review_time' => '审核时间', 'review_opinion' => '审核意见', 'apply_user' => '申请人', 'apply_time' => '申请时间', 'remark' => '备注');
         array_push($data_csv, $title);
         $i = 0;
         foreach ($data as $d) {
             $i++;
             $info = array('cnt' => $i, 'state' => $d['state'], 'seal_name' => $d['seal_name'], 'apply_reason' => $d['apply_reason'], 'review_user' => $d['review_user'], 'review_time' => $d['review_time'], 'review_opinion' => $d['review_opinion'], 'apply_user' => $d['apply_user'], 'apply_time' => $d['apply_time'], 'remark' => $d['remark']);
             array_push($data_csv, $info);
         }
         return $data_csv;
     }
     return array('total' => $total, 'rows' => $data);
 }
Example #8
0
 public function indexAction()
 {
     $user_session = new Zend_Session_Namespace('user');
     $this->view->typeEditDisable = 1;
     $this->view->accessViewOrder = 0;
     $this->view->user_id = 0;
     if (isset($user_session->user_info)) {
         $this->view->user_id = $user_session->user_info['user_id'];
         if (Application_Model_User::checkPermissionByRoleName('系统管理员') || Application_Model_User::checkPermissionByRoleName('供应商管理员')) {
             $this->view->typeEditDisable = 0;
             $this->view->accessViewOrder = 1;
         } else {
             if (Application_Model_User::checkPermissionByRoleName('采购订单明细查看')) {
                 $this->view->accessViewOrder = 1;
             }
         }
     }
 }
Example #9
0
 public function indexAction()
 {
     $user_session = new Zend_Session_Namespace('user');
     $this->view->canReplyPlan = 0;
     $this->view->canReplySales = 0;
     $this->view->user_id = 0;
     if (isset($user_session->user_info)) {
         $this->view->user_id = $user_session->user_info['user_id'];
         if (Application_Model_User::checkPermissionByRoleName('系统管理员')) {
             $this->view->canReplyPlan = 1;
             $this->view->canReplySales = 1;
         }
         if (Application_Model_User::checkPermissionByRoleName('计划人员')) {
             $this->view->canReplyPlan = 1;
         }
         if (Application_Model_User::checkPermissionByRoleName('销售人员')) {
             $this->view->canReplySales = 1;
         }
     }
 }
Example #10
0
 /**
  * 获取BOM列表
  */
 public function getMy($type, $where, $myId, $start, $limit)
 {
     // 该我审批的
     $sql3 = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name))->join(array('t2' => $this->_dbprefix . 'review'), "t1.id = t2.file_id and t2.finish_flg = 0 and (t2.type = 'updbom' or t2.type = 'devbom' or t2.type = 'ecobom')", array())->joinLeft(array('t3' => $this->_dbprefix . 'employee'), "t1.create_user = t3.id", array('creater' => 'cname'))->joinLeft(array('t4' => $this->_dbprefix . 'codemaster'), "t4.code = t1.reason_type and t4.type=6", array('reason_type_name' => 'text'))->where("t1.state = 'Reviewing' and (t2.actual_user is null or !(FIND_IN_SET({$myId},t2.actual_user))) and (FIND_IN_SET({$myId}, t2.plan_user))")->where($where);
     $ids = $this->getMyReviewing($myId);
     if ($ids) {
         $sql3->where("t2.id in ({$ids})");
     }
     // 我申请的
     $sql1 = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name))->joinLeft(array('t3' => $this->_dbprefix . 'employee'), "t1.create_user = t3.id", array('creater' => 'cname'))->joinLeft(array('t4' => $this->_dbprefix . 'codemaster'), "t4.code = t1.reason_type and t4.type=6", array('reason_type_name' => 'text'))->where($where);
     if (!Application_Model_User::checkPermissionByRoleName('文件管理员') && !Application_Model_User::checkPermissionByRoleName('物料管理员') && !Application_Model_User::checkPermissionByRoleName('系统管理员')) {
         $sql1 = $sql1->where("(t1.state = 'Reviewing' or t1.state = 'Return' or t1.state = 'Draft' or t1.state = 'Active') and t1.create_user = {$myId}");
     } else {
         $sql1 = $sql1->where("(t1.state = 'Reviewing' or t1.state = 'Return' or t1.state = 'Active') or (t1.state = 'Draft' and t1.create_user = {$myId})");
     }
     // 我审批过的
     $sql2 = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name))->joinLeft(array('t3' => $this->_dbprefix . 'employee'), "t1.create_user = t3.id", array('creater' => 'cname'))->joinLeft(array('t4' => $this->_dbprefix . 'codemaster'), "t4.code = t1.reason_type and t4.type=6", array('reason_type_name' => 'text'))->where("t1.state = 'Reviewing' or t1.state = 'Return' or t1.state = 'Active'")->where($where);
     $ids = $this->getMyReviewed($myId);
     if ($ids) {
         $sql2->where("t1.id in ({$ids})");
     }
     if ($type == 1) {
         $sqlArray = array($sql1);
     } else {
         if ($type == 2) {
             $sqlArray = array($sql2);
         } else {
             if ($type == 3) {
                 $sqlArray = array($sql3);
             } else {
                 $sqlArray = array($sql3, $sql1, $sql2);
             }
         }
     }
     $selectUnion = $this->select()->union($sqlArray, Zend_Db_Select::SQL_UNION)->order('state DESC')->order('update_time desc')->limit($limit, $start);
     $data = $this->fetchAll($selectUnion)->toArray();
     return $data;
 }
Example #11
0
 public function indexAction()
 {
     $user_session = new Zend_Session_Namespace('user');
     $this->view->bpartnerAdminDisabled = 1;
     $this->view->supplierAdmin = 0;
     $this->view->customerAdmin = 0;
     $this->view->supplierView = 0;
     $this->view->customerView = 0;
     $this->view->user_id = 0;
     if (isset($user_session->user_info)) {
         $this->view->user_id = $user_session->user_info['user_id'];
         if ($user_session->user_info['isSuperAdmin']) {
             $this->view->bpartnerAdminDisabled = 0;
             $this->view->supplierAdmin = 1;
             $this->view->customerAdmin = 1;
             $this->view->supplierView = 1;
             $this->view->customerView = 1;
         } else {
             if (Application_Model_User::checkPermissionByRoleName('业务伙伴管理员')) {
                 $this->view->bpartnerAdminDisabled = 0;
                 $this->view->supplierView = 1;
                 $this->view->customerView = 1;
             }
             if (Application_Model_User::checkPermissionByRoleName('业务伙伴-查看-供应商')) {
                 $this->view->supplierView = 1;
             }
             if (Application_Model_User::checkPermissionByRoleName('业务伙伴-查看-客户')) {
                 $this->view->customerView = 1;
             }
             if (Application_Model_User::checkPermissionByRoleName('供应商管理员') || Application_Model_User::checkPermissionByRoleName('系统管理员')) {
                 $this->view->supplierAdmin = 1;
             }
             if (Application_Model_User::checkPermissionByRoleName('客户管理员') || Application_Model_User::checkPermissionByRoleName('系统管理员')) {
                 $this->view->customerAdmin = 1;
             }
         }
     }
 }
Example #12
0
 public function indexAction()
 {
     $user_session = new Zend_Session_Namespace('user');
     $user_id = $user_session->user_info['user_id'];
     $user_number = $user_session->user_info['user_number'];
     $this->view->hraAdmin = 0;
     $this->view->user_id = 0;
     $request = $this->getRequest()->getParams();
     $this->view->active_tab = isset($request['active_tab']) ? $request['active_tab'] : 0;
     if (isset($user_session->user_info)) {
         $this->view->user_id = $user_id;
         if ($user_session->user_info['isSuperAdmin']) {
             $this->view->hraAdmin = 1;
         } else {
             if (Application_Model_User::checkPermissionByRoleName('系统管理员') || Application_Model_User::checkPermissionByRoleName('人事主管')) {
                 $this->view->hraAdmin = 1;
             }
         }
     }
     $user = new Application_Model_User();
     $member = new Admin_Model_Member();
     // 获取部门主管
     $manager = $user->getManagerUser($user_session->user_info['user_id']);
     $this->view->default_manager_id = $manager[0]['id'];
     // 获取总经理
     /* $leader = $member->getMemberWithNoManagerByName('总经理');
        $this->view->default_leader_id = $leader[0]['user_id']; */
     // 获取公司领导
     /* $leader = $user->getLeaderList();
        $this->view->default_leader_id = $leader[0]['id']; */
     // 获取当前用户剩余假期
     $this->view->vacation_qty_left = $this->getVacaionLeftQty($user_id);
     // 获取默认日期范围(最近3个月)
     $time = time();
     $this->view->default_date_from = date('Y-m-01', strtotime(date('Y', $time) . '-' . (date('m', $time) - 1) . '-01'));
     $this->view->default_date_to = date('Y-m-t', strtotime(date('Y', $time) . '-' . (date('m', $time) + 1) . '-01'));
 }
Example #13
0
 public function getMyCount($type, $where, $myId)
 {
     $sql3 = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name))->join(array('t2' => $this->_dbprefix . 'review'), "t1.id = t2.file_id and t2.finish_flg = 0 and t2.type = 'bom'", array())->joinLeft(array('t3' => $this->_dbprefix . 'employee'), "t1.create_user = t3.id", array('creater' => 'cname'))->where("t1.state != 'Deleted'")->where($where);
     $ids = $this->getMyReviewing($myId);
     if ($ids) {
         $sql3->where("t2.id in ({$ids})");
     }
     $sql1 = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name))->joinLeft(array('t3' => $this->_dbprefix . 'employee'), "t1.create_user = t3.id", array('creater' => 'cname'))->where($where);
     if (!Application_Model_User::checkPermissionByRoleName('BOM管理员') && !Application_Model_User::checkPermissionByRoleName('系统管理员')) {
         $sql1 = $sql1->where("(t1.state = 'Reviewing' or t1.state = 'Return' or t1.state = 'Draft' or t1.state = 'Active') and t1.create_user = {$myId}");
     } else {
         $sql1 = $sql1->where("(t1.state = 'Reviewing' or t1.state = 'Return' or t1.state = 'Active') or (t1.state = 'Draft' and t1.create_user = {$myId})");
     }
     $sql2 = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name))->joinLeft(array('t3' => $this->_dbprefix . 'employee'), "t1.create_user = t3.id", array('creater' => 'cname'))->where("t1.state != 'Deleted'")->where($where);
     $ids = $this->getMyReviewed($myId);
     if ($ids) {
         $sql2->where("t1.id in ({$ids})");
     }
     if ($type == 1) {
         $sqlArray = array($sql1);
     } else {
         if ($type == 2) {
             $sqlArray = array($sql2);
         } else {
             if ($type == 3) {
                 $sqlArray = array($sql3);
             } else {
                 $sqlArray = array($sql1, $sql2, $sql3);
             }
         }
     }
     $selectUnion = $this->select()->union($sqlArray, Zend_Db_Select::SQL_UNION)->order('state DESC')->order('update_time desc');
     $data = $this->fetchAll($selectUnion)->count();
     return $data;
 }
Example #14
0
 public function getData($condition, $receive_id = null, $type = '采购收货')
 {
     $sql = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name))->joinLeft(array('t2' => $this->_dbprefix . 'user'), "t1.create_user = t2.id", array())->joinLeft(array('t3' => $this->_dbprefix . 'employee'), "t2.employee_id = t3.id", array('creater' => 'cname'))->joinLeft(array('t4' => $this->_dbprefix . 'user'), "t1.update_user = t4.id", array())->joinLeft(array('t5' => $this->_dbprefix . 'employee'), "t4.employee_id = t5.id", array('updater' => 'cname'))->where("t1.type = '" . $type . "'");
     if ($receive_id) {
         $sql->where("t1.id = " . $receive_id);
         return $this->fetchRow($sql)->toArray();
     } else {
         if ($condition['date_from']) {
             $sql->where("t1.create_time >= '" . $condition['date_from'] . " 00:00:00'");
         }
         if ($condition['date_to']) {
             $sql->where("t1.create_time <= '" . $condition['date_to'] . " 23:59:59'");
         }
         if ($condition['key']) {
             $sql->where("t1.number like '%" . $condition['key'] . "%' \n                        or t1.description like '%" . $condition['key'] . "%' \n                        or t1.remark like '%" . $condition['key'] . "%'");
             // or t8.name like '%".$condition['key']."%'
         }
         $total = $this->fetchAll($sql)->count();
         $sql->order(array('t1.number desc', 't1.create_time desc'));
         if ($condition['type'] != 'csv') {
             $sql->limitPage($condition['page'], $condition['limit']);
         }
         $data = $this->fetchAll($sql)->toArray();
         $receive_items = new Erp_Model_Purchse_Receiveitems();
         for ($i = 0; $i < count($data); $i++) {
             $data[$i]['create_time'] = strtotime($data[$i]['create_time']);
             $data[$i]['update_time'] = strtotime($data[$i]['update_time']);
             $orderInfo = $receive_items->getOrderNumbersByReceiveId($data[$i]['id'], $type);
             $data[$i]['order_number'] = implode(',', $orderInfo['order_number']);
             if ($type == '采购收货') {
                 $suppliers = array();
                 foreach ($orderInfo['supplier'] as $s) {
                     if (!in_array($s, $suppliers)) {
                         array_push($suppliers, $s);
                     }
                 }
                 $data[$i]['supplier'] = implode(',', $suppliers);
             } else {
                 $customers = array();
                 foreach ($orderInfo['customer'] as $c) {
                     if (!in_array($c, $customers)) {
                         array_push($customers, $c);
                     }
                 }
                 $data[$i]['customer'] = implode(',', $customers);
             }
         }
         if ($condition['type'] == 'csv') {
             $data_csv = array();
             $showAmount = false;
             if (Application_Model_User::checkPermissionByRoleName('系统管理员') || Application_Model_User::checkPermissionByRoleName('财务人员') || ($type = '采购收货' || ($type = '采购退货' || ($type = '调拨'))) && Application_Model_User::checkPermissionByRoleName('采购人员') || ($type = '销售交货' && Application_Model_User::checkPermissionByRoleName('销售人员'))) {
                 $showAmount = true;
             }
             if ($showAmount) {
                 if (isset($condition['action_type']) && $condition['action_type'] == '采购收货') {
                     $title = array('cnt' => '#', 'number' => '收货单号', 'order_number' => '采购订单', 'total' => '金额', 'supplier' => '供应商', 'date' => '收货日期', 'description' => '描述', 'remark' => '备注', 'creater' => '收货人', 'create_time' => '收货时间');
                 } else {
                     if (isset($condition['action_type']) && $condition['action_type'] == '销售交货') {
                         $title = array('cnt' => '#', 'number' => '交货单号', 'order_number' => '销售订单', 'total' => '金额', 'customer' => '客户', 'date' => '交货日期', 'description' => '描述', 'remark' => '备注', 'creater' => '交货人', 'create_time' => '交货时间');
                     } else {
                         $title = array('cnt' => '#', 'transaction_type' => '库存交易类别', 'number' => '单据号', 'date' => '单据日期', 'total' => '金额', 'description' => '描述', 'remark' => '备注', 'creater' => '制单人', 'create_time' => '制单时间');
                     }
                 }
             } else {
                 if (isset($condition['action_type']) && $condition['action_type'] == '采购收货') {
                     $title = array('cnt' => '#', 'number' => '收货单号', 'order_number' => '采购订单', 'supplier' => '供应商', 'date' => '收货日期', 'description' => '描述', 'remark' => '备注', 'creater' => '收货人', 'create_time' => '收货时间');
                 } else {
                     if (isset($condition['action_type']) && $condition['action_type'] == '销售交货') {
                         $title = array('cnt' => '#', 'number' => '交货单号', 'order_number' => '销售订单', 'customer' => '客户', 'date' => '交货日期', 'description' => '描述', 'remark' => '备注', 'creater' => '交货人', 'create_time' => '交货时间');
                     } else {
                         $title = array('cnt' => '#', 'transaction_type' => '库存交易类别', 'number' => '单据号', 'date' => '单据日期', 'description' => '描述', 'remark' => '备注', 'creater' => '制单人', 'create_time' => '制单时间');
                     }
                 }
             }
             array_push($data_csv, $title);
             $i = 0;
             foreach ($data as $d) {
                 $i++;
                 if ($showAmount) {
                     if (isset($condition['action_type']) && $condition['action_type'] == '采购收货') {
                         $info = array('cnt' => $i, 'number' => $d['number'], 'order_number' => $d['order_number'], 'total' => $d['total'], 'supplier' => $d['supplier'], 'date' => $d['date'], 'description' => $d['description'], 'remark' => $d['remark'], 'creater' => $d['creater'], 'create_time' => date('Y-m-d H:i:s', $d['create_time']));
                     } else {
                         if (isset($condition['action_type']) && $condition['action_type'] == '销售交货') {
                             $info = array('cnt' => $i, 'number' => $d['number'], 'order_number' => $d['order_number'], 'total' => $d['total'], 'customer' => $d['customer'], 'date' => $d['date'], 'description' => $d['description'], 'remark' => $d['remark'], 'creater' => $d['creater'], 'create_time' => date('Y-m-d H:i:s', $d['create_time']));
                         } else {
                             $info = array('cnt' => $i, 'transaction_type' => $d['transaction_type'], 'number' => $d['number'], 'date' => $d['date'], 'total' => $d['total'], 'description' => $d['description'], 'remark' => $d['remark'], 'creater' => $d['creater'], 'create_time' => date('Y-m-d H:i:s', $d['create_time']));
                         }
                     }
                 } else {
                     if (isset($condition['action_type']) && $condition['action_type'] == '采购收货') {
                         $info = array('cnt' => $i, 'number' => $d['number'], 'order_number' => $d['order_number'], 'supplier' => $d['supplier'], 'date' => $d['date'], 'description' => $d['description'], 'remark' => $d['remark'], 'creater' => $d['creater'], 'create_time' => date('Y-m-d H:i:s', $d['create_time']));
                     } else {
                         if (isset($condition['action_type']) && $condition['action_type'] == '销售交货') {
                             $info = array('cnt' => $i, 'number' => $d['number'], 'order_number' => $d['order_number'], 'customer' => $d['customer'], 'date' => $d['date'], 'description' => $d['description'], 'remark' => $d['remark'], 'creater' => $d['creater'], 'create_time' => date('Y-m-d H:i:s', $d['create_time']));
                         } else {
                             $info = array('cnt' => $i, 'transaction_type' => $d['transaction_type'], 'number' => $d['number'], 'date' => $d['date'], 'description' => $d['description'], 'remark' => $d['remark'], 'creater' => $d['creater'], 'create_time' => date('Y-m-d H:i:s', $d['create_time']));
                         }
                     }
                 }
                 array_push($data_csv, $info);
             }
             return $data_csv;
         }
         return array('total' => $total, 'rows' => $data);
     }
 }
Example #15
0
 /**
  * @abstract    审核
  * @return      null
  */
 public function reviewAction()
 {
     // 返回值数组
     $result = array('success' => true, 'result' => true, 'info' => '审批成功');
     $request = $this->getRequest()->getParams();
     $now = date('Y-m-d H:i:s');
     $user_session = new Zend_Session_Namespace('user');
     $user = $user_session->user_info['employee_id'];
     $val = (object) $request;
     $materiel = new Product_Model_Materiel();
     $record = new Dcc_Model_Record();
     $review = new Dcc_Model_Review();
     $employee = new Hra_Model_Employee();
     $id = $val->id;
     $remark = $val->remark1;
     $pass = $val->review_result;
     $publish = false;
     if (isset($val->code) && $val->code != '') {
         $code = $val->code;
         // 检查code是否重复
         if ($materiel->fetchAll("id != {$id} and code = '" . $code . "'")->count() > 0) {
             $result['result'] = false;
             $result['info'] = "代码“" . $code . "”已经存在";
             echo Zend_Json::encode($result);
             exit;
         }
     }
     if (isset($val->ids) && $val->ids && strpos($val->ids, ',') !== false) {
         // 多个
         $ids = explode(',', $val->ids);
     } else {
         $ids = array($id);
     }
     $newCodes = array();
     foreach ($ids as $id) {
         // 获取物料信息
         $materielData = $materiel->getOne($id);
         if (!$materielData) {
             $result['result'] = false;
             $result['info'] = "数据状态已改变";
             echo Zend_Json::encode($result);
             exit;
         }
         $review_id = $materielData->review_id;
         // 获取当前审核情况
         // 如果record记录被删除或状态已改变,报错
         $reviewWhere = "id = {$review_id}";
         $reviewRows = $review->getList($reviewWhere, "materiel");
         if (count($reviewRows) == 0) {
             $result['result'] = false;
             $result['info'] = "非法数据";
             echo Zend_Json::encode($result);
             exit;
         }
         $reviewRow = $reviewRows[0];
         if ($reviewRow['finish_flg'] != 0) {
             $result['result'] = false;
             $result['info'] = "数据状态已改变";
             echo Zend_Json::encode($result);
             exit;
         }
         // 处理记录
         $recordData = array("type" => "materiel", "table_name" => "oa_product_materiel", "table_id" => $id, "handle_user" => $user, "handle_time" => $now, "action" => "审批", "result" => $pass == 1 ? "批准" : ($pass == 2 ? "拒绝" : "转审"), "ip" => $_SERVER['REMOTE_ADDR'], "remark" => $remark);
         // 增加记录
         $record->insert($recordData);
         // 通过方式
         $method = $reviewRow['method'];
         if ($pass == 1) {
             if ($method == 2) {
                 // 任何一人处理即通过
                 $finish_flg = 1;
                 $actual_user = $user;
                 $finish_time = $now;
             } else {
                 // 所有人都需要审核,检查是否所有人都已经审核
                 $plan_user = $reviewRow['plan_user'];
                 $actual_user = $reviewRow['actual_user'];
                 $actual_user = !$actual_user ? $user : $actual_user . "," . $user;
                 // 检查计划审核人和实际审核人是否一致
                 $planA = explode(',', $plan_user);
                 $actualA = explode(',', $actual_user);
                 $passFlg = true;
                 foreach ($planA as $u) {
                     if ($u && !in_array($u, $actualA)) {
                         $passFlg = false;
                     }
                 }
                 if ($passFlg) {
                     $finish_flg = 1;
                     $finish_time = $now;
                 } else {
                     $finish_flg = 0;
                     $finish_time = null;
                 }
             }
             // 审核情况
             $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
         } else {
             if ($pass == 3) {
                 // 转审
                 $finish_flg = 0;
                 if ($method == 2) {
                     // 处理方式为任意时,一个人转审之后其他人员也删除
                     $plan_user = str_replace('E', '', $val->transfer_id);
                 } else {
                     // 更改审核情况中的审核人
                     $plan_users = explode(',', $reviewRow['plan_user']);
                     // 审核人不在审核人列表中,并且是管理员,则替换所有人
                     if (!in_array($user, $plan_users) && (Application_Model_User::checkPermissionByRoleName('物料管理员') || Application_Model_User::checkPermissionByRoleName('系统管理员'))) {
                         $plan_users = array(str_replace('E', '', $val->transfer_id));
                     } else {
                         for ($i = 0; $i < count($plan_users); $i++) {
                             if ($plan_users[$i] == $user) {
                                 $plan_users[$i] = str_replace('E', '', $val->transfer_id);
                                 break;
                             }
                         }
                     }
                     $plan_user = implode(',', $plan_users);
                 }
                 // 审核情况
                 $reviewData = array("plan_user" => $plan_user, "method" => 1);
             } else {
                 // 退回
                 $actual_user = null;
                 $finish_time = null;
                 $finish_flg = 0;
                 // 退回选项
                 $return = $reviewRow['return'];
                 if ($return == 2) {
                     // 退到初始状态
                     // 需更新的审核记录: 所有
                     $reviewWhere = "type = 'materiel' and file_id = {$id}";
                     // 审核情况更新数据
                     $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
                     // 文件状态不更新
                 } else {
                     if ($return == 4) {
                         // 退到本阶段开始
                         // 需更新的审核记录
                         $reviewWhere = "type = 'materiel' and finish_flg = 0 and file_id = {$id}";
                         // 审核情况更新数据
                         $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
                         // 文件状态不更新
                     } else {
                         if ($return == 3) {
                             // 退到上一阶段
                             // 需更新的审核记录:最后一个finish_flg为1的数据和第一个finish_flg为0的数据
                             $last_1 = $first_0 = 0;
                             foreach ($reviewRows as $r) {
                                 if ($r['finish_flg'] == 1) {
                                     $last_1 = $r['id'];
                                 }
                                 if ($r['finish_flg'] == 0 && $first_0 == null) {
                                     $first_0 = $r['id'];
                                 }
                             }
                             $reviewWhere = "id = {$last_1} or id = {$first_0}";
                             // 审核情况更新数据
                             $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
                             // 文件状态不更新
                         } else {
                             $fileWhere = "id = {$id}";
                             // 更新文件状态为退回
                             $mData = array("state" => "Return");
                             // 退到初始状态
                             // 更新所有record的finish_flg为0
                             $reviewWhere = "type = 'materiel' and file_id = {$id}";
                             // 审核情况
                             $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
                         }
                     }
                 }
             }
         }
         // 如果所有record的记录的finish_flg 都为1,则发布
         if ($finish_flg == 1 && $review->fetchAll("type = 'materiel' and finish_flg = 0 and file_id = {$id}")->count() == 1) {
             $publish = true;
             if (!isset($code) || !$code) {
                 // 自动生成物料编码
                 $code = $this->getCode($materielData->type, $materielData->project_no);
                 if (!$code) {
                     $result['result'] = false;
                     $result['info'] = "生成物料编码失败";
                     echo Zend_Json::encode($result);
                     exit;
                 } else {
                     if (count($ids) > 1) {
                         $newCodes[] = $code;
                         $result['info'] = "审批成功";
                     } else {
                         $result['info'] = "审批成功,系统分配物料号:{$code}";
                     }
                 }
             }
             $mData = array("state" => "Active", "code" => $code, "archive_time" => $now);
             $fileWhere = "id = {$id}";
             // 如果有ds等文件,这些文件也设置为已归档
             $data_file_id = $materielData->data_file_id;
             $tsr_id = $materielData->tsr_id;
             $first_report_id = $materielData->first_report_id;
             if ($data_file_id || $tsr_id || $first_report_id) {
                 $uploadUpdWhere = " archive = 0 and (1=0 ";
                 if ($data_file_id) {
                     $uploadUpdWhere .= " or id = " . $data_file_id;
                 }
                 if ($tsr_id) {
                     $uploadUpdWhere .= " or id = " . $tsr_id;
                 }
                 if ($first_report_id) {
                     $uploadUpdWhere .= " or id = " . $first_report_id;
                 }
                 $uploadUpdWhere .= ")";
                 $uploadUpdData = array('archive' => 1, 'archive_time' => $now);
             }
         }
         try {
             // 更新审核情况
             $review->update($reviewData, $reviewWhere);
             // 更新文件
             if (isset($fileWhere)) {
                 $materiel->update($mData, $fileWhere);
             }
             // 更新上传文件
             if (isset($uploadUpdData)) {
                 $upload = new Dcc_Model_Upload();
                 $upload->update($uploadUpdData, $uploadUpdWhere);
             }
             $this->operate("物料评审");
         } catch (Exception $e) {
             $result['result'] = false;
             $result['info'] = $e->getMessage();
             echo Zend_Json::encode($result);
             exit;
         }
         // 邮件任务
         // 文件提交者或更新人
         $owner = $materielData['create_user'];
         $dev = false;
         $type = "物料申请";
         // 发邮件的情况:
         // 1、单站审核结束 $finish_flg = 1 && $publish = false
         if ($finish_flg == 1 && !$publish) {
             $subject = $type . "审批";
             // $to = 下一站审核人
             $current = $review->getFirstNoReview("materiel", $id);
             $to = $employee->getInfosByOneLine($current['plan_user']);
             //
             $cc = $employee->getInfosByOneLine($owner);
             $cc = $cc['email'];
             $content = "你有一个" . $type . "需要审批,请登录系统查看详情!";
         }
         // 2、所有审核结束  $publish = true
         if ($publish) {
             $subject = $type . "发布";
             $to = $employee->getInfosByOneLine($owner);
             $cc = $employee->getInfosByOneLine($record->getEmployeeIds($materielData['id'], 'materiel'));
             $cc = $cc['email'];
             $config = new Zend_Config_Ini(CONFIGS_PATH . '/application.ini', 'production');
             if (isset($config) && isset($config->email->apply->publish)) {
                 $to_plus = $config->email->apply->publish;
                 if ($to_plus) {
                     if ($cc) {
                         $cc .= "," . $to_plus;
                     } else {
                         $cc = $to_plus;
                     }
                 }
             }
             //                 $cc = "";
             $his = "<p><b>审核记录:</b><br>" . str_replace(',', '<br>', $record->getHis($materielData['id'], 'materiel')) . "</p>";
             $content = "你申请的" . $type . "已通过审批。<p><b>物料编码:</b>" . $code . "</p><p><b>类别:</b>" . $this->getTypeByConnect($materielData['type'], '') . "</p><p><b>名称:</b>" . $materielData['name'] . "</p><p><b>描述:</b>" . $materielData['description'] . "</p><p><b>申请人:</b>" . $materielData['creater'] . "</p><p><b>申请时间:</b>" . $materielData['create_time'] . "</p>" . $his . "<p>请登录系统查看详情!</p>";
         }
         // 3、退回 isset($return)
         if (isset($return)) {
             $subject = $type . "退回";
             $to = $employee->getInfosByOneLine($owner);
             $cc = "";
             // 原审核人
             if ($reviewRow['plan_user']) {
                 $orgUser = $reviewRow['plan_user'];
                 $cc = $employee->getInfosByOneLine($orgUser);
                 $cc = $cc['email'];
             }
             $content = "你申请的" . $type . "已被退回,<p><b>退回原因:</b>" . $remark . "</p>,请登录系统查看详情!";
         }
         // 4、转审 $pass == 3
         if ($pass == 3) {
             $subject = $type . "转审";
             $toUser = str_replace('E', '', $val->transfer_id);
             $to = $employee->getInfosByOneLine($toUser);
             // 原审核人
             if ($reviewRow['plan_user']) {
                 $orgUser = $reviewRow['plan_user'];
                 $owner .= "," . $orgUser;
             }
             $cc = $employee->getInfosByOneLine($owner);
             $cc = $cc['email'];
             $content = "有新的" . $type . "被转移到你处审批,请登录系统查看详情!";
         }
         if (isset($subject)) {
             $mailData = array('type' => $type, 'subject' => $subject, 'to' => $to['email'], 'cc' => $cc, 'content' => $content, 'send_time' => $now, 'add_date' => $now);
             $mail = new Application_Model_Log_Mail();
             try {
                 $mailId = $mail->insert($mailData);
             } catch (Exception $e) {
                 $result['result'] = false;
                 $result['info'] = $e->getMessage();
                 echo Zend_Json::encode($result);
                 exit;
             }
             if ($mailId) {
                 $mail->send($mailId);
             }
         }
         $code = null;
     }
     if (count($newCodes) > 0) {
         $result['info'] .= ',系统分配物料号分别为:' . implode(',', $newCodes);
     }
     echo Zend_Json::encode($result);
     exit;
 }
Example #16
0
 /**
  * 获取文件编码及文件信息
  */
 public function getfilesbyidAction()
 {
     // 获取参数
     $request = $this->getRequest()->getParams();
     $id = $request['id'];
     $user_session = new Zend_Session_Namespace('user');
     $user = $user_session->user_info['employee_id'];
     $myDept = $user_session->user_info['dept_id'];
     $nowDate = date('Y-m-d');
     $files = new Dcc_Model_Files();
     $record = new Dcc_Model_Record();
     $upload = new Dcc_Model_Upload();
     $codeModel = new Dcc_Model_Code();
     $share = new Dcc_Model_Share();
     $review = new Dcc_Model_Review();
     $modelUser = new Application_Model_User();
     $data = $files->getDataById($id);
     // [id, code, ver, file_id, file_name, file_path, file_view_path]
     $result = array();
     $row0 = $data[0];
     $names = explode(',', $row0['name']);
     $codes = explode(',', $row0['code']);
     $vers = explode(',', $row0['ver']);
     $description = explode('|', $row0['description']);
     $project_info = explode(',', $row0['project_info']);
     $final_codes = array();
     $final_vers = array();
     $final_names = array();
     $final_descs = array();
     $final_projs = array();
     $k = 0;
     for ($i = 0; $i < count($names); $i++) {
         $sub_names = explode('|', $names[$i]);
         $final_codes[$k] = $codes[$i];
         $final_vers[$k] = $vers[$i];
         if (isset($description[$i]) && $description[$i]) {
             $final_descs[$k] = $description[$i];
         } else {
             $final_descs[$k] = "";
         }
         if (isset($project_info[$i]) && $project_info[$i]) {
             $final_projs[$k] = $project_info[$i];
         } else {
             $final_projs[$k] = "";
         }
         $final_names[$k] = $sub_names[0];
         $k++;
         for ($j = 1; $j < count($sub_names); $j++) {
             $final_codes[$k] = $codes[$i];
             $final_vers[$k] = $vers[$i];
             $final_names[$k] = $sub_names[$j];
             if (isset($description[$i]) && $description[$i]) {
                 $final_descs[$k] = $description[$i];
             } else {
                 $final_descs[$k] = "";
             }
             if (isset($project_info[$i]) && $project_info[$i]) {
                 $final_projs[$k] = $project_info[$i];
             } else {
                 $final_projs[$k] = "";
             }
             $k++;
         }
     }
     $catalog = new Product_Model_Catalog();
     for ($i = 0; $i < count($data); $i++) {
         $paths = $this->getPathByName($data, trim($final_names[$i]));
         $row = $data[$i];
         $result[$i]['id'] = $row['id'];
         $result[$i]['state'] = $row['state'];
         if ($final_descs[$i]) {
             $result[$i]['description'] = $final_descs[$i];
         } else {
             // 获取描述
             $descData = $codeModel->getJoinList("code = '{$final_codes[$i]}'", array(), array('description', 'project_no'));
             if (count($descData) > 0) {
                 $result[$i]['description'] = $descData[0]['description'];
                 if (!$final_projs[$i]) {
                     $final_projs[$i] = $descData[0]['project_no'];
                 }
             }
         }
         $result[$i]['project_no'] = $final_projs[$i];
         if ($final_projs[$i]) {
             $projData = $catalog->getById($final_projs[$i]);
             if ($projData && $projData['model_internal']) {
                 $result[$i]['project_name'] = $projData['model_internal'];
             }
         }
         $result[$i]['code'] = $final_codes[$i];
         $result[$i]['ver'] = $final_vers[$i];
         $result[$i]['file_id'] = $paths[0];
         $result[$i]['file_name'] = $final_names[$i];
         $result[$i]['file_path'] = $paths[1];
         $result[$i]['file_view_path'] = $paths[2];
         // 权限检查
         // 有权限的情况:1、本人上传的文件 2、本人提交的文件评审 3、本人参与审核的文件评审 4、共享给我的 5、将要审核的审核人 6、文件管理员、BOM管理员、物料管理员
         // 首先检查文件是否存在
         $result[$i]['exists'] = true;
         if (!file_exists($paths[1])) {
             $result[$i]['exists'] = false;
         }
         $role = false;
         if ($modelUser->checkPermissionByRoleName('物料管理员') || $modelUser->checkPermissionByRoleName('文件管理员') || $modelUser->checkPermissionByRoleName('系统管理员') || $modelUser->checkPermissionByRoleName('BOM管理员')) {
             $role = true;
         } else {
             if ($row0['create_user'] == $user || $row0['update_user'] == $user) {
                 $role = true;
             } else {
                 if ($record->fetchAll("table_id = {$id} and handle_user = {$user} and table_name = 'oa_doc_files' and action = '审批'")->count() > 0) {
                     $role = true;
                 } else {
                     if ($upload->fetchAll("id = " . $row['id'] . " and (create_user = {$user} or update_user = {$user})")->count() > 0) {
                         $role = true;
                     } else {
                         if ($share->fetchAll("shared_id = " . $row['id'] . " and type = 'upload' and share_time_begin <= '{$nowDate}' and share_time_end >= '{$nowDate}'  and (FIND_IN_SET({$user}, share_user) or FIND_IN_SET({$myDept}, share_dept))")->count() > 0) {
                             $role = true;
                         } else {
                             if ($review->fetchAll("file_id = {$id} and FIND_IN_SET({$user}, plan_user) and type = 'files'")->count() > 0) {
                                 $role = true;
                             }
                         }
                     }
                 }
             }
         }
         $result[$i]['role'] = $role;
     }
     echo Zend_Json::encode($result);
     exit;
 }
Example #17
0
 public function getOrderStatistics($condition = array())
 {
     $sql = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name), array('order_state' => new Zend_Db_Expr("case when t1.state = 0 then '审核中' when t1.state = 1 then '拒绝' else '批准' end"), 'order_create_time' => 'create_time', 'order_release_time' => 'release_time', 'order_sales_id' => 'sales_id', 'order_customer_id' => 'customer_id', 'order_date', 'order_status', 'order_id' => 'id', 'order_number' => 'number', 'order_remark' => 'remark', 'order_currency' => 'currency', 'order_type_id' => 'type_id'))->joinLeft(array('t2' => $this->_dbprefix . 'user'), "t1.create_user = t2.id", array())->joinLeft(array('t3' => $this->_dbprefix . 'employee'), "t2.employee_id = t3.id", array('creater' => 'cname'))->joinLeft(array('t4' => $this->_dbprefix . 'user'), "t1.update_user = t4.id", array())->joinLeft(array('t5' => $this->_dbprefix . 'employee'), "t4.employee_id = t5.id", array('updater' => 'cname'))->joinLeft(array('t7' => $this->_dbprefix . 'erp_sale_type'), "t1.type_id = t7.id", array('order_type_name' => 'name'))->joinLeft(array('t8' => $this->_dbprefix . 'erp_sale_order_items'), "t1.id = t8.order_id", array('delivery_date', 'delivery_date_remark', 'active', 'id', 'type', 'order_id', 'request_date', 'code', 'code_internal', 'name', 'description', 'customer_code', 'customer_description', 'product_type', 'product_series', 'remark', 'price', 'total', 'total', 'price_tax', 'qty', 'product_type', 'product_series', 'sales_remark', 'unit'))->joinLeft(array('t9' => $this->_dbprefix . 'bpartner'), "t1.customer_id = t9.id", array('order_customer_code' => 'code', 'order_customer_name' => new Zend_Db_Expr("case when t9.cname != '' then t9.cname else t9.ename end")))->joinLeft(array('t10' => $this->_dbprefix . 'bpartner_contact'), "t1.customer_address_code = t10.area_code", array('order_customer_contact' => new Zend_Db_Expr("concat(t10.area_code, ' [', t10.name, ']')")))->where("t1.active = 1")->group("t8.id")->order(array('t1.number desc', 't1.create_time desc'));
     // 状态
     if ($condition['state'] != null) {
         $sql->where("t1.state = " . $condition['state']);
     }
     // 日前从
     if ($condition['date_from']) {
         $sql->where("t1.create_time >= '" . $condition['date_from'] . " 00:00:00'");
     }
     // 日期至
     if ($condition['date_to']) {
         $sql->where("t1.create_time <= '" . $condition['date_to'] . " 23:59:59'");
     }
     // 采购类别
     if ($condition['type']) {
         $type = json_decode($condition['type']);
         if (count($type)) {
             $type_con = "t1.type_id = " . $type[0];
             for ($i = 1; $i < count($type); $i++) {
                 $type_con .= " or t1.type_id = " . $type[$i];
             }
             $sql->where($type_con);
         }
     }
     if ($condition['sales']) {
         $sales = json_decode($condition['sales']);
         if (count($sales)) {
             $sales_con = "t1.sales_id = " . $sales[0];
             for ($i = 1; $i < count($sales); $i++) {
                 $sales_con .= " or t1.sales_id = " . $sales[$i];
             }
             $sql->where($sales_con);
         }
     }
     if ($condition['key']) {
         $sql->where("t9.code like '%" . $condition['key'] . "%' \n                    or t9.cname like '%" . $condition['key'] . "%' \n                    or t9.ename like '%" . $condition['key'] . "%' \n                    or t3.cname like '%" . $condition['key'] . "%' \n                    or t3.ename like '%" . $condition['key'] . "%' \n                    or t1.number like '%" . $condition['key'] . "%' \n                    or t1.remark like '%" . $condition['key'] . "%' \n                    or t3.cname like '%" . $condition['key'] . "%' \n                    or t3.ename like '%" . $condition['key'] . "%' \n                    or t7.name like '%" . $condition['key'] . "%' \n                    or t8.code like '%" . $condition['key'] . "%' \n                    or t8.name like '%" . $condition['key'] . "%' \n                    or t8.description like '%" . $condition['key'] . "%'");
     }
     $total = $this->fetchAll($sql)->count();
     /* echo $sql;
        exit; */
     if ($condition['option'] != 'csv') {
         $sql->limitPage($condition['page'], $condition['limit']);
     }
     $data = $this->fetchAll($sql)->toArray();
     //echo '<pre>';print_r($data);exit;
     $item = new Erp_Model_Sale_Receiveitemsordersale();
     // 交货
     $items_invoice = new Erp_Model_Sale_Invoiceitems();
     $sales = new Erp_Model_Sale_Sales();
     $operateModel = new Application_Model_Log_Operate();
     for ($i = 0; $i < count($data); $i++) {
         $data[$i]['delivery_date_first'] = '';
         // 交期回复日志
         if ($data[$i]['delivery_date'] != '' || $data[$i]['delivery_date_remark'] != '') {
             $logInfo = array();
             $log = $operateModel->getLogByOperateAndTargetId('销售交期回复', $data[$i]['id']);
             $j = 0;
             foreach ($log as $l) {
                 $content = Zend_Json::decode($l['content']);
                 $logText = $content['time'] . ' [' . $content['delivery_date'] . '] [' . $content['delivery_date_remark'] . '] ' . $content['user'];
                 array_push($logInfo, $logText);
                 if ($j == count($log) - 1) {
                     $data[$i]['delivery_date_first'] = $content['delivery_date'];
                 }
                 $j++;
             }
             $data[$i]['delivery_reply_log'] = implode(',', $logInfo);
         }
         $data[$i]['order_customer'] = $data[$i]['order_customer_code'] . $data[$i]['order_customer_name'];
         $data[$i]['qty_send'] = 0;
         $data[$i]['send_info'] = '';
         if ($data[$i]['id']) {
             if ($data[$i]['code'] != '') {
                 // 已交货:从销售交货
                 $receiveData = $item->getOrderItemSendQty($data[$i]['id']);
                 $sendInfoArr = array();
                 foreach ($receiveData as $r) {
                     $data[$i]['qty_send'] += $r['qty'];
                     // 交货(负数)
                     array_push($sendInfoArr, $r['number'] . ' [' . $r['qty'] . '] [' . $r['time'] . ']');
                 }
                 $data[$i]['send_info'] = implode(',', $sendInfoArr);
             } else {
                 // 已交货非物料:从销售发票
                 $data[$i]['qty_send'] = $items_invoice->getQty($data[$i]['id'], 1);
             }
         }
         $data[$i]['qty_left'] = $data[$i]['qty'] - $data[$i]['qty_send'];
         $salesData = $sales->getData($data[$i]['order_sales_id']);
         $data[$i]['order_sales_name'] = isset($salesData['cname']) ? $salesData['cname'] : '';
     }
     //echo '<pre>';print_r($data);exit;
     if ($condition['option'] == 'csv') {
         $data_csv = array();
         $showPrice = false;
         if (Application_Model_User::checkPermissionByRoleName('系统管理员') || Application_Model_User::checkPermissionByRoleName('销售人员') || Application_Model_User::checkPermissionByRoleName('财务人员')) {
             $showPrice = true;
         }
         if ($showPrice) {
             $title = array('cnt' => '#', 'active' => '启用', 'order_number' => '订单号', 'order_state' => '审核状态', 'order_status' => '订单状态', 'price' => '价格', 'total' => '金额', 'type' => '类别', 'code' => '产品型号', 'code_internal' => '内部型号', 'order_sales_name' => '销售员', 'order_type_name' => '订单类别', 'order_customer_code' => '客户代码', 'order_customer_name' => '客户名称', 'name' => '名称', 'description' => '描述', 'customer_code' => '客户产品型号', 'customer_description' => '客户产品描述', 'product_type' => '产品类别', 'product_series' => '产品系列', 'qty' => '订单数量', 'qty_send' => '交货数量', 'send_info' => '交货信息', 'qty_left' => '未交货数量', 'request_date' => '需求交期', 'delivery_date_first' => '预计交期(首次)', 'delivery_date' => '预计交期(最终)', 'delivery_date_remark' => '交期备注', 'order_customer_contact' => '客户收件人地址简码', 'remark' => '备注', 'order_create_date' => '下单日期', 'order_create_time' => '下单时间', 'order_release_date' => '批准日期', 'order_release_time' => '批准时间');
         } else {
             $title = array('cnt' => '#', 'active' => '启用', 'order_number' => '订单号', 'order_state' => '审核状态', 'order_status' => '订单状态', 'type' => '类别', 'code' => '产品型号', 'code_internal' => '内部型号', 'order_sales_name' => '销售员', 'order_type_name' => '订单类别', 'order_customer_code' => '客户代码', 'order_customer_name' => '客户名称', 'name' => '名称', 'description' => '描述', 'customer_code' => '客户产品型号', 'customer_description' => '客户产品描述', 'product_type' => '产品类别', 'product_series' => '产品系列', 'qty' => '订单数量', 'qty_send' => '交货数量', 'send_info' => '交货信息', 'qty_left' => '未交货数量', 'request_date' => '需求交期', 'delivery_date_first' => '预计交期(首次)', 'delivery_date' => '预计交期(最终)', 'delivery_date_remark' => '交期备注', 'order_customer_contact' => '客户收件人地址简码', 'remark' => '备注', 'order_create_date' => '下单日期', 'order_create_time' => '下单时间', 'order_release_date' => '批准日期', 'order_release_time' => '批准时间');
         }
         array_push($data_csv, $title);
         $i = 0;
         foreach ($data as $d) {
             $i++;
             if ($showPrice) {
                 $info = array('cnt' => $i, 'active' => $d['active'] == 1 ? '是' : '否', 'order_number' => $d['order_number'], 'order_state' => $d['order_state'], 'order_status' => $d['order_status'], 'price' => $d['price'], 'total' => $d['total'], 'type' => $d['type'] == 'catalog' ? '产品' : '物料', 'code' => $d['code'], 'code_internal' => $d['code_internal'], 'order_sales_name' => $d['order_sales_name'], 'order_type_name' => $d['order_type_name'], 'order_customer_code' => $d['order_customer_code'], 'order_customer_name' => $d['order_customer_name'], 'name' => $d['name'], 'description' => $d['description'], 'customer_code' => $d['customer_code'], 'customer_description' => $d['customer_description'], 'product_type' => $d['product_type'], 'product_series' => $d['product_series'], 'qty' => $d['qty'], 'qty_send' => $d['qty_send'], 'send_info' => $d['send_info'], 'qty_left' => $d['qty_left'], 'request_date' => $d['request_date'], 'delivery_date_first' => $d['delivery_date_first'], 'delivery_date' => $d['delivery_date'], 'delivery_date_remark' => $d['delivery_date_remark'], 'order_customer_contact' => $d['order_customer_contact'], 'remark' => $d['remark'], 'order_create_date' => $d['order_create_time'] != '' ? date('Y-m-d', strtotime($d['order_create_time'])) : '', 'order_create_time' => $d['order_create_time'] != '' ? date('H:i:s', strtotime($d['order_create_time'])) : '', 'order_release_date' => $d['order_release_time'] != '' ? date('Y-m-d', strtotime($d['order_release_time'])) : '', 'order_release_time' => $d['order_release_time'] != '' ? date('H:i:s', strtotime($d['order_release_time'])) : '');
             } else {
                 $info = array('cnt' => $i, 'active' => $d['active'] == 1 ? '是' : '否', 'order_number' => $d['order_number'], 'order_state' => $d['order_state'], 'order_status' => $d['order_status'], 'type' => $d['type'] == 'catalog' ? '产品' : '物料', 'code' => $d['code'], 'code_internal' => $d['code_internal'], 'order_sales_name' => $d['order_sales_name'], 'order_type_name' => $d['order_type_name'], 'order_customer_code' => $d['order_customer_code'], 'order_customer_name' => $d['order_customer_name'], 'name' => $d['name'], 'description' => $d['description'], 'customer_code' => $d['customer_code'], 'customer_description' => $d['customer_description'], 'product_type' => $d['product_type'], 'product_series' => $d['product_series'], 'qty' => $d['qty'], 'qty_send' => $d['qty_send'], 'send_info' => $d['send_info'], 'qty_left' => $d['qty_left'], 'request_date' => $d['request_date'], 'delivery_date_first' => $d['delivery_date_first'], 'delivery_date' => $d['delivery_date'], 'delivery_date_remark' => $d['delivery_date_remark'], 'order_customer_contact' => $d['order_customer_contact'], 'remark' => $d['remark'], 'order_create_date' => $d['order_create_time'] != '' ? date('Y-m-d', strtotime($d['order_create_time'])) : '', 'order_create_time' => $d['order_create_time'] != '' ? date('H:i:s', strtotime($d['order_create_time'])) : '', 'order_release_date' => $d['order_release_time'] != '' ? date('Y-m-d', strtotime($d['order_release_time'])) : '', 'order_release_time' => $d['order_release_time'] != '' ? date('H:i:s', strtotime($d['order_release_time'])) : '');
             }
             array_push($data_csv, $info);
         }
         return $data_csv;
     }
     return array('total' => $total, 'rows' => $data);
 }
Example #18
0
 /**
  * @abstract    审核文件
  * @return      null
  */
 public function reviewAction()
 {
     // 返回值数组
     $result = array('success' => true, 'result' => true, 'info' => '审批成功');
     $request = $this->getRequest()->getParams();
     $now = date('Y-m-d H:i:s');
     $user_session = new Zend_Session_Namespace('user');
     $user = $user_session->user_info['employee_id'];
     $val = (object) $request;
     $files = new Dcc_Model_Files();
     $record = new Dcc_Model_Record();
     $review = new Dcc_Model_Review();
     $formval = new Admin_Model_Formval();
     $employee = new Hra_Model_Employee();
     $upgrade = new Dcc_Model_Upgrade();
     $id = $val->id;
     $remark = $val->remark;
     $pass = $val->review_result;
     $review_id = $val->review_id;
     $publish = false;
     // 获取文件信息
     $filesData = $files->getOne($id);
     // 获取当前审核情况
     // 如果record记录被删除或状态已改变,报错
     $reviewWhere = "id = {$review_id}";
     $reviewRows = $review->getList($reviewWhere, "files");
     if (count($reviewRows) == 0) {
         $result['result'] = false;
         $result['info'] = "非法数据";
         echo Zend_Json::encode($result);
         exit;
     }
     $reviewRow = $reviewRows[0];
     if ($reviewRow['finish_flg'] != 0) {
         $result['result'] = false;
         $result['info'] = "数据状态已改变";
         echo Zend_Json::encode($result);
         exit;
     }
     // 处理记录
     $recordData = array("type" => "files", "table_name" => "oa_doc_files", "table_id" => $id, "handle_user" => $user, "handle_time" => $now, "action" => "审批", "result" => $pass == 1 ? "批准" : ($pass == 2 ? "拒绝" : "转审"), "ip" => $_SERVER['REMOTE_ADDR'], "remark" => $remark);
     // 增加记录
     $record->insert($recordData);
     // 通过方式
     $method = $reviewRow['method'];
     if ($pass == 1) {
         if ($method == 2) {
             // 任何一人处理即通过
             $finish_flg = 1;
             $actual_user = $user;
             $finish_time = $now;
         } else {
             // 所有人都需要审核,检查是否所有人都已经审核
             $plan_user = $reviewRow['plan_user'];
             $actual_user = $reviewRow['actual_user'];
             $actual_user = !$actual_user ? $user : $actual_user . "," . $user;
             // 检查计划审核人和实际审核人是否一致
             //                $plan_dept = $reviewRow['plan_dept'];
             //                if ($plan_dept) {
             //                    // 获取部门所有人员
             //                    $tmpUser = $employee->getAdapter()->query("select group_concat(id) as ids from oa_employee where dept_id in ( " . $plan_dept . ")")->fetchObject();
             //                    if ($tmpUser->ids) {
             //                        if ($plan_user)
             //                            $plan_user .= ",";
             //                        $plan_user .= $tmpUser->ids;
             //                    }
             //                }
             $planA = explode(',', $plan_user);
             $actualA = explode(',', $actual_user);
             $passFlg = true;
             foreach ($planA as $u) {
                 if ($u && !in_array($u, $actualA)) {
                     $passFlg = false;
                 }
             }
             if ($passFlg) {
                 $finish_flg = 1;
                 $finish_time = $now;
             } else {
                 $finish_flg = 0;
                 $finish_time = null;
             }
         }
         // 审核情况
         $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
     } else {
         if ($pass == 3) {
             // 转审
             $finish_flg = 0;
             if ($method == 2) {
                 // 处理方式为任意时,一个人转审之后其他人员也删除
                 $plan_user = str_replace('E', '', $val->transfer_id);
             } else {
                 // 更改审核情况中的审核人
                 $plan_users = explode(',', $reviewRow['plan_user']);
                 // 审核人不在审核人列表中,并且是管理员,则替换所有人
                 if (!in_array($user, $plan_users) && (Application_Model_User::checkPermissionByRoleName('文件管理员') || Application_Model_User::checkPermissionByRoleName('系统管理员'))) {
                     $plan_users = array(str_replace('E', '', $val->transfer_id));
                 } else {
                     for ($i = 0; $i < count($plan_users); $i++) {
                         if ($plan_users[$i] == $user) {
                             $plan_users[$i] = str_replace('E', '', $val->transfer_id);
                             break;
                         }
                     }
                 }
                 $plan_user = implode(',', $plan_users);
             }
             // 审核情况
             $reviewData = array("plan_user" => $plan_user, "method" => 1);
         } else {
             // 退回
             $actual_user = null;
             $finish_time = null;
             $finish_flg = 0;
             // 退回选项
             $return = $reviewRow['return'];
             if ($return == 2) {
                 // 退到初始状态
                 // 需更新的审核记录: 所有
                 $reviewWhere = "type = 'files' and file_id = {$id}";
                 // 审核情况更新数据
                 $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
                 // 文件状态不更新
             } else {
                 if ($return == 4) {
                     // 退到本阶段开始
                     // 需更新的审核记录
                     $reviewWhere = "type = 'files' and finish_flg = 0 and file_id = {$id}";
                     // 审核情况更新数据
                     $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
                     // 文件状态不更新
                 } else {
                     if ($return == 3) {
                         // 退到上一阶段
                         // 需更新的审核记录:最后一个finish_flg为1的数据和第一个finish_flg为0的数据
                         $last_1 = $first_0 = 0;
                         foreach ($reviewRows as $r) {
                             if ($r['finish_flg'] == 1) {
                                 $last_1 = $r['id'];
                             }
                             if ($r['finish_flg'] == 0 && $first_0 == null) {
                                 $first_0 = $r['id'];
                             }
                         }
                         $reviewWhere = "id = {$last_1} or id = {$first_0}";
                         // 审核情况更新数据
                         $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
                         // 文件状态不更新
                     } else {
                         $fileWhere = "id = {$id}";
                         // 更新文件状态为退回
                         $fileData = array("state" => "Return");
                         // 退到初始状态
                         // 更新所有record的finish_flg为0
                         $reviewWhere = "type = 'files' and file_id = {$id}";
                         // 审核情况
                         $reviewData = array("actual_user" => $actual_user, "finish_time" => $finish_time, "finish_flg" => $finish_flg);
                     }
                 }
             }
         }
     }
     $filesRow = $files->getOne($reviewRow['file_id']);
     // 判断是否需要更新文件
     // 如果所有record的记录的finish_flg 都为1,则发布
     if ($finish_flg == 1 && $review->fetchAll("type = 'files' and finish_flg = 0 and file_id = {$id}")->count() == 1) {
         $publish = true;
         $obsolute = false;
         // 如果是多个文件同时归档,需拆分
         if (strpos($filesRow['code'], ',') !== false) {
             $codes = explode(',', $filesRow['code']);
             $names = explode(',', $filesRow['name']);
             $file_ids = explode(',', $filesRow['file_ids']);
             $vers = explode(',', $filesRow['ver']);
             $description = explode('|', $filesRow['description']);
             $project_info = explode(',', $filesRow['project_info']);
             $ids = array();
             $k = 0;
             for ($i = 0; $i < count($names); $i++) {
                 $ids[] = "";
                 $length = substr_count($names[$i], '|');
                 for ($j = 0; $j <= $length; $j++) {
                     if (isset($ids[$i]) && $ids[$i]) {
                         $ids[$i] .= ',';
                     }
                     $ids[$i] .= $file_ids[$k++];
                 }
             }
             for ($i = 0; $i < count($codes); $i++) {
                 // 更新第一条
                 if ($i == 0) {
                     $data = array("state" => "Active", "code" => $codes[$i], "name" => $names[$i], "file_ids" => $ids[$i], "ver" => $vers[$i], "description" => $description[$i], "project_info" => $project_info[$i], "archive_time" => $now);
                     try {
                         $files->update($data, "id = {$id}");
                         // 如果是升版,登录升版信息
                         if ($vers[$i] > 1.0) {
                             $upgradeTmpData = array("project_no" => $project_info[$i], "description" => $description[$i]);
                             $upgrade->update($upgradeTmpData, "file_id=" . $id);
                         }
                     } catch (Exception $e) {
                         $result['result'] = false;
                         $result['info'] = $e->getMessage();
                         echo Zend_Json::encode($result);
                         exit;
                     }
                 } else {
                     $data = array("state" => "Active", "code" => $codes[$i], "ver" => $vers[$i], "tag" => $filesRow['tag'], "name" => $names[$i], "file_ids" => $ids[$i], "description" => $description[$i], "project_info" => $project_info[$i], "remark" => $filesRow['remark'], "create_time" => $filesRow['create_time'], "update_time" => $filesRow['update_time'], "create_user" => $filesRow['create_user'], "update_user" => $filesRow['update_user'], "archive_time" => $now, "add_flg" => $filesRow['add_flg']);
                     try {
                         $sid = $files->insert($data);
                         // 拆分智能表单数据
                         if ($sid) {
                             $sids[] = $sid;
                             $whereMenu = "oa_doc_files_" . $id;
                             $menus = $formval->getListByMenu($whereMenu);
                             foreach ($menus as $menu) {
                                 $menuData = array("attrid" => $menu['attrid'], "value" => $menu['value'], "menu" => "oa_doc_files_" . $sid);
                                 $formval->insert($menuData);
                             }
                             // 如果是升版,登录升版信息
                             if ($vers[$i] > 1.0) {
                                 $obsolute = true;
                                 $upgradeRow = $upgrade->fetchAll("file_id = {$id}")->toArray();
                                 foreach ($upgradeRow as $row) {
                                     $upgradeTmpData = array("file_id" => $sid, "reason" => $row['reason'], "reason_type" => $row['reason_type'], "project_no" => $project_info[$i], "description" => $description[$i], "create_user" => $row['create_user'], "create_time" => $row['create_time'], "update_user" => $row['update_user'], "update_time" => $row['update_time']);
                                     $upgrade->insert($upgradeTmpData);
                                 }
                             }
                             $recordRow = $record->fetchAll("type='files' and table_name='oa_doc_files' and table_id={$id}")->toArray();
                             foreach ($recordRow as $row) {
                                 // 增加记录
                                 $recordTmpData = array("type" => $row['type'], "table_name" => $row['table_name'], "table_id" => $sid, "handle_user" => $row['handle_user'], "handle_time" => $row['handle_time'], "action" => $row['action'], "result" => $row['result'], "ip" => $row['ip'], "remark" => $row['remark']);
                                 $record->insert($recordTmpData);
                             }
                         }
                     } catch (Exception $e) {
                         $result['result'] = false;
                         $result['info'] = $e->getMessage();
                         echo Zend_Json::encode($result);
                         exit;
                     }
                 }
             }
         }
         $fileData = array("state" => "Active", "archive_time" => $now);
         $fileWhere = "id = {$id}";
         // 更新文件状态为已归档
         $uploadData = array("archive" => 1, "archive_time" => $now);
         $upload = new Dcc_Model_Upload();
         // 获取上传文件id
         $ids = $filesRow['file_ids'];
         $uploadWhere = "id in ({$ids})";
         $upload->update($uploadData, $uploadWhere);
         // 更新旧版文件的状态为已作废
         if (strpos($filesData['ver'], '1.0') === false || $obsolute) {
             if (isset($sids) && count($sids) > 0) {
                 $obsoluteWhere = " id not in (" . implode(',', $sids) . ") and FIND_IN_SET(code, '" . $filesRow['code'] . "')";
             } else {
                 $obsoluteWhere = " FIND_IN_SET(code, '" . $filesRow['code'] . "')";
             }
             $obsoluteData = array("state" => "Obsolete");
         }
     }
     try {
         // 更新审核情况
         $review->update($reviewData, $reviewWhere);
         if (isset($obsoluteData) && isset($obsoluteWhere)) {
             $files->update($obsoluteData, $obsoluteWhere);
         }
         // 更新文件
         if (isset($fileWhere)) {
             $files->update($fileData, $fileWhere);
         }
         $this->operate("文件审批");
     } catch (Exception $e) {
         $result['result'] = false;
         $result['info'] = $e->getMessage();
         echo Zend_Json::encode($result);
         exit;
     }
     // 邮件任务
     // 文件提交者或更新人
     $owner = $filesData['create_user'];
     if ($filesData['create_user'] != $filesData['update_user']) {
         $owner .= "," . $filesData['update_user'];
     }
     $dev = false;
     $type = "新文件";
     if (stripos($filesData['ver'], '1.0') === false) {
         $dev = true;
         $type = "升版文件";
     }
     $content = "<p><b>文件号:</b>" . $filesData['code'] . "</p><p><b>版本:</b>" . $filesData['ver'] . "</p><p><b>文件描述:</b>" . $filesData['description'] . "</p><p><b>备注:</b>" . $filesData['remark'] . "</p><p><b>申请人:</b>" . $filesData['creater'] . "</p><p><b>申请时间:</b>" . $filesData['create_time'] . "</p><p>请登录系统查看详情!</p>";
     // 发邮件的情况:
     // 1、单站审核结束 $finish_flg = 1 && $publish = false
     if ($finish_flg == 1 && !$publish) {
         $subject = $type . "审批";
         // $to = 下一站审核人
         $current = $review->getFirstNoReview("files", $id);
         $to = $employee->getInfosByOneLine($current['plan_user']);
         //
         $cc = $employee->getInfosByOneLine($owner);
         $cc = $cc['email'];
         //$cc = "";
         $content = "你有一个" . $type . "需要审批," . $content;
     }
     // 2、所有审核结束  $publish = true
     if ($publish) {
         $subject = $type . "发布";
         $to = $employee->getInfosByOneLine($owner);
         $cc = $employee->getInfosByOneLine($record->getEmployeeIds($filesData['id'], 'files'));
         $cc = $cc['email'];
         //            $cc = "";
         $content .= "<p><b>审核记录:</b><br>" . str_replace(',', '<br>', $record->getHis($filesData['id'], 'files', 'oa_doc_files')) . "</p>";
         $content = "你申请的" . $type . "已通过审批," . $content;
     }
     // 3、退回 isset($return)
     if (isset($return)) {
         $subject = $type . "退回";
         $to = $employee->getInfosByOneLine($owner);
         $cc = "";
         // 原审核人
         if ($reviewRow['plan_user']) {
             $orgUser = $reviewRow['plan_user'];
             $cc = $employee->getInfosByOneLine($orgUser);
             $cc = $cc['email'];
         }
         $content = "你申请的" . $type . "已被退回,<p><b>退回原因:</b>" . $remark . "</p>" . $content;
     }
     // 4、转审 $pass == 3
     if ($pass == 3) {
         $subject = $type . "转审";
         $toUser = str_replace('E', '', $val->transfer_id);
         $to = $employee->getInfosByOneLine($toUser);
         // 原审核人
         if ($reviewRow['plan_user']) {
             $orgUser = $reviewRow['plan_user'];
             $owner .= "," . $orgUser;
         }
         $cc = $employee->getInfosByOneLine($owner);
         $cc = $cc['email'];
         //             $cc = "";
         $content = "有新的" . $type . "被转移到你处审批:" . $content;
     }
     if (isset($subject)) {
         $mailData = array('type' => $type, 'subject' => $subject, 'to' => $to['email'], 'cc' => $cc, 'content' => $content, 'send_time' => $now, 'add_date' => $now);
         $mail = new Application_Model_Log_Mail();
         try {
             $mailId = $mail->insert($mailData);
         } catch (Exception $e) {
             $result['result'] = false;
             $result['info'] = $e->getMessage();
             echo Zend_Json::encode($result);
             exit;
         }
         if ($mailId) {
             $mail->send($mailId);
         }
     }
     echo Zend_Json::encode($result);
     exit;
 }
Example #19
0
 public function getList($condition = array())
 {
     $data = array();
     $where = "t2.active = 1 and (t1.number like '%" . $condition['key'] . "%' or t2.cname like '%" . $condition['key'] . "%' or t2.ename like '%" . $condition['key'] . "%')";
     $sql = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name))->joinLeft(array('t2' => $this->_dbprefix . 'employee'), "t2.number = t1.number", array('employee_id' => 't2.id', 'cname', 'ename', 'entry_date', 'regularization_date'))->joinLeft(array('t3' => $this->_dbprefix . 'employee_dept'), "t3.id = t2.dept_id", array('dept' => 'name'))->joinLeft(array('t4' => $this->_dbprefix . 'user'), "t1.create_user = t4.id", array())->joinLeft(array('t5' => $this->_dbprefix . 'employee'), "t4.employee_id = t5.id", array('creater' => 'cname'))->joinLeft(array('t6' => $this->_dbprefix . 'user'), "t1.update_user = t6.id", array())->joinLeft(array('t7' => $this->_dbprefix . 'employee'), "t6.employee_id = t7.id", array('updater' => 'cname'))->joinLeft(array('t8' => $this->_dbprefix . 'employee_type'), 't8.id = t2.employment_type', array('employee_type' => 'name'))->where($where)->order(array("t1.number", "t1.in_year_qty desc"));
     if (!Application_Model_User::checkPermissionByRoleName('系统管理员') && !Application_Model_User::checkPermissionByRoleName('人事管理员')) {
         $user_session = new Zend_Session_Namespace('user');
         $user_number = $user_session->user_info['user_number'];
         $sql->where("t1.number = '" . $user_number . "'");
         $sql->limit(1);
     }
     $data = $this->fetchAll($sql)->toArray();
     $dataTmp = array();
     $numberArr = array();
     for ($i = 0; $i < count($data); $i++) {
         if (!in_array($data[$i]['number'], $numberArr)) {
             array_push($numberArr, $data[$i]['number']);
             $data[$i]['create_time'] = strtotime($data[$i]['create_time']);
             $data[$i]['update_time'] = strtotime($data[$i]['update_time']);
             if ($data[$i]['qty'] > 0) {
                 $limit = array();
                 if (strtotime($data[$i]['entry_date']) >= strtotime('2014-10-08')) {
                     $limit = $this->getLimitToDayQty($data[$i]['entry_date'], $data[$i]['in_year_qty']);
                 } else {
                     $limit = $this->getLimitToDayQty($data[$i]['regularization_date'], $data[$i]['in_year_qty']);
                 }
                 $data[$i]['limit_to_qty'] = $limit['qty'];
                 $data[$i]['limit_to_date'] = $limit['date'];
             } else {
                 $data[$i]['limit_to_qty'] = '';
             }
             $data[$i]['qty_left'] = $data[$i]['qty'] - $data[$i]['qty_used'];
             array_push($dataTmp, $data[$i]);
         }
     }
     $data = $dataTmp;
     if ($condition['type'] == 'csv') {
         $data_csv = array();
         $title = array('cnt' => '#', 'number' => '工号', 'dept' => '部门', 'cname' => '中文名', 'ename' => '英文名', 'regularization_date' => '转正日期', 'in_year_qty' => '入司年数', 'qty' => '年假天数', 'qty_used' => '已使用天数', 'qty_left' => '剩余天数', 'limit_to_qty' => '有效期限', 'remark' => '备注', 'create_user' => '创建人', 'create_time' => '创建时间', 'update_user' => '更新人', 'update_time' => '更新时间');
         array_push($data_csv, $title);
         $i = 0;
         foreach ($data as $d) {
             $i++;
             $info = array('cnt' => $i, 'number' => $d['number'], 'dept' => $d['dept'], 'cname' => $d['cname'], 'ename' => $d['ename'], 'regularization_date' => $d['regularization_date'], 'in_year_qty' => $d['in_year_qty'], 'qty' => $d['qty'], 'qty_used' => $d['qty_used'], 'qty_left' => $d['qty_left'], 'limit_to_qty' => $d['limit_to_qty'], 'remark' => $d['remark'], 'create_user' => $d['create_user'], 'create_time' => date('Y-m-d H:i:s', $d['create_time']), 'update_user' => $d['update_user'], 'update_time' => date('Y-m-d H:i:s', $d['update_time']));
             array_push($data_csv, $info);
         }
         return $data_csv;
     }
     return $data;
 }
Example #20
0
 public function getOrderStatistics($condition = array())
 {
     $sql = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name), array('order_price_tax' => 'price_tax', 'order_state' => new Zend_Db_Expr("case when t1.state = 0 then '审核中' when t1.state = 1 then '拒绝' else '批准' end"), 'order_create_time' => 'create_time', 'order_release_time' => 'release_time', 'order_buyer_id' => 'buyer_id', 'order_supplier_id' => 'supplier_id', 'order_date', 'order_number' => 'number', 'order_remark' => 'remark', 'order_currency' => 'currency', 'order_type_id' => 'type_id'))->joinLeft(array('t2' => $this->_dbprefix . 'user'), "t1.create_user = t2.id", array())->joinLeft(array('t3' => $this->_dbprefix . 'employee'), "t2.employee_id = t3.id", array('creater' => 'cname'))->joinLeft(array('t4' => $this->_dbprefix . 'user'), "t1.update_user = t4.id", array())->joinLeft(array('t5' => $this->_dbprefix . 'employee'), "t4.employee_id = t5.id", array('updater' => 'cname'))->joinLeft(array('t7' => $this->_dbprefix . 'erp_pur_type'), "t1.type_id = t7.id", array('order_type_name' => 'name'))->joinLeft(array('t8' => $this->_dbprefix . 'erp_pur_order_items'), "t1.id = t8.order_id", array('delivery_date', 'delivery_date_remark', 'active', 'id', 'order_id', 'request_date', 'code', 'name', 'description', 'remark', 'supplier_code', 'supplier_codename', 'supplier_description', 'warehouse_code', 'price', 'qty', 'unit', 'project_info', 'req_number'))->joinLeft(array('t9' => $this->_dbprefix . 'bpartner'), "t1.supplier_id = t9.id", array('order_supplier_code' => 'code', 'order_supplier_name' => new Zend_Db_Expr("case when t9.cname != '' then t9.cname else t9.ename end")))->joinLeft(array('t10' => $this->_dbprefix . 'bpartner_contact'), "t1.supplier_contact_id = t10.id", array('order_supplier_contact' => new Zend_Db_Expr("concat(t10.name, ' [', t10.tel, ']')")))->joinLeft(array('t11' => $this->_dbprefix . 'erp_pur_order_items_req'), "t11.order_item_id = t8.id", array('req_item_ids' => new Zend_Db_Expr("group_concat(t11.req_item_id)")))->joinLeft(array('t12' => $this->_dbprefix . 'erp_pur_req_items'), "t12.id = t11.req_item_id", array('qty_req' => new Zend_Db_Expr('sum(t12.qty)'), 'order_req_num', 'customer_address', 'customer_aggrement'))->where("t1.active = 1")->group("t8.id")->order(array('t1.number desc', 't1.create_time desc'));
     // 状态
     if ($condition['state'] != null) {
         $sql->where("t1.state = " . $condition['state']);
     }
     // 日前从
     if ($condition['date_from']) {
         $sql->where("t1.create_time >= '" . $condition['date_from'] . " 00:00:00'");
     }
     // 日期至
     if ($condition['date_to']) {
         $sql->where("t1.create_time <= '" . $condition['date_to'] . " 23:59:59'");
     }
     // 采购类别
     if ($condition['type']) {
         $type = json_decode($condition['type']);
         if (count($type)) {
             $type_con = "t1.type_id = " . $type[0];
             for ($i = 1; $i < count($type); $i++) {
                 $type_con .= " or t1.type_id = " . $type[$i];
             }
             $sql->where($type_con);
         }
     }
     // 需求部门
     if ($condition['dept']) {
         $dept = json_decode($condition['dept']);
         if (count($dept)) {
             $dept_con = "t8.dept_id = " . $dept[0];
             for ($i = 1; $i < count($dept); $i++) {
                 $dept_con .= " or t8.dept_id = " . $dept[$i];
             }
             $sql->where($dept_con);
         }
     }
     // 采购员
     if ($condition['buyer']) {
         $buyer = json_decode($condition['buyer']);
         if (count($buyer)) {
             $buyer_con = "t1.buyer_id = " . $buyer[0];
             for ($i = 1; $i < count($buyer); $i++) {
                 $buyer_con .= " or t1.buyer_id = " . $buyer[$i];
             }
             $sql->where($buyer_con);
         }
     }
     if ($condition['key']) {
         $sql->where("t9.code like '%" . $condition['key'] . "%' or t9.cname like '%" . $condition['key'] . "%' or t9.ename like '%" . $condition['key'] . "%' or t3.cname like '%" . $condition['key'] . "%' or t3.ename like '%" . $condition['key'] . "%' or t1.number like '%" . $condition['key'] . "%' or t1.remark like '%" . $condition['key'] . "%' or t3.cname like '%" . $condition['key'] . "%' or t3.ename like '%" . $condition['key'] . "%' or t7.name like '%" . $condition['key'] . "%' or t8.code like '%" . $condition['key'] . "%' or t8.name like '%" . $condition['key'] . "%' or t8.description like '%" . $condition['key'] . "%'");
     }
     $total = $this->fetchAll($sql)->count();
     /* echo $sql;
        exit; */
     if ($condition['option'] != 'csv') {
         $sql->limitPage($condition['page'], $condition['limit']);
     }
     $data = $this->fetchAll($sql)->toArray();
     //echo '<pre>';print_r($data);exit;
     $items_receive = new Erp_Model_Purchse_Receiveitemsorder();
     $items_invoice = new Erp_Model_Purchse_Invoiceitems();
     $buyer = new Erp_Model_Purchse_Buyer();
     $req = new Erp_Model_Purchse_Req();
     $operateModel = new Application_Model_Log_Operate();
     $receiveModel = new Erp_Model_Purchse_Reqitemsreceived();
     for ($i = 0; $i < count($data); $i++) {
         // 入库日志
         $in_stock_info = $receiveModel->getReceivedInfo('order', $data[$i]['id']);
         $data[$i]['in_stock_qty'] = $in_stock_info['qty'];
         $data[$i]['in_stock_info'] = implode(',', $in_stock_info['info']);
         // 交期回复日志
         if ($data[$i]['delivery_date'] != '' || $data[$i]['delivery_date_remark'] != '') {
             $logInfo = array();
             $log = $operateModel->getLogByOperateAndTargetId('采购交期回复', $data[$i]['id']);
             foreach ($log as $l) {
                 $content = Zend_Json::decode($l['content']);
                 $logText = $content['time'] . ' [' . $content['delivery_date'] . '] [' . $content['delivery_date_remark'] . '] ' . $content['user'];
                 array_push($logInfo, $logText);
             }
             $data[$i]['delivery_reply_log'] = implode(',', $logInfo);
         }
         // 获取采购申请数量(合并下单的申请分拆显示)
         $data[$i]['req_info'] = '';
         if ($data[$i]['req_item_ids'] != '') {
             $item_ids = explode(',', $data[$i]['req_item_ids']);
             $req_item_data = $req->getReqQty($item_ids);
             $reqInfoArr = array();
             foreach ($req_item_data as $req_info) {
                 array_push($reqInfoArr, $req_info['number'] . ' [' . $req_info['qty'] . '] [' . $req_info['time'] . ']');
             }
             $data[$i]['req_info'] = implode(',', $reqInfoArr);
         }
         $data[$i]['order_supplier'] = $data[$i]['order_supplier_code'] . $data[$i]['order_supplier_name'];
         $data[$i]['qty_receive'] = 0;
         $data[$i]['receive_info'] = '';
         if ($data[$i]['id']) {
             if ($data[$i]['code'] != '') {
                 // 已收货物料:从采购收货
                 $receiveData = $items_receive->getOrderItemReceivedQty($data[$i]['id']);
                 $receiveInfoArr = array();
                 foreach ($receiveData as $r) {
                     $data[$i]['qty_receive'] += $r['qty'];
                     array_push($receiveInfoArr, $r['number'] . ' [' . $r['qty'] . '] [' . $r['time'] . ']');
                 }
                 $data[$i]['receive_info'] = implode(',', $receiveInfoArr);
             } else {
                 // 已收货非物料:从采购发票
                 $data[$i]['qty_receive'] = $items_invoice->getQty($data[$i]['id'], 1);
             }
         }
         $data[$i]['qty_left'] = $data[$i]['qty'] - $data[$i]['qty_receive'];
         $buyerData = $buyer->getData($data[$i]['order_buyer_id']);
         $data[$i]['order_buyer_name'] = isset($buyerData['cname']) ? $buyerData['cname'] : '';
     }
     if ($condition['option'] == 'csv') {
         $data_csv = array();
         $showPrice = false;
         if (Application_Model_User::checkPermissionByRoleName('系统管理员') || Application_Model_User::checkPermissionByRoleName('采购人员') || Application_Model_User::checkPermissionByRoleName('财务人员')) {
             $showPrice = true;
         }
         if ($showPrice) {
             $title = array('cnt' => '#', 'active' => '启用', 'order_number' => '订单号', 'order_state' => '订单状态', 'order_date' => '订单日期', 'order_buyer_name' => '采购员', 'order_type_name' => '类别', 'order_supplier_code' => '供应商代码', 'order_supplier_name' => '供应商名称', 'code' => '物料号', 'price' => '价格', 'order_price_tax' => '含税', 'qty' => '订单数量', 'qty_req' => '申请数量', 'qty_receive' => '到货数量', 'receive_info' => '到货信息', 'in_stock_qty' => '入库数量', 'in_stock_info' => '入库信息', 'qty_left' => '未到货数量', 'request_date' => '需求交期', 'delivery_date' => '预计交期', 'delivery_date_remark' => '交期备注', 'order_req_num' => '订货产品出库申请号', 'customer_address' => '客户收件人地址简码', 'customer_aggrement' => '客户合同号', 'name' => '名称', 'description' => '描述', 'req_info' => '申购单号', 'remark' => '备注', 'order_create_date' => '下单日期', 'order_create_time' => '下单时间', 'order_release_date' => '批准日期', 'order_release_time' => '批准时间');
         } else {
             $title = array('cnt' => '#', 'active' => '启用', 'order_number' => '订单号', 'order_state' => '订单状态', 'order_date' => '订单日期', 'order_buyer_name' => '采购员', 'order_type_name' => '类别', 'order_supplier_code' => '供应商代码', 'order_supplier_name' => '供应商名称', 'code' => '物料号', 'qty' => '订单数量', 'qty_req' => '申请数量', 'qty_receive' => '到货数量', 'receive_info' => '到货信息', 'in_stock_qty' => '入库数量', 'in_stock_info' => '入库信息', 'qty_left' => '未到货数量', 'request_date' => '需求交期', 'delivery_date' => '预计交期', 'delivery_date_remark' => '交期备注', 'order_req_num' => '订货产品出库申请号', 'customer_address' => '客户收件人地址简码', 'customer_aggrement' => '客户合同号', 'name' => '名称', 'description' => '描述', 'req_info' => '申购单号', 'remark' => '备注', 'order_create_date' => '下单日期', 'order_create_time' => '下单时间', 'order_release_date' => '批准日期', 'order_release_time' => '批准时间');
         }
         array_push($data_csv, $title);
         $i = 0;
         foreach ($data as $d) {
             $i++;
             if ($showPrice) {
                 $info = array('cnt' => $i, 'active' => $d['active'] == 1 ? '是' : '否', 'order_number' => $d['order_number'], 'order_state' => $d['order_state'], 'order_date' => $d['order_date'], 'order_buyer_name' => $d['order_buyer_name'], 'order_type_name' => $d['order_type_name'], 'order_supplier_code' => $d['order_supplier_code'], 'order_supplier_name' => $d['order_supplier_name'], 'code' => $d['code'], 'price' => $d['price'], 'order_price_tax' => $d['order_price_tax'] == 1 ? '是' : '否', 'qty' => $d['qty'], 'qty_req' => $d['qty_req'], 'qty_receive' => $d['qty_receive'], 'receive_info' => $d['receive_info'], 'in_stock_qty' => $d['in_stock_qty'], 'in_stock_info' => $d['in_stock_info'], 'qty_left' => $d['qty_left'], 'request_date' => $d['request_date'], 'delivery_date' => $d['delivery_date'], 'delivery_date_remark' => $d['delivery_date_remark'], 'order_req_num' => $d['order_req_num'], 'customer_address' => $d['customer_address'], 'customer_aggrement' => $d['customer_aggrement'], 'name' => $d['name'], 'description' => $d['description'], 'req_info' => $d['req_info'], 'remark' => $d['remark'], 'order_create_date' => $d['order_create_time'] != '' ? date('Y-m-d', strtotime($d['order_create_time'])) : '', 'order_create_time' => $d['order_create_time'] != '' ? date('H:i:s', strtotime($d['order_create_time'])) : '', 'order_release_date' => $d['order_release_time'] != '' ? date('Y-m-d', strtotime($d['order_release_time'])) : '', 'order_release_time' => $d['order_release_time'] != '' ? date('H:i:s', strtotime($d['order_release_time'])) : '');
             } else {
                 $info = array('cnt' => $i, 'active' => $d['active'] == 1 ? '是' : '否', 'order_number' => $d['order_number'], 'order_state' => $d['order_state'], 'order_date' => $d['order_date'], 'order_buyer_name' => $d['order_buyer_name'], 'order_type_name' => $d['order_type_name'], 'order_supplier_code' => $d['order_supplier_code'], 'order_supplier_name' => $d['order_supplier_name'], 'code' => $d['code'], 'qty' => $d['qty'], 'qty_req' => $d['qty_req'], 'qty_receive' => $d['qty_receive'], 'receive_info' => $d['receive_info'], 'in_stock_qty' => $d['in_stock_qty'], 'in_stock_qty' => $d['in_stock_info'], 'qty_left' => $d['qty_left'], 'request_date' => $d['request_date'], 'delivery_date' => $d['delivery_date'], 'delivery_date_remark' => $d['delivery_date_remark'], 'order_req_num' => $d['order_req_num'], 'customer_address' => $d['customer_address'], 'customer_aggrement' => $d['customer_aggrement'], 'name' => $d['name'], 'description' => $d['description'], 'req_info' => $d['req_info'], 'remark' => $d['remark'], 'order_create_date' => $d['order_create_time'] != '' ? date('Y-m-d', strtotime($d['order_create_time'])) : '', 'order_create_time' => $d['order_create_time'] != '' ? date('H:i:s', strtotime($d['order_create_time'])) : '', 'order_release_date' => $d['order_release_time'] != '' ? date('Y-m-d', strtotime($d['order_release_time'])) : '', 'order_release_time' => $d['order_release_time'] != '' ? date('H:i:s', strtotime($d['order_release_time'])) : '');
             }
             array_push($data_csv, $info);
         }
         return $data_csv;
     }
     return array('total' => $total, 'rows' => $data);
 }