diff --git a/app/admin/models/erp_order.go b/app/admin/models/erp_order.go index f9fdf44..67e0a3b 100644 --- a/app/admin/models/erp_order.go +++ b/app/admin/models/erp_order.go @@ -1408,6 +1408,7 @@ func (m *ErpOrder) SetRetailDetailCommodity() { item.StaffProfit = -item.StaffProfit item.StaffCostPrice = -item.StaffCostPrice item.WholesalePrice = -item.WholesalePrice + item.CouponDiscount = -item.CouponDiscount } item.StaffPrice = item.StaffCostPrice + item.WholesalePrice @@ -1500,12 +1501,20 @@ func mergeOrderCommodities(orderCommodities []ErpOrderCommodity) []ErpOrderCommo ErpOrderId uint32 ErpCommodityId uint32 IMEI string + CouponID uint32 + SalePrice float64 } commodityMap := make(map[key]*ErpOrderCommodity) // 遍历orderCommodities,将相同ErpCommodityId的数量累加 for _, commodity := range orderCommodities { - comboKey := key{ErpOrderId: commodity.ErpOrderId, ErpCommodityId: commodity.ErpCommodityId, IMEI: commodity.IMEI} + comboKey := key{ + ErpOrderId: commodity.ErpOrderId, + ErpCommodityId: commodity.ErpCommodityId, + IMEI: commodity.IMEI, + CouponID: commodity.CouponID, + SalePrice: commodity.SalePrice, + } if existingCommodity, exists := commodityMap[comboKey]; exists { existingCommodity.Count += commodity.Count existingCommodity.SalesProfit += commodity.SalesProfit @@ -4393,6 +4402,7 @@ func queryRetailDetailByJoin(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp sumData.PosAmount = 0 sumData.StoreVmAmount = 0 sumData.OtherAmount = 0 + RoundRetailDetailTotalData(&sumData) var result []RetailDetailByJoin @@ -4773,6 +4783,7 @@ func queryRetailDetailCommon(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp sumData.PosAmount = cashier.PosAmount sumData.StoreVmAmount = cashier.StoreVmAmount sumData.OtherAmount = cashier.OtherAmount + RoundRetailDetailTotalData(&sumData) if req.IsExport == 1 { // 导出excel var orders []ErpOrder @@ -4844,6 +4855,39 @@ func roundValues(data *RetailDetailTotalData, totalPerData *TotalPerData, cashie } } +// RoundRetailDetailTotalData 将 RetailDetailTotalData 中所有 float64 字段保留两位小数 +func RoundRetailDetailTotalData(data *RetailDetailTotalData) { + data.RetailPrice = tools.RoundToTwoDecimalPlaces(data.RetailPrice) + data.SalePrice = tools.RoundToTwoDecimalPlaces(data.SalePrice) + data.SaleDiscount = tools.RoundToTwoDecimalPlaces(data.SaleDiscount) + data.MemberDiscount = tools.RoundToTwoDecimalPlaces(data.MemberDiscount) + data.VmDiscount = tools.RoundToTwoDecimalPlaces(data.VmDiscount) + data.CouponDiscount = tools.RoundToTwoDecimalPlaces(data.CouponDiscount) + data.Amount = tools.RoundToTwoDecimalPlaces(data.Amount) + data.WholesalePrice = tools.RoundToTwoDecimalPlaces(data.WholesalePrice) + data.StaffPrice = tools.RoundToTwoDecimalPlaces(data.StaffPrice) + data.SalesProfit = tools.RoundToTwoDecimalPlaces(data.SalesProfit) + data.StaffProfit = tools.RoundToTwoDecimalPlaces(data.StaffProfit) + data.TotalRetailPrice = tools.RoundToTwoDecimalPlaces(data.TotalRetailPrice) + data.TotalDiscount = tools.RoundToTwoDecimalPlaces(data.TotalDiscount) + data.TotalAmount = tools.RoundToTwoDecimalPlaces(data.TotalAmount) + data.TotalSalesProfit = tools.RoundToTwoDecimalPlaces(data.TotalSalesProfit) + data.TotalStaffProfit = tools.RoundToTwoDecimalPlaces(data.TotalStaffProfit) + data.StorePer = tools.RoundToTwoDecimalPlaces(data.StorePer) + + // 处理TotalCashierData中的float64 + data.ScanAmount = tools.RoundToTwoDecimalPlaces(data.ScanAmount) + data.CashAmount = tools.RoundToTwoDecimalPlaces(data.CashAmount) + data.PosAmount = tools.RoundToTwoDecimalPlaces(data.PosAmount) + data.StoreVmAmount = tools.RoundToTwoDecimalPlaces(data.StoreVmAmount) + data.OtherAmount = tools.RoundToTwoDecimalPlaces(data.OtherAmount) + + // 处理TotalPerData中的float64 + data.TotalSalesProfitPer = tools.RoundToTwoDecimalPlaces(data.TotalSalesProfitPer) + data.TotalStaffProfitPer = tools.RoundToTwoDecimalPlaces(data.TotalStaffProfitPer) + data.SalesmanPer = tools.RoundToTwoDecimalPlaces(data.SalesmanPer) +} + // 查询零售订单的汇总数据 func getRetailDetailTotalDataSale(qs *gorm.DB, retailType string) (RetailDetailTotalData, error) { var sumData RetailDetailTotalData