@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.
Files changed (48) hide show
  1. package/CHANGELOG.md +25 -15
  2. package/dist/green-invoice-graphql/src/mesh-artifacts/index.js +2 -2
  3. package/dist/green-invoice-graphql/src/mesh-artifacts/index.js.map +1 -1
  4. package/dist/server/src/__generated__/types.d.ts +39 -10
  5. package/dist/server/src/__generated__/types.js.map +1 -1
  6. package/dist/server/src/modules/financial-entities/__generated__/clients.types.d.ts +11 -4
  7. package/dist/server/src/modules/financial-entities/__generated__/types.d.ts +19 -7
  8. package/dist/server/src/modules/financial-entities/__generated__/types.js.map +1 -1
  9. package/dist/server/src/modules/financial-entities/helpers/clients.helper.d.ts +11 -0
  10. package/dist/server/src/modules/financial-entities/helpers/clients.helper.js +26 -0
  11. package/dist/server/src/modules/financial-entities/helpers/clients.helper.js.map +1 -0
  12. package/dist/server/src/modules/financial-entities/providers/businesses.provider.js +1 -1
  13. package/dist/server/src/modules/financial-entities/providers/clients.provider.js +18 -16
  14. package/dist/server/src/modules/financial-entities/providers/clients.provider.js.map +1 -1
  15. package/dist/server/src/modules/financial-entities/resolvers/clients.resolvers.js +26 -24
  16. package/dist/server/src/modules/financial-entities/resolvers/clients.resolvers.js.map +1 -1
  17. package/dist/server/src/modules/financial-entities/typeDefs/clients.graphql.js +24 -8
  18. package/dist/server/src/modules/financial-entities/typeDefs/clients.graphql.js.map +1 -1
  19. package/dist/server/src/modules/green-invoice/__generated__/types.d.ts +8 -0
  20. package/dist/server/src/modules/green-invoice/__generated__/types.js.map +1 -1
  21. package/dist/server/src/modules/green-invoice/helpers/contract-to-draft.helper.d.ts +3 -1
  22. package/dist/server/src/modules/green-invoice/helpers/contract-to-draft.helper.js +5 -12
  23. package/dist/server/src/modules/green-invoice/helpers/contract-to-draft.helper.js.map +1 -1
  24. package/dist/server/src/modules/green-invoice/helpers/green-invoice-clients.helper.d.ts +1 -2
  25. package/dist/server/src/modules/green-invoice/helpers/green-invoice-clients.helper.js +17 -31
  26. package/dist/server/src/modules/green-invoice/helpers/green-invoice-clients.helper.js.map +1 -1
  27. package/dist/server/src/modules/green-invoice/helpers/green-invoice.helper.d.ts +2 -2
  28. package/dist/server/src/modules/green-invoice/helpers/green-invoice.helper.js +16 -14
  29. package/dist/server/src/modules/green-invoice/helpers/green-invoice.helper.js.map +1 -1
  30. package/dist/server/src/modules/green-invoice/resolvers/green-invoice.resolvers.js +89 -28
  31. package/dist/server/src/modules/green-invoice/resolvers/green-invoice.resolvers.js.map +1 -1
  32. package/dist/server/src/modules/green-invoice/typeDefs/green-invoice.graphql.js +4 -0
  33. package/dist/server/src/modules/green-invoice/typeDefs/green-invoice.graphql.js.map +1 -1
  34. package/package.json +6 -6
  35. package/src/__generated__/types.ts +42 -10
  36. package/src/modules/financial-entities/__generated__/clients.types.ts +10 -4
  37. package/src/modules/financial-entities/__generated__/types.ts +19 -7
  38. package/src/modules/financial-entities/helpers/clients.helper.ts +28 -0
  39. package/src/modules/financial-entities/providers/businesses.provider.ts +1 -1
  40. package/src/modules/financial-entities/providers/clients.provider.ts +19 -16
  41. package/src/modules/financial-entities/resolvers/clients.resolvers.ts +30 -27
  42. package/src/modules/financial-entities/typeDefs/clients.graphql.ts +24 -8
  43. package/src/modules/green-invoice/__generated__/types.ts +8 -0
  44. package/src/modules/green-invoice/helpers/contract-to-draft.helper.ts +7 -13
  45. package/src/modules/green-invoice/helpers/green-invoice-clients.helper.ts +19 -40
  46. package/src/modules/green-invoice/helpers/green-invoice.helper.ts +17 -18
  47. package/src/modules/green-invoice/resolvers/green-invoice.resolvers.ts +99 -34
  48. 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
- greenInvoiceId: fields.greenInvoiceId,
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
- greenInvoiceInfo: async (business, _, { injector }) => {
106
- if (!business.green_invoice_id) {
107
- return null;
108
- }
109
- const client = await injector
110
- .get(GreenInvoiceClientProvider)
111
- .clientLoader.load(business.green_invoice_id);
112
- if (!client) {
113
- throw new GraphQLError(`Green Invoice client with ID "${business.green_invoice_id}" not found`);
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":"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"}
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
- greenInvoiceInfo: GreenInvoiceClient
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
- greenInvoiceId: UUID
37
- hiveId: String
43
+ newBusinessId: UUID
38
44
  emails: [String!]
39
45
  generatedDocumentType: DocumentType
40
- newBusinessId: UUID
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CjB,CAAC"}
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,CAiMlC;AAjMD,WAAiB,kBAAkB;IAWhC,CAAC;IAaD,CAAC;IAQD,CAAC;IAsDD,CAAC;IA0GD,CAAC;AACJ,CAAC,EAjMgB,kBAAkB,KAAlB,kBAAkB,QAiMlC"}
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 greenInvoiceClientPromise = getClientFromGreenInvoiceClient(injector, contract.client_id);
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
- if (!greenInvoiceClient) {
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":"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"}
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, GreenInvoiceClient, UpdateBusinessInput } from '../../../__generated__/types.js';
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
- greenInvoiceId: greenInvoiceClient.id,
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
- if (!localBusiness?.name || !localClient?.green_invoice_id) {
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: localClient.green_invoice_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,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAM5F,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,QAAkB,EAClB,UAAkB,EAClB,iBAAiB,GAAG,KAAK;IAEzB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxF,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAC9B,OAAO,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,QAAQ;SACtC,GAAG,CAAC,0BAA0B,CAAC;SAC/B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE9C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO;QACL,EAAE,EAAE,iBAAiB,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACnF,OAAO,EAAE,kBAAkB,CAAC,OAAO;QACnC,MAAM,EAAE;YACN,GAAG,CAAE,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAc,IAAI,EAAE,CAAC;YACnE,kBAAkB;SACnB;QACD,IAAI,EAAE,kBAAkB,CAAC,IAAI;QAC7B,KAAK,EAAE,kBAAkB,CAAC,KAAK;QAC/B,KAAK,EAAE,kBAAkB,CAAC,KAAK;QAC/B,OAAO,EAAE,kBAAkB,CAAC,OAAO;QACnC,IAAI,EAAE,kBAAkB,CAAC,IAAI;QAC7B,GAAG,EAAE,kBAAkB,CAAC,GAAG;QAC3B,GAAG,EAAE,kBAAkB,CAAC,GAAG;QAC3B,MAAM,EAAE,kBAAkB,CAAC,MAAM;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,iDAAiD,CACxD,WAAmC,EACnC,aAAwC;IAExC,OAAO;QACL,mBAAmB;QACnB,KAAK,EAAE,aAAa,CAAC,YAAY;QACjC,oBAAoB;QACpB,uCAAuC;QACvC,sBAAsB;QACtB,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,iBAAiB;QACjB,iCAAiC;QACjC,0BAA0B;QAC1B,iDAAiD;QACjD,qBAAqB;QACrB,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,gBAAgB;QAChB,8BAA8B;QAC9B,sBAAsB;QACtB,iCAAiC;QACjC,OAAO,EAAE,gCAAgC,CAAC,aAAa,CAAC,OAAsB,CAAC;QAC/E,gBAAgB;QAChB,uCAAuC;QACvC,yBAAyB;QACzB,kDAAkD;QAClD,0BAA0B;QAC1B,oDAAoD;QACpD,sBAAsB;QACtB,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,4CAA4C;QAC5C,MAAM,EAAE,aAAa,CAAC,SAAS;QAC/B,wBAAwB;QACxB,gCAAgC;QAChC,6CAA6C;QAC7C,gCAAgC;QAChC,+FAA+F;QAC/F,4BAA4B;QAC5B,4BAA4B;QAC5B,wCAAwC;QACxC,gCAAgC;QAChC,aAAa,EAAE,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE;QAClD,6CAA6C;QAC7C,oCAAoC;QACpC,iDAAiD;QACjD,2CAA2C;QAC3C,kCAAkC;QAClC,kCAAkC;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB,EAAE,QAAkB;IAC9E,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,oBAAoB,GAAG,QAAQ;aAClC,GAAG,CAAC,kBAAkB,CAAC;aACvB,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5F,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrD,oBAAoB;YACpB,kBAAkB;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,mBAAmB;QACnB,MAAM,4BAA4B,GAAG,iDAAiD,CACpF,WAAW,EACX,aAAa,CACd,CAAC;QAEF,uBAAuB;QACvB,MAAM,kBAAkB,GAAG,MAAM,QAAQ;aACtC,GAAG,CAAC,0BAA0B,CAAC;aAC/B,YAAY,CAAC,4BAA4B,CAAC,CAAC;QAE9C,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,uCAAuC;QACvC,MAAM,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC;YAC/C,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,kBAAkB,CAAC,EAAE;SACtC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,mCAAmC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,cAAkE,EAClE,YAA+B;IAE/B,MAAM,cAAc,GAA2C;QAC7D,mBAAmB;QACnB,KAAK,EAAE,cAAc,CAAC,WAAW;QACjC,oBAAoB;QACpB,wCAAwC;QACxC,sBAAsB;QACtB,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAClE,iBAAiB;QACjB,kCAAkC;QAClC,0BAA0B;QAC1B,kDAAkD;QAClD,qBAAqB;QACrB,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,SAAS;QAC5C,gBAAgB;QAChB,+BAA+B;QAC/B,sBAAsB;QACtB,kCAAkC;QAClC,OAAO,EAAE,cAAc,CAAC,OAAO;YAC7B,CAAC,CAAC,gCAAgC,CAAC,cAAc,CAAC,OAAsB,CAAC;YACzE,CAAC,CAAC,SAAS;QACb,gBAAgB;QAChB,wCAAwC;QACxC,yBAAyB;QACzB,mDAAmD;QACnD,0BAA0B;QAC1B,qDAAqD;QACrD,sBAAsB;QACtB,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,SAAS;QACtC,4CAA4C;QAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ;QAC/B,wBAAwB;QACxB,iCAAiC;QACjC,8CAA8C;QAC9C,iCAAiC;QACjC,+FAA+F;QAC/F,6BAA6B;QAC7B,4BAA4B;QAC5B,yCAAyC;QACzC,gCAAgC;QAChC,aAAa,EAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE;QAClD,6CAA6C;QAC7C,qCAAqC;QACrC,iDAAiD;QACjD,4CAA4C;QAC5C,kCAAkC;QAClC,mCAAmC;KACpC,CAAC;IAEF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAgB,EAChB,QAAkB,EAClB,iBAAsC,EAAE,EACxC,eAAkC,EAAE;IAEpC,wBAAwB;IACxB,MAAM,oBAAoB,GAAG,QAAQ;SAClC,GAAG,CAAC,kBAAkB,CAAC;SACvB,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5F,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,oBAAoB;QACpB,kBAAkB;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC;QAC3D,6DAA6D;QAC7D,OAAO,CAAC,IAAI,CACV,4FAA4F,QAAQ,EAAE,CACvG,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,4BAA4B,CACjD,EAAE,GAAG,cAAc,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,EAC/C,YAAY,CACb,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,YAAY,CAAC;QACrF,EAAE,EAAE,WAAW,CAAC,gBAAgB;QAChC,KAAK,EAAE,cAAc;KACtB,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO;AACT,CAAC"}
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, NewDocumentInfo, NewDocumentInput, type GreenInvoiceDiscountType, type GreenInvoiceDocumentLang, type GreenInvoiceLinkType, type GreenInvoicePaymentAppType, type GreenInvoicePaymentCardType, type GreenInvoicePaymentDealType, type GreenInvoicePaymentSubType, type GreenInvoiceVatType } from '../../../__generated__/types.js';
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
- if (!clientInfo.green_invoice_id) {
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(clientInfo.green_invoice_id);
1118
+ .clientLoader.load(greenInvoiceId);
1109
1119
  if (!greenInvoiceClient) {
1110
- throw new GraphQLError(`Green Invoice client with ID ${clientInfo.green_invoice_id} not found`);
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: clientInfo.green_invoice_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,