/** * 保存采购申请表体 */ public function edititemsAction() { // 返回值数组 $result = array('success' => true, 'info' => '编辑成功'); $request = $this->getRequest()->getParams(); $type = isset($request['operate']) ? $request['operate'] : ''; // 操作类别 $typeArr = array('new' => '新建', 'edit' => '修改', 'transfer' => '变更'); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user_id = $user_session->user_info['user_id']; $json = json_decode($request['json']); $req_id = $json->req_id; $transfer_id = $json->transfer_id; $json_items = $json->items; $items_updated = $json_items->updated; $items_inserted = $json_items->inserted; $items_deleted = $json_items->deleted; $items = new Erp_Model_Purchse_Reqitems(); $transfer_items = new Erp_Model_Purchse_Transferreqitems(); // 更新 if (count($items_updated) > 0) { foreach ($items_updated as $val) { $active = $val->items_active ? 1 : 0; $line_total = round($val->items_qty * $val->items_price, 2); $data = array('active' => $active, 'code' => $val->items_code, 'name' => $val->items_name, 'description' => $val->items_description, 'qty' => $val->items_qty, 'unit' => $val->items_unit, 'price' => $val->items_price, 'line_total' => $line_total, 'date_req' => $val->items_date_req, 'supplier' => $val->items_supplier, 'dept_id' => $val->items_dept_id, 'model' => $val->items_model, 'project_info' => $val->items_project_info, 'order_req_num' => $val->items_order_req_num, 'customer_address' => $val->items_customer_address, 'customer_aggrement' => $val->items_customer_aggrement, 'remark' => $val->items_remark); try { if ($type == 'transfer') { $data['req_id'] = $req_id; $data['transfer_id'] = $transfer_id; $data['req_item_id'] = $val->items_id; $data['transfer_type'] = 'update'; $transfer_items->insert($data); } else { $data['update_user'] = $user_id; $data['update_time'] = $now; $items->update($data, "id = " . $val->items_id); } } catch (Exception $e) { $result['success'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } } // 插入 if (count($items_inserted) > 0) { foreach ($items_inserted as $val) { $active = $val->items_active ? 1 : 0; $line_total = round($val->items_qty * $val->items_price, 2); $data = array('req_id' => $req_id, 'active' => $active, 'code' => $val->items_code, 'name' => $val->items_name, 'description' => $val->items_description, 'qty' => $val->items_qty, 'unit' => $val->items_unit, 'price' => $val->items_price, 'line_total' => $line_total, 'date_req' => $val->items_date_req, 'supplier' => $val->items_supplier, 'dept_id' => $val->items_dept_id, 'model' => $val->items_model, 'project_info' => $val->items_project_info, 'order_req_num' => $val->items_order_req_num, 'customer_address' => $val->items_customer_address, 'customer_aggrement' => $val->items_customer_aggrement, 'remark' => $val->items_remark); try { if ($type == 'transfer') { $data['transfer_id'] = $transfer_id; $data['req_item_id'] = $val->items_id; $data['transfer_type'] = 'add'; $transfer_items->insert($data); } else { $data['create_user'] = $user_id; $data['create_time'] = $now; $data['update_user'] = $user_id; $data['update_time'] = $now; $items->insert($data); } } catch (Exception $e) { $result['success'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } } // 删除 if (count($items_deleted) > 0) { foreach ($items_deleted as $val) { try { if ($type == 'transfer') { $active = $val->items_active ? 1 : 0; $line_total = round($val->items_qty * $val->items_price, 2); $data = array('req_id' => $req_id, 'transfer_type' => 'delete', 'transfer_id' => $transfer_id, 'req_item_id' => $val->items_id, 'active' => $active, 'code' => $val->items_code, 'name' => $val->items_name, 'description' => $val->items_description, 'qty' => $val->items_qty, 'unit' => $val->items_unit, 'price' => $val->items_price, 'line_total' => $line_total, 'date_req' => $val->items_date_req, 'supplier' => $val->items_supplier, 'dept_id' => $val->items_dept_id, 'model' => $val->items_model, 'project_info' => $val->items_project_info, 'order_req_num' => $val->items_order_req_num, 'customer_address' => $val->items_customer_address, 'customer_aggrement' => $val->items_customer_aggrement, 'remark' => $val->items_remark); $transfer_items->insert($data); } else { $items->delete("id = " . $val->items_id); } } catch (Exception $e) { $result['success'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } } // 更新采购申请总计 if ($type != 'transfer') { $items->refreshReqTotal($req_id); } $req = new Erp_Model_Purchse_Req(); $req_data = $req->getData(null, $req_id); // 保存成功,进入审批流程 if ($result['success'] && $req_data['hand'] == 0) { // 根据流程ID获取阶段信息 $flow = new Admin_Model_Flow(); $flowData = $flow->fetchRow("id = " . $req_data['req_flow_id'])->toArray(); // 获取审核阶段 $step = new Admin_Model_Step(); $stepIds = $flowData['step_ids']; $stepArr = explode(',', $stepIds); $review = new Dcc_Model_Review(); $review->delete("type = 'purchse_req_add' and file_id = " . $req_id); $mailTo = null; $i = 0; $help = new Application_Model_Helpers(); // 根据阶段信息初始化审批流程,并向第一阶段审核人发送邮件 foreach ($stepArr as $s) { $stepData = $step->fetchRow("id = " . $s)->toArray(); $step_user = $stepData['user'] != '' ? $stepData['user'] : null; $step_role = $stepData['dept'] != '' ? $stepData['dept'] : null; $employeeArr = $help->getReviewEmployee($step_user, $step_role); $employeeIdArr = $employeeArr['id']; $employeeIds = implode(',', $employeeIdArr); $reviewData = array('type' => 'purchse_req_add', 'file_id' => $req_id, 'step_name' => $stepData['step_name'], 'plan_user' => $employeeIds, 'plan_dept' => $step_role, 'method' => $stepData['method'], 'return' => $stepData['return']); $review->insert($reviewData); // 第一阶段发送邮件通知 if ($i == 0) { $mailTo = $employeeIdArr; } $i++; } if ($mailTo) { $mailContent = '<div>采购申请 - ' . $typeArr[$type] . ',请登录系统查看:</div> <div> <p><b>申请单号:</b>' . $req_data['number'] . '</p> <p><b>申请部门:</b>' . $req_data['dept'] . '</p> <p><b>申请人:</b>' . $req_data['apply_user_name'] . '</p> <p><b>制单人:</b>' . $user_session->user_info['user_name'] . '</p> <p><b>类别:</b>' . $req_data['type'] . '</p> <p><b>事由:</b>' . $req_data['reason'] . '</p> <p><b>金额:</b><a style="color: #467500;font-weight: bold;">¥' . round($req_data['total'], 2) . '</a></p> <p><b>备注:</b>' . $req_data['remark'] . '</p> <p><b>制单时间:</b>' . $req_data['create_time'] . '</p> <p><b>更新时间:</b>' . $req_data['update_time'] . '</p> </div><hr>'; $transferContent = ''; if ($type == 'transfer') { $transferContent .= '<hr><div><style type="text/css"> table.gridtable { font-family: verdana,arial,sans-serif; font-size:12px; color:#333333; border-width: 1px; border-color: #666666; border-collapse: collapse; } table.gridtable th { border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #dedede; } table.gridtable td { border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #ffffff; } .delete{ text-decoration: line-through; color: #FF0000; } .update{ font-weight: bold; color: #000093; } .inactive{ font-weight: bold; color: #999999; } </style><table class="gridtable"> <tr> <th>#</th> <th>操作类别</th> <th>启用</th> <th>物料号</th> <th>名称</th> <th>描述</th> <th>数量</th> <th>已下单</th> <th>需求日期</th> <th>项目信息</th> <th>订货产品出库申请号</th> <th>客户收件人地址简码</th> <th>客户合同号</th> <th>备注</th> </tr>'; $i = 1; foreach ($items_inserted as $val) { $active = $val->items_active ? '是' : '否'; $transferContent .= '<tr> <td>' . $i . '</td> <td>新增</td> <td>' . $active . '</td> <td>' . $val->items_code . '</td> <td>' . $val->items_name . '</td> <td>' . $val->items_description . '</td> <td>' . $val->items_qty . '</td> <td>0</td> <td>' . date('Y-m-d', strtotime($val->items_date_req)) . '</td> <td>' . $val->items_project_info . '</td> <td>' . $val->items_order_req_num . '</td> <td>' . $val->items_customer_address . '</td> <td>' . $val->items_customer_aggrement . '</td> <td>' . $val->items_remark . '</td> </tr>'; $i++; } foreach ($items_updated as $val) { $tr = '<tr>'; if (!$val->items_active) { $tr = '<tr class="inactive">'; } else { $tr = '<tr class="update">'; } $active = $val->items_active ? '是' : '否'; $transferContent .= $tr . ' <td>' . $i . '</td> <td>更新</td> <td>' . $active . '</td> <td>' . $val->items_code . '</td> <td>' . $val->items_name . '</td> <td>' . $val->items_description . '</td> <td>' . $val->items_qty . '</td> <td>' . $val->items_qty_order . '</td> <td>' . $val->items_date_req . '</td> <td>' . $val->items_project_info . '</td> <td>' . $val->items_order_req_num . '</td> <td>' . $val->items_customer_address . '</td> <td>' . $val->items_customer_aggrement . '</td> <td>' . $val->items_remark . '</td> </tr>'; $i++; } foreach ($items_deleted as $val) { $active = $val->items_active ? '是' : '否'; $transferContent .= '<tr class="delete"> <td>' . $i . '</td> <td>删除</td> <td>' . $active . '</td> <td>' . $val->items_code . '</td> <td>' . $val->items_name . '</td> <td>' . $val->items_description . '</td> <td>' . $val->items_qty . '</td> <td>0</td> <td>' . $val->items_date_req . '</td> <td>' . $val->items_project_info . '</td> <td>' . $val->items_order_req_num . '</td> <td>' . $val->items_customer_address . '</td> <td>' . $val->items_customer_aggrement . '</td> <td>' . $val->items_remark . '</td> </tr>'; $i++; } $transferContent .= '</table></div>'; } if ($transferContent != '') { $transfer = new Erp_Model_Purchse_Transfer(); $transfer->update(array('transfer_content' => $transferContent), "id = " . $transfer_id); } $mailData = array('type' => '消息', 'subject' => '采购申请-' . $typeArr[$type], 'cc' => $user_session->user_info['user_email'], 'content' => $mailContent . $transferContent, 'add_date' => $now); $result = $help->sendMailToStep($mailTo, $mailData); } } echo Zend_Json::encode($result); exit; }