@accounter/server 0.0.8-alpha-20251105180132-1c81096625a160ce926416f8206cb74fcf4f769f → 0.0.8-alpha-20251105183654-b3147b83bfda6ce62d09073ce81342ceadf5160c
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/CHANGELOG.md +25 -15
- package/dist/green-invoice-graphql/src/mesh-artifacts/index.js +2 -2
- package/dist/green-invoice-graphql/src/mesh-artifacts/index.js.map +1 -1
- package/dist/server/src/__generated__/types.d.ts +39 -10
- package/dist/server/src/__generated__/types.js.map +1 -1
- package/dist/server/src/modules/financial-entities/__generated__/clients.types.d.ts +11 -4
- package/dist/server/src/modules/financial-entities/__generated__/types.d.ts +19 -7
- package/dist/server/src/modules/financial-entities/__generated__/types.js.map +1 -1
- package/dist/server/src/modules/financial-entities/helpers/clients.helper.d.ts +11 -0
- package/dist/server/src/modules/financial-entities/helpers/clients.helper.js +26 -0
- package/dist/server/src/modules/financial-entities/helpers/clients.helper.js.map +1 -0
- package/dist/server/src/modules/financial-entities/providers/businesses.provider.js +1 -1
- package/dist/server/src/modules/financial-entities/providers/clients.provider.js +18 -16
- package/dist/server/src/modules/financial-entities/providers/clients.provider.js.map +1 -1
- package/dist/server/src/modules/financial-entities/resolvers/clients.resolvers.js +26 -24
- package/dist/server/src/modules/financial-entities/resolvers/clients.resolvers.js.map +1 -1
- package/dist/server/src/modules/financial-entities/typeDefs/clients.graphql.js +24 -8
- package/dist/server/src/modules/financial-entities/typeDefs/clients.graphql.js.map +1 -1
- package/dist/server/src/modules/green-invoice/__generated__/types.d.ts +8 -0
- package/dist/server/src/modules/green-invoice/__generated__/types.js.map +1 -1
- package/dist/server/src/modules/green-invoice/helpers/contract-to-draft.helper.d.ts +3 -1
- package/dist/server/src/modules/green-invoice/helpers/contract-to-draft.helper.js +5 -12
- package/dist/server/src/modules/green-invoice/helpers/contract-to-draft.helper.js.map +1 -1
- package/dist/server/src/modules/green-invoice/helpers/green-invoice-clients.helper.d.ts +1 -2
- package/dist/server/src/modules/green-invoice/helpers/green-invoice-clients.helper.js +17 -31
- package/dist/server/src/modules/green-invoice/helpers/green-invoice-clients.helper.js.map +1 -1
- package/dist/server/src/modules/green-invoice/helpers/green-invoice.helper.d.ts +2 -2
- package/dist/server/src/modules/green-invoice/helpers/green-invoice.helper.js +16 -14
- package/dist/server/src/modules/green-invoice/helpers/green-invoice.helper.js.map +1 -1
- package/dist/server/src/modules/green-invoice/resolvers/green-invoice.resolvers.js +89 -28
- package/dist/server/src/modules/green-invoice/resolvers/green-invoice.resolvers.js.map +1 -1
- package/dist/server/src/modules/green-invoice/typeDefs/green-invoice.graphql.js +4 -0
- package/dist/server/src/modules/green-invoice/typeDefs/green-invoice.graphql.js.map +1 -1
- package/package.json +6 -6
- package/src/__generated__/types.ts +42 -10
- package/src/modules/financial-entities/__generated__/clients.types.ts +10 -4
- package/src/modules/financial-entities/__generated__/types.ts +19 -7
- package/src/modules/financial-entities/helpers/clients.helper.ts +28 -0
- package/src/modules/financial-entities/providers/businesses.provider.ts +1 -1
- package/src/modules/financial-entities/providers/clients.provider.ts +19 -16
- package/src/modules/financial-entities/resolvers/clients.resolvers.ts +30 -27
- package/src/modules/financial-entities/typeDefs/clients.graphql.ts +24 -8
- package/src/modules/green-invoice/__generated__/types.ts +8 -0
- package/src/modules/green-invoice/helpers/contract-to-draft.helper.ts +7 -13
- package/src/modules/green-invoice/helpers/green-invoice-clients.helper.ts +19 -40
- package/src/modules/green-invoice/helpers/green-invoice.helper.ts +17 -18
- package/src/modules/green-invoice/resolvers/green-invoice.resolvers.ts +99 -34
- package/src/modules/green-invoice/typeDefs/green-invoice.graphql.ts +4 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { GraphQLError } from 'graphql';
|
|
2
|
-
import { GreenInvoiceClientProvider } from '../../app-providers/green-invoice-client.js';
|
|
3
2
|
import { BusinessesProvider } from '../../financial-entities/providers/businesses.provider.js';
|
|
4
3
|
import { addGreenInvoiceClient, updateGreenInvoiceClient, } from '../../green-invoice/helpers/green-invoice-clients.helper.js';
|
|
4
|
+
import { validateClientIntegrations } from '../helpers/clients.helper.js';
|
|
5
5
|
import { ClientsProvider } from '../providers/clients.provider.js';
|
|
6
6
|
export const clientsResolvers = {
|
|
7
7
|
Query: {
|
|
@@ -33,12 +33,25 @@ export const clientsResolvers = {
|
|
|
33
33
|
},
|
|
34
34
|
Mutation: {
|
|
35
35
|
updateClient: async (_, { businessId, fields }, { injector }) => {
|
|
36
|
+
let updatedIntegrations = fields.integrations ?? undefined;
|
|
37
|
+
if (updatedIntegrations) {
|
|
38
|
+
const currentClient = await injector
|
|
39
|
+
.get(ClientsProvider)
|
|
40
|
+
.getClientByIdLoader.load(businessId);
|
|
41
|
+
if (!currentClient) {
|
|
42
|
+
throw new GraphQLError(`Client with ID="${businessId}" not found`);
|
|
43
|
+
}
|
|
44
|
+
const currentIntegrations = validateClientIntegrations(currentClient.integrations);
|
|
45
|
+
updatedIntegrations = {
|
|
46
|
+
...currentIntegrations,
|
|
47
|
+
...updatedIntegrations,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
36
50
|
const adjustedFields = {
|
|
37
51
|
businessId,
|
|
38
52
|
emails: fields.emails ? [...fields.emails] : undefined,
|
|
39
|
-
greenInvoiceId: fields.greenInvoiceId,
|
|
40
|
-
hiveId: fields.hiveId,
|
|
41
53
|
newBusinessId: fields.newBusinessId,
|
|
54
|
+
integrations: updatedIntegrations,
|
|
42
55
|
};
|
|
43
56
|
try {
|
|
44
57
|
const [updatedClient] = await injector
|
|
@@ -68,8 +81,7 @@ export const clientsResolvers = {
|
|
|
68
81
|
const newClient = {
|
|
69
82
|
businessId: fields.businessId,
|
|
70
83
|
emails: fields.emails ? [...fields.emails] : [],
|
|
71
|
-
|
|
72
|
-
hiveId: fields.hiveId,
|
|
84
|
+
integrations: fields.integrations,
|
|
73
85
|
};
|
|
74
86
|
const [insertClient] = await injector.get(ClientsProvider).insertClient(newClient);
|
|
75
87
|
if (!insertClient) {
|
|
@@ -99,26 +111,16 @@ export const clientsResolvers = {
|
|
|
99
111
|
}
|
|
100
112
|
return businessMatch;
|
|
101
113
|
},
|
|
102
|
-
greenInvoiceId: business => business.green_invoice_id,
|
|
103
|
-
hiveId: business => business.hive_id,
|
|
104
114
|
emails: business => business.emails ?? [],
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
const emails = client.emails ? client.emails.filter(Boolean) : [];
|
|
116
|
-
return {
|
|
117
|
-
...client,
|
|
118
|
-
emails,
|
|
119
|
-
id: business.green_invoice_id,
|
|
120
|
-
};
|
|
121
|
-
},
|
|
115
|
+
integrations: business => business,
|
|
116
|
+
},
|
|
117
|
+
ClientIntegrations: {
|
|
118
|
+
id: business => `${business.business_id}-integrations`,
|
|
119
|
+
hiveId: business => validateClientIntegrations(business.integrations).hiveId ?? null,
|
|
120
|
+
linearId: business => validateClientIntegrations(business.integrations).linearId ?? null,
|
|
121
|
+
slackChannelKey: business => validateClientIntegrations(business.integrations).slackChannelKey ?? null,
|
|
122
|
+
notionId: business => validateClientIntegrations(business.integrations).notionId ?? null,
|
|
123
|
+
workflowyUrl: business => validateClientIntegrations(business.integrations).workflowyUrl ?? null,
|
|
122
124
|
},
|
|
123
125
|
LtdFinancialEntity: {
|
|
124
126
|
clientInfo: async (business, _, { injector }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.resolvers.js","sourceRoot":"","sources":["../../../../../../src/modules/financial-entities/resolvers/clients.resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"clients.resolvers.js","sourceRoot":"","sources":["../../../../../../src/modules/financial-entities/resolvers/clients.resolvers.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,29 +15,45 @@ export default gql `
|
|
|
15
15
|
type Client {
|
|
16
16
|
id: UUID!
|
|
17
17
|
originalBusiness: LtdFinancialEntity!
|
|
18
|
-
greenInvoiceId: UUID
|
|
19
|
-
hiveId: String
|
|
20
18
|
emails: [String!]!
|
|
21
19
|
generatedDocumentType: DocumentType!
|
|
22
|
-
|
|
20
|
+
integrations: ClientIntegrations!
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
" integrations associated with a client "
|
|
24
|
+
type ClientIntegrations {
|
|
25
|
+
id: ID!
|
|
26
|
+
hiveId: String
|
|
27
|
+
linearId: String
|
|
28
|
+
slackChannelKey: String
|
|
29
|
+
notionId: String
|
|
30
|
+
workflowyUrl: String
|
|
23
31
|
}
|
|
24
32
|
|
|
25
33
|
" fields for inserting a new client "
|
|
26
34
|
input ClientInsertInput {
|
|
27
35
|
businessId: UUID!
|
|
28
|
-
greenInvoiceId: UUID
|
|
29
|
-
hiveId: String
|
|
30
36
|
emails: [String!]
|
|
31
37
|
generatedDocumentType: DocumentType!
|
|
38
|
+
integrations: ClientIntegrationsInput
|
|
32
39
|
}
|
|
33
40
|
|
|
34
41
|
" fields for updating an existing client "
|
|
35
42
|
input ClientUpdateInput {
|
|
36
|
-
|
|
37
|
-
hiveId: String
|
|
43
|
+
newBusinessId: UUID
|
|
38
44
|
emails: [String!]
|
|
39
45
|
generatedDocumentType: DocumentType
|
|
40
|
-
|
|
46
|
+
integrations: ClientIntegrationsInput
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
" integrations input for client insert/update "
|
|
50
|
+
input ClientIntegrationsInput {
|
|
51
|
+
greenInvoiceId: UUID
|
|
52
|
+
hiveId: String
|
|
53
|
+
linearId: String
|
|
54
|
+
slackChannelKey: String
|
|
55
|
+
notionId: String
|
|
56
|
+
workflowyUrl: String
|
|
41
57
|
}
|
|
42
58
|
|
|
43
59
|
" result type for updateClient "
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.graphql.js","sourceRoot":"","sources":["../../../../../../src/modules/financial-entities/typeDefs/clients.graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,eAAe,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"clients.graphql.js","sourceRoot":"","sources":["../../../../../../src/modules/financial-entities/typeDefs/clients.graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DjB,CAAC"}
|
|
@@ -11,6 +11,7 @@ export declare namespace GreenInvoiceModule {
|
|
|
11
11
|
GreenInvoiceIncome: 'currency' | 'currencyRate' | 'description' | 'itemId' | 'price' | 'quantity' | 'vatRate' | 'vatType';
|
|
12
12
|
GreenInvoicePayment: 'currency' | 'currencyRate' | 'date' | 'price' | 'type' | 'subType' | 'bankName' | 'bankBranch' | 'bankAccount' | 'chequeNum' | 'accountId' | 'transactionId' | 'appType' | 'cardType' | 'cardNum' | 'dealType' | 'numPayments' | 'firstPayment';
|
|
13
13
|
IssuedDocumentInfo: 'originalDocument';
|
|
14
|
+
ClientIntegrations: 'greenInvoiceInfo';
|
|
14
15
|
}
|
|
15
16
|
interface DefinedEnumValues {
|
|
16
17
|
GreenInvoiceDocumentLang: 'ENGLISH' | 'HEBREW';
|
|
@@ -43,6 +44,7 @@ export declare namespace GreenInvoiceModule {
|
|
|
43
44
|
export type FileScalar = Types.FileScalar;
|
|
44
45
|
export type Charge = Types.Charge;
|
|
45
46
|
export type IssuedDocumentInfo = Types.IssuedDocumentInfo;
|
|
47
|
+
export type ClientIntegrations = Types.ClientIntegrations;
|
|
46
48
|
export type DocumentType = Types.DocumentType;
|
|
47
49
|
export type GreenInvoiceDocumentLang = DefinedEnumValues['GreenInvoiceDocumentLang'];
|
|
48
50
|
export type Currency = Types.Currency;
|
|
@@ -71,6 +73,7 @@ export declare namespace GreenInvoiceModule {
|
|
|
71
73
|
export type GreenInvoiceIncomeResolvers = Pick<Types.GreenInvoiceIncomeResolvers, DefinedFields['GreenInvoiceIncome']>;
|
|
72
74
|
export type GreenInvoicePaymentResolvers = Pick<Types.GreenInvoicePaymentResolvers, DefinedFields['GreenInvoicePayment']>;
|
|
73
75
|
export type IssuedDocumentInfoResolvers = Pick<Types.IssuedDocumentInfoResolvers, DefinedFields['IssuedDocumentInfo']>;
|
|
76
|
+
export type ClientIntegrationsResolvers = Pick<Types.ClientIntegrationsResolvers, DefinedFields['ClientIntegrations']>;
|
|
74
77
|
export interface Resolvers {
|
|
75
78
|
Query?: QueryResolvers;
|
|
76
79
|
Mutation?: MutationResolvers;
|
|
@@ -81,6 +84,7 @@ export declare namespace GreenInvoiceModule {
|
|
|
81
84
|
GreenInvoiceIncome?: GreenInvoiceIncomeResolvers;
|
|
82
85
|
GreenInvoicePayment?: GreenInvoicePaymentResolvers;
|
|
83
86
|
IssuedDocumentInfo?: IssuedDocumentInfoResolvers;
|
|
87
|
+
ClientIntegrations?: ClientIntegrationsResolvers;
|
|
84
88
|
}
|
|
85
89
|
export interface MiddlewareMap {
|
|
86
90
|
'*'?: {
|
|
@@ -106,6 +110,10 @@ export declare namespace GreenInvoiceModule {
|
|
|
106
110
|
'*'?: gm.Middleware[];
|
|
107
111
|
originalDocument?: gm.Middleware[];
|
|
108
112
|
};
|
|
113
|
+
ClientIntegrations?: {
|
|
114
|
+
'*'?: gm.Middleware[];
|
|
115
|
+
greenInvoiceInfo?: gm.Middleware[];
|
|
116
|
+
};
|
|
109
117
|
GenerateMonthlyClientDocumentsResult?: {
|
|
110
118
|
'*'?: gm.Middleware[];
|
|
111
119
|
success?: gm.Middleware[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/modules/green-invoice/__generated__/types.ts"],"names":[],"mappings":"AAEA,MAAM,KAAW,kBAAkB,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/modules/green-invoice/__generated__/types.ts"],"names":[],"mappings":"AAEA,MAAM,KAAW,kBAAkB,CAyMlC;AAzMD,WAAiB,kBAAkB;IAYhC,CAAC;IAaD,CAAC;IAQD,CAAC;IAyDD,CAAC;IA8GD,CAAC;AACJ,CAAC,EAzMgB,kBAAkB,KAAlB,kBAAkB,QAyMlC"}
|
|
@@ -2,4 +2,6 @@ import { Injector } from 'graphql-modules';
|
|
|
2
2
|
import type { IGetContractsByIdsResult } from '../../contracts/types.js';
|
|
3
3
|
import { NewDocumentInfo } from '../../../__generated__/types.js';
|
|
4
4
|
import { TimelessDateString } from '../../../shared/types/index.js';
|
|
5
|
-
export declare const convertContractToDraft: (contract: IGetContractsByIdsResult, injector: Injector, issueMonth: TimelessDateString) => Promise<NewDocumentInfo
|
|
5
|
+
export declare const convertContractToDraft: (contract: IGetContractsByIdsResult, injector: Injector, issueMonth: TimelessDateString) => Promise<Omit<NewDocumentInfo, "client"> & {
|
|
6
|
+
client: string | undefined;
|
|
7
|
+
}>;
|
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
import { addMonths, endOfMonth, format, startOfMonth, subMonths } from 'date-fns';
|
|
2
2
|
import { GraphQLError } from 'graphql';
|
|
3
3
|
import { normalizeDocumentType } from '../../documents/resolvers/common.js';
|
|
4
|
+
import { validateClientIntegrations } from '../../financial-entities/helpers/clients.helper.js';
|
|
4
5
|
import { BusinessesProvider } from '../../financial-entities/providers/businesses.provider.js';
|
|
5
6
|
import { ClientsProvider } from '../../financial-entities/providers/clients.provider.js';
|
|
6
7
|
import { dateToTimelessDateString } from '../../../shared/helpers/index.js';
|
|
7
|
-
import { getClientFromGreenInvoiceClient } from './green-invoice-clients.helper.js';
|
|
8
8
|
export const convertContractToDraft = async (contract, injector, issueMonth) => {
|
|
9
9
|
const businessPromise = injector
|
|
10
10
|
.get(BusinessesProvider)
|
|
11
11
|
.getBusinessByIdLoader.load(contract.client_id);
|
|
12
12
|
const clientPromise = injector.get(ClientsProvider).getClientByIdLoader.load(contract.client_id);
|
|
13
|
-
const
|
|
14
|
-
const [business, client, greenInvoiceClient] = await Promise.all([
|
|
15
|
-
businessPromise,
|
|
16
|
-
clientPromise,
|
|
17
|
-
greenInvoiceClientPromise,
|
|
18
|
-
]);
|
|
13
|
+
const [business, client] = await Promise.all([businessPromise, clientPromise]);
|
|
19
14
|
if (!business) {
|
|
20
15
|
throw new GraphQLError(`Business ID="${contract.client_id}" not found`);
|
|
21
16
|
}
|
|
22
17
|
if (!client) {
|
|
23
18
|
throw new GraphQLError(`Client not found for business ID="${contract.client_id}"`);
|
|
24
19
|
}
|
|
25
|
-
|
|
20
|
+
const greenInvoiceId = validateClientIntegrations(client.integrations)?.greenInvoiceId;
|
|
21
|
+
if (!greenInvoiceId) {
|
|
26
22
|
throw new GraphQLError(`Green invoice match not found for business ID="${contract.client_id}"`);
|
|
27
23
|
}
|
|
28
24
|
const today = issueMonth ? addMonths(new Date(issueMonth), 1) : new Date();
|
|
@@ -41,10 +37,7 @@ export const convertContractToDraft = async (contract, injector, issueMonth) =>
|
|
|
41
37
|
vatType: 'EXEMPT',
|
|
42
38
|
rounding: false,
|
|
43
39
|
signed: true,
|
|
44
|
-
client:
|
|
45
|
-
...greenInvoiceClient,
|
|
46
|
-
emails: [...(client.emails?.filter(Boolean) ?? [])],
|
|
47
|
-
},
|
|
40
|
+
client: greenInvoiceId,
|
|
48
41
|
income: [
|
|
49
42
|
{
|
|
50
43
|
description: `GraphQL Hive Enterprise License - ${month} ${year}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-to-draft.helper.js","sourceRoot":"","sources":["../../../../../../src/modules/green-invoice/helpers/contract-to-draft.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"contract-to-draft.helper.js","sourceRoot":"","sources":["../../../../../../src/modules/green-invoice/helpers/contract-to-draft.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Injector } from 'graphql-modules';
|
|
2
|
-
import { ClientUpdateInput,
|
|
3
|
-
export declare function getClientFromGreenInvoiceClient(injector: Injector, businessId: string, useGreenInvoiceId?: boolean): Promise<GreenInvoiceClient | undefined>;
|
|
2
|
+
import { ClientUpdateInput, UpdateBusinessInput } from '../../../__generated__/types.js';
|
|
4
3
|
export declare function addGreenInvoiceClient(clientId: string, injector: Injector): Promise<void>;
|
|
5
4
|
export declare function updateGreenInvoiceClient(clientId: string, injector: Injector, businessFields?: UpdateBusinessInput, clientFields?: ClientUpdateInput): Promise<void>;
|
|
@@ -1,35 +1,8 @@
|
|
|
1
1
|
import { GreenInvoiceClientProvider } from '../../app-providers/green-invoice-client.js';
|
|
2
|
+
import { validateClientIntegrations } from '../../financial-entities/helpers/clients.helper.js';
|
|
2
3
|
import { BusinessesProvider } from '../../financial-entities/providers/businesses.provider.js';
|
|
3
4
|
import { ClientsProvider } from '../../financial-entities/providers/clients.provider.js';
|
|
4
5
|
import { countryCodeToGreenInvoiceCountry } from './green-invoice.helper.js';
|
|
5
|
-
export async function getClientFromGreenInvoiceClient(injector, businessId, useGreenInvoiceId = false) {
|
|
6
|
-
const client = await injector.get(ClientsProvider).getClientByIdLoader.load(businessId);
|
|
7
|
-
if (!client?.green_invoice_id) {
|
|
8
|
-
return useGreenInvoiceId ? undefined : { id: businessId };
|
|
9
|
-
}
|
|
10
|
-
const greenInvoiceClient = await injector
|
|
11
|
-
.get(GreenInvoiceClientProvider)
|
|
12
|
-
.clientLoader.load(client.green_invoice_id);
|
|
13
|
-
if (!greenInvoiceClient) {
|
|
14
|
-
return useGreenInvoiceId ? undefined : { id: businessId };
|
|
15
|
-
}
|
|
16
|
-
return {
|
|
17
|
-
id: useGreenInvoiceId && greenInvoiceClient.id ? greenInvoiceClient.id : businessId,
|
|
18
|
-
country: greenInvoiceClient.country,
|
|
19
|
-
emails: [
|
|
20
|
-
...(greenInvoiceClient.emails?.filter(Boolean) ?? []),
|
|
21
|
-
'ap@the-guild.dev',
|
|
22
|
-
],
|
|
23
|
-
name: greenInvoiceClient.name,
|
|
24
|
-
phone: greenInvoiceClient.phone,
|
|
25
|
-
taxId: greenInvoiceClient.taxId,
|
|
26
|
-
address: greenInvoiceClient.address,
|
|
27
|
-
city: greenInvoiceClient.city,
|
|
28
|
-
zip: greenInvoiceClient.zip,
|
|
29
|
-
fax: greenInvoiceClient.fax,
|
|
30
|
-
mobile: greenInvoiceClient.mobile,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
6
|
function convertLocalClientToGreenInvoiceCreateClientInput(localClient, localBusiness) {
|
|
34
7
|
return {
|
|
35
8
|
/** Phone number */
|
|
@@ -103,10 +76,14 @@ export async function addGreenInvoiceClient(clientId, injector) {
|
|
|
103
76
|
if (!greenInvoiceClient?.id) {
|
|
104
77
|
throw new Error('Failed to create Green Invoice client');
|
|
105
78
|
}
|
|
79
|
+
const integrations = validateClientIntegrations(localClient.integrations);
|
|
106
80
|
// add green invoice id to local client
|
|
107
81
|
await injector.get(ClientsProvider).updateClient({
|
|
108
82
|
businessId: clientId,
|
|
109
|
-
|
|
83
|
+
integrations: {
|
|
84
|
+
...integrations,
|
|
85
|
+
greenInvoiceId: greenInvoiceClient.id,
|
|
86
|
+
},
|
|
110
87
|
});
|
|
111
88
|
}
|
|
112
89
|
catch (error) {
|
|
@@ -175,7 +152,16 @@ export async function updateGreenInvoiceClient(clientId, injector, businessField
|
|
|
175
152
|
localBusinessPromise,
|
|
176
153
|
localClientPromise,
|
|
177
154
|
]);
|
|
178
|
-
|
|
155
|
+
let greenInvoiceId = undefined;
|
|
156
|
+
try {
|
|
157
|
+
greenInvoiceId =
|
|
158
|
+
validateClientIntegrations(localClient?.integrations ?? {}).greenInvoiceId ?? undefined;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
// swallow errors
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (!localBusiness?.name || !greenInvoiceId) {
|
|
179
165
|
// We cannot update a client in Green Invoice without its ID.
|
|
180
166
|
console.warn(`Cannot update Green Invoice client: missing local business name or client ID for business${clientId}`);
|
|
181
167
|
return;
|
|
@@ -185,7 +171,7 @@ export async function updateGreenInvoiceClient(clientId, injector, businessField
|
|
|
185
171
|
return;
|
|
186
172
|
}
|
|
187
173
|
const greenInvoiceClient = await injector.get(GreenInvoiceClientProvider).updateClient({
|
|
188
|
-
id:
|
|
174
|
+
id: greenInvoiceId,
|
|
189
175
|
input: fieldsToUpdate,
|
|
190
176
|
});
|
|
191
177
|
if (!greenInvoiceClient?.id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"green-invoice-clients.helper.js","sourceRoot":"","sources":["../../../../../../src/modules/green-invoice/helpers/green-invoice-clients.helper.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAE5F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"green-invoice-clients.helper.js","sourceRoot":"","sources":["../../../../../../src/modules/green-invoice/helpers/green-invoice-clients.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { Injector } from 'graphql-modules';
|
|
|
2
2
|
import type { _DOLLAR_defs_Document, _DOLLAR_defs_DocumentInputNew_Input, _DOLLAR_defs_DocumentLang, _DOLLAR_defs_ExpenseDocumentType, _DOLLAR_defs_VatType, _DOLLAR_defs_Currency as GreenInvoiceCurrency, _DOLLAR_defs_DocumentType as GreenInvoiceDocumentType, query_getDocument_payment_items_appType, query_getDocument_payment_items_cardType, query_getDocument_payment_items_dealType, query_getDocument_payment_items_subType, query_getDocument_payment_items_type, queryInput_previewDocument_input_discount_type, queryInput_previewDocument_input_linkType } from '../../../../../green-invoice-graphql/src/index.js';
|
|
3
3
|
import { CountryCode } from '../../countries/types.js';
|
|
4
4
|
import type { document_status } from '../../documents/types';
|
|
5
|
-
import { Currency, DocumentType, GreenInvoiceCountry, GreenInvoicePaymentType,
|
|
5
|
+
import { Currency, DocumentType, GreenInvoiceCountry, GreenInvoicePaymentType, NewDocumentInput, ResolversTypes, type GreenInvoiceDiscountType, type GreenInvoiceDocumentLang, type GreenInvoiceLinkType, type GreenInvoicePaymentAppType, type GreenInvoicePaymentCardType, type GreenInvoicePaymentDealType, type GreenInvoicePaymentSubType, type GreenInvoiceVatType } from '../../../__generated__/types.js';
|
|
6
6
|
export declare function normalizeDocumentType(rawType?: GreenInvoiceDocumentType | _DOLLAR_defs_ExpenseDocumentType | number | null): DocumentType;
|
|
7
7
|
export declare function getGreenInvoiceDocumentType(documentType: DocumentType): GreenInvoiceDocumentType;
|
|
8
8
|
export declare function getTypeFromGreenInvoiceDocument(documentType: GreenInvoiceDocumentType): DocumentType;
|
|
@@ -31,4 +31,4 @@ export declare function getLinkedDocuments(injector: Injector, externalDocumentI
|
|
|
31
31
|
export declare function insertNewDocumentFromGreenInvoice(injector: Injector, greenInvoiceDoc: _DOLLAR_defs_Document, ownerId: string, preDictatedChargeId?: string | null): Promise<import("../../documents/types").IInsertDocumentsResult>;
|
|
32
32
|
export declare function getGreenInvoiceDocuments(injector: Injector, recursive?: boolean): Promise<_DOLLAR_defs_Document[]>;
|
|
33
33
|
export declare function convertDocumentInputIntoGreenInvoiceInput(initialInput: NewDocumentInput, injector: Injector): Promise<_DOLLAR_defs_DocumentInputNew_Input>;
|
|
34
|
-
export declare function convertGreenInvoiceDocumentToLocalDocumentInfo(greenInvoiceDocument: _DOLLAR_defs_Document): NewDocumentInfo;
|
|
34
|
+
export declare function convertGreenInvoiceDocumentToLocalDocumentInfo(greenInvoiceDocument: _DOLLAR_defs_Document): ResolversTypes['NewDocumentInfo'];
|
|
@@ -5,6 +5,7 @@ import { ChargesProvider } from '../../charges/providers/charges.provider.js';
|
|
|
5
5
|
import { CountryCode } from '../../countries/types.js';
|
|
6
6
|
import { DocumentsProvider } from '../../documents/providers/documents.provider.js';
|
|
7
7
|
import { IssuedDocumentsProvider } from '../../documents/providers/issued-documents.provider.js';
|
|
8
|
+
import { validateClientIntegrations } from '../../financial-entities/helpers/clients.helper.js';
|
|
8
9
|
import { ClientsProvider } from '../../financial-entities/providers/clients.provider.js';
|
|
9
10
|
import { Currency, DocumentType, } from '../../../__generated__/types.js';
|
|
10
11
|
import { formatCurrency, hashStringToInt } from '../../../shared/helpers/index.js';
|
|
@@ -1100,16 +1101,25 @@ export async function convertDocumentInputIntoGreenInvoiceInput(initialInput, in
|
|
|
1100
1101
|
if (!clientInfo) {
|
|
1101
1102
|
throw new GraphQLError(`Client with ID ${initialInput.client.id} not found`);
|
|
1102
1103
|
}
|
|
1103
|
-
|
|
1104
|
+
let greenInvoiceId = null;
|
|
1105
|
+
try {
|
|
1106
|
+
greenInvoiceId =
|
|
1107
|
+
validateClientIntegrations(clientInfo.integrations ?? {}).greenInvoiceId ?? null;
|
|
1108
|
+
}
|
|
1109
|
+
catch (error) {
|
|
1110
|
+
console.error('Failed to validate client integrations', error);
|
|
1111
|
+
throw new GraphQLError(`Client with ID ${initialInput.client.id} has invalid integrations`);
|
|
1112
|
+
}
|
|
1113
|
+
if (!greenInvoiceId) {
|
|
1104
1114
|
throw new GraphQLError(`Client with ID ${initialInput.client.id} not found in Green Invoice`);
|
|
1105
1115
|
}
|
|
1106
1116
|
const greenInvoiceClient = await injector
|
|
1107
1117
|
.get(GreenInvoiceClientProvider)
|
|
1108
|
-
.clientLoader.load(
|
|
1118
|
+
.clientLoader.load(greenInvoiceId);
|
|
1109
1119
|
if (!greenInvoiceClient) {
|
|
1110
|
-
throw new GraphQLError(`Green Invoice client with ID ${
|
|
1120
|
+
throw new GraphQLError(`Green Invoice client with ID ${greenInvoiceId} not found`);
|
|
1111
1121
|
}
|
|
1112
|
-
const emails = ['ap@the-guild.dev'];
|
|
1122
|
+
const emails = ['ap@the-guild.dev']; // TODO: remove hardcoded email
|
|
1113
1123
|
const inputEmails = initialInput.client?.emails?.filter(Boolean) ?? [];
|
|
1114
1124
|
if (inputEmails.length) {
|
|
1115
1125
|
emails.push(...inputEmails);
|
|
@@ -1118,7 +1128,7 @@ export async function convertDocumentInputIntoGreenInvoiceInput(initialInput, in
|
|
|
1118
1128
|
emails.push(...(greenInvoiceClient.emails ?? []));
|
|
1119
1129
|
}
|
|
1120
1130
|
client = {
|
|
1121
|
-
id:
|
|
1131
|
+
id: greenInvoiceClient.id,
|
|
1122
1132
|
country: greenInvoiceClient.country,
|
|
1123
1133
|
name: greenInvoiceClient.name,
|
|
1124
1134
|
phone: greenInvoiceClient.phone,
|
|
@@ -1174,15 +1184,7 @@ export async function convertDocumentInputIntoGreenInvoiceInput(initialInput, in
|
|
|
1174
1184
|
export function convertGreenInvoiceDocumentToLocalDocumentInfo(greenInvoiceDocument) {
|
|
1175
1185
|
return {
|
|
1176
1186
|
...greenInvoiceDocument,
|
|
1177
|
-
client: greenInvoiceDocument.client?.id
|
|
1178
|
-
? {
|
|
1179
|
-
...greenInvoiceDocument.client,
|
|
1180
|
-
id: greenInvoiceDocument.client.id,
|
|
1181
|
-
emails: greenInvoiceDocument.client.emails
|
|
1182
|
-
? greenInvoiceDocument.client.emails.filter(Boolean)
|
|
1183
|
-
: [],
|
|
1184
|
-
}
|
|
1185
|
-
: undefined,
|
|
1187
|
+
client: greenInvoiceDocument.client?.id,
|
|
1186
1188
|
currency: greenInvoiceDocument.currency,
|
|
1187
1189
|
income: greenInvoiceDocument.income?.filter(Boolean).map(income => ({
|
|
1188
1190
|
...income,
|