fix : order chart
This commit is contained in:
@@ -533,31 +533,49 @@ class OrderRepository extends BaseRepository<IOrder> {
|
|||||||
};
|
};
|
||||||
const unit = allowed[granularity] ?? allowed["daily"];
|
const unit = allowed[granularity] ?? allowed["daily"];
|
||||||
|
|
||||||
// Aggregation pipeline
|
const excludedOrderItemStatuses = [
|
||||||
|
OrderItemsStatus.cancelled_shop,
|
||||||
|
OrderItemsStatus.cancelled_system,
|
||||||
|
OrderItemsStatus.cancelled_user,
|
||||||
|
OrderItemsStatus.Returned,
|
||||||
|
];
|
||||||
|
|
||||||
const pipeline: any[] = [
|
const pipeline: any[] = [
|
||||||
{
|
{
|
||||||
$match: {
|
$match: {
|
||||||
createdAt: { $gte: startDate, $lte: endDate },
|
createdAt: { $gte: startDate, $lte: endDate },
|
||||||
// فقط سفارشهای ثبت شده/پرداخت شده — تنظیم کن اگر میخواهی فیلتر فرق کند
|
orderStatus: {
|
||||||
orderStatus: { $ne: OrdersStatus.wait_payment },
|
$nin: [OrdersStatus.wait_payment, OrdersStatus.cancelled_system, OrdersStatus.Cancelled],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
$lookup: {
|
$lookup: {
|
||||||
from: "orderitems", // اگر اسم کالکشنت فرق دارد اینجا اصلاح کن
|
from: "orderitems",
|
||||||
localField: "_id",
|
localField: "_id",
|
||||||
foreignField: "order",
|
foreignField: "order",
|
||||||
as: "items",
|
as: "orderItems",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ $unwind: { path: "$items", preserveNullAndEmptyArrays: false } },
|
|
||||||
{
|
{
|
||||||
$addFields: {
|
$addFields: {
|
||||||
lineTotal: {
|
orderItems: {
|
||||||
$multiply: [{ $ifNull: ["$items.quantity", 0] }, { $ifNull: ["$items.price", 0] }],
|
$filter: {
|
||||||
|
input: "$orderItems",
|
||||||
|
as: "item",
|
||||||
|
cond: {
|
||||||
|
$not: [{ $in: ["$$item.status", excludedOrderItemStatuses] }],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ $unwind: "$orderItems" },
|
||||||
|
{
|
||||||
|
$addFields: {
|
||||||
|
lineTotal: { $ifNull: ["$orderItems.totalPaymentPrice", 0] },
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
$group: {
|
$group: {
|
||||||
_id: {
|
_id: {
|
||||||
@@ -577,7 +595,6 @@ class OrderRepository extends BaseRepository<IOrder> {
|
|||||||
|
|
||||||
const aggResults: Array<{ _id: { period: Date }; periodTotal: number }> = await this.model.aggregate(pipeline).exec();
|
const aggResults: Array<{ _id: { period: Date }; periodTotal: number }> = await this.model.aggregate(pipeline).exec();
|
||||||
|
|
||||||
// map نتایج
|
|
||||||
const map = new Map<string, number>();
|
const map = new Map<string, number>();
|
||||||
for (const r of aggResults) {
|
for (const r of aggResults) {
|
||||||
const d: Date = r._id.period;
|
const d: Date = r._id.period;
|
||||||
|
|||||||
Reference in New Issue
Block a user