修改打印机打印数据
This commit is contained in:
@@ -127,47 +127,51 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
|||||||
err := mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
err := mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||||
defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||||
if order.OrderVendorID == model.VendorIDDD {
|
if order.OrderVendorID == model.VendorIDDD {
|
||||||
result := &mtpsapi.RiderInfo{
|
pushMTPSToTiktok(msg.Status, order)
|
||||||
OrderId: order.VendorOrderID,
|
|
||||||
ThirdCarrierOrderId: order.VendorOrderID,
|
|
||||||
CourierName: order.CourierName,
|
|
||||||
CourierPhone: order.CourierMobile,
|
|
||||||
LogisticsProviderCode: "10032",
|
|
||||||
LogisticsStatus: order.Status,
|
|
||||||
OpCode: "",
|
|
||||||
}
|
|
||||||
switch msg.Status {
|
|
||||||
case mtpsapi.OrderStatusWaitingForSchedule: // 待接单,召唤骑手
|
|
||||||
result.LogisticsStatus = model.WaybillStatusNew
|
|
||||||
result.LogisticsContext = model.RiderWaitRider
|
|
||||||
case mtpsapi.OrderStatusAccepted: // 已接单
|
|
||||||
result.LogisticsStatus = model.WaybillStatusCourierAssigned // 分配骑手
|
|
||||||
result.LogisticsContext = model.RiderWaitGetGoods
|
|
||||||
case mtpsapi.OrderStatusDeliverred: // 完成
|
|
||||||
result.LogisticsStatus = model.WaybillStatusDelivered
|
|
||||||
result.LogisticsContext = model.RiderGetOrderDelivered
|
|
||||||
case mtpsapi.OrderStatusCanceled: // 取消
|
|
||||||
result.LogisticsStatus = model.WaybillStatusCanceled
|
|
||||||
result.LogisticsContext = model.RiderGetOrderCanceled
|
|
||||||
case mtpsapi.OrderStatusPickedUp: // 骑手到店
|
|
||||||
result.LogisticsStatus = model.WaybillStatusCourierArrived
|
|
||||||
result.LogisticsContext = model.RiderToStore
|
|
||||||
default:
|
|
||||||
result.LogisticsStatus = 0
|
|
||||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
|
||||||
}
|
|
||||||
globals.SugarLogger.Debugf("===========================mtps:%s", utils.Format4Output(result, false))
|
|
||||||
delivery.PullTiktokRiderInfo(result)
|
|
||||||
if result.LogisticsStatus == model.WaybillStatusCourierArrived {
|
|
||||||
result.LogisticsStatus = model.WaybillStatusDelivering
|
|
||||||
result.LogisticsContext = model.RiderGetOrderDelivering
|
|
||||||
delivery.PullTiktokRiderInfo(result)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func pushMTPSToTiktok(msgStatus int, order *model.Waybill) {
|
||||||
|
result := &mtpsapi.RiderInfo{
|
||||||
|
OrderId: order.VendorOrderID,
|
||||||
|
ThirdCarrierOrderId: order.VendorOrderID,
|
||||||
|
CourierName: order.CourierName,
|
||||||
|
CourierPhone: order.CourierMobile,
|
||||||
|
LogisticsProviderCode: "10032",
|
||||||
|
LogisticsStatus: order.Status,
|
||||||
|
OpCode: "",
|
||||||
|
}
|
||||||
|
switch msgStatus {
|
||||||
|
case mtpsapi.OrderStatusWaitingForSchedule: // 待接单,召唤骑手
|
||||||
|
result.LogisticsStatus = model.WaybillStatusNew
|
||||||
|
result.LogisticsContext = model.RiderWaitRider
|
||||||
|
case mtpsapi.OrderStatusAccepted: // 已接单
|
||||||
|
result.LogisticsStatus = model.WaybillStatusCourierAssigned // 分配骑手
|
||||||
|
result.LogisticsContext = model.RiderWaitGetGoods
|
||||||
|
case mtpsapi.OrderStatusDeliverred: // 完成
|
||||||
|
result.LogisticsStatus = model.WaybillStatusDelivered
|
||||||
|
result.LogisticsContext = model.RiderGetOrderDelivered
|
||||||
|
case mtpsapi.OrderStatusCanceled: // 取消
|
||||||
|
result.LogisticsStatus = model.WaybillStatusCanceled
|
||||||
|
result.LogisticsContext = model.RiderGetOrderCanceled
|
||||||
|
case mtpsapi.OrderStatusPickedUp: // 骑手到店
|
||||||
|
result.LogisticsStatus = model.WaybillStatusCourierArrived
|
||||||
|
result.LogisticsContext = model.RiderToStore
|
||||||
|
default:
|
||||||
|
result.LogisticsStatus = 0
|
||||||
|
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||||
|
}
|
||||||
|
globals.SugarLogger.Debugf("===========================mtps:%s", utils.Format4Output(result, false))
|
||||||
|
delivery.PullTiktokRiderInfo(result)
|
||||||
|
if result.LogisticsStatus == model.WaybillStatusCourierArrived {
|
||||||
|
result.LogisticsStatus = model.WaybillStatusDelivering
|
||||||
|
result.LogisticsContext = model.RiderGetOrderDelivering
|
||||||
|
delivery.PullTiktokRiderInfo(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (c *DeliveryHandler) pushToGy(msg *mtpsapi.CallbackOrderMsg) {
|
func (c *DeliveryHandler) pushToGy(msg *mtpsapi.CallbackOrderMsg) {
|
||||||
cl := http.Client{}
|
cl := http.Client{}
|
||||||
params := make(map[string]interface{})
|
params := make(map[string]interface{})
|
||||||
|
|||||||
@@ -53,8 +53,7 @@ func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel strin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
orderFmt += `
|
orderFmt += `
|
||||||
<C>手机买菜上京西</C><BR>
|
<B>%s#%d</B><BR><BR>
|
||||||
<C>极速到家送惊喜</C><BR>
|
|
||||||
--------------------------------<BR>
|
--------------------------------<BR>
|
||||||
下单时间: %s<BR>
|
下单时间: %s<BR>
|
||||||
预计送达: %s<BR>
|
预计送达: %s<BR>
|
||||||
@@ -68,7 +67,6 @@ func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel strin
|
|||||||
orderFmt += `
|
orderFmt += `
|
||||||
<BR>
|
<BR>
|
||||||
|
|
||||||
<B>%s#%d</B><BR><BR>
|
|
||||||
<QR>%s</QR><BR>
|
<QR>%s</QR><BR>
|
||||||
` + getCode +
|
` + getCode +
|
||||||
`客户: %s<BR>
|
`客户: %s<BR>
|
||||||
@@ -85,11 +83,11 @@ func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel strin
|
|||||||
--------------------------------<BR>`
|
--------------------------------<BR>`
|
||||||
// <BOLD>实际支付:</BOLD>%s<BR>
|
// <BOLD>实际支付:</BOLD>%s<BR>
|
||||||
orderParams = append(orderParams,
|
orderParams = append(orderParams,
|
||||||
|
jxutils.GetVendorName(order.VendorID),
|
||||||
|
order.OrderSeq,
|
||||||
utils.Time2Str(order.OrderCreatedAt),
|
utils.Time2Str(order.OrderCreatedAt),
|
||||||
utils.Time2Str(expectedDeliveryTime),
|
utils.Time2Str(expectedDeliveryTime),
|
||||||
order.VendorOrderID,
|
order.VendorOrderID,
|
||||||
jxutils.GetVendorName(order.VendorID),
|
|
||||||
order.OrderSeq,
|
|
||||||
order.VendorOrderID,
|
order.VendorOrderID,
|
||||||
order.ConsigneeName,
|
order.ConsigneeName,
|
||||||
order.ConsigneeMobile,
|
order.ConsigneeMobile,
|
||||||
@@ -149,15 +147,13 @@ func (c *PrinterHandler) getOrderContentBig(order *model.GoodsOrder, storeTel st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
orderFmt += `
|
orderFmt += `
|
||||||
<C>手机买菜上京西</C><BR>
|
<B>%s#%d</B><BR><BR>
|
||||||
<C>极速到家送惊喜</C><BR>
|
|
||||||
--------------------------------<BR>
|
--------------------------------<BR>
|
||||||
<B>下单时间: %s<BR><BR><BR></B>
|
<B>下单时间: %s<BR><BR><BR></B>
|
||||||
<B>预计送达: %s<BR><BR><BR></B>
|
<B>预计送达: %s<BR><BR><BR></B>
|
||||||
<B>订单编号: %s<BR></B>
|
<B>订单编号: %s<BR></B>
|
||||||
<BR>
|
<BR>
|
||||||
|
|
||||||
<B>%s#%d</B><BR><BR>
|
|
||||||
<QR>%s</QR><BR>
|
<QR>%s</QR><BR>
|
||||||
` + getCode +
|
` + getCode +
|
||||||
`<B>客户: %s<BR></B>
|
`<B>客户: %s<BR></B>
|
||||||
@@ -174,11 +170,11 @@ func (c *PrinterHandler) getOrderContentBig(order *model.GoodsOrder, storeTel st
|
|||||||
--------------------------------<BR>`
|
--------------------------------<BR>`
|
||||||
// <B><BOLD>实际支付:</BOLD></B><B>%s<BR></B>
|
// <B><BOLD>实际支付:</BOLD></B><B>%s<BR></B>
|
||||||
orderParams = append(orderParams,
|
orderParams = append(orderParams,
|
||||||
|
jxutils.GetVendorName(order.VendorID),
|
||||||
|
order.OrderSeq,
|
||||||
utils.Time2Str(order.OrderCreatedAt),
|
utils.Time2Str(order.OrderCreatedAt),
|
||||||
utils.Time2Str(expectedDeliveryTime),
|
utils.Time2Str(expectedDeliveryTime),
|
||||||
order.VendorOrderID,
|
order.VendorOrderID,
|
||||||
jxutils.GetVendorName(order.VendorID),
|
|
||||||
order.OrderSeq,
|
|
||||||
order.VendorOrderID,
|
order.VendorOrderID,
|
||||||
order.ConsigneeName,
|
order.ConsigneeName,
|
||||||
order.ConsigneeMobile,
|
order.ConsigneeMobile,
|
||||||
@@ -214,6 +210,109 @@ func (c *PrinterHandler) getOrderContentBig(order *model.GoodsOrder, storeTel st
|
|||||||
return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...)
|
return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 打印取消或者退款订单
|
||||||
|
func (c *PrinterHandler) getCancelOrRefundOrderContent(order *model.GoodsOrder, printType int, storeDetail *dao.StoreDetail) (content string) {
|
||||||
|
expectedDeliveryTime := order.ExpectedDeliveredTime
|
||||||
|
if utils.IsTimeZero(expectedDeliveryTime) {
|
||||||
|
expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour)
|
||||||
|
}
|
||||||
|
var orderParams []interface{}
|
||||||
|
orderFmt := ``
|
||||||
|
if storeDetail != nil {
|
||||||
|
if storeDetail.BrandIsPrint == model.NO {
|
||||||
|
orderFmt += `
|
||||||
|
<CB>%s</CB><BR><BR>
|
||||||
|
`
|
||||||
|
if order.VendorOrgCode == "34665" {
|
||||||
|
orderParams = append(orderParams, globals.StoreNameEbai2)
|
||||||
|
} else {
|
||||||
|
orderParams = append(orderParams, storeDetail.BrandName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加载用户取消订单售后单
|
||||||
|
|
||||||
|
title := ``
|
||||||
|
if printType == model.YES { // 取消订单
|
||||||
|
title = `<CB>取消订单详情</CB><BR>`
|
||||||
|
} else { // 售后订单
|
||||||
|
title = `<CB>退款订单详情</CB><BR>`
|
||||||
|
}
|
||||||
|
|
||||||
|
orderFmt +=
|
||||||
|
`--------------------------------\n
|
||||||
|
下单时间: %s\n
|
||||||
|
订单编号: %s\n
|
||||||
|
`
|
||||||
|
|
||||||
|
orderFmt += `
|
||||||
|
\n
|
||||||
|
<B>%s <B>#%d</B></B><BR><BR>
|
||||||
|
` + title + `
|
||||||
|
--------------------------------\n`
|
||||||
|
orderParams = append(orderParams,
|
||||||
|
utils.Time2Str(order.OrderCreatedAt),
|
||||||
|
order.VendorOrderID,
|
||||||
|
jxutils.GetVendorName(order.VendorID),
|
||||||
|
order.OrderSeq,
|
||||||
|
)
|
||||||
|
orderFmt += `
|
||||||
|
--------------------------------\n
|
||||||
|
`
|
||||||
|
orderParams = append(orderParams, order.SkuCount, order.GoodsCount, jxutils.IntPrice2StandardCurrencyString(order.ActualPayPrice))
|
||||||
|
return strings.Replace(fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...), "\\n", "\r\n", -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印取消或者退款订单,大字体
|
||||||
|
func (c *PrinterHandler) getCancelOrRefundOrderContentBig(order *model.GoodsOrder, printType int, storeDetail *dao.StoreDetail) (content string) {
|
||||||
|
expectedDeliveryTime := order.ExpectedDeliveredTime
|
||||||
|
if utils.IsTimeZero(expectedDeliveryTime) {
|
||||||
|
expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour)
|
||||||
|
}
|
||||||
|
var orderParams []interface{}
|
||||||
|
orderFmt := ``
|
||||||
|
if storeDetail != nil {
|
||||||
|
if storeDetail.BrandIsPrint == model.NO {
|
||||||
|
orderFmt += `
|
||||||
|
<CB>%s</CB><BR><BR>
|
||||||
|
`
|
||||||
|
if order.VendorOrgCode == "34665" {
|
||||||
|
orderParams = append(orderParams, globals.StoreNameEbai2)
|
||||||
|
} else {
|
||||||
|
orderParams = append(orderParams, storeDetail.BrandName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
title := ``
|
||||||
|
if printType == model.YES { // 退单
|
||||||
|
title = `<CB>取消订单详情</CB><BR>`
|
||||||
|
} else {
|
||||||
|
title = `<CB>退款订单详情</CB><BR>`
|
||||||
|
}
|
||||||
|
orderFmt += `--------------------------------<BR>
|
||||||
|
<B>下单时间: %s<BR></B>
|
||||||
|
<B>订单编号: %s<BR></B>
|
||||||
|
\n
|
||||||
|
<B>%s <B>#%d</B></B><BR><BR>
|
||||||
|
\n
|
||||||
|
` + title + `
|
||||||
|
--------------------------------\n`
|
||||||
|
orderParams = append(orderParams,
|
||||||
|
utils.Time2Str(order.OrderCreatedAt),
|
||||||
|
order.VendorOrderID,
|
||||||
|
jxutils.GetVendorName(order.VendorID),
|
||||||
|
order.OrderSeq,
|
||||||
|
//order.VendorOrderID,
|
||||||
|
)
|
||||||
|
|
||||||
|
orderFmt += `
|
||||||
|
--------------------------------<BR>
|
||||||
|
`
|
||||||
|
orderParams = append(orderParams, order.SkuCount, order.GoodsCount, jxutils.IntPrice2StandardCurrencyString(order.ActualPayPrice))
|
||||||
|
return strings.Replace(fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...), "\\n", "\r\n", -1)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *PrinterHandler) GetVendorID() int {
|
func (c *PrinterHandler) GetVendorID() int {
|
||||||
return model.VendorIDFeiE
|
return model.VendorIDFeiE
|
||||||
}
|
}
|
||||||
@@ -264,7 +363,21 @@ func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) {
|
func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) {
|
||||||
return nil, err
|
if len(order.Skus) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
content := ""
|
||||||
|
if store.PrinterFontSize == partner.PrinterFontSizeBig || store.PrinterFontSize == partner.PrinterFontSizeBig2 {
|
||||||
|
content = c.getCancelOrRefundOrderContent(order, printType, storeDetail)
|
||||||
|
} else {
|
||||||
|
content = c.getCancelOrRefundOrderContentBig(order, printType, storeDetail)
|
||||||
|
}
|
||||||
|
|
||||||
|
if content == "" {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, printerSN, printerKey, printerName string, storeID int64) (notUsed1, notUsed2 string, err error) {
|
func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, printerSN, printerKey, printerName string, storeID int64) (notUsed1, notUsed2 string, err error) {
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel strin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
orderFmt += `<center>手机买菜上京西</center>\n
|
orderFmt += `
|
||||||
<center>极速到家送惊喜</center>\n
|
<FS2>%s#%d</FS2>\n\n
|
||||||
--------------------------------\n
|
--------------------------------\n
|
||||||
下单时间: %s\n
|
下单时间: %s\n
|
||||||
预计送达: %s\n
|
预计送达: %s\n
|
||||||
@@ -64,7 +64,6 @@ func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel strin
|
|||||||
}
|
}
|
||||||
orderFmt += `
|
orderFmt += `
|
||||||
\n
|
\n
|
||||||
<FS>%s#%d</FS>\n\n
|
|
||||||
<QR>%s</QR>
|
<QR>%s</QR>
|
||||||
` + getCode + `\n
|
` + getCode + `\n
|
||||||
客户: %s\n
|
客户: %s\n
|
||||||
@@ -79,11 +78,11 @@ func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel strin
|
|||||||
品名 数量 小计\n
|
品名 数量 小计\n
|
||||||
--------------------------------\n`
|
--------------------------------\n`
|
||||||
orderParams = append(orderParams,
|
orderParams = append(orderParams,
|
||||||
|
jxutils.GetVendorName(order.VendorID),
|
||||||
|
order.OrderSeq,
|
||||||
utils.Time2Str(order.OrderCreatedAt),
|
utils.Time2Str(order.OrderCreatedAt),
|
||||||
utils.Time2Str(expectedDeliveryTime),
|
utils.Time2Str(expectedDeliveryTime),
|
||||||
order.VendorOrderID,
|
order.VendorOrderID,
|
||||||
jxutils.GetVendorName(order.VendorID),
|
|
||||||
order.OrderSeq,
|
|
||||||
order.VendorOrderID,
|
order.VendorOrderID,
|
||||||
order.ConsigneeName,
|
order.ConsigneeName,
|
||||||
order.ConsigneeMobile,
|
order.ConsigneeMobile,
|
||||||
@@ -139,14 +138,13 @@ func (c *PrinterHandler) getOrderContentBig(order *model.GoodsOrder, storeTel st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
orderFmt += `<center>手机买菜上京西</center>\n
|
orderFmt += `
|
||||||
<center>极速到家送惊喜</center>\n
|
<FS2>%s#%d</FS2>\n\n
|
||||||
--------------------------------\n
|
--------------------------------\n
|
||||||
<FS>下单时间: %s\n\n</FS>
|
<FS>下单时间: %s\n\n</FS>
|
||||||
<FS>预计送达: %s\n\n</FS>
|
<FS>预计送达: %s\n\n</FS>
|
||||||
<FS>订单编号: %s\n</FS>
|
<FS>订单编号: %s\n</FS>
|
||||||
\n
|
\n
|
||||||
<FS>%s#%d</FS>\n\n
|
|
||||||
<QR>%s</QR>
|
<QR>%s</QR>
|
||||||
` + getCode + `\n
|
` + getCode + `\n
|
||||||
<FS>客户: %s\n</FS>
|
<FS>客户: %s\n</FS>
|
||||||
@@ -161,11 +159,11 @@ func (c *PrinterHandler) getOrderContentBig(order *model.GoodsOrder, storeTel st
|
|||||||
品名 数量 小计\n
|
品名 数量 小计\n
|
||||||
--------------------------------\n`
|
--------------------------------\n`
|
||||||
orderParams = append(orderParams,
|
orderParams = append(orderParams,
|
||||||
|
jxutils.GetVendorName(order.VendorID),
|
||||||
|
order.OrderSeq,
|
||||||
utils.Time2Str(order.OrderCreatedAt),
|
utils.Time2Str(order.OrderCreatedAt),
|
||||||
utils.Time2Str(expectedDeliveryTime),
|
utils.Time2Str(expectedDeliveryTime),
|
||||||
order.VendorOrderID,
|
order.VendorOrderID,
|
||||||
jxutils.GetVendorName(order.VendorID),
|
|
||||||
order.OrderSeq,
|
|
||||||
order.VendorOrderID,
|
order.VendorOrderID,
|
||||||
order.ConsigneeName,
|
order.ConsigneeName,
|
||||||
order.ConsigneeMobile,
|
order.ConsigneeMobile,
|
||||||
@@ -243,7 +241,6 @@ func (c *PrinterHandler) getCancelOrRefundOrderContent(order *model.GoodsOrder,
|
|||||||
orderParams = append(orderParams,
|
orderParams = append(orderParams,
|
||||||
utils.Time2Str(order.OrderCreatedAt),
|
utils.Time2Str(order.OrderCreatedAt),
|
||||||
order.VendorOrderID,
|
order.VendorOrderID,
|
||||||
|
|
||||||
jxutils.GetVendorName(order.VendorID),
|
jxutils.GetVendorName(order.VendorID),
|
||||||
order.OrderSeq,
|
order.OrderSeq,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user