@contractspec/example.service-business-os 0.0.0-canary-20260113162409
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/LICENSE +21 -0
- package/README.md +16 -0
- package/dist/client/client.operations.d.ts +65 -0
- package/dist/client/client.operations.d.ts.map +1 -0
- package/dist/client/client.operations.js +53 -0
- package/dist/client/client.operations.js.map +1 -0
- package/dist/client/client.schema.d.ts +68 -0
- package/dist/client/client.schema.d.ts.map +1 -0
- package/dist/client/client.schema.js +77 -0
- package/dist/client/client.schema.js.map +1 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.js +4 -0
- package/dist/docs/index.d.ts +1 -0
- package/dist/docs/index.js +1 -0
- package/dist/docs/service-business-os.docblock.d.ts +1 -0
- package/dist/docs/service-business-os.docblock.js +109 -0
- package/dist/docs/service-business-os.docblock.js.map +1 -0
- package/dist/entities/index.d.ts +168 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +289 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/events.d.ts +337 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +230 -0
- package/dist/events.js.map +1 -0
- package/dist/example.d.ts +7 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/example.js +53 -0
- package/dist/example.js.map +1 -0
- package/dist/handlers/index.d.ts +17 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +6 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +19 -0
- package/dist/invoice/index.d.ts +3 -0
- package/dist/invoice/index.js +4 -0
- package/dist/invoice/invoice.operations.d.ts +65 -0
- package/dist/invoice/invoice.operations.d.ts.map +1 -0
- package/dist/invoice/invoice.operations.js +57 -0
- package/dist/invoice/invoice.operations.js.map +1 -0
- package/dist/invoice/invoice.schema.d.ts +68 -0
- package/dist/invoice/invoice.schema.d.ts.map +1 -0
- package/dist/invoice/invoice.schema.js +77 -0
- package/dist/invoice/invoice.schema.js.map +1 -0
- package/dist/job/index.d.ts +3 -0
- package/dist/job/index.js +4 -0
- package/dist/job/job.operations.d.ts +238 -0
- package/dist/job/job.operations.d.ts.map +1 -0
- package/dist/job/job.operations.js +175 -0
- package/dist/job/job.operations.js.map +1 -0
- package/dist/job/job.schema.d.ts +85 -0
- package/dist/job/job.schema.d.ts.map +1 -0
- package/dist/job/job.schema.js +98 -0
- package/dist/job/job.schema.js.map +1 -0
- package/dist/operations/index.d.ts +16 -0
- package/dist/operations/index.js +17 -0
- package/dist/payment/index.d.ts +3 -0
- package/dist/payment/index.js +4 -0
- package/dist/payment/payment.operations.d.ts +61 -0
- package/dist/payment/payment.operations.d.ts.map +1 -0
- package/dist/payment/payment.operations.js +53 -0
- package/dist/payment/payment.operations.js.map +1 -0
- package/dist/payment/payment.schema.d.ts +64 -0
- package/dist/payment/payment.schema.d.ts.map +1 -0
- package/dist/payment/payment.schema.js +73 -0
- package/dist/payment/payment.schema.js.map +1 -0
- package/dist/presentations/index.d.ts +9 -0
- package/dist/presentations/index.d.ts.map +1 -0
- package/dist/presentations/index.js +18 -0
- package/dist/presentations/index.js.map +1 -0
- package/dist/presentations.d.ts +13 -0
- package/dist/presentations.d.ts.map +1 -0
- package/dist/presentations.js +179 -0
- package/dist/presentations.js.map +1 -0
- package/dist/quote/index.d.ts +3 -0
- package/dist/quote/index.js +4 -0
- package/dist/quote/quote.operations.d.ts +135 -0
- package/dist/quote/quote.operations.d.ts.map +1 -0
- package/dist/quote/quote.operations.js +99 -0
- package/dist/quote/quote.operations.js.map +1 -0
- package/dist/quote/quote.schema.d.ts +101 -0
- package/dist/quote/quote.schema.d.ts.map +1 -0
- package/dist/quote/quote.schema.js +114 -0
- package/dist/quote/quote.schema.js.map +1 -0
- package/dist/service-business-os.capability.d.ts +8 -0
- package/dist/service-business-os.capability.d.ts.map +1 -0
- package/dist/service-business-os.capability.js +29 -0
- package/dist/service-business-os.capability.js.map +1 -0
- package/dist/service.feature.d.ts +7 -0
- package/dist/service.feature.d.ts.map +1 -0
- package/dist/service.feature.js +166 -0
- package/dist/service.feature.js.map +1 -0
- package/package.json +100 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Chaman Ventures, SASU
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# @contractspec/example.service-business-os
|
|
2
|
+
|
|
3
|
+
Website: https://contractspec.io/
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Service Business OS reference example (clients → quotes → jobs → invoices → payments).
|
|
7
|
+
|
|
8
|
+
Highlights:
|
|
9
|
+
|
|
10
|
+
- Multi-tenant clients with role-based access via `@contractspec/lib.identity-rbac`
|
|
11
|
+
- Quote lifecycle (draft → sent → accepted/rejected)
|
|
12
|
+
- Jobs scheduling and completion with reminders via `@contractspec/lib.jobs`
|
|
13
|
+
- Invoicing and payments with audit trail + notifications
|
|
14
|
+
- Attachments for proposals and receipts via `@contractspec/lib.files`
|
|
15
|
+
|
|
16
|
+
Use this as a spec-first starting point for field services, agencies, or professional services teams.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as _contractspec_lib_schema110 from "@contractspec/lib.schema";
|
|
2
|
+
import * as _contractspec_lib_contracts11 from "@contractspec/lib.contracts";
|
|
3
|
+
|
|
4
|
+
//#region src/client/client.operations.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Create a new client.
|
|
7
|
+
*/
|
|
8
|
+
declare const CreateClientContract: _contractspec_lib_contracts11.OperationSpec<_contractspec_lib_schema110.SchemaModel<{
|
|
9
|
+
name: {
|
|
10
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
11
|
+
isOptional: false;
|
|
12
|
+
};
|
|
13
|
+
contactEmail: {
|
|
14
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
15
|
+
isOptional: true;
|
|
16
|
+
};
|
|
17
|
+
phone: {
|
|
18
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
19
|
+
isOptional: true;
|
|
20
|
+
};
|
|
21
|
+
orgId: {
|
|
22
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
23
|
+
isOptional: false;
|
|
24
|
+
};
|
|
25
|
+
ownerId: {
|
|
26
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
27
|
+
isOptional: false;
|
|
28
|
+
};
|
|
29
|
+
metadata: {
|
|
30
|
+
type: _contractspec_lib_schema110.FieldType<unknown, unknown>;
|
|
31
|
+
isOptional: true;
|
|
32
|
+
};
|
|
33
|
+
}>, _contractspec_lib_schema110.SchemaModel<{
|
|
34
|
+
id: {
|
|
35
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
36
|
+
isOptional: false;
|
|
37
|
+
};
|
|
38
|
+
name: {
|
|
39
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
40
|
+
isOptional: false;
|
|
41
|
+
};
|
|
42
|
+
contactEmail: {
|
|
43
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
44
|
+
isOptional: true;
|
|
45
|
+
};
|
|
46
|
+
phone: {
|
|
47
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
48
|
+
isOptional: true;
|
|
49
|
+
};
|
|
50
|
+
orgId: {
|
|
51
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
52
|
+
isOptional: false;
|
|
53
|
+
};
|
|
54
|
+
ownerId: {
|
|
55
|
+
type: _contractspec_lib_schema110.FieldType<string, string>;
|
|
56
|
+
isOptional: false;
|
|
57
|
+
};
|
|
58
|
+
createdAt: {
|
|
59
|
+
type: _contractspec_lib_schema110.FieldType<Date, string>;
|
|
60
|
+
isOptional: false;
|
|
61
|
+
};
|
|
62
|
+
}>, undefined>;
|
|
63
|
+
//#endregion
|
|
64
|
+
export { CreateClientContract };
|
|
65
|
+
//# sourceMappingURL=client.operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.operations.d.ts","names":[],"sources":["../../src/client/client.operations.ts"],"sourcesContent":[],"mappings":";;;;;;;cAQa,oDAAoB,0CAAA;EAApB,IAAA,EAAA;IAqCX,IAAA,EAAA,2BAAA,CAAA,SAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;EArC+B,KAAA,EAAA;;;;;;;;;+CAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;UAAA,2BAAA,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ClientModel, CreateClientInputModel } from "./client.schema.js";
|
|
2
|
+
import { defineCommand } from "@contractspec/lib.contracts";
|
|
3
|
+
|
|
4
|
+
//#region src/client/client.operations.ts
|
|
5
|
+
const OWNERS = ["@examples.service-business-os"];
|
|
6
|
+
/**
|
|
7
|
+
* Create a new client.
|
|
8
|
+
*/
|
|
9
|
+
const CreateClientContract = defineCommand({
|
|
10
|
+
meta: {
|
|
11
|
+
key: "service.client.create",
|
|
12
|
+
version: "1.0.0",
|
|
13
|
+
stability: "stable",
|
|
14
|
+
owners: [...OWNERS],
|
|
15
|
+
tags: [
|
|
16
|
+
"service-business-os",
|
|
17
|
+
"client",
|
|
18
|
+
"create"
|
|
19
|
+
],
|
|
20
|
+
description: "Create a new client.",
|
|
21
|
+
goal: "Onboard clients.",
|
|
22
|
+
context: "CRM."
|
|
23
|
+
},
|
|
24
|
+
io: {
|
|
25
|
+
input: CreateClientInputModel,
|
|
26
|
+
output: ClientModel
|
|
27
|
+
},
|
|
28
|
+
policy: { auth: "user" },
|
|
29
|
+
acceptance: {
|
|
30
|
+
scenarios: [{
|
|
31
|
+
key: "create-client-happy-path",
|
|
32
|
+
given: ["User is authenticated"],
|
|
33
|
+
when: ["User creates a new client"],
|
|
34
|
+
then: ["Client is created"]
|
|
35
|
+
}],
|
|
36
|
+
examples: [{
|
|
37
|
+
key: "create-basic",
|
|
38
|
+
input: {
|
|
39
|
+
name: "Acme Corp",
|
|
40
|
+
email: "contact@acme.com",
|
|
41
|
+
phone: "555-0123"
|
|
42
|
+
},
|
|
43
|
+
output: {
|
|
44
|
+
id: "client-123",
|
|
45
|
+
name: "Acme Corp"
|
|
46
|
+
}
|
|
47
|
+
}]
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
export { CreateClientContract };
|
|
53
|
+
//# sourceMappingURL=client.operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.operations.js","names":[],"sources":["../../src/client/client.operations.ts"],"sourcesContent":["import { defineCommand } from '@contractspec/lib.contracts';\nimport { ClientModel, CreateClientInputModel } from './client.schema';\n\nconst OWNERS = ['@examples.service-business-os'] as const;\n\n/**\n * Create a new client.\n */\nexport const CreateClientContract = defineCommand({\n meta: {\n key: 'service.client.create',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['service-business-os', 'client', 'create'],\n description: 'Create a new client.',\n goal: 'Onboard clients.',\n context: 'CRM.',\n },\n io: {\n input: CreateClientInputModel,\n output: ClientModel,\n },\n policy: { auth: 'user' },\n acceptance: {\n scenarios: [\n {\n key: 'create-client-happy-path',\n given: ['User is authenticated'],\n when: ['User creates a new client'],\n then: ['Client is created'],\n },\n ],\n examples: [\n {\n key: 'create-basic',\n input: {\n name: 'Acme Corp',\n email: 'contact@acme.com',\n phone: '555-0123',\n },\n output: { id: 'client-123', name: 'Acme Corp' },\n },\n ],\n },\n});\n"],"mappings":";;;;AAGA,MAAM,SAAS,CAAC,gCAAgC;;;;AAKhD,MAAa,uBAAuB,cAAc;CAChD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAuB;GAAU;GAAS;EACjD,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EAAE,MAAM,QAAQ;CACxB,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,wBAAwB;GAChC,MAAM,CAAC,4BAA4B;GACnC,MAAM,CAAC,oBAAoB;GAC5B,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACR;GACD,QAAQ;IAAE,IAAI;IAAc,MAAM;IAAa;GAChD,CACF;EACF;CACF,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as _contractspec_lib_schema125 from "@contractspec/lib.schema";
|
|
2
|
+
|
|
3
|
+
//#region src/client/client.schema.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Client profile.
|
|
6
|
+
*/
|
|
7
|
+
declare const ClientModel: _contractspec_lib_schema125.SchemaModel<{
|
|
8
|
+
id: {
|
|
9
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
10
|
+
isOptional: false;
|
|
11
|
+
};
|
|
12
|
+
name: {
|
|
13
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
14
|
+
isOptional: false;
|
|
15
|
+
};
|
|
16
|
+
contactEmail: {
|
|
17
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
18
|
+
isOptional: true;
|
|
19
|
+
};
|
|
20
|
+
phone: {
|
|
21
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
22
|
+
isOptional: true;
|
|
23
|
+
};
|
|
24
|
+
orgId: {
|
|
25
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
26
|
+
isOptional: false;
|
|
27
|
+
};
|
|
28
|
+
ownerId: {
|
|
29
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
30
|
+
isOptional: false;
|
|
31
|
+
};
|
|
32
|
+
createdAt: {
|
|
33
|
+
type: _contractspec_lib_schema125.FieldType<Date, string>;
|
|
34
|
+
isOptional: false;
|
|
35
|
+
};
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Input for creating a client.
|
|
39
|
+
*/
|
|
40
|
+
declare const CreateClientInputModel: _contractspec_lib_schema125.SchemaModel<{
|
|
41
|
+
name: {
|
|
42
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
43
|
+
isOptional: false;
|
|
44
|
+
};
|
|
45
|
+
contactEmail: {
|
|
46
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
47
|
+
isOptional: true;
|
|
48
|
+
};
|
|
49
|
+
phone: {
|
|
50
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
51
|
+
isOptional: true;
|
|
52
|
+
};
|
|
53
|
+
orgId: {
|
|
54
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
55
|
+
isOptional: false;
|
|
56
|
+
};
|
|
57
|
+
ownerId: {
|
|
58
|
+
type: _contractspec_lib_schema125.FieldType<string, string>;
|
|
59
|
+
isOptional: false;
|
|
60
|
+
};
|
|
61
|
+
metadata: {
|
|
62
|
+
type: _contractspec_lib_schema125.FieldType<unknown, unknown>;
|
|
63
|
+
isOptional: true;
|
|
64
|
+
};
|
|
65
|
+
}>;
|
|
66
|
+
//#endregion
|
|
67
|
+
export { ClientModel, CreateClientInputModel };
|
|
68
|
+
//# sourceMappingURL=client.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.schema.d.ts","names":[],"sources":["../../src/client/client.schema.ts"],"sourcesContent":[],"mappings":";;;;;;AAKa,cAAA,WAYX,8BAZsB,WAYtB,CAAA;EAAA,EAAA,EAAA;UAAA,2BAAA,CAAA;;;;;;;;IAZsB,IAAA,uCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAiBX,UAAA,EAAA,IAAA;EAWX,CAAA;;;;;;+CAXiC,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;;;cAAtB,oDAAsB;;UAWjC,2BAAA,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { ScalarTypeEnum, defineSchemaModel } from "@contractspec/lib.schema";
|
|
2
|
+
|
|
3
|
+
//#region src/client/client.schema.ts
|
|
4
|
+
/**
|
|
5
|
+
* Client profile.
|
|
6
|
+
*/
|
|
7
|
+
const ClientModel = defineSchemaModel({
|
|
8
|
+
name: "Client",
|
|
9
|
+
description: "Client profile",
|
|
10
|
+
fields: {
|
|
11
|
+
id: {
|
|
12
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
13
|
+
isOptional: false
|
|
14
|
+
},
|
|
15
|
+
name: {
|
|
16
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
17
|
+
isOptional: false
|
|
18
|
+
},
|
|
19
|
+
contactEmail: {
|
|
20
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
21
|
+
isOptional: true
|
|
22
|
+
},
|
|
23
|
+
phone: {
|
|
24
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
25
|
+
isOptional: true
|
|
26
|
+
},
|
|
27
|
+
orgId: {
|
|
28
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
29
|
+
isOptional: false
|
|
30
|
+
},
|
|
31
|
+
ownerId: {
|
|
32
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
33
|
+
isOptional: false
|
|
34
|
+
},
|
|
35
|
+
createdAt: {
|
|
36
|
+
type: ScalarTypeEnum.DateTime(),
|
|
37
|
+
isOptional: false
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* Input for creating a client.
|
|
43
|
+
*/
|
|
44
|
+
const CreateClientInputModel = defineSchemaModel({
|
|
45
|
+
name: "CreateClientInput",
|
|
46
|
+
description: "Input for creating a client",
|
|
47
|
+
fields: {
|
|
48
|
+
name: {
|
|
49
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
50
|
+
isOptional: false
|
|
51
|
+
},
|
|
52
|
+
contactEmail: {
|
|
53
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
54
|
+
isOptional: true
|
|
55
|
+
},
|
|
56
|
+
phone: {
|
|
57
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
58
|
+
isOptional: true
|
|
59
|
+
},
|
|
60
|
+
orgId: {
|
|
61
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
62
|
+
isOptional: false
|
|
63
|
+
},
|
|
64
|
+
ownerId: {
|
|
65
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
66
|
+
isOptional: false
|
|
67
|
+
},
|
|
68
|
+
metadata: {
|
|
69
|
+
type: ScalarTypeEnum.JSON(),
|
|
70
|
+
isOptional: true
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
//#endregion
|
|
76
|
+
export { ClientModel, CreateClientInputModel };
|
|
77
|
+
//# sourceMappingURL=client.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.schema.js","names":[],"sources":["../../src/client/client.schema.ts"],"sourcesContent":["import { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\n\n/**\n * Client profile.\n */\nexport const ClientModel = defineSchemaModel({\n name: 'Client',\n description: 'Client profile',\n fields: {\n id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n contactEmail: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n phone: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n orgId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Input for creating a client.\n */\nexport const CreateClientInputModel = defineSchemaModel({\n name: 'CreateClientInput',\n description: 'Input for creating a client',\n fields: {\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n contactEmail: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n phone: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n orgId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n metadata: { type: ScalarTypeEnum.JSON(), isOptional: true },\n },\n});\n"],"mappings":";;;;;;AAKA,MAAa,cAAc,kBAAkB;CAC3C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,IAAI;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACjE,MAAM;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACnE,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EAC1E,OAAO;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EACnE,OAAO;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACpE,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAa,yBAAyB,kBAAkB;CACtD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,MAAM;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACnE,cAAc;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EAC1E,OAAO;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAM;EACnE,OAAO;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACpE,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,UAAU;GAAE,MAAM,eAAe,MAAM;GAAE,YAAY;GAAM;EAC5D;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./service-business-os.docblock.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { registerDocBlocks } from "@contractspec/lib.contracts/docs";
|
|
2
|
+
|
|
3
|
+
//#region src/docs/service-business-os.docblock.ts
|
|
4
|
+
registerDocBlocks([
|
|
5
|
+
{
|
|
6
|
+
id: "docs.examples.service-business-os",
|
|
7
|
+
title: "Service Business OS",
|
|
8
|
+
summary: "Field/service business flow from client intake to quote, job scheduling, invoicing, and payments with notifications and audit trail.",
|
|
9
|
+
kind: "reference",
|
|
10
|
+
visibility: "public",
|
|
11
|
+
route: "/docs/examples/service-business-os",
|
|
12
|
+
tags: [
|
|
13
|
+
"services",
|
|
14
|
+
"quotes",
|
|
15
|
+
"jobs",
|
|
16
|
+
"invoices",
|
|
17
|
+
"payments"
|
|
18
|
+
],
|
|
19
|
+
body: `## Flows
|
|
20
|
+
|
|
21
|
+
1) **Client intake** → create client, capture contact + owner.
|
|
22
|
+
2) **Quote** → draft, send, accept/reject (events + notifications).
|
|
23
|
+
3) **Job** → schedule, assign technician, complete with notes and attachments.
|
|
24
|
+
4) **Invoice** → issue after completion, track status.
|
|
25
|
+
5) **Payment** → record payment and emit analytics/audit.
|
|
26
|
+
|
|
27
|
+
## Modules reused
|
|
28
|
+
- Identity/RBAC for org + roles
|
|
29
|
+
- Files for attachments (proposals, receipts)
|
|
30
|
+
- Notifications for quote sent/accepted, job reminders, overdue invoices
|
|
31
|
+
- Jobs for reminder/schedule tasks
|
|
32
|
+
- Audit trail for all lifecycle changes
|
|
33
|
+
|
|
34
|
+
## Presentations
|
|
35
|
+
- Dashboard, client list, quote list/detail, job board, invoice list, payment list (React + Markdown targets).
|
|
36
|
+
`
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "docs.examples.service-business-os.goal",
|
|
40
|
+
title: "Service Business OS — Goal",
|
|
41
|
+
summary: "Why this field-service OS exists and outcomes it targets.",
|
|
42
|
+
kind: "goal",
|
|
43
|
+
visibility: "public",
|
|
44
|
+
route: "/docs/examples/service-business-os/goal",
|
|
45
|
+
tags: ["services", "goal"],
|
|
46
|
+
body: `## Why it matters
|
|
47
|
+
- Provides a regenerable, end-to-end service lifecycle (client → quote → job → invoice → payment).
|
|
48
|
+
- Keeps pricing, scheduling, invoicing, and payments consistent across surfaces.
|
|
49
|
+
|
|
50
|
+
## Business/Product goal
|
|
51
|
+
- Deliver auditable quotes/jobs/invoices with notifications and reminders.
|
|
52
|
+
- Support attachments and PII-safe flows; stage new payment rules via feature flags.
|
|
53
|
+
|
|
54
|
+
## Success criteria
|
|
55
|
+
- Spec changes regenerate UI/API/events cleanly across lifecycle steps.
|
|
56
|
+
- Audit/Notifications/Jobs remain wired for every mutation.`
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: "docs.examples.service-business-os.usage",
|
|
60
|
+
title: "Service Business OS — Usage",
|
|
61
|
+
summary: "How to operate, extend, and regenerate the service OS safely.",
|
|
62
|
+
kind: "usage",
|
|
63
|
+
visibility: "public",
|
|
64
|
+
route: "/docs/examples/service-business-os/usage",
|
|
65
|
+
tags: ["services", "usage"],
|
|
66
|
+
body: `## Setup
|
|
67
|
+
1) Seed (if provided) or create client → quote → job → invoice → payment via UI.
|
|
68
|
+
2) Configure Files for attachments and Notifications for quote/job/invoice events.
|
|
69
|
+
|
|
70
|
+
## Extend & regenerate
|
|
71
|
+
1) Adjust schemas: quote line items, job statuses, invoice terms, payment methods.
|
|
72
|
+
2) Regenerate to sync UI/API/events; mark PII paths in policy.
|
|
73
|
+
3) Use Feature Flags to trial new payment rules or reminder cadences.
|
|
74
|
+
|
|
75
|
+
## Guardrails
|
|
76
|
+
- Emit events for quote accepted/rejected, job scheduled/completed, invoice overdue, payment recorded.
|
|
77
|
+
- Keep pricing/tax rules explicit in spec; avoid implicit handler math.
|
|
78
|
+
- Use Audit Trail for lifecycle mutations; schedule reminders via Jobs.`
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "docs.examples.service-business-os.constraints",
|
|
82
|
+
title: "Service Business OS — Constraints & Safety",
|
|
83
|
+
summary: "Internal guardrails for quotes/jobs/invoices/payments and regeneration safety.",
|
|
84
|
+
kind: "reference",
|
|
85
|
+
visibility: "internal",
|
|
86
|
+
route: "/docs/examples/service-business-os/constraints",
|
|
87
|
+
tags: [
|
|
88
|
+
"services",
|
|
89
|
+
"constraints",
|
|
90
|
+
"internal"
|
|
91
|
+
],
|
|
92
|
+
body: `## Constraints
|
|
93
|
+
- Commission/tax/payment rules must be explicit in spec; no hidden handler math.
|
|
94
|
+
- Events to emit: quote.sent/accepted/rejected, job.scheduled/completed, invoice.issued/overdue, payment.recorded.
|
|
95
|
+
- Regeneration must not alter payment semantics without reviewed spec changes.
|
|
96
|
+
|
|
97
|
+
## PII & Attachments
|
|
98
|
+
- Mark PII paths (client contact, address); redact in markdown/JSON.
|
|
99
|
+
- Files (quotes, receipts) should use presigned URLs with scoped access.
|
|
100
|
+
|
|
101
|
+
## Verification
|
|
102
|
+
- Add fixtures for quote/job/invoice state transitions.
|
|
103
|
+
- Ensure Notifications/Audit/Jobs wiring persists after regeneration.
|
|
104
|
+
- Use Feature Flags to trial new payment rules/reminder cadences; default safe/off.`
|
|
105
|
+
}
|
|
106
|
+
]);
|
|
107
|
+
|
|
108
|
+
//#endregion
|
|
109
|
+
//# sourceMappingURL=service-business-os.docblock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-business-os.docblock.js","names":[],"sources":["../../src/docs/service-business-os.docblock.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\nimport { registerDocBlocks } from '@contractspec/lib.contracts/docs';\n\nconst serviceBusinessDocBlocks: DocBlock[] = [\n {\n id: 'docs.examples.service-business-os',\n title: 'Service Business OS',\n summary:\n 'Field/service business flow from client intake to quote, job scheduling, invoicing, and payments with notifications and audit trail.',\n kind: 'reference',\n visibility: 'public',\n route: '/docs/examples/service-business-os',\n tags: ['services', 'quotes', 'jobs', 'invoices', 'payments'],\n body: `## Flows\n\n1) **Client intake** → create client, capture contact + owner.\n2) **Quote** → draft, send, accept/reject (events + notifications).\n3) **Job** → schedule, assign technician, complete with notes and attachments.\n4) **Invoice** → issue after completion, track status.\n5) **Payment** → record payment and emit analytics/audit.\n\n## Modules reused\n- Identity/RBAC for org + roles\n- Files for attachments (proposals, receipts)\n- Notifications for quote sent/accepted, job reminders, overdue invoices\n- Jobs for reminder/schedule tasks\n- Audit trail for all lifecycle changes\n\n## Presentations\n- Dashboard, client list, quote list/detail, job board, invoice list, payment list (React + Markdown targets).\n`,\n },\n {\n id: 'docs.examples.service-business-os.goal',\n title: 'Service Business OS — Goal',\n summary: 'Why this field-service OS exists and outcomes it targets.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/examples/service-business-os/goal',\n tags: ['services', 'goal'],\n body: `## Why it matters\n- Provides a regenerable, end-to-end service lifecycle (client → quote → job → invoice → payment).\n- Keeps pricing, scheduling, invoicing, and payments consistent across surfaces.\n\n## Business/Product goal\n- Deliver auditable quotes/jobs/invoices with notifications and reminders.\n- Support attachments and PII-safe flows; stage new payment rules via feature flags.\n\n## Success criteria\n- Spec changes regenerate UI/API/events cleanly across lifecycle steps.\n- Audit/Notifications/Jobs remain wired for every mutation.`,\n },\n {\n id: 'docs.examples.service-business-os.usage',\n title: 'Service Business OS — Usage',\n summary: 'How to operate, extend, and regenerate the service OS safely.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/examples/service-business-os/usage',\n tags: ['services', 'usage'],\n body: `## Setup\n1) Seed (if provided) or create client → quote → job → invoice → payment via UI.\n2) Configure Files for attachments and Notifications for quote/job/invoice events.\n\n## Extend & regenerate\n1) Adjust schemas: quote line items, job statuses, invoice terms, payment methods.\n2) Regenerate to sync UI/API/events; mark PII paths in policy.\n3) Use Feature Flags to trial new payment rules or reminder cadences.\n\n## Guardrails\n- Emit events for quote accepted/rejected, job scheduled/completed, invoice overdue, payment recorded.\n- Keep pricing/tax rules explicit in spec; avoid implicit handler math.\n- Use Audit Trail for lifecycle mutations; schedule reminders via Jobs.`,\n },\n {\n id: 'docs.examples.service-business-os.constraints',\n title: 'Service Business OS — Constraints & Safety',\n summary:\n 'Internal guardrails for quotes/jobs/invoices/payments and regeneration safety.',\n kind: 'reference',\n visibility: 'internal',\n route: '/docs/examples/service-business-os/constraints',\n tags: ['services', 'constraints', 'internal'],\n body: `## Constraints\n- Commission/tax/payment rules must be explicit in spec; no hidden handler math.\n- Events to emit: quote.sent/accepted/rejected, job.scheduled/completed, invoice.issued/overdue, payment.recorded.\n- Regeneration must not alter payment semantics without reviewed spec changes.\n\n## PII & Attachments\n- Mark PII paths (client contact, address); redact in markdown/JSON.\n- Files (quotes, receipts) should use presigned URLs with scoped access.\n\n## Verification\n- Add fixtures for quote/job/invoice state transitions.\n- Ensure Notifications/Audit/Jobs wiring persists after regeneration.\n- Use Feature Flags to trial new payment rules/reminder cadences; default safe/off.`,\n },\n];\n\nregisterDocBlocks(serviceBusinessDocBlocks);\n"],"mappings":";;;AAmGA,kBAhG6C;CAC3C;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM;GAAC;GAAY;GAAU;GAAQ;GAAY;GAAW;EAC5D,MAAM;;;;;;;;;;;;;;;;;;EAkBP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,YAAY,OAAO;EAC1B,MAAM;;;;;;;;;;;EAWP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,YAAY,QAAQ;EAC3B,MAAM;;;;;;;;;;;;;EAaP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM;GAAC;GAAY;GAAe;GAAW;EAC7C,MAAM;;;;;;;;;;;;;EAaP;CACF,CAE0C"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import * as _contractspec_lib_schema140 from "@contractspec/lib.schema";
|
|
2
|
+
import { ModuleSchemaContribution } from "@contractspec/lib.schema";
|
|
3
|
+
|
|
4
|
+
//#region src/entities/index.d.ts
|
|
5
|
+
declare const QuoteStatusEnum: _contractspec_lib_schema140.EntityEnumDef;
|
|
6
|
+
declare const JobStatusEnum: _contractspec_lib_schema140.EntityEnumDef;
|
|
7
|
+
declare const InvoiceStatusEnum: _contractspec_lib_schema140.EntityEnumDef;
|
|
8
|
+
declare const PaymentMethodEnum: _contractspec_lib_schema140.EntityEnumDef;
|
|
9
|
+
declare const ClientEntity: _contractspec_lib_schema140.EntitySpec<{
|
|
10
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
11
|
+
name: _contractspec_lib_schema140.EntityScalarField;
|
|
12
|
+
contactEmail: _contractspec_lib_schema140.EntityScalarField;
|
|
13
|
+
phone: _contractspec_lib_schema140.EntityScalarField;
|
|
14
|
+
address: _contractspec_lib_schema140.EntityScalarField;
|
|
15
|
+
industry: _contractspec_lib_schema140.EntityScalarField;
|
|
16
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
17
|
+
ownerId: _contractspec_lib_schema140.EntityScalarField;
|
|
18
|
+
metadata: _contractspec_lib_schema140.EntityScalarField;
|
|
19
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
20
|
+
updatedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
21
|
+
quotes: _contractspec_lib_schema140.EntityRelationField;
|
|
22
|
+
jobs: _contractspec_lib_schema140.EntityRelationField;
|
|
23
|
+
}>;
|
|
24
|
+
declare const QuoteEntity: _contractspec_lib_schema140.EntitySpec<{
|
|
25
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
26
|
+
clientId: _contractspec_lib_schema140.EntityScalarField;
|
|
27
|
+
title: _contractspec_lib_schema140.EntityScalarField;
|
|
28
|
+
description: _contractspec_lib_schema140.EntityScalarField;
|
|
29
|
+
amount: _contractspec_lib_schema140.EntityScalarField;
|
|
30
|
+
currency: _contractspec_lib_schema140.EntityScalarField;
|
|
31
|
+
status: _contractspec_lib_schema140.EntityEnumField;
|
|
32
|
+
validUntil: _contractspec_lib_schema140.EntityScalarField;
|
|
33
|
+
terms: _contractspec_lib_schema140.EntityScalarField;
|
|
34
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
35
|
+
ownerId: _contractspec_lib_schema140.EntityScalarField;
|
|
36
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
37
|
+
updatedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
38
|
+
client: _contractspec_lib_schema140.EntityRelationField;
|
|
39
|
+
jobs: _contractspec_lib_schema140.EntityRelationField;
|
|
40
|
+
}>;
|
|
41
|
+
declare const JobEntity: _contractspec_lib_schema140.EntitySpec<{
|
|
42
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
43
|
+
quoteId: _contractspec_lib_schema140.EntityScalarField;
|
|
44
|
+
clientId: _contractspec_lib_schema140.EntityScalarField;
|
|
45
|
+
title: _contractspec_lib_schema140.EntityScalarField;
|
|
46
|
+
status: _contractspec_lib_schema140.EntityEnumField;
|
|
47
|
+
scheduledAt: _contractspec_lib_schema140.EntityScalarField;
|
|
48
|
+
completedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
49
|
+
assignedTo: _contractspec_lib_schema140.EntityScalarField;
|
|
50
|
+
location: _contractspec_lib_schema140.EntityScalarField;
|
|
51
|
+
notes: _contractspec_lib_schema140.EntityScalarField;
|
|
52
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
53
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
54
|
+
updatedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
55
|
+
quote: _contractspec_lib_schema140.EntityRelationField;
|
|
56
|
+
client: _contractspec_lib_schema140.EntityRelationField;
|
|
57
|
+
invoices: _contractspec_lib_schema140.EntityRelationField;
|
|
58
|
+
}>;
|
|
59
|
+
declare const InvoiceEntity: _contractspec_lib_schema140.EntitySpec<{
|
|
60
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
61
|
+
jobId: _contractspec_lib_schema140.EntityScalarField;
|
|
62
|
+
invoiceNumber: _contractspec_lib_schema140.EntityScalarField;
|
|
63
|
+
amount: _contractspec_lib_schema140.EntityScalarField;
|
|
64
|
+
currency: _contractspec_lib_schema140.EntityScalarField;
|
|
65
|
+
status: _contractspec_lib_schema140.EntityEnumField;
|
|
66
|
+
dueDate: _contractspec_lib_schema140.EntityScalarField;
|
|
67
|
+
issuedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
68
|
+
paidAt: _contractspec_lib_schema140.EntityScalarField;
|
|
69
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
70
|
+
notes: _contractspec_lib_schema140.EntityScalarField;
|
|
71
|
+
metadata: _contractspec_lib_schema140.EntityScalarField;
|
|
72
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
73
|
+
updatedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
74
|
+
job: _contractspec_lib_schema140.EntityRelationField;
|
|
75
|
+
payments: _contractspec_lib_schema140.EntityRelationField;
|
|
76
|
+
}>;
|
|
77
|
+
declare const PaymentEntity: _contractspec_lib_schema140.EntitySpec<{
|
|
78
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
79
|
+
invoiceId: _contractspec_lib_schema140.EntityScalarField;
|
|
80
|
+
amount: _contractspec_lib_schema140.EntityScalarField;
|
|
81
|
+
currency: _contractspec_lib_schema140.EntityScalarField;
|
|
82
|
+
method: _contractspec_lib_schema140.EntityEnumField;
|
|
83
|
+
reference: _contractspec_lib_schema140.EntityScalarField;
|
|
84
|
+
receivedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
85
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
86
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
87
|
+
invoice: _contractspec_lib_schema140.EntityRelationField;
|
|
88
|
+
}>;
|
|
89
|
+
declare const serviceBusinessEntities: (_contractspec_lib_schema140.EntitySpec<{
|
|
90
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
91
|
+
name: _contractspec_lib_schema140.EntityScalarField;
|
|
92
|
+
contactEmail: _contractspec_lib_schema140.EntityScalarField;
|
|
93
|
+
phone: _contractspec_lib_schema140.EntityScalarField;
|
|
94
|
+
address: _contractspec_lib_schema140.EntityScalarField;
|
|
95
|
+
industry: _contractspec_lib_schema140.EntityScalarField;
|
|
96
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
97
|
+
ownerId: _contractspec_lib_schema140.EntityScalarField;
|
|
98
|
+
metadata: _contractspec_lib_schema140.EntityScalarField;
|
|
99
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
100
|
+
updatedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
101
|
+
quotes: _contractspec_lib_schema140.EntityRelationField;
|
|
102
|
+
jobs: _contractspec_lib_schema140.EntityRelationField;
|
|
103
|
+
}> | _contractspec_lib_schema140.EntitySpec<{
|
|
104
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
105
|
+
clientId: _contractspec_lib_schema140.EntityScalarField;
|
|
106
|
+
title: _contractspec_lib_schema140.EntityScalarField;
|
|
107
|
+
description: _contractspec_lib_schema140.EntityScalarField;
|
|
108
|
+
amount: _contractspec_lib_schema140.EntityScalarField;
|
|
109
|
+
currency: _contractspec_lib_schema140.EntityScalarField;
|
|
110
|
+
status: _contractspec_lib_schema140.EntityEnumField;
|
|
111
|
+
validUntil: _contractspec_lib_schema140.EntityScalarField;
|
|
112
|
+
terms: _contractspec_lib_schema140.EntityScalarField;
|
|
113
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
114
|
+
ownerId: _contractspec_lib_schema140.EntityScalarField;
|
|
115
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
116
|
+
updatedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
117
|
+
client: _contractspec_lib_schema140.EntityRelationField;
|
|
118
|
+
jobs: _contractspec_lib_schema140.EntityRelationField;
|
|
119
|
+
}> | _contractspec_lib_schema140.EntitySpec<{
|
|
120
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
121
|
+
quoteId: _contractspec_lib_schema140.EntityScalarField;
|
|
122
|
+
clientId: _contractspec_lib_schema140.EntityScalarField;
|
|
123
|
+
title: _contractspec_lib_schema140.EntityScalarField;
|
|
124
|
+
status: _contractspec_lib_schema140.EntityEnumField;
|
|
125
|
+
scheduledAt: _contractspec_lib_schema140.EntityScalarField;
|
|
126
|
+
completedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
127
|
+
assignedTo: _contractspec_lib_schema140.EntityScalarField;
|
|
128
|
+
location: _contractspec_lib_schema140.EntityScalarField;
|
|
129
|
+
notes: _contractspec_lib_schema140.EntityScalarField;
|
|
130
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
131
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
132
|
+
updatedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
133
|
+
quote: _contractspec_lib_schema140.EntityRelationField;
|
|
134
|
+
client: _contractspec_lib_schema140.EntityRelationField;
|
|
135
|
+
invoices: _contractspec_lib_schema140.EntityRelationField;
|
|
136
|
+
}> | _contractspec_lib_schema140.EntitySpec<{
|
|
137
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
138
|
+
jobId: _contractspec_lib_schema140.EntityScalarField;
|
|
139
|
+
invoiceNumber: _contractspec_lib_schema140.EntityScalarField;
|
|
140
|
+
amount: _contractspec_lib_schema140.EntityScalarField;
|
|
141
|
+
currency: _contractspec_lib_schema140.EntityScalarField;
|
|
142
|
+
status: _contractspec_lib_schema140.EntityEnumField;
|
|
143
|
+
dueDate: _contractspec_lib_schema140.EntityScalarField;
|
|
144
|
+
issuedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
145
|
+
paidAt: _contractspec_lib_schema140.EntityScalarField;
|
|
146
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
147
|
+
notes: _contractspec_lib_schema140.EntityScalarField;
|
|
148
|
+
metadata: _contractspec_lib_schema140.EntityScalarField;
|
|
149
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
150
|
+
updatedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
151
|
+
job: _contractspec_lib_schema140.EntityRelationField;
|
|
152
|
+
payments: _contractspec_lib_schema140.EntityRelationField;
|
|
153
|
+
}> | _contractspec_lib_schema140.EntitySpec<{
|
|
154
|
+
id: _contractspec_lib_schema140.EntityScalarField;
|
|
155
|
+
invoiceId: _contractspec_lib_schema140.EntityScalarField;
|
|
156
|
+
amount: _contractspec_lib_schema140.EntityScalarField;
|
|
157
|
+
currency: _contractspec_lib_schema140.EntityScalarField;
|
|
158
|
+
method: _contractspec_lib_schema140.EntityEnumField;
|
|
159
|
+
reference: _contractspec_lib_schema140.EntityScalarField;
|
|
160
|
+
receivedAt: _contractspec_lib_schema140.EntityScalarField;
|
|
161
|
+
orgId: _contractspec_lib_schema140.EntityScalarField;
|
|
162
|
+
createdAt: _contractspec_lib_schema140.EntityScalarField;
|
|
163
|
+
invoice: _contractspec_lib_schema140.EntityRelationField;
|
|
164
|
+
}>)[];
|
|
165
|
+
declare const serviceBusinessSchemaContribution: ModuleSchemaContribution;
|
|
166
|
+
//#endregion
|
|
167
|
+
export { ClientEntity, InvoiceEntity, InvoiceStatusEnum, JobEntity, JobStatusEnum, PaymentEntity, PaymentMethodEnum, QuoteEntity, QuoteStatusEnum, serviceBusinessEntities, serviceBusinessSchemaContribution };
|
|
168
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/entities/index.ts"],"sourcesContent":[],"mappings":";;;;cAUa,iBAKX,2BAAA,CAL0B;cAOf,eAKX,2BAAA,CALwB;cAOb,mBAKX,2BAAA,CAL4B;AAdjB,cAqBA,iBAhBX,EAqBA,2BAAA,CAL4B,aAhB5B;AAEW,cAqBA,YAhBX,8BAgBuB,UAhBvB,CAAA;EAEW,EAAA,EA4CX,2BAAA,CAAA,iBAvCA;EAEW,IAAA,+CAKX;EAEW,YAAA,+CA8BX;EAAA,KAAA,+CAAA;;;;;;;;;;;cAEW,yCAAW;MA0CtB,2BAAA,CAAA;yDA1EuB;EAAA,KAAA,+CAAA;EAgCZ,WAAA,+CA0CX;EAAA,MAAA,+CAAA;;;;;;;;;;;;cAEW,uCAAS;MA8CpB,2BAAA,CAAA;;yDA1FsB;EAAA,KAAA,+CAAA;EA4CX,MAAA,6CA8CX;EAAA,WAAA,+CAAA;;;;;;;;;;;;cAEW,2CAAa;MAsCxB,2BAAA,CAAA;;;uDAtFoB;EAAA,QAAA,+CAAA;EAgDT,MAAA,6CAsCX;EAAA,OAAA,+CAAA;;;;;;;;;;;cAEW,2CAAa;MA4BxB,2BAAA,CAAA;;;;qDApEwB;EAAA,SAAA,+CAAA;EAwCb,UAAA,+CA4BX;EAAA,KAAA,+CAAA;;;;cAEW,sDAAuB;MAMnC,2BAAA,CAAA;;;;;yDApCyB;EAAA,KAAA,+CAAA;EA8Bb,OAAA,+CAMZ;EAAA,QAAA,+CAAA;;;;;;MANmC,2BAAA,CAAA;;;;;;;2DAAA;EAAA,KAAA,+CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAQvB,mCAAmC"}
|