You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
291 lines
11 KiB
291 lines
11 KiB
using BBWY.Client.Extensions;
|
|
using BBWY.Client.Models;
|
|
using BBWY.Common.Models;
|
|
using GalaSoft.MvvmLight.Command;
|
|
using Microsoft.Win32;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
|
|
namespace BBWY.Client.ViewModels
|
|
{
|
|
public class ProcurementAuditViewModel : BaseVM, IDenpendency
|
|
{
|
|
private AuditFile selectAuditFile;
|
|
|
|
public IList<AuditFile> AuditFileList { get; set; }
|
|
|
|
public IList<AuditPayBill> AuditPayBillList { get; set; }
|
|
|
|
public IList<AuditPurchaseOrder> AuditPurchaseOrderList { get; set; }
|
|
|
|
public IList<AuditShopOrder> AuditShopOrderList { get; set; }
|
|
|
|
public IList<AuditPayBill> ShowAuditPayBillList { get; set; }
|
|
|
|
public IList<AuditPurchaseOrder> ShowAuditPurchaseOrderList { get; set; }
|
|
|
|
public IList<AuditShopOrder> ShowAuditShopOrderList { get; set; }
|
|
|
|
public AuditFile SelectAuditFile { get => selectAuditFile; set { Set(ref selectAuditFile, value); } }
|
|
|
|
public ICommand AuditCommand { get; set; }
|
|
|
|
public ICommand ClearAuditCommand { get; set; }
|
|
|
|
public ICommand ImportAliPayBillCommand { get; set; }
|
|
|
|
|
|
|
|
public ICommand Import1688PurchaseOrderCommand { get; set; }
|
|
|
|
|
|
|
|
public ICommand ImportJDShopOrderCommand { get; set; }
|
|
|
|
|
|
|
|
public ProcurementAuditViewModel()
|
|
{
|
|
AuditFileList = new ObservableCollection<AuditFile>();
|
|
AuditCommand = new RelayCommand(Audit);
|
|
ClearAuditCommand = new RelayCommand(ClearAudit);
|
|
ImportAliPayBillCommand = new RelayCommand(ImportAliPayBill);
|
|
|
|
|
|
Import1688PurchaseOrderCommand = new RelayCommand(Import1688PurchaseOrder);
|
|
|
|
|
|
ImportJDShopOrderCommand = new RelayCommand(ImportJDShopOrder);
|
|
|
|
AuditFileList = new ObservableCollection<AuditFile>();
|
|
AuditPayBillList = new ObservableCollection<AuditPayBill>();
|
|
AuditPurchaseOrderList = new ObservableCollection<AuditPurchaseOrder>();
|
|
AuditShopOrderList = new ObservableCollection<AuditShopOrder>();
|
|
ShowAuditPayBillList = new ObservableCollection<AuditPayBill>();
|
|
ShowAuditPurchaseOrderList = new ObservableCollection<AuditPurchaseOrder>();
|
|
ShowAuditShopOrderList = new ObservableCollection<AuditShopOrder>();
|
|
|
|
//AuditFileList.Add(new AuditFile() { FileName = "支付宝账单20220527.csv", AuditFileType = AuditFileType.账单 });
|
|
//AuditFileList.Add(new AuditFile() { FileName = "1688采购单20220527.csv", AuditFileType = AuditFileType.采购单 });
|
|
//AuditFileList.Add(new AuditFile() { FileName = "支付宝账单20220527.csv", AuditFileType = AuditFileType.销售订单 });
|
|
|
|
}
|
|
|
|
private void Audit()
|
|
{
|
|
if (AuditPayBillList.Count() == 0 ||
|
|
AuditPurchaseOrderList.Count() == 0 ||
|
|
AuditShopOrderList.Count() == 0)
|
|
{
|
|
MessageBox.Show("审核数据不全", "提示");
|
|
return;
|
|
}
|
|
|
|
AuditByPayBill();
|
|
AuditByPurchaseOrder();
|
|
}
|
|
|
|
private void AuditByPayBill()
|
|
{
|
|
|
|
}
|
|
|
|
private void AuditByPurchaseOrder()
|
|
{
|
|
|
|
}
|
|
|
|
private void ClearAudit()
|
|
{
|
|
SelectAuditFile = null;
|
|
AuditFileList.Clear();
|
|
AuditPayBillList.Clear();
|
|
AuditPurchaseOrderList.Clear();
|
|
AuditShopOrderList.Clear();
|
|
ShowAuditPayBillList.Clear();
|
|
ShowAuditPurchaseOrderList.Clear();
|
|
ShowAuditShopOrderList.Clear();
|
|
}
|
|
|
|
private (string ErrorMessage, string FileName, IList<string> Lines) ImportAuditFile(AuditFileType auditFileType)
|
|
{
|
|
var ofd = new OpenFileDialog() { Filter = "CSV Files (*.csv)|*.csv" };
|
|
if (ofd.ShowDialog() != true)
|
|
return (string.Empty, string.Empty, null);
|
|
var fileName = ofd.FileName.Substring(ofd.FileName.LastIndexOf("\\") + 1);
|
|
var filePath = ofd.FileName;
|
|
if (AuditFileList.Any(f => f.FileName == fileName))
|
|
return ("文件已存在", string.Empty, null);
|
|
try
|
|
{
|
|
var lines = File.ReadAllLines(filePath, Encoding.GetEncoding("GB2312")).ToList();
|
|
AuditFileList.Add(new AuditFile() { FileName = fileName, AuditFileType = auditFileType });
|
|
return (string.Empty, fileName, lines);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return (ex.Message, string.Empty, null);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导入支付宝账单
|
|
/// </summary>
|
|
private void ImportAliPayBill()
|
|
{
|
|
var importResult = ImportAuditFile(AuditFileType.账单);
|
|
if (!string.IsNullOrEmpty(importResult.ErrorMessage))
|
|
{
|
|
MessageBox.Show(importResult.ErrorMessage, "导入支付宝账单");
|
|
return;
|
|
}
|
|
//忽略前5行
|
|
/*
|
|
#支付宝账务明细查询
|
|
#账号:[20883422054731100156]
|
|
#起始日期:[2022年04月01日 00:00:00] 终止日期:[2022年05月01日 00:00:00]
|
|
#-----------------------------------------账务明细列表----------------------------------------
|
|
账务流水号 业务流水号 商户订单号 商品名称 发生时间 对方账号 收入金额(+元) 支出金额(-元) 账户余额(元) 交易渠道 业务类型 备注
|
|
*/
|
|
for (var i = 0; i < 5; i++)
|
|
importResult.Lines.RemoveAt(0);
|
|
|
|
//忽略后4行
|
|
/*
|
|
#-----------------------------------------账务明细列表结束------------------------------------
|
|
#支出合计:681笔,共-39623.27元
|
|
#收入合计:85笔,共43889.26元
|
|
#导出时间:[2022年05月01日 10:13:45]
|
|
*/
|
|
for (var i = 0; i < 4; i++)
|
|
{
|
|
importResult.Lines.RemoveAt(importResult.Lines.Count() - 1);
|
|
}
|
|
|
|
var payBillNo = "";
|
|
try
|
|
{
|
|
foreach (var line in importResult.Lines)
|
|
{
|
|
var array = line.CSVstrToArry();
|
|
payBillNo = array[0].Replace("\"", string.Empty).Replace("\t", string.Empty).Trim();
|
|
if (AuditPayBillList.Any(p => p.PayBillNo == payBillNo))
|
|
continue;
|
|
var payBill = new AuditPayBill()
|
|
{
|
|
BelongFileName = importResult.FileName,
|
|
PayBillNo = payBillNo,
|
|
PayBillType = PayBillType.AliPay,
|
|
SourceMerchantOrderNo = array[2].FormatString(),
|
|
ProductName = array[3].FormatString(),
|
|
PayTime = DateTime.Parse(array[4].FormatString()),
|
|
OppositeAccount = array[5].FormatString(),
|
|
ExpenditureAmount = decimal.Parse(array[7].FormatString())
|
|
};
|
|
payBill.MerchantOrderNo = payBill.SourceMerchantOrderNo;
|
|
if (payBill.SourceMerchantOrderNo.StartsWith("T50060NP"))
|
|
payBill.MerchantOrderNo = payBill.SourceMerchantOrderNo.Substring(8);
|
|
AuditPayBillList.Add(payBill);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show($"问题账单号{payBillNo} {ex.Message}", "导入支付宝账单");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导入1688采购单
|
|
/// </summary>
|
|
private void Import1688PurchaseOrder()
|
|
{
|
|
var importResult = ImportAuditFile(AuditFileType.采购单);
|
|
if (!string.IsNullOrEmpty(importResult.ErrorMessage))
|
|
{
|
|
MessageBox.Show(importResult.ErrorMessage, "导入1688采购单");
|
|
return;
|
|
}
|
|
|
|
//去掉列名
|
|
importResult.Lines.RemoveAt(0);
|
|
|
|
var purchaseOrderId = "";
|
|
try
|
|
{
|
|
foreach (var line in importResult.Lines)
|
|
{
|
|
var array = line.CSVstrToArry();
|
|
purchaseOrderId = array[0].FormatString();
|
|
if (string.IsNullOrEmpty(purchaseOrderId) || AuditPurchaseOrderList.Any(p => p.PurchaseOrderId == purchaseOrderId))
|
|
continue;
|
|
var purchaseOrder = new AuditPurchaseOrder()
|
|
{
|
|
PurchaseOrderId = purchaseOrderId,
|
|
Platform = Platform.阿里巴巴,
|
|
BelongFileName = importResult.FileName,
|
|
ProductAmount = decimal.Parse(array[5].FormatString()),
|
|
Freight = decimal.Parse(array[6].FormatString()),
|
|
PayAmount = decimal.Parse(array[8].FormatString()),
|
|
CreateTime = DateTime.Parse(array[10].FormatString()),
|
|
ContactName = array[13].FormatString(),
|
|
Address = array[14].FormatString(),
|
|
Phone = array[17].FormatString(),
|
|
Quantity = int.Parse(array[20].FormatString())
|
|
};
|
|
if (!string.IsNullOrEmpty(array[11]))
|
|
purchaseOrder.PayTime = DateTime.Parse(array[11].FormatString());
|
|
AuditPurchaseOrderList.Add(purchaseOrder);
|
|
}
|
|
Console.WriteLine(AuditPurchaseOrderList.Count());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show($"问题采购单号{purchaseOrderId} {ex.Message}", "导入1688采购单");
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导入京东销售订单
|
|
/// </summary>
|
|
private void ImportJDShopOrder()
|
|
{
|
|
var importResult = ImportAuditFile(AuditFileType.销售订单);
|
|
if (!string.IsNullOrEmpty(importResult.ErrorMessage))
|
|
{
|
|
MessageBox.Show(importResult.ErrorMessage, "导入京东销售订单");
|
|
return;
|
|
}
|
|
|
|
//去掉列名
|
|
importResult.Lines.RemoveAt(0);
|
|
var orderId = "";
|
|
try
|
|
{
|
|
foreach (var line in importResult.Lines)
|
|
{
|
|
var array = line.CSVstrToArry();
|
|
orderId = array[0].FormatString();
|
|
if (string.IsNullOrEmpty(orderId) || AuditShopOrderList.Any(p => p.OrderId == orderId))
|
|
continue;
|
|
var order = new AuditShopOrder()
|
|
{
|
|
OrderId = orderId,
|
|
|
|
};
|
|
AuditShopOrderList.Add(order);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show($"问题销售订单号{orderId} {ex.Message}", "导入京东销售订单");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|