1、创建零售退货订单时,单个商品退货金额以入参为准;

2、优化库存导入接口,尝试解决库存列表数据重复的问题;
This commit is contained in:
chenlin 2024-09-10 20:15:26 +08:00
parent 75553fa63d
commit 16e12f85cb
2 changed files with 23 additions and 5 deletions

View File

@ -1229,13 +1229,13 @@ func (m *StockImporter) processErpStocks(erpStocks []ErpStockCommodity) error {
})
}
err := m.ErpStockCountUpdate(begin) //更新or插入库存表
err := errGroup.Wait()
if err != nil {
begin.Rollback()
return err
}
err = errGroup.Wait()
err = m.ErpStockCountUpdate(begin) //更新or插入库存表
if err != nil {
begin.Rollback()
return err
@ -1259,8 +1259,26 @@ func createStockList(begin *gorm.DB, stockList []ErpStockCommodity) error {
return nil
}
// 合并导入数据的辅助函数
func mergeCensusMap(censusMap map[uint32]map[uint32]uint32) map[uint32]map[uint32]uint32 {
mergedMap := make(map[uint32]map[uint32]uint32)
for storeId, commodities := range censusMap {
if mergedMap[storeId] == nil {
mergedMap[storeId] = make(map[uint32]uint32)
}
for commodityId, count := range commodities {
mergedMap[storeId][commodityId] += count
}
}
return mergedMap
}
func (m *StockImporter) ErpStockCountUpdate(gdb *gorm.DB) error {
for k1, v1 := range m.CensusMap {
// 合并导入数据,避免同一商品多次重复处理
mergedCensusMap := mergeCensusMap(m.CensusMap)
//for k1, v1 := range m.CensusMap {
for k1, v1 := range mergedCensusMap {
for k2, v2 := range v1 {
exist, err := QueryRecordExist(fmt.Sprintf("SELECT * FROM erp_stock WHERE store_id=%d AND erp_commodity_id=%d", k1, k2))
if err != nil {

View File

@ -5382,8 +5382,8 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
req.ErpOrderCommodities[i].MemberDiscount = req.ErpOrderCommodities[i].MemberDiscount / float64(req.ErpOrderCommodities[i].Count)
// 单个商品实收金额
req.ErpOrderCommodities[i].ReceivedAmount = req.ErpOrderCommodities[i].ReceivedAmount / float64(req.ErpOrderCommodities[i].Count)
// 单个商品退货金额
req.ErpOrderCommodities[i].RejectedAmount = req.ErpOrderCommodities[i].RejectedAmount / float64(req.ErpOrderCommodities[i].Count)
//// 单个商品退货金额
//req.ErpOrderCommodities[i].RejectedAmount = req.ErpOrderCommodities[i].RejectedAmount / float64(req.ErpOrderCommodities[i].RejectedCount)
for j := 0; j < int(req.ErpOrderCommodities[i].Count); j++ {
stockIdList, _ := stringToIntArray(req.ErpOrderCommodities[i].ErpStockCommodityID)