taxtank-core 0.4.0 → 0.5.2
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/README.md +5 -5
- package/bundles/taxtank-core.umd.js +11930 -11774
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/collections/bank-account.collection.js +135 -135
- package/esm2015/lib/collections/bank-transaction.collection.js +119 -119
- package/esm2015/lib/collections/client-movement.collection.js +31 -31
- package/esm2015/lib/collections/client-portfolio-report.collection.js +40 -40
- package/esm2015/lib/collections/client.collection.js +4 -4
- package/esm2015/lib/collections/collection-dictionary.js +86 -86
- package/esm2015/lib/collections/collection.js +74 -74
- package/esm2015/lib/collections/depreciation-forecast.collection.js +19 -19
- package/esm2015/lib/collections/depreciation.collection.js +79 -67
- package/esm2015/lib/collections/employee.collection.js +12 -12
- package/esm2015/lib/collections/income-source.collection.js +38 -38
- package/esm2015/lib/collections/loan.collection.js +18 -18
- package/esm2015/lib/collections/logbook.collection.js +97 -97
- package/esm2015/lib/collections/message-document.collection.js +13 -13
- package/esm2015/lib/collections/message.collection.js +21 -21
- package/esm2015/lib/collections/property.collection.js +72 -72
- package/esm2015/lib/collections/service-price.collection.js +10 -10
- package/esm2015/lib/collections/service-subscription.collection.js +17 -17
- package/esm2015/lib/collections/tax-return-category-item.collection.js +141 -141
- package/esm2015/lib/collections/tax-review.collection.js +55 -55
- package/esm2015/lib/collections/transaction-allocation.collection.js +40 -40
- package/esm2015/lib/collections/transaction.collection.js +123 -120
- package/esm2015/lib/collections/user-event-setting.collection.js +10 -10
- package/esm2015/lib/db/Enums/address-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/bank-account-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/bank-account-type.enum.js +12 -12
- package/esm2015/lib/db/Enums/bank-connection-status.enum.js +7 -7
- package/esm2015/lib/db/Enums/bank-transaction-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/chart-accounts-category.enum.js +15 -15
- package/esm2015/lib/db/Enums/chart-accounts-etp.enum.js +9 -9
- package/esm2015/lib/db/Enums/chart-accounts-heading-tax-deductible.enum.js +8 -8
- package/esm2015/lib/db/Enums/chart-accounts-heading-taxable.enum.js +8 -8
- package/esm2015/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.js +6 -6
- package/esm2015/lib/db/Enums/chart-accounts-list.enum.js +21 -21
- package/esm2015/lib/db/Enums/chart-accounts-metadata-list.enum.js +16 -16
- package/esm2015/lib/db/Enums/chart-accounts-metadata-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/chart-accounts-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/chat-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/client-details-medicare-exemption.enum.js +7 -7
- package/esm2015/lib/db/Enums/client-details-work-depreciation-calculation.enum.js +6 -6
- package/esm2015/lib/db/Enums/client-details-working-holiday-maker.enum.js +7 -7
- package/esm2015/lib/db/Enums/client-invite-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/client-invite-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/depreciation-calculation-percent.enum.js +9 -9
- package/esm2015/lib/db/Enums/depreciation-calculation.enum.js +9 -9
- package/esm2015/lib/db/Enums/depreciation-type.enum.js +8 -8
- package/esm2015/lib/db/Enums/depreciation-write-off-amount.enum.js +6 -6
- package/esm2015/lib/db/Enums/firm-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/income-source-type-list-other.enum.js +8 -8
- package/esm2015/lib/db/Enums/income-source-type-list-salary.enum.js +5 -5
- package/esm2015/lib/db/Enums/income-source-type-list-work.enum.js +10 -10
- package/esm2015/lib/db/Enums/income-source-type.enum.js +8 -7
- package/esm2015/lib/db/Enums/invite-status.enum.js +7 -7
- package/esm2015/lib/db/Enums/loan-bank-type.enum.js +12 -12
- package/esm2015/lib/db/Enums/loan-frequency.enum.js +8 -8
- package/esm2015/lib/db/Enums/loan-interest-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/loan-payout-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/loan-repayment-frequency.enum.js +7 -7
- package/esm2015/lib/db/Enums/loan-repayment-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/loan-type.enum.js +14 -14
- package/esm2015/lib/db/Enums/loan-vehicle-type.enum.js +7 -7
- package/esm2015/lib/db/Enums/phone-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/property-depreciation-calculation.enum.js +6 -6
- package/esm2015/lib/db/Enums/property-owner-access.enum.js +6 -6
- package/esm2015/lib/db/Enums/property-owner-status.enum.js +7 -7
- package/esm2015/lib/db/Enums/registration-invite-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/salary-forecast-frequency.enum.js +8 -8
- package/esm2015/lib/db/Enums/service-notification-status.enum.js +7 -7
- package/esm2015/lib/db/Enums/service-notification-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/service-payment-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/service-price-recurring-interval.enum.js +8 -8
- package/esm2015/lib/db/Enums/service-price-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/service-subscription-status.enum.js +10 -10
- package/esm2015/lib/db/Enums/spare-document-spare-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/tank-type.enum.js +7 -7
- package/esm2015/lib/db/Enums/tax-calculation-medicare-exemption.enum.js +6 -6
- package/esm2015/lib/db/Enums/tax-calculation-type.enum.js +14 -14
- package/esm2015/lib/db/Enums/tax-return-category-list.enum.js +28 -28
- package/esm2015/lib/db/Enums/tax-return-category-section.enum.js +8 -8
- package/esm2015/lib/db/Enums/tax-review-status.enum.js +13 -13
- package/esm2015/lib/db/Enums/tax-summary-list.enum.js +17 -17
- package/esm2015/lib/db/Enums/tax-summary-section.enum.js +8 -8
- package/esm2015/lib/db/Enums/tax-summary-tax-summary.enum.js +17 -17
- package/esm2015/lib/db/Enums/ticket-feedback.enum.js +6 -6
- package/esm2015/lib/db/Enums/ticket-status.enum.js +9 -9
- package/esm2015/lib/db/Enums/ticket-types.enum.js +5 -5
- package/esm2015/lib/db/Enums/transaction-operation.enum.js +7 -7
- package/esm2015/lib/db/Enums/transaction-source.enum.js +6 -6
- package/esm2015/lib/db/Enums/transaction-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/user-event-status.enum.js +9 -9
- package/esm2015/lib/db/Enums/user-event-type-client-type.enum.js +29 -29
- package/esm2015/lib/db/Enums/user-event-type-employee-type.enum.js +17 -17
- package/esm2015/lib/db/Enums/user-event-type-frequency.enum.js +7 -7
- package/esm2015/lib/db/Enums/user-event-type-user-type.enum.js +7 -7
- package/esm2015/lib/db/Enums/user-medicare-exemption.enum.js +7 -7
- package/esm2015/lib/db/Enums/user-roles.enum.js +15 -15
- package/esm2015/lib/db/Enums/user-status.enum.js +8 -8
- package/esm2015/lib/db/Enums/user-title.enum.js +9 -9
- package/esm2015/lib/db/Enums/user-work-depreciation-calculation.enum.js +6 -6
- package/esm2015/lib/db/Enums/user-working-holiday-maker.enum.js +7 -7
- package/esm2015/lib/db/Enums/vehicle-claim-method.enum.js +6 -6
- package/esm2015/lib/db/Enums/vehicle-logbook-purpose.enum.js +6 -6
- package/esm2015/lib/db/Models/address.js +3 -3
- package/esm2015/lib/db/Models/bank-account-balance.js +3 -3
- package/esm2015/lib/db/Models/bank-account-property.js +3 -3
- package/esm2015/lib/db/Models/bank-account.js +3 -3
- package/esm2015/lib/db/Models/bank-connection.js +3 -3
- package/esm2015/lib/db/Models/bank-transaction-import.js +3 -3
- package/esm2015/lib/db/Models/bank-transaction.js +3 -3
- package/esm2015/lib/db/Models/bank.js +3 -3
- package/esm2015/lib/db/Models/basiq-job.js +3 -3
- package/esm2015/lib/db/Models/borrowing-expense-loan.js +3 -3
- package/esm2015/lib/db/Models/borrowing-expense.js +3 -3
- package/esm2015/lib/db/Models/capital-cost-property.js +3 -3
- package/esm2015/lib/db/Models/capital-cost.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts-depreciation.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts-heading.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts-metadata.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts-value.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts.js +3 -3
- package/esm2015/lib/db/Models/chat.js +3 -3
- package/esm2015/lib/db/Models/client-details.js +3 -3
- package/esm2015/lib/db/Models/client-invite.js +3 -3
- package/esm2015/lib/db/Models/client-movement.js +3 -3
- package/esm2015/lib/db/Models/country.js +3 -3
- package/esm2015/lib/db/Models/depreciation-capital-project.js +3 -3
- package/esm2015/lib/db/Models/depreciation-forecast.js +3 -3
- package/esm2015/lib/db/Models/depreciation-receipt.js +3 -3
- package/esm2015/lib/db/Models/depreciation.js +4 -4
- package/esm2015/lib/db/Models/document-folder.js +3 -3
- package/esm2015/lib/db/Models/document.js +3 -3
- package/esm2015/lib/db/Models/employee-details.js +3 -3
- package/esm2015/lib/db/Models/employee-invite.js +3 -3
- package/esm2015/lib/db/Models/financial-data-system.js +3 -3
- package/esm2015/lib/db/Models/firm.js +3 -3
- package/esm2015/lib/db/Models/income-source-forecast.js +3 -3
- package/esm2015/lib/db/Models/income-source-type.js +3 -3
- package/esm2015/lib/db/Models/income-source.js +3 -3
- package/esm2015/lib/db/Models/loan-payout.js +3 -3
- package/esm2015/lib/db/Models/loan.js +3 -3
- package/esm2015/lib/db/Models/message-document.js +3 -3
- package/esm2015/lib/db/Models/message.js +3 -3
- package/esm2015/lib/db/Models/occupation.js +3 -3
- package/esm2015/lib/db/Models/phone.js +3 -3
- package/esm2015/lib/db/Models/property-capital-cost.js +3 -3
- package/esm2015/lib/db/Models/property-category-movement.js +3 -3
- package/esm2015/lib/db/Models/property-category.js +3 -3
- package/esm2015/lib/db/Models/property-document.js +3 -3
- package/esm2015/lib/db/Models/property-forecast.js +3 -3
- package/esm2015/lib/db/Models/property-owner.js +3 -3
- package/esm2015/lib/db/Models/property-sold.js +3 -3
- package/esm2015/lib/db/Models/property-subscription.js +3 -3
- package/esm2015/lib/db/Models/property-valuation.js +3 -3
- package/esm2015/lib/db/Models/property.js +3 -3
- package/esm2015/lib/db/Models/registration-invite.js +3 -3
- package/esm2015/lib/db/Models/salary-forecast.js +3 -3
- package/esm2015/lib/db/Models/service-notification.js +3 -3
- package/esm2015/lib/db/Models/service-payment.js +3 -3
- package/esm2015/lib/db/Models/service-price.js +3 -3
- package/esm2015/lib/db/Models/service-product.js +3 -3
- package/esm2015/lib/db/Models/service-subscription-item.js +3 -3
- package/esm2015/lib/db/Models/service-subscription.js +3 -3
- package/esm2015/lib/db/Models/sole-forecast.js +3 -0
- package/esm2015/lib/db/Models/tax-return-category.js +3 -3
- package/esm2015/lib/db/Models/tax-return-item.js +3 -3
- package/esm2015/lib/db/Models/tax-return.js +3 -3
- package/esm2015/lib/db/Models/tax-review.js +3 -3
- package/esm2015/lib/db/Models/ticket.js +3 -3
- package/esm2015/lib/db/Models/transaction-allocation.js +3 -3
- package/esm2015/lib/db/Models/transaction-base.js +20 -20
- package/esm2015/lib/db/Models/transaction-metadata.js +3 -3
- package/esm2015/lib/db/Models/transaction-receipt.js +3 -3
- package/esm2015/lib/db/Models/transaction.js +4 -4
- package/esm2015/lib/db/Models/user-event-setting.js +3 -3
- package/esm2015/lib/db/Models/user-event-type-category.js +3 -3
- package/esm2015/lib/db/Models/user-event-type.js +3 -3
- package/esm2015/lib/db/Models/user-event.js +3 -3
- package/esm2015/lib/db/Models/user.js +3 -3
- package/esm2015/lib/db/Models/vehicle-claim.js +3 -3
- package/esm2015/lib/db/Models/vehicle-logbook.js +3 -3
- package/esm2015/lib/db/Models/vehicle.js +3 -3
- package/esm2015/lib/functions/array/index.js +3 -3
- package/esm2015/lib/functions/array/replace.js +5 -5
- package/esm2015/lib/functions/array/sort-deep.js +21 -21
- package/esm2015/lib/functions/array/sort.js +12 -12
- package/esm2015/lib/functions/clone-deep.js +5 -5
- package/esm2015/lib/functions/create-date.js +8 -8
- package/esm2015/lib/functions/enum-to-list.js +12 -12
- package/esm2015/lib/functions/get-doc-icon.js +18 -18
- package/esm2015/lib/functions/mat-options-functions.js +9 -9
- package/esm2015/lib/functions/mat-sort-options.js +10 -10
- package/esm2015/lib/functions/round-to.js +10 -10
- package/esm2015/lib/functions/tax-review-filter-predicate.js +10 -10
- package/esm2015/lib/interceptors/corelogic-interceptor.js +43 -43
- package/esm2015/lib/interceptors/financial-year-interceptor.js +29 -29
- package/esm2015/lib/interceptors/interceptors.module.js +73 -73
- package/esm2015/lib/interceptors/jwt-interceptor.js +137 -137
- package/esm2015/lib/interceptors/preloader.interceptor.js +32 -32
- package/esm2015/lib/interceptors/user-switcher-interceptor.js +42 -42
- package/esm2015/lib/interfaces/asset-entity-type.enum.js +12 -12
- package/esm2015/lib/interfaces/asset-type.enum.js +10 -10
- package/esm2015/lib/interfaces/asset.interface.js +2 -2
- package/esm2015/lib/interfaces/chart-data.interface.js +1 -1
- package/esm2015/lib/interfaces/chart-serie.interface.js +1 -1
- package/esm2015/lib/interfaces/document.interface.js +2 -2
- package/esm2015/lib/interfaces/documentable.interface.js +2 -2
- package/esm2015/lib/interfaces/event-listener.interface.js +1 -1
- package/esm2015/lib/interfaces/income-source-forecast.interface.js +2 -2
- package/esm2015/lib/interfaces/option.interface.js +1 -1
- package/esm2015/lib/interfaces/photoable.js +1 -1
- package/esm2015/lib/interfaces/receipt.interface.js +2 -2
- package/esm2015/lib/interfaces/tank.interface.js +2 -2
- package/esm2015/lib/models/address/address.js +23 -23
- package/esm2015/lib/models/address/country.js +15 -15
- package/esm2015/lib/models/bank/bank-account-chart-data.js +34 -34
- package/esm2015/lib/models/bank/bank-account-property.js +10 -10
- package/esm2015/lib/models/bank/bank-account-types.const.js +15 -15
- package/esm2015/lib/models/bank/bank-account.js +122 -122
- package/esm2015/lib/models/bank/bank-connection.js +21 -21
- package/esm2015/lib/models/bank/bank-transaction-chart-data.js +106 -106
- package/esm2015/lib/models/bank/bank-transaction-summary-fields.enum.js +6 -6
- package/esm2015/lib/models/bank/bank-transaction.js +67 -67
- package/esm2015/lib/models/bank/bank.js +13 -13
- package/esm2015/lib/models/bank/basiq-job.js +4 -4
- package/esm2015/lib/models/bank/basiq-token.js +13 -13
- package/esm2015/lib/models/bank/type-loan.const.js +7 -7
- package/esm2015/lib/models/borrowing-expense/borrowing-expense-loan.js +4 -4
- package/esm2015/lib/models/borrowing-expense/borrowing-expense.js +4 -4
- package/esm2015/lib/models/chart/chart-data.js +12 -12
- package/esm2015/lib/models/chart/chart-serie.js +6 -6
- package/esm2015/lib/models/chart-accounts/chart-accounts-categories.const.js +84 -84
- package/esm2015/lib/models/chart-accounts/chart-accounts-depreciation.js +16 -16
- package/esm2015/lib/models/chart-accounts/chart-accounts-heading.js +3 -3
- package/esm2015/lib/models/chart-accounts/chart-accounts-metadata.js +13 -13
- package/esm2015/lib/models/chart-accounts/chart-accounts-tax-labels.enum.js +6 -6
- package/esm2015/lib/models/chart-accounts/chart-accounts.js +119 -119
- package/esm2015/lib/models/chat/chat-view-type.enum.js +6 -6
- package/esm2015/lib/models/chat/chat.js +22 -22
- package/esm2015/lib/models/chat/message-document.js +19 -19
- package/esm2015/lib/models/chat/message.js +38 -38
- package/esm2015/lib/models/client/client-details.js +4 -4
- package/esm2015/lib/models/client/client-invite.js +66 -66
- package/esm2015/lib/models/client/client-movement.js +26 -26
- package/esm2015/lib/models/client/client-portfolio-chart-data.js +57 -57
- package/esm2015/lib/models/client/client-portfolio-report.js +6 -6
- package/esm2015/lib/models/color/alphabet-colors.enum.js +29 -29
- package/esm2015/lib/models/data-table/data-table-column.js +13 -13
- package/esm2015/lib/models/data-table/data-table.js +42 -42
- package/esm2015/lib/models/depreciation/depreciation-capital-project.js +9 -9
- package/esm2015/lib/models/depreciation/depreciation-forecast.js +22 -22
- package/esm2015/lib/models/depreciation/depreciation-group-item.js +14 -14
- package/esm2015/lib/models/depreciation/depreciation-group.enum.js +9 -9
- package/esm2015/lib/models/depreciation/depreciation-group.js +15 -15
- package/esm2015/lib/models/depreciation/depreciation-groups.const.js +29 -29
- package/esm2015/lib/models/depreciation/depreciation-receipt.js +11 -11
- package/esm2015/lib/models/depreciation/depreciation.js +170 -159
- package/esm2015/lib/models/document/document-api-url-prefix.enum.js +9 -9
- package/esm2015/lib/models/document/document-file-types.const.js +23 -23
- package/esm2015/lib/models/document/document-folder.js +10 -10
- package/esm2015/lib/models/document/document.js +24 -24
- package/esm2015/lib/models/employee/employee-details.js +10 -10
- package/esm2015/lib/models/employee/employee-invite.js +13 -13
- package/esm2015/lib/models/endpoint/endpoint.js +22 -22
- package/esm2015/lib/models/endpoint/endpoints.const.js +143 -143
- package/esm2015/lib/models/event/app-event-type.enum.js +42 -42
- package/esm2015/lib/models/event/app-event.js +10 -10
- package/esm2015/lib/models/file/icons-file.enum.js +7 -7
- package/esm2015/lib/models/financial-year/financial-year.js +43 -43
- package/esm2015/lib/models/financial-year/month-name-short.enum.js +20 -20
- package/esm2015/lib/models/financial-year/month-number.enum.js +20 -20
- package/esm2015/lib/models/financial-year/months.const.js +2 -2
- package/esm2015/lib/models/firm/firm.js +29 -29
- package/esm2015/lib/models/income-position/income-position.js +9 -9
- package/esm2015/lib/models/income-source/income-source-chart-data.js +45 -45
- package/esm2015/lib/models/income-source/income-source-forecast.js +31 -31
- package/esm2015/lib/models/income-source/income-source-type.js +32 -27
- package/esm2015/lib/models/income-source/income-source.js +58 -51
- package/esm2015/lib/models/income-source/salary-forecast.js +14 -14
- package/esm2015/lib/models/income-source/sole-forecast.js +14 -0
- package/esm2015/lib/models/loan/loan-max-number-of-payments.enum.js +10 -10
- package/esm2015/lib/models/loan/loan-payment.js +12 -12
- package/esm2015/lib/models/loan/loan-payout.js +11 -11
- package/esm2015/lib/models/loan/loan.js +39 -39
- package/esm2015/lib/models/logbook/default-vehicle-expense.js +20 -20
- package/esm2015/lib/models/logbook/logbook-period.js +11 -11
- package/esm2015/lib/models/logbook/logbook-purpose-options.const.js +6 -6
- package/esm2015/lib/models/logbook/vehicle-claim.js +32 -32
- package/esm2015/lib/models/logbook/vehicle-logbook.js +16 -16
- package/esm2015/lib/models/logbook/vehicle.js +39 -39
- package/esm2015/lib/models/notification/notification.js +39 -39
- package/esm2015/lib/models/pdf/pdf-config.js +24 -24
- package/esm2015/lib/models/phone/phone.js +11 -11
- package/esm2015/lib/models/property/calculation-form-item.js +17 -17
- package/esm2015/lib/models/property/calculation-form-type.enum.js +9 -9
- package/esm2015/lib/models/property/capital-costs-itmes.const.js +57 -57
- package/esm2015/lib/models/property/corelogic-suggestion.js +6 -6
- package/esm2015/lib/models/property/ownership-filter-options.enum.js +10 -10
- package/esm2015/lib/models/property/property-capital-cost.js +4 -4
- package/esm2015/lib/models/property/property-category-movement.js +20 -20
- package/esm2015/lib/models/property/property-category.js +8 -8
- package/esm2015/lib/models/property/property-document.js +17 -17
- package/esm2015/lib/models/property/property-equity-chart-data.js +155 -155
- package/esm2015/lib/models/property/property-equity-chart-item.js +24 -24
- package/esm2015/lib/models/property/property-equity-chart-type.enum.js +6 -6
- package/esm2015/lib/models/property/property-forecast.js +52 -52
- package/esm2015/lib/models/property/property-owner.js +48 -48
- package/esm2015/lib/models/property/property-sold.js +12 -12
- package/esm2015/lib/models/property/property-subscription.js +13 -13
- package/esm2015/lib/models/property/property-valuation.js +23 -23
- package/esm2015/lib/models/property/property.js +130 -130
- package/esm2015/lib/models/registration-invite/registration-invite.js +10 -10
- package/esm2015/lib/models/service-subscription/module-url-list.const.js +12 -12
- package/esm2015/lib/models/service-subscription/service-payment.js +10 -10
- package/esm2015/lib/models/service-subscription/service-price.js +10 -10
- package/esm2015/lib/models/service-subscription/service-product.js +10 -10
- package/esm2015/lib/models/service-subscription/service-subscription-item.js +13 -13
- package/esm2015/lib/models/service-subscription/service-subscription.js +128 -128
- package/esm2015/lib/models/service-subscription/subscription-description.const.js +7 -7
- package/esm2015/lib/models/service-subscription/subscription-title.const.js +7 -7
- package/esm2015/lib/models/service-subscription/subscription-type.enum.js +7 -7
- package/esm2015/lib/models/tax-review/tax-review.js +86 -86
- package/esm2015/lib/models/tax-summary/tax-return-category-item-details.js +9 -9
- package/esm2015/lib/models/tax-summary/tax-return-category-item.js +15 -15
- package/esm2015/lib/models/tax-summary/tax-summary-section.js +30 -30
- package/esm2015/lib/models/tax-summary/tax-summary-type.enum.js +9 -9
- package/esm2015/lib/models/tax-summary/tax-summary.js +71 -71
- package/esm2015/lib/models/transaction/income-amount-type.enum.js +9 -9
- package/esm2015/lib/models/transaction/transaction-allocation.js +21 -21
- package/esm2015/lib/models/transaction/transaction-metadata.js +10 -10
- package/esm2015/lib/models/transaction/transaction-receipt.js +11 -11
- package/esm2015/lib/models/transaction/transaction.js +223 -223
- package/esm2015/lib/models/user/my-account-history-initiated-by.enum.js +6 -6
- package/esm2015/lib/models/user/my-account-history-status.enum.js +6 -6
- package/esm2015/lib/models/user/my-account-history-type.enum.js +7 -7
- package/esm2015/lib/models/user/my-account-history.js +3 -3
- package/esm2015/lib/models/user/occupation.js +4 -4
- package/esm2015/lib/models/user/user-roles.const.js +13 -13
- package/esm2015/lib/models/user/user-to-register.js +6 -6
- package/esm2015/lib/models/user/user-work-position.const.js +6 -6
- package/esm2015/lib/models/user/user.js +138 -138
- package/esm2015/lib/models/user-event/user-event-setting-field.enum.js +10 -10
- package/esm2015/lib/models/user-event/user-event-setting.js +18 -18
- package/esm2015/lib/models/user-event/user-event-type-category.js +4 -4
- package/esm2015/lib/models/user-event/user-event-type.js +19 -19
- package/esm2015/lib/services/address/address.service.js +39 -39
- package/esm2015/lib/services/asset/assets.service.js +51 -51
- package/esm2015/lib/services/auth/auth.service.js +46 -46
- package/esm2015/lib/services/auth/jwt.service.js +36 -36
- package/esm2015/lib/services/bank/bank-account-calculation.service.js +30 -30
- package/esm2015/lib/services/bank/bank-account.service.js +118 -118
- package/esm2015/lib/services/bank/bank-connection.service.js +52 -52
- package/esm2015/lib/services/bank/bank-transaction-calculation.service.js +65 -65
- package/esm2015/lib/services/bank/bank-transaction.service.js +89 -89
- package/esm2015/lib/services/bank/bank.service.js +24 -24
- package/esm2015/lib/services/bank/basiq.service.js +94 -94
- package/esm2015/lib/services/base-rest.service.js +190 -190
- package/esm2015/lib/services/borrowing-expense/borrowing-expense.service.js +73 -73
- package/esm2015/lib/services/chart-accounts/chart-accounts-depreciations.service.js +38 -38
- package/esm2015/lib/services/chart-accounts/chart-accounts.service.js +89 -89
- package/esm2015/lib/services/chat/chat.service.js +77 -77
- package/esm2015/lib/services/chat/message-document.service.js +118 -118
- package/esm2015/lib/services/chat/message.service.js +65 -65
- package/esm2015/lib/services/client/client-invite.service.js +102 -102
- package/esm2015/lib/services/client/client-movement.service.js +98 -98
- package/esm2015/lib/services/client/client-portfolio-report.service.js +37 -37
- package/esm2015/lib/services/depreciation/capital-project.service.js +62 -62
- package/esm2015/lib/services/depreciation/depreciation.service.js +146 -146
- package/esm2015/lib/services/document/document-folder.service.js +84 -84
- package/esm2015/lib/services/employee/employee-invite.service.js +53 -53
- package/esm2015/lib/services/employee/employee.service.js +39 -39
- package/esm2015/lib/services/event/event-dispatcher.service.js +30 -30
- package/esm2015/lib/services/event/sse.service.js +46 -46
- package/esm2015/lib/services/firm/firm.service.js +79 -79
- package/esm2015/lib/services/header-title/header-title.service.js +28 -28
- package/esm2015/lib/services/income-source/income-source-forecast.service.js +90 -90
- package/esm2015/lib/services/income-source/income-source.service.js +109 -109
- package/esm2015/lib/services/income-source/salary-forecast.service.js +90 -90
- package/esm2015/lib/services/income-source/sole-forecast.service.js +87 -0
- package/esm2015/lib/services/intercom/intercom.service.js +41 -41
- package/esm2015/lib/services/loan/loan.service.js +145 -145
- package/esm2015/lib/services/notification/notification.service.js +65 -65
- package/esm2015/lib/services/pdf/pdf.service.js +94 -88
- package/esm2015/lib/services/preloader/preloader.service.js +30 -30
- package/esm2015/lib/services/property/corelogic.service.js +46 -46
- package/esm2015/lib/services/property/equity-position-chart.service.js +45 -45
- package/esm2015/lib/services/property/property-calculation.service.js +121 -121
- package/esm2015/lib/services/property/property-capital-cost.service.js +46 -46
- package/esm2015/lib/services/property/property-category-movement.service.js +47 -47
- package/esm2015/lib/services/property/property-category.service.js +23 -23
- package/esm2015/lib/services/property/property-document.service.js +68 -68
- package/esm2015/lib/services/property/property-owner.service.js +123 -123
- package/esm2015/lib/services/property/property-sold.service.js +23 -23
- package/esm2015/lib/services/property/property.service.js +126 -126
- package/esm2015/lib/services/subscription/subscription.service.js +138 -138
- package/esm2015/lib/services/tax-review/tax-review-history.service.js +41 -41
- package/esm2015/lib/services/tax-review/tax-review.service.js +103 -103
- package/esm2015/lib/services/tax-summary/tax-summary.service.js +71 -71
- package/esm2015/lib/services/transaction/transaction-allocation.service.js +85 -85
- package/esm2015/lib/services/transaction/transaction-calculation.service.js +47 -47
- package/esm2015/lib/services/transaction/transaction.service.js +319 -319
- package/esm2015/lib/services/user/occupation.service.js +45 -45
- package/esm2015/lib/services/user/user-switcher.service.js +37 -37
- package/esm2015/lib/services/user/user.service.js +124 -124
- package/esm2015/lib/services/user-event/user-event-setting.service.js +59 -59
- package/esm2015/lib/services/user-event/user-event-type.service.js +29 -29
- package/esm2015/lib/services/work/work-tank.service.js +236 -236
- package/esm2015/lib/services/xlsx/xlsx.service.js +54 -54
- package/esm2015/lib/tt-core.module.js +36 -36
- package/esm2015/public-api.js +347 -346
- package/esm2015/taxtank-core.js +4 -4
- package/fesm2015/taxtank-core.js +9874 -9743
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/collections/bank-account.collection.d.ts +67 -67
- package/lib/collections/bank-transaction.collection.d.ts +72 -72
- package/lib/collections/client-movement.collection.d.ts +17 -17
- package/lib/collections/client-portfolio-report.collection.d.ts +26 -26
- package/lib/collections/client.collection.d.ts +4 -4
- package/lib/collections/collection-dictionary.d.ts +47 -47
- package/lib/collections/collection.d.ts +37 -37
- package/lib/collections/depreciation-forecast.collection.d.ts +11 -11
- package/lib/collections/depreciation.collection.d.ts +33 -27
- package/lib/collections/employee.collection.d.ts +6 -6
- package/lib/collections/income-source.collection.d.ts +25 -25
- package/lib/collections/loan.collection.d.ts +14 -14
- package/lib/collections/logbook.collection.d.ts +19 -19
- package/lib/collections/message-document.collection.d.ts +11 -11
- package/lib/collections/message.collection.d.ts +14 -14
- package/lib/collections/property.collection.d.ts +38 -38
- package/lib/collections/service-price.collection.d.ts +6 -6
- package/lib/collections/service-subscription.collection.d.ts +8 -8
- package/lib/collections/tax-return-category-item.collection.d.ts +68 -68
- package/lib/collections/tax-review.collection.d.ts +35 -35
- package/lib/collections/transaction-allocation.collection.d.ts +23 -23
- package/lib/collections/transaction.collection.d.ts +77 -76
- package/lib/collections/user-event-setting.collection.d.ts +8 -8
- package/lib/db/Enums/address-type.enum.d.ts +4 -4
- package/lib/db/Enums/bank-account-status.enum.d.ts +4 -4
- package/lib/db/Enums/bank-account-type.enum.d.ts +10 -10
- package/lib/db/Enums/bank-connection-status.enum.d.ts +5 -5
- package/lib/db/Enums/bank-transaction-type.enum.d.ts +4 -4
- package/lib/db/Enums/chart-accounts-category.enum.d.ts +13 -13
- package/lib/db/Enums/chart-accounts-etp.enum.d.ts +7 -7
- package/lib/db/Enums/chart-accounts-heading-tax-deductible.enum.d.ts +6 -6
- package/lib/db/Enums/chart-accounts-heading-taxable.enum.d.ts +6 -6
- package/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.d.ts +4 -4
- package/lib/db/Enums/chart-accounts-list.enum.d.ts +19 -19
- package/lib/db/Enums/chart-accounts-metadata-list.enum.d.ts +14 -14
- package/lib/db/Enums/chart-accounts-metadata-type.enum.d.ts +4 -4
- package/lib/db/Enums/chart-accounts-type.enum.d.ts +4 -4
- package/lib/db/Enums/chat-status.enum.d.ts +4 -4
- package/lib/db/Enums/client-details-medicare-exemption.enum.d.ts +5 -5
- package/lib/db/Enums/client-details-work-depreciation-calculation.enum.d.ts +4 -4
- package/lib/db/Enums/client-details-working-holiday-maker.enum.d.ts +5 -5
- package/lib/db/Enums/client-invite-status.enum.d.ts +4 -4
- package/lib/db/Enums/client-invite-type.enum.d.ts +4 -4
- package/lib/db/Enums/depreciation-calculation-percent.enum.d.ts +7 -7
- package/lib/db/Enums/depreciation-calculation.enum.d.ts +7 -7
- package/lib/db/Enums/depreciation-type.enum.d.ts +6 -6
- package/lib/db/Enums/depreciation-write-off-amount.enum.d.ts +4 -4
- package/lib/db/Enums/firm-type.enum.d.ts +4 -4
- package/lib/db/Enums/income-source-type-list-other.enum.d.ts +6 -6
- package/lib/db/Enums/income-source-type-list-salary.enum.d.ts +3 -3
- package/lib/db/Enums/income-source-type-list-work.enum.d.ts +8 -8
- package/lib/db/Enums/income-source-type.enum.d.ts +6 -5
- package/lib/db/Enums/invite-status.enum.d.ts +5 -5
- package/lib/db/Enums/loan-bank-type.enum.d.ts +10 -10
- package/lib/db/Enums/loan-frequency.enum.d.ts +6 -6
- package/lib/db/Enums/loan-interest-type.enum.d.ts +4 -4
- package/lib/db/Enums/loan-payout-type.enum.d.ts +4 -4
- package/lib/db/Enums/loan-repayment-frequency.enum.d.ts +5 -5
- package/lib/db/Enums/loan-repayment-type.enum.d.ts +4 -4
- package/lib/db/Enums/loan-type.enum.d.ts +12 -12
- package/lib/db/Enums/loan-vehicle-type.enum.d.ts +5 -5
- package/lib/db/Enums/phone-type.enum.d.ts +4 -4
- package/lib/db/Enums/property-depreciation-calculation.enum.d.ts +4 -4
- package/lib/db/Enums/property-owner-access.enum.d.ts +4 -4
- package/lib/db/Enums/property-owner-status.enum.d.ts +5 -5
- package/lib/db/Enums/registration-invite-status.enum.d.ts +4 -4
- package/lib/db/Enums/salary-forecast-frequency.enum.d.ts +6 -6
- package/lib/db/Enums/service-notification-status.enum.d.ts +5 -5
- package/lib/db/Enums/service-notification-type.enum.d.ts +4 -4
- package/lib/db/Enums/service-payment-status.enum.d.ts +4 -4
- package/lib/db/Enums/service-price-recurring-interval.enum.d.ts +6 -6
- package/lib/db/Enums/service-price-type.enum.d.ts +4 -4
- package/lib/db/Enums/service-subscription-status.enum.d.ts +8 -8
- package/lib/db/Enums/spare-document-spare-type.enum.d.ts +4 -4
- package/lib/db/Enums/tank-type.enum.d.ts +5 -5
- package/lib/db/Enums/tax-calculation-medicare-exemption.enum.d.ts +4 -4
- package/lib/db/Enums/tax-calculation-type.enum.d.ts +12 -12
- package/lib/db/Enums/tax-return-category-list.enum.d.ts +26 -26
- package/lib/db/Enums/tax-return-category-section.enum.d.ts +6 -6
- package/lib/db/Enums/tax-review-status.enum.d.ts +11 -11
- package/lib/db/Enums/tax-summary-list.enum.d.ts +15 -15
- package/lib/db/Enums/tax-summary-section.enum.d.ts +6 -6
- package/lib/db/Enums/tax-summary-tax-summary.enum.d.ts +15 -15
- package/lib/db/Enums/ticket-feedback.enum.d.ts +4 -4
- package/lib/db/Enums/ticket-status.enum.d.ts +7 -7
- package/lib/db/Enums/ticket-types.enum.d.ts +3 -3
- package/lib/db/Enums/transaction-operation.enum.d.ts +5 -5
- package/lib/db/Enums/transaction-source.enum.d.ts +4 -4
- package/lib/db/Enums/transaction-type.enum.d.ts +4 -4
- package/lib/db/Enums/user-event-status.enum.d.ts +7 -7
- package/lib/db/Enums/user-event-type-client-type.enum.d.ts +27 -27
- package/lib/db/Enums/user-event-type-employee-type.enum.d.ts +15 -15
- package/lib/db/Enums/user-event-type-frequency.enum.d.ts +5 -5
- package/lib/db/Enums/user-event-type-user-type.enum.d.ts +5 -5
- package/lib/db/Enums/user-medicare-exemption.enum.d.ts +5 -5
- package/lib/db/Enums/user-roles.enum.d.ts +13 -13
- package/lib/db/Enums/user-status.enum.d.ts +6 -6
- package/lib/db/Enums/user-title.enum.d.ts +7 -7
- package/lib/db/Enums/user-work-depreciation-calculation.enum.d.ts +4 -4
- package/lib/db/Enums/user-working-holiday-maker.enum.d.ts +5 -5
- package/lib/db/Enums/vehicle-claim-method.enum.d.ts +4 -4
- package/lib/db/Enums/vehicle-logbook-purpose.enum.d.ts +4 -4
- package/lib/db/Models/address.d.ts +19 -19
- package/lib/db/Models/bank-account-balance.d.ts +12 -12
- package/lib/db/Models/bank-account-property.d.ts +8 -8
- package/lib/db/Models/bank-account.d.ts +33 -33
- package/lib/db/Models/bank-connection.d.ts +14 -14
- package/lib/db/Models/bank-transaction-import.d.ts +11 -11
- package/lib/db/Models/bank-transaction.d.ts +16 -16
- package/lib/db/Models/bank.d.ts +11 -11
- package/lib/db/Models/basiq-job.d.ts +8 -8
- package/lib/db/Models/borrowing-expense-loan.d.ts +14 -14
- package/lib/db/Models/borrowing-expense.d.ts +7 -7
- package/lib/db/Models/capital-cost-property.d.ts +13 -13
- package/lib/db/Models/capital-cost.d.ts +4 -4
- package/lib/db/Models/chart-accounts-depreciation.d.ts +10 -10
- package/lib/db/Models/chart-accounts-heading.d.ts +6 -6
- package/lib/db/Models/chart-accounts-metadata.d.ts +11 -11
- package/lib/db/Models/chart-accounts-value.d.ts +12 -12
- package/lib/db/Models/chart-accounts.d.ts +23 -23
- package/lib/db/Models/chat.d.ts +17 -17
- package/lib/db/Models/client-details.d.ts +29 -29
- package/lib/db/Models/client-invite.d.ts +16 -16
- package/lib/db/Models/client-movement.d.ts +12 -12
- package/lib/db/Models/country.d.ts +5 -5
- package/lib/db/Models/depreciation-capital-project.d.ts +13 -13
- package/lib/db/Models/depreciation-forecast.d.ts +18 -18
- package/lib/db/Models/depreciation-receipt.d.ts +11 -11
- package/lib/db/Models/depreciation.d.ts +42 -42
- package/lib/db/Models/document-folder.d.ts +9 -9
- package/lib/db/Models/document.d.ts +11 -11
- package/lib/db/Models/employee-details.d.ts +7 -7
- package/lib/db/Models/employee-invite.d.ts +9 -9
- package/lib/db/Models/financial-data-system.d.ts +9 -9
- package/lib/db/Models/firm.d.ts +28 -28
- package/lib/db/Models/income-source-forecast.d.ts +12 -12
- package/lib/db/Models/income-source-type.d.ts +8 -8
- package/lib/db/Models/income-source.d.ts +22 -20
- package/lib/db/Models/loan-payout.d.ts +12 -12
- package/lib/db/Models/loan.d.ts +33 -33
- package/lib/db/Models/message-document.d.ts +15 -15
- package/lib/db/Models/message.d.ts +15 -15
- package/lib/db/Models/occupation.d.ts +5 -5
- package/lib/db/Models/phone.d.ts +12 -12
- package/lib/db/Models/property-capital-cost.d.ts +13 -13
- package/lib/db/Models/property-category-movement.d.ts +17 -17
- package/lib/db/Models/property-category.d.ts +13 -13
- package/lib/db/Models/property-document.d.ts +13 -13
- package/lib/db/Models/property-forecast.d.ts +14 -14
- package/lib/db/Models/property-owner.d.ts +20 -20
- package/lib/db/Models/property-sold.d.ts +12 -12
- package/lib/db/Models/property-subscription.d.ts +9 -9
- package/lib/db/Models/property-valuation.d.ts +12 -12
- package/lib/db/Models/property.d.ts +41 -41
- package/lib/db/Models/registration-invite.d.ts +12 -12
- package/lib/db/Models/salary-forecast.d.ts +15 -15
- package/lib/db/Models/service-notification.d.ts +13 -13
- package/lib/db/Models/service-payment.d.ts +11 -11
- package/lib/db/Models/service-price.d.ts +15 -15
- package/lib/db/Models/service-product.d.ts +12 -12
- package/lib/db/Models/service-subscription-item.d.ts +9 -9
- package/lib/db/Models/service-subscription.d.ts +14 -14
- package/lib/db/Models/sole-forecast.d.ts +8 -0
- package/lib/db/Models/tax-return-category.d.ts +12 -12
- package/lib/db/Models/tax-return-item.d.ts +15 -15
- package/lib/db/Models/tax-return.d.ts +8 -8
- package/lib/db/Models/tax-review.d.ts +13 -13
- package/lib/db/Models/ticket.d.ts +19 -19
- package/lib/db/Models/transaction-allocation.d.ts +8 -8
- package/lib/db/Models/transaction-base.d.ts +22 -22
- package/lib/db/Models/transaction-metadata.d.ts +11 -11
- package/lib/db/Models/transaction-receipt.d.ts +11 -11
- package/lib/db/Models/transaction.d.ts +43 -43
- package/lib/db/Models/user-event-setting.d.ts +10 -10
- package/lib/db/Models/user-event-type-category.d.ts +4 -4
- package/lib/db/Models/user-event-type.d.ts +17 -17
- package/lib/db/Models/user-event.d.ts +15 -15
- package/lib/db/Models/user.d.ts +51 -51
- package/lib/db/Models/vehicle-claim.d.ts +11 -11
- package/lib/db/Models/vehicle-logbook.d.ts +16 -16
- package/lib/db/Models/vehicle.d.ts +8 -8
- package/lib/functions/array/index.d.ts +3 -3
- package/lib/functions/array/replace.d.ts +1 -1
- package/lib/functions/array/sort-deep.d.ts +1 -1
- package/lib/functions/array/sort.d.ts +1 -1
- package/lib/functions/clone-deep.d.ts +1 -1
- package/lib/functions/create-date.d.ts +5 -5
- package/lib/functions/enum-to-list.d.ts +2 -2
- package/lib/functions/get-doc-icon.d.ts +7 -7
- package/lib/functions/mat-options-functions.d.ts +2 -2
- package/lib/functions/mat-sort-options.d.ts +7 -7
- package/lib/functions/round-to.d.ts +6 -6
- package/lib/functions/tax-review-filter-predicate.d.ts +7 -7
- package/lib/interceptors/corelogic-interceptor.d.ts +20 -20
- package/lib/interceptors/financial-year-interceptor.d.ts +12 -12
- package/lib/interceptors/interceptors.module.d.ts +6 -6
- package/lib/interceptors/jwt-interceptor.d.ts +42 -42
- package/lib/interceptors/preloader.interceptor.d.ts +15 -15
- package/lib/interceptors/user-switcher-interceptor.d.ts +19 -19
- package/lib/interfaces/asset-entity-type.enum.d.ts +10 -10
- package/lib/interfaces/asset-type.enum.d.ts +8 -8
- package/lib/interfaces/asset.interface.d.ts +17 -17
- package/lib/interfaces/chart-data.interface.d.ts +10 -10
- package/lib/interfaces/chart-serie.interface.d.ts +8 -8
- package/lib/interfaces/document.interface.d.ts +18 -18
- package/lib/interfaces/documentable.interface.d.ts +8 -8
- package/lib/interfaces/event-listener.interface.d.ts +9 -9
- package/lib/interfaces/income-source-forecast.interface.d.ts +10 -7
- package/lib/interfaces/option.interface.d.ts +4 -4
- package/lib/interfaces/photoable.d.ts +13 -13
- package/lib/interfaces/receipt.interface.d.ts +12 -12
- package/lib/interfaces/tank.interface.d.ts +7 -7
- package/lib/models/address/address.d.ts +11 -11
- package/lib/models/address/country.d.ts +11 -11
- package/lib/models/bank/bank-account-chart-data.d.ts +17 -17
- package/lib/models/bank/bank-account-property.d.ts +5 -5
- package/lib/models/bank/bank-account-types.const.d.ts +7 -7
- package/lib/models/bank/bank-account.d.ts +72 -72
- package/lib/models/bank/bank-connection.d.ts +11 -11
- package/lib/models/bank/bank-transaction-chart-data.d.ts +30 -30
- package/lib/models/bank/bank-transaction-summary-fields.enum.d.ts +4 -4
- package/lib/models/bank/bank-transaction.d.ts +38 -38
- package/lib/models/bank/bank.d.ts +6 -6
- package/lib/models/bank/basiq-job.d.ts +3 -3
- package/lib/models/bank/basiq-token.d.ts +9 -9
- package/lib/models/bank/type-loan.const.d.ts +2 -2
- package/lib/models/borrowing-expense/borrowing-expense-loan.d.ts +3 -3
- package/lib/models/borrowing-expense/borrowing-expense.d.ts +3 -3
- package/lib/models/chart/chart-data.d.ts +9 -9
- package/lib/models/chart/chart-serie.d.ts +8 -8
- package/lib/models/chart-accounts/chart-accounts-categories.const.d.ts +4 -4
- package/lib/models/chart-accounts/chart-accounts-depreciation.d.ts +7 -7
- package/lib/models/chart-accounts/chart-accounts-heading.d.ts +5 -5
- package/lib/models/chart-accounts/chart-accounts-metadata.d.ts +8 -8
- package/lib/models/chart-accounts/chart-accounts-tax-labels.enum.d.ts +5 -5
- package/lib/models/chart-accounts/chart-accounts.d.ts +66 -66
- package/lib/models/chat/chat-view-type.enum.d.ts +4 -4
- package/lib/models/chat/chat.d.ts +10 -10
- package/lib/models/chat/message-document.d.ts +11 -11
- package/lib/models/chat/message.d.ts +20 -20
- package/lib/models/client/client-details.d.ts +3 -3
- package/lib/models/client/client-invite.d.ts +34 -34
- package/lib/models/client/client-movement.d.ts +12 -12
- package/lib/models/client/client-portfolio-chart-data.d.ts +11 -11
- package/lib/models/client/client-portfolio-report.d.ts +10 -10
- package/lib/models/color/alphabet-colors.enum.d.ts +28 -28
- package/lib/models/data-table/data-table-column.d.ts +20 -20
- package/lib/models/data-table/data-table.d.ts +24 -24
- package/lib/models/depreciation/depreciation-capital-project.d.ts +5 -5
- package/lib/models/depreciation/depreciation-forecast.d.ts +8 -8
- package/lib/models/depreciation/depreciation-group-item.d.ts +10 -10
- package/lib/models/depreciation/depreciation-group.d.ts +11 -11
- package/lib/models/depreciation/depreciation-group.enum.d.ts +7 -7
- package/lib/models/depreciation/depreciation-groups.const.d.ts +9 -9
- package/lib/models/depreciation/depreciation-receipt.d.ts +8 -8
- package/lib/models/depreciation/depreciation.d.ts +75 -69
- package/lib/models/document/document-api-url-prefix.enum.d.ts +7 -7
- package/lib/models/document/document-file-types.const.d.ts +3 -3
- package/lib/models/document/document-folder.d.ts +7 -7
- package/lib/models/document/document.d.ts +21 -21
- package/lib/models/employee/employee-details.d.ts +5 -5
- package/lib/models/employee/employee-invite.d.ts +7 -7
- package/lib/models/endpoint/endpoint.d.ts +22 -22
- package/lib/models/endpoint/endpoints.const.d.ts +7 -7
- package/lib/models/event/app-event-type.enum.d.ts +40 -40
- package/lib/models/event/app-event.d.ts +9 -9
- package/lib/models/file/icons-file.enum.d.ts +5 -5
- package/lib/models/financial-year/financial-year.d.ts +19 -19
- package/lib/models/financial-year/month-name-short.enum.d.ts +19 -19
- package/lib/models/financial-year/month-number.enum.d.ts +19 -19
- package/lib/models/financial-year/months.const.d.ts +1 -1
- package/lib/models/firm/firm.d.ts +18 -18
- package/lib/models/income-position/income-position.d.ts +9 -9
- package/lib/models/income-source/income-source-chart-data.d.ts +14 -14
- package/lib/models/income-source/income-source-forecast.d.ts +18 -22
- package/lib/models/income-source/income-source-type.d.ts +9 -8
- package/lib/models/income-source/income-source.d.ts +29 -27
- package/lib/models/income-source/salary-forecast.d.ts +7 -16
- package/lib/models/income-source/sole-forecast.d.ts +7 -0
- package/lib/models/loan/loan-max-number-of-payments.enum.d.ts +8 -8
- package/lib/models/loan/loan-payment.d.ts +13 -13
- package/lib/models/loan/loan-payout.d.ts +9 -9
- package/lib/models/loan/loan.d.ts +20 -20
- package/lib/models/logbook/default-vehicle-expense.d.ts +5 -5
- package/lib/models/logbook/logbook-period.d.ts +6 -6
- package/lib/models/logbook/logbook-purpose-options.const.d.ts +4 -4
- package/lib/models/logbook/vehicle-claim.d.ts +19 -19
- package/lib/models/logbook/vehicle-logbook.d.ts +6 -6
- package/lib/models/logbook/vehicle.d.ts +12 -12
- package/lib/models/notification/notification.d.ts +14 -14
- package/lib/models/pdf/pdf-config.d.ts +8 -8
- package/lib/models/phone/phone.d.ts +6 -6
- package/lib/models/property/calculation-form-item.d.ts +15 -15
- package/lib/models/property/calculation-form-type.enum.d.ts +7 -7
- package/lib/models/property/capital-costs-itmes.const.d.ts +2 -2
- package/lib/models/property/corelogic-suggestion.d.ts +18 -18
- package/lib/models/property/ownership-filter-options.enum.d.ts +8 -8
- package/lib/models/property/property-capital-cost.d.ts +3 -3
- package/lib/models/property/property-category-movement.d.ts +9 -9
- package/lib/models/property/property-category.d.ts +4 -4
- package/lib/models/property/property-document.d.ts +14 -14
- package/lib/models/property/property-equity-chart-data.d.ts +62 -62
- package/lib/models/property/property-equity-chart-item.d.ts +19 -19
- package/lib/models/property/property-equity-chart-type.enum.d.ts +4 -4
- package/lib/models/property/property-forecast.d.ts +28 -28
- package/lib/models/property/property-owner.d.ts +21 -21
- package/lib/models/property/property-sold.d.ts +5 -5
- package/lib/models/property/property-subscription.d.ts +6 -6
- package/lib/models/property/property-valuation.d.ts +9 -9
- package/lib/models/property/property.d.ts +55 -55
- package/lib/models/registration-invite/registration-invite.d.ts +6 -6
- package/lib/models/service-subscription/module-url-list.const.d.ts +6 -6
- package/lib/models/service-subscription/service-payment.d.ts +5 -5
- package/lib/models/service-subscription/service-price.d.ts +5 -5
- package/lib/models/service-subscription/service-product.d.ts +5 -5
- package/lib/models/service-subscription/service-subscription-item.d.ts +6 -6
- package/lib/models/service-subscription/service-subscription.d.ts +55 -55
- package/lib/models/service-subscription/subscription-description.const.d.ts +3 -3
- package/lib/models/service-subscription/subscription-title.const.d.ts +3 -3
- package/lib/models/service-subscription/subscription-type.enum.d.ts +6 -6
- package/lib/models/tax-review/tax-review.d.ts +52 -52
- package/lib/models/tax-summary/tax-return-category-item-details.d.ts +13 -13
- package/lib/models/tax-summary/tax-return-category-item.d.ts +18 -18
- package/lib/models/tax-summary/tax-summary-section.d.ts +12 -12
- package/lib/models/tax-summary/tax-summary-type.enum.d.ts +7 -7
- package/lib/models/tax-summary/tax-summary.d.ts +44 -44
- package/lib/models/transaction/income-amount-type.enum.d.ts +7 -7
- package/lib/models/transaction/transaction-allocation.d.ts +12 -12
- package/lib/models/transaction/transaction-metadata.d.ts +5 -5
- package/lib/models/transaction/transaction-receipt.d.ts +8 -8
- package/lib/models/transaction/transaction.d.ts +99 -99
- package/lib/models/user/my-account-history-initiated-by.enum.d.ts +4 -4
- package/lib/models/user/my-account-history-status.enum.d.ts +4 -4
- package/lib/models/user/my-account-history-type.enum.d.ts +5 -5
- package/lib/models/user/my-account-history.d.ts +11 -11
- package/lib/models/user/occupation.d.ts +3 -3
- package/lib/models/user/user-roles.const.d.ts +4 -4
- package/lib/models/user/user-to-register.d.ts +7 -7
- package/lib/models/user/user-work-position.const.d.ts +3 -3
- package/lib/models/user/user.d.ts +64 -64
- package/lib/models/user-event/user-event-setting-field.enum.d.ts +8 -8
- package/lib/models/user-event/user-event-setting.d.ts +6 -6
- package/lib/models/user-event/user-event-type-category.d.ts +3 -3
- package/lib/models/user-event/user-event-type.d.ts +7 -7
- package/lib/services/address/address.service.d.ts +14 -14
- package/lib/services/asset/assets.service.d.ts +34 -34
- package/lib/services/auth/auth.service.d.ts +17 -17
- package/lib/services/auth/jwt.service.d.ts +16 -16
- package/lib/services/bank/bank-account-calculation.service.d.ts +19 -19
- package/lib/services/bank/bank-account.service.d.ts +48 -48
- package/lib/services/bank/bank-connection.service.d.ts +24 -24
- package/lib/services/bank/bank-transaction-calculation.service.d.ts +41 -41
- package/lib/services/bank/bank-transaction.service.d.ts +38 -38
- package/lib/services/bank/bank.service.d.ts +14 -14
- package/lib/services/bank/basiq.service.d.ts +42 -42
- package/lib/services/base-rest.service.d.ts +91 -91
- package/lib/services/borrowing-expense/borrowing-expense.service.d.ts +19 -19
- package/lib/services/chart-accounts/chart-accounts-depreciations.service.d.ts +19 -19
- package/lib/services/chart-accounts/chart-accounts.service.d.ts +37 -37
- package/lib/services/chat/chat.service.d.ts +31 -31
- package/lib/services/chat/message-document.service.d.ts +50 -50
- package/lib/services/chat/message.service.d.ts +31 -31
- package/lib/services/client/client-invite.service.d.ts +36 -36
- package/lib/services/client/client-movement.service.d.ts +40 -40
- package/lib/services/client/client-portfolio-report.service.d.ts +16 -16
- package/lib/services/depreciation/capital-project.service.d.ts +20 -20
- package/lib/services/depreciation/depreciation.service.d.ts +59 -59
- package/lib/services/document/document-folder.service.d.ts +40 -40
- package/lib/services/employee/employee-invite.service.d.ts +21 -21
- package/lib/services/employee/employee.service.d.ts +16 -16
- package/lib/services/event/event-dispatcher.service.d.ts +17 -17
- package/lib/services/event/sse.service.d.ts +16 -16
- package/lib/services/firm/firm.service.d.ts +27 -27
- package/lib/services/header-title/header-title.service.d.ts +11 -11
- package/lib/services/income-source/income-source-forecast.service.d.ts +36 -36
- package/lib/services/income-source/income-source.service.d.ts +48 -48
- package/lib/services/income-source/salary-forecast.service.d.ts +37 -37
- package/lib/services/income-source/sole-forecast.service.d.ts +33 -0
- package/lib/services/intercom/intercom.service.d.ts +21 -21
- package/lib/services/loan/loan.service.d.ts +63 -63
- package/lib/services/notification/notification.service.d.ts +31 -31
- package/lib/services/pdf/pdf.service.d.ts +24 -23
- package/lib/services/preloader/preloader.service.d.ts +12 -12
- package/lib/services/property/corelogic.service.d.ts +15 -15
- package/lib/services/property/equity-position-chart.service.d.ts +15 -15
- package/lib/services/property/property-calculation.service.d.ts +33 -33
- package/lib/services/property/property-capital-cost.service.d.ts +20 -20
- package/lib/services/property/property-category-movement.service.d.ts +15 -15
- package/lib/services/property/property-category.service.d.ts +13 -13
- package/lib/services/property/property-document.service.d.ts +31 -31
- package/lib/services/property/property-owner.service.d.ts +52 -52
- package/lib/services/property/property-sold.service.d.ts +13 -13
- package/lib/services/property/property.service.d.ts +54 -54
- package/lib/services/subscription/subscription.service.d.ts +47 -47
- package/lib/services/tax-review/tax-review-history.service.d.ts +19 -19
- package/lib/services/tax-review/tax-review.service.d.ts +44 -44
- package/lib/services/tax-summary/tax-summary.service.d.ts +31 -31
- package/lib/services/transaction/transaction-allocation.service.d.ts +43 -43
- package/lib/services/transaction/transaction-calculation.service.d.ts +29 -29
- package/lib/services/transaction/transaction.service.d.ts +92 -92
- package/lib/services/user/occupation.service.d.ts +20 -20
- package/lib/services/user/user-switcher.service.d.ts +20 -20
- package/lib/services/user/user.service.d.ts +60 -60
- package/lib/services/user-event/user-event-setting.service.d.ts +22 -22
- package/lib/services/user-event/user-event-type.service.d.ts +17 -17
- package/lib/services/work/work-tank.service.d.ts +93 -93
- package/lib/services/xlsx/xlsx.service.d.ts +11 -11
- package/lib/tt-core.module.d.ts +10 -10
- package/package.json +1 -1
- package/public-api.d.ts +346 -345
- package/taxtank-core.d.ts +5 -5
- package/esm2015/lib/interfaces/salary-forecast.interface.js +0 -2
- package/lib/interfaces/salary-forecast.interface.d.ts +0 -16
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
import { Collection } from './collection';
|
|
2
|
-
import flatten from 'lodash/flatten';
|
|
3
|
-
import uniqBy from 'lodash/uniqBy';
|
|
4
|
-
import concat from 'lodash/concat';
|
|
5
|
-
import { TYPE_LOAN } from '../models/bank/type-loan.const';
|
|
6
|
-
/**
|
|
7
|
-
* Collection of bank accounts.
|
|
8
|
-
*/
|
|
9
|
-
export class BankAccountCollection extends Collection {
|
|
10
|
-
/**
|
|
11
|
-
* get list of bank accounts with passed types
|
|
12
|
-
*/
|
|
13
|
-
getByType(types, isExclude = false) {
|
|
14
|
-
// get types always as array (if only one passed)
|
|
15
|
-
const typesArray = concat(types);
|
|
16
|
-
return this.items.filter((bankAccount) => {
|
|
17
|
-
if (isExclude) {
|
|
18
|
-
return !typesArray.includes(bankAccount.type);
|
|
19
|
-
}
|
|
20
|
-
return typesArray.includes(bankAccount.type);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* get amount of initial loans
|
|
25
|
-
*/
|
|
26
|
-
getInitialLoanAmount() {
|
|
27
|
-
return this.getByType(TYPE_LOAN)
|
|
28
|
-
.reduce((sum, bankAccount) => {
|
|
29
|
-
return sum += bankAccount.balances.length ? bankAccount.getOpeningBalance() : 0;
|
|
30
|
-
}, 0);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* get amount of current loans
|
|
34
|
-
*/
|
|
35
|
-
getCurrentLoanAmount() {
|
|
36
|
-
return this.getByType(TYPE_LOAN)
|
|
37
|
-
.reduce((sum, bankAccount) => {
|
|
38
|
-
return sum += bankAccount.currentBalance;
|
|
39
|
-
}, 0);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* get collection filtered by property id
|
|
43
|
-
*/
|
|
44
|
-
getByPropertyId(id) {
|
|
45
|
-
return new BankAccountCollection(this.items.filter((bankAccount) => {
|
|
46
|
-
return bankAccount.bankAccountProperties.find((bankAccountProperty) => {
|
|
47
|
-
return bankAccountProperty.property.id === id;
|
|
48
|
-
});
|
|
49
|
-
}));
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* get collection filtered by properties ids
|
|
53
|
-
*/
|
|
54
|
-
getByPropertiesIds(ids) {
|
|
55
|
-
return new BankAccountCollection(this.items.filter((bankAccount) => {
|
|
56
|
-
return bankAccount.bankAccountProperties.find((bankAccountProperty) => {
|
|
57
|
-
return ids.includes(bankAccountProperty.property.id);
|
|
58
|
-
});
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* get collection of active bank accounts
|
|
63
|
-
*/
|
|
64
|
-
getActiveBankAccounts() {
|
|
65
|
-
return new BankAccountCollection(this.items.filter((bankAccount) => {
|
|
66
|
-
return bankAccount.isActive();
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* get reduction of loan (reduction of principle) percentage
|
|
71
|
-
*/
|
|
72
|
-
getPrincipleReductionPercent() {
|
|
73
|
-
const initialLoans = this.getInitialLoanAmount();
|
|
74
|
-
const currentLoans = this.getCurrentLoanAmount();
|
|
75
|
-
if (!initialLoans) {
|
|
76
|
-
return 0;
|
|
77
|
-
}
|
|
78
|
-
return (initialLoans - currentLoans) / initialLoans * 100;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get collection of loan bank accounts
|
|
82
|
-
*/
|
|
83
|
-
getLoanAccounts() {
|
|
84
|
-
return new BankAccountCollection(this.getByType(TYPE_LOAN));
|
|
85
|
-
}
|
|
86
|
-
getSavingsAccounts() {
|
|
87
|
-
return new BankAccountCollection(this.getByType(TYPE_LOAN, true));
|
|
88
|
-
}
|
|
89
|
-
getOpeningBalance() {
|
|
90
|
-
return this.items.reduce((sum, bankAccount) => sum + bankAccount.getOpeningBalance(), 0);
|
|
91
|
-
}
|
|
92
|
-
get currentBalance() {
|
|
93
|
-
return this.sumBy('currentBalance');
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Get Collection of bank accounts with property tank type
|
|
97
|
-
*/
|
|
98
|
-
getPropertyBankAccounts() {
|
|
99
|
-
return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.isPropertyTank()));
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Get Collection of bank accounts with work tank type
|
|
103
|
-
*/
|
|
104
|
-
getWorkBankAccounts() {
|
|
105
|
-
return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.isWorkTank()));
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Get Collection of bank accounts by tank type
|
|
109
|
-
*/
|
|
110
|
-
getByTankType(tankType) {
|
|
111
|
-
return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.tankType === tankType));
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Get list of all bank account properties
|
|
115
|
-
*/
|
|
116
|
-
getBankAccountPropertiesList() {
|
|
117
|
-
return flatten(this.items.map((bankAccount) => {
|
|
118
|
-
return bankAccount.bankAccountProperties;
|
|
119
|
-
}));
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Get lis of unique properties from all bank accounts properties
|
|
123
|
-
*/
|
|
124
|
-
getProperties() {
|
|
125
|
-
return uniqBy(this.getBankAccountPropertiesList().map((bankAccountProperty) => {
|
|
126
|
-
return bankAccountProperty.property;
|
|
127
|
-
}), 'id');
|
|
128
|
-
}
|
|
129
|
-
getPropertyBalanceAmount(propertyId) {
|
|
130
|
-
return this.items.reduce((sum, bankAccount) => {
|
|
131
|
-
return sum + bankAccount.getPropertyBalanceAmount(propertyId);
|
|
132
|
-
}, 0);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1hY2NvdW50LmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvYmFuay1hY2NvdW50LmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU0xQyxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUzRDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxVQUF1QjtJQUNoRTs7T0FFRztJQUNILFNBQVMsQ0FBQyxLQUFrRCxFQUFFLFlBQXFCLEtBQUs7UUFDdEYsaURBQWlEO1FBQ2pELE1BQU0sVUFBVSxHQUEwQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUNwRCxJQUFJLFNBQVMsRUFBRTtnQkFDYixPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0M7WUFDRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7YUFDN0IsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLFdBQXdCLEVBQUUsRUFBRTtZQUNoRCxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFD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QUFDO1FBQ2hFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgQmFua0FjY291bnRUeXBlRW51bSB9IGZyb20gJy4uL2RiL0VudW1zL2JhbmstYWNjb3VudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVGFua1R5cGVFbnVtIH0gZnJvbSAnLi4vZGIvRW51bXMvdGFuay10eXBlLmVudW0nO1xuaW1wb3J0IHsgQmFua0FjY291bnQgfSBmcm9tICcuLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuaW1wb3J0IHsgQmFua0FjY291bnRQcm9wZXJ0eSB9IGZyb20gJy4uL21vZGVscy9iYW5rL2JhbmstYWNjb3VudC1wcm9wZXJ0eSc7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gJy4uL21vZGVscy9wcm9wZXJ0eS9wcm9wZXJ0eSc7XG5pbXBvcnQgZmxhdHRlbiBmcm9tICdsb2Rhc2gvZmxhdHRlbic7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC91bmlxQnknO1xuaW1wb3J0IGNvbmNhdCBmcm9tICdsb2Rhc2gvY29uY2F0JztcbmltcG9ydCB7IFRZUEVfTE9BTiB9IGZyb20gJy4uL21vZGVscy9iYW5rL3R5cGUtbG9hbi5jb25zdCc7XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBiYW5rIGFjY291bnRzLlxuICovXG5leHBvcnQgY2xhc3MgQmFua0FjY291bnRDb2xsZWN0aW9uIGV4dGVuZHMgQ29sbGVjdGlvbjxCYW5rQWNjb3VudD4ge1xuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgYmFuayBhY2NvdW50cyB3aXRoIHBhc3NlZCB0eXBlc1xuICAgKi9cbiAgZ2V0QnlUeXBlKHR5cGVzOiBCYW5rQWNjb3VudFR5cGVFbnVtIHwgQmFua0FjY291bnRUeXBlRW51bVtdLCBpc0V4Y2x1ZGU6IGJvb2xlYW4gPSBmYWxzZSk6IEJhbmtBY2NvdW50W10ge1xuICAgIC8vIGdldCB0eXBlcyBhbHdheXMgYXMgYXJyYXkgKGlmIG9ubHkgb25lIHBhc3NlZClcbiAgICBjb25zdCB0eXBlc0FycmF5OiBCYW5rQWNjb3VudFR5cGVFbnVtW10gPSBjb25jYXQodHlwZXMpO1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XG4gICAgICBpZiAoaXNFeGNsdWRlKSB7XG4gICAgICAgIHJldHVybiAhdHlwZXNBcnJheS5pbmNsdWRlcyhiYW5rQWNjb3VudC50eXBlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlc0FycmF5LmluY2x1ZGVzKGJhbmtBY2NvdW50LnR5cGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBhbW91bnQgb2YgaW5pdGlhbCBsb2Fuc1xuICAgKi9cbiAgZ2V0SW5pdGlhbExvYW5BbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCeVR5cGUoVFlQRV9MT0FOKVxuICAgICAgLnJlZHVjZSgoc3VtOiBudW1iZXIsIGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCkgPT4ge1xuICAgICAgICByZXR1cm4gc3VtICs9IGJhbmtBY2NvdW50LmJhbGFuY2VzLmxlbmd0aCA/IGJhbmtBY2NvdW50LmdldE9wZW5pbmdCYWxhbmNlKCkgOiAwO1xuICAgICAgfSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGFtb3VudCBvZiBjdXJyZW50IGxvYW5zXG4gICAqL1xuICBnZXRDdXJyZW50TG9hbkFtb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5VHlwZShUWVBFX0xPQU4pXG4gICAgICAucmVkdWNlKChzdW06IG51bWJlciwgYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XG4gICAgICAgIHJldHVybiBzdW0gKz0gYmFua0FjY291bnQuY3VycmVudEJhbGFuY2U7XG4gICAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgY29sbGVjdGlvbiBmaWx0ZXJlZCBieSBwcm9wZXJ0eSBpZFxuICAgKi9cbiAgZ2V0QnlQcm9wZXJ0eUlkKGlkOiBudW1iZXIpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IHtcbiAgICAgIHJldHVybiBiYW5rQWNjb3VudC5iYW5rQWNjb3VudFByb3BlcnRpZXMuZmluZCgoYmFua0FjY291bnRQcm9wZXJ0eTogQmFua0FjY291bnRQcm9wZXJ0eSkgPT4ge1xuICAgICAgICByZXR1cm4gYmFua0FjY291bnRQcm9wZXJ0eS5wcm9wZXJ0eS5pZCA9PT0gaWQ7XG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGNvbGxlY3Rpb24gZmlsdGVyZWQgYnkgcHJvcGVydGllcyBpZHNcbiAgICovXG4gIGdldEJ5UHJvcGVydGllc0lkcyhpZHM6IG51bWJlcltdKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50LmJhbmtBY2NvdW50UHJvcGVydGllcy5maW5kKChiYW5rQWNjb3VudFByb3BlcnR5OiBCYW5rQWNjb3VudFByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGlkcy5pbmNsdWRlcyhiYW5rQWNjb3VudFByb3BlcnR5LnByb3BlcnR5LmlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGNvbGxlY3Rpb24gb2YgYWN0aXZlIGJhbmsgYWNjb3VudHNcbiAgICovXG4gIGdldEFjdGl2ZUJhbmtBY2NvdW50cygpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IHtcbiAgICAgIHJldHVybiBiYW5rQWNjb3VudC5pc0FjdGl2ZSgpO1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgcmVkdWN0aW9uIG9mIGxvYW4gKHJlZHVjdGlvbiBvZiBwcmluY2lwbGUpIHBlcmNlbnRhZ2VcbiAgICovXG4gIGdldFByaW5jaXBsZVJlZHVjdGlvblBlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbml0aWFsTG9hbnM6IG51bWJlciA9IHRoaXMuZ2V0SW5pdGlhbExvYW5BbW91bnQoKTtcbiAgICBjb25zdCBjdXJyZW50TG9hbnM6IG51bWJlciA9IHRoaXMuZ2V0Q3VycmVudExvYW5BbW91bnQoKTtcblxuICAgIGlmICghaW5pdGlhbExvYW5zKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKGluaXRpYWxMb2FucyAtIGN1cnJlbnRMb2FucykgLyBpbml0aWFsTG9hbnMgKiAxMDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbGxlY3Rpb24gb2YgbG9hbiBiYW5rIGFjY291bnRzXG4gICAqL1xuICBnZXRMb2FuQWNjb3VudHMoKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbih0aGlzLmdldEJ5VHlwZShUWVBFX0xPQU4pKTtcbiAgfVxuXG4gIGdldFNhdmluZ3NBY2NvdW50cygpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKHRoaXMuZ2V0QnlUeXBlKFRZUEVfTE9BTiwgdHJ1ZSkpO1xuICB9XG5cbiAgZ2V0T3BlbmluZ0JhbGFuY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBudW1iZXIgPT4gc3VtICsgYmFua0FjY291bnQuZ2V0T3BlbmluZ0JhbGFuY2UoKSwgMCk7XG4gIH1cblxuICBnZXQgY3VycmVudEJhbGFuY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdW1CeSgnY3VycmVudEJhbGFuY2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgQ29sbGVjdGlvbiBvZiBiYW5rIGFjY291bnRzIHdpdGggcHJvcGVydHkgdGFuayB0eXBlXG4gICAqL1xuICBnZXRQcm9wZXJ0eUJhbmtBY2NvdW50cygpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IGJvb2xlYW4gPT4gYmFua0FjY291bnQuaXNQcm9wZXJ0eVRhbmsoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBDb2xsZWN0aW9uIG9mIGJhbmsgYWNjb3VudHMgd2l0aCB3b3JrIHRhbmsgdHlwZVxuICAgKi9cbiAgZ2V0V29ya0JhbmtBY2NvdW50cygpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IGJvb2xlYW4gPT4gYmFua0FjY291bnQuaXNXb3JrVGFuaygpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IENvbGxlY3Rpb24gb2YgYmFuayBhY2NvdW50cyBieSB0YW5rIHR5cGVcbiAgICovXG4gIGdldEJ5VGFua1R5cGUodGFua1R5cGU6IFRhbmtUeXBlRW51bSk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBCYW5rQWNjb3VudENvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogYm9vbGVhbiA9PiBiYW5rQWNjb3VudC50YW5rVHlwZSA9PT0gdGFua1R5cGUpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBhbGwgYmFuayBhY2NvdW50IHByb3BlcnRpZXNcbiAgICovXG4gIGdldEJhbmtBY2NvdW50UHJvcGVydGllc0xpc3QoKTogQmFua0FjY291bnRQcm9wZXJ0eVtdIHtcbiAgICByZXR1cm4gZmxhdHRlbihcbiAgICAgIHRoaXMuaXRlbXMubWFwKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBCYW5rQWNjb3VudFByb3BlcnR5W10gPT4ge1xuICAgICAgICByZXR1cm4gYmFua0FjY291bnQuYmFua0FjY291bnRQcm9wZXJ0aWVzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsaXMgb2YgdW5pcXVlIHByb3BlcnRpZXMgZnJvbSBhbGwgYmFuayBhY2NvdW50cyBwcm9wZXJ0aWVzXG4gICAqL1xuICBnZXRQcm9wZXJ0aWVzKCk6IFByb3BlcnR5W10ge1xuICAgIHJldHVybiB1bmlxQnkoXG4gICAgICB0aGlzLmdldEJhbmtBY2NvdW50UHJvcGVydGllc0xpc3QoKS5tYXAoKGJhbmtBY2NvdW50UHJvcGVydHk6IEJhbmtBY2NvdW50UHJvcGVydHkpID0+IHtcbiAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50UHJvcGVydHkucHJvcGVydHk7XG4gICAgICB9KSxcbiAgICAgICdpZCdcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlCYWxhbmNlQW1vdW50KHByb3BlcnR5SWQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMucmVkdWNlKChzdW06IG51bWJlciwgYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogbnVtYmVyID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBiYW5rQWNjb3VudC5nZXRQcm9wZXJ0eUJhbGFuY2VBbW91bnQocHJvcGVydHlJZCk7XG4gICAgfSwgMCk7XG4gIH1cbn1cbiJdfQ==
|
|
1
|
+
import { Collection } from './collection';
|
|
2
|
+
import flatten from 'lodash/flatten';
|
|
3
|
+
import uniqBy from 'lodash/uniqBy';
|
|
4
|
+
import concat from 'lodash/concat';
|
|
5
|
+
import { TYPE_LOAN } from '../models/bank/type-loan.const';
|
|
6
|
+
/**
|
|
7
|
+
* Collection of bank accounts.
|
|
8
|
+
*/
|
|
9
|
+
export class BankAccountCollection extends Collection {
|
|
10
|
+
/**
|
|
11
|
+
* get list of bank accounts with passed types
|
|
12
|
+
*/
|
|
13
|
+
getByType(types, isExclude = false) {
|
|
14
|
+
// get types always as array (if only one passed)
|
|
15
|
+
const typesArray = concat(types);
|
|
16
|
+
return this.items.filter((bankAccount) => {
|
|
17
|
+
if (isExclude) {
|
|
18
|
+
return !typesArray.includes(bankAccount.type);
|
|
19
|
+
}
|
|
20
|
+
return typesArray.includes(bankAccount.type);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* get amount of initial loans
|
|
25
|
+
*/
|
|
26
|
+
getInitialLoanAmount() {
|
|
27
|
+
return this.getByType(TYPE_LOAN)
|
|
28
|
+
.reduce((sum, bankAccount) => {
|
|
29
|
+
return sum += bankAccount.balances.length ? bankAccount.getOpeningBalance() : 0;
|
|
30
|
+
}, 0);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* get amount of current loans
|
|
34
|
+
*/
|
|
35
|
+
getCurrentLoanAmount() {
|
|
36
|
+
return this.getByType(TYPE_LOAN)
|
|
37
|
+
.reduce((sum, bankAccount) => {
|
|
38
|
+
return sum += bankAccount.currentBalance;
|
|
39
|
+
}, 0);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* get collection filtered by property id
|
|
43
|
+
*/
|
|
44
|
+
getByPropertyId(id) {
|
|
45
|
+
return new BankAccountCollection(this.items.filter((bankAccount) => {
|
|
46
|
+
return bankAccount.bankAccountProperties.find((bankAccountProperty) => {
|
|
47
|
+
return bankAccountProperty.property.id === id;
|
|
48
|
+
});
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* get collection filtered by properties ids
|
|
53
|
+
*/
|
|
54
|
+
getByPropertiesIds(ids) {
|
|
55
|
+
return new BankAccountCollection(this.items.filter((bankAccount) => {
|
|
56
|
+
return bankAccount.bankAccountProperties.find((bankAccountProperty) => {
|
|
57
|
+
return ids.includes(bankAccountProperty.property.id);
|
|
58
|
+
});
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* get collection of active bank accounts
|
|
63
|
+
*/
|
|
64
|
+
getActiveBankAccounts() {
|
|
65
|
+
return new BankAccountCollection(this.items.filter((bankAccount) => {
|
|
66
|
+
return bankAccount.isActive();
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* get reduction of loan (reduction of principle) percentage
|
|
71
|
+
*/
|
|
72
|
+
getPrincipleReductionPercent() {
|
|
73
|
+
const initialLoans = this.getInitialLoanAmount();
|
|
74
|
+
const currentLoans = this.getCurrentLoanAmount();
|
|
75
|
+
if (!initialLoans) {
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
return (initialLoans - currentLoans) / initialLoans * 100;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get collection of loan bank accounts
|
|
82
|
+
*/
|
|
83
|
+
getLoanAccounts() {
|
|
84
|
+
return new BankAccountCollection(this.getByType(TYPE_LOAN));
|
|
85
|
+
}
|
|
86
|
+
getSavingsAccounts() {
|
|
87
|
+
return new BankAccountCollection(this.getByType(TYPE_LOAN, true));
|
|
88
|
+
}
|
|
89
|
+
getOpeningBalance() {
|
|
90
|
+
return this.items.reduce((sum, bankAccount) => sum + bankAccount.getOpeningBalance(), 0);
|
|
91
|
+
}
|
|
92
|
+
get currentBalance() {
|
|
93
|
+
return this.sumBy('currentBalance');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get Collection of bank accounts with property tank type
|
|
97
|
+
*/
|
|
98
|
+
getPropertyBankAccounts() {
|
|
99
|
+
return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.isPropertyTank()));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get Collection of bank accounts with work tank type
|
|
103
|
+
*/
|
|
104
|
+
getWorkBankAccounts() {
|
|
105
|
+
return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.isWorkTank()));
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get Collection of bank accounts by tank type
|
|
109
|
+
*/
|
|
110
|
+
getByTankType(tankType) {
|
|
111
|
+
return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.tankType === tankType));
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get list of all bank account properties
|
|
115
|
+
*/
|
|
116
|
+
getBankAccountPropertiesList() {
|
|
117
|
+
return flatten(this.items.map((bankAccount) => {
|
|
118
|
+
return bankAccount.bankAccountProperties;
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get lis of unique properties from all bank accounts properties
|
|
123
|
+
*/
|
|
124
|
+
getProperties() {
|
|
125
|
+
return uniqBy(this.getBankAccountPropertiesList().map((bankAccountProperty) => {
|
|
126
|
+
return bankAccountProperty.property;
|
|
127
|
+
}), 'id');
|
|
128
|
+
}
|
|
129
|
+
getPropertyBalanceAmount(propertyId) {
|
|
130
|
+
return this.items.reduce((sum, bankAccount) => {
|
|
131
|
+
return sum + bankAccount.getPropertyBalanceAmount(propertyId);
|
|
132
|
+
}, 0);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1hY2NvdW50LmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvYmFuay1hY2NvdW50LmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU0xQyxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUzRDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxVQUF1QjtJQUNoRTs7T0FFRztJQUNILFNBQVMsQ0FBQyxLQUFrRCxFQUFFLFlBQXFCLEtBQUs7UUFDdEYsaURBQWlEO1FBQ2pELE1BQU0sVUFBVSxHQUEwQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUNwRCxJQUFJLFNBQVMsRUFBRTtnQkFDYixPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0M7WUFDRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7YUFDN0IsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLFdBQXdCLEVBQUUsRUFBRTtZQUNoRCxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFD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QUFDO1FBQ2hFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBCYW5rQWNjb3VudFR5cGVFbnVtIH0gZnJvbSAnLi4vZGIvRW51bXMvYmFuay1hY2NvdW50LXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFRhbmtUeXBlRW51bSB9IGZyb20gJy4uL2RiL0VudW1zL3RhbmstdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgQmFua0FjY291bnQgfSBmcm9tICcuLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xyXG5pbXBvcnQgeyBCYW5rQWNjb3VudFByb3BlcnR5IH0gZnJvbSAnLi4vbW9kZWxzL2JhbmsvYmFuay1hY2NvdW50LXByb3BlcnR5JztcclxuaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tICcuLi9tb2RlbHMvcHJvcGVydHkvcHJvcGVydHknO1xyXG5pbXBvcnQgZmxhdHRlbiBmcm9tICdsb2Rhc2gvZmxhdHRlbic7XHJcbmltcG9ydCB1bmlxQnkgZnJvbSAnbG9kYXNoL3VuaXFCeSc7XHJcbmltcG9ydCBjb25jYXQgZnJvbSAnbG9kYXNoL2NvbmNhdCc7XHJcbmltcG9ydCB7IFRZUEVfTE9BTiB9IGZyb20gJy4uL21vZGVscy9iYW5rL3R5cGUtbG9hbi5jb25zdCc7XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBiYW5rIGFjY291bnRzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEJhbmtBY2NvdW50Q29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248QmFua0FjY291bnQ+IHtcclxuICAvKipcclxuICAgKiBnZXQgbGlzdCBvZiBiYW5rIGFjY291bnRzIHdpdGggcGFzc2VkIHR5cGVzXHJcbiAgICovXHJcbiAgZ2V0QnlUeXBlKHR5cGVzOiBCYW5rQWNjb3VudFR5cGVFbnVtIHwgQmFua0FjY291bnRUeXBlRW51bVtdLCBpc0V4Y2x1ZGU6IGJvb2xlYW4gPSBmYWxzZSk6IEJhbmtBY2NvdW50W10ge1xyXG4gICAgLy8gZ2V0IHR5cGVzIGFsd2F5cyBhcyBhcnJheSAoaWYgb25seSBvbmUgcGFzc2VkKVxyXG4gICAgY29uc3QgdHlwZXNBcnJheTogQmFua0FjY291bnRUeXBlRW51bVtdID0gY29uY2F0KHR5cGVzKTtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgIGlmIChpc0V4Y2x1ZGUpIHtcclxuICAgICAgICByZXR1cm4gIXR5cGVzQXJyYXkuaW5jbHVkZXMoYmFua0FjY291bnQudHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHR5cGVzQXJyYXkuaW5jbHVkZXMoYmFua0FjY291bnQudHlwZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCBhbW91bnQgb2YgaW5pdGlhbCBsb2Fuc1xyXG4gICAqL1xyXG4gIGdldEluaXRpYWxMb2FuQW1vdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRCeVR5cGUoVFlQRV9MT0FOKVxyXG4gICAgICAucmVkdWNlKChzdW06IG51bWJlciwgYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHN1bSArPSBiYW5rQWNjb3VudC5iYWxhbmNlcy5sZW5ndGggPyBiYW5rQWNjb3VudC5nZXRPcGVuaW5nQmFsYW5jZSgpIDogMDtcclxuICAgICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgYW1vdW50IG9mIGN1cnJlbnQgbG9hbnNcclxuICAgKi9cclxuICBnZXRDdXJyZW50TG9hbkFtb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnlUeXBlKFRZUEVfTE9BTilcclxuICAgICAgLnJlZHVjZSgoc3VtOiBudW1iZXIsIGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBzdW0gKz0gYmFua0FjY291bnQuY3VycmVudEJhbGFuY2U7XHJcbiAgICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGNvbGxlY3Rpb24gZmlsdGVyZWQgYnkgcHJvcGVydHkgaWRcclxuICAgKi9cclxuICBnZXRCeVByb3BlcnR5SWQoaWQ6IG51bWJlcik6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbih0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgIHJldHVybiBiYW5rQWNjb3VudC5iYW5rQWNjb3VudFByb3BlcnRpZXMuZmluZCgoYmFua0FjY291bnRQcm9wZXJ0eTogQmFua0FjY291bnRQcm9wZXJ0eSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBiYW5rQWNjb3VudFByb3BlcnR5LnByb3BlcnR5LmlkID09PSBpZDtcclxuICAgICAgfSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgY29sbGVjdGlvbiBmaWx0ZXJlZCBieSBwcm9wZXJ0aWVzIGlkc1xyXG4gICAqL1xyXG4gIGdldEJ5UHJvcGVydGllc0lkcyhpZHM6IG51bWJlcltdKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50LmJhbmtBY2NvdW50UHJvcGVydGllcy5maW5kKChiYW5rQWNjb3VudFByb3BlcnR5OiBCYW5rQWNjb3VudFByb3BlcnR5KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gaWRzLmluY2x1ZGVzKGJhbmtBY2NvdW50UHJvcGVydHkucHJvcGVydHkuaWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCBjb2xsZWN0aW9uIG9mIGFjdGl2ZSBiYW5rIGFjY291bnRzXHJcbiAgICovXHJcbiAgZ2V0QWN0aXZlQmFua0FjY291bnRzKCk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbih0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgIHJldHVybiBiYW5rQWNjb3VudC5pc0FjdGl2ZSgpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IHJlZHVjdGlvbiBvZiBsb2FuIChyZWR1Y3Rpb24gb2YgcHJpbmNpcGxlKSBwZXJjZW50YWdlXHJcbiAgICovXHJcbiAgZ2V0UHJpbmNpcGxlUmVkdWN0aW9uUGVyY2VudCgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgaW5pdGlhbExvYW5zOiBudW1iZXIgPSB0aGlzLmdldEluaXRpYWxMb2FuQW1vdW50KCk7XHJcbiAgICBjb25zdCBjdXJyZW50TG9hbnM6IG51bWJlciA9IHRoaXMuZ2V0Q3VycmVudExvYW5BbW91bnQoKTtcclxuXHJcbiAgICBpZiAoIWluaXRpYWxMb2Fucykge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKGluaXRpYWxMb2FucyAtIGN1cnJlbnRMb2FucykgLyBpbml0aWFsTG9hbnMgKiAxMDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY29sbGVjdGlvbiBvZiBsb2FuIGJhbmsgYWNjb3VudHNcclxuICAgKi9cclxuICBnZXRMb2FuQWNjb3VudHMoKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKHRoaXMuZ2V0QnlUeXBlKFRZUEVfTE9BTikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2F2aW5nc0FjY291bnRzKCk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbih0aGlzLmdldEJ5VHlwZShUWVBFX0xPQU4sIHRydWUpKTtcclxuICB9XHJcblxyXG4gIGdldE9wZW5pbmdCYWxhbmNlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBudW1iZXIgPT4gc3VtICsgYmFua0FjY291bnQuZ2V0T3BlbmluZ0JhbGFuY2UoKSwgMCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudEJhbGFuY2UoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnN1bUJ5KCdjdXJyZW50QmFsYW5jZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IENvbGxlY3Rpb24gb2YgYmFuayBhY2NvdW50cyB3aXRoIHByb3BlcnR5IHRhbmsgdHlwZVxyXG4gICAqL1xyXG4gIGdldFByb3BlcnR5QmFua0FjY291bnRzKCk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbihcclxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IGJvb2xlYW4gPT4gYmFua0FjY291bnQuaXNQcm9wZXJ0eVRhbmsoKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgQ29sbGVjdGlvbiBvZiBiYW5rIGFjY291bnRzIHdpdGggd29yayB0YW5rIHR5cGVcclxuICAgKi9cclxuICBnZXRXb3JrQmFua0FjY291bnRzKCk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbihcclxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IGJvb2xlYW4gPT4gYmFua0FjY291bnQuaXNXb3JrVGFuaygpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBDb2xsZWN0aW9uIG9mIGJhbmsgYWNjb3VudHMgYnkgdGFuayB0eXBlXHJcbiAgICovXHJcbiAgZ2V0QnlUYW5rVHlwZSh0YW5rVHlwZTogVGFua1R5cGVFbnVtKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogYm9vbGVhbiA9PiBiYW5rQWNjb3VudC50YW5rVHlwZSA9PT0gdGFua1R5cGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGxpc3Qgb2YgYWxsIGJhbmsgYWNjb3VudCBwcm9wZXJ0aWVzXHJcbiAgICovXHJcbiAgZ2V0QmFua0FjY291bnRQcm9wZXJ0aWVzTGlzdCgpOiBCYW5rQWNjb3VudFByb3BlcnR5W10ge1xyXG4gICAgcmV0dXJuIGZsYXR0ZW4oXHJcbiAgICAgIHRoaXMuaXRlbXMubWFwKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBCYW5rQWNjb3VudFByb3BlcnR5W10gPT4ge1xyXG4gICAgICAgIHJldHVybiBiYW5rQWNjb3VudC5iYW5rQWNjb3VudFByb3BlcnRpZXM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGxpcyBvZiB1bmlxdWUgcHJvcGVydGllcyBmcm9tIGFsbCBiYW5rIGFjY291bnRzIHByb3BlcnRpZXNcclxuICAgKi9cclxuICBnZXRQcm9wZXJ0aWVzKCk6IFByb3BlcnR5W10ge1xyXG4gICAgcmV0dXJuIHVuaXFCeShcclxuICAgICAgdGhpcy5nZXRCYW5rQWNjb3VudFByb3BlcnRpZXNMaXN0KCkubWFwKChiYW5rQWNjb3VudFByb3BlcnR5OiBCYW5rQWNjb3VudFByb3BlcnR5KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50UHJvcGVydHkucHJvcGVydHk7XHJcbiAgICAgIH0pLFxyXG4gICAgICAnaWQnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvcGVydHlCYWxhbmNlQW1vdW50KHByb3BlcnR5SWQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBudW1iZXIgPT4ge1xyXG4gICAgICByZXR1cm4gc3VtICsgYmFua0FjY291bnQuZ2V0UHJvcGVydHlCYWxhbmNlQW1vdW50KHByb3BlcnR5SWQpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
import { TransactionOperationEnum } from '../db/Enums/transaction-operation.enum';
|
|
2
|
-
import { Collection } from './collection';
|
|
3
|
-
import { CollectionDictionary } from './collection-dictionary';
|
|
4
|
-
/**
|
|
5
|
-
* Maximal delay between transfer transactions
|
|
6
|
-
*/
|
|
7
|
-
const TRANSACTION_TRANSFER_DELAY = 96 * 3600 * 1000;
|
|
8
|
-
/**
|
|
9
|
-
* Collection of bank transactions.
|
|
10
|
-
* IMPORTANT: Create this collection based on bank transactions from TransactionAllocationService
|
|
11
|
-
* @TODO find way to accept interface with allocation instead of bankTransaction to prevent wrong usage
|
|
12
|
-
* because all amounts calculates with allocated amounts but not from bank transactions amounts.
|
|
13
|
-
*/
|
|
14
|
-
export class BankTransactionCollection extends Collection {
|
|
15
|
-
getAmount() {
|
|
16
|
-
return this.sumBy('amount');
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Difference between total bank transactions amount and sum of allocations for passed bank transactions
|
|
20
|
-
*/
|
|
21
|
-
getUnallocatedAmount(allocations) {
|
|
22
|
-
return +(this.getAmount() - allocations.getByBankTransactionsIds(this.getIds()).amount).toFixed(2);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* get date of the last transaction
|
|
26
|
-
*/
|
|
27
|
-
getLastTransactionDate() {
|
|
28
|
-
return new Date(Math.max.apply(Math, this.items.map((bankTransaction) => bankTransaction.date)));
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* get list of credit transactions
|
|
32
|
-
*/
|
|
33
|
-
get creditTransactions() {
|
|
34
|
-
return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.isCredit()));
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* get list of debit transactions
|
|
38
|
-
*/
|
|
39
|
-
get debitTransactions() {
|
|
40
|
-
return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.isDebit()));
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* get difference between debit and credit transactions amounts
|
|
44
|
-
*/
|
|
45
|
-
get balanceAmount() {
|
|
46
|
-
return this.items.reduce((sum, bankTransaction) => sum + bankTransaction.balanceAmount, 0);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* get list of transactions for passed month
|
|
50
|
-
* @param monthIndex Month number from 0 to 11
|
|
51
|
-
*/
|
|
52
|
-
getTransactionsByMonth(monthIndex) {
|
|
53
|
-
return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.date.getMonth() === monthIndex));
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* get list of transactions by provided bank accounts
|
|
57
|
-
* @param bankAccounts by which transactions should be returned
|
|
58
|
-
*/
|
|
59
|
-
getByBankAccounts(bankAccounts) {
|
|
60
|
-
const bankAccountIds = bankAccounts.map((bankAccount) => bankAccount.id);
|
|
61
|
-
return this.items.filter((bankTransaction) => bankAccountIds.includes(bankTransaction.bankAccount.id));
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* get list of transactions by provided ids of bank accounts
|
|
65
|
-
* @param ids of bank accounts
|
|
66
|
-
*/
|
|
67
|
-
getByBankAccountsIds(ids) {
|
|
68
|
-
return new BankTransactionCollection(this.items.filter((bankTransaction) => ids.includes(bankTransaction.bankAccount.id)));
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Find Bank Transaction available for transfer
|
|
72
|
-
*/
|
|
73
|
-
findTransfer(bankTransaction) {
|
|
74
|
-
return this.items.find((item) => {
|
|
75
|
-
return item.amount + bankTransaction.amount === 0 &&
|
|
76
|
-
Math.abs(bankTransaction.date.getTime() - item.date.getTime()) < TRANSACTION_TRANSFER_DELAY;
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Group bank transactions by transaction id.
|
|
81
|
-
* Each group is bank transaction collection and contains bank transactions related to transactions via allocations
|
|
82
|
-
*/
|
|
83
|
-
groupByTransaction(allocations) {
|
|
84
|
-
// Group allocations by transaction id
|
|
85
|
-
const allocationsByTransactions = new CollectionDictionary(allocations, 'transaction');
|
|
86
|
-
// Init an empty dictionary we will fill below
|
|
87
|
-
const bankTransactionsByTransactions = new CollectionDictionary(new BankTransactionCollection([]));
|
|
88
|
-
// Fill dictionary with the same keys as at allocationsByTransactions
|
|
89
|
-
allocationsByTransactions.keys.forEach((key) => {
|
|
90
|
-
bankTransactionsByTransactions.add(key, this.getByAllocations(allocationsByTransactions.get(key)));
|
|
91
|
-
});
|
|
92
|
-
return bankTransactionsByTransactions;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Get collection of bank transactions related with passed allocations
|
|
96
|
-
*/
|
|
97
|
-
getByAllocations(allocations) {
|
|
98
|
-
return new BankTransactionCollection(this.items.filter((bankTransaction) => allocations.hasBankTransaction(bankTransaction)));
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Set allocate operation for bank transactions with amounts equal to salary
|
|
102
|
-
*/
|
|
103
|
-
preselectAllocateOperationForSalary(salaryIncomeSources) {
|
|
104
|
-
// incomeSource.salaryForecasts[0] because each income source has only one forecast for current fin year
|
|
105
|
-
const salaryAmounts = salaryIncomeSources.map((incomeSource) => { var _a; return ((_a = incomeSource.salaryForecasts[0]) === null || _a === void 0 ? void 0 : _a.netPay) || 0; });
|
|
106
|
-
this.items.forEach((bankTransaction) => {
|
|
107
|
-
if (salaryAmounts.includes(bankTransaction.amount)) {
|
|
108
|
-
bankTransaction.operation = TransactionOperationEnum.ALLOCATE;
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Get collection of unallocated bankTransactions
|
|
114
|
-
*/
|
|
115
|
-
getUnallocatedBankTransactions(allocations) {
|
|
116
|
-
return new BankTransactionCollection(this.items.filter((bankTransaction) => !bankTransaction.isAllocated(allocations)));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2FjdGlvbi5jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL2NvbGxlY3Rpb25zL2JhbmstdHJhbnNhY3Rpb24uY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUtsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRy9EOztHQUVHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBVyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUU1RDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxVQUEyQjtJQUN4RSxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLFdBQTRDO1FBQy9ELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxrQkFBa0I7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Tyw4QkFBOEIsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxXQUE0QztRQUMzRCxPQUFPLElBQUkseUJBQXlCLENBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZ0MsRUFBVyxFQUFFLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQ2xILENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQ0FBbUMsQ0FBQyxtQkFBbUM7UUFDckUsd0dBQXdHO1FBQ3hHLE1BQU0sYUFBYSxHQUFhLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQTBCLEVBQVUsRUFBRSxXQUFDLE9BQUEsQ0FBQSxNQUFBLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLDBDQUFFLE1BQU0sS0FBSSxDQUFDLENBQUEsRUFBQSxDQUFDLENBQUM7UUFFOUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFnQyxFQUFRLEVBQUU7WUFDNUQsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDbEQsZUFBZSxDQUFDLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7YUFDL0Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILDhCQUE4QixDQUFDLFdBQTRDO1FBQ3pFLE9BQU8sSUFBSSx5QkFBeUIsQ0FDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFnQyxFQUFXLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDNUcsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uT3BlcmF0aW9uRW51bSB9IGZyb20gJy4uL2RiL0VudW1zL3RyYW5zYWN0aW9uLW9wZXJhdGlvbi5lbnVtJztcbmltcG9ydCB7IEJhbmtUcmFuc2FjdGlvbiB9IGZyb20gJy4uL21vZGVscy9iYW5rL2JhbmstdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgTW9udGhOdW1iZXJFbnVtIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbmFuY2lhbC15ZWFyL21vbnRoLW51bWJlci5lbnVtJztcbmltcG9ydCB7IEluY29tZVNvdXJjZSB9IGZyb20gJy4uL21vZGVscy9pbmNvbWUtc291cmNlL2luY29tZS1zb3VyY2UnO1xuaW1wb3J0IHsgQmFua0FjY291bnQgfSBmcm9tICcuLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRGljdGlvbmFyeSB9IGZyb20gJy4vY29sbGVjdGlvbi1kaWN0aW9uYXJ5JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQWxsb2NhdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uLWFsbG9jYXRpb24uY29sbGVjdGlvbic7XG5cbi8qKlxuICogTWF4aW1hbCBkZWxheSBiZXR3ZWVuIHRyYW5zZmVyIHRyYW5zYWN0aW9uc1xuICovXG5jb25zdCBUUkFOU0FDVElPTl9UUkFOU0ZFUl9ERUxBWTogbnVtYmVyID0gOTYgKiAzNjAwICogMTAwMDtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIGJhbmsgdHJhbnNhY3Rpb25zLlxuICogSU1QT1JUQU5UOiBDcmVhdGUgdGhpcyBjb2xsZWN0aW9uIGJhc2VkIG9uIGJhbmsgdHJhbnNhY3Rpb25zIGZyb20gVHJhbnNhY3Rpb25BbGxvY2F0aW9uU2VydmljZVxuICogQFRPRE8gZmluZCB3YXkgdG8gYWNjZXB0IGludGVyZmFjZSB3aXRoIGFsbG9jYXRpb24gaW5zdGVhZCBvZiBiYW5rVHJhbnNhY3Rpb24gdG8gcHJldmVudCB3cm9uZyB1c2FnZVxuICogYmVjYXVzZSBhbGwgYW1vdW50cyBjYWxjdWxhdGVzIHdpdGggYWxsb2NhdGVkIGFtb3VudHMgYnV0IG5vdCBmcm9tIGJhbmsgdHJhbnNhY3Rpb25zIGFtb3VudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uIGV4dGVuZHMgQ29sbGVjdGlvbjxCYW5rVHJhbnNhY3Rpb24+IHtcbiAgZ2V0QW1vdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3VtQnkoJ2Ftb3VudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpZmZlcmVuY2UgYmV0d2VlbiB0b3RhbCBiYW5rIHRyYW5zYWN0aW9ucyBhbW91bnQgYW5kIHN1bSBvZiBhbGxvY2F0aW9ucyBmb3IgcGFzc2VkIGJhbmsgdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXRVbmFsbG9jYXRlZEFtb3VudChhbGxvY2F0aW9uczogVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbikge1xuICAgIHJldHVybiArKHRoaXMuZ2V0QW1vdW50KCkgLSBhbGxvY2F0aW9ucy5nZXRCeUJhbmtUcmFuc2FjdGlvbnNJZHModGhpcy5nZXRJZHMoKSkuYW1vdW50KS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBkYXRlIG9mIHRoZSBsYXN0IHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXRMYXN0VHJhbnNhY3Rpb25EYXRlKCk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShNYXRoLm1heC5hcHBseShNYXRoLCB0aGlzLml0ZW1zLm1hcCgoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtUcmFuc2FjdGlvbi5kYXRlKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIGNyZWRpdCB0cmFuc2FjdGlvbnNcbiAgICovXG4gIGdldCBjcmVkaXRUcmFuc2FjdGlvbnMoKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBiYW5rVHJhbnNhY3Rpb24uaXNDcmVkaXQoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIGRlYml0IHRyYW5zYWN0aW9uc1xuICAgKi9cbiAgZ2V0IGRlYml0VHJhbnNhY3Rpb25zKCk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gYmFua1RyYW5zYWN0aW9uLmlzRGViaXQoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBkaWZmZXJlbmNlIGJldHdlZW4gZGViaXQgYW5kIGNyZWRpdCB0cmFuc2FjdGlvbnMgYW1vdW50c1xuICAgKi9cbiAgZ2V0IGJhbGFuY2VBbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gc3VtICsgYmFua1RyYW5zYWN0aW9uLmJhbGFuY2VBbW91bnQsIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIHRyYW5zYWN0aW9ucyBmb3IgcGFzc2VkIG1vbnRoXG4gICAqIEBwYXJhbSBtb250aEluZGV4IE1vbnRoIG51bWJlciBmcm9tIDAgdG8gMTFcbiAgICovXG4gIGdldFRyYW5zYWN0aW9uc0J5TW9udGgobW9udGhJbmRleDogTW9udGhOdW1iZXJFbnVtKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBiYW5rVHJhbnNhY3Rpb24uZGF0ZS5nZXRNb250aCgpID09PSBtb250aEluZGV4KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGJ5IHByb3ZpZGVkIGJhbmsgYWNjb3VudHNcbiAgICogQHBhcmFtIGJhbmtBY2NvdW50cyBieSB3aGljaCB0cmFuc2FjdGlvbnMgc2hvdWxkIGJlIHJldHVybmVkXG4gICAqL1xuICBnZXRCeUJhbmtBY2NvdW50cyhiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10pOiBCYW5rVHJhbnNhY3Rpb25bXSB7XG4gICAgY29uc3QgYmFua0FjY291bnRJZHM6IG51bWJlcltdID0gYmFua0FjY291bnRzLm1hcCgoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiBiYW5rQWNjb3VudC5pZCk7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gYmFua0FjY291bnRJZHMuaW5jbHVkZXMoYmFua1RyYW5zYWN0aW9uLmJhbmtBY2NvdW50LmlkKSk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGJ5IHByb3ZpZGVkIGlkcyBvZiBiYW5rIGFjY291bnRzXG4gICAqIEBwYXJhbSBpZHMgb2YgYmFuayBhY2NvdW50c1xuICAgKi9cbiAgZ2V0QnlCYW5rQWNjb3VudHNJZHMoaWRzOiBudW1iZXJbXSk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gaWRzLmluY2x1ZGVzKGJhbmtUcmFuc2FjdGlvbi5iYW5rQWNjb3VudC5pZCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIEJhbmsgVHJhbnNhY3Rpb24gYXZhaWxhYmxlIGZvciB0cmFuc2ZlclxuICAgKi9cbiAgZmluZFRyYW5zZmVyKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogQmFua1RyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kKChpdGVtOiBCYW5rVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHtcbiAgICAgIHJldHVybiBpdGVtLmFtb3VudCArIGJhbmtUcmFuc2FjdGlvbi5hbW91bnQgPT09IDAgJiZcbiAgICAgICAgTWF0aC5hYnMoYmFua1RyYW5zYWN0aW9uLmRhdGUuZ2V0VGltZSgpIC0gaXRlbS5kYXRlLmdldFRpbWUoKSkgPCBUUkFOU0FDVElPTl9UUkFOU0ZFUl9ERUxBWTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcm91cCBiYW5rIHRyYW5zYWN0aW9ucyBieSB0cmFuc2FjdGlvbiBpZC5cbiAgICogRWFjaCBncm91cCBpcyBiYW5rIHRyYW5zYWN0aW9uIGNvbGxlY3Rpb24gYW5kIGNvbnRhaW5zIGJhbmsgdHJhbnNhY3Rpb25zIHJlbGF0ZWQgdG8gdHJhbnNhY3Rpb25zIHZpYSBhbGxvY2F0aW9uc1xuICAgKi9cbiAgZ3JvdXBCeVRyYW5zYWN0aW9uKGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogQ29sbGVjdGlvbkRpY3Rpb25hcnk8QmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbj4ge1xuICAgIC8vIEdyb3VwIGFsbG9jYXRpb25zIGJ5IHRyYW5zYWN0aW9uIGlkXG4gICAgY29uc3QgYWxsb2NhdGlvbnNCeVRyYW5zYWN0aW9ucyA9IG5ldyBDb2xsZWN0aW9uRGljdGlvbmFyeShhbGxvY2F0aW9ucywgJ3RyYW5zYWN0aW9uJyk7XG4gICAgLy8gSW5pdCBhbiBlbXB0eSBkaWN0aW9uYXJ5IHdlIHdpbGwgZmlsbCBiZWxvd1xuICAgIGNvbnN0IGJhbmtUcmFuc2FjdGlvbnNCeVRyYW5zYWN0aW9uczogQ29sbGVjdGlvbkRpY3Rpb25hcnk8QmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbj4gPSBuZXcgQ29sbGVjdGlvbkRpY3Rpb25hcnkobmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oW10pKTtcblxuICAgIC8vIEZpbGwgZGljdGlvbmFyeSB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYXQgYWxsb2NhdGlvbnNCeVRyYW5zYWN0aW9uc1xuICAgIGFsbG9jYXRpb25zQnlUcmFuc2FjdGlvbnMua2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgYmFua1RyYW5zYWN0aW9uc0J5VHJhbnNhY3Rpb25zLmFkZChrZXksIHRoaXMuZ2V0QnlBbGxvY2F0aW9ucyhhbGxvY2F0aW9uc0J5VHJhbnNhY3Rpb25zLmdldChrZXkpKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFua1RyYW5zYWN0aW9uc0J5VHJhbnNhY3Rpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb2xsZWN0aW9uIG9mIGJhbmsgdHJhbnNhY3Rpb25zIHJlbGF0ZWQgd2l0aCBwYXNzZWQgYWxsb2NhdGlvbnNcbiAgICovXG4gIGdldEJ5QWxsb2NhdGlvbnMoYWxsb2NhdGlvbnM6IFRyYW5zYWN0aW9uQWxsb2NhdGlvbkNvbGxlY3Rpb24pOiBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IGFsbG9jYXRpb25zLmhhc0JhbmtUcmFuc2FjdGlvbihiYW5rVHJhbnNhY3Rpb24pKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGFsbG9jYXRlIG9wZXJhdGlvbiBmb3IgYmFuayB0cmFuc2FjdGlvbnMgd2l0aCBhbW91bnRzIGVxdWFsIHRvIHNhbGFyeVxuICAgKi9cbiAgcHJlc2VsZWN0QWxsb2NhdGVPcGVyYXRpb25Gb3JTYWxhcnkoc2FsYXJ5SW5jb21lU291cmNlczogSW5jb21lU291cmNlW10pOiB2b2lkIHtcbiAgICAvLyBpbmNvbWVTb3VyY2Uuc2FsYXJ5Rm9yZWNhc3RzWzBdIGJlY2F1c2UgZWFjaCBpbmNvbWUgc291cmNlIGhhcyBvbmx5IG9uZSBmb3JlY2FzdCBmb3IgY3VycmVudCBmaW4geWVhclxuICAgIGNvbnN0IHNhbGFyeUFtb3VudHM6IG51bWJlcltdID0gc2FsYXJ5SW5jb21lU291cmNlcy5tYXAoKGluY29tZVNvdXJjZTogSW5jb21lU291cmNlKTogbnVtYmVyID0+IGluY29tZVNvdXJjZS5zYWxhcnlGb3JlY2FzdHNbMF0/Lm5ldFBheSB8fCAwKTtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pOiB2b2lkID0+IHtcbiAgICAgIGlmIChzYWxhcnlBbW91bnRzLmluY2x1ZGVzKGJhbmtUcmFuc2FjdGlvbi5hbW91bnQpKSB7XG4gICAgICAgIGJhbmtUcmFuc2FjdGlvbi5vcGVyYXRpb24gPSBUcmFuc2FjdGlvbk9wZXJhdGlvbkVudW0uQUxMT0NBVEU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbGxlY3Rpb24gb2YgdW5hbGxvY2F0ZWQgYmFua1RyYW5zYWN0aW9uc1xuICAgKi9cbiAgZ2V0VW5hbGxvY2F0ZWRCYW5rVHJhbnNhY3Rpb25zKGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiAhYmFua1RyYW5zYWN0aW9uLmlzQWxsb2NhdGVkKGFsbG9jYXRpb25zKSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
1
|
+
import { TransactionOperationEnum } from '../db/Enums/transaction-operation.enum';
|
|
2
|
+
import { Collection } from './collection';
|
|
3
|
+
import { CollectionDictionary } from './collection-dictionary';
|
|
4
|
+
/**
|
|
5
|
+
* Maximal delay between transfer transactions
|
|
6
|
+
*/
|
|
7
|
+
const TRANSACTION_TRANSFER_DELAY = 96 * 3600 * 1000;
|
|
8
|
+
/**
|
|
9
|
+
* Collection of bank transactions.
|
|
10
|
+
* IMPORTANT: Create this collection based on bank transactions from TransactionAllocationService
|
|
11
|
+
* @TODO find way to accept interface with allocation instead of bankTransaction to prevent wrong usage
|
|
12
|
+
* because all amounts calculates with allocated amounts but not from bank transactions amounts.
|
|
13
|
+
*/
|
|
14
|
+
export class BankTransactionCollection extends Collection {
|
|
15
|
+
getAmount() {
|
|
16
|
+
return this.sumBy('amount');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Difference between total bank transactions amount and sum of allocations for passed bank transactions
|
|
20
|
+
*/
|
|
21
|
+
getUnallocatedAmount(allocations) {
|
|
22
|
+
return +(this.getAmount() - allocations.getByBankTransactionsIds(this.getIds()).amount).toFixed(2);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* get date of the last transaction
|
|
26
|
+
*/
|
|
27
|
+
getLastTransactionDate() {
|
|
28
|
+
return new Date(Math.max.apply(Math, this.items.map((bankTransaction) => bankTransaction.date)));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* get list of credit transactions
|
|
32
|
+
*/
|
|
33
|
+
get creditTransactions() {
|
|
34
|
+
return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.isCredit()));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* get list of debit transactions
|
|
38
|
+
*/
|
|
39
|
+
get debitTransactions() {
|
|
40
|
+
return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.isDebit()));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* get difference between debit and credit transactions amounts
|
|
44
|
+
*/
|
|
45
|
+
get balanceAmount() {
|
|
46
|
+
return this.items.reduce((sum, bankTransaction) => sum + bankTransaction.balanceAmount, 0);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* get list of transactions for passed month
|
|
50
|
+
* @param monthIndex Month number from 0 to 11
|
|
51
|
+
*/
|
|
52
|
+
getTransactionsByMonth(monthIndex) {
|
|
53
|
+
return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.date.getMonth() === monthIndex));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* get list of transactions by provided bank accounts
|
|
57
|
+
* @param bankAccounts by which transactions should be returned
|
|
58
|
+
*/
|
|
59
|
+
getByBankAccounts(bankAccounts) {
|
|
60
|
+
const bankAccountIds = bankAccounts.map((bankAccount) => bankAccount.id);
|
|
61
|
+
return this.items.filter((bankTransaction) => bankAccountIds.includes(bankTransaction.bankAccount.id));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* get list of transactions by provided ids of bank accounts
|
|
65
|
+
* @param ids of bank accounts
|
|
66
|
+
*/
|
|
67
|
+
getByBankAccountsIds(ids) {
|
|
68
|
+
return new BankTransactionCollection(this.items.filter((bankTransaction) => ids.includes(bankTransaction.bankAccount.id)));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Find Bank Transaction available for transfer
|
|
72
|
+
*/
|
|
73
|
+
findTransfer(bankTransaction) {
|
|
74
|
+
return this.items.find((item) => {
|
|
75
|
+
return item.amount + bankTransaction.amount === 0 &&
|
|
76
|
+
Math.abs(bankTransaction.date.getTime() - item.date.getTime()) < TRANSACTION_TRANSFER_DELAY;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Group bank transactions by transaction id.
|
|
81
|
+
* Each group is bank transaction collection and contains bank transactions related to transactions via allocations
|
|
82
|
+
*/
|
|
83
|
+
groupByTransaction(allocations) {
|
|
84
|
+
// Group allocations by transaction id
|
|
85
|
+
const allocationsByTransactions = new CollectionDictionary(allocations, 'transaction');
|
|
86
|
+
// Init an empty dictionary we will fill below
|
|
87
|
+
const bankTransactionsByTransactions = new CollectionDictionary(new BankTransactionCollection([]));
|
|
88
|
+
// Fill dictionary with the same keys as at allocationsByTransactions
|
|
89
|
+
allocationsByTransactions.keys.forEach((key) => {
|
|
90
|
+
bankTransactionsByTransactions.add(key, this.getByAllocations(allocationsByTransactions.get(key)));
|
|
91
|
+
});
|
|
92
|
+
return bankTransactionsByTransactions;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get collection of bank transactions related with passed allocations
|
|
96
|
+
*/
|
|
97
|
+
getByAllocations(allocations) {
|
|
98
|
+
return new BankTransactionCollection(this.items.filter((bankTransaction) => allocations.hasBankTransaction(bankTransaction)));
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Set allocate operation for bank transactions with amounts equal to salary
|
|
102
|
+
*/
|
|
103
|
+
preselectAllocateOperationForSalary(salaryIncomeSources) {
|
|
104
|
+
// incomeSource.salaryForecasts[0] because each income source has only one forecast for current fin year
|
|
105
|
+
const salaryAmounts = salaryIncomeSources.map((incomeSource) => { var _a; return ((_a = incomeSource.salaryForecasts[0]) === null || _a === void 0 ? void 0 : _a.netPay) || 0; });
|
|
106
|
+
this.items.forEach((bankTransaction) => {
|
|
107
|
+
if (salaryAmounts.includes(bankTransaction.amount)) {
|
|
108
|
+
bankTransaction.operation = TransactionOperationEnum.ALLOCATE;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get collection of unallocated bankTransactions
|
|
114
|
+
*/
|
|
115
|
+
getUnallocatedBankTransactions(allocations) {
|
|
116
|
+
return new BankTransactionCollection(this.items.filter((bankTransaction) => !bankTransaction.isAllocated(allocations)));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2FjdGlvbi5jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL2NvbGxlY3Rpb25zL2JhbmstdHJhbnNhY3Rpb24uY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUtsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRy9EOztHQUVHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBVyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUU1RDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxVQUEyQjtJQUN4RSxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLFdBQTRDO1FBQy9ELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxrQkFBa0I7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Tyw4QkFBOEIsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxXQUE0QztRQUMzRCxPQUFPLElBQUkseUJBQXlCLENBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZ0MsRUFBVyxFQUFFLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQ2xILENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQ0FBbUMsQ0FBQyxtQkFBbUM7UUFDckUsd0dBQXdHO1FBQ3hHLE1BQU0sYUFBYSxHQUFhLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQTBCLEVBQVUsRUFBRSxXQUFDLE9BQUEsQ0FBQSxNQUFBLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLDBDQUFFLE1BQU0sS0FBSSxDQUFDLENBQUEsRUFBQSxDQUFDLENBQUM7UUFFOUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFnQyxFQUFRLEVBQUU7WUFDNUQsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDbEQsZUFBZSxDQUFDLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7YUFDL0Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILDhCQUE4QixDQUFDLFdBQTRDO1FBQ3pFLE9BQU8sSUFBSSx5QkFBeUIsQ0FDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFnQyxFQUFXLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDNUcsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uT3BlcmF0aW9uRW51bSB9IGZyb20gJy4uL2RiL0VudW1zL3RyYW5zYWN0aW9uLW9wZXJhdGlvbi5lbnVtJztcclxuaW1wb3J0IHsgQmFua1RyYW5zYWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2JhbmsvYmFuay10cmFuc2FjdGlvbic7XHJcbmltcG9ydCB7IE1vbnRoTnVtYmVyRW51bSB9IGZyb20gJy4uL21vZGVscy9maW5hbmNpYWwteWVhci9tb250aC1udW1iZXIuZW51bSc7XHJcbmltcG9ydCB7IEluY29tZVNvdXJjZSB9IGZyb20gJy4uL21vZGVscy9pbmNvbWUtc291cmNlL2luY29tZS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBCYW5rQWNjb3VudCB9IGZyb20gJy4uL21vZGVscy9iYW5rL2JhbmstYWNjb3VudCc7XHJcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb2xsZWN0aW9uRGljdGlvbmFyeSB9IGZyb20gJy4vY29sbGVjdGlvbi1kaWN0aW9uYXJ5JztcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24tYWxsb2NhdGlvbi5jb2xsZWN0aW9uJztcclxuXHJcbi8qKlxyXG4gKiBNYXhpbWFsIGRlbGF5IGJldHdlZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb25zXHJcbiAqL1xyXG5jb25zdCBUUkFOU0FDVElPTl9UUkFOU0ZFUl9ERUxBWTogbnVtYmVyID0gOTYgKiAzNjAwICogMTAwMDtcclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0aW9uIG9mIGJhbmsgdHJhbnNhY3Rpb25zLlxyXG4gKiBJTVBPUlRBTlQ6IENyZWF0ZSB0aGlzIGNvbGxlY3Rpb24gYmFzZWQgb24gYmFuayB0cmFuc2FjdGlvbnMgZnJvbSBUcmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlXHJcbiAqIEBUT0RPIGZpbmQgd2F5IHRvIGFjY2VwdCBpbnRlcmZhY2Ugd2l0aCBhbGxvY2F0aW9uIGluc3RlYWQgb2YgYmFua1RyYW5zYWN0aW9uIHRvIHByZXZlbnQgd3JvbmcgdXNhZ2VcclxuICogYmVjYXVzZSBhbGwgYW1vdW50cyBjYWxjdWxhdGVzIHdpdGggYWxsb2NhdGVkIGFtb3VudHMgYnV0IG5vdCBmcm9tIGJhbmsgdHJhbnNhY3Rpb25zIGFtb3VudHMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248QmFua1RyYW5zYWN0aW9uPiB7XHJcbiAgZ2V0QW1vdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5zdW1CeSgnYW1vdW50Jyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaWZmZXJlbmNlIGJldHdlZW4gdG90YWwgYmFuayB0cmFuc2FjdGlvbnMgYW1vdW50IGFuZCBzdW0gb2YgYWxsb2NhdGlvbnMgZm9yIHBhc3NlZCBiYW5rIHRyYW5zYWN0aW9uc1xyXG4gICAqL1xyXG4gIGdldFVuYWxsb2NhdGVkQW1vdW50KGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKSB7XHJcbiAgICByZXR1cm4gKyh0aGlzLmdldEFtb3VudCgpIC0gYWxsb2NhdGlvbnMuZ2V0QnlCYW5rVHJhbnNhY3Rpb25zSWRzKHRoaXMuZ2V0SWRzKCkpLmFtb3VudCkudG9GaXhlZCgyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCBkYXRlIG9mIHRoZSBsYXN0IHRyYW5zYWN0aW9uXHJcbiAgICovXHJcbiAgZ2V0TGFzdFRyYW5zYWN0aW9uRGF0ZSgpOiBEYXRlIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShNYXRoLm1heC5hcHBseShNYXRoLCB0aGlzLml0ZW1zLm1hcCgoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtUcmFuc2FjdGlvbi5kYXRlKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGxpc3Qgb2YgY3JlZGl0IHRyYW5zYWN0aW9uc1xyXG4gICAqL1xyXG4gIGdldCBjcmVkaXRUcmFuc2FjdGlvbnMoKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oXHJcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gYmFua1RyYW5zYWN0aW9uLmlzQ3JlZGl0KCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGxpc3Qgb2YgZGViaXQgdHJhbnNhY3Rpb25zXHJcbiAgICovXHJcbiAgZ2V0IGRlYml0VHJhbnNhY3Rpb25zKCk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtUcmFuc2FjdGlvbi5pc0RlYml0KCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGRpZmZlcmVuY2UgYmV0d2VlbiBkZWJpdCBhbmQgY3JlZGl0IHRyYW5zYWN0aW9ucyBhbW91bnRzXHJcbiAgICovXHJcbiAgZ2V0IGJhbGFuY2VBbW91bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBzdW0gKyBiYW5rVHJhbnNhY3Rpb24uYmFsYW5jZUFtb3VudCwgMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgZm9yIHBhc3NlZCBtb250aFxyXG4gICAqIEBwYXJhbSBtb250aEluZGV4IE1vbnRoIG51bWJlciBmcm9tIDAgdG8gMTFcclxuICAgKi9cclxuICBnZXRUcmFuc2FjdGlvbnNCeU1vbnRoKG1vbnRoSW5kZXg6IE1vbnRoTnVtYmVyRW51bSk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtUcmFuc2FjdGlvbi5kYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoSW5kZXgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGJ5IHByb3ZpZGVkIGJhbmsgYWNjb3VudHNcclxuICAgKiBAcGFyYW0gYmFua0FjY291bnRzIGJ5IHdoaWNoIHRyYW5zYWN0aW9ucyBzaG91bGQgYmUgcmV0dXJuZWRcclxuICAgKi9cclxuICBnZXRCeUJhbmtBY2NvdW50cyhiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10pOiBCYW5rVHJhbnNhY3Rpb25bXSB7XHJcbiAgICBjb25zdCBiYW5rQWNjb3VudElkczogbnVtYmVyW10gPSBiYW5rQWNjb3VudHMubWFwKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IGJhbmtBY2NvdW50LmlkKTtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtBY2NvdW50SWRzLmluY2x1ZGVzKGJhbmtUcmFuc2FjdGlvbi5iYW5rQWNjb3VudC5pZCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGJ5IHByb3ZpZGVkIGlkcyBvZiBiYW5rIGFjY291bnRzXHJcbiAgICogQHBhcmFtIGlkcyBvZiBiYW5rIGFjY291bnRzXHJcbiAgICovXHJcbiAgZ2V0QnlCYW5rQWNjb3VudHNJZHMoaWRzOiBudW1iZXJbXSk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGlkcy5pbmNsdWRlcyhiYW5rVHJhbnNhY3Rpb24uYmFua0FjY291bnQuaWQpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgQmFuayBUcmFuc2FjdGlvbiBhdmFpbGFibGUgZm9yIHRyYW5zZmVyXHJcbiAgICovXHJcbiAgZmluZFRyYW5zZmVyKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogQmFua1RyYW5zYWN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbmQoKGl0ZW06IEJhbmtUcmFuc2FjdGlvbik6IGJvb2xlYW4gPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbS5hbW91bnQgKyBiYW5rVHJhbnNhY3Rpb24uYW1vdW50ID09PSAwICYmXHJcbiAgICAgICAgTWF0aC5hYnMoYmFua1RyYW5zYWN0aW9uLmRhdGUuZ2V0VGltZSgpIC0gaXRlbS5kYXRlLmdldFRpbWUoKSkgPCBUUkFOU0FDVElPTl9UUkFOU0ZFUl9ERUxBWTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR3JvdXAgYmFuayB0cmFuc2FjdGlvbnMgYnkgdHJhbnNhY3Rpb24gaWQuXHJcbiAgICogRWFjaCBncm91cCBpcyBiYW5rIHRyYW5zYWN0aW9uIGNvbGxlY3Rpb24gYW5kIGNvbnRhaW5zIGJhbmsgdHJhbnNhY3Rpb25zIHJlbGF0ZWQgdG8gdHJhbnNhY3Rpb25zIHZpYSBhbGxvY2F0aW9uc1xyXG4gICAqL1xyXG4gIGdyb3VwQnlUcmFuc2FjdGlvbihhbGxvY2F0aW9uczogVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbik6IENvbGxlY3Rpb25EaWN0aW9uYXJ5PEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24+IHtcclxuICAgIC8vIEdyb3VwIGFsbG9jYXRpb25zIGJ5IHRyYW5zYWN0aW9uIGlkXHJcbiAgICBjb25zdCBhbGxvY2F0aW9uc0J5VHJhbnNhY3Rpb25zID0gbmV3IENvbGxlY3Rpb25EaWN0aW9uYXJ5KGFsbG9jYXRpb25zLCAndHJhbnNhY3Rpb24nKTtcclxuICAgIC8vIEluaXQgYW4gZW1wdHkgZGljdGlvbmFyeSB3ZSB3aWxsIGZpbGwgYmVsb3dcclxuICAgIGNvbnN0IGJhbmtUcmFuc2FjdGlvbnNCeVRyYW5zYWN0aW9uczogQ29sbGVjdGlvbkRpY3Rpb25hcnk8QmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbj4gPSBuZXcgQ29sbGVjdGlvbkRpY3Rpb25hcnkobmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oW10pKTtcclxuXHJcbiAgICAvLyBGaWxsIGRpY3Rpb25hcnkgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGF0IGFsbG9jYXRpb25zQnlUcmFuc2FjdGlvbnNcclxuICAgIGFsbG9jYXRpb25zQnlUcmFuc2FjdGlvbnMua2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gICAgICBiYW5rVHJhbnNhY3Rpb25zQnlUcmFuc2FjdGlvbnMuYWRkKGtleSwgdGhpcy5nZXRCeUFsbG9jYXRpb25zKGFsbG9jYXRpb25zQnlUcmFuc2FjdGlvbnMuZ2V0KGtleSkpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBiYW5rVHJhbnNhY3Rpb25zQnlUcmFuc2FjdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY29sbGVjdGlvbiBvZiBiYW5rIHRyYW5zYWN0aW9ucyByZWxhdGVkIHdpdGggcGFzc2VkIGFsbG9jYXRpb25zXHJcbiAgICovXHJcbiAgZ2V0QnlBbGxvY2F0aW9ucyhhbGxvY2F0aW9uczogVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbik6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IGFsbG9jYXRpb25zLmhhc0JhbmtUcmFuc2FjdGlvbihiYW5rVHJhbnNhY3Rpb24pKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBhbGxvY2F0ZSBvcGVyYXRpb24gZm9yIGJhbmsgdHJhbnNhY3Rpb25zIHdpdGggYW1vdW50cyBlcXVhbCB0byBzYWxhcnlcclxuICAgKi9cclxuICBwcmVzZWxlY3RBbGxvY2F0ZU9wZXJhdGlvbkZvclNhbGFyeShzYWxhcnlJbmNvbWVTb3VyY2VzOiBJbmNvbWVTb3VyY2VbXSk6IHZvaWQge1xyXG4gICAgLy8gaW5jb21lU291cmNlLnNhbGFyeUZvcmVjYXN0c1swXSBiZWNhdXNlIGVhY2ggaW5jb21lIHNvdXJjZSBoYXMgb25seSBvbmUgZm9yZWNhc3QgZm9yIGN1cnJlbnQgZmluIHllYXJcclxuICAgIGNvbnN0IHNhbGFyeUFtb3VudHM6IG51bWJlcltdID0gc2FsYXJ5SW5jb21lU291cmNlcy5tYXAoKGluY29tZVNvdXJjZTogSW5jb21lU291cmNlKTogbnVtYmVyID0+IGluY29tZVNvdXJjZS5zYWxhcnlGb3JlY2FzdHNbMF0/Lm5ldFBheSB8fCAwKTtcclxuXHJcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogdm9pZCA9PiB7XHJcbiAgICAgIGlmIChzYWxhcnlBbW91bnRzLmluY2x1ZGVzKGJhbmtUcmFuc2FjdGlvbi5hbW91bnQpKSB7XHJcbiAgICAgICAgYmFua1RyYW5zYWN0aW9uLm9wZXJhdGlvbiA9IFRyYW5zYWN0aW9uT3BlcmF0aW9uRW51bS5BTExPQ0FURTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY29sbGVjdGlvbiBvZiB1bmFsbG9jYXRlZCBiYW5rVHJhbnNhY3Rpb25zXHJcbiAgICovXHJcbiAgZ2V0VW5hbGxvY2F0ZWRCYW5rVHJhbnNhY3Rpb25zKGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oXHJcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbik6IGJvb2xlYW4gPT4gIWJhbmtUcmFuc2FjdGlvbi5pc0FsbG9jYXRlZChhbGxvY2F0aW9ucykpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|