文件
mashangyoujiu/Application/Retail/Controller/WebPrintController.class.php

1830 行
96 KiB
PHP
可执行文件

<?php
namespace Retail\Controller;
use Common\Model\RefuseWarehousingModel;
use Retail\Business\InventoryPrint;
use Think\Controller;
//[1.8.76]
class WebPrintController extends BaseController
{
//出货单列表
public function shipmentlist()
{
$this->display();
}
public function shipmentprint()
{
$id = I('get.id');
$allocation = M('retail_allocation')->where(array('id' => $id))->find();
$store = M('retail_store')
->where(array('id' => $allocation['target_storeid']))
->field('id,storetag,address')
->find();
$this->assign('store', $store);
$this->assign('allocation', $allocation);
$this->assign('id', $id);
$this->display();
}
//出货详情
public function shipment_detail_list()
{
$id = I('post.floworderid');
$page = 1;
$limit = I('post.limit');
$limit = $limit ? $limit : 5;
// 减少数据库统计,仅page为1时统计
$count1 = M('retail_allocat_sku_goods')->where(array('allocation_id' => $id, 'isweigh' => 1))->count();
$count2 = M('retail_allocat_sku_goods')->where(array('allocation_id' => $id, 'isweigh' => 2))->count();
$count = $count2 + $count1;
$totalnum1 = M('retail_allocat_sku_goods')->where(array('allocation_id' => $id, 'isweigh' => 1))->sum('goods_num');
$totalnum1 = $totalnum1 ? $totalnum1 : 0;
$totalnum2 = M('retail_allocat_sku_goods')->where(array('allocation_id' => $id, 'isweigh' => 2))->sum('goods_num');
$totalnum2 = $totalnum2 ? $totalnum2 : 0;
$totalallmoney = M('retail_allocat_sku_goods')->where(array('allocation_id' => $id))->sum('goods_num*purch_price');
$totalallmoney = $totalallmoney ? round($totalallmoney, 2) : 0;
$totalnum = $totalnum1 + $totalnum2;
$total['allnum'] = $totalnum;
$total['weighnum'] = $totalnum2;
$total['notweighnum'] = $totalnum1;
$total['allmoney'] = $totalallmoney;
$total['allcount'] = $count;
$total['weighcount'] = $count1;
$total['notweighcount'] = $count2;
$pagecount = ceil($count / $limit);
$num = 0;
$allgoodsarr = array();
while ($page <= $pagecount) {
$goodsinfo = M('retail_allocat_sku_goods')
->where(array('allocation_id' => $id))
->page($page, $limit)
->select();
if ($goodsinfo) {
$money = 0;
foreach ($goodsinfo as $k => &$v) {
$v['index'] = $k + 1 + $num;
$money += $v['goods_num'] * $v['purch_price'];
if ($v['goods_info']) {
$v['goods_info'] = json_decode($v['goods_info'], true);
} else {
$v['goods_info'] = M('retail_mgoods')->where(array('id' => $v['goods_id']))->find();
}
if ($v['goods_sku_info']) {
$v['goods_sku_info'] = json_decode($v['goods_sku_info'], true);
if ($v['goods_sku_info']['name']) {
$v['goods_sku_info']['skuname'] = implode(",", $v['goods_sku_info']['name']);
} else {
$v['goods_sku_info']['skuname'] = $this->skuIdListToSkuName($v['sku_id_list']);
}
} else {
$v['goods_sku_info'] = M('retail_sku_mgoods')->where(array('id' => $v['sku_mgoods_id']))->find();
if ($v['goods_sku_info']) {
$v['goods_sku_info']['skuname'] = $this->skuIdListToSkuName($v['goods_sku_info']['sku_id_list']);
}
}
$v['allmoney'] = round($v['goods_num'] * $v['purch_price'], '2');
}
$money = round($money, 2);
$allgoodsarr[] = array(
'money' => $money,
'goodsinfo' => $goodsinfo
);
$page++;
} else {
break;
}
}
$res['$pagecount'] = $pagecount;
if ($allgoodsarr) {
$res['status'] = 1;
$res['allgoodsarr'] = $allgoodsarr;
$res['info'] = $total;
} else {
$res['pagemoney'] = 0;
$total['len'] = 0;
$total['allmoney'] = 0;
$total['allnum'] = 0;
$res['status'] = 0;
$res['data'] = array();
$res['info'] = $total;
}
$this->ajaxReturn($res);
}
private function skuIdListToSkuName($sku_id_list)
{
if (!$sku_id_list) {
return "";
}
$sku_id_list = trim($sku_id_list, ',');
$skus = M('retail_sku_list')->where(array('id' => array('in', $sku_id_list)))->getField('name', true);
if (empty($skus)) {
return "";
} else {
return implode(',', $skus);
}
}
// 订单打印订单详情
public function orderPrint()
{
$id = I('get.id');
$bill = M('retail_bill_order')->where(array('id' => $id))->find();
if ($bill['type'] == 1) {
$onlineInfo = M('retail_bill_online')->where(array('bill_id' => $id))->find();
if ($onlineInfo['pickup_type'] == 2 || $onlineInfo['pickup_type'] == 3) {
$address['address'] = $onlineInfo['user_address'];
}
$bill['delivery_fee'] = $onlineInfo['delivery_fee'];
$address['name'] = $onlineInfo['user_name'];
$address['phone'] = $onlineInfo['user_phone'];
$this->assign('address', $address);
}
if (in_array('Credit', C('MODULE_ALLOW_LIST'))) {
$CreditArrearageModel = new \Credit\Model\CreditArrearageModel();
$isCreditBill = $CreditArrearageModel->getFind(['bill_id' => $id], 'state');
if ($isCreditBill) {
switch ($isCreditBill) {
case 1:
$bill['credit_repay_state'] = '已还清';
break;
case 2:
$bill['credit_repay_state'] = '未还清';
break;
}
}
}
$bill['place_time'] = date('Y-m-d H:i:s', $bill['add_time']);
$discount = M('retail_bill_discount')->where(array('bill_id' => $bill['id']))->find();
$bill['coupon_money'] = $discount['coupon_money'];
$bill['small_changes_money'] = $discount['small_changes_money'];
$bill['all_dis_money'] = $discount['vip_less_money'] + $discount['vip_dis_money'] + $discount['integral_dis_money'] + $discount['cashier_dis_money'];
$this->assign('bill', $bill);
$this->assign('id', $id);
$this->display();
}
public function orderDatainfo()
{
$id = I('post.id');
$billSellIds = M('retail_sell')->where(array('bill_id' => $id))->getField("id", true);
$page = 1;
$res['bill'] = $billSellIds;
$limit = I('post.limit');
$limit = $limit ? $limit : 5;
// 减少数据库统计,仅page为1时统计
$count1 = M('retail_sell')->where(array('id' => array('in', $billSellIds), 'pricing_method' => 1))->count();
$count2 = M('retail_sell')->where(array('id' => array('in', $billSellIds), 'pricing_method' => 2))->count();
$count = $count2 + $count1;
$totalnum1 = M('retail_sell')->where(array('id' => array('in', $billSellIds), 'pricing_method' => 1))->sum('num');
$totalnum1 = $totalnum1 ? $totalnum1 : 0;
$totalnum2 = M('retail_sell')->where(array('id' => array('in', $billSellIds), 'pricing_method' => 2))->sum('num');
$totalnum2 = $totalnum2 ? $totalnum2 : 0;
$totalallmoney = M('retail_sell')->where(array('id' => array('in', $billSellIds)))->sum('(num-refund_num)*price');
$totalallmoney = $totalallmoney ? round($totalallmoney, 2) : 0;
$totalnum = $totalnum1 + $totalnum2;
$total['allnum'] = $totalnum;
$total['weighnum'] = $totalnum2;
$total['notweighnum'] = $totalnum1;
$total['allmoney'] = $totalallmoney;
$total['allcount'] = $count;
$total['weighcount'] = $count1;
$total['notweighcount'] = $count2;
$pagecount = ceil($count / $limit);
$num = 0;
$allgoodsarr = array();
while ($page <= $pagecount) {
$goodsinfo = M('retail_sell')
->where(array('id' => array('in', $billSellIds)))
->page($page, $limit)
->select();
if ($goodsinfo) {
$money = 0;
foreach ($goodsinfo as $k => &$v) {
$v['index'] = $k + 1 + $num;
$info = $v;
if ($v['goods_type'] == 1) {
$goods = M('retail_goods')
->where(array('id' => $v['goods_id']))
->field('goods_code,company,specifications,goods_number')->find();
if ($goods) {
$info['goods_code'] = $goods['goods_code'];
$info['goods_number'] = $goods['goods_number'];
$info['company'] = $goods['company'];
$info['specifications'] = $goods['specifications'];
}
$money += ($v['num'] - $v['refund_num']) * $v['price'];
if ($v['sku_json_info']) {
$v['goods_sku_info'] = json_decode($v['sku_json_info'], true);
if ($v['goods_sku_info']['name']) {
if (is_array($v['goods_sku_info']['name'])) {
$v['goods_sku_info']['skuname'] = implode(",", $v['goods_sku_info']['name']);
} else {
$v['goods_sku_info']['skuname'] = $v['goods_sku_info']['name'];
}
} else {
$v['goods_sku_info']['skuname'] = $this->skuIdListToSkuName($v['sku_json_info']['sku_id_list']);
}
if ($v['refund_num'] > $v['num']) {
$skunum = $v['goods_sku_info']['num'] ? $v['goods_sku_info']['num'] : $v['goods_sku_info']['sku_num'];
$v['refund_num'] = $v['refund_num'] / $skunum;
}
}
$v['all_money'] = round(($v['num'] - $v['refund_num']) * $v['price'], '2');
$v['goods_num'] = round($v['num'] - $v['refund_num'], 3);
$v['goods_info'] = $info;
} else {
$money += ($v['num'] - $v['refund_num']) * $v['price'];
if (($v['goods_type'] == 2 || $v['goods_id'] == 0) && empty($v['goods_name'])) {
$info['goods_name'] = '无码商品';
}
$v['goods_info'] = $info;
}
}
$money = round($money, 2);
$allgoodsarr[] = array(
'money' => $money,
'goodsinfo' => $goodsinfo
);
$page++;
} else {
break;
}
}
$res['pagecount'] = $pagecount;
if ($allgoodsarr) {
$res['status'] = 1;
$res['allgoodsarr'] = $allgoodsarr;
$res['info'] = $total;
} else {
$res['pagemoney'] = 0;
$total['len'] = 0;
$total['all_money'] = 0;
$total['allnum'] = 0;
$res['status'] = 0;
$res['data'] = array();
$res['info'] = $total;
}
$this->ajaxReturn($res);
}
/**
* *********************************************进销存打印****************************************************************************
*/
/**2019-12-23
* 门店进销存打印
*
*/
public function SPurchaseSale()
{
$store_id = session("storeid");
$data = I('get.');
$data['add_time'] = date("Y-m-d", strtotime($data['add_time']));
if ($data['type'] == 9) {
$store_id = $store_id ? $store_id : $data['store_id'];
} else if ($data['type'] == 10) {
$store_id = $data['store_id'] ? $data['store_id'] : $store_id;
}
$store_info = D("RetailStore")->getFind(array('id' => $store_id), "storetag,phone,province,city,area");
$store_info['phone'] = $store_info['phone'] ? $store_info['phone'] : '';
$address = $store_info['province'] . $store_info['city'] . $store_info['area'];
switch ($data['type']) {
case 1:
$title = $store_info['storetag'] . '采购单';
$where['purchase_order_id'] = $data['id'];
$count = D('SPurchaseGoods')->getCount($where);
break;
case 2:
$title = $store_info['storetag'] . '采购退货单';
$where['retreat_order_id'] = $data['id'];
$count = D('SRetreatGoods')->getCount($where);
break;
case 3:
$title = $store_info['storetag'] . '盘点单';
$where['inventory_order_id'] = $data['id'];
$count = D('SInventoryGoods')->getCount($where);
break;
case 4:
$title = $store_info['storetag'] . '报损单';
$where['loss_order_id'] = $data['id'];
$count = D('SLossReportGoods')->getCount($where);
break;
case 5:
$cate = $data['cate'];
switch ($cate) {
case 4:
$operation_type = "商户调拨";
$where['warehouse_record_id'] = $data['id'];
$where['type'] = 1;
$count = D('StockOutGoods')->getCount($where);
break;
case 5:
$operation_type = "门店调拨";
$where['warehouse_record_id'] = $data['id'];
$where['type'] = 3;
$count = D('SStockOutGoods')->getCount($where);
break;
case 6:
$operation_type = '申请商户调拨';
$where['warehouse_record_id'] = $data['id'];
$where['type'] = 3;
$count = D('StockOutGoods')->getCount($where);
break;
}
$title = "调拨单";
$this->assign('operation_type', $operation_type);
break;
case 6:
$cate = $data['cate'];
$where = array(
'warehouse_record_id' => $data['id']
);
$count = D('SWarehousingGoods')->getCount($where);
switch ($cate) {
case 0:
$operation_type = "其他入库";
break;
case 1:
$operation_type = "采购入库";
break;
case 2:
$operation_type = "补货入库";
break;
case 3:
$operation_type = "盘盈入库";
break;
case 4:
$operation_type = "商户调拨入库";
break;
case 5:
$operation_type = $data['store_name'] . "调拨入库";
break;
case 6:
$operation_type = "申请商户调拨入库";
break;
}
$this->assign('operation_type', $operation_type);
$title = $store_info['storetag'] . "入库单";
break;
case 7:
$cate = $data['cate'];
$where['stock_out_id'] = $data['id'];
$count = D('SStockOutGoods')->getCount($where);
switch ($cate) {
case 0:
$operation_type = "其他出库";
break;
case 1:
$operation_type = "退货至商户";
break;
case 2:
$operation_type = "盘亏";
break;
case 3:
$operation_type = "调拨至" . $data['store_name'];
break;
case 9:
$operation_type = "退货至供货商";
break;
}
$title = $store_info['storetag'] . "出库单";
$this->assign('operation_type', $operation_type);
break;
case 8:
$cate = $data['cate'];
$where = array(
'warehouse_record_id' => $data['id']
);
switch ($cate) {
case 1:
$title = "商户入库单";
$count = D('WarehousingGoods')->getCount($where);
break;
case 3:
$title = $data['store_name'] . "入库单";
$count = D('SWarehousingGoods')->getCount($where);
break;
}
break;
case 9:
$where = array('allocation_id' => $data['id']);
$count = D('AllocationGoods')->getCount($where);
switch ($data['identity']) {
case 1:
$title = $data['store_name'] . '申请调拨单';
break;
case 2:
$title = $store_info['storetag'] . "申请调拨单";
break;
}
break;
case 10:
//拒收详情
$where['stock_out_id'] = $data['id'];
$where['type'] = 3;
$refuseModel = new RefuseWarehousingModel();
$count = $refuseModel->getCount($where);
$operation_type = $store_info['storetag'] . "调拨至" . $data['store_name'] . '的拒收商品';
$title = $store_info['storetag'] . "调拨出库" . $data['store_name'] . "门店拒收的商品";
$this->assign('operation_type', $operation_type);
break;
}
switch ($data['type']) {
case 1:
case 2:
//供货商信息
$supplier = D('SSupplier')->getFieldInfo(array('id' => $data['supplier_id']), "supplier_name,province,city,area,linkman,phone");
$supplier['supplier_address'] = $supplier['province'] . $supplier['city'] . $supplier['area'];
$supplier['supplier_phone'] = $supplier['phone'];
unset($supplier['phone']);
$this->assign('purchase_state', true);
$this->assign('supplier', $supplier);
$this->assign('money_total', $data['money_total']);
$this->assign('warehouse_state', $data['warehouse_state']);
if ($data['type'] == 2) {
$this->assign('ret_num_state', true);
$this->assign('retreat_state', true);
$this->assign('difference_state', true);
} else {
$this->assign('pur_num_state', true);
}
break;
case 3:
$this->assign('cost_state', true);
$this->assign('g_num_state', true);
$this->assign('in_num_state', true);
$this->assign('num_state', true);
$this->assign('all_num', '数量:' . $data['quantity']);
$this->assign('money_total', '金额:' . $data['amount']);
break;
case 4:
$where = array(
'loss_order_id' => $data['id']
);
$all_num = D('SLossReportGoods')->where($where)->sum("loss_num");
$all_num = $all_num ? round($all_num, 3) : 0;
$this->assign('cost_state', true);
$this->assign('pur_num_state', true);
$this->assign('all_num', '数量:' . $all_num);
$this->assign('money_total', '金额:' . $data['money_total']);
break;
case 5:
case 6:
case 7:
case 8:
case 10:
$merchant_id = session("ls_userinfo")['merchantid'];
if ($data['type'] == 5 && ($data['cate'] == 4 || $data['cate'] == 6)) {
$supplier = D("RetailMerchant")->where(array('id' => $merchant_id))->field("name,province,city,area,mobile")->find();
$province = M("citys")->where(array('cityid' => $supplier['province']))->getField("city_name");
$city = M("citys")->where(array('cityid' => $supplier['city']))->getField("city_name");
$area = M("citys")->where(array('cityid' => $supplier['area']))->getField("city_name");
$supplier['supplier_address'] = $province . $city . $area;
$supplier['supplier_phone'] = $supplier['mobile'];
$supplier['supplier_name'] = "商户";
$supplier['linkman'] = $supplier['name'];
$data['operator'] = $supplier['linkman'];
} else if ($data['type'] == 5 && $data['cate'] == 5) {
$source_store_info = D("RetailStore")->getFind(array('id' => $data['source_store_id']), "storetag,phone,province,city,area");
$supplier['supplier_address'] = $source_store_info['province'] . $source_store_info['city'] . $source_store_info['area'];
$supplier['supplier_phone'] = $source_store_info['phone'];
$supplier['supplier_name'] = $source_store_info['storetag'];
$manager = M("retail_manager")->where(array('storeid' => $data['source_store_id']))->order("id asc")->field("name")->find();
$supplier['linkman'] = $manager['name'];
$data['operator'] = $manager['name'];
}
if ($data['type'] == 6 && ($data['cate'] == 1 || $data['cate'] == 4 || $data['cate'] == 5 || $data['cate'] == 6)) {
if ($data['cate'] == 1) {
$supplier = D('SSupplier')->getFieldInfo(array('id' => $data['supplier_id']), "supplier_name,province,city,area,linkman,phone");
$supplier['supplier_address'] = $supplier['province'] . $supplier['city'] . $supplier['area'];
$supplier['supplier_phone'] = $supplier['phone'];
unset($supplier['phone']);
} else if ($data['cate'] == 5) {
$source_store_info = D("RetailStore")->getFind(array('id' => $data['source_store_id']), "storetag,phone,province,city,area");
$supplier['supplier_address'] = $source_store_info['province'] . $source_store_info['city'] . $source_store_info['area'];
$supplier['supplier_phone'] = $source_store_info['phone'];
$supplier['supplier_name'] = $source_store_info['storetag'];
$manager = M("retail_manager")->where(array('storeid' => $data['source_store_id']))->order("id asc")->field("name")->find();
$supplier['linkman'] = $manager['name'];
} else {
$supplier = D("RetailMerchant")->where(array('id' => $merchant_id))->field("name,province,city,area,mobile")->find();
$province = M("citys")->where(array('cityid' => $supplier['province']))->getField("city_name");
$city = M("citys")->where(array('cityid' => $supplier['city']))->getField("city_name");
$area = M("citys")->where(array('cityid' => $supplier['area']))->getField("city_name");
$supplier['supplier_address'] = $province . $city . $area;
$supplier['supplier_phone'] = $supplier['mobile'];
$supplier['supplier_name'] = "商户";
$supplier['linkman'] = $supplier['name'];
$data['operator'] = $supplier['linkman'];
}
}
if ($data['type'] == 7 || $data['type'] == 10) {
switch ($data['cate']) {
case 1:
$supplier = D("RetailMerchant")->where(array('id' => $merchant_id))->field("name,province,city,area,mobile")->find();
$province = M("citys")->where(array('cityid' => $supplier['province']))->getField("city_name");
$city = M("citys")->where(array('cityid' => $supplier['city']))->getField("city_name");
$area = M("citys")->where(array('cityid' => $supplier['area']))->getField("city_name");
$supplier['supplier_address'] = $province . $city . $area;
$supplier['supplier_phone'] = $supplier['mobile'];
$supplier['supplier_name'] = "商户";
$supplier['linkman'] = $supplier['name'];
$data['operator'] = $supplier['linkman'];
break;
case 3:
$source_store_info = D("RetailStore")->getFind(array('id' => $data['transfer_to_store_id']), "storetag,phone,province,city,area");
$supplier['supplier_address'] = $source_store_info['province'] . $source_store_info['city'] . $source_store_info['area'];
$supplier['supplier_phone'] = $source_store_info['phone'];
$supplier['supplier_name'] = $source_store_info['storetag'];
$manager = M("retail_manager")->where(array('storeid' => $data['transfer_to_store_id']))->order("id asc")->field("name")->find();
$supplier['linkman'] = $manager['name'];
break;
case 9:
$supplier = D('SSupplier')->getFieldInfo(array('id' => $data['supplier_id']), "supplier_name,province,city,area,linkman,phone");
$supplier['supplier_address'] = $supplier['province'] . $supplier['city'] . $supplier['area'];
$supplier['supplier_phone'] = $supplier['phone'];
unset($supplier['phone']);
break;
}
}
if ($data['type'] == 8) {
if ($data['cate'] == 1) {
$supplier = D("RetailMerchant")->where(array('id' => $merchant_id))->field("name,province,city,area,mobile")->find();
$province = M("citys")->where(array('cityid' => $supplier['province']))->getField("city_name");
$city = M("citys")->where(array('cityid' => $supplier['city']))->getField("city_name");
$area = M("citys")->where(array('cityid' => $supplier['area']))->getField("city_name");
$manager = M("retail_manager")->where(array('storeid' => $store_id))->order("id asc")->field("name")->find();
$data['operator'] = $supplier['name'];
$store_info['phone'] = $supplier['mobile'];
$supplier['supplier_address'] = $address;
$supplier['supplier_phone'] = $store_info['phone'];
$supplier['supplier_name'] = $store_info['storetag'];
$supplier['linkman'] = $manager['name'];
$address = $province . $city . $area;
} else if ($data['cate'] == 3) {
$source_store_info = D("RetailStore")->getFind(array('id' => $data['transfer_to_store_id']), "storetag,phone,province,city,area");
$supplier['supplier_address'] = $address;
$supplier['supplier_phone'] = $store_info['phone'];
$supplier['supplier_name'] = $store_info['storetag'];
$manager = M("retail_manager")->where(array('storeid' => $data['transfer_to_store_id']))->order("id asc")->field("name")->find();
$manager_two = M("retail_manager")->where(array('storeid' => $store_id))->order("id asc")->field("name")->find();
$supplier['linkman'] = $manager_two['name'];
$data['operator'] = $manager['name'];
$address = $source_store_info['province'] . $source_store_info['city'] . $source_store_info['area'];
$store_info['phone'] = $source_store_info['phone'];
}
}
switch ($data['type']) {
case 5:
case 6:
case 8:
$this->assign('warehouse_state', true);
$this->assign('pur_num_state', true);
break;
case 7:
case 10:
$this->assign('stock_state', true);
$this->assign('st_num_state', true);
break;
}
$this->assign('supplier', $supplier);
$this->assign('cate', $data['cate']);
$this->assign('store_name', $data['store_name']);
$this->assign('money_total', round($data['money_total'], 2));
break;
case 9:
$merchant_id = session("ls_userinfo")['merchantid'];
$supplier = D("RetailMerchant")->where(array('id' => $merchant_id))->field("name,province,city,area,mobile")->find();
$province = M("citys")->where(array('cityid' => $supplier['province']))->getField("city_name");
$city = M("citys")->where(array('cityid' => $supplier['city']))->getField("city_name");
$area = M("citys")->where(array('cityid' => $supplier['area']))->getField("city_name");
$supplier['supplier_address'] = $province . $city . $area;
$supplier['supplier_phone'] = $supplier['mobile'];
$supplier['supplier_name'] = "商户";
$supplier['linkman'] = $supplier['name'];
$data['operator'] = $supplier['linkman'];
$data['warehouse'] = D('SSaleWarehouse')->getFindField(array('store_id' => $store_id, 'status' => 1), "name");
if ($data['status'] == 2) {
$this->assign('stock_state', true);
$this->assign('st_num_state', true);
$this->assign('st_sub_state', true);
} else if ($data['status'] == 3) {
$this->assign('stock_state', true);
$this->assign('st_num_state', true);
$this->assign('st_sub_state', true);
$this->assign('warehouse_state', true);
$this->assign('war_state', true);
$this->assign('pur_sub_state', true);
}
$this->assign('status', $data['status']);
$this->assign('supplier', $supplier);
$this->assign('app_num_state', true);
$this->assign('operation_type', "申请商户调拨");
$this->assign('stock_time', date('Y-m-d', strtotime($data['stock_time'])));
$this->assign('storage_time', date('Y-m-d', strtotime($data['storage_time'])));
$this->assign('ware_money', round($data['accept_money_total']));
$this->assign('status_state', $data['status_name']);
$this->assign('money_total', round($data['money_total']));
break;
}
$this->assign('showPrice', $data['showPrice']);
$this->assign('identity', $data['identity']);
$this->assign('id', $data['id']);
$this->assign('type', $data['type']);
$this->assign('title', $title);
$this->assign('storetag', $store_info['storetag']);
$this->assign('warehouse', $data['warehouse']);
$this->assign('order_number', $data['order_number']);
$this->assign('add_time', $data['add_time']);
$this->assign('goods_species', $data['goods_species']);
$this->assign('remarks', $data['remarks']);
$this->assign('phone', $store_info['phone']);
$this->assign('address', $address);
$this->assign('operator', $data['operator'] ? $data['operator'] : '');
$this->assign('count', $count ? $count : 10);
$this->display();
}
/**
* 门店进销存打印列表
*/
public function getSPurchaseList()
{
$store_id = session("storeid");
$data = I("post.");
$id = $data['id'];
$type = $data['type'];
$page = 1;
$limit = $data['limit'];
$print = D("InventoryPrint")->getFind(array('type' => 2, 'store_id' => $store_id));
$allgoodsarr = array();
switch ($data['type']) {
case 1:
$where['purchase_order_id'] = $data['id'];
$count = D('SPurchaseGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SPurchaseGoods')->getSelect($where, $page, $limit, $field = '', 'id asc');
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
$val['sku_num'] = round($val['sku_num'], 3);
$val['purchase_num'] = round($val['purchase_num'], 3);
$val['purchase_price'] = round($val['purchase_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
if ($val['attribute_state'] == 2) {
$val['goods_number'] = $val['sku_goods_number'];
$val['goods_code'] = $val['sku_code'];
}
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList,
);
$page++;
}
}
break;
case 2:
$where['retreat_order_id'] = $data['id'];
$count = D('SRetreatGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SRetreatGoods')->getSelect($where, $page, $limit, $field = '', 'id asc');
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['retreat_num'] = round($val['retreat_num'], 3);
$val['retreat_price'] = round($val['retreat_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_number'] = $val['sku_goods_number'];
$val['goods_code'] = $val['sku_code'];
}
$val['purchase_price'] = round($val['purchase_price'], 2);
$val['difference_money'] = round(($val['retreat_price'] - $val['purchase_price']) * $val['retreat_num'], 2);
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList,
);
$page++;
}
}
break;
case 3:
$where['state'] = 1;
$where['inventory_order_id'] = $data['id'];
$count = D('SInventoryGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SInventoryGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
$pageNum = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$pageNum += $val['num'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['inventory_num'] = round($val['inventory_num'], 3);
$val['cost_price'] = round($val['cost_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
$val['goods_num'] = round($val['goods_num'], 3);
$val['num'] = round($val['num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => '金额:' . round($pageTotal, 2),
'pageNum' => '数量:' . round($pageNum, 3),
'goodsinfo' => $detailsList,
);
$page++;
}
}
break;
case 4:
$where['loss_order_id'] = $data['id'];
$count = D('SLossReportGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SLossReportGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
$pageNum = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$pageNum += $val['loss_num'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['purchase_num'] = round($val['loss_num'], 3);
$val['cost_price'] = round($val['loss_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => '金额:' . round($pageTotal, 2),
'pageNum' => '数量:' . round($pageNum, 2),
'goodsinfo' => $detailsList,
);
$page++;
}
}
break;
case 5:
$cate = $data['cate'];
$id = $data['id'];
if ($cate == 4 || $cate == 6) {
//商家调拨单
$where['warehouse_record_id'] = $id;
if ($cate == 4) {
$where['type'] = 1;
} else if ($cate == 6) {
$where['type'] = 3;
}
$count = D('StockOutGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('StockOutGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['sku_num'] = round($val['sku_num'], 3);
$val['purchase_num'] = round($val['stock_num'], 3);
$val['warehouse_price'] = round($val['stock_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
} else if ($cate == 5) {
//门店调拨
$where['warehouse_record_id'] = $id;
$where['type'] = 3;
$count = D('SStockOutGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SStockOutGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['purchase_num'] = round($val['stock_num'], 3);
$val['warehouse_price'] = round($val['stock_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
}
break;
case 6:
$id = $data['id'];
$cate = $data['cate'];
$where = array(
'warehouse_record_id' => $id
);
$count = D('SWarehousingGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SWarehousingGoods')->getSelect($where, $page, $limit, $fields = '', 'id asc');
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['sku_num'] = round($val['sku_num'], 3);
$val['purchase_num'] = round($val['warehouse_num'], 3);
$val['warehouse_price'] = round($val['warehouse_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 7:
$cate = $data['cate'];
$where['stock_out_id'] = $data['id'];
$where['type'] = ['in','0,1,2,3,9'];
$count = D('SStockOutGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SStockOutGoods')->getSelect($where, $page, $limit, "*", "id asc");
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['stock_num'] = round($val['stock_num'], 3);
$val['stock_price'] = round($val['stock_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 8:
$id = $data['id'];
$cate = $data['cate'];
$where = array(
'warehouse_record_id' => $id
);
if ($cate == 1) {
//商户入库
$count = D('WarehousingGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('WarehousingGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['sku_num'] = round($val['sku_num'], 3);
$val['purchase_num'] = round($val['warehouse_num'], 3);
$val['warehouse_price'] = round($val['warehouse_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
} else if ($cate == 3) {
//门店入库
$count = D('SWarehousingGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SWarehousingGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['sku_num'] = round($val['sku_num'], 3);
$val['purchase_num'] = round($val['warehouse_num'], 3);
$val['warehouse_price'] = round($val['warehouse_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
}
break;
case 9:
$id = $data['id'];
$where = array('allocation_id' => $id);
$orderInfo = D('AllocationOrder')->getFind(array('id' => $id));
if (!empty($orderInfo['stock_order_id'])) {
$stockGoods = D('StockOutGoods')->getSelect(array('stock_out_id' => $orderInfo['stock_order_id']));
}
if (!empty($orderInfo['warehouse_order_id'])) {
$warehouseGoods = D('SWarehousingGoods')->getSelect(array('warehouse_record_id' => $orderInfo['warehouse_order_id']));
}
//商户入库
$count = D('AllocationGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('AllocationGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
$stockTotal = 0;
foreach ($detailsList as $key => &$val) {
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
if ($val['attribute_state'] == 2) {
$val['goods_number'] = $val['sku_goods_number'];
$val['goods_code'] = $val['sku_code'];
}
$val['apply_num'] = round($val['apply_num'], 3);
$val['sku_num'] = round($val['sku_num'], 3);
if (!empty($stockGoods)) {
foreach ($stockGoods as $skey => $sval) {
if ($val['attribute_state'] == 2 && $val['goods_id'] == $sval['goods_id'] && $val['sku_id'] == $sval['sku_id'] || $val['attribute_state'] == 1 && $val['goods_id'] == $sval['goods_id']) {
$val['stock_num'] = round($sval['stock_num'], 3);
$val['stock_price'] = round($sval['stock_price'], 2);
$val['stock_price_total'] = round($val['stock_num'] * $val['stock_price'], 2);
$stockTotal += $val['stock_price_total'];
}
}
}
if (!empty($warehouseGoods)) {
foreach ($warehouseGoods as $wkey => $wval) {
if ($val['attribute_state'] == 2 && $val['goods_number'] == $wval['sku_goods_number'] || $val['attribute_state'] == 1 && $val['goods_number'] == $wval['goods_number']) {
$val['warehouse_num'] = round($wval['warehouse_num'], 3);
$val['warehouse_price'] = round($wval['warehouse_price'], 2);
$val['warehouse_price_total'] = round($val['warehouse_num'] * $val['warehouse_price'], 2);
$pageTotal += $val['warehouse_price_total'];
}
}
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'stockTotal' => round($stockTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 10:
$where['stock_out_id'] = $data['id'];
$where['type'] = 3;
$refuseModel = new RefuseWarehousingModel();
$count = $refuseModel->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = $refuseModel->getSelect($where, $page, $limit, "*", "id asc");
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['stock_num'] = round($val['refuse_num'], 3);
$val['stock_price'] = round($val['stock_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
}
$info = array(
'allcount' => $count,
);
$res['allgoodsarr'] = $allgoodsarr;
$res['pagecount'] = $pageCount;
$res['info'] = $info;
$res['status'] = 1;
$this->ajaxReturn($res);
}
/**
* 商户进销存打印
*/
public function PurchaseSale()
{
$merchant_id = session("merchant_userinfo")['id'];
$merchant_info = D("RetailMerchant")->where(array('id' => $merchant_id))->field("name,province,city,area,mobile")->find();
$province = M("citys")->where(array('cityid' => $merchant_info['province']))->getField("city_name");
$city = M("citys")->where(array('cityid' => $merchant_info['city']))->getField("city_name");
$area = M("citys")->where(array('cityid' => $merchant_info['area']))->getField("city_name");
$address = $province . $city . $area;
$phone = $merchant_info['mobile'];
$data = I('get.');
switch ($data['type']) {
case 1:
$title = $merchant_info['name'] . "采购单";
$where['purchase_order_id'] = $data['id'];
$count = D('PurchaseGoods')->getCount($where);
break;
case 2:
$title = $merchant_info['name'] . "采购退货单";
$where['retreat_order_id'] = $data['id'];
$count = D('RetreatGoods')->getCount($where);
break;
case 3:
$title = $merchant_info['name'] . "盘点单";
$where['inventory_order_id'] = $data['id'];
$count = D('InventoryGoods')->getCount($where);
break;
case 4:
$title = $merchant_info['name'] . "报损单";
$where = array(
'loss_order_id' => $data['id']
);
$count = D('LossReportGoods')->getCount($where);
break;
case 5:
$title = $merchant_info['name'] . "入库单";
$operation_type = $data['stock_name'];
$this->assign('operation_type', $operation_type);
$where = array('warehouse_record_id' => $data['id']);
$count = D('WarehousingGoods')->getCount($where);
break;
case 6:
$title = $data['store_name'] . "退货单";
$where['warehouse_record_id'] = $data['id'];
$where['type'] = 1;
$count = D('SStockOutGoods')->getCount($where);
break;
case 7:
$title = $merchant_info['name'] . "出库单";
$operation_type = $data['stock_name'];
$this->assign('operation_type', $operation_type);
$where['stock_out_id'] = $data['id'];
$count = D('StockOutGoods')->getCount($where);
break;
case 8:
$title = $data['store_name'] . "入库单";
$where = array('warehouse_record_id' => $data['id']);
$count = D('SWarehousingGoods')->getCount($where);
break;
case 9:
$title = $merchant_info['name'] . "调拨出库后门店拒收的商品";
$operation_type = $data['stock_name'];
$this->assign('operation_type', $operation_type);
$where['stock_out_id'] = $data['id'];
$where['type'] = array('in', '1,2');
$refuseGoods = new RefuseWarehousingModel();
$count = $refuseGoods->getCount($where);
break;
}
switch ($data['type']) {
case 1:
case 2:
$supplier = D('RetailSupplier')->getFind(array('id' => $data['supplier_id']), "supplier_name,province,city,area,linkman,phone");
$supplier['supplier_address'] = $supplier['province'] . $supplier['city'] . $supplier['area'];
$supplier['supplier_phone'] = $supplier['phone'];
unset($supplier['phone']);
if ($data['type'] == 2) {
$this->assign('ret_num_state', true);
$this->assign('retreat_state', true);
$this->assign('difference_state', true);
} else {
$this->assign('pur_num_state', true);
}
$this->assign('purchase_state', true);
$this->assign('supplier', $supplier);
$this->assign('warehouse_state', $data['warehouse_state']);
$this->assign('money_total', round($data['money_total'], 2));
break;
case 3:
$data['money_total'] = '金额:' . round($data['amount'], 2);
$this->assign('cost_state', true);
$this->assign('g_num_state', true);
$this->assign('in_num_state', true);
$this->assign('num_state', true);
$this->assign('all_num', '数量:' . $data['quantity']);
$this->assign('money_total', $data['money_total']);
break;
case 4:
$where = array(
'loss_order_id' => $data['id']
);
$all_num = D('LossReportGoods')->where($where)->sum("loss_num");
$all_num = $all_num ? round($all_num, 3) : 0;
$data['money_total'] = '金额:' . round($data['money_total'], 2);
$this->assign('cost_state', true);
$this->assign('pur_num_state', true);
$this->assign('all_num', '数量:' . $all_num);
$this->assign('money_total', $data['money_total']);
break;
case 5:
case 6:
case 7:
case 8:
case 9:
if (in_array($data['type'], [6, 8, 9]) || ($data['type'] == 5 && !empty($data['store_id'])) || ($data['type'] == 7 && !empty($data['store_id']))) {
$store_info = D('Store')->getFind(array('id' => $data['store_id']), "storetag,province,city,area");
$manager = M("retail_manager")->where(array('storeid' => $data['store_id']))->order("id asc")->field("mobile,name")->find();
}
switch ($data['type']) {
case 5:
if (!empty($data['store_id'])) {
$supplier['supplier_name'] = $store_info['storetag'];
$supplier['supplier_address'] = $store_info['province'] . $store_info['city'] . $store_info['area'];
$supplier['supplier_phone'] = $manager['mobile'];
$supplier['linkman'] = $manager['name'];
} else {
$supplier = D('RetailSupplier')->getFind(array('id' => $data['supplier_id']), "supplier_name,province,city,area,linkman,phone");
$supplier['supplier_address'] = $supplier['province'] . $supplier['city'] . $supplier['area'];
$supplier['supplier_phone'] = $supplier['phone'];
unset($supplier['phone']);
}
$this->assign('warehouse_state', true);
$this->assign('pur_num_state', true);
break;
case 6:
$operator_id = D("SStockOutOrder")->getFindField(array('id' => $data['stock_out_id']), "operator_id");
$data['operator'] = A('Api/Inventory')->OperatorName($operator_id);
$supplier['supplier_address'] = $address;
$supplier['supplier_phone'] = $merchant_info['mobile'];
$supplier['supplier_name'] = "商户";
$supplier['linkman'] = $merchant_info['name'];
$address = $store_info['province'] . $store_info['city'] . $store_info['area'];
$phone = $manager['mobile'];
break;
case 7:
if (!empty($data['store_id'])) {
$supplier['supplier_name'] = $store_info['storetag'];
$supplier['supplier_address'] = $store_info['province'] . $store_info['city'] . $store_info['area'];
$supplier['supplier_phone'] = $manager['mobile'];
$supplier['linkman'] = $manager['name'];
} else if (!empty($data['supplier_id'])) {
$supplier = D('RetailSupplier')->getFind(array('id' => $data['supplier_id']), "supplier_name,province,city,area,linkman,phone");
$supplier['supplier_address'] = $supplier['province'] . $supplier['city'] . $supplier['area'];
$supplier['supplier_phone'] = $supplier['phone'];
unset($supplier['phone']);
}
break;
case 8:
$data['operator'] = A('Api/Inventory')->OperatorName($data['operator_id']);
$supplier['supplier_address'] = $address;
$supplier['supplier_phone'] = $merchant_info['mobile'];
$supplier['supplier_name'] = "商户";
$supplier['linkman'] = $merchant_info['name'];
$address = $store_info['province'] . $store_info['city'] . $store_info['area'];
$phone = $manager['mobile'];
$this->assign('warehouse_state', true);
$this->assign('pur_num_state', true);
break;
case 9:
$supplier['supplier_address'] = $store_info['province'] . $store_info['city'] . $store_info['area'];
$supplier['supplier_phone'] = $manager['mobile'];
$supplier['supplier_name'] = $store_info['storetag'];
$supplier['linkman'] = $manager['name'];
break;
}
if (in_array($data['type'], [6, 7, 9])) {
$this->assign('stock_state', true);
$this->assign('st_num_state', true);
}
$data['money_total'] = round($data['money_total'], 2);
$this->assign('supplier', $supplier);
$this->assign('money_total', $data['money_total']);
break;
}
$this->assign('id', $data['id']);
$this->assign('type', $data['type']);
$this->assign('title', $title);
$this->assign('operator', $data['operator']);
$this->assign('address', $address);
$this->assign('phone', $phone);
$this->assign('warehouse', $data['warehouse']);
$this->assign('order_number', $data['order_number']);
$this->assign('add_time', $data['add_time']);
$this->assign('goods_species', $data['goods_species']);
$this->assign('remarks', $data['remarks']);
$this->assign('count', $count ? $count : 10);
$this->display();
}
public function getPurchaseList()
{
$merchant_id = session("merchant_userinfo")['id'];
$data = I("post.");
$page = 1;
$limit = $data['limit'];
$print = D("InventoryPrint")->getFind(array('type' => 1, 'merchant_id' => $merchant_id));
$allgoodsarr = array();
switch ($data['type']) {
case 1:
$where['purchase_order_id'] = $data['id'];
$count = D('PurchaseGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('PurchaseGoods')->getSelect($where, $page, $limit, $field = '', 'id asc');
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['sku_num'] = round($val['sku_num'], 3);
$val['purchase_num'] = round($val['purchase_num'], 3);
$val['purchase_price'] = round($val['purchase_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
if ($val['attribute_state'] == 2) {
$val['goods_number'] = $val['sku_goods_number'];
$val['goods_code'] = $val['sku_code'];
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 2:
$where['retreat_order_id'] = $data['id'];
$count = D('RetreatGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('RetreatGoods')->getSelect($where, $page, $limit, $field = '', 'id asc');
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['retreat_num'] = round($val['retreat_num'], 3);
$val['retreat_price'] = round($val['retreat_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_number'] = $val['sku_goods_number'];
$val['goods_code'] = $val['sku_code'];
}
$val['purchase_price'] = round($val['purchase_price'], 2);
$val['difference_money'] = round(($val['retreat_price'] - $val['purchase_price']) * $val['retreat_num'], 2);
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 3:
$where['state'] = 1;
$where['inventory_order_id'] = $data['id'];
$count = D('InventoryGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('InventoryGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
$pageNum = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$pageNum += $val['num'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['inventory_num'] = round($val['inventory_num'], 3);
$val['cost_price'] = round($val['cost_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
$val['goods_num'] = round($val['goods_num'], 3);
$val['num'] = round($val['num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => '金额:' . round($pageTotal, 2),
'pageNum' => '数量:' . $pageNum,
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 4:
$where['loss_order_id'] = $data['id'];
$count = D('LossReportGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('LossReportGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
$pageNum = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$pageNum += $val['loss_num'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['purchase_num'] = round($val['loss_num'], 3);
$val['cost_price'] = round($val['loss_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => '金额:' . round($pageTotal, 2),
'pageNum' => '数量' . $pageNum,
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 5:
$id = $data['id'];
$where = array('warehouse_record_id' => $id);
$count = D('WarehousingGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('WarehousingGoods')->getSelect($where, $page, $limit, $fields = '', 'id asc');
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['sku_num'] = round($val['sku_num'], 3);
$val['purchase_num'] = round($val['warehouse_num'], 3);
$val['warehouse_price'] = round($val['warehouse_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
if ($val['attribute_state'] == 2) {
$val['goods_number'] = $val['sku_goods_number'];
$val['goods_code'] = $val['sku_code'];
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 6:
//门店退货详情
$where['warehouse_record_id'] = $data['id'];
$where['type'] = 1;
$count = D('SStockOutGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SStockOutGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['sku_num'] = round($val['sku_num'], 3);
$val['stock_num'] = round($val['stock_num'], 3);
$val['stock_price'] = round($val['stock_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 7:
$where['stock_out_id'] = $data['id'];
$count = D('StockOutGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('StockOutGoods')->getSelect($where, $page, $limit, $fields = '', 'id asc');
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['stock_num'] = round($val['stock_num'], 3);
$val['stock_price'] = round($val['stock_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
$val['cost_price'] = round($val['cost_price'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 8:
$id = $data['id'];
$where = array('warehouse_record_id' => $id);
$count = D('SWarehousingGoods')->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = D('SWarehousingGoods')->getSelect($where, $page, $limit);
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['sku_num'] = round($val['sku_num'], 3);
$val['purchase_num'] = round($val['warehouse_num'], 3);
$val['warehouse_price'] = round($val['warehouse_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
case 9:
$where['stock_out_id'] = $data['id'];
$where['type'] = array('in', '1,2');
$refuseGoods = new RefuseWarehousingModel();
$count = $refuseGoods->getCount($where);
$pageCount = ceil($count / $limit);
while ($page <= $pageCount) {
$detailsList = $refuseGoods->getSelect($where, $page, $limit, '*', 'id asc');
if ($detailsList) {
$pageTotal = 0;
foreach ($detailsList as $key => &$val) {
$pageTotal += $val['subtotal'];
$val['index'] = $key + 1;
if (!empty($print['font_num'])) {
if (mb_strlen($val['goods_name']) > $print['font_num']) {
$val['goods_name'] = mb_substr($val['goods_name'], 0, $print['font_num'], 'utf-8');
}
}
if (!empty($print['sku_num'])) {
if (mb_strlen($val['sku_name']) > $print['sku_num']) {
$val['sku_name'] = mb_substr($val['sku_name'], 0, $print['sku_num'], 'utf-8');
}
}
$val['stock_num'] = round($val['refuse_num'], 3);
$val['stock_price'] = round($val['stock_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
$val['sku_num'] = round($val['sku_num'], 3);
$val['cost_price'] = round($val['cost_price'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
}
$allgoodsarr[] = array(
'pageTotal' => round($pageTotal, 2),
'goodsinfo' => $detailsList
);
$page++;
}
}
break;
}
$info = array(
'allcount' => $count,
);
$res['allgoodsarr'] = $allgoodsarr;
$res['pagecount'] = $pageCount;
$res['info'] = $info;
$res['status'] = 1;
$this->ajaxReturn($res);
}
//样式设置保存
public function styleSet()
{
$data = I('post.');
$data['operator_type'] = 1;
$data['merchant_id'] = $this->merchant_id;
$data['user_type'] = 3;
$InventoryPrintClass = new InventoryPrint();
$result = $InventoryPrintClass->styleSet($data);
$this->ajaxReturn($result);
}
//样式设置查询
public function getPrintSet()
{
$data = [
'user_type' => 3,
'merchant_id' => $this->merchant_id,
'set_type'=>I('post.set_type')
];
$InventoryPrintClass = new InventoryPrint();
$result = $InventoryPrintClass->getStyleSet($data);
$this->ajaxReturn($result);
}
//样式设置保存
public function storeStyleSet()
{
$data = I('post.');
$data['operator_type'] = 1;
$data['merchant_id'] = $this->merchant_id;
$data['store_id'] = $this->store_id;
$data['user_type'] = 4;
$InventoryPrintClass = new InventoryPrint();
$result = $InventoryPrintClass->styleSet($data);
$this->ajaxReturn($result);
}
//样式设置查询
public function storeGetPrintSet()
{
$data = I('post.');
$data['user_type'] = 4;
$data['merchant_id'] = $this->merchant_id;
$data['store_id'] = $this->store_id;
$InventoryPrintClass = new InventoryPrint();
$result = $InventoryPrintClass->getStyleSet($data);
$this->ajaxReturn($result);
}
}