tt-entities 0.0.44 → 0.0.46

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.
@@ -0,0 +1,50 @@
1
+ import {
2
+ Table,
3
+ Column,
4
+ Model,
5
+ ForeignKey,
6
+ BelongsTo,
7
+ DataType,
8
+ } from 'sequelize-typescript';
9
+ import { RunSheet } from './run-sheet.entity';
10
+ import { Order } from './order.entity';
11
+
12
+ export enum RunSheetOrderStatus {
13
+ ASSIGNED = 'assigned', // Order added to runsheet, marked shipped
14
+ DELIVERED = 'delivered', // Confirmed delivered on completion
15
+ RETURNED = 'returned', // Not delivered — returned to packed
16
+ }
17
+
18
+ @Table
19
+ export class RunSheetOrder extends Model {
20
+ @ForeignKey(() => RunSheet)
21
+ @Column({ allowNull: false })
22
+ declare runSheetId: number;
23
+
24
+ @ForeignKey(() => Order)
25
+ @Column({ allowNull: false }) // one order belongs to one runsheet at a time
26
+ declare orderId: number;
27
+
28
+ @Column({
29
+ type: DataType.ENUM(...Object.values(RunSheetOrderStatus)),
30
+ allowNull: false,
31
+ defaultValue: RunSheetOrderStatus.ASSIGNED,
32
+ })
33
+ declare status: RunSheetOrderStatus;
34
+
35
+ // Filled when status = returned — why was this order not delivered
36
+ @Column({ type: DataType.TEXT, allowNull: true })
37
+ declare returnReason?: string;
38
+
39
+ // Snapshot of order number for display even if order is modified
40
+ @Column({ allowNull: true })
41
+ declare orderNumber?: string;
42
+
43
+ // ── Associations ─────────────────────────────────────────────────────────────
44
+
45
+ @BelongsTo(() => RunSheet)
46
+ declare runSheet: RunSheet;
47
+
48
+ @BelongsTo(() => Order)
49
+ declare order: Order;
50
+ }
@@ -0,0 +1,68 @@
1
+ import {
2
+ Table, Column, Model, ForeignKey, BelongsTo,
3
+ HasMany, DataType,
4
+ } from 'sequelize-typescript';
5
+ import { SysUser } from './sys.user.entity';
6
+ import { RunSheetOrder } from './run-sheet-order.entity';
7
+
8
+ export enum RunSheetStatus {
9
+ OPEN = 'open', // Created, orders assigned, all moved to shipped
10
+ OUT_FOR_DELIVERY = 'out_for_delivery', // Driver is on the road
11
+ COMPLETED = 'completed', // All orders delivered
12
+ PARTIALLY_COMPLETED = 'partially_completed', // Some delivered, some returned to packed
13
+ CANCELLED = 'cancelled',
14
+ }
15
+
16
+ @Table
17
+ export class RunSheet extends Model {
18
+ // Auto-generated e.g. RS-2026-00001
19
+ @Column({ allowNull: false, unique: true })
20
+ declare runSheetNumber: string;
21
+
22
+ @Column({
23
+ type: DataType.ENUM(...Object.values(RunSheetStatus)),
24
+ allowNull: false,
25
+ defaultValue: RunSheetStatus.OPEN,
26
+ })
27
+ declare status: RunSheetStatus;
28
+
29
+ // Driver / delivery person name
30
+ @Column({ allowNull: true })
31
+ declare driverName?: string;
32
+
33
+ @Column({ allowNull: true })
34
+ declare driverPhone?: string;
35
+
36
+ // Vehicle / route reference
37
+ @Column({ allowNull: true })
38
+ declare vehicleRef?: string;
39
+
40
+ @Column({ type: DataType.TEXT, allowNull: true })
41
+ declare notes?: string;
42
+
43
+ // Timestamps for lifecycle
44
+ @Column({ type: DataType.DATE, allowNull: true })
45
+ declare dispatchedAt?: Date; // when moved to out_for_delivery
46
+
47
+ @Column({ type: DataType.DATE, allowNull: true })
48
+ declare completedAt?: Date;
49
+
50
+ @ForeignKey(() => SysUser)
51
+ @Column({ allowNull: true })
52
+ declare createdBy?: number;
53
+
54
+ @ForeignKey(() => SysUser)
55
+ @Column({ allowNull: true })
56
+ declare completedBy?: number;
57
+
58
+ // ── Associations ─────────────────────────────────────────────────────────────
59
+
60
+ @BelongsTo(() => SysUser, { foreignKey: 'createdBy', as: 'creator' })
61
+ declare creator?: SysUser;
62
+
63
+ @BelongsTo(() => SysUser, { foreignKey: 'completedBy', as: 'completer' })
64
+ declare completer?: SysUser;
65
+
66
+ @HasMany(() => RunSheetOrder)
67
+ declare runSheetOrders: RunSheetOrder[];
68
+ }
@@ -75,6 +75,8 @@ import { OrderItemBundleSelection } from './entities/order-item-bundle-selection
75
75
  import { OrderStatusHistory } from './entities/order-status-history.entity';
76
76
  import { UserTransaction } from './entities/user-transaction.entity';
77
77
  import { PurchaseOrderOrderItem } from './entities/purchase-order-order-item.entity';
78
+ import { RunSheet } from './entities/run-sheet.entity';
79
+ import { RunSheetOrder } from './entities/run-sheet-order.entity';
78
80
 
79
81
  // =============================================================================
80
82
  // EXPORTS
@@ -101,6 +103,11 @@ export {
101
103
  BannerFilters,
102
104
  } from './entities/banner.entity';
103
105
  export { AppConfig } from './entities/app-config.entity';
106
+ export { RunSheet, RunSheetStatus } from './entities/run-sheet.entity';
107
+ export {
108
+ RunSheetOrder,
109
+ RunSheetOrderStatus,
110
+ } from './entities/run-sheet-order.entity';
104
111
 
105
112
  // ─── Catalogue ────────────────────────────────────────────────────────────────
106
113
  export { Category } from './entities/category.entity';
@@ -281,5 +288,8 @@ export function getDbModels(): ModelCtor[] {
281
288
  Banner,
282
289
 
283
290
  AppConfig,
291
+
292
+ RunSheet,
293
+ RunSheetOrder,
284
294
  ];
285
295
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tt-entities",
3
- "version": "0.0.44",
3
+ "version": "0.0.46",
4
4
  "description": "Tatayab entities library",
5
5
  "main": "dist/libs/tatayab-entities-library/index.js",
6
6
  "types": "dist/libs/tatayab-entities-library/index.d.ts",