From 7264835cc65d41e334a294094609ea6ce1ad4a44 Mon Sep 17 00:00:00 2001 From: wule_5900x Date: Mon, 20 Jul 2026 07:37:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=8D=95=E8=A1=A5=E6=8B=8D?= =?UTF-8?q?=E5=8D=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs | 81 ++-- .../Ctrls/OrderCtrls/OrderListCtrl.xaml | 5 +- .../Ctrls/OrderCtrls/OrderListCtrl.xaml.cs | 59 ++- .../OrderCtrls/OrderListRowItemCtrl.xaml | 7 +- .../OrderCtrls/OrderListRowItemCtrl.xaml.cs | 401 +++++++++++------- AllBase/BaseClass.cs | 2 +- AllBase/Model/DBModel/oms_wei_order_info.cs | 47 +- .../Model/DBModel/oms_wei_order_item_info.cs | 4 +- .../Model/Result/PddBuyerAfterSaleLiteInfo.cs | 5 + AllBase/Model/Result/PddBuyerOrderLiteInfo.cs | 5 + Work/29WxOrderWork.csproj | 1 - Work/_29Tools/BLL/SendBuyerOrder.cs | 36 -- Work/_29Tools/Forms/PddMobileBuyOrderForm.cs | 279 +++++++----- 13 files changed, 570 insertions(+), 362 deletions(-) delete mode 100644 Work/_29Tools/BLL/SendBuyerOrder.cs diff --git a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs index ee5f600..8311a37 100644 --- a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs @@ -1,5 +1,6 @@ using _29WxOrderWpf.BaseWindows; using _29WxOrderWpf.CefHelper; +using _29WxOrderWpf.Ctrls.OrderCtrls; using AllBase; using AllBase.Helper; using AllBase.Model; @@ -53,6 +54,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls public ObservableCollection lstFilterPddBuyerOrderInfoLite { get; set; } = new ObservableCollection(); public ObservableCollection lstPddBuyerAfterSaleInfoLite { get; set; } = new ObservableCollection(); public ObservableCollection lstFilterPddBuyerAfterSaleInfoLite { get; set; } = new ObservableCollection(); + public ConcurrentList lstPddBuyerOrderVoidAfterSaleOrderSn { get; set; } = new ConcurrentList(); public CancellationTokenSource cancellationTokenSource { get; set; } = new CancellationTokenSource(); //public ChromiumWebBrowser cefWebBrowser = null; public BuyerReadOrderConfig buyerReadOrderConfig = new BuyerReadOrderConfig(); @@ -572,6 +574,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } pdd_order.TransitBuyerOrderRefundStatus = wx_transit_order?.refund_status; pdd_order.TransitWarehouseIdStr = wx_transit_order?.platform; + pdd_order.TransitWarehouseOrderCodeStr = wx_transit_order?.order_code; pdd_order.Express1WaybillStr = wx_transit_order?.express_1_waybill; pdd_order.Express1CompanyStr = wx_transit_order?.express_1_company; pdd_order.Express2WaybillStr = wx_transit_order?.express_2_waybill; @@ -596,15 +599,16 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls pdd_afterSale.ShopOrderSkuIdStr = wx_order_item?.sku_id ?? wx_transit_order?.order_sku_id; pdd_afterSale.ShopOrderSkuNameStr = wx_order_item?.sku_attr_str; pdd_afterSale.WxOrderCreateTime = wx_order_item?.ItemOrder?.create_time == null ? DateTime.MinValue : BaseClass.StampToDateTime((wx_order_item?.ItemOrder?.create_time).ParseToInt()); - pdd_afterSale.ShopOrderRefundStr = ""; // (/*refund_item?.count > 0 &&*/ wx_order_item.refund_status > 1) ? "店铺售后" : ""; + pdd_afterSale.ShopOrderRefundStr = ""; // (/*refund_item?.count > 0 &&*/ wx_order_item?.refund_status > 1) ? "店铺售后" : ""; //pdd_afterSale.wxRefundStatus = ""; - if (wx_order_item.refund_status > 1) + if (wx_order_item?.refund_status > 1) { pdd_afterSale.ShopOrderRefundStr = "店铺售后"; //pdd_afterSale.wxRefundStatus = pdd_afterSale.order_status_prompt.Contains("待发货") ? "待退款" : "待退货"; } pdd_afterSale.TransitBuyerOrderRefundStatus = wx_transit_order?.refund_status; pdd_afterSale.TransitWarehouseIdStr = wx_transit_order?.platform; + pdd_afterSale.TransitWarehouseOrderCodeStr = wx_transit_order?.order_code; pdd_afterSale.Express1WaybillStr = wx_transit_order?.express_1_waybill; pdd_afterSale.Express1CompanyStr = wx_transit_order?.express_1_company; pdd_afterSale.Express2WaybillStr = wx_transit_order?.express_2_waybill; @@ -750,6 +754,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls order.ShopOrderSkuNameStr = o.ShopOrderSkuNameStr; order.TransitBuyerOrderRefundStatus = o.TransitBuyerOrderRefundStatus; order.TransitWarehouseIdStr = o.TransitWarehouseIdStr; + order.TransitWarehouseOrderCodeStr = o.TransitWarehouseOrderCodeStr; order.Express1WaybillStr = o.Express1WaybillStr; order.Express1CompanyStr = o.Express1CompanyStr; order.Express2WaybillStr = o.Express2WaybillStr; @@ -799,6 +804,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls { } + // 微信售后,服务端自动作废订单,客户端取消买手订单即可 if (order.ShopOrderRefundStr.ParseToString().Contains("售后")) { if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ",")) @@ -806,16 +812,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls // 待发货直接售后,并通知中转仓接口修改退货状态 var afterSaleRst = PddAutoAfterSale(order); } - // 作废订单 后台服务端自动进行 需要核对,未取号订单也无法取消 - //if (order.PreAllocatedOrderNoStr == "0" && order.WxOrderVoidStatus != "1") - //{ - // string url2 = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/discardOrder"; - // var data2 = new JObject(); - // data2["orderNo"] = order.ShopOrderIdStr; - // data2["outOrderNo"] = order.order_sn; - // var dataStr2 = JsonHelper.SerializeObject(data2); - // var discardRst = HttpResponseWXBLL.e57PostResponse(url2, dataStr2, ""); - //} } // 根据订单状态 取号/修改取号 @@ -914,10 +910,11 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } } var refunds = GetOrderRefundInfo(order_ids); + //MainWindow.Instance.orderListCtrl.GetOrder(order_ids); foreach (var af in list) { - if (af.orderSn == "260414-035525772830257") + if (af.orderSn == "260718-221343925901688") { } @@ -926,14 +923,20 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls af.buyerName = buyer.buyer_name; // 查找店铺订单并更新店铺订单状态 - var transit_item = transitOrderList.FirstOrDefault(t1 => t1.out_order_no == af.orderSn); - if (transit_item != null) + var transitItem = transitOrderList.FirstOrDefault(t1 => t1.out_order_no == af.orderSn); + oms_wei_order_info shopOrder = null; + oms_wei_order_item_info orderItem = null; + oms_wei_refund_info refundItem = null; + if (transitItem != null) { - var shopOrder = orders.FirstOrDefault(o1 => o1.order_id == transit_item.order_no); - var order_item = shopOrder?.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == af.orderSn)); - var refund_item = refunds.FirstOrDefault(ri => ri.order_id == order_item?.order_id) ?? order_item?.ItemRefund; + shopOrder = orders.FirstOrDefault(o1 => o1.order_id == transitItem.order_no); + orderItem = shopOrder?.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == af.orderSn)); + refundItem = refunds.FirstOrDefault(ri => ri.order_id == orderItem?.order_id) ?? orderItem?.ItemRefund; + //shopOrder = GlobalConfig.lstOrder.FirstOrDefault(o1 => o1.order_id == transitItem.order_no); + //orderItem = shopOrder?.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == af.orderSn)); + //refundItem = shopOrder?.refundItems.FirstOrDefault(ri => ri.order_id == orderItem?.order_id) ?? orderItem?.ItemRefund; - UpdateAfterSaleStatus(af, order_item, refund_item, transit_item); + UpdateAfterSaleStatus(af, orderItem, refundItem, transitItem); } bool isUpdate = false; @@ -973,6 +976,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls afterSale.ShopOrderSkuNameStr = af.ShopOrderSkuNameStr; afterSale.TransitBuyerOrderRefundStatus = af.TransitBuyerOrderRefundStatus; afterSale.TransitWarehouseIdStr = af.TransitWarehouseIdStr; + afterSale.TransitWarehouseOrderCodeStr = af.TransitWarehouseOrderCodeStr; afterSale.Express1WaybillStr = af.Express1WaybillStr; afterSale.Express1CompanyStr = af.Express1CompanyStr; afterSale.Express2WaybillStr = af.Express2WaybillStr; @@ -1060,16 +1064,28 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } } } - // 作废订单 后台服务端自动进行 需要核对,未取号订单也无法取消 - //if (afterSale.PreAllocatedOrderNoStr == "0" && afterSale.WxOrderVoidStatus != "1") - //{ - // string url2 = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/discardOrder"; - // var data2 = new JObject(); - // data2["orderNo"] = afterSale.ShopOrderIdStr; - // data2["outOrderNo"] = afterSale.orderSn; - // var dataStr2 = JsonHelper.SerializeObject(data2); - // var discardRst = HttpResponseWXBLL.e57PostResponse(url2, dataStr2, ""); - //} + // 买手已退款 + if (afterSale.TransitBuyerOrderRefundStatus == "买手退款成功") + { + // 订单是未退款的仓库单(因一个微信订单,可以作废重拍多次,可能存在多个拼多多买手单,此处要使用买手单号对应的 transitItem 作为是否作废的判断依据 + if (orderItem != null && orderItem.refund_status <= 1 && transitItem != null && transitItem.order_void_status == 0) + { + // 如果当前账户店铺有订单未发货,尝试作废订单。 + if (shopOrder != null && shopOrder.status == 20 && GlobalConfig.ShopLoginList.Any(s => s.ErpShopId.ParseToLong() == shopOrder.shop_id)) + { + // 260718-221343925901688 + // 260718-626513702541688 + // 3737821766770121728 + // 3737821766770121728 + // 单次读取的订单放到一个列表,如果列表有就不再调用(每次订单列表模拟读取会有重复调用的可能) + if (!lstPddBuyerOrderVoidAfterSaleOrderSn.Contains(orderItem.order_id + orderItem.sku_id)) + { + lstPddBuyerOrderVoidAfterSaleOrderSn.Add(orderItem.order_id + orderItem.sku_id); + OrderListRowItemCtrl.VoidOrder(orderItem, true); + } + } + } + } } NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_after_sale_list", lstPddBuyerAfterSaleInfoLite); } @@ -1112,6 +1128,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls void GetPddOrder() { isReadBuyerOrder = true; + lstPddBuyerOrderVoidAfterSaleOrderSn.Clear(); if (cancellationTokenSource != null) cancellationTokenSource.Cancel(); @@ -1486,6 +1503,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls { JObject data = new JObject(); data["outOrderNo"] = order.order_sn; + //data["outOrderNo"] = order.TransitWarehouseOrderCodeStr; data["warehouseCode"] = order.TransitWarehouseIdStr; //transit.TransId; // 中转仓仓库对应编码 data["platform"] = "WEISHOP"; var getVirtualTicketUrl = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/order/virtual/create"; @@ -1540,6 +1558,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls data["outAmount"] = order.order_amount.ParseToString(); data["outAccount"] = order.buyerName; data["outOrderNo"] = order.order_sn; + //data["outOrderNo"] = order.TransitWarehouseOrderCodeStr; data["outExpressCompany"] = order.outExpressCompanyCode; // 物流公司编号 data["outExpressNo"] = order.tracking_number; // 物流编号 data["warehouseCode"] = order.TransitWarehouseIdStr; // 中转仓ID @@ -1585,13 +1604,11 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls string url2 = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/update-upstream-waybill"; var data = new JObject(); - //data["outAmount"] = order.order_amount.ParseToString(); - //data["outAccount"] = order.buyerName; data["outOrderNo"] = order.order_sn; data["outExpressCompany"] = order.outExpressCompanyCode; // 物流公司编号 data["outExpressNo"] = order.tracking_number; data["platform"] = "WEISHOP"; - data["orderCode"] = order.order_sn; // 中转仓订单唯一标识码 = 外采订单号 + data["orderCode"] = order.TransitWarehouseOrderCodeStr; // 中转仓订单唯一标识码 = 外采订单号 var dataStr2 = JsonHelper.SerializeObject(data); var dispatchRst = HttpResponseWXBLL.e57PostResponse(url2, dataStr2, ""); diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml index d6883fd..6f768f3 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml @@ -8,7 +8,7 @@ xmlns:converters="clr-namespace:_29WxOrderWpf.Converters" xmlns:usercontrols="clr-namespace:_29WxOrderWpf.UserControls" mc:Ignorable="d" - d:DesignHeight="450" d:DesignWidth="1200" Loaded="Window_Loaded"> + d:DesignHeight="450" d:DesignWidth="1360" Loaded="Window_Loaded"> @@ -174,12 +174,13 @@ + - + = totalPage) { @@ -132,6 +132,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls data += "&is_not_count=true"; data += "&page_size=" + pageSize; var shop_id = string.Join(",", GlobalConfig.ShopLoginList.Select(s => s.ErpShopId).Where(s => !s.IsNullOrEmpty())); + //指定订单id的查询,不再查询店铺id + if (string.IsNullOrEmpty(orderIds)) + data += "&erp_shop_id_in=" + shop_id; Dispatcher.Invoke(new Action(() => { // 按过滤条件读取 @@ -147,7 +150,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var endTime = BaseClass.DateTimeToTimestampSeconds(dateEnd.SelectedDate.Value.AddDays(1)); if (!chkEndDate.IsChecked.ParseToBool()) endTime = BaseClass.DateTimeToTimestampSeconds(DateTime.Now.Date.AddDays(1)); - data += "&erp_shop_id_in=" + shop_id; data += "&start_time=" + startTime; data += "&end_time=" + endTime; })); @@ -407,40 +409,47 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { var tabItems = this.tabOrderType.Items.Cast(); var tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("待采购")); + var userOrderLst = GlobalConfig.lstOrder.Where(o => GlobalConfig.ShopLoginList.Any(s => s.ErpShopId.ParseToLong() == o.shop_id)).ToList(); if (tabItem != null) { - var filteLstTmp = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "待采购"))); - tabItem.Header = "待采购(" + GlobalConfig.lstOrder.Where(r => r.IsWaitBuy).Count() + "|" + filteLstTmp.Where(r => r.IsWaitBuy).Count() + ")"; + var filteLstTmp = new ObservableCollection(userOrderLst.Where(o => !GetOrderIsFilter(o, "待采购"))); + tabItem.Header = "待采购(" + userOrderLst.Where(r => r.IsWaitBuy).Count() + "|" + filteLstTmp.Where(r => r.IsWaitBuy).Count() + ")"; } tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("待发货")); if (tabItem != null) { - var filteLstTmp = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "待发货"))); - tabItem.Header = "待发货(" + GlobalConfig.lstOrder.Where(r => r.IsWaitSend).Count() + "|" + filteLstTmp.Where(r => r.IsWaitSend).Count() + ")"; + var filteLstTmp = new ObservableCollection(userOrderLst.Where(o => !GetOrderIsFilter(o, "待发货"))); + tabItem.Header = "待发货(" + userOrderLst.Where(r => r.IsWaitSend).Count() + "|" + filteLstTmp.Where(r => r.IsWaitSend).Count() + ")"; } tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("待收货")); if (tabItem != null) { - var filteLstTmp = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "待收货"))); - tabItem.Header = "待收货(" + GlobalConfig.lstOrder.Where(r => r.IsWaitReceive).Count() + "|" + filteLstTmp.Where(r => r.IsWaitReceive).Count() + ")"; + var filteLstTmp = new ObservableCollection(userOrderLst.Where(o => !GetOrderIsFilter(o, "待收货"))); + tabItem.Header = "待收货(" + userOrderLst.Where(r => r.IsWaitReceive).Count() + "|" + filteLstTmp.Where(r => r.IsWaitReceive).Count() + ")"; } tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("退款单")); if (tabItem != null) { - var filteLstTmp = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "退款单"))); - tabItem.Header = "退款单(" + GlobalConfig.lstOrder.Where(r => r.IsRefund).Count() + "|" + filteLstTmp.Where(r => r.IsRefund).Count() + ")"; + var filteLstTmp = new ObservableCollection(userOrderLst.Where(o => !GetOrderIsFilter(o, "退款单"))); + tabItem.Header = "退款单(" + userOrderLst.Where(r => r.IsRefund).Count() + "|" + filteLstTmp.Where(r => r.IsRefund).Count() + ")"; } tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("紧急单")); if (tabItem != null) { - var filteLstTmp = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "紧急单"))); - tabItem.Header = "紧急单(" + GlobalConfig.lstOrder.Where(r => r.IsEmergency).Count() + "|" + filteLstTmp.Where(r => r.IsEmergency).Count() + ")"; + var filteLstTmp = new ObservableCollection(userOrderLst.Where(o => !GetOrderIsFilter(o, "紧急单"))); + tabItem.Header = "紧急单(" + userOrderLst.Where(r => r.IsEmergency).Count() + "|" + filteLstTmp.Where(r => r.IsEmergency).Count() + ")"; + } + tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("异常单")); + if (tabItem != null) + { + var filteLstTmp = new ObservableCollection(userOrderLst.Where(o => !GetOrderIsFilter(o, "异常单"))); + tabItem.Header = "异常单(" + userOrderLst.Where(r => r.isAbnormal).Count() + "|" + filteLstTmp.Where(r => r.isAbnormal).Count() + ")"; } tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("全部订单")); if (tabItem != null) { - var filteLstTmp = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "全部订单"))); - tabItem.Header = "全部订单(" + GlobalConfig.lstOrder.Count() + "|" + filteLstTmp.Count() + ")"; + var filteLstTmp = new ObservableCollection(userOrderLst.Where(o => !GetOrderIsFilter(o, "全部订单"))); + tabItem.Header = "全部订单(" + userOrderLst.Count() + "|" + filteLstTmp.Count() + ")"; } txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count() + " 条订单记录"; } @@ -463,13 +472,16 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls //{ // FilterOneOrder(order); //} - GlobalConfig.lstFilterOrder = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o))); - this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder; + Dispatcher.Invoke(new Action(() => + { + GlobalConfig.lstFilterOrder = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o))); + this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder; - //Dispatcher.Invoke(new Action(() => { - // txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count().ToString() + " 条订单记录"; - //})); - disPlayOrderTabOrderCount(); + //Dispatcher.Invoke(new Action(() => { + // txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count().ToString() + " 条订单记录"; + //})); + disPlayOrderTabOrderCount(); + })); } catch (Exception ex) { @@ -509,6 +521,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (order == null) return true; + if (!GlobalConfig.ShopLoginList.Any(s => s.ErpShopId.ParseToLong() == order.shop_id)) + return true; + // 过滤店铺名称 if (!string.IsNullOrEmpty(txtShopName.Text.Trim()) && !(";" + txtShopName.Text.Trim() + ";").Contains(";" + order.shop_name + ";")) { @@ -577,6 +592,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (chkWaitOperate.IsChecked == true && order.orderItems.All(oi => !oi.TransitRefundStatusStr.Contains("需手动申请售后"))) return true; } + if (filterHeadStr.StartsWith("异常单") && !order.isAbnormal) + { + return true; + } return false; } diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml index 7e55f03..ab2dd63 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml @@ -400,11 +400,16 @@ HorizontalAlignment="Center" MinWidth="38" Height="24" Margin="4,0,0,0"> - + + diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs index 4ca3fe4..fe99b9b 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs @@ -192,9 +192,13 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } private void btnBuyOrder_Click(object sender, RoutedEventArgs e) + { + BuyOrder(); + } + + public void BuyOrder(bool isAbnormalOrder = false) { var orderItem = this.DataContext as oms_wei_order_item_info; - var refundItem = orderItem.ItemRefund; if (orderItem == null) { BaseMsgWindow.ShowError("订单信息为空"); @@ -205,6 +209,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls BaseMsgWindow.ShowError("请选择买手号"); return; } + if (/*orderItem.sku_cnt > 1 ||*/ orderItem.ItemOrder.orderItems.Count > 1) { //BaseMsgWindow.ShowError("多子单或多件商品订单中转仓暂不支持"); @@ -233,6 +238,21 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (orderItem == null) return; + + if (isAbnormalOrder && orderItem.ItemOrder.status > 21 && orderItem.ItemTransitOrder != null && orderItem.ItemTransitOrder.refund_status == "买手退款成功") + { + // 异常单可以异常重拍 + } + else if (!isAbnormalOrder) + { + // 正常单可以正常拍单 + } + else + { + return; + } + + // 如果是退款单,弹出退款窗口 if (/*orderItem?.ItemRefund?.count > 0 &&*/ orderItem.refund_status > 1) { @@ -272,79 +292,82 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls orderRetry: // 拍单前查询账户余额 - if (GlobalConfig.BuyConfig.IsUseAppBalance) + if (!isAbnormalOrder) { - if (BaseClass.Balance < 10) + if (GlobalConfig.BuyConfig.IsUseAppBalance) { - Dispatcher.Invoke(new Action(() => - { - BaseMsgWindow.ShowError("软件快递余额不足(剩余" + BaseClass.Balance.ToString("0.00") + "元,拍单至少需保留10元),无法中转拍单,请先充值!"); - })); - return; - } - } - else - { - var url = BaseClass.Build29WxObjString("shop/get_shop_erp_merchant"); - var data = UserLogin.GetSignaturex(); - data += "&corporate_account_user_id=" + orderItem.Shop.ErpCorporateAccountUserId; - data += "&manage_user_id=" + orderItem.Shop.ErpManageUserId; - data += "&shop_id=" + orderItem.Shop.ErpShopId; - var html = GetHtml.PostUtf8(url, data); - if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) - html = GetHtml.PostUtf8(url, data); - if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) - { - Dispatcher.Invoke(new Action(() => - { - btnBuyOrder.Cursor = Cursors.Hand; - })); - GlobalConfig.BuyConfig.IsUseAppBalance = true; - StartUp.SaveBuyConfig(); - BaseMsgWindow.ShowError("未找到店铺账户!" + BaseRegex.GetStringJson(ref html, "msg") + ",自动切换为快递余额拍单。"); - goto orderRetry; - } - if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200")) - { - try - { - var erpMs = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(html)["data"].ParseToString()); - var erpM = erpMs.FirstOrDefault(); - if (erpM == null) - { - Dispatcher.Invoke(new Action(() => - { - btnBuyOrder.Cursor = Cursors.Hand; - })); - GlobalConfig.BuyConfig.IsUseAppBalance = true; - StartUp.SaveBuyConfig(); - BaseMsgWindow.ShowError("未找到店铺账户!自动切换为快递余额拍单。"); - goto orderRetry; - } - - var balance = erpM.balance.ParseToDecimal(); - if (balance < 10) - { - Dispatcher.Invoke(new Action(() => - { - btnBuyOrder.Cursor = Cursors.Hand; - })); - GlobalConfig.BuyConfig.IsUseAppBalance = true; - StartUp.SaveBuyConfig(); - BaseMsgWindow.ShowError("ERP账户余额不足(剩余" + balance.ToString("0.00") + "元,拍单至少需保留10元),无法中转拍单,自动切换为快递余额拍单。"); - goto orderRetry; - } - } - catch + if (BaseClass.Balance < 10) { Dispatcher.Invoke(new Action(() => { - BaseMsgWindow.ShowError("拍单校验出错,请稍后重试"); - btnBuyOrder.Cursor = Cursors.Hand; + BaseMsgWindow.ShowError("软件快递余额不足(剩余" + BaseClass.Balance.ToString("0.00") + "元,拍单至少需保留10元),无法中转拍单,请先充值!"); })); return; } } + else + { + var url = BaseClass.Build29WxObjString("shop/get_shop_erp_merchant"); + var data = UserLogin.GetSignaturex(); + data += "&corporate_account_user_id=" + orderItem.Shop.ErpCorporateAccountUserId; + data += "&manage_user_id=" + orderItem.Shop.ErpManageUserId; + data += "&shop_id=" + orderItem.Shop.ErpShopId; + var html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) + html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) + { + Dispatcher.Invoke(new Action(() => + { + btnBuyOrder.Cursor = Cursors.Hand; + })); + GlobalConfig.BuyConfig.IsUseAppBalance = true; + StartUp.SaveBuyConfig(); + BaseMsgWindow.ShowError("未找到店铺账户!" + BaseRegex.GetStringJson(ref html, "msg") + ",自动切换为快递余额拍单。"); + goto orderRetry; + } + if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200")) + { + try + { + var erpMs = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(html)["data"].ParseToString()); + var erpM = erpMs.FirstOrDefault(); + if (erpM == null) + { + Dispatcher.Invoke(new Action(() => + { + btnBuyOrder.Cursor = Cursors.Hand; + })); + GlobalConfig.BuyConfig.IsUseAppBalance = true; + StartUp.SaveBuyConfig(); + BaseMsgWindow.ShowError("未找到店铺账户!自动切换为快递余额拍单。"); + goto orderRetry; + } + + var balance = erpM.balance.ParseToDecimal(); + if (balance < 10) + { + Dispatcher.Invoke(new Action(() => + { + btnBuyOrder.Cursor = Cursors.Hand; + })); + GlobalConfig.BuyConfig.IsUseAppBalance = true; + StartUp.SaveBuyConfig(); + BaseMsgWindow.ShowError("ERP账户余额不足(剩余" + balance.ToString("0.00") + "元,拍单至少需保留10元),无法中转拍单,自动切换为快递余额拍单。"); + goto orderRetry; + } + } + catch + { + Dispatcher.Invoke(new Action(() => + { + BaseMsgWindow.ShowError("拍单校验出错,请稍后重试"); + btnBuyOrder.Cursor = Cursors.Hand; + })); + return; + } + } + } } if (orderItem.BuyGoodsBtnTxt == "去店铺后台绑定代发") @@ -386,7 +409,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } // 检测是否加入代发 - if (orderItem.Shop?.LoginStatus == "登录成功") + if (orderItem.Shop?.LoginStatus == "登录成功" && !isAbnormalOrder) { var is29SupplierRst = WxOrderSupplierBLL.GetWxSupplierOrderList(orderItem.Shop, orderItem.order_id); if (!is29SupplierRst.Contains("\"code\":0")) @@ -461,6 +484,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls buyOrderForm.pnlBuy.Visible = true; buyOrderForm.pnlMap.Visible = false; } + if (isAbnormalOrder) + buyOrderForm.AbnormalTransitWarehouseOrderInfo = orderItem.ItemTransitOrder; buyOrderForm.ShowDialog(); // 窗口关闭后更新运费信息 MainWindow.Instance.Balance = BaseClass.Balance.ToString("0.00"); @@ -495,20 +520,36 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls // 作废重拍 if (order_item.ItemOrder.status == 20 /*&& order_item.refund_status <= 1*/ && order_item.ItemTransitOrder != null) { - btnDeleteTransitOrder.Visibility = Visibility.Visible; + btnVoidTransitOrder.Visibility = Visibility.Visible; } else { - btnDeleteTransitOrder.Visibility = Visibility.Collapsed; + btnVoidTransitOrder.Visibility = Visibility.Collapsed; } + + if (order_item.ItemOrder.isAbnormal && order_item.BuyerTransitWaybillStatusStr != "已到中转仓" && btnVoidTransitOrder.Visibility == Visibility.Collapsed) + { + btnAbnormalOrderRebuy.Visibility = Visibility.Visible; + } + else + { + btnAbnormalOrderRebuy.Visibility = Visibility.Collapsed; + } + // 待采购不显示所有采购信息状态(否则会显示作废订单状态) if (GlobalConfig.OrderTabHeaderStr.StartsWith("待采购")) { - wpBuyAccount.Visibility = Visibility.Collapsed; - wpBuyOrderId.Visibility = Visibility.Collapsed; - wpBuyTime.Visibility = Visibility.Collapsed; - wpTransitWaybillStatus.Visibility = Visibility.Collapsed; - wpTransitBuyerRefundStatus.Visibility = Visibility.Collapsed; + //wpBuyAccount.Visibility = Visibility.Collapsed; + //wpBuyOrderId.Visibility = Visibility.Collapsed; + //wpBuyTime.Visibility = Visibility.Collapsed; + //wpTransitWaybillStatus.Visibility = Visibility.Collapsed; + //wpTransitBuyerRefundStatus.Visibility = Visibility.Collapsed; + + wpBuyAccount.Opacity = 0.5; + wpBuyOrderId.Opacity = 0.5; + wpBuyTime.Opacity = 0.5; + wpTransitWaybillStatus.Opacity = 0.5; + wpTransitBuyerRefundStatus.Opacity = 0.5; } } } @@ -620,110 +661,145 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } } - private async void btnDeleteTransitOrder_Click(object sender, RoutedEventArgs e) + private async void btnVoidTransitOrder_Click(object sender, RoutedEventArgs e) { if (this.DataContext is oms_wei_order_item_info orderItem) { - // 拍单前查询订单是否退款 - var orderId = orderItem.order_id; - var skuId = orderItem.sku_id; - await Task.Run(() => - { + VoidOrder(orderItem); + } + } + + /// + /// 作废中转仓订单 + /// + /// + /// + /// 作废前是否更新服务端订单状态 + public static async void VoidOrder(oms_wei_order_item_info orderItem, bool isSilent = false, bool UpdateOrderBeforeVoid = true) + { + // 作废前查询订单状态 + var orderId = orderItem.order_id; + var skuId = orderItem.sku_id; + await Task.Run(() => + { + if(UpdateOrderBeforeVoid) MainWindow.Instance.orderListCtrl.GetOrder(orderId); - var newOrder = GlobalConfig.lstOrder.FirstOrDefault(or => or.order_id == orderId); - if (newOrder.orderItems.Count == 1) - orderItem = newOrder?.orderItems?.FirstOrDefault(); - else - orderItem = newOrder?.orderItems?.FirstOrDefault(oi => oi.sku_id == skuId); - if (orderItem == null) - { - BaseMsgWindow.ShowError("订单查询失败,请重试"); - return; - } - if (orderItem.ItemTransitOrder == null) - { - BaseMsgWindow.ShowError("要作废的中转订单不存在,请确认后重试"); - return; - } - }); - - bool noBuyer = false; - var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_name == orderItem.ItemTransitOrder.buyer_account); - if (buyer == null) + var newOrder = GlobalConfig.lstOrder.FirstOrDefault(or => or.order_id == orderId); + if (newOrder.orderItems.Count == 1) + orderItem = newOrder?.orderItems?.FirstOrDefault(); + else + orderItem = newOrder?.orderItems?.FirstOrDefault(oi => oi.sku_id == skuId); + if (orderItem == null) { + if (!isSilent) + BaseMsgWindow.ShowError("订单查询失败,请重试"); + return; + } + + if (orderItem.ItemTransitOrder == null) + { + if (!isSilent) + BaseMsgWindow.ShowError("要作废的中转订单不存在,请确认后重试"); + return; + } + }); + + bool noBuyer = false; + var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_name == orderItem.ItemTransitOrder.buyer_account); + if (buyer == null) + { + if (!isSilent) if (BaseMsgWindow.ShowConfirm("拍单买手不存在,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true) return; - noBuyer = true; - } + noBuyer = true; + } - // 检测一下买手号 - if (GlobalConfig.CurrentPddBuyer.status == "在线") - { - await Task.Run(() => - { - PddMobileLoginForm.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer); - }); - } - if (GlobalConfig.CurrentPddBuyer.status != "在线") + // 检测一下买手号 + if (GlobalConfig.CurrentPddBuyer.status == "在线") + { + await Task.Run(() => { + PddMobileLoginForm.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer); + }); + } + if (GlobalConfig.CurrentPddBuyer.status != "在线") + { + if (!isSilent) if (BaseMsgWindow.ShowConfirm("买手掉线,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true) return; - noBuyer = true; - } + noBuyer = true; + } - if (!noBuyer) + if (!noBuyer) + { + var pddAfterRst = PDDBuyerOrderReadCtrl.SimPddAfterSale(buyer, new PddBuyerOrderLiteInfo() { - var pddAfterRst = PDDBuyerOrderReadCtrl.SimPddAfterSale(buyer, new PddBuyerOrderLiteInfo() { order_status_prompt = "待发货", - order_amount = orderItem.ItemTransitOrder.out_amount, order_sn = orderItem.ItemTransitOrder.out_order_no }); - if (pddAfterRst.Contains("\"after_sales_status\":1") || pddAfterRst.Contains("该订单已全额退款") || pddAfterRst.Contains("订单未付款")) - { - } - else - { - if (BaseMsgWindow.ShowConfirm("买手退款失败,点击确定直接作废中转单并手动取消买手单,点击取消稍候重试").DialogResult != true) - return; - } - } - - //订单作废接口(作废重拍) - //postman request POST 'http://localhost:8088/oms-api/external_procurement/discardOrder' \ - // --header 'Content-Type: application/json' \ - // --body '{ - // "orderNo":"12334534534", - // "outOrderNo":"12312312" - //}' 成功返回code:0 失败返回code:1 - - string url2 = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/discardOrder"; - var data2 = new JObject(); - data2["orderNo"] = orderItem.order_id; - data2["outOrderNo"] = orderItem.ItemTransitOrder.out_order_no; - var dataStr2 = JsonHelper.SerializeObject(data2); - var discardRst = HttpResponseWXBLL.e57PostResponse(url2, dataStr2, ""); - if (discardRst.Contains("0") || discardRst.Contains("200")) + order_status_prompt = "待发货", + order_amount = orderItem.ItemTransitOrder.out_amount, + order_sn = orderItem.ItemTransitOrder.out_order_no + }); + if (pddAfterRst.Contains("\"after_sales_status\":1") || pddAfterRst.Contains("该订单已全额退款") || pddAfterRst.Contains("订单未付款")) { - MainWindow.Instance.orderListCtrl.GetOrder(orderId); - MainWindow.Instance.orderListCtrl.FilterOrders(); - BaseMsgWindow.ShowInfo("订单作废成功,请重新拍单"); - - var url3 = BaseClass.Build29WxObjString("user/get_all_user"); - var data3 = UserLogin.GetSignaturex(); - data3 += "&search_user_name=" + BaseClass.UserName; - var html = GetHtml.PostUtf8(url3, data3); - if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) - html = GetHtml.PostUtf8(url3, data3); - if (html.Contains("\"code\":200")) - { - BaseClass.Balance = BaseRegex.GetDecimalJson(ref html, "balance"); - MainWindow.Instance.Balance = BaseClass.Balance.ToString("0.00"); - } } else { - var msg = BaseRegex.GetStringXml(ref discardRst, "msg"); - BaseMsgWindow.ShowInfo("订单作废失败,服务端返回 " + msg); + if (!isSilent) + if (BaseMsgWindow.ShowConfirm("买手退款失败,点击确定直接作废中转单并手动取消买手单,点击取消稍候重试").DialogResult != true) + return; } } + + //订单作废接口(作废重拍) + //postman request POST 'http://localhost:8088/oms-api/external_procurement/discardOrder' \ + // --header 'Content-Type: application/json' \ + // --body '{ + // "orderNo":"12334534534", + // "outOrderNo":"12312312" + //}' 成功返回code:0 失败返回code:1 + + string url2 = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/discardOrder"; + var data2 = new JObject(); + data2["orderNo"] = orderItem.order_id; + data2["outOrderNo"] = orderItem.ItemTransitOrder.out_order_no; + //data2["outOrderNo"] = orderItem.ItemTransitOrder.order_code; + var dataStr2 = JsonHelper.SerializeObject(data2); + var discardRst = HttpResponseWXBLL.e57PostResponse(url2, dataStr2, ""); + if (discardRst.Contains("0") || discardRst.Contains("200")) + { + //MainWindow.Instance.orderListCtrl.GetOrder(orderId); + #region 更新订单 + orderItem.ItemTransitOrder.order_void_status = 1; + orderItem.SetTransitOrder(); + orderItem.SetItemRefund(); + #endregion + + #region 重新过滤订单 + MainWindow.Instance.orderListCtrl.FilterOrders(); + if (!isSilent) + BaseMsgWindow.ShowInfo("订单作废成功,请重新拍单"); + #endregion + + #region 更新拍单余额 + var url3 = BaseClass.Build29WxObjString("user/get_all_user"); + var data3 = UserLogin.GetSignaturex(); + data3 += "&search_user_name=" + BaseClass.UserName; + var html = GetHtml.PostUtf8(url3, data3); + if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) + html = GetHtml.PostUtf8(url3, data3); + if (html.Contains("\"code\":200")) + { + BaseClass.Balance = BaseRegex.GetDecimalJson(ref html, "balance"); + MainWindow.Instance.Balance = BaseClass.Balance.ToString("0.00"); + } + #endregion + } + else + { + var msg = BaseRegex.GetStringXml(ref discardRst, "msg"); + if (!isSilent) + BaseMsgWindow.ShowInfo("订单作废失败,服务端返回 " + msg); + } } private void txtWarehouseStatus_MouseEnter(object sender, MouseEventArgs e) @@ -745,12 +821,21 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var transitAfterSale = orderItem.ItemTransitOrderAfterSale; if (orderItem.ItemTransitOrder?.warehouse_status == 2 && orderItem.AddEditTransitWarehouseAfterSaleStr == "添加") { - BaseMsgWindow.ShowError("商品已出库,请联系卖家直接退回总店!"); + BaseMsgWindow.ShowError("商品已出库,请联系买家直接退回总店!"); return; } TransitAfterSaleWindow transitAfterSaleWindow = new TransitAfterSaleWindow(orderItem); transitAfterSaleWindow.ShowDialog(); } } + + private void btnAbnormalOrderRebuy_Click(object sender, RoutedEventArgs e) + { + if (this.DataContext is oms_wei_order_item_info orderItem) + { + if (orderItem.ItemOrder.status > 21 && orderItem.ItemTransitOrder != null && orderItem.ItemTransitOrder.refund_status == "买手退款成功") + BuyOrder(true); + } + } } } diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index fc2691c..b79d53a 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -32,7 +32,7 @@ namespace AllBase /// 版本ID /// - public static int VersionCount = 167; + public static int VersionCount = 171; public static string ServerUrl { get; set; } = "http://1.13.195.131:9000"; public static string DebugUrl { get; set; } = "http://localhost:9000"; diff --git a/AllBase/Model/DBModel/oms_wei_order_info.cs b/AllBase/Model/DBModel/oms_wei_order_info.cs index ffa5003..7c5ca15 100644 --- a/AllBase/Model/DBModel/oms_wei_order_info.cs +++ b/AllBase/Model/DBModel/oms_wei_order_info.cs @@ -38,15 +38,20 @@ namespace AllBase.Model.DBModel { get { - if (order_id == "3737644875536802048") + if (order_id == "3737846414389704448") { } + if (status != 20 && status != 21) return false; if (orderItems.All(oi => oi.ItemTransitOrder != null)) return false; if (purchase_status != 0) return false; - if (!out_order_no.IsNullOrEmpty()) return false; - if (status != 20 && status != 21) return false; if (gift_order_status == 1 || gift_order_status == 2) return false; + if (!string.IsNullOrEmpty(out_order_no)) + { + var oi = orderItems.FirstOrDefault(o => o.ItemTransitOrders.Any(t => t.out_order_no == out_order_no && t.order_void_status == 1)); + if (oi == null) + return false; + } return true; } set { } @@ -59,8 +64,21 @@ namespace AllBase.Model.DBModel //get { return (purchase_status == 1 || !string.IsNullOrEmpty(out_order_no)) && (status == 20 || status == 21); } get { - if (purchase_status != 1 && string.IsNullOrEmpty(out_order_no) && !orderItems.All(oi => oi.ItemTransitOrder != null)) return false; + if (order_id == "3737846414389704448") + { + + } + if (status != 20 && status != 21) return false; + if (purchase_status != 1 && !orderItems.All(oi => oi.ItemTransitOrder != null) && string.IsNullOrEmpty(out_order_no)) return false; + // 礼物单已发货 + if (gift_order_status == 1 || gift_order_status == 2) return false; + if (!string.IsNullOrEmpty(out_order_no)) + { + var oi = orderItems.FirstOrDefault(o => o.ItemTransitOrders.Any(t => t.out_order_no == out_order_no && t.order_void_status == 1)); + if (oi != null) + return false; + } return true; } set { } @@ -105,13 +123,32 @@ namespace AllBase.Model.DBModel { return true; } - else if (orderItems.Any(oi => (oi.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains("取号异常"))) + else if (orderItems.Any(oi => (oi.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains("取号异常") && + oi.ItemTransitOrderWithVoid?.transfer_warehouse_status != 1)) return true; return false; } set { } } + /// + /// 异常单(买手异常退货) + /// + public bool isAbnormal + { + get + { + if (order_id == "3737821766770121728") + { + } + + // 订单无售后或者售后关闭,有未作废的仓库单且仓库单买手信息为退款成功 + if (orderItems.Any(oi => oi.refund_status <= 1 && oi.ItemTransitOrder != null && oi.ItemTransitOrder.refund_status == "买手退款成功")) + return true; + return false; + } + set { } + } public string orderStatusStr { diff --git a/AllBase/Model/DBModel/oms_wei_order_item_info.cs b/AllBase/Model/DBModel/oms_wei_order_item_info.cs index c25ed7c..0d68dfe 100644 --- a/AllBase/Model/DBModel/oms_wei_order_item_info.cs +++ b/AllBase/Model/DBModel/oms_wei_order_item_info.cs @@ -191,7 +191,7 @@ namespace AllBase.Model.DBModel { get { - if (PddBuyerOrder?.wx_order_id == "3737683253753151488") + if (PddBuyerOrder?.wx_order_id == "3737803757296943104") { } @@ -295,7 +295,7 @@ namespace AllBase.Model.DBModel if (ItemTransitOrderWithVoid == null) return ""; - if (ItemTransitOrderWithVoid.raw_message.ParseToString().Contains("取号异常")) + if (ItemTransitOrderWithVoid.raw_message.ParseToString().Contains("取号异常") && ItemTransitOrderWithVoid.transfer_warehouse_status != 1) { if (ItemTransitOrderWithVoid.raw_message.Contains("超出派送范围")) return "取号异常-超出派送范围"; diff --git a/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs b/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs index ab42846..e6563ef 100644 --- a/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs +++ b/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs @@ -47,6 +47,11 @@ namespace AllBase.Model.Result get { return this.GetValue(x => x.TransitWarehouseIdStr); } set { this.SetValue(x => x.TransitWarehouseIdStr, value); } } + public string TransitWarehouseOrderCodeStr + { + get { return this.GetValue(x => x.TransitWarehouseOrderCodeStr); } + set { this.SetValue(x => x.TransitWarehouseOrderCodeStr, value); } + } /// /// 拍单物流公司编码 /// diff --git a/AllBase/Model/Result/PddBuyerOrderLiteInfo.cs b/AllBase/Model/Result/PddBuyerOrderLiteInfo.cs index 59782e9..18e8714 100644 --- a/AllBase/Model/Result/PddBuyerOrderLiteInfo.cs +++ b/AllBase/Model/Result/PddBuyerOrderLiteInfo.cs @@ -130,6 +130,11 @@ namespace AllBase.Model.Result get { return this.GetValue(x => x.TransitWarehouseIdStr); } set { this.SetValue(x => x.TransitWarehouseIdStr, value); } } + public string TransitWarehouseOrderCodeStr + { + get { return this.GetValue(x => x.TransitWarehouseOrderCodeStr); } + set { this.SetValue(x => x.TransitWarehouseOrderCodeStr, value); } + } /// /// 拍单物流公司编码 /// diff --git a/Work/29WxOrderWork.csproj b/Work/29WxOrderWork.csproj index 9f12f51..68eda3e 100644 --- a/Work/29WxOrderWork.csproj +++ b/Work/29WxOrderWork.csproj @@ -264,7 +264,6 @@ - diff --git a/Work/_29Tools/BLL/SendBuyerOrder.cs b/Work/_29Tools/BLL/SendBuyerOrder.cs deleted file mode 100644 index 3fc7083..0000000 --- a/Work/_29Tools/BLL/SendBuyerOrder.cs +++ /dev/null @@ -1,36 +0,0 @@ -using AllBase; -using AllBase.Model; -using AllBase.Model.DBModel; -using CefSharp.DevTools.LayerTree; -using NaiBa.Util.Extension; -using Newtonsoft.Json.Linq; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Work._29Tools.BLL -{ - public class SendBuyerOrder - { - public static string SendBuyerOrderToTransitWarehouse(oms_wei_order_item_info order_item, TransitWarehouseParam warehouseParam, - string outOrderNo, int outAmount, string buyerNick, string userNickName) - { - JObject body = new JObject(); - body["orderNo"] = order_item.order_id; - body["outOrderNo"] = outOrderNo; - body["outAmount"] = outAmount.ParseToString(); - body["buyerAccount"] = buyerNick; - body["purchaserNote"] = userNickName; - body["express1Company"] = ""; // 物流公司编号 - body["express1Waybill"] = ""; // 物流编号 - body["platform"] = warehouseParam.TransId; // 中转仓ID - body["orderPlatformCode"] = "WEISHOP"; - var url = "https://po.e57.cn/prod-api/api/oms-api/externalProcurement/saveOrUpdate"; - var dataStr = JsonHelper.SerializeObject(body); - var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); - return exportRst; - } - } -} diff --git a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs index f2e0582..6019cf9 100644 --- a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs +++ b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs @@ -39,6 +39,8 @@ namespace TemuKJD.ToolForms public partial class PddMobileBuyOrderForm : BaseGeneralForm { + public oms_wei_external_procurement_log_info AbnormalTransitWarehouseOrderInfo { get; set; } = null; + public bool IsAutoBuy { get; set; } = true; public bool IsFormLoad { get; set; } = false; public bool ShowBuyMask { get; set; } = false; @@ -131,6 +133,11 @@ namespace TemuKJD.ToolForms txtSendProvince.Text = buyMap.map_send_address; this.transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == buyMap.transit_warehouse_id); + // 异常单重新拍单 + if (AbnormalTransitWarehouseOrderInfo != null) + { + transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == AbnormalTransitWarehouseOrderInfo.platform); + } if (transitWarehouse != null) { cmbTransitWarehouse.Text = transitWarehouse?.TransName + " " + transitWarehouse?.TransDetailAddress; @@ -440,15 +447,22 @@ namespace TemuKJD.ToolForms { IsChangeAddress = true; Thread.Sleep(100); - var sourceCodeRst = GetSourceCode(transit); - if (sourceCodeRst.Contains("失败")) + if(AbnormalTransitWarehouseOrderInfo != null) { - Invoke(new Action(() => + Invoke(new Action(() => { txtSourceCode.Text = AbnormalTransitWarehouseOrderInfo.random_code; })); + } + else + { + var sourceCodeRst = GetSourceCode(transit); + if (sourceCodeRst.Contains("失败")) { - this.cefWebBrowser.Visible = false; - BaseMsgForm.ShowError(sourceCodeRst); - })); - return; + Invoke(new Action(() => + { + this.cefWebBrowser.Visible = false; + BaseMsgForm.ShowError(sourceCodeRst); + })); + return; + } } ChangeAddress(transit); IsChangeAddress = false; @@ -878,112 +892,169 @@ namespace TemuKJD.ToolForms btnManualUpdateBuyOrder.Enabled = false; - JObject body = new JObject(); - body["orderNo"] = orderItem.order_id; - body["orderSkuId"] = orderItem.sku_id; - body["outOrderNo"] = txtBuyOrderId.Text.Trim(); - body["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + ""; - body["buyerAccount"] = buyer.buyer_nick; // 买手昵称 - body["purchaserNote"] = BaseClass.NickName; // 购买软件账户备注 - body["express1Company"] = ""; // 物流公司编号 - body["express1Waybill"] = ""; // 物流编号 - body["platform"] = transit.TransId; // 中转仓ID - body["orderPlatformCode"] = "WEISHOP"; - body["randomCode"] = txtSourceCode.Text.Trim(); - if (GlobalConfig.BuyConfig.IsUseAppBalance) + #region 正常拍单 + if (AbnormalTransitWarehouseOrderInfo == null) { - body["userName"] = BaseClass.UserName; // 软件端用户名 - body["purchaserNote"] = BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注 - body["postage"] = (BaseClass.PostagePerOrder * 100).ParseToInt() + ""; - } - var url = "https://po.e57.cn/prod-api/api/oms-api/externalProcurement/saveOrUpdate"; - var dataStr = JsonHelper.SerializeObject(body); - //dataStr = "{\"orderNo\":\"3737339733954942720\",\"outOrderNo\":\"2606846854564\",\"buyerAccount\":\"测试\",\"outAmount\":\"2000\",\"purchaserNote\":\"测试\",\"express1Company\":\"\"" + - // ",\"express1Waybill\":\"\",\"platform\":\"XDYSHC\",\"orderPlatformCode\":\"WEISHOP\"}"; - var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); - //保存成功200 - //订单不存在:373733973395494272500 - if (!exportRst.ParseToString().Contains("200")) - { - string msg = ""; - string code = ""; - try + JObject body = new JObject(); + body["orderNo"] = orderItem.order_id; + body["orderSkuId"] = orderItem.sku_id; + body["outOrderNo"] = txtBuyOrderId.Text.Trim(); + body["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + ""; + body["buyerAccount"] = buyer.buyer_nick; // 买手昵称 + body["purchaserNote"] = BaseClass.NickName; // 购买软件账户备注 + body["express1Company"] = ""; // 物流公司编号 + body["express1Waybill"] = ""; // 物流编号 + body["platform"] = transit.TransId; // 中转仓ID + body["orderPlatformCode"] = "WEISHOP"; + body["randomCode"] = txtSourceCode.Text.Trim(); + if (GlobalConfig.BuyConfig.IsUseAppBalance) { - System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); - xmlDoc.LoadXml(exportRst); - code = xmlDoc["AjaxResult"]["code"].InnerText; - msg = xmlDoc["AjaxResult"]["msg"].InnerText; + body["userName"] = BaseClass.UserName; // 软件端用户名 + body["purchaserNote"] = BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注 + body["postage"] = (BaseClass.PostagePerOrder * 100).ParseToInt() + ""; } - catch + var url = "https://po.e57.cn/prod-api/api/oms-api/externalProcurement/saveOrUpdate"; + var dataStr = JsonHelper.SerializeObject(body); + //dataStr = "{\"orderNo\":\"3737339733954942720\",\"outOrderNo\":\"2606846854564\",\"buyerAccount\":\"测试\",\"outAmount\":\"2000\",\"purchaserNote\":\"测试\",\"express1Company\":\"\"" + + // ",\"express1Waybill\":\"\",\"platform\":\"XDYSHC\",\"orderPlatformCode\":\"WEISHOP\"}"; + var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); + //保存成功200 + //订单不存在:373733973395494272500 + if (!exportRst.ParseToString().Contains("200")) { - msg = exportRst.ParseToString(); + string msg = ""; + string code = ""; + try + { + System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); + xmlDoc.LoadXml(exportRst); + code = xmlDoc["AjaxResult"]["code"].InnerText; + msg = xmlDoc["AjaxResult"]["msg"].InnerText; + } + catch + { + msg = exportRst.ParseToString(); + } + BaseMsgForm.ShowError("拍单保存失败,服务端返回 " + msg, "拍单信息保存失败"); + btnManualUpdateBuyOrder.Enabled = true; + return; } - BaseMsgForm.ShowError("拍单保存失败,服务端返回 " + msg, "拍单信息保存失败"); - btnManualUpdateBuyOrder.Enabled = true; - return; + + url = BaseClass.Build29WxObjString("user/get_all_user"); + var data = UserLogin.GetSignaturex(); + data += "&search_user_name=" + BaseClass.UserName; + var html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) + html = GetHtml.PostUtf8(url, data); + if (html.Contains("\"code\":200")) + BaseClass.Balance = BaseRegex.GetDecimalJson(ref html, "balance"); + + orderItem.ItemTransitOrders.Insert(0, new oms_wei_external_procurement_log_info() + { + buyer_account = buyer.buyer_nick, + id = 0, + order_no = orderItem.order_id, + order_sku_id = orderItem.sku_id, + out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(), + out_order_no = txtBuyOrderId.Text.Trim(), + purchaser_note = body["purchaserNote"].ParseToString(), + }); + + orderItem.SetTransitOrder(); + // 利润计算重置为最小值,控件Resource更新时将计算利润 + orderItem.ProfitCount = decimal.MinValue; + var order = orderItem.ItemOrder; + if (filterOrderAction != null) + { + GlobalConfig.lstFilterOrder.Remove(order); + filterOrderAction(order, true); + } + + //// 前一天的订单直接提前取号 + //if (DateTime.Now.Date > BaseClass.StampToDateTime(order.create_time).Date) + //{ + // JObject data = new JObject(); + // data["outOrderNo"] = txtBuyOrderId.Text.Trim(); + // //data2["outOrderNo"] = orderItem.ItemTransitOrder.order_code; + // data["warehouseCode"] = transit.TransId; // 中转仓仓库对应编码 XDYSZC XDYYWC ... + // //data["warehouseCode"] = txtBuyOrderId.Text.Trim(); // 中转仓仓库对应编码 + // data["platform"] = "WEISHOP"; + // var getVirtualTicketUrl = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/order/virtual/create"; + // var getVirtualTicketDataStr = JsonHelper.SerializeObject(data); + + // var getVirtualTicketRst = HttpResponseWXBLL.e57PostResponse(getVirtualTicketUrl, getVirtualTicketDataStr, ""); + // if (!getVirtualTicketRst.ParseToString().Contains("200") && !getVirtualTicketRst.ParseToString().Contains("0")) + // { + // string msg = ""; + // string code = ""; + // try + // { + // System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); + // xmlDoc.LoadXml(getVirtualTicketRst); + // code = xmlDoc["AjaxResult"]["code"].InnerText; + // msg = xmlDoc["AjaxResult"]["msg"].InnerText; + // } + // catch + // { + // msg = getVirtualTicketRst.ParseToString(); + // } + // BaseMsgForm.ShowError("拍单信息保存成功,接收到服务端传递的错误消息:" + msg, "订单提前取号失败"); + // btnManualUpdateBuyOrder.Enabled = true; + // return; + // } + //} } + #endregion - url = BaseClass.Build29WxObjString("user/get_all_user"); - var data = UserLogin.GetSignaturex(); - data += "&search_user_name=" + BaseClass.UserName; - var html = GetHtml.PostUtf8(url, data); - if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) - html = GetHtml.PostUtf8(url, data); - if (html.Contains("\"code\":200")) - BaseClass.Balance = BaseRegex.GetDecimalJson(ref html, "balance"); + #region 异常单重拍 + if (AbnormalTransitWarehouseOrderInfo != null) + { + var url = BaseClass.Build29WxObjString("order/wx_update_abnormal_transit_order"); + var data = UserLogin.GetSignaturex(); + data += "&out_order_no=" + txtBuyOrderId.Text.Trim(); + data += "&order_no=" + orderItem.order_id; + data += "&order_sku_id=" + orderItem.sku_id; + data += "&buyer_account=" + buyer.buyer_nick; + data += "&out_amount=" + (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + ""; + data += "&purchaser_note=" + BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注 + data += "&refund_status=" + ""; + data += "&old_out_order_no=" + AbnormalTransitWarehouseOrderInfo.out_order_no; + data += "&old_order_no=" + AbnormalTransitWarehouseOrderInfo.order_no; + data += "&old_order_sku_id=" + AbnormalTransitWarehouseOrderInfo.order_sku_id; + data += "&old_buyer_account=" + AbnormalTransitWarehouseOrderInfo.buyer_account; + data += "&old_out_amount=" + AbnormalTransitWarehouseOrderInfo.out_amount; + data += "&old_purchaser_note=" + AbnormalTransitWarehouseOrderInfo.purchaser_note; + data += "&old_refund_status=" + AbnormalTransitWarehouseOrderInfo.refund_status; + data += "&order_code=" + AbnormalTransitWarehouseOrderInfo.order_code; + var html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) + { + var msg = BaseRegex.GetStringJsonByRegs(ref html, html, "msg"); + BaseMsgForm.ShowError("异常单重拍保存失败"); + btnManualUpdateBuyOrder.Enabled = true; + return; + } - orderItem.ItemTransitOrders.Insert(0, new oms_wei_external_procurement_log_info() - { - buyer_account = buyer.buyer_nick, - id = 0, - order_no = orderItem.order_id, - order_sku_id = orderItem.sku_id, - out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(), - out_order_no = txtBuyOrderId.Text.Trim(), - purchaser_note = body["purchaserNote"].ParseToString(), - }); - orderItem.SetTransitOrder(); - // 利润计算重置为最小值,控件Resource更新时将计算利润 - orderItem.ProfitCount = decimal.MinValue; - var order = orderItem.ItemOrder; - if (filterOrderAction != null) - { - GlobalConfig.lstFilterOrder.Remove(order); - filterOrderAction(order, true); + orderItem.ItemTransitOrder.buyer_account = buyer.buyer_nick; + orderItem.ItemTransitOrder.id = 0; + orderItem.ItemTransitOrder.order_no = orderItem.order_id; + orderItem.ItemTransitOrder.order_sku_id = orderItem.sku_id; + orderItem.ItemTransitOrder.out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(); + orderItem.ItemTransitOrder.out_order_no = txtBuyOrderId.Text.Trim(); + orderItem.ItemTransitOrder.purchaser_note = BaseClass.UserName + "-" + BaseClass.NickName; + orderItem.ItemTransitOrder.refund_status = ""; + + orderItem.SetTransitOrder(); + // 利润计算重置为最小值,控件Resource更新时将计算利润 + orderItem.ProfitCount = decimal.MinValue; + var order = orderItem.ItemOrder; + if (filterOrderAction != null) + { + GlobalConfig.lstFilterOrder.Remove(order); + filterOrderAction(order, true); + } } - - //// 前一天的订单直接提前取号 - //if (DateTime.Now.Date > BaseClass.StampToDateTime(order.create_time).Date) - //{ - // JObject data = new JObject(); - // data["outOrderNo"] = txtBuyOrderId.Text.Trim(); - // data["warehouseCode"] = transit.TransId; // 中转仓仓库对应编码 XDYSZC XDYYWC ... - // //data["warehouseCode"] = txtBuyOrderId.Text.Trim(); // 中转仓仓库对应编码 - // data["platform"] = "WEISHOP"; - // var getVirtualTicketUrl = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/order/virtual/create"; - // var getVirtualTicketDataStr = JsonHelper.SerializeObject(data); - - // var getVirtualTicketRst = HttpResponseWXBLL.e57PostResponse(getVirtualTicketUrl, getVirtualTicketDataStr, ""); - // if (!getVirtualTicketRst.ParseToString().Contains("200") && !getVirtualTicketRst.ParseToString().Contains("0")) - // { - // string msg = ""; - // string code = ""; - // try - // { - // System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); - // xmlDoc.LoadXml(getVirtualTicketRst); - // code = xmlDoc["AjaxResult"]["code"].InnerText; - // msg = xmlDoc["AjaxResult"]["msg"].InnerText; - // } - // catch - // { - // msg = getVirtualTicketRst.ParseToString(); - // } - // BaseMsgForm.ShowError("拍单信息保存成功,接收到服务端传递的错误消息:" + msg, "订单提前取号失败"); - // btnManualUpdateBuyOrder.Enabled = true; - // return; - // } - //} + #endregion BaseMsgForm.ShowInfo("拍单信息保存成功"); this.Close();