autosync_backend2 1.1.67 → 1.1.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +693 -227
- package/dist/index.js +538 -95
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -147067,6 +147067,7 @@ __export(exports_schema, {
|
|
147067
147067
|
crmCustomerVehicleTable: () => crmCustomerVehicleTable,
|
147068
147068
|
crmCustomerTable: () => crmCustomerTable,
|
147069
147069
|
crmCustomerRelations: () => crmCustomerRelations,
|
147070
|
+
crmCpOrderTypeEnum: () => crmCpOrderTypeEnum,
|
147070
147071
|
crmCpOrderTable: () => crmCpOrderTable,
|
147071
147072
|
crmCpOrderStateEnum: () => crmCpOrderStateEnum,
|
147072
147073
|
crmCpOrderSpPackageTable: () => crmCpOrderSpPackageTable,
|
@@ -147390,12 +147391,16 @@ var crmCpOrderStateEnum = pgEnum("cp_order_state", [
|
|
147390
147391
|
"PROGRESSING",
|
147391
147392
|
"COMPLETE"
|
147392
147393
|
]);
|
147394
|
+
var crmCpOrderTypeEnum = pgEnum("cp_order_type", [
|
147395
|
+
"Service",
|
147396
|
+
"ProductSale"
|
147397
|
+
]);
|
147393
147398
|
var crmCpOrderTable = crmSchema.table("cp_order", {
|
147394
147399
|
...base_schema_helper_default,
|
147395
147400
|
companyId: uuid3().notNull(),
|
147396
147401
|
companyBranchId: uuid3().notNull(),
|
147397
147402
|
customerId: uuid3(),
|
147398
|
-
vehicleId: uuid3()
|
147403
|
+
vehicleId: uuid3(),
|
147399
147404
|
orderId: varchar().notNull(),
|
147400
147405
|
state: crmCpOrderStateEnum("state").notNull().default("CREATED"),
|
147401
147406
|
isNoat: boolean4().default(false),
|
@@ -147403,7 +147408,8 @@ var crmCpOrderTable = crmSchema.table("cp_order", {
|
|
147403
147408
|
withTimezone: true,
|
147404
147409
|
mode: "string"
|
147405
147410
|
}),
|
147406
|
-
km: integer2().notNull().default(0)
|
147411
|
+
km: integer2().notNull().default(0),
|
147412
|
+
type: crmCpOrderTypeEnum().default("Service").notNull()
|
147407
147413
|
}, (t2) => [
|
147408
147414
|
index().on(t2.companyId),
|
147409
147415
|
index().on(t2.companyBranchId),
|
@@ -155178,9 +155184,11 @@ var CrmCpOrderLogic;
|
|
155178
155184
|
if (!order) {
|
155179
155185
|
return status("Not Found", "\u0417\u0430\u0441\u0432\u0430\u0440 \u04AF\u0439\u043B\u0447\u0438\u043B\u0433\u044D\u044D \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
|
155180
155186
|
}
|
155181
|
-
|
155182
|
-
|
155183
|
-
|
155187
|
+
if (order.vehicleId) {
|
155188
|
+
await db2.update(crmVehicleTable).set({
|
155189
|
+
km: body.km
|
155190
|
+
}).where(eq(crmVehicleTable.id, order.vehicleId));
|
155191
|
+
}
|
155184
155192
|
return order;
|
155185
155193
|
});
|
155186
155194
|
};
|
@@ -155551,14 +155559,8 @@ var CrmCpOrderItemEmployeeModel;
|
|
155551
155559
|
((CrmCpOrderItemEmployeeModel) => {
|
155552
155560
|
const createSchema = createInsertSchema(crmCpOrderItemEmployeeTable);
|
155553
155561
|
const updateSchema = createUpdateSchema(crmCpOrderItemEmployeeTable);
|
155554
|
-
CrmCpOrderItemEmployeeModel.create =
|
155555
|
-
|
155556
|
-
"employeeId",
|
155557
|
-
"amount"
|
155558
|
-
]);
|
155559
|
-
CrmCpOrderItemEmployeeModel.update = t.Pick(OmitBaseSchema(updateSchema), [
|
155560
|
-
"amount"
|
155561
|
-
]);
|
155562
|
+
CrmCpOrderItemEmployeeModel.create = OmitBaseSchema(createSchema);
|
155563
|
+
CrmCpOrderItemEmployeeModel.update = t.Pick(OmitBaseSchema(updateSchema), ["amount"]);
|
155562
155564
|
CrmCpOrderItemEmployeeModel.select = t.Object({
|
155563
155565
|
cpOrderItemId: t.String({ format: "uuid" })
|
155564
155566
|
});
|
@@ -155616,7 +155618,7 @@ var model_default7 = CrmCpOrderItemModel;
|
|
155616
155618
|
var itemRoutes = new Elysia({
|
155617
155619
|
prefix: "/item",
|
155618
155620
|
tags: ["CrmCpOrderItem"]
|
155619
|
-
}).use(better_auth_default).guard({
|
155621
|
+
}).use(better_auth_default).use(employee_default2).guard({
|
155620
155622
|
auth: true
|
155621
155623
|
}).get("/", async ({ query }) => logic_default5.select(query), {
|
155622
155624
|
query: model_default7.select
|
@@ -155645,7 +155647,7 @@ var itemRoutes = new Elysia({
|
|
155645
155647
|
return res;
|
155646
155648
|
return await logic_default11.apply(res.cpOrderId, user2);
|
155647
155649
|
}
|
155648
|
-
})
|
155650
|
+
});
|
155649
155651
|
var item_default = itemRoutes;
|
155650
155652
|
|
155651
155653
|
// src/routes/crm/cpOrder/model.ts
|
@@ -156140,6 +156142,447 @@ var inspectionRoutes = new Elysia({
|
|
156140
156142
|
}).get("/:id", async ({ params: { id }, user: user2 }) => logic_default14.getById(id, user2)).post("/:id", async ({ params: { id }, user: user2 }) => logic_default14.approve(id, user2)).put("/:id", async ({ params: { id }, user: user2 }) => logic_default14.cancel(id, user2)).post("/:id/service-order", async ({ params: { id }, user: user2 }) => logic_default14.createCpOrder(id, user2));
|
156141
156143
|
var inspection_default = inspectionRoutes;
|
156142
156144
|
|
156145
|
+
// src/routes/crm/reports/logic.ts
|
156146
|
+
var CrmReportsLogic;
|
156147
|
+
((CrmReportsLogic) => {
|
156148
|
+
const buildCommonFilters = (query, user2) => {
|
156149
|
+
return and(eq(crmCpOrderTable.companyId, user2.companyId), eq(crmCpOrderTable.companyBranchId, user2.branchId).if(user2.kind === "CUSTOMER"), eq(crmCpOrderTable.companyBranchId, query.companyBranchId).if(query.companyBranchId), gte(sql3`date(${crmCpOrderTable.createdAt})`, query.startDate).if(query.startDate), lte(sql3`date(${crmCpOrderTable.createdAt})`, query.endDate).if(query.endDate), softDeletedFilter(crmCpOrderTable));
|
156150
|
+
};
|
156151
|
+
CrmReportsLogic.salesReport = async (query, user2) => {
|
156152
|
+
const filter = and(buildCommonFilters(query, user2), eq(crmCpOrderTable.state, query.state).if(query.state));
|
156153
|
+
let baseQuery = db_default.select({
|
156154
|
+
totalCount: totalCountSql,
|
156155
|
+
order: crmCpOrderTable,
|
156156
|
+
customer: crmCustomerTable,
|
156157
|
+
vehicle: crmVehicleTable,
|
156158
|
+
vehicleKind: techdocVehicleKindTable,
|
156159
|
+
totalAmount: sql3`
|
156160
|
+
COALESCE(
|
156161
|
+
(SELECT SUM(${crmCpOrderItemTable.priceTotal})
|
156162
|
+
FROM ${crmCpOrderItemTable}
|
156163
|
+
WHERE ${crmCpOrderItemTable.cpOrderId} = ${crmCpOrderTable.id}
|
156164
|
+
AND ${crmCpOrderItemTable.deletedAt} IS NULL),
|
156165
|
+
0
|
156166
|
+
)
|
156167
|
+
`,
|
156168
|
+
paidAmount: sql3`
|
156169
|
+
COALESCE(
|
156170
|
+
(SELECT SUM(${crmCpOrderPaymentTable.amount})
|
156171
|
+
FROM ${crmCpOrderPaymentTable}
|
156172
|
+
WHERE ${crmCpOrderPaymentTable.cpOrderId} = ${crmCpOrderTable.id}
|
156173
|
+
AND ${crmCpOrderPaymentTable.state} = 'PAID'
|
156174
|
+
AND ${crmCpOrderPaymentTable.deletedAt} IS NULL),
|
156175
|
+
0
|
156176
|
+
)
|
156177
|
+
`
|
156178
|
+
}).from(crmCpOrderTable).leftJoin(crmCustomerTable, eq(crmCustomerTable.id, crmCpOrderTable.customerId)).leftJoin(crmVehicleTable, eq(crmVehicleTable.id, crmCpOrderTable.vehicleId)).leftJoin(techdocVehicleKindTable, eq(techdocVehicleKindTable.id, crmVehicleTable.vehicleKindId)).where(filter).orderBy(desc(crmCpOrderTable.createdAt)).$dynamic();
|
156179
|
+
const result = await pagination_helper_default(baseQuery, query.pagination);
|
156180
|
+
if (query.includeItems || query.includePayments) {
|
156181
|
+
const orderIds = result.map((r2) => r2.order.id);
|
156182
|
+
let items = [];
|
156183
|
+
let payments = [];
|
156184
|
+
if (query.includeItems && orderIds.length > 0) {
|
156185
|
+
items = await db_default.select().from(crmCpOrderItemTable).where(and(sql3`${crmCpOrderItemTable.cpOrderId} = ANY(${orderIds})`, softDeletedFilter(crmCpOrderItemTable)));
|
156186
|
+
}
|
156187
|
+
if (query.includePayments && orderIds.length > 0) {
|
156188
|
+
payments = await db_default.select().from(crmCpOrderPaymentTable).where(and(sql3`${crmCpOrderPaymentTable.cpOrderId} = ANY(${orderIds})`, softDeletedFilter(crmCpOrderPaymentTable)));
|
156189
|
+
}
|
156190
|
+
return result.map((order) => ({
|
156191
|
+
...order,
|
156192
|
+
items: items.filter((item) => item.cpOrderId === order.order.id),
|
156193
|
+
payments: payments.filter((payment) => payment.cpOrderId === order.order.id)
|
156194
|
+
}));
|
156195
|
+
}
|
156196
|
+
return result;
|
156197
|
+
};
|
156198
|
+
CrmReportsLogic.salesSummary = async (query, user2) => {
|
156199
|
+
const filter = buildCommonFilters(query, user2);
|
156200
|
+
const orderItems = db_default.$with("order_items").as(db_default.select({
|
156201
|
+
cpOrderId: crmCpOrderItemTable.cpOrderId,
|
156202
|
+
totalItems: sum(crmCpOrderItemTable.priceTotal).as("total_items")
|
156203
|
+
}).from(crmCpOrderItemTable).where(isNull2(crmCpOrderItemTable.deletedAt)).groupBy((t2) => t2.cpOrderId));
|
156204
|
+
const orderPayments = db_default.$with("order_payments").as(db_default.select({
|
156205
|
+
cpOrderId: crmCpOrderPaymentTable.cpOrderId,
|
156206
|
+
totalPaid: sum(crmCpOrderPaymentTable.amount).as("total_paid")
|
156207
|
+
}).from(crmCpOrderPaymentTable).where(and(isNull2(crmCpOrderPaymentTable.deletedAt), eq(crmCpOrderPaymentTable.state, "PAID"))).groupBy((t2) => t2.cpOrderId));
|
156208
|
+
const [summary] = await db_default.select({
|
156209
|
+
totalOrders: count(crmCpOrderTable.id),
|
156210
|
+
totalRevenue: sql3`COALESCE(SUM(${orderItems.totalItems}),0)`.as("total_revenue"),
|
156211
|
+
totalPaidAmount: sql3`
|
156212
|
+
COALESCE(SUM(${orderPayments.totalPaid}), 0)
|
156213
|
+
`.as("total_paid_amount"),
|
156214
|
+
averageOrderValue: sql3`
|
156215
|
+
COALESCE(AVG(${orderItems.totalItems}), 0)
|
156216
|
+
`.as("average_order_value"),
|
156217
|
+
ordersCompleted: sql3`
|
156218
|
+
COUNT(CASE WHEN ${crmCpOrderTable.state} = 'COMPLETE' THEN 1 END)
|
156219
|
+
`.as("orders_completed"),
|
156220
|
+
ordersPending: sql3`
|
156221
|
+
COUNT(CASE WHEN ${crmCpOrderTable.state} = 'CREATED' THEN 1 END)
|
156222
|
+
`.as("orders_pending"),
|
156223
|
+
ordersCancelled: sql3`
|
156224
|
+
COUNT(CASE WHEN ${crmCpOrderTable.state} = 'CANCELLED' THEN 1 END)
|
156225
|
+
`.as("orders_cancelled")
|
156226
|
+
}).from(crmCpOrderTable).leftJoin(orderItems, eq(crmCpOrderTable.id, orderItems.cpOrderId)).leftJoin(orderPayments, eq(crmCpOrderTable.id, orderPayments.cpOrderId)).where(filter);
|
156227
|
+
return {
|
156228
|
+
totalOrders: summary.totalOrders,
|
156229
|
+
totalRevenue: summary.totalRevenue,
|
156230
|
+
totalPaidAmount: summary.totalPaidAmount,
|
156231
|
+
totalPendingAmount: summary.totalRevenue - summary.totalPaidAmount,
|
156232
|
+
averageOrderValue: summary.averageOrderValue,
|
156233
|
+
ordersCompleted: summary.ordersCompleted,
|
156234
|
+
ordersPending: summary.ordersPending,
|
156235
|
+
ordersCancelled: summary.ordersCancelled
|
156236
|
+
};
|
156237
|
+
};
|
156238
|
+
CrmReportsLogic.salesByPeriod = async (query, user2) => {
|
156239
|
+
const filter = buildCommonFilters(query, user2);
|
156240
|
+
const dateFormat = {
|
156241
|
+
day: "YYYY-MM-DD",
|
156242
|
+
week: "YYYY-WW",
|
156243
|
+
month: "YYYY-MM",
|
156244
|
+
year: "YYYY"
|
156245
|
+
}[query.groupBy];
|
156246
|
+
const result = await db_default.select({
|
156247
|
+
period: sql3`to_char(${crmCpOrderTable.createdAt}, '${sql3.raw(dateFormat)}')`,
|
156248
|
+
totalOrders: count(crmCpOrderTable.id),
|
156249
|
+
totalRevenue: sql3`
|
156250
|
+
COALESCE(SUM(
|
156251
|
+
(SELECT SUM(${crmCpOrderItemTable.priceTotal})
|
156252
|
+
FROM ${crmCpOrderItemTable}
|
156253
|
+
WHERE ${crmCpOrderItemTable.cpOrderId} = ${crmCpOrderTable.id}
|
156254
|
+
AND ${crmCpOrderItemTable.deletedAt} IS NULL)
|
156255
|
+
), 0)
|
156256
|
+
`,
|
156257
|
+
totalPaidAmount: sql3`
|
156258
|
+
COALESCE(SUM(
|
156259
|
+
(SELECT SUM(${crmCpOrderPaymentTable.amount})
|
156260
|
+
FROM ${crmCpOrderPaymentTable}
|
156261
|
+
WHERE ${crmCpOrderPaymentTable.cpOrderId} = ${crmCpOrderTable.id}
|
156262
|
+
AND ${crmCpOrderPaymentTable.state} = 'PAID'
|
156263
|
+
AND ${crmCpOrderPaymentTable.deletedAt} IS NULL)
|
156264
|
+
), 0)
|
156265
|
+
`
|
156266
|
+
}).from(crmCpOrderTable).where(filter).groupBy(sql3`to_char(${crmCpOrderTable.createdAt}, '${sql3.raw(dateFormat)}')`).orderBy(sql3`to_char(${crmCpOrderTable.createdAt}, '${sql3.raw(dateFormat)}')`);
|
156267
|
+
return result;
|
156268
|
+
};
|
156269
|
+
CrmReportsLogic.salesByEmployee = async (query, user2) => {
|
156270
|
+
const filter = buildCommonFilters(query, user2);
|
156271
|
+
const baseQuery = db_default.select({
|
156272
|
+
totalCount: totalCountSql,
|
156273
|
+
employeeId: crmCpOrderItemEmployeeTable.employeeId,
|
156274
|
+
employeeName: sql3`
|
156275
|
+
CONCAT(${companyEmployeeTable.firstname}, ' ', ${companyEmployeeTable.lastname})
|
156276
|
+
`,
|
156277
|
+
totalOrders: count(sql3`DISTINCT ${crmCpOrderTable.id}`),
|
156278
|
+
totalRevenue: sql3`
|
156279
|
+
COALESCE(SUM(${crmCpOrderItemEmployeeTable.amount}), 0)
|
156280
|
+
`,
|
156281
|
+
totalCommission: sql3`
|
156282
|
+
COALESCE(SUM(${crmCpOrderItemEmployeeTable.amount}) * 0.1, 0)
|
156283
|
+
`
|
156284
|
+
}).from(crmCpOrderItemEmployeeTable).innerJoin(crmCpOrderItemTable, eq(crmCpOrderItemTable.id, crmCpOrderItemEmployeeTable.cpOrderItemId)).innerJoin(crmCpOrderTable, eq(crmCpOrderTable.id, crmCpOrderItemTable.cpOrderId)).innerJoin(companyEmployeeTable, eq(companyEmployeeTable.id, crmCpOrderItemEmployeeTable.employeeId)).where(and(filter, softDeletedFilter(crmCpOrderItemEmployeeTable), softDeletedFilter(crmCpOrderItemTable), softDeletedFilter(companyEmployeeTable))).groupBy(crmCpOrderItemEmployeeTable.employeeId, companyEmployeeTable.firstname, companyEmployeeTable.lastname).orderBy(desc(sql3`SUM(${crmCpOrderItemEmployeeTable.amount})`)).$dynamic();
|
156285
|
+
return await pagination_helper_default(baseQuery, query.pagination);
|
156286
|
+
};
|
156287
|
+
CrmReportsLogic.paymentsReport = async (query, user2) => {
|
156288
|
+
const filter = and(buildCommonFilters(query, user2), eq(crmCpOrderPaymentTable.paymentMethod, query.method).if(query.method), eq(crmCpOrderPaymentTable.state, query.state).if(query.state), softDeletedFilter(crmCpOrderPaymentTable));
|
156289
|
+
const baseQuery = db_default.select({
|
156290
|
+
totalCount: totalCountSql,
|
156291
|
+
payment: crmCpOrderPaymentTable,
|
156292
|
+
order: crmCpOrderTable,
|
156293
|
+
customer: crmCustomerTable
|
156294
|
+
}).from(crmCpOrderPaymentTable).innerJoin(crmCpOrderTable, eq(crmCpOrderTable.id, crmCpOrderPaymentTable.cpOrderId)).leftJoin(crmCustomerTable, eq(crmCustomerTable.id, crmCpOrderTable.customerId)).where(filter).orderBy(desc(crmCpOrderPaymentTable.createdAt)).$dynamic();
|
156295
|
+
return await pagination_helper_default(baseQuery, query.pagination);
|
156296
|
+
};
|
156297
|
+
const formatCSV = (headers, rows) => {
|
156298
|
+
const csvHeaders = headers.map((h) => `"${h}"`).join(",");
|
156299
|
+
const csvRows = rows.map((row) => row.map((cell) => {
|
156300
|
+
if (cell === null || cell === undefined)
|
156301
|
+
return '""';
|
156302
|
+
return `"${String(cell).replace(/"/g, '""')}"`;
|
156303
|
+
}).join(","));
|
156304
|
+
return [csvHeaders, ...csvRows].join(`
|
156305
|
+
`);
|
156306
|
+
};
|
156307
|
+
CrmReportsLogic.exportSalesCSV = async (query, user2) => {
|
156308
|
+
const filter = and(buildCommonFilters(query, user2), eq(crmCpOrderTable.state, query.state).if(query.state));
|
156309
|
+
const result = await db_default.select({
|
156310
|
+
orderId: crmCpOrderTable.orderId,
|
156311
|
+
customerName: sql3`CONCAT(${crmCustomerTable.firstname}, ' ', ${crmCustomerTable.lastname})`,
|
156312
|
+
customerPhone: crmCustomerTable.phoneNumber,
|
156313
|
+
vehiclePlate: crmVehicleTable.licensePlate,
|
156314
|
+
vehicleKind: techdocVehicleKindTable.name,
|
156315
|
+
orderState: crmCpOrderTable.state,
|
156316
|
+
createdAt: crmCpOrderTable.createdAt,
|
156317
|
+
totalAmount: sql3`
|
156318
|
+
COALESCE(
|
156319
|
+
(SELECT SUM(${crmCpOrderItemTable.priceTotal})
|
156320
|
+
FROM ${crmCpOrderItemTable}
|
156321
|
+
WHERE ${crmCpOrderItemTable.cpOrderId} = ${crmCpOrderTable.id}
|
156322
|
+
AND ${crmCpOrderItemTable.deletedAt} IS NULL),
|
156323
|
+
0
|
156324
|
+
)
|
156325
|
+
`,
|
156326
|
+
paidAmount: sql3`
|
156327
|
+
COALESCE(
|
156328
|
+
(SELECT SUM(${crmCpOrderPaymentTable.amount})
|
156329
|
+
FROM ${crmCpOrderPaymentTable}
|
156330
|
+
WHERE ${crmCpOrderPaymentTable.cpOrderId} = ${crmCpOrderTable.id}
|
156331
|
+
AND ${crmCpOrderPaymentTable.state} = 'PAID'
|
156332
|
+
AND ${crmCpOrderPaymentTable.deletedAt} IS NULL),
|
156333
|
+
0
|
156334
|
+
)
|
156335
|
+
`
|
156336
|
+
}).from(crmCpOrderTable).leftJoin(crmCustomerTable, eq(crmCustomerTable.id, crmCpOrderTable.customerId)).leftJoin(crmVehicleTable, eq(crmVehicleTable.id, crmCpOrderTable.vehicleId)).leftJoin(techdocVehicleKindTable, eq(techdocVehicleKindTable.id, crmVehicleTable.vehicleKindId)).where(filter).orderBy(desc(crmCpOrderTable.createdAt)).limit(query.limit || 1e4);
|
156337
|
+
const headers = [
|
156338
|
+
"\u0417\u0430\u0445\u0438\u0430\u043B\u0433\u044B\u043D \u0434\u0443\u0433\u0430\u0430\u0440",
|
156339
|
+
"\u04AE\u0439\u043B\u0447\u043B\u04AF\u04AF\u043B\u044D\u0433\u0447",
|
156340
|
+
"\u0423\u0442\u0430\u0441",
|
156341
|
+
"\u0422\u044D\u044D\u0432\u0440\u0438\u0439\u043D \u0445\u044D\u0440\u044D\u0433\u0441\u043B\u0438\u0439\u043D \u0434\u0443\u0433\u0430\u0430\u0440",
|
156342
|
+
"\u041C\u0430\u0440\u043A \u0437\u0430\u0433\u0432\u0430\u0440",
|
156343
|
+
"\u0422\u04E9\u043B\u04E9\u0432",
|
156344
|
+
"\u041E\u0433\u043D\u043E\u043E",
|
156345
|
+
"\u041D\u0438\u0439\u0442 \u0434\u04AF\u043D",
|
156346
|
+
"\u0422\u04E9\u043B\u0441\u04E9\u043D \u0434\u04AF\u043D",
|
156347
|
+
"\u04AE\u043B\u0434\u044D\u0433\u0434\u044D\u043B"
|
156348
|
+
];
|
156349
|
+
const rows = result.map((order) => [
|
156350
|
+
order.orderId,
|
156351
|
+
order.customerName || "\u041C\u044D\u0434\u044D\u0433\u0434\u044D\u0445\u0433\u04AF\u0439",
|
156352
|
+
order.customerPhone || "",
|
156353
|
+
order.vehiclePlate || "",
|
156354
|
+
order.vehicleKind || "",
|
156355
|
+
order.orderState,
|
156356
|
+
order.createdAt,
|
156357
|
+
order.totalAmount,
|
156358
|
+
order.paidAmount,
|
156359
|
+
order.totalAmount - order.paidAmount
|
156360
|
+
]);
|
156361
|
+
return formatCSV(headers, rows);
|
156362
|
+
};
|
156363
|
+
CrmReportsLogic.exportSalesSummaryCSV = async (query, user2) => {
|
156364
|
+
const summary = await CrmReportsLogic.salesSummary(query, user2);
|
156365
|
+
const headers = ["\u041C\u0435\u0442\u0440\u0438\u043A", "\u0423\u0442\u0433\u0430"];
|
156366
|
+
const rows = [
|
156367
|
+
["\u041D\u0438\u0439\u0442 \u0437\u0430\u0445\u0438\u0430\u043B\u0433\u0430", summary.totalOrders],
|
156368
|
+
["\u041D\u0438\u0439\u0442 \u043E\u0440\u043B\u043E\u0433\u043E", summary.totalRevenue],
|
156369
|
+
["\u041D\u0438\u0439\u0442 \u0442\u04E9\u043B\u0441\u04E9\u043D \u0434\u04AF\u043D", summary.totalPaidAmount],
|
156370
|
+
["\u0422\u04E9\u043B\u04E9\u04E9\u0433\u04AF\u0439 \u0434\u04AF\u043D", summary.totalPendingAmount],
|
156371
|
+
["\u0414\u0443\u043D\u0434\u0430\u0436 \u0437\u0430\u0445\u0438\u0430\u043B\u0433\u044B\u043D \u0434\u04AF\u043D", summary.averageOrderValue],
|
156372
|
+
["\u0414\u0443\u0443\u0441\u0433\u0430\u0441\u0430\u043D \u0437\u0430\u0445\u0438\u0430\u043B\u0433\u0430", summary.ordersCompleted],
|
156373
|
+
["\u0425\u04AF\u043B\u044D\u044D\u0433\u0434\u044D\u0436 \u0431\u0443\u0439 \u0437\u0430\u0445\u0438\u0430\u043B\u0433\u0430", summary.ordersPending],
|
156374
|
+
["\u0426\u0443\u0446\u043B\u0430\u0433\u0434\u0441\u0430\u043D \u0437\u0430\u0445\u0438\u0430\u043B\u0433\u0430", summary.ordersCancelled]
|
156375
|
+
];
|
156376
|
+
return formatCSV(headers, rows);
|
156377
|
+
};
|
156378
|
+
CrmReportsLogic.exportSalesByPeriodCSV = async (query, user2) => {
|
156379
|
+
const result = await CrmReportsLogic.salesByPeriod(query, user2);
|
156380
|
+
const headers = ["\u0425\u0443\u0433\u0430\u0446\u0430\u0430", "\u0417\u0430\u0445\u0438\u0430\u043B\u0433\u044B\u043D \u0442\u043E\u043E", "\u041D\u0438\u0439\u0442 \u043E\u0440\u043B\u043E\u0433\u043E", "\u0422\u04E9\u043B\u0441\u04E9\u043D \u0434\u04AF\u043D"];
|
156381
|
+
const rows = result.map((period) => [
|
156382
|
+
period.period,
|
156383
|
+
period.totalOrders,
|
156384
|
+
period.totalRevenue,
|
156385
|
+
period.totalPaidAmount
|
156386
|
+
]);
|
156387
|
+
return formatCSV(headers, rows);
|
156388
|
+
};
|
156389
|
+
CrmReportsLogic.exportSalesByEmployeeCSV = async (query, user2) => {
|
156390
|
+
const filter = buildCommonFilters(query, user2);
|
156391
|
+
const result = await db_default.select({
|
156392
|
+
employeeName: sql3`CONCAT(${companyEmployeeTable.firstname}, ' ', ${companyEmployeeTable.lastname})`,
|
156393
|
+
totalOrders: count(sql3`DISTINCT ${crmCpOrderTable.id}`),
|
156394
|
+
totalRevenue: sql3`COALESCE(SUM(${crmCpOrderItemEmployeeTable.amount}), 0)`,
|
156395
|
+
totalCommission: sql3`COALESCE(SUM(${crmCpOrderItemEmployeeTable.amount}) * 0.1, 0)`
|
156396
|
+
}).from(crmCpOrderItemEmployeeTable).innerJoin(crmCpOrderItemTable, eq(crmCpOrderItemTable.id, crmCpOrderItemEmployeeTable.cpOrderItemId)).innerJoin(crmCpOrderTable, eq(crmCpOrderTable.id, crmCpOrderItemTable.cpOrderId)).innerJoin(companyEmployeeTable, eq(companyEmployeeTable.id, crmCpOrderItemEmployeeTable.employeeId)).where(and(filter, softDeletedFilter(crmCpOrderItemEmployeeTable), softDeletedFilter(crmCpOrderItemTable), softDeletedFilter(companyEmployeeTable))).groupBy(crmCpOrderItemEmployeeTable.employeeId, companyEmployeeTable.firstname, companyEmployeeTable.lastname).orderBy(desc(sql3`SUM(${crmCpOrderItemEmployeeTable.amount})`)).limit(query.limit || 1e4);
|
156397
|
+
const headers = [
|
156398
|
+
"\u0410\u0436\u0438\u043B\u0442\u043D\u044B \u043D\u044D\u0440",
|
156399
|
+
"\u0417\u0430\u0445\u0438\u0430\u043B\u0433\u044B\u043D \u0442\u043E\u043E",
|
156400
|
+
"\u041D\u0438\u0439\u0442 \u0431\u043E\u0440\u043B\u0443\u0443\u043B\u0430\u043B\u0442",
|
156401
|
+
"\u041A\u043E\u043C\u0438\u0441\u0441"
|
156402
|
+
];
|
156403
|
+
const rows = result.map((employee) => [
|
156404
|
+
employee.employeeName,
|
156405
|
+
employee.totalOrders,
|
156406
|
+
employee.totalRevenue,
|
156407
|
+
employee.totalCommission
|
156408
|
+
]);
|
156409
|
+
return formatCSV(headers, rows);
|
156410
|
+
};
|
156411
|
+
CrmReportsLogic.exportPaymentsCSV = async (query, user2) => {
|
156412
|
+
const filter = and(buildCommonFilters(query, user2), eq(crmCpOrderPaymentTable.paymentMethod, query.method).if(query.method), softDeletedFilter(crmCpOrderPaymentTable));
|
156413
|
+
const result = await db_default.select({
|
156414
|
+
orderId: crmCpOrderTable.orderId,
|
156415
|
+
customerName: sql3`CONCAT(${crmCustomerTable.firstname}, ' ', ${crmCustomerTable.lastname})`,
|
156416
|
+
paymentMethod: crmCpOrderPaymentTable.paymentMethod,
|
156417
|
+
paymentChannel: crmCpOrderPaymentTable.paymentChannel,
|
156418
|
+
amount: crmCpOrderPaymentTable.amount,
|
156419
|
+
state: crmCpOrderPaymentTable.state,
|
156420
|
+
invoiceNumber: crmCpOrderPaymentTable.invoiceNumber,
|
156421
|
+
createdAt: crmCpOrderPaymentTable.createdAt
|
156422
|
+
}).from(crmCpOrderPaymentTable).innerJoin(crmCpOrderTable, eq(crmCpOrderTable.id, crmCpOrderPaymentTable.cpOrderId)).leftJoin(crmCustomerTable, eq(crmCustomerTable.id, crmCpOrderTable.customerId)).where(filter).orderBy(desc(crmCpOrderPaymentTable.createdAt)).limit(query.limit || 1e4);
|
156423
|
+
const headers = [
|
156424
|
+
"\u0417\u0430\u0445\u0438\u0430\u043B\u0433\u044B\u043D \u0434\u0443\u0433\u0430\u0430\u0440",
|
156425
|
+
"\u04AE\u0439\u043B\u0447\u043B\u04AF\u04AF\u043B\u044D\u0433\u0447",
|
156426
|
+
"\u0422\u04E9\u043B\u0431\u04E9\u0440\u0438\u0439\u043D \u0445\u044D\u0440\u044D\u0433\u0441\u044D\u043B",
|
156427
|
+
"\u0422\u04E9\u043B\u0431\u04E9\u0440\u0438\u0439\u043D \u0441\u0443\u0432\u0430\u0433",
|
156428
|
+
"\u0414\u04AF\u043D",
|
156429
|
+
"\u0422\u04E9\u043B\u04E9\u0432",
|
156430
|
+
"\u041D\u044D\u0445\u044D\u043C\u0436\u043B\u044D\u0445 \u0434\u0443\u0433\u0430\u0430\u0440",
|
156431
|
+
"\u041E\u0433\u043D\u043E\u043E"
|
156432
|
+
];
|
156433
|
+
const rows = result.map((payment) => [
|
156434
|
+
payment.orderId,
|
156435
|
+
payment.customerName || "\u041C\u044D\u0434\u044D\u0433\u0434\u044D\u0445\u0433\u04AF\u0439",
|
156436
|
+
payment.paymentMethod,
|
156437
|
+
payment.paymentChannel,
|
156438
|
+
payment.amount,
|
156439
|
+
payment.state,
|
156440
|
+
payment.invoiceNumber || "",
|
156441
|
+
payment.createdAt
|
156442
|
+
]);
|
156443
|
+
return formatCSV(headers, rows);
|
156444
|
+
};
|
156445
|
+
})(CrmReportsLogic ||= {});
|
156446
|
+
var logic_default15 = CrmReportsLogic;
|
156447
|
+
|
156448
|
+
// src/routes/crm/reports/model.ts
|
156449
|
+
var CrmReportsModel;
|
156450
|
+
((CrmReportsModel) => {
|
156451
|
+
CrmReportsModel.baseDateFilter = t.Partial(t.Object({
|
156452
|
+
startDate: t.String({ format: "date" }),
|
156453
|
+
endDate: t.String({ format: "date" }),
|
156454
|
+
companyBranchId: t.String({ format: "uuid" })
|
156455
|
+
}));
|
156456
|
+
CrmReportsModel.salesReportQuery = t.Composite([
|
156457
|
+
PaginationSchema,
|
156458
|
+
CrmReportsModel.baseDateFilter,
|
156459
|
+
t.Partial(t.Object({
|
156460
|
+
state: t.UnionEnum(crmCpOrderStateEnum.enumValues, {
|
156461
|
+
default: undefined
|
156462
|
+
}),
|
156463
|
+
employeeId: t.String({ format: "uuid" }),
|
156464
|
+
includeItems: t.Boolean({ default: false }),
|
156465
|
+
includePayments: t.Boolean({ default: false })
|
156466
|
+
}))
|
156467
|
+
]);
|
156468
|
+
CrmReportsModel.salesSummaryQuery = CrmReportsModel.baseDateFilter;
|
156469
|
+
CrmReportsModel.salesByPeriodQuery = t.Composite([
|
156470
|
+
CrmReportsModel.baseDateFilter,
|
156471
|
+
t.Object({
|
156472
|
+
groupBy: t.UnionEnum(["day", "week", "month", "year"])
|
156473
|
+
})
|
156474
|
+
]);
|
156475
|
+
CrmReportsModel.salesByEmployeeQuery = t.Composite([
|
156476
|
+
PaginationSchema,
|
156477
|
+
CrmReportsModel.baseDateFilter
|
156478
|
+
]);
|
156479
|
+
CrmReportsModel.paymentsReportQuery = t.Composite([
|
156480
|
+
PaginationSchema,
|
156481
|
+
CrmReportsModel.baseDateFilter,
|
156482
|
+
t.Partial(t.Object({
|
156483
|
+
method: t.String(),
|
156484
|
+
state: t.String()
|
156485
|
+
}))
|
156486
|
+
]);
|
156487
|
+
CrmReportsModel.csvExportQuery = t.Composite([
|
156488
|
+
CrmReportsModel.baseDateFilter,
|
156489
|
+
t.Partial(t.Object({
|
156490
|
+
state: t.UnionEnum(crmCpOrderStateEnum.enumValues, {
|
156491
|
+
default: undefined
|
156492
|
+
}),
|
156493
|
+
employeeId: t.String({ format: "uuid" }),
|
156494
|
+
method: t.String(),
|
156495
|
+
limit: t.Number({ default: 1e4, maximum: 50000 })
|
156496
|
+
}))
|
156497
|
+
]);
|
156498
|
+
CrmReportsModel.salesSummaryResponse = t.Object({
|
156499
|
+
totalOrders: t.Number(),
|
156500
|
+
totalRevenue: t.Number(),
|
156501
|
+
totalPaidAmount: t.Number(),
|
156502
|
+
totalPendingAmount: t.Number(),
|
156503
|
+
averageOrderValue: t.Number(),
|
156504
|
+
ordersCompleted: t.Number(),
|
156505
|
+
ordersPending: t.Number(),
|
156506
|
+
ordersCancelled: t.Number()
|
156507
|
+
});
|
156508
|
+
CrmReportsModel.salesByPeriodResponse = t.Array(t.Object({
|
156509
|
+
period: t.String(),
|
156510
|
+
totalOrders: t.Number(),
|
156511
|
+
totalRevenue: t.Number(),
|
156512
|
+
totalPaidAmount: t.Number()
|
156513
|
+
}));
|
156514
|
+
CrmReportsModel.salesByEmployeeResponse = t.Object({
|
156515
|
+
data: t.Array(t.Object({
|
156516
|
+
employeeId: t.String({ format: "uuid" }),
|
156517
|
+
employeeName: t.String(),
|
156518
|
+
totalOrders: t.Number(),
|
156519
|
+
totalRevenue: t.Number(),
|
156520
|
+
totalCommission: t.Number()
|
156521
|
+
})),
|
156522
|
+
totalCount: t.Number(),
|
156523
|
+
pagination: t.Object({
|
156524
|
+
page: t.Number(),
|
156525
|
+
size: t.Number(),
|
156526
|
+
totalPages: t.Number()
|
156527
|
+
})
|
156528
|
+
});
|
156529
|
+
})(CrmReportsModel ||= {});
|
156530
|
+
var model_default13 = CrmReportsModel;
|
156531
|
+
|
156532
|
+
// src/routes/crm/reports/index.ts
|
156533
|
+
var reportsRoutes = new Elysia({
|
156534
|
+
prefix: "/reports",
|
156535
|
+
tags: ["CrmReports"]
|
156536
|
+
}).use(better_auth_default).guard({
|
156537
|
+
auth: true
|
156538
|
+
}).get("/sales", async ({ query, user: user2 }) => logic_default15.salesReport(query, user2), {
|
156539
|
+
query: model_default13.salesReportQuery
|
156540
|
+
}).get("/sales/summary", async ({ query, user: user2 }) => logic_default15.salesSummary(query, user2), {
|
156541
|
+
query: model_default13.salesSummaryQuery
|
156542
|
+
}).get("/sales/by-period", async ({ query, user: user2 }) => logic_default15.salesByPeriod(query, user2), {
|
156543
|
+
query: model_default13.salesByPeriodQuery
|
156544
|
+
}).get("/sales/by-employee", async ({ query, user: user2 }) => logic_default15.salesByEmployee(query, user2), {
|
156545
|
+
query: model_default13.salesByEmployeeQuery
|
156546
|
+
}).get("/payments", async ({ query, user: user2 }) => logic_default15.paymentsReport(query, user2), {
|
156547
|
+
query: model_default13.paymentsReportQuery
|
156548
|
+
}).get("/sales/csv", async ({ query, user: user2, set: set3 }) => {
|
156549
|
+
const csvData = await logic_default15.exportSalesCSV(query, user2);
|
156550
|
+
set3.headers["Content-Type"] = "text/csv";
|
156551
|
+
set3.headers["Content-Disposition"] = 'attachment; filename="sales-report.csv"';
|
156552
|
+
return csvData;
|
156553
|
+
}, {
|
156554
|
+
query: model_default13.csvExportQuery
|
156555
|
+
}).get("/sales/summary/csv", async ({ query, user: user2, set: set3 }) => {
|
156556
|
+
const csvData = await logic_default15.exportSalesSummaryCSV(query, user2);
|
156557
|
+
set3.headers["Content-Type"] = "text/csv";
|
156558
|
+
set3.headers["Content-Disposition"] = 'attachment; filename="sales-summary.csv"';
|
156559
|
+
return csvData;
|
156560
|
+
}, {
|
156561
|
+
query: model_default13.baseDateFilter
|
156562
|
+
}).get("/sales/by-period/csv", async ({ query, user: user2, set: set3 }) => {
|
156563
|
+
const csvData = await logic_default15.exportSalesByPeriodCSV(query, user2);
|
156564
|
+
set3.headers["Content-Type"] = "text/csv";
|
156565
|
+
set3.headers["Content-Disposition"] = 'attachment; filename="sales-by-period.csv"';
|
156566
|
+
return csvData;
|
156567
|
+
}, {
|
156568
|
+
query: model_default13.salesByPeriodQuery
|
156569
|
+
}).get("/sales/by-employee/csv", async ({ query, user: user2, set: set3 }) => {
|
156570
|
+
const csvData = await logic_default15.exportSalesByEmployeeCSV(query, user2);
|
156571
|
+
set3.headers["Content-Type"] = "text/csv";
|
156572
|
+
set3.headers["Content-Disposition"] = 'attachment; filename="sales-by-employee.csv"';
|
156573
|
+
return csvData;
|
156574
|
+
}, {
|
156575
|
+
query: model_default13.csvExportQuery
|
156576
|
+
}).get("/payments/csv", async ({ query, user: user2, set: set3 }) => {
|
156577
|
+
const csvData = await logic_default15.exportPaymentsCSV(query, user2);
|
156578
|
+
set3.headers["Content-Type"] = "text/csv";
|
156579
|
+
set3.headers["Content-Disposition"] = 'attachment; filename="payments-report.csv"';
|
156580
|
+
return csvData;
|
156581
|
+
}, {
|
156582
|
+
query: model_default13.csvExportQuery
|
156583
|
+
});
|
156584
|
+
var reports_default = reportsRoutes;
|
156585
|
+
|
156143
156586
|
// src/routes/crm/spPackage/model.ts
|
156144
156587
|
var CrmSpPackageModel;
|
156145
156588
|
((CrmSpPackageModel) => {
|
@@ -156153,7 +156596,7 @@ var CrmSpPackageModel;
|
|
156153
156596
|
t.Partial(t.Pick(selectSchema, ["name", "priceTotal", "companyBranchId"]))
|
156154
156597
|
]);
|
156155
156598
|
})(CrmSpPackageModel ||= {});
|
156156
|
-
var
|
156599
|
+
var model_default14 = CrmSpPackageModel;
|
156157
156600
|
|
156158
156601
|
// src/routes/crm/spPackage/product/logic.ts
|
156159
156602
|
var CrmSpPackageProductLogic;
|
@@ -156199,7 +156642,7 @@ var CrmSpPackageProductLogic;
|
|
156199
156642
|
}).where(eq(crmSpPackageProductTable.id, id));
|
156200
156643
|
};
|
156201
156644
|
})(CrmSpPackageProductLogic ||= {});
|
156202
|
-
var
|
156645
|
+
var logic_default16 = CrmSpPackageProductLogic;
|
156203
156646
|
|
156204
156647
|
// src/routes/crm/spPackage/product/model.ts
|
156205
156648
|
var CrmSpPackageProductModel;
|
@@ -156211,7 +156654,7 @@ var CrmSpPackageProductModel;
|
|
156211
156654
|
CrmSpPackageProductModel.update = OmitBaseSchema(updateSchema);
|
156212
156655
|
CrmSpPackageProductModel.select = t.Pick(selectSchema, ["spPackageId"]);
|
156213
156656
|
})(CrmSpPackageProductModel ||= {});
|
156214
|
-
var
|
156657
|
+
var model_default15 = CrmSpPackageProductModel;
|
156215
156658
|
|
156216
156659
|
// src/routes/crm/spPackage/product/index.ts
|
156217
156660
|
var productRoutes = new Elysia({
|
@@ -156219,17 +156662,17 @@ var productRoutes = new Elysia({
|
|
156219
156662
|
tags: ["CrmSpPackageProduct"]
|
156220
156663
|
}).use(better_auth_default).guard({
|
156221
156664
|
auth: true
|
156222
|
-
}).get("/", async ({ query }) =>
|
156223
|
-
query:
|
156224
|
-
}).post("/", async ({ body }) =>
|
156225
|
-
body:
|
156226
|
-
}).post("/many", async ({ body }) =>
|
156227
|
-
body: t.Array(
|
156665
|
+
}).get("/", async ({ query }) => logic_default16.select(query), {
|
156666
|
+
query: model_default15.select
|
156667
|
+
}).post("/", async ({ body }) => logic_default16.create(body), {
|
156668
|
+
body: model_default15.create
|
156669
|
+
}).post("/many", async ({ body }) => logic_default16.createMany(body), {
|
156670
|
+
body: t.Array(model_default15.create)
|
156228
156671
|
}).guard({
|
156229
156672
|
params: IdSchema
|
156230
|
-
}).put("/:id", async ({ params, body }) =>
|
156231
|
-
body:
|
156232
|
-
}).delete("/:id", async ({ params }) =>
|
156673
|
+
}).put("/:id", async ({ params, body }) => logic_default16.update(params.id, body), {
|
156674
|
+
body: model_default15.update
|
156675
|
+
}).delete("/:id", async ({ params }) => logic_default16.remove(params.id));
|
156233
156676
|
var product_default = productRoutes;
|
156234
156677
|
|
156235
156678
|
// src/routes/crm/spPackage/service/logic.ts
|
@@ -156272,7 +156715,7 @@ var CrmSpPackageServiceLogic;
|
|
156272
156715
|
}).where(eq(crmSpPackageServiceTable.id, id));
|
156273
156716
|
};
|
156274
156717
|
})(CrmSpPackageServiceLogic ||= {});
|
156275
|
-
var
|
156718
|
+
var logic_default17 = CrmSpPackageServiceLogic;
|
156276
156719
|
|
156277
156720
|
// src/routes/crm/spPackage/service/model.ts
|
156278
156721
|
var CrmSpPackageServiceModel;
|
@@ -156284,7 +156727,7 @@ var CrmSpPackageServiceModel;
|
|
156284
156727
|
CrmSpPackageServiceModel.update = OmitBaseSchema(updateSchema);
|
156285
156728
|
CrmSpPackageServiceModel.select = t.Pick(selectSchema, ["spPackageId"]);
|
156286
156729
|
})(CrmSpPackageServiceModel ||= {});
|
156287
|
-
var
|
156730
|
+
var model_default16 = CrmSpPackageServiceModel;
|
156288
156731
|
|
156289
156732
|
// src/routes/crm/spPackage/service/index.ts
|
156290
156733
|
var serviceRoutes = new Elysia({
|
@@ -156292,17 +156735,17 @@ var serviceRoutes = new Elysia({
|
|
156292
156735
|
tags: ["CrmSpPackageService"]
|
156293
156736
|
}).use(better_auth_default).guard({
|
156294
156737
|
auth: true
|
156295
|
-
}).get("/", async ({ query }) =>
|
156296
|
-
query:
|
156297
|
-
}).post("/", async ({ body }) =>
|
156298
|
-
body:
|
156299
|
-
}).post("/many", async ({ body }) =>
|
156300
|
-
body: t.Array(
|
156738
|
+
}).get("/", async ({ query }) => logic_default17.select(query), {
|
156739
|
+
query: model_default16.select
|
156740
|
+
}).post("/", async ({ body }) => logic_default17.create(body), {
|
156741
|
+
body: model_default16.create
|
156742
|
+
}).post("/many", async ({ body }) => logic_default17.createMany(body), {
|
156743
|
+
body: t.Array(model_default16.create)
|
156301
156744
|
}).guard({
|
156302
156745
|
params: IdSchema
|
156303
|
-
}).put("/:id", async ({ params, body }) =>
|
156304
|
-
body:
|
156305
|
-
}).delete("/:id", async ({ params }) =>
|
156746
|
+
}).put("/:id", async ({ params, body }) => logic_default17.update(params.id, body), {
|
156747
|
+
body: model_default16.update
|
156748
|
+
}).delete("/:id", async ({ params }) => logic_default17.remove(params.id));
|
156306
156749
|
var service_default = serviceRoutes;
|
156307
156750
|
|
156308
156751
|
// src/routes/crm/spPackage/index.ts
|
@@ -156312,12 +156755,12 @@ var spPackageRoutes = new Elysia({
|
|
156312
156755
|
}).use(better_auth_default).use(service_default).use(product_default).guard({
|
156313
156756
|
auth: true
|
156314
156757
|
}).get("/", async ({ query, user: user2 }) => logic_default7.select(query, user2), {
|
156315
|
-
query:
|
156758
|
+
query: model_default14.select
|
156316
156759
|
}).post("/", async ({ body, user: user2 }) => logic_default7.create(body, user2), {
|
156317
|
-
body:
|
156760
|
+
body: model_default14.create
|
156318
156761
|
}).guard({
|
156319
156762
|
params: IdSchema
|
156320
|
-
}).put("/:id", async ({ body, user: user2, params }) => logic_default7.update(params.id, body, user2), { body:
|
156763
|
+
}).put("/:id", async ({ body, user: user2, params }) => logic_default7.update(params.id, body, user2), { body: model_default14.update }).delete("/:id", async ({ user: user2, params: { id } }) => logic_default7.remove(id, user2));
|
156321
156764
|
var spPackage_default = spPackageRoutes;
|
156322
156765
|
|
156323
156766
|
// src/routes/crm/vehicle/model.ts
|
@@ -156340,7 +156783,7 @@ var CrmVehicleModel;
|
|
156340
156783
|
}))
|
156341
156784
|
]);
|
156342
156785
|
})(CrmVehicleModel ||= {});
|
156343
|
-
var
|
156786
|
+
var model_default17 = CrmVehicleModel;
|
156344
156787
|
|
156345
156788
|
// src/routes/crm/vehicle/index.ts
|
156346
156789
|
var vehicleRoutes = new Elysia({
|
@@ -156353,20 +156796,20 @@ var vehicleRoutes = new Elysia({
|
|
156353
156796
|
auth: true,
|
156354
156797
|
tags: ["Vehicle"]
|
156355
156798
|
}).get("/", async ({ query, user: user2 }) => logic_default9.select(query, user2), {
|
156356
|
-
query:
|
156799
|
+
query: model_default17.select
|
156357
156800
|
}).post("/", async ({ body, user: user2 }) => logic_default9.create(body, user2), {
|
156358
|
-
body:
|
156801
|
+
body: model_default17.create
|
156359
156802
|
}).guard({
|
156360
156803
|
params: IdSchema
|
156361
156804
|
}).get("/:id", async ({ params, user: user2 }) => logic_default9.selectById(params.id, user2)).put("/:id", async ({ params, body, user: user2 }) => logic_default9.update(params.id, body, user2), {
|
156362
|
-
body:
|
156805
|
+
body: model_default17.update
|
156363
156806
|
}).delete("/:id", async ({ params, user: user2 }) => logic_default9.remove(params.id, user2)));
|
156364
156807
|
var vehicle_default = vehicleRoutes;
|
156365
156808
|
|
156366
156809
|
// src/routes/crm/index.ts
|
156367
156810
|
var crmSchemaRoutes = new Elysia({
|
156368
156811
|
prefix: "/crm"
|
156369
|
-
}).use(cpOrder_default).use(spPackage_default).use(vehicle_default).use(customer_default).use(discount_default).use(inspection_default);
|
156812
|
+
}).use(cpOrder_default).use(spPackage_default).use(vehicle_default).use(customer_default).use(discount_default).use(inspection_default).use(reports_default);
|
156370
156813
|
var crm_default = crmSchemaRoutes;
|
156371
156814
|
|
156372
156815
|
// src/lib/s3Client.ts
|
@@ -156635,7 +157078,7 @@ var PermissionLogic;
|
|
156635
157078
|
return permissions;
|
156636
157079
|
};
|
156637
157080
|
})(PermissionLogic ||= {});
|
156638
|
-
var
|
157081
|
+
var logic_default18 = PermissionLogic;
|
156639
157082
|
|
156640
157083
|
// src/routes/permission/model.ts
|
156641
157084
|
var PermissionModel;
|
@@ -156650,7 +157093,7 @@ var PermissionModel;
|
|
156650
157093
|
permissions: t.Array(t.String())
|
156651
157094
|
});
|
156652
157095
|
})(PermissionModel ||= {});
|
156653
|
-
var
|
157096
|
+
var model_default18 = PermissionModel;
|
156654
157097
|
|
156655
157098
|
// src/routes/permission/index.ts
|
156656
157099
|
var groupService = new CrudHelper(permissionGroupTable, "\u042D\u0440\u0445\u0438\u0439\u043D \u0431\u0430\u0433\u0446 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
|
@@ -156666,8 +157109,8 @@ var permissionRoutes = new Elysia({
|
|
156666
157109
|
return permissionList;
|
156667
157110
|
}, {
|
156668
157111
|
permission: "PERMISSION_ADD"
|
156669
|
-
}).post("/", ({ body }) =>
|
156670
|
-
body:
|
157112
|
+
}).post("/", ({ body }) => logic_default18.addPermission(body), {
|
157113
|
+
body: model_default18.addPermission,
|
156671
157114
|
permission: "PERMISSION_ADD",
|
156672
157115
|
beforeHandle({ status: status2, body, permissions, publicPermissions }) {
|
156673
157116
|
if (!permissions.includes("BACK_OFFICE_ADMIN") && body.permissions.some((bp) => !publicPermissions.map((pp) => pp.code).includes(bp))) {
|
@@ -156676,14 +157119,14 @@ var permissionRoutes = new Elysia({
|
|
156676
157119
|
}
|
156677
157120
|
}).group("/group", (app2) => app2.guard({
|
156678
157121
|
permission: "PERMISSION_GROUP_ALL"
|
156679
|
-
}).get("/", async ({ query }) => await
|
156680
|
-
query:
|
157122
|
+
}).get("/", async ({ query }) => await logic_default18.selectGroups(query), {
|
157123
|
+
query: model_default18.select
|
156681
157124
|
}).post("/", async ({ body }) => await groupService.create(body), {
|
156682
|
-
body:
|
157125
|
+
body: model_default18.create
|
156683
157126
|
}).guard({
|
156684
157127
|
params: IdSchema
|
156685
157128
|
}).put("/:id", async ({ body, params: { id } }) => groupService.update(id, body), {
|
156686
|
-
body:
|
157129
|
+
body: model_default18.update
|
156687
157130
|
}).delete("/:id", async ({ params: { id } }) => groupService.delete(id)));
|
156688
157131
|
var permission_default2 = permissionRoutes;
|
156689
157132
|
|
@@ -156731,7 +157174,7 @@ var TechdocSupplierLogic;
|
|
156731
157174
|
}).where(eq(techdocSupplierTable.id, id));
|
156732
157175
|
};
|
156733
157176
|
})(TechdocSupplierLogic ||= {});
|
156734
|
-
var
|
157177
|
+
var logic_default19 = TechdocSupplierLogic;
|
156735
157178
|
|
156736
157179
|
// src/routes/techdoc/supplier/model.ts
|
156737
157180
|
var TechdocSupplierModel;
|
@@ -156749,24 +157192,24 @@ var TechdocSupplierModel;
|
|
156749
157192
|
const updateSchema = createUpdateSchema(techdocSupplierTable);
|
156750
157193
|
TechdocSupplierModel.update = OmitBaseSchema(updateSchema);
|
156751
157194
|
})(TechdocSupplierModel ||= {});
|
156752
|
-
var
|
157195
|
+
var model_default19 = TechdocSupplierModel;
|
156753
157196
|
|
156754
157197
|
// src/routes/techdoc/supplier/index.ts
|
156755
157198
|
var supplierRoutes = new Elysia({
|
156756
157199
|
prefix: "/supplier",
|
156757
157200
|
tags: ["TechdocSupplier"]
|
156758
|
-
}).use(better_auth_default).get("/", async ({ query, user: user2 }) =>
|
156759
|
-
query:
|
157201
|
+
}).use(better_auth_default).get("/", async ({ query, user: user2 }) => logic_default19.select(query, user2), {
|
157202
|
+
query: model_default19.select,
|
156760
157203
|
auth: true
|
156761
157204
|
}).guard({
|
156762
157205
|
userKind: "ADMIN"
|
156763
|
-
}).post("/", async ({ body }) =>
|
156764
|
-
body:
|
157206
|
+
}).post("/", async ({ body }) => logic_default19.create(body), {
|
157207
|
+
body: model_default19.create
|
156765
157208
|
}).guard({
|
156766
157209
|
params: IdSchema
|
156767
|
-
}).put("/:id", ({ body, params: { id } }) =>
|
156768
|
-
body:
|
156769
|
-
}).delete("/:id", ({ params: { id } }) =>
|
157210
|
+
}).put("/:id", ({ body, params: { id } }) => logic_default19.update(id, body), {
|
157211
|
+
body: model_default19.update
|
157212
|
+
}).delete("/:id", ({ params: { id } }) => logic_default19.remove(id));
|
156770
157213
|
var supplier_default = supplierRoutes;
|
156771
157214
|
|
156772
157215
|
// src/routes/techdoc/vehicleKind/model.ts
|
@@ -156780,7 +157223,7 @@ var TechdocVehicleKindModel;
|
|
156780
157223
|
const updateSchema = createUpdateSchema(techdocVehicleKindTable);
|
156781
157224
|
TechdocVehicleKindModel.update = OmitBaseSchema(updateSchema);
|
156782
157225
|
})(TechdocVehicleKindModel ||= {});
|
156783
|
-
var
|
157226
|
+
var model_default20 = TechdocVehicleKindModel;
|
156784
157227
|
|
156785
157228
|
// src/routes/techdoc/vehicleKind/index.ts
|
156786
157229
|
var vehicleKindRoutes = new Elysia({
|
@@ -156789,9 +157232,9 @@ var vehicleKindRoutes = new Elysia({
|
|
156789
157232
|
}).use(better_auth_default).guard({
|
156790
157233
|
auth: true
|
156791
157234
|
}).get("/", async ({ query }) => logic_default8.select(query), {
|
156792
|
-
query:
|
157235
|
+
query: model_default20.select
|
156793
157236
|
}).put("/:id", async ({ body, params: { id } }) => logic_default8.update(id, body), {
|
156794
|
-
body:
|
157237
|
+
body: model_default20.update,
|
156795
157238
|
params: IdSchema,
|
156796
157239
|
userKind: "ADMIN"
|
156797
157240
|
});
|
@@ -156921,7 +157364,7 @@ var UserLogic;
|
|
156921
157364
|
totalCount: totalCountSql
|
156922
157365
|
}).from(user).where(filter).$dynamic();
|
156923
157366
|
const users = await pagination_helper_default(baseQuery, query.pagination);
|
156924
|
-
const userPermissions2 = await
|
157367
|
+
const userPermissions2 = await logic_default18.selectByUserId(users.map((u) => u.id));
|
156925
157368
|
const content = {
|
156926
157369
|
totalCount: users[0]?.totalCount ?? 0,
|
156927
157370
|
totalPage: users.length === 0 ? 0 : Math.ceil(users[0].totalCount / query.pagination.size)
|
@@ -156987,7 +157430,7 @@ var UserLogic;
|
|
156987
157430
|
});
|
156988
157431
|
};
|
156989
157432
|
})(UserLogic ||= {});
|
156990
|
-
var
|
157433
|
+
var logic_default20 = UserLogic;
|
156991
157434
|
|
156992
157435
|
// src/routes/user/schema.ts
|
156993
157436
|
var select = createSelectSchema(user);
|
@@ -157020,7 +157463,7 @@ var userRoutes = new Elysia({
|
|
157020
157463
|
}).use(better_auth_default).guard({
|
157021
157464
|
auth: true,
|
157022
157465
|
tags: ["User"]
|
157023
|
-
}).get("/", async ({ query, user: user2 }) =>
|
157466
|
+
}).get("/", async ({ query, user: user2 }) => logic_default20.select(query, user2), {
|
157024
157467
|
query: selectUserSchema,
|
157025
157468
|
userKind: "COMPANY_ADMIN"
|
157026
157469
|
}).get("/me", async ({ user: user2 }) => {
|
@@ -157032,10 +157475,10 @@ var userRoutes = new Elysia({
|
|
157032
157475
|
...user2,
|
157033
157476
|
company: company2.result[0]
|
157034
157477
|
};
|
157035
|
-
}).post("/", async ({ body, user: user2 }) =>
|
157478
|
+
}).post("/", async ({ body, user: user2 }) => logic_default20.registerUser(body, user2), {
|
157036
157479
|
body: createUserSchema,
|
157037
157480
|
userKind: "COMPANY_ADMIN"
|
157038
|
-
}).put("/:id", async ({ body, user: user2, params: { id } }) =>
|
157481
|
+
}).put("/:id", async ({ body, user: user2, params: { id } }) => logic_default20.update(id, body, user2), {
|
157039
157482
|
body: updateUserSchema,
|
157040
157483
|
userKind: "COMPANY_ADMIN"
|
157041
157484
|
});
|
@@ -157064,7 +157507,7 @@ var WarehouseProductModel;
|
|
157064
157507
|
PaginationSchema
|
157065
157508
|
]);
|
157066
157509
|
})(WarehouseProductModel ||= {});
|
157067
|
-
var
|
157510
|
+
var model_default21 = WarehouseProductModel;
|
157068
157511
|
|
157069
157512
|
// src/routes/warehouse/item/model.ts
|
157070
157513
|
var WarehouseItemModel;
|
@@ -157079,7 +157522,7 @@ var WarehouseItemModel;
|
|
157079
157522
|
WarehouseItemModel.select = t.Composite([
|
157080
157523
|
PaginationSchema,
|
157081
157524
|
t.Partial(t.Object({
|
157082
|
-
product:
|
157525
|
+
product: model_default21.select,
|
157083
157526
|
shelfNumber: t.String(),
|
157084
157527
|
safetyStock: t.Number(),
|
157085
157528
|
warehouseId: t.String({ format: "uuid" })
|
@@ -157097,7 +157540,7 @@ var WarehouseItemModel;
|
|
157097
157540
|
transferId: t.String({ format: "uuid", default: undefined })
|
157098
157541
|
})),
|
157099
157542
|
t.Partial(t.Object({
|
157100
|
-
product: t.Omit(
|
157543
|
+
product: t.Omit(model_default21.select, ["pagination"]),
|
157101
157544
|
itemId: t.String({ format: "uuid", default: undefined }),
|
157102
157545
|
dateFrom: t.String({ format: "date-time", default: undefined }),
|
157103
157546
|
dateTo: t.String({ format: "date-time", default: undefined }),
|
@@ -157121,7 +157564,7 @@ var WarehouseItemModel;
|
|
157121
157564
|
transactionDetails
|
157122
157565
|
});
|
157123
157566
|
})(WarehouseItemModel ||= {});
|
157124
|
-
var
|
157567
|
+
var model_default22 = WarehouseItemModel;
|
157125
157568
|
|
157126
157569
|
// src/routes/warehouse/item/index.ts
|
157127
157570
|
var itemRoutes2 = new Elysia({
|
@@ -157130,19 +157573,19 @@ var itemRoutes2 = new Elysia({
|
|
157130
157573
|
}).use(better_auth_default).guard({
|
157131
157574
|
userKind: "CUSTOMER"
|
157132
157575
|
}).get("/", async ({ query, user: user2 }) => logic_default4.select(query, user2), {
|
157133
|
-
query:
|
157576
|
+
query: model_default22.select
|
157134
157577
|
}).post("/", async ({ body }) => logic_default4.create(body), {
|
157135
|
-
body:
|
157578
|
+
body: model_default22.create
|
157136
157579
|
}).post("/many", async ({ body, user: user2 }) => logic_default4.createMany(body, user2), {
|
157137
|
-
body:
|
157580
|
+
body: model_default22.createMany
|
157138
157581
|
}).get("/transaction", async ({ query, user: user2 }) => logic_default4.selectTransaction(query, user2), {
|
157139
|
-
query:
|
157582
|
+
query: model_default22.selectTransaction
|
157140
157583
|
}).post("/change-quantity", async ({ body, user: user2 }) => logic_default4.changeQuantity(body, user2), {
|
157141
|
-
body:
|
157584
|
+
body: model_default22.changeQuantity
|
157142
157585
|
}).guard({
|
157143
157586
|
params: IdSchema
|
157144
157587
|
}).put("/:id", async ({ body, params: { id } }) => logic_default4.update(id, body), {
|
157145
|
-
body:
|
157588
|
+
body: model_default22.update
|
157146
157589
|
});
|
157147
157590
|
var item_default3 = itemRoutes2;
|
157148
157591
|
|
@@ -157153,14 +157596,14 @@ var productRoutes3 = new Elysia({
|
|
157153
157596
|
}).use(better_auth_default).guard({ auth: true }).get("/", async ({ query, user: user2 }) => {
|
157154
157597
|
return logic_default3.select(query, user2);
|
157155
157598
|
}, {
|
157156
|
-
query:
|
157599
|
+
query: model_default21.select
|
157157
157600
|
}).post("/", async ({ body, user: user2 }) => logic_default3.create(body, user2), {
|
157158
|
-
body:
|
157601
|
+
body: model_default21.create
|
157159
157602
|
}).post("/many", async ({ body, user: user2 }) => logic_default3.createMany(body, user2), {
|
157160
|
-
body: t.Array(
|
157161
|
-
}).post("/download", async ({ query, user: user2 }) => logic_default3.downloadExcel(query, user2), { query:
|
157603
|
+
body: t.Array(model_default21.create)
|
157604
|
+
}).post("/download", async ({ query, user: user2 }) => logic_default3.downloadExcel(query, user2), { query: model_default21.select }).guard({
|
157162
157605
|
params: IdSchema
|
157163
|
-
}).put("/:id", async ({ params: { id }, body, user: user2 }) => logic_default3.update(id, body, user2), { body:
|
157606
|
+
}).put("/:id", async ({ params: { id }, body, user: user2 }) => logic_default3.update(id, body, user2), { body: model_default21.update });
|
157164
157607
|
var product_default3 = productRoutes3;
|
157165
157608
|
|
157166
157609
|
// src/routes/warehouse/warehouse/logic.ts
|
@@ -157203,7 +157646,7 @@ var WarehouseWarehouseLogic;
|
|
157203
157646
|
}).where(and(eq(warehouseWarehouseTable.id, id), eq(warehouseWarehouseTable.companyId, user2.companyId), eq(warehouseWarehouseTable.branchId, user2.branchId).if(user2.kind !== "COMPANY_ADMIN")));
|
157204
157647
|
};
|
157205
157648
|
})(WarehouseWarehouseLogic ||= {});
|
157206
|
-
var
|
157649
|
+
var logic_default21 = WarehouseWarehouseLogic;
|
157207
157650
|
|
157208
157651
|
// src/routes/warehouse/warehouse/model.ts
|
157209
157652
|
var WarehouseWarehouseModel;
|
@@ -157222,21 +157665,21 @@ var WarehouseWarehouseModel;
|
|
157222
157665
|
PaginationSchema
|
157223
157666
|
]);
|
157224
157667
|
})(WarehouseWarehouseModel ||= {});
|
157225
|
-
var
|
157668
|
+
var model_default23 = WarehouseWarehouseModel;
|
157226
157669
|
|
157227
157670
|
// src/routes/warehouse/warehouse/index.ts
|
157228
157671
|
var warehouseRoutes = new Elysia({
|
157229
157672
|
prefix: "/warehouse",
|
157230
157673
|
tags: ["Warehouse"]
|
157231
|
-
}).use(better_auth_default).guard({ userKind: "COMPANY_ADMIN" }).get("/", async ({ query, user: user2 }) =>
|
157232
|
-
query:
|
157233
|
-
}).post("/", async ({ body, user: user2 }) =>
|
157234
|
-
body:
|
157674
|
+
}).use(better_auth_default).guard({ userKind: "COMPANY_ADMIN" }).get("/", async ({ query, user: user2 }) => logic_default21.select(query, user2), {
|
157675
|
+
query: model_default23.select
|
157676
|
+
}).post("/", async ({ body, user: user2 }) => logic_default21.create(body, user2), {
|
157677
|
+
body: model_default23.create
|
157235
157678
|
}).guard({
|
157236
157679
|
params: IdSchema
|
157237
|
-
}).put("/:id", async ({ params: { id }, body, user: user2 }) =>
|
157238
|
-
body:
|
157239
|
-
}).delete("/:id", async ({ params: { id }, user: user2 }) =>
|
157680
|
+
}).put("/:id", async ({ params: { id }, body, user: user2 }) => logic_default21.update(id, body, user2), {
|
157681
|
+
body: model_default23.update
|
157682
|
+
}).delete("/:id", async ({ params: { id }, user: user2 }) => logic_default21.remove(id, user2));
|
157240
157683
|
var warehouse_default = warehouseRoutes;
|
157241
157684
|
|
157242
157685
|
// src/routes/warehouse/index.ts
|