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

247 lines
7.6 KiB
C#

using _29WxOrderWpf.BaseWindows;
using _29WxOrderWpf.Views;
using AllBase;
using AllBase.Helper;
using AllBase.Model.DBModel;
using NaiBa.Util.Extension;
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;
using WxOrder.Framework.Commons;
namespace _29WxOrderWpf.Ctrls.OrderCtrls;
/// <summary>
/// OrderTransitListDetailCtrl.xaml 的交互逻辑
/// </summary>
public partial class OrderTransitListDetailCtrl : UserControl
{
public OrderTransitListDetailCtrl()
{
InitializeComponent();
this.txtOutOrderId.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtOutOrderId_MouseLeftButtonUp), true);
this.txtOutOrderBuyer.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtOutOrderId_MouseLeftButtonUp), true);
}
/// <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 OrderTransitService.VoidOrder(orderItem, transitOrder);
}
// 作废退货包裹
else if (returnOrder != null)
{
try
{
var voidResult = await OrderTransitService.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 OrderTransitService.VoidExtraPackage(orderItem, extOrder);
if (!string.IsNullOrEmpty(voidResult))
BaseMsgWindow.ShowInfo(voidResult);
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
RefreshListCtrl(orderItem);
btnVoidPackage.IsEnabled = true;
}
}
/// <summary> 拒收包裹 </summary>
private async void btnAddEditTransitWarehouseReject_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_transit_detail_info transitDetailInfo)
{
btnAddEditTransitWarehouseReject_New.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)
{
try
{
var rejectRst = await OrderTransitService.RejectTransitOrder(orderItem, transitOrder);
if (!string.IsNullOrEmpty(rejectRst))
BaseMsgWindow.ShowInfo(rejectRst);
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
// 拒收额外包裹(额外包裹暂不支持多件商品发货,故暂不存在拒收功能)
else if (extOrder != null)
{
}
RefreshListCtrl(orderItem);
btnAddEditTransitWarehouseReject_New.IsEnabled = true;
}
}
private void btnAddEditTransitWarehouseAfterSale_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_transit_detail_info transitDetailInfo)
{
btnAddEditTransitWarehouseAfterSale_n1.IsEnabled = false;
btnAddEditTransitWarehouseAfterSale_n2.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)
{
bool isOutWarehouse = sender == btnAddEditTransitWarehouseAfterSale_n2;
OrderListRowItemCtrl.ShowReturnPackageWindow(orderItem, transitDetailInfo, isOutWarehouse);
}
else if (extOrder != null)
{
bool isOutWarehouse = sender == btnAddEditTransitWarehouseAfterSale_n2;
OrderListRowItemCtrl.ShowReturnPackageWindow(orderItem, transitDetailInfo, isOutWarehouse);
}
RefreshListCtrl(orderItem);
btnAddEditTransitWarehouseAfterSale_n1.IsEnabled = true;
btnAddEditTransitWarehouseAfterSale_n2.IsEnabled = true;
}
}
private void btnTransitExtraPackages_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)
{
// 不是中转仓,直接返回
if (transitOrder == null)
{
BaseMsgWindow.ShowError("非中转仓订单不支持补发!");
return;
}
TransitExtraPackagesView transitExtraPackagesView = new TransitExtraPackagesView(orderItem.ItemOrder, orderItem, transitOrder);
new DialogWindow()
{
Title = "滞留补发买家",
Content = transitExtraPackagesView,
}.ShowDialog();
}
RefreshListCtrl(orderItem);
}
}
public void RefreshListCtrl(oms_wei_order_item_info orderItem)
{
// 更新列表
if (FindParent<OrderTransitListCtrl>(this) is OrderTransitListCtrl transitListCtrl)
{
oms_wei_order_item_transit_model transitInfo = new oms_wei_order_item_transit_model()
{
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);
}
}
private void txtOutOrderId_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_transit_detail_info transitDetailInfo && transitDetailInfo.oms_wei_order_item_info is oms_wei_order_item_info orderItem)
{
var buyerId = txtOutOrderBuyer.Tag as string;
var buyerName = txtOutOrderBuyer.Text;
var outOrderId = txtOutOrderId.Text;
if (string.IsNullOrEmpty(buyerName) || string.IsNullOrEmpty(outOrderId))
{
return;
}
bool isShowOrderList = sender == txtOutOrderBuyer;
OrderBuyerOrdersHelper.ShowBuyerOrder(orderItem, buyerId, buyerName, outOrderId, isShowOrderList);
}
}
}