taxtank-core 0.0.1 → 0.1.1
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/.browserslistrc +16 -0
- package/karma.conf.js +44 -0
- package/ng-package.json +12 -0
- package/package.json +13 -12
- package/src/lib/collections/abstract.collection.ts +83 -0
- package/src/lib/collections/bank-account.collection.ts +171 -0
- package/src/lib/collections/bank-transaction.collection.ts +153 -0
- package/src/lib/collections/client-movement.collection.ts +42 -0
- package/src/lib/collections/client-portfolio-report.collection.ts +47 -0
- package/src/lib/collections/client.collection.ts +5 -0
- package/src/lib/collections/collection-dictionary.ts +112 -0
- package/src/lib/collections/depreciation-forecast.collection.ts +25 -0
- package/src/lib/collections/depreciation.collection.ts +113 -0
- package/src/lib/collections/employee.collection.ts +14 -0
- package/src/lib/collections/income-source.collection.ts +44 -0
- package/src/lib/collections/loan.collection.ts +22 -0
- package/src/lib/collections/logbook.collection.ts +129 -0
- package/src/lib/collections/message-document.collection.ts +16 -0
- package/src/lib/collections/message.collection.ts +27 -0
- package/src/lib/collections/property.collection.ts +88 -0
- package/src/lib/collections/service-price.collection.ts +13 -0
- package/src/lib/collections/service-subscription.collection.ts +20 -0
- package/src/lib/collections/tax-return-category-item.collection.ts +148 -0
- package/src/lib/collections/tax-review.collection.ts +64 -0
- package/src/lib/collections/transaction-allocation.collection.ts +54 -0
- package/src/lib/collections/transaction.collection.ts +170 -0
- package/src/lib/collections/user-event-setting.collection.ts +70 -0
- package/src/lib/db/Enums/address-type.enum.ts +4 -0
- package/src/lib/db/Enums/bank-account-status.enum.ts +4 -0
- package/src/lib/db/Enums/bank-account-type.enum.ts +10 -0
- package/src/lib/db/Enums/bank-connection-status.enum.ts +5 -0
- package/src/lib/db/Enums/bank-transaction-type.enum.ts +4 -0
- package/src/lib/db/Enums/chart-accounts-category.enum.ts +13 -0
- package/src/lib/db/Enums/chart-accounts-etp.enum.ts +7 -0
- package/src/lib/db/Enums/chart-accounts-heading-tax-deductible.enum.ts +6 -0
- package/src/lib/db/Enums/chart-accounts-heading-taxable.enum.ts +6 -0
- package/src/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.ts +4 -0
- package/src/lib/db/Enums/chart-accounts-list.enum.ts +19 -0
- package/src/lib/db/Enums/chart-accounts-metadata-list.enum.ts +14 -0
- package/src/lib/db/Enums/chart-accounts-metadata-type.enum.ts +4 -0
- package/src/lib/db/Enums/chart-accounts-type.enum.ts +4 -0
- package/src/lib/db/Enums/chat-status.enum.ts +4 -0
- package/src/lib/db/Enums/client-details-medicare-exemption.enum.ts +5 -0
- package/src/lib/db/Enums/client-details-work-depreciation-calculation.enum.ts +4 -0
- package/src/lib/db/Enums/client-details-working-holiday-maker.enum.ts +5 -0
- package/src/lib/db/Enums/client-invite-status.enum.ts +4 -0
- package/src/lib/db/Enums/client-invite-type.enum.ts +4 -0
- package/src/lib/db/Enums/depreciation-calculation-percent.enum.ts +7 -0
- package/src/lib/db/Enums/depreciation-calculation.enum.ts +7 -0
- package/src/lib/db/Enums/depreciation-type.enum.ts +6 -0
- package/src/lib/db/Enums/depreciation-write-off-amount.enum.ts +4 -0
- package/src/lib/db/Enums/firm-type.enum.ts +4 -0
- package/src/lib/db/Enums/income-source-type-list-other.enum.ts +6 -0
- package/src/lib/db/Enums/income-source-type-list-salary.enum.ts +3 -0
- package/src/lib/db/Enums/income-source-type-list-work.enum.ts +8 -0
- package/src/lib/db/Enums/income-source-type.enum.ts +5 -0
- package/src/lib/db/Enums/invite-status.enum.ts +5 -0
- package/src/lib/db/Enums/loan-bank-type.enum.ts +10 -0
- package/src/lib/db/Enums/loan-frequency.enum.ts +6 -0
- package/src/lib/db/Enums/loan-interest-type.enum.ts +4 -0
- package/src/lib/db/Enums/loan-payout-type.enum.ts +4 -0
- package/src/lib/db/Enums/loan-repayment-frequency.enum.ts +5 -0
- package/src/lib/db/Enums/loan-repayment-type.enum.ts +4 -0
- package/src/lib/db/Enums/loan-type.enum.ts +12 -0
- package/src/lib/db/Enums/loan-vehicle-type.enum.ts +5 -0
- package/src/lib/db/Enums/phone-type.enum.ts +4 -0
- package/src/lib/db/Enums/property-depreciation-calculation.enum.ts +4 -0
- package/src/lib/db/Enums/property-owner-access.enum.ts +4 -0
- package/src/lib/db/Enums/property-owner-status.enum.ts +5 -0
- package/src/lib/db/Enums/registration-invite-status.enum.ts +4 -0
- package/src/lib/db/Enums/salary-forecast-frequency.enum.ts +6 -0
- package/src/lib/db/Enums/service-notification-status.enum.ts +5 -0
- package/src/lib/db/Enums/service-notification-type.enum.ts +4 -0
- package/src/lib/db/Enums/service-payment-status.enum.ts +4 -0
- package/src/lib/db/Enums/service-price-recurring-interval.enum.ts +6 -0
- package/src/lib/db/Enums/service-price-type.enum.ts +4 -0
- package/src/lib/db/Enums/service-subscription-status.enum.ts +8 -0
- package/src/lib/db/Enums/spare-document-spare-type.enum.ts +4 -0
- package/src/lib/db/Enums/tank-type.enum.ts +5 -0
- package/src/lib/db/Enums/tax-calculation-medicare-exemption.enum.ts +4 -0
- package/src/lib/db/Enums/tax-calculation-type.enum.ts +12 -0
- package/src/lib/db/Enums/tax-return-category-list.enum.ts +26 -0
- package/src/lib/db/Enums/tax-return-category-section.enum.ts +6 -0
- package/src/lib/db/Enums/tax-review-status.enum.ts +11 -0
- package/src/lib/db/Enums/tax-summary-list.enum.ts +15 -0
- package/src/lib/db/Enums/tax-summary-section.enum.ts +6 -0
- package/src/lib/db/Enums/tax-summary-tax-summary.enum.ts +15 -0
- package/src/lib/db/Enums/ticket-feedback.enum.ts +4 -0
- package/src/lib/db/Enums/ticket-status.enum.ts +7 -0
- package/src/lib/db/Enums/ticket-types.enum.ts +3 -0
- package/src/lib/db/Enums/transaction-operation.enum.ts +5 -0
- package/src/lib/db/Enums/transaction-source.enum.ts +4 -0
- package/src/lib/db/Enums/transaction-type.enum.ts +4 -0
- package/src/lib/db/Enums/user-event-status.enum.ts +6 -0
- package/src/lib/db/Enums/user-event-type-frequency.enum.ts +6 -0
- package/src/lib/db/Enums/user-event-type-reminder-type.enum.ts +6 -0
- package/src/lib/db/Enums/user-event-type-reminder.enum.ts +5 -0
- package/src/lib/db/Enums/user-event-type-type.enum.ts +33 -0
- package/src/lib/db/Enums/user-medicare-exemption.enum.ts +5 -0
- package/src/lib/db/Enums/user-roles.enum.ts +13 -0
- package/src/lib/db/Enums/user-status.enum.ts +6 -0
- package/src/lib/db/Enums/user-title.enum.ts +7 -0
- package/src/lib/db/Enums/user-work-depreciation-calculation.enum.ts +4 -0
- package/src/lib/db/Enums/user-working-holiday-maker.enum.ts +5 -0
- package/src/lib/db/Enums/vehicle-claim-method.enum.ts +4 -0
- package/src/lib/db/Enums/vehicle-logbook-purpose.enum.ts +4 -0
- package/src/lib/db/Models/address.ts +20 -0
- package/src/lib/db/Models/bank-account-balance.ts +13 -0
- package/src/lib/db/Models/bank-account-property.ts +9 -0
- package/src/lib/db/Models/bank-account.ts +34 -0
- package/src/lib/db/Models/bank-connection.ts +15 -0
- package/src/lib/db/Models/bank-provider-account.ts +13 -0
- package/src/lib/db/Models/bank-transaction-import.ts +12 -0
- package/src/lib/db/Models/bank-transaction-rule.ts +26 -0
- package/src/lib/db/Models/bank-transaction.ts +17 -0
- package/src/lib/db/Models/bank.ts +12 -0
- package/src/lib/db/Models/basiq-job.ts +9 -0
- package/src/lib/db/Models/borrowing-expense-loan.ts +15 -0
- package/src/lib/db/Models/borrowing-expense.ts +7 -0
- package/src/lib/db/Models/capital-cost-property.ts +14 -0
- package/src/lib/db/Models/capital-cost.ts +4 -0
- package/src/lib/db/Models/chart-accounts-depreciation.ts +11 -0
- package/src/lib/db/Models/chart-accounts-heading.ts +7 -0
- package/src/lib/db/Models/chart-accounts-metadata.ts +12 -0
- package/src/lib/db/Models/chart-accounts-value.ts +13 -0
- package/src/lib/db/Models/chart-accounts.ts +24 -0
- package/src/lib/db/Models/chat.ts +18 -0
- package/src/lib/db/Models/client-details.ts +30 -0
- package/src/lib/db/Models/client-invite.ts +17 -0
- package/src/lib/db/Models/client-movement.ts +13 -0
- package/src/lib/db/Models/country.ts +5 -0
- package/src/lib/db/Models/depreciation-capital-project.ts +14 -0
- package/src/lib/db/Models/depreciation-forecast.ts +19 -0
- package/src/lib/db/Models/depreciation-receipt.ts +12 -0
- package/src/lib/db/Models/depreciation.ts +43 -0
- package/src/lib/db/Models/document-base.ts +10 -0
- package/src/lib/db/Models/document-folder.ts +10 -0
- package/src/lib/db/Models/document.ts +12 -0
- package/src/lib/db/Models/employee-details.ts +8 -0
- package/src/lib/db/Models/employee-invite.ts +10 -0
- package/src/lib/db/Models/financial-data-system.ts +10 -0
- package/src/lib/db/Models/firm-invite.ts +15 -0
- package/src/lib/db/Models/firm.ts +29 -0
- package/src/lib/db/Models/income-source-forecast.ts +13 -0
- package/src/lib/db/Models/income-source-type.ts +9 -0
- package/src/lib/db/Models/income-source.ts +21 -0
- package/src/lib/db/Models/loan-payout.ts +13 -0
- package/src/lib/db/Models/loan.ts +34 -0
- package/src/lib/db/Models/message-document.ts +16 -0
- package/src/lib/db/Models/message.ts +16 -0
- package/src/lib/db/Models/occupation.ts +5 -0
- package/src/lib/db/Models/phone.ts +13 -0
- package/src/lib/db/Models/property-capital-cost.ts +14 -0
- package/src/lib/db/Models/property-category-movement.ts +18 -0
- package/src/lib/db/Models/property-category.ts +14 -0
- package/src/lib/db/Models/property-document.ts +14 -0
- package/src/lib/db/Models/property-forecast.ts +15 -0
- package/src/lib/db/Models/property-owner.ts +21 -0
- package/src/lib/db/Models/property-sold.ts +13 -0
- package/src/lib/db/Models/property-subscription.ts +10 -0
- package/src/lib/db/Models/property-valuation.ts +13 -0
- package/src/lib/db/Models/property.ts +42 -0
- package/src/lib/db/Models/registration-invite.ts +13 -0
- package/src/lib/db/Models/salary-forecast.ts +16 -0
- package/src/lib/db/Models/service-notification.ts +14 -0
- package/src/lib/db/Models/service-payment.ts +12 -0
- package/src/lib/db/Models/service-price.ts +16 -0
- package/src/lib/db/Models/service-product.ts +13 -0
- package/src/lib/db/Models/service-subscription-item.ts +10 -0
- package/src/lib/db/Models/service-subscription.ts +15 -0
- package/src/lib/db/Models/spare-document-category.ts +6 -0
- package/src/lib/db/Models/spare-document.ts +16 -0
- package/src/lib/db/Models/tax-calculation.ts +19 -0
- package/src/lib/db/Models/tax-return-category.ts +13 -0
- package/src/lib/db/Models/tax-return-item.ts +16 -0
- package/src/lib/db/Models/tax-return.ts +9 -0
- package/src/lib/db/Models/tax-review.ts +14 -0
- package/src/lib/db/Models/ticket.ts +20 -0
- package/src/lib/db/Models/transaction-allocation.ts +9 -0
- package/src/lib/db/Models/transaction-base.ts +33 -0
- package/src/lib/db/Models/transaction-metadata.ts +12 -0
- package/src/lib/db/Models/transaction-receipt.ts +12 -0
- package/src/lib/db/Models/transaction.ts +44 -0
- package/src/lib/db/Models/user-event-setting.ts +11 -0
- package/src/lib/db/Models/user-event-type.ts +16 -0
- package/src/lib/db/Models/user-event.ts +14 -0
- package/src/lib/db/Models/user.ts +52 -0
- package/src/lib/db/Models/vehicle-claim.ts +12 -0
- package/src/lib/db/Models/vehicle-logbook.ts +17 -0
- package/src/lib/db/Models/vehicle.ts +9 -0
- package/src/lib/functions/array/index.ts +3 -0
- package/src/lib/functions/array/replace.ts +5 -0
- package/src/lib/functions/array/sort-deep.ts +19 -0
- package/src/lib/functions/array/sort.ts +8 -0
- package/src/lib/functions/clone-deep.ts +4 -0
- package/src/lib/functions/create-date.ts +7 -0
- package/src/lib/functions/enum-to-list.ts +16 -0
- package/src/lib/functions/get-doc-icon.ts +21 -0
- package/src/lib/functions/mat-options-functions.ts +11 -0
- package/src/lib/functions/mat-sort-options.ts +9 -0
- package/src/lib/functions/round-to.ts +9 -0
- package/src/lib/functions/tax-review-filter-predicate.ts +11 -0
- package/src/lib/interfaces/asset-entity-type.enum.ts +10 -0
- package/src/lib/interfaces/asset-type.enum.ts +9 -0
- package/src/lib/interfaces/asset.interface.ts +18 -0
- package/src/lib/interfaces/chart-data.interface.ts +11 -0
- package/src/lib/interfaces/chart-serie.interface.ts +8 -0
- package/src/lib/interfaces/document.interface.ts +20 -0
- package/src/lib/interfaces/documentable.interface.ts +9 -0
- package/src/lib/interfaces/event-listener.interface.ts +9 -0
- package/src/lib/interfaces/income-source-forecast.interface.ts +7 -0
- package/src/lib/interfaces/option.interface.ts +4 -0
- package/src/lib/interfaces/photoable.ts +14 -0
- package/src/lib/interfaces/receipt.interface.ts +13 -0
- package/src/lib/interfaces/salary-forecast.interface.ts +17 -0
- package/src/lib/interfaces/tank.interface.ts +9 -0
- package/src/lib/models/address/address.ts +24 -0
- package/src/lib/models/address/country.ts +17 -0
- package/src/lib/models/bank/bank-account-chart-data.ts +42 -0
- package/src/lib/models/bank/bank-account-property.ts +8 -0
- package/src/lib/models/bank/bank-account-types.const.ts +15 -0
- package/src/lib/models/bank/bank-account.ts +136 -0
- package/src/lib/models/bank/bank-connection.ts +12 -0
- package/src/lib/models/bank/bank-transaction-chart-data.ts +132 -0
- package/src/lib/models/bank/bank-transaction-summary-fields.enum.ts +4 -0
- package/src/lib/models/bank/bank-transaction.ts +74 -0
- package/src/lib/models/bank/bank.ts +21 -0
- package/src/lib/models/bank/basiq-job.ts +4 -0
- package/src/lib/models/bank/basiq-token.ts +16 -0
- package/src/lib/models/bank/type-loan.const.ts +7 -0
- package/src/lib/models/borrowing-expense/borrowing-expense-loan.ts +4 -0
- package/src/lib/models/borrowing-expense/borrowing-expense.ts +4 -0
- package/src/lib/models/chart/chart-data.ts +13 -0
- package/src/lib/models/chart/chart-serie.ts +8 -0
- package/src/lib/models/chart-accounts/chart-accounts-categories.const.ts +85 -0
- package/src/lib/models/chart-accounts/chart-accounts-depreciation.ts +14 -0
- package/src/lib/models/chart-accounts/chart-accounts-heading.ts +6 -0
- package/src/lib/models/chart-accounts/chart-accounts-metadata.ts +15 -0
- package/src/lib/models/chart-accounts/chart-accounts-tax-labels.enum.ts +5 -0
- package/src/lib/models/chart-accounts/chart-accounts.ts +137 -0
- package/src/lib/models/chat/chat-view-type.enum.ts +4 -0
- package/src/lib/models/chat/chat.ts +23 -0
- package/src/lib/models/chat/message-document.ts +18 -0
- package/src/lib/models/chat/message.ts +40 -0
- package/src/lib/models/client/client-details.ts +4 -0
- package/src/lib/models/client/client-invite.ts +70 -0
- package/src/lib/models/client/client-movement.ts +25 -0
- package/src/lib/models/client/client-portfolio-chart-data.ts +65 -0
- package/src/lib/models/client/client-portfolio-report.ts +10 -0
- package/src/lib/models/depreciation/depreciation-capital-project.ts +10 -0
- package/src/lib/models/depreciation/depreciation-forecast.ts +31 -0
- package/src/lib/models/depreciation/depreciation-group-item.ts +20 -0
- package/src/lib/models/depreciation/depreciation-group.enum.ts +7 -0
- package/src/lib/models/depreciation/depreciation-group.ts +25 -0
- package/src/lib/models/depreciation/depreciation-groups.const.ts +35 -0
- package/src/lib/models/depreciation/depreciation-receipt.ts +9 -0
- package/src/lib/models/depreciation/depreciation.ts +174 -0
- package/src/lib/models/document/document-api-url-prefix.enum.ts +7 -0
- package/src/lib/models/document/document-file-types.const.ts +22 -0
- package/src/lib/models/document/document-folder.ts +11 -0
- package/src/lib/models/document/document.ts +29 -0
- package/src/lib/models/employee/employee-details.ts +8 -0
- package/src/lib/models/employee/employee-invite.ts +12 -0
- package/src/lib/models/endpoint/endpoint.ts +35 -0
- package/src/lib/models/endpoint/endpoints.const.ts +157 -0
- package/src/lib/models/event/app-event-type.enum.ts +37 -0
- package/src/lib/models/event/app-event.ts +9 -0
- package/src/lib/models/file/icons-file.enum.ts +5 -0
- package/src/lib/models/financial-year/financial-year.ts +57 -0
- package/src/lib/models/financial-year/month-name-short.enum.ts +19 -0
- package/src/lib/models/financial-year/month-number.enum.ts +19 -0
- package/src/lib/models/financial-year/months.const.ts +1 -0
- package/src/lib/models/firm/firm.ts +31 -0
- package/src/lib/models/income-position/income-position.ts +13 -0
- package/src/lib/models/income-source/income-source-chart-data.ts +57 -0
- package/src/lib/models/income-source/income-source-forecast.ts +35 -0
- package/src/lib/models/income-source/income-source-type.ts +30 -0
- package/src/lib/models/income-source/income-source.ts +57 -0
- package/src/lib/models/income-source/salary-forecast.ts +23 -0
- package/src/lib/models/loan/loan-max-number-of-payments.enum.ts +8 -0
- package/src/lib/models/loan/loan-payment.ts +17 -0
- package/src/lib/models/loan/loan-payout.ts +13 -0
- package/src/lib/models/loan/loan.ts +38 -0
- package/src/lib/models/logbook/default-vehicle-expense.ts +20 -0
- package/src/lib/models/logbook/logbook-period.ts +12 -0
- package/src/lib/models/logbook/logbook-purpose-options.const.ts +6 -0
- package/src/lib/models/logbook/vehicle-claim.ts +27 -0
- package/src/lib/models/logbook/vehicle-logbook.ts +16 -0
- package/src/lib/models/logbook/vehicle.ts +46 -0
- package/src/lib/models/notification/notification-event-types.const.ts +43 -0
- package/src/lib/models/notification/notification.ts +66 -0
- package/src/lib/models/phone/phone.ts +10 -0
- package/src/lib/models/property/calculation-form-item.ts +24 -0
- package/src/lib/models/property/calculation-form-type.enum.ts +7 -0
- package/src/lib/models/property/capital-costs-itmes.const.ts +57 -0
- package/src/lib/models/property/corelogic-suggestion.ts +18 -0
- package/src/lib/models/property/ownership-filter-options.enum.ts +8 -0
- package/src/lib/models/property/property-capital-cost.ts +4 -0
- package/src/lib/models/property/property-category-movement.ts +18 -0
- package/src/lib/models/property/property-category.ts +9 -0
- package/src/lib/models/property/property-document.ts +21 -0
- package/src/lib/models/property/property-equity-chart-data.ts +188 -0
- package/src/lib/models/property/property-equity-chart-item.ts +35 -0
- package/src/lib/models/property/property-equity-chart-type.enum.ts +4 -0
- package/src/lib/models/property/property-forecast.ts +55 -0
- package/src/lib/models/property/property-owner.ts +50 -0
- package/src/lib/models/property/property-sold.ts +10 -0
- package/src/lib/models/property/property-subscription.ts +11 -0
- package/src/lib/models/property/property-valuation.ts +24 -0
- package/src/lib/models/property/property.ts +157 -0
- package/src/lib/models/registration-invite/registration-invite.ts +12 -0
- package/src/lib/models/service-subscription/module-url-list.const.ts +11 -0
- package/src/lib/models/service-subscription/service-payment.ts +8 -0
- package/src/lib/models/service-subscription/service-price.ts +8 -0
- package/src/lib/models/service-subscription/service-product.ts +11 -0
- package/src/lib/models/service-subscription/service-subscription-item.ts +12 -0
- package/src/lib/models/service-subscription/service-subscription.ts +151 -0
- package/src/lib/models/service-subscription/subscription-description.const.ts +8 -0
- package/src/lib/models/service-subscription/subscription-title.const.ts +8 -0
- package/src/lib/models/service-subscription/subscription-type.enum.ts +6 -0
- package/src/lib/models/tax-review/tax-review.ts +96 -0
- package/src/lib/models/tax-summary/tax-return-category-item-details.ts +14 -0
- package/src/lib/models/tax-summary/tax-return-category-item.ts +22 -0
- package/src/lib/models/tax-summary/tax-summary-section.ts +32 -0
- package/src/lib/models/tax-summary/tax-summary-type.enum.ts +7 -0
- package/src/lib/models/tax-summary/tax-summary.ts +79 -0
- package/src/lib/models/transaction/income-amount-type.enum.ts +7 -0
- package/src/lib/models/transaction/transaction-allocation.ts +20 -0
- package/src/lib/models/transaction/transaction-metadata.ts +8 -0
- package/src/lib/models/transaction/transaction-receipt.ts +9 -0
- package/src/lib/models/transaction/transaction.ts +241 -0
- package/src/lib/models/user/my-account-history-initiated-by.enum.ts +4 -0
- package/src/lib/models/user/my-account-history-status.enum.ts +4 -0
- package/src/lib/models/user/my-account-history-type.enum.ts +5 -0
- package/src/lib/models/user/my-account-history.ts +12 -0
- package/src/lib/models/user/occupation.ts +4 -0
- package/src/lib/models/user/user-roles.const.ts +13 -0
- package/src/lib/models/user/user-to-register.ts +7 -0
- package/src/lib/models/user/user-work-position.const.ts +7 -0
- package/src/lib/models/user/user.ts +160 -0
- package/src/lib/models/user-event/user-event-category.enum.ts +9 -0
- package/src/lib/models/user-event/user-event-category.ts +9 -0
- package/src/lib/models/user-event/user-event-setting-field.enum.ts +8 -0
- package/src/lib/models/user-event/user-event-setting.ts +11 -0
- package/src/lib/models/user-event/user-event-type.ts +22 -0
- package/src/lib/services/address/address.service.spec.ts +12 -0
- package/src/lib/services/address/address.service.ts +36 -0
- package/src/lib/services/asset/assets.service.spec.ts +12 -0
- package/src/lib/services/asset/assets.service.ts +51 -0
- package/src/lib/services/auth/auth.service.ts +48 -0
- package/src/lib/services/auth/jwt.service.ts +37 -0
- package/src/lib/services/bank/bank-account-calculation.service.spec.ts +16 -0
- package/src/lib/services/bank/bank-account-calculation.service.ts +38 -0
- package/src/lib/services/bank/bank-account.service.spec.ts +12 -0
- package/src/lib/services/bank/bank-account.service.ts +120 -0
- package/src/lib/services/bank/bank-connection.service.spec.ts +12 -0
- package/src/lib/services/bank/bank-connection.service.ts +42 -0
- package/src/lib/services/bank/bank-transaction-calculation.service.spec.ts +16 -0
- package/src/lib/services/bank/bank-transaction-calculation.service.ts +71 -0
- package/src/lib/services/bank/bank-transaction.service.spec.ts +12 -0
- package/src/lib/services/bank/bank-transaction.service.ts +97 -0
- package/src/lib/services/bank/bank.service.spec.ts +12 -0
- package/src/lib/services/bank/bank.service.ts +16 -0
- package/src/lib/services/bank/basiq.service.spec.ts +12 -0
- package/src/lib/services/bank/basiq.service.ts +103 -0
- package/src/lib/services/base-rest.service.spec.ts +13 -0
- package/src/lib/services/base-rest.service.ts +229 -0
- package/src/lib/services/borrowing-expense/borrowing-expense.service.spec.ts +12 -0
- package/src/lib/services/borrowing-expense/borrowing-expense.service.ts +82 -0
- package/src/lib/services/chart-accounts/chart-accounts-depreciations.service.spec.ts +16 -0
- package/src/lib/services/chart-accounts/chart-accounts-depreciations.service.ts +34 -0
- package/src/lib/services/chart-accounts/chart-accounts.service.spec.ts +12 -0
- package/src/lib/services/chart-accounts/chart-accounts.service.ts +101 -0
- package/src/lib/services/chat/chat.service.spec.ts +16 -0
- package/src/lib/services/chat/chat.service.ts +79 -0
- package/src/lib/services/chat/message-document.service.spec.ts +16 -0
- package/src/lib/services/chat/message-document.service.ts +133 -0
- package/src/lib/services/chat/message.service.spec.ts +16 -0
- package/src/lib/services/chat/message.service.ts +61 -0
- package/src/lib/services/client/client-invite.service.spec.ts +16 -0
- package/src/lib/services/client/client-invite.service.ts +111 -0
- package/src/lib/services/client/client-movement.service.spec.ts +16 -0
- package/src/lib/services/client/client-movement.service.ts +114 -0
- package/src/lib/services/client/client-portfolio-report.service.spec.ts +16 -0
- package/src/lib/services/client/client-portfolio-report.service.ts +34 -0
- package/src/lib/services/depreciation/capital-project.service.spec.ts +16 -0
- package/src/lib/services/depreciation/capital-project.service.ts +69 -0
- package/src/lib/services/depreciation/depreciation.service.spec.ts +12 -0
- package/src/lib/services/depreciation/depreciation.service.ts +171 -0
- package/src/lib/services/document/document-folder.service.spec.ts +16 -0
- package/src/lib/services/document/document-folder.service.ts +95 -0
- package/src/lib/services/employee/employee-invite.service.spec.ts +16 -0
- package/src/lib/services/employee/employee-invite.service.ts +53 -0
- package/src/lib/services/employee/employee.service.spec.ts +16 -0
- package/src/lib/services/employee/employee.service.ts +35 -0
- package/src/lib/services/event/event-dispatcher.service.spec.ts +16 -0
- package/src/lib/services/event/event-dispatcher.service.ts +29 -0
- package/src/lib/services/event/sse.service.spec.ts +16 -0
- package/src/lib/services/event/sse.service.ts +42 -0
- package/src/lib/services/firm/firm.service.spec.ts +16 -0
- package/src/lib/services/firm/firm.service.ts +93 -0
- package/src/lib/services/header-title/header-title.service.spec.ts +12 -0
- package/src/lib/services/header-title/header-title.service.ts +31 -0
- package/src/lib/services/income-source/income-source-forecast.service.spec.ts +16 -0
- package/src/lib/services/income-source/income-source-forecast.service.ts +91 -0
- package/src/lib/services/income-source/income-source.service.spec.ts +12 -0
- package/src/lib/services/income-source/income-source.service.ts +127 -0
- package/src/lib/services/income-source/salary-forecast.service.spec.ts +16 -0
- package/src/lib/services/income-source/salary-forecast.service.ts +92 -0
- package/src/lib/services/intercom/intercom.service.spec.ts +16 -0
- package/src/lib/services/intercom/intercom.service.ts +37 -0
- package/src/lib/services/loan/loan.service.spec.ts +12 -0
- package/src/lib/services/loan/loan.service.ts +166 -0
- package/src/lib/services/notification/notification.service.spec.ts +12 -0
- package/src/lib/services/notification/notification.service.ts +60 -0
- package/src/lib/services/preloader/preloader.service.spec.ts +16 -0
- package/src/lib/services/preloader/preloader.service.ts +28 -0
- package/src/lib/services/property/corelogic.service.spec.ts +12 -0
- package/src/lib/services/property/corelogic.service.ts +47 -0
- package/src/lib/services/property/property-calculation.service.spec.ts +16 -0
- package/src/lib/services/property/property-calculation.service.ts +166 -0
- package/src/lib/services/property/property-capital-cost.service.ts +42 -0
- package/src/lib/services/property/property-category.service.spec.ts +16 -0
- package/src/lib/services/property/property-category.service.ts +15 -0
- package/src/lib/services/property/property-document.service.spec.ts +16 -0
- package/src/lib/services/property/property-document.service.ts +74 -0
- package/src/lib/services/property/property-owner.service.spec.ts +12 -0
- package/src/lib/services/property/property-owner.service.ts +134 -0
- package/src/lib/services/property/property-sold.service.spec.ts +16 -0
- package/src/lib/services/property/property-sold.service.ts +15 -0
- package/src/lib/services/property/property.service.spec.ts +12 -0
- package/src/lib/services/property/property.service.ts +136 -0
- package/src/lib/services/subscription/subscription.service.spec.ts +12 -0
- package/src/lib/services/subscription/subscription.service.ts +153 -0
- package/src/lib/services/tax-review/tax-review-history.service.spec.ts +16 -0
- package/src/lib/services/tax-review/tax-review-history.service.ts +35 -0
- package/src/lib/services/tax-review/tax-review.service.spec.ts +16 -0
- package/src/lib/services/tax-review/tax-review.service.ts +114 -0
- package/src/lib/services/tax-summary/tax-summary.service.ts +70 -0
- package/src/lib/services/transaction/transaction-allocation.service.spec.ts +12 -0
- package/src/lib/services/transaction/transaction-allocation.service.ts +92 -0
- package/src/lib/services/transaction/transaction-calculation.service.spec.ts +16 -0
- package/src/lib/services/transaction/transaction-calculation.service.ts +50 -0
- package/src/lib/services/transaction/transaction.service.spec.ts +12 -0
- package/src/lib/services/transaction/transaction.service.ts +374 -0
- package/src/lib/services/user/occupation.service.spec.ts +12 -0
- package/src/lib/services/user/occupation.service.ts +42 -0
- package/src/lib/services/user/user-switcher.service.ts +34 -0
- package/src/lib/services/user/user.service.spec.ts +12 -0
- package/src/lib/services/user/user.service.ts +140 -0
- package/src/lib/services/user-event/user-event-setting.service.spec.ts +16 -0
- package/src/lib/services/user-event/user-event-setting.service.ts +60 -0
- package/src/lib/services/user-event/user-event-type.service.spec.ts +16 -0
- package/src/lib/services/user-event/user-event-type.service.ts +24 -0
- package/src/lib/services/work/work-tank.service.spec.ts +12 -0
- package/src/lib/services/work/work-tank.service.ts +277 -0
- package/src/lib/tt-core.module.ts +22 -0
- package/src/lib/tt-core.service.spec.ts +16 -0
- package/src/lib/tt-core.service.ts +17 -0
- package/src/public-api.ts +425 -0
- package/src/test.ts +27 -0
- package/tsconfig.lib.json +15 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
- package/bundles/taxtank-core.umd.js +0 -97
- package/bundles/taxtank-core.umd.js.map +0 -1
- package/esm2015/lib/tt-core.module.js +0 -33
- package/esm2015/lib/tt-core.service.js +0 -23
- package/esm2015/public-api.js +0 -6
- package/esm2015/taxtank-core.js +0 -5
- package/fesm2015/taxtank-core.js +0 -64
- package/fesm2015/taxtank-core.js.map +0 -1
- package/lib/tt-core.module.d.ts +0 -9
- package/lib/tt-core.service.d.ts +0 -8
- package/public-api.d.ts +0 -2
- package/taxtank-core.d.ts +0 -5
package/.browserslistrc
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
|
|
2
|
+
# For additional information regarding the format and rule options, please see:
|
|
3
|
+
# https://github.com/browserslist/browserslist#queries
|
|
4
|
+
|
|
5
|
+
# For the full list of supported browsers by the Angular framework, please see:
|
|
6
|
+
# https://angular.io/guide/browser-support
|
|
7
|
+
|
|
8
|
+
# You can see what browsers were selected by your queries by running:
|
|
9
|
+
# npx browserslist
|
|
10
|
+
|
|
11
|
+
last 1 Chrome version
|
|
12
|
+
last 1 Firefox version
|
|
13
|
+
last 2 Edge major versions
|
|
14
|
+
last 2 Safari major versions
|
|
15
|
+
last 2 iOS major versions
|
|
16
|
+
Firefox ESR
|
package/karma.conf.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Karma configuration file, see link for more information
|
|
2
|
+
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|
3
|
+
|
|
4
|
+
module.exports = function (config) {
|
|
5
|
+
config.set({
|
|
6
|
+
basePath: '',
|
|
7
|
+
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
|
8
|
+
plugins: [
|
|
9
|
+
require('karma-jasmine'),
|
|
10
|
+
require('karma-chrome-launcher'),
|
|
11
|
+
require('karma-jasmine-html-reporter'),
|
|
12
|
+
require('karma-coverage'),
|
|
13
|
+
require('@angular-devkit/build-angular/plugins/karma')
|
|
14
|
+
],
|
|
15
|
+
client: {
|
|
16
|
+
jasmine: {
|
|
17
|
+
// you can add configuration options for Jasmine here
|
|
18
|
+
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|
19
|
+
// for example, you can disable the random execution with `random: false`
|
|
20
|
+
// or set a specific seed with `seed: 4321`
|
|
21
|
+
},
|
|
22
|
+
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|
23
|
+
},
|
|
24
|
+
jasmineHtmlReporter: {
|
|
25
|
+
suppressAll: true // removes the duplicated traces
|
|
26
|
+
},
|
|
27
|
+
coverageReporter: {
|
|
28
|
+
dir: require('path').join(__dirname, '../../coverage/tt-core'),
|
|
29
|
+
subdir: '.',
|
|
30
|
+
reporters: [
|
|
31
|
+
{ type: 'html' },
|
|
32
|
+
{ type: 'text-summary' }
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
reporters: ['progress', 'kjhtml'],
|
|
36
|
+
port: 9876,
|
|
37
|
+
colors: true,
|
|
38
|
+
logLevel: config.LOG_INFO,
|
|
39
|
+
autoWatch: true,
|
|
40
|
+
browsers: ['Chrome'],
|
|
41
|
+
singleRun: false,
|
|
42
|
+
restartOnFileChange: true
|
|
43
|
+
});
|
|
44
|
+
};
|
package/ng-package.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
|
|
3
|
+
"dest": "../../dist/tt-core",
|
|
4
|
+
"lib": {
|
|
5
|
+
"entryFile": "src/public-api.ts"
|
|
6
|
+
},
|
|
7
|
+
"allowedNonPeerDependencies": [
|
|
8
|
+
"@auth0/angular-jwt",
|
|
9
|
+
"@stripe/stripe-js",
|
|
10
|
+
"event-source-polyfill"
|
|
11
|
+
]
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "taxtank-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^12.2.3",
|
|
7
|
-
"@angular/core": "^12.2.3"
|
|
7
|
+
"@angular/core": "^12.2.3",
|
|
8
|
+
"@angular/router": "^12.2.3",
|
|
9
|
+
"class-transformer": "^0.4.0",
|
|
10
|
+
"moment": "^2.29.1",
|
|
11
|
+
"moment-range": "^4.0.2",
|
|
12
|
+
"lodash": "^4.17.21"
|
|
8
13
|
},
|
|
9
14
|
"dependencies": {
|
|
10
|
-
"tslib": "^2.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"fesm2015": "fesm2015/taxtank-core.js",
|
|
17
|
-
"typings": "taxtank-core.d.ts",
|
|
18
|
-
"sideEffects": false
|
|
19
|
-
}
|
|
15
|
+
"tslib": "^2.3.1",
|
|
16
|
+
"@auth0/angular-jwt": "^5.0.2",
|
|
17
|
+
"@stripe/stripe-js": "^1.11.0",
|
|
18
|
+
"event-source-polyfill": "^1.0.22"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { CollectionDictionary } from './collection-dictionary';
|
|
2
|
+
import first from 'lodash/first';
|
|
3
|
+
import last from 'lodash/last';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* collection abstract class. Contains common properties and methods for all collections
|
|
7
|
+
*/
|
|
8
|
+
export abstract class AbstractCollection<Model extends object> implements Iterable<Model> {
|
|
9
|
+
// list of collection's items
|
|
10
|
+
items: Model[];
|
|
11
|
+
|
|
12
|
+
constructor(
|
|
13
|
+
items: Model[] = []
|
|
14
|
+
) {
|
|
15
|
+
this.items = items;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
groupBy(prop: string): CollectionDictionary<AbstractCollection<Model>> {
|
|
19
|
+
return new CollectionDictionary(this, prop);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Iterator that allow to iterate collection items
|
|
24
|
+
*/
|
|
25
|
+
[Symbol.iterator](): Iterator<Model> {
|
|
26
|
+
// .values() returns Iterator instance for array
|
|
27
|
+
return this.items.values();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* get collection length
|
|
32
|
+
*/
|
|
33
|
+
get length(): number {
|
|
34
|
+
return this.items.length;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* method returns amount of fields from passed items
|
|
39
|
+
* @param field Name of field for calculation
|
|
40
|
+
* @param items (optional) Array of items need to be calculated. All collection's items by default
|
|
41
|
+
*/
|
|
42
|
+
protected getSummary(field: string, items: Model[] = this.toArray()): number {
|
|
43
|
+
return items.reduce((sum: number, item: Model) => sum += item[field], 0);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Get list of items ids
|
|
48
|
+
*/
|
|
49
|
+
getIds(): number[] {
|
|
50
|
+
return this.items.map((item: Model): number => item['id']);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Get single item by id
|
|
55
|
+
*/
|
|
56
|
+
getById(id: number): Model {
|
|
57
|
+
return this.items.find((item: Model): boolean => item['id'] === id);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
getByIds(ids: number[]): Model[] {
|
|
61
|
+
return this.items.filter((item: Model): boolean => ids.includes(item['id']));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Get total sum of items by field
|
|
66
|
+
* @param field Name of the field for sum
|
|
67
|
+
*/
|
|
68
|
+
sumBy(field: string): number {
|
|
69
|
+
return +this.items.reduce((sum: number, item: Model): number => sum + Number(item[field]), 0).toFixed(2);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
toArray(): Model[] {
|
|
73
|
+
return [...this.items];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
get first(): Model {
|
|
77
|
+
return first(this.items);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
get last(): Model {
|
|
81
|
+
return last(this.items);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { AbstractCollection } from './abstract.collection';
|
|
2
|
+
import { BankAccountTypeEnum } from '../db/Enums/bank-account-type.enum';
|
|
3
|
+
import { TankTypeEnum } from '../db/Enums/tank-type.enum';
|
|
4
|
+
import { BankAccount } from '../models/bank/bank-account';
|
|
5
|
+
import { BankAccountProperty } from '../models/bank/bank-account-property';
|
|
6
|
+
import { Property } from '../models/property/property';
|
|
7
|
+
import flatten from 'lodash/flatten';
|
|
8
|
+
import uniqBy from 'lodash/uniqBy';
|
|
9
|
+
import concat from 'lodash/concat';
|
|
10
|
+
import { TYPE_LOAN } from '../models/bank/type-loan.const';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Collection of bank accounts.
|
|
14
|
+
*/
|
|
15
|
+
export class BankAccountCollection extends AbstractCollection<BankAccount> {
|
|
16
|
+
/**
|
|
17
|
+
* get list of bank accounts with passed types
|
|
18
|
+
*/
|
|
19
|
+
getByType(types: BankAccountTypeEnum | BankAccountTypeEnum[], isExclude: boolean = false): BankAccount[] {
|
|
20
|
+
// get types always as array (if only one passed)
|
|
21
|
+
const typesArray: BankAccountTypeEnum[] = concat(types);
|
|
22
|
+
return this.items.filter((bankAccount: BankAccount) => {
|
|
23
|
+
if (isExclude) {
|
|
24
|
+
return !typesArray.includes(bankAccount.type);
|
|
25
|
+
}
|
|
26
|
+
return typesArray.includes(bankAccount.type);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* get amount of initial loans
|
|
32
|
+
*/
|
|
33
|
+
getInitialLoanAmount(): number {
|
|
34
|
+
return this.getByType(TYPE_LOAN)
|
|
35
|
+
.reduce((sum: number, bankAccount: BankAccount) => {
|
|
36
|
+
return sum += bankAccount.balances.length ? bankAccount.getOpeningBalance() : 0;
|
|
37
|
+
}, 0);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* get amount of current loans
|
|
42
|
+
*/
|
|
43
|
+
getCurrentLoanAmount(): number {
|
|
44
|
+
return this.getByType(TYPE_LOAN)
|
|
45
|
+
.reduce((sum: number, bankAccount: BankAccount) => {
|
|
46
|
+
return sum += bankAccount.currentBalance;
|
|
47
|
+
}, 0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* get collection filtered by property id
|
|
52
|
+
*/
|
|
53
|
+
getByPropertyId(id: number): BankAccountCollection {
|
|
54
|
+
return new BankAccountCollection(this.items.filter((bankAccount: BankAccount) => {
|
|
55
|
+
return bankAccount.bankAccountProperties.find((bankAccountProperty: BankAccountProperty) => {
|
|
56
|
+
return bankAccountProperty.property.id === id;
|
|
57
|
+
});
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* get collection filtered by properties ids
|
|
63
|
+
*/
|
|
64
|
+
getByPropertiesIds(ids: number[]): BankAccountCollection {
|
|
65
|
+
return new BankAccountCollection(
|
|
66
|
+
this.items.filter((bankAccount: BankAccount) => {
|
|
67
|
+
return bankAccount.bankAccountProperties.find((bankAccountProperty: BankAccountProperty) => {
|
|
68
|
+
return ids.includes(bankAccountProperty.property.id);
|
|
69
|
+
});
|
|
70
|
+
})
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* get collection of active bank accounts
|
|
76
|
+
*/
|
|
77
|
+
getActiveBankAccounts(): BankAccountCollection {
|
|
78
|
+
return new BankAccountCollection(this.items.filter((bankAccount: BankAccount) => {
|
|
79
|
+
return bankAccount.isActive();
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* get reduction of loan (reduction of principle) percentage
|
|
85
|
+
*/
|
|
86
|
+
getPrincipleReductionPercent(): number {
|
|
87
|
+
const initialLoans: number = this.getInitialLoanAmount();
|
|
88
|
+
const currentLoans: number = this.getCurrentLoanAmount();
|
|
89
|
+
|
|
90
|
+
if (!initialLoans) {
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return (initialLoans - currentLoans) / initialLoans * 100;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Get collection of loan bank accounts
|
|
99
|
+
*/
|
|
100
|
+
getLoanAccounts(): BankAccountCollection {
|
|
101
|
+
return new BankAccountCollection(this.getByType(TYPE_LOAN));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
getSavingsAccounts(): BankAccountCollection {
|
|
105
|
+
return new BankAccountCollection(this.getByType(TYPE_LOAN, true));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
getOpeningBalance(): number {
|
|
109
|
+
return this.items.reduce((sum: number, bankAccount: BankAccount): number => sum + bankAccount.getOpeningBalance(), 0);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
get currentBalance(): number {
|
|
113
|
+
return this.sumBy('currentBalance');
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Get Collection of bank accounts with property tank type
|
|
118
|
+
*/
|
|
119
|
+
getPropertyBankAccounts(): BankAccountCollection {
|
|
120
|
+
return new BankAccountCollection(
|
|
121
|
+
this.items.filter((bankAccount: BankAccount): boolean => bankAccount.isPropertyTank())
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Get Collection of bank accounts with work tank type
|
|
127
|
+
*/
|
|
128
|
+
getWorkBankAccounts(): BankAccountCollection {
|
|
129
|
+
return new BankAccountCollection(
|
|
130
|
+
this.items.filter((bankAccount: BankAccount): boolean => bankAccount.isWorkTank())
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Get Collection of bank accounts by tank type
|
|
136
|
+
*/
|
|
137
|
+
getByTankType(tankType: TankTypeEnum): BankAccountCollection {
|
|
138
|
+
return new BankAccountCollection(
|
|
139
|
+
this.items.filter((bankAccount: BankAccount): boolean => bankAccount.tankType === tankType)
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Get list of all bank account properties
|
|
145
|
+
*/
|
|
146
|
+
getBankAccountPropertiesList(): BankAccountProperty[] {
|
|
147
|
+
return flatten(
|
|
148
|
+
this.items.map((bankAccount: BankAccount): BankAccountProperty[] => {
|
|
149
|
+
return bankAccount.bankAccountProperties;
|
|
150
|
+
})
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Get lis of unique properties from all bank accounts properties
|
|
156
|
+
*/
|
|
157
|
+
getProperties(): Property[] {
|
|
158
|
+
return uniqBy(
|
|
159
|
+
this.getBankAccountPropertiesList().map((bankAccountProperty: BankAccountProperty) => {
|
|
160
|
+
return bankAccountProperty.property;
|
|
161
|
+
}),
|
|
162
|
+
'id'
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
getPropertyBalanceAmount(propertyId: number): number {
|
|
167
|
+
return this.items.reduce((sum: number, bankAccount: BankAccount): number => {
|
|
168
|
+
return sum + bankAccount.getPropertyBalanceAmount(propertyId);
|
|
169
|
+
}, 0);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { TransactionOperationEnum } from '../db/Enums/transaction-operation.enum';
|
|
2
|
+
import { BankTransaction } from '../models/bank/bank-transaction';
|
|
3
|
+
import { MonthNumberEnum } from '../models/financial-year/month-number.enum';
|
|
4
|
+
import { IncomeSource } from '../models/income-source/income-source';
|
|
5
|
+
import { BankAccount } from '../models/bank/bank-account';
|
|
6
|
+
import { AbstractCollection } from './abstract.collection';
|
|
7
|
+
import { CollectionDictionary } from './collection-dictionary';
|
|
8
|
+
import { TransactionAllocationCollection } from './transaction-allocation.collection';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Maximal delay between transfer transactions
|
|
12
|
+
*/
|
|
13
|
+
const TRANSACTION_TRANSFER_DELAY: number = 96 * 3600 * 1000;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Collection of bank transactions.
|
|
17
|
+
* IMPORTANT: Create this collection based on bank transactions from TransactionAllocationService
|
|
18
|
+
* @TODO find way to accept interface with allocation instead of bankTransaction to prevent wrong usage
|
|
19
|
+
* because all amounts calculates with allocated amounts but not from bank transactions amounts.
|
|
20
|
+
*/
|
|
21
|
+
export class BankTransactionCollection extends AbstractCollection<BankTransaction> {
|
|
22
|
+
getAmount(): number {
|
|
23
|
+
return this.sumBy('amount');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Difference between total bank transactions amount and sum of allocations for passed bank transactions
|
|
28
|
+
*/
|
|
29
|
+
getUnallocatedAmount(allocations: TransactionAllocationCollection) {
|
|
30
|
+
return +(this.getAmount() - allocations.getByBankTransactionsIds(this.getIds()).amount).toFixed(2);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* get date of the last transaction
|
|
35
|
+
*/
|
|
36
|
+
getLastTransactionDate(): Date {
|
|
37
|
+
return new Date(Math.max.apply(Math, this.items.map((bankTransaction: BankTransaction) => bankTransaction.date)));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* get list of credit transactions
|
|
42
|
+
*/
|
|
43
|
+
get creditTransactions(): BankTransactionCollection {
|
|
44
|
+
return new BankTransactionCollection(
|
|
45
|
+
this.items.filter((bankTransaction: BankTransaction) => bankTransaction.isCredit())
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* get list of debit transactions
|
|
51
|
+
*/
|
|
52
|
+
get debitTransactions(): BankTransactionCollection {
|
|
53
|
+
return new BankTransactionCollection(
|
|
54
|
+
this.items.filter((bankTransaction: BankTransaction) => bankTransaction.isDebit())
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* get difference between debit and credit transactions amounts
|
|
60
|
+
*/
|
|
61
|
+
get balanceAmount(): number {
|
|
62
|
+
return this.items.reduce((sum: number, bankTransaction: BankTransaction) => sum + bankTransaction.balanceAmount, 0);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* get list of transactions for passed month
|
|
67
|
+
* @param monthIndex Month number from 0 to 11
|
|
68
|
+
*/
|
|
69
|
+
getTransactionsByMonth(monthIndex: MonthNumberEnum): BankTransactionCollection {
|
|
70
|
+
return new BankTransactionCollection(
|
|
71
|
+
this.items.filter((bankTransaction: BankTransaction) => bankTransaction.date.getMonth() === monthIndex)
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* get list of transactions by provided bank accounts
|
|
77
|
+
* @param bankAccounts by which transactions should be returned
|
|
78
|
+
*/
|
|
79
|
+
getByBankAccounts(bankAccounts: BankAccount[]): BankTransaction[] {
|
|
80
|
+
const bankAccountIds: number[] = bankAccounts.map((bankAccount: BankAccount) => bankAccount.id);
|
|
81
|
+
return this.items.filter((bankTransaction: BankTransaction) => bankAccountIds.includes(bankTransaction.bankAccount.id));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* get list of transactions by provided ids of bank accounts
|
|
86
|
+
* @param ids of bank accounts
|
|
87
|
+
*/
|
|
88
|
+
getByBankAccountsIds(ids: number[]): BankTransactionCollection {
|
|
89
|
+
return new BankTransactionCollection(
|
|
90
|
+
this.items.filter((bankTransaction: BankTransaction) => ids.includes(bankTransaction.bankAccount.id))
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Find Bank Transaction available for transfer
|
|
96
|
+
*/
|
|
97
|
+
findTransfer(bankTransaction: BankTransaction): BankTransaction {
|
|
98
|
+
return this.items.find((item: BankTransaction): boolean => {
|
|
99
|
+
return item.amount + bankTransaction.amount === 0 &&
|
|
100
|
+
Math.abs(bankTransaction.date.getTime() - item.date.getTime()) < TRANSACTION_TRANSFER_DELAY;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Group bank transactions by transaction id.
|
|
106
|
+
* Each group is bank transaction collection and contains bank transactions related to transactions via allocations
|
|
107
|
+
*/
|
|
108
|
+
groupByTransaction(allocations: TransactionAllocationCollection): CollectionDictionary<BankTransactionCollection> {
|
|
109
|
+
// Group allocations by transaction id
|
|
110
|
+
const allocationsByTransactions = new CollectionDictionary(allocations, 'transaction');
|
|
111
|
+
// Init an empty dictionary we will fill below
|
|
112
|
+
const bankTransactionsByTransactions: CollectionDictionary<BankTransactionCollection> = new CollectionDictionary(new BankTransactionCollection([]));
|
|
113
|
+
|
|
114
|
+
// Fill dictionary with the same keys as at allocationsByTransactions
|
|
115
|
+
allocationsByTransactions.keys.forEach((key: string): void => {
|
|
116
|
+
bankTransactionsByTransactions.add(key, this.getByAllocations(allocationsByTransactions.get(key)));
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
return bankTransactionsByTransactions;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Get collection of bank transactions related with passed allocations
|
|
124
|
+
*/
|
|
125
|
+
getByAllocations(allocations: TransactionAllocationCollection): BankTransactionCollection {
|
|
126
|
+
return new BankTransactionCollection(
|
|
127
|
+
this.items.filter((bankTransaction: BankTransaction): boolean => allocations.hasBankTransaction(bankTransaction))
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Set allocate operation for bank transactions with amounts equal to salary
|
|
133
|
+
*/
|
|
134
|
+
preselectAllocateOperationForSalary(salaryIncomeSources: IncomeSource[]): void {
|
|
135
|
+
// incomeSource.salaryForecasts[0] because each income source has only one forecast for current fin year
|
|
136
|
+
const salaryAmounts: number[] = salaryIncomeSources.map((incomeSource: IncomeSource): number => incomeSource.salaryForecasts[0]?.netPay || 0);
|
|
137
|
+
|
|
138
|
+
this.items.forEach((bankTransaction: BankTransaction): void => {
|
|
139
|
+
if (salaryAmounts.includes(bankTransaction.amount)) {
|
|
140
|
+
bankTransaction.operation = TransactionOperationEnum.ALLOCATE;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Get collection of unallocated bankTransactions
|
|
147
|
+
*/
|
|
148
|
+
getUnallocatedBankTransactions(allocations: TransactionAllocationCollection): BankTransactionCollection {
|
|
149
|
+
return new BankTransactionCollection(
|
|
150
|
+
this.items.filter((bankTransaction: BankTransaction): boolean => !bankTransaction.isAllocated(allocations))
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { AbstractCollection } from './abstract.collection';
|
|
2
|
+
import { ClientMovement } from '../models/client/client-movement';
|
|
3
|
+
import { EmployeeCollection } from './employee.collection';
|
|
4
|
+
import { ClientCollection } from './client.collection';
|
|
5
|
+
import { FirmTypeEnum } from '../db/Enums/firm-type.enum';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Collection of tax review
|
|
9
|
+
*/
|
|
10
|
+
export class ClientMovementCollection extends AbstractCollection<ClientMovement> {
|
|
11
|
+
get active(): ClientMovementCollection {
|
|
12
|
+
return new ClientMovementCollection(this.items.filter((clientMovement: ClientMovement) => !clientMovement.dateTo));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
get employees(): EmployeeCollection {
|
|
16
|
+
return new EmployeeCollection(this.items.map((clientMovement: ClientMovement) => clientMovement.employee));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get clients(): ClientCollection {
|
|
20
|
+
return new EmployeeCollection(this.items.map((clientMovement: ClientMovement) => clientMovement.client));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get accountant(): ClientMovement {
|
|
24
|
+
return this.items.filter((clientMovement: ClientMovement) => clientMovement.firm.type === FirmTypeEnum.ACCOUNTANT)[0] ?? null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
get advisors(): ClientMovementCollection {
|
|
28
|
+
return new ClientMovementCollection(
|
|
29
|
+
this.items.filter((clientMovement: ClientMovement) => clientMovement.firm.type === FirmTypeEnum.ADVISOR)
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
getByEmployeeId(id: number): ClientMovementCollection {
|
|
34
|
+
return new ClientMovementCollection(this.items.filter((clientMovement: ClientMovement) => clientMovement.employee.id === id));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
getByFirmType(firmType: FirmTypeEnum): ClientMovementCollection {
|
|
38
|
+
return new ClientMovementCollection(
|
|
39
|
+
this.items.filter((clientMovement: ClientMovement) => clientMovement.firm.type === firmType)
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collection of employee clients tax summary information
|
|
3
|
+
*/
|
|
4
|
+
import { AbstractCollection } from './abstract.collection';
|
|
5
|
+
import { ClientPortfolioReport } from '../models/client/client-portfolio-report';
|
|
6
|
+
|
|
7
|
+
export class ClientPortfolioReportCollection extends AbstractCollection<ClientPortfolioReport> {
|
|
8
|
+
get marketValue(): number {
|
|
9
|
+
return this.sumBy('marketValue');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
get loanBalance(): number {
|
|
13
|
+
return this.sumBy('loanBalance');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
get equityPosition(): number {
|
|
17
|
+
return this.sumBy('equityPosition');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Get average market value if there are more than 1 item in the collection
|
|
22
|
+
*/
|
|
23
|
+
get averageMarketValue(): number {
|
|
24
|
+
return this.items.length > 1 ? this.marketValue / this.items.length : null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Get average loan balance if there are more than 1 item in the collection
|
|
29
|
+
*/
|
|
30
|
+
get averageLoanBalance(): number {
|
|
31
|
+
return this.items.length > 1 ? this.loanBalance / this.items.length : null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Get average equity position if there are more than 1 item in the collection
|
|
36
|
+
*/
|
|
37
|
+
get averageEquityPosition(): number {
|
|
38
|
+
return this.items.length > 1 ? this.equityPosition / this.items.length : null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Return report by provided category name
|
|
43
|
+
*/
|
|
44
|
+
getByCategoryName(name: string): ClientPortfolioReport {
|
|
45
|
+
return this.items.find((item: ClientPortfolioReport): boolean => item.category === name);
|
|
46
|
+
}
|
|
47
|
+
}
|