public function correctInStockQty($receive_id = null, $date_from = null, $date_to = null) { $orderItemReqModel = new Erp_Model_Purchse_Orderitemsreq(); $reqReceiveModel = new Erp_Model_Purchse_Reqitemsreceived(); $data = $this->getInStockItemsInfo($receive_id, $date_from, $date_to); foreach ($data as $d) { if ($d['order_item_id'] != '') { $req_info = $orderItemReqModel->getOrderItemReqInfo($d['order_item_id']); $receive_qty = $d['qty']; // 冲抵申请项数量(按申请时间顺序) foreach ($req_info as $info) { $req_receive_qty = 0; if ($receive_qty > 0) { if ($info['qty'] >= $receive_qty) { // 当前收货可只够冲抵当前申请项数量 $req_receive_qty = $receive_qty; $receive_qty = 0; } else { // 当前收货冲抵当前申请项后还有剩余可用于冲抵其它关联申请 $req_receive_qty = $info['qty']; $receive_qty = $receive_qty - $info['qty']; } } // 当前申请项有收货数量冲抵 if ($req_receive_qty > 0) { if ($reqReceiveModel->fetchAll("req_item_id = " . $info['req_item_id'] . " and receive_item_id = " . $d['receive_item_id'])->count() == 0) { $req_receive_data = array('order_item_id' => $d['order_item_id'], 'req_item_id' => $info['req_item_id'], 'receive_item_id' => $d['receive_item_id'], 'order_number' => $d['order_number'], 'req_number' => $info['req_number'], 'receive_number' => $d['number'], 'order_time' => $d['order_time'], 'req_time' => $info['req_time'], 'receive_time' => $d['create_time'], 'qty' => $req_receive_qty); $reqReceiveModel->insert($req_receive_data); } } } } } }
public function getReqItemsList($key = null, $option = 'data') { $dataResult = array(); $sql = $this->select()->setIntegrityCheck(false)->from(array('t1' => $this->_name), array('req_number' => 'number', 'req_dept_id' => 'dept_id', 'req_release_time' => 'release_time', 'req_remark' => 'remark', 'req_reason' => 'reason', 'req_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('t6' => $this->_dbprefix . 'employee_dept'), "t1.dept_id = t6.id", array('req_dept' => 'name'))->joinLeft(array('t7' => $this->_dbprefix . 'erp_pur_type'), "t1.type_id = t7.id", array('req_type' => 'name'))->joinLeft(array('t8' => $this->_dbprefix . 'erp_pur_req_items'), "t1.id = t8.req_id")->where("t1.state = 2 and t1.order_flag = 0 and t1.active = 1 and t8.active = 1"); if ($key) { $sql->where("t8.code like '%" . $key . "%' or t1.number like '%" . $key . "%' or t1.remark like '%" . $key . "%' or t1.reason like '%" . $key . "%' or t3.cname like '%" . $key . "%' or t3.ename like '%" . $key . "%' or t7.name like '%" . $key . "%' or t8.name like '%" . $key . "%' or t8.description like '%" . $key . "%'"); } $data = $this->fetchAll($sql)->toArray(); $items_req = new Erp_Model_Purchse_Orderitemsreq(); for ($i = 0; $i < count($data); $i++) { $data[$i]['qty_order'] = 0; if ($data[$i]['id']) { $data[$i]['qty_order'] = $items_req->getQty('req', $data[$i]['id'], false); } $data[$i]['qty_left'] = $data[$i]['qty'] - $data[$i]['qty_order']; $data[$i]['qty_order'] = 0; $data[$i]['description'] = str_replace("'", "\\'", $data[$i]['description']); if ($data[$i]['qty_left'] > 0) { array_push($dataResult, $data[$i]); } } if ($option == 'csv') { $data_csv = array(); $title = array('cnt' => '#', 'req_number' => '申请单号', 'req_dept' => '申请部门', 'req_type' => '采购类别', 'creater' => '申请人', 'code' => '物料号', 'name' => '名称', 'qty' => '申请数量', 'qty_left' => '剩余数量', 'unit' => '单位', 'description' => '描述', 'customer_address' => '客户收件人地址简码', 'remark' => '备注', 'project_info' => '项目信息', 'req_reason' => '申请事由', 'req_remark' => '申请备注'); array_push($data_csv, $title); $i = 0; foreach ($data as $d) { $i++; $info = array('cnt' => $i, 'req_number' => $d['req_number'], 'req_dept' => $d['req_dept'], 'req_type' => $d['req_type'], 'creater' => $d['creater'], 'code' => $d['code'], 'name' => $d['name'], 'qty' => $d['qty'], 'qty_left' => $d['qty_left'], 'unit' => $d['unit'], 'description' => $d['description'], 'customer_address' => $d['customer_address'], 'remark' => $d['remark'], 'project_info' => $d['project_info'], 'req_reason' => $d['req_reason'], 'req_remark' => $d['req_remark']); array_push($data_csv, $info); } return $data_csv; } return $dataResult; }
public function getData($req_id) { $result = array(); $data = $this->fetchAll("req_id = " . $req_id)->toArray(); $item = new Erp_Model_Purchse_Orderitemsreq(); foreach ($data as $d) { $active = $d['active'] == 1 ? true : false; //$qty_order = $item->getQty('req', $d['id']); $qty_order = $item->getQty('req', $d['id'], false); //2014-12-28 array_push($result, array('items_id' => $d['id'], 'items_req_id' => $d['req_id'], 'items_active' => $active, 'items_code' => $d['code'], 'items_name' => $d['name'], 'items_description' => $d['description'], 'items_qty' => $d['qty'], 'items_qty_order' => $qty_order, 'items_unit' => $d['unit'], 'items_price' => $d['price'], 'items_line_total' => $d['line_total'], 'items_date_req' => $d['date_req'], 'items_supplier' => $d['supplier'], 'items_dept_id' => $d['dept_id'], 'items_model' => $d['model'], 'items_project_info' => $d['project_info'], 'items_order_req_num' => $d['order_req_num'], 'items_customer_address' => $d['customer_address'], 'items_customer_aggrement' => $d['customer_aggrement'], 'items_remark' => $d['remark'])); } return $result; }
/** * 保存采购申请表体 */ 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']); $order_id = $json->order_id; $transfer_id = $json->transfer_id; $order_id = $json->order_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_Orderitems(); $itemsreq = new Erp_Model_Purchse_Orderitemsreq(); $transfer_items = new Erp_Model_Purchse_Transferorderitems(); // 更新 if (count($items_updated) > 0) { foreach ($items_updated as $val) { $active = $val->items_active ? 1 : 0; $total = round($val->items_qty * $val->items_price, 4); $data = array('active' => $active, 'req_number' => $val->items_req_number, 'code' => $val->items_code, 'name' => $val->items_name, 'description' => $val->items_description, 'supplier_code' => $val->items_supplier_code, 'supplier_codename' => $val->items_supplier_codename, 'supplier_description' => $val->items_supplier_description, 'qty' => $val->items_qty, 'unit' => $val->items_unit, 'price' => $val->items_price, 'total' => $total, 'warehouse_code' => $val->items_warehouse_code, 'request_date' => $val->items_request_date, 'dept_id' => $val->items_dept_id, 'project_info' => $val->items_project_info, 'remark' => $val->items_remark); try { if ($type == 'transfer') { $data['req_item_id'] = $val->items_req_item_id; $data['order_id'] = $order_id; $data['transfer_id'] = $transfer_id; $data['order_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); // 保存分拆订单项信息 $this->saveSplitItem('update', $val->items_id, $val->items_req_item_id, $val->items_qty, $val->items_code, $active); } } 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; $total = round($val->items_qty * $val->items_price, 4); $data = array('order_id' => $order_id, 'active' => $active, 'req_number' => $val->items_req_number, 'code' => $val->items_code, 'name' => $val->items_name, 'description' => $val->items_description, 'supplier_code' => $val->items_supplier_code, 'supplier_codename' => $val->items_supplier_codename, 'supplier_description' => $val->items_supplier_description, 'qty' => $val->items_qty, 'unit' => $val->items_unit, 'price' => $val->items_price, 'total' => $total, 'warehouse_code' => $val->items_warehouse_code, 'request_date' => $val->items_request_date, 'dept_id' => $val->items_dept_id, 'project_info' => $val->items_project_info, 'remark' => $val->items_remark); try { if ($type == 'transfer') { $data['transfer_id'] = $transfer_id; $data['order_item_id'] = $val->items_id; $data['req_item_id'] = $val->items_req_item_id; $data['req_qty'] = $val->items_req_qty; $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; $order_item_id = $items->insert($data); $this->saveSplitItem('insert', $order_item_id, $val->items_req_item_id, $val->items_req_qty, $val->items_code); } } 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, 4); $data = array('active' => $active, 'transfer_type' => 'delete', 'transfer_id' => $transfer_id, 'order_item_id' => $val->items_id, 'req_number' => $val->items_req_number, 'code' => $val->items_code, 'name' => $val->items_name, 'description' => $val->items_description, 'supplier_code' => $val->items_supplier_code, 'supplier_codename' => $val->items_supplier_codename, 'supplier_description' => $val->items_supplier_description, 'qty' => $val->items_qty, 'unit' => $val->items_unit, 'price' => $val->items_price, 'total' => $total, 'warehouse_code' => $val->items_warehouse_code, 'request_date' => $val->items_request_date, 'dept_id' => $val->items_dept_id, 'project_info' => $val->items_project_info, 'remark' => $val->items_remark); $transfer_items->insert($data); } else { $items->delete("id = " . $val->items_id); // 清除订单项对应的申请项数据 $itemsreq->delete("order_item_id = " . $val->items_id); $this->saveSplitItem('delete', $val->items_id, $val->items_req_item_id, $val->items_req_qty, $val->items_code); } } catch (Exception $e) { $result['success'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } } // 更新订单项状态 $activeItemsRes = $items->fetchAll("active = 1 and order_id = " . $order_id); if ($activeItemsRes->count() > 0) { $activeItems = $activeItemsRes->toArray(); for ($j = 0; $j < count($activeItems); $j++) { $itemsreq->update(array('active' => 1), "order_item_id = " . $activeItems[$j]['id']); } } // 更新采购申请总计 if ($type != 'transfer') { $items->refreshOrderTotal($order_id); } $order = new Erp_Model_Purchse_Order(); $order_data = $order->getData(null, $order_id); // 保存成功,进入审批流程 if ($result['success']) { // 根据流程ID获取阶段信息 $flow = new Admin_Model_Flow(); $flowData = $flow->fetchRow("id = " . $order_data['order_flow_id'])->toArray(); // 获取审核阶段 $step = new Admin_Model_Step(); $stepIds = $flowData['step_ids']; $stepArr = explode(',', $stepIds); $review = new Dcc_Model_Review(); $review->delete("type = 'purchse_order_add' and file_id = " . $order_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_order_add', 'file_id' => $order_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) { // 获取币种信息 $currency = new Erp_Model_Setting_Currency(); $currencyInfo = $currency->getInfoByCode($order_data['currency']); $total = $order_data['total']; if ($order_data['currency_rate'] != 1) { $total = $order_data['forein_total']; } $mailContent = '<div>新建采购订单,请登录系统查看:</div> <div> <p><b>订单号:</b>' . $order_data['number'] . '</p> <p><b>采购员:</b>' . $user_session->user_info['user_name'] . '</p> <p><b>类别:</b>' . $order_data['type'] . '</p> <p><b>金额:</b><a style="color: #467500;font-weight: bold;">' . $currencyInfo['symbol'] . $total . '</a></p> <p><b>描述:</b>' . $order_data['description'] . '</p> <p><b>备注:</b>' . $order_data['remark'] . '</p> <p><b>申请时间:</b>' . $order_data['create_time'] . '</p> <p><b>更新时间:</b>' . $order_data['update_time'] . '</p> </div><hr>'; $transferContent = ''; if ($type == 'transfer') { $transferContent .= '<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> </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_request_date)) . '</td> <td>' . $val->items_project_info . '</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_receive . '</td> <td>' . $val->items_request_date . '</td> <td>' . $val->items_project_info . '</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_request_date . '</td> <td>' . $val->items_project_info . '</td> <td>' . $val->items_remark . '</td> </tr>'; $i++; } $transferContent .= '</table></div>'; } $mailData = array('type' => '消息', 'subject' => '采购订单-' . $typeArr[$type], 'cc' => $user_session->user_info['user_email'], 'content' => $mailContent . $transferContent, 'add_date' => $now); if ($transferContent != '') { $transfer = new Erp_Model_Purchse_Transfer(); $transfer->update(array('transfer_content' => $transferContent), "id = " . $transfer_id); } $result = $help->sendMailToStep($mailTo, $mailData); } } echo Zend_Json::encode($result); exit; }
public function getData($order_id) { $result = array(); $data = $this->fetchAll("order_id = " . $order_id)->toArray(); $item = new Erp_Model_Purchse_Receiveitemsorder(); $reqItem = new Erp_Model_Purchse_Orderitemsreq(); foreach ($data as $d) { $active = $d['active'] == 1 ? true : false; $qty_receive = $item->getQty('order', $d['id']); $itemReqInfo = $reqItem->getOrderItemReqInfo($d['id']); $req_item_ids = array(); $req_qtys = array(); foreach ($itemReqInfo as $info) { array_push($req_item_ids, $info['req_item_id']); array_push($req_qtys, $info['qty']); } $items_req_item_id = implode(',', $req_item_ids); $items_req_qty = implode(',', $req_qtys); array_push($result, array('items_id' => $d['id'], 'items_order_id' => $d['order_id'], 'items_req_number' => $d['req_number'], 'items_active' => $active, 'items_code' => $d['code'], 'items_name' => $d['name'], 'items_description' => $d['description'], 'items_supplier_code' => $d['supplier_code'], 'items_supplier_codename' => $d['supplier_codename'], 'items_supplier_description' => $d['supplier_description'], 'items_warehouse_code' => $d['warehouse_code'], 'items_qty' => $d['qty'], 'items_qty_receive' => $qty_receive, 'items_unit' => $d['unit'], 'items_price' => $d['price'], 'items_total' => $d['total'], 'items_request_date' => $d['request_date'], 'items_dept_id' => $d['dept_id'], 'items_project_info' => $d['project_info'], 'items_req_item_id' => $items_req_item_id, 'items_req_qty' => $items_req_qty, 'items_remark' => $d['remark'])); } return $result; }