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.
Files changed (3) hide show
  1. package/dist/index.d.ts +693 -227
  2. package/dist/index.js +538 -95
  3. 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().notNull(),
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
- await db2.update(crmVehicleTable).set({
155182
- km: body.km
155183
- }).where(eq(crmVehicleTable.id, order.vehicleId));
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 = t.Pick(OmitBaseSchema(createSchema), [
155555
- "cpOrderItemId",
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
- }).use(employee_default2);
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 model_default13 = CrmSpPackageModel;
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 logic_default15 = CrmSpPackageProductLogic;
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 model_default14 = CrmSpPackageProductModel;
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 }) => logic_default15.select(query), {
156223
- query: model_default14.select
156224
- }).post("/", async ({ body }) => logic_default15.create(body), {
156225
- body: model_default14.create
156226
- }).post("/many", async ({ body }) => logic_default15.createMany(body), {
156227
- body: t.Array(model_default14.create)
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 }) => logic_default15.update(params.id, body), {
156231
- body: model_default14.update
156232
- }).delete("/:id", async ({ params }) => logic_default15.remove(params.id));
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 logic_default16 = CrmSpPackageServiceLogic;
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 model_default15 = CrmSpPackageServiceModel;
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 }) => logic_default16.select(query), {
156296
- query: model_default15.select
156297
- }).post("/", async ({ body }) => logic_default16.create(body), {
156298
- body: model_default15.create
156299
- }).post("/many", async ({ body }) => logic_default16.createMany(body), {
156300
- body: t.Array(model_default15.create)
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 }) => logic_default16.update(params.id, body), {
156304
- body: model_default15.update
156305
- }).delete("/:id", async ({ params }) => logic_default16.remove(params.id));
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: model_default13.select
156758
+ query: model_default14.select
156316
156759
  }).post("/", async ({ body, user: user2 }) => logic_default7.create(body, user2), {
156317
- body: model_default13.create
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: model_default13.update }).delete("/:id", async ({ user: user2, params: { id } }) => logic_default7.remove(id, user2));
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 model_default16 = CrmVehicleModel;
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: model_default16.select
156799
+ query: model_default17.select
156357
156800
  }).post("/", async ({ body, user: user2 }) => logic_default9.create(body, user2), {
156358
- body: model_default16.create
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: model_default16.update
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 logic_default17 = PermissionLogic;
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 model_default17 = PermissionModel;
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 }) => logic_default17.addPermission(body), {
156670
- body: model_default17.addPermission,
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 logic_default17.selectGroups(query), {
156680
- query: model_default17.select
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: model_default17.create
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: model_default17.update
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 logic_default18 = TechdocSupplierLogic;
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 model_default18 = TechdocSupplierModel;
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 }) => logic_default18.select(query, user2), {
156759
- query: model_default18.select,
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 }) => logic_default18.create(body), {
156764
- body: model_default18.create
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 } }) => logic_default18.update(id, body), {
156768
- body: model_default18.update
156769
- }).delete("/:id", ({ params: { id } }) => logic_default18.remove(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 model_default19 = TechdocVehicleKindModel;
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: model_default19.select
157235
+ query: model_default20.select
156793
157236
  }).put("/:id", async ({ body, params: { id } }) => logic_default8.update(id, body), {
156794
- body: model_default19.update,
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 logic_default17.selectByUserId(users.map((u) => u.id));
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 logic_default19 = UserLogic;
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 }) => logic_default19.select(query, 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 }) => logic_default19.registerUser(body, 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 } }) => logic_default19.update(id, body, user2), {
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 model_default20 = WarehouseProductModel;
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: model_default20.select,
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(model_default20.select, ["pagination"]),
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 model_default21 = WarehouseItemModel;
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: model_default21.select
157576
+ query: model_default22.select
157134
157577
  }).post("/", async ({ body }) => logic_default4.create(body), {
157135
- body: model_default21.create
157578
+ body: model_default22.create
157136
157579
  }).post("/many", async ({ body, user: user2 }) => logic_default4.createMany(body, user2), {
157137
- body: model_default21.createMany
157580
+ body: model_default22.createMany
157138
157581
  }).get("/transaction", async ({ query, user: user2 }) => logic_default4.selectTransaction(query, user2), {
157139
- query: model_default21.selectTransaction
157582
+ query: model_default22.selectTransaction
157140
157583
  }).post("/change-quantity", async ({ body, user: user2 }) => logic_default4.changeQuantity(body, user2), {
157141
- body: model_default21.changeQuantity
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: model_default21.update
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: model_default20.select
157599
+ query: model_default21.select
157157
157600
  }).post("/", async ({ body, user: user2 }) => logic_default3.create(body, user2), {
157158
- body: model_default20.create
157601
+ body: model_default21.create
157159
157602
  }).post("/many", async ({ body, user: user2 }) => logic_default3.createMany(body, user2), {
157160
- body: t.Array(model_default20.create)
157161
- }).post("/download", async ({ query, user: user2 }) => logic_default3.downloadExcel(query, user2), { query: model_default20.select }).guard({
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: model_default20.update });
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 logic_default20 = WarehouseWarehouseLogic;
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 model_default22 = WarehouseWarehouseModel;
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 }) => logic_default20.select(query, user2), {
157232
- query: model_default22.select
157233
- }).post("/", async ({ body, user: user2 }) => logic_default20.create(body, user2), {
157234
- body: model_default22.create
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 }) => logic_default20.update(id, body, user2), {
157238
- body: model_default22.update
157239
- }).delete("/:id", async ({ params: { id }, user: user2 }) => logic_default20.remove(id, 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