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