@porulle/plugin-pos-restaurant 0.64.0 → 0.65.1

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/schema.d.ts CHANGED
@@ -1515,7 +1515,7 @@ export declare const kdsTicketItems: import("drizzle-orm/pg-core/table").PgTable
1515
1515
  tableName: "kds_ticket_items";
1516
1516
  dataType: "string";
1517
1517
  columnType: "PgText";
1518
- data: "pending" | "done" | "preparing";
1518
+ data: "pending" | "preparing" | "done";
1519
1519
  driverParam: string;
1520
1520
  notNull: true;
1521
1521
  hasDefault: true;
@@ -12,7 +12,7 @@
12
12
  * Our implementation: P&L CRUD + SQL-based report queries against core order tables.
13
13
  */
14
14
  import type { PluginResult } from "@porulle/core";
15
- import { posDailyPnl, posPnlExpenses } from "../schema.js";
15
+ import { posDailyPnl } from "../schema.js";
16
16
  import type { Db } from "../types.js";
17
17
  export declare class RestaurantAnalyticsService {
18
18
  private db;
@@ -33,10 +33,6 @@ export declare class RestaurantAnalyticsService {
33
33
  percentage?: number;
34
34
  }>;
35
35
  }): Promise<PluginResult<typeof posDailyPnl.$inferSelect>>;
36
- getDailyPnl(orgId: string, date: Date): Promise<PluginResult<{
37
- pnl: typeof posDailyPnl.$inferSelect;
38
- expenses: Array<typeof posPnlExpenses.$inferSelect>;
39
- }>>;
40
36
  listDailyPnl(orgId: string, limit?: number): Promise<PluginResult<Array<typeof posDailyPnl.$inferSelect>>>;
41
37
  getStationPerformance(orgId: string, stationId: string, dateFrom: Date, dateTo: Date): Promise<PluginResult<{
42
38
  totalTickets: number;
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-service.d.ts","sourceRoot":"","sources":["../../src/services/analytics-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,cAAc,EAA8B,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,qBAAa,0BAA0B;IACzB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAIpB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QACzC,IAAI,EAAE,IAAI,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChI,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC;IAqDpD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;QACjE,GAAG,EAAE,OAAO,WAAW,CAAC,YAAY,CAAC;QACrC,QAAQ,EAAE,KAAK,CAAC,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC;KACrD,CAAC,CAAC;IAwBG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IAc1G,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;QAChH,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC3D,CAAC,CAAC;IA6BG,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;QAClG,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC,CAAC;IA0CE,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;QACpG,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC,CAAC;CA6BL"}
1
+ {"version":3,"file":"analytics-service.d.ts","sourceRoot":"","sources":["../../src/services/analytics-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAA8C,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,qBAAa,0BAA0B;IACzB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAIpB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QACzC,IAAI,EAAE,IAAI,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChI,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC;IAqDpD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IAc1G,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;QAChH,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC3D,CAAC,CAAC;IA6BG,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;QAClG,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC,CAAC;IA0CE,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;QACpG,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC,CAAC;CA6BL"}
@@ -75,22 +75,6 @@ export class RestaurantAnalyticsService {
75
75
  }
76
76
  return Ok(pnl);
77
77
  }
78
- async getDailyPnl(orgId, date) {
79
- const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate());
80
- const endOfDay = new Date(startOfDay.getTime() + 24 * 60 * 60 * 1000);
81
- const pnls = await this.db
82
- .select()
83
- .from(posDailyPnl)
84
- .where(and(eq(posDailyPnl.organizationId, orgId), sql `${posDailyPnl.date} >= ${startOfDay}`, sql `${posDailyPnl.date} < ${endOfDay}`));
85
- if (pnls.length === 0)
86
- return Err("No P&L record for this date");
87
- const pnl = pnls[0];
88
- const expenses = await this.db
89
- .select()
90
- .from(posPnlExpenses)
91
- .where(eq(posPnlExpenses.pnlId, pnl.id));
92
- return Ok({ pnl, expenses });
93
- }
94
78
  async listDailyPnl(orgId, limit) {
95
79
  const rows = await this.db
96
80
  .select()
@@ -60,7 +60,6 @@ export declare class ChecklistService {
60
60
  }): Promise<PluginResult<{
61
61
  completed: boolean;
62
62
  }>>;
63
- isChecklistCompleted(checklistId: string, referenceType: string, referenceId: string): Promise<boolean>;
64
63
  }
65
64
  export {};
66
65
  //# sourceMappingURL=checklist-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checklist-service.d.ts","sourceRoot":"","sources":["../../src/services/checklist-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,KAAK,aAAa,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,CAAC;AAElE,qBAAa,gBAAgB;IACf,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAEpB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAC1C,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,aAAa,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KACvD,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IA8B5G,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;IAahJ,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QACrF,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KAClE,CAAC,CAAC;IAoBG,iBAAiB,CAAC,KAAK,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC;QACvC,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5E,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IA0B3C,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAW9G"}
1
+ {"version":3,"file":"checklist-service.d.ts","sourceRoot":"","sources":["../../src/services/checklist-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,KAAK,aAAa,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,CAAC;AAElE,qBAAa,gBAAgB;IACf,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAEpB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAC1C,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,aAAa,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KACvD,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IA8B5G,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;IAahJ,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QACrF,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KAClE,CAAC,CAAC;IAoBG,iBAAiB,CAAC,KAAK,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC;QACvC,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5E,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CA0BlD"}
@@ -96,11 +96,4 @@ export class ChecklistService {
96
96
  });
97
97
  return Ok({ completed: true });
98
98
  }
99
- async isChecklistCompleted(checklistId, referenceType, referenceId) {
100
- const rows = await this.db
101
- .select()
102
- .from(posChecklistCompletions)
103
- .where(and(eq(posChecklistCompletions.checklistId, checklistId), eq(posChecklistCompletions.referenceType, referenceType), eq(posChecklistCompletions.referenceId, referenceId)));
104
- return rows.length > 0;
105
- }
106
99
  }
@@ -66,9 +66,5 @@ export declare class ModifierService {
66
66
  priceAdjustment: number;
67
67
  }>;
68
68
  }>>;
69
- getModifiersForEntity(orgId: string, entityId: string): Promise<PluginResult<Array<{
70
- group: ModifierGroup;
71
- options: ModifierOption[];
72
- }>>>;
73
69
  }
74
70
  //# sourceMappingURL=modifier-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modifier-service.d.ts","sourceRoot":"","sources":["../../src/services/modifier-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modifier-service.d.ts","sourceRoot":"","sources":["../../src/services/modifier-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErE,qBAAa,eAAe;IACd,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAIpB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QACtC,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAsBlC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;IAapF,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QAC9E,KAAK,EAAE,aAAa,CAAC;QACrB,OAAO,EAAE,cAAc,EAAE,CAAC;KAC3B,CAAC,CAAC;IAiBG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QACvD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAWlC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAYxF,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QACtC,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAenC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAWnC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAa3E,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;QACzE,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAkD9H"}
@@ -157,24 +157,4 @@ export class ModifierService {
157
157
  }
158
158
  return Ok({ totalAdjustment, validatedModifiers });
159
159
  }
160
- // ─── Get Modifiers for Entity ──────────────────────────────────────
161
- // Returns all modifier groups with their options for a given entity.
162
- // Used by the POS frontend to render modifier selection UI.
163
- async getModifiersForEntity(orgId, entityId) {
164
- const groups = await this.db
165
- .select()
166
- .from(posModifierGroups)
167
- .where(and(eq(posModifierGroups.organizationId, orgId), eq(posModifierGroups.entityId, entityId)))
168
- .orderBy(posModifierGroups.sortOrder);
169
- const result = [];
170
- for (const group of groups) {
171
- const options = await this.db
172
- .select()
173
- .from(posModifierOptions)
174
- .where(eq(posModifierOptions.groupId, group.id))
175
- .orderBy(posModifierOptions.sortOrder);
176
- result.push({ group, options });
177
- }
178
- return Ok(result);
179
- }
180
160
  }
@@ -37,7 +37,6 @@ export declare class RecipeService {
37
37
  totalCost: number;
38
38
  costPerUnit: number;
39
39
  }>>;
40
- calculateCOGS(orgId: string, entityId: string, quantity: number): Promise<number>;
41
40
  listRecipes(orgId: string): Promise<PluginResult<Array<typeof posRecipes.$inferSelect>>>;
42
41
  }
43
42
  //# sourceMappingURL=recipe-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recipe-service.d.ts","sourceRoot":"","sources":["../../src/services/recipe-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,qBAAa,aAAa;IACZ,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAEpB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QACvC,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,KAAK,CAAC;YACjB,cAAc,EAAE,MAAM,CAAC;YACvB,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC,CAAC;KACJ,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAkCtE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QACrE,MAAM,EAAE,OAAO,UAAU,CAAC,YAAY,CAAC;QACvC,WAAW,EAAE,KAAK,CAAC,OAAO,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAC7D,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IAiBG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBjF,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;CAO/F"}
1
+ {"version":3,"file":"recipe-service.d.ts","sourceRoot":"","sources":["../../src/services/recipe-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,qBAAa,aAAa;IACZ,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAEpB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QACvC,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,KAAK,CAAC;YACjB,cAAc,EAAE,MAAM,CAAC;YACvB,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC,CAAC;KACJ,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAkCtE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QACrE,MAAM,EAAE,OAAO,UAAU,CAAC,YAAY,CAAC;QACvC,WAAW,EAAE,KAAK,CAAC,OAAO,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAC7D,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IAiBG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;CAO/F"}
@@ -8,7 +8,7 @@
8
8
  * Our implementation: pos_recipes + pos_recipe_ingredients tables.
9
9
  * COGS = sum(ingredient.quantity * ingredient.costPerUnit) / yieldQuantity.
10
10
  */
11
- import { eq, and } from "@porulle/core/drizzle";
11
+ import { eq } from "@porulle/core/drizzle";
12
12
  import { Ok, Err } from "@porulle/core";
13
13
  import { posRecipes, posRecipeIngredients } from "../schema.js";
14
14
  export class RecipeService {
@@ -59,22 +59,6 @@ export class RecipeService {
59
59
  const costPerUnit = Math.round(totalCost / recipe.yieldQuantity);
60
60
  return Ok({ recipe, ingredients, totalCost, costPerUnit });
61
61
  }
62
- async calculateCOGS(orgId, entityId, quantity) {
63
- const recipes = await this.db
64
- .select()
65
- .from(posRecipes)
66
- .where(and(eq(posRecipes.organizationId, orgId), eq(posRecipes.entityId, entityId), eq(posRecipes.isActive, true)));
67
- if (recipes.length === 0)
68
- return 0;
69
- const recipe = recipes[0];
70
- const ingredients = await this.db
71
- .select()
72
- .from(posRecipeIngredients)
73
- .where(eq(posRecipeIngredients.recipeId, recipe.id));
74
- const costPerYield = ingredients.reduce((sum, i) => sum + i.quantity * i.costPerUnit, 0);
75
- const costPerUnit = costPerYield / recipe.yieldQuantity;
76
- return Math.round(costPerUnit * quantity);
77
- }
78
62
  async listRecipes(orgId) {
79
63
  const rows = await this.db
80
64
  .select()
package/package.json CHANGED
@@ -1,26 +1,29 @@
1
1
  {
2
2
  "name": "@porulle/plugin-pos-restaurant",
3
- "version": "0.64.0",
3
+ "version": "0.65.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
8
- "bun": "./src/index.ts",
9
- "import": "./dist/index.js",
10
- "types": "./src/index.ts"
8
+ "@porulle/source": "./src/index.ts",
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
11
  },
12
12
  "./schema": {
13
- "bun": "./src/schema.ts",
14
- "import": "./dist/schema.js",
15
- "require": "./dist/schema.js",
16
- "types": "./src/schema.ts"
17
- }
13
+ "@porulle/source": "./src/schema.ts",
14
+ "types": "./dist/schema.d.ts",
15
+ "default": "./dist/schema.js"
16
+ },
17
+ "./package.json": "./package.json"
18
+ },
19
+ "engines": {
20
+ "node": ">=20.19.0"
18
21
  },
19
22
  "dependencies": {
20
23
  "@hono/zod-openapi": "^1.2.2",
21
24
  "hono": "^4.12.5",
22
- "@porulle/plugin-pos": "0.64.0",
23
- "@porulle/core": "0.64.0"
25
+ "@porulle/core": "0.65.1",
26
+ "@porulle/plugin-pos": "0.65.1"
24
27
  },
25
28
  "devDependencies": {
26
29
  "@types/node": "^24.5.2",
@@ -86,33 +86,6 @@ export class RestaurantAnalyticsService {
86
86
  return Ok(pnl);
87
87
  }
88
88
 
89
- async getDailyPnl(orgId: string, date: Date): Promise<PluginResult<{
90
- pnl: typeof posDailyPnl.$inferSelect;
91
- expenses: Array<typeof posPnlExpenses.$inferSelect>;
92
- }>> {
93
- const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate());
94
- const endOfDay = new Date(startOfDay.getTime() + 24 * 60 * 60 * 1000);
95
-
96
- const pnls = await this.db
97
- .select()
98
- .from(posDailyPnl)
99
- .where(and(
100
- eq(posDailyPnl.organizationId, orgId),
101
- sql`${posDailyPnl.date} >= ${startOfDay}`,
102
- sql`${posDailyPnl.date} < ${endOfDay}`,
103
- ));
104
-
105
- if (pnls.length === 0) return Err("No P&L record for this date");
106
- const pnl = pnls[0]!;
107
-
108
- const expenses = await this.db
109
- .select()
110
- .from(posPnlExpenses)
111
- .where(eq(posPnlExpenses.pnlId, pnl.id));
112
-
113
- return Ok({ pnl, expenses });
114
- }
115
-
116
89
  async listDailyPnl(orgId: string, limit?: number): Promise<PluginResult<Array<typeof posDailyPnl.$inferSelect>>> {
117
90
  const rows = await this.db
118
91
  .select()
@@ -125,15 +125,4 @@ export class ChecklistService {
125
125
  return Ok({ completed: true });
126
126
  }
127
127
 
128
- async isChecklistCompleted(checklistId: string, referenceType: string, referenceId: string): Promise<boolean> {
129
- const rows = await this.db
130
- .select()
131
- .from(posChecklistCompletions)
132
- .where(and(
133
- eq(posChecklistCompletions.checklistId, checklistId),
134
- eq(posChecklistCompletions.referenceType, referenceType as "transaction" | "shift"),
135
- eq(posChecklistCompletions.referenceId, referenceId),
136
- ));
137
- return rows.length > 0;
138
- }
139
128
  }
@@ -218,34 +218,4 @@ export class ModifierService {
218
218
  return Ok({ totalAdjustment, validatedModifiers });
219
219
  }
220
220
 
221
- // ─── Get Modifiers for Entity ──────────────────────────────────────
222
- // Returns all modifier groups with their options for a given entity.
223
- // Used by the POS frontend to render modifier selection UI.
224
-
225
- async getModifiersForEntity(orgId: string, entityId: string): Promise<PluginResult<Array<{
226
- group: ModifierGroup;
227
- options: ModifierOption[];
228
- }>>> {
229
- const groups = await this.db
230
- .select()
231
- .from(posModifierGroups)
232
- .where(and(
233
- eq(posModifierGroups.organizationId, orgId),
234
- eq(posModifierGroups.entityId, entityId),
235
- ))
236
- .orderBy(posModifierGroups.sortOrder);
237
-
238
- const result = [];
239
- for (const group of groups) {
240
- const options = await this.db
241
- .select()
242
- .from(posModifierOptions)
243
- .where(eq(posModifierOptions.groupId, group.id))
244
- .orderBy(posModifierOptions.sortOrder);
245
-
246
- result.push({ group, options });
247
- }
248
-
249
- return Ok(result);
250
- }
251
221
  }
@@ -86,25 +86,6 @@ export class RecipeService {
86
86
  return Ok({ recipe, ingredients, totalCost, costPerUnit });
87
87
  }
88
88
 
89
- async calculateCOGS(orgId: string, entityId: string, quantity: number): Promise<number> {
90
- const recipes = await this.db
91
- .select()
92
- .from(posRecipes)
93
- .where(and(eq(posRecipes.organizationId, orgId), eq(posRecipes.entityId, entityId), eq(posRecipes.isActive, true)));
94
-
95
- if (recipes.length === 0) return 0;
96
- const recipe = recipes[0]!;
97
-
98
- const ingredients = await this.db
99
- .select()
100
- .from(posRecipeIngredients)
101
- .where(eq(posRecipeIngredients.recipeId, recipe.id));
102
-
103
- const costPerYield = ingredients.reduce((sum, i) => sum + i.quantity * i.costPerUnit, 0);
104
- const costPerUnit = costPerYield / recipe.yieldQuantity;
105
- return Math.round(costPerUnit * quantity);
106
- }
107
-
108
89
  async listRecipes(orgId: string): Promise<PluginResult<Array<typeof posRecipes.$inferSelect>>> {
109
90
  const rows = await this.db
110
91
  .select()