182 lines
6.0 KiB
C#
182 lines
6.0 KiB
C#
using _29WxOrderWpf.BaseWindows;
|
|
using WxOrder.Framework.Commons;
|
|
using _29WxOrderWpf.Ctrls.OrderCtrls;
|
|
using AllBase;
|
|
using AllBase.Helper;
|
|
using AllBase.Model.Config;
|
|
using AllBase.Model.DBModel;
|
|
using AllBase.Model.MvvmBaseClasses;
|
|
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;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
using System.Windows.Threading;
|
|
using Work;
|
|
using Work._29Tools.BLL;
|
|
using Work._29Tools.Forms.ShopForms;
|
|
|
|
namespace _29WxOrderWpf.ViewModels
|
|
|
|
{
|
|
/// <summary>
|
|
/// 更改运单号ViewModel
|
|
/// </summary>
|
|
public class TransitExtraPackagesViewModel : PropertyNotifyObject
|
|
{
|
|
public oms_wei_order_info Order
|
|
{
|
|
get { return this.GetValue(x => x.Order); }
|
|
set { this.SetValue(x => x.Order, value); }
|
|
}
|
|
public oms_wei_order_item_info OrderItem
|
|
{
|
|
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); }
|
|
set { this.SetValue(x => x.purchaserNote, value); }
|
|
}
|
|
public string WaybillId
|
|
{
|
|
get { return this.GetValue(x => x.WaybillId); }
|
|
set { this.SetValue(x => x.WaybillId, value); }
|
|
}
|
|
public bool IsChangeingWaybill
|
|
{
|
|
get { return this.GetValue(x => x.IsChangeingWaybill); }
|
|
set { this.SetValue(x => x.IsChangeingWaybill, value); }
|
|
}
|
|
public bool ChangeWaybillSuccess
|
|
{
|
|
get { return this.GetValue(x => x.ChangeWaybillSuccess); }
|
|
set { this.SetValue(x => x.ChangeWaybillSuccess, value); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 请求关闭窗口
|
|
/// </summary>
|
|
public event Action RequestClose;
|
|
|
|
#region 命令
|
|
|
|
public ICommand AddExtraPackagesCommand { get; }
|
|
|
|
#endregion
|
|
private volatile bool _isWindowLoaded = false;
|
|
|
|
public TransitExtraPackagesViewModel(oms_wei_order_info _order, oms_wei_order_item_info _orderItem)
|
|
{
|
|
Order = _order;
|
|
OrderItem = _orderItem;
|
|
|
|
AddExtraPackagesCommand = new DelegateCommand(AddExtraPackages);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 窗口加载完成时调用
|
|
/// </summary>
|
|
public void Start()
|
|
{
|
|
_isWindowLoaded = true;
|
|
}
|
|
/// <summary>
|
|
/// 窗口关闭时调用,停止后台任务
|
|
/// </summary>
|
|
public void Stop()
|
|
{
|
|
_isWindowLoaded = false;
|
|
}
|
|
|
|
public void AddExtraPackages()
|
|
{
|
|
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)
|
|
{
|
|
BaseMsgWindow.ShowError("有尚未作废的补发订单,请作废后再创建");
|
|
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"] = TransitOrder.order_code + "-" + ((OrderItem.ItemTransitExtraOrders?.Count).ParseToInt() + 1);
|
|
body["orderNo"] = OrderItem.order_id;
|
|
body["orderCode"] = TransitOrder.order_code;
|
|
|
|
// 未出库填上游物流,已出库填下游物流
|
|
if (TransitOrder.warehouse_status != 2)
|
|
{
|
|
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["accountUser"] = BaseClass.UserName;
|
|
body["purchaserNote"] = purchaserNote.ParseToString(); // 采购人备注
|
|
body["orderPlatformCode"] = "WEISHOP";
|
|
|
|
var url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/extra-packages/save";
|
|
var dataStr = JsonHelper.SerializeObject(body);
|
|
//<AjaxResult><msg>parentOrderCode不能为空</msg><code>2</code></AjaxResult>
|
|
//<AjaxResult><msg>创建额外包裹异常: Cannot invoke "cn.qihangerp.oms.domain.SecondUser.getBalance()" because "secondUser" is null</msg><code>2</code></AjaxResult>
|
|
var rst = HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
|
|
//3739278903964250368
|
|
// <AjaxResult><msg>创建额外包裹异常: 用户账户余额不足,需至少 2.20 元用于中转仓取号, userId:17333276316, balance:0.85</msg><code>2</code></AjaxResult>
|
|
if (BaseRegex.GetStringXml(ref rst, "code") != "0" && BaseRegex.GetStringXml(ref rst, "code") != "200")
|
|
{
|
|
BaseMsgWindow.ShowError("服务端返回:" + BaseRegex.GetStringXml(ref rst, "msg"));
|
|
return;
|
|
}
|
|
|
|
|
|
var data = new JObject();
|
|
data["batchId"] = body["batchId"];
|
|
data["orderCode"] = body["orderCode"];
|
|
dataStr = JsonHelper.SerializeObject(data);
|
|
url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/thirdparty/extraPackages";
|
|
rst = HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
|
|
// <AjaxResult><msg>额外信息已保存</msg><code>200</code></AjaxResult>
|
|
if (BaseRegex.GetStringXml(ref rst, "code") != "0" && BaseRegex.GetStringXml(ref rst, "code") != "200")
|
|
{
|
|
BaseMsgWindow.ShowError("服务端返回:" + BaseRegex.GetStringXml(ref rst, "msg"));
|
|
return;
|
|
}
|
|
|
|
Task.Run(() =>
|
|
{
|
|
StartUp.UpdateBalance();
|
|
MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id);
|
|
});
|
|
RequestClose?.Invoke();
|
|
}
|
|
}
|
|
}
|