Exemple #1
0
 /**
  * 编辑采购申请(新建、更新、删除)
  */
 public function editorderAction()
 {
     // 返回值数组
     $result = array('success' => true, 'info' => '编辑成功', 'order_id' => 0, 'transfer_id' => 0);
     $request = $this->getRequest()->getParams();
     $typeArr = array('new' => '新建', 'edit' => '修改', 'transfer' => '变更');
     /* $result['success'] = false;
         echo '<pre>';
        print_r($request);
        exit; */
     // 操作类别(新建、更新、删除)
     $type = isset($request['operate']) ? $request['operate'] : '';
     if ($type == 'new' || $type == 'edit' || $type == 'transfer') {
         $now = date('Y-m-d H:i:s');
         $user_session = new Zend_Session_Namespace('user');
         $user_id = $user_session->user_info['user_id'];
         $order = new Erp_Model_Purchse_Order();
         $partner = new Erp_Model_Partner();
         $setting = new Erp_Model_Setting_Currencyrate();
         $price_tax = isset($request['price_tax']) ? $request['price_tax'] : null;
         $price_tax = $price_tax == 'on' ? 1 : 0;
         $tax = $partner->getTaxInfo($request['supplier_id']);
         $currency_rate = $setting->getCurrentRateByCode($request['currency']);
         $hand = 0;
         if (isset($request['hand']) && $request['hand'] == 'on') {
             $hand = 1;
         }
         $data = array('company' => $request['company'], 'currency' => $request['currency'], 'currency_rate' => $currency_rate, 'order_date' => $request['order_date'], 'buyer_id' => $request['buyer_id'], 'receiver_id' => $request['receiver_id'] != '' ? $request['receiver_id'] : null, 'customer_address_code' => $request['customer_address_code'] != '' ? $request['customer_address_code'] : null, 'request_date' => $request['request_date'], 'supplier_contact_id' => $request['supplier_contact_id'], 'supplier_id' => $request['supplier_id'], 'price_tax' => $price_tax, 'tax_id' => $tax['id'], 'tax_name' => $tax['name'], 'tax_rate' => $tax['rate'], 'tpl_id' => $request['tpl_id'], 'type_id' => $request['type_id'], 'settle_way' => $request['settle_way'], 'delvery_clause' => $request['delvery_clause'], 'remark' => $request['remark'], 'description' => $request['description'], 'manufacture' => $request['manufacture'], 'responsible' => $request['responsible'], 'update_time' => $now, 'update_user' => $user_id);
         if ($type == 'new') {
             if ($hand) {
                 $data['state'] = 2;
                 $data['hand'] = 1;
                 $data['number'] = $request['hand_number'];
                 $data['review_info'] = date('Y-m-d H:i:s') . ' 补单<br>';
                 if ($order->fetchAll("number = '" . $data['number'] . "'")->count() > 0) {
                     $result['success'] = false;
                     $result['info'] = "添加错误,订单号重复!";
                     echo Zend_Json::encode($result);
                     exit;
                 }
             } else {
                 $data['hand'] = 0;
                 $data['number'] = $order->getNewNum($request['type_id'], $request['company']);
                 // 生成申订单号
             }
             $data['create_time'] = $now;
             $data['create_user'] = $user_id;
             $data['review_info'] = $now . ': ' . $user_session->user_info['user_name'] . ' [' . $typeArr[$type] . ']';
             try {
                 $order_id = $result['order_id'] = $order->insert($data);
             } catch (Exception $e) {
                 $result['success'] = false;
                 $result['info'] = $e->getMessage();
             }
         } elseif ($type == 'edit' || $type == 'transfer') {
             try {
                 $review_info = $now . ': ' . $user_session->user_info['user_name'] . ' [' . $typeArr[$type] . ']';
                 $orderData = $order->getData(null, $request['id']);
                 if ($request['type_id'] != $orderData['type_id']) {
                     // 当类别发送改变时,生成订单号
                     $data['number'] = $order->getNewNum($request['type_id']);
                 }
                 $data['review_info'] = $orderData['review_info'] . '<br>' . $review_info;
                 $data['state'] = 0;
                 if ($type == 'transfer') {
                     $transfer = new Erp_Model_Purchse_Transfer();
                     $transferData = array('transfer_type' => $request['transfer_type'], 'transfer_description' => $request['transfer_description'], 'create_user' => $user_id, 'create_time' => $now);
                     $data['submit_type'] = 'transfer';
                     // 修改变更时,先清空被拒绝的修改内容列表
                     if ($request['transfer_id'] != '') {
                         $transfer_items = new Erp_Model_Purchse_Transferorderitems();
                         $transfer_items->delete("transfer_id = " . $request['transfer_id']);
                         $transferData['state'] = 0;
                         $transfer->update($transferData, "id = " . $request['transfer_id']);
                         $data['transfer_id'] = $result['transfer_id'] = $request['transfer_id'];
                     } else {
                         $transferData['type'] = 'order';
                         $transferData['target_id'] = $request['id'];
                         $data['transfer_id'] = $result['transfer_id'] = $transfer->insert($transferData);
                     }
                 }
                 $order->update($data, "id = " . $request['id']);
                 $result['order_id'] = $request['id'];
             } catch (Exception $e) {
                 $result['success'] = false;
                 $result['info'] = $e->getMessage();
             }
         }
     } elseif ($type == 'delete') {
         try {
             $order->delete("id = " . $request['req_id']);
         } catch (Exception $e) {
             $result['success'] = false;
             $result['info'] = $e->getMessage();
         }
     }
     echo Zend_Json::encode($result);
     exit;
 }
Exemple #2
0
 public function refreshOrderTotal($order_id)
 {
     $data = array('total' => 0, 'total_tax' => 0, 'total_no_tax' => 0, 'forein_total' => 0, 'forein_total_tax' => 0, 'forein_total_no_tax' => 0);
     $total = 0;
     if ($order_id) {
         $dataTmp = $this->fetchAll("order_id = " . $order_id);
         if ($dataTmp->count() > 0) {
             $items = $dataTmp->toArray();
             foreach ($items as $item) {
                 $total += $item['total'];
             }
         }
     }
     $order = new Erp_Model_Purchse_Order();
     $orderData = $order->getData(null, $order_id);
     // 当单价不含税时,需要根据实时税率计算税金及含税价
     if ($orderData['price_tax'] == 0) {
         $data['total_tax'] = $total * $orderData['tax_rate'];
         // 税金
         $data['total_no_tax'] = $total;
         // 不含税金额
         $data['total'] = $data['total_no_tax'] + $data['total_tax'];
         // 含税金额
     } else {
         $data['total_no_tax'] = $total / (1 + $orderData['tax_rate']);
         $data['total_tax'] = $total - $data['total_no_tax'];
         $data['total'] = $total;
     }
     // 如果不是本币(汇率不为1),则需要将外币换算为本币
     if ($orderData['currency_rate'] != 1) {
         $data['forein_total'] = $data['total'];
         $data['forein_total_no_tax'] = $data['total_no_tax'];
         $data['forein_total_tax'] = $data['total_tax'];
         $data['total'] = $data['forein_total'] * $orderData['currency_rate'];
         $data['total_no_tax'] = $data['forein_total_no_tax'] * $orderData['currency_rate'];
         $data['total_tax'] = $data['forein_total_tax'] * $orderData['currency_rate'];
     }
     $order->update($data, "id = " . $order_id);
 }