diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 103a3f8dc..66071c8d9 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -446,10 +446,53 @@ func filterOrderInfo(order *model.GoodsOrder) { 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 { - if expend, lastFee, err := partner.CurStoreAcctManager.GetStoreAcctExpendLastCreateWayBillFee(order.VendorOrderID); err == nil && expend != nil { - partner.CurStoreAcctManager.InsertStoreAcctIncomeAndUpdateStoreAcctBalance(jxcontext.AdminCtx, jxutils.GetSaleStoreIDFromOrder(order), lastFee, partner.StoreAcctTypeIncomeCancelReal, order.VendorOrderID, expend.ID) + if store != nil && store.CreateDeliveryType == model.YES { // 门店发单(非京西品牌) + // 无运单不参与退款 + if order.VendorWaybillID == "" { + return err } + // 自配送不参与退款 + if order.VendorOrderID == order.VendorWaybillID { + return err + } + + // 获取运单记录 + orderStatusList, err := GetOrderStatusList2(order.VendorOrderID, order.VendorWaybillID, 2, order.WaybillVendorID) + if err != nil { + globals.SugarLogger.Debug("获取订单操作流程错误:", err) + return err + } + + isRefund := true // 默认可以退费 + for _, v := range orderStatusList { + if order.WaybillVendorID == model.VendorIDMTPS && v.VendorStatus == "30" { + isRefund = false + break + } + if order.WaybillVendorID == model.VendorIDFengNiao && v.VendorStatus == "80" { + isRefund = false + break + } + if order.WaybillVendorID == model.VendorIDDada && v.VendorStatus == "3" { + isRefund = false + break + } + } + + if !isRefund { + return err + } + + // 获取品牌的支付记录 + orderBill, _ := dao.GetBrandBill(dao.GetDB(), store.BrandID, order.VendorOrderID, model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery) + if len(orderBill) != model.YES { + return errors.New("订单支出数据异常,应该为一条数据") + } + + // 将支出记录修改为退款记录,支付类型为收入,且类型为三方配送时:退费 + orderBill[0].BillType = model.BrandBillTypeIncome + newBill := orderBill[0] + _, err = dao.UpdateEntity(dao.GetDB(), newBill) } return err } diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index deaecd709..d756afe9c 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -346,7 +346,7 @@ func (c *OrderManager) GetOrders(ctx *jxcontext.Context, isIncludeFake bool, fro } } } - //if isJxIncomeArea { + //if isJxIncomeArea { // begin = utils.MustInterface2Int64(params["jxIncomeBegin"]) // end = utils.MustInterface2Int64(params["jxIncomeEnd"]) // pageSize = math.MaxInt32 @@ -712,6 +712,31 @@ func (c *OrderManager) GetOrderStatusList(ctx *jxcontext.Context, vendorOrderID return statusList, nil } +// GetOrderStatusList2 查询订单流程 refVendorOrderID 订单Id +func GetOrderStatusList2(refVendorOrderID string, wayBillId string, orderType int, vendorID int) (statusList []*model.OrderStatus, err error) { + sql := ` + SELECT * + FROM order_status t1 + WHERE t1.ref_vendor_order_id = ? AND t1.vendor_order_id = ? AND t1.vendor_id = ? + ` + sqlParams := []interface{}{ + refVendorOrderID, + wayBillId, + vendorID, + } + if orderType > 0 { + sql += " AND t1.order_type = ?" + sqlParams = append(sqlParams, orderType) + } + sql += " ORDER BY t1.status_time, t1.order_type DESC, t1.status" + + db := dao.GetDB() + if err = dao.GetRows(db, &statusList, sql, sqlParams...); err != nil { + return nil, err + } + return statusList, nil +} + func (c *OrderManager) GetOrdersFinancial(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { globals.SugarLogger.Debugf("GetOrdersFinancial from:%s to:%s", fromDateStr, toDateStr) pageSize = jxutils.FormalizePageSize(pageSize) diff --git a/business/jxutils/smsmsg/smsmsg.go b/business/jxutils/smsmsg/smsmsg.go index 390c6a6be..97f4eaac1 100644 --- a/business/jxutils/smsmsg/smsmsg.go +++ b/business/jxutils/smsmsg/smsmsg.go @@ -172,7 +172,7 @@ func NotifyPickOrder(order *model.GoodsOrder) (err error) { return err } -func NotifyOrderCanceled(order *model.GoodsOrder) (err error) { +func NotifyO2019110769024042(order *model.GoodsOrder) (err error) { err = SendSMSMsg(getOrderNotifyPhone(order), globals.SMSSignName, globals.SMSOrderCanceledTemplate, map[string]interface{}{ "vendorName": model.VendorChineseNames[order.VendorID], "seq": order.OrderSeq, diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 11be187e1..39bd8ce41 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -93,12 +93,12 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s return order, result, err } -func (p *PurchaseHandler) getOrderRider(vendorOrgCode, vendorStoreID string,param map[string]interface{}) ( err error) { +func (p *PurchaseHandler) getOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) { return getAPI(vendorOrgCode, 0, vendorStoreID).OrderStatusAndPsInfo(param) } -func (p *PurchaseHandler) GetOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) ( err error) { - return p.getOrderRider(vendorOrgCode, vendorStoreID, param) +func (p *PurchaseHandler) GetOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) { + return p.getOrderRider(vendorOrgCode, vendorStoreID, param) } func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID, vendorStoreID string) (order *model.GoodsOrder, err error) { @@ -392,6 +392,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap } }) } + } } }