Files
29WxOrder/29WxOrderWpf/Ctrls/OrderCtrls/OrderTransitListDetailCtrl.xaml.cs
T

234 lines
7.3 KiB
C#

using _29WxOrderWpf.BaseWindows;
using AllBase;
using AllBase.Helper;
using AllBase.Model.DBModel;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Work;
using Work._29Tools.BLL;
namespace _29WxOrderWpf.Ctrls.OrderCtrls;
/// <summary>
/// OrderTransitListDetailCtrl.xaml 的交互逻辑
/// </summary>
public partial class OrderTransitListDetailCtrl : UserControl
{
public OrderTransitListDetailCtrl()
{
InitializeComponent();
}
/// <summary> 作废包裹 </summary>
private async void btnVoidPackage_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_transit_detail_info transitDetailInfo)
{
btnVoidPackage.IsEnabled = false;
var orderItem = transitDetailInfo.oms_wei_order_item_info;
var transitOrder = transitDetailInfo.oms_wei_external_procurement_log_info;
var returnOrder = transitDetailInfo.oms_wei_external_procurement_after_sale_info;
var extOrder = transitDetailInfo.oms_wei_transfer_extra_package;
// 作废发货包裹
if (transitOrder != null)
{
transitOrder = orderItem.ItemTransitOrders.FirstOrDefault(t => t.order_code == transitOrder.order_code) ?? transitOrder;
await OrderListRowItemCtrl.VoidOrder(orderItem, transitOrder);
}
// 作废退货包裹
else if (returnOrder != null)
{
try
{
var voidResult = await VoidAfterSalePackage(orderItem, returnOrder);
if (!string.IsNullOrEmpty(voidResult))
BaseMsgWindow.ShowInfo(voidResult);
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
// 作废额外包裹
else if (extOrder != null)
{
try
{
var voidResult = await VoidExtraPackage(orderItem, extOrder);
if (!string.IsNullOrEmpty(voidResult))
BaseMsgWindow.ShowInfo(voidResult);
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
RefreshListCtrl(orderItem);
btnVoidPackage.IsEnabled = true;
}
}
/// <summary>
/// 作废售后包裹
/// </summary>
/// <param name="returnOrder"></param>
/// <returns></returns>
public static async Task<string> VoidAfterSalePackage(oms_wei_order_item_info orderItem, oms_wei_external_procurement_after_sale_info returnOrder)
{
string typeStr = returnOrder?.pack_type == 1 ? "作废分销发货退货包裹" : "作废额外包裹退货包裹";
string msg = $@"确定{typeStr}吗?";
if (BaseMsgWindow.ShowConfirm(msg, typeStr, null, MsgWindowLevel.MEDIUM, 300).DialogResult != true)
return "";
string url2 = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/orders/interceptReturn";
var data = new JObject();
data["externalOrderNo"] = returnOrder.external_order_no;
data["orderNo"] = returnOrder.order_no; // 订单编号
data["orderCode"] = returnOrder.order_code;
data["packType"] = returnOrder.pack_type; /* 1作废分销发货退货包裹 2作废额外包裹退货包裹 */
var dataStr2 = JsonHelper.SerializeObject(data);
var voidRst = await HttpResponseWXBLL.e57PostResponseAsync(url2, dataStr2);
if (voidRst.Contains("\"code\":0") || voidRst.Contains("\"code\":200"))
{
StartUp.UpdateBalance();
returnOrder.order_void_status = 1;
orderItem.SetOrderItemTextProperty();
return typeStr + "成功!";
}
else
{
throw new Exception(typeStr + "失败,服务端返回:" + BaseRegex.GetStringJsonByRegs(ref voidRst, voidRst, "msg"));
}
}
/// <summary>
/// 作废额外包裹
/// </summary>
/// <param name="orderItem"></param>
/// <param name="extraOrder"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public static async Task<string> VoidExtraPackage(oms_wei_order_item_info orderItem, oms_wei_transfer_extra_package extraOrder)
{
string typeStr = "作废额外包裹";
string msg = $@"确定{typeStr}吗?";
if (BaseMsgWindow.ShowConfirm(msg, typeStr, null, MsgWindowLevel.MEDIUM, 300).DialogResult != true)
return "";
var data = new JObject();
data["batchId"] = extraOrder.batchId;
data["orderCode"] = extraOrder.order_code;
var dataStr = JsonHelper.SerializeObject(data);
var url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/extraOrders/void";
var voidRst = await HttpResponseWXBLL.e57PostResponseAsync(url, dataStr);
if (BaseRegex.GetStringJson(ref voidRst, "code") != "0" && BaseRegex.GetStringJson(ref voidRst, "code") != "200")
{
throw new Exception("作废额外包裹失败,服务端返回:" + BaseRegex.GetStringJsonByRegs(ref voidRst, voidRst, "msg"));
}
StartUp.UpdateBalance();
extraOrder.order_void_status = 1;
orderItem.SetOrderItemTextProperty();
//MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.order_id);
return "作废额外包裹成功!";
}
/// <summary> 拒收包裹 </summary>
private async void btnAddEditTransitWarehouseReject_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_transit_detail_info transitDetailInfo)
{
var orderItem = transitDetailInfo.oms_wei_order_item_info;
var transitOrder = transitDetailInfo.oms_wei_external_procurement_log_info;
var returnOrder = transitDetailInfo.oms_wei_external_procurement_after_sale_info;
var extOrder = transitDetailInfo.oms_wei_transfer_extra_package;
// 拒收发货包裹
if (transitOrder != null)
{
try
{
var rejectRst = await OrderListRowItemCtrl.RejectTransitOrder(orderItem, transitOrder);
if (!string.IsNullOrEmpty(rejectRst))
BaseMsgWindow.ShowInfo(rejectRst);
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
// 拒收额外包裹(额外包裹暂不支持多件商品发货,故暂不存在拒收功能)
else if (extOrder != null)
{
}
RefreshListCtrl(orderItem);
}
}
private void btnAddEditTransitWarehouseAfterSale_Click(object sender, RoutedEventArgs e)
{
}
private void btnTransitExtraPackages_Click(object sender, RoutedEventArgs e)
{
}
public void RefreshListCtrl(oms_wei_order_item_info orderItem)
{
// 更新列表
if (FindParent<OrderTransitListCtrl>(this) is OrderTransitListCtrl transitListCtrl)
{
oms_wei_order_item_transit_info transitInfo = new oms_wei_order_item_transit_info()
{
OrderItem = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == orderItem?.order_id)?.orderItems.FirstOrDefault(oi => oi.sku_id == orderItem?.sku_id),
};
transitListCtrl.UpdateViewModel(transitInfo);
}
}
/// <summary>
/// 查找指定类型的父级控件
/// </summary>
/// <typeparam name="T">目标父控件类型</typeparam>
/// <param name="child">起始子控件</param>
/// <returns>找到的父控件,未找到则返回 null</returns>
public static T FindParent<T>(DependencyObject child) where T : DependencyObject
{
DependencyObject parentObject = VisualTreeHelper.GetParent(child);
if (parentObject == null) return null;
if (parentObject is T parent)
{
return parent;
}
else
{
// 递归继续向上查找
return FindParent<T>(parentObject);
}
}
}