Files
OMS/app/purchase/model/supplier/goods.php
2025-12-28 23:13:25 +08:00

237 lines
6.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
/**
* CSV导入
*/
class purchase_mdl_supplier_goods extends dbeav_model {
function getSupplierGoods($supplier_id=null){
$filter = array("supplier_id"=>$supplier_id);
$goods = $this->getList('bm_id', $filter, 0, -1);
foreach ($goods as $v)
{
$goodsArr[] = $v['bm_id'];
}
if ($supplier_id and !$goodsArr){
$base_filter = array('bm_id'=>'-1');
}elseif ($supplier_id and $goodsArr){
$base_filter = array('bm_id'=>$goodsArr);
}
return $base_filter;
}
/**
* 搜索Options
* @return mixed 返回值
*/
public function searchOptions()
{
return array(
'material_bn'=>'基础物料编码',
'supplier_bn'=>'供应商编码',
);
}
/**
* _filter
* @param mixed $filter filter
* @param mixed $tableAlias tableAlias
* @param mixed $baseWhere baseWhere
* @return mixed 返回值
*/
public function _filter($filter,$tableAlias=null,$baseWhere=null)
{
$where = ' 1 ';
//基础物料编码
if(isset($filter['material_bn']))
{
$basicMaterialObj = app::get('material')->model('basic_material');
$tempData = $basicMaterialObj->dump(array('material_bn'=>$filter['material_bn']), 'bm_id');
$bm_id = $tempData['bm_id'];
$where .= " AND bm_id='". $bm_id ."'";
unset($filter['material_bn']);
}
//供应商编码
if(isset($filter['supplier_bn']))
{
$supplierObj = app::get('purchase')->model('supplier');
$tempData = $supplierObj->dump(array('bn'=>$filter['supplier_bn']), 'supplier_id');
$supplier_id = $tempData['supplier_id'];
$where .= " AND supplier_id='". $supplier_id ."'";
unset($filter['supplier_bn']);
}
return parent::_filter($filter,$tableAlias,$baseWhere)." AND ".$where;
}
/*
* 导出供应商模板
*/
function exportTemplate()
{
foreach ($this->io_title() as $v)
{
$title[] = kernel::single('base_charset')->utf2local($v);
}
return $title;
}
function io_title($ioType='csv' )
{
$this->oSchema['csv'] = array(
'*:供应商编码' => 'bn',
'*:供应商名称' => 'name',
'*:基础物料编码' => 'brief',
'*:基础物料名称' => 'company',
);
$this->ioTitle[$ioType] = array_keys($this->oSchema[$ioType]);
return $this->ioTitle[$ioType];
}
/**
* CSV导入
*/
function prepared_import_csv()
{
$this->ioObj->cacheTime = time();
}
function finish_import_csv()
{
base_kvstore::instance('purchase_supplier_goods')->fetch('supplier-'.$this->ioObj->cacheTime,$data);
base_kvstore::instance('purchase_supplier_goods')->store('supplier-'.$this->ioObj->cacheTime,'');
$pTitle = array_flip($this->io_title());
$pSchema = $this->oSchema['csv'];
$oQueue = app::get('base')->model('queue');
$aP = $data;
$pSdf = array();
$count = 0;
$limit = 50;
$page = 0;
$orderSdfs = array();
foreach ($aP['supplier']['contents'] as $k => $aPi)
{
if($count < $limit){
$count ++;
}else{
$count = 0;
$page ++;
}
$pSdf[$page][] = $aPi;
}
foreach($pSdf as $v){
$queueData = array(
'queue_title'=>'供应商货品导入',
'start_time'=>time(),
'params'=>array(
'sdfdata'=>$v,
'app' => 'purchase',
'mdl' => 'supplier_goods'
),
'worker'=>'purchase_supplier_goods_to_import.run',
);
$oQueue->save($queueData);
}
$oQueue->flush();
return null;
}
function prepared_import_csv_obj($data,$mark,$tmpl,&$msg = '')
{
return null;
}
//CSV导入业务处理
function prepared_import_csv_row($row,$title,&$tmpl,&$mark,&$newObjFlag,&$msg)
{
if (empty($row))
{
return true;
}
$mark = false;
$re = base_kvstore::instance('purchase_supplier_goods')->fetch('supplier-'.$this->ioObj->cacheTime,$fileData);
if( !$re ) $fileData = array();
if(substr($row[0],0,1) == '*')
{
$titleRs = array_flip($row);
$mark = 'title';
return $titleRs;
}
else
{
if($row[0] && $row[2])
{
$basicMaterialObj = app::get('material')->model('basic_material');
$supplierObj = app::get('purchase')->model('supplier');
$sdfRow = array();
//供应商信息
$tempData = $supplierObj->dump(array('bn'=>$row[0]), 'supplier_id');
if(empty($tempData))
{
$msg['error'] = '供应商编码不存在!';
return false;
}
$sdfRow['supplier_id'] = $tempData['supplier_id'];
//基础物料信息
$tempData = $basicMaterialObj->dump(array('material_bn'=>$row[2]), 'bm_id');
if(empty($tempData))
{
$msg['error'] = '基础物料编码不存在!';
return false;
}
$sdfRow['bm_id'] = $tempData['bm_id'];
//检查数据是否已存在
$tempData = $this->dump(array('supplier_id'=>$sdfRow['supplier_id'], 'bm_id'=>$sdfRow['bm_id']), '*');
if($tempData)
{
$msg['error'] = '供应商货品关系已经存在,不能重复导入!';
return false;
}
//组织数据
$fileData['supplier']['contents'][] = $sdfRow;
base_kvstore::instance('purchase_supplier_goods')->store('supplier-'.$this->ioObj->cacheTime, $fileData);
}else{
$msg['error'] = "供应商编码与基础物料编码必须填写";
return false;
}
}
return null;
}
}
?>