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.
632 lines
43 KiB
632 lines
43 KiB
using EasyBL.WebApi.Message;
|
|
using Entity.Sugar;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using SqlSugar;
|
|
using SqlSugar.Base;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace EasyBL.WEBAPP.OPM
|
|
{
|
|
public class Accounting_QryService : ServiceBase
|
|
{
|
|
public class BillPayerInfo
|
|
{
|
|
public int RowIndex { get; set; }
|
|
public string ExhibitioName { get; set; }
|
|
public string BillNO { get; set; }
|
|
public string Payer { get; set; }
|
|
public string CreateDate { get; set; }
|
|
public string Amount { get; set; }
|
|
}
|
|
|
|
#region 成本押款和稅金查詢
|
|
|
|
/// <summary>
|
|
/// 成本押款和稅金查詢
|
|
/// </summary>
|
|
/// <param name="i_crm">todo: describe i_crm parameter on GetBillsList</param>
|
|
/// <returns></returns>
|
|
public ResponseMessage GetBillsList(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
var list = new List<BillPayerInfo>();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
var sFeeClass = _fetchString(i_crm, @"FeeClass");
|
|
var sCheckDateStart = _fetchString(i_crm, @"CheckDateStart");
|
|
var sCheckDateEnd = _fetchString(i_crm, @"CheckDateEnd");
|
|
var rCheckDateStart = SqlFunc.ToDate(sCheckDateStart).Date;
|
|
var rCheckDateEnd = SqlFunc.ToDate(sCheckDateEnd).Date;
|
|
var saFeeClass = sFeeClass.Split(',');
|
|
foreach (string feeclass in saFeeClass)
|
|
{
|
|
var listIm = db.Queryable<OTB_OPM_ImportExhibition, OTB_OPM_Exhibition>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.ExhibitionNO == b.SN.ToString() })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && (SqlFunc.Contains(a.ActualCost, feeclass) || SqlFunc.Contains(a.ReturnBills, feeclass)))
|
|
.Select((a, b) => new { a.ActualCost, a.ReturnBills, a.ImportBillName, b.ExhibitionCode }).ToList();
|
|
foreach (var im in listIm)
|
|
{
|
|
var JActualCost = (JObject)JsonConvert.DeserializeObject(im.ActualCost);
|
|
if (JActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = im.ExhibitionCode + @" - " + im.ImportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
var JaReturnBills = (JArray)JsonConvert.DeserializeObject(im.ReturnBills);
|
|
foreach (JObject bill in JaReturnBills)
|
|
{
|
|
if (bill[@"ActualCost"] != null)
|
|
{
|
|
var JReturnActualCost = (JObject)JsonConvert.DeserializeObject(bill[@"ActualCost"].ToString());
|
|
if (JReturnActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JReturnActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = im.ExhibitionCode + @" - " + im.ImportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var listEx = db.Queryable<OTB_OPM_ExportExhibition, OTB_OPM_Exhibition>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.ExhibitionNO == b.SN.ToString() })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && (SqlFunc.Contains(a.ActualCost, feeclass) || SqlFunc.Contains(a.ReturnBills, feeclass)))
|
|
.Select((a, b) => new { a.ActualCost, a.ReturnBills, a.ExportBillName, b.ExhibitionCode }).ToList();
|
|
foreach (var _ex in listEx)
|
|
{
|
|
var JActualCost = (JObject)JsonConvert.DeserializeObject(_ex.ActualCost);
|
|
if (JActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = _ex.ExhibitionCode + @" - " + _ex.ExportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
var JaReturnBills = (JArray)JsonConvert.DeserializeObject(_ex.ReturnBills);
|
|
foreach (JObject bill in JaReturnBills)
|
|
{
|
|
if (bill[@"ActualCost"] != null)
|
|
{
|
|
var JReturnActualCost = (JObject)JsonConvert.DeserializeObject(bill[@"ActualCost"].ToString());
|
|
if (JReturnActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JReturnActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = _ex.ExhibitionCode + @" - " + _ex.ExportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var listOt = db.Queryable<OTB_OPM_OtherExhibition, OTB_OPM_Exhibition>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.ExhibitionNO == b.SN.ToString() })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && SqlFunc.Contains(a.ActualCost, feeclass))
|
|
.Select((a, b) => new { a.ActualCost, a.ImportBillName, b.ExhibitionCode }).ToList();
|
|
foreach (var ot in listOt)
|
|
{
|
|
var JActualCost = (JObject)JsonConvert.DeserializeObject(ot.ActualCost);
|
|
if (JActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = ot.ExhibitionCode + @" - " + ot.ImportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var listOt_TG = db.Queryable<OTB_OPM_OtherExhibitionTG, OTB_OPM_Exhibition>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.ExhibitionNO == b.SN.ToString() })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && SqlFunc.Contains(a.ActualCost, feeclass))
|
|
.Select((a, b) => new { a.ActualCost, a.ImportBillName, b.ExhibitionCode }).ToList();
|
|
foreach (var ot in listOt_TG)
|
|
{
|
|
var JActualCost = (JObject)JsonConvert.DeserializeObject(ot.ActualCost);
|
|
if (JActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = ot.ExhibitionCode + @" - " + ot.ImportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var listRetn = new List<BillPayerInfo>();
|
|
var iRowNumber = 1;
|
|
foreach (BillPayerInfo Info in list)
|
|
{
|
|
var sCreateDate = Info.CreateDate ?? @"";
|
|
var rCreateDate = SqlFunc.ToDate(sCreateDate).Date;
|
|
if ((sCheckDateStart == @"" && sCheckDateEnd == @"")
|
|
|| (sCreateDate != @"" && sCheckDateStart != @"" && sCheckDateEnd == @"" && rCheckDateStart <= rCreateDate)
|
|
|| (sCreateDate != @"" && sCheckDateStart == @"" && sCheckDateEnd != @"" && rCheckDateEnd >= rCreateDate)
|
|
|| (sCreateDate != @"" && sCheckDateStart != @"" && sCheckDateEnd != @"" && rCheckDateStart <= rCreateDate) && rCheckDateEnd >= rCreateDate)
|
|
{
|
|
Info.RowIndex = iRowNumber;
|
|
listRetn.Add(Info);
|
|
iRowNumber++;
|
|
}
|
|
}
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, listRetn);
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Accounting_QryService), @"成本押款和稅金查詢", @"GetBillsList(成本押款和稅金查詢)", @"", @"", @"");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
#endregion 成本押款和稅金查詢
|
|
|
|
#region 實際成本押款和稅金查詢匯出
|
|
|
|
/// <summary>
|
|
/// 實際成本押款和稅金查詢匯出
|
|
/// </summary>
|
|
/// <param name="i_crm">todo: describe i_crm parameter on ExcelBillsList</param>
|
|
/// <returns></returns>
|
|
public ResponseMessage ExcelBillsList(RequestMessage i_crm)
|
|
{
|
|
ResponseMessage rm = null;
|
|
string sMsg = null;
|
|
var db = SugarBase.GetIntance();
|
|
var list = new List<BillPayerInfo>();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
var sFeeClass = _fetchString(i_crm, @"FeeClass");
|
|
var sCheckDateStart = _fetchString(i_crm, @"CheckDateStart");
|
|
var sCheckDateEnd = _fetchString(i_crm, @"CheckDateEnd");
|
|
var rCheckDateStart = SqlFunc.ToDate(sCheckDateStart).Date;
|
|
var rCheckDateEnd = SqlFunc.ToDate(sCheckDateEnd).Date;
|
|
var saFeeClass = sFeeClass.Split(',');
|
|
foreach (string feeclass in saFeeClass)
|
|
{
|
|
var listIm = db.Queryable<OTB_OPM_ImportExhibition, OTB_OPM_Exhibition>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.ExhibitionNO == b.SN.ToString() })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && (SqlFunc.Contains(a.ActualCost, feeclass) || SqlFunc.Contains(a.ReturnBills, feeclass)))
|
|
.Select((a, b) => new { a.ActualCost, a.ReturnBills, a.ImportBillName, b.ExhibitionCode }).ToList();
|
|
foreach (var im in listIm)
|
|
{
|
|
var JActualCost = (JObject)JsonConvert.DeserializeObject(im.ActualCost);
|
|
if (JActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = im.ExhibitionCode + @" - " + im.ImportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
var JaReturnBills = (JArray)JsonConvert.DeserializeObject(im.ReturnBills);
|
|
foreach (JObject bill in JaReturnBills)
|
|
{
|
|
if (bill[@"ActualCost"] != null)
|
|
{
|
|
var JReturnActualCost = (JObject)JsonConvert.DeserializeObject(bill[@"ActualCost"].ToString());
|
|
if (JReturnActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JReturnActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = im.ExhibitionCode + @" - " + im.ImportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var listEx = db.Queryable<OTB_OPM_ExportExhibition, OTB_OPM_Exhibition>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.ExhibitionNO == b.SN.ToString() })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && (SqlFunc.Contains(a.ActualCost, feeclass) || SqlFunc.Contains(a.ReturnBills, feeclass)))
|
|
.Select((a, b) => new { a.ActualCost, a.ReturnBills, a.ExportBillName, b.ExhibitionCode }).ToList();
|
|
foreach (var _ex in listEx)
|
|
{
|
|
var JActualCost = (JObject)JsonConvert.DeserializeObject(_ex.ActualCost);
|
|
if (JActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = _ex.ExhibitionCode + @" - " + _ex.ExportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
var JaReturnBills = (JArray)JsonConvert.DeserializeObject(_ex.ReturnBills);
|
|
foreach (JObject bill in JaReturnBills)
|
|
{
|
|
if (bill[@"ActualCost"] != null)
|
|
{
|
|
var JReturnActualCost = (JObject)JsonConvert.DeserializeObject(bill[@"ActualCost"].ToString());
|
|
if (JReturnActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JReturnActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = _ex.ExhibitionCode + @" - " + _ex.ExportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var listOt = db.Queryable<OTB_OPM_OtherExhibition, OTB_OPM_Exhibition>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.ExhibitionNO == b.SN.ToString() })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && SqlFunc.Contains(a.ActualCost, feeclass))
|
|
.Select((a, b) => new { a.ActualCost, a.ImportBillName, b.ExhibitionCode }).ToList();
|
|
foreach (var ot in listOt)
|
|
{
|
|
var JActualCost = (JObject)JsonConvert.DeserializeObject(ot.ActualCost);
|
|
if (JActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = ot.ExhibitionCode + @" - " + ot.ImportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var listOt_TG = db.Queryable<OTB_OPM_OtherExhibitionTG, OTB_OPM_Exhibition>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.ExhibitionNO == b.SN.ToString() })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && SqlFunc.Contains(a.ActualCost, feeclass))
|
|
.Select((a, b) => new { a.ActualCost, a.ImportBillName, b.ExhibitionCode }).ToList();
|
|
foreach (var ot in listOt_TG)
|
|
{
|
|
var JActualCost = (JObject)JsonConvert.DeserializeObject(ot.ActualCost);
|
|
if (JActualCost[@"FeeItems"] != null)
|
|
{
|
|
var jaFeeItems = JActualCost[@"FeeItems"] as JArray;
|
|
foreach (JObject jo in jaFeeItems)
|
|
{
|
|
if (jo[@"FinancialCode"] != null && jo[@"FinancialCode"].ToString() == feeclass)
|
|
{
|
|
var sBillNO = jo[@"BillNO"] == null ? @"" : jo[@"BillNO"].ToString();
|
|
var sBillPayer = jo[@"BillPayer"] == null ? @"" : jo[@"BillPayer"].ToString();
|
|
var saBillPayer = sBillPayer.Split('-');
|
|
var oCustomers = new OTB_CRM_Customers();
|
|
if (sBillNO != null)
|
|
{
|
|
oCustomers = db.Queryable<OTB_CRM_Customers, OTB_OPM_BillInfo>((a, b) =>
|
|
new object[] { JoinType.Inner, a.OrgID == b.OrgID && a.guid == b.Payer })
|
|
.Where((a, b) => a.OrgID == i_crm.ORIGID && b.BillNO == sBillNO)
|
|
.Select((a, b) => a).Single();
|
|
}
|
|
var bpinfo = new BillPayerInfo
|
|
{
|
|
ExhibitioName = ot.ExhibitionCode + @" - " + ot.ImportBillName,
|
|
BillNO = sBillPayer == @"" ? @"" : saBillPayer[0],
|
|
Payer = (oCustomers == null ? @"" : (oCustomers.CustomerNO ?? @"") + @" - ") + (sBillPayer == @"" ? @"" : saBillPayer[1]),
|
|
CreateDate = sBillPayer == @"" ? @"" : saBillPayer[2],
|
|
Amount = jo[@"FinancialTWAmount"].ToString()
|
|
};
|
|
list.Add(bpinfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var listRetn = new List<BillPayerInfo>();
|
|
var iRowNumber = 1;
|
|
foreach (BillPayerInfo Info in list)
|
|
{
|
|
var sCreateDate = Info.CreateDate ?? @"";
|
|
var rCreateDate = SqlFunc.ToDate(sCreateDate).Date;
|
|
if ((sCheckDateStart == @"" && sCheckDateEnd == @"")
|
|
|| (sCreateDate != @"" && sCheckDateStart != @"" && sCheckDateEnd == @"" && rCheckDateStart <= Convert.ToDateTime(sCreateDate))
|
|
|| (sCreateDate != @"" && sCheckDateStart == @"" && sCheckDateEnd != @"" && rCheckDateEnd >= rCreateDate)
|
|
|| (sCreateDate != @"" && sCheckDateStart != @"" && sCheckDateEnd != @"" && rCheckDateStart <= rCreateDate) && rCheckDateEnd >= rCreateDate)
|
|
{
|
|
Info.RowIndex = iRowNumber;
|
|
listRetn.Add(Info);
|
|
iRowNumber++;
|
|
}
|
|
}
|
|
|
|
var sFileName = @"實際成本押款和稅金資料";
|
|
var oHeader = new Dictionary<string, string>();
|
|
var sHeader1 = @"帳單號碼";
|
|
var sHeader2 = @"活動/展覽名稱";
|
|
var sHeader3 = @"付款人";
|
|
var sHeader4 = @"金額";
|
|
var sHeader5 = @"創建時間";
|
|
if (i_crm.LANG == @"zh")
|
|
{
|
|
sHeader1 = ChineseStringUtility.ToSimplified(sHeader1);
|
|
sHeader2 = ChineseStringUtility.ToSimplified(sHeader2);
|
|
sHeader3 = ChineseStringUtility.ToSimplified(sHeader3);
|
|
sHeader4 = ChineseStringUtility.ToSimplified(sHeader4);
|
|
sHeader5 = ChineseStringUtility.ToSimplified(sHeader5);
|
|
}
|
|
oHeader.Add(@"BillNO", sHeader1);
|
|
oHeader.Add(@"ExhibitioName", sHeader2);
|
|
oHeader.Add(@"Payer", sHeader3);
|
|
oHeader.Add(@"Amount", sHeader4);
|
|
oHeader.Add(@"CreateDate", sHeader5);
|
|
var bOk = new ExcelService().CreateExcelByList(listRetn, out string sPath, oHeader, null, sFileName);
|
|
rm = new SuccessResponseMessage(null, i_crm);
|
|
rm.DATA.Add(BLWording.REL, sPath);
|
|
} while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sMsg = Util.GetLastExceptionMsg(ex);
|
|
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Accounting_QryService), @"成本押款和稅金查詢匯出", @"ExcelBillsList(成本押款和稅金查詢匯出)", @"", @"", @"");
|
|
}
|
|
finally
|
|
{
|
|
if (null != sMsg)
|
|
{
|
|
rm = new ErrorResponseMessage(sMsg, i_crm);
|
|
}
|
|
}
|
|
return rm;
|
|
}
|
|
|
|
#endregion 實際成本押款和稅金查詢匯出
|
|
}
|
|
}
|