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); } }