diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 423316ac0..c38af1ca1 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -254,7 +254,7 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m } //门店发单的订单,取消后要退回配送费 - resetCreateWaybillFee(db, order) + ResetCreateWaybillFee(db, order) } } @@ -444,7 +444,7 @@ func filterOrderInfo(order *model.GoodsOrder) { order.ConsigneeAddress = strings.ReplaceAll(order.ConsigneeAddress, "·", "") } -func resetCreateWaybillFee(db *dao.DaoDB, order *model.GoodsOrder) (err error) { +func ResetCreateWaybillFee(db *dao.DaoDB, order *model.GoodsOrder) (err error) { store, _ := dao.GetStoreDetail(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, order.VendorOrgCode) if store != nil && store.CreateDeliveryType == model.YES { // 门店发单(非京西品牌) // 无运单不参与退款 @@ -484,7 +484,7 @@ func resetCreateWaybillFee(db *dao.DaoDB, order *model.GoodsOrder) (err error) { } // 获取品牌的支付记录 - orderBill, _ := dao.GetBrandBill(dao.GetDB(), store.BrandID, order.VendorOrderID, model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery) + orderBill, _ := dao.GetBrandBill(db, store.BrandID, order.VendorOrderID, model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery) if len(orderBill) != model.YES { return errors.New("订单支出数据异常,应该为一条数据") } @@ -500,7 +500,7 @@ func resetCreateWaybillFee(db *dao.DaoDB, order *model.GoodsOrder) (err error) { OrderID: orderBill[0].OrderID, } dao.WrapAddIDCULEntity(newBill, "") - err = dao.CreateEntity(dao.GetDB(), newBill) + err = dao.CreateEntity(db, newBill) } return err } diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index 241926ce3..d8c4334ba 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -3,6 +3,7 @@ package basesch import ( "fmt" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -121,6 +122,7 @@ func (c *BaseScheduler) SelfDeliverDelivering(order *model.GoodsOrder, userName if err := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).SelfDeliverDelivering(order, userName); err != nil && (err != scheduler.ErrOrderStatusAlreadySatisfyCurOperation && !strings.Contains(err.Error(), "1047") && !strings.Contains(err.Error(), "301251")) { bill, _ := partner.CurOrderManager.LoadWaybill(order.VendorWaybillID, order.WaybillVendorID) c.CancelWaybill(bill, partner.CancelWaybillReasonOther, partner.CancelWaybillReasonStrActive) + orderman.ResetCreateWaybillFee(dao.GetDB(), order) } return err }, "SelfDeliverDelivering orderID:%s", order.VendorOrderID) @@ -150,6 +152,7 @@ func (c *BaseScheduler) SelfDeliverDelivered(order *model.GoodsOrder, userName s if err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).SelfDeliverDelivered(order, userName); err != nil { bill, _ := partner.CurOrderManager.LoadWaybill(order.VendorWaybillID, order.WaybillVendorID) c.CancelWaybill(bill, partner.CancelWaybillReasonOther, partner.CancelWaybillReasonStrActive) + orderman.ResetCreateWaybillFee(dao.GetDB(), order) } return err }, "SelfDeliverDelivered orderID:%s", order.VendorOrderID) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index b151035c4..23e98565c 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -2,6 +2,7 @@ package basesch import ( "fmt" + "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" "git.rosy.net.cn/jx-callback/business/jxutils/netprinter" "strings" "time" @@ -200,9 +201,16 @@ func (c *BaseScheduler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model func (c *BaseScheduler) CancelWaybillByID(ctx *jxcontext.Context, vendorWaybillID string, waybillVendorID int, cancelReasonID int, cancelReason string) (err error) { bill, err := partner.CurOrderManager.LoadWaybill(vendorWaybillID, waybillVendorID) - if err == nil { - err = c.CancelWaybill(bill, cancelReasonID, cancelReason) + if err != nil { + return err } + + if err := c.CancelWaybill(bill, cancelReasonID, cancelReason); err != nil { + return err + } + order, err := partner.CurOrderManager.LoadOrder(bill.VendorOrderID, bill.OrderVendorID) + orderman.ResetCreateWaybillFee(dao.GetDB(), order) + return err } diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index fef54b149..95fd1dbdc 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -813,9 +813,11 @@ func (s *DefScheduler) cancelWaybillNotInStoreOpentime(savedOrderInfo *WatchOrde time4 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime2, time.Now()) if time.Now().Sub(time3) < 0 || time.Now().Sub(time4.Add(time.Minute*30)) > 0 { s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonNotInStoreOpenTime) + s.reverseBrandAccount(storeDetail, bill) } } else { s.CancelWaybill(bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonNotInStoreOpenTime) + s.reverseBrandAccount(storeDetail, bill) } } } @@ -1450,6 +1452,7 @@ func (s *DefScheduler) updateBrandAccount(store *dao.StoreDetail, bill *model.Wa } } +// 取消退费 func (s *DefScheduler) reverseBrandAccount(store *dao.StoreDetail, bill *model.Waybill) { globals.SugarLogger.Debugf("reverseBrandAccount bill: %v", utils.Format4Output(bill, true)) brandBills, _ := dao.GetBrandBill(dao.GetDB(), store.BrandID, bill.VendorOrderID, model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery) @@ -1633,6 +1636,7 @@ func (s *DefScheduler) ProxyCancelWaybill(order *model.GoodsOrder, bill *model.W if cancelReasonID != partner.CancelWaybillReasonNotAcceptIntime { if storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, order.VendorOrgCode); storeDetail != nil { s.reverseBrandAccount(storeDetail, bill) + //orderman.ResetCreateWaybillFee(dao.GetDB(), order) } } }