Files
OMS/app/wms/controller/admin/delivery.php
2026-01-04 19:08:31 +08:00

219 lines
8.2 KiB
PHP
Raw Permalink 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 2012-2026 ShopeX (https://www.shopex.cn)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class wms_ctl_admin_delivery extends desktop_controller{
var $name = "发货单";
var $workground = "invoice_center";
function index(){
$filter = array(
'type' => 'normal',
'pause' => 'false',
'parent_id' => 0,
'disabled' => 'false',
'status' => array('ready','progress','succ')
);
if(isset($_POST['status']) && ($_POST['status']!='')){
$filter['status'] = $_POST['status'];
}
$this->finder('ome_mdl_delivery',array(
'title' => '发货单',
'base_filter' => $filter,
'use_buildin_new_dialog' => false,
'use_buildin_set_tag'=>false,
'use_buildin_recycle'=>false,
'use_buildin_export'=>false,
'use_buildin_import'=>false,
'use_buildin_filter'=>true,
));
}
function reback(){
$this->page('admin/delivery/reback_delivery.html');
}
function back(){
$this->begin();
if (empty($_POST['select_bn']) && empty($_POST['bn_select'])){
$autohide = array();
$this->end(false, '请输入正确的单号', '', $autohide);
}
$autohide = array('autohide'=>3000);
$dlyObj = app::get('wms')->model('delivery');
$OiObj = app::get('wms')->model('delivery_items');
$dlyBillLib = kernel::single('wms_delivery_bill');
if($_POST['select_bn'] == 'logi_no'){
$select_type = 'logi_no';
$delivery_id = $dlyBillLib->getDeliveryIdByPrimaryLogi($_POST['bn_select']);
if(!$delivery_id){
$delivery_id = $dlyBillLib->getDeliveryIdBySecondaryLogi($_POST['bn_select']);
}
$detail = $dlyObj->dump(array('delivery_id'=>$delivery_id));
}elseif($_POST['select_bn']=='delivery_bn'){
$select_type = 'delivery_bn';
$detail = $dlyObj->dump(array('delivery_bn'=>$_POST['bn_select']));
}
$items = $OiObj->getList('*',array('delivery_id'=>$detail['delivery_id']));
if(empty($detail)){
$this->end(false, '没有该单号的发货单', '', $autohide);
}
$logi_no = $dlyBillLib->getPrimaryLogiNoById($detail['delivery_id']);
$detail['logi_no'] = empty($logi_no) ? '' : $logi_no;
if($detail['status'] == 1){
$this->end(false, '该发货单已经被打回,无法继续操作', '', $autohide);
}
if($detail['delivery_logi_number'] > 0){
$this->end(false, '该发货单已部分发货,无法继续操作', '', $autohide);
}
if($detail['status'] == 2){
$this->end(false, '该发货单已暂停,无法继续操作', '', $autohide);
}
if($detail['status'] == 3){
$this->end(false, '该发货单已经发货,无法继续操作', '', $autohide);
}
if($detail['type'] == 'reject'){
$this->end(false, '该发货单是原样寄回的单子,无法继续操作', '', $autohide);
}
$basicMaterialBarcode = kernel::single('material_basic_material_barcode');
foreach($items as $k=>$value)
{
$barcode_val = $basicMaterialBarcode->getBarcodeById($value['product_id']);
$items[$k]['barcode'] = $barcode_val;
}
if((($detail['print_status'] & 1) == 1) || (($detail['print_status'] & 2) == 2 ) || (($detail['print_status'] & 4) == 4)){
$this->pagedata['is_confirm'] = true;
}
$this->pagedata['select_type'] = $select_type;
$this->pagedata['bn_select'] = $_POST['bn_select'];
$this->pagedata['items'] = $items;
$this->pagedata['detail'] = $detail;
$this->page('admin/delivery/reback_delivery.html');
}
/**
* 打回操作
*
*/
function doReback(){
$autohide = array('autohide'=>3000);
$this->begin('index.php?app=wms&ctl=admin_delivery&showmemo&p[0]='.$_POST['delivery_id']);
if (empty($_POST['memo'])){
$this->end(false, '备注请不要留空', '', $autohide);
}
$dlyObj = app::get('wms')->model('delivery');
$dlyProcessLib = kernel::single('wms_delivery_process');
$opObj = app::get('ome')->model('operation_log');
//$delivery_bn = $dlyObj->dump(array('delivery_id'=>$_POST['delivery_id']),'delivery_bn');
//$logi_info = $delivery_bn['logi_no'] ;
$dlyProcessLib->rebackDelivery($_POST['delivery_id'], $_POST['memo']);
//$opObj->write_log('delivery_back@wms', $_POST['delivery_id'], '发货单打回');
//如果安装拣货app将拣货单状态设为取消
if (app::get('tgkpi')->is_installed()) {
$pickObj = app::get('tgkpi')->model('pick');
$pickObj->update(array('pick_status'=>'cancel'),array('delivery_id'=>$_POST['delivery_id']));
}
$this->end(true, '操作成功', 'index.php?app=wms&ctl=admin_delivery&act=reback', $autohide);
}
/**
* 填写打回备注
*
* @param bigint $dly_id
*/
function showmemo($dly_id){
$deliveryObj = app::get('wms')->model('delivery');
$dly = $deliveryObj->dump($dly_id,'delivery_bn');
$this->pagedata['delivery_id'] = $dly_id;
$this->pagedata['delivery_bn'] = $dly['delivery_bn'];
$this->display("admin/delivery/delivery_showmemo.html");
}
/**
* 加密字段显示明文
*
* @return void
* @author
**/
public function showSensitiveData($delivery_id, $fieldType='')
{
// if (!kernel::single('desktop_user')->has_permission('sensitive_data_show')) {
// $this->splash('error',null,'您无权查看该数据');
// }
$deliveryMdl = app::get('wms')->model('delivery');
$delivery = $deliveryMdl->db_dump($delivery_id,'shop_id,shop_type,ship_name,ship_tel,ship_mobile,ship_addr,delivery_id,delivery_bn,member_id,ship_province,ship_city,ship_district,memo,outer_delivery_bn');
if ($delivery['member_id']) {
$member = app::get('ome')->model('members')->db_dump($delivery['member_id'],'uname');
$delivery['uname'] = $member['uname'];
}
$order_bns = kernel::single('ome_extint_order')->getOrderBns($delivery['outer_delivery_bn']);
$delivery['order_bn'] = current($order_bns);
// 处理加密
$delivery['encrypt_body'] = kernel::single('ome_security_router',$delivery['shop_type'])->get_encrypt_body($delivery, 'delivery', $fieldType);
// 推送日志
// kernel::single('base_hchsafe')->order_log(array('operation'=>'查看发货单收货人信息','tradeIds'=>array($delivery['delivery_bn'])));
//非拼多多丰密手机密文中间4位星号只对丰密模板处理
if($delivery['shop_type'] != 'pinduoduo'){
if($this->_isFm($delivery['logi_id'])){
$delivery['is_asterisk'] = true;
}
}
$this->splash('success',null,null,'redirect',$delivery);
}
private function _isFm($logId){
$flag = false;
$dlyCorpRes = app::get('ome')->model('dly_corp')->dump(array('corp_id'=>$logId),'channel_id');
$logChannelRes = app::get('logisticsmanager')->model('channel')->dump(array('channel_id'=>$dlyCorpRes['channel_id'],'channel_type'=>'sf'),'service_code');
if($logChannelRes){
$flag = true;
}
return $flag;
}
}
?>