diff --git a/business/jxutils/netprinter/netprinter.go b/business/jxutils/netprinter/netprinter.go index 84d8f85d0..b4c72f2f1 100644 --- a/business/jxutils/netprinter/netprinter.go +++ b/business/jxutils/netprinter/netprinter.go @@ -49,12 +49,32 @@ func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder) (printRe return PrintOrderByOrder4Store(ctx, order, jxutils.GetSaleStoreIDFromOrder(order)) } +func getStore4Print(db *dao.DaoDB, storeID int) (store *model.Store, err error) { + for i := 0; i < 3; i++ { + store2 := &model.Store{} + store2.ID = storeID + if err = dao.GetEntity(db, store2); err == nil { + store = store2 + if store.LinkStoreID != 0 { + storeID = store.LinkStoreID + } else { + break + } + } else { + break + } + } + if store != nil { + err = nil + } + return store, err +} + func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, storeID int) (printResult *partner.PrinterStatus, err error) { globals.SugarLogger.Debugf("PrintOrderByOrder4Store orderID:%s", order.VendorOrderID) - store := &model.Store{} - store.ID = storeID db := dao.GetDB() - if err = dao.GetEntity(db, store); err == nil { + store, err := getStore4Print(db, storeID) + if err == nil { handler, err := GetHandlerFromStore(store) if err != nil { return &partner.PrinterStatus{