@things-factory/accounting 8.0.0 → 9.0.0-beta.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. package/dist-client/pages/accounting-category/accounting-category-tree-page.js +1 -1
  2. package/dist-client/pages/accounting-category/accounting-category-tree-page.js.map +1 -1
  3. package/dist-client/pages/bank/bank-importer.d.ts +23 -0
  4. package/dist-client/pages/bank/bank-importer.js +93 -0
  5. package/dist-client/pages/bank/bank-importer.js.map +1 -0
  6. package/dist-client/pages/bank/bank-list-page.d.ts +66 -0
  7. package/dist-client/pages/bank/bank-list-page.js +370 -0
  8. package/dist-client/pages/bank/bank-list-page.js.map +1 -0
  9. package/dist-client/pages/bank-account/bank-account-importer.d.ts +23 -0
  10. package/dist-client/pages/bank-account/bank-account-importer.js +93 -0
  11. package/dist-client/pages/bank-account/bank-account-importer.js.map +1 -0
  12. package/dist-client/pages/bank-account/bank-account-list-page.d.ts +66 -0
  13. package/dist-client/pages/bank-account/bank-account-list-page.js +370 -0
  14. package/dist-client/pages/bank-account/bank-account-list-page.js.map +1 -0
  15. package/dist-client/pages/financial-institution/financial-institution-importer.d.ts +23 -0
  16. package/dist-client/pages/financial-institution/financial-institution-importer.js +93 -0
  17. package/dist-client/pages/financial-institution/financial-institution-importer.js.map +1 -0
  18. package/dist-client/pages/financial-institution/financial-institution-list-page.d.ts +66 -0
  19. package/dist-client/pages/financial-institution/financial-institution-list-page.js +370 -0
  20. package/dist-client/pages/financial-institution/financial-institution-list-page.js.map +1 -0
  21. package/dist-client/tsconfig.tsbuildinfo +1 -1
  22. package/dist-server/migrations/1725201567284-seed-country-codes.d.ts +5 -0
  23. package/dist-server/migrations/1725201567284-seed-country-codes.js +248 -0
  24. package/dist-server/migrations/1725201567284-seed-country-codes.js.map +1 -0
  25. package/dist-server/migrations/1725201667385-seed-financial-institutions.d.ts +5 -0
  26. package/dist-server/migrations/1725201667385-seed-financial-institutions.js +348 -0
  27. package/dist-server/migrations/1725201667385-seed-financial-institutions.js.map +1 -0
  28. package/dist-server/service/bank-account/bank-account-history.d.ts +34 -0
  29. package/dist-server/service/bank-account/bank-account-history.js +172 -0
  30. package/dist-server/service/bank-account/bank-account-history.js.map +1 -0
  31. package/dist-server/service/bank-account/bank-account-mutation.d.ts +10 -0
  32. package/dist-server/service/bank-account/bank-account-mutation.js +128 -0
  33. package/dist-server/service/bank-account/bank-account-mutation.js.map +1 -0
  34. package/dist-server/service/bank-account/bank-account-query.d.ts +11 -0
  35. package/dist-server/service/bank-account/bank-account-query.js +79 -0
  36. package/dist-server/service/bank-account/bank-account-query.js.map +1 -0
  37. package/dist-server/service/bank-account/bank-account-type.d.ts +39 -0
  38. package/dist-server/service/bank-account/bank-account-type.js +153 -0
  39. package/dist-server/service/bank-account/bank-account-type.js.map +1 -0
  40. package/dist-server/service/bank-account/bank-account.d.ts +38 -0
  41. package/dist-server/service/bank-account/bank-account.js +164 -0
  42. package/dist-server/service/bank-account/bank-account.js.map +1 -0
  43. package/dist-server/service/bank-account/event-subscriber.d.ts +7 -0
  44. package/dist-server/service/bank-account/event-subscriber.js +21 -0
  45. package/dist-server/service/bank-account/event-subscriber.js.map +1 -0
  46. package/dist-server/service/bank-account/index.d.ts +7 -0
  47. package/dist-server/service/bank-account/index.js +12 -0
  48. package/dist-server/service/bank-account/index.js.map +1 -0
  49. package/dist-server/service/financial-institution/financial-institution-mutation.d.ts +10 -0
  50. package/dist-server/service/financial-institution/financial-institution-mutation.js +169 -0
  51. package/dist-server/service/financial-institution/financial-institution-mutation.js.map +1 -0
  52. package/dist-server/service/financial-institution/financial-institution-query.d.ts +12 -0
  53. package/dist-server/service/financial-institution/financial-institution-query.js +97 -0
  54. package/dist-server/service/financial-institution/financial-institution-query.js.map +1 -0
  55. package/dist-server/service/financial-institution/financial-institution-type.d.ts +32 -0
  56. package/dist-server/service/financial-institution/financial-institution-type.js +126 -0
  57. package/dist-server/service/financial-institution/financial-institution-type.js.map +1 -0
  58. package/dist-server/service/financial-institution/financial-institution.d.ts +34 -0
  59. package/dist-server/service/financial-institution/financial-institution.js +137 -0
  60. package/dist-server/service/financial-institution/financial-institution.js.map +1 -0
  61. package/dist-server/service/financial-institution/index.d.ts +6 -0
  62. package/dist-server/service/financial-institution/index.js +10 -0
  63. package/dist-server/service/financial-institution/index.js.map +1 -0
  64. package/dist-server/service/index.d.ts +3 -2
  65. package/dist-server/service/index.js +5 -0
  66. package/dist-server/service/index.js.map +1 -1
  67. package/dist-server/service/payment/index.d.ts +1 -2
  68. package/dist-server/service/payment/payment-history.d.ts +8 -1
  69. package/dist-server/service/payment/payment-history.js +41 -10
  70. package/dist-server/service/payment/payment-history.js.map +1 -1
  71. package/dist-server/service/payment/payment-type.d.ts +7 -1
  72. package/dist-server/service/payment/payment-type.js +24 -0
  73. package/dist-server/service/payment/payment-type.js.map +1 -1
  74. package/dist-server/service/payment/payment.d.ts +12 -0
  75. package/dist-server/service/payment/payment.js +36 -1
  76. package/dist-server/service/payment/payment.js.map +1 -1
  77. package/dist-server/tsconfig.tsbuildinfo +1 -1
  78. package/helps/accounting/bank-account.md +160 -0
  79. package/helps/accounting/bank.md +160 -0
  80. package/helps/accounting/financial-institution.md +160 -0
  81. package/package.json +7 -7
  82. package/client/activities/activity-book-edit.ts +0 -88
  83. package/client/activities/activity-book-view.ts +0 -88
  84. package/client/activities/activity-expense-edit.ts +0 -88
  85. package/client/activities/activity-expense-view.ts +0 -88
  86. package/client/bootstrap.ts +0 -10
  87. package/client/components/accounting-category-selector.ts +0 -136
  88. package/client/components/accounting-category-view.ts +0 -75
  89. package/client/grist-editors/grist-editor-accounting-category-object.ts +0 -83
  90. package/client/grist-editors/grist-renderer-accounting-category-object.ts +0 -13
  91. package/client/index.ts +0 -0
  92. package/client/pages/account/account-importer.ts +0 -97
  93. package/client/pages/account/account-list-page.ts +0 -364
  94. package/client/pages/accounting-category/accounting-category-importer.ts +0 -97
  95. package/client/pages/accounting-category/accounting-category-list-page.ts +0 -368
  96. package/client/pages/accounting-category/accounting-category-tree-page.ts +0 -338
  97. package/client/pages/accounting-document/accounting-document-importer.ts +0 -90
  98. package/client/pages/accounting-document/accounting-document-list-page.ts +0 -398
  99. package/client/pages/financial-statement/financial-statement-importer.ts +0 -97
  100. package/client/pages/financial-statement/financial-statement-list-page.ts +0 -338
  101. package/client/pages/fiscal-month/fiscal-month-importer.ts +0 -90
  102. package/client/pages/fiscal-month/fiscal-month-list-page.ts +0 -398
  103. package/client/pages/fiscal-quarter/fiscal-quarter-importer.ts +0 -90
  104. package/client/pages/fiscal-quarter/fiscal-quarter-list-page.ts +0 -398
  105. package/client/pages/fiscal-year/fiscal-year-importer.ts +0 -90
  106. package/client/pages/fiscal-year/fiscal-year-list-page.ts +0 -398
  107. package/client/pages/income-statement/income-statement-importer.ts +0 -97
  108. package/client/pages/income-statement/income-statement-list-page.ts +0 -338
  109. package/client/pages/payment/payment-importer.ts +0 -90
  110. package/client/pages/payment/payment-list-page.ts +0 -398
  111. package/client/pages/transaction/transaction-importer.ts +0 -97
  112. package/client/pages/transaction/transaction-list-page.ts +0 -338
  113. package/client/route.ts +0 -35
  114. package/client/tsconfig.json +0 -13
  115. package/client/types/accounting-category.ts +0 -23
  116. package/client/types/index.ts +0 -1
  117. package/server/activities/activity-book.ts +0 -172
  118. package/server/activities/activity-expense.ts +0 -149
  119. package/server/activities/index.ts +0 -18
  120. package/server/controllers/index.ts +0 -1
  121. package/server/controllers/summary-statements.ts +0 -166
  122. package/server/index.ts +0 -6
  123. package/server/middlewares/index.ts +0 -3
  124. package/server/migrations/1725200507196-seed-fiscal-entities.ts +0 -106
  125. package/server/migrations/1725201467183-seed-accounts.ts +0 -339
  126. package/server/migrations/index.ts +0 -9
  127. package/server/routes.ts +0 -26
  128. package/server/service/account/account-history.ts +0 -117
  129. package/server/service/account/account-mutation.ts +0 -140
  130. package/server/service/account/account-query.ts +0 -51
  131. package/server/service/account/account-type.ts +0 -44
  132. package/server/service/account/account.ts +0 -97
  133. package/server/service/account/event-subscriber.ts +0 -17
  134. package/server/service/account/index.ts +0 -9
  135. package/server/service/accounting-category/accounting-category-history.ts +0 -129
  136. package/server/service/accounting-category/accounting-category-mutation.ts +0 -148
  137. package/server/service/accounting-category/accounting-category-query.ts +0 -74
  138. package/server/service/accounting-category/accounting-category-type.ts +0 -48
  139. package/server/service/accounting-category/accounting-category.ts +0 -100
  140. package/server/service/accounting-category/event-subscriber.ts +0 -20
  141. package/server/service/accounting-category/index.ts +0 -9
  142. package/server/service/accounting-document/accounting-document-history.ts +0 -123
  143. package/server/service/accounting-document/accounting-document-mutation.ts +0 -137
  144. package/server/service/accounting-document/accounting-document-query.ts +0 -48
  145. package/server/service/accounting-document/accounting-document-type.ts +0 -52
  146. package/server/service/accounting-document/accounting-document.ts +0 -93
  147. package/server/service/accounting-document/event-subscriber.ts +0 -17
  148. package/server/service/accounting-document/index.ts +0 -9
  149. package/server/service/common-type.ts +0 -12
  150. package/server/service/financial-statement/event-subscriber.ts +0 -17
  151. package/server/service/financial-statement/financial-statement-history.ts +0 -129
  152. package/server/service/financial-statement/financial-statement-line-item.ts +0 -82
  153. package/server/service/financial-statement/financial-statement-mutation.ts +0 -148
  154. package/server/service/financial-statement/financial-statement-query.ts +0 -53
  155. package/server/service/financial-statement/financial-statement-type.ts +0 -51
  156. package/server/service/financial-statement/financial-statement.ts +0 -116
  157. package/server/service/financial-statement/index.ts +0 -10
  158. package/server/service/fiscal-month/fiscal-month-mutation.ts +0 -145
  159. package/server/service/fiscal-month/fiscal-month-query.ts +0 -58
  160. package/server/service/fiscal-month/fiscal-month-type.ts +0 -66
  161. package/server/service/fiscal-month/fiscal-month.ts +0 -84
  162. package/server/service/fiscal-month/index.ts +0 -7
  163. package/server/service/fiscal-quarter/fiscal-quarter-mutation.ts +0 -148
  164. package/server/service/fiscal-quarter/fiscal-quarter-query.ts +0 -60
  165. package/server/service/fiscal-quarter/fiscal-quarter-type.ts +0 -60
  166. package/server/service/fiscal-quarter/fiscal-quarter.ts +0 -80
  167. package/server/service/fiscal-quarter/index.ts +0 -7
  168. package/server/service/fiscal-year/fiscal-year-mutation.ts +0 -145
  169. package/server/service/fiscal-year/fiscal-year-query.ts +0 -53
  170. package/server/service/fiscal-year/fiscal-year-type.ts +0 -54
  171. package/server/service/fiscal-year/fiscal-year.ts +0 -76
  172. package/server/service/fiscal-year/index.ts +0 -7
  173. package/server/service/income-statement/event-subscriber.ts +0 -17
  174. package/server/service/income-statement/income-statement-history.ts +0 -133
  175. package/server/service/income-statement/income-statement-line-item.ts +0 -84
  176. package/server/service/income-statement/income-statement-mutation.ts +0 -147
  177. package/server/service/income-statement/income-statement-query.ts +0 -50
  178. package/server/service/income-statement/income-statement-type.ts +0 -51
  179. package/server/service/income-statement/income-statement.ts +0 -120
  180. package/server/service/income-statement/index.ts +0 -10
  181. package/server/service/index.ts +0 -108
  182. package/server/service/payment/event-subscriber.ts +0 -17
  183. package/server/service/payment/index.ts +0 -9
  184. package/server/service/payment/payment-history.ts +0 -132
  185. package/server/service/payment/payment-mutation.ts +0 -139
  186. package/server/service/payment/payment-query.ts +0 -50
  187. package/server/service/payment/payment-type.ts +0 -64
  188. package/server/service/payment/payment.ts +0 -123
  189. package/server/service/transaction/event-subscriber.ts +0 -17
  190. package/server/service/transaction/index.ts +0 -9
  191. package/server/service/transaction/transaction-history.ts +0 -161
  192. package/server/service/transaction/transaction-mutation.ts +0 -146
  193. package/server/service/transaction/transaction-query.ts +0 -50
  194. package/server/service/transaction/transaction-type.ts +0 -48
  195. package/server/service/transaction/transaction.ts +0 -230
  196. package/server/tsconfig.json +0 -10
@@ -1,364 +0,0 @@
1
- import '@operato/data-grist'
2
-
3
- import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'
4
- import { PageView, store } from '@operato/shell'
5
- import { css, html } from 'lit'
6
- import { customElement, property, query } from 'lit/decorators.js'
7
- import { ScopedElementsMixin } from '@open-wc/scoped-elements'
8
- import { ColumnConfig, DataGrist, FetchOption, SortersControl } from '@operato/data-grist'
9
- import { client } from '@operato/graphql'
10
- import { i18next, localize } from '@operato/i18n'
11
- import { notify, openPopup } from '@operato/layout'
12
- import { OxPopup } from '@operato/popup'
13
- import { isMobileDevice } from '@operato/utils'
14
-
15
- import { connect } from 'pwa-helpers/connect-mixin'
16
- import gql from 'graphql-tag'
17
-
18
- import { AccountImporter } from './account-importer'
19
-
20
- @customElement('account-list-page')
21
- export class AccountListPage extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
22
- static styles = [
23
- ScrollbarStyles,
24
- CommonGristStyles,
25
- css`
26
- :host {
27
- display: flex;
28
-
29
- width: 100%;
30
-
31
- --grid-record-emphasized-background-color: #8b0000;
32
- --grid-record-emphasized-color: #ff6b6b;
33
- }
34
- `
35
- ]
36
-
37
- static get scopedElements() {
38
- return {
39
- 'account-importer': AccountImporter
40
- }
41
- }
42
-
43
- @property({ type: Object }) gristConfig: any
44
- @property({ type: String }) mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'
45
-
46
- @query('ox-grist') private grist!: DataGrist
47
- @query('#sorter-control') private sortersControl!: OxPopup
48
-
49
- get context() {
50
- return {
51
- title: i18next.t('title.account list'),
52
- search: {
53
- handler: (search: string) => {
54
- this.grist.searchText = search
55
- },
56
- value: this.grist?.searchText || '',
57
- autofocus: true
58
- },
59
- filter: {
60
- handler: () => {
61
- this.grist.toggleHeadroom()
62
- }
63
- },
64
- help: 'accounting/account',
65
- actions: [
66
- {
67
- title: i18next.t('button.save'),
68
- action: this._updateAccount.bind(this),
69
- ...CommonButtonStyles.save
70
- },
71
- {
72
- title: i18next.t('button.delete'),
73
- action: this._deleteAccount.bind(this),
74
- ...CommonButtonStyles.delete
75
- }
76
- ],
77
- exportable: {
78
- name: i18next.t('title.account list'),
79
- data: this.exportHandler.bind(this)
80
- },
81
- importable: {
82
- handler: this.importHandler.bind(this)
83
- }
84
- }
85
- }
86
-
87
- render() {
88
- const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
89
-
90
- return html`
91
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
92
- <div slot="headroom">
93
- <div id="filters">
94
- <ox-filters-form autofocus></ox-filters-form>
95
- </div>
96
-
97
- <div id="sorters">
98
- Sort
99
- <mwc-icon
100
- @click=${e => {
101
- const target = e.currentTarget
102
- this.sortersControl.open({
103
- right: 0,
104
- top: target.offsetTop + target.offsetHeight
105
- })
106
- }}
107
- >expand_more</mwc-icon
108
- >
109
- <ox-popup id="sorter-control">
110
- <ox-sorters-control> </ox-sorters-control>
111
- </ox-popup>
112
- </div>
113
-
114
- <div id="modes">
115
- <mwc-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</mwc-icon>
116
- <mwc-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</mwc-icon>
117
- <mwc-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</mwc-icon>
118
- </div>
119
- </div>
120
- </ox-grist>
121
- `
122
- }
123
-
124
- async pageInitialized(lifecycle: any) {
125
- this.gristConfig = {
126
- list: {
127
- fields: ['name', 'description'],
128
- details: ['active', 'updatedAt']
129
- },
130
- columns: [
131
- { type: 'gutter', gutterName: 'sequence' },
132
- { type: 'gutter', gutterName: 'row-selector', multiple: true },
133
- {
134
- type: 'string',
135
- name: 'code',
136
- header: i18next.t('field.code'),
137
- record: {
138
- editable: true,
139
- mandatory: true
140
- },
141
- filter: 'search',
142
- sortable: true,
143
- width: 150
144
- },
145
- {
146
- type: 'string',
147
- name: 'name',
148
- header: i18next.t('field.name'),
149
- record: {
150
- editable: true,
151
- mandatory: true
152
- },
153
- filter: 'search',
154
- sortable: true,
155
- width: 150
156
- },
157
- {
158
- type: 'accounting-category-object',
159
- name: 'category',
160
- header: i18next.t('field.category'),
161
- record: {
162
- editable: true,
163
- mandatory: true
164
- },
165
- sortable: false,
166
- filter: true,
167
- width: 150
168
- },
169
- {
170
- type: 'string',
171
- name: 'description',
172
- header: i18next.t('field.description'),
173
- record: {
174
- editable: true
175
- },
176
- filter: 'search',
177
- width: 200
178
- },
179
- {
180
- type: 'checkbox',
181
- name: 'active',
182
- label: true,
183
- header: i18next.t('field.active'),
184
- record: {
185
- editable: true
186
- },
187
- filter: true,
188
- sortable: true,
189
- width: 60
190
- },
191
- {
192
- type: 'resource-object',
193
- name: 'updater',
194
- header: i18next.t('field.updater'),
195
- record: {
196
- editable: false
197
- },
198
- sortable: true,
199
- width: 120
200
- },
201
- {
202
- type: 'datetime',
203
- name: 'updatedAt',
204
- header: i18next.t('field.updated_at'),
205
- record: {
206
- editable: false
207
- },
208
- sortable: true,
209
- width: 180
210
- }
211
- ],
212
- rows: {
213
- selectable: {
214
- multiple: true
215
- }
216
- },
217
- sorters: [
218
- {
219
- name: 'code'
220
- }
221
- ]
222
- }
223
- }
224
-
225
- async pageUpdated(changes: any, lifecycle: any) {
226
- if (this.active) {
227
- // do something here when this page just became as active
228
- }
229
- }
230
-
231
- async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }: FetchOption) {
232
- const response = await client.query({
233
- query: gql`
234
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
235
- responses: accounts(filters: $filters, pagination: $pagination, sortings: $sortings) {
236
- items {
237
- id
238
- code
239
- name
240
- description
241
- active
242
- category {
243
- code
244
- name
245
- description
246
- }
247
- updater {
248
- id
249
- name
250
- }
251
- updatedAt
252
- }
253
- total
254
- }
255
- }
256
- `,
257
- variables: {
258
- filters,
259
- pagination: { page, limit },
260
- sortings
261
- }
262
- })
263
-
264
- return {
265
- total: response.data.responses.total || 0,
266
- records: response.data.responses.items || []
267
- }
268
- }
269
-
270
- async _deleteAccount() {
271
- if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) {
272
- const ids = this.grist.selected.map(record => record.id)
273
- if (ids && ids.length > 0) {
274
- const response = await client.mutate({
275
- mutation: gql`
276
- mutation ($ids: [String!]!) {
277
- deleteAccounts(ids: $ids)
278
- }
279
- `,
280
- variables: {
281
- ids
282
- }
283
- })
284
-
285
- if (!response.errors) {
286
- this.grist.fetch()
287
- notify({
288
- message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })
289
- })
290
- }
291
- }
292
- }
293
- }
294
-
295
- async _updateAccount() {
296
- let patches = this.grist.dirtyRecords
297
- if (patches && patches.length) {
298
- patches = patches.map(patch => {
299
- let patchField: any = patch.id ? { id: patch.id } : {}
300
- const dirtyFields = patch.__dirtyfields__
301
- for (let key in dirtyFields) {
302
- patchField[key] = dirtyFields[key].after
303
- }
304
- patchField.cuFlag = patch.__dirty__
305
-
306
- return patchField
307
- })
308
-
309
- const response = await client.mutate({
310
- mutation: gql`
311
- mutation ($patches: [AccountPatch!]!) {
312
- updateMultipleAccount(patches: $patches) {
313
- name
314
- }
315
- }
316
- `,
317
- variables: {
318
- patches
319
- }
320
- })
321
-
322
- if (!response.errors) {
323
- this.grist.fetch()
324
- }
325
- }
326
- }
327
-
328
- async exportHandler() {
329
- const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records
330
- const targetFieldSet = new Set(['id', 'name', 'description', 'active'])
331
-
332
- return exportTargets.map(account => {
333
- let tempObj = {}
334
- for (const field of targetFieldSet) {
335
- tempObj[field] = account[field]
336
- }
337
-
338
- return tempObj
339
- })
340
- }
341
-
342
- async importHandler(records) {
343
- const popup = openPopup(
344
- html`
345
- <account-importer
346
- .accounts=${records}
347
- @imported=${() => {
348
- history.back()
349
- this.grist.fetch()
350
- }}
351
- ></account-importer>
352
- `,
353
- {
354
- backdrop: true,
355
- size: 'large',
356
- title: i18next.t('title.import account')
357
- }
358
- )
359
-
360
- popup.onclosed = () => {
361
- this.grist.fetch()
362
- }
363
- }
364
- }
@@ -1,97 +0,0 @@
1
- import '@operato/data-grist'
2
-
3
- import gql from 'graphql-tag'
4
- import { css, html, LitElement } from 'lit'
5
- import { property } from 'lit/decorators.js'
6
-
7
- import { client } from '@operato/graphql'
8
- import { i18next } from '@operato/i18n'
9
- import { isMobileDevice } from '@operato/utils'
10
-
11
- export class AccountingCategoryImporter extends LitElement {
12
- static styles = [
13
- css`
14
- :host {
15
- display: flex;
16
- flex-direction: column;
17
-
18
- background-color: #fff;
19
- }
20
-
21
- ox-grist {
22
- flex: 1;
23
- }
24
-
25
- .button-container {
26
- display: flex;
27
- margin-left: auto;
28
- padding: var(--padding-default);
29
- }
30
-
31
- mwc-button {
32
- margin-left: var(--margin-default);
33
- }
34
- `
35
- ]
36
-
37
- @property({ type: Array }) accountingCategories: any[] = []
38
- @property({ type: Object }) columns = {
39
- list: { fields: ['name', 'description'] },
40
- pagination: { infinite: true },
41
- columns: [
42
- {
43
- type: 'string',
44
- name: 'name',
45
- header: i18next.t('field.name'),
46
- width: 150
47
- },
48
- {
49
- type: 'string',
50
- name: 'description',
51
- header: i18next.t('field.description'),
52
- width: 200
53
- },
54
- {
55
- type: 'checkbox',
56
- name: 'active',
57
- header: i18next.t('field.active'),
58
- width: 60
59
- }
60
- ]
61
- }
62
-
63
-
64
- render() {
65
- return html`
66
- <ox-grist
67
- .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
68
- .config=${this.columns}
69
- .data=${
70
- {
71
- records: this.accountingCategories
72
- }
73
- }
74
- ></ox-grist>
75
-
76
- <div class="button-container">
77
- <mwc-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</mwc-button>
78
- </div>
79
- `
80
- }
81
-
82
- async save() {
83
- const response = await client.mutate({
84
- mutation: gql`
85
- mutation importAccountingCategories($accountingCategories: [AccountingCategoryPatch!]!) {
86
- importAccountingCategories(accountingCategories: $accountingCategories)
87
- }
88
- `,
89
- variables: { accountingCategories: this.accountingCategories }
90
- })
91
-
92
- if (response.errors?.length) return
93
-
94
- this.dispatchEvent(new CustomEvent('imported'))
95
- }
96
- }
97
-