Esempio n. 1
0
 public function getData($order_id)
 {
     $result = array();
     $data = $this->fetchAll("order_id = " . $order_id)->toArray();
     $item = new Erp_Model_Sale_Receiveitemsordersale();
     foreach ($data as $d) {
         $active = $d['active'] == 1 ? true : false;
         $price_tax = $d['price_tax'] == 1 ? true : false;
         $qty_send = $item->getQty('order', $d['id']);
         // 交货(负数)
         array_push($result, array('items_id' => $d['id'], 'items_type' => $d['type'], 'items_order_id' => $d['order_id'], 'items_active' => $active, 'items_code' => $d['code'], 'items_name' => $d['name'], 'items_description' => $d['description'], 'items_qty' => $d['qty'], 'items_qty_send' => $qty_send, 'items_unit' => $d['unit'], 'items_price' => $d['price'], 'items_price_tax' => $price_tax, 'items_total' => $d['total'], 'items_request_date' => $d['request_date'], 'items_customer_code' => $d['customer_code'], 'items_customer_description' => $d['customer_description'], 'items_remark' => $d['remark']));
     }
     return $result;
 }
Esempio n. 2
0
 public function saveSplitItem($splitData)
 {
     if ($splitData['items_order_id']) {
         $items = new Erp_Model_Purchse_Receiveitems();
         $itemsorder = new Erp_Model_Sale_Receiveitemsordersale();
         $stock = new Erp_Model_Stock_Stock();
         // 更新是先清空之前所保存的收货数据分拆信息
         $itemsorder->delete("receive_item_id = " . $splitData['receive_item_id']);
         $now = date('Y-m-d H:i:s');
         $user_session = new Zend_Session_Namespace('user');
         $user_id = $user_session->user_info['user_id'];
         $qty = 0 - $splitData['items_qty'];
         $price = $splitData['items_price'];
         $total = round($price * $qty, 2);
         $lineTotal = round(0 - $total, 2);
         $data = array('receive_item_id' => $splitData['receive_item_id'], 'order_item_id' => $splitData['items_order_item_id'], 'qty' => $qty, 'price' => $price, 'total' => $lineTotal, 'order_id' => $splitData['items_order_id'], 'order_number' => $splitData['items_order_number'], 'code' => $splitData['items_code'], 'customer_code' => $splitData['items_customer_code'], 'customer_description' => $splitData['items_customer_description'], 'type' => '销售退货', 'create_user' => $user_id, 'create_time' => $now);
         $itemsorder->insert($data);
         // 更新行总计
         $items->update(array('total' => $lineTotal), "id = " . $splitData['receive_item_id']);
         // 记录库存数据
         $stockData = array('code' => $splitData['items_code'], 'warehouse_code' => $splitData['items_warehouse_code'], 'qty' => 0 - $qty, 'total' => $total, 'create_user' => $user_id, 'create_time' => $now, 'doc_type' => '销售退货', 'doc_number' => $splitData['return_number']);
         $stock->insert($stockData);
     }
 }
Esempio n. 3
0
 public function saveItemDetails($splitData)
 {
     if ($splitData['items_order_item_id']) {
         $items = new Erp_Model_Purchse_Receiveitems();
         $itemsorder = new Erp_Model_Sale_Receiveitemsordersale();
         $rate = new Erp_Model_Setting_Currencyrate();
         $stock = new Erp_Model_Stock_Stock();
         // 更新是先清空之前所保存的收货数据分拆信息
         $itemsorder->delete("receive_item_id = " . $splitData['receive_item_id']);
         $now = date('Y-m-d H:i:s');
         $user_session = new Zend_Session_Namespace('user');
         $user_id = $user_session->user_info['user_id'];
         // 转换币种价格,按本币价格入库
         $price = round($splitData['items_price'] * $rate->getRateByCode($splitData['items_order_currency'], $splitData['items_order_date']), 2);
         $total = round($price * $splitData['items_qty'], 2);
         $data = array('receive_item_id' => $splitData['receive_item_id'], 'order_item_id' => $splitData['items_order_item_id'], 'qty' => $splitData['items_qty'], 'price' => $price, 'total' => $total, 'order_id' => $splitData['items_order_id'], 'order_number' => $splitData['items_order_number'], 'code' => $splitData['items_code'], 'product_code' => $splitData['items_product_code'], 'customer_code' => $splitData['items_customer_code'], 'customer_description' => $splitData['items_customer_description'], 'remark' => $splitData['items_remark'], 'create_user' => $user_id, 'create_time' => $now);
         $itemsorder->insert($data);
         // 更新行总计
         $items->update(array('total' => $total), "id = " . $splitData['receive_item_id']);
         // 记录库存数据
         $stockData = array('code' => $splitData['items_code'], 'product_code' => $splitData['items_product_code'], 'warehouse_code' => $splitData['items_warehouse_code'], 'qty' => 0 - $splitData['items_qty'], 'total' => 0 - $total, 'create_user' => $user_id, 'create_time' => $now, 'doc_type' => '销售交货', 'doc_number' => $splitData['receive_number']);
         $stock->insert($stockData);
     }
 }
Esempio n. 4
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);
 }