@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,90 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import '@operato/data-grist'
3
-
4
- import gql from 'graphql-tag'
5
- import { css, html, LitElement } from 'lit'
6
- import { property } from 'lit/decorators.js'
7
-
8
- import { client } from '@operato/graphql'
9
- import { i18next } from '@operato/i18n'
10
- import { isMobileDevice } from '@operato/utils'
11
- import { ButtonContainerStyles } from '@operato/styles'
12
-
13
- export class AccountingDocumentImporter extends LitElement {
14
- static styles = [
15
- ButtonContainerStyles,
16
- css`
17
- :host {
18
- display: flex;
19
- flex-direction: column;
20
-
21
- background-color: #fff;
22
- }
23
-
24
- ox-grist {
25
- flex: 1;
26
- }
27
- `
28
- ]
29
-
30
- @property({ type: Array }) accountingDocuments: any[] = []
31
- @property({ type: Object }) columns = {
32
- list: { fields: ['name', 'description'] },
33
- pagination: { infinite: true },
34
- columns: [
35
- {
36
- type: 'string',
37
- name: 'name',
38
- header: i18next.t('field.name'),
39
- width: 150
40
- },
41
- {
42
- type: 'string',
43
- name: 'description',
44
- header: i18next.t('field.description'),
45
- width: 200
46
- },
47
- {
48
- type: 'checkbox',
49
- name: 'active',
50
- header: i18next.t('field.active'),
51
- width: 60
52
- }
53
- ]
54
- }
55
-
56
-
57
- render() {
58
- return html`
59
- <ox-grist
60
- .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
61
- .config=${this.columns}
62
- .data=${
63
- {
64
- records: this.accountingDocuments
65
- }
66
- }
67
- ></ox-grist>
68
-
69
- <div class="button-container">
70
- <button @click="${this.save.bind(this)}"><md-icon>save</md-icon>${i18next.t('button.save')}</button>
71
- </div>
72
- `
73
- }
74
-
75
- async save() {
76
- const response = await client.mutate({
77
- mutation: gql`
78
- mutation importAccountingDocuments($accountingDocuments: [AccountingDocumentPatch!]!) {
79
- importAccountingDocuments(accountingDocuments: $accountingDocuments)
80
- }
81
- `,
82
- variables: { accountingDocuments: this.accountingDocuments }
83
- })
84
-
85
- if (response.errors?.length) return
86
-
87
- this.dispatchEvent(new CustomEvent('imported'))
88
- }
89
- }
90
-
@@ -1,398 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import '@material/web/button/elevated-button.js'
3
- import '@operato/data-grist/ox-grist.js'
4
- import '@operato/data-grist/ox-filters-form.js'
5
- import '@operato/data-grist/ox-record-creator.js'
6
-
7
- import { CommonButtonStyles, CommonHeaderStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'
8
- import { PageView, store } from '@operato/shell'
9
- import { css, html } from 'lit'
10
- import { customElement, property, query } from 'lit/decorators.js'
11
- import { ScopedElementsMixin } from '@open-wc/scoped-elements'
12
- import { ColumnConfig, DataGrist, FetchOption } from '@operato/data-grist'
13
- import { client } from '@operato/graphql'
14
- import { i18next, localize } from '@operato/i18n'
15
- import { notify, openPopup } from '@operato/layout'
16
- import { OxPopup, OxPrompt } from '@operato/popup'
17
- import { isMobileDevice } from '@operato/utils'
18
-
19
- import { connect } from 'pwa-helpers/connect-mixin'
20
- import gql from 'graphql-tag'
21
-
22
- import { AccountingDocumentImporter } from './accounting-document-importer'
23
-
24
- @customElement('accounting-document-list-page')
25
- export class AccountingDocumentListPage extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
26
-
27
- static styles = [
28
- ScrollbarStyles,
29
- CommonGristStyles,
30
- CommonHeaderStyles,
31
- css`
32
- :host {
33
- display: flex;
34
-
35
- width: 100%;
36
-
37
- --grid-record-emphasized-background-color: #8B0000;
38
- --grid-record-emphasized-color: #FF6B6B;
39
- }
40
-
41
- ox-grist {
42
- overflow-y: auto;
43
- flex: 1;
44
- }
45
-
46
- ox-filters-form {
47
- flex: 1;
48
- }
49
- `
50
- ]
51
-
52
- static get scopedElements() {
53
- return {
54
- 'accounting-document-importer': AccountingDocumentImporter
55
- }
56
- }
57
-
58
- @property({ type: Object }) gristConfig: any
59
- @property({ type: String }) mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'
60
-
61
- @query('ox-grist') private grist!: DataGrist
62
-
63
- get context() {
64
- return {
65
- title: i18next.t('title.accounting-document list'),
66
- search: {
67
- handler: (search: string) => {
68
- this.grist.searchText = search
69
- },
70
- value: this.grist.searchText
71
- },
72
- filter: {
73
- handler: () => {
74
- this.grist.toggleHeadroom()
75
- }
76
- },
77
- help: 'accounting/accounting-document',
78
- actions: [
79
- {
80
- title: i18next.t('button.save'),
81
- action: this._updateAccountingDocument.bind(this),
82
- ...CommonButtonStyles.save
83
- },
84
- {
85
- title: i18next.t('button.delete'),
86
- action: this._deleteAccountingDocument.bind(this),
87
- ...CommonButtonStyles.delete
88
- }
89
- ],
90
- exportable: {
91
- name: i18next.t('title.accounting-document list'),
92
- data: this.exportHandler.bind(this)
93
- },
94
- importable: {
95
- handler: this.importHandler.bind(this)
96
- }
97
- }
98
- }
99
-
100
- render() {
101
- const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
102
-
103
- return html`
104
- <ox-grist
105
- .mode=${mode}
106
- .config=${this.gristConfig}
107
- .fetchHandler=${this.fetchHandler.bind(this)}
108
- >
109
- <div slot="headroom" class="header">
110
- <div class="filters">
111
- <ox-filters-form autofocus without-search></ox-filters-form>
112
-
113
- <div id="modes">
114
- <md-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</md-icon>
115
- <md-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</md-icon>
116
- <md-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</md-icon>
117
- </div>
118
-
119
- <ox-record-creator id="add" .callback=${this.creationCallback.bind(this)}>
120
- <button>
121
- <md-icon>add</md-icon>
122
- </button>
123
- </ox-record-creator>
124
-
125
- </div>
126
- </div>
127
- </ox-grist>
128
- `
129
- }
130
-
131
- async pageInitialized(lifecycle: any) {
132
- this.gristConfig = {
133
- list: {
134
- fields: ['name', 'description'],
135
- details: ['active', 'updatedAt']
136
- },
137
- columns: [
138
- { type: 'gutter', gutterName: 'sequence' },
139
- { type: 'gutter', gutterName: 'row-selector', multiple: true },
140
- {
141
- type: 'string',
142
- name: 'name',
143
- header: i18next.t('field.name'),
144
- record: {
145
- editable: true
146
- },
147
- filter: 'search',
148
- sortable: true,
149
- width: 150
150
- },
151
- {
152
- type: 'string',
153
- name: 'description',
154
- header: i18next.t('field.description'),
155
- record: {
156
- editable: true
157
- },
158
- filter: 'search',
159
- width: 200
160
- },
161
- {
162
- type: 'checkbox',
163
- name: 'active',
164
- label: true,
165
- header: i18next.t('field.active'),
166
- record: {
167
- editable: true
168
- },
169
- filter: true,
170
- sortable: true,
171
- width: 60
172
- },
173
- {
174
- type: 'resource-object',
175
- name: 'updater',
176
- header: i18next.t('field.updater'),
177
- record: {
178
- editable: false
179
- },
180
- sortable: true,
181
- width: 120
182
- },
183
- {
184
- type: 'datetime',
185
- name: 'updatedAt',
186
- header: i18next.t('field.updated_at'),
187
- record: {
188
- editable: false
189
- },
190
- sortable: true,
191
- width: 180
192
- }
193
- ],
194
- rows: {
195
- appendable: false,
196
- selectable: {
197
- multiple: true
198
- }
199
- },
200
- sorters: [
201
- {
202
- name: 'name'
203
- }
204
- ]
205
- }
206
- }
207
-
208
- async pageUpdated(changes: any, lifecycle: any) {
209
- if (this.active) {
210
- // do something here when this page just became as active
211
- }
212
- }
213
-
214
- async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }: FetchOption) {
215
- const response = await client.query({
216
- query: gql`
217
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
218
- responses: accountingDocuments(filters: $filters, pagination: $pagination, sortings: $sortings) {
219
- items {
220
- id
221
- name
222
- description
223
- active
224
- updater {
225
- id
226
- name
227
- }
228
- updatedAt
229
- }
230
- total
231
- }
232
- }
233
- `,
234
- variables: {
235
- filters,
236
- pagination: { page, limit },
237
- sortings
238
- }
239
- })
240
-
241
- return {
242
- total: response.data.responses.total || 0,
243
- records: response.data.responses.items || []
244
- }
245
- }
246
-
247
- async _deleteAccountingDocument() {
248
- if (
249
- await OxPrompt.open({
250
- title: i18next.t('text.are_you_sure'),
251
- text: i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }),
252
- confirmButton: { text: i18next.t('button.confirm') },
253
- cancelButton: { text: i18next.t('button.cancel') }
254
- })
255
- ) {
256
- const ids = this.grist.selected.map(record => record.id)
257
- if (ids && ids.length > 0) {
258
- const response = await client.mutate({
259
- mutation: gql`
260
- mutation ($ids: [String!]!) {
261
- deleteAccountingDocuments(ids: $ids)
262
- }
263
- `,
264
- variables: {
265
- ids
266
- }
267
- })
268
-
269
- if (!response.errors) {
270
- this.grist.fetch()
271
- notify({
272
- message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })
273
- })
274
- }
275
- }
276
- }
277
- }
278
-
279
- async _updateAccountingDocument() {
280
- let patches = this.grist.dirtyRecords
281
- if (patches && patches.length) {
282
- patches = patches.map(patch => {
283
- let patchField: any = patch.id ? { id: patch.id } : {}
284
- const dirtyFields = patch.__dirtyfields__
285
- for (let key in dirtyFields) {
286
- patchField[key] = dirtyFields[key].after
287
- }
288
- patchField.cuFlag = patch.__dirty__
289
-
290
- return patchField
291
- })
292
-
293
- const response = await client.mutate({
294
- mutation: gql`
295
- mutation ($patches: [AccountingDocumentPatch!]!) {
296
- updateMultipleAccountingDocument(patches: $patches) {
297
- name
298
- }
299
- }
300
- `,
301
- variables: {
302
- patches
303
- }
304
- })
305
-
306
- if (!response.errors) {
307
- this.grist.fetch()
308
- }
309
- }
310
- }
311
-
312
- async creationCallback(accountingDocument) {
313
- try {
314
- const response = await client.query({
315
- query: gql`
316
- mutation ($accountingDocument: NewAccountingDocument!) {
317
- createAccountingDocument(accountingDocument: $accountingDocument) {
318
- id
319
- }
320
- }
321
- `,
322
- variables: {
323
- accountingDocument
324
- },
325
- context: {
326
- hasUpload: true
327
- }
328
- })
329
-
330
- if (!response.errors) {
331
- this.grist.fetch()
332
- document.dispatchEvent(
333
- new CustomEvent('notify', {
334
- detail: {
335
- message: i18next.t('text.data_created_successfully')
336
- }
337
- })
338
- )
339
- }
340
-
341
- return true
342
- } catch (ex) {
343
- console.error(ex)
344
- document.dispatchEvent(
345
- new CustomEvent('notify', {
346
- detail: {
347
- type: 'error',
348
- message: i18next.t('text.error')
349
- }
350
- })
351
- )
352
- return false
353
- }
354
- }
355
-
356
- async exportHandler() {
357
- const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records
358
- const targetFieldSet = new Set([
359
- 'id',
360
- 'name',
361
- 'description',
362
- 'active'
363
- ])
364
-
365
- return exportTargets.map(accountingDocument => {
366
- let tempObj = {}
367
- for (const field of targetFieldSet) {
368
- tempObj[field] = accountingDocument[field]
369
- }
370
-
371
- return tempObj
372
- })
373
- }
374
-
375
- async importHandler(records) {
376
- const popup = openPopup(
377
- html`
378
- <accounting-document-importer
379
- .accountingDocuments=${records}
380
- @imported=${() => {
381
- history.back()
382
- this.grist.fetch()
383
- }}
384
- ></accounting-document-importer>
385
- `,
386
- {
387
- backdrop: true,
388
- size: 'large',
389
- title: i18next.t('title.import accounting-document')
390
- }
391
- )
392
-
393
- popup.onclosed = () => {
394
- this.grist.fetch()
395
- }
396
- }
397
- }
398
-
@@ -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 FinancialStatementImporter 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 }) financialStatements: 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.financialStatements
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 importFinancialStatements($financialStatements: [FinancialStatementPatch!]!) {
86
- importFinancialStatements(financialStatements: $financialStatements)
87
- }
88
- `,
89
- variables: { financialStatements: this.financialStatements }
90
- })
91
-
92
- if (response.errors?.length) return
93
-
94
- this.dispatchEvent(new CustomEvent('imported'))
95
- }
96
- }
97
-