+ GoodsOrder添加EarningPrice表示结算给门店的金额
This commit is contained in:
@@ -349,22 +349,39 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.
|
|||||||
func (c *OrderManager) updateOrderOtherInfo(order *model.GoodsOrder, db *dao.DaoDB) (err error) {
|
func (c *OrderManager) updateOrderOtherInfo(order *model.GoodsOrder, db *dao.DaoDB) (err error) {
|
||||||
globals.SugarLogger.Debugf("updateOrderOtherInfo orderID:%s, VendorStoreID:%s", order.VendorOrderID, order.VendorStoreID)
|
globals.SugarLogger.Debugf("updateOrderOtherInfo orderID:%s, VendorStoreID:%s", order.VendorOrderID, order.VendorStoreID)
|
||||||
|
|
||||||
storeMap := &model.StoreMap{
|
storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, order.VendorStoreID, order.VendorID)
|
||||||
VendorID: order.VendorID,
|
if err != nil {
|
||||||
VendorStoreID: order.VendorStoreID,
|
globals.SugarLogger.Warnf("updateOrderOtherInfo GetStoreDetailByVendorStoreID orderID:%s, VendorStoreID:%s, error:%v", order.VendorOrderID, order.VendorStoreID, err)
|
||||||
}
|
|
||||||
storeMap.DeletedAt = utils.DefaultTimeValue
|
|
||||||
if err = dao.GetEntity(db, storeMap, model.FieldVendorID, model.FieldVendorStoreID, model.FieldDeletedAt); err != nil && err != orm.ErrNoRows {
|
|
||||||
globals.SugarLogger.Warnf("updateOrderOtherInfo GetEntity orderID:%s, VendorStoreID:%s, error:%v", order.VendorOrderID, order.VendorStoreID, err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
order.JxStoreID = storeMap.StoreID
|
order.JxStoreID = storeDetail.Store.ID
|
||||||
if err = c.updateOrderSkuOtherInfo(order, db); err == nil {
|
if err = c.updateOrderSkuOtherInfo(order, db); err == nil {
|
||||||
jxutils.RefreshOrderSkuRelated(order)
|
jxutils.RefreshOrderSkuRelated(order)
|
||||||
|
|
||||||
|
caculateOrderEarningPrice(order, storeDetail.PayPercentage)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 计算结算给门店的金额
|
||||||
|
func caculateOrderEarningPrice(order *model.GoodsOrder, storePayPercentage int) {
|
||||||
|
order.EarningPrice = 0
|
||||||
|
for _, v := range order.Skus {
|
||||||
|
skuEarningPrice := v.EarningPrice
|
||||||
|
if skuEarningPrice == 0 {
|
||||||
|
basePrice := v.SalePrice
|
||||||
|
if v.ShopPrice > 0 && v.ShopPrice < basePrice {
|
||||||
|
basePrice = v.ShopPrice
|
||||||
|
}
|
||||||
|
if storePayPercentage <= 0 {
|
||||||
|
storePayPercentage = model.DefaultEarningPricePercentage
|
||||||
|
}
|
||||||
|
skuEarningPrice = basePrice * int64(storePayPercentage) / 100
|
||||||
|
}
|
||||||
|
order.EarningPrice += skuEarningPrice
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.DaoDB) (isDuplicated bool, order *model.GoodsOrder, err error) {
|
func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.DaoDB) (isDuplicated bool, order *model.GoodsOrder, err error) {
|
||||||
globals.SugarLogger.Debugf("addOrderStatus refOrderID:%s, orderID:%s", orderStatus.RefVendorOrderID, orderStatus.VendorOrderID)
|
globals.SugarLogger.Debugf("addOrderStatus refOrderID:%s, orderID:%s", orderStatus.RefVendorOrderID, orderStatus.VendorOrderID)
|
||||||
if db == nil {
|
if db == nil {
|
||||||
|
|||||||
@@ -283,7 +283,7 @@ func (c *OrderManager) getOrders(ctx *jxcontext.Context, isIncludeSku bool, from
|
|||||||
}
|
}
|
||||||
sql := `
|
sql := `
|
||||||
SELECT SQL_CALC_FOUND_ROWS t1.*,
|
SELECT SQL_CALC_FOUND_ROWS t1.*,
|
||||||
CAST(IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, 70) / 100 AS SIGNED) earning_price,
|
CAST(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, 70) / 100) AS SIGNED) earning_price,
|
||||||
t2.status waybill_status, t2.courier_name, t2.courier_mobile,
|
t2.status waybill_status, t2.courier_name, t2.courier_mobile,
|
||||||
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at`
|
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at`
|
||||||
if isIncludeSku {
|
if isIncludeSku {
|
||||||
@@ -783,7 +783,7 @@ func (c *OrderManager) GetStoresOrderSaleInfo(ctx *jxcontext.Context, storeIDLis
|
|||||||
sql := `
|
sql := `
|
||||||
SELECT IF(t1.jx_store_id > 0, t1.jx_store_id, t1.store_id) store_id, t1.vendor_id, IF(t1.status < ?, 0, t1.status) status,
|
SELECT IF(t1.jx_store_id > 0, t1.jx_store_id, t1.store_id) store_id, t1.vendor_id, IF(t1.status < ?, 0, t1.status) status,
|
||||||
COUNT(*) count, SUM(t1.shop_price) shop_price, SUM(t1.vendor_price) vendor_price, SUM(t1.sale_price) sale_price, SUM(t1.actual_pay_price) actual_pay_price,
|
COUNT(*) count, SUM(t1.shop_price) shop_price, SUM(t1.vendor_price) vendor_price, SUM(t1.sale_price) sale_price, SUM(t1.actual_pay_price) actual_pay_price,
|
||||||
CAST(SUM(IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, 70) / 100) AS SIGNED) earning_price
|
CAST(SUM(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, 70) / 100)) AS SIGNED) earning_price
|
||||||
FROM goods_order t1
|
FROM goods_order t1
|
||||||
LEFT JOIN store t5 ON t5.id = IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id)
|
LEFT JOIN store t5 ON t5.id = IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id)
|
||||||
WHERE t1.order_created_at >= ? AND t1.order_created_at <= ?
|
WHERE t1.order_created_at >= ? AND t1.order_created_at <= ?
|
||||||
|
|||||||
@@ -406,3 +406,7 @@ func WaybillVendorID2Mask(vendorID int) (mask int8) {
|
|||||||
func IsAfsOrderFinalStatus(status int) bool {
|
func IsAfsOrderFinalStatus(status int) bool {
|
||||||
return status >= AfsOrderStatusFinished && status <= AfsOrderStatusFailed
|
return status >= AfsOrderStatusFinished && status <= AfsOrderStatusFailed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
DefaultEarningPricePercentage = 70 // 门店缺省结算百分比
|
||||||
|
)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ type GoodsOrder struct {
|
|||||||
ActualPayPrice int64 `json:"actualPayPrice"` // 单位为分 顾客实际支付
|
ActualPayPrice int64 `json:"actualPayPrice"` // 单位为分 顾客实际支付
|
||||||
TotalShopMoney int64 `json:"totalShopMoney"` // 应结金额-第三方平台结算给京西的金额(包括了所有的补贴,扣除)
|
TotalShopMoney int64 `json:"totalShopMoney"` // 应结金额-第三方平台结算给京西的金额(包括了所有的补贴,扣除)
|
||||||
PmSubsidyMoney int64 `json:"pmSubsidyMoney"` // 平台活动补贴(订单主体活动补贴+订单单条sku补贴)1+
|
PmSubsidyMoney int64 `json:"pmSubsidyMoney"` // 平台活动补贴(订单主体活动补贴+订单单条sku补贴)1+
|
||||||
|
EarningPrice int64 `json:"earningPrice"` // 结算给门店老板的钱(未扣除可能的三方配送费)
|
||||||
Weight int `json:"weight"` // 单位为克
|
Weight int `json:"weight"` // 单位为克
|
||||||
ConsigneeName string `orm:"size(32)" json:"consigneeName"`
|
ConsigneeName string `orm:"size(32)" json:"consigneeName"`
|
||||||
ConsigneeMobile string `orm:"size(32)" json:"consigneeMobile"`
|
ConsigneeMobile string `orm:"size(32)" json:"consigneeMobile"`
|
||||||
|
|||||||
Reference in New Issue
Block a user