@things-factory/compliance 0.0.0-stage → 10.1.255
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-client/bootstrap.d.ts +2 -0
- package/dist-client/bootstrap.js +28 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/components/compliance-case-form.d.ts +42 -0
- package/dist-client/components/compliance-case-form.js +313 -0
- package/dist-client/components/compliance-case-form.js.map +1 -0
- package/dist-client/components/compliance-case-sheet.d.ts +35 -0
- package/dist-client/components/compliance-case-sheet.js +335 -0
- package/dist-client/components/compliance-case-sheet.js.map +1 -0
- package/dist-client/components/compliance-my-inventions.d.ts +17 -0
- package/dist-client/components/compliance-my-inventions.js +133 -0
- package/dist-client/components/compliance-my-inventions.js.map +1 -0
- package/dist-client/components/compliance-my-privacy-requests.d.ts +34 -0
- package/dist-client/components/compliance-my-privacy-requests.js +232 -0
- package/dist-client/components/compliance-my-privacy-requests.js.map +1 -0
- package/dist-client/components/compliance-my-reports.d.ts +19 -0
- package/dist-client/components/compliance-my-reports.js +137 -0
- package/dist-client/components/compliance-my-reports.js.map +1 -0
- package/dist-client/components/guide-link.d.ts +13 -0
- package/dist-client/components/guide-link.js +55 -0
- package/dist-client/components/guide-link.js.map +1 -0
- package/dist-client/components/invention-report-form.d.ts +30 -0
- package/dist-client/components/invention-report-form.js +188 -0
- package/dist-client/components/invention-report-form.js.map +1 -0
- package/dist-client/components/legal-todo.d.ts +10 -0
- package/dist-client/components/legal-todo.js +43 -0
- package/dist-client/components/legal-todo.js.map +1 -0
- package/dist-client/components/my-trainings.d.ts +18 -0
- package/dist-client/components/my-trainings.js +149 -0
- package/dist-client/components/my-trainings.js.map +1 -0
- package/dist-client/components/regulation-form.d.ts +26 -0
- package/dist-client/components/regulation-form.js +161 -0
- package/dist-client/components/regulation-form.js.map +1 -0
- package/dist-client/components/seal-use-form.d.ts +47 -0
- package/dist-client/components/seal-use-form.js +300 -0
- package/dist-client/components/seal-use-form.js.map +1 -0
- package/dist-client/components/training-attendance-form.d.ts +37 -0
- package/dist-client/components/training-attendance-form.js +186 -0
- package/dist-client/components/training-attendance-form.js.map +1 -0
- package/dist-client/components/training-certificate-form.d.ts +41 -0
- package/dist-client/components/training-certificate-form.js +198 -0
- package/dist-client/components/training-certificate-form.js.map +1 -0
- package/dist-client/components/training-session-form.d.ts +39 -0
- package/dist-client/components/training-session-form.js +270 -0
- package/dist-client/components/training-session-form.js.map +1 -0
- package/dist-client/components/training-setting-form.d.ts +45 -0
- package/dist-client/components/training-setting-form.js +175 -0
- package/dist-client/components/training-setting-form.js.map +1 -0
- package/dist-client/index.d.ts +4 -0
- package/dist-client/index.js +8 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/legal-record/dispute-calendar-source.d.ts +1 -0
- package/dist-client/legal-record/dispute-calendar-source.js +51 -0
- package/dist-client/legal-record/dispute-calendar-source.js.map +1 -0
- package/dist-client/legal-record/legal-child-grid.d.ts +31 -0
- package/dist-client/legal-record/legal-child-grid.js +76 -0
- package/dist-client/legal-record/legal-child-grid.js.map +1 -0
- package/dist-client/legal-record/legal-codes.d.ts +3 -0
- package/dist-client/legal-record/legal-codes.js +5 -0
- package/dist-client/legal-record/legal-codes.js.map +1 -0
- package/dist-client/legal-record/legal-grid.d.ts +59 -0
- package/dist-client/legal-record/legal-grid.js +68 -0
- package/dist-client/legal-record/legal-grid.js.map +1 -0
- package/dist-client/legal-record/legal-record-files.d.ts +26 -0
- package/dist-client/legal-record/legal-record-files.js +162 -0
- package/dist-client/legal-record/legal-record-files.js.map +1 -0
- package/dist-client/pages/compliance-case-list.d.ts +35 -0
- package/dist-client/pages/compliance-case-list.js +112 -0
- package/dist-client/pages/compliance-case-list.js.map +1 -0
- package/dist-client/pages/dispute-list.d.ts +57 -0
- package/dist-client/pages/dispute-list.js +156 -0
- package/dist-client/pages/dispute-list.js.map +1 -0
- package/dist-client/pages/invention-list.d.ts +57 -0
- package/dist-client/pages/invention-list.js +166 -0
- package/dist-client/pages/invention-list.js.map +1 -0
- package/dist-client/pages/legal-registration-list.d.ts +63 -0
- package/dist-client/pages/legal-registration-list.js +206 -0
- package/dist-client/pages/legal-registration-list.js.map +1 -0
- package/dist-client/pages/privacy-record-list.d.ts +52 -0
- package/dist-client/pages/privacy-record-list.js +225 -0
- package/dist-client/pages/privacy-record-list.js.map +1 -0
- package/dist-client/pages/regulation-detail.d.ts +43 -0
- package/dist-client/pages/regulation-detail.js +370 -0
- package/dist-client/pages/regulation-detail.js.map +1 -0
- package/dist-client/pages/regulation-list.d.ts +52 -0
- package/dist-client/pages/regulation-list.js +144 -0
- package/dist-client/pages/regulation-list.js.map +1 -0
- package/dist-client/pages/regulations.d.ts +49 -0
- package/dist-client/pages/regulations.js +412 -0
- package/dist-client/pages/regulations.js.map +1 -0
- package/dist-client/pages/seal-use-list.d.ts +57 -0
- package/dist-client/pages/seal-use-list.js +168 -0
- package/dist-client/pages/seal-use-list.js.map +1 -0
- package/dist-client/pages/training-list.d.ts +51 -0
- package/dist-client/pages/training-list.js +333 -0
- package/dist-client/pages/training-list.js.map +1 -0
- package/dist-client/regulation/regulation-fragments.d.ts +1 -0
- package/dist-client/regulation/regulation-fragments.js +37 -0
- package/dist-client/regulation/regulation-fragments.js.map +1 -0
- package/dist-client/regulation/regulation-guide.d.ts +19 -0
- package/dist-client/regulation/regulation-guide.js +48 -0
- package/dist-client/regulation/regulation-guide.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +36 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/training-words.d.ts +11 -0
- package/dist-client/training-words.js +11 -0
- package/dist-client/training-words.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-client/words.d.ts +15 -0
- package/dist-client/words.js +20 -0
- package/dist-client/words.js.map +1 -0
- package/dist-server/activities/index.d.ts +6 -0
- package/dist-server/activities/index.js +37 -0
- package/dist-server/activities/index.js.map +1 -0
- package/dist-server/activities/legal-todo-activity-names.d.ts +1 -0
- package/dist-server/activities/legal-todo-activity-names.js +5 -0
- package/dist-server/activities/legal-todo-activity-names.js.map +1 -0
- package/dist-server/activities/legal-todo-activity.d.ts +37 -0
- package/dist-server/activities/legal-todo-activity.js +41 -0
- package/dist-server/activities/legal-todo-activity.js.map +1 -0
- package/dist-server/activities/regulation-activity-names.d.ts +1 -0
- package/dist-server/activities/regulation-activity-names.js +5 -0
- package/dist-server/activities/regulation-activity-names.js.map +1 -0
- package/dist-server/activities/regulation-activity.d.ts +48 -0
- package/dist-server/activities/regulation-activity.js +47 -0
- package/dist-server/activities/regulation-activity.js.map +1 -0
- package/dist-server/activities/seal-use-activity-names.d.ts +2 -0
- package/dist-server/activities/seal-use-activity-names.js +6 -0
- package/dist-server/activities/seal-use-activity-names.js.map +1 -0
- package/dist-server/activities/seal-use-activity.d.ts +48 -0
- package/dist-server/activities/seal-use-activity.js +47 -0
- package/dist-server/activities/seal-use-activity.js.map +1 -0
- package/dist-server/index.d.ts +2 -0
- package/dist-server/index.js +21 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/role-tasks.d.ts +2 -0
- package/dist-server/role-tasks.js +28 -0
- package/dist-server/role-tasks.js.map +1 -0
- package/dist-server/service/common/correction.d.ts +32 -0
- package/dist-server/service/common/correction.js +98 -0
- package/dist-server/service/common/correction.js.map +1 -0
- package/dist-server/service/common/employee-reader.d.ts +11 -0
- package/dist-server/service/common/employee-reader.js +46 -0
- package/dist-server/service/common/employee-reader.js.map +1 -0
- package/dist-server/service/common/legal-todo.d.ts +19 -0
- package/dist-server/service/common/legal-todo.js +37 -0
- package/dist-server/service/common/legal-todo.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-mutation.d.ts +9 -0
- package/dist-server/service/compliance-case/compliance-case-mutation.js +73 -0
- package/dist-server/service/compliance-case/compliance-case-mutation.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-query.d.ts +28 -0
- package/dist-server/service/compliance-case/compliance-case-query.js +212 -0
- package/dist-server/service/compliance-case/compliance-case-query.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-rules.d.ts +71 -0
- package/dist-server/service/compliance-case/compliance-case-rules.js +111 -0
- package/dist-server/service/compliance-case/compliance-case-rules.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-service.d.ts +76 -0
- package/dist-server/service/compliance-case/compliance-case-service.js +425 -0
- package/dist-server/service/compliance-case/compliance-case-service.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-type.d.ts +56 -0
- package/dist-server/service/compliance-case/compliance-case-type.js +200 -0
- package/dist-server/service/compliance-case/compliance-case-type.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case.d.ts +76 -0
- package/dist-server/service/compliance-case/compliance-case.js +260 -0
- package/dist-server/service/compliance-case/compliance-case.js.map +1 -0
- package/dist-server/service/compliance-case/index.d.ts +7 -0
- package/dist-server/service/compliance-case/index.js +17 -0
- package/dist-server/service/compliance-case/index.js.map +1 -0
- package/dist-server/service/dispute/dispute-mutation.d.ts +9 -0
- package/dist-server/service/dispute/dispute-mutation.js +64 -0
- package/dist-server/service/dispute/dispute-mutation.js.map +1 -0
- package/dist-server/service/dispute/dispute-query.d.ts +16 -0
- package/dist-server/service/dispute/dispute-query.js +124 -0
- package/dist-server/service/dispute/dispute-query.js.map +1 -0
- package/dist-server/service/dispute/dispute-rules.d.ts +20 -0
- package/dist-server/service/dispute/dispute-rules.js +42 -0
- package/dist-server/service/dispute/dispute-rules.js.map +1 -0
- package/dist-server/service/dispute/dispute-service.d.ts +17 -0
- package/dist-server/service/dispute/dispute-service.js +96 -0
- package/dist-server/service/dispute/dispute-service.js.map +1 -0
- package/dist-server/service/dispute/dispute-type.d.ts +39 -0
- package/dist-server/service/dispute/dispute-type.js +149 -0
- package/dist-server/service/dispute/dispute-type.js.map +1 -0
- package/dist-server/service/dispute/dispute.d.ts +48 -0
- package/dist-server/service/dispute/dispute.js +198 -0
- package/dist-server/service/dispute/dispute.js.map +1 -0
- package/dist-server/service/dispute/index.d.ts +5 -0
- package/dist-server/service/dispute/index.js +9 -0
- package/dist-server/service/dispute/index.js.map +1 -0
- package/dist-server/service/index.d.ts +46 -0
- package/dist-server/service/index.js +112 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/invention/index.d.ts +5 -0
- package/dist-server/service/invention/index.js +9 -0
- package/dist-server/service/invention/index.js.map +1 -0
- package/dist-server/service/invention/invention-mutation.d.ts +10 -0
- package/dist-server/service/invention/invention-mutation.js +79 -0
- package/dist-server/service/invention/invention-mutation.js.map +1 -0
- package/dist-server/service/invention/invention-query.d.ts +18 -0
- package/dist-server/service/invention/invention-query.js +141 -0
- package/dist-server/service/invention/invention-query.js.map +1 -0
- package/dist-server/service/invention/invention-rules.d.ts +28 -0
- package/dist-server/service/invention/invention-rules.js +54 -0
- package/dist-server/service/invention/invention-rules.js.map +1 -0
- package/dist-server/service/invention/invention-service.d.ts +25 -0
- package/dist-server/service/invention/invention-service.js +176 -0
- package/dist-server/service/invention/invention-service.js.map +1 -0
- package/dist-server/service/invention/invention-type.d.ts +34 -0
- package/dist-server/service/invention/invention-type.js +129 -0
- package/dist-server/service/invention/invention-type.js.map +1 -0
- package/dist-server/service/invention/invention.d.ts +55 -0
- package/dist-server/service/invention/invention.js +214 -0
- package/dist-server/service/invention/invention.js.map +1 -0
- package/dist-server/service/legal-record/attachment-readers.d.ts +1 -0
- package/dist-server/service/legal-record/attachment-readers.js +27 -0
- package/dist-server/service/legal-record/attachment-readers.js.map +1 -0
- package/dist-server/service/legal-record/days.d.ts +7 -0
- package/dist-server/service/legal-record/days.js +26 -0
- package/dist-server/service/legal-record/days.js.map +1 -0
- package/dist-server/service/legal-record/legal-record-support.d.ts +24 -0
- package/dist-server/service/legal-record/legal-record-support.js +51 -0
- package/dist-server/service/legal-record/legal-record-support.js.map +1 -0
- package/dist-server/service/legal-registration/centre-change-subscriber.d.ts +9 -0
- package/dist-server/service/legal-registration/centre-change-subscriber.js +50 -0
- package/dist-server/service/legal-registration/centre-change-subscriber.js.map +1 -0
- package/dist-server/service/legal-registration/index.d.ts +7 -0
- package/dist-server/service/legal-registration/index.js +11 -0
- package/dist-server/service/legal-registration/index.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-mutation.d.ts +10 -0
- package/dist-server/service/legal-registration/legal-registration-mutation.js +77 -0
- package/dist-server/service/legal-registration/legal-registration-mutation.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-query.d.ts +26 -0
- package/dist-server/service/legal-registration/legal-registration-query.js +199 -0
- package/dist-server/service/legal-registration/legal-registration-query.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-rules.d.ts +80 -0
- package/dist-server/service/legal-registration/legal-registration-rules.js +106 -0
- package/dist-server/service/legal-registration/legal-registration-rules.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-service.d.ts +37 -0
- package/dist-server/service/legal-registration/legal-registration-service.js +248 -0
- package/dist-server/service/legal-registration/legal-registration-service.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-type.d.ts +55 -0
- package/dist-server/service/legal-registration/legal-registration-type.js +207 -0
- package/dist-server/service/legal-registration/legal-registration-type.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration.d.ts +76 -0
- package/dist-server/service/legal-registration/legal-registration.js +311 -0
- package/dist-server/service/legal-registration/legal-registration.js.map +1 -0
- package/dist-server/service/privacy-record/index.d.ts +5 -0
- package/dist-server/service/privacy-record/index.js +9 -0
- package/dist-server/service/privacy-record/index.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-mutation.d.ts +7 -0
- package/dist-server/service/privacy-record/privacy-record-mutation.js +56 -0
- package/dist-server/service/privacy-record/privacy-record-mutation.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-query.d.ts +18 -0
- package/dist-server/service/privacy-record/privacy-record-query.js +131 -0
- package/dist-server/service/privacy-record/privacy-record-query.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-rules.d.ts +52 -0
- package/dist-server/service/privacy-record/privacy-record-rules.js +91 -0
- package/dist-server/service/privacy-record/privacy-record-rules.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-service.d.ts +33 -0
- package/dist-server/service/privacy-record/privacy-record-service.js +133 -0
- package/dist-server/service/privacy-record/privacy-record-service.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-type.d.ts +40 -0
- package/dist-server/service/privacy-record/privacy-record-type.js +153 -0
- package/dist-server/service/privacy-record/privacy-record-type.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record.d.ts +69 -0
- package/dist-server/service/privacy-record/privacy-record.js +245 -0
- package/dist-server/service/privacy-record/privacy-record.js.map +1 -0
- package/dist-server/service/regulation/index.d.ts +5 -0
- package/dist-server/service/regulation/index.js +9 -0
- package/dist-server/service/regulation/index.js.map +1 -0
- package/dist-server/service/regulation/regulation-mutation.d.ts +15 -0
- package/dist-server/service/regulation/regulation-mutation.js +152 -0
- package/dist-server/service/regulation/regulation-mutation.js.map +1 -0
- package/dist-server/service/regulation/regulation-query.d.ts +10 -0
- package/dist-server/service/regulation/regulation-query.js +109 -0
- package/dist-server/service/regulation/regulation-query.js.map +1 -0
- package/dist-server/service/regulation/regulation-read.d.ts +21 -0
- package/dist-server/service/regulation/regulation-read.js +111 -0
- package/dist-server/service/regulation/regulation-read.js.map +1 -0
- package/dist-server/service/regulation/regulation-rules.d.ts +83 -0
- package/dist-server/service/regulation/regulation-rules.js +170 -0
- package/dist-server/service/regulation/regulation-rules.js.map +1 -0
- package/dist-server/service/regulation/regulation-service.d.ts +63 -0
- package/dist-server/service/regulation/regulation-service.js +365 -0
- package/dist-server/service/regulation/regulation-service.js.map +1 -0
- package/dist-server/service/regulation/regulation-type.d.ts +61 -0
- package/dist-server/service/regulation/regulation-type.js +226 -0
- package/dist-server/service/regulation/regulation-type.js.map +1 -0
- package/dist-server/service/regulation/regulation.d.ts +113 -0
- package/dist-server/service/regulation/regulation.js +382 -0
- package/dist-server/service/regulation/regulation.js.map +1 -0
- package/dist-server/service/seal-use/index.d.ts +5 -0
- package/dist-server/service/seal-use/index.js +9 -0
- package/dist-server/service/seal-use/index.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-mutation.d.ts +8 -0
- package/dist-server/service/seal-use/seal-use-mutation.js +69 -0
- package/dist-server/service/seal-use/seal-use-mutation.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-query.d.ts +14 -0
- package/dist-server/service/seal-use/seal-use-query.js +100 -0
- package/dist-server/service/seal-use/seal-use-query.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-rules.d.ts +35 -0
- package/dist-server/service/seal-use/seal-use-rules.js +64 -0
- package/dist-server/service/seal-use/seal-use-rules.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-service.d.ts +20 -0
- package/dist-server/service/seal-use/seal-use-service.js +168 -0
- package/dist-server/service/seal-use/seal-use-service.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-type.d.ts +24 -0
- package/dist-server/service/seal-use/seal-use-type.js +93 -0
- package/dist-server/service/seal-use/seal-use-type.js.map +1 -0
- package/dist-server/service/seal-use/seal-use.d.ts +57 -0
- package/dist-server/service/seal-use/seal-use.js +181 -0
- package/dist-server/service/seal-use/seal-use.js.map +1 -0
- package/dist-server/service/training/index.d.ts +5 -0
- package/dist-server/service/training/index.js +9 -0
- package/dist-server/service/training/index.js.map +1 -0
- package/dist-server/service/training/training-checks.d.ts +20 -0
- package/dist-server/service/training/training-checks.js +56 -0
- package/dist-server/service/training/training-checks.js.map +1 -0
- package/dist-server/service/training/training-kinds.d.ts +24 -0
- package/dist-server/service/training/training-kinds.js +42 -0
- package/dist-server/service/training/training-kinds.js.map +1 -0
- package/dist-server/service/training/training-mutation.d.ts +14 -0
- package/dist-server/service/training/training-mutation.js +140 -0
- package/dist-server/service/training/training-mutation.js.map +1 -0
- package/dist-server/service/training/training-query.d.ts +21 -0
- package/dist-server/service/training/training-query.js +196 -0
- package/dist-server/service/training/training-query.js.map +1 -0
- package/dist-server/service/training/training-read.d.ts +5 -0
- package/dist-server/service/training/training-read.js +35 -0
- package/dist-server/service/training/training-read.js.map +1 -0
- package/dist-server/service/training/training-register.d.ts +1 -0
- package/dist-server/service/training/training-register.js +27 -0
- package/dist-server/service/training/training-register.js.map +1 -0
- package/dist-server/service/training/training-rules.d.ts +72 -0
- package/dist-server/service/training/training-rules.js +143 -0
- package/dist-server/service/training/training-rules.js.map +1 -0
- package/dist-server/service/training/training-service.d.ts +98 -0
- package/dist-server/service/training/training-service.js +455 -0
- package/dist-server/service/training/training-service.js.map +1 -0
- package/dist-server/service/training/training-type.d.ts +94 -0
- package/dist-server/service/training/training-type.js +352 -0
- package/dist-server/service/training/training-type.js.map +1 -0
- package/dist-server/service/training/training.d.ts +127 -0
- package/dist-server/service/training/training.js +448 -0
- package/dist-server/service/training/training.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +61 -4
- package/things-factory.config.js +19 -0
- package/translations/en.json +612 -0
- package/translations/es.json +612 -0
- package/translations/ja.json +612 -0
- package/translations/ko.json +612 -0
- package/translations/ms.json +612 -0
- package/translations/zh.json +612 -0
- package/README.md +0 -3
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Attachment } from '@things-factory/attachment-base';
|
|
2
|
+
import { User } from '@things-factory/auth-base';
|
|
3
|
+
import { Department, Employee } from '@things-factory/organization';
|
|
4
|
+
import { ListParam } from '@things-factory/shell';
|
|
5
|
+
import { LegalCentreChange, LegalRegistration, LegalResearcher } from './legal-registration';
|
|
6
|
+
import { LegalCentreChangeList, LegalRegistrationKind, LegalRegistrationList, LegalResearcherList, LinkedAsset } from './legal-registration-type';
|
|
7
|
+
export declare class LegalRegistrationQuery {
|
|
8
|
+
legalRegistrations(params: ListParam, context: ResolverContext): Promise<LegalRegistrationList>;
|
|
9
|
+
legalRegistrationKinds(): LegalRegistrationKind[];
|
|
10
|
+
legalResearchers(registrationId: string, context: ResolverContext): Promise<LegalResearcherList>;
|
|
11
|
+
legalCentreChanges(registrationId: string, context: ResolverContext): Promise<LegalCentreChangeList>;
|
|
12
|
+
legalRegistrationFiles(id: string, context: ResolverContext): Promise<Attachment[]>;
|
|
13
|
+
inCharge(row: LegalRegistration): Promise<Employee | null>;
|
|
14
|
+
department(row: LegalRegistration): Promise<Department | null>;
|
|
15
|
+
asset(row: LegalRegistration): Promise<LinkedAsset | null>;
|
|
16
|
+
creator(row: LegalRegistration): Promise<User | null>;
|
|
17
|
+
updater(row: LegalRegistration): Promise<User | null>;
|
|
18
|
+
}
|
|
19
|
+
export declare class LegalResearcherQuery {
|
|
20
|
+
employee(row: LegalResearcher): Promise<Employee | null>;
|
|
21
|
+
}
|
|
22
|
+
export declare class LegalCentreChangeQuery {
|
|
23
|
+
employee(row: LegalCentreChange): Promise<Employee | null>;
|
|
24
|
+
registration(row: LegalCentreChange): Promise<LegalRegistration | null>;
|
|
25
|
+
updater(row: LegalCentreChange): Promise<User | null>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LegalCentreChangeQuery = exports.LegalResearcherQuery = exports.LegalRegistrationQuery = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
|
6
|
+
const asset_1 = require("@things-factory/asset");
|
|
7
|
+
const attachment_base_1 = require("@things-factory/attachment-base");
|
|
8
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
9
|
+
const organization_1 = require("@things-factory/organization");
|
|
10
|
+
const shell_1 = require("@things-factory/shell");
|
|
11
|
+
const legal_record_support_1 = require("../legal-record/legal-record-support");
|
|
12
|
+
const legal_registration_1 = require("./legal-registration");
|
|
13
|
+
const legal_registration_rules_1 = require("./legal-registration-rules");
|
|
14
|
+
const legal_registration_service_1 = require("./legal-registration-service");
|
|
15
|
+
const legal_registration_type_1 = require("./legal-registration-type");
|
|
16
|
+
const byId = async (type, id) => (id ? await (0, shell_1.getRepository)(type).findOne({ where: { id } }) : null);
|
|
17
|
+
let LegalRegistrationQuery = class LegalRegistrationQuery {
|
|
18
|
+
async legalRegistrations(params, context) {
|
|
19
|
+
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
|
20
|
+
domain: context.state.domain,
|
|
21
|
+
params,
|
|
22
|
+
repository: (0, shell_1.getRepository)(legal_registration_1.LegalRegistration),
|
|
23
|
+
searchables: ['title', 'number', 'authority', 'notes'],
|
|
24
|
+
alias: 'registration',
|
|
25
|
+
defaultSortings: [{ name: 'kind' }, { name: 'expiresOn' }]
|
|
26
|
+
});
|
|
27
|
+
const [items, total] = await queryBuilder.getManyAndCount();
|
|
28
|
+
return { items, total };
|
|
29
|
+
}
|
|
30
|
+
legalRegistrationKinds() {
|
|
31
|
+
return legal_registration_rules_1.LEGAL_REGISTRATION_KINDS.map(one => ({ ...one, yearlyFee: !!one.yearlyFee, researchers: !!one.researchers }));
|
|
32
|
+
}
|
|
33
|
+
async legalResearchers(registrationId, context) {
|
|
34
|
+
const items = await (0, shell_1.getRepository)(legal_registration_1.LegalResearcher).find({ where: { domain: { id: context.state.domain.id }, registration: { id: registrationId } }, order: { toOn: 'DESC', fromOn: 'ASC' } });
|
|
35
|
+
items.sort((a, b) => Number(!!a.toOn) - Number(!!b.toOn));
|
|
36
|
+
return { items, total: items.length };
|
|
37
|
+
}
|
|
38
|
+
async legalCentreChanges(registrationId, context) {
|
|
39
|
+
const where = { domain: { id: context.state.domain.id }, ...(registrationId ? { registration: { id: registrationId } } : {}) };
|
|
40
|
+
const items = await (0, shell_1.getRepository)(legal_registration_1.LegalCentreChange).find({ where, order: { dueOn: 'ASC' } });
|
|
41
|
+
items.sort((a, b) => Number(!!a.filedOn) - Number(!!b.filedOn));
|
|
42
|
+
return { items, total: items.length };
|
|
43
|
+
}
|
|
44
|
+
async legalRegistrationFiles(id, context) {
|
|
45
|
+
return await (0, legal_record_support_1.filesOf)((0, legal_record_support_1.managerOf)(context), context.state.domain, legal_registration_service_1.LEGAL_REGISTRATION_REF_TYPE, id);
|
|
46
|
+
}
|
|
47
|
+
async inCharge(row) {
|
|
48
|
+
return await byId(organization_1.Employee, row.inChargeId);
|
|
49
|
+
}
|
|
50
|
+
async department(row) {
|
|
51
|
+
return await byId(organization_1.Department, row.departmentId);
|
|
52
|
+
}
|
|
53
|
+
async asset(row) {
|
|
54
|
+
const one = await byId(asset_1.Asset, row.assetId);
|
|
55
|
+
return one ? { id: one.id, name: one.name, kind: one.kind } : null;
|
|
56
|
+
}
|
|
57
|
+
async creator(row) {
|
|
58
|
+
return await byId(auth_base_1.User, row.creatorId);
|
|
59
|
+
}
|
|
60
|
+
async updater(row) {
|
|
61
|
+
return await byId(auth_base_1.User, row.updaterId);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.LegalRegistrationQuery = LegalRegistrationQuery;
|
|
65
|
+
tslib_1.__decorate([
|
|
66
|
+
(0, type_graphql_1.Directive)('@privilege(category: "legal-registration", privilege: "query", domainOwnerGranted: true)'),
|
|
67
|
+
(0, type_graphql_1.Query)(returns => legal_registration_type_1.LegalRegistrationList, { description: '인증 · 등록 · 지식재산 대장 - the registrations the company holds (ADR-0187 decision 23)' }),
|
|
68
|
+
tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
|
|
69
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
70
|
+
tslib_1.__metadata("design:type", Function),
|
|
71
|
+
tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
|
|
72
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
73
|
+
], LegalRegistrationQuery.prototype, "legalRegistrations", null);
|
|
74
|
+
tslib_1.__decorate([
|
|
75
|
+
(0, type_graphql_1.Directive)('@privilege(category: "legal-registration", privilege: "query", domainOwnerGranted: true)'),
|
|
76
|
+
(0, type_graphql_1.Query)(returns => [legal_registration_type_1.LegalRegistrationKind], { description: 'The kinds of registration the module declares, with their deadline rules' }),
|
|
77
|
+
tslib_1.__metadata("design:type", Function),
|
|
78
|
+
tslib_1.__metadata("design:paramtypes", []),
|
|
79
|
+
tslib_1.__metadata("design:returntype", Array)
|
|
80
|
+
], LegalRegistrationQuery.prototype, "legalRegistrationKinds", null);
|
|
81
|
+
tslib_1.__decorate([
|
|
82
|
+
(0, type_graphql_1.Directive)('@privilege(category: "legal-registration", privilege: "query", domainOwnerGranted: true)'),
|
|
83
|
+
(0, type_graphql_1.Query)(returns => legal_registration_type_1.LegalResearcherList, { description: 'The researchers of a research centre, those listed now first' }),
|
|
84
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('registrationId')),
|
|
85
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
86
|
+
tslib_1.__metadata("design:type", Function),
|
|
87
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
88
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
89
|
+
], LegalRegistrationQuery.prototype, "legalResearchers", null);
|
|
90
|
+
tslib_1.__decorate([
|
|
91
|
+
(0, type_graphql_1.Directive)('@privilege(category: "legal-registration", privilege: "query", domainOwnerGranted: true)'),
|
|
92
|
+
(0, type_graphql_1.Query)(returns => legal_registration_type_1.LegalCentreChangeList, { description: "The changes a research centre's organization made it file - all centres when none is named, the unfiled first" }),
|
|
93
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('registrationId', { nullable: true })),
|
|
94
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
95
|
+
tslib_1.__metadata("design:type", Function),
|
|
96
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
97
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
98
|
+
], LegalRegistrationQuery.prototype, "legalCentreChanges", null);
|
|
99
|
+
tslib_1.__decorate([
|
|
100
|
+
(0, type_graphql_1.Directive)('@privilege(category: "legal-registration", privilege: "query", domainOwnerGranted: true)'),
|
|
101
|
+
(0, type_graphql_1.Query)(returns => [attachment_base_1.Attachment], { description: 'The files of a registration - its certificate, the filings' }),
|
|
102
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
103
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
104
|
+
tslib_1.__metadata("design:type", Function),
|
|
105
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
106
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
107
|
+
], LegalRegistrationQuery.prototype, "legalRegistrationFiles", null);
|
|
108
|
+
tslib_1.__decorate([
|
|
109
|
+
(0, type_graphql_1.FieldResolver)(type => organization_1.Employee, { nullable: true, description: 'The employee in charge' }),
|
|
110
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
111
|
+
tslib_1.__metadata("design:type", Function),
|
|
112
|
+
tslib_1.__metadata("design:paramtypes", [legal_registration_1.LegalRegistration]),
|
|
113
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
114
|
+
], LegalRegistrationQuery.prototype, "inCharge", null);
|
|
115
|
+
tslib_1.__decorate([
|
|
116
|
+
(0, type_graphql_1.FieldResolver)(type => organization_1.Department, { nullable: true, description: "A research centre's department" }),
|
|
117
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
118
|
+
tslib_1.__metadata("design:type", Function),
|
|
119
|
+
tslib_1.__metadata("design:paramtypes", [legal_registration_1.LegalRegistration]),
|
|
120
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
121
|
+
], LegalRegistrationQuery.prototype, "department", null);
|
|
122
|
+
tslib_1.__decorate([
|
|
123
|
+
(0, type_graphql_1.FieldResolver)(type => legal_registration_type_1.LinkedAsset, { nullable: true, description: 'The asset register row it is - its name, none of its amounts' }),
|
|
124
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
125
|
+
tslib_1.__metadata("design:type", Function),
|
|
126
|
+
tslib_1.__metadata("design:paramtypes", [legal_registration_1.LegalRegistration]),
|
|
127
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
128
|
+
], LegalRegistrationQuery.prototype, "asset", null);
|
|
129
|
+
tslib_1.__decorate([
|
|
130
|
+
(0, type_graphql_1.FieldResolver)(type => auth_base_1.User, { nullable: true, description: 'Who wrote it' }),
|
|
131
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
132
|
+
tslib_1.__metadata("design:type", Function),
|
|
133
|
+
tslib_1.__metadata("design:paramtypes", [legal_registration_1.LegalRegistration]),
|
|
134
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
135
|
+
], LegalRegistrationQuery.prototype, "creator", null);
|
|
136
|
+
tslib_1.__decorate([
|
|
137
|
+
(0, type_graphql_1.FieldResolver)(type => auth_base_1.User, { nullable: true, description: 'Who last changed it' }),
|
|
138
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
139
|
+
tslib_1.__metadata("design:type", Function),
|
|
140
|
+
tslib_1.__metadata("design:paramtypes", [legal_registration_1.LegalRegistration]),
|
|
141
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
142
|
+
], LegalRegistrationQuery.prototype, "updater", null);
|
|
143
|
+
exports.LegalRegistrationQuery = LegalRegistrationQuery = tslib_1.__decorate([
|
|
144
|
+
(0, type_graphql_1.Resolver)(legal_registration_1.LegalRegistration),
|
|
145
|
+
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
146
|
+
], LegalRegistrationQuery);
|
|
147
|
+
let LegalResearcherQuery = class LegalResearcherQuery {
|
|
148
|
+
async employee(row) {
|
|
149
|
+
return await byId(organization_1.Employee, row.employeeId);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
exports.LegalResearcherQuery = LegalResearcherQuery;
|
|
153
|
+
tslib_1.__decorate([
|
|
154
|
+
(0, type_graphql_1.FieldResolver)(type => organization_1.Employee, { nullable: true, description: 'The researcher' }),
|
|
155
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
156
|
+
tslib_1.__metadata("design:type", Function),
|
|
157
|
+
tslib_1.__metadata("design:paramtypes", [legal_registration_1.LegalResearcher]),
|
|
158
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
159
|
+
], LegalResearcherQuery.prototype, "employee", null);
|
|
160
|
+
exports.LegalResearcherQuery = LegalResearcherQuery = tslib_1.__decorate([
|
|
161
|
+
(0, type_graphql_1.Resolver)(legal_registration_1.LegalResearcher)
|
|
162
|
+
], LegalResearcherQuery);
|
|
163
|
+
let LegalCentreChangeQuery = class LegalCentreChangeQuery {
|
|
164
|
+
async employee(row) {
|
|
165
|
+
return await byId(organization_1.Employee, row.employeeId);
|
|
166
|
+
}
|
|
167
|
+
async registration(row) {
|
|
168
|
+
return await byId(legal_registration_1.LegalRegistration, row.registrationId);
|
|
169
|
+
}
|
|
170
|
+
async updater(row) {
|
|
171
|
+
return await byId(auth_base_1.User, row.updaterId);
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
exports.LegalCentreChangeQuery = LegalCentreChangeQuery;
|
|
175
|
+
tslib_1.__decorate([
|
|
176
|
+
(0, type_graphql_1.FieldResolver)(type => organization_1.Employee, { nullable: true, description: 'The employee the change is of' }),
|
|
177
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
178
|
+
tslib_1.__metadata("design:type", Function),
|
|
179
|
+
tslib_1.__metadata("design:paramtypes", [legal_registration_1.LegalCentreChange]),
|
|
180
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
181
|
+
], LegalCentreChangeQuery.prototype, "employee", null);
|
|
182
|
+
tslib_1.__decorate([
|
|
183
|
+
(0, type_graphql_1.FieldResolver)(type => legal_registration_1.LegalRegistration, { nullable: true, description: 'The research centre' }),
|
|
184
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
185
|
+
tslib_1.__metadata("design:type", Function),
|
|
186
|
+
tslib_1.__metadata("design:paramtypes", [legal_registration_1.LegalCentreChange]),
|
|
187
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
188
|
+
], LegalCentreChangeQuery.prototype, "registration", null);
|
|
189
|
+
tslib_1.__decorate([
|
|
190
|
+
(0, type_graphql_1.FieldResolver)(type => auth_base_1.User, { nullable: true, description: 'Who wrote the filing' }),
|
|
191
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
192
|
+
tslib_1.__metadata("design:type", Function),
|
|
193
|
+
tslib_1.__metadata("design:paramtypes", [legal_registration_1.LegalCentreChange]),
|
|
194
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
195
|
+
], LegalCentreChangeQuery.prototype, "updater", null);
|
|
196
|
+
exports.LegalCentreChangeQuery = LegalCentreChangeQuery = tslib_1.__decorate([
|
|
197
|
+
(0, type_graphql_1.Resolver)(legal_registration_1.LegalCentreChange)
|
|
198
|
+
], LegalCentreChangeQuery);
|
|
199
|
+
//# sourceMappingURL=legal-registration-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legal-registration-query.js","sourceRoot":"","sources":["../../../server/service/legal-registration/legal-registration-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root, UseMiddleware } from 'type-graphql'\n\nimport { Asset } from '@things-factory/asset'\nimport { Attachment } from '@things-factory/attachment-base'\nimport { User } from '@things-factory/auth-base'\nimport { Department, Employee } from '@things-factory/organization'\nimport { getQueryBuilderFromListParams, getRepository, ListParam, SpeakRefusals } from '@things-factory/shell'\n\nimport { filesOf, managerOf } from '../legal-record/legal-record-support'\nimport { LegalCentreChange, LegalRegistration, LegalResearcher } from './legal-registration'\nimport { LEGAL_REGISTRATION_KINDS } from './legal-registration-rules'\nimport { LEGAL_REGISTRATION_REF_TYPE } from './legal-registration-service'\nimport { LegalCentreChangeList, LegalRegistrationKind, LegalRegistrationList, LegalResearcherList, LinkedAsset } from './legal-registration-type'\n\nconst byId = async <T>(type: any, id?: string | null): Promise<T | null> => (id ? await getRepository(type).findOne({ where: { id } }) : null) as T | null\n\n@Resolver(LegalRegistration)\n@UseMiddleware(SpeakRefusals)\nexport class LegalRegistrationQuery {\n @Directive('@privilege(category: \"legal-registration\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => LegalRegistrationList, { description: '인증 · 등록 · 지식재산 대장 - the registrations the company holds (ADR-0187 decision 23)' })\n async legalRegistrations(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<LegalRegistrationList> {\n const queryBuilder = getQueryBuilderFromListParams({\n domain: context.state.domain,\n params,\n repository: getRepository(LegalRegistration),\n searchables: ['title', 'number', 'authority', 'notes'],\n alias: 'registration',\n defaultSortings: [{ name: 'kind' }, { name: 'expiresOn' }]\n })\n const [items, total] = await queryBuilder.getManyAndCount()\n return { items, total }\n }\n\n @Directive('@privilege(category: \"legal-registration\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => [LegalRegistrationKind], { description: 'The kinds of registration the module declares, with their deadline rules' })\n legalRegistrationKinds(): LegalRegistrationKind[] {\n return LEGAL_REGISTRATION_KINDS.map(one => ({ ...one, yearlyFee: !!one.yearlyFee, researchers: !!one.researchers }))\n }\n\n @Directive('@privilege(category: \"legal-registration\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => LegalResearcherList, { description: 'The researchers of a research centre, those listed now first' })\n async legalResearchers(@Arg('registrationId') registrationId: string, @Ctx() context: ResolverContext): Promise<LegalResearcherList> {\n const items = await getRepository(LegalResearcher).find({ where: { domain: { id: context.state.domain.id }, registration: { id: registrationId } } as any, order: { toOn: 'DESC', fromOn: 'ASC' } as any })\n items.sort((a, b) => Number(!!a.toOn) - Number(!!b.toOn))\n return { items, total: items.length }\n }\n\n @Directive('@privilege(category: \"legal-registration\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => LegalCentreChangeList, { description: \"The changes a research centre's organization made it file - all centres when none is named, the unfiled first\" })\n async legalCentreChanges(@Arg('registrationId', { nullable: true }) registrationId: string, @Ctx() context: ResolverContext): Promise<LegalCentreChangeList> {\n const where: any = { domain: { id: context.state.domain.id }, ...(registrationId ? { registration: { id: registrationId } } : {}) }\n const items = await getRepository(LegalCentreChange).find({ where, order: { dueOn: 'ASC' } as any })\n items.sort((a, b) => Number(!!a.filedOn) - Number(!!b.filedOn))\n return { items, total: items.length }\n }\n\n @Directive('@privilege(category: \"legal-registration\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => [Attachment], { description: 'The files of a registration - its certificate, the filings' })\n async legalRegistrationFiles(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Attachment[]> {\n return await filesOf(managerOf(context), context.state.domain, LEGAL_REGISTRATION_REF_TYPE, id)\n }\n\n @FieldResolver(type => Employee, { nullable: true, description: 'The employee in charge' })\n async inCharge(@Root() row: LegalRegistration): Promise<Employee | null> {\n return await byId<Employee>(Employee, row.inChargeId)\n }\n\n @FieldResolver(type => Department, { nullable: true, description: \"A research centre's department\" })\n async department(@Root() row: LegalRegistration): Promise<Department | null> {\n return await byId<Department>(Department, row.departmentId)\n }\n\n @FieldResolver(type => LinkedAsset, { nullable: true, description: 'The asset register row it is - its name, none of its amounts' })\n async asset(@Root() row: LegalRegistration): Promise<LinkedAsset | null> {\n const one = await byId<Asset>(Asset, row.assetId)\n return one ? { id: one.id, name: one.name, kind: one.kind } : null\n }\n\n @FieldResolver(type => User, { nullable: true, description: 'Who wrote it' })\n async creator(@Root() row: LegalRegistration): Promise<User | null> {\n return await byId<User>(User, row.creatorId)\n }\n\n @FieldResolver(type => User, { nullable: true, description: 'Who last changed it' })\n async updater(@Root() row: LegalRegistration): Promise<User | null> {\n return await byId<User>(User, row.updaterId)\n }\n}\n\n@Resolver(LegalResearcher)\nexport class LegalResearcherQuery {\n @FieldResolver(type => Employee, { nullable: true, description: 'The researcher' })\n async employee(@Root() row: LegalResearcher): Promise<Employee | null> {\n return await byId<Employee>(Employee, row.employeeId)\n }\n}\n\n@Resolver(LegalCentreChange)\nexport class LegalCentreChangeQuery {\n @FieldResolver(type => Employee, { nullable: true, description: 'The employee the change is of' })\n async employee(@Root() row: LegalCentreChange): Promise<Employee | null> {\n return await byId<Employee>(Employee, row.employeeId)\n }\n\n @FieldResolver(type => LegalRegistration, { nullable: true, description: 'The research centre' })\n async registration(@Root() row: LegalCentreChange): Promise<LegalRegistration | null> {\n return await byId<LegalRegistration>(LegalRegistration, row.registrationId)\n }\n\n @FieldResolver(type => User, { nullable: true, description: 'Who wrote the filing' })\n async updater(@Root() row: LegalCentreChange): Promise<User | null> {\n return await byId<User>(User, row.updaterId)\n }\n}\n"]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Refusal } from '@things-factory/shell';
|
|
2
|
+
export interface LegalRegistrationKindRule {
|
|
3
|
+
code: string;
|
|
4
|
+
/** Years a grant stands when the law sets them - its expiry is counted from the day granted unless given. */
|
|
5
|
+
validYears?: number;
|
|
6
|
+
/** Months before expiry a renewal may be asked - the renewal-from day is counted from the expiry unless given. */
|
|
7
|
+
renewFromMonths?: number;
|
|
8
|
+
/** Kept by a fee due every year - the next due day is written on the row. */
|
|
9
|
+
yearlyFee?: boolean;
|
|
10
|
+
/** A research centre or an R&D department - its researchers are listed and their changes filed within 30 days. */
|
|
11
|
+
researchers?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const LEGAL_REGISTRATION_KINDS: LegalRegistrationKindRule[];
|
|
14
|
+
export declare const legalRegistrationKindOf: (code?: string | null) => LegalRegistrationKindRule;
|
|
15
|
+
/** Days a research centre's change is filed within, from the day it arose ⚖. */
|
|
16
|
+
export declare const CENTRE_CHANGE_FILING_DAYS = 30;
|
|
17
|
+
/** How far ahead an expiry is raised by the management check. */
|
|
18
|
+
export declare const REGISTRATION_EXPIRY_NOTICE_DAYS = 90;
|
|
19
|
+
/** How far ahead a fee due is raised. */
|
|
20
|
+
export declare const REGISTRATION_FEE_NOTICE_DAYS = 30;
|
|
21
|
+
export interface LegalRegistrationInput {
|
|
22
|
+
kind?: string | null;
|
|
23
|
+
grantedOn?: string | null;
|
|
24
|
+
expiresOn?: string | null;
|
|
25
|
+
renewalFromOn?: string | null;
|
|
26
|
+
nextFeeDueOn?: string | null;
|
|
27
|
+
endedOn?: string | null;
|
|
28
|
+
}
|
|
29
|
+
/** What a written registration asks for before it is kept, or nothing. */
|
|
30
|
+
export declare function legalRegistrationRefusal(input: LegalRegistrationInput): Refusal | null;
|
|
31
|
+
/** The expiry - as given, or counted from the day granted where the kind's term is set (3 years from 2026-01-10 is 2029-01-09). */
|
|
32
|
+
export declare function expiresOnOf(kind: string, grantedOn?: string | null, given?: string | null): string | null;
|
|
33
|
+
/** The day a renewal may be asked from - as given, or counted back from the expiry where the kind sets it. */
|
|
34
|
+
export declare function renewalFromOnOf(kind: string, expiresOn?: string | null, given?: string | null): string | null;
|
|
35
|
+
export interface LegalRegistrationDays {
|
|
36
|
+
expiresOn?: string | null;
|
|
37
|
+
renewalFromOn?: string | null;
|
|
38
|
+
nextFeeDueOn?: string | null;
|
|
39
|
+
endedOn?: string | null;
|
|
40
|
+
}
|
|
41
|
+
/** Expiring within 90 days, or past its expiry - a registration given up or struck off is not. */
|
|
42
|
+
export declare const registrationExpiringSoon: (row: LegalRegistrationDays, today: string) => boolean;
|
|
43
|
+
/** Inside its renewal window - from the renewal-from day to the expiry. */
|
|
44
|
+
export declare const registrationInRenewalWindow: (row: LegalRegistrationDays, today: string) => boolean;
|
|
45
|
+
/** A fee due within 30 days, or past its day. */
|
|
46
|
+
export declare const registrationFeeDueSoon: (row: LegalRegistrationDays, today: string) => boolean;
|
|
47
|
+
/** Why a research centre has a change to file. */
|
|
48
|
+
export declare enum CentreChangeReason {
|
|
49
|
+
/** 연구원 퇴사. */
|
|
50
|
+
LEFT = "LEFT",
|
|
51
|
+
/** 연구원이 연구소 부서 밖으로 이동. */
|
|
52
|
+
MOVED_OUT = "MOVED_OUT",
|
|
53
|
+
/** 연구소 부서로 입사 · 이동. */
|
|
54
|
+
JOINED = "JOINED"
|
|
55
|
+
}
|
|
56
|
+
/** An employee as organization holds them, before or after a change. */
|
|
57
|
+
export interface CentreEmployeeState {
|
|
58
|
+
departmentId?: string | null;
|
|
59
|
+
hiredOn?: string | null;
|
|
60
|
+
retiredOn?: string | null;
|
|
61
|
+
active?: boolean | null;
|
|
62
|
+
}
|
|
63
|
+
/** A research centre as the change is judged against: its department, and its researchers now. */
|
|
64
|
+
export interface CentreOfChange {
|
|
65
|
+
id: string;
|
|
66
|
+
departmentId?: string | null;
|
|
67
|
+
researcherIds: string[];
|
|
68
|
+
}
|
|
69
|
+
export interface CentreChange {
|
|
70
|
+
centreId: string;
|
|
71
|
+
reason: CentreChangeReason;
|
|
72
|
+
aroseOn: string;
|
|
73
|
+
dueOn: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The changes an employee's change makes the research centres file (ADR-0187 decision 23): a researcher leaving, a
|
|
77
|
+
* researcher moving out of the centre's department, someone joining it or moving into it. `before` is null for a new
|
|
78
|
+
* employee. Each is due 30 days from the day it arose.
|
|
79
|
+
*/
|
|
80
|
+
export declare function centreChangesOf(employeeId: string, before: CentreEmployeeState | null, after: CentreEmployeeState, centres: CentreOfChange[], today: string): CentreChange[];
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CentreChangeReason = exports.registrationFeeDueSoon = exports.registrationInRenewalWindow = exports.registrationExpiringSoon = exports.REGISTRATION_FEE_NOTICE_DAYS = exports.REGISTRATION_EXPIRY_NOTICE_DAYS = exports.CENTRE_CHANGE_FILING_DAYS = exports.legalRegistrationKindOf = exports.LEGAL_REGISTRATION_KINDS = void 0;
|
|
4
|
+
exports.legalRegistrationRefusal = legalRegistrationRefusal;
|
|
5
|
+
exports.expiresOnOf = expiresOnOf;
|
|
6
|
+
exports.renewalFromOnOf = renewalFromOnOf;
|
|
7
|
+
exports.centreChangesOf = centreChangesOf;
|
|
8
|
+
const shell_1 = require("@things-factory/shell");
|
|
9
|
+
const days_1 = require("../legal-record/days");
|
|
10
|
+
exports.LEGAL_REGISTRATION_KINDS = [
|
|
11
|
+
{ code: 'BUSINESS_REGISTRATION' },
|
|
12
|
+
{ code: 'VENTURE', validYears: 3, renewFromMonths: 2 },
|
|
13
|
+
{ code: 'RESEARCH_CENTRE', researchers: true },
|
|
14
|
+
{ code: 'RND_DEPARTMENT', researchers: true },
|
|
15
|
+
{ code: 'SME' },
|
|
16
|
+
{ code: 'INNOBIZ' },
|
|
17
|
+
{ code: 'DIRECT_PRODUCTION' },
|
|
18
|
+
{ code: 'SOFTWARE_BUSINESS' },
|
|
19
|
+
{ code: 'PATENT', yearlyFee: true },
|
|
20
|
+
{ code: 'TRADEMARK', validYears: 10, renewFromMonths: 12 },
|
|
21
|
+
{ code: 'OTHER' }
|
|
22
|
+
];
|
|
23
|
+
const legalRegistrationKindOf = (code) => exports.LEGAL_REGISTRATION_KINDS.find(one => one.code === code) ?? null;
|
|
24
|
+
exports.legalRegistrationKindOf = legalRegistrationKindOf;
|
|
25
|
+
/** Days a research centre's change is filed within, from the day it arose ⚖. */
|
|
26
|
+
exports.CENTRE_CHANGE_FILING_DAYS = 30;
|
|
27
|
+
/** How far ahead an expiry is raised by the management check. */
|
|
28
|
+
exports.REGISTRATION_EXPIRY_NOTICE_DAYS = 90;
|
|
29
|
+
/** How far ahead a fee due is raised. */
|
|
30
|
+
exports.REGISTRATION_FEE_NOTICE_DAYS = 30;
|
|
31
|
+
/** What a written registration asks for before it is kept, or nothing. */
|
|
32
|
+
function legalRegistrationRefusal(input) {
|
|
33
|
+
if (!(0, exports.legalRegistrationKindOf)(input.kind))
|
|
34
|
+
return new shell_1.Refusal('legal-registration-kind-required', { kinds: exports.LEGAL_REGISTRATION_KINDS.map(one => one.code).join(', ') }, 'pick the kind of registration');
|
|
35
|
+
for (const field of ['grantedOn', 'expiresOn', 'renewalFromOn', 'nextFeeDueOn', 'endedOn']) {
|
|
36
|
+
const value = input[field];
|
|
37
|
+
if (value && !(0, days_1.isDay)(value))
|
|
38
|
+
return new shell_1.Refusal('legal-registration-day-invalid', { field }, `${field} is a day, YYYY-MM-DD`);
|
|
39
|
+
}
|
|
40
|
+
if (input.grantedOn && input.expiresOn && input.expiresOn < input.grantedOn)
|
|
41
|
+
return new shell_1.Refusal('legal-registration-expiry-before-grant', {}, 'it cannot expire before it was granted');
|
|
42
|
+
if (input.renewalFromOn && input.expiresOn && input.renewalFromOn > input.expiresOn)
|
|
43
|
+
return new shell_1.Refusal('legal-registration-renewal-after-expiry', {}, 'the renewal window opens on or before the expiry');
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/** The expiry - as given, or counted from the day granted where the kind's term is set (3 years from 2026-01-10 is 2029-01-09). */
|
|
47
|
+
function expiresOnOf(kind, grantedOn, given) {
|
|
48
|
+
if (given)
|
|
49
|
+
return given;
|
|
50
|
+
const rule = (0, exports.legalRegistrationKindOf)(kind);
|
|
51
|
+
return rule?.validYears && grantedOn ? (0, days_1.addDays)((0, days_1.addMonths)(grantedOn, rule.validYears * 12), -1) : null;
|
|
52
|
+
}
|
|
53
|
+
/** The day a renewal may be asked from - as given, or counted back from the expiry where the kind sets it. */
|
|
54
|
+
function renewalFromOnOf(kind, expiresOn, given) {
|
|
55
|
+
if (given)
|
|
56
|
+
return given;
|
|
57
|
+
const rule = (0, exports.legalRegistrationKindOf)(kind);
|
|
58
|
+
return rule?.renewFromMonths && expiresOn ? (0, days_1.addMonths)(expiresOn, -rule.renewFromMonths) : null;
|
|
59
|
+
}
|
|
60
|
+
/** Expiring within 90 days, or past its expiry - a registration given up or struck off is not. */
|
|
61
|
+
const registrationExpiringSoon = (row, today) => !row.endedOn && !!row.expiresOn && row.expiresOn <= (0, days_1.addDays)(today, exports.REGISTRATION_EXPIRY_NOTICE_DAYS);
|
|
62
|
+
exports.registrationExpiringSoon = registrationExpiringSoon;
|
|
63
|
+
/** Inside its renewal window - from the renewal-from day to the expiry. */
|
|
64
|
+
const registrationInRenewalWindow = (row, today) => !row.endedOn && !!row.renewalFromOn && row.renewalFromOn <= today && (!row.expiresOn || today <= row.expiresOn);
|
|
65
|
+
exports.registrationInRenewalWindow = registrationInRenewalWindow;
|
|
66
|
+
/** A fee due within 30 days, or past its day. */
|
|
67
|
+
const registrationFeeDueSoon = (row, today) => !row.endedOn && !!row.nextFeeDueOn && row.nextFeeDueOn <= (0, days_1.addDays)(today, exports.REGISTRATION_FEE_NOTICE_DAYS);
|
|
68
|
+
exports.registrationFeeDueSoon = registrationFeeDueSoon;
|
|
69
|
+
/** Why a research centre has a change to file. */
|
|
70
|
+
var CentreChangeReason;
|
|
71
|
+
(function (CentreChangeReason) {
|
|
72
|
+
/** 연구원 퇴사. */
|
|
73
|
+
CentreChangeReason["LEFT"] = "LEFT";
|
|
74
|
+
/** 연구원이 연구소 부서 밖으로 이동. */
|
|
75
|
+
CentreChangeReason["MOVED_OUT"] = "MOVED_OUT";
|
|
76
|
+
/** 연구소 부서로 입사 · 이동. */
|
|
77
|
+
CentreChangeReason["JOINED"] = "JOINED";
|
|
78
|
+
})(CentreChangeReason || (exports.CentreChangeReason = CentreChangeReason = {}));
|
|
79
|
+
const gone = (one) => !!one && (!!one.retiredOn || one.active === false);
|
|
80
|
+
/**
|
|
81
|
+
* The changes an employee's change makes the research centres file (ADR-0187 decision 23): a researcher leaving, a
|
|
82
|
+
* researcher moving out of the centre's department, someone joining it or moving into it. `before` is null for a new
|
|
83
|
+
* employee. Each is due 30 days from the day it arose.
|
|
84
|
+
*/
|
|
85
|
+
function centreChangesOf(employeeId, before, after, centres, today) {
|
|
86
|
+
const changes = [];
|
|
87
|
+
const add = (centreId, reason, aroseOn) => changes.push({ centreId, reason, aroseOn, dueOn: (0, days_1.addDays)(aroseOn, exports.CENTRE_CHANGE_FILING_DAYS) });
|
|
88
|
+
for (const centre of centres) {
|
|
89
|
+
const researcher = centre.researcherIds.includes(employeeId);
|
|
90
|
+
if (gone(after) && !gone(before)) {
|
|
91
|
+
if (researcher)
|
|
92
|
+
add(centre.id, CentreChangeReason.LEFT, (0, days_1.isDay)(after.retiredOn) ? after.retiredOn : today);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (gone(after) || !centre.departmentId)
|
|
96
|
+
continue;
|
|
97
|
+
const wasIn = before?.departmentId === centre.departmentId;
|
|
98
|
+
const isIn = after.departmentId === centre.departmentId;
|
|
99
|
+
if (researcher && wasIn && !isIn)
|
|
100
|
+
add(centre.id, CentreChangeReason.MOVED_OUT, today);
|
|
101
|
+
else if (!wasIn && isIn)
|
|
102
|
+
add(centre.id, CentreChangeReason.JOINED, !before && (0, days_1.isDay)(after.hiredOn) ? after.hiredOn : today);
|
|
103
|
+
}
|
|
104
|
+
return changes;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=legal-registration-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legal-registration-rules.js","sourceRoot":"","sources":["../../../server/service/legal-registration/legal-registration-rules.ts"],"names":[],"mappings":"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","sourcesContent":["import { Refusal } from '@things-factory/shell'\n\nimport { addDays, addMonths, isDay } from '../legal-record/days'\n\n/*\n * 인증 · 등록 · 지식재산 대장 (ADR-0187 decision 23). The kinds are the module's, each with the deadline rule the law\n * gives it; a domain writes down only those it holds. Pure - the service reads the rows, these count the days. The\n * rules marked ⚖ in the ADR are settled once a 행정사 or 변리사 confirms them.\n */\n\nexport interface LegalRegistrationKindRule {\n code: string\n /** Years a grant stands when the law sets them - its expiry is counted from the day granted unless given. */\n validYears?: number\n /** Months before expiry a renewal may be asked - the renewal-from day is counted from the expiry unless given. */\n renewFromMonths?: number\n /** Kept by a fee due every year - the next due day is written on the row. */\n yearlyFee?: boolean\n /** A research centre or an R&D department - its researchers are listed and their changes filed within 30 days. */\n researchers?: boolean\n}\n\nexport const LEGAL_REGISTRATION_KINDS: LegalRegistrationKindRule[] = [\n { code: 'BUSINESS_REGISTRATION' },\n { code: 'VENTURE', validYears: 3, renewFromMonths: 2 },\n { code: 'RESEARCH_CENTRE', researchers: true },\n { code: 'RND_DEPARTMENT', researchers: true },\n { code: 'SME' },\n { code: 'INNOBIZ' },\n { code: 'DIRECT_PRODUCTION' },\n { code: 'SOFTWARE_BUSINESS' },\n { code: 'PATENT', yearlyFee: true },\n { code: 'TRADEMARK', validYears: 10, renewFromMonths: 12 },\n { code: 'OTHER' }\n]\n\nexport const legalRegistrationKindOf = (code?: string | null) => LEGAL_REGISTRATION_KINDS.find(one => one.code === code) ?? null\n\n/** Days a research centre's change is filed within, from the day it arose ⚖. */\nexport const CENTRE_CHANGE_FILING_DAYS = 30\n/** How far ahead an expiry is raised by the management check. */\nexport const REGISTRATION_EXPIRY_NOTICE_DAYS = 90\n/** How far ahead a fee due is raised. */\nexport const REGISTRATION_FEE_NOTICE_DAYS = 30\n\nexport interface LegalRegistrationInput {\n kind?: string | null\n grantedOn?: string | null\n expiresOn?: string | null\n renewalFromOn?: string | null\n nextFeeDueOn?: string | null\n endedOn?: string | null\n}\n\n/** What a written registration asks for before it is kept, or nothing. */\nexport function legalRegistrationRefusal(input: LegalRegistrationInput): Refusal | null {\n if (!legalRegistrationKindOf(input.kind)) return new Refusal('legal-registration-kind-required', { kinds: LEGAL_REGISTRATION_KINDS.map(one => one.code).join(', ') }, 'pick the kind of registration')\n for (const field of ['grantedOn', 'expiresOn', 'renewalFromOn', 'nextFeeDueOn', 'endedOn'] as const) {\n const value = input[field]\n if (value && !isDay(value)) return new Refusal('legal-registration-day-invalid', { field }, `${field} is a day, YYYY-MM-DD`)\n }\n if (input.grantedOn && input.expiresOn && input.expiresOn < input.grantedOn) return new Refusal('legal-registration-expiry-before-grant', {}, 'it cannot expire before it was granted')\n if (input.renewalFromOn && input.expiresOn && input.renewalFromOn > input.expiresOn) return new Refusal('legal-registration-renewal-after-expiry', {}, 'the renewal window opens on or before the expiry')\n return null\n}\n\n/** The expiry - as given, or counted from the day granted where the kind's term is set (3 years from 2026-01-10 is 2029-01-09). */\nexport function expiresOnOf(kind: string, grantedOn?: string | null, given?: string | null): string | null {\n if (given) return given\n const rule = legalRegistrationKindOf(kind)\n return rule?.validYears && grantedOn ? addDays(addMonths(grantedOn, rule.validYears * 12), -1) : null\n}\n\n/** The day a renewal may be asked from - as given, or counted back from the expiry where the kind sets it. */\nexport function renewalFromOnOf(kind: string, expiresOn?: string | null, given?: string | null): string | null {\n if (given) return given\n const rule = legalRegistrationKindOf(kind)\n return rule?.renewFromMonths && expiresOn ? addMonths(expiresOn, -rule.renewFromMonths) : null\n}\n\nexport interface LegalRegistrationDays {\n expiresOn?: string | null\n renewalFromOn?: string | null\n nextFeeDueOn?: string | null\n endedOn?: string | null\n}\n\n/** Expiring within 90 days, or past its expiry - a registration given up or struck off is not. */\nexport const registrationExpiringSoon = (row: LegalRegistrationDays, today: string) => !row.endedOn && !!row.expiresOn && row.expiresOn <= addDays(today, REGISTRATION_EXPIRY_NOTICE_DAYS)\n\n/** Inside its renewal window - from the renewal-from day to the expiry. */\nexport const registrationInRenewalWindow = (row: LegalRegistrationDays, today: string) => !row.endedOn && !!row.renewalFromOn && row.renewalFromOn <= today && (!row.expiresOn || today <= row.expiresOn)\n\n/** A fee due within 30 days, or past its day. */\nexport const registrationFeeDueSoon = (row: LegalRegistrationDays, today: string) => !row.endedOn && !!row.nextFeeDueOn && row.nextFeeDueOn <= addDays(today, REGISTRATION_FEE_NOTICE_DAYS)\n\n/** Why a research centre has a change to file. */\nexport enum CentreChangeReason {\n /** 연구원 퇴사. */\n LEFT = 'LEFT',\n /** 연구원이 연구소 부서 밖으로 이동. */\n MOVED_OUT = 'MOVED_OUT',\n /** 연구소 부서로 입사 · 이동. */\n JOINED = 'JOINED'\n}\n\n/** An employee as organization holds them, before or after a change. */\nexport interface CentreEmployeeState {\n departmentId?: string | null\n hiredOn?: string | null\n retiredOn?: string | null\n active?: boolean | null\n}\n\n/** A research centre as the change is judged against: its department, and its researchers now. */\nexport interface CentreOfChange {\n id: string\n departmentId?: string | null\n researcherIds: string[]\n}\n\nexport interface CentreChange {\n centreId: string\n reason: CentreChangeReason\n aroseOn: string\n dueOn: string\n}\n\nconst gone = (one: CentreEmployeeState | null) => !!one && (!!one.retiredOn || one.active === false)\n\n/**\n * The changes an employee's change makes the research centres file (ADR-0187 decision 23): a researcher leaving, a\n * researcher moving out of the centre's department, someone joining it or moving into it. `before` is null for a new\n * employee. Each is due 30 days from the day it arose.\n */\nexport function centreChangesOf(employeeId: string, before: CentreEmployeeState | null, after: CentreEmployeeState, centres: CentreOfChange[], today: string): CentreChange[] {\n const changes: CentreChange[] = []\n const add = (centreId: string, reason: CentreChangeReason, aroseOn: string) => changes.push({ centreId, reason, aroseOn, dueOn: addDays(aroseOn, CENTRE_CHANGE_FILING_DAYS) })\n for (const centre of centres) {\n const researcher = centre.researcherIds.includes(employeeId)\n if (gone(after) && !gone(before)) {\n if (researcher) add(centre.id, CentreChangeReason.LEFT, isDay(after.retiredOn) ? after.retiredOn : today)\n continue\n }\n if (gone(after) || !centre.departmentId) continue\n const wasIn = before?.departmentId === centre.departmentId\n const isIn = after.departmentId === centre.departmentId\n if (researcher && wasIn && !isIn) add(centre.id, CentreChangeReason.MOVED_OUT, today)\n else if (!wasIn && isIn) add(centre.id, CentreChangeReason.JOINED, !before && isDay(after.hiredOn) ? after.hiredOn : today)\n }\n return changes\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm';
|
|
2
|
+
import { Employee } from '@things-factory/organization';
|
|
3
|
+
import { LegalCentreChange, LegalRegistration, LegalResearcher } from './legal-registration';
|
|
4
|
+
import { CentreEmployeeState } from './legal-registration-rules';
|
|
5
|
+
import { LegalCentreChangePatch, LegalRegistrationPatch, LegalResearcherPatch } from './legal-registration-type';
|
|
6
|
+
export declare const LEGAL_REGISTRATION_CATEGORY = "legal-registration";
|
|
7
|
+
export declare const LEGAL_REGISTRATION_REF_TYPE = "compliance-legal-registration";
|
|
8
|
+
/** Writes the ledger's new and changed rows - a deleted one is refused. */
|
|
9
|
+
export declare function saveLegalRegistrations(patches: LegalRegistrationPatch[], context: ResolverContext): Promise<LegalRegistration[]>;
|
|
10
|
+
/** Writes a centre's researchers - listed from a day, ended on a day; a row is never deleted. */
|
|
11
|
+
export declare function saveLegalResearchers(registrationId: string, patches: LegalResearcherPatch[], context: ResolverContext): Promise<LegalResearcher[]>;
|
|
12
|
+
/** Writes the day a centre's change was filed - which closes its to-do. A change is never deleted. */
|
|
13
|
+
export declare function fileCentreChanges(patches: LegalCentreChangePatch[], context: ResolverContext): Promise<LegalCentreChange[]>;
|
|
14
|
+
/** An employee as the centre change is judged by, or null where there is none. */
|
|
15
|
+
export declare const centreEmployeeStateOf: (one: Employee | null | undefined) => CentreEmployeeState | null;
|
|
16
|
+
/**
|
|
17
|
+
* What an employee's change makes the research centres file (organization saves it; the subscriber calls this in the
|
|
18
|
+
* same transaction). One change per centre, employee and reason stays open until filed; a researcher who left or moved
|
|
19
|
+
* out is ended on the centre's list.
|
|
20
|
+
*/
|
|
21
|
+
export declare function noteCentreEmployeeChange(tx: EntityManager, employeeId: string, before: CentreEmployeeState | null): Promise<LegalCentreChange[]>;
|
|
22
|
+
/** Registrations expiring within 90 days, or past their expiry. */
|
|
23
|
+
export declare function legalRegistrationsExpiring(tx: EntityManager, domain: {
|
|
24
|
+
id: string;
|
|
25
|
+
}, today: string): Promise<LegalRegistration[]>;
|
|
26
|
+
/** Registrations inside their renewal window. */
|
|
27
|
+
export declare function legalRegistrationsInRenewalWindow(tx: EntityManager, domain: {
|
|
28
|
+
id: string;
|
|
29
|
+
}, today: string): Promise<LegalRegistration[]>;
|
|
30
|
+
/** Registrations with a fee due within 30 days, or past its day. */
|
|
31
|
+
export declare function legalRegistrationFeesDue(tx: EntityManager, domain: {
|
|
32
|
+
id: string;
|
|
33
|
+
}, today: string): Promise<LegalRegistration[]>;
|
|
34
|
+
/** Research centre changes not filed - past their due day first. `today` is the check's; every one unfiled is raised. */
|
|
35
|
+
export declare function legalCentreChangesNotFiled(tx: EntityManager, domain: {
|
|
36
|
+
id: string;
|
|
37
|
+
}, _today: string): Promise<LegalCentreChange[]>;
|