|
@@ -28,7 +28,7 @@ class NowReportHandle extends Command
|
|
|
{
|
|
|
|
|
|
try {
|
|
|
- ini_set("memory_limit","516M");
|
|
|
+ ini_set("memory_limit", "516M");
|
|
|
$info = Cache::store('redis')->handler()->rpop($this->key);
|
|
|
if ($info) {
|
|
|
|
|
@@ -36,36 +36,50 @@ class NowReportHandle extends Command
|
|
|
|
|
|
//不同的方法处理不同的脚本
|
|
|
switch ($info['code']) {
|
|
|
- //退货台账-业务口径
|
|
|
+ //【财务报表】退货台账-业务口径
|
|
|
case 'A':
|
|
|
$res = $this->A($info['start'], $info['end']);
|
|
|
break;
|
|
|
-
|
|
|
- //库存日报及预警汇总表
|
|
|
+ //【财务报表】库存日报及预警汇总表
|
|
|
case 'B':
|
|
|
$res = $this->B($info['start'], $info['end']);
|
|
|
break;
|
|
|
-
|
|
|
- //退货台账
|
|
|
+ //【财务报表】退货台账
|
|
|
case 'C':
|
|
|
$res = $this->C($info['start'], $info['end']);
|
|
|
break;
|
|
|
-
|
|
|
- //
|
|
|
+ //【财务报表】出入库明细
|
|
|
case 'D':
|
|
|
$res = $this->D($info['start'], $info['end']);
|
|
|
break;
|
|
|
+ //【财务报表】库存品入库明细
|
|
|
case 'E':
|
|
|
$res = $this->E($info['start'], $info['end']);
|
|
|
break;
|
|
|
+ //【财务报表】库存品出库明细
|
|
|
case 'F':
|
|
|
$res = $this->F($info['start'], $info['end']);
|
|
|
break;
|
|
|
-
|
|
|
+ //【销售】订单表导出
|
|
|
case 'G':
|
|
|
- //订单表导出
|
|
|
$res = $this->G($info['start'], $info['end']);
|
|
|
break;
|
|
|
+ //【库存报表】-库存日报及预警汇总表
|
|
|
+ case 'H':
|
|
|
+ $res = $this->H($info['start'], $info['end']);
|
|
|
+ break;
|
|
|
+ //【库存报表】-出入库明细
|
|
|
+ case 'I':
|
|
|
+ $res = $this->I($info['start'], $info['end']);
|
|
|
+ break;
|
|
|
+ //【库存报表】-库存品入库明细
|
|
|
+ case 'J':
|
|
|
+ $res = $this->J($info['start'], $info['end']);
|
|
|
+ break;
|
|
|
+ //【库存报表】-库存品出库明细
|
|
|
+ case 'K':
|
|
|
+ $res = $this->K($info['start'], $info['end']);
|
|
|
+ break;
|
|
|
default:
|
|
|
throw new Exception('暂不支持这个报表');
|
|
|
}
|
|
@@ -91,7 +105,7 @@ class NowReportHandle extends Command
|
|
|
|
|
|
}
|
|
|
|
|
|
- //退货台账-业务口径
|
|
|
+ //【财务报表】退货台账-业务口径
|
|
|
private function A(string $start_date = '', string $end_date = '')
|
|
|
{
|
|
|
$data = Db::name('order_back')
|
|
@@ -147,7 +161,7 @@ class NowReportHandle extends Command
|
|
|
|
|
|
}
|
|
|
|
|
|
- //库存预警汇总表
|
|
|
+ //【财务报表】库存日报及预警汇总表
|
|
|
private function B(string $start_date = '', string $end_date = '')
|
|
|
{
|
|
|
$data = Db::name('good_stock')
|
|
@@ -205,7 +219,7 @@ class NowReportHandle extends Command
|
|
|
|
|
|
}
|
|
|
|
|
|
- //退货台账
|
|
|
+ //【财务报表】退货台账
|
|
|
private function C(string $start_date = '', string $end_date = '')
|
|
|
{
|
|
|
$data = Db::name('th_data')
|
|
@@ -292,7 +306,7 @@ class NowReportHandle extends Command
|
|
|
|
|
|
}
|
|
|
|
|
|
- //出入库明细
|
|
|
+ //【财务报表】出入库明细
|
|
|
public function D($start,$end){
|
|
|
$list =Db::name("order_out")->alias('woo')->leftJoin("sale a","a.orderCode=woo.orderCode")
|
|
|
->leftJoin("order_back wor","wor.outCode=woo.outCode and wor.status=4")
|
|
@@ -382,7 +396,7 @@ class NowReportHandle extends Command
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
- //备库单入库明细
|
|
|
+ //【财务报表】库存品入库明细
|
|
|
public function E($start,$end){
|
|
|
$list =Db::name("purchease_in")->alias('wpi')->leftJoin("purchease_order wpo","wpo.cgdNo=wpi.cgdNo")
|
|
|
->leftJoin("purchease wp","wpo.bkcode=wp.bk_code")
|
|
@@ -434,7 +448,7 @@ class NowReportHandle extends Command
|
|
|
}
|
|
|
return $data;
|
|
|
}
|
|
|
- //库存出入库
|
|
|
+ //【财务报表】库存品出库明细
|
|
|
public function F($start,$end){
|
|
|
$list =Db::name("order_out")->alias('woo')->leftJoin("sale a","a.orderCode=woo.orderCode")
|
|
|
->leftJoin("order_num won","won.orderCode=a.orderCode")
|
|
@@ -544,7 +558,7 @@ ShortText1617865626160 '一级分类',
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
- //【订单导出表】
|
|
|
+ //【销售】订单表导出
|
|
|
public function G(string $start_date = '', string $end_date = '')
|
|
|
{
|
|
|
$all_order_type = [1 => '备库', 2 => '非库存', 3 => '咨询采反', 4 => '项目采反', 5 => '平台部订单销售库存', 6 => '平台部订单销售非库存'];//订单类型
|
|
@@ -602,4 +616,148 @@ ShortText1617865626160 '一级分类',
|
|
|
return $list;
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ //【库存报表】库存日报及预警汇总表
|
|
|
+ private function H(string $start_date = '', string $end_date = '')
|
|
|
+ {
|
|
|
+ $data = Db::name('good_stock')
|
|
|
+ ->alias('wgs')
|
|
|
+ ->field(" wb.company '公司名称',wgs.spuCode '产品编号',cat_id '一级分类',good_name '产品名称',wait_in_stock '待入库存数量',wait_out_stock '待出库存数量',usable_stock '可用库存数量',wait_out_stock+usable_stock '当前库存','' as '保质期时间','' as '库存天数',wgb.creater as 'CGD.采购员','' as '备库单号',ws.`name` as '供应商名称',wwi.`name` as '仓库名称','' as '最近入库时间'")
|
|
|
+ ->leftJoin('warehouse_info wwi', 'wwi.wsm_code = wgs.wsm_code')
|
|
|
+ ->leftJoin('business wb', 'wb.companyNo = wwi.companyNo')
|
|
|
+ ->leftJoin('good_basic wgb', 'wgb.spuCode = wgs.spuCode')
|
|
|
+ ->leftJoin('supplier ws', 'wwi.supplierNo = ws.`code`')
|
|
|
+ ->where('wgs.is_del', 0)
|
|
|
+ ->where('wgb.is_stock', 1)
|
|
|
+ ->whereBetween('wgs.addtime', [$start_date, $end_date])
|
|
|
+ ->order('wgs.addtime', 'desc')
|
|
|
+ ->cursor();
|
|
|
+
|
|
|
+ $list = [];
|
|
|
+ foreach ($data as $value) {
|
|
|
+ $cat = made($value['一级分类']);
|
|
|
+ $value['一级分类'] = isset($cat[0]['name'])?$cat[0]['name']:"";
|
|
|
+
|
|
|
+ $value['最近入库时间'] =Db::name("purchease_order")->alias("a")->leftJoin("purchease_in c","a.cgdNo=c.cgdNo")->where(["spuCode"=>$value['产品编号'],"order_type"=>1,"order_source"=>0,"c.status"=>[4,6]])->order("a.addtime desc")->value("c.addtime","");
|
|
|
+ $value['备库单号']=Db::name("purchease_order")->alias("a")->where(["spuCode"=>$value['产品编号'], "order_type"=>1,"order_source"=>0])->order("a.addtime desc")->value("a.bkcode","");
|
|
|
+ if (!empty($value['最近入库时间'])) {
|
|
|
+ $value['保质期时间'] = date('Y-m-d H:i:s', strtotime($value['最近入库时间']) + 31536000);//365天之后
|
|
|
+ $value['库存天数'] = bcdiv((string)(time() - strtotime($value['最近入库时间'])), (string)(24 * 3600));//365天之后
|
|
|
+ }
|
|
|
+ yield $list[] = $value;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $list;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //【库存报表】出入库明细
|
|
|
+ public function I(string $start= '', string $end= '')
|
|
|
+ {
|
|
|
+ $list = Db::name("order_out")
|
|
|
+ ->alias('woo')
|
|
|
+ ->leftJoin("sale a", "a.orderCode=woo.orderCode")
|
|
|
+ ->leftJoin("order_back wor", "wor.outCode=woo.outCode and wor.status=4")
|
|
|
+ ->leftJoin("order_num won", "won.orderCode=a.orderCode")
|
|
|
+ ->leftJoin("purchease_order wpo", "wpo.cgdNo=won.cgdNo")
|
|
|
+ ->leftJoin("good_basic wgb", "wgb.spuCode=wpo.spuCode")
|
|
|
+ ->leftJoin("good_zixun wgz", "wgz.spuCode=wpo.spuCode")
|
|
|
+ ->leftJoin("supplier ws", "ws.code=wpo.supplierNo")
|
|
|
+ ->where('woo.status', ">=", 2)
|
|
|
+ ->whereBetween('woo.addtime', [$start, $end])
|
|
|
+ ->field(" year(`a`.`addtime`) AS `年`,month(`a`.`addtime`) AS `月`,dayofmonth(`a`.`addtime`) AS `日`,a.supplierNo as '公司名称', a.apply_id '业务部门名称' ,a.apply_name as '业务人员',a.order_type as '订单类型',a.good_type as '商品类型',woo.outCode '发货编号',`woo`.`send_num` AS `本次发货数量`,`woo`.`sendtime` AS `本次发货时间`,`woo`.`orderCode` AS `确认单编号`,`a`.`good_code` AS `商品编号`,'' as '一级分类','' as '二级分类',a.cat_id as '三级分类','' as '财务核算编码',a.good_name as '商品名称',ifnull( `wgb`.`good_unit`, `wgz`.`good_unit` ) as '单位',`a`.`good_num` AS `下单数量`,`wpo`.`cgdNo` AS `采购单单号`,`wpo`.`cgder` AS `采购员`,`ws`.`name` AS `供应商名称`,`wgb`.`is_stock` as '是否库存品',if (`wgb`.`is_stock`=1,wpo.bkcode,wpo.cgdNo) as '发货方式',ifnull( `wor`.`thNo`, '' ) AS `退货编号`,ifnull( `wor`.`return_num`, '' ) AS `退货数量`,'' as '售前退货数量'")
|
|
|
+ ->cursor();
|
|
|
+ $order_tyepe = ["库存销售", '非库存销售', '咨询销售', '项目销售', '平台库存销售', '平台非库存销售'];
|
|
|
+ $good_type = ["常规商品", '赠品', '样品'];
|
|
|
+ $data = [];
|
|
|
+ foreach ($list as $value) {
|
|
|
+ $value['公司名称'] = Db::name("business")->where(["companyNo" => $value['公司名称']])->value('company', '');
|
|
|
+ $value['业务部门名称'] = Db::name("depart_user")->alias("a")->leftJoin("company_item ci", "a.itemid=ci.id")->where(["a.uid" => $value['业务部门名称'], "a.status" => 1, "a.is_del" => 0])->value('ci.name', '');
|
|
|
+ $value['订单类型'] = $order_tyepe[$value['订单类型'] - 1];
|
|
|
+ $value['商品类型'] = $good_type[$value['商品类型'] - 1];
|
|
|
+ $cat = made($value['三级分类']);
|
|
|
+ $value['财务核算编码'] = Db::name("cat")->where(["id" => $value['三级分类']])->value("fund_code", '');
|
|
|
+ $value['一级分类'] = isset($cat[0]['name']) ? $cat[0]['name'] : "";
|
|
|
+ $value['二级分类'] = isset($cat[1]['name']) ? $cat[1]['name'] : "";
|
|
|
+ $value['三级分类'] = isset($cat[2]['name']) ? $cat[2]['name'] : "";
|
|
|
+ $value['单位'] = Db::name("unit")->where(["id" => $value['单位']])->value("unit", '');
|
|
|
+ if ($value['是否库存品'] == 1) {
|
|
|
+ $sendtype = Db::name("purchease_order")->alias("a")->leftJoin("purchease_in b", "a.cgdNo=b.cgdNo")->where(["bkcode" => $value['发货方式'], "order_type" => 1])->order("b.addtime desc")->value("b.sendtype", '');
|
|
|
+ $value['是否库存品'] = '是';
|
|
|
+ } else {
|
|
|
+ $sendtype = Db::name("purchease_order")->alias("a")->leftJoin("purchease_in b", "a.cgdNo=b.cgdNo")->where(["a.cgdNo" => $value['发货方式']])->order("b.addtime desc")->value("b.sendtype", '');
|
|
|
+ $value['是否库存品'] = '否';
|
|
|
+ }
|
|
|
+ $value['发货方式'] = $sendtype = 1 ? '包邮' : $sendtype = 2 ? '自提' : "";
|
|
|
+ $value['售前退货数量'] = Db::name("sale_return")->where(["orderCode" => $value['确认单编号']])->sum('num');
|
|
|
+ yield $data[] = $value;
|
|
|
+ }
|
|
|
+ $cgd = $this->GetWlb($start, $end);
|
|
|
+ foreach ($cgd as $key => $value) {
|
|
|
+ yield $data[] = $value;
|
|
|
+ }
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ //【库存报表】-库存品入库明细
|
|
|
+ public function J( string $start= '', string $end= '')
|
|
|
+ {
|
|
|
+ $list = Db::name("purchease_in")->alias('wpi')->leftJoin("purchease_order wpo", "wpo.cgdNo=wpi.cgdNo")
|
|
|
+ ->leftJoin("purchease wp", "wpo.bkcode=wp.bk_code")
|
|
|
+ ->leftJoin("good_basic wgb", "wgb.spuCode=wpo.spuCode")
|
|
|
+ ->leftJoin("warehouse_info wwi", "wwi.wsm_code = wpo.wsm_code")
|
|
|
+ ->leftJoin("supplier ws", "ws.code=wpo.supplierNo")
|
|
|
+ ->where('wpi.status', "in", [4, 6])
|
|
|
+ ->where('wpo.order_type', "=", 1)
|
|
|
+ ->where('wpo.order_source', "=", 0)
|
|
|
+ ->whereBetween('wpi.addtime', [$start, $end])
|
|
|
+ ->field("wpo.companyNo '业务公司',bkcode '备库单号',wpi.wsm_in_code '入库单号',wpi.cgdNo '采购单号',wpo.spuCode '商品编号','' as '一级分类','' as '二级分类',wgb.cat_id as '三级分类',wgb.cat_id as '财务核算编号',wpo.good_name as '商品名称',if(wpi.status=4,wpi.send_num,wpi.wsm_num) '入库数量',wpo.updatetime '本次入库时间',wp.apply_id as '业务部门',wp.apply_name as '业务员',wpo.cgder as '采购员',wsm_type '仓库类型',ws.name '供应商名称',wwi.name '仓库名称'")
|
|
|
+ ->cursor();
|
|
|
+ $data = [];
|
|
|
+ foreach ($list as $value) {
|
|
|
+ $value['业务公司'] = Db::name("business")->where(["companyNo" => $value['业务公司']])->value('company', '');
|
|
|
+ $value['业务部门'] = Db::name("depart_user")->alias("a")->leftJoin("company_item ci", "a.itemid=ci.id")->where(["a.uid" => $value['业务部门'], "a.status" => 1, "a.is_del" => 0])->value('ci.name', '');
|
|
|
+ $cat = made($value['三级分类']);
|
|
|
+ $value['财务核算编号'] = Db::name("cat")->where(["id" => $value['三级分类']])->value("fund_code", '');
|
|
|
+ $value['一级分类'] = isset($cat[0]['name']) ? $cat[0]['name'] : "";
|
|
|
+ $value['二级分类'] = isset($cat[1]['name']) ? $cat[1]['name'] : "";
|
|
|
+ $value['三级分类'] = isset($cat[2]['name']) ? $cat[2]['name'] : "";
|
|
|
+ $value['仓库类型'] = Db::name("warehouse_type")->where(["id" => $value['仓库类型']])->value("name", '');
|
|
|
+ yield $data[] = $value;
|
|
|
+ }
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ //【库存报表】库存品出库明细
|
|
|
+ public function K(string $start = '', string $end = '')
|
|
|
+ {
|
|
|
+ $list = Db::name("order_out")
|
|
|
+ ->alias('woo')
|
|
|
+ ->leftJoin("sale a", "a.orderCode=woo.orderCode")
|
|
|
+ ->leftJoin("order_num won", "won.orderCode=a.orderCode")
|
|
|
+ ->leftJoin("order_back wor", "wor.outCode=woo.outCode and wor.status=4")
|
|
|
+ ->leftJoin("purchease_order wpo", "wpo.cgdNo=won.cgdNo")
|
|
|
+ ->leftJoin("good_basic wgb", "wgb.spuCode=wpo.spuCode")
|
|
|
+ ->leftJoin("supplier ws", "ws.code=wpo.supplierNo")
|
|
|
+ ->leftJoin("warehouse_info wwi", "wwi.wsm_code = wpo.wsm_code")
|
|
|
+ ->where('woo.status', ">=", 2)
|
|
|
+ ->where('a.order_type', "=", 1)
|
|
|
+ ->whereBetween('woo.addtime', [$start, $end])
|
|
|
+ ->field("wpo.companyNo '业务公司',bkcode '备库单号',woo.orderCode '销售单号',woo.outCode '出库单号',wpo.cgdNo '采购单号',wpo.spuCode '商品编号','' as '一级分类','' as '二级分类',wgb.cat_id as '三级分类',wpo.good_name as '商品名称',woo.send_num'出库数量',woo.sendtime '本次出库时间',a.apply_id as '业务部门',a.apply_name as '业务员',wpo.cgder as '采购员',wor.return_num '出库退货数量',wwi.wsm_type '仓库类型',ws.name '供应商名称',wwi.name '仓库名称'")
|
|
|
+ ->cursor();
|
|
|
+ $data = [];
|
|
|
+ foreach ($list as $value) {
|
|
|
+ $value['业务公司'] = Db::name("business")->where(["companyNo" => $value['业务公司']])->value('company', '');
|
|
|
+ $value['业务部门'] = Db::name("depart_user")->alias("a")->leftJoin("company_item ci", "a.itemid=ci.id")->where(["a.uid" => $value['业务部门'], "a.status" => 1, "a.is_del" => 0])->value('ci.name', '');
|
|
|
+ $cat = made($value['三级分类']);
|
|
|
+ $value['一级分类'] = isset($cat[0]['name']) ? $cat[0]['name'] : "";
|
|
|
+ $value['二级分类'] = isset($cat[1]['name']) ? $cat[1]['name'] : "";
|
|
|
+ $value['三级分类'] = isset($cat[2]['name']) ? $cat[2]['name'] : "";
|
|
|
+ $value['仓库类型'] = Db::name("warehouse_type")->where(["id" => $value['仓库类型']])->value("name", '');
|
|
|
+ yield $data[] = $value;
|
|
|
+ }
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|