@zeniai/client-epic-state 5.2.89-beta0KB → 5.2.89-beta0MM

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.
Files changed (66) hide show
  1. package/lib/entity/invoicing/creditNote/creditNotePayload.d.ts +2 -0
  2. package/lib/entity/invoicing/creditNote/creditNotePayload.js +5 -0
  3. package/lib/entity/invoicing/creditNote/creditNoteState.d.ts +1 -0
  4. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  5. package/lib/entity/snackbar/snackbarTypes.js +0 -1
  6. package/lib/entity/transaction/stateTypes/paymentType.d.ts +2 -2
  7. package/lib/entity/transaction/stateTypes/paymentType.js +1 -9
  8. package/lib/epic.d.ts +1 -5
  9. package/lib/epic.js +0 -8
  10. package/lib/esm/entity/invoicing/creditNote/creditNotePayload.js +5 -0
  11. package/lib/esm/entity/snackbar/snackbarTypes.js +0 -1
  12. package/lib/esm/entity/transaction/stateTypes/paymentType.js +1 -9
  13. package/lib/esm/epic.js +0 -8
  14. package/lib/esm/index.js +2 -5
  15. package/lib/esm/view/expenseAutomationView/payload/actualMatchingPayload.js +1 -0
  16. package/lib/esm/view/financeStatement/financeStatementReducer.js +6 -11
  17. package/lib/esm/view/invoicing/invoicingOverview/invoicingOverviewPayload.js +1 -0
  18. package/lib/esm/view/reportUIOptions/financeStatementCompareBalances.js +16 -0
  19. package/lib/esm/view/reportUIOptions/updateReportUIOptionCompareModeEpic.js +2 -5
  20. package/lib/esm/view/reportUIOptions/updateReportUIOptionIsCompareModeOnEpic.js +6 -10
  21. package/lib/esm/view/transactionDetail/transactionDetailReducer.js +1 -196
  22. package/lib/index.d.ts +2 -6
  23. package/lib/index.js +37 -58
  24. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  25. package/lib/view/expenseAutomationView/payload/actualMatchingPayload.d.ts +1 -0
  26. package/lib/view/expenseAutomationView/payload/actualMatchingPayload.js +1 -0
  27. package/lib/view/expenseAutomationView/types/actualMatchingViewState.d.ts +2 -0
  28. package/lib/view/financeStatement/financeStatementReducer.js +6 -11
  29. package/lib/view/invoicing/invoicingOverview/invoicingOverviewPayload.d.ts +5 -0
  30. package/lib/view/invoicing/invoicingOverview/invoicingOverviewPayload.js +1 -0
  31. package/lib/view/invoicing/invoicingOverview/invoicingOverviewState.d.ts +2 -0
  32. package/lib/view/reportUIOptions/financeStatementCompareBalances.d.ts +2 -0
  33. package/lib/view/reportUIOptions/financeStatementCompareBalances.js +19 -0
  34. package/lib/view/reportUIOptions/updateReportUIOptionCompareModeEpic.js +2 -5
  35. package/lib/view/reportUIOptions/updateReportUIOptionIsCompareModeOnEpic.js +6 -10
  36. package/lib/view/transactionDetail/transactionDetailReducer.d.ts +1 -39
  37. package/lib/view/transactionDetail/transactionDetailReducer.js +2 -198
  38. package/lib/view/transactionDetail/transactionDetailState.d.ts +0 -12
  39. package/package.json +1 -1
  40. package/lib/entity/transaction/stateTypes/printStatus.d.ts +0 -4
  41. package/lib/entity/transaction/stateTypes/printStatus.js +0 -11
  42. package/lib/esm/entity/transaction/stateTypes/printStatus.js +0 -7
  43. package/lib/esm/view/transactionDetail/createTransaction/createTransactionLocalDataHelper.js +0 -157
  44. package/lib/esm/view/transactionDetail/createTransaction/createTransactionPayload.js +0 -164
  45. package/lib/esm/view/transactionDetail/createTransaction/createTransactionSelector.js +0 -47
  46. package/lib/esm/view/transactionDetail/createTransaction/createTransactionState.js +0 -11
  47. package/lib/esm/view/transactionDetail/createTransaction/epics/createTransactionAttachmentUploadFailureEpic.js +0 -19
  48. package/lib/esm/view/transactionDetail/createTransaction/epics/createTransactionEpic.js +0 -81
  49. package/lib/esm/view/transactionDetail/createTransaction/epics/fetchVendorRecommendationsForCreateTransactionEpic.js +0 -53
  50. package/lib/esm/view/transactionDetail/createTransaction/epics/initializeCreateTransactionLocalDataEpic.js +0 -10
  51. package/lib/view/transactionDetail/createTransaction/createTransactionLocalDataHelper.d.ts +0 -56
  52. package/lib/view/transactionDetail/createTransaction/createTransactionLocalDataHelper.js +0 -172
  53. package/lib/view/transactionDetail/createTransaction/createTransactionPayload.d.ts +0 -95
  54. package/lib/view/transactionDetail/createTransaction/createTransactionPayload.js +0 -169
  55. package/lib/view/transactionDetail/createTransaction/createTransactionSelector.d.ts +0 -44
  56. package/lib/view/transactionDetail/createTransaction/createTransactionSelector.js +0 -53
  57. package/lib/view/transactionDetail/createTransaction/createTransactionState.d.ts +0 -82
  58. package/lib/view/transactionDetail/createTransaction/createTransactionState.js +0 -14
  59. package/lib/view/transactionDetail/createTransaction/epics/createTransactionAttachmentUploadFailureEpic.d.ts +0 -10
  60. package/lib/view/transactionDetail/createTransaction/epics/createTransactionAttachmentUploadFailureEpic.js +0 -23
  61. package/lib/view/transactionDetail/createTransaction/epics/createTransactionEpic.d.ts +0 -9
  62. package/lib/view/transactionDetail/createTransaction/epics/createTransactionEpic.js +0 -85
  63. package/lib/view/transactionDetail/createTransaction/epics/fetchVendorRecommendationsForCreateTransactionEpic.d.ts +0 -20
  64. package/lib/view/transactionDetail/createTransaction/epics/fetchVendorRecommendationsForCreateTransactionEpic.js +0 -57
  65. package/lib/view/transactionDetail/createTransaction/epics/initializeCreateTransactionLocalDataEpic.d.ts +0 -12
  66. package/lib/view/transactionDetail/createTransaction/epics/initializeCreateTransactionLocalDataEpic.js +0 -14
@@ -39,7 +39,7 @@ export declare const getLineItemsByTransactionsIdsFromResponse: (transactions: S
39
39
  export declare const getLineItemsByTransactionIdsFromLocalData: (transactionLocalData: TransactionReviewLocalDataSelectorView[], selectedTab: TransactionsTab) => Record<ID, string[]>;
40
40
  export declare const mergeTabSpecificLineItems: (currentTabSpecificLineItems: TabSpecificLineItems, selectedTab: TransactionsTab, newLineItems: TabSpecificLineItems) => TabSpecificLineItems;
41
41
  export declare const getSnackbarMessageForTransactionReview: (updatedCount: number, failedCount: number, categorizedCount: number) => {
42
- messageSection: "common" | "recommendation_feedback" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "actual_matching_match_and_reverse" | "actual_matching_undo_reversal" | "actual_matching_ignore_suggestion" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_approval_reorder" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_approval_reorder" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "card_policy_created" | "card_policy_updated" | "card_policy_deleted" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "revert_schedule" | "ignore_accrual" | "revert_accrual" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "snooze_task" | "unsnooze_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "create_transfer_entry" | "create_transaction" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update" | "accounting_projects_enabled_update" | "accounting_projects_qbo_not_enabled" | "capitalization_threshold_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "confirm_statement_mapping" | "statement_parsing_in_progress" | "statement_parsing_complete" | "ai_accountant_trigger_job" | "oauth_consent_approve" | "oauth_consent_invalid_request" | "credit_agent_update_profile" | "credit_agent_save_macro" | "credit_agent_schedule_cron" | "create_sub_task" | "qbo_connection_already_linked" | "qbo_connection_failed" | "accounting_projects_qbo_reconnect_failed" | "product_services_update" | "qbo_realm_id_update" | "kyc_kyb_reset" | "invoicing_dunning_case_resolved" | "invoicing_dunning_retry" | "invoicing_dunning_cancel" | "invoicing_dunning_settings_save" | "invoicing_qbo_backfill" | "invoicing_qbo_sync_health_retry" | "invoicing_qbo_settings_save" | "invoicing_branding_save" | "invoicing_discount_archive" | "invoicing_discount_unarchive" | "invoicing_discount_delete" | "invoicing_invoice_reminder_sent" | "invoicing_invoice_regenerated" | "invoicing_invoice_voided" | "invoicing_catalog_item_saved" | "invoicing_customer_saved" | "invoicing_subscription_saved" | "invoicing_coupon_saved" | "invoicing_invoice_saved" | "invoicing_credit_note_saved" | "invoicing_payment_recorded" | "invoicing_subscription_activated" | "invoicing_subscription_cancellation_removed" | "invoicing_subscription_cancelled" | "invoicing_subscription_non_renewing" | "invoicing_subscription_paused" | "invoicing_subscription_reactivated" | "invoicing_subscription_resumed" | "invoicing_subscription_term_end_changed" | "invoicing_data_import_download";
42
+ messageSection: "common" | "recommendation_feedback" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "actual_matching_match_and_reverse" | "actual_matching_undo_reversal" | "actual_matching_ignore_suggestion" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_approval_reorder" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_approval_reorder" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "card_policy_created" | "card_policy_updated" | "card_policy_deleted" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "revert_schedule" | "ignore_accrual" | "revert_accrual" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "snooze_task" | "unsnooze_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "create_transfer_entry" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update" | "accounting_projects_enabled_update" | "accounting_projects_qbo_not_enabled" | "capitalization_threshold_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "confirm_statement_mapping" | "statement_parsing_in_progress" | "statement_parsing_complete" | "ai_accountant_trigger_job" | "oauth_consent_approve" | "oauth_consent_invalid_request" | "credit_agent_update_profile" | "credit_agent_save_macro" | "credit_agent_schedule_cron" | "create_sub_task" | "qbo_connection_already_linked" | "qbo_connection_failed" | "accounting_projects_qbo_reconnect_failed" | "product_services_update" | "qbo_realm_id_update" | "kyc_kyb_reset" | "invoicing_dunning_case_resolved" | "invoicing_dunning_retry" | "invoicing_dunning_cancel" | "invoicing_dunning_settings_save" | "invoicing_qbo_backfill" | "invoicing_qbo_sync_health_retry" | "invoicing_qbo_settings_save" | "invoicing_branding_save" | "invoicing_discount_archive" | "invoicing_discount_unarchive" | "invoicing_discount_delete" | "invoicing_invoice_reminder_sent" | "invoicing_invoice_regenerated" | "invoicing_invoice_voided" | "invoicing_catalog_item_saved" | "invoicing_customer_saved" | "invoicing_subscription_saved" | "invoicing_coupon_saved" | "invoicing_invoice_saved" | "invoicing_credit_note_saved" | "invoicing_payment_recorded" | "invoicing_subscription_activated" | "invoicing_subscription_cancellation_removed" | "invoicing_subscription_cancelled" | "invoicing_subscription_non_renewing" | "invoicing_subscription_paused" | "invoicing_subscription_reactivated" | "invoicing_subscription_resumed" | "invoicing_subscription_term_end_changed" | "invoicing_data_import_download";
43
43
  messageText: "notification" | "failed" | "success";
44
44
  type: "error" | "success" | "info";
45
45
  variables: {
@@ -34,6 +34,7 @@ export interface MatchTransactionSearchResultPayload {
34
34
  amount?: number | null;
35
35
  currency_code?: string | null;
36
36
  currency_symbol?: string | null;
37
+ line_description?: string | null;
37
38
  sync_token?: string | null;
38
39
  total_amount?: number | null;
39
40
  transaction_description?: string | null;
@@ -53,6 +53,7 @@ function toActualMatchingTransactionSearchResult(payload, fallbackCurrency) {
53
53
  currencyCode,
54
54
  currencySymbol: resolveMatchSearchCurrencySymbol(payload, currencyCode, fallbackCurrency),
55
55
  transactionMemo: payload.transaction_memo ?? undefined,
56
+ lineDescription: payload.line_description ?? undefined,
56
57
  transactionDescription: payload.transaction_description ?? undefined,
57
58
  transactionTypeName: payload.transaction_type_name ?? undefined,
58
59
  syncToken: payload.sync_token == null ? '' : String(payload.sync_token),
@@ -46,6 +46,8 @@ export interface ActualMatchingTransactionSearchResult {
46
46
  accountingClassId?: ID;
47
47
  accountingClassName?: string;
48
48
  accountName?: string;
49
+ /** QBO line description. Distinct from the header transaction description. */
50
+ lineDescription?: string;
49
51
  transactionDescription?: string;
50
52
  transactionMemo?: string;
51
53
  transactionTypeName?: string;
@@ -3,6 +3,7 @@ var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.updateFinanceStatementFormat = exports.updateFinanceStatementDisplayOrder = exports.updateDownloadState = exports.updateFinanceStatementAdditionalBalancesSelection = exports.updateSelectedReportId = exports.updateCOABalancesRange = exports.updateFinanceStatementThisPeriod = exports.updateFinanceStatementTimeframe = exports.fetchFinanceStatement = exports.initialFinanceStatementState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
+ const coaBalanceType_1 = require("../../commonStateTypes/coaBalance/coaBalanceType");
6
7
  const thisPeriodHelpers_1 = require("../../commonStateTypes/viewAndReport/thisPeriodHelpers");
7
8
  const rootActions_1 = require("../../rootActions");
8
9
  const zeniDayJS_1 = require("../../zeniDayJS");
@@ -92,17 +93,11 @@ const financeStatement = (0, toolkit_1.createSlice)({
92
93
  updateFinanceStatementAdditionalBalancesSelection(draft, action) {
93
94
  const { additionalBalances: additionalBalancesPayload, maxNumOfPeriodsToHighlight, } = action.payload;
94
95
  const additionalBalances = additionalBalancesPayload ?? [];
95
- let tempAdditionalBalances = [...additionalBalances];
96
- if (additionalBalances.includes('this_period_vs_last_period') ||
97
- additionalBalances.includes('this_period_vs_last_period_percent')) {
98
- const id = tempAdditionalBalances.findIndex((balance) => balance === 'this_period_vs_last_period' ||
99
- balance === 'this_period_vs_last_period_percent');
100
- if (id > -1) {
101
- const balance = tempAdditionalBalances.splice(id, 1);
102
- tempAdditionalBalances = [...balance, ...tempAdditionalBalances];
103
- }
104
- }
105
- draft.selectedAdditionalBalances = tempAdditionalBalances;
96
+ const otherBalances = (0, coaBalanceType_1.stripCompareAdditionalBalanceTypes)(additionalBalances);
97
+ draft.selectedAdditionalBalances = [
98
+ ...additionalBalances.filter((balance) => !otherBalances.includes(balance)),
99
+ ...otherBalances,
100
+ ];
106
101
  draft.maxNumOfPeriodsToHighlight = maxNumOfPeriodsToHighlight;
107
102
  draft.isAdditionalBalancesShown =
108
103
  additionalBalances.length != 0 ? true : false;
@@ -46,6 +46,11 @@ export interface InvoicingDashboardSummaryPayload {
46
46
  resumed: number;
47
47
  total_active: number;
48
48
  total_active_value: number;
49
+ /**
50
+ * Churned opening-cohort customers ÷ customers at month start, as a 0-100
51
+ * percent. Customer-scoped, unlike the subscription-scoped KPI churn rate.
52
+ */
53
+ customer_churn_rate?: number | null;
49
54
  };
50
55
  failed_payments: {
51
56
  amount: number;
@@ -49,6 +49,7 @@ exports.mapInvoicingPlanRevenuePointPayloadToState = mapInvoicingPlanRevenuePoin
49
49
  const mapInvoicingDashboardSummaryPayloadToState = (payload) => ({
50
50
  customerMovement: {
51
51
  churned: payload.customer_movement.churned,
52
+ customerChurnRate: payload.customer_movement.customer_churn_rate ?? undefined,
52
53
  netChange: payload.customer_movement.net_change,
53
54
  new: payload.customer_movement.new,
54
55
  paused: payload.customer_movement.paused,
@@ -50,6 +50,8 @@ export interface InvoicingDashboardSummary {
50
50
  resumed: number;
51
51
  totalActive: number;
52
52
  totalActiveValue: Amount;
53
+ /** 0-100 percent; absent from a backend that predates it. */
54
+ customerChurnRate?: number;
53
55
  };
54
56
  failedPayments: {
55
57
  amount: Amount;
@@ -0,0 +1,2 @@
1
+ import { COABalanceType } from '../../commonStateTypes/coaBalance/coaBalanceType';
2
+ export declare function getFinanceStatementAdditionalBalances(requestedBalances: COABalanceType[], isCompareModeOn: boolean, compareBalanceFromMode: COABalanceType): COABalanceType[];
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFinanceStatementAdditionalBalances = getFinanceStatementAdditionalBalances;
4
+ const coaBalanceType_1 = require("../../commonStateTypes/coaBalance/coaBalanceType");
5
+ // Reports can show the $ and % change columns together, so every requested compare type is kept;
6
+ // compareMode picks one only when none was requested.
7
+ function getFinanceStatementAdditionalBalances(requestedBalances, isCompareModeOn, compareBalanceFromMode) {
8
+ const otherBalances = (0, coaBalanceType_1.stripCompareAdditionalBalanceTypes)(requestedBalances);
9
+ if (!isCompareModeOn) {
10
+ return otherBalances;
11
+ }
12
+ const requestedCompareBalances = requestedBalances.filter((balance) => !otherBalances.includes(balance));
13
+ return [
14
+ ...otherBalances,
15
+ ...(requestedCompareBalances.length > 0
16
+ ? requestedCompareBalances
17
+ : [compareBalanceFromMode]),
18
+ ];
19
+ }
@@ -10,6 +10,7 @@ const financeStatementSelector_1 = require("../financeStatement/financeStatement
10
10
  const netBurnOrIncomeReducer_1 = require("../netBurnOrIncome/netBurnOrIncomeReducer");
11
11
  const opExReducer_1 = require("../opEx/opExReducer");
12
12
  const revenueReducer_1 = require("../revenue/revenueReducer");
13
+ const financeStatementCompareBalances_1 = require("./financeStatementCompareBalances");
13
14
  const reportUIOptionsReducer_1 = require("./reportUIOptionsReducer");
14
15
  const updateReportUIOptionIsCompareModeEpic = (actions$, state) => actions$.pipe((0, operators_1.filter)(reportUIOptionsReducer_1.updateReportUIOptionCompareMode.match), (0, operators_1.switchMap)((action) => {
15
16
  const { additionalBalances } = action.payload;
@@ -18,11 +19,7 @@ const updateReportUIOptionIsCompareModeEpic = (actions$, state) => actions$.pipe
18
19
  ? 'this_period_vs_last_period_percent'
19
20
  : 'this_period_vs_last_period';
20
21
  const financeStatementState = (0, financeStatementSelector_1.getFinanceStatement)(state.value);
21
- const filteredFinanceAdditionalBalances = additionalBalances.filter((balance) => balance !== 'this_period_vs_last_period' &&
22
- balance !== 'this_period_vs_last_period_percent');
23
- const financeAdditionalBalances = isCompareModeOn
24
- ? [...filteredFinanceAdditionalBalances, additionalBalance]
25
- : filteredFinanceAdditionalBalances;
22
+ const financeAdditionalBalances = (0, financeStatementCompareBalances_1.getFinanceStatementAdditionalBalances)(additionalBalances, isCompareModeOn, additionalBalance);
26
23
  return (0, rxjs_1.of)((0, netBurnOrIncomeReducer_1.updateNetBurnOrIncomeAdditionalBalancesSelection)({
27
24
  isCompareModeOn,
28
25
  additionalBalances: isCompareModeOn ? [additionalBalance] : [],
@@ -10,22 +10,18 @@ const financeStatementSelector_1 = require("../financeStatement/financeStatement
10
10
  const netBurnOrIncomeReducer_1 = require("../netBurnOrIncome/netBurnOrIncomeReducer");
11
11
  const opExReducer_1 = require("../opEx/opExReducer");
12
12
  const revenueReducer_1 = require("../revenue/revenueReducer");
13
+ const financeStatementCompareBalances_1 = require("./financeStatementCompareBalances");
13
14
  const reportUIOptionsReducer_1 = require("./reportUIOptionsReducer");
14
15
  const updateReportUIOptionIsCompareModeOnEpic = (actions$, state) => actions$.pipe((0, operators_1.filter)(reportUIOptionsReducer_1.updateReportUIOptionIsCompareModeOn.match), (0, operators_1.switchMap)((action) => {
15
16
  const { additionalBalances } = action.payload;
17
+ const compareBalanceFromMode = state.value.reportUIOptionsState.compareMode === 'compare_mode_percent'
18
+ ? 'this_period_vs_last_period_percent'
19
+ : 'this_period_vs_last_period';
16
20
  const additionalBalance = action.payload.isCompareModeOn
17
- ? state.value.reportUIOptionsState.compareMode ===
18
- 'compare_mode_percent'
19
- ? ['this_period_vs_last_period_percent']
20
- : ['this_period_vs_last_period']
21
+ ? [compareBalanceFromMode]
21
22
  : [];
22
23
  const financeStatementState = (0, financeStatementSelector_1.getFinanceStatement)(state.value);
23
- const filteredFinanceAdditionalBalances = additionalBalances.filter((balance) => balance !== 'this_period_vs_last_period' &&
24
- balance !== 'this_period_vs_last_period_percent');
25
- const financeAdditionalBalances = [
26
- ...filteredFinanceAdditionalBalances,
27
- ...additionalBalance,
28
- ];
24
+ const financeAdditionalBalances = (0, financeStatementCompareBalances_1.getFinanceStatementAdditionalBalances)(additionalBalances, action.payload.isCompareModeOn, compareBalanceFromMode);
29
25
  const actions = [
30
26
  (0, netBurnOrIncomeReducer_1.updateNetBurnOrIncomeAdditionalBalancesSelection)({
31
27
  isCompareModeOn: action.payload.isCompareModeOn,
@@ -9,7 +9,6 @@ import { TransactionID } from '../../entity/transaction/stateTypes/transactionID
9
9
  import { SupportedTransaction, SupportedTransactionPayload } from '../../entity/transaction/transactionState';
10
10
  import { ZeniAPIStatus } from '../../responsePayload';
11
11
  import { UncategorizedAccounts } from '../accountList/accountListSelector';
12
- import { CreateTransactionLineLocalData, CreateTransactionLocalData } from './createTransaction/createTransactionState';
13
12
  import { TransactionDetailState, TransactionSaveUpdates } from './transactionDetailState';
14
13
  import { TransactionDetailLineItemData, TransactionDetailLocalData, TransactionVendorUpdates } from './transactionDetailTypes';
15
14
  export declare const initialState: TransactionDetailState;
@@ -177,43 +176,6 @@ export declare const downloadAccountingProviderAttachment: import("@reduxjs/tool
177
176
  }, "transactionDetail/deleteSplitLine", never, never>, toggleSplitEditMode: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, editMode: boolean], {
178
177
  transactionId: TransactionID;
179
178
  editMode: boolean;
180
- }, "transactionDetail/toggleSplitEditMode", never, never>, initializeCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry"], {
181
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
182
- }, "transactionDetail/initializeCreateTransactionLocalData", never, never>, updateCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", localData: Partial<CreateTransactionLocalData>], {
183
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
184
- localData: Partial<CreateTransactionLocalData>;
185
- }, "transactionDetail/updateCreateTransactionLocalData", never, never>, updateCreateTransactionLineLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string, lineUpdates: Partial<CreateTransactionLineLocalData>], {
186
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
187
- lineId: string;
188
- lineUpdates: Partial<CreateTransactionLineLocalData>;
189
- }, "transactionDetail/updateCreateTransactionLineLocalData", never, never>, addCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", line?: Partial<CreateTransactionLineLocalData> | undefined], {
190
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
191
- line: Partial<CreateTransactionLineLocalData> | undefined;
192
- }, "transactionDetail/addCreateTransactionLine", never, never>, removeCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string], {
193
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
194
- lineId: string;
195
- }, "transactionDetail/removeCreateTransactionLine", never, never>, resetCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry"], {
196
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
197
- }, "transactionDetail/resetCreateTransactionLocalData", never, never>, createTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry"], {
198
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
199
- }, "transactionDetail/createTransaction", never, never>, createTransactionSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[fetchState: FetchState, createdTransactionId?: TransactionID | undefined, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
200
- fetchState: FetchState;
201
- createdTransactionId: TransactionID | undefined;
202
- error: ZeniAPIStatus<Record<string, unknown>> | undefined;
203
- }, "transactionDetail/createTransactionSuccessOrFailure", never, never>, setRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], recommendations: Recommendation[], isAccountingClassesEnabled: boolean], {
204
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
205
- lineIds: string[];
206
- recommendations: Recommendation[];
207
- isAccountingClassesEnabled: boolean;
208
- }, "transactionDetail/setRecommendationsForCreateTransactionLines", never, never>, clearRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[]], {
209
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
210
- lineIds: string[];
211
- }, "transactionDetail/clearRecommendationsForCreateTransactionLines", never, never>, fetchVendorRecommendationsForCreateTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], entity?: Entity | undefined], {
212
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
213
- lineIds: string[];
214
- entity: Entity | undefined;
215
- }, "transactionDetail/fetchVendorRecommendationsForCreateTransaction", never, never>, createTransactionAttachmentUploadFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[failedAttachmentFileNames: string[]], {
216
- failedAttachmentFileNames: string[];
217
- }, "transactionDetail/createTransactionAttachmentUploadFailure", never, never>;
179
+ }, "transactionDetail/toggleSplitEditMode", never, never>;
218
180
  declare const _default: import("redux").Reducer<TransactionDetailState>;
219
181
  export default _default;
@@ -4,13 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  var _a;
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.createTransaction = exports.resetCreateTransactionLocalData = exports.removeCreateTransactionLine = exports.addCreateTransactionLine = exports.updateCreateTransactionLineLocalData = exports.updateCreateTransactionLocalData = exports.initializeCreateTransactionLocalData = exports.toggleSplitEditMode = exports.deleteSplitLine = exports.addSplitLine = exports.setIsVendorUpdateAllChecked = exports.updateVendorBulkRecommendationsFetchStatus = exports.updateLatestSelectedEntity = exports.resetAllLineItemsToVendor = exports.updateVendorToAllLineItems = exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = exports.resetSelectedCustomer = exports.resetVendor = exports.updateSelectedCustomer = exports.updateSelectedVendor = exports.removeEntityRecommendationForLineIdForTransactionDetail = exports.markCategoryClassRecommendationsFailureForTransactionDetail = exports.markCategoryClassRecommendationsCompletedForTransactionDetail = exports.markCategoryClassRecommendationsInProgressForTransactionDetail = exports.setEntityRecommendationForLineIdsForTransactionDetail = exports.setAllLineItemsLocalDataIsUpdateAllChecked = exports.setAllLineItemsToCategoryClassInLocalData = exports.resetLineItemsCategoryClassInLocalData = exports.clearTransactionDetailLocalData = exports.saveTransactionDetailLocalData = exports.initializeTransactionDetailLocalData = exports.saveTransactionDetail = exports.updateTransactionStateIfUpdateActionNotAllowed = exports.updateStatusConsolidatedSaveTransactionDetail = exports.updateStatusForTransactionNotMiscategorizedUpdate = exports.deleteTransactionAttachmentSuccess = exports.deleteTransactionAttachmentFailure = exports.deleteTransactionAttachment = exports.markTransactionAsNotMiscategorized = exports.clearTransactionDetailSaveStatus = exports.updateTransactionDetailSaveStatus = exports.updateTransactionDetail = exports.uploadMissingAttachmentSuccess = exports.removeTransactionDetail = exports.updateTransactionDetailFetchState = exports.fetchTransactionDetail = exports.downloadAccountingProviderAttachmentFailure = exports.downloadAccountingProviderAttachmentSuccess = exports.downloadAccountingProviderAttachment = exports.initialState = void 0;
8
- exports.createTransactionAttachmentUploadFailure = exports.fetchVendorRecommendationsForCreateTransaction = exports.clearRecommendationsForCreateTransactionLines = exports.setRecommendationsForCreateTransactionLines = exports.createTransactionSuccessOrFailure = void 0;
7
+ exports.toggleSplitEditMode = exports.deleteSplitLine = exports.addSplitLine = exports.setIsVendorUpdateAllChecked = exports.updateVendorBulkRecommendationsFetchStatus = exports.updateLatestSelectedEntity = exports.resetAllLineItemsToVendor = exports.updateVendorToAllLineItems = exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = exports.resetSelectedCustomer = exports.resetVendor = exports.updateSelectedCustomer = exports.updateSelectedVendor = exports.removeEntityRecommendationForLineIdForTransactionDetail = exports.markCategoryClassRecommendationsFailureForTransactionDetail = exports.markCategoryClassRecommendationsCompletedForTransactionDetail = exports.markCategoryClassRecommendationsInProgressForTransactionDetail = exports.setEntityRecommendationForLineIdsForTransactionDetail = exports.setAllLineItemsLocalDataIsUpdateAllChecked = exports.setAllLineItemsToCategoryClassInLocalData = exports.resetLineItemsCategoryClassInLocalData = exports.clearTransactionDetailLocalData = exports.saveTransactionDetailLocalData = exports.initializeTransactionDetailLocalData = exports.saveTransactionDetail = exports.updateTransactionStateIfUpdateActionNotAllowed = exports.updateStatusConsolidatedSaveTransactionDetail = exports.updateStatusForTransactionNotMiscategorizedUpdate = exports.deleteTransactionAttachmentSuccess = exports.deleteTransactionAttachmentFailure = exports.deleteTransactionAttachment = exports.markTransactionAsNotMiscategorized = exports.clearTransactionDetailSaveStatus = exports.updateTransactionDetailSaveStatus = exports.updateTransactionDetail = exports.uploadMissingAttachmentSuccess = exports.removeTransactionDetail = exports.updateTransactionDetailFetchState = exports.fetchTransactionDetail = exports.downloadAccountingProviderAttachmentFailure = exports.downloadAccountingProviderAttachmentSuccess = exports.downloadAccountingProviderAttachment = exports.initialState = void 0;
9
8
  const toolkit_1 = require("@reduxjs/toolkit");
10
9
  const get_1 = __importDefault(require("lodash/get"));
11
10
  const entity_1 = require("../../entity/genericEntity/entity");
12
11
  const rootActions_1 = require("../../rootActions");
13
- const createTransactionLocalDataHelper_1 = require("./createTransaction/createTransactionLocalDataHelper");
14
12
  const transactionDetailLocalDataHelper_1 = require("./transactionDetailLocalDataHelper");
15
13
  const transactionDetailState_1 = require("./transactionDetailState");
16
14
  exports.initialState = {
@@ -19,10 +17,6 @@ exports.initialState = {
19
17
  fetchState: 'Not-Started',
20
18
  attachmentDataByID: {},
21
19
  },
22
- createTransactionsState: {
23
- createStatus: { fetchState: 'Not-Started' },
24
- newTransactionState: (0, createTransactionLocalDataHelper_1.getInitialCreateTransactionLocalDataByType)(),
25
- },
26
20
  };
27
21
  const transactionDetail = (0, toolkit_1.createSlice)({
28
22
  name: 'transactionDetail',
@@ -842,196 +836,6 @@ const transactionDetail = (0, toolkit_1.createSlice)({
842
836
  };
843
837
  },
844
838
  },
845
- // ---------------------------------------------------------------------------------
846
- // Create Transaction
847
- //
848
- // These live on the transactionDetail slice rather than in createTransaction/ because a
849
- // createSlice owns exactly one state object, and createTransactionsState is nested inside
850
- // TransactionDetailState. The derivation itself stays in the folder -- each body below
851
- // delegates to createTransactionLocalDataHelper.ts.
852
- //
853
- // They need no clearAll case of their own: the slice already resets to initialState on
854
- // tenant switch, and createTransactionsState is part of it.
855
- // ---------------------------------------------------------------------------------
856
- /** Trigger only -- initializeCreateTransactionLocalDataEpic does the seeding. */
857
- initializeCreateTransactionLocalData: {
858
- reducer(
859
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
860
- _draft,
861
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
862
- _action) {
863
- // no-op
864
- },
865
- prepare(transactionType) {
866
- return { payload: { transactionType } };
867
- },
868
- },
869
- updateCreateTransactionLocalData: {
870
- reducer(draft, action) {
871
- const { transactionType, localData } = action.payload;
872
- const current = draft.createTransactionsState.newTransactionState[transactionType];
873
- draft.createTransactionsState.newTransactionState[transactionType] =
874
- (0, createTransactionLocalDataHelper_1.mergeCreateTransactionLocalData)(current, localData);
875
- },
876
- prepare(transactionType, localData) {
877
- return { payload: { transactionType, localData } };
878
- },
879
- },
880
- updateCreateTransactionLineLocalData: {
881
- reducer(draft, action) {
882
- const { transactionType, lineId, lineUpdates } = action.payload;
883
- const current = draft.createTransactionsState.newTransactionState[transactionType];
884
- current.lines = (0, createTransactionLocalDataHelper_1.updateCreateTransactionLine)(current.lines, lineId, lineUpdates);
885
- },
886
- prepare(transactionType, lineId, lineUpdates) {
887
- return { payload: { transactionType, lineId, lineUpdates } };
888
- },
889
- },
890
- /**
891
- * `line` is supplied by the caller rather than built here, so a row added after a vendor is
892
- * already chosen can arrive pre-populated from the cached recommendations instead of blank.
893
- */
894
- addCreateTransactionLine: {
895
- reducer(draft, action) {
896
- const { transactionType, line } = action.payload;
897
- draft.createTransactionsState.newTransactionState[transactionType].lines.push({
898
- ...line,
899
- id: (0, createTransactionLocalDataHelper_1.nextCreateTransactionLineId)(),
900
- });
901
- },
902
- prepare(transactionType, line) {
903
- return { payload: { transactionType, line } };
904
- },
905
- },
906
- removeCreateTransactionLine: {
907
- reducer(draft, action) {
908
- const { transactionType, lineId } = action.payload;
909
- const current = draft.createTransactionsState.newTransactionState[transactionType];
910
- current.lines = current.lines.filter((line) => line.id !== lineId);
911
- },
912
- prepare(transactionType, lineId) {
913
- return { payload: { transactionType, lineId } };
914
- },
915
- },
916
- /**
917
- * Restores the blank working copy AND re-seeds it, so reopening Create starts from a fresh
918
- * form rather than the previous transaction's values.
919
- */
920
- resetCreateTransactionLocalData: {
921
- reducer(draft, action) {
922
- const { transactionType } = action.payload;
923
- draft.createTransactionsState.newTransactionState[transactionType] =
924
- (0, createTransactionLocalDataHelper_1.getSeededCreateTransactionLocalData)(transactionType);
925
- draft.createTransactionsState.createStatus = {
926
- fetchState: 'Not-Started',
927
- };
928
- draft.createTransactionsState.createdTransactionId = undefined;
929
- },
930
- prepare(transactionType) {
931
- return { payload: { transactionType } };
932
- },
933
- },
934
- /** Submit trigger -- createTransactionEpic builds the payload from localData. */
935
- createTransaction: {
936
- reducer(draft,
937
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
938
- _action) {
939
- draft.createTransactionsState.createStatus = {
940
- fetchState: 'In-Progress',
941
- };
942
- draft.createTransactionsState.createdTransactionId = undefined;
943
- },
944
- prepare(transactionType) {
945
- return { payload: { transactionType } };
946
- },
947
- },
948
- /**
949
- * Trigger only -- fetchVendorRecommendationsForCreateTransactionEpic does the work.
950
- * A null entity means the vendor was cleared.
951
- */
952
- fetchVendorRecommendationsForCreateTransaction: {
953
- reducer(
954
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
955
- _draft,
956
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
957
- _action) {
958
- // no-op
959
- },
960
- prepare(transactionType, lineIds, entity) {
961
- return { payload: { transactionType, lineIds, entity } };
962
- },
963
- },
964
- /** Trigger only -- createTransactionAttachmentUploadFailureEpic raises the snackbar. */
965
- createTransactionAttachmentUploadFailure: {
966
- reducer(
967
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
968
- _draft,
969
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
970
- _action) {
971
- // no-op
972
- },
973
- prepare(failedAttachmentFileNames) {
974
- return { payload: { failedAttachmentFileNames } };
975
- },
976
- },
977
- /**
978
- * Writes a vendor's recommendations into the named lines. `lineIds` is explicit rather than
979
- * "all lines" because a journal entry recommends per line, from that line's own entity.
980
- */
981
- setRecommendationsForCreateTransactionLines: {
982
- reducer(draft, action) {
983
- const { transactionType, lineIds, recommendations, isAccountingClassesEnabled, } = action.payload;
984
- const current = draft.createTransactionsState.newTransactionState[transactionType];
985
- // Clear first: on vendor A -> B, A's prefill is no longer empty, so B's would never
986
- // replace it. Fields the user picked carry no prefill flag and survive the clear.
987
- current.lines = current.lines.map((line) => lineIds.includes(line.id)
988
- ? (0, createTransactionLocalDataHelper_1.applyRecommendationsToCreateTransactionLine)((0, createTransactionLocalDataHelper_1.clearRecommendationsFromCreateTransactionLine)(line), recommendations, isAccountingClassesEnabled)
989
- : line);
990
- },
991
- prepare(transactionType, lineIds, recommendations, isAccountingClassesEnabled) {
992
- return {
993
- payload: {
994
- transactionType,
995
- lineIds,
996
- recommendations,
997
- isAccountingClassesEnabled,
998
- },
999
- };
1000
- },
1001
- },
1002
- /** Vendor cleared: drop the dropdown group and undo only what the prefill wrote. */
1003
- clearRecommendationsForCreateTransactionLines: {
1004
- reducer(draft, action) {
1005
- const { transactionType, lineIds } = action.payload;
1006
- const current = draft.createTransactionsState.newTransactionState[transactionType];
1007
- current.lines = current.lines.map((line) => lineIds.includes(line.id)
1008
- ? (0, createTransactionLocalDataHelper_1.clearRecommendationsFromCreateTransactionLine)(line)
1009
- : line);
1010
- },
1011
- prepare(transactionType, lineIds) {
1012
- return { payload: { transactionType, lineIds } };
1013
- },
1014
- },
1015
- createTransactionSuccessOrFailure: {
1016
- reducer(draft, action) {
1017
- const { fetchState, error, createdTransactionId } = action.payload;
1018
- draft.createTransactionsState.createStatus = { fetchState, error };
1019
- if (createdTransactionId != null) {
1020
- draft.createTransactionsState.createdTransactionId =
1021
- createdTransactionId;
1022
- // The API will not return a QBO-only row until delta sync, so the optimistic insert
1023
- // is marked fetched: detail local data can be saved and a fetch is a cache hit.
1024
- draft.transactionDetailById[(0, transactionDetailState_1.getTransactionDetailKey)(createdTransactionId)] = {
1025
- ...transactionDetailState_1.initialSupportedTransactionDetail,
1026
- fetchState: 'Completed',
1027
- transactionId: createdTransactionId,
1028
- };
1029
- }
1030
- },
1031
- prepare(fetchState, createdTransactionId, error) {
1032
- return { payload: { fetchState, createdTransactionId, error } };
1033
- },
1034
- },
1035
839
  },
1036
840
  extraReducers: (builder) => {
1037
841
  builder.addCase(rootActions_1.clearAll, (draft) => {
@@ -1039,7 +843,7 @@ const transactionDetail = (0, toolkit_1.createSlice)({
1039
843
  });
1040
844
  },
1041
845
  });
1042
- _a = transactionDetail.actions, exports.downloadAccountingProviderAttachment = _a.downloadAccountingProviderAttachment, exports.downloadAccountingProviderAttachmentSuccess = _a.downloadAccountingProviderAttachmentSuccess, exports.downloadAccountingProviderAttachmentFailure = _a.downloadAccountingProviderAttachmentFailure, exports.fetchTransactionDetail = _a.fetchTransactionDetail, exports.updateTransactionDetailFetchState = _a.updateTransactionDetailFetchState, exports.removeTransactionDetail = _a.removeTransactionDetail, exports.uploadMissingAttachmentSuccess = _a.uploadMissingAttachmentSuccess, exports.updateTransactionDetail = _a.updateTransactionDetail, exports.updateTransactionDetailSaveStatus = _a.updateTransactionDetailSaveStatus, exports.clearTransactionDetailSaveStatus = _a.clearTransactionDetailSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.deleteTransactionAttachment = _a.deleteTransactionAttachment, exports.deleteTransactionAttachmentFailure = _a.deleteTransactionAttachmentFailure, exports.deleteTransactionAttachmentSuccess = _a.deleteTransactionAttachmentSuccess, exports.updateStatusForTransactionNotMiscategorizedUpdate = _a.updateStatusForTransactionNotMiscategorizedUpdate, exports.updateStatusConsolidatedSaveTransactionDetail = _a.updateStatusConsolidatedSaveTransactionDetail, exports.updateTransactionStateIfUpdateActionNotAllowed = _a.updateTransactionStateIfUpdateActionNotAllowed, exports.saveTransactionDetail = _a.saveTransactionDetail, exports.initializeTransactionDetailLocalData = _a.initializeTransactionDetailLocalData, exports.saveTransactionDetailLocalData = _a.saveTransactionDetailLocalData, exports.clearTransactionDetailLocalData = _a.clearTransactionDetailLocalData, exports.resetLineItemsCategoryClassInLocalData = _a.resetLineItemsCategoryClassInLocalData, exports.setAllLineItemsToCategoryClassInLocalData = _a.setAllLineItemsToCategoryClassInLocalData, exports.setAllLineItemsLocalDataIsUpdateAllChecked = _a.setAllLineItemsLocalDataIsUpdateAllChecked, exports.setEntityRecommendationForLineIdsForTransactionDetail = _a.setEntityRecommendationForLineIdsForTransactionDetail, exports.markCategoryClassRecommendationsInProgressForTransactionDetail = _a.markCategoryClassRecommendationsInProgressForTransactionDetail, exports.markCategoryClassRecommendationsCompletedForTransactionDetail = _a.markCategoryClassRecommendationsCompletedForTransactionDetail, exports.markCategoryClassRecommendationsFailureForTransactionDetail = _a.markCategoryClassRecommendationsFailureForTransactionDetail, exports.removeEntityRecommendationForLineIdForTransactionDetail = _a.removeEntityRecommendationForLineIdForTransactionDetail, exports.updateSelectedVendor = _a.updateSelectedVendor, exports.updateSelectedCustomer = _a.updateSelectedCustomer, exports.resetVendor = _a.resetVendor, exports.resetSelectedCustomer = _a.resetSelectedCustomer, exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = _a.updateLocalDataWithTransactionsUpdateWithVendorCheckbox, exports.updateVendorToAllLineItems = _a.updateVendorToAllLineItems, exports.resetAllLineItemsToVendor = _a.resetAllLineItemsToVendor, exports.updateLatestSelectedEntity = _a.updateLatestSelectedEntity, exports.updateVendorBulkRecommendationsFetchStatus = _a.updateVendorBulkRecommendationsFetchStatus, exports.setIsVendorUpdateAllChecked = _a.setIsVendorUpdateAllChecked, exports.addSplitLine = _a.addSplitLine, exports.deleteSplitLine = _a.deleteSplitLine, exports.toggleSplitEditMode = _a.toggleSplitEditMode, exports.initializeCreateTransactionLocalData = _a.initializeCreateTransactionLocalData, exports.updateCreateTransactionLocalData = _a.updateCreateTransactionLocalData, exports.updateCreateTransactionLineLocalData = _a.updateCreateTransactionLineLocalData, exports.addCreateTransactionLine = _a.addCreateTransactionLine, exports.removeCreateTransactionLine = _a.removeCreateTransactionLine, exports.resetCreateTransactionLocalData = _a.resetCreateTransactionLocalData, exports.createTransaction = _a.createTransaction, exports.createTransactionSuccessOrFailure = _a.createTransactionSuccessOrFailure, exports.setRecommendationsForCreateTransactionLines = _a.setRecommendationsForCreateTransactionLines, exports.clearRecommendationsForCreateTransactionLines = _a.clearRecommendationsForCreateTransactionLines, exports.fetchVendorRecommendationsForCreateTransaction = _a.fetchVendorRecommendationsForCreateTransaction, exports.createTransactionAttachmentUploadFailure = _a.createTransactionAttachmentUploadFailure;
846
+ _a = transactionDetail.actions, exports.downloadAccountingProviderAttachment = _a.downloadAccountingProviderAttachment, exports.downloadAccountingProviderAttachmentSuccess = _a.downloadAccountingProviderAttachmentSuccess, exports.downloadAccountingProviderAttachmentFailure = _a.downloadAccountingProviderAttachmentFailure, exports.fetchTransactionDetail = _a.fetchTransactionDetail, exports.updateTransactionDetailFetchState = _a.updateTransactionDetailFetchState, exports.removeTransactionDetail = _a.removeTransactionDetail, exports.uploadMissingAttachmentSuccess = _a.uploadMissingAttachmentSuccess, exports.updateTransactionDetail = _a.updateTransactionDetail, exports.updateTransactionDetailSaveStatus = _a.updateTransactionDetailSaveStatus, exports.clearTransactionDetailSaveStatus = _a.clearTransactionDetailSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.deleteTransactionAttachment = _a.deleteTransactionAttachment, exports.deleteTransactionAttachmentFailure = _a.deleteTransactionAttachmentFailure, exports.deleteTransactionAttachmentSuccess = _a.deleteTransactionAttachmentSuccess, exports.updateStatusForTransactionNotMiscategorizedUpdate = _a.updateStatusForTransactionNotMiscategorizedUpdate, exports.updateStatusConsolidatedSaveTransactionDetail = _a.updateStatusConsolidatedSaveTransactionDetail, exports.updateTransactionStateIfUpdateActionNotAllowed = _a.updateTransactionStateIfUpdateActionNotAllowed, exports.saveTransactionDetail = _a.saveTransactionDetail, exports.initializeTransactionDetailLocalData = _a.initializeTransactionDetailLocalData, exports.saveTransactionDetailLocalData = _a.saveTransactionDetailLocalData, exports.clearTransactionDetailLocalData = _a.clearTransactionDetailLocalData, exports.resetLineItemsCategoryClassInLocalData = _a.resetLineItemsCategoryClassInLocalData, exports.setAllLineItemsToCategoryClassInLocalData = _a.setAllLineItemsToCategoryClassInLocalData, exports.setAllLineItemsLocalDataIsUpdateAllChecked = _a.setAllLineItemsLocalDataIsUpdateAllChecked, exports.setEntityRecommendationForLineIdsForTransactionDetail = _a.setEntityRecommendationForLineIdsForTransactionDetail, exports.markCategoryClassRecommendationsInProgressForTransactionDetail = _a.markCategoryClassRecommendationsInProgressForTransactionDetail, exports.markCategoryClassRecommendationsCompletedForTransactionDetail = _a.markCategoryClassRecommendationsCompletedForTransactionDetail, exports.markCategoryClassRecommendationsFailureForTransactionDetail = _a.markCategoryClassRecommendationsFailureForTransactionDetail, exports.removeEntityRecommendationForLineIdForTransactionDetail = _a.removeEntityRecommendationForLineIdForTransactionDetail, exports.updateSelectedVendor = _a.updateSelectedVendor, exports.updateSelectedCustomer = _a.updateSelectedCustomer, exports.resetVendor = _a.resetVendor, exports.resetSelectedCustomer = _a.resetSelectedCustomer, exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = _a.updateLocalDataWithTransactionsUpdateWithVendorCheckbox, exports.updateVendorToAllLineItems = _a.updateVendorToAllLineItems, exports.resetAllLineItemsToVendor = _a.resetAllLineItemsToVendor, exports.updateLatestSelectedEntity = _a.updateLatestSelectedEntity, exports.updateVendorBulkRecommendationsFetchStatus = _a.updateVendorBulkRecommendationsFetchStatus, exports.setIsVendorUpdateAllChecked = _a.setIsVendorUpdateAllChecked, exports.addSplitLine = _a.addSplitLine, exports.deleteSplitLine = _a.deleteSplitLine, exports.toggleSplitEditMode = _a.toggleSplitEditMode;
1043
847
  exports.default = transactionDetail.reducer;
1044
848
  function getUpdatedEntityLocalData(detail, updates, entity, resetRecommendations, type) {
1045
849
  const key = type === 'customer' ? 'customerUpdates' : 'vendorUpdates';
@@ -11,7 +11,6 @@ import { TransactionID } from '../../entity/transaction/stateTypes/transactionID
11
11
  import { TransactionCategory } from '../../entity/transaction/stateTypes/transactionType';
12
12
  import { VendorBase } from '../../entity/vendor/vendorState';
13
13
  import { EntityRecommendationKey } from '../recommendation/recommendationState';
14
- import { CreateTransactionLocalDataByType } from './createTransaction/createTransactionState';
15
14
  import { TransactionDetailLineItemData, TransactionDetailLocalData } from './transactionDetailTypes';
16
15
  export declare const getTransactionDetailKey: (transactionId: TransactionID) => `${string}_expense` | `${string}_check` | `${string}_invoice` | `${string}_payment` | `${string}_credit_memo` | `${string}_sales_receipt` | `${string}_delayed_credit` | `${string}_delayed_charge` | `${string}_refund` | `${string}_bill` | `${string}_bill_payment` | `${string}_bill_payment_check` | `${string}_bill_payment_credit_card` | `${string}_vendor_credit` | `${string}_credit_card_credit` | `${string}_transfer` | `${string}_credit_card_payment` | `${string}_deposit` | `${string}_journal_entry`;
17
16
  export type TransactionDetailKey = ReturnType<typeof getTransactionDetailKey>;
@@ -45,22 +44,11 @@ interface AccountingProviderAttachment {
45
44
  fetchState: FetchStateAndError;
46
45
  }
47
46
  export declare const initialSupportedTransactionDetail: SupportedTransactionDetail;
48
- export interface CreateTransactionsState {
49
- createStatus: FetchStateAndError;
50
- /**
51
- * Keyed by type so switching type in the Create dropdown does not clobber a draft the user
52
- * already started on another type.
53
- */
54
- newTransactionState: CreateTransactionLocalDataByType;
55
- /** Set on a successful create, so the page can navigate to the new transaction. */
56
- createdTransactionId?: TransactionID;
57
- }
58
47
  export interface TransactionDetailState {
59
48
  accountingProviderAttachment: {
60
49
  attachmentDataByID: Record<ID, ArrayBuffer>;
61
50
  fetchState: FetchState;
62
51
  };
63
- createTransactionsState: CreateTransactionsState;
64
52
  transactionDetailById: Record<TransactionDetailKey, SupportedTransactionDetail | undefined>;
65
53
  }
66
54
  export interface TransactionLineUpdates {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.2.89-beta0KB",
3
+ "version": "5.2.89-beta0MM",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -1,4 +0,0 @@
1
- declare const toPrintStatusInternal: (v: string) => "NotSet" | "NeedToPrint" | "PrintComplete";
2
- export declare const toPrintStatus: (v?: string) => "NotSet" | "NeedToPrint" | "PrintComplete" | undefined;
3
- export type PrintStatus = ReturnType<typeof toPrintStatusInternal>;
4
- export {};
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toPrintStatus = void 0;
4
- const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
5
- // QBO's PrintStatus on a Purchase/Check. Sent only by the Create Transaction form for
6
- // transaction_type: check -- qbo_purchase.py rejects print_status on any other payment_type.
7
- const ALL_PRINT_STATUSES = ['NotSet', 'NeedToPrint', 'PrintComplete'];
8
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
- const toPrintStatusInternal = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_PRINT_STATUSES);
10
- const toPrintStatus = (v) => v == null ? undefined : (0, stringToUnion_1.stringToUnionStrict)(v, ALL_PRINT_STATUSES);
11
- exports.toPrintStatus = toPrintStatus;
@@ -1,7 +0,0 @@
1
- import { stringToUnion, stringToUnionStrict, } from '../../../commonStateTypes/stringToUnion';
2
- // QBO's PrintStatus on a Purchase/Check. Sent only by the Create Transaction form for
3
- // transaction_type: check -- qbo_purchase.py rejects print_status on any other payment_type.
4
- const ALL_PRINT_STATUSES = ['NotSet', 'NeedToPrint', 'PrintComplete'];
5
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
- const toPrintStatusInternal = (v) => stringToUnion(v, ALL_PRINT_STATUSES);
7
- export const toPrintStatus = (v) => v == null ? undefined : stringToUnionStrict(v, ALL_PRINT_STATUSES);