1、零售明细汇总数据四舍五入保留2位小数;

2、零售明细退货订单优惠券金额转为负值;
3、零售明细中非串码商品合并规则调整(名称相同、使用优惠券相同,金额相同的才合并);
This commit is contained in:
chenlin 2024-09-27 10:36:08 +08:00
parent 80a7835fd4
commit 5fb54b36d8

View File

@ -1408,6 +1408,7 @@ func (m *ErpOrder) SetRetailDetailCommodity() {
item.StaffProfit = -item.StaffProfit item.StaffProfit = -item.StaffProfit
item.StaffCostPrice = -item.StaffCostPrice item.StaffCostPrice = -item.StaffCostPrice
item.WholesalePrice = -item.WholesalePrice item.WholesalePrice = -item.WholesalePrice
item.CouponDiscount = -item.CouponDiscount
} }
item.StaffPrice = item.StaffCostPrice + item.WholesalePrice item.StaffPrice = item.StaffCostPrice + item.WholesalePrice
@ -1500,12 +1501,20 @@ func mergeOrderCommodities(orderCommodities []ErpOrderCommodity) []ErpOrderCommo
ErpOrderId uint32 ErpOrderId uint32
ErpCommodityId uint32 ErpCommodityId uint32
IMEI string IMEI string
CouponID uint32
SalePrice float64
} }
commodityMap := make(map[key]*ErpOrderCommodity) commodityMap := make(map[key]*ErpOrderCommodity)
// 遍历orderCommodities将相同ErpCommodityId的数量累加 // 遍历orderCommodities将相同ErpCommodityId的数量累加
for _, commodity := range orderCommodities { 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 { if existingCommodity, exists := commodityMap[comboKey]; exists {
existingCommodity.Count += commodity.Count existingCommodity.Count += commodity.Count
existingCommodity.SalesProfit += commodity.SalesProfit existingCommodity.SalesProfit += commodity.SalesProfit
@ -4393,6 +4402,7 @@ func queryRetailDetailByJoin(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
sumData.PosAmount = 0 sumData.PosAmount = 0
sumData.StoreVmAmount = 0 sumData.StoreVmAmount = 0
sumData.OtherAmount = 0 sumData.OtherAmount = 0
RoundRetailDetailTotalData(&sumData)
var result []RetailDetailByJoin var result []RetailDetailByJoin
@ -4773,6 +4783,7 @@ func queryRetailDetailCommon(req *ErpOrderRetailDetailReq, c *gin.Context) (*Erp
sumData.PosAmount = cashier.PosAmount sumData.PosAmount = cashier.PosAmount
sumData.StoreVmAmount = cashier.StoreVmAmount sumData.StoreVmAmount = cashier.StoreVmAmount
sumData.OtherAmount = cashier.OtherAmount sumData.OtherAmount = cashier.OtherAmount
RoundRetailDetailTotalData(&sumData)
if req.IsExport == 1 { // 导出excel if req.IsExport == 1 { // 导出excel
var orders []ErpOrder 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) { func getRetailDetailTotalDataSale(qs *gorm.DB, retailType string) (RetailDetailTotalData, error) {
var sumData RetailDetailTotalData var sumData RetailDetailTotalData