uaxi-shared-entities 1.0.169 → 1.0.170

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,41 @@
1
+ import { Model } from "sequelize-typescript";
2
+ import { BusinessBeneficiary } from "./business-beneficiary.entity";
3
+ export type BusinessBeneficiaryAddressType = "pickup" | "destination";
4
+ export interface BusinessBeneficiaryAddressAttributes {
5
+ id: string;
6
+ businessBeneficiaryId: string;
7
+ type: BusinessBeneficiaryAddressType;
8
+ address: string;
9
+ latitude: number;
10
+ longitude: number;
11
+ placeId: string | null;
12
+ usageCount: number;
13
+ lastUsedAt: Date | null;
14
+ createdAt: Date;
15
+ updatedAt: Date;
16
+ deletedAt: Date | null;
17
+ }
18
+ export interface CreateBusinessBeneficiaryAddressData {
19
+ businessBeneficiaryId: string;
20
+ type: BusinessBeneficiaryAddressType;
21
+ address: string;
22
+ latitude: number;
23
+ longitude: number;
24
+ placeId?: string | null;
25
+ }
26
+ export declare class BusinessBeneficiaryAddress extends Model<BusinessBeneficiaryAddressAttributes, CreateBusinessBeneficiaryAddressData> {
27
+ id: string;
28
+ businessBeneficiaryId: string;
29
+ type: BusinessBeneficiaryAddressType;
30
+ address: string;
31
+ latitude: number;
32
+ longitude: number;
33
+ placeId: string | null;
34
+ usageCount: number;
35
+ lastUsedAt: Date | null;
36
+ createdAt: Date;
37
+ updatedAt: Date;
38
+ deletedAt: Date | null;
39
+ beneficiary: BusinessBeneficiary;
40
+ }
41
+ //# sourceMappingURL=business-beneficiary-address.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-beneficiary-address.entity.d.ts","sourceRoot":"","sources":["../../src/entities/business-beneficiary-address.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EAON,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,MAAM,8BAA8B,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEtE,MAAM,WAAW,oCAAoC;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB,EAAE,MAAM,CAAC;IAC9B,IAAI,EAAE,8BAA8B,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,oCAAoC;IACnD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,IAAI,EAAE,8BAA8B,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qBAiBa,0BAA2B,SAAQ,KAAK,CACnD,oCAAoC,EACpC,oCAAoC,CACrC;IAMS,EAAE,EAAE,MAAM,CAAC;IAOnB,qBAAqB,EAAE,MAAM,CAAC;IAM9B,IAAI,EAAE,8BAA8B,CAAC;IAMrC,OAAO,EAAE,MAAM,CAAC;IAMhB,QAAQ,EAAE,MAAM,CAAC;IAMjB,SAAS,EAAE,MAAM,CAAC;IAOlB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAQvB,UAAU,EAAE,MAAM,CAAC;IAMnB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IAG/B,WAAW,EAAE,mBAAmB,CAAC;CAClC"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BusinessBeneficiaryAddress = void 0;
13
+ const sequelize_typescript_1 = require("sequelize-typescript");
14
+ const business_beneficiary_entity_1 = require("./business-beneficiary.entity");
15
+ let BusinessBeneficiaryAddress = class BusinessBeneficiaryAddress extends sequelize_typescript_1.Model {
16
+ };
17
+ exports.BusinessBeneficiaryAddress = BusinessBeneficiaryAddress;
18
+ __decorate([
19
+ (0, sequelize_typescript_1.Column)({
20
+ type: sequelize_typescript_1.DataType.UUID,
21
+ defaultValue: sequelize_typescript_1.DataType.UUIDV4,
22
+ primaryKey: true,
23
+ }),
24
+ __metadata("design:type", String)
25
+ ], BusinessBeneficiaryAddress.prototype, "id", void 0);
26
+ __decorate([
27
+ (0, sequelize_typescript_1.ForeignKey)(() => business_beneficiary_entity_1.BusinessBeneficiary),
28
+ (0, sequelize_typescript_1.Column)({
29
+ type: sequelize_typescript_1.DataType.UUID,
30
+ allowNull: false,
31
+ }),
32
+ __metadata("design:type", String)
33
+ ], BusinessBeneficiaryAddress.prototype, "businessBeneficiaryId", void 0);
34
+ __decorate([
35
+ (0, sequelize_typescript_1.Column)({
36
+ type: sequelize_typescript_1.DataType.ENUM("pickup", "destination"),
37
+ allowNull: false,
38
+ }),
39
+ __metadata("design:type", String)
40
+ ], BusinessBeneficiaryAddress.prototype, "type", void 0);
41
+ __decorate([
42
+ (0, sequelize_typescript_1.Column)({
43
+ type: sequelize_typescript_1.DataType.STRING,
44
+ allowNull: false,
45
+ }),
46
+ __metadata("design:type", String)
47
+ ], BusinessBeneficiaryAddress.prototype, "address", void 0);
48
+ __decorate([
49
+ (0, sequelize_typescript_1.Column)({
50
+ type: sequelize_typescript_1.DataType.DOUBLE,
51
+ allowNull: false,
52
+ }),
53
+ __metadata("design:type", Number)
54
+ ], BusinessBeneficiaryAddress.prototype, "latitude", void 0);
55
+ __decorate([
56
+ (0, sequelize_typescript_1.Column)({
57
+ type: sequelize_typescript_1.DataType.DOUBLE,
58
+ allowNull: false,
59
+ }),
60
+ __metadata("design:type", Number)
61
+ ], BusinessBeneficiaryAddress.prototype, "longitude", void 0);
62
+ __decorate([
63
+ (0, sequelize_typescript_1.Column)({
64
+ type: sequelize_typescript_1.DataType.STRING,
65
+ allowNull: true,
66
+ comment: "Google place_id cuando esté disponible (para deduplicar)",
67
+ }),
68
+ __metadata("design:type", Object)
69
+ ], BusinessBeneficiaryAddress.prototype, "placeId", void 0);
70
+ __decorate([
71
+ (0, sequelize_typescript_1.Column)({
72
+ type: sequelize_typescript_1.DataType.INTEGER,
73
+ allowNull: false,
74
+ defaultValue: 1,
75
+ comment: "Número de veces que se ha usado esta dirección",
76
+ }),
77
+ __metadata("design:type", Number)
78
+ ], BusinessBeneficiaryAddress.prototype, "usageCount", void 0);
79
+ __decorate([
80
+ (0, sequelize_typescript_1.Column)({
81
+ type: sequelize_typescript_1.DataType.DATE,
82
+ allowNull: true,
83
+ }),
84
+ __metadata("design:type", Object)
85
+ ], BusinessBeneficiaryAddress.prototype, "lastUsedAt", void 0);
86
+ __decorate([
87
+ sequelize_typescript_1.CreatedAt,
88
+ __metadata("design:type", Date)
89
+ ], BusinessBeneficiaryAddress.prototype, "createdAt", void 0);
90
+ __decorate([
91
+ sequelize_typescript_1.UpdatedAt,
92
+ __metadata("design:type", Date)
93
+ ], BusinessBeneficiaryAddress.prototype, "updatedAt", void 0);
94
+ __decorate([
95
+ sequelize_typescript_1.DeletedAt,
96
+ __metadata("design:type", Object)
97
+ ], BusinessBeneficiaryAddress.prototype, "deletedAt", void 0);
98
+ __decorate([
99
+ (0, sequelize_typescript_1.BelongsTo)(() => business_beneficiary_entity_1.BusinessBeneficiary),
100
+ __metadata("design:type", business_beneficiary_entity_1.BusinessBeneficiary)
101
+ ], BusinessBeneficiaryAddress.prototype, "beneficiary", void 0);
102
+ exports.BusinessBeneficiaryAddress = BusinessBeneficiaryAddress = __decorate([
103
+ (0, sequelize_typescript_1.Table)({
104
+ tableName: "business_beneficiary_addresses",
105
+ timestamps: true,
106
+ paranoid: true,
107
+ indexes: [
108
+ {
109
+ // Ranking principal para las sugerencias (más usadas primero)
110
+ fields: [
111
+ "businessBeneficiaryId",
112
+ "type",
113
+ "usageCount",
114
+ "lastUsedAt",
115
+ ],
116
+ name: "bba_beneficiary_type_ranking_idx",
117
+ },
118
+ ],
119
+ })
120
+ ], BusinessBeneficiaryAddress);
121
+ //# sourceMappingURL=business-beneficiary-address.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-beneficiary-address.entity.js","sourceRoot":"","sources":["../../src/entities/business-beneficiary-address.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAU8B;AAC9B,+EAAoE;AA6C7D,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,4BAG/C;CAuEA,CAAA;AA1EY,gEAA0B;AAS7B;IALP,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,YAAY,EAAE,+BAAQ,CAAC,MAAM;QAC7B,UAAU,EAAE,IAAI;KACjB,CAAC;;sDACiB;AAOnB;IALC,IAAA,iCAAU,EAAC,GAAG,EAAE,CAAC,iDAAmB,CAAC;IACrC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;;yEAC4B;AAM9B;IAJC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC5C,SAAS,EAAE,KAAK;KACjB,CAAC;;wDACmC;AAMrC;IAJC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,KAAK;KACjB,CAAC;;2DACc;AAMhB;IAJC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,KAAK;KACjB,CAAC;;4DACe;AAMjB;IAJC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,KAAK;KACjB,CAAC;;6DACgB;AAOlB;IALC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,0DAA0D;KACpE,CAAC;;2DACqB;AAQvB;IANC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,gDAAgD;KAC1D,CAAC;;8DACiB;AAMnB;IAJC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC;;8DACsB;AAGhB;IADP,gCAAS;8BACS,IAAI;6DAAC;AAGhB;IADP,gCAAS;8BACS,IAAI;6DAAC;AAGhB;IADP,gCAAS;;6DACqB;AAG/B;IADC,IAAA,gCAAS,EAAC,GAAG,EAAE,CAAC,iDAAmB,CAAC;8BACxB,iDAAmB;+DAAC;qCAzEtB,0BAA0B;IAjBtC,IAAA,4BAAK,EAAC;QACL,SAAS,EAAE,gCAAgC;QAC3C,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP;gBACE,8DAA8D;gBAC9D,MAAM,EAAE;oBACN,uBAAuB;oBACvB,MAAM;oBACN,YAAY;oBACZ,YAAY;iBACb;gBACD,IAAI,EAAE,kCAAkC;aACzC;SACF;KACF,CAAC;GACW,0BAA0B,CA0EtC"}
@@ -0,0 +1,36 @@
1
+ import { Model } from "sequelize-typescript";
2
+ import { BusinessAccount } from "./business-account.entity";
3
+ import { BusinessBeneficiaryAddress } from "./business-beneficiary-address.entity";
4
+ export interface BusinessBeneficiaryAttributes {
5
+ id: string;
6
+ businessAccountId: string;
7
+ phoneNumber: string;
8
+ name: string;
9
+ notes: string | null;
10
+ totalTrips: number;
11
+ lastUsedAt: Date | null;
12
+ createdAt: Date;
13
+ updatedAt: Date;
14
+ deletedAt: Date | null;
15
+ }
16
+ export interface CreateBusinessBeneficiaryData {
17
+ businessAccountId: string;
18
+ phoneNumber: string;
19
+ name: string;
20
+ notes?: string | null;
21
+ }
22
+ export declare class BusinessBeneficiary extends Model<BusinessBeneficiaryAttributes, CreateBusinessBeneficiaryData> {
23
+ id: string;
24
+ businessAccountId: string;
25
+ phoneNumber: string;
26
+ name: string;
27
+ notes: string | null;
28
+ totalTrips: number;
29
+ lastUsedAt: Date | null;
30
+ createdAt: Date;
31
+ updatedAt: Date;
32
+ deletedAt: Date | null;
33
+ businessAccount: BusinessAccount;
34
+ addresses: BusinessBeneficiaryAddress[];
35
+ }
36
+ //# sourceMappingURL=business-beneficiary.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-beneficiary.entity.d.ts","sourceRoot":"","sources":["../../src/entities/business-beneficiary.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EAQN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAEnF,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,qBAgBa,mBAAoB,SAAQ,KAAK,CAC5C,6BAA6B,EAC7B,6BAA6B,CAC9B;IAMS,EAAE,EAAE,MAAM,CAAC;IAQnB,iBAAiB,EAAE,MAAM,CAAC;IAO1B,WAAW,EAAE,MAAM,CAAC;IAMpB,IAAI,EAAE,MAAM,CAAC;IAMb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAQrB,UAAU,EAAE,MAAM,CAAC;IAOnB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IAG/B,eAAe,EAAE,eAAe,CAAC;IAGjC,SAAS,EAAE,0BAA0B,EAAE,CAAC;CACzC"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BusinessBeneficiary = void 0;
13
+ const sequelize_typescript_1 = require("sequelize-typescript");
14
+ const business_account_entity_1 = require("./business-account.entity");
15
+ const business_beneficiary_address_entity_1 = require("./business-beneficiary-address.entity");
16
+ let BusinessBeneficiary = class BusinessBeneficiary extends sequelize_typescript_1.Model {
17
+ };
18
+ exports.BusinessBeneficiary = BusinessBeneficiary;
19
+ __decorate([
20
+ (0, sequelize_typescript_1.Column)({
21
+ type: sequelize_typescript_1.DataType.UUID,
22
+ defaultValue: sequelize_typescript_1.DataType.UUIDV4,
23
+ primaryKey: true,
24
+ }),
25
+ __metadata("design:type", String)
26
+ ], BusinessBeneficiary.prototype, "id", void 0);
27
+ __decorate([
28
+ (0, sequelize_typescript_1.ForeignKey)(() => business_account_entity_1.BusinessAccount),
29
+ (0, sequelize_typescript_1.Column)({
30
+ type: sequelize_typescript_1.DataType.UUID,
31
+ allowNull: false,
32
+ comment: "Cuenta business dueña del beneficiario",
33
+ }),
34
+ __metadata("design:type", String)
35
+ ], BusinessBeneficiary.prototype, "businessAccountId", void 0);
36
+ __decorate([
37
+ (0, sequelize_typescript_1.Column)({
38
+ type: sequelize_typescript_1.DataType.STRING(20),
39
+ allowNull: false,
40
+ comment: "Teléfono normalizado en formato E.164 (p. ej. +5255...)",
41
+ }),
42
+ __metadata("design:type", String)
43
+ ], BusinessBeneficiary.prototype, "phoneNumber", void 0);
44
+ __decorate([
45
+ (0, sequelize_typescript_1.Column)({
46
+ type: sequelize_typescript_1.DataType.STRING,
47
+ allowNull: false,
48
+ }),
49
+ __metadata("design:type", String)
50
+ ], BusinessBeneficiary.prototype, "name", void 0);
51
+ __decorate([
52
+ (0, sequelize_typescript_1.Column)({
53
+ type: sequelize_typescript_1.DataType.STRING,
54
+ allowNull: true,
55
+ }),
56
+ __metadata("design:type", Object)
57
+ ], BusinessBeneficiary.prototype, "notes", void 0);
58
+ __decorate([
59
+ (0, sequelize_typescript_1.Column)({
60
+ type: sequelize_typescript_1.DataType.INTEGER,
61
+ allowNull: false,
62
+ defaultValue: 0,
63
+ comment: "Conteo total de viajes generados para este beneficiario",
64
+ }),
65
+ __metadata("design:type", Number)
66
+ ], BusinessBeneficiary.prototype, "totalTrips", void 0);
67
+ __decorate([
68
+ (0, sequelize_typescript_1.Column)({
69
+ type: sequelize_typescript_1.DataType.DATE,
70
+ allowNull: true,
71
+ comment: "Última vez que se usó este beneficiario para crear un viaje",
72
+ }),
73
+ __metadata("design:type", Object)
74
+ ], BusinessBeneficiary.prototype, "lastUsedAt", void 0);
75
+ __decorate([
76
+ sequelize_typescript_1.CreatedAt,
77
+ __metadata("design:type", Date)
78
+ ], BusinessBeneficiary.prototype, "createdAt", void 0);
79
+ __decorate([
80
+ sequelize_typescript_1.UpdatedAt,
81
+ __metadata("design:type", Date)
82
+ ], BusinessBeneficiary.prototype, "updatedAt", void 0);
83
+ __decorate([
84
+ sequelize_typescript_1.DeletedAt,
85
+ __metadata("design:type", Object)
86
+ ], BusinessBeneficiary.prototype, "deletedAt", void 0);
87
+ __decorate([
88
+ (0, sequelize_typescript_1.BelongsTo)(() => business_account_entity_1.BusinessAccount),
89
+ __metadata("design:type", business_account_entity_1.BusinessAccount)
90
+ ], BusinessBeneficiary.prototype, "businessAccount", void 0);
91
+ __decorate([
92
+ (0, sequelize_typescript_1.HasMany)(() => business_beneficiary_address_entity_1.BusinessBeneficiaryAddress, "businessBeneficiaryId"),
93
+ __metadata("design:type", Array)
94
+ ], BusinessBeneficiary.prototype, "addresses", void 0);
95
+ exports.BusinessBeneficiary = BusinessBeneficiary = __decorate([
96
+ (0, sequelize_typescript_1.Table)({
97
+ tableName: "business_beneficiaries",
98
+ timestamps: true,
99
+ paranoid: true,
100
+ indexes: [
101
+ {
102
+ unique: true,
103
+ fields: ["businessAccountId", "phoneNumber"],
104
+ name: "business_beneficiaries_account_phone_unique",
105
+ },
106
+ {
107
+ fields: ["phoneNumber"],
108
+ name: "business_beneficiaries_phone_idx",
109
+ },
110
+ ],
111
+ })
112
+ ], BusinessBeneficiary);
113
+ //# sourceMappingURL=business-beneficiary.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business-beneficiary.entity.js","sourceRoot":"","sources":["../../src/entities/business-beneficiary.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAW8B;AAC9B,uEAA4D;AAC5D,+FAAmF;AAsC5E,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,4BAGxC;CAgEA,CAAA;AAnEY,kDAAmB;AAStB;IALP,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,YAAY,EAAE,+BAAQ,CAAC,MAAM;QAC7B,UAAU,EAAE,IAAI;KACjB,CAAC;;+CACiB;AAQnB;IANC,IAAA,iCAAU,EAAC,GAAG,EAAE,CAAC,yCAAe,CAAC;IACjC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,wCAAwC;KAClD,CAAC;;8DACwB;AAO1B;IALC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,yDAAyD;KACnE,CAAC;;wDACkB;AAMpB;IAJC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,KAAK;KACjB,CAAC;;iDACW;AAMb;IAJC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM;QACrB,SAAS,EAAE,IAAI;KAChB,CAAC;;kDACmB;AAQrB;IANC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,yDAAyD;KACnE,CAAC;;uDACiB;AAOnB;IALC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,6DAA6D;KACvE,CAAC;;uDACsB;AAGhB;IADP,gCAAS;8BACS,IAAI;sDAAC;AAGhB;IADP,gCAAS;8BACS,IAAI;sDAAC;AAGhB;IADP,gCAAS;;sDACqB;AAG/B;IADC,IAAA,gCAAS,EAAC,GAAG,EAAE,CAAC,yCAAe,CAAC;8BAChB,yCAAe;4DAAC;AAGjC;IADC,IAAA,8BAAO,EAAC,GAAG,EAAE,CAAC,gEAA0B,EAAE,uBAAuB,CAAC;;sDAC3B;8BAlE7B,mBAAmB;IAhB/B,IAAA,4BAAK,EAAC;QACL,SAAS,EAAE,wBAAwB;QACnC,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC;gBAC5C,IAAI,EAAE,6CAA6C;aACpD;YACD;gBACE,MAAM,EAAE,CAAC,aAAa,CAAC;gBACvB,IAAI,EAAE,kCAAkC;aACzC;SACF;KACF,CAAC;GACW,mBAAmB,CAmE/B"}
@@ -76,6 +76,8 @@ export * from "./business-settlement-trip.entity";
76
76
  export * from "./business-company-code.entity";
77
77
  export * from "./business-cost-center.entity";
78
78
  export * from "./business-account-service-type.entity";
79
+ export * from "./business-beneficiary.entity";
80
+ export * from "./business-beneficiary-address.entity";
79
81
  export * from "./driver-connection-session.entity";
80
82
  export * from "./fare-calculation-request.entity";
81
83
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC"}
@@ -92,6 +92,8 @@ __exportStar(require("./business-settlement-trip.entity"), exports);
92
92
  __exportStar(require("./business-company-code.entity"), exports);
93
93
  __exportStar(require("./business-cost-center.entity"), exports);
94
94
  __exportStar(require("./business-account-service-type.entity"), exports);
95
+ __exportStar(require("./business-beneficiary.entity"), exports);
96
+ __exportStar(require("./business-beneficiary-address.entity"), exports);
95
97
  __exportStar(require("./driver-connection-session.entity"), exports);
96
98
  __exportStar(require("./fare-calculation-request.entity"), exports);
97
99
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,mDAAiC;AACjC,iDAA+B;AAC/B,yDAAuC;AACvC,yDAAuC;AACvC,mEAAiD;AACjD,kDAAgC;AAChC,6DAA2C;AAC3C,kDAAgC;AAChC,4DAA0C;AAC1C,6DAA2C;AAC3C,qDAAmC;AACnC,yDAAuC;AACvC,oDAAkC;AAClC,oDAAkC;AAClC,iDAA+B;AAC/B,yDAAuC;AACvC,wDAAsC;AACtC,iDAA+B;AAC/B,iEAA+C;AAC/C,gEAA8C;AAC9C,mDAAiC;AACjC,mEAAiD;AACjD,4DAA0C;AAC1C,mDAAiC;AACjC,oDAAkC;AAClC,0DAAwC;AACxC,wDAAsC;AACtC,2DAAyC;AACzC,kDAAgC;AAChC,qEAAmD;AACnD,yDAAuC;AACvC,gEAA8C;AAC9C,sDAAoC;AACpC,6DAA2C;AAC3C,yDAAuC;AACvC,iEAA+C;AAC/C,kEAAgD;AAChD,qDAAmC;AACnC,4DAA0C;AAC1C,oDAAkC;AAClC,iEAA+C;AAC/C,iEAA+C;AAC/C,+CAA6B;AAC7B,yDAAuC;AACvC,qDAAmC;AACnC,6DAA2C;AAC3C,2DAAyC;AACzC,6DAA2C;AAC3C,kEAAgD;AAChD,4DAA0C;AAC1C,0DAAwC;AACxC,0DAAwC;AACxC,qDAAmC;AACnC,0DAAwC;AACxC,qEAAmD;AACnD,8DAA4C;AAC5C,uEAAqD;AACrD,uEAAqD;AACrD,wEAAsD;AACtD,qEAAmD;AACnD,gEAA8C;AAC9C,yDAAuC;AACvC,gEAA8C;AAC9C,kEAAgD;AAChD,mEAAiD;AACjD,gEAA8C;AAC9C,uDAAqC;AACrC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C;AAC1C,8DAA4C;AAC5C,+DAA6C;AAC7C,oEAAkD;AAClD,iEAA+C;AAC/C,gEAA8C;AAC9C,yEAAuD;AACvD,qEAAmD;AACnD,oEAAkD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,mDAAiC;AACjC,iDAA+B;AAC/B,yDAAuC;AACvC,yDAAuC;AACvC,mEAAiD;AACjD,kDAAgC;AAChC,6DAA2C;AAC3C,kDAAgC;AAChC,4DAA0C;AAC1C,6DAA2C;AAC3C,qDAAmC;AACnC,yDAAuC;AACvC,oDAAkC;AAClC,oDAAkC;AAClC,iDAA+B;AAC/B,yDAAuC;AACvC,wDAAsC;AACtC,iDAA+B;AAC/B,iEAA+C;AAC/C,gEAA8C;AAC9C,mDAAiC;AACjC,mEAAiD;AACjD,4DAA0C;AAC1C,mDAAiC;AACjC,oDAAkC;AAClC,0DAAwC;AACxC,wDAAsC;AACtC,2DAAyC;AACzC,kDAAgC;AAChC,qEAAmD;AACnD,yDAAuC;AACvC,gEAA8C;AAC9C,sDAAoC;AACpC,6DAA2C;AAC3C,yDAAuC;AACvC,iEAA+C;AAC/C,kEAAgD;AAChD,qDAAmC;AACnC,4DAA0C;AAC1C,oDAAkC;AAClC,iEAA+C;AAC/C,iEAA+C;AAC/C,+CAA6B;AAC7B,yDAAuC;AACvC,qDAAmC;AACnC,6DAA2C;AAC3C,2DAAyC;AACzC,6DAA2C;AAC3C,kEAAgD;AAChD,4DAA0C;AAC1C,0DAAwC;AACxC,0DAAwC;AACxC,qDAAmC;AACnC,0DAAwC;AACxC,qEAAmD;AACnD,8DAA4C;AAC5C,uEAAqD;AACrD,uEAAqD;AACrD,wEAAsD;AACtD,qEAAmD;AACnD,gEAA8C;AAC9C,yDAAuC;AACvC,gEAA8C;AAC9C,kEAAgD;AAChD,mEAAiD;AACjD,gEAA8C;AAC9C,uDAAqC;AACrC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C;AAC1C,8DAA4C;AAC5C,+DAA6C;AAC7C,oEAAkD;AAClD,iEAA+C;AAC/C,gEAA8C;AAC9C,yEAAuD;AACvD,gEAA8C;AAC9C,wEAAsD;AACtD,qEAAmD;AACnD,oEAAkD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uaxi-shared-entities",
3
- "version": "1.0.169",
3
+ "version": "1.0.170",
4
4
  "description": "Entidades compartidas para microservicios UAXI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -0,0 +1,131 @@
1
+ import {
2
+ Table,
3
+ Column,
4
+ Model,
5
+ DataType,
6
+ CreatedAt,
7
+ UpdatedAt,
8
+ DeletedAt,
9
+ ForeignKey,
10
+ BelongsTo,
11
+ } from "sequelize-typescript";
12
+ import { BusinessBeneficiary } from "./business-beneficiary.entity";
13
+
14
+ export type BusinessBeneficiaryAddressType = "pickup" | "destination";
15
+
16
+ export interface BusinessBeneficiaryAddressAttributes {
17
+ id: string;
18
+ businessBeneficiaryId: string;
19
+ type: BusinessBeneficiaryAddressType;
20
+ address: string;
21
+ latitude: number;
22
+ longitude: number;
23
+ placeId: string | null;
24
+ usageCount: number;
25
+ lastUsedAt: Date | null;
26
+ createdAt: Date;
27
+ updatedAt: Date;
28
+ deletedAt: Date | null;
29
+ }
30
+
31
+ export interface CreateBusinessBeneficiaryAddressData {
32
+ businessBeneficiaryId: string;
33
+ type: BusinessBeneficiaryAddressType;
34
+ address: string;
35
+ latitude: number;
36
+ longitude: number;
37
+ placeId?: string | null;
38
+ }
39
+
40
+ @Table({
41
+ tableName: "business_beneficiary_addresses",
42
+ timestamps: true,
43
+ paranoid: true,
44
+ indexes: [
45
+ {
46
+ // Ranking principal para las sugerencias (más usadas primero)
47
+ fields: [
48
+ "businessBeneficiaryId",
49
+ "type",
50
+ "usageCount",
51
+ "lastUsedAt",
52
+ ],
53
+ name: "bba_beneficiary_type_ranking_idx",
54
+ },
55
+ ],
56
+ })
57
+ export class BusinessBeneficiaryAddress extends Model<
58
+ BusinessBeneficiaryAddressAttributes,
59
+ CreateBusinessBeneficiaryAddressData
60
+ > {
61
+ @Column({
62
+ type: DataType.UUID,
63
+ defaultValue: DataType.UUIDV4,
64
+ primaryKey: true,
65
+ })
66
+ declare id: string;
67
+
68
+ @ForeignKey(() => BusinessBeneficiary)
69
+ @Column({
70
+ type: DataType.UUID,
71
+ allowNull: false,
72
+ })
73
+ businessBeneficiaryId: string;
74
+
75
+ @Column({
76
+ type: DataType.ENUM("pickup", "destination"),
77
+ allowNull: false,
78
+ })
79
+ type: BusinessBeneficiaryAddressType;
80
+
81
+ @Column({
82
+ type: DataType.STRING,
83
+ allowNull: false,
84
+ })
85
+ address: string;
86
+
87
+ @Column({
88
+ type: DataType.DOUBLE,
89
+ allowNull: false,
90
+ })
91
+ latitude: number;
92
+
93
+ @Column({
94
+ type: DataType.DOUBLE,
95
+ allowNull: false,
96
+ })
97
+ longitude: number;
98
+
99
+ @Column({
100
+ type: DataType.STRING,
101
+ allowNull: true,
102
+ comment: "Google place_id cuando esté disponible (para deduplicar)",
103
+ })
104
+ placeId: string | null;
105
+
106
+ @Column({
107
+ type: DataType.INTEGER,
108
+ allowNull: false,
109
+ defaultValue: 1,
110
+ comment: "Número de veces que se ha usado esta dirección",
111
+ })
112
+ usageCount: number;
113
+
114
+ @Column({
115
+ type: DataType.DATE,
116
+ allowNull: true,
117
+ })
118
+ lastUsedAt: Date | null;
119
+
120
+ @CreatedAt
121
+ declare createdAt: Date;
122
+
123
+ @UpdatedAt
124
+ declare updatedAt: Date;
125
+
126
+ @DeletedAt
127
+ declare deletedAt: Date | null;
128
+
129
+ @BelongsTo(() => BusinessBeneficiary)
130
+ beneficiary: BusinessBeneficiary;
131
+ }
@@ -0,0 +1,119 @@
1
+ import {
2
+ Table,
3
+ Column,
4
+ Model,
5
+ DataType,
6
+ CreatedAt,
7
+ UpdatedAt,
8
+ DeletedAt,
9
+ ForeignKey,
10
+ BelongsTo,
11
+ HasMany,
12
+ } from "sequelize-typescript";
13
+ import { BusinessAccount } from "./business-account.entity";
14
+ import { BusinessBeneficiaryAddress } from "./business-beneficiary-address.entity";
15
+
16
+ export interface BusinessBeneficiaryAttributes {
17
+ id: string;
18
+ businessAccountId: string;
19
+ phoneNumber: string;
20
+ name: string;
21
+ notes: string | null;
22
+ totalTrips: number;
23
+ lastUsedAt: Date | null;
24
+ createdAt: Date;
25
+ updatedAt: Date;
26
+ deletedAt: Date | null;
27
+ }
28
+
29
+ export interface CreateBusinessBeneficiaryData {
30
+ businessAccountId: string;
31
+ phoneNumber: string;
32
+ name: string;
33
+ notes?: string | null;
34
+ }
35
+
36
+ @Table({
37
+ tableName: "business_beneficiaries",
38
+ timestamps: true,
39
+ paranoid: true,
40
+ indexes: [
41
+ {
42
+ unique: true,
43
+ fields: ["businessAccountId", "phoneNumber"],
44
+ name: "business_beneficiaries_account_phone_unique",
45
+ },
46
+ {
47
+ fields: ["phoneNumber"],
48
+ name: "business_beneficiaries_phone_idx",
49
+ },
50
+ ],
51
+ })
52
+ export class BusinessBeneficiary extends Model<
53
+ BusinessBeneficiaryAttributes,
54
+ CreateBusinessBeneficiaryData
55
+ > {
56
+ @Column({
57
+ type: DataType.UUID,
58
+ defaultValue: DataType.UUIDV4,
59
+ primaryKey: true,
60
+ })
61
+ declare id: string;
62
+
63
+ @ForeignKey(() => BusinessAccount)
64
+ @Column({
65
+ type: DataType.UUID,
66
+ allowNull: false,
67
+ comment: "Cuenta business dueña del beneficiario",
68
+ })
69
+ businessAccountId: string;
70
+
71
+ @Column({
72
+ type: DataType.STRING(20),
73
+ allowNull: false,
74
+ comment: "Teléfono normalizado en formato E.164 (p. ej. +5255...)",
75
+ })
76
+ phoneNumber: string;
77
+
78
+ @Column({
79
+ type: DataType.STRING,
80
+ allowNull: false,
81
+ })
82
+ name: string;
83
+
84
+ @Column({
85
+ type: DataType.STRING,
86
+ allowNull: true,
87
+ })
88
+ notes: string | null;
89
+
90
+ @Column({
91
+ type: DataType.INTEGER,
92
+ allowNull: false,
93
+ defaultValue: 0,
94
+ comment: "Conteo total de viajes generados para este beneficiario",
95
+ })
96
+ totalTrips: number;
97
+
98
+ @Column({
99
+ type: DataType.DATE,
100
+ allowNull: true,
101
+ comment: "Última vez que se usó este beneficiario para crear un viaje",
102
+ })
103
+ lastUsedAt: Date | null;
104
+
105
+ @CreatedAt
106
+ declare createdAt: Date;
107
+
108
+ @UpdatedAt
109
+ declare updatedAt: Date;
110
+
111
+ @DeletedAt
112
+ declare deletedAt: Date | null;
113
+
114
+ @BelongsTo(() => BusinessAccount)
115
+ businessAccount: BusinessAccount;
116
+
117
+ @HasMany(() => BusinessBeneficiaryAddress, "businessBeneficiaryId")
118
+ addresses: BusinessBeneficiaryAddress[];
119
+ }
@@ -76,5 +76,7 @@ export * from "./business-settlement-trip.entity";
76
76
  export * from "./business-company-code.entity";
77
77
  export * from "./business-cost-center.entity";
78
78
  export * from "./business-account-service-type.entity";
79
+ export * from "./business-beneficiary.entity";
80
+ export * from "./business-beneficiary-address.entity";
79
81
  export * from "./driver-connection-session.entity";
80
82
  export * from "./fare-calculation-request.entity";