Browse Source

[WHAT] 已接團訂單中現貨訂單的金額查詢修改

master
alina 2 years ago
parent
commit
4e75211eb0
  1. 16
      04-程式設計/Trunk/GroupBuy/CounsellorBL.ORD/ConstDefinition/SQLLib.cs
  2. 69
      04-程式設計/Trunk/GroupBuy/CounsellorBL.ORD/OrderService.cs

16
04-程式設計/Trunk/GroupBuy/CounsellorBL.ORD/ConstDefinition/SQLLib.cs

@ -61,17 +61,29 @@ namespace CounsellorBL.ORD.ConstDefinition
a.{tb_ord_order_master.CN_UID}, a.{tb_ord_order_master.CN_UID},
--sum (case when b.status = 2 then b.take_qty * c.price else 0 end) received, --sum (case when b.status = 2 then b.take_qty * c.price else 0 end) received,
--sum (case when b.status = 2 then b.take_qty * (d.amount / d.qty)else 0 end) received,-- take_qty為實際拿取數量, d.amount / d.qty計算實際購買金額 --sum (case when b.status = 2 then b.take_qty * (d.amount / d.qty)else 0 end) received,-- take_qty為實際拿取數量, d.amount / d.qty計算實際購買金額
sum (case when b.status = 2 then d.amount else 0 end) received,-- d.amount Total
---- sum (case when b.status = 2 then d.amount else 0 end) received,-- d.amount Total
--sum ((b.price /b.order_qty) * take_qty) received, --sum ((b.price /b.order_qty) * take_qty) received,
--sum(b.price) receivable --sum(b.price) receivable
--sum (case when e.wprice_payment = 1 and c.wholesale_price != 0 then b.order_qty * c.wholesale_price else b.price end) receivable --sum (case when e.wprice_payment = 1 and c.wholesale_price != 0 then b.order_qty * c.wholesale_price else b.price end) receivable
sum (case when b.status = 2 then d.amount else b.price end) receivable
---- sum (case when b.status = 2 then d.amount else b.price end) receivable
(case max(a.type) when '1' then sum (case when b.status = 2 then d.amount else 0 end)
when '2' then sum(ee.amount) else 0 end ) received,-- d.amount Total
(case max(a.type) when '1' then sum (case when b.status = 2 then d.amount else b.price end)
when '2' then sum(ee.amount) else 0 end ) receivable
from {nameof(tb_ord_order_master)} a from {nameof(tb_ord_order_master)} a
LEFT JOIN {nameof(tb_ord_order_detail)} b on b.{tb_ord_order_detail.CN_ORDER_UID} = a.{tb_ord_order_master.CN_UID} LEFT JOIN {nameof(tb_ord_order_detail)} b on b.{tb_ord_order_detail.CN_ORDER_UID} = a.{tb_ord_order_master.CN_UID}
--LEFT JOIN {nameof(tb_prd_article2product)} c on c.{tb_prd_article2product.CN_UID} = b.{tb_ord_order_detail.CN_ARTICLE2PRODUCT_UID} --LEFT JOIN {nameof(tb_prd_article2product)} c on c.{tb_prd_article2product.CN_UID} = b.{tb_ord_order_detail.CN_ARTICLE2PRODUCT_UID}
--LEFT JOIN {nameof(tb_ord_purchase_detail)} d on d.{tb_ord_purchase_detail.CN_ORDER_DETAIL_UID} = b.{tb_ord_order_detail.CN_UID} --LEFT JOIN {nameof(tb_ord_purchase_detail)} d on d.{tb_ord_purchase_detail.CN_ORDER_DETAIL_UID} = b.{tb_ord_order_detail.CN_UID}
LEFT JOIN (SELECT {tb_ord_purchase_detail.CN_ORDER_DETAIL_UID}, SUM({tb_ord_purchase_detail.CN_AMOUNT}) amount FROM {nameof(tb_ord_purchase_detail)} GROUP BY {tb_ord_purchase_detail.CN_ORDER_DETAIL_UID}) d on d.{tb_ord_purchase_detail.CN_ORDER_DETAIL_UID} = b.uid -- Make sure is only one LEFT JOIN (SELECT {tb_ord_purchase_detail.CN_ORDER_DETAIL_UID}, SUM({tb_ord_purchase_detail.CN_AMOUNT}) amount FROM {nameof(tb_ord_purchase_detail)} GROUP BY {tb_ord_purchase_detail.CN_ORDER_DETAIL_UID}) d on d.{tb_ord_purchase_detail.CN_ORDER_DETAIL_UID} = b.uid -- Make sure is only one
--LEFT JOIN {nameof(tb_meb_member)} e on e.{tb_meb_member.CN_UID} = b.{tb_ord_order_detail.CN_MEMBER_UID} --LEFT JOIN {nameof(tb_meb_member)} e on e.{tb_meb_member.CN_UID} = b.{tb_ord_order_detail.CN_MEMBER_UID}
LEFT JOIN (SELECT sum(x.{tb_prd_article2product.CN_PRICE}* z.{tb_ord_purchase_detail.CN_QTY}) amount ,x.{tb_prd_article2product.CN_ORDER_UID}
FROM {nameof(tb_prd_article2product)} x
LEFT JOIN {nameof(tb_ord_order_master)} y on y.{tb_ord_order_master.CN_UID}=x.{tb_prd_article2product.CN_ORDER_UID}
LEFT JOIN {nameof(tb_ord_purchase_detail)} z on z.{tb_ord_purchase_detail.CN_ARTICLE2PRODUCT_UID}=x.{tb_prd_article2product.CN_UID}
GROUP BY x.{tb_prd_article2product.CN_ORDER_UID}
) as ee on ee.{tb_prd_article2product.CN_ORDER_UID} = a.{tb_ord_order_master.CN_UID}
GROUP BY a.{tb_ord_order_master.CN_UID} GROUP BY a.{tb_ord_order_master.CN_UID}
) a ) a
LEFT JOIN {nameof(tb_ord_order_master)} aa on aa.{tb_ord_order_master.CN_UID} = a.{tb_ord_order_master.CN_UID} -- Get full column LEFT JOIN {nameof(tb_ord_order_master)} aa on aa.{tb_ord_order_master.CN_UID} = a.{tb_ord_order_master.CN_UID} -- Get full column

69
04-程式設計/Trunk/GroupBuy/CounsellorBL.ORD/OrderService.cs

@ -5008,24 +5008,13 @@ namespace CounsellorBL.ORD
} }
Int32.TryParse(qdsOrderMstTotal.DATA.Tables[0].Rows[0]?[0]?.ToString(), out int TotalCount); Int32.TryParse(qdsOrderMstTotal.DATA.Tables[0].Rows[0]?[0]?.ToString(), out int TotalCount);
//先取得有幾個type=2的資料的uid集合
List<tb_ord_order_detail> lstOrderDetail = new List<tb_ord_order_detail>();
var lstStockMatUid= qdsOrderMst.Where(x => x.type == (int)Enums.ArticleType.Stock).Select(x => x.uid).ToList();
if (lstStockMatUid.Count() > 0) {
string sMsg = GetlstOrderDetail(lstStockMatUid, out lstOrderDetail);
if (sMsg != null)
{
throw new Exception(sMsg);
}
}
int sn = nPageIdx * nPageNum + 1;// 0 => 1 int sn = nPageIdx * nPageNum + 1;// 0 => 1
int received = 0; int received = 0;
int receivable = 0; int receivable = 0;
foreach (var detail in qdsOrderMst) foreach (var detail in qdsOrderMst)
{ {
received = detail.type == (int)Enums.ArticleType.Stock ? lstOrderDetail.Where(x => x.order_uid == detail.uid).Sum(x => x.take_qty*(x.price/ x.order_qty)) : detail.received;
receivable = detail.type == (int)Enums.ArticleType.Stock ? lstOrderDetail.Where(x => x.order_uid == detail.uid).Sum(x => x.price) : detail.receivable;
received = detail.received;
receivable = detail.receivable;
records.Add(new OrderMaster() records.Add(new OrderMaster()
{ {
uid = detail.uid, uid = detail.uid,
@ -5049,59 +5038,5 @@ namespace CounsellorBL.ORD
return (records, TotalCount); return (records, TotalCount);
} }
/// <summary>
/// 取得OrderDetailList列表(現貨訂單的)
/// </summary>
/// <param name="lstStockMatUid"></param>
/// <param name="qdGroup"></param>
/// <returns></returns>
private string GetlstOrderDetail(List<string> lstStockMatUid, out List<tb_ord_order_detail> lstOrderDetail)
{
// 送出資料
lstOrderDetail = new List<tb_ord_order_detail>();
string sMsg;
QueryJsonElementCollection lBlocks = new QueryJsonElementCollection();
QueryJsonElement qjeOrderDatail = lBlocks.GetInst();
qjeOrderDatail.table = tb_ord_order_detail.TABLENAME;
qjeOrderDatail.displaycols = new List<string>()
{
tb_ord_order_detail.CN_PRICE,
tb_ord_order_detail.CN_ORDER_QTY,
tb_ord_order_detail.CN_TAKE_QTY
};
lBlocks.Add(qjeOrderDatail);
QueryJsonElement qjeIncomingReturnRecord = lBlocks.GetInst();
qjeIncomingReturnRecord.table = tb_ord_incoming_return_record.TABLENAME;
qjeIncomingReturnRecord.jointable = qjeOrderDatail;
qjeIncomingReturnRecord.jointype = QueryJsonElement.INNER_JOIN;
qjeIncomingReturnRecord.joincols = new Dictionary<string, string> { { tb_ord_order_detail.CN_ARTICLE2PRODUCT_UID, tb_ord_incoming_return_record.CN_ARTICLE2PRODUCT_UID } };
qjeIncomingReturnRecord.displaycols = new List<string>()
{
tb_ord_incoming_return_record.CN_ORDER_UID
};
qjeIncomingReturnRecord.wherecols = new WhereNode(tb_ord_incoming_return_record.CN_ORDER_UID, WhereNode.EColumnOperation.EOT_IN, typeof(tb_ord_incoming_return_record), lstStockMatUid.ToArray());
lBlocks.Add(qjeIncomingReturnRecord);
sMsg = MakeSelectJoinByBlocks(lBlocks, out Command cRes);
if (sMsg != null)
{
lstOrderDetail = null;
return sMsg;
}
ArsenalInterface ai = ArsenalDBMgr.GetInst(cRes);
lstOrderDetail = ai.RunQueryList<tb_ord_order_detail>(cRes);
sMsg = GetLastErrorCode(cRes);
if (sMsg != null)
{
return sMsg;
}
return sMsg;
}
} }
} }
Loading…
Cancel
Save