__('原始单据号'), 'iostock_bn'=>__('出入库单号'), 'bn'=>__('基础物料编码'), 'appropriation_no'=>__('调拨单号'), )); } function io_title( $filter=null,$ioType='csv'){ switch( $ioType ){ case 'csv': default: $this->oSchema['csv']['main'] = array( '*:仓库编号' => 'branch_bn', '*:仓库名称' => 'branch_name', '*:出入库单号' => 'iostock_bn', '*:出入库类型' => 'iostock_type', '*:原始单据号' => 'original_bn', '*:发货单号' => 'delivery_bn', '*:供应商/用户名/公司名称' => 'supplier_name', '*:基础物料编码' => 'bn', '*:货品名称' => 'bn_name', '*:出入库数量' => 'nums', '*:出入库价格' => 'iostock_price', '*:经手人' => 'oper', '*:出入库时间' => 'create_time', '*:操作员' => 'operator', '*:备注' => 'memo', '*:订单号' => 'order_bn', '*:结存数量'=>'now_num', '*:规格'=>'spec_value' ); } #增加导出列 if($this->export_flag){ $title = array( '*出入单名称'=>'name', '*库存结存'=>'balance_nums' ); $this->oSchema['csv']['main'] = array_merge($this->oSchema['csv']['main'],$title); } $this->ioTitle[$ioType][$filter] = array_keys( $this->oSchema[$ioType]['main'] ); return $this->ioTitle[$ioType][$filter]; } //csv导出 function fgetlist_csv( &$data,$filter,$offset,$exportType = 1 ){ $this->export_flag = true; $obj_iostockOrder = app::get('taoguaniostockorder')->model('iso'); @ini_set('memory_limit','1024M'); if( !$data['title']['main'] ){ $title = array(); foreach( $this->io_title('main') as $k => $v ){ $title[] = $this->charset->utf2local($v); } $data['title']['main'] = '"'.implode('","',$title).'"'; } $this->iostock = app::get('ome')->model('iostock'); $this->iostock->filter_use_like = true; $limit = 100; //bugfix 修正出入库明细导出全部数据的时候branch_id引起的查询结果为空的问题 if($filter['branch_id'] < 1){ unset($filter['branch_id']); } if( !$list=$this->iostock->getList('*',$filter,$offset*$limit,$limit) )return false; $branchObj = app::get('ome')->model('branch'); $ioTypeObj = app::get('ome')->model('iostock_type'); $basicMaterialObj = app::get('material')->model('basic_material'); $orderObJ = app::get('ome')->model('orders'); $_originalId = array();$id_bn = array(); foreach($list as $k=>$val){ if(3 == $val['type_id']){ if(isset($val['original_id'])){ //获取本次导出记录所有的original_id $_originalId[] = $val['original_id']; } } } $_count = count($_originalId); if($_count > 1){ $_originalId = array_unique($_originalId); $_originalId = implode(',', $_originalId);//包含分割一个数组元素 }elseif(1 == $_count){ $_originalId = $_originalId[0]; } if($_originalId){ //获取本次导出记录所有销售订单号 $_orderInfo = $orderObJ->getOrdersBnById($_originalId); } //生成成delivery_id和order_bn的键值对 foreach( (array) $_orderInfo as $_val){ if(array_key_exists($_val['delivery_id'],$id_bn)){ //把同一个delivery_id对应的多个order_bn逗号拼接起来 $id_bn[$_val['delivery_id']] = $id_bn[$_val['delivery_id']].' , '.$_val['order_bn']; }else{ $id_bn[$_val['delivery_id']] = $_val['order_bn']; } } foreach( $list as $aFilter ){ $branch = $branchObj->dump(array('branch_id'=>$aFilter['branch_id']),'branch_bn,name'); $iostock_type = $ioTypeObj->dump(array('type_id'=>$aFilter['type_id']),'type_name'); $product_info = $basicMaterialObj->dump(array('material_bn'=>$aFilter['bn']),'material_name'); if(3 ==$aFilter['type_id']){ if(isset($aFilter['original_id'])){ $aFilter['order_bn'] = (string)$id_bn[$aFilter['original_id']]; } } #不属于销售出库时,获取出入单名称 if(3 !=$aFilter['type_id']){ $iostock_order_info = $obj_iostockOrder->dump($aFilter['original_id'],'name'); if(!empty($iostock_order_info['name'])){ $aFilter['name'] = $iostock_order_info['name']; } } if( !$aFilter )continue; $aFilter['branch_bn'] = $branch['branch_bn']; $aFilter['branch_name'] = $branch['name']; $aFilter['iostock_type'] = $iostock_type['type_name']; $aFilter['bn_name'] = $product_info['material_name']; $original_bn = $aFilter['original_bn']; //处理货品多规格值 新物料版本暂时没这数据注释掉 xiayuanjun //$spec_value = implode('|',(array) $product_info['spec_desc']['spec_value']); $aFilter['spec_value'] = ''; $aFilter['create_time'] = date('Y-m-d H:i:s',$aFilter['create_time']); $aFilter['original_bn'] = "=\"\"".$aFilter['original_bn']."\"\""; $aFilter['order_bn'] = "=\"\"".$aFilter['order_bn']."\"\""; $aFilter['delivery_bn'] = ''; //退货入库取发货单号 if (in_array($aFilter['type_id'],array('30'))) { // $delivery_bn = $this->getDeliveryByreshipId($original_bn); $delivery_bn = $delivery_bn ? "=\"\"".$delivery_bn."\"\"" : ''; $aFilter['delivery_bn'] = $delivery_bn; } foreach( $this->oSchema['csv']['main'] as $k => $v ){ $iostockRow[$k] = $this->charset->utf2local($aFilter[$v]); } $data['content']['main'][] = '"'.implode('","',$iostockRow).'"'; } $data['name'] = 'iostock' . date('YmdHis'); return true; } function export_csv($data,$exportType = 1 ){ $output = array(); // if( $exportType == 2 ){ foreach( $data['title'] as $k => $val ){ $output[] = $val."\n".implode("\n",(array)$data['content'][$k]); } // } echo implode("\n",$output); } /** * _filter * @param mixed $filter filter * @param mixed $tableAlias tableAlias * @param mixed $baseWhere baseWhere * @return mixed 返回值 */ public function _filter($filter, $tableAlias=null, $baseWhere=null) { /* $op_id = kernel::single('desktop_user')->get_id(); if ($op_id) {//默认拥有所有仓库权限 $is_super = kernel::single('desktop_user')->is_super(); if (!$is_super) { $branch_ids = app::get('ome')->model('branch')->getBranchByUser(true); if ($branch_ids) { if ($filter['branch_id'] && !is_array($filter['branch_id']) && in_array($filter['branch_id'], $branch_ids)) { $filter['branch_id'] = $filter['branch_id']; } elseif ($filter['branch_id'] && is_array($filter['branch_id'])) { $realIds = array(); foreach($filter['branch_id'] as $id) { if (in_array($id, $branch_ids)) { $realIds[] = $id; } } if (!empty($realIds)) { $filter['branch_id'] = $realIds; } else { $filter['branch_id'] = $branch_ids; } } else { $filter['branch_id'] = $branch_ids; } } else { $filter['branch_id'] = 'false'; } } } */ //扩展字段 调拨单号右上角筛选 if(isset($filter['appropriation_no'])){ $taoguaniostockorder_iso_obj = app::get('taoguaniostockorder')->model('iso'); $taoguaniostockorder_iso_infos = $taoguaniostockorder_iso_obj->getList("iso_id",array("appropriation_no"=>$filter['appropriation_no'])); $filter["original_id"] = array(); foreach ($taoguaniostockorder_iso_infos as $var_taoguaniostockorder_iso_info){ $filter["original_id"][]=$var_taoguaniostockorder_iso_info["iso_id"]; } unset($filter['appropriation_no']); } // 处理name字段查询 - 通过基础物料ID查询 if(isset($filter['name']) && $filter['name']){ $basicMaterialObj = app::get('material')->model('basic_material'); $material_list = $basicMaterialObj->getList('material_bn', array('bm_id' => $filter['name'])); if($material_list){ $material_bns = array_column($material_list, 'material_bn'); $filter['bn|in'] = $material_bns; } else { // 如果没有找到匹配的物料ID,设置一个不可能的条件 $filter['iostock_id'] = 'false'; } unset($filter['name']); } return parent::_filter($filter, $tableAlias, $baseWhere); } /** * count * @param mixed $filter filter * @return mixed 返回值 */ public function count($filter=null){ foreach ($filter as $k => $v) { if (!is_array($v) && $v !== false) $filter[$k] = trim($v); if ($filter[$k] === '') { unset($filter[$k]); } } $count = parent::count($filter); return $count; } /** * modifier_oper * @param mixed $row row * @return mixed 返回值 */ public function modifier_oper($row){ switch ($row) { case 16777215: $row = '系统'; break; } return $row; } /** * 获得日志类型(non-PHPdoc) * @see dbeav_model::getLogType() */ public function getLogType($logParams) { $type = $logParams['type']; $logType = 'none'; if ($type == 'export') { $logType = $this->exportLogType($logParams); } elseif ($type == 'import') { $logType = $this->importLogType($logParams); } return $logType; } /** * 导出日志类型 * @param Array $logParams 日志参数 */ public function exportLogType($logParams) { $params = $logParams['params']; $type = 'warehouse'; if ($logParams['app'] == 'iostock' && $logParams['ctl'] == 'admin_iostocksearch') { $type .= '_stockManager_ioStockDetail'; } $type .= '_export'; return $type; } /** * 导入操作日志类型 * @param Array $logParams 日志参数 */ public function importLogType($logParams) { $params = $logParams['params']; $type = 'warehouse'; if ($logParams['app'] == 'iostock' && $logParams['ctl'] == 'admin_iostocksearch') { $type .= '_stockManager_ioStockDetail'; } $type .= '_import'; return $type; } /** * 根据退货单号返回发货单号 * @param type * @return * @access public * @author */ function getDeliveryByreshipId($original_bn) { $SQL = "SELECT d.delivery_bn FROM sdb_ome_reship as r LEFT JOIN sdb_ome_delivery_order as do ON do.order_id=r.order_id LEFT JOIN sdb_ome_delivery as d ON d.delivery_id=do.delivery_id WHERE d.parent_id=0 AND d.status='succ' AND r.reship_bn='".$original_bn."'"; error_log($SQL,3,__FILE__.'.log'); $reship = $this->db->selectrow($SQL); $delivery_bn = $reship ? $reship['delivery_bn'] : ''; return $delivery_bn; } /** * 获取PrimaryIdsByCustom * @param mixed $filter filter * @param mixed $op_id ID * @return mixed 返回结果 */ public function getPrimaryIdsByCustom($filter, $op_id){ //支持like等比较查询 $this->filter_use_like = true; //修正导出全部数据的时候branch_id引起的查询结果为空的问题 if($filter['branch_id'] < 1){ unset($filter['branch_id']); } $rows = $this->getList('iostock_id',$filter,0,-1); $ids = array(); foreach ($rows as $k => $row){ $ids[] = $row['iostock_id']; } return $ids; } /** * [出入库明细]导出列表扩展字段 */ function export_extra_cols() { return array( 'column_iostock_name' => array('label'=>'出入单名称','width'=>'100','func_suffix'=>'iostock_name'), 'column_order_bn' => array('label'=>'订单号','width'=>'100','func_suffix'=>'order_bn'), 'column_iostock_id' => array('label'=>'ID','width'=>'100','func_suffix'=>'iostock_id'), ); } /** * [出入单名称]扩展导出字段格式化 */ function export_extra_iostock_name($rows) { return kernel::single('ome_exportextracolumn_iostock_iso')->process($rows); } function export_extra_order_bn($rows) { return kernel::single('ome_exportextracolumn_iostock_orderbn')->process($rows); } function export_extra_iostock_id($rows) { foreach ($rows as $k => $row) { $rows[$k]['column_iostock_id'] = $row['iostock_id']; } return $rows; } /** * modifier_entity_branch_detail * @param mixed $value value * @return mixed 返回值 */ public function modifier_entity_branch_detail($value) { if (!empty($value)) { $branch_list = unserialize($value)['branch_list']; $html1 = '查看仓库详情'; $html2 = ''; foreach ($branch_list as $item) { $html2 .= '仓库名称:'. app::get('ome')->model('branch')->Get_name($item['branch_id']) .',库存数量:'.$item['store'] .',平均成本:'.$item['unit_cost'] .',结存成本:'.$item['inventory_cost'] .'
'; } return '
'.$html1.'
'; } else { return '-'; } } } ?>