diff --git a/src/cljs/auto_ap/views/pages/transactions/form.cljs b/src/cljs/auto_ap/views/pages/transactions/form.cljs index 6488f1e9..01d14d37 100644 --- a/src/cljs/auto_ap/views/pages/transactions/form.cljs +++ b/src/cljs/auto_ap/views/pages/transactions/form.cljs @@ -336,117 +336,119 @@ should-disable-for-client? (and (not (or is-admin? is-power-user?)) (not= :requires-feedback (:original-status data))) is-already-matched? (:payment data)] - (form-inline {:title "Transaction"} - [:<> + (with-meta + (form-inline {:title "Transaction"} + [:<> - (when (and @(re-frame/subscribe [::subs/is-admin?]) - (get-in data [:yodlee-merchant])) - [:div.control - [:p.help "Merchant"] - [:input.input {:type "text" - :disabled true - :value (str (get-in data [:yodlee-merchant :name]) - " - " - (get-in data [:yodlee-merchant :yodlee-id]))}]]) + (when (and @(re-frame/subscribe [::subs/is-admin?]) + (get-in data [:yodlee-merchant])) + [:div.control + [:p.help "Merchant"] + [:input.input {:type "text" + :disabled true + :value (str (get-in data [:yodlee-merchant :name]) + " - " + (get-in data [:yodlee-merchant :yodlee-id]))}]]) - (when is-admin? - (field "Matched Rule" - [:input.input {:type "text" - :field [:matched-rule :note] - :disabled "disabled"}])) - (field "Amount" - [:input.input {:type "text" - :field [:amount] - :disabled "disabled"}]) - (field "Description" - [:input.input {:type "text" - :field [:description-original] - :disabled "disabled"}]) + (when is-admin? + (field "Matched Rule" + [:input.input {:type "text" + :field [:matched-rule :note] + :disabled "disabled"}])) + (field "Amount" + [:input.input {:type "text" + :field [:amount] + :disabled "disabled"}]) + (field "Description" + [:input.input {:type "text" + :field [:description-original] + :disabled "disabled"}]) - (field "Date" - [:input.input {:type "text" - :field [:date] - :disabled "disabled"}]) + (field "Date" + [:input.input {:type "text" + :field [:date] + :disabled "disabled"}]) - (when (and (:payment data) - (or is-admin? is-power-user?)) - [:p.notification.is-info.is-light>div.level>div.level-left - [:div.level-item "This transaction is linked to a payment "] - [:div.level-item [:button.button.is-warning {:on-click (dispatch-event [::unlink])} "Unlink"]]]) - [tabs {:default-tab :details} - (when - (and (seq (:potential-transaction-rule-matches data)) - (not (:matched-rule data)) - is-admin?) - [tab {:title "Transaction Rule" :key :transaction-rule} - [potential-transaction-rule-matches-box {:potential-transaction-rule-matches (:potential-transaction-rule-matches data)}]]) - - (when - (and (seq (:potential-autopay-invoices-matches data)) - (not is-already-matched?) - (or is-admin? is-power-user?)) - [tab {:title "Autopay Invoices" :key :autopay-invoices} - [potential-autopay-invoices-matches-box {:potential-autopay-invoices-matches (:potential-autopay-invoices-matches data)}]]) + (when (and (:payment data) + (or is-admin? is-power-user?)) + [:p.notification.is-info.is-light>div.level>div.level-left + [:div.level-item "This transaction is linked to a payment "] + [:div.level-item [:button.button.is-warning {:on-click (dispatch-event [::unlink])} "Unlink"]]]) + [tabs {:default-tab :details} + (when + (and (seq (:potential-transaction-rule-matches data)) + (not (:matched-rule data)) + is-admin?) + [tab {:title "Transaction Rule" :key :transaction-rule} + [potential-transaction-rule-matches-box {:potential-transaction-rule-matches (:potential-transaction-rule-matches data)}]]) + + (when + (and (seq (:potential-autopay-invoices-matches data)) + (not is-already-matched?) + (or is-admin? is-power-user?)) + [tab {:title "Autopay Invoices" :key :autopay-invoices} + [potential-autopay-invoices-matches-box {:potential-autopay-invoices-matches (:potential-autopay-invoices-matches data)}]]) - (when - (and (seq (:potential-unpaid-invoices-matches data)) - (not is-already-matched?) - (or is-admin? is-power-user?)) - [tab {:title "Unpaid Invoices" :key :unpaid-invoices} - [potential-unpaid-invoices-matches-box {:potential-unpaid-invoices-matches (:potential-unpaid-invoices-matches data)}]]) + (when + (and (seq (:potential-unpaid-invoices-matches data)) + (not is-already-matched?) + (or is-admin? is-power-user?)) + [tab {:title "Unpaid Invoices" :key :unpaid-invoices} + [potential-unpaid-invoices-matches-box {:potential-unpaid-invoices-matches (:potential-unpaid-invoices-matches data)}]]) - (when - (and (seq (:potential-payment-matches data)) - (not is-already-matched?) - (or is-admin? is-power-user?)) - [tab {:title "Payment" :key :payment} - [potential-payment-matches-box {:potential-payment-matches (:potential-payment-matches data)}]]) + (when + (and (seq (:potential-payment-matches data)) + (not is-already-matched?) + (or is-admin? is-power-user?)) + [tab {:title "Payment" :key :payment} + [potential-payment-matches-box {:potential-payment-matches (:potential-payment-matches data)}]]) - [tab {:title "Details" :key :details} - [:div - (field "Vendor" - [typeahead-v3 {:entities-by-id @(re-frame/subscribe [::subs/vendors-by-id]) - :entity-index @(re-frame/subscribe [::subs/searchable-vendors-index]) - :entity->text :name - :type "typeahead-v3" - :auto-focus true - :field [:vendor] - :disabled (or (boolean (:payment data)) - should-disable-for-client?)}]) - (with-meta - (field nil - [expense-accounts-field - {:type "expense-accounts" - :field [:accounts] - :max (Math/abs (js/parseFloat (:amount data))) - :descriptor "credit account" - :disabled (or (boolean (:payment data)) - should-disable-for-client?) - :locations locations}]) - {:key (str (:id (:vendor data)))}) + [tab {:title "Details" :key :details} + [:div + (field "Vendor" + [typeahead-v3 {:entities-by-id @(re-frame/subscribe [::subs/vendors-by-id]) + :entity-index @(re-frame/subscribe [::subs/searchable-vendors-index]) + :entity->text :name + :type "typeahead-v3" + :auto-focus true + :field [:vendor] + :disabled (or (boolean (:payment data)) + should-disable-for-client?)}]) + (with-meta + (field nil + [expense-accounts-field + {:type "expense-accounts" + :field [:accounts] + :max (Math/abs (js/parseFloat (:amount data))) + :descriptor "credit account" + :disabled (or (boolean (:payment data)) + should-disable-for-client?) + :locations locations}]) + {:key (str (:id (:vendor data)))}) - - + + - + - (field "Approval Status" - [button-radio - {:type "button-radio" - :field [:approval-status] - :options [[:unapproved "Unapproved"] - [:requires-feedback "Client Review"] - [:approved "Approved"] - [:excluded "Excluded from Ledger"]] - :disabled should-disable-for-client?}]) + (field "Approval Status" + [button-radio + {:type "button-radio" + :field [:approval-status] + :options [[:unapproved "Unapproved"] + [:requires-feedback "Client Review"] + [:approved "Approved"] + [:excluded "Excluded from Ledger"]] + :disabled should-disable-for-client?}]) - (field "Forecasted-transaction" - [typeahead-v3 {:entities @(re-frame/subscribe [::subs/forecasted-transactions-for-client (:id (:client data))]) - :entity->text :identifier - :type "typeahead-v3" - :field [:forecast-match]}]) - (error-notification) - (when-not should-disable-for-client? - (submit-button "Save"))]]]]))]) + (field "Forecasted-transaction" + [typeahead-v3 {:entities @(re-frame/subscribe [::subs/forecasted-transactions-for-client (:id (:client data))]) + :entity->text :identifier + :type "typeahead-v3" + :field [:forecast-match]}]) + (error-notification) + (when-not should-disable-for-client? + (submit-button "Save"))]]]]) + {:key (:id data)}))])