优化中转仓处理拍单流程 隐藏部分不可用功能

This commit is contained in:
wule committed 2026-11-06 16:11:23 +08:00
1 parent 27ac748f33
commit 518365a0d3
30 files changed
+1237 -634

No files matched your search

@@ -1399,7 +1399,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
if (!lstPddBuyerOrderVoidAfterSaleOrderSn.Contains(orderItem.order_id + orderItem.sku_id))
{
lstPddBuyerOrderVoidAfterSaleOrderSn.Add(orderItem.order_id + orderItem.sku_id);
await OrderListRowItemCtrl.VoidOrder(orderItem, null, true);
await OrderTransitService.VoidOrder(orderItem, null, true);
}
}
}
@@ -209,7 +209,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
foreach (var orderItem in order.orderItems)
{
orderItem.UpdateOrderItemBuyButton();
orderItem.SetAbnormalAndDirectBtnVisibility();
}
}
}
@@ -224,7 +223,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
foreach (var orderItem in order.orderItems)
{
orderItem.UpdateOrderItemBuyButton();
orderItem.SetAbnormalAndDirectBtnVisibility();
}
}
}
@@ -1340,7 +1340,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
if (!lstPddBuyerOrderVoidAfterSaleOrderSn.Contains(orderItem.order_id + orderItem.sku_id))
{
lstPddBuyerOrderVoidAfterSaleOrderSn.Add(orderItem.order_id + orderItem.sku_id);
await OrderListRowItemCtrl.VoidOrder(orderItem, null, true);
await OrderTransitService.VoidOrder(orderItem, null, true);
}
}
}
@@ -626,11 +626,11 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
var pddFrontSkuInfo = new frontSkuInfo3()
{
skuId = key.ParseToLong(),
skuID = key.ParseToLong(),
//skuID = key.ParseToLong(),
goodsId = pddFrontGoods3.goodsId,
thumbUrl = thumbUrl,
quantity = tbSku2.quantity,
isOnsale = 1,
//quantity = tbSku2.quantity,
//isOnsale = 1,
spec = taobaoSku?.propPath, // 淘宝格式与拼多多存在差异,包含冒号与父类型id
specs = pddSpecs,
price = tbSku2.price.priceMoney.ParseToInt() + 100,
@@ -732,7 +732,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
var goods = JsonHelper.DeserializeJsonToObject<pddFrontGoods3Lite>(skuInfo.map_skus);
if (goods == null)
return;
var sku = goods.skus.FirstOrDefault(s => s.skuID.ParseToString() == info.map_sku_id);
var sku = goods.skus.FirstOrDefault(s => s.skuId.ParseToString() == info.map_sku_id);
if (sku == null)
return;
@@ -763,7 +763,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
var goods = JsonHelper.DeserializeJsonToObject<pddFrontGoods3Lite>(skuInfo.map_skus);
if (goods == null)
return;
var sku = goods.skus.FirstOrDefault(s => s.skuID.ParseToString() == info.map_sku_id);
var sku = goods.skus.FirstOrDefault(s => s.skuId.ParseToString() == info.map_sku_id);
if (sku == null)
return;
@@ -1151,7 +1151,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
order_no = orderItem.order_id,
order_sku_id = orderItem.sku_id,
out_amount = (txtBuyPriceVal.ParseToDecimal() * 100).ParseToInt(),
out_order_no = "tb_" + txtBuyOrderIdVal.Trim(),
out_order_no = txtBuyOrderIdVal.Trim(),
order_code = txtBuyOrderIdVal.Trim(),
purchaser_note = body["purchaserNote"].ParseToString(),
created_time = DateTime.Now,
});
@@ -1334,11 +1334,11 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
var pddFrontSkuInfo = new frontSkuInfo3()
{
skuId = key.ParseToLong(),
skuID = key.ParseToLong(),
//skuID = key.ParseToLong(),
goodsId = pddFrontGoods3.goodsId,
thumbUrl = thumbUrl,
quantity = tbSku2.quantity,
isOnsale = 1,
//quantity = tbSku2.quantity,
//isOnsale = 1,
spec = taobaoSku?.propPath, // 淘宝格式与拼多多存在差异,包含冒号与父类型id
specs = pddSpecs,
price = tbSku2.price?.priceMoney.ParseToInt() + 100,
@@ -1440,7 +1440,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
var goods = JsonHelper.DeserializeJsonToObject<pddFrontGoods3Lite>(skuInfo.map_skus);
if (goods == null)
return;
var sku = goods.skus.FirstOrDefault(s => s.skuID.ParseToString() == info.map_sku_id);
var sku = goods.skus.FirstOrDefault(s => s.skuId.ParseToString() == info.map_sku_id);
if (sku == null)
return;
@@ -1471,7 +1471,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
var goods = JsonHelper.DeserializeJsonToObject<pddFrontGoods3Lite>(skuInfo.map_skus);
if (goods == null)
return;
var sku = goods.skus.FirstOrDefault(s => s.skuID.ParseToString() == info.map_sku_id);
var sku = goods.skus.FirstOrDefault(s => s.skuId.ParseToString() == info.map_sku_id);
if (sku == null)
return;
@@ -1543,7 +1543,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
}
else
{
return "获取失败,请关闭拍单窗口重试 " + BaseRegex.GetStringXml(ref sourceCodeRst, "msg", sourceCodeRst);
return "溯源码获取失败,请关闭拍单窗口重试 " + BaseRegex.GetStringXml(ref sourceCodeRst, "msg", sourceCodeRst);
}
}
@@ -1866,6 +1866,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
order_sku_id = orderItem.sku_id,
out_amount = (txtBuyPriceVal.ParseToDecimal() * 100).ParseToInt(),
out_order_no = "tb_" + txtBuyOrderIdVal.Trim(),
order_code = "tb_" + txtBuyOrderIdVal.Trim(),
purchaser_note = body["purchaserNote"].ParseToString(),
created_time = DateTime.Now,
});
@@ -1356,7 +1356,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
if (!lstTbBuyerOrderVoidAfterSaleOrderSn.Contains(orderItem.order_id + orderItem.sku_id))
{
lstTbBuyerOrderVoidAfterSaleOrderSn.Add(orderItem.order_id + orderItem.sku_id);
await OrderListRowItemCtrl.VoidOrder(orderItem, null, true);
await OrderTransitService.VoidOrder(orderItem, null, true);
}
}
}
@@ -269,11 +269,14 @@
Margin="2,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
d:Opacity="0.5"
d:Visibility="Visible"
BorderBrush="{StaticResource mainColorBrush}"
Click="chkSyncDirectOrderWaybill_Click"
Content="同步物流单"
FontSize="12"
IsChecked="False" />
IsChecked="False"
Visibility="Collapsed" />
</WrapPanel>
<wpf:SpacingStackPanel Grid.Column="13" HorizontalSpacing="5">
@@ -483,8 +483,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
pddBuyerAfterSales.AddRange(GetTbBuyerAfterSales(order_ids));
// 同步单
var buyerIds = string.Join(",", pddBuyerOrders.Select(o => o.order_sn));
var syncLogistics = GetSyncLogistics(buyerIds);
var buyerOrderIds = string.Join(",", pddBuyerOrders.Select(o => o.order_sn));
var syncLogistics = GetSyncLogistics(buyerOrderIds);
// 读取关联拍单商品
var buyMapList = GetBuyProdMap(orderItems);
@@ -1057,7 +1057,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
var urlMap = BaseClass.Build29WxObjString("order/wx_get_buy_prod_map");
var dataMap = UserLogin.GetSignaturex()
+ "&spu_codes=" + string.Join(",", orderItems.Select(oi => GetHtml.UrlEncodeUtf8(oi.out_product_id))) + "," + string.Join(",", orderItems.Select(oi => oi.product_id));
+ "&spu_codes=" + string.Join(",", orderItems.Select(oi => GetHtml.UrlEncodeUtf8(oi.out_product_id)).Distinct()) + "," +
string.Join(",", orderItems.Select(oi => oi.product_id).Distinct());
dataMap += "&main_user_name=" + BaseClass.MainUserName;
var resultMap = GetHtml.PostUtf8(urlMap, dataMap);
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
@@ -1088,15 +1089,15 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
public static List<WXBuyMapSkusInfo> GetBuyProdMapSkus(List<oms_wei_order_item_info> orderItems)
{
//orderItems.RemoveAll(oi => GlobalConfig.BuyMapSkusList.Any(m => m.spu_code == oi.out_product_id || m.spu_code == oi.product_id));
if (orderItems == null || orderItems.Count == 0)
var ois = orderItems?.Where(oi => !GlobalConfig.BuyMapSkusList.Any(bm => bm.spu_code == oi.out_product_id || bm.spu_code == oi.product_id)).ToList();
if (ois == null || ois.Count == 0)
{
return GlobalConfig.BuyMapSkusList.Where(m => orderItems.Any(oi => m.spu_code == oi.out_product_id || m.spu_code == oi.product_id)).ToList();
}
var url = BaseClass.Build29WxObjString("order/wx_get_buy_pord_map_skus");
var dataMap = UserLogin.GetSignaturex()
+ "&spu_codes=" + string.Join(",", orderItems.Select(oi => GetHtml.UrlEncodeUtf8(oi.out_product_id))) + "," + string.Join(",", orderItems.Select(oi => oi.product_id));
+ "&spu_codes=" + string.Join(",", ois.Select(oi => GetHtml.UrlEncodeUtf8(oi.out_product_id)).Distinct()) + "," + string.Join(",", ois.Select(oi => oi.product_id).Distinct());
dataMap += "&main_user_name=" + BaseClass.MainUserName;
var resultSkusMap = GetHtml.PostUtf8(url, dataMap);
if (string.IsNullOrEmpty(resultSkusMap) || !resultSkusMap.Contains("\"code\":200"))
@@ -2750,7 +2751,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
continue;
}
await Task.Run(() => { MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id); });
await Task.Run(async() => { await MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id); });
oms_wei_order_info order = null;
@@ -2931,7 +2932,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
html3 = await GetHtml.PostUtf8Async(url3, data3);
}
await Task.Run(() => { MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id); });
await Task.Run(async() => { await MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id); });
Dispatcher.Invoke(new Action(() => { BottomMsg = "正在处理买手退货,总计:" + tmpOrderItems.Count + ",已处理:" + index; }));
#endregion
}
@@ -634,8 +634,8 @@
Foreground="{Binding BuyerTransitWaybillStatusStrColor}"
Text="{Binding BuyerTransitWaybillStatusStr}" />
</Border>
<Border
x:Name="borderWarehouseStatas"
<!--<Border
x:Name="borderWarehouseStatus"
Height="auto"
MinWidth="30"
Margin="0,0,4,0"
@@ -647,7 +647,7 @@
BorderThickness="1"
CornerRadius="2"
Cursor="Hand"
MouseUp="borderWarehouseStatas_MouseUp"
MouseUp="borderWarehouseStatus_MouseUp"
Visibility="{Binding WarehouseWaybillStatusStrVisibility}">
<TextBlock
x:Name="txtWarehouseStatus"
@@ -658,8 +658,33 @@
Foreground="{Binding WarehouseWaybillStatusStrColor}"
MouseEnter="txtWarehouseStatus_MouseEnter"
Text="{Binding WarehouseWaybillStatusStr}" />
</Border>
</Border>-->
<Border
x:Name="borderWarehousePackageStatus"
Height="auto"
MinWidth="30"
Margin="0,0,4,0"
HorizontalAlignment="Center"
d:Background="{StaticResource PageOkBrush50}"
d:BorderBrush="{StaticResource PageOkBrush}"
Background="{Binding WarehouseWaybillStatusBackColor}"
BorderBrush="{Binding WarehouseWaybillStatusBorderColor}"
BorderThickness="1"
CornerRadius="2"
Cursor="Hand"
MouseUp="borderWarehouseStatus_MouseUp"
Visibility="{Binding TransitPackageLatestWarehouseStatusStrVisibility}">
<TextBlock
x:Name="txtWarehouseStatus"
MinWidth="20"
VerticalAlignment="Center"
d:Text="包裹状态"
Background="Transparent"
Foreground="{Binding WarehouseWaybillStatusStrColor}"
MouseEnter="txtWarehouseStatus_MouseEnter"
Text="{Binding TransitPackageLatestWarehouseStatusStr}" />
</Border>
<!--<Border
Height="auto"
MinWidth="30"
Margin="0,0,4,0"
@@ -677,6 +702,25 @@
Background="Transparent"
Foreground="White"
Text="{Binding TransitRefundVoidStatusStr}" />
</Border>-->
<Border
Height="auto"
MinWidth="30"
Margin="0,0,4,0"
HorizontalAlignment="Center"
Background="{StaticResource pageColorBrush}"
BorderBrush="{StaticResource pageColorBrush}"
BorderThickness="1"
CornerRadius="2"
Visibility="{Binding TransitPackageLatestVoidStatusStrVisibility}">
<TextBlock
MinWidth="20"
Padding="0"
VerticalAlignment="Center"
d:Text="作废状态"
Background="Transparent"
Foreground="White"
Text="{Binding TransitPackageLatestVoidStatusStr}" />
</Border>
</WrapPanel>
@@ -1399,7 +1443,8 @@
HorizontalAlignment="Center"
Click="btnTransitInfo_Click"
Content="云仓详情"
Style="{StaticResource BasePageButtonLightStyle}" />
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="Collapsed" />
<Button
x:Name="btnMapSkus"
@@ -1463,10 +1508,12 @@
MinWidth="38"
Margin="0,0,0,0"
HorizontalAlignment="Center"
d:Visibility="Visible"
Click="btnDirectBuyOrder_Click"
Content="直发拍单"
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="{Binding BtnDirectBuyOrderVisibility}" />
Visibility="Collapsed" />
<!-- Visibility="{Binding BtnDirectBuyOrderVisibility}" -->
<!-- 礼品发货 -->
<Button
@@ -1486,7 +1533,8 @@
HorizontalAlignment="Right"
VerticalAlignment="Center"
Orientation="Vertical"
VerticalSpacing="3">
VerticalSpacing="5">
<Button
x:Name="btnChangeWaybill"
MinWidth="38"
@@ -1500,7 +1548,8 @@
FontSize="11"
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="{Binding ItemOrder.IsShowChangeWaybillBtn, Converter={StaticResource VisibleToVisibilityConverter}}" />
<Button
<!--<Button
x:Name="btnAddEditTransitWarehouseReject_New"
MinWidth="38"
MinHeight="20"
@@ -1553,7 +1602,75 @@
Content="滞留补发买家"
FontSize="11"
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="{Binding ItemOrder.IsShowTransitExtraPackagesBtn, Converter={StaticResource VisibleToVisibilityConverter}}" />
Visibility="{Binding ItemOrder.IsShowTransitExtraPackagesBtn, Converter={StaticResource VisibleToVisibilityConverter}}" />-->
<Button
x:Name="btnVoidPackage"
MinWidth="38"
MinHeight="20"
Margin="0,0,0,0"
Padding="0"
HorizontalAlignment="Center"
d:Content="作废包裹"
d:Visibility="Visible"
Click="btnVoidTransitOrder_Click"
Content="{Binding VoidPackageTypeStr}"
FontSize="11"
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="{Binding TransitPackageLatest.VoidPackageBtnVisibility}" />
<Button
x:Name="btnAddEditTransitWarehouseReject_New"
MinWidth="38"
MinHeight="20"
Margin="0,0,0,0"
Padding="0"
HorizontalAlignment="Center"
d:Visibility="Visible"
Click="btnAddEditTransitWarehouseReject_Click"
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="{Binding TransitPackageLatest.RejectPackageBtnVisibility}">
<TextBlock>
云仓拒收<LineBreak />
退回总店</TextBlock>
</Button>
<Button
x:Name="btnAddEditTransitWarehouseAfterSale_n1"
MinWidth="38"
MinHeight="20"
Margin="0,0,0,0"
Padding="0"
Click="btnAddEditTransitWarehouseAfterSale_Click"
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="{Binding TransitPackageLatest.ReturnPackageBtnVisibility}">
<TextBlock>
拒收失败<LineBreak />
转寄总店</TextBlock>
</Button>
<Button
x:Name="btnAddEditTransitWarehouseAfterSale_n2"
MinWidth="38"
MinHeight="20"
Margin="0,0,0,0"
Padding="0"
Click="btnAddEditTransitWarehouseAfterSale_Click"
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="{Binding TransitPackageLatest.InterceptPackageBtnVisibility}">
<TextBlock>
出库拦截<LineBreak />
退回仓库</TextBlock>
</Button>
<Button
x:Name="btnTransitExtraPackages"
Height="20"
MinWidth="38"
Margin="0,0,0,0"
Padding="0"
HorizontalAlignment="Center"
d:Visibility="Visible"
Click="btnTransitExtraPackages_Click"
Content="滞留补发买家"
FontSize="11"
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="{Binding TransitPackageLatest.ExtraPackagesBtnVisibility}" />
</wpf:SpacingStackPanel>
</wpf:SpacingStackPanel>
</Grid>
@@ -1,5 +1,4 @@
using _29WxOrderWpf.BaseWindows;
using WxOrder.Framework.Commons;
using _29WxOrderWpf.Converters;
using _29WxOrderWpf.Ctrls.BuyerCtrls;
using _29WxOrderWpf.UserControls;
@@ -30,6 +29,7 @@ using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
@@ -42,6 +42,7 @@ using Work._29Tools.BLL;
using Work._29Tools.Forms.ShopForms;
using Work._29Tools.Forms.ToolForms;
using Work.BaseForms;
using WxOrder.Framework.Commons;
using static _29WxOrderWpf.Services.ShipGiftService;
using static System.Net.WebRequestMethods;
@@ -1019,177 +1020,57 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
var transitOrder = orderItem.TransitPackageLatest?.oms_wei_external_procurement_log_info;
var returnOrder = orderItem.TransitPackageLatest?.oms_wei_external_procurement_after_sale_info;
var extOrder = orderItem.TransitPackageLatest.oms_wei_transfer_extra_package;
btnVoidTransitOrder.IsEnabled = false;
await VoidOrder(orderItem);
btnVoidPackage.IsEnabled = false;
// 作废发货包裹并重新拍单
// 作废发货包裹
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
{
returnOrder = orderItem.ItemTransitOrderAfterSales.FirstOrDefault(af => af.external_order_no == returnOrder.external_order_no);
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
{
extOrder = orderItem.ItemTransitExtraOrders.FirstOrDefault(ex => ex.batchId == extOrder.batchId) ?? extOrder;
var voidResult = await OrderTransitService.VoidExtraPackage(orderItem, extOrder);
if (!string.IsNullOrEmpty(voidResult))
BaseMsgWindow.ShowInfo(voidResult);
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
btnVoidTransitOrder.IsEnabled = true;
btnVoidPackage.IsEnabled = true;
}
}
/// <summary>
/// 作废中转仓订单
/// </summary>
/// <param name="orderItem"></param>
/// <param name="isSilent"></param>
/// <param name="UpdateOrderBeforeVoid">作废前是否更新服务端订单状态</param>
public static async Task VoidOrder(oms_wei_order_item_info orderItem, oms_wei_external_procurement_log_info transitOrder = null, bool isSilent = false, bool UpdateOrderBeforeVoid = true)
{
// 作废前查询订单状态
var orderId = orderItem.order_id;
var skuId = orderItem.sku_id;
if (UpdateOrderBeforeVoid)
await Task.Run(() => { 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 (transitOrder == null)
transitOrder = orderItem.ItemTransitOrder ?? orderItem.ItemTransitOrderWithVoid;
if (transitOrder == null)
{
if (!isSilent)
BaseMsgWindow.ShowError("要作废的中转订单不存在,请确认后重试");
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"] = transitOrder.out_order_no;
data2["outOrderNo"] = transitOrder.order_code;
var dataStr2 = JsonHelper.SerializeObject(data2);
var discardRst = await HttpResponseWXBLL.e57PostResponseAsync(url2, dataStr2);
if (discardRst.Contains("\"code\":0") || discardRst.Contains("\"code\":200"))
{
//MainWindow.Instance.orderListCtrl.GetOrder(orderId);
// 修改为在买手退款流程后提示作废信息
}
else
{
var msg = BaseRegex.GetStringJson(ref discardRst, "msg");
if (!isSilent)
BaseMsgWindow.ShowInfo("订单作废失败,服务端返回 " + msg);
return;
}
#region 处理买手售后
if (transitOrder.out_order_no.ParseToString().StartsWith("tb_")) // 淘宝买手售后
{
if (!isSilent)
BaseMsgWindow.ShowError("淘宝买手暂不支持自动售后,作废后请手动申请售后");
else
transitOrder.refund_status = "淘宝买手暂不支持自动售后,作废后需手动申请售后";
}
else // 拼多多买手售后
{
bool noBuyer = false;
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_id == transitOrder.buyer_account || b.buyer_name == transitOrder.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;
order = PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite.FirstOrDefault(o => o.order_sn == transitOrder.out_order_no);
if (order == null)
order = new PddBuyerOrderLiteInfo()
{
order_status_prompt = "待发货",
order_amount = transitOrder.out_amount,
order_sn = transitOrder.out_order_no
};
PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite.Add(order);
var pddAfterRst = "";
await Task.Run(() =>
{
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;
}
}
}
#endregion
#region 更新拍单余额
StartUp.UpdateBalance();
#endregion
#region 立即更新订单
transitOrder = orderItem.ItemTransitOrders.FirstOrDefault(o => o.order_code == transitOrder.order_code) ?? transitOrder;
transitOrder.order_void_status = 1;
orderItem.SetOrderItemTextProperty();
#endregion
#region 重新过滤订单
OrderListCtrl.InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOrders();
if (!isSilent)
BaseMsgWindow.ShowInfo("订单作废成功,请重新拍单");
#endregion
}
private void txtWarehouseStatus_MouseEnter(object sender, MouseEventArgs e)
{
@@ -1209,114 +1090,42 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
if (sender == btnAddEditTransitWarehouseReject && !string.IsNullOrWhiteSpace(orderItem.ItemTransitOrderWithVoid?.express_1_waybill))
{
ShowRejectTransitOrder(orderItem, orderItem.ItemTransitOrderWithVoid?.express_1_waybill);
OrderTransitService.ShowRejectTransitOrder(orderItem, orderItem.ItemTransitOrderWithVoid?.express_1_waybill);
}
else if (sender == btnAddEditTransitWarehouseReject_New)
{
try
btnAddEditTransitWarehouseReject_New.IsEnabled = false;
var transitOrder = orderItem.TransitPackageLatest.oms_wei_external_procurement_log_info;
var returnOrder = orderItem.TransitPackageLatest.oms_wei_external_procurement_after_sale_info;
var extOrder = orderItem.TransitPackageLatest.oms_wei_transfer_extra_package;
// 拒收发货包裹
if (transitOrder != null)
{
var transitOrder = orderItem.ItemTransitOrder ?? orderItem.ItemTransitOrderWithVoid;
var rejectRst = await RejectTransitOrder(orderItem, transitOrder);
if (!string.IsNullOrEmpty(rejectRst))
BaseMsgWindow.ShowInfo(rejectRst);
try
{
transitOrder = orderItem.ItemTransitOrders.FirstOrDefault(t => t.order_code == transitOrder.order_code) ?? transitOrder;
var rejectRst = await OrderTransitService.RejectTransitOrder(orderItem, transitOrder);
if (!string.IsNullOrEmpty(rejectRst))
BaseMsgWindow.ShowInfo(rejectRst);
}
catch (Exception ex)
{
BaseMsgWindow.ShowError(ex.Message);
}
}
catch (Exception ex)
// 拒收额外包裹(额外包裹暂不支持多件商品发货,故暂不存在拒收功能)
else if (extOrder != null)
{
BaseMsgWindow.ShowError(ex.Message);
}
btnAddEditTransitWarehouseReject_New.IsEnabled = true;
}
}
}
/// <summary>
/// 查询拒收状态
/// </summary>
/// <param name="orderItem"></param>
/// <param name="upperWaybill"></param>
public static void ShowRejectTransitOrder(oms_wei_order_item_info orderItem, string upperWaybill)
{
BaiduGetWaybillInfoView buyerLoginForm = new BaiduGetWaybillInfoView(orderItem);
buyerLoginForm.ViewModel.InitUrl = "https://www.baidu.com/s?ie=UTF-8&wd=" + upperWaybill;
new DialogWindow()
{
Width = 1280,
Height = 800,
Title = "物流拒收查询",
Content = buyerLoginForm,
}.Show();
return;
}
/// <summary>
/// 云仓申请拒收退回总店
/// </summary>
/// <param name="orderItem"></param>
public static async Task<string> RejectTransitOrder(oms_wei_order_item_info orderItem, oms_wei_external_procurement_log_info _itemTransitOrder)
{
string msg = $@"
        云仓拒收退回总店
说  明:店铺产生售后,拒收成功,货物会原物流退回总店。
拒收条件:(总店物流没到云仓/未签收前)。顺丰/京东无法
     拒收,直接总店申请仅退款让总店拦截。
收  费:免费";
if (BaseMsgWindow.ShowConfirm(msg, "云仓拒收退回总店", null, MsgWindowLevel.LARGE, 300).DialogResult != true)
return "";
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);
var itemTransitOrder = orderItem.ItemTransitOrders.FirstOrDefault(o => o.order_code == _itemTransitOrder?.order_code && o.out_order_no == _itemTransitOrder?.out_order_no);
if (itemTransitOrder == null)
itemTransitOrder = _itemTransitOrder;
//if (itemTransitOrder?.warehouse_status == 3) { BaseMsgWindow.ShowError("商品已拒收或拦截!"); return; }
//if (itemTransitOrder?.warehouse_status == 2) { BaseMsgWindow.ShowError("商品已出库,请选择退回中转仓!"); return; }
//if (string.IsNullOrEmpty(orderItem.PddBuyerOrder?.order_sn)) { BaseMsgWindow.ShowError("商品未出单,请直接去拼多多买手申请退款"); return; }
if (itemTransitOrder?.has_reject == 1 || 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"] = 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, html, "msg");
//BaseMsgWindow.ShowAnimateMessage("申请失败", "Error", 3);
throw new Exception("申请失败" + err);
}
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 = await GetHtml.PostUtf8Async(url, data);
itemTransitOrder.has_reject = rejectStatus;
OrderListCtrl.InitOrderItemObservableProp(orderItem);
return "申请成功";
}
private void btnAddEditTransitWarehouseAfterSale_Click(object sender, RoutedEventArgs e)
{
//if (this.DataContext is oms_wei_order_item_info orderItem)
@@ -1340,21 +1149,50 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
if (this.DataContext is oms_wei_order_item_info orderItem)
{
bool isOutWarehouse = sender == btnAddEditTransitWarehouseAfterSale_n1;
ShowReturnPackageWindow(orderItem, orderItem.ItemTransitOrder ?? orderItem.ItemTransitOrderWithVoid, isOutWarehouse);
//bool isOutWarehouse = sender == btnAddEditTransitWarehouseAfterSale_n1;
//ShowReturnPackageWindow(orderItem, orderItem.ItemTransitOrder ?? orderItem.ItemTransitOrderWithVoid, isOutWarehouse);
btnAddEditTransitWarehouseAfterSale_n1.IsEnabled = false;
btnAddEditTransitWarehouseAfterSale_n2.IsEnabled = false;
var transitOrder = orderItem.TransitPackageLatest.oms_wei_external_procurement_log_info;
var returnOrder = orderItem.TransitPackageLatest.oms_wei_external_procurement_after_sale_info;
var extOrder = orderItem.TransitPackageLatest.oms_wei_transfer_extra_package;
if (transitOrder != null)
{
bool isOutWarehouse = sender == btnAddEditTransitWarehouseAfterSale_n1;
ShowReturnPackageWindow(orderItem, orderItem.TransitPackageLatest, isOutWarehouse);
}
else if (extOrder != null)
{
bool isOutWarehouse = sender == btnAddEditTransitWarehouseAfterSale_n1;
ShowReturnPackageWindow(orderItem, orderItem.TransitPackageLatest, isOutWarehouse);
}
btnAddEditTransitWarehouseAfterSale_n1.IsEnabled = true;
btnAddEditTransitWarehouseAfterSale_n2.IsEnabled = true;
}
}
public static void ShowReturnPackageWindow(oms_wei_order_item_info orderItem, oms_wei_external_procurement_log_info itemTransitOrder, bool isOutWarehouse)
public static void ShowReturnPackageWindow(oms_wei_order_item_info orderItem, oms_wei_order_item_transit_detail_info itemTransitInfo, bool isOutWarehouse)
{
string warehouse_status = "";
if (itemTransitOrder?.warehouse_status == 3 || itemTransitOrder?.warehouse_status == 1)
if (itemTransitInfo?.WarehouseStatus == "拦截到仓")
warehouse_status = "已拦截到仓";
else if (itemTransitInfo?.WarehouseStatus == "已入库")
warehouse_status = "已到仓";
if (itemTransitOrder?.warehouse_status == 2)
else if (itemTransitInfo?.WarehouseStatus == "已出库")
warehouse_status = "已出仓";
else
warehouse_status = "未到仓";
if (itemTransitInfo.oms_wei_external_procurement_log_info == null && itemTransitInfo.oms_wei_transfer_extra_package == null)
{
BaseMsgWindow.ShowError("未找到发货或者额外包裹,无法转寄/退回包裹");
return;
}
if (!isOutWarehouse) /* 未出仓 */
{
string msg = $@"
@@ -1367,7 +1205,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
if (BaseMsgWindow.ShowConfirm(msg, "拒收失败转寄总店", null, MsgWindowLevel.LARGE, 300).DialogResult != true)
return;
}
else
else /* 已出仓 */
{
string msg = $@"
      出库拦截退回仓库({warehouse_status})
@@ -1381,7 +1219,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
return;
}
TransitAfterSaleWindow transitAfterSaleWindow = new TransitAfterSaleWindow(orderItem, itemTransitOrder);
TransitAfterSaleWindow transitAfterSaleWindow = new TransitAfterSaleWindow(orderItem, itemTransitInfo);
transitAfterSaleWindow.ShowDialog();
}
@@ -2016,55 +1854,54 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
}
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)
// 发货包裹滞留补发
if (orderItem.TransitPackageLatest?.oms_wei_external_procurement_log_info != null)
{
BaseMsgWindow.ShowError("非中转仓订单不支持补发!");
return;
// 不是中转仓发货包裹,直接返回
//var transitOrder = orderItem.ItemTransitOrder ?? orderItem.ItemTransitOrderWithVoid;
var transitOrder = orderItem.TransitPackageLatest?.oms_wei_external_procurement_log_info;
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, transitOrder);
new DialogWindow()
{
Title = "滞留补发买家",
Content = transitExtraPackagesView,
}.ShowDialog();
}
// 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();
}
}
@@ -2135,16 +1972,11 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
}
}
private async void borderWarehouseStatas_MouseUp(object sender, MouseButtonEventArgs e)
private async void borderWarehouseStatus_MouseUp(object sender, MouseButtonEventArgs e)
{
}
private void btnTransitInfo_Click(object sender, RoutedEventArgs e)
{
//return;
if (this.DataContext is oms_wei_order_item_info orderItem)
{
oms_wei_order_item_transit_info transitInfo = new oms_wei_order_item_transit_info()
oms_wei_order_item_transit_model transitInfo = new oms_wei_order_item_transit_model()
{
OrderItem = orderItem,
};
@@ -2160,6 +1992,28 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
}.ShowDialog();
}
}
private void btnTransitInfo_Click(object sender, RoutedEventArgs e)
{
////return;
//if (this.DataContext is oms_wei_order_item_info orderItem)
//{
// oms_wei_order_item_transit_model transitInfo = new oms_wei_order_item_transit_model()
// {
// OrderItem = orderItem,
// };
// OrderTransitListCtrl OrderTransitListCtrl = new OrderTransitListCtrl(transitInfo);
// new DialogWindow()
// {
// Title = "仓库订单详情 - 当前订单 " + orderItem.order_id,
// Content = OrderTransitListCtrl,
// Width = SystemParameters.PrimaryScreenWidth < 1920 ? SystemParameters.PrimaryScreenWidth : SystemParameters.PrimaryScreenWidth * 90 / 100,
// Height = SystemParameters.PrimaryScreenHeight * 90 / 100,
// WindowStartupLocation = WindowStartupLocation.CenterScreen,
// }.ShowDialog();
//}
}
}
}
@@ -23,14 +23,14 @@ public partial class OrderTransitListCtrl : UserControl
{
OrderTransitListCtrlViewModel ViewModel;
public OrderTransitListCtrl(oms_wei_order_item_transit_info transitInfo)
public OrderTransitListCtrl(oms_wei_order_item_transit_model transitInfo)
{
InitializeComponent();
UpdateViewModel(transitInfo);
}
public void UpdateViewModel(oms_wei_order_item_transit_info transitInfo)
public void UpdateViewModel(oms_wei_order_item_transit_model transitInfo)
{
ViewModel = new OrderTransitListCtrlViewModel(transitInfo);
ViewModel.RequestClose += ViewModel_RequestClose;
@@ -12,7 +12,7 @@ public class OrderTransitListCtrlViewModel : PropertyNotifyObject
{
private volatile bool _isWindowLoaded = false;
public oms_wei_order_item_transit_info TransitInfo
public oms_wei_order_item_transit_model TransitInfo
{
get { return this.GetValue(x => x.TransitInfo); }
set { this.SetValue(x => x.TransitInfo, value); }
@@ -37,7 +37,7 @@ public class OrderTransitListCtrlViewModel : PropertyNotifyObject
/// <summary>请求关闭窗口</summary>
public event Action RequestClose;
public OrderTransitListCtrlViewModel(oms_wei_order_item_transit_info transitInfo)
public OrderTransitListCtrlViewModel(oms_wei_order_item_transit_model transitInfo)
{
TransitInfo = transitInfo;
OrderItem = transitInfo?.OrderItem;
@@ -387,7 +387,7 @@
Padding="2"
Click="btnAddEditTransitWarehouseAfterSale_Click"
Style="{StaticResource BasePageButtonLightStyle}"
Visibility="{Binding ReturnPackageBtnVisibility}">
Visibility="{Binding InterceptPackageBtnVisibility}">
出库拦截退回仓库
</Button>
<Button
@@ -1,4 +1,5 @@
using _29WxOrderWpf.BaseWindows;
using _29WxOrderWpf.Views;
using AllBase;
using AllBase.Helper;
using AllBase.Model.DBModel;
@@ -20,6 +21,7 @@ using System.Windows.Navigation;
using System.Windows.Shapes;
using Work;
using Work._29Tools.BLL;
using WxOrder.Framework.Commons;
namespace _29WxOrderWpf.Ctrls.OrderCtrls;
@@ -51,14 +53,14 @@ public partial class OrderTransitListDetailCtrl : UserControl
if (transitOrder != null)
{
transitOrder = orderItem.ItemTransitOrders.FirstOrDefault(t => t.order_code == transitOrder.order_code) ?? transitOrder;
await OrderListRowItemCtrl.VoidOrder(orderItem, transitOrder);
await OrderTransitService.VoidOrder(orderItem, transitOrder);
}
// 作废退货包裹
else if (returnOrder != null)
{
try
{
var voidResult = await VoidAfterSalePackage(orderItem, returnOrder);
var voidResult = await OrderTransitService.VoidAfterSalePackage(orderItem, returnOrder);
if (!string.IsNullOrEmpty(voidResult))
BaseMsgWindow.ShowInfo(voidResult);
}
@@ -72,7 +74,7 @@ public partial class OrderTransitListDetailCtrl : UserControl
{
try
{
var voidResult = await VoidExtraPackage(orderItem, extOrder);
var voidResult = await OrderTransitService.VoidExtraPackage(orderItem, extOrder);
if (!string.IsNullOrEmpty(voidResult))
BaseMsgWindow.ShowInfo(voidResult);
}
@@ -87,78 +89,15 @@ public partial class OrderTransitListDetailCtrl : UserControl
}
}
/// <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)
{
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;
@@ -169,7 +108,7 @@ public partial class OrderTransitListDetailCtrl : UserControl
{
try
{
var rejectRst = await OrderListRowItemCtrl.RejectTransitOrder(orderItem, transitOrder);
var rejectRst = await OrderTransitService.RejectTransitOrder(orderItem, transitOrder);
if (!string.IsNullOrEmpty(rejectRst))
BaseMsgWindow.ShowInfo(rejectRst);
}
@@ -186,11 +125,43 @@ public partial class OrderTransitListDetailCtrl : UserControl
}
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_n1;
OrderListRowItemCtrl.ShowReturnPackageWindow(orderItem, transitDetailInfo, isOutWarehouse);
}
else if (extOrder != null)
{
bool isOutWarehouse = sender == btnAddEditTransitWarehouseAfterSale_n1;
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;
@@ -200,23 +171,31 @@ public partial class OrderTransitListDetailCtrl : UserControl
if (transitOrder != null)
{
bool isOutWarehouse = sender == btnAddEditTransitWarehouseAfterSale_n1;
OrderListRowItemCtrl.ShowReturnPackageWindow(orderItem, transitOrder, isOutWarehouse);
// 不是中转仓,直接返回
if (transitOrder == null)
{
BaseMsgWindow.ShowError("非中转仓订单不支持补发!");
return;
}
TransitExtraPackagesView transitExtraPackagesView = new TransitExtraPackagesView(orderItem.ItemOrder, orderItem, transitOrder);
new DialogWindow()
{
Title = "滞留补发买家",
Content = transitExtraPackagesView,
}.ShowDialog();
}
RefreshListCtrl(orderItem);
}
}
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()
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),
};
@@ -0,0 +1,351 @@
using _29WxOrderWpf.BaseWindows;
using _29WxOrderWpf.Ctrls.BuyerCtrls;
using _29WxOrderWpf.ViewModels;
using _29WxOrderWpf.Views;
using AllBase;
using AllBase.Helper;
using AllBase.Model.DBModel;
using AllBase.Model.Result;
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 Work;
using Work._29Tools.BLL;
using WxOrder.Framework.Commons;
namespace _29WxOrderWpf.Ctrls.OrderCtrls;
internal class OrderTransitService
{
/// <summary>
/// 作废中转仓发货包裹
/// </summary>
/// <param name="orderItem"></param>
/// <param name="isSilent"></param>
/// <param name="UpdateOrderBeforeVoid">作废前是否更新服务端订单状态</param>
public static async Task VoidOrder(oms_wei_order_item_info orderItem, oms_wei_external_procurement_log_info transitOrder = null, bool isSilent = false, bool UpdateOrderBeforeVoid = true)
{
if (!isSilent)
{
if (BaseMsgWindow.ShowConfirm("确定作废当前包裹吗?").DialogResult == false)
return;
}
// 作废前查询订单状态
var orderId = orderItem.order_id;
var skuId = orderItem.sku_id;
if (UpdateOrderBeforeVoid)
await Task.Run(async() => { await 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 (transitOrder == null)
transitOrder = orderItem.ItemTransitOrder ?? orderItem.ItemTransitOrderWithVoid;
if (transitOrder == null)
{
if (!isSilent)
BaseMsgWindow.ShowError("要作废的中转订单不存在,请确认后重试");
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"] = transitOrder.out_order_no;
data2["outOrderNo"] = transitOrder.order_code;
var dataStr2 = JsonHelper.SerializeObject(data2);
var discardRst = await HttpResponseWXBLL.e57PostResponseAsync(url2, dataStr2);
if (discardRst.Contains("\"code\":0") || discardRst.Contains("\"code\":200"))
{
//MainWindow.Instance.orderListCtrl.GetOrder(orderId);
// 修改为在买手退款流程后提示作废信息
}
else
{
var msg = BaseRegex.GetStringJson(ref discardRst, "msg");
if (!isSilent)
BaseMsgWindow.ShowInfo("订单作废失败,服务端返回 " + msg);
return;
}
#region 处理买手售后
if (transitOrder.out_order_no.ParseToString().StartsWith("tb_")) // 淘宝买手售后
{
if (!isSilent)
BaseMsgWindow.ShowError("淘宝买手暂不支持自动售后,作废后请手动申请售后");
else
transitOrder.refund_status = "淘宝买手暂不支持自动售后,作废后需手动申请售后";
}
else // 拼多多买手售后
{
bool noBuyer = false;
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_id == transitOrder.buyer_account || b.buyer_name == transitOrder.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;
order = PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite.FirstOrDefault(o => o.order_sn == transitOrder.out_order_no);
if (order == null)
order = new PddBuyerOrderLiteInfo()
{
order_status_prompt = "待发货",
order_amount = transitOrder.out_amount,
order_sn = transitOrder.out_order_no
};
PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite.Add(order);
var pddAfterRst = "";
await Task.Run(() =>
{
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;
}
}
}
#endregion
#region 更新拍单余额
StartUp.UpdateBalance();
#endregion
#region 立即更新订单
transitOrder = orderItem.ItemTransitOrders.FirstOrDefault(o => o.order_code == transitOrder.order_code) ?? transitOrder;
transitOrder.order_void_status = 1;
orderItem.SetOrderItemTextProperty();
#endregion
#region 重新过滤订单
OrderListCtrl.InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOrders();
if (!isSilent)
BaseMsgWindow.ShowInfo("订单作废成功,请重新拍单");
#endregion
}
/// <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>
/// <param name="orderItem"></param>
public static async Task<string> RejectTransitOrder(oms_wei_order_item_info orderItem, oms_wei_external_procurement_log_info _itemTransitOrder)
{
string msg = $@"
        云仓拒收退回总店
说  明:店铺产生售后,拒收成功,货物会原物流退回总店。
拒收条件:(总店物流没到云仓/未签收前)。顺丰/京东无法
     拒收,直接总店申请仅退款让总店拦截。
收  费:免费";
if (BaseMsgWindow.ShowConfirm(msg, "云仓拒收退回总店", null, MsgWindowLevel.LARGE, 300).DialogResult != true)
return "";
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);
var itemTransitOrder = orderItem.ItemTransitOrders.FirstOrDefault(o => o.order_code == _itemTransitOrder?.order_code && o.out_order_no == _itemTransitOrder?.out_order_no);
if (itemTransitOrder == null)
itemTransitOrder = _itemTransitOrder;
//if (itemTransitOrder?.warehouse_status == 3) { BaseMsgWindow.ShowError("商品已拒收或拦截!"); return; }
//if (itemTransitOrder?.warehouse_status == 2) { BaseMsgWindow.ShowError("商品已出库,请选择退回中转仓!"); return; }
//if (string.IsNullOrEmpty(orderItem.PddBuyerOrder?.order_sn)) { BaseMsgWindow.ShowError("商品未出单,请直接去拼多多买手申请退款"); return; }
if (itemTransitOrder?.has_reject == 1 || 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"] = 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, html, "msg");
//BaseMsgWindow.ShowAnimateMessage("申请失败", "Error", 3);
throw new Exception("申请失败" + err);
}
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 = await GetHtml.PostUtf8Async(url, data);
itemTransitOrder.has_reject = rejectStatus;
OrderListCtrl.InitOrderItemObservableProp(orderItem);
return "申请成功";
}
/// <summary>
/// 申请拒收后查询拒收状态
/// </summary>
/// <param name="orderItem"></param>
/// <param name="upperWaybill"></param>
public static void ShowRejectTransitOrder(oms_wei_order_item_info orderItem, string upperWaybill)
{
BaiduGetWaybillInfoView buyerLoginForm = new BaiduGetWaybillInfoView(orderItem);
buyerLoginForm.ViewModel.InitUrl = "https://www.baidu.com/s?ie=UTF-8&wd=" + upperWaybill;
new DialogWindow()
{
Width = 1280,
Height = 800,
Title = "物流拒收查询",
Content = buyerLoginForm,
}.Show();
return;
}
}
@@ -5,7 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:_29WxOrderWpf.Ctrls.Settings"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="[vm ]clr-namespace:_29WxOrderWpf.ViewModels"
xmlns:vm="clr-namespace:_29WxOrderWpf.ViewModels"
xmlns:wpf="WPFCommon"
Title="设置"
Width="800"
@@ -37,8 +37,12 @@
<CheckBox
Grid.Column="1"
VerticalAlignment="Center"
d:Visibility="Visible"
IsChecked="{Binding AutoSwitchGiftType}"
Style="{StaticResource ToggleSwitch}" />
IsEnabled="False"
Opacity="0.5"
Style="{StaticResource ToggleSwitch}"
Visibility="Collapsed" />
</Grid>
</Border>
</StackPanel>
+1 -1
View File
@@ -43,7 +43,7 @@ public class ShipGiftService : SingleInstance<ShipGiftService>
giftAmount = 1.55m;
}
if (BaseClass.Setting.AutoSwitchGiftType && (item.product_price ?? 0) > 6 * 1000)
if (BaseClass.Setting.AutoSwitchGiftType && (item.product_price ?? 0) > 6 * 100)
{
giftAmount = 1.6m;
}
+3 -1
View File
@@ -23,6 +23,7 @@ namespace _29WxOrderWpf
GlobalConfig.BuyConfig = ConfigHelper.LoadConfig<BuyConfig>("buy_config_260708");
if (GlobalConfig.BuyConfig == null)
GlobalConfig.BuyConfig = new BuyConfig();
GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill = false;
GlobalConfig.lstWXShopTokenInfo = ConfigHelper.LoadConfig<ConcurrentList<WXShopTokenInfo>>("wx_shop_token_list");
if (GlobalConfig.lstWXShopTokenInfo == null)
@@ -37,7 +38,8 @@ namespace _29WxOrderWpf
BaseClass.Setting = NaiBa.Util.Helper.ConfigHelper.LoadConfig<SettingConfig>(SettingViewModel.SettingFileName);
if (BaseClass.Setting==null) BaseClass.Setting = new SettingConfig();
if (BaseClass.Setting == null) BaseClass.Setting = new SettingConfig();
BaseClass.Setting.AutoSwitchGiftType = true;
new WxOrder.Framework.Startup();
}
@@ -40,6 +40,11 @@ namespace _29WxOrderWpf.ViewModels
get { return this.GetValue(x => x.OrderItem); }
set { this.SetValue(x => x.OrderItem, value); }
}
public oms_wei_external_procurement_log_info TransitOrder
{
get { return this.GetValue(x => x.TransitOrder); }
set { this.SetValue(x => x.TransitOrder, value); }
}
public string purchaserNote
{
get { return this.GetValue(x => x.purchaserNote); }
@@ -98,7 +103,12 @@ namespace _29WxOrderWpf.ViewModels
public void AddExtraPackages()
{
var transitOrder = OrderItem.ItemTransitOrder ?? OrderItem.ItemTransitOrderWithVoid;
if (TransitOrder == null)
{
//TransitOrder = OrderItem.ItemTransitOrder ?? OrderItem.ItemTransitOrderWithVoid;
BaseMsgWindow.ShowError("未找到云仓发货包裹,请确认包裹存在");
return;
}
var transitExtraOrder = OrderItem.ItemTransitExtraOrders.FirstOrDefault(t => t.order_void_status != 1);
if (transitExtraOrder != null)
{
@@ -113,20 +123,20 @@ namespace _29WxOrderWpf.ViewModels
body["postage"] = ((basePostage + BaseClass.PostagePerOrderDiff) * 100).ParseToInt().ParseToString();
body["packType"] = "2";
body["batchId"] = transitOrder.order_code + "-" + ((OrderItem.ItemTransitExtraOrders?.Count).ParseToInt() + 1);
body["batchId"] = TransitOrder.order_code + "-" + ((OrderItem.ItemTransitExtraOrders?.Count).ParseToInt() + 1);
body["orderNo"] = OrderItem.order_id;
body["orderCode"] = transitOrder.order_code;
body["orderCode"] = TransitOrder.order_code;
// 未出库填上游物流,已出库填下游物流
if (transitOrder.warehouse_status != 2)
if (TransitOrder.warehouse_status != 2)
{
body["logisticsCode"] = transitOrder.express_1_company;
body["logisticsExpressCode"] = transitOrder.express_1_waybill;
body["logisticsCode"] = TransitOrder.express_1_company;
body["logisticsExpressCode"] = TransitOrder.express_1_waybill;
}
else
{
body["logisticsCode"] = transitOrder.express_2_company;
body["logisticsExpressCode"] = transitOrder.express_2_waybill;
body["logisticsCode"] = TransitOrder.express_2_company;
body["logisticsExpressCode"] = TransitOrder.express_2_waybill;
}
body["accountUser"] = BaseClass.UserName;
@@ -28,11 +28,11 @@ public partial class TransitExtraPackagesView : UserControl
/// </summary>
public TransitExtraPackagesViewModel ViewModel { get; }
public TransitExtraPackagesView(oms_wei_order_info _order, oms_wei_order_item_info _orderItem)
public TransitExtraPackagesView(oms_wei_order_info _order, oms_wei_order_item_info _orderItem, oms_wei_external_procurement_log_info transitOrder = null)
{
InitializeComponent();
ViewModel = new TransitExtraPackagesViewModel(_order, _orderItem);
ViewModel = new TransitExtraPackagesViewModel(_order, _orderItem) { TransitOrder = transitOrder };
ViewModel.RequestClose += ViewModel_RequestClose;
DataContext = ViewModel;
}
@@ -288,7 +288,7 @@
Visibility="Collapsed" />
<Button
x:Name="btnAdd"
Grid.Row="9"
Grid.Row="8"
Grid.Column="1"
MinWidth="48"
Padding="4"
@@ -296,7 +296,7 @@
Click="btnAddReturnPackage_Click"
Content="添 加"
IsEnabled="False"
Style="{StaticResource BasePageButtonStyle}" />
Style="{StaticResource BasePageButtonStyle}" Height="28" Margin="0,53,0,0" Grid.RowSpan="2" VerticalAlignment="Top" />
<Image
x:Name="imgLoading"
Grid.Row="9"
@@ -29,18 +29,25 @@ namespace _29WxOrderWpf.Windows.OrderWindows
/// </summary>
public partial class TransitAfterSaleWindow : BaseWindow
{
public int PackType { get; set; }
public oms_wei_order_item_info OrderItem { get; set; }
public oms_wei_order_item_transit_detail_info TransitInfo { get; set; }
public oms_wei_external_procurement_log_info TransitOrder { get; set; } = null;
public oms_wei_transfer_extra_package ExtraPackage { get; set; } = null;
public TransitAfterSaleWindow(oms_wei_order_item_info orderItem, oms_wei_external_procurement_log_info _transitOrder)
public TransitAfterSaleWindow(oms_wei_order_item_info orderItem, oms_wei_order_item_transit_detail_info _transitInfo)
{
InitializeComponent();
if (orderItem != null)
OrderItem = orderItem;
if (_transitOrder != null)
TransitOrder = _transitOrder;
if (_transitInfo != null)
TransitInfo = _transitInfo;
if (_transitInfo?.oms_wei_external_procurement_log_info != null)
TransitOrder = _transitInfo?.oms_wei_external_procurement_log_info;
else if (_transitInfo?.oms_wei_transfer_extra_package != null)
ExtraPackage = _transitInfo?.oms_wei_transfer_extra_package;
PackType = _transitInfo?.TransitTypeStr == "额外包裹" ? 2 : 1;
}
private void mainGrid_Loaded(object sender, RoutedEventArgs e)
@@ -48,106 +55,143 @@ namespace _29WxOrderWpf.Windows.OrderWindows
}
private async void TransitAfterSaleWindow_Loaded(object sender, RoutedEventArgs e)
private async void TransitAfterSaleWindow_Loaded(object sender, RoutedEventArgs e)
{
btnAdd.IsEnabled = true;
foreach (var warehouse in TransitWarehouseData.TransitWarehouseList)
{
this.cmbWareHouse.Items.Add(warehouse.TransName);
}
{
this.cmbWareHouse.Items.Add(warehouse.TransName);
}
if (OrderItem != null)
{
if (TransitOrder == null)
if (OrderItem != null && TransitInfo != null)
{
if (ExtraPackage != null)
{
TransitOrder = OrderItem.ItemTransitOrder ?? OrderItem.ItemTransitOrderWithVoid;
}
this.cmbWareHouse.Text = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == TransitOrder?.platform)?.TransName;
this.txtExpressName.Text = string.IsNullOrWhiteSpace(TransitOrder?.express_2_waybill) ? TransitOrder?.express_1_company : TransitOrder?.express_2_company;
this.txtWarehouseWaybill.Text = string.IsNullOrWhiteSpace(TransitOrder?.express_2_waybill) ? TransitOrder?.express_1_waybill : TransitOrder?.express_2_waybill;
if (TransitOrder != null && (this.txtExpressName.Text.IsNullOrEmpty() || this.txtWarehouseWaybill.Text.IsNullOrEmpty()))
{
this.txtExpressName.Text = OrderItem.PddBuyerOrders.FirstOrDefault(p => p.order_sn == TransitOrder?.out_order_no)?.outExpressCompanyCode;
this.txtWarehouseWaybill.Text = OrderItem.PddBuyerOrders.FirstOrDefault(p => p.order_sn == TransitOrder?.out_order_no)?.tracking_number;
// 获取额外包裹对应的发货包裹或者发货包裹本身
var _transitOrder = OrderItem.ItemTransitOrders.FirstOrDefault(t => t.order_code == ExtraPackage?.order_code);
if (!string.IsNullOrWhiteSpace(this.txtExpressName.Text) && !string.IsNullOrWhiteSpace(this.txtWarehouseWaybill.Text))
{
// 没物流信息的仓库单手动更新买手物流信息
JObject data = new JObject();
data["orderNo"] = OrderItem.order_id;
data["orderCode"] = TransitOrder?.order_code;
data["logisticsExpressCode"] = this.txtWarehouseWaybill.Text;
data["logisticsExpressCompany"] = this.txtExpressName.Text;
var updateTransitExpressUrl = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/orders/updateLogisticsExpressCode";
var updateTransitExpressStr = JsonHelper.SerializeObject(data);
var updateTransitExpressRst = HttpResponseWXBLL.e57PostResponse(updateTransitExpressUrl, updateTransitExpressStr, "");
}
}
this.cmbWareHouse.Text = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == ExtraPackage?.platform)?.TransName;
this.txtExpressName.Text = string.IsNullOrWhiteSpace(ExtraPackage.real_logistics_code) ? ExtraPackage.logistics_code : ExtraPackage?.real_logistics_code;
this.txtWarehouseWaybill.Text = string.IsNullOrWhiteSpace(ExtraPackage?.real_logistics_express_code) ? ExtraPackage?.logistics_express_code : ExtraPackage?.real_logistics_express_code;
var transitAfterSale = OrderItem.ItemTransitOrderAfterSales?.OrderByDescending(t => t.id)?.FirstOrDefault(t => t.order_code == TransitOrder.order_code && t.order_void_status != 1);
if (transitAfterSale != null)
{
btnAdd.IsEnabled = false;
this.txtUser.Text = transitAfterSale.recipient_name;
this.txtMobile.Text = transitAfterSale.recipient_phone;
this.txtDetailAddress.Text = transitAfterSale.refund_detail_address;
//this.txtAddress.Text = transitAfterSale.refund_province + "/" + transitAfterSale.refund_city + "/" + transitAfterSale.refund_county;
this.txtProvince.Text = transitAfterSale.refund_province;
this.txtCity.Text = transitAfterSale.refund_city;
this.txtCounty.Text = transitAfterSale.refund_county;
}
else
{
// 需要手动申请售后的,先去申请售后再提交拦截退回总店
if (!string.IsNullOrEmpty(TransitOrder?.out_order_no) && OrderItem.PddBuyerAfterSaleAddressStr.IsNullOrEmpty() &&
(OrderItem.TransitRefundStatusStr.Contains("需手动申请售后") || OrderItem.TransitRefundStatusStr.Contains("待用户发货")))
var transitAfterSale = OrderItem.ItemTransitOrderAfterSales?.OrderByDescending(t => t.id)?.FirstOrDefault(t => t.order_code == ExtraPackage.order_code && t.order_void_status != 1 && t.pack_type == PackType);
if (transitAfterSale != null)
{
btnAdd.IsEnabled = false;
imgLoading.Visibility = Visibility.Visible;
await MainWindow.Instance.orderListCtrl.DoBuyerRefend(new List<oms_wei_order_item_info>() { OrderItem });
var order = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == OrderItem.order_id);
if (order != null)
{
var orderItemTmp = order.orderItems.FirstOrDefault(oi => oi.sku_id == OrderItem.sku_id);
if (orderItemTmp != null)
OrderItem = orderItemTmp;
}
btnAdd.IsEnabled = true;
}
if (OrderItem.PddBuyerAfterSale?.orderSn == TransitOrder?.out_order_no && !string.IsNullOrEmpty(OrderItem.PddBuyerAfterSale?.afterSaleAddress))
this.txtUser.Text = transitAfterSale.recipient_name;
this.txtMobile.Text = transitAfterSale.recipient_phone;
this.txtDetailAddress.Text = transitAfterSale.refund_detail_address;
//this.txtAddress.Text = transitAfterSale.refund_province + "/" + transitAfterSale.refund_city + "/" + transitAfterSale.refund_county;
this.txtProvince.Text = transitAfterSale.refund_province;
this.txtCity.Text = transitAfterSale.refund_city;
this.txtCounty.Text = transitAfterSale.refund_county;
}
else
{
txtAddressAnalysis.Text = OrderItem.PddBuyerAfterSale?.afterSaleAddress;
btnAddressAnalysis_Click(null, null);
var pddBuyerAfterSale = OrderItem.PddBuyerAfterSales.FirstOrDefault(af => af.orderSn == _transitOrder?.out_order_no);
// 需要手动申请售后的,先去申请售后再提交拦截退回总店
if (!string.IsNullOrEmpty(_transitOrder?.out_order_no) && !string.IsNullOrEmpty(pddBuyerAfterSale?.afterSaleAddress) &&
(_transitOrder.refund_status.ParseToString().Contains("需手动申请售后") || _transitOrder.refund_status.ParseToString().Contains("待用户发货")))
{
btnAdd.IsEnabled = false;
imgLoading.Visibility = Visibility.Visible;
await MainWindow.Instance.orderListCtrl.DoBuyerRefend(new List<oms_wei_order_item_info>() { OrderItem });
var order = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == OrderItem.order_id);
if (order != null)
{
var orderItemTmp = order.orderItems.FirstOrDefault(oi => oi.sku_id == OrderItem.sku_id);
if (orderItemTmp != null)
OrderItem = orderItemTmp;
}
btnAdd.IsEnabled = true;
}
pddBuyerAfterSale = OrderItem.PddBuyerAfterSales.FirstOrDefault(af => af.orderSn == _transitOrder?.out_order_no);
if (!string.IsNullOrEmpty(pddBuyerAfterSale?.afterSaleAddress))
{
txtAddressAnalysis.Text = pddBuyerAfterSale?.afterSaleAddress;
btnAddressAnalysis_Click(null, null);
}
}
}
imgLoading.Visibility = Visibility.Collapsed;
// 如果提交过工单,则显示已提交工单及提交时间。
var workOrderInfo = await GetWorkOrder();
var issueType = BaseRegex.GetStringJson(ref workOrderInfo, "issueType");
var createTime = BaseRegex.GetStringJson(ref workOrderInfo, "createdAt").ParseToString().ParseToDateTime();
if (!string.IsNullOrEmpty(issueType))
else if(TransitOrder != null)
{
lblWorkOrderMsg.Content = "已提交工单(" + createTime.ParseToString() + ")";
this.cmbWareHouse.Text = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == TransitOrder?.platform)?.TransName;
this.txtExpressName.Text = string.IsNullOrWhiteSpace(TransitOrder?.express_2_waybill) ? TransitOrder?.express_1_company : TransitOrder?.express_2_company;
this.txtWarehouseWaybill.Text = string.IsNullOrWhiteSpace(TransitOrder?.express_2_waybill) ? TransitOrder?.express_1_waybill : TransitOrder?.express_2_waybill;
if (this.txtExpressName.Text.IsNullOrEmpty() || this.txtWarehouseWaybill.Text.IsNullOrEmpty())
{
this.txtExpressName.Text = OrderItem.PddBuyerOrders.FirstOrDefault(p => p.order_sn == TransitOrder?.out_order_no)?.outExpressCompanyCode;
this.txtWarehouseWaybill.Text = OrderItem.PddBuyerOrders.FirstOrDefault(p => p.order_sn == TransitOrder?.out_order_no)?.tracking_number;
if (!string.IsNullOrWhiteSpace(this.txtExpressName.Text) && !string.IsNullOrWhiteSpace(this.txtWarehouseWaybill.Text))
{
// 没物流信息的仓库单手动更新买手物流信息
JObject data = new JObject();
data["orderNo"] = OrderItem.order_id;
data["orderCode"] = TransitOrder?.order_code;
data["logisticsExpressCode"] = this.txtWarehouseWaybill.Text;
data["logisticsExpressCompany"] = this.txtExpressName.Text;
var updateTransitExpressUrl = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/orders/updateLogisticsExpressCode";
var updateTransitExpressStr = JsonHelper.SerializeObject(data);
var updateTransitExpressRst = HttpResponseWXBLL.e57PostResponse(updateTransitExpressUrl, updateTransitExpressStr, "");
}
}
var transitAfterSale = OrderItem.ItemTransitOrderAfterSales?.OrderByDescending(t => t.id)?.FirstOrDefault(t => t.order_code == TransitOrder.order_code && t.order_void_status != 1 && t.pack_type == PackType);
if (transitAfterSale != null)
{
btnAdd.IsEnabled = false;
this.txtUser.Text = transitAfterSale.recipient_name;
this.txtMobile.Text = transitAfterSale.recipient_phone;
this.txtDetailAddress.Text = transitAfterSale.refund_detail_address;
//this.txtAddress.Text = transitAfterSale.refund_province + "/" + transitAfterSale.refund_city + "/" + transitAfterSale.refund_county;
this.txtProvince.Text = transitAfterSale.refund_province;
this.txtCity.Text = transitAfterSale.refund_city;
this.txtCounty.Text = transitAfterSale.refund_county;
}
else
{
// 需要手动申请售后的,先去申请售后再提交拦截退回总店
if (!string.IsNullOrEmpty(TransitOrder?.out_order_no) && OrderItem.PddBuyerAfterSaleAddressStr.IsNullOrEmpty() &&
(TransitOrder.refund_status.ParseToString().Contains("需手动申请售后") || TransitOrder.refund_status.ParseToString().Contains("待用户发货")))
{
btnAdd.IsEnabled = false;
imgLoading.Visibility = Visibility.Visible;
await MainWindow.Instance.orderListCtrl.DoBuyerRefend(new List<oms_wei_order_item_info>() { OrderItem });
var order = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == OrderItem.order_id);
if (order != null)
{
var orderItemTmp = order.orderItems.FirstOrDefault(oi => oi.sku_id == OrderItem.sku_id);
if (orderItemTmp != null)
OrderItem = orderItemTmp;
}
btnAdd.IsEnabled = true;
}
if (OrderItem.PddBuyerAfterSale?.orderSn == TransitOrder?.out_order_no && !string.IsNullOrEmpty(OrderItem.PddBuyerAfterSale?.afterSaleAddress))
{
txtAddressAnalysis.Text = OrderItem.PddBuyerAfterSale?.afterSaleAddress;
btnAddressAnalysis_Click(null, null);
}
}
}
}
//if (TransitOrder?.warehouse_status != 0 && TransitOrder?.warehouse_status != 1)
//{
// btnAdd.IsEnabled = false;
// //BaseMsgWindow.ShowError("当前订单仓库状态不支持售后,请联系买家直接退回总店!");
// lblMsg.Content = "当前订单仓库状态不支持售后,请联系买家直接退回总店!";
// return;
//}
if ((TransitOrder?.warehouse_status).ParseToInt() < 1)
{
//btnAdd.IsEnabled = false;
//lblMsg.Content = "当前订单仓库状态不支持拦截退回总店,建议联系买家直接退回总店!";
}
}
// 如果提交过工单,则显示已提交工单及提交时间。
var workOrderInfo = await GetWorkOrder();
var issueType = BaseRegex.GetStringJson(ref workOrderInfo, "issueType");
var createTime = BaseRegex.GetStringJson(ref workOrderInfo, "createdAt").ParseToString().ParseToDateTime();
if (!string.IsNullOrEmpty(issueType))
{
lblWorkOrderMsg.Content = "已提交工单(" + createTime.ParseToString() + ")";
}
imgLoading.Visibility = Visibility.Collapsed;
}
private async void btnAddReturnPackage_Click(object sender, RoutedEventArgs e)
{
@@ -155,10 +199,10 @@ namespace _29WxOrderWpf.Windows.OrderWindows
{
// 后续为独立创建工单
// 创建拦截退货包裹工单
var workOrder = AddWorkOrder();
var workOrder = await AddWorkOrderAsync();
if (!workOrder.Contains("\"success\":true"))
{
BaseMsgWindow.ShowError("中转拦截包裹添加失败," + BaseRegex.GetStringJson(ref workOrder, "message"), "", this);
BaseMsgWindow.ShowError("拦截工单添加失败," + BaseRegex.GetStringJson(ref workOrder, "message"), "", this);
return;
}
}
@@ -179,7 +223,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows
JObject data = new JObject();
data["orderNo"] = OrderItem.order_id;
data["orderCode"] = TransitOrder?.order_code;
data["orderCode"] = TransitOrder?.order_code ?? ExtraPackage.batchId; /* 发货单填写发货单code,额外包裹填写额外包裹新单号 */
data["refundProvince"] = txtProvince.Text.Trim();
data["refundCity"] = txtCity.Text.Trim();
data["refundCounty"] = txtCounty.Text.Trim();
@@ -188,12 +232,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows
data["recipientPhone"] = txtMobile.Text.Trim();
data["account_user"] = BaseClass.UserName;
data["accountUser"] = BaseClass.UserName;
//if (string.IsNullOrWhiteSpace(TransitOrder?.express_1_waybill) && string.IsNullOrWhiteSpace(TransitOrder?.express_2_waybill) &&
// !string.IsNullOrWhiteSpace(txtWarehouseWaybill.Text) && !string.IsNullOrWhiteSpace(txtExpressName.Text.Trim()))
//{
// data["refundWaybill"] = txtWarehouseWaybill.Text.Trim();
// data["returnExpressCompany"] = txtExpressName.Text.Trim();
//}
data["packType"] = PackType; /* 1正常发货拦截退回,2额外包裹拦截退回, */
//data["platform"] = "WEISHOP";
if (GlobalConfig.BuyConfig.IsUseAppBalance)
@@ -214,7 +253,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows
string msg = BaseRegex.GetStringXml(ref getTransitAfterSaleRst, "msg");
if (msg.IsNullOrEmpty())
msg = getTransitAfterSaleRst;
BaseMsgWindow.ShowError("中转售后添加失败,服务端返回 " + msg, "", this);
BaseMsgWindow.ShowError("拦截退货包裹添加失败,服务端返回 " + msg, "", this);
}
else
{
@@ -222,7 +261,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows
await Task.Run(() => { MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); });
//MainWindow.Instance.orderListCtrl.FilterOrders();
StartUp.UpdateBalance();
BaseMsgWindow.ShowInfo("添加退货包裹成功", "", this);
BaseMsgWindow.ShowInfo("添加拦截退货包裹成功", "", this);
this.Close();
}
}
@@ -282,7 +321,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows
{
}
public string AddWorkOrder()
public async Task<string> AddWorkOrderAsync()
{
if (TransitOrder?.warehouse_status == 3)
return "\"success\":true,\"message\":\"已到仓,无需拦截工单\"";
@@ -296,7 +335,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows
obj["creator"] = BaseClass.UserName;
obj["remark"] = "客户要求拦截并退回云仓";
var rst = HttpResponseTransitWorkOrderBLL.PostResponse(this.OrderItem.ItemOrder?.Shop, url, JsonHelper.SerializeObject(obj), "");
var rst = await HttpResponseTransitWorkOrderBLL.PostResponseAsync(this.OrderItem.ItemOrder?.Shop, url, JsonHelper.SerializeObject(obj), "");
return rst;
}
@@ -893,11 +893,6 @@ namespace AllBase.Model.DBModel
public bool GetIsAbnormal()
{
if (order_id == "3740040052771291904")
{
}
// 三退或者两退,为退款完成单
//if (orderItems.All(oi => (oi.refund_status == 4 || oi.refund_status == 11) && (oi.ItemTransitOrder != null || string.IsNullOrWhiteSpace(out_order_no)) &&
// (oi.ItemTransitOrder == null || oi.ItemTransitOrder?.refund_status == "买手退款成功") && (string.IsNullOrWhiteSpace(out_order_no) || out_after_sale_status == "退款成功")))
+106 -18
View File
@@ -1,11 +1,13 @@
using AllBase.Helper;
using AllBase.Model.MvvmBaseClasses;
using NaiBa.Util;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using NPOI.SS.Formula.Functions;
using Org.BouncyCastle.Asn1.Mozilla;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
@@ -20,13 +22,104 @@ namespace AllBase.Model.DBModel
{
public class oms_wei_order_item_info : PropertyNotifyObject
{
///// <summary>
///// 订单对应店铺
///// </summary>
//public ShopLoginInfo Shop
//{
// get { return this.GetValue(x => x.Shop); }
// set { this.SetValue(x => x.Shop, value); }
public List<oms_wei_order_item_transit_detail_info> TransitPackageList
{
get { return this.GetValue(x => x.TransitPackageList); }
set
{
this.SetValue(x => x.TransitPackageList, value);
TransitPackageLatest = TransitPackageList.OrderByDescending(p => p.CreateTime).FirstOrDefault(p => p.TransitVoidStatus != "已作废") ??
TransitPackageList.OrderByDescending(p => p.CreateTime).FirstOrDefault() ??
new oms_wei_order_item_transit_detail_info();
}
}
public oms_wei_order_item_transit_detail_info TransitPackageLatest
{
get { return this.GetValue(x => x.TransitPackageLatest); }
set
{
this.SetValue(x => x.TransitPackageLatest, value);
TransitPackageLatestWarehouseStatusStr = value?.TransitTypeStr + value?.WarehouseStatus;
TransitPackageLatestVoidStatusStr = value?.TransitVoidStatus == "已作废" ? value?.TransitTypeStr + "已作废" : "";
if (order_id == "3740305724012410112")
{
}
if (value != null && value?.TransitTypeStr != "发货包裹")
VoidPackageTypeStr = "作废" + value?.TransitTypeStr;
else
{
VoidPackageTypeStr = "";
if (value != null) value.VoidPackageBtnVisibility = Visibility.Collapsed;
}
}
}
public string TransitPackageLatestWarehouseStatusStr
{
get { return this.GetValue(x => x.TransitPackageLatestWarehouseStatusStr); }
set
{
this.SetValue(x => x.TransitPackageLatestWarehouseStatusStr, value);
var str = value ?? "";
TransitPackageLatestWarehouseStatusStrVisibility = str.Length > 0 ? Visibility.Visible : Visibility.Collapsed;
// 状态文字颜色
if (str.Contains("已出库"))
WarehouseWaybillStatusStrColor = GlobalConfig.GreenBrush;
else if (str.Contains("已入库") || str.Contains("拦截到仓") || str.Contains("未入库"))
WarehouseWaybillStatusStrColor = GlobalConfig.YellowBrush;
else // if (str.Contains("待取号"))
WarehouseWaybillStatusStrColor = GlobalConfig.RedBrush;
// 状态边框颜色
if (str.Contains("已出库"))
WarehouseWaybillStatusBorderColor = GlobalConfig.GreenBrush75;
else if (str.Contains("已入库") || str.Contains("拦截到仓") || str.Contains("未入库"))
WarehouseWaybillStatusBorderColor = GlobalConfig.YellowBrush75;
else // if (str.Contains("待取号"))
WarehouseWaybillStatusBorderColor = GlobalConfig.RedBrush75;
// 状态背景颜色
if (str.Contains("已出库"))
WarehouseWaybillStatusBackColor = GlobalConfig.GreenBrush35;
else if (str.Contains("已入库") || str.Contains("拦截到仓") || str.Contains("未入库"))
WarehouseWaybillStatusBackColor = GlobalConfig.YellowBrush35;
else // if (str.Contains("待取号"))
WarehouseWaybillStatusBackColor = GlobalConfig.RedBrush35;
}
}
public Visibility TransitPackageLatestWarehouseStatusStrVisibility
{
get { return this.GetValue(x => x.TransitPackageLatestWarehouseStatusStrVisibility); }
set { this.SetValue(x => x.TransitPackageLatestWarehouseStatusStrVisibility, value); }
}
public string TransitPackageLatestVoidStatusStr
{
get { return this.GetValue(x => x.TransitPackageLatestVoidStatusStr); }
set { this.SetValue(x => x.TransitPackageLatestVoidStatusStr, value); TransitPackageLatestVoidStatusStrVisibility = string.IsNullOrEmpty(value) ? Visibility.Collapsed : Visibility.Visible; }
}
public Visibility TransitPackageLatestVoidStatusStrVisibility
{
get { return this.GetValue(x => x.TransitPackageLatestVoidStatusStrVisibility); }
set { this.SetValue(x => x.TransitPackageLatestVoidStatusStrVisibility, value); }
}
public string VoidPackageTypeStr
{
get { return this.GetValue(x => x.VoidPackageTypeStr); }
set { this.SetValue(x => x.VoidPackageTypeStr, value); }
}
///// <summary>
///// 订单对应店铺
///// </summary>
//public ShopLoginInfo Shop
//{
// get { return this.GetValue(x => x.Shop); }
// set { this.SetValue(x => x.Shop, value); }
//}
/// <summary>
@@ -38,7 +131,6 @@ namespace AllBase.Model.DBModel
set { this.SetValue(x => x.OrderItemVisibility, value); }
}
#region 订单采购参数
/// <summary>
/// 采购关联
@@ -889,7 +981,7 @@ namespace AllBase.Model.DBModel
}
public void SetTransitRefundStatusStr()
{
TransitRefundStatusStr = oms_wei_order_item_transit_info.GetTransitBuyerRefundStatusStr(this, ItemTransitOrder ?? ItemTransitOrderWithVoid);
TransitRefundStatusStr = oms_wei_order_item_transit_model.GetTransitBuyerRefundStatusStr(this, ItemTransitOrder ?? ItemTransitOrderWithVoid);
if (TransitRefundStatusStr.Contains("退款成功"))
TransitRefundStatusBackColor = GlobalConfig.GreenBrush;
@@ -1708,20 +1800,16 @@ namespace AllBase.Model.DBModel
}
//oms_wei_order_item_transit_model transitInfo = new oms_wei_order_item_transit_model()
//{
// OrderItem = this,
//};
//TransitPackageList = [.. transitInfo.OrderItemTransitDetailList];
oms_wei_order_item_transit_model transitInfo = new oms_wei_order_item_transit_model()
{
OrderItem = this,
};
TransitPackageList = [.. transitInfo.OrderItemTransitDetailList];
}
/// <summary> 初始化物流明细信息 </summary>
public void SetEWaybillInfo()
{
if (order_id == "3738794693820307200")
{
}
if (this.ItemOrder?.latestEWaybills?.Count > 0 && !string.IsNullOrEmpty(ItemTransitOrderWithVoid?.express_2_waybill))
LatestTransitEWaybill = ItemOrder.latestEWaybills.FirstOrDefault(ew => ew.waybill_id == ItemTransitOrderWithVoid.express_2_waybill);
else
@@ -1,6 +1,7 @@
using AllBase.Helper;
using AllBase.Model.MvvmBaseClasses;
using NaiBa.Util.Extension;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@@ -13,7 +14,7 @@ using System.Windows.Media;
namespace AllBase.Model.DBModel;
public class oms_wei_order_item_transit_info : PropertyNotifyObject
public class oms_wei_order_item_transit_model : PropertyNotifyObject
{
public oms_wei_order_item_info OrderItem
{
@@ -31,6 +32,13 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
private set { this.SetValue(x => x.OrderItemTransitDetailList, value); }
}
private bool isGetLatestPackageInfo = false;
public oms_wei_order_item_transit_model (bool _isGetLatestPackage = false)
{
isGetLatestPackageInfo = _isGetLatestPackage;
}
void GetOrderItemTransitList()
{
List<oms_wei_order_item_transit_detail_info> transitDetailList =
@@ -62,11 +70,6 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
{
var transitDetail = new oms_wei_order_item_transit_detail_info()
{
VoidPackageBtnVisibility = Visibility.Visible, /* 作废发货包裹按钮 */
RejectPackageBtnVisibility = Visibility.Visible, /* 拒收发货包裹按钮 */
ReturnPackageBtnVisibility = Visibility.Visible, /* 拦截退货包裹按钮 */
//ExtraPackagesBtnVisibility = Visibility.Visible, /* 额外发货包裹按钮 */
oms_wei_order_item_info = OrderItem,
oms_wei_external_procurement_log_info = transitOrder,
@@ -92,8 +95,8 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
DownWaybill = (transitOrder.express_2_company + "-" + transitOrder.express_2_waybill).Trim('-'),
BuyRefundStatus = transitOrder.refund_status,
CreateTime = transitOrder.created_time == DateTime.MinValue ? null : transitOrder.created_time,
PickUpTime = transitOrder.pickup_time == DateTime.MinValue ? null : transitOrder.pickup_time,
CreateTimeStr = transitOrder.pickup_time == DateTime.MinValue ? null : transitOrder.pickup_time.ToString("yyyy-MM-dd HH:mm:ss"),
InboundTime = transitOrder.inbound_time,
OutboundTime = transitOrder.outbound_time,
@@ -120,8 +123,10 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
transitDetail.TransitStatus = "创建中";
// 中转仓入库状态 0: 未入库, 1: 已入库, 2: 已出库, 3: 拦截到仓
if (transitOrder.warehouse_status == 0)
transitDetail.WarehouseStatus = "已创建";
if (transitOrder.pickup_time > DateTime.MinValue == false)
transitDetail.WarehouseStatus = "未取号";
else if (transitOrder.warehouse_status == null || transitOrder.warehouse_status == 0)
transitDetail.WarehouseStatus = "未入库";
else if (transitOrder.warehouse_status == 1)
transitDetail.WarehouseStatus = "已入库";
else if (transitOrder.warehouse_status == 2)
@@ -160,6 +165,43 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
transitDetail.TransitDetailRefundStatusStr = GetTransitBuyerRefundStatusStr(OrderItem, transitOrder);
//transitDetail.VoidPackageBtnVisibility = !(transitDetail.InboundTime > DateTime.MinValue) && transitOrder.order_void_status != 1 ? Visibility.Visible : Visibility.Collapsed; /* 作废发货包裹按钮 */
//transitDetail.RejectPackageBtnVisibility = !(transitDetail.InboundTime > DateTime.MinValue) ? Visibility.Visible : Visibility.Collapsed; /* 拒收发货包裹按钮 */
//transitDetail.ReturnPackageBtnVisibility = transitDetail.InboundTime > DateTime.MinValue && !(transitDetail.OutboundTime > DateTime.MinValue) &&
// !OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 1 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) &&
// !OrderItem.ItemTransitExtraOrders.Any(af => af.pack_type == "1" && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
// Visibility.Visible : Visibility.Collapsed; /* 退货包裹按钮 */
//transitDetail.InterceptPackageBtnVisibility = transitDetail.OutboundTime > DateTime.MinValue &&
// !OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 1 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) &&
// !OrderItem.ItemTransitExtraOrders.Any(af => af.pack_type == "1" && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
// Visibility.Visible : Visibility.Collapsed; /* 拦截退货包裹按钮 */
//transitDetail.ExtraPackagesBtnVisibility = transitDetail.InboundTime > DateTime.MinValue && !(transitDetail.OutboundTime > DateTime.MinValue) && !(transitDetail.CreateTime > DateTime.Now.AddDays(-4)) &&
// !OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 1 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) &&
// !OrderItem.ItemTransitExtraOrders.Any(af => af.pack_type == "1" && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
// Visibility.Visible : Visibility.Collapsed; /* 额外发货包裹按钮 */
transitDetail.VoidPackageBtnVisibility = transitOrder.warehouse_status == 0 && transitOrder.order_void_status != 1 ? Visibility.Visible : Visibility.Collapsed; /* 作废发货包裹按钮 */
transitDetail.RejectPackageBtnVisibility = transitOrder.warehouse_status == 0 ? Visibility.Visible : Visibility.Collapsed; /* 拒收发货包裹按钮 */
transitDetail.ReturnPackageBtnVisibility = (transitOrder.warehouse_status == 1 || transitOrder.warehouse_status == 3) &&
!OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 1 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) &&
!OrderItem.ItemTransitExtraOrders.Any(af => af.pack_type == "1" && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
Visibility.Visible : Visibility.Collapsed; /* 退货包裹按钮 */
transitDetail.InterceptPackageBtnVisibility = transitOrder.warehouse_status == 2 &&
!OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 1 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) &&
!OrderItem.ItemTransitExtraOrders.Any(af => af.pack_type == "1" && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
Visibility.Visible : Visibility.Collapsed; /* 拦截退货包裹按钮 */
transitDetail.ExtraPackagesBtnVisibility = (transitOrder.warehouse_status == 1 || transitOrder.warehouse_status == 3) && !(transitDetail.CreateTime > DateTime.Now.AddDays(-4)) &&
!OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 1 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) &&
!OrderItem.ItemTransitExtraOrders.Any(af => af.pack_type == "1" && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
Visibility.Visible : Visibility.Collapsed; /* 额外发货包裹按钮 */
//transitDetail.VoidPackageBtnVisibility = Visibility.Visible; /* 作废发货包裹按钮 */
//transitDetail.RejectPackageBtnVisibility = Visibility.Visible; /* 拒收发货包裹按钮 */
//transitDetail.ReturnPackageBtnVisibility = Visibility.Visible; /* 退货包裹按钮 */
//transitDetail.InterceptPackageBtnVisibility = Visibility.Visible; /* 拦截退货包裹按钮 */
//transitDetail.ExtraPackagesBtnVisibility = Visibility.Visible; /* 额外发货包裹按钮 */
detailList.Add(transitDetail);
}
catch (Exception ex)
@@ -190,8 +232,6 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
var transitOrder = OrderItem.ItemTransitOrders?.FirstOrDefault(t => t.order_code == transitAftersaleOrder.order_code);
var transitDetail = new oms_wei_order_item_transit_detail_info()
{
VoidPackageBtnVisibility = Visibility.Visible, /* 作废退货包裹 */
oms_wei_order_item_info = OrderItem,
oms_wei_external_procurement_after_sale_info = transitAftersaleOrder,
@@ -216,9 +256,8 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
DownWaybill = (transitAftersaleOrder.downstream_express_code + "-" + transitAftersaleOrder.downstream_waybill).Trim('-'),
BuyRefundStatus = transitOrder.refund_status,
// todo 退货包裹暂时缺少取号时间
PickUpTime = transitAftersaleOrder.pickup_time == DateTime.MinValue ? null : transitAftersaleOrder.pickup_time,
CreateTimeStr = transitAftersaleOrder.created_time == null ? null : transitAftersaleOrder.created_time.Value.ToString("yyyy-MM-dd HH:mm:ss"),
CreateTime = transitAftersaleOrder.created_time,
PickUpTime = transitAftersaleOrder.pickup_time,
InboundTime = transitAftersaleOrder.inbound_time,
OutboundTime = transitAftersaleOrder.outbound_time,
@@ -245,8 +284,8 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
transitDetail.TransitStatus = "异常";
// 退货包裹入库状态 1=入库 2=出库
if (transitAftersaleOrder.warehouse_status == 0)
transitDetail.WarehouseStatus = "已创建";
if (transitAftersaleOrder.warehouse_status == null || transitAftersaleOrder.warehouse_status == 0)
transitDetail.WarehouseStatus = "未入库";
else if (transitAftersaleOrder.warehouse_status == 1)
transitDetail.WarehouseStatus = "已入库";
else if (transitAftersaleOrder.warehouse_status == 2)
@@ -260,9 +299,18 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
//else if (transitOrder.order_void_status == 2)
// transitDetail.TransitVoidStatus = "作废失败";
//transitDetail.VoidPackageBtnVisibility = !(transitDetail.InboundTime > DateTime.MinValue) && transitAftersaleOrder.order_void_status != 1 ? Visibility.Visible : Visibility.Collapsed; /* 作废退货包裹 */
transitDetail.VoidPackageBtnVisibility = (transitAftersaleOrder.warehouse_status == 0 || transitAftersaleOrder.warehouse_status == 1 || transitAftersaleOrder.warehouse_status == 3) &&
transitAftersaleOrder.order_void_status != 1 ? Visibility.Visible : Visibility.Collapsed; /* 作废退货包裹 */
//transitDetail.VoidPackageBtnVisibility = Visibility.Visible;
// 售后表没有拒收和拒收状态功能
// 售后表拦截成功状态在主表或者额外包裹表显示
// 售后表没有拦截和拦截状态功能
// 主表或者额外包裹表的售后状态在主表显示
detailList.Add(transitDetail);
}
@@ -318,8 +366,8 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
DownWaybill = (transitExtraOrder.real_logistics_code + "-" + transitExtraOrder.real_logistics_express_code).Trim('-'),
BuyRefundStatus = transitOrder.refund_status,
PickUpTime = transitExtraOrder.pickup_time == DateTime.MinValue ? null : transitExtraOrder.pickup_time,
CreateTimeStr = transitExtraOrder.created_time == null ? null : transitExtraOrder.created_time.Value.ToString("yyyy-MM-dd HH:mm:ss"),
CreateTime = transitExtraOrder.created_time,
PickUpTime = transitExtraOrder.pickup_time,
InboundTime = transitExtraOrder.inbound_time,
OutboundTime = transitExtraOrder.outbound_time,
@@ -346,8 +394,8 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
transitDetail.TransitStatus = "处理中";
// 额外包裹入库状态 1=入库 2=出库
if (transitExtraOrder.warehouse_status == 0)
transitDetail.WarehouseStatus = "已创建";
if (transitExtraOrder.warehouse_status == null || transitExtraOrder.warehouse_status == 0)
transitDetail.WarehouseStatus = "未入库";
else if (transitExtraOrder.warehouse_status == 1)
transitDetail.WarehouseStatus = "已入库";
else if (transitExtraOrder.warehouse_status == 2)
@@ -386,6 +434,27 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
else if (transitAfterSaleOrder != null && transitExtraOrder.intercept_return_status == 2)
transitDetail.TransitReturnStatus = "拦截失败";
//transitDetail.VoidPackageBtnVisibility = !(transitDetail.InboundTime > DateTime.MinValue) && transitExtraOrder.order_void_status != 1 ? Visibility.Visible : Visibility.Collapsed; /* 作废额外包裹 */
//transitDetail.ReturnPackageBtnVisibility = transitDetail.InboundTime > DateTime.MinValue && !(transitDetail.OutboundTime > DateTime.MinValue) &&
// transitExtraOrder.pack_type == "1" && !OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 2 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
// Visibility.Visible : Visibility.Collapsed; /* 退货包裹按钮 */
//transitDetail.InterceptPackageBtnVisibility = transitDetail.OutboundTime > DateTime.MinValue &&
// transitExtraOrder.pack_type == "1" && !OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 2 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
// Visibility.Visible : Visibility.Collapsed; /* 拦截退货包裹按钮 */
transitDetail.VoidPackageBtnVisibility = !(transitExtraOrder.warehouse_status == 0 || transitExtraOrder.warehouse_status == 1 || transitExtraOrder.warehouse_status == 3) &&
transitExtraOrder.order_void_status != 1 ? Visibility.Visible : Visibility.Collapsed; /* 作废额外包裹 */
transitDetail.ReturnPackageBtnVisibility = (transitExtraOrder.warehouse_status == 1 || transitExtraOrder.warehouse_status == 3) &&
transitExtraOrder.pack_type == "2" && !OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 2 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
Visibility.Visible : Visibility.Collapsed; /* 退货包裹按钮 */
transitDetail.InterceptPackageBtnVisibility = transitExtraOrder.warehouse_status == 2 &&
transitExtraOrder.pack_type == "2" && !OrderItem.ItemTransitOrderAfterSales.Any(af => af.pack_type == 2 && af.order_code == transitDetail.OrderCode && af.order_void_status != 1) ?
Visibility.Visible : Visibility.Collapsed; /* 拦截退货包裹按钮 */
//transitDetail.VoidPackageBtnVisibility = Visibility.Visible; /* 作废额外包裹 */
//transitDetail.ReturnPackageBtnVisibility = Visibility.Visible; /* 退货包裹按钮 */
//transitDetail.InterceptPackageBtnVisibility = Visibility.Visible; /* 拦截退货包裹按钮 */
detailList.Add(transitDetail);
}
catch (Exception ex)
@@ -422,6 +491,9 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
}
}
/// <summary>
/// 包裹相关信息
/// </summary>
public class oms_wei_order_item_transit_detail_info : PropertyNotifyObject
{
public oms_wei_order_item_transit_detail_info()
@@ -430,13 +502,14 @@ public class oms_wei_order_item_transit_detail_info : PropertyNotifyObject
VoidPackageBtnVisibility = Visibility.Collapsed;
RejectPackageBtnVisibility = Visibility.Collapsed;
ReturnPackageBtnVisibility = Visibility.Collapsed;
InterceptPackageBtnVisibility = Visibility.Collapsed;
ExtraPackagesBtnVisibility = Visibility.Collapsed;
}
public oms_wei_order_item_info oms_wei_order_item_info { get; set; }
public oms_wei_external_procurement_log_info oms_wei_external_procurement_log_info { get; set; }
public oms_wei_external_procurement_after_sale_info oms_wei_external_procurement_after_sale_info { get; set; }
public oms_wei_transfer_extra_package oms_wei_transfer_extra_package { get; set; }
public oms_wei_external_procurement_log_info oms_wei_external_procurement_log_info { get; set; } /* 发货包裹 */
public oms_wei_external_procurement_after_sale_info oms_wei_external_procurement_after_sale_info { get; set; } /* 退货包裹 */
public oms_wei_transfer_extra_package oms_wei_transfer_extra_package { get; set; } /* 额外包裹 */
public decimal Opacity
{
@@ -450,9 +523,7 @@ public class oms_wei_order_item_transit_detail_info : PropertyNotifyObject
set { this.SetValue(x => x.ShopName, value); }
}
/// <summary>
/// 仓库类型 发货包裹 退货包裹
/// </summary>
/// <summary> 仓库类型: 发货包裹 退货包裹 额外包裹 </summary>
public string TransitTypeStr
{
get { return this.GetValue(x => x.TransitTypeStr); }
@@ -493,6 +564,11 @@ public class oms_wei_order_item_transit_detail_info : PropertyNotifyObject
get { return this.GetValue(x => x.WarehouseName); }
set { this.SetValue(x => x.WarehouseName, value); }
}
public DateTime? CreateTime
{
get { return this.GetValue(x => x.CreateTime); }
set { this.SetValue(x => x.CreateTime, value); CreateTimeStr = value == null ? null : value.Value.ToString("yyyy-MM-dd HH:mm:ss"); }
}
public string CreateTimeStr
{
get { return this.GetValue(x => x.CreateTimeStr); }
@@ -568,7 +644,7 @@ public class oms_wei_order_item_transit_detail_info : PropertyNotifyObject
get { return this.GetValue(x => x.TransitStatus); }
set { this.SetValue(x => x.TransitStatus, value); }
}
/// <summary> 仓库状态 </summary>
/// <summary> 仓库状态文本: 未入库 已入库 已出库 拦截到仓</summary>
public string WarehouseStatus
{
get { return this.GetValue(x => x.WarehouseStatus); }
@@ -663,11 +739,22 @@ public class oms_wei_order_item_transit_detail_info : PropertyNotifyObject
get { return this.GetValue(x => x.RejectPackageBtnVisibility); }
set { this.SetValue(x => x.RejectPackageBtnVisibility, value); }
}
/// <summary>
/// 直接退回包裹
/// </summary>
public Visibility ReturnPackageBtnVisibility
{
get { return this.GetValue(x => x.ReturnPackageBtnVisibility); }
set { this.SetValue(x => x.ReturnPackageBtnVisibility, value); }
}
/// <summary>
/// 拦截退回包裹
/// </summary>
public Visibility InterceptPackageBtnVisibility
{
get { return this.GetValue(x => x.InterceptPackageBtnVisibility); }
set { this.SetValue(x => x.InterceptPackageBtnVisibility, value); }
}
public Visibility ExtraPackagesBtnVisibility
{
get { return this.GetValue(x => x.ExtraPackagesBtnVisibility); }
@@ -77,7 +77,10 @@ public class oms_wei_transfer_extra_package : PropertyNotifyObject
public int? postage { get; set; } // '订单初始费用(分)',
public int? retry_acquire_success { get; set; } // '重试取号是否成功 0=未尝试/未重试 1=成功 2=失败',
public int? over_weight_fee { get; set; } // '超重费用',
public string pack_type { get; set; } // '中转仓额外包裹类型 1商品2额外3礼品4退货',
/// <summary>
/// 中转仓额外包裹类型 1商品2额外3礼品4退货
/// </summary>
public string pack_type { get; set; }
public DateTime? rejected_time { get; set; } // '拒收时间',
public int? has_reject { get; set; } // DEFAULT NULL,
public DateTime? blocked_arrival_time { get; set; }
+18 -18
View File
@@ -185,13 +185,13 @@ namespace AllBase.Model.Result
get { return this.GetValue(x => x.thumbUrl); }
set { this.SetValue(x => x.thumbUrl, value); }
} // "https://t00img.yangkeduo.com/t10img/images/2018-06-09/5c7746a3608e75a2b65926f4ed0f34cb.jpeg",
public int? initQuantity { get; set; } // 0,
public int? quantity { get; set; } // 1000,
public int? limitQuantity { get; set; } // 999999,
public int? soldQuantity { get; set; } // 0,
public int? hotSale { get; set; } // 1,
public int? defaultQuantity { get; set; } // 100,
public int? isOnsale { get; set; } // 1,
//public int? initQuantity { get; set; } // 0,
//public int? quantity { get; set; } // 1000,
//public int? limitQuantity { get; set; } // 999999,
//public int? soldQuantity { get; set; } // 0,
//public int? hotSale { get; set; } // 1,
//public int? defaultQuantity { get; set; } // 100,
//public int? isOnsale { get; set; } // 1,
public string spec { get; set; } // "677094835",
[JsonIgnore]
public string SpecNameStr
@@ -216,17 +216,17 @@ namespace AllBase.Model.Result
public string normalPrice { get; set; } // "14.5",
public string groupPrice { get; set; } // "13.5",
public int? oldGroupPrice { get; set; } // 1350,
public int? marketPrice { get; set; } // 0,
public int? weight { get; set; } // 2500,
public List<yellowLabelListInfo> yellowLabelList { get; set; }
public int? previewPriority { get; set; } // 0,
public int? startTime { get; set; } // 0,
public int? endTime { get; set; } // 0,
public int? staticLimitQuantity { get; set; } // 999999,
public string attribute { get; set; } // "{\"skuPreSaleTime\":0}",
public string normalSavePrice { get; set; } // "1",
public long? skuID { get; set; } // 28790184768,
public string skuExpansionPrice { get; set; } // "0"
//public int? marketPrice { get; set; } // 0,
//public int? weight { get; set; } // 2500,
//public List<yellowLabelListInfo> yellowLabelList { get; set; }
//public int? previewPriority { get; set; } // 0,
//public int? startTime { get; set; } // 0,
//public int? endTime { get; set; } // 0,
//public int? staticLimitQuantity { get; set; } // 999999,
//public string attribute { get; set; } // "{\"skuPreSaleTime\":0}",
//public string normalSavePrice { get; set; } // "1",
//public long? skuID { get; set; } // 28790184768,
//public string skuExpansionPrice { get; set; } // "0"
}
public class yellowLabelListInfo
@@ -81,6 +81,71 @@ namespace Work._29Tools.BLL
return result;
}
public static async Task<string> PostResponseAsync(ShopLoginInfo shop, string _url, string _body, string referer)
{
string cookies = "";
try
{
var cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>((shop?.Cookies).ParseToString());
if (cookieLst == null)
cookieLst = new List<CefSharp.Cookie>();
foreach (var cook in cookieLst)
{
cookies += cook.Name + "=" + cook.Value + ";";
}
}
catch { }
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
request.ContentType = "application/json";
request.Accept = "*/*";
request.Headers.Add("Origin", WorkOrderUrl);
request.Headers.Add("X-Api-Key", "rwo_vmRcWpEFIB9zSTRkXoKSeTpq.ihFaJR7SPFi6GsmKtkorSKo-uj3IsYAvhJQI7lLKu1M");
request.Referer = referer;
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
if (!string.IsNullOrEmpty(cookies))
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = _body;
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)await request.GetResponseAsync();
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)ex.Response;
result = HttpResponseBLL.ReadResponse(response);
return result;
}
else return ex.Message;
}
catch (Exception e)
{
if (response != null) response.Close();
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
return result;
}
public static string GetResponse(ShopLoginInfo shop, string _url, string referer)
{
+12 -8
View File
@@ -569,6 +569,9 @@ namespace Work._29Tools.BLL
//if (string.IsNullOrEmpty(Authorization)) Authorization = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjQ3YmRlOGNlLWY5MDUtNDIzOS05M2VjLWZiN2U3MjRmOTY0NiJ9.vwxhj3t4zTDdBQTyfVjcKr-0Oma8-VtPDzE2LVkw4A4aWftncY1ikXgEhGwoYHn9E7yOnhS_Pb7FfzgecTqqHA";
bool isRetry = false;
Retry:
if (string.IsNullOrEmpty(sAuthorization))
{
var url3 = BaseClass.Build29WxObjString("user/get_e57_authorization");
@@ -579,8 +582,6 @@ namespace Work._29Tools.BLL
sAuthorization = BaseRegex.GetStringJson(ref html3, "authorization");
}
Retry:
HttpWebResponse response = null;
string result;
try
@@ -644,7 +645,7 @@ namespace Work._29Tools.BLL
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
if (result.Contains("没有Authorization") && !isRetry)
if ((result.Contains("没有Authorization") || result.Contains("授权过期")) && !isRetry)
{
isRetry = true;
sAuthorization = "";
@@ -660,6 +661,9 @@ namespace Work._29Tools.BLL
////if (string.IsNullOrEmpty(Authorization)) Authorization = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjQ3YmRlOGNlLWY5MDUtNDIzOS05M2VjLWZiN2U3MjRmOTY0NiJ9.vwxhj3t4zTDdBQTyfVjcKr-0Oma8-VtPDzE2LVkw4A4aWftncY1ikXgEhGwoYHn9E7yOnhS_Pb7FfzgecTqqHA";
bool isRetry = false;
Retry:
if (string.IsNullOrEmpty(sAuthorization))
{
var url3 = BaseClass.Build29WxObjString("user/get_e57_authorization");
@@ -670,8 +674,6 @@ namespace Work._29Tools.BLL
sAuthorization = BaseRegex.GetStringJson(ref html3, "authorization");
}
Retry:
HttpWebResponse response = null;
string result;
try
@@ -726,7 +728,7 @@ namespace Work._29Tools.BLL
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
if (result.Contains("没有Authorization") && !isRetry)
if ((result.Contains("没有Authorization") || result.Contains("授权过期")) && !isRetry)
{
isRetry = true;
sAuthorization = "";
@@ -738,6 +740,9 @@ namespace Work._29Tools.BLL
public static string e57GetResponse(string _url, string referer)
{
bool isRetry = false;
Retry:
if (string.IsNullOrEmpty(sAuthorization))
{
var url3 = BaseClass.Build29WxObjString("user/get_e57_authorization");
@@ -747,7 +752,6 @@ namespace Work._29Tools.BLL
html3 = GetHtml.PostUtf8(url3, data3);
sAuthorization = BaseRegex.GetStringJson(ref html3, "authorization");
}
Retry:
HttpWebResponse response = null;
string result;
@@ -802,7 +806,7 @@ namespace Work._29Tools.BLL
return e.Message;
}
result = HttpResponseBLL.ReadResponse(response);
if (result.Contains("没有Authorization") && !isRetry)
if ((result.Contains("没有Authorization") || result.Contains("授权过期")) && !isRetry)
{
isRetry = true;
sAuthorization = "";
+2 -1
View File
@@ -866,7 +866,7 @@ namespace TemuKJD.ToolForms
}
else
{
return "获取失败,请关闭拍单窗口重试 " + BaseRegex.GetStringXml(ref sourceCodeRst, "msg", sourceCodeRst);
return "溯源码获取失败,请关闭拍单窗口重试 " + BaseRegex.GetStringXml(ref sourceCodeRst, "msg", sourceCodeRst);
}
}
@@ -1515,6 +1515,7 @@ namespace TemuKJD.ToolForms
order_sku_id = orderItem.sku_id,
out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(),
out_order_no = txtBuyOrderId.Text.Trim(),
order_code = txtBuyOrderId.Text.Trim(),
purchaser_note = body["purchaserNote"].ParseToString(),
created_time = DateTime.Now,
});