model('basic_material_ext');
$libBranchProductPos = kernel::single('ome_branch_product_pos');
$basicMStorageLifeLib = kernel::single('material_storagelife');
$oPo = app::get('purchase')->model("po");
$oPo_items = app::get('purchase')->model("po_items");
$perpage = 200;
$page = intval($_GET['page'])?intval($_GET['page']):1;
$start = ($page-1)*$perpage;
if($page>=200){
$top_start=$start+1;
}else{
$top_start=$page;
}
$top_title = $top_start.'-'.$page*$perpage;
$base_url = 'index.php?app=wms&ctl=admin_eo&act=eo_confirm_list&p[0]='.$po_id;
$count = count($oPo_items->getList('*',array('po_id'=>$po_id), 0, -1));
$multi = $this->multipages($count,$perpage,$page,$base_url);
$Po_items = $oPo_items->getList('*',array('po_id'=>$po_id));
$Po = $oPo->dump($po_id,'branch_id,supplier_id');
foreach($Po_items as $k=>$v)
{
$product = $basicMaterialExtObj->dump(array('bm_id'=>$v['product_id']), 'bm_id, unit');
$Po_items[$k]['unit'] = $product['unit'];
$assign = $libBranchProductPos->get_pos($v['product_id'],$Po['branch_id']);
if(empty($assign)){
$pos_list = $libBranchProductPos->get_unassign_pos($Po['branch_id']);
$Po_items[$k]['is_new']="true";
}else{
$Po_items[$k]['is_new']="false";
$pos_list = $assign;
}
//查询物料是否保质期物料
$is_use_expire = $basicMStorageLifeLib->checkStorageLifeById($v['product_id']);
$Po_items[$k]['use_expire'] = $is_use_expire ? 1 : 0;
//根据采购单获取已采购入库的批次信息
$storageLifeBatch = $basicMStorageLifeLib->getStorageLifeBillById($Po['branch_id'], $po_id, 1, $v['product_id']);
$Po_items[$k]['instock_storagelife'] = $storageLifeBatch ? json_encode($storageLifeBatch) : '';
$Po_items[$k]['spec_info'] = $v['spec_info'];
$Po_items[$k]['entry_num'] = $v['num']-$v['in_num'];
$Po_items[$k]['pos_list']=$pos_list;
}
//获取采购单供应商经办人/负责人
$oSupplier = app::get('purchase')->model('supplier');
$supplier = $oSupplier->dump($Po['supplier_id'], 'operator');
if (!$supplier['operator']) $supplier['operator'] = '未知';
$this->pagedata['operator'] = kernel::single('desktop_user')->get_name();
$this->pagedata['Po_items'] = $Po_items;
$this->pagedata['po_id'] = $po_id;
$this->pagedata['multi']=$multi;
$this->pagedata['count']=$count;//branch_id
$this->pagedata['branch_id']=$Po['branch_id'];
$this->pagedata['top_title'] = $top_title;
$this->singlepage("admin/eo/eo_confirm.html");
}
function eo_confirm_list()
{
$basicMaterialObj = app::get('material')->model('basic_material');
$libBranchProductPos = kernel::single('ome_branch_product_pos');
$po_id = $_GET['po_id'];
$oPo = app::get('purchase')->model("po");
$oPo_items = app::get('purchase')->model("po_items");
$perpage = 200;
$page = intval($_GET['page'])?intval($_GET['page']):1;
$start = ($page-1)*$perpage;
if($page>=200){
$top_start=$start+1;
}else{
$top_start=$page;
}
$top_title = $top_start.'-'.$page*$perpage;
$base_url = 'index.php?app=wms&ctl=admin_eo&act=eo_confirm_list&p[0]='.$po_id;
$count = count($oPo_items->getList('*',array('po_id'=>$po_id), 0, -1));
$multi = $this->multipages($count,$perpage,$page,$base_url);
$Po_items = $oPo_items->getList('*',array('po_id'=>$po_id), $start, $perpage);
$Po = $oPo->dump($po_id,'*');
foreach($Po_items as $k=>$v)
{
$product = $basicMaterialObj->dump(array('bm_id'=>$v['product_id']), '*');
if(empty($product)){
$Po_items[$k]['name'] = '此商品已不存在';
}
$assign = $libBranchProductPos->get_pos($v['product_id'],$Po['branch_id']);
if(empty($assign))
{
$pos_list = $libBranchProductPos->get_unassign_pos($Po['branch_id']);
$Po_items[$k]['is_new']="true";
}else{
$Po_items[$k]['is_new']="false";
$pos_list = $assign;
}
$Po_items[$k]['entry_num'] = $v['num']-$v['in_num'];
$Po_items[$k]['pos_list']=$pos_list;
}
//获取采购单供应商经办人/负责人
$oSupplier = app::get('purchase')->model('supplier');
$supplier = $oSupplier->dump($Po['supplier_id'], 'operator');
if (!$supplier['operator']) $supplier['operator'] = '未知';
$this->pagedata['operator'] = $supplier['operator'];
$this->pagedata['Po_items'] = $Po_items;
$this->pagedata['po_id'] = $po_id;
$this->pagedata['multi']=$multi;
$this->pagedata['count']=$count;//branch_id
$this->pagedata['branch_id']=$Po['branch_id'];
$this->pagedata['top_title'] = $top_title;
$this->display("admin/eo/eo_confirmlist.html");
}
/**
* 保存采购信息入库
*/
function save_eo_confirm(){
$this->begin('index.php?app=wms&ctl=admin_purchase&act=eoList&p[0]=i');
$oPo_items = app::get('purchase')->model("po_items");
$oEo = app::get('purchase')->model("eo");
$basicMaterialObj = app::get('material')->model('basic_material');
$basicMaterialConf = app::get('material')->model('basic_material_conf');
$basicMReceiptStorageLifeLib = kernel::single('material_receipt_storagelife');
$basicMStorageLifeLib = kernel::single('material_storagelife');
//$codeBaseLib = kernel::single('material_codebase');
$entry_num = $_POST['entry_num'];
$po_id = $_POST['po_id'];
$ids = $_POST['ids'];//当前入库的明细item_id标记
$branch_id = $_POST['branch_id'];
$expire_bm_ids = $_POST['is_expire_bn'];
$expire_bm_arr = $_POST['expire_bm_info'];
if (isset($_POST['arrival_no']) && preg_match("/[\x7f-\xff]/", $_POST['arrival_no'])) {
$this->end(false, '到货单号不能包含中文', 'index.php?app=wms&ctl=admin_eo&act=eo_confirm&p[0]='.$po_id);
}
//有保质期物料数据处理
$all_expire_bm_arr = array();
$has_expire_bn = false;
if($expire_bm_ids){
$has_expire_bn = true;
$poObj = app::get('purchase')->model("po");
$poBillInfo = $poObj->dump(array('po_id'=>$po_id),'po_bn');
if($expire_bm_arr){
foreach($expire_bm_arr as $expire_bm){
$tmp_expire_bm_arr = array();
$tmp_expire_bm_arr = json_decode($expire_bm,true);
if($tmp_expire_bm_arr){
foreach($tmp_expire_bm_arr as $k => $tmp_expire_bm){
//如果保质期已存在,判断是否有效状态可操作
$storageLifeInfo = $basicMStorageLifeLib->getStorageLifeBatch($branch_id, $tmp_expire_bm['bm_id'], $tmp_expire_bm['expire_bn']);
if($storageLifeInfo){
if($storageLifeInfo['status'] == 2){
$this->end(false, '保质期条码已被关闭停用:'.$tmp_expire_bm['expire_bn'], 'index.php?app=wms&ctl=admin_eo&act=eo_confirm&p[0]='.$po_id);
}
}
$basicMInfo = $basicMaterialObj->dump(array('bm_id'=>$tmp_expire_bm['bm_id']), 'bm_id, material_name, material_bn,material_bn_crc32');
$basicMaterialConfInfo = $basicMaterialConf->dump(array('bm_id'=>$tmp_expire_bm['bm_id']), 'warn_day,quit_day');
//数组格式化批次货品的具体每个批次
$all_expire_bm_arr[] = array_merge($tmp_expire_bm,$basicMInfo,$basicMaterialConfInfo,array('branch_id'=>$branch_id,'bill_id'=>$po_id,'bill_bn'=>$poBillInfo['po_bn'],'bill_type'=>1,'bill_io_type'=>1));
$all_expire_ids[] = $basicMInfo['bm_id'];
$all_expire_bn_ids[$basicMInfo['bm_id']] = $basicMInfo['material_bn'];
//重新计算批次货品的入库数量总数
if(isset($entry_num[$tmp_expire_bm['item_id']])){
$entry_num[$tmp_expire_bm['item_id']] += $tmp_expire_bm['in_num'];
}else{
$entry_num[$tmp_expire_bm['item_id']] = $tmp_expire_bm['in_num'];
}
}
}
}
}
if($entry_num){
foreach($entry_num as $k =>$val){
$_POST['entry_num'][$k] = $val;
}
}
if(empty($all_expire_ids))
{
$this->end(false, '保质期信息没有录入', 'index.php?app=wms&ctl=admin_eo&act=eo_confirm&p[0]='.$po_id);
}
foreach((array)$expire_bm_ids as $bm_id){
if(!in_array($bm_id,$all_expire_ids)){
$this->end(false, '物料:'.$all_expire_bn_ids[$bm_id].'的保质期信息没有录入', 'index.php?app=wms&ctl=admin_eo&act=eo_confirm&p[0]='.$po_id);
}
}
}
//error_log(var_export($entry_num,true),3,__FILE__.".2.log");
if (empty($ids)){
$this->end(false, '请选择需要入库的商品', 'index.php?app=wms&ctl=admin_eo&act=eo_confirm&p[0]='.$po_id);
}
$ret = array();
foreach($ids as $i){
if ($entry_num[$i] <= 0){
$this->end(false, '入库量必须大于0', 'index.php?app=wms&ctl=admin_eo&act=eo_confirm&p[0]='.$po_id);
}
$Po_items=$oPo_items->dump(array('po_id'=>$po_id,'item_id'=>$i),'num,in_num,product_id');
$p_entry_num = $Po_items['num']-$Po_items['in_num'];
if($entry_num[$i]>$p_entry_num){
$this->end(false, '入库量大于可入库量', 'index.php?app=wms&ctl=admin_eo&act=eo_confirm&p[0]='.$po_id);
}
if(app::get('taoguaninventory')->is_installed()){
$check_inventory = kernel::single('taoguaninventory_inventorylist')->checkproductoper($Po_items['product_id'],$branch_id);
if(!$check_inventory){
$this->end(false, '此商品正在盘点中,不可以入库!', 'index.php?app=wms&ctl=admin_eo&act=eo_confirm&p[0]='.$po_id);
}
}
}
$msg = [];
//保质期信息保存
$is_save = $basicMReceiptStorageLifeLib->generate($all_expire_bm_arr,$msg);
//如果有批次信息
if(($has_expire_bn && $is_save) || !$has_expire_bn){
//更新采购入库单、更新库存数、生成出入库明细
kernel::single('wms_eo')->save_eo($_POST);
//事件触发,通知oms采购单入库 add by danny event notify
kernel::single('wms_event_trigger_purchase')->inStorage($_POST,true);
#$result = kernel::single('wms_eo')->notify_purchase($po_id,$_POST,'create');
$this->end(true, '入库成功');
}else{
$error_msg = is_array($msg) ? implode('!',$msg) : '批次信息保存失败';
$this->end(false, $error_msg, 'index.php?app=wms&ctl=admin_eo&act=eo_confirm&p[0]='.$po_id);
}
}
/**
* 条码控制入库
*/
function Barcode_stock($po_id){
$oPo = app::get('purchase')->model("po");
$Po = $oPo->dump($po_id,'branch_id,supplier_id');
$this->pagedata['branch_id']=$Po['branch_id'];
$this->pagedata['po_id'] = $po_id;
$stock_confirm= app::get('ome')->getConf('purchase.stock_confirm');
$stock_cancel= app::get('ome')->getConf('purchase.stock_cancel');
$this->pagedata['stock_confirm'] = $stock_confirm;
$this->pagedata['stock_cancel'] = $stock_cancel;
$this->singlepage("admin/eo/eo_barcode.html");
}
/**
* 分页函数
*/
function multipages($count,$perpage,$curr_page,$mpurl) {
//if($count > $perpage) {
$page = 200;
$offset = 200;
$pages = ceil($count / $perpage);
//$multipage .= "".$curr_page." - ".$pages."";
$from = $curr_page - $offset;
$to = $curr_page + $page - $offset - 1;
if($page > $pages) {
$from = 1;
$to = $pages;
} else {
if($from < 1) {
$to = $curr_page + 1 - $from;
$from = 1;
if(($to - $from) < $page && ($to - $from) < $pages) {
$to = $page;
}
} elseif($to > $pages) {
$from = $curr_page - $pages + $to;
$to = $pages;
if(($to - $from) < $page && ($to - $from) < $pages) {
$from = $pages - $page + 1;
}
}
}
$prepage = $curr_page - 1;
$nextpage = $curr_page + 1;
for($i = $from; $i <= $to; $i++) {
$sd = $i*$perpage;
if($i>=200){
$start=(($i-1)*$perpage)+1;
}else{
$start=$i;
}
$multipage .= "
序号".$start."-".$sd."入库商品明细
";
}
//}
return $multipage;
}
function add_pos(){
$obranch_pos = app::get('ome')->model("branch_pos");
$branch_id = $_GET['branch_id'];
$pos_value = $_GET['pos_value'];
$product_id = $_GET['product_id'];
$pos = $obranch_pos->dump(array('branch_id'=>$branch_id,'store_position'=>$pos_value),'pos_id');
if(empty($pos)){
$pos_data = array(
'branch_id'=>$branch_id,
'store_position'=>$pos_value
);
$result = $obranch_pos->save($pos_data);
echo $pos_data['pos_id'];
}else{
echo '0';
}
}
/**
* 根据条码检查是否该货品(基础物料)存在
*
* @param Int $po_ids
* @param Int $barcode
* @return Boolean/String
*/
function get_po_info($po_ids='',$barcode='')
{
$basicMaterialLib = kernel::single('material_basic_material');
$libBranchProductPos = kernel::single('ome_branch_product_pos');
$barcode = $barcode ? $barcode : $_GET['barcode'];
$po_id = $po_ids ? $po_ids :$_GET['po_id'];
$oPo = app::get('purchase')->model("po");
$oPo_items = app::get('purchase')->model("po_items");
$po_items = $oPo_items->dump(array('po_id'=>$po_id,'barcode'=>$barcode),'*');
//fixed by xiayuanjun save_barcode方法调用输出1导致页面显示错误信息的问题
if(empty($po_items)){
return false;
}
$po = $oPo->dump($po_id,'branch_id,operator');
$po_items['operator'] = $po['$po'];
$assign = $libBranchProductPos->get_pos($po_items['product_id'],$po['branch_id']);
$po_items['entry_num'] = 1;#条码入库初始值为1
if(empty($assign)){
$pos_list = $libBranchProductPos->get_unassign_pos($po['branch_id']);
$po_items['is_new']="true";
$po_items['is_new_value']= "是";
}else{
$Po_items['is_new']="false";
$po_items['is_new_value']="否";
$pos_list = $assign;
}
//$pos_list = $assign;
$po_items['is_new_value'] = $po_items['in_num'] ? '否' : '是';
$po_items['pos_list']=$pos_list;
$product_id = $po_items['product_id'];
$bMaterialRow = $basicMaterialLib->getBasicMaterialExt($product_id);
$po_items['unit'] = $bMaterialRow['unit'];
$po_items['visibility'] = ($bMaterialRow['visibled'] == 1 ? true : false);
$po_items['goods_bn'] = $bMaterialRow['material_bn'];
//页面异步检测调用,返回json数据格式结果
if (empty($po_ids)){
//增加是否保质期物料的变量
$basicMStorageLifeLib = kernel::single('material_storagelife');
$is_use_expire = $basicMStorageLifeLib->checkStorageLifeById($product_id);
//根据采购单获取已采购入库的批次信息
$storageLifeBatch = $basicMStorageLifeLib->getStorageLifeBillById($po['branch_id'],$po_id, 1, $product_id);
$po_items['instock_storagelife'] = $storageLifeBatch ? json_encode($storageLifeBatch) : '';
$po_items['use_expire'] = $is_use_expire ? 1 : 0;
$po_items['entry_num'] = $is_use_expire ? 0 : 1;
$po_items['button'] = $is_use_expire ? '关联保质期' : '-';
echo json_encode($po_items);
}else{
//保存方法save_barcode调用,返回Boolean结果
if ($po_items) return true;
else return false;
}
}
/**
* 条码入库保存
*/
function save_barcode(){
$pObj = app::get('purchase')->model("po");
$po_id = $_POST['po_id'];
$operator = $pObj->dump(array('po_id'=>$po_id),'operator');
$_POST['operator'] = $operator['operator'];
$gotourl = 'index.php?app=wms&ctl=admin_eo&act=Barcode_stock&p[0]='.$po_id.'&find_id='.$_POST['find_id'];
$this->begin('');
//异步获取单条条码的对应货品信息
if (empty($_POST['submit_flag'])){
if ($_POST['some_name']){
$po_id = $_POST['po_id'];
$barcode = $_POST['some_name'];
$items = $this->get_po_info($po_id, $barcode);
if ($items){
$msg = '加载成功';
$result = true;
}else{
$msg = '没有找到货品';
$result = false;
}
}else{
$msg = '请输入条码';
$result = false;
}
$this->end($result, $msg, '', array('flag'=>'true'));
}else{
//正式的条码入库方式表单提交处理
$oPo_items = app::get('purchase')->model("po_items");
$oEo = app::get('purchase')->model("eo");
$basicMaterialObj = app::get('material')->model('basic_material');
$basicMaterialConf = app::get('material')->model('basic_material_conf');
$basicMReceiptStorageLifeLib = kernel::single('material_receipt_storagelife');
$basicMStorageLifeLib = kernel::single('material_storagelife');
$codeBaseLib = kernel::single('material_codebase');
$entry_num = $_POST['entry_num'];
$pos_name = $_POST['pos_name'];
$branch_id = $_POST['branch_id'];
$ids = $_POST['ids'];
$expire_bm_ids = $_POST['is_expire_bn'];
$expire_bm_arr = $_POST['expire_bm_info'];
if (isset($_POST['arrival_no']) && preg_match("/[\x7f-\xff]/", $_POST['arrival_no'])) {
$this->end(false, '到货单号不能包含中文', $gotourl);
}
//有保质期物料数据处理
$all_expire_bm_arr = array();
$has_expire_bn = false;
if($expire_bm_ids){
$has_expire_bn = true;
$poObj = app::get('purchase')->model("po");
$poBillInfo = $poObj->dump(array('po_id'=>$po_id),'po_bn');
if($expire_bm_arr && $expire_bm_arr[0] != null){
foreach($expire_bm_arr as $expire_bm){
$tmp_expire_bm_arr = array();
$tmp_expire_bm_arr = json_decode($expire_bm,true);
if($tmp_expire_bm_arr){
foreach($tmp_expire_bm_arr as $k => $tmp_expire_bm)
{
if($k == 0) {
$entry_num[$tmp_expire_bm['item_id']] = 0;
}
//如果保质期已存在,判断是否有效状态可操作
$storageLifeInfo = $basicMStorageLifeLib->getStorageLifeBatch($branch_id, $tmp_expire_bm['bm_id'], $tmp_expire_bm['expire_bn']);
if($storageLifeInfo){
if($storageLifeInfo['status'] == 2){
$this->end(false, '保质期条码已被关闭停用:'.$tmp_expire_bm['expire_bn'], $gotourl);
}
}
$basicMInfo = $basicMaterialObj->dump(array('bm_id'=>$tmp_expire_bm['bm_id']), 'bm_id, material_name, material_bn,material_bn_crc32');
$basicMaterialConfInfo = $basicMaterialConf->dump(array('bm_id'=>$tmp_expire_bm['bm_id']), 'warn_day,quit_day');
//数组格式化批次货品的具体每个批次
$all_expire_bm_arr[] = array_merge($tmp_expire_bm,$basicMInfo,$basicMaterialConfInfo,array('branch_id'=>$branch_id,'bill_id'=>$po_id,'bill_bn'=>$poBillInfo['po_bn'],'bill_type'=>1,'bill_io_type'=>1));
$all_expire_ids[] = $basicMInfo['bm_id'];
$all_expire_bn_ids[$basicMInfo['bm_id']] = $basicMInfo['material_bn'];
//重新计算批次货品的入库数量总数
if(isset($entry_num[$tmp_expire_bm['item_id']])){
$entry_num[$tmp_expire_bm['item_id']] += $tmp_expire_bm['in_num'];
}else{
$entry_num[$tmp_expire_bm['item_id']] = $tmp_expire_bm['in_num'];
}
}
}
}
}else{
$this->end(false, '未录入保质期信息', $gotourl);
}
if($entry_num){
foreach($entry_num as $k =>$val){
$_POST['entry_num'][$k] = $val;
}
}
foreach((array)$expire_bm_ids as $bm_id){
if(!in_array($bm_id,$all_expire_ids)){
$this->end(false, '物料:'.$all_expire_bn_ids[$bm_id].'的保质期信息没有录入', $gotourl);
}
}
}
$timeout = array('autohide'=>5000);
if (empty($ids)){
$this->end(false, '没有任何商品入库,点击关闭页面退出当前入库操作', $gotourl, $timeout);
}
$ret = array();
foreach ($ids as $id) {
if ($entry_num[$id] == 0){
$this->end(false, '货品入库量不可为0', $gotourl);
}
}
foreach($ids as $i){
$Po_items=$oPo_items->dump(array('po_id'=>$po_id,'item_id'=>$i),'num,in_num');
$p_entry_num = $Po_items['num']-$Po_items['in_num'];
if($entry_num[$i]>$p_entry_num){
$this->end(false, '入库量大于可入库量', $gotourl);
}
}
$msg = [];
//保质期信息保存
$is_save = $basicMReceiptStorageLifeLib->generate($all_expire_bm_arr,$msg);
//如果有批次信息
if(($has_expire_bn && $is_save) || !$has_expire_bn){
if($all_expire_bm_arr) $_POST['all_expire_bm_arr'] = $all_expire_bm_arr;
//更新采购入库单、更新库存数、生成出入库明细
kernel::single('wms_eo')->save_eo($_POST);
//事件触发,通知oms采购单入库 add by danny event notify
kernel::single('wms_event_trigger_purchase')->inStorage($_POST,true);
#$result = kernel::single('wms_eo')->notify_purchase($po_id,$_POST,'create');
$this->end(true, '入库成功', $gotourl);
}else{
$error_msg = is_array($msg) ? implode('!',$msg) : '批次信息保存失败';
$this->end(false, $error_msg, $gotourl);
}
}
}
/*打印入库单*/
function printeo($eo_id)
{
$basicMaterialLib = kernel::single('material_basic_material');
$libBranchProductPos = kernel::single('ome_branch_product_pos');
$iostock_instance = kernel::service('taoguaniostockorder.iostockorder');
$eo_de = $iostock_instance->getIso($eo_id);
$eo['detail'] = $eo_de;
$oBranch = app::get('ome')->model("branch");
$oSupplier = app::get('purchase')->model("supplier");
$Branch = $oBranch->dump($eo_de['branch_id'],'name');
$supplier = $oSupplier->dump($eo_de['supplier_id'],'name');
$eo['supplier_name'] = $supplier['name'];
$eo['branch_name'] = $Branch['name'];
$items = $iostock_instance->getIsoItems($eo_id);
$product_cost = 0;
if($items) {
foreach($items as $k=>$v) {
$productInfo = array();
$items[$k]['store_position'] = $libBranchProductPos->get_product_pos($v['product_id'],$eo_de['branch_id']);
$productInfo = $basicMaterialLib->getBasicMaterialExt($v['product_id']);
$items[$k]['barcode'] = $productInfo['barcode'];//读取商品条码
$items[$k]['product_name'] = $productInfo['material_name'];
$items[$k]['spec_info'] = $items[$k]['spec_info'] ? $items[$k]['spec_info'] : $productInfo['specifications'];
$product_cost += $items[$k]['nums']*$items[$k]['price'];
$items[$k]['unit'] = $productInfo['unit'];
}
}
$this->pagedata['product_cost'] = $product_cost;
$eo['items'] = $items;
if($eo['detail']['memo']){
if(!empty($eo['detail']['memo'])){
foreach($eo['detail']['memo'] as $k => $v){
$arr[]= $v['op_content'];
}
}
}
#金额总计=商品总额+出入库费用
$eo['detail']['amount'] = $eo['detail']['product_cost'] +$eo['detail']['iso_price'];
$this->pagedata['eo'] = $eo;
$this->pagedata['process_name'] = '入库';
if($_GET['t'] == 0) {
$this->pagedata['process_name'] = '出库';
}
# 改用新打印模板机制 chenping
kernel::single('ome_print_otmpl')->printOTmpl($_GET['otmplId'],'pureo',$this);
}
function storage_life_instock()
{
$po_id = $_POST['po_id'];
$bm_id = $_POST['bm_id'];
$has_expire_bm_info = $_POST['has_expire_bm_info'] ? $_POST['has_expire_bm_info'] : 1;
//$expire_bm_info_arr = $has_expire_bm_info ? json_decode($has_expire_bm_info,true) : '';
if(empty($po_id) || empty($bm_id))
{
die('无效操作,请检查!');
}
$oPo = app::get('purchase')->model("po");
$poItemsObj = app::get('purchase')->model("po_items");
$basicMaterialObj = app::get('material')->model('basic_material');#基础物料
$basicMStorageLifeLib = kernel::single('material_storagelife');
$basicMaterialStorageLifeObj = app::get('material')->model('basic_material_storage_life');
#采购信息
$Po = $oPo->dump($po_id,'branch_id,supplier_id');
//采购明细
$poItems = $poItemsObj->dump(array('po_id'=>$po_id, 'product_id'=>$bm_id), 'item_id,po_id, bn, num, in_num');
if(empty($poItems))
{
die('没有找到对应的采购入库单信息');
}
//保质期配置信息
$material_conf = $basicMStorageLifeLib->getStorageLifeInfoById($bm_id);
if(!$material_conf)
{
die('没有找到对应的基础物料保质期配置信息!');
}
$row = $basicMaterialObj->dump(array('bm_id'=>$bm_id), 'bm_id, material_name, material_bn');
if(empty($row))
{
die('没有找到对应的基础物料');
}
#已有保质期批次号[排除已过期的]
$filter = array('branch_id'=>$Po['branch_id'], 'bm_id'=>$bm_id, 'expiring_date|than'=>time());
$storageLifeInfo = $basicMaterialStorageLifeObj->getList('bmsl_id', $filter);
$this->pagedata['exist_expire'] = ($storageLifeInfo ? 'true' : 'false');#标记
$this->pagedata['has_expire_bm_info'] = $has_expire_bm_info;
$this->pagedata['po_items'] = $poItems;
$this->pagedata['time_from'] = date('Y-m-d', time());
$this->pagedata['item'] = $row;
$this->pagedata['material_conf'] = $material_conf;
$this->page('admin/eo/storage_life_instock.html');
}
function do_storage_life_instock()
{
$po_id = $_POST['po_id'];
$bm_id = $_POST['bm_id'];
$item_id = $_POST['item_id'];
$expire_barcode = $_POST['expire_barcode'];
$expire_num = $_POST['expire_num'];
$production_date = $_POST['production_date'];
$date_type = $_POST['date_type'];
$guarantee_period = $_POST['guarantee_period'];
$expiring_date = $_POST['expiring_date'];
//生成保质期数据内容字符串
$save_data = array();
$count = 0;
foreach ($expire_barcode as $key => $val)
{
$save_data[$key]['bm_id'] = $bm_id;
$save_data[$key]['item_id'] = $item_id;
$save_data[$key]['expire_bn'] = $val;#物料保质期编码
$save_data[$key]['in_num'] = $expire_num[$key];#入库数量
$save_data[$key]['production_date'] = $production_date[$key];#生产日期
$save_data[$key]['date_type'] = $date_type[$key];
$save_data[$key]['guarantee_period'] = $guarantee_period[$key];#保质期
$save_data[$key]['expiring_date'] = $date_type[$key] == 'date' ? $expiring_date[$key] : '';#过期日期
$count +=$save_data[$key]['in_num'];
}
$msg = json_encode($save_data);
echo json_encode(array('code' => 'SUCC', 'msg' => $msg, 'count'=>$count));
exit;
}
/*
* 检查保质期物料是否存在
*/
function isExistExpireBn()
{
$po_id = $_POST['po_id'];
$bm_id = $_POST['bm_id'];
$expire_bn = $_POST['expire_bn'];
$date_type_list = array(1=>'day', 'month', 'year', 'date');
if(empty($po_id) || empty($bm_id) || empty($expire_bn))
{
echo json_encode(array('code' => 'error', 'msg' => '无效操作'));
exit;
}
$oPo = app::get('purchase')->model("po");
$basicMaterialStorageLifeObj = app::get('material')->model('basic_material_storage_life');
#采购信息
$Po = $oPo->dump($po_id,'branch_id,supplier_id');
#保质期批次号
$filter = array('branch_id'=>$Po['branch_id'], 'bm_id'=>$bm_id, 'expire_bn'=>$expire_bn);
$row = $basicMaterialStorageLifeObj->dump($filter, 'bmsl_id, guarantee_period, production_date, expiring_date, date_type');
if(empty($row))
{
echo json_encode(array('code' => 'error', 'msg' => '没有相关保质期批次号'));
exit;
}
elseif($row['expiring_date'] < time())
{
echo json_encode(array('code' => 'error', 'msg' => '保质期批次号已经过期'));
exit;
}
$data = array('code' => 'SUCC', 'production_date'=>date('Y-m-d', $row['production_date']));
$data['date_type'] = $date_type_list[$row['date_type']];
$data['guarantee_period'] = $row['guarantee_period'];
$data['expire_bn'] = $row['expire_bn'];
echo json_encode($data);
exit;
}
}
?>