Browse Source

fix 销售统计

ziwen 1 year ago
parent
commit
b420770a78
2 changed files with 18 additions and 14 deletions
  1. 7 3
      controller/census/seller.go
  2. 11 11
      models/fms/contract_invoice.go

+ 7 - 3
controller/census/seller.go

@@ -285,14 +285,18 @@ func (ct *SellerController) InvoiceList(c *gin.Context) {
 	sumCond := ` invoice_type = ? AND is_deleted = 0 AND seller_id != 0 `
 	sumPars := make([]interface{}, 0)
 	sumPars = append(sumPars, fms.ContractInvoiceTypeMake)
-	cond := ` invoice_type = %d AND is_deleted = 0 AND seller_id != 0 `
+	cond := ` c.invoice_type = %d AND c.is_deleted = 0 AND c.seller_id != 0 `
+	inCond := ` invoice_type = %d AND is_deleted = 0 AND seller_id != 0 `
 	cond = fmt.Sprintf(cond, fms.ContractInvoiceTypeMake)
+	inCond = fmt.Sprintf(inCond, fms.ContractInvoiceTypeMake)
 	// 开票日期
 	if req.StartDate != "" && req.EndDate != "" {
 		st := fmt.Sprint(req.StartDate, " 00:00:00")
 		ed := fmt.Sprint(req.EndDate, " 23:59:59")
-		cond += ` AND (invoice_time BETWEEN '%s' AND '%s')`
+		cond += ` AND (c.invoice_time BETWEEN '%s' AND '%s')`
+		inCond += ` AND (invoice_time BETWEEN '%s' AND '%s')`
 		cond = fmt.Sprintf(cond, st, ed)
+		inCond = fmt.Sprintf(inCond, st, ed)
 		sumCond += ` AND (invoice_time BETWEEN ? AND ?)`
 		sumPars = append(sumPars, st, ed)
 	}
@@ -346,7 +350,7 @@ func (ct *SellerController) InvoiceList(c *gin.Context) {
 
 	adminStr := strings.Join(adminIdSlice, ",")
 
-	total, list, e := fms.GetCensusSellerInvoicePageListV2(page, adminStr, cond, pars, invSum)
+	total, list, e := fms.GetCensusSellerInvoicePageListV2(page, adminStr, inCond, cond, pars, invSum)
 	if e != nil {
 		resp.FailMsg("获取失败", "获取销售开票统计列表失败, Err: "+e.Error(), c)
 		return

+ 11 - 11
models/fms/contract_invoice.go

@@ -754,22 +754,22 @@ func GetCensusSellerGroupInvoicePageListV2(page base.IPage,groupStr, condition s
 }
 
 // GetCensusSellerInvoicePageList 获取销售开票统计列表-分页
-func GetCensusSellerInvoicePageListV2(page base.IPage, adminStr, condition string, pars []interface{}, amountSum float64) (count int, results []*CensusSellerInvoiceItem, err error) {
+func GetCensusSellerInvoicePageListV2(page base.IPage, adminStr, inCond, condition string, pars []interface{}, amountSum float64) (count int, results []*CensusSellerInvoiceItem, err error) {
 	//sql := `SELECT a.admin_id AS seller_id, a.real_name AS seller_name, a.group_id, b.invoice_amount, b.group_rate, b.seller_rate FROM %s AS a LEFT JOIN `
-	sql := ` SELECT seller_id , SUM(amount) AS invoice_amount, 
-				SUM(amount) / (
-					SELECT SUM(amount) FROM contract_invoice WHERE %s
+	sql := ` SELECT c.seller_id , SUM(c.amount) AS invoice_amount,
+				SUM(c.amount) / (
+					SELECT SUM(amount) FROM contract_invoice WHERE seller_group_id = c.seller_group_id AND %s
 				) AS group_rate,
-				SUM(amount) / %f AS seller_rate
-				FROM contract_invoice
+				SUM(c.amount) / %f AS seller_rate
+				FROM contract_invoice AS c 
 				WHERE %s
-				AND seller_id IN (`+adminStr+`)
-				GROUP BY seller_id ORDER BY %s LIMIT %d,%d `
+				AND c.seller_id IN (`+adminStr+`)
+				GROUP BY c.seller_id ORDER BY %s LIMIT %d,%d `
 
 	sqlCount := ` select count(1) as count from (SELECT * 
-				FROM contract_invoice
+				FROM contract_invoice AS c
 				WHERE %s
-				AND seller_id IN (`+adminStr+`) GROUP BY seller_id ) as a
+				AND c.seller_id IN (`+adminStr+`) GROUP BY c.seller_id ) as a
 				 `
 	sqlCount = fmt.Sprintf(sqlCount, condition)
 	err = global.DEFAULT_MYSQL.Raw(sqlCount, pars...).Find(&count).Error
@@ -778,7 +778,7 @@ func GetCensusSellerInvoicePageListV2(page base.IPage, adminStr, condition strin
 	//	Where(condition, pars...).Where("AND seller_id IN (`+adminStr+`)")
 	//query.Count(&count)
 
-	sql = fmt.Sprintf(sql, condition, amountSum, condition, page.GetOrderItemsString(), page.Offset(), page.GetPageSize())
+	sql = fmt.Sprintf(sql, inCond, amountSum, condition, page.GetOrderItemsString(), page.Offset(), page.GetPageSize())
 	err = global.DEFAULT_MYSQL.Raw(sql, pars...).Scan(&results).Error
 	return
 }