234 lines
7.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|