Renamed the journal entry form to journal entry editor, to be clear.
This commit is contained in:
parent
be0ae5eba4
commit
c80e58b049
@ -105,7 +105,7 @@ class AccountSelector {
|
||||
AccountSelector.#formAccount.innerText = "";
|
||||
AccountSelector.#formAccount.dataset.code = "";
|
||||
AccountSelector.#formAccount.dataset.text = "";
|
||||
JournalEntryForm.validateAccount();
|
||||
JournalEntryEditor.validateAccount();
|
||||
};
|
||||
for (const option of this.#options) {
|
||||
option.onclick = () => {
|
||||
@ -113,7 +113,7 @@ class AccountSelector {
|
||||
AccountSelector.#formAccount.innerText = option.dataset.content;
|
||||
AccountSelector.#formAccount.dataset.code = option.dataset.code;
|
||||
AccountSelector.#formAccount.dataset.text = option.dataset.content;
|
||||
JournalEntryForm.validateAccount();
|
||||
JournalEntryEditor.validateAccount();
|
||||
};
|
||||
}
|
||||
this.#query.addEventListener("input", () => {
|
||||
@ -246,9 +246,9 @@ class AccountSelector {
|
||||
*
|
||||
*/
|
||||
static initialize() {
|
||||
this.#entryForm = document.getElementById("accounting-entry-form");
|
||||
this.#formAccountControl = document.getElementById("accounting-entry-form-account-control");
|
||||
this.#formAccount = document.getElementById("accounting-entry-form-account");
|
||||
this.#entryForm = document.getElementById("accounting-entry-editor");
|
||||
this.#formAccountControl = document.getElementById("accounting-entry-editor-account-control");
|
||||
this.#formAccount = document.getElementById("accounting-entry-editor-account");
|
||||
const modals = Array.from(document.getElementsByClassName("accounting-account-selector-modal"));
|
||||
for (const modal of modals) {
|
||||
const selector = new AccountSelector(modal);
|
||||
|
@ -146,11 +146,11 @@ class SummaryEditor {
|
||||
this.#accountButtons = Array.from(document.getElementsByClassName(this.prefix + "-account"));
|
||||
|
||||
// Things from the entry form
|
||||
this.#entryFormModal = document.getElementById("accounting-entry-form-modal");
|
||||
this.#formAccountControl = document.getElementById("accounting-entry-form-account-control");
|
||||
this.#formAccount = document.getElementById("accounting-entry-form-account");
|
||||
this.#formSummaryControl = document.getElementById("accounting-entry-form-summary-control");
|
||||
this.#formSummary = document.getElementById("accounting-entry-form-summary");
|
||||
this.#entryFormModal = document.getElementById("accounting-entry-editor-modal");
|
||||
this.#formAccountControl = document.getElementById("accounting-entry-editor-account-control");
|
||||
this.#formAccount = document.getElementById("accounting-entry-editor-account");
|
||||
this.#formSummaryControl = document.getElementById("accounting-entry-editor-summary-control");
|
||||
this.#formSummary = document.getElementById("accounting-entry-editor-summary");
|
||||
|
||||
for (const cls of [GeneralTagTab, GeneralTripTab, BusTripTab, RegularPaymentTab, AnnotationTab]) {
|
||||
const tab = new cls(this);
|
||||
@ -249,7 +249,7 @@ class SummaryEditor {
|
||||
this.#formAccount.dataset.code = this.#selectedAccount.dataset.code;
|
||||
this.#formAccount.dataset.text = this.#selectedAccount.dataset.text;
|
||||
this.#formAccount.innerText = this.#selectedAccount.dataset.text;
|
||||
JournalEntryForm.validateAccount();
|
||||
JournalEntryEditor.validateAccount();
|
||||
}
|
||||
this.#formSummary.dataset.value = this.summary.value;
|
||||
this.#formSummary.innerText = this.summary.value;
|
||||
@ -291,8 +291,8 @@ class SummaryEditor {
|
||||
*/
|
||||
static initialize() {
|
||||
const forms = Array.from(document.getElementsByClassName("accounting-summary-editor"));
|
||||
const entryForm = document.getElementById("accounting-entry-form");
|
||||
const formSummaryControl = document.getElementById("accounting-entry-form-summary-control");
|
||||
const entryForm = document.getElementById("accounting-entry-editor");
|
||||
const formSummaryControl = document.getElementById("accounting-entry-editor-summary-control");
|
||||
for (const form of forms) {
|
||||
const editor = new SummaryEditor(form);
|
||||
this.#editors[editor.#entryType] = editor;
|
||||
|
@ -25,7 +25,7 @@
|
||||
// Initializes the page JavaScript.
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
TransactionForm.initialize();
|
||||
JournalEntryForm.initialize();
|
||||
JournalEntryEditor.initialize();
|
||||
});
|
||||
|
||||
/**
|
||||
@ -479,7 +479,7 @@ class DebitCreditSideSubForm {
|
||||
this.#total = document.getElementById(this.#prefix + "-total");
|
||||
this.#addEntryButton = document.getElementById(this.#prefix + "-add-entry");
|
||||
this.#addEntryButton.onclick = () => {
|
||||
JournalEntryForm.addNew(this);
|
||||
JournalEntryEditor.addNew(this);
|
||||
AccountSelector.initializeJournalEntryForm();
|
||||
SummaryEditor.initializeNewJournalEntry(entryType);
|
||||
};
|
||||
@ -726,7 +726,7 @@ class JournalEntrySubForm {
|
||||
this.#amountText = document.getElementById(this.#prefix + "-amount-text");
|
||||
this.deleteButton = document.getElementById(this.#prefix + "-delete");
|
||||
this.#control.onclick = () => {
|
||||
JournalEntryForm.edit(this, this.#accountCode.value, this.#accountCode.dataset.text, this.#summary.value, this.amount.value);
|
||||
JournalEntryEditor.edit(this, this.#accountCode.value, this.#accountCode.dataset.text, this.#summary.value, this.amount.value);
|
||||
AccountSelector.initializeJournalEntryForm();
|
||||
};
|
||||
this.deleteButton.onclick = () => {
|
||||
@ -777,13 +777,13 @@ class JournalEntrySubForm {
|
||||
}
|
||||
|
||||
/**
|
||||
* The journal entry form.
|
||||
* The journal entry editor.
|
||||
*
|
||||
*/
|
||||
class JournalEntryForm {
|
||||
class JournalEntryEditor {
|
||||
|
||||
/**
|
||||
* The journal entry form
|
||||
* The journal entry editor
|
||||
* @type {HTMLFormElement}
|
||||
*/
|
||||
#element;
|
||||
@ -855,20 +855,20 @@ class JournalEntryForm {
|
||||
#side;
|
||||
|
||||
/**
|
||||
* Constructs a new journal entry form.
|
||||
* Constructs a new journal entry editor.
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
this.#element = document.getElementById("accounting-entry-form");
|
||||
this.#modal = document.getElementById("accounting-entry-form-modal");
|
||||
this.#accountControl = document.getElementById("accounting-entry-form-account-control");
|
||||
this.#account = document.getElementById("accounting-entry-form-account");
|
||||
this.#accountError = document.getElementById("accounting-entry-form-account-error")
|
||||
this.#summaryControl = document.getElementById("accounting-entry-form-summary-control");
|
||||
this.#summary = document.getElementById("accounting-entry-form-summary");
|
||||
this.#summaryError = document.getElementById("accounting-entry-form-summary-error");
|
||||
this.#amount = document.getElementById("accounting-entry-form-amount");
|
||||
this.#amountError = document.getElementById("accounting-entry-form-amount-error");
|
||||
this.#element = document.getElementById("accounting-entry-editor");
|
||||
this.#modal = document.getElementById("accounting-entry-editor-modal");
|
||||
this.#accountControl = document.getElementById("accounting-entry-editor-account-control");
|
||||
this.#account = document.getElementById("accounting-entry-editor-account");
|
||||
this.#accountError = document.getElementById("accounting-entry-editor-account-error")
|
||||
this.#summaryControl = document.getElementById("accounting-entry-editor-summary-control");
|
||||
this.#summary = document.getElementById("accounting-entry-editor-summary");
|
||||
this.#summaryError = document.getElementById("accounting-entry-editor-summary-error");
|
||||
this.#amount = document.getElementById("accounting-entry-editor-amount");
|
||||
this.#amountError = document.getElementById("accounting-entry-editor-amount-error");
|
||||
this.#element.onsubmit = () => {
|
||||
if (this.#validate()) {
|
||||
if (this.#entry === null) {
|
||||
@ -1002,17 +1002,17 @@ class JournalEntryForm {
|
||||
}
|
||||
|
||||
/**
|
||||
* The journal entry form
|
||||
* @type {JournalEntryForm}
|
||||
* The journal entry editor
|
||||
* @type {JournalEntryEditor}
|
||||
*/
|
||||
static #form;
|
||||
static #editor;
|
||||
|
||||
/**
|
||||
* Initializes the journal entry form.
|
||||
* Initializes the journal entry editor.
|
||||
*
|
||||
*/
|
||||
static initialize() {
|
||||
this.#form = new JournalEntryForm();
|
||||
this.#editor = new JournalEntryEditor();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1021,7 +1021,7 @@ class JournalEntryForm {
|
||||
* @param side {DebitCreditSideSubForm} the debit or credit side sub-form
|
||||
*/
|
||||
static addNew(side) {
|
||||
this.#form.#onAddNew(side);
|
||||
this.#editor.#onAddNew(side);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1034,7 +1034,7 @@ class JournalEntryForm {
|
||||
* @param amount {string} the amount
|
||||
*/
|
||||
static edit(entry, accountCode, accountText, summary, amount) {
|
||||
this.#form.#onEdit(entry, accountCode, accountText, summary, amount);
|
||||
this.#editor.#onEdit(entry, accountCode, accountText, summary, amount);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1042,7 +1042,7 @@ class JournalEntryForm {
|
||||
*
|
||||
*/
|
||||
static validateAccount() {
|
||||
this.#form.#validateAccount();
|
||||
this.#editor.#validateAccount();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ First written: 2023/2/25
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button id="accounting-currency-{{ currency_index }}-debit-add-entry" class="btn btn-primary" type="button" data-currency-index="{{ currency_index }}" data-entry-type="debit" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal">
|
||||
<button id="accounting-currency-{{ currency_index }}-debit-add-entry" class="btn btn-primary" type="button" data-currency-index="{{ currency_index }}" data-entry-type="debit" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal">
|
||||
<i class="fas fa-plus"></i>
|
||||
{{ A_("New") }}
|
||||
</button>
|
||||
|
@ -24,7 +24,7 @@ First written: 2023/2/25
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="accounting-account-selector-{{ entry_type }}-modal-label">{{ A_("Select Account") }}</h1>
|
||||
<button type="button" class="btn-close" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal" aria-label="{{ A_("Close") }}"></button>
|
||||
<button type="button" class="btn-close" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal" aria-label="{{ A_("Close") }}"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="input-group mb-2">
|
||||
@ -37,7 +37,7 @@ First written: 2023/2/25
|
||||
|
||||
<ul id="accounting-account-selector-{{ entry_type }}-option-list" class="list-group accounting-selector-list">
|
||||
{% for account in account_options %}
|
||||
<li id="accounting-account-selector-{{ entry_type }}-option-{{ account.code }}" class="list-group-item accounting-clickable accounting-account-selector-{{ entry_type }}-option {% if account.is_in_use %} accounting-account-in-use {% endif %}" data-code="{{ account.code }}" data-content="{{ account }}" data-query-values="{{ account.query_values|tojson|forceescape }}" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal">
|
||||
<li id="accounting-account-selector-{{ entry_type }}-option-{{ account.code }}" class="list-group-item accounting-clickable accounting-account-selector-{{ entry_type }}-option {% if account.is_in_use %} accounting-account-in-use {% endif %}" data-code="{{ account.code }}" data-content="{{ account }}" data-query-values="{{ account.query_values|tojson|forceescape }}" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal">
|
||||
{{ account }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
@ -46,8 +46,8 @@ First written: 2023/2/25
|
||||
<p id="accounting-account-selector-{{ entry_type }}-option-no-result" class="d-none">{{ A_("There is no data.") }}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal">{{ A_("Cancel") }}</button>
|
||||
<button id="accounting-account-selector-{{ entry_type }}-btn-clear" type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal">{{ A_("Clear") }}</button>
|
||||
<button type="button" class="btn btn-secondary" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal">{{ A_("Cancel") }}</button>
|
||||
<button id="accounting-account-selector-{{ entry_type }}-btn-clear" type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal">{{ A_("Clear") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,60 +0,0 @@
|
||||
{#
|
||||
The Mia! Accounting Flask Project
|
||||
entry-form-modal.html: The modal of the journal entry sub-form
|
||||
|
||||
Copyright (c) 2023 imacat.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
Author: imacat@mail.imacat.idv.tw (imacat)
|
||||
First written: 2023/2/25
|
||||
#}
|
||||
<form id="accounting-entry-form" data-entry-type="">
|
||||
<div id="accounting-entry-form-modal" class="modal fade" tabindex="-1" aria-labelledby="accounting-entry-form-modal-label" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="accounting-entry-form-modal-label">{{ A_("Journal Entry Content") }}</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ A_("Close") }}"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="mb-3">
|
||||
<div id="accounting-entry-form-account-control" class="form-control accounting-clickable accounting-material-text-field" data-bs-toggle="modal" data-bs-target="">
|
||||
<label class="form-label" for="accounting-entry-form-account">{{ A_("Account") }}</label>
|
||||
<div id="accounting-entry-form-account" data-code="" data-text=""></div>
|
||||
</div>
|
||||
<div id="accounting-entry-form-account-error" class="invalid-feedback"></div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<div id="accounting-entry-form-summary-control" class="form-control accounting-clickable accounting-material-text-field" data-bs-toggle="modal" data-bs-target="">
|
||||
<label class="form-label" for="accounting-entry-form-summary">{{ A_("Summary") }}</label>
|
||||
<div id="accounting-entry-form-summary" data-value=""></div>
|
||||
</div>
|
||||
<div id="accounting-entry-form-summary-error" class="invalid-feedback"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-floating mb-3">
|
||||
<input id="accounting-entry-form-amount" class="form-control" type="number" value="" min="0.01" max="" step="0.01" placeholder=" " required="required">
|
||||
<label for="accounting-entry-form-amount">{{ A_("Amount") }}</label>
|
||||
<div id="accounting-entry-form-amount-error" class="invalid-feedback"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{ A_("Cancel") }}</button>
|
||||
<button type="submit" class="btn btn-primary">{{ A_("Save") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
@ -29,7 +29,7 @@ First written: 2023/2/25
|
||||
<input id="accounting-currency-{{ currency_index }}-{{ entry_type }}-{{ entry_index }}-summary" type="hidden" name="currency-{{ currency_index }}-{{ entry_type }}-{{ entry_index }}-summary" value="{{ summary_data }}">
|
||||
<input id="accounting-currency-{{ currency_index }}-{{ entry_type }}-{{ entry_index }}-amount" type="hidden" name="currency-{{ currency_index }}-{{ entry_type }}-{{ entry_index }}-amount" value="{{ amount_data }}">
|
||||
<div class="accounting-entry-content">
|
||||
<div id="accounting-currency-{{ currency_index }}-{{ entry_type }}-{{ entry_index }}-control" class="form-control clickable d-flex justify-content-between accounting-entry-control {% if entry_errors %} is-invalid {% endif %}" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal">
|
||||
<div id="accounting-currency-{{ currency_index }}-{{ entry_type }}-{{ entry_index }}-control" class="form-control clickable d-flex justify-content-between accounting-entry-control {% if entry_errors %} is-invalid {% endif %}" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal">
|
||||
<div>
|
||||
<div id="accounting-currency-{{ currency_index }}-{{ entry_type }}-{{ entry_index }}-account-text" class="small">{{ account_text }}</div>
|
||||
<div id="accounting-currency-{{ currency_index }}-{{ entry_type }}-{{ entry_index }}-summary-text">{{ summary_data }}</div>
|
||||
|
@ -86,7 +86,7 @@ First written: 2023/2/26
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% include "accounting/transaction/include/entry-form-modal.html" %}
|
||||
{% include "accounting/transaction/include/journal-entry-editor-modal.html" %}
|
||||
{% block form_modals %}{% endblock %}
|
||||
|
||||
{% endblock %}
|
||||
|
@ -0,0 +1,60 @@
|
||||
{#
|
||||
The Mia! Accounting Flask Project
|
||||
journal-entry-editor-modal.html: The modal of the journal entry editor
|
||||
|
||||
Copyright (c) 2023 imacat.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
Author: imacat@mail.imacat.idv.tw (imacat)
|
||||
First written: 2023/2/25
|
||||
#}
|
||||
<form id="accounting-entry-editor" data-entry-type="">
|
||||
<div id="accounting-entry-editor-modal" class="modal fade" tabindex="-1" aria-labelledby="accounting-entry-editor-modal-label" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="accounting-entry-editor-modal-label">{{ A_("Journal Entry Content") }}</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ A_("Close") }}"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="mb-3">
|
||||
<div id="accounting-entry-editor-account-control" class="form-control accounting-clickable accounting-material-text-field" data-bs-toggle="modal" data-bs-target="">
|
||||
<label class="form-label" for="accounting-entry-editor-account">{{ A_("Account") }}</label>
|
||||
<div id="accounting-entry-editor-account" data-code="" data-text=""></div>
|
||||
</div>
|
||||
<div id="accounting-entry-editor-account-error" class="invalid-feedback"></div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<div id="accounting-entry-editor-summary-control" class="form-control accounting-clickable accounting-material-text-field" data-bs-toggle="modal" data-bs-target="">
|
||||
<label class="form-label" for="accounting-entry-editor-summary">{{ A_("Summary") }}</label>
|
||||
<div id="accounting-entry-editor-summary" data-value=""></div>
|
||||
</div>
|
||||
<div id="accounting-entry-editor-summary-error" class="invalid-feedback"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-floating mb-3">
|
||||
<input id="accounting-entry-editor-amount" class="form-control" type="number" value="" min="0.01" max="" step="0.01" placeholder=" " required="required">
|
||||
<label for="accounting-entry-editor-amount">{{ A_("Amount") }}</label>
|
||||
<div id="accounting-entry-editor-amount-error" class="invalid-feedback"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{ A_("Cancel") }}</button>
|
||||
<button type="submit" class="btn btn-primary">{{ A_("Save") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
@ -27,7 +27,7 @@ First written: 2023/2/28
|
||||
<h1 class="modal-title fs-5" id="accounting-summary-editor-{{ summary_editor.type }}-modal-label">
|
||||
<label for="accounting-summary-editor-{{ summary_editor.type }}-summary">{{ A_("Summary") }}</label>
|
||||
</h1>
|
||||
<button class="btn-close" type="button" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal" aria-label="{{ A_("Close") }}"></button>
|
||||
<button class="btn-close" type="button" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal" aria-label="{{ A_("Close") }}"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="mb-3">
|
||||
@ -181,7 +181,7 @@ First written: 2023/2/28
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-secondary" type="button" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal">{{ A_("Cancel") }}</button>
|
||||
<button class="btn btn-secondary" type="button" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal">{{ A_("Cancel") }}</button>
|
||||
<button id="accounting-summary-editor-{{ summary_editor.type }}-btn-save" type="submit" class="btn btn-primary">{{ A_("Save") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -70,7 +70,7 @@ First written: 2023/2/25
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button id="accounting-currency-{{ currency_index }}-credit-add-entry" class="btn btn-primary" type="button" data-currency-index="{{ currency_index }}" data-entry-type="credit" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal">
|
||||
<button id="accounting-currency-{{ currency_index }}-credit-add-entry" class="btn btn-primary" type="button" data-currency-index="{{ currency_index }}" data-entry-type="credit" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal">
|
||||
<i class="fas fa-plus"></i>
|
||||
{{ A_("New") }}
|
||||
</button>
|
||||
|
@ -72,7 +72,7 @@ First written: 2023/2/25
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button id="accounting-currency-{{ currency_index }}-debit-add-entry" class="btn btn-primary" type="button" data-currency-index="{{ currency_index }}" data-entry-type="debit" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal">
|
||||
<button id="accounting-currency-{{ currency_index }}-debit-add-entry" class="btn btn-primary" type="button" data-currency-index="{{ currency_index }}" data-entry-type="debit" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal">
|
||||
<i class="fas fa-plus"></i>
|
||||
{{ A_("New") }}
|
||||
</button>
|
||||
@ -112,7 +112,7 @@ First written: 2023/2/25
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button id="accounting-currency-{{ currency_index }}-credit-add-entry" class="btn btn-primary" type="button" data-currency-index="{{ currency_index }}" data-entry-type="credit" data-bs-toggle="modal" data-bs-target="#accounting-entry-form-modal">
|
||||
<button id="accounting-currency-{{ currency_index }}-credit-add-entry" class="btn btn-primary" type="button" data-currency-index="{{ currency_index }}" data-entry-type="credit" data-bs-toggle="modal" data-bs-target="#accounting-entry-editor-modal">
|
||||
<i class="fas fa-plus"></i>
|
||||
{{ A_("New") }}
|
||||
</button>
|
||||
|
Loading…
Reference in New Issue
Block a user