@accounter/client 0.0.8-alpha-20251023071041-df324f1dc0984ca95d91caeebfa99c5dfea3ce0c → 0.0.8-alpha-20251023071148-6bed0891f04559f888e1e0d8bb275809dc36bf3b

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 (92) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/assets/{Checkbox-iZ--iyJF.js → Checkbox-lfqFDKZM.js} +2 -2
  3. package/dist/assets/{Progress-CSjfE5bV.js → Progress-DvGsu87E.js} +1 -1
  4. package/dist/assets/{Typography-D14P1nN1.js → Typography-BX4mj53o.js} +1 -1
  5. package/dist/assets/{accordion-CcwG2M8I.js → accordion-lOk81yKP.js} +1 -1
  6. package/dist/assets/accountant-approvals-DWLEu1Um.js +1 -0
  7. package/dist/assets/{all-charges-kAC8rw9C.js → all-charges-DhPxcK73.js} +1 -1
  8. package/dist/assets/{arrow-up-down-BS_znu7y.js → arrow-up-down-CFrneqND.js} +1 -1
  9. package/dist/assets/building-2-Bqvbwz7Q.js +6 -0
  10. package/dist/assets/business--eNnF4xF.js +42 -0
  11. package/dist/assets/business-header-DjutqTRC.js +1 -0
  12. package/dist/assets/{business-transactions-single-B23INPyA.js → business-transactions-single-CJ5pLN-D.js} +1 -1
  13. package/dist/assets/{business-trip-c4pY18e_.js → business-trip-Jlc0bfXC.js} +1 -1
  14. package/dist/assets/charges-filters-C-H07qp1.js +1 -0
  15. package/dist/assets/{charges-ledger-validation-DZtDlOTx.js → charges-ledger-validation-Bln73m_U.js} +1 -1
  16. package/dist/assets/{chart-BgPuhGqj.js → chart-Wut6cPCx.js} +1 -1
  17. package/dist/assets/{data-table-pagination-P75qqcV4.js → data-table-pagination-BnQGVnmE.js} +1 -1
  18. package/dist/assets/{editable-business-trip-80Bf0nf4.js → editable-business-trip-CjJg13b0.js} +2 -2
  19. package/dist/assets/index-BE5nnZYY.js +9 -0
  20. package/dist/assets/index-BQrSA2Kk.js +1 -0
  21. package/dist/assets/{index-D0eVaZI5.js → index-BX3VSsge.js} +1 -1
  22. package/dist/assets/{index-BopVOgtm.js → index-BagyRbeI.js} +2 -2
  23. package/dist/assets/index-BkeJsHyM.js +1 -0
  24. package/dist/assets/{index-BwJkbwi9.js → index-BoSqeUi7.js} +6 -6
  25. package/dist/assets/index-BtAgm6J8.js +1 -0
  26. package/dist/assets/index-BwIQ8ifH.js +1 -0
  27. package/dist/assets/index-Bxlzprxi.js +1 -0
  28. package/dist/assets/index-C--YkrHw.js +1 -0
  29. package/dist/assets/{index-BIiK-vW-.js → index-C2INIVq3.js} +1 -1
  30. package/dist/assets/{index-iLt1WIM9.js → index-CN7VPpiB.js} +65 -65
  31. package/dist/assets/index-CQXFj3Uj.css +1 -0
  32. package/dist/assets/{index-D3y74IdY.js → index-CVz9TqoS.js} +2 -2
  33. package/dist/assets/index-CalcGztb.js +1 -0
  34. package/dist/assets/{index-DfYVR_1G.js → index-Csqyxwgx.js} +2 -2
  35. package/dist/assets/{index-DUDlwA28.js → index-DjSJrgv5.js} +2 -2
  36. package/dist/assets/{index-D7rFUnXc.js → index-DquDHLbE.js} +1 -1
  37. package/dist/assets/index-Dr2UkUOm.js +1 -0
  38. package/dist/assets/index-E2rO9Bsf.js +1 -0
  39. package/dist/assets/index-Ggixi4PP.js +1 -0
  40. package/dist/assets/index-WCosiqtQ.js +1 -0
  41. package/dist/assets/index-vsZbkVMv.js +1 -0
  42. package/dist/assets/{index-1yUzw9-e.js → index-y8Z-aJKc.js} +2 -2
  43. package/dist/assets/{index.es-VMf2fRct.js → index.es-D8leRAY2.js} +1 -1
  44. package/dist/assets/{issue-document-BustWthK.js → issue-document-DKE0dzdE.js} +1 -1
  45. package/dist/assets/login-page-BYwtRBMd.js +1 -0
  46. package/dist/assets/{missing-info-charges-sf4ZGQoC.js → missing-info-charges-CgMJ4Bu3.js} +1 -1
  47. package/dist/assets/page-not-found-Cfte6bjZ.js +1 -0
  48. package/dist/assets/{pencil-1-tPx_Bq.js → pencil-CUSCcyVn.js} +1 -1
  49. package/dist/assets/report-commentary-row-B-uxVnyO.js +1 -0
  50. package/dist/assets/save-qyt28nOG.js +6 -0
  51. package/dist/assets/sub-LLu8afpC.js +1 -0
  52. package/dist/assets/subMonths-C1UIPrOU.js +1 -0
  53. package/dist/index.html +2 -2
  54. package/package.json +1 -1
  55. package/src/components/business/business-header.tsx +21 -2
  56. package/src/components/businesses/index.tsx +45 -36
  57. package/src/components/common/forms/index.ts +0 -1
  58. package/src/gql/gql.ts +6 -30
  59. package/src/gql/graphql.ts +7 -30
  60. package/src/providers/urql-client.ts +0 -26
  61. package/src/providers/urql.tsx +0 -32
  62. package/src/router/loaders/business-loader.ts +4 -2
  63. package/src/router/loaders/charge-loader.ts +4 -2
  64. package/dist/assets/accountant-approvals-3mWk2IJb.js +0 -1
  65. package/dist/assets/business-Cv0e_Q3p.js +0 -42
  66. package/dist/assets/charges-filters-DaVBQ_jS.js +0 -1
  67. package/dist/assets/index-ASrM5c3z.js +0 -1
  68. package/dist/assets/index-BUJZ6CG6.js +0 -1
  69. package/dist/assets/index-Bt1Iynf-.js +0 -1
  70. package/dist/assets/index-BtF8NkXw.js +0 -1
  71. package/dist/assets/index-Buu6jU2e.js +0 -1
  72. package/dist/assets/index-CNBPVFd1.js +0 -1
  73. package/dist/assets/index-Cca4zCek.js +0 -1
  74. package/dist/assets/index-CgVLV78R.js +0 -1
  75. package/dist/assets/index-CmRugx3-.js +0 -1
  76. package/dist/assets/index-CzzfC-dD.css +0 -1
  77. package/dist/assets/index-D-K_l8g8.js +0 -9
  78. package/dist/assets/index-DWdQvLZN.js +0 -1
  79. package/dist/assets/index-DmBjrSud.js +0 -1
  80. package/dist/assets/index-Ucx6U5YY.js +0 -1
  81. package/dist/assets/login-page-DbBOFdaj.js +0 -1
  82. package/dist/assets/page-not-found-CzE13z4R.js +0 -1
  83. package/dist/assets/report-commentary-row-BqTwvfOv.js +0 -1
  84. package/dist/assets/save-CMGkGXCM.js +0 -11
  85. package/dist/assets/similar-charges-by-business-modal-Dj7iCQhJ.js +0 -1
  86. package/dist/assets/sub-3l-gAINS.js +0 -1
  87. package/dist/assets/subMonths-LVothVpu.js +0 -1
  88. package/src/components/businesses/all-businesses-row.tsx +0 -87
  89. package/src/components/businesses/cells/hebrew-name.tsx +0 -31
  90. package/src/components/businesses/cells/index.ts +0 -2
  91. package/src/components/businesses/cells/name.tsx +0 -31
  92. package/src/components/common/forms/business-card.tsx +0 -234
@@ -1,31 +0,0 @@
1
- import { type ReactElement } from 'react';
2
- import { AllBusinessesNameFieldsFragmentDoc } from '../../../gql/graphql.js';
3
- import { getFragmentData, type FragmentType } from '../../../gql/index.js';
4
-
5
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- used by codegen
6
- /* GraphQL */ `
7
- fragment AllBusinessesNameFields on LtdFinancialEntity {
8
- id
9
- name
10
- }
11
- `;
12
-
13
- type Props = {
14
- data: FragmentType<typeof AllBusinessesNameFieldsFragmentDoc>;
15
- };
16
-
17
- export const Name = ({ data }: Props): ReactElement => {
18
- const business = getFragmentData(AllBusinessesNameFieldsFragmentDoc, data);
19
-
20
- return (
21
- <td>
22
- <div
23
- style={{
24
- whiteSpace: 'nowrap',
25
- }}
26
- >
27
- {business.name}
28
- </div>
29
- </td>
30
- );
31
- };
@@ -1,234 +0,0 @@
1
- import { useContext, useEffect, useState, type ReactElement } from 'react';
2
- import { useForm, type SubmitHandler } from 'react-hook-form';
3
- import { useQuery, type UseQueryExecute } from 'urql';
4
- import { Loader } from '@mantine/core';
5
- import {
6
- FetchBusinessDocument,
7
- type AllBusinessesRowFieldsFragment,
8
- type FetchBusinessQuery,
9
- type UpdateBusinessInput,
10
- } from '../../../gql/graphql.js';
11
- import { relevantDataPicker, type MakeBoolean } from '../../../helpers/index.js';
12
- import { useUpdateBusiness } from '../../../hooks/use-update-business.js';
13
- import { UserContext } from '../../../providers/user-provider.js';
14
- import { Form } from '../../ui/form.js';
15
- import { CopyToClipboardButton, SimilarChargesByBusinessModal } from '../index.js';
16
- import { ModifyBusinessFields } from './modify-business-fields.js';
17
-
18
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- used by codegen
19
- /* GraphQL */ `
20
- query FetchBusiness($id: UUID!) {
21
- business(id: $id) {
22
- __typename
23
- id
24
- ... on LtdFinancialEntity {
25
- country
26
- address
27
- email
28
- exemptDealer
29
- governmentId
30
- hebrewName
31
- name
32
- phoneNumber
33
- sortCode {
34
- id
35
- key
36
- name
37
- }
38
- taxCategory {
39
- id
40
- name
41
- }
42
- website
43
- suggestions {
44
- phrases
45
- tags {
46
- id
47
- name
48
- }
49
- description
50
- emails
51
- emailListener {
52
- internalEmailLinks
53
- emailBody
54
- attachments
55
- }
56
- }
57
- optionalVAT
58
- irsCode
59
- pcn874RecordType
60
- }
61
- }
62
- }
63
- `;
64
-
65
- interface Props {
66
- businessID: string;
67
- updateBusiness: React.Dispatch<React.SetStateAction<AllBusinessesRowFieldsFragment>>;
68
- }
69
-
70
- export function BusinessCard({ businessID, updateBusiness }: Props): ReactElement {
71
- const [business, setBusiness] = useState<
72
- Extract<FetchBusinessQuery['business'], { __typename: 'LtdFinancialEntity' }> | undefined
73
- >(undefined);
74
-
75
- // Form business data handle
76
- const [{ data, fetching: businessFetching }, refetchBusiness] = useQuery({
77
- query: FetchBusinessDocument,
78
- variables: {
79
- id: businessID,
80
- },
81
- });
82
-
83
- useEffect(() => {
84
- if (businessFetching) {
85
- setBusiness(undefined);
86
- } else if (data && data.business.__typename === 'LtdFinancialEntity') {
87
- setBusiness(data.business);
88
- }
89
- }, [data, businessFetching]);
90
-
91
- // on every business successful fetch, update the business in the parent component
92
- useEffect(() => {
93
- if (business) {
94
- updateBusiness(business);
95
- }
96
- }, [business, updateBusiness]);
97
-
98
- return (
99
- <div className="flex flex-col gap-5">
100
- {business ? (
101
- <BusinessCardContent business={business} refetchBusiness={refetchBusiness} />
102
- ) : businessFetching ? (
103
- <Loader className="flex self-center my-5" color="dark" size="xl" variant="dots" />
104
- ) : (
105
- <p>Error fetching extended information for this business</p>
106
- )}
107
- </div>
108
- );
109
- }
110
-
111
- interface ContentProps {
112
- business: Extract<FetchBusinessQuery['business'], { __typename: 'LtdFinancialEntity' }>;
113
- refetchBusiness: UseQueryExecute;
114
- }
115
-
116
- function BusinessCardContent({ business, refetchBusiness }: ContentProps): ReactElement {
117
- const [fetching, setFetching] = useState<boolean>(false);
118
- const [similarChargesOpen, setSimilarChargesOpen] = useState(false);
119
- const [similarChargesData, setSimilarChargesData] = useState<
120
- | {
121
- tagIds?: { id: string }[];
122
- description?: string;
123
- }
124
- | undefined
125
- >(undefined);
126
- const { userContext } = useContext(UserContext);
127
-
128
- const { updateBusiness: updateDbBusiness, fetching: isBusinessLoading } = useUpdateBusiness();
129
-
130
- // form management
131
- const formManager = useForm<UpdateBusinessInput>({
132
- defaultValues: {
133
- ...business,
134
- taxCategory: business.taxCategory?.id,
135
- sortCode: business?.sortCode?.key,
136
- irsCode: business?.irsCode,
137
- },
138
- });
139
-
140
- const {
141
- handleSubmit: handleBusinessSubmit,
142
- formState: { dirtyFields: dirtyBusinessFields },
143
- } = formManager;
144
-
145
- const onBusinessSubmit: SubmitHandler<UpdateBusinessInput> = async data => {
146
- if (!business || !userContext?.context.adminBusinessId) {
147
- return;
148
- }
149
-
150
- const dataToUpdate = relevantDataPicker(data, dirtyBusinessFields as MakeBoolean<typeof data>);
151
- if (dataToUpdate && Object.keys(dataToUpdate).length > 0) {
152
- dataToUpdate.sortCode &&= parseInt(dataToUpdate.sortCode.toString());
153
-
154
- if (dataToUpdate.suggestions?.tags) {
155
- dataToUpdate.suggestions.tags = dataToUpdate.suggestions.tags.map(tag => ({ id: tag.id }));
156
- }
157
- if (dataToUpdate.suggestions?.phrases) {
158
- dataToUpdate.suggestions.phrases = data.suggestions!.phrases!.map(phrase => phrase);
159
- }
160
- if (dataToUpdate.suggestions?.emails) {
161
- dataToUpdate.suggestions.emails = data.suggestions!.emails!.map(email => email);
162
- }
163
- if (dataToUpdate.suggestions?.emailListener) {
164
- dataToUpdate.suggestions.emailListener.attachments &&=
165
- data.suggestions!.emailListener!.attachments!.map(type => type);
166
- dataToUpdate.suggestions.emailListener.internalEmailLinks &&=
167
- data.suggestions!.emailListener!.internalEmailLinks!.map(link => link);
168
- }
169
-
170
- await updateDbBusiness({
171
- businessId: business.id,
172
- ownerId: userContext.context.adminBusinessId,
173
- fields: dataToUpdate,
174
- });
175
-
176
- if (dataToUpdate.suggestions?.tags?.length || dataToUpdate.suggestions?.description) {
177
- setSimilarChargesData({
178
- tagIds: dataToUpdate.suggestions?.tags?.map(t => ({ id: t.id })),
179
- description: dataToUpdate.suggestions?.description ?? undefined,
180
- });
181
- setSimilarChargesOpen(true);
182
- } else {
183
- refetchBusiness();
184
- }
185
- }
186
- };
187
-
188
- return (
189
- <>
190
- {fetching && (
191
- <Loader className="flex self-center my-5" color="dark" size="xl" variant="dots" />
192
- )}
193
- <div className="flex flex-row gap-5">
194
- <Form {...formManager}>
195
- <form onSubmit={handleBusinessSubmit(onBusinessSubmit)}>
196
- <div className="flex flex-row mx-3 pt-3 sm:text-1xl gap-10">
197
- <h1 className="sm:text-2xl font-small text-gray-900">Edit Business:</h1>
198
- <div className="flex flex-row gap-2">
199
- ID: {business.id}
200
- <CopyToClipboardButton content={business.id} />
201
- </div>
202
- </div>
203
- <div className="flex-row px-10 h-max justify-start block">
204
- <ModifyBusinessFields
205
- isInsert={false}
206
- formManager={formManager}
207
- setFetching={setFetching}
208
- />
209
- </div>
210
- <div className="mt-10 mb-5 flex justify-center gap-5">
211
- <button
212
- type="submit"
213
- onClick={(): (() => Promise<void>) => handleBusinessSubmit(onBusinessSubmit)}
214
- className="mt-8 text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg"
215
- disabled={isBusinessLoading || Object.keys(dirtyBusinessFields).length === 0}
216
- >
217
- Update
218
- </button>
219
- </div>
220
- </form>
221
- </Form>
222
- </div>
223
-
224
- <SimilarChargesByBusinessModal
225
- businessId={business.id}
226
- tagIds={similarChargesData?.tagIds}
227
- description={similarChargesData?.description}
228
- open={similarChargesOpen}
229
- onOpenChange={setSimilarChargesOpen}
230
- onClose={refetchBusiness}
231
- />
232
- </>
233
- );
234
- }