更新
This commit is contained in:
1 parent
5718a00e31
commit
1850ac640e
226 files changed
+37772
-12071
No files matched your search
@@ -0,0 +1,89 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"server/models"
|
||||
)
|
||||
|
||||
// 移动端进销存报表接口:购销汇总、热销排行、收发存、毛利。
|
||||
//
|
||||
// 统计口径全部来自「已生效」单据与库存流水,与 Web 端报表共用 erp_report_core.go,
|
||||
// 因此手机端看到的金额一定能和后台对得上;经营看板见 /api/erp/dashboard。
|
||||
|
||||
// AppErpReportController 报表(移动端)
|
||||
type AppErpReportController struct {
|
||||
AppErpBaseController
|
||||
}
|
||||
|
||||
// PurchaseSummary GET /api/erp/report/purchase?dimension=product|supplier|month 采购汇总
|
||||
func (c *AppErpReportController) PurchaseSummary() {
|
||||
cl, err := c.erpClaims()
|
||||
if c.erpDenied(err) {
|
||||
return
|
||||
}
|
||||
from, to := c.erpDateRange(0)
|
||||
group := erpReportDimension(c.erpQuery("dimension"))
|
||||
items, docPartner, returnItems := erpSummaryDocs(c.actor(cl).Tid,
|
||||
models.ErpDocPurchaseIn, models.ErpDocPurchaseReturn, from, to, c.erpUint("partner_id"))
|
||||
c.erpOk(erpSummaryReportData(group, items, docPartner, returnItems))
|
||||
}
|
||||
|
||||
// SalesSummary GET /api/erp/report/sales?dimension=product|customer|month 销售汇总
|
||||
func (c *AppErpReportController) SalesSummary() {
|
||||
cl, err := c.erpClaims()
|
||||
if c.erpDenied(err) {
|
||||
return
|
||||
}
|
||||
from, to := c.erpDateRange(0)
|
||||
group := erpReportDimension(c.erpQuery("dimension"))
|
||||
items, docPartner, returnItems := erpSummaryDocs(c.actor(cl).Tid,
|
||||
models.ErpDocSalesOut, models.ErpDocSalesReturn, from, to, c.erpUint("partner_id"))
|
||||
c.erpOk(erpSummaryReportData(group, items, docPartner, returnItems))
|
||||
}
|
||||
|
||||
// Rank GET /api/erp/report/rank?order=desc|asc&top=10 热销/滞销排行
|
||||
func (c *AppErpReportController) Rank() {
|
||||
cl, err := c.erpClaims()
|
||||
if c.erpDenied(err) {
|
||||
return
|
||||
}
|
||||
from, to := c.erpDateRange(0)
|
||||
top, _ := c.GetInt("top", 10)
|
||||
data, code, msg := erpSalesRankCore(c.actor(cl), from, to, top, c.erpQuery("order") == "asc")
|
||||
if msg != "" {
|
||||
c.erpFail(code, code, msg)
|
||||
return
|
||||
}
|
||||
c.erpOk(data)
|
||||
}
|
||||
|
||||
// StockMove GET /api/erp/report/stockmove 收发存汇总表
|
||||
func (c *AppErpReportController) StockMove() {
|
||||
cl, err := c.erpClaims()
|
||||
if c.erpDenied(err) {
|
||||
return
|
||||
}
|
||||
from, to := c.erpDateRange(0)
|
||||
page, pageSize := c.erpPage()
|
||||
list, total, summary, code, msg := erpStockMoveCore(
|
||||
c.actor(cl), from, to, c.erpUint("warehouse_id"), c.erpQuery("keyword"), page, pageSize)
|
||||
if msg != "" {
|
||||
c.erpFail(code, code, msg)
|
||||
return
|
||||
}
|
||||
c.erpListOK(list, total, page, pageSize, map[string]interface{}{"summary": summary})
|
||||
}
|
||||
|
||||
// Profit GET /api/erp/report/profit 毛利分析
|
||||
func (c *AppErpReportController) Profit() {
|
||||
cl, err := c.erpClaims()
|
||||
if c.erpDenied(err) {
|
||||
return
|
||||
}
|
||||
from, to := c.erpDateRange(0)
|
||||
data, code, msg := erpProfitCore(c.actor(cl), from, to)
|
||||
if msg != "" {
|
||||
c.erpFail(code, code, msg)
|
||||
return
|
||||
}
|
||||
c.erpOk(data)
|
||||
}
|
||||
Reference in new issue
Block a user