232 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			232 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php namespace Gdoo\Order\Controllers;
 | |
| 
 | |
| use DB;
 | |
| use Request;
 | |
| use Auth;
 | |
| 
 | |
| use Gdoo\Index\Controllers\DefaultController;
 | |
| 
 | |
| class WidgetController extends DefaultController
 | |
| {
 | |
|     public $permission = ['index', 'goods'];
 | |
| 
 | |
|     public function index()
 | |
|     {
 | |
|         if (Request::method() == 'POST') {
 | |
| 
 | |
|             $region = regionCustomer();
 | |
| 
 | |
|             $ym = date('Y-m');
 | |
|             $ymd = date('Y-m-d');
 | |
| 
 | |
|             // 本日收到 []个客户[]张订单,[]件货。
 | |
|             $model = DB::table('customer_order')
 | |
|             ->leftJoin('customer_order_data', 'customer_order_data.order_id', '=', 'customer_order.id')
 | |
|             ->leftJoin('product', 'product.id', '=', 'customer_order_data.product_id')
 | |
|             ->leftJoin('customer', 'customer.id', '=', 'customer_order.customer_id')
 | |
|             ->whereRaw('product.id <> 20226 and isnull(product.product_type, 0) = 1');
 | |
| 
 | |
|             $model->whereRaw(sql_year_month_day('customer_order.created_at', 'ts').'=?', [$ymd]);
 | |
|             
 | |
|             $model->selectRaw('
 | |
|                 COUNT(DISTINCT customer_order.id) AS count,
 | |
|                 COUNT(DISTINCT customer_order.customer_id) AS customer_count,
 | |
|                 SUM(customer_order_data.delivery_quantity) AS quantity,
 | |
|                 sum(isnull(customer_order_data.money, 0) - isnull(customer_order_data.other_money, 0)) money
 | |
|             ');
 | |
|             
 | |
|             if ($region['authorise']) {
 | |
|                 foreach ($region['whereIn'] as $key => $where) {
 | |
|                     $model->whereIn($key, $where);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             $res = $model->first();
 | |
|             $rows[] = ['id' => 2, 'title' => '本日收到 <span class="red">'.number_format($res['customer_count']).'</span> 个客户 <span class="red">'.number_format($res['count']).'</span> 张订单,<span class="red">'.number_format($res['quantity']).'</span> 件,<span class="red">'.number_format($res['money']).'</span> 元'];
 | |
| 
 | |
|             // 本月收到 []个客户[]张订单,[]件货。
 | |
|             $model = DB::table('customer_order')
 | |
|             ->leftJoin('customer_order_data', 'customer_order_data.order_id', '=', 'customer_order.id')
 | |
|             ->leftJoin('product', 'product.id', '=', 'customer_order_data.product_id')
 | |
|             ->leftJoin('customer', 'customer.id', '=', 'customer_order.customer_id');
 | |
|             
 | |
|             $model->whereRaw('product.id <> 20226 and isnull(product.product_type, 0) = 1');
 | |
|             
 | |
|             $model->whereRaw(sql_year_month('customer_order.created_at', 'ts').'=?', [$ym]);
 | |
|  
 | |
|             $model->selectRaw('
 | |
|                 COUNT(DISTINCT customer_order.id) AS count, 
 | |
|                 COUNT(DISTINCT customer_order.customer_id) AS customer_count, 
 | |
|                 SUM(customer_order_data.delivery_quantity) AS quantity,
 | |
|                 sum(isnull(customer_order_data.money, 0) - isnull(customer_order_data.other_money, 0)) money
 | |
|             ');
 | |
|             
 | |
|             if ($region['authorise']) {
 | |
|                 foreach ($region['whereIn'] as $key => $where) {
 | |
|                     $model->whereIn($key, $where);
 | |
|                 }
 | |
|             }
 | |
|             $res = $model->first();
 | |
|             $rows[] = ['id' => 2, 'title' => '本月收到 <span class="red">'.number_format($res['customer_count']).'</span> 个客户 <span class="red">'.number_format($res['count']).'</span> 张订单,<span class="red">'.number_format($res['quantity']).'</span> 件,<span class="red">'.number_format($res['money']).'</span> 元'];
 | |
|             
 | |
|             // 本月收到的订单中已发出[]张订单,[]件货
 | |
|             $model = DB::table('customer_order')
 | |
|             ->leftJoin('customer_order_data', 'customer_order_data.order_id', '=', 'customer_order.id')
 | |
|             ->leftJoin('product', 'product.id', '=', 'customer_order_data.product_id')
 | |
|             ->leftJoin('customer', 'customer.id', '=', 'customer_order.customer_id');
 | |
|             
 | |
|             $model->whereRaw('product.id <> 20226 and isnull(product.product_type, 0) = 1');
 | |
|             $model->whereRaw(sql_year_month('customer_order.created_at', 'ts').'=?', [$ym]);
 | |
|             
 | |
|             $model->leftJoin(DB::raw("(
 | |
|                 select 
 | |
|                     SUM(ISNULL(d.quantity, 0)) yf_num,
 | |
|                     sum(isnull(d.money, 0) - isnull(d.other_money, 0)) yf_money,
 | |
|                     d.sale_data_id,
 | |
|                     d.sale_id
 | |
|                 FROM stock_delivery_data as d
 | |
|                 left join stock_delivery as m on m.id = d.delivery_id
 | |
|                 GROUP BY d.sale_id, d.sale_data_id
 | |
|                 ) sdd
 | |
|             "), 'customer_order_data.id', '=', 'sdd.sale_data_id');
 | |
|             $model->where('sdd.yf_num', '>', 0);
 | |
| 
 | |
|             if ($region['authorise']) {
 | |
|                 foreach ($region['whereIn'] as $key => $where) {
 | |
|                     $model->whereIn($key, $where);
 | |
|                 }
 | |
|             }
 | |
|             $model->selectRaw('
 | |
|                 COUNT(DISTINCT customer_order.id) AS count, 
 | |
|                 COUNT(DISTINCT sdd.sale_id) AS count, 
 | |
|                 SUM(sdd.yf_num) AS quantity, 
 | |
|                 sum(sdd.yf_money) as money
 | |
|             ');
 | |
|             $res = $model->first();
 | |
|             $rows[] = ['title' => '本月收到的订单中已发出 <span class="red">'.number_format($res['count']).'</span> 张订单,<span class="red">'.number_format($res['quantity']).'</span> 件,<span class="red">'.number_format($res['money']).'</span> 元'];
 | |
| 
 | |
|             // 上月订单本月发出[]张,[]件货。
 | |
|             $model = DB::table('customer_order')
 | |
|             ->leftJoin('customer_order_data', 'customer_order_data.order_id', '=', 'customer_order.id')
 | |
|             ->leftJoin('product', 'product.id', '=', 'customer_order_data.product_id')
 | |
|             ->leftJoin('customer', 'customer.id', '=', 'customer_order.customer_id')
 | |
|             ->whereRaw('isnull(product.product_type, 0) = 1');
 | |
| 
 | |
|             $model->whereRaw(sql_year_month('customer_order.created_at', 'ts').'=?', [date("Y-m", strtotime("-1 month"))]);
 | |
|             
 | |
|             $model->leftJoin(DB::raw("(
 | |
|                 select 
 | |
|                     SUM(ISNULL(d.quantity, 0)) yf_num,
 | |
|                     sum(isnull(d.money, 0) - isnull(d.other_money, 0)) yf_money,
 | |
|                     d.sale_data_id,
 | |
|                     d.sale_id
 | |
|                 FROM stock_delivery_data as d
 | |
|                 left join stock_delivery as m on m.id = d.delivery_id
 | |
|                 where ".sql_year_month('m.invoice_dt')." = '$ym'
 | |
|                 GROUP BY d.sale_id, d.sale_data_id
 | |
|                 ) sdd
 | |
|             "), 'customer_order_data.id', '=', 'sdd.sale_data_id');
 | |
|             $model->where('sdd.yf_num', '>', 0)
 | |
|             ->selectRaw('COUNT(DISTINCT sdd.sale_id) AS count, SUM(sdd.yf_num) AS quantity, sum(sdd.yf_money) as money');
 | |
| 
 | |
|             if ($region['authorise']) {
 | |
|                 foreach ($region['whereIn'] as $key => $where) {
 | |
|                     $model->whereIn($key, $where);
 | |
|                 }
 | |
|             }
 | |
|             $res = $model->first();
 | |
|             $rows[] = ['title' => '上月订单本月发出 <span class="red">'.number_format($res['count']).'</span> 张订单,<span class="red">'.number_format($res['quantity']).' </span>件,<span class="red">'.number_format($res['money']).'</span> 元'];
 | |
| 
 | |
|             // 本月共发出件和金额
 | |
|             $delivery = DB::table('stock_delivery')
 | |
|             ->leftJoin('stock_delivery_data', 'stock_delivery_data.delivery_id', '=', 'stock_delivery.id')
 | |
|             ->leftJoin('product', 'product.id', '=', 'stock_delivery_data.product_id')
 | |
|             ->leftJoin('customer', 'customer.id', '=', 'stock_delivery.customer_id');
 | |
|             $delivery->whereRaw('stock_delivery_data.product_id <> 20226 and isnull(product.product_type, 0) = 1');
 | |
|             $delivery->whereRaw(sql_year_month('stock_delivery.invoice_dt').'=?', [$ym]);
 | |
|             $delivery->groupBy('product.category_id', 'stock_delivery.invoice_dt')
 | |
|             ->selectRaw('
 | |
|                 stock_delivery.invoice_dt,
 | |
|                 product.category_id,
 | |
|                 COUNT(DISTINCT stock_delivery.id) AS count, 
 | |
|                 SUM(stock_delivery_data.quantity) AS quantity, 
 | |
|                 sum(isnull(stock_delivery_data.money, 0) - isnull(stock_delivery_data.other_money, 0)) money
 | |
|             ');
 | |
|             // 本月退货件和金额
 | |
|             $cancel = DB::table('stock_cancel')
 | |
|             ->leftJoin('stock_cancel_data', 'stock_cancel_data.cancel_id', '=', 'stock_cancel.id')
 | |
|             ->leftJoin('product', 'product.id', '=', 'stock_cancel_data.product_id')
 | |
|             ->leftJoin('customer', 'customer.id', '=', 'stock_cancel.customer_id');
 | |
|             $cancel->whereRaw('stock_cancel_data.product_id <> 20226 and isnull(product.product_type, 0) = 1');
 | |
|             $cancel->whereRaw(sql_year_month('stock_cancel.invoice_dt').'=?', [$ym]);
 | |
|             $cancel->groupBy('product.category_id', 'stock_cancel.invoice_dt')
 | |
|             ->selectRaw('
 | |
|                 stock_cancel.invoice_dt,
 | |
|                 product.category_id,
 | |
|                 COUNT(DISTINCT stock_cancel.id) AS count, 
 | |
|                 SUM(stock_cancel_data.quantity) AS quantity,
 | |
|                 sum(isnull(stock_cancel_data.money, 0) - isnull(stock_cancel_data.other_money, 0)) money
 | |
|             ');
 | |
|             if ($region['authorise']) {
 | |
|                 foreach ($region['whereIn'] as $key => $where) {
 | |
|                     $delivery->whereIn($key, $where);
 | |
|                     $cancel->whereIn($key, $where);
 | |
|                 }
 | |
|             }
 | |
|             $res = $delivery->unionAll($cancel)->get();
 | |
|             $rows[] = ['title' => '本月共发出 <span class="red">'.number_format($res->sum('count')).'</span> 张发货单,<span class="red">'.number_format($res->sum('quantity')).' </span>件,<span class="red">'.number_format($res->sum('money')).'</span> 元'];
 | |
|             
 | |
|             // 本月直营共发出件和金额
 | |
|             $direct = DB::table('stock_direct')
 | |
|             ->leftJoin('stock_direct_data', 'stock_direct_data.direct_id', '=', 'stock_direct.id')
 | |
|             ->leftJoin('product', 'product.id', '=', 'stock_direct_data.product_id')
 | |
|             ->leftJoin('customer', 'customer.id', '=', 'stock_direct.customer_id');
 | |
|             $direct->whereRaw('stock_direct_data.product_id <> 20226 and isnull(product.product_type, 0) = 1');
 | |
|             $direct->whereRaw(sql_year_month('stock_direct.invoice_dt').'=?', [$ym]);
 | |
|             $direct->selectRaw('
 | |
|                 COUNT(DISTINCT stock_direct.id) AS count, 
 | |
|                 SUM(stock_direct_data.quantity) AS quantity, 
 | |
|                 sum(isnull(stock_direct_data.money, 0) - isnull(stock_direct_data.other_money, 0)) money
 | |
|             ');
 | |
|             if ($region['authorise']) {
 | |
|                 foreach ($region['whereIn'] as $key => $where) {
 | |
|                     $direct->whereIn($key, $where);
 | |
|                 }
 | |
|             }
 | |
|             $res = $direct->get();
 | |
|             $rows[] = ['title' => '本月直营共发出 <span class="red">'.number_format($res->sum('count')).'</span> 张发货单,<span class="red">'.number_format($res->sum('quantity')).' </span>件,<span class="red">'.number_format($res->sum('money')).'</span> 元'];
 | |
| 
 | |
|             $json['total'] = sizeof($rows);
 | |
|             $json['data'] = $rows;
 | |
|             return $json;
 | |
|         }
 | |
|         return $this->render();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 明日预计到货列表
 | |
|      */
 | |
|     public function goods()
 | |
|     {
 | |
|         if (Request::method() == 'POST') {
 | |
| 
 | |
|             $region = regionCustomer();
 | |
|             // 昨天
 | |
|             $lastDay = date("Y-m-d", strtotime("+1 day"));
 | |
|             $model = DB::table('stock_delivery')
 | |
|             ->leftJoin('customer', 'customer.id', '=', 'stock_delivery.customer_id')
 | |
|             ->whereRaw('stock_delivery.freight_arrival_date = ? and stock_delivery.freight_arrival_date IS NOT NULL', [$lastDay]);
 | |
|             if ($region['authorise']) {
 | |
|                 foreach ($region['whereIn'] as $key => $where) {
 | |
|                     $model->whereIn($key, $where);
 | |
|                 }
 | |
|             }
 | |
|             $rows = $model->selectRaw('stock_delivery.id,stock_delivery.sn,customer.name,stock_delivery.freight_arrival_date')
 | |
|             ->get();
 | |
|             $json['total'] = $rows->count();
 | |
|             $json['data'] = $rows;
 | |
|             return $json;
 | |
|         }
 | |
|         return $this->render();
 | |
|     }
 | |
| } |