Files
29WxOrder/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs
T
2026-10-15 17:57:11 +08:00

2156 lines
79 KiB
C#
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using _29WxOrderWpf.BaseWindows;
using _29WxOrderWpf.Common;
using _29WxOrderWpf.Converters;
using _29WxOrderWpf.Ctrls.BuyerCtrls;
using _29WxOrderWpf.UserControls;
using _29WxOrderWpf.ViewModels;
using _29WxOrderWpf.Views;
using _29WxOrderWpf.Windows.OrderWindows;
using AllBase;
using AllBase.Helper;
using AllBase.Model;
using AllBase.Model.Config;
using AllBase.Model.DBModel;
using AllBase.Model.Result;
using CefSharp.DevTools.DOM;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using NPOI.SS.Formula.PTG;
using Org.BouncyCastle.Asn1.Cmp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Security.Policy;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using TemuKJD.ToolForms;
using Work;
using Work._29Tools.BLL;
using Work._29Tools.Forms.ShopForms;
using Work._29Tools.Forms.ToolForms;
using Work.BaseForms;
using static _29WxOrderWpf.Services.ShipGiftService;
using static System.Net.WebRequestMethods;
namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
/// <summary>
/// OrderListRowItemCtrl.xaml 的交互逻辑
/// </summary>
public partial class OrderListRowItemCtrl : UserControl
{
public OrderListRowItemCtrl()
{
InitializeComponent();
txtTransitOrderBuyerStr.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(TransitOrderBuy_Click), true);
txtTransitOrderNumStr.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(TransitOrderBuy_Click), true);
txtDirectBuyer.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtDirectOrderNumStr_MouseLeftButtonUp), true);
txtDirectBuyerOrderNo.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtDirectOrderNumStr_MouseLeftButtonUp), true);
txtRefundId.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtRefundId_MouseLeftButtonUp), true);
txtWarehouseStatus.AddHandler(TextBox.MouseEnterEvent, new MouseEventHandler(txtWarehouseStatus_MouseEnter), true);
}
private void txtRefundId_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == order_item.shop_id.ParseToString());
if (shop != null)
{
WXShopLoginForm shopLoginForm = new WXShopLoginForm(shop);
shopLoginForm.openType = Work._29Tools.Forms.ShopForms.EnumOpenType.manage;
shopLoginForm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
{
shopLoginForm.InitUrl = "https://store.weixin.qq.com/shop/aftersale/detail?orderid=" + order_item.ItemRefund.after_sale_order_id;
}
shopLoginForm.Show();
}
}
}
private async void btnSeeAddressDetail_Click(object sender, RoutedEventArgs e)
{
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
return;
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString());
if (shop == null)
return;
ShowOrderAddress(shop, orderItem.order_id);
}
void ShowOrderAddress(ShopLoginInfo shop, string orderId, bool ShowErrorDialog = true)
{
//var rows = dgvOrder.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colOrderId"].Value.ParseToString() == orderId);
var order = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == orderId);
var deRst = "测试地址写入{\"code\"0}";
deRst = decryptOrder(shop, orderId);
if (deRst.Contains("\"code\":0"))
{
var url = BaseClass.Build29WxObjString("shop/wx_add_mdy_order_address");
var data = UserLogin.GetSignaturex();
data += "&shop_id=" + shop.ShopId;
data += "&order_id=" + orderId;
data += "&order_address=" + GetHtml.UrlEncodeUtf8(deRst);
var html = GetHtml.PostUtf8(url, data);
if (!html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (!html.Contains("\"code\":200"))
{
var errMsg = BaseRegex.GetStringJsonByRegs(ref html, html, "msg");
if (order != null)
{
this.Dispatcher.Invoke(new Action(() =>
{
GetDecryptOrder(deRst, order);
GlobalConfig.DicDecryptOrderAddress[order.order_id] = order;
if (ShowErrorDialog)
BaseMsgWindow.ShowAnimateMessage("查看地址成功但保存到服务端失败:" + errMsg, "Error", 5);
}));
}
}
else
{
if (order != null)
{
this.Dispatcher.Invoke(new Action(() =>
{
GetDecryptOrder(deRst, order);
GlobalConfig.DicDecryptOrderAddress[order.order_id] = order;
BaseMsgWindow.ShowAnimateMessage("查看地址成功");
}));
}
}
}
else
{
var error = BaseRegex.GetStringJsonByRegs(ref deRst, deRst, "err_msg", "error_msg", "errMsg", "errorMsg", "msg");
if (error.Contains("\"code\":17899002") || error.Contains("\"code\":10020123"))
{
if (error.Contains("\"code\":17899002"))
error = "基于用户隐私保护,无法查看收货信息";
if (error.Contains("\"code\":10020123"))
error = "今日查看次数已用完";
Dispatcher.Invoke(new Action(() =>
{
if (ShowErrorDialog)
BaseMsgWindow.ShowAnimateMessage("查看地址失败:" + error, "Error", 5);
}));
}
else
{
Dispatcher.Invoke(new Action(() =>
{
if (ShowErrorDialog)
BaseMsgWindow.ShowAnimateMessage("查看地址失败:" + error, "Error", 5);
}));
}
}
}
public string GetDecryptOrder(string sourceOrderAddressStr, oms_wei_order_info order)
{
//黄颖飞(4559),18466134204-4559,广西壮族自治区柳州市柳南区福柳宏都8-1-701 (拨打请输入分机号4559)
var userName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "userName"); // 黄颖飞
var extension = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "extension"); // 4559
var virtualNumber = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "virtualNumber"); // 18466134204
var provinceName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "provinceName"); // 广西壮族自治区
var cityName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "cityName"); // 柳州市
var countyName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "countyName"); // 柳南区
var detailInfo = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "detailInfo"); // 福柳宏都8-1-701
if (userName.IsNullOrEmpty() || extension.IsNullOrEmpty() || virtualNumber.IsNullOrEmpty() || provinceName.IsNullOrEmpty() || cityName.IsNullOrEmpty() ||
countyName.IsNullOrEmpty() || detailInfo.IsNullOrEmpty())
{
return sourceOrderAddressStr;
}
order.user_name = userName + "(" + extension + ")";
order.tel_number = virtualNumber;
order.tel_number_ext_info = extension;
order.province_name = provinceName;
order.city_name = cityName;
order.county_name = countyName;
order.detail_info = detailInfo;
//return userName + "(" + extension + ")," + virtualNumber + "-" + extension + "," + provinceName + cityName + countyName + detailInfo + "(拨打请输入分机号" + extension + ")";
order.AddressStr = userName + "(" + extension + ")" + "," + virtualNumber + "," + provinceName + cityName + countyName + detailInfo;
return order.AddressStr;
}
public static string decryptOrder(ShopLoginInfo shop, string orderId)
{
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeorder/common/cgi/decryptOrder?token=&lang=zh_CN";
string body = @"{""id"":""" + orderId + @"""}";
string refere = "https://store.weixin.qq.com/shop/order/list";
var result = HttpResponseWXBLL.WeiXinPostResponse(shop, url, body, refere);
return result;
}
private void btnGetRefundAddress_Click(object sender, RoutedEventArgs e)
{
var order = this.DataContext as oms_wei_order_item_info;
if (order == null)
return;
}
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
}
private void btnEditShopRemark_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString());
if (shop == null)
return;
if (btnEditShopRemark.Content.ParseToString() == "保存")
{
var notesRst = OrderListCtrl.addNotes(shop, orderItem.order_id, txtShopRemark.Text);
if (!notesRst.Contains("\"code\":0"))
{
ShopBLL.CheckShopLogin(shop);
BaseMsgForm.ShowError("保存失败请重试");
return;
}
btnCancelEditShopRemark.Visibility = Visibility.Collapsed;
btnEditShopRemark.Content = "编辑";
txtShopRemark.SetValue(WidthProperty, Double.NaN);
txtShopRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(0, 0, 50, 150));
txtShopRemark.IsReadOnly = true;
if (txtShopRemark.Text.IsNullOrEmpty())
txtShopRemark.Visibility = Visibility.Collapsed;
}
else
{
btnCancelEditShopRemark.Visibility = Visibility.Visible;
btnEditShopRemark.Content = "保存";
txtShopRemark.SetValue(WidthProperty, 135.0);
txtShopRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(50, 0, 50, 150));
txtShopRemark.IsReadOnly = false;
txtShopRemark.Visibility = Visibility.Visible;
}
}
}
private void btnCancelEditShopRemark_Click(object sender, RoutedEventArgs e)
{
btnCancelEditShopRemark.Visibility = Visibility.Collapsed;
btnEditShopRemark.Content = "编辑";
txtShopRemark.SetValue(WidthProperty, Double.NaN);
txtShopRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(0, 0, 50, 150));
txtShopRemark.IsReadOnly = true;
if (txtShopRemark.Text.IsNullOrEmpty())
txtShopRemark.Visibility = Visibility.Collapsed;
}
private void btnEditAppRemark_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString());
if (shop == null)
return;
if (btnEditAppRemark.Content.ParseToString() == "保存")
{
var url = BaseClass.Build29WxObjString("order/wx_update_erp_soft_remark");
var data = UserLogin.GetSignaturex();
data += "&order_id=" + orderItem.order_id;
data += "&soft_remark=" + txtAppRemark.Text;
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (!html.Contains("\"code\":200"))
{
BaseMsgForm.ShowError("保存失败请重试");
return;
}
if (BaseRegex.GetIntJson(ref html, "affected_rows") == 0)
{
BaseMsgForm.ShowError("未找到指定订单");
return;
}
orderItem.ItemOrder.soft_remark = txtAppRemark.Text;
btnCancelEditAppRemark.Visibility = Visibility.Collapsed;
btnEditAppRemark.Content = "编辑";
txtAppRemark.SetValue(WidthProperty, Double.NaN);
txtAppRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(0, 0, 50, 150));
txtAppRemark.IsReadOnly = true;
if (txtAppRemark.Text.IsNullOrEmpty())
txtAppRemark.Visibility = Visibility.Collapsed;
}
else
{
btnCancelEditAppRemark.Visibility = Visibility.Visible;
btnEditAppRemark.Content = "保存";
txtAppRemark.SetValue(WidthProperty, 135.0);
txtAppRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(50, 0, 50, 150));
txtAppRemark.IsReadOnly = false;
txtAppRemark.Visibility = Visibility.Visible;
}
}
}
private void btnCancelEditAppRemark_Click(object sender, RoutedEventArgs e)
{
btnCancelEditAppRemark.Visibility = Visibility.Collapsed;
btnEditAppRemark.Content = "编辑";
txtAppRemark.SetValue(WidthProperty, Double.NaN);
txtAppRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(0, 0, 50, 150));
txtAppRemark.IsReadOnly = true;
if (txtAppRemark.Text.IsNullOrEmpty())
txtAppRemark.Visibility = Visibility.Collapsed;
}
private async void btnBuyOrder_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
btnBuyOrder.IsEnabled = false;
await BuyOrder(orderItem);
btnBuyOrder.IsEnabled = true;
}
}
public static async Task BuyOrder(oms_wei_order_item_info orderItem, bool isAutoBuy = false, bool isAbnormalOrder = false)
{
if (orderItem == null)
{
if (!isAutoBuy)
BaseMsgWindow.ShowError("订单信息为空");
return;
}
if (GlobalConfig.CurrentPddBuyer == null)
{
if (!isAutoBuy)
BaseMsgWindow.ShowError("请选择买手号");
return;
}
if (orderItem.ItemOrder.orderItems.Count > 1)
{
if (!isAutoBuy)
BaseMsgWindow.ShowError("多子单订单中转仓暂不支持");
return;
}
if (!GetIsAbnormalOrderRebuy(orderItem) && GlobalConfig.lstOrder.Any(o => o.orderItems
.Any(oi => oi.ItemTransitOrder?.order_no == orderItem.order_id && oi.ItemTransitOrder?.order_sku_id == orderItem.sku_id)))
{
OrderListCtrl.InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.ItemOrder);
if (!isAutoBuy)
BaseMsgWindow.ShowError("已存在中转拍单信息,请核对后再拍单");
return;
}
await Task.Run(async () =>
{
// 拍单前查询订单是否退款
var orderId = orderItem.order_id;
var skuId = orderItem.sku_id;
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)
return;
if (!isAbnormalOrder && orderItem.ItemTransitOrder != null)
{
// 正常单有未作废订单的,不可再拍单
BaseMsgWindow.ShowAnimateMessage("该订单已有采购记录", "Error", 5);
return;
}
if (isAbnormalOrder && (orderItem.ItemOrder.status <= 21 || orderItem.ItemTransitOrder == null || orderItem.ItemTransitOrder.refund_status != "买手退款成功"))
{
// 异常单不是被拼多多买家秒退的且已取号的,不可异常重拍
BaseMsgWindow.ShowAnimateMessage("该异常单不符合重拍条件", "Error", 5);
return;
}
// 如果是退款单,弹出退款窗口
if (CheckIsRefund(orderItem))
return;
// 拍单前检测买手号是否在线
if (GlobalConfig.CurrentBuyPlatform == "pdd")
{
if (GlobalConfig.CurrentPddBuyer.status == "在线")
{
PddMobileLoginViewModel.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer);
}
if (GlobalConfig.CurrentPddBuyer.status != "在线")
{
BaseMsgWindow.ShowError("买手号掉线");
return;
}
}
orderRetry:
// 拍单前查询账户余额
if (!isAbnormalOrder)
{
// 强制使用软件而非erp拍单
if (GlobalConfig.BuyConfig.IsUseAppBalance)
{
if (BaseClass.Balance < 10)
{
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"))
{
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)
{
GlobalConfig.BuyConfig.IsUseAppBalance = true;
StartUp.SaveBuyConfig();
BaseMsgWindow.ShowError("未找到店铺账户!自动切换为快递余额拍单。");
goto orderRetry;
}
var balance = erpM.balance.ParseToDecimal();
if (balance < 10)
{
GlobalConfig.BuyConfig.IsUseAppBalance = true;
StartUp.SaveBuyConfig();
BaseMsgWindow.ShowError("ERP账户余额不足(剩余" + balance.ToString("0.00") + "元,拍单至少需保留10元),无法中转拍单,自动切换为快递余额拍单。");
goto orderRetry;
}
}
catch
{
BaseMsgWindow.ShowError("拍单校验出错,请稍后重试");
return;
}
}
}
}
if (orderItem.BuyGoodsBtnTxt == "去店铺后台绑定代发")
{
if (orderItem.Shop != null)
{
WXShopLoginForm shopLoginForm = new WXShopLoginForm(orderItem.Shop);
shopLoginForm.openType = Work._29Tools.Forms.ShopForms.EnumOpenType.manage;
shopLoginForm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
shopLoginForm.InitUrl = "https://store.weixin.qq.com/shop/supply/consignmentOrderList";
shopLoginForm.IsGetSupplierPage = true;
shopLoginForm.ShowDialog();
}
return;
}
// Api检测是否加入代发
//if (orderItem.BuyGoodsBtnTxt == "云仓拍单" && !isAbnormalOrder) // 异常拍单不改变订单供应商
//{
// try
// {
// await SetSendOrderSupplier(orderItem, "wxfc630d60a1af6c6f", "29供货商");
// }
// catch(Exception ex)
// {
// BaseMsgWindow.ShowError(ex.Message);
// return;
// }
//}
// 掉线提示重登
if (orderItem.Shop?.LoginStatus != "登录成功")
{
foreach (var ord in GlobalConfig.lstFilterOrder.Where(o => o.shop_id.ParseToString() == orderItem.Shop.ErpShopId).ToList())
{
// 更新代发管理情况
foreach (var oi in ord.orderItems)
MainWindow.Instance.Dispatcher.Invoke(new Action(() => { oi.UpdateOrderItemBuyButton(); }));
}
BaseMsgWindow.ShowError("请登录店铺");
return;
}
// 打开拍单窗口
MainWindow.Instance.Dispatcher.Invoke(new Action(() =>
{
if (GlobalConfig.CurrentBuyPlatform == "pdd")
PddBuyOrder(orderItem, isAbnormalOrder, isAutoBuy);
//PddBuyOrderWpf(orderItem, isAbnormalOrder, isAutoBuy);
else if (GlobalConfig.CurrentBuyPlatform == "tb")
TbBuyOrderWpf(orderItem, isAbnormalOrder, isAutoBuy);
}));
});
}
public static void TbBuyOrderWpf(oms_wei_order_item_info orderItem, bool isAbnormalOrder, bool isAutoBuy)
{
if (GlobalConfig.CurrentTaobaoBuyer == null)
{
BaseMsgWindow.ShowError("未选择买手!");
return;
}
TaobaoBuyOrderCtrl taobaoBuyView = new TaobaoBuyOrderCtrl(GlobalConfig.CurrentTaobaoBuyer, orderItem);
//https://item.taobao.com/item.htm?id=756295486950&skuId=5216824841295
if (orderItem.TbBuyMap != null)
{
taobaoBuyView.ViewModel.InitUrl = "https://i.taobao.com/my_itaobao/receiver-address-pc";
taobaoBuyView.ViewModel.InitUrl = "https://item.taobao.com/item.htm?id=" + orderItem.TbBuyMap.map_goods_id + "&skuId=" + orderItem.TbBuyMap.map_sku_id;
}
else
{
taobaoBuyView.ViewModel.InitUrl = "https://s.taobao.com/search?";
taobaoBuyView.ViewModel.IsMappingGoods = true;
}
if (isAbnormalOrder)
taobaoBuyView.ViewModel.AbnormalTransitWarehouseOrderInfo = orderItem.ItemTransitOrder;
new DialogWindow()
{
Title = "买手拍单 - 当前买手 " + GlobalConfig.CurrentTaobaoBuyer.buyer_nick,
Content = taobaoBuyView,
//Height = System.Windows.Forms.SystemInformation.WorkingArea.Height - 80,
//Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height - 80,
Width = SystemParameters.PrimaryScreenWidth < 1920 ? SystemParameters.PrimaryScreenWidth : SystemParameters.PrimaryScreenWidth * 90 / 100,
Height = SystemParameters.PrimaryScreenHeight * 90 / 100,
WindowStartupLocation = WindowStartupLocation.CenterScreen,
}.ShowDialog();
// 记录窗口内传出的是否继续自动拍单属性
OrderListCtrl.IsAutoBuy = taobaoBuyView.ViewModel.IsAutoBuy;
// 如果购买成功,修改供应商信息
if (taobaoBuyView.ViewModel.IsBuySuccess)
{
Task.Run(async () =>
{
if (orderItem.BuyGoodsBtnTxt == "云仓拍单" && !isAbnormalOrder) // 异常拍单不改变订单供应商
{
try
{
await SetSendOrderSupplier(orderItem, "wxfc630d60a1af6c6f", "29供货商");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
});
}
}
public static void PddBuyOrderWpf(oms_wei_order_item_info orderItem, bool isAbnormalOrder, bool isAutoBuy)
{
if (GlobalConfig.CurrentPddBuyer == null)
{
BaseMsgWindow.ShowError("未选择买手!");
return;
}
PddBuyOrderCtrl pddBuyView = new PddBuyOrderCtrl(GlobalConfig.CurrentTaobaoBuyer, orderItem);
if (orderItem.PddBuyMap != null)
{
pddBuyView.ViewModel.InitUrl = "https://mobile.yangkeduo.com/order_checkout.html?sku_id=" + orderItem.PddBuyMap.map_sku_id +
"&group_id=1" + Randomx.GetNumber(11) + "&goods_id=" + orderItem.PddBuyMap.map_goods_id + "&goods_number=" + orderItem.sku_cnt +
"&page_from=101";
pddBuyView.ViewModel.IsAutoBuy = isAutoBuy;
}
else
{
pddBuyView.ViewModel.InitUrl = "https://mobile.yangkeduo.com/orders.html"; //"?type=0&comment_tab=1&combine_orders=1&main_orders=1&refer_page_name=personal&refer_page_id=10001_1782219035613_a9ulipk4k3&refer_page_sn=10001";
pddBuyView.ViewModel.IsMappingGoods = true;
}
if (isAbnormalOrder)
pddBuyView.ViewModel.AbnormalTransitWarehouseOrderInfo = orderItem.ItemTransitOrder;
new DialogWindow()
{
Title = "买手拍单 - 当前买手 " + GlobalConfig.CurrentPddBuyer.buyer_nick,
Content = pddBuyView,
//Height = System.Windows.Forms.SystemInformation.WorkingArea.Height - 80,
//Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height - 80,
Width = SystemParameters.PrimaryScreenWidth < 1920 ? SystemParameters.PrimaryScreenWidth : SystemParameters.PrimaryScreenWidth * 90 / 100,
Height = SystemParameters.PrimaryScreenHeight * 90 / 100,
WindowStartupLocation = WindowStartupLocation.CenterScreen,
}.ShowDialog();
// 记录窗口内传出的是否继续自动拍单属性
OrderListCtrl.IsAutoBuy = pddBuyView.ViewModel.IsAutoBuy;
// 如果购买成功,修改供应商信息
if (pddBuyView.ViewModel.IsBuySuccess)
{
Task.Run(async () =>
{
if (orderItem.BuyGoodsBtnTxt == "云仓拍单" && !isAbnormalOrder) // 异常拍单不改变订单供应商
{
try
{
await SetSendOrderSupplier(orderItem, "wxfc630d60a1af6c6f", "29供货商");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
});
}
}
public static void PddBuyOrder(oms_wei_order_item_info orderItem, bool isAbnormalOrder, bool isAutoBuy)
{
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance, orderItem, GlobalConfig.CurrentPddBuyer, orderItem.PddBuyMap);
buyOrderForm.IsAutoBuy = isAutoBuy;
buyOrderForm.TitleText = "买手拍单 - 当前买手 " + GlobalConfig.CurrentPddBuyer.buyer_nick;
// 未关联拍单的跳到所有订单页面
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/orders.html"; //"?type=0&comment_tab=1&combine_orders=1&main_orders=1&refer_page_name=personal&refer_page_id=10001_1782219035613_a9ulipk4k3&refer_page_sn=10001";
buyOrderForm.pnlBuy.Visible = false;
// 已有拍单关联的跳的到订单确认界面
if (orderItem.PddBuyMap != null)
{
//buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/order_checkout.html?sku_id=" + orderItem.BuyMap.map_sku_id +
// "&group_id=1" + Randomx.GetNumber(11) + "&goods_id=" + orderItem.BuyMap.map_goods_id + "&goods_number=" + +orderItem.sku_cnt +
// "&page_from=101&detail_id=" + Randomx.GetNumber(11) + "&_oak_rcto=YW" +
// Randomx.GetWordNumber("JvLXvJ8Fx9mUIW34yn103TOlATJGk5PaZshD6pY1bsVrsIjWdxWwjCoNX3IGT".Length) + "_VWkP5_q-1QNqGg" +
// "&order_extra_type=1&refer_page_element=open_btn&source_channel=0&refer_page_name=goods_detail" +
// "&refer_page_id=10014_" + BaseClass.DateTimeToTimestampSeconds(DateTime.Now) + Randomx.GetNumber(3) + "_tny5ifswls&refer_page_sn=10014";
buyOrderForm.ShowBuyMask = true;
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/order_checkout.html?sku_id=" + orderItem.PddBuyMap.map_sku_id +
"&group_id=1" + Randomx.GetNumber(11) + "&goods_id=" + orderItem.PddBuyMap.map_goods_id + "&goods_number=" + orderItem.sku_cnt +
"&page_from=101";
//buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/order_checkout.html?sku_id=" + orderItem.BuyMap.map_sku_id +
// "&group_id=1" + Randomx.GetNumber(11) + "&goods_id=" + orderItem.BuyMap.map_goods_id + "&goods_number=" + orderItem.sku_cnt +
// "&page_from=0&refer_page_element=open_btn&source_channel=0&refer_page_name=goods_detail&refer_page_id=10014_" +
// BaseClass.DateTimeToTimestampSeconds(DateTime.Now) + Randomx.GetNumber(3) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10014";
buyOrderForm.pnlBuy.Visible = true;
buyOrderForm.pnlMap.Visible = false;
}
if (isAbnormalOrder)
buyOrderForm.AbnormalTransitWarehouseOrderInfo = orderItem.ItemTransitOrder;
buyOrderForm.ShowDialog();
OrderListCtrl.IsAutoBuy = buyOrderForm.IsAutoBuy;
if (buyOrderForm.IsBuySuccess)
{
Task.Run(async () =>
{
if (orderItem.BuyGoodsBtnTxt == "云仓拍单" && !isAbnormalOrder) // 异常拍单不改变订单供应商
{
try
{
await SetSendOrderSupplier(orderItem, "wxfc630d60a1af6c6f", "29供货商");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
});
}
}
/// <summary>
///
/// </summary>
/// <param name="orderItem">要发货的订单物品</param>
/// <param name="targetSupplierId">targetSupplierId 和 targetSupplierName 都为空表示取消代发</param>
/// <param name="targetSupplierName">targetSupplierId 和 targetSupplierName 都为空表示取消代发</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public static async Task SetSendOrderSupplier(oms_wei_order_item_info orderItem, string targetSupplierId, string targetSupplierName)
{
string supplierId = "", supplierName = "";
try
{
// 查询代发列表
var apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(orderItem.Shop, orderItem.order_id, 100);
if (!apiSearchDropship.Contains("\"errcode\":0"))
throw new Exception("查询代发失败!" + BaseRegex.GetStringJsonByRegs(ref apiSearchDropship, apiSearchDropship, "msg", "errmsg"));
var dsOrderId = JsonHelper.JObjectParse(apiSearchDropship)["ds_order_id_list"].FirstOrDefault().ParseToString();
// 取消代发判断
if (targetSupplierId.IsNullOrEmpty() && targetSupplierName.IsNullOrEmpty())
{
if (!string.IsNullOrEmpty(dsOrderId))
{
var apiCancelDropship = await new WxApiBLL().WxApiDropshipCancel(orderItem.Shop, orderItem.ItemOrder, dsOrderId);
if (!apiCancelDropship.Contains("\"errcode\":0"))
{
var errMsg = BaseRegex.GetStringJsonByRegs(ref apiCancelDropship, apiCancelDropship, "msg", "errmsg");
throw new Exception("取消代发失败!请手动取消代发!" + errMsg);
}
}
return;
}
// 更换或新增代发判断
if (!string.IsNullOrEmpty(dsOrderId))
{
// 查询代发详情
var apiSearchDropshipDetail = new WxApiBLL().WxApiDropshipSearchDetail(orderItem.Shop, dsOrderId);
if (!apiSearchDropshipDetail.Contains("\"errcode\":0"))
throw new Exception("查询代发失详情失败!" + BaseRegex.GetStringJson(ref apiSearchDropshipDetail, "msg"));
supplierId = BaseRegex.GetStringJson(ref apiSearchDropshipDetail, "supplier_appid");
supplierName = BaseRegex.GetStringJson(ref apiSearchDropshipDetail, "supplier_name");
if (!string.IsNullOrEmpty(supplierId) && !supplierId.Contains(targetSupplierId) && !supplierName.Contains(targetSupplierName))
{
// 取消代发
var apiCancelDropship = await new WxApiBLL().WxApiDropshipCancel(orderItem.Shop, orderItem.ItemOrder, dsOrderId);
if (!apiCancelDropship.Contains("\"errcode\":0"))
{
var errMsg = BaseRegex.GetStringJsonByRegs(ref apiCancelDropship, apiCancelDropship, "msg", "errmsg");
throw new Exception("取消其他代发失败!请确认商品加入的是 " + targetSupplierName + " 代发!" + errMsg);
}
dsOrderId = "";
supplierId = "";
supplierName = "";
}
}
// 设置或新增代发
if (!supplierId.Contains(targetSupplierId) && !supplierName.Contains(targetSupplierName))
{
// 设置29供货商代发wxfc630d60a1af6c6f或其他代发
var apiAddDropship = new WxApiBLL().WxApiDropshipAssign(orderItem.Shop, orderItem.order_id, orderItem.product_id, orderItem.sku_id, orderItem.sku_cnt.ParseToInt(), targetSupplierId);
if (!apiAddDropship.Contains("\"errcode\":0"))
{
throw new Exception("设置代发失败!请确认商品已加入" + targetSupplierName + "代发!" + BaseRegex.GetStringJson(ref apiAddDropship, "msg"));
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
//BaseMsgWindow.ShowError(ex.Message);
//return;
}
}
private void UserControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
//btnBuyOrder.Content = "关联拍单";
// 显示预估利润
//if (order_item.BuyMap == null && order_item.ItemOrder.out_amount == 0)
// txtProfitForecast.Visibility = Visibility.Visible;
// 绑定时即刻生效,无需再次手动调用
//order_item.UpdateOrderItemBuyButton();
Task.Run(() =>
{
// 异步加载图片防止卡顿
// 缩略图在有的电脑上无法显示
//BitmapImage bImg = ImageUrlToBitmapImageConverter.LoadImageFromUrl(order_item.thumb_img + "?imageView2/1/w/100/format/webp|imageMogr2/auto-orient=");
BitmapImage bImg = AllBase.ImageBuild.LoadBitmipImageFromUrl(order_item.thumb_img);
Thread.Sleep(Randomx.GetId(1000));
Dispatcher.Invoke(new Action(() =>
{
imgOrderItem.Source = bImg;
}));
});
// 作废重拍
if (order_item.ItemOrder.status == 20 /*&& order_item.refund_status <= 1*/ && order_item.ItemTransitOrder != null)
{
btnVoidTransitOrder.Visibility = Visibility.Visible;
}
else
{
btnVoidTransitOrder.Visibility = Visibility.Collapsed;
}
// 异常重拍
if (GetIsAbnormalOrderRebuy(order_item))
{
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;
wpBuyAccount.Opacity = 0.5;
wpBuyOrderId.Opacity = 0.5;
wpBuyTime.Opacity = 0.5;
wpTransitWaybillStatus.Opacity = 0.5;
}
}
}
/// <summary>
/// 判断中转仓订单是否可以异常重拍
/// </summary>
/// <param name="order_item"></param>
/// <returns></returns>
static bool GetIsAbnormalOrderRebuy(oms_wei_order_item_info order_item)
{
// 不是异常单的不可异常重拍
if (order_item?.ItemOrder?.IsAbnormal != true)
return false;
// 买手未退款的,中转正式取号以后的,不可异常重拍
if (order_item.ItemTransitOrder?.refund_status != "买手退款成功" ||
order_item.WarehouseWaybillStatusStr == "中转已取号" || order_item.WarehouseWaybillStatusStr == "中转已入库" || order_item.WarehouseWaybillStatusStr == "中转已出库")
return false;
// 已正式取号的,不可异常重拍
if (order_item.ItemTransitOrder?.pre_allocated_order_no == 1 || order_item.ItemTransitOrder?.pre_allocated_order_no == 3)
return false;
// 仓库异常的异常单不可异常重拍
List<string> rawMsgKeyWords = new List<string> { "取号异常", "无法调用" };
if (rawMsgKeyWords.Any(k => (order_item.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains(k)) && order_item.ItemTransitOrderWithVoid?.transfer_warehouse_status != 1)
return false;
return true;
}
private void TransitOrderBuy_Click(object sender, MouseButtonEventArgs e)
{
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
{
BaseMsgWindow.ShowError("订单信息为空");
return;
}
var buyerName = txtTransitOrderBuyerStr.Text;
var buyerAccount = txtTransitOrderBuyerStr.Tag.ParseToString();
var outOrderId = txtTransitOrderNumStr.Text;
if (string.IsNullOrEmpty(buyerName) || string.IsNullOrEmpty(outOrderId))
{
return;
}
if (outOrderId.StartsWith("tb_")) // 淘宝买手及订单
{
var buyer = GlobalConfig.TaobaoBuyerLoginList.FirstOrDefault(p => p.buyer_id == buyerAccount || p.buyer_name == buyerName);
if (buyer == null)
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
var url = "";
if (sender == txtTransitOrderBuyerStr)
url = "https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm?";
else
url = "https://trade.tmall.com/detail/orderDetail.htm?bizOrderId=" + outOrderId.Replace("tb_", "");
TaobaoBuyOrderCtrl taobaoBuyView = new TaobaoBuyOrderCtrl(GlobalConfig.CurrentTaobaoBuyer, orderItem);
taobaoBuyView.ViewModel.InitUrl = url;
new DialogWindow()
{
Title = "订单查看 - 当前买手 " + buyer.buyer_nick,
Content = taobaoBuyView,
Width = SystemParameters.PrimaryScreenWidth < 1920 ? SystemParameters.PrimaryScreenWidth : SystemParameters.PrimaryScreenWidth * 90 / 100,
Height = SystemParameters.PrimaryScreenHeight * 90 / 100,
WindowStartupLocation = WindowStartupLocation.CenterScreen,
}.ShowDialog();
}
else // 拼多多买手及订单
{
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(p => p.buyer_id == buyerAccount || p.buyer_name == buyerName);
if (buyer == null)
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
var url = "";
if (sender == txtTransitOrderBuyerStr)
url = "https://mobile.yangkeduo.com/index.html";
else
url = "https://mobile.yangkeduo.com/order.html?order_sn=" + outOrderId + "&page_from=1&main_orders=1&is_tester=1&refer_page_name=my_order" +
"&refer_page_id=10032_" + BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10032";
// 拍单的时候检测一下买手号
if (buyer.status == "在线")
{
PddMobileLoginViewModel.CheckBuyerLogin(buyer);
}
if (buyer.status != "在线")
{
BaseMsgWindow.ShowError("买手号掉线");
return;
}
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance,
orderItem, buyer, orderItem.PddBuyMap);
buyOrderForm.TitleText = "订单查看 - 当前买手 " + buyer.buyer_nick;
//所有订单页面
buyOrderForm.InitUrl = url;
buyOrderForm.pnlBuy.Visible = false;
//已有拍单关联的控制界面显示隐藏
if (orderItem.PddBuyMap != null)
{
buyOrderForm.pnlBuy.Visible = true;
buyOrderForm.pnlMap.Visible = false;
}
buyOrderForm.ShowDialog();
}
}
private void txtDirectOrderNumStr_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
{
BaseMsgWindow.ShowError("订单信息为空");
return;
}
var buyerAccount = txtTransitOrderBuyerStr.Tag.ParseToString();
var buyerName = txtDirectBuyer.Text.Split(':').LastOrDefault();
var outOrderId = txtDirectBuyerOrderNo.Text.Split(':').LastOrDefault();
if (string.IsNullOrEmpty(buyerName) || string.IsNullOrEmpty(outOrderId))
{
return;
}
if (outOrderId.StartsWith("tb_")) // 淘宝买手及订单
{
var buyer = GlobalConfig.TaobaoBuyerLoginList.FirstOrDefault(p => p.buyer_id == buyerAccount || p.buyer_name == buyerName);
if (buyer == null)
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
var url = "";
if (sender == txtTransitOrderBuyerStr)
url = "https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm?";
else
url = "https://trade.tmall.com/detail/orderDetail.htm?bizOrderId=" + outOrderId.Replace("tb_", "");
TaobaoBuyOrderCtrl taobaoBuyView = new TaobaoBuyOrderCtrl(GlobalConfig.CurrentTaobaoBuyer, orderItem);
taobaoBuyView.ViewModel.InitUrl = url;
taobaoBuyView.ViewModel.BuyType = "direct";
new DialogWindow()
{
Title = "订单查看 - 当前买手 " + buyer.buyer_nick,
Content = taobaoBuyView,
Width = SystemParameters.PrimaryScreenWidth < 1920 ? SystemParameters.PrimaryScreenWidth : SystemParameters.PrimaryScreenWidth * 90 / 100,
Height = SystemParameters.PrimaryScreenHeight * 90 / 100,
WindowStartupLocation = WindowStartupLocation.CenterScreen,
}.ShowDialog();
}
else
{
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(p => p.buyer_name == buyerName);
if (buyer == null)
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
//GlobalConfig.CurrentPddBuyer = buyer;
var url = "";
if (buyer != null)
{
if (sender == txtDirectBuyer)
url = "https://mobile.yangkeduo.com/index.html";
else
url = "https://mobile.yangkeduo.com/order.html?order_sn=" + outOrderId + "&page_from=1&main_orders=1&is_tester=1&refer_page_name=my_order" +
"&refer_page_id=10032_" + BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10032";
}
// 拍单的时候检测一下买手号
if (buyer.status == "在线")
{
PddMobileLoginViewModel.CheckBuyerLogin(buyer);
}
if (buyer.status != "在线")
{
BaseMsgWindow.ShowError("买手号掉线");
return;
}
//PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance, orderItem, buyer, orderItem.BuyMap);
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(null, null, orderItem, buyer, orderItem.PddBuyMap);
buyOrderForm.BuyType = "direct";
buyOrderForm.TitleText = "直发订单查看 - 当前买手 " + buyer.buyer_nick;
//所有订单页面
buyOrderForm.InitUrl = url;
buyOrderForm.pnlBuy.Visible = false;
//已有拍单关联的控制界面显示隐藏
if (orderItem.PddBuyMap != null)
{
buyOrderForm.pnlBuy.Visible = true;
buyOrderForm.pnlMap.Visible = false;
}
buyOrderForm.ShowDialog();
}
}
private void Path_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
try
{
Clipboard.SetDataObject(orderItem.ItemTransitOrderWithVoid.out_order_no);
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void pathRefundId_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject(order_item.ItemRefund.after_sale_order_id);
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void imgOrderItem_MouseEnter(object sender, MouseEventArgs e)
{
}
private void imgOrderItem_MouseLeave(object sender, MouseEventArgs e)
{
}
private void imgOrderItem_MouseDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
ShowImgForm imgFrom = new ShowImgForm(orderItem.thumb_img);
imgFrom.ShowDialog();
}
}
private async void btnVoidTransitOrder_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
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)
{
if (!isSilent)
BaseMsgWindow.ShowError("订单查询失败,请重试");
return;
}
if (orderItem.ItemTransitOrder == null)
{
if (!isSilent)
BaseMsgWindow.ShowError("要作废的中转订单不存在,请确认后重试");
return;
}
if (orderItem.ItemTransitOrder.out_order_no.ParseToString().StartsWith("tb_")) // 淘宝买手售后
{
if (!isSilent)
BaseMsgWindow.ShowError("淘宝买手暂不支持自动售后,请手动申请售后");
else
orderItem.ItemTransitOrder.refund_status = "淘宝买手暂不支持自动售后,需手动申请售后";
}
else // 拼多多买手售后
{
bool noBuyer = false;
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_id == orderItem?.ItemTransitOrder?.buyer_account || b.buyer_name == orderItem?.ItemTransitOrder?.buyer_account);
if (buyer == null)
{
if (!isSilent)
if (BaseMsgWindow.ShowConfirm("拍单买手不存在,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true)
return;
noBuyer = true;
}
// 检测一下买手号
if (GlobalConfig.CurrentPddBuyer.status == "在线")
{
await Task.Run(() =>
{
PddMobileLoginViewModel.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer);
});
}
if (GlobalConfig.CurrentPddBuyer.status != "在线")
{
if (!isSilent)
if (BaseMsgWindow.ShowConfirm("买手号掉线,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true)
return;
noBuyer = true;
}
if (!noBuyer)
{
PddBuyerOrderLiteInfo order = null;
MainWindow.Instance.Dispatcher.Invoke(new Action(() => { }));
order = PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite.FirstOrDefault(o => o.order_sn == orderItem.ItemTransitOrder.out_order_no);
if (order == null)
order = new PddBuyerOrderLiteInfo()
{
order_status_prompt = "待发货",
order_amount = orderItem.ItemTransitOrder.out_amount,
order_sn = orderItem.ItemTransitOrder.out_order_no
};
PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite.Add(order);
var pddAfterRst = PDDBuyerOrderReadCtrl.SimPddAfterSale(buyer, order);
if (pddAfterRst.Contains("\"after_sales_status\":1") || pddAfterRst.Contains("该订单已全额退款") || pddAfterRst.Contains("订单未付款"))
{
// 保存退款成功状态
order.order_status_prompt = pddAfterRst.Contains("订单未付款") ? "订单未付款" : "退款成功";
// 中转仓订单买手号售后信息 存到服务端
var refundRst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(order);
if (refundRst.Contains("<code>0</code>") || refundRst.Contains("<code>200</code>"))
{
order.sendStatus = "退款成功 买手退款信息更新成功";
}
else
{
var msg = BaseRegex.GetStringXml(ref refundRst, "msg");
order.sendStatus = "退款成功 买手退款信息更新失败,服务端返回 " + msg;
}
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite);
}
else
{
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.SetOrderItemTextProperty();
#endregion
#region 重新过滤订单
OrderListCtrl.InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOrders();
if (!isSilent)
BaseMsgWindow.ShowInfo("订单作废成功,请重新拍单");
#endregion
#region 更新拍单余额
StartUp.UpdateBalance();
#endregion
}
else
{
var msg = BaseRegex.GetStringXml(ref discardRst, "msg");
if (!isSilent)
BaseMsgWindow.ShowInfo("订单作废失败,服务端返回 " + msg);
}
}
private void txtWarehouseStatus_MouseEnter(object sender, MouseEventArgs e)
{
if (txtWarehouseStatus.ToolTip == null)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
if (orderItem.ItemTransitOrderWithVoid.raw_message != null && orderItem.ItemTransitOrderWithVoid.raw_message.Contains("取号异常"))
this.txtWarehouseStatus.ToolTip = orderItem.ItemTransitOrderWithVoid.raw_message;
}
}
}
private void btnAddEditTransitWarehouseReject_Click(object sender, RoutedEventArgs e)
{
if (sender == btnAddEditTransitWarehouseReject && this.DataContext is oms_wei_order_item_info orderItem1 && !string.IsNullOrWhiteSpace(orderItem1.ItemTransitOrderWithVoid?.express_1_waybill))
{
BaiduGetWaybillInfoView buyerLoginForm = new BaiduGetWaybillInfoView(orderItem1);
buyerLoginForm.ViewModel.InitUrl = "https://www.baidu.com/s?ie=UTF-8&wd=" + orderItem1.ItemTransitOrderWithVoid?.express_1_waybill;
new DialogWindow()
{
Width = 1280,
Height = 800,
Title = "物流拒收查询",
Content = buyerLoginForm,
}.Show();
return;
}
string msg = $@"
        云仓拒收退回总店
说  明:店铺产生售后,拒收成功,货物会原物流退回总店。
拒收条件:(总店物流没到云仓/未签收前)。顺丰/京东无法
     拒收,直接总店申请仅退款让总店拦截。
收  费:免费";
if (BaseMsgWindow.ShowConfirm(msg, "云仓拒收退回总店", null, MsgWindowLevel.LARGE, 300).DialogResult != true)
return;
if (this.DataContext is oms_wei_order_item_info orderItem)
{
orderItem.ItemTransitOrders = OrderListCtrl.GetTransitWarehouseList(orderItem.order_id);
orderItem.PddBuyerOrders = OrderListCtrl.GetPddBuyerOrders(orderItem.order_id).Where(o => o.wx_send_type == 0).ToList();
orderItem.PddBuyerOrders.AddRange(OrderListCtrl.GetTbBuyerOrders(orderItem.order_id).Where(o => o.wx_send_type == 0).ToList());
OrderListCtrl.InitOrderItemObservableProp(orderItem);
//if (orderItem.ItemTransitOrder?.warehouse_status == 3)
//{
// BaseMsgWindow.ShowError("商品已拒收或拦截!");
// return;
//}
//if (orderItem.ItemTransitOrder?.warehouse_status == 2)
//{
// BaseMsgWindow.ShowError("商品已出库,请选择退回中转仓!");
// return;
//}
//if (string.IsNullOrEmpty(orderItem.PddBuyerOrder?.order_sn))
//{
// BaseMsgWindow.ShowError("商品未出单,请直接去拼多多买手申请退款");
// return;
//}
if (orderItem.ItemTransitOrder?.has_reject == 1 || orderItem.ItemTransitOrder?.has_reject == 3)
{
BaseMsgWindow.ShowAnimateMessage("已申请拒收", "Msg", 3);
return;
}
// 中转仓拒收(已产生物流)
string url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/orders/rejectApply";
var dataObj = new JObject();
dataObj["orderCode"] = orderItem.ItemTransitOrder?.order_code;
dataObj["orderId"] = orderItem.order_id;
dataObj["logisticsExpressCode"] = orderItem.PddBuyerOrder?.order_sn;
var data = JsonHelper.SerializeObject(dataObj);
var html = HttpResponseWXBLL.e57PostResponse(url, data, "");
int rejectStatus = 0;
if (html.Contains("<code>0</code>") || html.Contains("<code>200</code>"))
{
rejectStatus = 1;
BaseMsgWindow.ShowAnimateMessage("申请成功", "Msg", 3);
}
else
{
rejectStatus = 2;
var err = BaseRegex.GetStringXmlByRegs(ref html, "msg");
BaseMsgWindow.ShowAnimateMessage("申请失败", "Error", 3);
}
url = BaseClass.Build29WxObjString("order/wx_update_transit_order_reject_status");
data = UserLogin.GetSignaturex();
data += "&order_no=" + orderItem.order_id;
data += "&order_sku_id=" + orderItem.sku_id;
data += "&has_reject=" + rejectStatus;
html = GetHtml.PostUtf8(url, data);
orderItem.ItemTransitOrderWithVoid.has_reject = rejectStatus;
OrderListCtrl.InitOrderItemObservableProp(orderItem);
}
}
private void btnAddEditTransitWarehouseAfterSale_Click(object sender, RoutedEventArgs e)
{
//if (this.DataContext is oms_wei_order_item_info orderItem)
//{
// if (BaseMsgWindow.ShowConfirm("拦截退回总店将产生费用,是否继续?").DialogResult != true)
// {
// return;
// }
// if (orderItem.ItemTransitOrder?.warehouse_status != 3 && orderItem.ItemTransitOrder?.warehouse_status != 2 && orderItem.ItemTransitOrder?.warehouse_status != 1 && orderItem.AddEditTransitWarehouseAfterSaleStr == "添加")
// {
// if (BaseMsgWindow.ShowConfirm("商品未到仓,建议选择中转仓拒收!是否仍然尝试拦截退回总店?").DialogResult != true)
// return;
// }
// TransitAfterSaleWindow transitAfterSaleWindow = new TransitAfterSaleWindow(orderItem);
// transitAfterSaleWindow.ShowDialog();
//}
if (this.DataContext is oms_wei_order_item_info orderItem)
{
// 显示状态的按钮,直接返回
if (sender == btnAddEditTransitWarehouseAfterSale)
return;
string warehouse_status = "";
if (orderItem.ItemTransitOrder?.warehouse_status == 3 || orderItem.ItemTransitOrder?.warehouse_status == 1)
warehouse_status = "已到仓";
if (orderItem.ItemTransitOrder?.warehouse_status == 2)
warehouse_status = "已出仓";
else
warehouse_status = "未到仓";
if (sender == btnAddEditTransitWarehouseAfterSale_n1)
{
string msg = $@"
      拒收失败转寄总店({warehouse_status})
说  明:店铺产生售后,拒收失败(物流信息签收3天
     内无退回记录),货物需转寄退回总店。
收  费:(与退货仓退货价格一样)";
if (BaseMsgWindow.ShowConfirm(msg, "拒收失败转寄总店", null, MsgWindowLevel.LARGE, 300).DialogResult != true)
return;
}
else
{
string msg = $@"
      出库拦截退回仓库({warehouse_status})
说  明:拦截成功后货物返回云仓,云仓转寄到总店。
拦截条件:(云仓出库物流在运输过程)派送/入柜/拦截
     几率很低,签收需联系用户拒收。
收  费:(与退货仓退货价格一样)";
if (BaseMsgWindow.ShowConfirm(msg, "出库拦截退回仓库", null, MsgWindowLevel.LARGE, 300).DialogResult != true)
return;
}
TransitAfterSaleWindow transitAfterSaleWindow = new TransitAfterSaleWindow(orderItem);
transitAfterSaleWindow.ShowDialog();
}
}
private async 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 == "买手退款成功")
await BuyOrder(orderItem, false, true);
}
}
private void pathBuyerAfterSaleAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject(order_item.PddBuyerAfterSaleAddressStr);
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void pathDirectBuyerAfterSaleAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject(order_item.DirectPddBuyerAfterSaleAddressStr);
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void pathCopyAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject((order_item.ItemOrder?.AddressStr).ParseToString());
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void btnDirectBuyOrder_Click(object sender, RoutedEventArgs e)
{
directBuyOrder();
}
/// <summary>
/// 直发拍单
/// </summary>
void directBuyOrder()
{
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
{
BaseMsgWindow.ShowError("订单信息为空");
return;
}
if (GlobalConfig.CurrentPddBuyer == null)
{
BaseMsgWindow.ShowError("请选择买手号");
return;
}
if (/*orderItem.sku_cnt > 1 ||*/ orderItem.ItemOrder.orderItems.Count > 1)
{
//BaseMsgWindow.ShowError("多子单或多件商品订单中转仓暂不支持");
BaseMsgWindow.ShowError("多子单订单中转仓暂不支持");
return;
}
btnBuyOrder.Cursor = Cursors.Wait;
btnDirectBuyOrder.IsEnabled = false;
Task.Run(() =>
{
Thread.Sleep(2000);
Dispatcher.Invoke(new Action(() => { btnDirectBuyOrder.IsEnabled = true; }));
});
Task.Run(async() =>
{
// 拍单前查询订单是否退款
var orderId = orderItem.order_id;
var skuId = orderItem.sku_id;
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)
return;
if (!orderItem.ItemOrder.out_order_no.IsNullOrEmpty() && orderItem.ItemOrder.out_after_sale_status != "退款成功")
{
// 外采单已存在的,不可再拍单
BaseMsgWindow.ShowAnimateMessage("该订单已有直发采购记录", "Error", 5);
return;
}
// 如果是退款单,弹出退款窗口
if (CheckIsRefund(orderItem))
return;
// Api检测代发状态
//if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill == true)
//{
// // 设置同步物流单代发
// //var rst = new WxApiBLL().GetShopSupplier(orderItem.Shop);
// //if (!rst.Contains("wx7809625286c28f2f") && !rst.Contains("百川日用"))
// //{
// // rst = new WxApiBLL().SetShopSupplier(orderItem.Shop, "wx7809625286c28f2f", "4431685489938137094");
// // if (!rst.Contains("\"errcode\":0"))
// // {
// // BaseMsgWindow.ShowAnimateMessage("绑定同步单发货失败", "Error", 5);
// // return;
// // }
// //}
// try
// {
// // 查询直拍单是否绑定了同步单代发(放到同步单发货前处理)
// await SetSendOrderSupplier(orderItem, "wx7809625286c28f2f", "百川日用");
// }
// catch (Exception ex)
// {
// BaseMsgWindow.ShowError(ex.Message);
// return;
// }
//}
//else
//{
// // 查询订单是否在代发货中,如果代发需要取消代发
// try
// {
// // 查询直拍单是否绑定了同步单代发(放到同步单发货前处理)
// await SetSendOrderSupplier(orderItem, "", "");
// }
// catch (Exception ex)
// {
// BaseMsgWindow.ShowError(ex.Message);
// return;
// }
//}
// 检测买手号是否掉线
if (GlobalConfig.CurrentBuyPlatform == "pdd")
{
if (GlobalConfig.CurrentPddBuyer.status == "在线")
{
PddMobileLoginViewModel.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer);
}
if (GlobalConfig.CurrentPddBuyer.status != "在线")
{
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError("买手号掉线");
btnBuyOrder.Cursor = Cursors.Hand;
}));
return;
}
}
// 打开拍单窗口
Dispatcher.Invoke(new Action(async () =>
{
var BuyPlatform = "pdd";
bool IsBuySuccess = false;
btnBuyOrder.Cursor = Cursors.Hand;
// 拼多多买手
if (GlobalConfig.CurrentBuyPlatform == "pdd")
{
BuyPlatform = "pdd";
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance,
orderItem, GlobalConfig.CurrentPddBuyer, orderItem.PddBuyMap);
buyOrderForm.TitleText = "买手直发拍单 - 当前买手 " + GlobalConfig.CurrentPddBuyer.buyer_nick;
buyOrderForm.BuyType = "direct";
// 未关联拍单的跳到所有订单页面
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/orders.html";
//https://mobile.yangkeduo.com/order.html?order_sn=260729-663591339661688
if (orderItem.ItemTransitOrderWithVoid != null)
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/order.html?order_sn=" + orderItem.ItemTransitOrderWithVoid.out_order_no;
buyOrderForm.pnlBuy.Visible = false;
// 已有拍单关联的跳的到订单确认界面
if (orderItem.PddBuyMap != null)
{
buyOrderForm.ShowBuyMask = true;
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/order_checkout.html?sku_id=" + orderItem.PddBuyMap.map_sku_id +
"&group_id=1" + Randomx.GetNumber(11) + "&goods_id=" + orderItem.PddBuyMap.map_goods_id + "&goods_number=" + orderItem.sku_cnt +
"&page_from=101";
buyOrderForm.pnlBuy.Visible = true;
buyOrderForm.pnlMap.Visible = false;
}
buyOrderForm.ShowDialog();
IsBuySuccess = buyOrderForm.IsBuySuccess;
}
else if (GlobalConfig.CurrentBuyPlatform == "tb")
{
BuyPlatform = "tb";
TaobaoBuyOrderCtrl taobaoBuyView = new TaobaoBuyOrderCtrl(GlobalConfig.CurrentTaobaoBuyer, orderItem);
if (orderItem.TbBuyMap != null)
{
taobaoBuyView.ViewModel.InitUrl = "https://i.taobao.com/my_itaobao/receiver-address-pc";
taobaoBuyView.ViewModel.InitUrl = "https://item.taobao.com/item.htm?id=" + orderItem.TbBuyMap.map_goods_id + "&skuId=" + orderItem.TbBuyMap.map_sku_id;
}
else
{
taobaoBuyView.ViewModel.InitUrl = "https://s.taobao.com/search?";
taobaoBuyView.ViewModel.IsMappingGoods = true;
}
taobaoBuyView.ViewModel.BuyType = "direct";
new DialogWindow()
{
Title = "买手拍单 - 当前买手 " + GlobalConfig.CurrentTaobaoBuyer.buyer_nick,
Content = taobaoBuyView,
Width = SystemParameters.PrimaryScreenWidth < 1920 ? SystemParameters.PrimaryScreenWidth : SystemParameters.PrimaryScreenWidth * 90 / 100,
Height = SystemParameters.PrimaryScreenHeight * 90 / 100,
WindowStartupLocation = WindowStartupLocation.CenterScreen,
}.ShowDialog();
IsBuySuccess = taobaoBuyView.ViewModel.IsBuySuccess;
}
if (IsBuySuccess)
{
if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill == true && BuyPlatform == "pdd")
{
// 设置同步物流单代发
//var rst = new WxApiBLL().GetShopSupplier(orderItem.Shop);
//if (!rst.Contains("wx7809625286c28f2f") && !rst.Contains("百川日用"))
//{
// rst = new WxApiBLL().SetShopSupplier(orderItem.Shop, "wx7809625286c28f2f", "4431685489938137094");
// if (!rst.Contains("\"errcode\":0"))
// {
// BaseMsgWindow.ShowAnimateMessage("绑定同步单发货失败", "Error", 5);
// return;
// }
//}
try
{
// 查询拼多都直拍单是否绑定了同步单代发(放到同步单发货前处理)
await SetSendOrderSupplier(orderItem, "wx7809625286c28f2f", "百川日用");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
return;
}
}
else
{
// 查询订单是否在代发货中,如果代发需要取消代发
try
{
// 查询淘宝直拍单是否绑定了同步单代发(放到同步单发货前处理)
await SetSendOrderSupplier(orderItem, "", "");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
return;
}
}
}
}));
});
}
static bool CheckIsRefund(oms_wei_order_item_info orderItem)
{
if (/*orderItem?.ItemRefund?.count > 0 &&*/ orderItem.refund_status > 1)
{
MainWindow.Instance.Dispatcher.Invoke(new Action(() =>
{
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString());
if (shop != null)
{
WXShopLoginForm shopLoginForm = new WXShopLoginForm(shop);
shopLoginForm.openType = Work._29Tools.Forms.ShopForms.EnumOpenType.manage;
shopLoginForm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
shopLoginForm.InitUrl = "https://store.weixin.qq.com/shop/aftersale/detail?orderid=" + orderItem.ItemRefund.after_sale_order_id;
shopLoginForm.Show();
}
else
{
BaseMsgWindow.ShowError("订单有售后,请去店铺后台退款");
}
}));
return true;
}
return false;
}
private void PathCopyDirectBuyerOrderNo_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject((order_item.ItemOrder?.out_order_no).ParseToString());
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void pathCopyProdName_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
}
private void pathCopyRefundAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject(order_item.RefundAddressStr.ParseToString());
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void btnReturnOrder_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
//if (sender == btnRetrunOrder && (orderItem.AddEditTransitWarehouseReturnOrderStr == "未创建" || orderItem.AddEditTransitWarehouseReturnOrderStr == "创建失败"))
// return;
//if (orderItem.ItemTransitOrder?.warehouse_status != 2 && orderItem.AddEditTransitWarehouseAfterSaleStr == "添加")
//{
// BaseMsgWindow.ShowError("商品未出库,请选择中转仓拒收!");
// return;
//}
if (TransitReturnOrderWindow.instance != null)
TransitReturnOrderWindow.instance.Close();
TransitReturnOrderWindow.instance = new TransitReturnOrderWindow(orderItem);
TransitReturnOrderWindow.instance.Show();
}
}
private void btn_ShipGiftCommand(object sender, RoutedEventArgs e)
{
btnShipGift.IsEnabled = false;
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
return;
GiftType giftType = GiftType._160;
if (MainWindow.Instance.orderListCtrl.cb_gift.SelectedIndex == 0)
{
giftType = GiftType._155;
}
else
{
giftType = GiftType._160;
}
Task.Run(async () =>
{
try
{
var rst = await WxApiBLL.WxSearchAndDropshipCancelAsync(orderItem.Shop, orderItem.ItemOrder);
if (rst == "success")
{
var ret = await MainWindow.Instance.orderListCtrl._shipGiftService.Send(orderItem.order_id, giftType);
if (ret)
{
Application.Current.Dispatcher.Invoke(() =>
{
orderItem.ItemOrder.gift_order_status = 1;
OrderListCtrl.InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.ItemOrder, true);
});
}
}
}
catch (Exception ex)
{
Application.Current.Dispatcher.Invoke(() =>
{
BaseMsgWindow.ShowError("礼品单发货失败\n" + ex.Message ?? "未知错误", "Error");
});
}
finally
{
btnShipGift.IsEnabled = true;
}
});
}
private async void btnPddRefundTransitWarehouseRejectOrder_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem && orderItem.ItemTransitOrderWithVoid != null && orderItem.ItemOrder != null)
{
await PddRefundTransitRejectOrder(orderItem);
// 赋值显示订单元素
Dispatcher.Invoke(new Action(() =>
{
OrderListCtrl.InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.ItemOrder);
}));
}
}
public static async Task PddRefundTransitRejectOrder(oms_wei_order_item_info orderItem)
{
var pddOrderSn = orderItem.ItemTransitOrderWithVoid?.out_order_no;
if (string.IsNullOrEmpty(pddOrderSn))
return;
BuyerLoginInfo buyer = null;
buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_nick == orderItem.ItemTransitOrderWithVoid.buyer_account);
if (buyer == null)
{
return;
}
// 检测一下买手号
if (buyer.status == "在线")
{
PddMobileLoginViewModel.CheckBuyerLogin(buyer);
}
if (buyer.status != "在线")
{
BaseMsgWindow.ShowAnimateMessage("买手单:" + pddOrderSn + " 买手号掉线,跳过", "Error", 5);
return;
}
// 拒收一定是云仓
string refundStatusStr = (orderItem.TransitRefundStatusStr).ParseToString();
PddBuyerOrderLiteInfo pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo();
pddBuyerOrderLiteInfo.ShopOrderIdStr = orderItem.order_id;
pddBuyerOrderLiteInfo.order_sn = pddOrderSn;
pddBuyerOrderLiteInfo.order_amount = orderItem.ItemTransitOrderWithVoid?.out_amount;
order_pdd_buyer_after_sale pddBuyerAfterSale = new order_pdd_buyer_after_sale()
{
wx_order_id = orderItem.order_id,
wx_sku_id = orderItem.sku_id,
TransitCreateTime = orderItem.ItemTransitOrderWithVoid?.created_time == null ? DateTime.MinValue : orderItem.ItemTransitOrderWithVoid.created_time,
pre_allocated_order_no = orderItem.ItemTransitOrderWithVoid?.pre_allocated_order_no,
buyerId = buyer.buyer_id,
buyerName = buyer.buyer_name,
orderSn = pddOrderSn,
orderAmount = pddBuyerOrderLiteInfo.order_amount,
refundAmount = pddBuyerOrderLiteInfo.order_amount,
orderDate = pddOrderSn.ParseToString().Split('-').FirstOrDefault().ParseToInt(),
};
if (orderItem.PddBuyerAfterSale != null)
pddBuyerAfterSale = orderItem.PddBuyerAfterSale;
if (refundStatusStr.Contains("需手动申请售后")) // 退款失败 // 申请已撤销
{
await Task.Run(() =>
{
// {\"after_sales_id\":22312641041100,\"after_sales_status\":11,\"after_sales_type\":2,\"not_really_created\":true}
string rst = "";
rst = PDDBuyerOrderReadCtrl.SimPddAfterSaleWithRejected(buyer, pddBuyerOrderLiteInfo, pddBuyerAfterSale);
var afterSalesStatus = BaseRegex.GetIntJson(ref rst, "after_sales_status");
var afterSalesId = BaseRegex.GetLongJson(ref rst, "after_sales_id");
if (afterSalesId.IsNullOrZero())
return;
pddBuyerAfterSale.afterSalesId = afterSalesId.ToString();
// 更新内存数据 ----------------------------------------------------------------
pddBuyerAfterSale.statusText = "商家处理中";
orderItem.ItemTransitOrderWithVoid.refund_status = "商家处理中";
// --------------------------------------------------------------------------//
if (afterSalesStatus == 0)
{
var msg = BaseRegex.GetStringJsonByRegs(ref rst, rst, "msg", "err_msg", "error_msg", "errorMsg", "errMsg");
BaseMsgWindow.ShowAnimateMessage(msg, "Error", 5);
Thread.Sleep(5000);
if (msg == "已超过可申请售后的时间")
{
var e57Rst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(pddBuyerOrderLiteInfo, "已超过可申请售后的时间");
if (e57Rst.Contains("<code>0</code>") || e57Rst.Contains("<code>200</code>"))
{
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 3);
Thread.Sleep(Randomx.GetId(10000, 12001));
}
else
{
msg = BaseRegex.GetStringXml(ref e57Rst, "msg");
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 3);
}
}
}
else
{
var e57Rst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(pddBuyerOrderLiteInfo, "商家处理中");
if (e57Rst.Contains("<code>0</code>") || e57Rst.Contains("<code>200</code>"))
{
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功" + orderItem.order_id, "Msg", 3);
Thread.Sleep(Randomx.GetId(2000, 5001));
}
else
{
var msg = BaseRegex.GetStringXml(ref e57Rst, "msg");
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 3);
}
}
});
}
}
private void btnOptimizeProduct_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
WXOrderListOptimizeForm form = new WXOrderListOptimizeForm(orderItem.Shop);
form.lblOrderId.Text = orderItem.order_id;
form.lblSpuId.Text = orderItem.product_id;
form.lblSkuId.Text = orderItem.sku_id; // skuId
form.txtGoodsName.Text = orderItem.title; // 商品名称
form.txtSkuName.Text = orderItem.sku_attr_str; // sku规格名称
form.txtOrderPrice.Text = "" + (orderItem.real_price.ParseToInt() / 100m / orderItem.sku_cnt); // 订单价格
//form.txtCurrentPrice.Text = row.Cells["colCurrentPrice"].Value.ParseToString(); // 当前商品价格
//form.txtCurrentStock.Text = row.Cells["colCurrentStock"].Value.ParseToString(); // 当前库存;
form.numAddPrice.Value = 0;
form.ShowDialog();
}
}
private void btnMapSkus_Click(object sender, RoutedEventArgs e)
{
if (DataContext is oms_wei_order_item_info orderItem)
{
BuyMapSkuSelectWindow window = new BuyMapSkuSelectWindow(orderItem);
window.Show();
}
}
private void btnChangeWaybill_Click(object sender, RoutedEventArgs e)
{
if (DataContext is oms_wei_order_item_info orderItem && orderItem.ItemOrder != null)
{
ChangeWaybillView changeWaybillView = new ChangeWaybillView(orderItem);
new DialogWindow()
{
Title = "修改订单物流",
Content = changeWaybillView,
}.ShowDialog();
}
}
private async void btnGetTransitWaybillDetail_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem && GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString()) is ShopLoginInfo shop)
{
//var url = BaseClass.Build29WxObjString("order/wx_get_erp_ewaybill_path_list");
////var url = BaseClass.Build29WxObjString("order/wx_get_erp_ewaybill_path_latest_list");
//var data = UserLogin.GetSignaturex();
////data += "&erp_order_id_in=" + orderItem.order_id;
//data += "&waybill_id_in=" + orderItem.ItemTransitOrderWithVoid.express_2_waybill;
//var html = GetHtml.PostUtf8(url, data);
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
// html = GetHtml.PostUtf8(url, data);
//if (!html.Contains("\"code\":200"))
//{
// BaseMsgForm.ShowError("查询失败请重试");
// return;
//}
var order = orderItem.ItemOrder;
var waybillId = orderItem.ItemTransitOrderWithVoid.express_2_waybill;
var expressName = orderItem.ItemTransitOrderWithVoid.express_2_company;
EWaybillPathView WaybillPathView = new EWaybillPathView(order, waybillId, expressName);
new DialogWindow()
{
Title = "订单 " + orderItem.order_id + " 物流明细",
Content = WaybillPathView,
}.ShowDialog();
}
}
private void btnGetDirectWaybillDetail_Click(object sender, RoutedEventArgs e)
{
}
private void btnGetSyncWaybillDetail_Click(object sender, RoutedEventArgs e)
{
}
private void btnTransitExtraPackages_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
// 不是中转仓,直接返回
var transitOrder = orderItem.ItemTransitOrder ?? orderItem.ItemTransitOrderWithVoid;
if (transitOrder == null)
{
BaseMsgWindow.ShowError("非中转仓订单不支持补发!");
return;
}
// string msg = $@"
//         滞留补发买家
//说  明:总店未在90小时到仓导致快递停滞退回, 货物
//     滞留云仓,可用补发继续发给买家。
//收  费:(与云仓发货价格一样)";
// if (BaseMsgWindow.ShowConfirm(msg, "滞留补发买家", null, MsgWindowLevel.LARGE, 300).DialogResult != true)
// return;
// string basePostageKey = WarehousePostageInfo.DicWarehousePostage.Keys.FirstOrDefault(pk => (orderItem.ItemOrder?.province_name).ParseToString().Contains(pk));
// decimal basePostage = basePostageKey.IsNullOrEmpty() ? WarehousePostageInfo.DicWarehousePostage.Values.Min() : WarehousePostageInfo.DicWarehousePostage[basePostageKey];
// JObject body = new JObject();
// body["oemAmount"] = (BaseClass.PostagePerOrderDiff * 100).ParseToInt().ParseToString();
// body["postage"] = ((basePostage + BaseClass.PostagePerOrderDiff) * 100).ParseToInt().ParseToString();
// body["packType"] = "2";
// body["batchId"] = orderItem.order_id + "-" + DateTime.Now.ToString("yyMMddHHmmss");
// body["orderNo"] = orderItem.order_id;
// body["orderCode"] = transitOrder.order_code;
// body["logisticsCode"] = transitOrder.express_2_company;
// body["logisticsExpressCode"] = transitOrder.express_2_waybill;
// body["accountUser"] = BaseClass.UserName;
// body["purchaserNote"] = "测试订单13017678999";//采购人备注
// body["orderPlatformCode"] = "WEISHOP";
TransitExtraPackagesView transitExtraPackagesView = new TransitExtraPackagesView(orderItem.ItemOrder, orderItem);
new DialogWindow()
{
Title = "滞留补发买家",
Content = transitExtraPackagesView,
}.ShowDialog();
}
}
private async void btnVoidTransitExtraOrder_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem && orderItem.ItemTransitExtraOrder.order_void_status != 1)
{
if (BaseMsgWindow.ShowConfirm("确定作废滞留补发包裹?").DialogResult != true)
return;
var data = new JObject();
data["batchId"] = orderItem.ItemTransitExtraOrder.batchId;
data["orderCode"] = orderItem.ItemTransitExtraOrder.order_code;
var dataStr = JsonHelper.SerializeObject(data);
var url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/extraOrders/void";
var rst = HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
if (BaseRegex.GetStringXml(ref rst, "code") != "0" && BaseRegex.GetStringXml(ref rst, "code") != "200")
{
BaseMsgWindow.ShowError(BaseRegex.GetStringXml(ref rst, "msg"));
return;
}
await Task.Run(() =>
{
StartUp.UpdateBalance();
});
orderItem.ItemTransitExtraOrder.order_void_status = 1;
orderItem.SetOrderItemTextProperty();
MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.order_id);
}
}
private void btnTrySendSyncOrder_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem && orderItem.ItemOrder != null && sender is Button btnSendSync /*&& !btnSendSync.Tag.ParseToString().IsNullOrEmpty()*/)
{
//var orderSn = btnSendSync.Tag.ParseToString();
var directOrder = orderItem.DirectPddBuyerOrder;
if (directOrder.order_sn.StartsWith("tb_"))
{
BaseMsgWindow.ShowInfo("淘宝买手单暂不支持同步单");
return;
}
PddBuyerOrderLiteInfo orderLiteInfo = new PddBuyerOrderLiteInfo()
{
ShopOrderIdStr = orderItem.order_id,
WxOrderStatus = orderItem.ItemOrder.status,
order_sn = directOrder.order_sn,
outExpressCompanyMsg = directOrder.outExpressCompanyCode,
tracking_number = directOrder.tracking_number,
};
// 同步单发货
MainWindow.Instance.pddBuyerOrderReadCtrl.SendAsyncWaybillOrder(orderLiteInfo, true);
}
}
private void btnEditPickNo_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
ChangePickNoView changeWaybillView = new ChangePickNoView(orderItem);
new DialogWindow()
{
Title = "填写取件码",
Content = changeWaybillView,
}.ShowDialog();
}
}
}
}