Пример #1
0
    /**
     * 保存采购申请表体
     */
    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;
    }