Ejemplo n.º 1
0
    public function editAction()
    {
        $result = array('success' => true, 'info' => '');
        $request = $this->getRequest()->getParams();
        $data = isset($request['data']) ? Zend_Json::decode($request['data']) : null;
        //echo '<pre>';print_r($data);exit;
        if ($data) {
            $priceModel = new Erp_Model_Sale_Price();
            $priceItemsModel = new Erp_Model_Sale_Priceitems();
            $priceLadderModel = new Erp_Model_Sale_Priceitemladder();
            $partnerModel = new Erp_Model_Partner();
            $price_id = $data['id'];
            $now = date('Y-m-d H:i:s');
            $user_session = new Zend_Session_Namespace('user');
            $user_id = $user_session->user_info['user_id'];
            $taxData = $partnerModel->getTaxInfo($data['customer_id']);
            //echo '<pre>';print_r(Zend_Json::decode($data['items']['inserted'][1]['items_ladder']));exit;
            $priceData = array('price_date' => $data['price_date'], 'customer_id' => $data['customer_id'], 'currency' => $data['currency'], 'price_tax' => $data['price_tax'], 'tax_id' => $taxData['id'], 'description' => $data['description'], 'remark' => $data['remark'], 'update_user' => $user_id, 'update_time' => $now);
            if ($data['operate'] == 'new') {
                $priceData['number'] = $priceModel->getNewNum();
                $priceData['create_user'] = $user_id;
                $priceData['create_time'] = $now;
                try {
                    $price_id = $priceModel->insert($priceData);
                } catch (Exception $e) {
                    $result['success'] = false;
                    $result['info'] = $e->getMessage();
                    echo Zend_Json::encode($result);
                    exit;
                }
            } else {
                $priceData['state'] = 0;
                $priceData['update_user'] = $user_id;
                $priceData['update_time'] = $now;
                try {
                    $priceModel->update($priceData, "id = " . $price_id);
                } catch (Exception $e) {
                    $result['success'] = false;
                    $result['info'] = $e->getMessage();
                    echo Zend_Json::encode($result);
                    exit;
                }
            }
            if ($result['success']) {
                // 插入
                foreach ($data['items']['inserted'] as $item) {
                    $insertData = array('customer_id' => $data['customer_id'], 'type' => $item['items_type'], 'currency' => $data['currency'], 'price_id' => $price_id, 'active_date' => $item['items_active_date'], 'code' => $item['items_code'], 'price_start' => $item['items_price_start'], 'price_final' => $item['items_price_final'], 'remark' => $item['items_remark'], 'customer_code' => $item['items_customer_code'], 'customer_description' => $item['items_customer_description'], 'name' => $item['items_name'], 'description' => $item['items_description'], 'product_type' => $item['items_product_type'], 'product_series' => $item['items_product_series'], 'remark' => $item['items_remark']);
                    try {
                        $item_id = $priceItemsModel->insert($insertData);
                    } catch (Exception $e) {
                        $result['success'] = false;
                        $result['info'] = $e->getMessage();
                        echo Zend_Json::encode($result);
                        exit;
                    }
                    if ($result['success'] && $item['items_ladder'] != '') {
                        $ladderData = Zend_Json::decode($item['items_ladder']);
                        foreach ($ladderData as $ld) {
                            $ld['item_id'] = $item_id;
                            $priceLadderModel->insert($ld);
                        }
                    }
                }
                // 表体处理
                if ($data['operate'] == 'edit') {
                    foreach ($data['items']['updated'] as $item) {
                        $updateData = array('type' => $item['items_type'], 'currency' => $data['currency'], 'active_date' => $item['items_active_date'], 'code' => $item['items_code'], 'name' => $item['items_name'], 'description' => $item['items_description'], 'customer_code' => $item['items_customer_code'], 'customer_description' => $item['items_customer_description'], 'price_start' => $item['items_price_start'], 'price_final' => $item['items_price_final'], 'product_type' => $item['items_product_type'], 'product_series' => $item['items_product_series'], 'remark' => $item['items_remark']);
                        try {
                            $priceItemsModel->update($updateData, "id = " . $item['items_id']);
                        } catch (Exception $e) {
                            $result['success'] = false;
                            $result['info'] = $e->getMessage();
                            echo Zend_Json::encode($result);
                            exit;
                        }
                        $item_id = $item['items_id'];
                        if ($result['success'] && $item['items_ladder'] != '') {
                            $priceLadderModel->delete("item_id = " . $item_id);
                            $ladderData = Zend_Json::decode($item['items_ladder']);
                            foreach ($ladderData as $ld) {
                                $ld['item_id'] = $item_id;
                                $priceLadderModel->insert($ld);
                            }
                        }
                    }
                    foreach ($data['items']['deleted'] as $item) {
                        try {
                            $priceItemsModel->delete("id = " . $item['items_id']);
                        } catch (Exception $e) {
                            $result['success'] = false;
                            $result['info'] = $e->getMessage();
                            echo Zend_Json::encode($result);
                            exit;
                        }
                        if ($result['success'] && $item['ladder'] != '') {
                            $priceLadderModel->delete("item_id = " . $item_id);
                        }
                    }
                }
                // 进入审核流程
                $flow = new Admin_Model_Flow();
                $flowData = $flow->fetchRow("flow_name = '销售价格清单审核'")->toArray();
                // 获取审核阶段
                $step = new Admin_Model_Step();
                $stepIds = $flowData['step_ids'];
                $stepArr = explode(',', $stepIds);
                $review = new Dcc_Model_Review();
                $review->delete("type = 'sale_price_add' and file_id = " . $price_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' => 'sale_price_add', 'file_id' => $price_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) {
                    $customerInfo = $partnerModel->getInfoById($data['customer_id']);
                    $customerName = $customerInfo['cname'] ? $customerInfo['cname'] : $customerInfo['ename'];
                    $priceData = $priceModel->getData(null, $price_id);
                    $mailContent = '<div>销售价格申请,请登录系统查看:</div>
                            <div>
                            <p><b>申请单号:</b>' . $priceData['number'] . '</p>
                            <p><b>客户代码:</b>' . $customerInfo['code'] . '</p>
                            <p><b>客户名称:</b>' . $customerName . '</p>
                            <p><b>申请人:</b>' . $user_session->user_info['user_name'] . '</p>
                            <p><b>描述:</b>' . $data['description'] . '</p>
                            <p><b>备注:</b>' . $data['remark'] . '</p>
                            <p><b>提交时间:</b>' . $now . '</p>
                            </div><hr>';
                    $itemsContent = '<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>
                            </tr>';
                    $itemsData = $priceItemsModel->getItems($price_id);
                    $i = 0;
                    foreach ($itemsData as $item) {
                        $i++;
                        $itemType = $item['items_type'] == 'catalog' ? '内部型号' : '物料号';
                        $itemsContent .= '<tr>
                            <td>' . $i . '</td>
                            <td>' . $itemType . '</td>
                            <td>' . $item['items_code'] . '</td>
                            <td>' . $item['items_name'] . '</td>
                            <td>' . $item['items_product_type'] . '</td>
                            <td>' . $item['items_product_series'] . '</td>
                            <td>' . $item['items_description'] . '</td>
                            <td>' . $item['items_customer_code'] . '</td>
                            <td>' . $item['items_customer_description'] . '</td>
                            <td>' . $item['items_price_start'] . '</td>
                            <td>' . $item['items_price_final'] . '</td>
                            <td>' . $item['items_active_date'] . '</td>
                            <td>' . $item['items_remark'] . '</td>
                            </tr>';
                    }
                    $itemsContent .= '</table></div>';
                    $mailData = array('type' => '消息', 'subject' => '销售价格清单申请', 'cc' => $user_session->user_info['user_email'], 'content' => $mailContent . $itemsContent, 'add_date' => $now);
                    $result = $help->sendMailToStep($mailTo, $mailData);
                }
            }
        } else {
            $result['success'] = false;
            $result['info'] = '参数错误';
        }
        echo Zend_Json::encode($result);
        exit;
    }
Ejemplo n.º 2
0
 public function getItems($price_id)
 {
     $items = array();
     $data = $this->fetchAll("price_id = " . $price_id)->toArray();
     $ladderModel = new Erp_Model_Sale_Priceitemladder();
     foreach ($data as $d) {
         $ladder = $ladderModel->getLadder($d['id']);
         $itemsLadder = count($ladder) > 0 ? Zend_Json::encode($ladder) : '';
         array_push($items, array('items_id' => $d['id'], 'items_price_id' => $d['price_id'], 'items_type' => $d['type'], 'items_code' => $d['code'], 'items_name' => $d['name'], 'items_description' => $d['description'], 'items_customer_code' => $d['customer_code'], 'items_customer_description' => $d['customer_description'], 'items_unit' => $d['unit'], 'items_price_start' => $d['price_start'], 'items_price_final' => $d['price_final'], 'items_remark' => $d['remark'], 'items_product_type' => $d['product_type'], 'items_product_series' => $d['product_series'], 'items_active_date' => $d['active_date'], 'items_ladder' => $itemsLadder));
     }
     return $items;
 }