异常单补拍单功能

This commit is contained in:
wule_5900x committed 2026-07-20 07:37:33 +08:00
1 parent 2e20cbdf68
commit 7264835cc6
13 files changed
+570 -362

No files matched your search

@@ -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<PddBuyerOrderLiteInfo> lstFilterPddBuyerOrderInfoLite { get; set; } = new ObservableCollection<PddBuyerOrderLiteInfo>();
public ObservableCollection<PddBuyerAfterSaleLiteInfo> lstPddBuyerAfterSaleInfoLite { get; set; } = new ObservableCollection<PddBuyerAfterSaleLiteInfo>();
public ObservableCollection<PddBuyerAfterSaleLiteInfo> lstFilterPddBuyerAfterSaleInfoLite { get; set; } = new ObservableCollection<PddBuyerAfterSaleLiteInfo>();
public ConcurrentList<string> lstPddBuyerOrderVoidAfterSaleOrderSn { get; set; } = new ConcurrentList<string>();
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, "");
@@ -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">
<Grid Background="{StaticResource ListCtrlBackColorBrush}">
@@ -174,12 +174,13 @@
</Grid>
</Border>
</TabItem>
<TabItem Header="异常单" MinWidth="100" Foreground="#FFEE0099" BorderBrush="Transparent" Background="Transparent" SizeChanged="TabItem_SizeChanged"></TabItem>
<TabItem Header="全部订单" MinWidth="110" BorderBrush="Transparent" Background="Transparent" SizeChanged="TabItem_SizeChanged"></TabItem>
<!--<TabItem Header="发货异常">
<Grid Background="#FFE5E5E5"/>
</TabItem>-->
</TabControl>
<WrapPanel x:Name="wpFilter" Margin="620,6,0,0" VerticalAlignment="Top">
<WrapPanel x:Name="wpFilter" Margin="720,6,0,0" VerticalAlignment="Top">
<CheckBox Content="过滤非中转仓订单" x:Name="chkOnlyWarehouseOrder" BorderBrush="{StaticResource mainColorBrush}" FontSize="12" HorizontalAlignment="Left"
Margin="0,0,0,0" VerticalAlignment="Top" Checked="chkSubFilterSonditions_Checked" Unchecked="chkSubFilterSonditions_Checked" IsChecked="true"/>
<CheckBox Content="过滤多件商品订单" x:Name="chkNoMultiOrder" BorderBrush="{StaticResource mainColorBrush}" FontSize="12" HorizontalAlignment="Left"
@@ -116,7 +116,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
int totalPage = 1;
int pageSize = 50;
while (true && IsAutoReadOrder)
while (true && (IsAutoReadOrder || !string.IsNullOrEmpty(orderIds)))
{
if (page >= 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<TabItem>();
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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(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<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "全部订单")));
tabItem.Header = "全部订单(" + GlobalConfig.lstOrder.Count() + "|" + filteLstTmp.Count() + ")";
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(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<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)));
this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder;
Dispatcher.Invoke(new Action(() =>
{
GlobalConfig.lstFilterOrder = new ObservableCollection<oms_wei_order_info>(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;
}
@@ -400,11 +400,16 @@
HorizontalAlignment="Center" MinWidth="38" Height="24" Margin="4,0,0,0">
</Button>
<Button Grid.Column="1" Grid.Row="2" x:Name="btnDeleteTransitOrder" Click="btnDeleteTransitOrder_Click"
<Button Grid.Column="1" Grid.Row="2" x:Name="btnVoidTransitOrder" Click="btnVoidTransitOrder_Click"
Visibility="Collapsed" BorderBrush="{Binding BuyGoodsBtnColor}" Background="{Binding BuyGoodsBtnBackColor}" Foreground="{Binding BuyGoodsBtnColor}"
Content="作废重拍" Style="{StaticResource BasePageButtonLightStyle}" HorizontalAlignment="Center" MinWidth="38" Height="24" Margin="4,0,0,0">
</Button>
<Button Grid.Column="1" Grid.Row="2" x:Name="btnAbnormalOrderRebuy" Click="btnAbnormalOrderRebuy_Click"
Visibility="Collapsed" BorderBrush="{Binding BuyGoodsBtnColor}" Background="{Binding BuyGoodsBtnBackColor}" Foreground="{Binding BuyGoodsBtnColor}"
Content="异常重拍" Style="{StaticResource BasePageButtonLightStyle}" HorizontalAlignment="Center" MinWidth="38" Height="24" Margin="4,0,0,0">
</Button>
</WrapPanel>
</Grid>
</Grid>
@@ -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<ErpMerchantInfo>(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<ErpMerchantInfo>(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);
}
}
/// <summary>
/// 作废中转仓订单
/// </summary>
/// <param name="orderItem"></param>
/// <param name="isSilent"></param>
/// <param name="UpdateOrderBeforeVoid">作废前是否更新服务端订单状态</param>
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("<code>0</code>") || discardRst.Contains("<code>200</code>"))
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("<code>0</code>") || discardRst.Contains("<code>200</code>"))
{
//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);
}
}
}
}
+1 -1
View File
@@ -32,7 +32,7 @@ namespace AllBase
/// 版本ID
/// </summary>
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";
+42 -5
View File
@@ -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 { }
}
/// <summary>
/// 异常单(买手异常退货)
/// </summary>
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
{
@@ -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 "取号异常-超出派送范围";
@@ -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); }
}
/// <summary>
/// 拍单物流公司编码
/// </summary>
@@ -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); }
}
/// <summary>
/// 拍单物流公司编码
/// </summary>
-1
View File
@@ -264,7 +264,6 @@
</Compile>
<Compile Include="UserLogin.cs" />
<Compile Include="_29Tools\BLL\HttpResponseBLL.cs" />
<Compile Include="_29Tools\BLL\SendBuyerOrder.cs" />
<Compile Include="_29Tools\BLL\HttpResponseWXBLL.cs" />
<Compile Include="_29Tools\BLL\HttpResponseYkdBLL.cs" />
<Compile Include="_29Tools\BLL\ShopBLL.cs" />
-36
View File
@@ -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;
}
}
}
+175 -104
View File
@@ -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, "");
//<AjaxResult><msg>保存成功</msg><code>200</code></AjaxResult>
//<AjaxResult><msg>订单不存在:373733973395494272</msg><code>500</code></AjaxResult>
if (!exportRst.ParseToString().Contains("<code>200</code>"))
{
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, "");
//<AjaxResult><msg>保存成功</msg><code>200</code></AjaxResult>
//<AjaxResult><msg>订单不存在:373733973395494272</msg><code>500</code></AjaxResult>
if (!exportRst.ParseToString().Contains("<code>200</code>"))
{
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("<code>200</code>") && !getVirtualTicketRst.ParseToString().Contains("<code>0</code>"))
// {
// 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("<code>200</code>") && !getVirtualTicketRst.ParseToString().Contains("<code>0</code>"))
// {
// 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();