1.优化进销存报表,新增系统入库字段;
This commit is contained in:
parent
4537477eff
commit
2033896d43
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,4 +1,5 @@
|
|||
.idea
|
||||
./logs/*
|
||||
./temp/*
|
||||
dev-go-admin
|
||||
main.exe
|
||||
main.exe
|
||||
|
|
|
@ -2794,7 +2794,9 @@ func SetStockCommodityState(c *gin.Context, id uint32) error { //更新库存状
|
|||
|
||||
// 更新商品库存详情表状态为:系统出库
|
||||
if err := begin.Model(&ErpStockCommodity{}).Where("id=?", id).Updates(map[string]interface{}{
|
||||
"state": SystemOut}).Error; err != nil {
|
||||
"state": SystemOut,
|
||||
"updated_at": time.Now(),
|
||||
}).Error; err != nil {
|
||||
return fmt.Errorf("[update err]:%v", err)
|
||||
}
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ type DecisionSumData struct {
|
|||
TotalAllotOut uint32 `json:"total_allot_out"` // 调拨出库
|
||||
TotalAllotWaitOut uint32 `json:"total_allot_wait_out"` // 在途库存(出库)
|
||||
TotalProductIn uint32 `json:"total_product_in"` // 产品入库
|
||||
TotalSystemIn uint32 `json:"total_system_in"` // 系统入库
|
||||
TotalSystemOut uint32 `json:"total_system_out"` // 系统出库
|
||||
TotalCheckIn uint32 `json:"total_check_in"` // 盘点入库
|
||||
TotalCheckOut uint32 `json:"total_check_out"` // 盘点出库
|
||||
|
@ -75,6 +76,7 @@ type DecisionReportData struct {
|
|||
AllotOut uint32 `json:"allot_out"` // 调拨出库
|
||||
AllotWaitOut uint32 `json:"allot_wait_out"` // 在途库存(出库)
|
||||
ProductIn uint32 `json:"product_in"` // 产品入库
|
||||
SystemIn uint32 `json:"system_in"` // 系统入库
|
||||
SystemOut uint32 `json:"system_out"` // 系统出库
|
||||
CheckIn uint32 `json:"check_in"` // 盘点入库
|
||||
CheckOut uint32 `json:"check_out"` // 盘点出库
|
||||
|
@ -222,71 +224,6 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR
|
|||
go func(item ErpStock) {
|
||||
defer wg.Done()
|
||||
|
||||
//var reportData DecisionReportData
|
||||
//reportData.CommodityId = item.ErpCommodityId
|
||||
//reportData.CommodityName = item.ErpCommodityName
|
||||
//reportData.CommoditySerialNumber = item.CommoditySerialNumber
|
||||
//reportData.CategoryID = item.ErpCategoryId
|
||||
//reportData.CategoryName = item.ErpCategoryName
|
||||
//
|
||||
//// 查询期初库存、期初金额
|
||||
//systemStartData, _ := getSystemStartCount(m, item)
|
||||
//reportData.BeginStock = systemStartData.BeginStock
|
||||
//reportData.BeginAmount = systemStartData.BeginAmount
|
||||
//
|
||||
//// 查询采购进货数量
|
||||
//purchaseStockData, _ := getPurchaseStockCount(m, item)
|
||||
//reportData.PurchaseStock = purchaseStockData.PurchaseStock
|
||||
//
|
||||
//// 查询采购退货数量
|
||||
//purchaseReturnData, _ := getPurchaseReturnCount(m, item)
|
||||
//reportData.PurchaseReturn = purchaseReturnData.PurchaseReturn
|
||||
//
|
||||
//// 查询零售销售数量
|
||||
//saleOutData, _ := getSaleOutCount(m, item)
|
||||
//reportData.OrderSale = saleOutData.OrderSale
|
||||
//
|
||||
//// 查询零售退货数量
|
||||
//saleReturnData, _ := getSaleReturnCount(m, item)
|
||||
//reportData.OrderReject = saleReturnData.OrderReject
|
||||
//
|
||||
//// 查询调拨入库数量
|
||||
//allotInData, _ := getAllotInCount(m, item)
|
||||
//reportData.AllotIn = allotInData.AllotIn
|
||||
//
|
||||
//// 查询在途库存(入库)数量
|
||||
//allotWaitInData, _ := getAllotWaitInCount(m, item)
|
||||
//reportData.AllotWaitIn = allotWaitInData.AllotWaitIn
|
||||
//
|
||||
//// 查询调拨出库数量
|
||||
//allotOutData, _ := getAllotOutCount(m, item)
|
||||
//reportData.AllotOut = allotOutData.AllotOut
|
||||
//
|
||||
//// 查询在途库存(出库)数量
|
||||
//allotWaitOutData, _ := getAllotWaitOutCount(m, item)
|
||||
//reportData.AllotWaitOut = allotWaitOutData.AllotWaitOut
|
||||
//
|
||||
//// 查询产品入库数量:产品入库
|
||||
//productData, _ := getProductCount(m, item)
|
||||
//reportData.ProductIn = productData.ProductIn
|
||||
//
|
||||
//// 查询系统出库数据:系统出库
|
||||
//systemOutData, _ := getSystemOutCount(m, item)
|
||||
//reportData.SystemOut = systemOutData.SystemOut
|
||||
//
|
||||
//// 查询盘点入库数量
|
||||
//changeAddData, _ := getChangeAddCount(m, item)
|
||||
//reportData.CheckIn = changeAddData.CheckIn
|
||||
//
|
||||
//// 查询盘点出库数量
|
||||
//changeReduceData, _ := getChangeReduceCount(m, item)
|
||||
//reportData.CheckOut = changeReduceData.CheckOut
|
||||
//
|
||||
//// 查询期末库存、期末金额
|
||||
//systemEndData, _ := getSystemEndCount(m, item)
|
||||
//reportData.EndStock = systemEndData.EndStock
|
||||
//reportData.EndAmount = systemEndData.EndAmount
|
||||
|
||||
reportData, _ := calculateInventoryReport(m, item)
|
||||
reportData.CommodityId = item.ErpCommodityId
|
||||
reportData.CommodityName = item.ErpCommodityName
|
||||
|
@ -333,28 +270,9 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR
|
|||
}
|
||||
}
|
||||
|
||||
//var sumData DecisionSumData
|
||||
for _, data := range commodityMap {
|
||||
//sumData.TotalBeginStock += data.BeginStock
|
||||
//sumData.TotalBeginAmount += data.BeginAmount
|
||||
//sumData.TotalPurchaseStock += data.PurchaseStock
|
||||
//sumData.TotalPurchaseReturn += data.PurchaseReturn
|
||||
//sumData.TotalOrderSale += data.OrderSale
|
||||
//sumData.TotalOrderReject += data.OrderReject
|
||||
//sumData.TotalAllotIn += data.AllotIn
|
||||
//sumData.TotalAllotWaitIn += data.AllotWaitIn
|
||||
//sumData.TotalAllotOut += data.AllotOut
|
||||
//sumData.TotalAllotWaitOut += data.AllotWaitOut
|
||||
//sumData.TotalProductIn += data.ProductIn
|
||||
//sumData.TotalSystemOut += data.SystemOut
|
||||
//sumData.TotalCheckIn += data.CheckIn
|
||||
//sumData.TotalCheckOut += data.CheckOut
|
||||
//sumData.TotalEndStock += data.EndStock
|
||||
//sumData.TotalEndAmount += data.EndAmount
|
||||
|
||||
reportList = append(reportList, data)
|
||||
}
|
||||
//resp.SumData = sumData
|
||||
|
||||
// 排序规则:商品编号小
|
||||
SortReportByDecisionCommodities(reportList)
|
||||
|
@ -463,6 +381,12 @@ func calculateInventoryReport(m *ErpDecisionReportReq, item ErpStock) (DecisionR
|
|||
}
|
||||
reportData.ProductIn = productData.ProductIn
|
||||
|
||||
systemInData, err := getSystemInCount(m, item)
|
||||
if err != nil {
|
||||
return DecisionReportData{}, err
|
||||
}
|
||||
reportData.SystemIn = systemInData.SystemIn
|
||||
|
||||
systemOutData, err := getSystemOutCount(m, item)
|
||||
if err != nil {
|
||||
return DecisionReportData{}, err
|
||||
|
@ -481,13 +405,18 @@ func calculateInventoryReport(m *ErpDecisionReportReq, item ErpStock) (DecisionR
|
|||
}
|
||||
reportData.CheckOut = changeReduceData.CheckOut
|
||||
|
||||
// Step 4: 计算调整库存逻辑(期初+入库-出库)
|
||||
reportData.EndStock = reportData.BeginStock + reportData.PurchaseStock + reportData.AllotIn + reportData.ProductIn + reportData.CheckIn
|
||||
if reportData.EndStock < (reportData.PurchaseReturn + reportData.OrderSale + reportData.AllotOut + reportData.SystemOut + reportData.CheckOut) {
|
||||
reportData.EndStock = 0
|
||||
reportData.EndAmount = 0
|
||||
} else {
|
||||
reportData.EndStock -= reportData.PurchaseReturn + reportData.OrderSale + reportData.AllotOut + reportData.SystemOut + reportData.CheckOut
|
||||
if m.EndTime != "" {
|
||||
// Step 4: 计算调整库存逻辑(期初+入库-出库)
|
||||
reportData.EndStock = reportData.BeginStock + reportData.PurchaseStock + reportData.AllotIn +
|
||||
reportData.ProductIn + reportData.CheckIn + reportData.OrderReject + reportData.SystemIn
|
||||
if reportData.EndStock < (reportData.PurchaseReturn + reportData.OrderSale + reportData.AllotOut +
|
||||
reportData.SystemOut + reportData.CheckOut) {
|
||||
reportData.EndStock = 0
|
||||
reportData.EndAmount = 0
|
||||
} else {
|
||||
reportData.EndStock -= reportData.PurchaseReturn + reportData.OrderSale + reportData.AllotOut +
|
||||
reportData.SystemOut + reportData.CheckOut
|
||||
}
|
||||
}
|
||||
|
||||
return reportData, nil
|
||||
|
@ -504,7 +433,9 @@ func getSystemStartCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRep
|
|||
}
|
||||
|
||||
// 计算开始时间的前一天
|
||||
previousDay := startTime.AddDate(0, 0, -1)
|
||||
//previousDay := startTime.AddDate(0, 0, -1)
|
||||
previousDay := startTime.AddDate(0, 0, -1).Truncate(24 * time.Hour).
|
||||
Add(23*time.Hour + 59*time.Minute + 59*time.Second)
|
||||
|
||||
// 获取系统入库数量
|
||||
var systemStartData DecisionReportData
|
||||
|
@ -528,15 +459,21 @@ func getSystemStartCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRep
|
|||
|
||||
// 获取开始时间前一天的所有出库数量(包括销售出库、系统出库和盘点出库)
|
||||
var outStockData struct {
|
||||
SoldOut uint32 `json:"sold_out"`
|
||||
SystemOut uint32 `json:"system_out"`
|
||||
CheckOut uint32 `json:"check_out"`
|
||||
SoldOut uint32 `json:"sold_out"`
|
||||
SoldOutAmount float64 `json:"sold_out_amount"`
|
||||
SystemOut uint32 `json:"system_out"`
|
||||
SystemOutAmount float64 `json:"system_out_amount"`
|
||||
CheckOut uint32 `json:"check_out"`
|
||||
CheckOutAmount float64 `json:"check_out_amount"`
|
||||
}
|
||||
es := orm.Eloquent.Debug().Table("erp_stock_commodity").
|
||||
Select("SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS sold_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS sold_out_amount, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS system_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out",
|
||||
SoldOut, SystemOut, CheckOut).
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS system_out_amount, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS check_out_amount",
|
||||
SoldOut, SoldOut, SystemOut, SystemOut, CheckOut, CheckOut).
|
||||
Where("updated_at <= ?", previousDay).
|
||||
Where("state IN (?)", []int{SoldOut, SystemOut, CheckOut}).
|
||||
Where("erp_commodity_id = ?", stock.ErpCommodityId)
|
||||
|
@ -556,15 +493,21 @@ func getSystemStartCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRep
|
|||
|
||||
// 获取开始时间前一天的所有入库数量(包括采购入库、产品入库和盘点入库)
|
||||
var inStockData struct {
|
||||
PurchaseIn uint32 `json:"purchase_in"`
|
||||
ProductIn uint32 `json:"product_in"`
|
||||
CheckIn uint32 `json:"check_in"`
|
||||
PurchaseIn uint32 `json:"purchase_in"`
|
||||
PurchaseInAmount float64 `json:"purchase_in_amount"`
|
||||
ProductIn uint32 `json:"product_in"`
|
||||
ProductInAmount float64 `json:"product_in_amount"`
|
||||
CheckIn uint32 `json:"check_in"`
|
||||
CheckInAmount float64 `json:"check_in_amount"`
|
||||
}
|
||||
ts := orm.Eloquent.Debug().Table("erp_stock_commodity").
|
||||
Select("SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS purchase_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS purchase_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS product_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in",
|
||||
PurchaseInventory, ProductInventory, CheckInventory).
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS product_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS check_in_amount",
|
||||
PurchaseInventory, PurchaseInventory, ProductInventory, ProductInventory, CheckInventory, CheckInventory).
|
||||
Where("created_at <= ?", previousDay).
|
||||
Where("erp_commodity_id = ?", stock.ErpCommodityId)
|
||||
|
||||
|
@ -584,30 +527,38 @@ func getSystemStartCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRep
|
|||
// 计算期初库存
|
||||
beginStock := int64(systemStartData.BeginStock) - int64(outStockData.SoldOut) - int64(outStockData.SystemOut) - int64(outStockData.CheckOut) +
|
||||
int64(inStockData.PurchaseIn) + int64(inStockData.ProductIn) + int64(inStockData.CheckIn)
|
||||
|
||||
if beginStock < 0 {
|
||||
beginStock = 0 // 确保库存不会为负
|
||||
}
|
||||
|
||||
// 计算期初金额
|
||||
beginAmount := systemStartData.BeginAmount - outStockData.SoldOutAmount -
|
||||
outStockData.SystemOutAmount - outStockData.CheckOutAmount +
|
||||
inStockData.PurchaseInAmount + inStockData.ProductInAmount + inStockData.CheckInAmount
|
||||
if beginAmount < 0 {
|
||||
beginAmount = 0 // 确保库存不会为负
|
||||
}
|
||||
|
||||
reportData.BeginStock = uint32(beginStock)
|
||||
reportData.BeginAmount = systemStartData.BeginAmount
|
||||
reportData.BeginAmount = beginAmount
|
||||
|
||||
} else {
|
||||
// 如果没有开始时间,直接获取系统入库数量作为期初库存
|
||||
qs := orm.Eloquent.Debug().Table("erp_stock_commodity").
|
||||
Select("SUM(count) as begin_stock, SUM(wholesale_price) as begin_amount").
|
||||
Where("storage_type = ? and erp_commodity_id = ?", SystemInventory, stock.ErpCommodityId)
|
||||
|
||||
if stock.StoreId != 0 {
|
||||
if len(stock.DecisionStoreId) > 1 {
|
||||
qs = qs.Where("store_id in (?)", stock.DecisionStoreId)
|
||||
} else {
|
||||
qs = qs.Where("store_id = ?", stock.DecisionStoreId)
|
||||
}
|
||||
}
|
||||
err := qs.Find(&reportData).Error
|
||||
if err != nil {
|
||||
return DecisionReportData{}, err
|
||||
}
|
||||
//// 如果没有开始时间,直接获取系统入库数量作为期初库存
|
||||
//qs := orm.Eloquent.Debug().Table("erp_stock_commodity").
|
||||
// Select("SUM(count) as begin_stock, SUM(wholesale_price) as begin_amount").
|
||||
// Where("storage_type = ? and erp_commodity_id = ?", SystemInventory, stock.ErpCommodityId)
|
||||
//
|
||||
//if stock.StoreId != 0 {
|
||||
// if len(stock.DecisionStoreId) > 1 {
|
||||
// qs = qs.Where("store_id in (?)", stock.DecisionStoreId)
|
||||
// } else {
|
||||
// qs = qs.Where("store_id = ?", stock.DecisionStoreId)
|
||||
// }
|
||||
//}
|
||||
//err := qs.Find(&reportData).Error
|
||||
//if err != nil {
|
||||
// return DecisionReportData{}, err
|
||||
//}
|
||||
}
|
||||
|
||||
return reportData, nil
|
||||
|
@ -628,17 +579,27 @@ func getSystemEndCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRepor
|
|||
|
||||
// 获取结束时间之前的所有入库数量(包括系统入库、采购入库、产品入库和盘点入库)
|
||||
var inStockData struct {
|
||||
SystemIn uint32 `json:"system_in"`
|
||||
PurchaseIn uint32 `json:"purchase_in"`
|
||||
ProductIn uint32 `json:"product_in"`
|
||||
CheckIn uint32 `json:"check_in"`
|
||||
SystemIn uint32 `json:"system_in"`
|
||||
SystemInAmount float64 `json:"system_in_amount"`
|
||||
PurchaseIn uint32 `json:"purchase_in"`
|
||||
PurchaseInAmount float64 `json:"purchase_in_amount"`
|
||||
ProductIn uint32 `json:"product_in"`
|
||||
ProductInAmount float64 `json:"product_in_amount"`
|
||||
CheckIn uint32 `json:"check_in"`
|
||||
CheckInAmount float64 `json:"check_in_amount"`
|
||||
}
|
||||
qs = qs.Select("SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS system_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS system_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS purchase_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS purchase_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS product_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in",
|
||||
SystemInventory, PurchaseInventory, ProductInventory, CheckInventory).
|
||||
Where("updated_at <= ?", endTime)
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS product_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS check_in_amount",
|
||||
SystemInventory, SystemInventory, PurchaseInventory, PurchaseInventory, ProductInventory, ProductInventory,
|
||||
CheckInventory, CheckInventory).
|
||||
Where("updated_at <= ?", endTime).
|
||||
Where("erp_commodity_id = ?", stock.ErpCommodityId)
|
||||
|
||||
if stock.StoreId != 0 {
|
||||
if len(stock.DecisionStoreId) > 1 {
|
||||
|
@ -655,16 +616,23 @@ func getSystemEndCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRepor
|
|||
|
||||
// 获取结束时间之前的所有出库数量(包括销售出库、系统出库和盘点出库)
|
||||
var outStockData struct {
|
||||
SoldOut uint32 `json:"sold_out"`
|
||||
SystemOut uint32 `json:"system_out"`
|
||||
CheckOut uint32 `json:"check_out"`
|
||||
SoldOut uint32 `json:"sold_out"`
|
||||
SoldOutAmount float64 `json:"sold_out_amount"`
|
||||
SystemOut uint32 `json:"system_out"`
|
||||
SystemOutAmount float64 `json:"system_out_amount"`
|
||||
CheckOut uint32 `json:"check_out"`
|
||||
CheckOutAmount float64 `json:"check_out_amount"`
|
||||
}
|
||||
es = es.Select("SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS sold_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS sold_out_amount, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS system_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out",
|
||||
SoldOut, SystemOut, CheckOut).
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS system_out_amount, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS check_out_amount",
|
||||
SoldOut, SoldOut, SystemOut, SystemOut, CheckOut, CheckOut).
|
||||
Where("updated_at <= ?", endTime).
|
||||
Where("state IN (?)", []int{SoldOut, SystemOut, CheckOut})
|
||||
Where("state IN (?)", []int{SoldOut, SystemOut, CheckOut}).
|
||||
Where("erp_commodity_id = ?", stock.ErpCommodityId)
|
||||
|
||||
if stock.StoreId != 0 {
|
||||
if len(stock.DecisionStoreId) > 1 {
|
||||
|
@ -679,18 +647,29 @@ func getSystemEndCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRepor
|
|||
}
|
||||
|
||||
// 计算期末库存
|
||||
endStock := int64(inStockData.SystemIn) + int64(inStockData.PurchaseIn) + int64(inStockData.ProductIn) + int64(inStockData.CheckIn) -
|
||||
int64(outStockData.SoldOut) - int64(outStockData.SystemOut) - int64(outStockData.CheckOut)
|
||||
endStock := int64(inStockData.SystemIn) + int64(inStockData.PurchaseIn) + int64(inStockData.ProductIn) +
|
||||
int64(inStockData.CheckIn) - int64(outStockData.SoldOut) - int64(outStockData.SystemOut) -
|
||||
int64(outStockData.CheckOut)
|
||||
|
||||
if endStock < 0 {
|
||||
endStock = 0 // 确保库存不会为负
|
||||
}
|
||||
reportData.EndStock = uint32(endStock)
|
||||
|
||||
// 计算期末金额
|
||||
endAmount := inStockData.SystemInAmount + inStockData.PurchaseInAmount + inStockData.ProductInAmount +
|
||||
inStockData.CheckInAmount - outStockData.SoldOutAmount - outStockData.SystemOutAmount -
|
||||
outStockData.CheckOutAmount
|
||||
if endAmount < 0 {
|
||||
endAmount = 0
|
||||
}
|
||||
|
||||
reportData.EndStock = uint32(endStock)
|
||||
reportData.EndAmount = endAmount
|
||||
} else {
|
||||
// 如果没有结束时间,直接获取系统入库数量作为期末库存
|
||||
// 如果没有结束时间,直接获取系统在库数量作为期末库存
|
||||
qs = qs.Select("SUM(count) as end_stock, SUM(wholesale_price) as end_amount").
|
||||
Where("storage_type = ? and erp_commodity_id = ?", SystemInventory, stock.ErpCommodityId)
|
||||
Where("state in (?) and erp_commodity_id = ?", []uint32{InStock, InAllot}, stock.ErpCommodityId).
|
||||
Find(&reportData)
|
||||
|
||||
if stock.StoreId != 0 {
|
||||
if len(stock.DecisionStoreId) > 1 {
|
||||
|
@ -1194,6 +1173,51 @@ func getChangeReduceCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionRe
|
|||
return reportData, nil
|
||||
}
|
||||
|
||||
// 查询系统入库数据:系统入库
|
||||
func getSystemInCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionReportData, error) {
|
||||
var reportData DecisionReportData
|
||||
|
||||
qs := orm.Eloquent.Debug().Table("erp_stock_commodity")
|
||||
|
||||
// 进行条件查询
|
||||
if req.StartTime != "" { // 出入库开始时间
|
||||
parse, err := time.Parse(QueryTimeFormat, req.StartTime)
|
||||
if err != nil {
|
||||
logger.Errorf("getSystemStartCount err:", err)
|
||||
return DecisionReportData{}, err
|
||||
}
|
||||
qs = qs.Where("created_at > ?", parse)
|
||||
}
|
||||
|
||||
if req.EndTime != "" { // 出入库结束时间
|
||||
parse, err := time.Parse(QueryTimeFormat, req.EndTime)
|
||||
if err != nil {
|
||||
logger.Errorf("getSystemStartCount err:", err)
|
||||
return DecisionReportData{}, err
|
||||
}
|
||||
qs = qs.Where("created_at <= ?", parse)
|
||||
}
|
||||
|
||||
var err error
|
||||
if stock.StoreId != 0 {
|
||||
if len(stock.DecisionStoreId) > 1 {
|
||||
err = qs.Select("SUM(count) as system_in").Where("storage_type = ? and store_id in (?) "+
|
||||
"and erp_commodity_id = ?", SystemInventory, stock.DecisionStoreId, stock.ErpCommodityId).Find(&reportData).Error
|
||||
} else {
|
||||
err = qs.Select("SUM(count) as system_in").Where("storage_type = ? and store_id = ? "+
|
||||
"and erp_commodity_id = ?", SystemInventory, stock.StoreId, stock.ErpCommodityId).Find(&reportData).Error
|
||||
}
|
||||
} else {
|
||||
err = qs.Select("SUM(count) as system_in").Where("storage_type = ? "+
|
||||
"and erp_commodity_id = ?", SystemInventory, stock.ErpCommodityId).Find(&reportData).Error
|
||||
}
|
||||
if err != nil {
|
||||
return DecisionReportData{}, err
|
||||
}
|
||||
|
||||
return reportData, nil
|
||||
}
|
||||
|
||||
// 查询系统出库数据:系统出库
|
||||
func getSystemOutCount(req *ErpDecisionReportReq, stock ErpStock) (DecisionReportData, error) {
|
||||
var reportData DecisionReportData
|
||||
|
@ -1476,7 +1500,9 @@ func getSumStartCount(req *ErpDecisionReportReq) (DecisionReportData, error) {
|
|||
}
|
||||
|
||||
// 计算开始时间的前一天
|
||||
previousDay := startTime.AddDate(0, 0, -1)
|
||||
//previousDay := startTime.AddDate(0, 0, -1)
|
||||
previousDay := startTime.AddDate(0, 0, -1).Truncate(24 * time.Hour).
|
||||
Add(23*time.Hour + 59*time.Minute + 59*time.Second)
|
||||
|
||||
// 获取系统入库数量
|
||||
var systemStartData DecisionReportData
|
||||
|
@ -1487,29 +1513,41 @@ func getSumStartCount(req *ErpDecisionReportReq) (DecisionReportData, error) {
|
|||
|
||||
// 获取开始时间前一天的所有出库数量(包括销售出库、系统出库和盘点出库)
|
||||
var outStockData struct {
|
||||
SoldOut uint32 `json:"sold_out"`
|
||||
SystemOut uint32 `json:"system_out"`
|
||||
CheckOut uint32 `json:"check_out"`
|
||||
SoldOut uint32 `json:"sold_out"`
|
||||
SoldOutAmount float64 `json:"sold_out_amount"`
|
||||
SystemOut uint32 `json:"system_out"`
|
||||
SystemOutAmount float64 `json:"system_out_amount"`
|
||||
CheckOut uint32 `json:"check_out"`
|
||||
CheckOutAmount float64 `json:"check_out_amount"`
|
||||
}
|
||||
es := orm.Eloquent.Debug().Table("erp_stock_commodity").
|
||||
Select("SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS sold_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS sold_out_amount, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS system_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out",
|
||||
SoldOut, SystemOut, CheckOut).
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS system_out_amount, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS check_out_amount",
|
||||
SoldOut, SoldOut, SystemOut, SystemOut, CheckOut, CheckOut).
|
||||
Where("updated_at <= ?", previousDay).
|
||||
Where("state IN (?)", []int{SoldOut, SystemOut, CheckOut})
|
||||
|
||||
// 获取开始时间前一天的所有入库数量(包括采购入库、产品入库和盘点入库)
|
||||
var inStockData struct {
|
||||
PurchaseIn uint32 `json:"purchase_in"`
|
||||
ProductIn uint32 `json:"product_in"`
|
||||
CheckIn uint32 `json:"check_in"`
|
||||
PurchaseIn uint32 `json:"purchase_in"`
|
||||
PurchaseInAmount float64 `json:"purchase_in_amount"`
|
||||
ProductIn uint32 `json:"product_in"`
|
||||
ProductInAmount float64 `json:"product_in_amount"`
|
||||
CheckIn uint32 `json:"check_in"`
|
||||
CheckInAmount float64 `json:"check_in_amount"`
|
||||
}
|
||||
ts := orm.Eloquent.Debug().Table("erp_stock_commodity").
|
||||
Select("SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS purchase_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS purchase_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS product_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in",
|
||||
PurchaseInventory, ProductInventory, CheckInventory).
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS product_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS check_in_amount",
|
||||
PurchaseInventory, PurchaseInventory, ProductInventory, ProductInventory, CheckInventory, CheckInventory).
|
||||
Where("created_at <= ?", previousDay)
|
||||
|
||||
if len(req.StoreId) > 0 { // 门店复选
|
||||
|
@ -1576,61 +1614,71 @@ func getSumStartCount(req *ErpDecisionReportReq) (DecisionReportData, error) {
|
|||
}
|
||||
|
||||
// 计算期初库存
|
||||
beginStock := int64(systemStartData.BeginStock) - int64(outStockData.SoldOut) - int64(outStockData.SystemOut) - int64(outStockData.CheckOut) +
|
||||
int64(inStockData.PurchaseIn) + int64(inStockData.ProductIn) + int64(inStockData.CheckIn)
|
||||
beginStock := int64(systemStartData.BeginStock) - int64(outStockData.SoldOut) - int64(outStockData.SystemOut) -
|
||||
int64(outStockData.CheckOut) + int64(inStockData.PurchaseIn) + int64(inStockData.ProductIn) +
|
||||
int64(inStockData.CheckIn)
|
||||
|
||||
if beginStock < 0 {
|
||||
beginStock = 0 // 确保库存不会为负
|
||||
}
|
||||
|
||||
// 计算期初金额
|
||||
beginAmount := systemStartData.BeginAmount - outStockData.SoldOutAmount -
|
||||
outStockData.SystemOutAmount - outStockData.CheckOutAmount +
|
||||
inStockData.PurchaseInAmount + inStockData.ProductInAmount + inStockData.CheckInAmount
|
||||
if beginAmount < 0 {
|
||||
beginAmount = 0 // 确保库存不会为负
|
||||
}
|
||||
|
||||
reportData.BeginStock = uint32(beginStock)
|
||||
reportData.BeginAmount = systemStartData.BeginAmount
|
||||
reportData.BeginAmount = beginAmount
|
||||
|
||||
} else {
|
||||
// 如果没有开始时间,直接获取系统入库数量作为期初库存
|
||||
qs := orm.Eloquent.Debug().Table("erp_stock_commodity").
|
||||
Select("SUM(count) as begin_stock, SUM(wholesale_price) as begin_amount").
|
||||
Where("storage_type = ?", SystemInventory)
|
||||
|
||||
if len(req.StoreId) > 0 { // 门店复选
|
||||
var storeIDs []uint32
|
||||
for _, store := range req.StoreId {
|
||||
storeIDs = append(storeIDs, store)
|
||||
}
|
||||
if len(storeIDs) == 1 {
|
||||
qs = qs.Where("store_id IN = ?", storeIDs[0])
|
||||
} else {
|
||||
qs = qs.Where("store_id IN (?)", storeIDs)
|
||||
}
|
||||
}
|
||||
|
||||
if len(req.CommodityName) > 0 { // 商品名称
|
||||
var commodityNames []string
|
||||
for _, commodityName := range req.CommodityName {
|
||||
commodityNames = append(commodityNames, commodityName)
|
||||
}
|
||||
if len(commodityNames) == 1 {
|
||||
qs = qs.Where("erp_commodity_name = ?", commodityNames[0])
|
||||
} else {
|
||||
qs = qs.Where("erp_commodity_name IN (?)", commodityNames)
|
||||
}
|
||||
}
|
||||
|
||||
if len(req.CategoryID) > 0 { // 商品分类id
|
||||
var categoryIDs []uint32
|
||||
for _, category := range req.CategoryID {
|
||||
categoryIDs = append(categoryIDs, category)
|
||||
}
|
||||
if len(categoryIDs) == 1 {
|
||||
qs = qs.Where("erp_category_id = ?", categoryIDs[0])
|
||||
} else {
|
||||
qs = qs.Where("erp_category_id IN (?)", categoryIDs)
|
||||
}
|
||||
}
|
||||
|
||||
err := qs.Find(&reportData).Error
|
||||
if err != nil {
|
||||
return DecisionReportData{}, err
|
||||
}
|
||||
//// 如果没有开始时间,直接获取系统入库数量作为期初库存
|
||||
//qs := orm.Eloquent.Debug().Table("erp_stock_commodity").
|
||||
// Select("SUM(count) as begin_stock, SUM(wholesale_price) as begin_amount").
|
||||
// Where("storage_type = ?", SystemInventory)
|
||||
//
|
||||
//if len(req.StoreId) > 0 { // 门店复选
|
||||
// var storeIDs []uint32
|
||||
// for _, store := range req.StoreId {
|
||||
// storeIDs = append(storeIDs, store)
|
||||
// }
|
||||
// if len(storeIDs) == 1 {
|
||||
// qs = qs.Where("store_id IN = ?", storeIDs[0])
|
||||
// } else {
|
||||
// qs = qs.Where("store_id IN (?)", storeIDs)
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//if len(req.CommodityName) > 0 { // 商品名称
|
||||
// var commodityNames []string
|
||||
// for _, commodityName := range req.CommodityName {
|
||||
// commodityNames = append(commodityNames, commodityName)
|
||||
// }
|
||||
// if len(commodityNames) == 1 {
|
||||
// qs = qs.Where("erp_commodity_name = ?", commodityNames[0])
|
||||
// } else {
|
||||
// qs = qs.Where("erp_commodity_name IN (?)", commodityNames)
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//if len(req.CategoryID) > 0 { // 商品分类id
|
||||
// var categoryIDs []uint32
|
||||
// for _, category := range req.CategoryID {
|
||||
// categoryIDs = append(categoryIDs, category)
|
||||
// }
|
||||
// if len(categoryIDs) == 1 {
|
||||
// qs = qs.Where("erp_category_id = ?", categoryIDs[0])
|
||||
// } else {
|
||||
// qs = qs.Where("erp_category_id IN (?)", categoryIDs)
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//err := qs.Find(&reportData).Error
|
||||
//if err != nil {
|
||||
// return DecisionReportData{}, err
|
||||
//}
|
||||
}
|
||||
|
||||
return reportData, nil
|
||||
|
@ -1694,16 +1742,25 @@ func getSumEndCount(req *ErpDecisionReportReq) (DecisionReportData, error) {
|
|||
|
||||
// 获取结束时间之前的所有入库数量(包括系统入库、采购入库、产品入库和盘点入库)
|
||||
var inStockData struct {
|
||||
SystemIn uint32 `json:"system_in"`
|
||||
PurchaseIn uint32 `json:"purchase_in"`
|
||||
ProductIn uint32 `json:"product_in"`
|
||||
CheckIn uint32 `json:"check_in"`
|
||||
SystemIn uint32 `json:"system_in"`
|
||||
SystemInAmount float64 `json:"system_in_amount"`
|
||||
PurchaseIn uint32 `json:"purchase_in"`
|
||||
PurchaseInAmount float64 `json:"purchase_in_amount"`
|
||||
ProductIn uint32 `json:"product_in"`
|
||||
ProductInAmount float64 `json:"product_in_amount"`
|
||||
CheckIn uint32 `json:"check_in"`
|
||||
CheckInAmount float64 `json:"check_in_amount"`
|
||||
}
|
||||
qs = qs.Select("SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS system_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS system_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS purchase_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS purchase_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS product_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in",
|
||||
SystemInventory, PurchaseInventory, ProductInventory, CheckInventory).
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS product_in_amount, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS check_in, "+
|
||||
"SUM(CASE WHEN storage_type = ? THEN wholesale_price ELSE 0 END) AS check_in_amount",
|
||||
SystemInventory, SystemInventory, PurchaseInventory, PurchaseInventory, ProductInventory, ProductInventory,
|
||||
CheckInventory, CheckInventory).
|
||||
Where("updated_at <= ?", endTime)
|
||||
|
||||
err = qs.Find(&inStockData).Error
|
||||
|
@ -1713,14 +1770,20 @@ func getSumEndCount(req *ErpDecisionReportReq) (DecisionReportData, error) {
|
|||
|
||||
// 获取结束时间之前的所有出库数量(包括销售出库、系统出库和盘点出库)
|
||||
var outStockData struct {
|
||||
SoldOut uint32 `json:"sold_out"`
|
||||
SystemOut uint32 `json:"system_out"`
|
||||
CheckOut uint32 `json:"check_out"`
|
||||
SoldOut uint32 `json:"sold_out"`
|
||||
SoldOutAmount float64 `json:"sold_out_amount"`
|
||||
SystemOut uint32 `json:"system_out"`
|
||||
SystemOutAmount float64 `json:"system_out_amount"`
|
||||
CheckOut uint32 `json:"check_out"`
|
||||
CheckOutAmount float64 `json:"check_out_amount"`
|
||||
}
|
||||
es = es.Select("SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS sold_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS sold_out_amount, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS system_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out",
|
||||
SoldOut, SystemOut, CheckOut).
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS system_out_amount, "+
|
||||
"SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS check_out, "+
|
||||
"SUM(CASE WHEN state = ? THEN wholesale_price ELSE 0 END) AS check_out_amount",
|
||||
SoldOut, SoldOut, SystemOut, SystemOut, CheckOut, CheckOut).
|
||||
Where("updated_at <= ?", endTime).
|
||||
Where("state IN (?)", []int{SoldOut, SystemOut, CheckOut})
|
||||
|
||||
|
@ -1736,12 +1799,21 @@ func getSumEndCount(req *ErpDecisionReportReq) (DecisionReportData, error) {
|
|||
if endStock < 0 {
|
||||
endStock = 0 // 确保库存不会为负
|
||||
}
|
||||
reportData.EndStock = uint32(endStock)
|
||||
|
||||
// 计算期末金额
|
||||
endAmount := inStockData.SystemInAmount + inStockData.PurchaseInAmount + inStockData.ProductInAmount +
|
||||
inStockData.CheckInAmount - outStockData.SoldOutAmount - outStockData.SystemOutAmount -
|
||||
outStockData.CheckOutAmount
|
||||
if endAmount < 0 {
|
||||
endAmount = 0
|
||||
}
|
||||
|
||||
reportData.EndStock = uint32(endStock)
|
||||
reportData.EndAmount = endAmount
|
||||
} else {
|
||||
// 如果没有结束时间,直接获取系统入库数量作为期末库存
|
||||
// 如果没有结束时间,直接获取系统在库数量作为期末库存
|
||||
qs = qs.Select("SUM(count) as end_stock, SUM(wholesale_price) as end_amount").
|
||||
Where("storage_type = ?", SystemInventory)
|
||||
Where("state in (?)", []uint32{InStock, InAllot}).Find(&reportData)
|
||||
|
||||
err := qs.Find(&reportData).Error
|
||||
if err != nil {
|
||||
|
@ -1752,7 +1824,7 @@ func getSumEndCount(req *ErpDecisionReportReq) (DecisionReportData, error) {
|
|||
return reportData, nil
|
||||
}
|
||||
|
||||
// 查询库存汇总数据:采购退货数量、产品入库、系统出库、在途库存(入库)数量
|
||||
// 查询库存汇总数据:采购退货数量、产品入库、系统入库、系统出库、在途库存(入库)数量
|
||||
func getSumStockData(req *ErpDecisionReportReq) (DecisionReportData, error) {
|
||||
var reportData DecisionReportData
|
||||
qs := orm.Eloquent.Debug().Table("erp_stock_commodity")
|
||||
|
@ -1810,9 +1882,10 @@ func getSumStockData(req *ErpDecisionReportReq) (DecisionReportData, error) {
|
|||
subQuery := qs.Select(`
|
||||
SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS purchase_return,
|
||||
SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS product_in,
|
||||
SUM(CASE WHEN storage_type = ? THEN count ELSE 0 END) AS system_in,
|
||||
SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS system_out,
|
||||
SUM(CASE WHEN state = ? THEN count ELSE 0 END) AS allot_wait_in
|
||||
`, PurchaseReturn, ProductInventory, SystemOut, InAllot)
|
||||
`, PurchaseReturn, ProductInventory, SystemInventory, SystemOut, InAllot)
|
||||
|
||||
err := subQuery.Scan(&reportData).Error
|
||||
if err != nil {
|
||||
|
@ -2146,6 +2219,7 @@ func getSumDecisionReportData(req *ErpDecisionReportReq) (DecisionSumData, error
|
|||
sumData.TotalPurchaseReturn = sumStockData.PurchaseReturn
|
||||
sumData.TotalAllotWaitIn = sumStockData.AllotWaitIn
|
||||
sumData.TotalProductIn = sumStockData.ProductIn
|
||||
sumData.TotalSystemIn = sumStockData.SystemIn
|
||||
sumData.TotalSystemOut = sumStockData.SystemOut
|
||||
|
||||
sumPurchaseData, err := getSumPurchaseData(req)
|
||||
|
@ -2176,13 +2250,16 @@ func getSumDecisionReportData(req *ErpDecisionReportReq) (DecisionSumData, error
|
|||
sumData.TotalAllotIn = sumAllotData.AllotIn
|
||||
sumData.TotalAllotOut = sumAllotData.AllotOut
|
||||
|
||||
// Step 4: 计算调整库存逻辑(期初+入库-出库)
|
||||
sumData.TotalEndStock = sumData.TotalBeginStock + sumData.TotalPurchaseStock + sumData.TotalAllotIn + sumData.TotalProductIn + sumData.TotalCheckIn
|
||||
if sumData.TotalEndStock < (sumData.TotalPurchaseReturn + sumData.TotalOrderSale + sumData.TotalAllotOut + sumData.TotalSystemOut + sumData.TotalCheckOut) {
|
||||
sumData.TotalEndStock = 0
|
||||
sumData.TotalEndAmount = 0
|
||||
} else {
|
||||
sumData.TotalEndStock -= sumData.TotalPurchaseReturn + sumData.TotalOrderSale + sumData.TotalAllotOut + sumData.TotalSystemOut + sumData.TotalCheckOut
|
||||
if req.EndTime != "" {
|
||||
// Step 4: 计算调整库存逻辑(期初+入库-出库)
|
||||
sumData.TotalEndStock = sumData.TotalBeginStock + sumData.TotalPurchaseStock + sumData.TotalAllotIn +
|
||||
sumData.TotalProductIn + sumData.TotalCheckIn + sumData.TotalOrderReject
|
||||
if sumData.TotalEndStock < (sumData.TotalPurchaseReturn + sumData.TotalOrderSale + sumData.TotalAllotOut + sumData.TotalSystemOut + sumData.TotalCheckOut) {
|
||||
sumData.TotalEndStock = 0
|
||||
sumData.TotalEndAmount = 0
|
||||
} else {
|
||||
sumData.TotalEndStock -= sumData.TotalPurchaseReturn + sumData.TotalOrderSale + sumData.TotalAllotOut + sumData.TotalSystemOut + sumData.TotalCheckOut
|
||||
}
|
||||
}
|
||||
|
||||
roundDecisionSumData(&sumData)
|
||||
|
|
|
@ -783,7 +783,10 @@ func handleInventoryReduce(gdb *gorm.DB, changeOrder ErpInventoryChangeOrder) er
|
|||
|
||||
// 更新库存商品状态为:盘点出库
|
||||
err = gdb.Table("erp_stock_commodity").Where("imei = ?", trimCommodities[i].IMEI).
|
||||
Updates(map[string]interface{}{"state": CheckOut}).Error
|
||||
Updates(map[string]interface{}{
|
||||
"state": CheckOut,
|
||||
"updated_at": time.Now(),
|
||||
}).Error
|
||||
if err != nil {
|
||||
logger.Error("handleInventoryReduce update erp_stock_commodity err:",
|
||||
logger.Field("err", err))
|
||||
|
@ -836,7 +839,10 @@ func handleInventoryReduce(gdb *gorm.DB, changeOrder ErpInventoryChangeOrder) er
|
|||
}
|
||||
|
||||
err = gdb.Table("erp_stock_commodity").Where("id = ?", rightId).
|
||||
Updates(map[string]interface{}{"state": CheckOut}).Error // 状态更新为:盘点出库
|
||||
Updates(map[string]interface{}{
|
||||
"state": CheckOut,
|
||||
"updated_at": time.Now(),
|
||||
}).Error // 状态更新为:盘点出库
|
||||
if err != nil {
|
||||
logger.Error("handleInventoryReduce update erp_stock_commodity err:",
|
||||
logger.Field("err", err))
|
||||
|
|
|
@ -1400,8 +1400,9 @@ func InventoryErpPurchaseUpdateRejectStock(gdb *gorm.DB, list []ErpPurchaseInven
|
|||
|
||||
err = gdb.Table("erp_stock_commodity").Where("imei = ?", list[i].IMEI).
|
||||
Updates(&map[string]interface{}{
|
||||
"state": PurchaseReturn,
|
||||
"stock_sn": list[i].SerialNumber,
|
||||
"state": PurchaseReturn,
|
||||
"stock_sn": list[i].SerialNumber,
|
||||
"updated_at": time.Now(),
|
||||
}).Error // 状态更新为采购退货
|
||||
if err != nil {
|
||||
logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err))
|
||||
|
@ -1462,8 +1463,9 @@ func InventoryErpPurchaseUpdateRejectStock(gdb *gorm.DB, list []ErpPurchaseInven
|
|||
return fmt.Errorf("商品[%s]采购退货数量超出实际库存数量,请先零售退货", list[i].ErpCommodityName)
|
||||
}
|
||||
err = gdb.Table("erp_stock_commodity").Where("id = ?", currentID).Updates(&map[string]interface{}{
|
||||
"state": PurchaseReturn,
|
||||
"stock_sn": list[i].SerialNumber,
|
||||
"state": PurchaseReturn,
|
||||
"stock_sn": list[i].SerialNumber,
|
||||
"updated_at": time.Now(),
|
||||
}).Error // 状态更新为采购退货
|
||||
if err != nil {
|
||||
logger.Error("RetailTypeRejected commodities err:", logger.Field("err", err))
|
||||
|
|
Loading…
Reference in New Issue
Block a user