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.
525 lines
28 KiB
525 lines
28 KiB
using CounsellorBL.BLStructure;
|
|
using CounsellorBL.Helper;
|
|
using MonumentDefine;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using OT.COM.ArsenalDB;
|
|
using OT.COM.SignalerMessage;
|
|
using SoldierData.EnterprizeV4;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Util = OT.COM.LogisticsUtil.Util;
|
|
|
|
namespace CounsellorBL.ORD
|
|
{
|
|
public class PaymentListService : SingleDataTableTemplate<tb_ord_purchase>
|
|
{
|
|
|
|
public PaymentListService()
|
|
{
|
|
dgReadCommandPostDataHandler = readCommandPostDataHandler;
|
|
dgUpdateCommandGenerator = updateCommandGenerator;
|
|
dgDeleteCommandGenerator = deleteCommandGenerator;
|
|
}
|
|
|
|
public new CResponseMessage Read(CRequestMessage i_crmInput) => base.Read(i_crmInput);
|
|
|
|
protected string readCommandPostDataHandler(CRequestMessage i_crmInput, ArsenalInterface i_aiArsenal, Command i_cCmd, JArray i_jaData, tb_sys_session i_sSessionUser, out object o_oReault,
|
|
[System.Runtime.CompilerServices.CallerLineNumber] int i_nCodeLine = 0,
|
|
[System.Runtime.CompilerServices.CallerMemberName] string i_sMemberName = "",
|
|
[System.Runtime.CompilerServices.CallerFilePath] string i_sSourcePath = "")
|
|
{
|
|
string sMsg;
|
|
Command cRes = null;
|
|
object oResultData = null;
|
|
try
|
|
{
|
|
do
|
|
{
|
|
Dictionary<string, object> dicCondition = GetQueryMasterFirstWhereData(i_crmInput); // 取得condition
|
|
|
|
var lsBranch = ProjectHelper.GetUserGroup(i_crmInput);
|
|
|
|
QueryJsonElementCollection lBlocks = new QueryJsonElementCollection();
|
|
QueryJsonElement qjePurchase = lBlocks.GetInst();
|
|
qjePurchase.table = tb_ord_purchase.TABLENAME;
|
|
qjePurchase.displaycols = new List<string>() {
|
|
tb_ord_purchase.CN_UID,
|
|
tb_ord_purchase.CN_AMOUNT,
|
|
tb_ord_purchase.CN_CREATE_DATE,
|
|
tb_ord_purchase.CN_MEMBER_UID,
|
|
tb_ord_purchase.CN_CONFIRMED_PAID,
|
|
tb_ord_purchase.CN_PURCHASE_NUMBER
|
|
};
|
|
|
|
List<WhereNode> lsWn = new List<WhereNode>();
|
|
if (Convert.ToInt32(dicCondition["payee"]) == (int)Enums.PayeeOption.Self)
|
|
{
|
|
var user = i_crmInput.customparam[BLWording.SESSION_USER] as tb_sys_session;
|
|
lsWn.Add(new WhereNode(tb_ord_purchase.CN_CREATE_USER_UID, WhereNode.EColumnOperation.EOT_EQ, typeof(tb_ord_purchase), user.create_user_uid));
|
|
}
|
|
if (dicCondition.ContainsKey(tb_ord_purchase.CN_CONFIRMED_PAID))
|
|
{
|
|
lsWn.Add(new WhereNode(tb_ord_purchase.CN_CONFIRMED_PAID, WhereNode.EColumnOperation.EOT_EQ, typeof(tb_ord_purchase), Convert.ToInt32(dicCondition[tb_ord_purchase.CN_CONFIRMED_PAID])));
|
|
}
|
|
if (dicCondition.ContainsKey(tb_ord_purchase.CN_CREATE_DATE + "_start"))
|
|
{
|
|
lsWn.Add(new WhereNode(tb_ord_purchase.CN_CREATE_DATE, WhereNode.EColumnOperation.EOT_GTEQ, typeof(tb_ord_purchase), dicCondition[tb_ord_purchase.CN_CREATE_DATE + "_start"]));
|
|
}
|
|
if (dicCondition.ContainsKey(tb_ord_purchase.CN_CREATE_DATE + "_end"))
|
|
{
|
|
var endDate = Convert.ToDateTime(dicCondition[tb_ord_purchase.CN_CREATE_DATE + "_end"]);
|
|
lsWn.Add(new WhereNode(tb_ord_purchase.CN_CREATE_DATE, WhereNode.EColumnOperation.EOT_LT, typeof(tb_ord_purchase), endDate.AddDays(1)));
|
|
}
|
|
lsWn.Add(new WhereNode(tb_ord_purchase.CN_STATUS_FLAG, WhereNode.EColumnOperation.EOT_EQ, typeof(tb_ord_purchase), (int)Enums.Flag.Enable));
|
|
qjePurchase.wherecols = new WhereNode(WhereNode.ENodeOperation.ENO_AND, lsWn.ToArray());
|
|
qjePurchase.ordercols = new List<Tuple<QueryJsonElement, string, string>>()
|
|
{
|
|
new Tuple<QueryJsonElement, string, string>(qjePurchase, tb_ord_purchase.CN_CREATE_DATE, BLWording.ORDER_DESC)
|
|
};
|
|
|
|
QueryJsonElement qjeEmp = lBlocks.GetInst();
|
|
qjeEmp.table = tb_hr_employee.TABLENAME;
|
|
qjeEmp.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeEmp.jointable = qjePurchase;
|
|
qjeEmp.joincols = new Dictionary<string, string>() {
|
|
{ tb_hr_employee.CN_UID,tb_ord_purchase.CN_CREATE_USER_UID }};
|
|
qjeEmp.displaycols = new List<string>() { tb_hr_employee.CN_NAME };
|
|
qjeEmp.aliascols = new Dictionary<string, List<string>>
|
|
{
|
|
{ tb_hr_employee.CN_NAME, new List<string>() { "payee" } }
|
|
};
|
|
|
|
QueryJsonElement qjeMember = lBlocks.GetInst();
|
|
qjeMember.table = tb_meb_member.TABLENAME;
|
|
qjeMember.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeMember.jointable = qjePurchase;
|
|
qjeMember.joincols = new Dictionary<string, string>() {
|
|
{ tb_meb_member.CN_UID,tb_ord_purchase.CN_MEMBER_UID }};
|
|
if (dicCondition.ContainsKey("member_name"))
|
|
{
|
|
qjeMember.wherecols = new WhereNode(tb_meb_member.CN_NAME, WhereNode.EColumnOperation.EOT_LIKE, typeof(tb_meb_member), "%" + dicCondition["member_name"] + "%");
|
|
}
|
|
qjeMember.aliascols = new Dictionary<string, List<string>>
|
|
{
|
|
{ tb_meb_member.CN_NAME, new List<string>() { "member_name" } }
|
|
};
|
|
|
|
QueryJsonElement qjeGroup = lBlocks.GetInst();
|
|
qjeGroup.table = tb_grp_group.TABLENAME;
|
|
qjeGroup.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeGroup.jointable = qjeMember;
|
|
qjeGroup.joincols = new Dictionary<string, string>() {
|
|
{ tb_grp_group.CN_FB_GROUP_ID,tb_meb_member.CN_GROUP_ID }};
|
|
if (dicCondition.ContainsKey(tb_grp_article.CN_GROUP_UID))
|
|
{
|
|
qjeGroup.wherecols = new WhereNode(tb_grp_group.CN_UID, WhereNode.EColumnOperation.EOT_EQ, typeof(tb_grp_group), dicCondition[tb_grp_article.CN_GROUP_UID]);
|
|
}
|
|
else
|
|
{
|
|
qjeGroup.wherecols = new WhereNode(tb_grp_group.CN_UID, WhereNode.EColumnOperation.EOT_IN, typeof(tb_grp_group), lsBranch.ToArray());
|
|
}
|
|
qjeGroup.aliascols = new Dictionary<string, List<string>>
|
|
{
|
|
{ tb_grp_group.CN_NAME, new List<string>() { "group_name" } }
|
|
};
|
|
|
|
lBlocks.Add(qjePurchase);
|
|
lBlocks.Add(qjeEmp);
|
|
lBlocks.Add(qjeMember);
|
|
lBlocks.Add(qjeGroup);
|
|
|
|
sMsg = MakeSelectJoinByBlocks(lBlocks, out cRes);
|
|
if (sMsg != null)
|
|
{
|
|
break;
|
|
}
|
|
ArsenalInterface ai = ArsenalDBMgr.GetInst(cRes);
|
|
|
|
QueryDataSet qds;
|
|
if (dicCondition.ContainsKey("topSearch"))// 取貨清單 > 收款清單, 快速顯示前幾筆結帳資訊
|
|
{
|
|
qds = ai.RunQueryDataSet(
|
|
cRes,
|
|
null,
|
|
0,
|
|
Convert.ToInt32(dicCondition["topPayQuantity"])// 顯示筆數
|
|
);
|
|
}
|
|
else
|
|
{
|
|
qds = ai.RunQueryDataSet(cRes);
|
|
}
|
|
|
|
if (cRes.IsSuccess == false)
|
|
{
|
|
sMsg = cRes.LastErrorCode;
|
|
break;
|
|
}
|
|
|
|
oResultData = new QueryResponse(qds);
|
|
}
|
|
while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.DBLog(Util.GetLastExceptionMsg(ex), i_nCodeLine, i_sMemberName, i_sSourcePath);
|
|
sMsg = $"{nameof(readCommandPostDataHandler)} unknwon exception. i_crmInput={JsonConvert.SerializeObject(i_crmInput)}. Call from {i_sMemberName} {i_sSourcePath}({i_nCodeLine}).";
|
|
#if DEBUG
|
|
System.Diagnostics.Debug.WriteLine(sMsg);
|
|
#endif
|
|
}
|
|
|
|
o_oReault = oResultData;
|
|
return sMsg;
|
|
}
|
|
protected string deleteCommandGenerator(CRequestMessage i_crmInput, JArray i_jaItems, tb_sys_session i_sSessionUser, out List<Command> o_lcResult, List<string> i_saQryContainKeys,
|
|
[System.Runtime.CompilerServices.CallerLineNumber] int i_nCodeLine = 0,
|
|
[System.Runtime.CompilerServices.CallerMemberName] string i_sMemberName = "",
|
|
[System.Runtime.CompilerServices.CallerFilePath] string i_sSourcePath = "")
|
|
{
|
|
string sMsg = null;
|
|
List<Command> lcCmds = new List<Command>();
|
|
|
|
try
|
|
{
|
|
do
|
|
{
|
|
foreach (JToken jtkItem in i_jaItems)
|
|
{
|
|
Dictionary<string, object> dicItem = jtkItem.ToObject<Dictionary<string, object>>();
|
|
|
|
sMsg = getManualLog(i_crmInput, dicItem, BLWording.LOG_ACTION_NAME_DELETESQL, out Command cLog);
|
|
|
|
if (sMsg != null)
|
|
{
|
|
break;
|
|
}
|
|
|
|
if (cLog != null)
|
|
{
|
|
lcCmds.Add(cLog);
|
|
}
|
|
|
|
string sMstUID = null;
|
|
if (dicItem.ContainsKey(BLWording.WHEREDATA) && dicItem[BLWording.WHEREDATA] is JObject wheredata)
|
|
{
|
|
Dictionary<string, object> wheredataDic = wheredata.ToObject<Dictionary<string, object>>();
|
|
if (wheredataDic.ContainsKey(tb_ord_purchase.CN_UID))
|
|
{
|
|
sMstUID = wheredataDic[tb_ord_purchase.CN_UID].ToString();
|
|
string memberUID = wheredataDic[tb_ord_purchase.CN_MEMBER_UID].ToString();
|
|
// 刪除收款紀錄
|
|
lcCmds.Add(Command.SetupUpdateCmd(new tb_ord_purchase() { status_flag = (int)Enums.Flag.Disable }, new tb_ord_purchase() { uid = sMstUID }));
|
|
|
|
// 查詢相關購物金
|
|
tb_meb_shopping_points_record cPoints = new tb_meb_shopping_points_record();
|
|
cPoints.SetDirty(tb_meb_shopping_points_record.CN_UID, tb_meb_shopping_points_record.CN_AMOUNT);
|
|
tb_meb_shopping_points_record cConPoints = new tb_meb_shopping_points_record()
|
|
{
|
|
purchase_uid = sMstUID,
|
|
};
|
|
Command pointsSelect = Command.SetupSelectCmd(cPoints, cConPoints);
|
|
ArsenalInterface aiPoints = ArsenalDBMgr.GetInst(pointsSelect);
|
|
var qdsPoints = aiPoints.RunQueryList<tb_meb_shopping_points_record>(pointsSelect);
|
|
if (qdsPoints.Count > 0)
|
|
{
|
|
List<string> points_uid = new List<string>();
|
|
foreach (var points in qdsPoints)
|
|
{
|
|
points_uid.Add(points.uid);
|
|
}
|
|
lcCmds.Add(Command.SetupDeleteCmd(new WhereNode(tb_meb_shopping_points_record.CN_UID, WhereNode.EColumnOperation.EOT_IN, typeof(tb_meb_shopping_points_record), points_uid.ToArray())));
|
|
}
|
|
tb_meb_member mPoints = new tb_meb_member();
|
|
mPoints.SetDirty(tb_meb_member.CN_SHOPPING_ACCOUNT);
|
|
tb_meb_member mConPoints = new tb_meb_member()
|
|
{
|
|
uid = memberUID
|
|
};
|
|
Command pointsMemberSelect = Command.SetupSelectCmd(mPoints, mConPoints);
|
|
aiPoints = ArsenalDBMgr.GetInst(pointsMemberSelect);
|
|
var qdsMebPoints = aiPoints.RunQueryList<tb_meb_member>(pointsMemberSelect);
|
|
lcCmds.Add(Command.SetupUpdateCmd(new tb_meb_member()
|
|
{
|
|
shopping_account = qdsMebPoints[0].shopping_account - Convert.ToInt32(qdsPoints.Sum(x => x.amount))
|
|
}
|
|
, new tb_meb_member() { uid = memberUID }));
|
|
|
|
// 查詢收款紀錄商品
|
|
tb_ord_purchase_detail cDetail = new tb_ord_purchase_detail();
|
|
cDetail.SetDirty(tb_ord_purchase_detail.CN_QTY, tb_ord_purchase_detail.CN_ORDER_DETAIL_UID, tb_ord_purchase_detail.CN_ARTICLE2PRODUCT_UID, tb_ord_purchase_detail.CN_BRANCH_UID);
|
|
tb_ord_purchase_detail cDetailCon = new tb_ord_purchase_detail()
|
|
{
|
|
purchase_uid = sMstUID
|
|
};
|
|
Command cDetailSelect = Command.SetupSelectCmd(cDetail, cDetailCon);
|
|
ArsenalInterface ai = ArsenalDBMgr.GetInst(cDetailSelect);
|
|
List<tb_ord_purchase_detail> qdsDetail = ai.RunQueryList<tb_ord_purchase_detail>(cDetailSelect);
|
|
|
|
foreach (var detail in qdsDetail)
|
|
{
|
|
if (detail.order_detail_uid != null)
|
|
{
|
|
var returnQty = detail.qty;
|
|
// 查詢訂單
|
|
tb_ord_order_detail cOrder = new tb_ord_order_detail();
|
|
cOrder.SetDirty(tb_ord_order_detail.CN_UID, tb_ord_order_detail.CN_TAKE_QTY);
|
|
tb_ord_order_detail cCon = new tb_ord_order_detail()
|
|
{
|
|
uid = detail.order_detail_uid
|
|
};
|
|
Command cSelect = Command.SetupSelectCmd(cOrder, cCon);
|
|
ai = ArsenalDBMgr.GetInst(cSelect);
|
|
List<tb_ord_order_detail> qdsOrder = ai.RunQueryList<tb_ord_order_detail>(cSelect);
|
|
// tb_ord_order_detail.status改回未取貨
|
|
foreach (var order in qdsOrder)
|
|
{
|
|
var qty = returnQty >= order.take_qty ? order.take_qty : returnQty;
|
|
tb_ord_order_detail upCon = new tb_ord_order_detail() { uid = order.uid };
|
|
tb_ord_order_detail upData = new tb_ord_order_detail() { status = (int)Enums.OrderStatus.NotTake, take_qty = order.take_qty - qty };
|
|
lcCmds.Add(Command.SetupUpdateCmd(upData, upCon));
|
|
returnQty -= qty;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.DBLog(Util.GetLastExceptionMsg(ex), i_crmInput);
|
|
sMsg = $"{nameof(deleteCommandGenerator)} unknwon exception. i_crmInput={JsonConvert.SerializeObject(i_crmInput)}. Call from {i_sMemberName} {i_sSourcePath}({i_nCodeLine}).";
|
|
#if DEBUG
|
|
System.Diagnostics.Debug.WriteLine(sMsg);
|
|
#endif
|
|
}
|
|
o_lcResult = lcCmds;
|
|
return sMsg;
|
|
}
|
|
private string updateCommandGenerator(CRequestMessage i_crmInput, JArray i_jaData, tb_sys_session i_sSessionUser, out List<Command> o_lcCmds, List<string> i_saQryContainKeys,
|
|
[System.Runtime.CompilerServices.CallerLineNumber] int i_nCodeLine = 0,
|
|
[System.Runtime.CompilerServices.CallerMemberName] string i_sMemberName = "",
|
|
[System.Runtime.CompilerServices.CallerFilePath] string i_sSourcePath = "")
|
|
{
|
|
string sMsg = null;
|
|
List<Command> lCmds = new List<Command>();
|
|
try
|
|
{
|
|
do
|
|
{
|
|
foreach (JToken joData in i_jaData)
|
|
{
|
|
Dictionary<string, object> dicData = joData.ToObject<Dictionary<string, object>>();
|
|
|
|
JObject jwheredata = dicData[BLWording.WHEREDATA] as JObject;
|
|
JArray jaData = jwheredata[tb_ord_purchase.CN_UID] as JArray;
|
|
foreach (var data in jaData)
|
|
{
|
|
string uid = data.ToString();
|
|
// 更新purchase.confirmed_paid
|
|
tb_ord_purchase upData = new tb_ord_purchase() { confirmed_paid = (int)Enums.Flag.Enable };
|
|
tb_ord_purchase upCon = new tb_ord_purchase() { uid = uid };
|
|
lCmds.Add(Command.SetupUpdateCmd(upData, upCon));
|
|
}
|
|
}
|
|
if (sMsg != null)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.DBLog(Util.GetLastExceptionMsg(ex), i_nCodeLine, i_sMemberName, i_sSourcePath);
|
|
sMsg = $"{nameof(updateCommandGenerator)} unknwon exception. i_crmInput={JsonConvert.SerializeObject(i_crmInput)}. Call from {i_sMemberName} {i_sSourcePath}({i_nCodeLine}).";
|
|
#if DEBUG
|
|
System.Diagnostics.Debug.WriteLine(sMsg);
|
|
#endif
|
|
}
|
|
|
|
o_lcCmds = lCmds;
|
|
return sMsg;
|
|
}
|
|
public CResponseMessage GetPurchaseDetail(CRequestMessage i_crmInput)
|
|
{
|
|
string sMsg;
|
|
Command cRes = null;
|
|
CResponseMessage crmRes = null;
|
|
try
|
|
{
|
|
do
|
|
{
|
|
Dictionary<string, object> dicCondition = GetQueryMasterFirstWhereData(i_crmInput); // 取得condition
|
|
|
|
QueryJsonElementCollection lBlocks = new QueryJsonElementCollection();
|
|
QueryJsonElement qjeDetail = lBlocks.GetInst();
|
|
qjeDetail.table = tb_ord_purchase_detail.TABLENAME;
|
|
qjeDetail.displaycols = new List<string>() {
|
|
tb_ord_purchase_detail.CN_ARTICLE2PRODUCT_UID,
|
|
tb_ord_purchase_detail.CN_UID,
|
|
tb_ord_purchase_detail.CN_SPECIFICATION
|
|
};
|
|
qjeDetail.aliascols = new Dictionary<string, List<string>>
|
|
{
|
|
{ QueryJsonElement.SUM(tb_ord_purchase_detail.CN_QTY), new List<string>() { tb_ord_order_detail.CN_ORDER_QTY} }
|
|
};
|
|
qjeDetail.wherecols = new WhereNode(tb_ord_purchase_detail.CN_PURCHASE_UID, WhereNode.EColumnOperation.EOT_EQ, typeof(tb_ord_purchase_detail), dicCondition[tb_ord_purchase.CN_UID]);
|
|
|
|
QueryJsonElement qjeMain = lBlocks.GetInst();
|
|
qjeMain.table = tb_ord_purchase.TABLENAME;
|
|
qjeMain.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeMain.jointable = qjeDetail;
|
|
qjeMain.joincols = new Dictionary<string, string>() {
|
|
{ tb_ord_purchase.CN_UID,tb_ord_purchase_detail.CN_PURCHASE_UID }};
|
|
qjeMain.displaycols = new List<string>() { tb_ord_purchase.CN_MEMBER_UID };
|
|
|
|
QueryJsonElement qjeMember = lBlocks.GetInst();
|
|
qjeMember.table = tb_meb_member.TABLENAME;
|
|
qjeMember.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeMember.jointable = qjeMain;
|
|
qjeMember.joincols = new Dictionary<string, string>() {
|
|
{ tb_meb_member.CN_UID,tb_ord_purchase.CN_MEMBER_UID }};
|
|
qjeMember.displaycols = new List<string>()
|
|
{
|
|
tb_meb_member.CN_WPRICE_PAYMENT,
|
|
};
|
|
qjeMember.aliascols = new Dictionary<string, List<string>>
|
|
{
|
|
{tb_meb_member.CN_NAME , new List<string>() { "member_name"} }
|
|
};
|
|
|
|
QueryJsonElement qjeBranch = lBlocks.GetInst();
|
|
qjeBranch.table = tb_grp_branch.TABLENAME;
|
|
qjeBranch.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeBranch.jointable = qjeDetail;
|
|
qjeBranch.joincols = new Dictionary<string, string>() {
|
|
{ tb_grp_branch.CN_UID,tb_ord_purchase_detail.CN_BRANCH_UID }};
|
|
qjeBranch.displaycols = new List<string>() { tb_grp_branch.CN_BRANCH_NAME };
|
|
|
|
QueryJsonElement qjeProduct = lBlocks.GetInst();
|
|
qjeProduct.table = tb_prd_article2product.TABLENAME;
|
|
qjeProduct.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeProduct.jointable = qjeDetail;
|
|
qjeProduct.joincols = new Dictionary<string, string>() {
|
|
{ tb_prd_article2product.CN_UID,tb_ord_purchase_detail.CN_ARTICLE2PRODUCT_UID }};
|
|
qjeProduct.displaycols = new List<string>() { tb_prd_article2product.CN_SEQ, tb_prd_article2product.CN_NAME, tb_prd_article2product.CN_PRICE, tb_prd_article2product.CN_WHOLESALE_PRICE };
|
|
|
|
QueryJsonElement qjeArticle = lBlocks.GetInst();
|
|
qjeArticle.table = tb_grp_article.TABLENAME;
|
|
qjeArticle.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeArticle.jointable = qjeProduct;
|
|
qjeArticle.joincols = new Dictionary<string, string>() {
|
|
{ tb_grp_article.CN_UID,tb_prd_article2product.CN_ARTICLE_UID }};
|
|
qjeArticle.displaycols = new List<string>() { tb_grp_article.CN_DUTYFREE, };
|
|
|
|
QueryJsonElement qjeOrderDetail = lBlocks.GetInst();
|
|
qjeOrderDetail.table = tb_ord_order_detail.TABLENAME;
|
|
qjeOrderDetail.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeOrderDetail.jointable = qjeDetail;
|
|
qjeOrderDetail.joincols = new Dictionary<string, string>() {
|
|
{ tb_ord_order_detail.CN_UID,tb_ord_purchase_detail.CN_ORDER_DETAIL_UID }};
|
|
|
|
QueryJsonElement qjeOrder = lBlocks.GetInst();
|
|
qjeOrder.table = tb_ord_order_master.TABLENAME;
|
|
qjeOrder.jointype = QueryJsonElement.LEFT_JOIN;
|
|
qjeOrder.jointable = qjeOrderDetail;
|
|
qjeOrder.joincols = new Dictionary<string, string>() {
|
|
{ tb_ord_order_master.CN_UID,tb_ord_order_detail.CN_ORDER_UID }};
|
|
qjeOrder.aliascols = new Dictionary<string, List<string>>
|
|
{
|
|
{ tb_ord_order_master.CN_NAME, new List<string>() { "order_name" } },
|
|
};
|
|
|
|
qjeDetail.groupcols = new List<Tuple<QueryJsonElement, string>>
|
|
{
|
|
Tuple.Create(qjeDetail, tb_ord_purchase_detail.CN_ARTICLE2PRODUCT_UID),
|
|
Tuple.Create(qjeDetail, tb_ord_purchase_detail.CN_UID),
|
|
Tuple.Create(qjeDetail, tb_ord_purchase_detail.CN_BRANCH_UID),
|
|
Tuple.Create(qjeDetail, tb_ord_purchase_detail.CN_SPECIFICATION),
|
|
Tuple.Create(qjeMain, tb_ord_purchase.CN_MEMBER_UID),
|
|
Tuple.Create(qjeMember, tb_meb_member.CN_NAME),
|
|
Tuple.Create(qjeMember, tb_meb_member.CN_WPRICE_PAYMENT),
|
|
Tuple.Create(qjeBranch, tb_grp_branch.CN_BRANCH_NAME),
|
|
Tuple.Create(qjeProduct, tb_prd_article2product.CN_PRICE),
|
|
Tuple.Create(qjeProduct, tb_prd_article2product.CN_WHOLESALE_PRICE),
|
|
Tuple.Create(qjeProduct, tb_prd_article2product.CN_SEQ),
|
|
Tuple.Create(qjeProduct, tb_prd_article2product.CN_NAME),
|
|
Tuple.Create(qjeOrder, tb_ord_order_master.CN_NAME),
|
|
Tuple.Create(qjeArticle, tb_grp_article.CN_DUTYFREE),
|
|
};
|
|
|
|
lBlocks.Add(qjeDetail);
|
|
lBlocks.Add(qjeMain);
|
|
lBlocks.Add(qjeMember);
|
|
lBlocks.Add(qjeBranch);
|
|
lBlocks.Add(qjeProduct);
|
|
lBlocks.Add(qjeArticle);
|
|
lBlocks.Add(qjeOrderDetail);
|
|
lBlocks.Add(qjeOrder);
|
|
sMsg = MakeSelectJoinByBlocks(lBlocks, out cRes);
|
|
if (sMsg != null)
|
|
{
|
|
break;
|
|
}
|
|
ArsenalInterface ai = ArsenalDBMgr.GetInst(cRes);
|
|
QueryDataSet qds = ai.RunQueryDataSet(cRes);
|
|
if (cRes.IsSuccess == false)
|
|
{
|
|
sMsg = cRes.LastErrorCode;
|
|
break;
|
|
}
|
|
|
|
// 判斷是否使用購物金
|
|
QueryJsonElementCollection lBlocks2 = new QueryJsonElementCollection();
|
|
QueryJsonElement qjePoints = lBlocks2.GetInst();
|
|
qjePoints.table = tb_meb_shopping_points_record.TABLENAME;
|
|
qjePoints.displaycols = new List<string>()
|
|
{
|
|
tb_meb_shopping_points_record.CN_AMOUNT
|
|
};
|
|
List<WhereNode> lsWn = new List<WhereNode>();
|
|
lsWn.Add(new WhereNode(tb_meb_shopping_points_record.CN_AMOUNT, WhereNode.EColumnOperation.EOT_LT, typeof(tb_meb_shopping_points_record), 0));
|
|
lsWn.Add(new WhereNode(tb_meb_shopping_points_record.CN_PURCHASE_UID, WhereNode.EColumnOperation.EOT_EQ, typeof(tb_meb_shopping_points_record), dicCondition[tb_ord_purchase.CN_UID]));
|
|
|
|
qjePoints.wherecols = new WhereNode(WhereNode.ENodeOperation.ENO_AND, lsWn.ToArray());
|
|
lBlocks2.Add(qjePoints);
|
|
sMsg = MakeSelectJoinByBlocks(lBlocks2, out cRes);
|
|
|
|
ArsenalInterface aiPoints = ArsenalDBMgr.GetInst(cRes);
|
|
QueryDataSet qdsPoints = aiPoints.RunQueryDataSet(cRes);
|
|
|
|
if (cRes.IsSuccess == false)
|
|
{
|
|
sMsg = cRes.LastErrorCode;
|
|
break;
|
|
}
|
|
|
|
crmRes = new CSuccessResponseMessage(null, i_crmInput);
|
|
crmRes.param.Add(BLWording.DATA, qds);
|
|
crmRes.param.Add("points", qdsPoints);
|
|
}
|
|
while (false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.DBLog(Util.GetLastExceptionMsg(ex));
|
|
sMsg = $"{nameof(GetPurchaseDetail)} unknwon exception. i_crmInput={JsonConvert.SerializeObject(i_crmInput)}. ";
|
|
#if DEBUG
|
|
System.Diagnostics.Debug.WriteLine(sMsg);
|
|
#endif
|
|
}
|
|
|
|
if (null != sMsg)
|
|
{
|
|
crmRes = new CErrorResponseMessage(sMsg, i_crmInput);
|
|
}
|
|
return crmRes;
|
|
}
|
|
}
|
|
}
|