Files
OMS/app/console/model/adjustNumber.php
2025-12-28 23:13:25 +08:00

170 lines
5.4 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.
*/
class console_mdl_adjustNumber extends console_mdl_interface_iostocksearchs{
public $kvdata = array();
//定义导入文件模版字段
/**
* import_title
* @return mixed 返回值
*/
public function import_title(){
$title[1] = array(
'*:货号',
'*:货品名称',
'*:仓库编号',
'*:调整到的数量',
'*:备注',
);
return $title;
}
function exportTemplate($filter){
foreach ($this->io_title($filter) as $v){
$title[] = kernel::single('base_charset')->utf2local($v);
}
return $title;
}
function io_title($filter){
switch( $filter ){
case 'adjust':
default:
$this->oSchema['csv'][$filter] = array(
'*:货号' =>'',
'*:货品名称' =>'',
'*:仓库编号' =>'',
'*:调整到的数量' =>'',
'*:备注' =>'',
);
break;
}
return $this->ioTitle['csv'][$filter] = array_keys( $this->oSchema['csv'][$filter] );
}
function prepared_import_csv_row($row,$title,&$tmpl,&$mark,&$newObjFlag,&$msg)
{
$basicMaterialObj = app::get('material')->model('basic_material');
$basicMStockFreezeLib = kernel::single('material_basic_material_stock_freeze');
$this->aa++;
$mark = false;
$fileData = $this->kvdata;
if( !$fileData ) $fileData = array();
if( substr($row[0],0,2) == '*:' ){
$titleRs = array_flip($row);
$mark = 'title';
return $titleRs;
}else{
$bn = trim($row[0]);
$branch_bn = $row[2];
$nums = $row[3];
$memo = $row[4];
if ($bn && $branch_bn && ($nums>=0))
{
//判断货号是否存在
$oBranch_product = app::get('ome')->model('branch_product');
$products = $basicMaterialObj->dump(array('material_bn'=>$bn), 'bm_id, material_bn');
if(!$products){
$msg['error'] = '货号不存在 '.$bn;
return false;
}
//判断仓库编号是否存在
$branchObj = app::get('ome')->model('branch');
$branch = $branchObj->dump(array('branch_bn'=>$branch_bn),'branch_id,branch_bn');
if( ! $branch){
$msg['error']= '编号 '.$branch_bn.' 仓库不存在 ';
return false;
}
//判断数量是否合法
if($nums < 0){
$msg['error'] = '货号 '.$bn.' 数量应为正整数 ';
return false;
}
$branch_product = $oBranch_product->dump(array('branch_id'=>$branch['branch_id'],'product_id'=>$products['bm_id']),'store,store_freeze');
//根据仓库ID、基础物料ID获取该物料仓库级的预占
$branch_product['store_freeze'] = $basicMStockFreezeLib->getBranchFreeze($products['bm_id'], $branch['branch_id']);
if($branch_product['store_freeze'] > $nums){
$msg['error'] = '货号 '.$bn.' 冻结大于调整数量 ';
return false;
}
if(empty($branch_product)){
$branch_product['store'] = 0;
$branch_product['store_freeze'] = 0;
}
$diff_nums = $branch_product['store']-$nums;
if($diff_nums == 0){
$msg['error'] = '货号 '.$bn.' 库存数量无差异变化 ';
return false;
}
$type = $diff_nums < 0 ? "IN" : "OUT";
$fileData[$type][] = array(
'product_id'=>$products['bm_id'],
'bn' =>$bn,
'branch_id'=>$branch['branch_id'],
'nums' =>abs($diff_nums),
'memo'=>$memo,
);
}
$this->kvdata = $fileData;
}
return null;
}
function prepared_import_csv(){
set_time_limit(0);
}
function finish_import_csv(){
$oQueue = app::get('base')->model('queue');
$data = $this->kvdata; unset($this->kvdata);
$oBranch_product = app::get('ome')->model('branch_product');
$adjustout = array();
$adjustin = array();
foreach ($data as $k=>$v ) {
$iostockData = array();
if ($k == 'IN') {
$adjustLib = kernel::single('siso_receipt_iostock_stockin');
$adjustLib->_typeId = 8;
}else{
$adjustLib = kernel::single('siso_receipt_iostock_stockout');
$adjustLib->_typeId = 80;
}
$iostockData['items'] = $v;
$adjustLib->create($iostockData, $createdata, $msg);
}
return null;
}
}