mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Allow unreconcile and expand API to block reconciled transactions.
This commit is contained in:
parent
a86a582d0f
commit
2c34bd36a5
@ -417,15 +417,22 @@ class UpdateRequest extends FormRequest
|
||||
// all transaction types must be equal:
|
||||
$this->validateTransactionTypesForUpdate($validator);
|
||||
|
||||
|
||||
// user wants to update a reconciled transaction.
|
||||
// source, destination, amount + foreign_amount cannot be changed
|
||||
// and must be omitted from the request.
|
||||
$this->preventUpdateReconciled($validator, $transactionGroup);
|
||||
|
||||
// validate source/destination is equal, depending on the transaction journal type.
|
||||
$this->validateEqualAccountsForUpdate($validator, $transactionGroup);
|
||||
|
||||
// a catch when users submit splits with no source or destination info at all.
|
||||
$this->preventNoAccountInfo($validator, );
|
||||
// see method:
|
||||
//$this->preventNoAccountInfo($validator, );
|
||||
|
||||
// validate that the currency fits the source and/or destination account.
|
||||
// validate all account info
|
||||
$this->validateAccountInformationUpdate($validator, $transactionGroup);
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -25,8 +25,11 @@ namespace FireflyIII\Http\Controllers\Transaction;
|
||||
|
||||
use FireflyIII\Http\Controllers\Controller;
|
||||
use FireflyIII\Models\TransactionGroup;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use Illuminate\Contracts\View\Factory;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Routing\Redirector;
|
||||
use Illuminate\View\View;
|
||||
@ -36,8 +39,11 @@ use Illuminate\View\View;
|
||||
*/
|
||||
class EditController extends Controller
|
||||
{
|
||||
|
||||
private JournalRepositoryInterface $repository;
|
||||
|
||||
/**
|
||||
* EditController constructor.
|
||||
* IndexController constructor.
|
||||
*
|
||||
|
||||
*/
|
||||
@ -45,17 +51,30 @@ class EditController extends Controller
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// some useful repositories:
|
||||
// translations:
|
||||
$this->middleware(
|
||||
static function ($request, $next) {
|
||||
function ($request, $next) {
|
||||
app('view')->share('title', (string)trans('firefly.transactions'));
|
||||
app('view')->share('mainTitleIcon', 'fa-exchange');
|
||||
|
||||
$this->repository = app(JournalRepositoryInterface::class);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param TransactionJournal $journal
|
||||
*
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function unreconcile(TransactionJournal $journal): JsonResponse
|
||||
{
|
||||
$this->repository->unreconcileById($journal->id);
|
||||
return response()->json([], 204);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param TransactionGroup $transactionGroup
|
||||
*
|
||||
|
@ -46,7 +46,7 @@ use Illuminate\Support\Collection;
|
||||
class JournalRepository implements JournalRepositoryInterface
|
||||
{
|
||||
/** @var User */
|
||||
private $user;
|
||||
private User $user;
|
||||
|
||||
/**
|
||||
* @param TransactionGroup $transactionGroup
|
||||
@ -334,4 +334,14 @@ class JournalRepository implements JournalRepositoryInterface
|
||||
|
||||
return $journal;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function unreconcileById(int $journalId): void
|
||||
{
|
||||
/** @var TransactionJournal $journal */
|
||||
$journal = $this->user->transactionJournals()->find($journalId);
|
||||
$journal?->transactions()->update(['reconciled' => false]);
|
||||
}
|
||||
}
|
||||
|
@ -133,6 +133,13 @@ interface JournalRepositoryInterface
|
||||
*/
|
||||
public function reconcileById(int $journalId): void;
|
||||
|
||||
/**
|
||||
* TODO Maybe to account repository? Do this wen reconcile is API only.
|
||||
*
|
||||
* @param int $journalId
|
||||
*/
|
||||
public function unreconcileById(int $journalId): void;
|
||||
|
||||
/**
|
||||
* Search in journal descriptions.
|
||||
*
|
||||
|
@ -25,7 +25,9 @@ declare(strict_types=1);
|
||||
namespace FireflyIII\Validation;
|
||||
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionGroup;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Validation\Validator;
|
||||
|
||||
@ -37,6 +39,50 @@ use Illuminate\Validation\Validator;
|
||||
trait GroupValidation
|
||||
{
|
||||
/**
|
||||
* @param Validator $validator
|
||||
* @param TransactionGroup $transactionGroup
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function preventUpdateReconciled(Validator $validator, TransactionGroup $transactionGroup): void
|
||||
{
|
||||
app('log')->debug(sprintf('Now in %s', __METHOD__));
|
||||
|
||||
$count = Transaction
|
||||
::leftJoin('transaction_journals', 'transaction_journals.id', 'transactions.transaction_journal_id')
|
||||
->leftJoin('transaction_groups', 'transaction_groups.id', 'transaction_journals.transaction_group_id')
|
||||
->where('transaction_journals.transaction_group_id', $transactionGroup->id)
|
||||
->where('transactions.reconciled', 1)->where('transactions.amount', '<', 0)->count(['transactions.id']);
|
||||
if (0 === $count) {
|
||||
app('log')->debug(sprintf('Transaction is not reconciled, done with %s', __METHOD__));
|
||||
return;
|
||||
}
|
||||
$data = $validator->getData();
|
||||
$forbidden = ['amount','foreign_amount','currency_code','currency_id','foreign_currency_code','foreign_currency_id',
|
||||
'source_id','source_name','source_number','source_iban',
|
||||
'destination_id','destination_name','destination_number','destination_iban',
|
||||
];
|
||||
foreach($data['transactions'] as $index => $row) {
|
||||
foreach($forbidden as $key) {
|
||||
if(array_key_exists($key, $row)) {
|
||||
$validator->errors()->add(
|
||||
sprintf('transactions.%d.%s', $index, $key),
|
||||
(string)trans('validation.reconciled_forbidden_field', ['field' => $key])
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
app('log')->debug(sprintf('Done with %s', __METHOD__));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* A catch when users submit splits with no source or destination info at all.
|
||||
*
|
||||
* TODO This should prevent errors down the road but I'm not yet sure what I'm validating here
|
||||
* TODO so I disabled this on 2023-10-22 to see if it causes any issues.
|
||||
*
|
||||
* @param Validator $validator
|
||||
*
|
||||
* @throws FireflyException
|
||||
|
@ -376,6 +376,11 @@ trait TransactionValidation
|
||||
public function validateAccountInformationUpdate(Validator $validator, TransactionGroup $transactionGroup): void
|
||||
{
|
||||
Log::debug('Now in validateAccountInformationUpdate()');
|
||||
if ($validator->errors()->count() > 0) {
|
||||
Log::debug('Validator already has errors, so return.');
|
||||
return;
|
||||
}
|
||||
|
||||
$transactions = $this->getTransactionsArray($validator);
|
||||
|
||||
/**
|
||||
@ -699,6 +704,11 @@ trait TransactionValidation
|
||||
*/
|
||||
private function validateEqualAccountsForUpdate(Validator $validator, TransactionGroup $transactionGroup): void
|
||||
{
|
||||
if ($validator->errors()->count() > 0) {
|
||||
Log::debug('Validator already has errors, so return.');
|
||||
return;
|
||||
}
|
||||
|
||||
Log::debug('Now in validateEqualAccountsForUpdate()');
|
||||
$transactions = $this->getTransactionsArray($validator);
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -25,17 +25,27 @@
|
||||
<div v-if="error_message !== ''" class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="alert alert-danger alert-dismissible" role="alert">
|
||||
<button class="close" data-dismiss="alert" type="button" v-bind:aria-label="$t('firefly.close')"><span
|
||||
<button class="close" data-dismiss="alert" type="button"
|
||||
v-bind:aria-label="$t('firefly.close')"><span
|
||||
aria-hidden="true">×</span></button>
|
||||
<strong>{{ $t("firefly.flash_error") }}</strong> {{ error_message }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="isReconciled" class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="alert alert-warning" role="alert">
|
||||
<strong>{{ $t("firefly.flash_warning") }}</strong> {{ $t('firefly.is_reconciled_fields_dropped') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="success_message !== ''" class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="alert alert-success alert-dismissible" role="alert">
|
||||
<button class="close" data-dismiss="alert" type="button" v-bind:aria-label="$t('firefly.close')"><span
|
||||
<button class="close" data-dismiss="alert" type="button"
|
||||
v-bind:aria-label="$t('firefly.close')"><span
|
||||
aria-hidden="true">×</span></button>
|
||||
<strong>{{ $t("firefly.flash_success") }}</strong> <span v-html="success_message"></span>
|
||||
</div>
|
||||
@ -50,10 +60,13 @@
|
||||
<span v-if="transactions.length > 1">{{ $t('firefly.single_split') }} {{ index + 1 }} / {{
|
||||
transactions.length
|
||||
}}</span>
|
||||
<span v-if="transactions.length === 1">{{ $t('firefly.transaction_journal_information') }}</span>
|
||||
<span v-if="transactions.length === 1">{{
|
||||
$t('firefly.transaction_journal_information')
|
||||
}}</span>
|
||||
</h3>
|
||||
<div v-if="transactions.length > 1" class="box-tools pull-right">
|
||||
<button class="btn btn-xs btn-danger" type="button" v-on:click="deleteTransaction(index, $event)"><i
|
||||
<button class="btn btn-xs btn-danger" type="button"
|
||||
v-on:click="deleteTransaction(index, $event)"><i
|
||||
class="fa fa-trash"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
@ -173,7 +186,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="transactions.length-1 === index && transactionType.toLowerCase() !== 'reconciliation'"
|
||||
<div
|
||||
v-if="transactions.length-1 === index && transactionType.toLowerCase() !== 'reconciliation'"
|
||||
class="box-footer">
|
||||
<button class="btn btn-default" type="button" @click="addTransaction">{{
|
||||
$t('firefly.add_another_split')
|
||||
@ -216,7 +230,8 @@
|
||||
{{ $t('firefly.after_update_create_another') }}
|
||||
</label>
|
||||
</div>
|
||||
<div v-if="null !== transactionType && transactionType.toLowerCase() !== 'reconciliation'" class="checkbox">
|
||||
<div v-if="null !== transactionType && transactionType.toLowerCase() !== 'reconciliation'"
|
||||
class="checkbox">
|
||||
<label>
|
||||
<input v-model="storeAsNew" name="store_as_new" type="checkbox">
|
||||
{{ $t('firefly.store_as_new') }}
|
||||
@ -418,6 +433,10 @@ export default {
|
||||
//console.log('EditTransaction: processIncomingGroupRow()');
|
||||
this.setTransactionType(transaction.type);
|
||||
|
||||
if(true === transaction.reconciled) {
|
||||
this.isReconciled = true;
|
||||
}
|
||||
|
||||
let newTags = [];
|
||||
for (let key in transaction.tags) {
|
||||
if (transaction.tags.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) {
|
||||
@ -703,6 +722,18 @@ export default {
|
||||
if (parseInt(row.piggy_bank) > 0) {
|
||||
currentArray.piggy_bank_id = parseInt(row.piggy_bank);
|
||||
}
|
||||
if(this.isReconciled) {
|
||||
// drop content from array:
|
||||
delete currentArray.source_id;
|
||||
delete currentArray.source_name;
|
||||
delete currentArray.destination_id;
|
||||
delete currentArray.destination_name;
|
||||
delete currentArray.amount;
|
||||
delete currentArray.foreign_amount;
|
||||
delete currentArray.foreign_currency_id;
|
||||
delete currentArray.currency_id;
|
||||
currentArray.reconciled = true;
|
||||
}
|
||||
|
||||
return currentArray;
|
||||
},
|
||||
@ -1074,6 +1105,7 @@ export default {
|
||||
fireWebhooks: true,
|
||||
group: this.groupId,
|
||||
error_message: "",
|
||||
isReconciled: false,
|
||||
success_message: "",
|
||||
transactions: [],
|
||||
group_title: "",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "\u041a\u0430\u043a\u0432\u043e \u0441\u0435 \u0441\u043b\u0443\u0447\u0432\u0430?",
|
||||
"flash_error": "\u0413\u0440\u0435\u0448\u043a\u0430!",
|
||||
"flash_warning": "\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435!",
|
||||
"flash_success": "\u0423\u0441\u043f\u0435\u0445!",
|
||||
"close": "\u0417\u0430\u0442\u0432\u043e\u0440\u0438",
|
||||
"split_transaction_title": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0438",
|
||||
"amount": "\u0421\u0443\u043c\u0430",
|
||||
"date": "\u0414\u0430\u0442\u0430",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\u0415\u0442\u0438\u043a\u0435\u0442\u0438",
|
||||
"no_budget": "(\u0431\u0435\u0437 \u0431\u044e\u0434\u0436\u0435\u0442)",
|
||||
"no_bill": "(\u043d\u044f\u043c\u0430 \u0441\u043c\u0435\u0442\u043a\u0430)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Qu\u00e8 est\u00e0 passant?",
|
||||
"flash_error": "Error!",
|
||||
"flash_warning": "Atenci\u00f3!",
|
||||
"flash_success": "\u00c8xit!",
|
||||
"close": "Tancar",
|
||||
"split_transaction_title": "Descripci\u00f3 de la transacci\u00f3 dividida",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Enviar",
|
||||
"amount": "Import",
|
||||
"date": "Data",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Etiquetes",
|
||||
"no_budget": "(cap pressupost)",
|
||||
"no_bill": "(cap factura)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Jak to jde?",
|
||||
"flash_error": "Chyba!",
|
||||
"flash_warning": "Varov\u00e1n\u00ed!",
|
||||
"flash_success": "\u00dasp\u011b\u0161n\u011b dokon\u010deno!",
|
||||
"close": "Zav\u0159\u00edt",
|
||||
"split_transaction_title": "Popis roz\u00fa\u010dtov\u00e1n\u00ed",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Odeslat",
|
||||
"amount": "\u010c\u00e1stka",
|
||||
"date": "Datum",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\u0160t\u00edtky",
|
||||
"no_budget": "(\u017e\u00e1dn\u00fd rozpo\u010det)",
|
||||
"no_bill": "(no bill)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Hvad spiller?",
|
||||
"flash_error": "Fejl!",
|
||||
"flash_warning": "Advarsel!",
|
||||
"flash_success": "Succes!",
|
||||
"close": "Luk",
|
||||
"split_transaction_title": "Description of the split transaction",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Submit",
|
||||
"amount": "Bel\u00f8b",
|
||||
"date": "Date",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Etiketter",
|
||||
"no_budget": "(no budget)",
|
||||
"no_bill": "(no bill)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "\u00dcberblick",
|
||||
"flash_error": "Fehler!",
|
||||
"flash_warning": "Achtung!",
|
||||
"flash_success": "Geschafft!",
|
||||
"close": "Schlie\u00dfen",
|
||||
"split_transaction_title": "Beschreibung der Splittbuchung",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Absenden",
|
||||
"amount": "Betrag",
|
||||
"date": "Datum",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Schlagw\u00f6rter",
|
||||
"no_budget": "(kein Budget)",
|
||||
"no_bill": "(keine Belege)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "\u03a4\u03b9 \u03c0\u03b1\u03af\u03b6\u03b5\u03b9;",
|
||||
"flash_error": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1!",
|
||||
"flash_warning": "\u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae!",
|
||||
"flash_success": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1!",
|
||||
"close": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf",
|
||||
"split_transaction_title": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03c4\u03b7\u03c2 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae\u03c2 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03c7\u03c9\u03c1\u03b9\u03c3\u03bc\u03cc",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "\u03a5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae",
|
||||
"amount": "\u03a0\u03bf\u03c3\u03cc",
|
||||
"date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\u0395\u03c4\u03b9\u03ba\u03ad\u03c4\u03b5\u03c2",
|
||||
"no_budget": "(\u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03cc)",
|
||||
"no_bill": "(\u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03ac\u03b3\u03b9\u03bf \u03ad\u03be\u03bf\u03b4\u03bf)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "What's playing?",
|
||||
"flash_error": "Error!",
|
||||
"flash_warning": "Warning!",
|
||||
"flash_success": "Success!",
|
||||
"close": "Close",
|
||||
"split_transaction_title": "Description of the split transaction",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Submit",
|
||||
"amount": "Amount",
|
||||
"date": "Date",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Tags",
|
||||
"no_budget": "(no budget)",
|
||||
"no_bill": "(no bill)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "What's playing?",
|
||||
"flash_error": "Error!",
|
||||
"flash_warning": "Warning!",
|
||||
"flash_success": "Success!",
|
||||
"close": "Close",
|
||||
"split_transaction_title": "Description of the split transaction",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Submit",
|
||||
"amount": "Amount",
|
||||
"date": "Date",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Tags",
|
||||
"no_budget": "(no budget)",
|
||||
"no_bill": "(no bill)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "\u00bfQu\u00e9 est\u00e1 pasando?",
|
||||
"flash_error": "\u00a1Error!",
|
||||
"flash_warning": "\u00a1Atenci\u00f3n!",
|
||||
"flash_success": "\u00a1Operaci\u00f3n correcta!",
|
||||
"close": "Cerrar",
|
||||
"split_transaction_title": "Descripci\u00f3n de la transacci\u00f3n dividida",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Enviar",
|
||||
"amount": "Cantidad",
|
||||
"date": "Fecha",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Etiquetas",
|
||||
"no_budget": "(sin presupuesto)",
|
||||
"no_bill": "(sin factura)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Mit\u00e4 kuuluu?",
|
||||
"flash_error": "Virhe!",
|
||||
"flash_warning": "Varoitus!",
|
||||
"flash_success": "Valmista tuli!",
|
||||
"close": "Sulje",
|
||||
"split_transaction_title": "Jaetun tapahtuman kuvaus",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Vahvista",
|
||||
"amount": "Summa",
|
||||
"date": "P\u00e4iv\u00e4m\u00e4\u00e4r\u00e4",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "T\u00e4git",
|
||||
"no_budget": "(ei budjettia)",
|
||||
"no_bill": "(ei laskua)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Quoi de neuf ?",
|
||||
"flash_error": "Erreur !",
|
||||
"flash_warning": "Attention !",
|
||||
"flash_success": "Super !",
|
||||
"close": "Fermer",
|
||||
"split_transaction_title": "Description de l'op\u00e9ration ventil\u00e9e",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Soumettre",
|
||||
"amount": "Montant",
|
||||
"date": "Date",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Tags",
|
||||
"no_budget": "(pas de budget)",
|
||||
"no_bill": "(aucune facture)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Mi a helyzet?",
|
||||
"flash_error": "Hiba!",
|
||||
"flash_warning": "Figyelmeztet\u00e9s!",
|
||||
"flash_success": "Siker!",
|
||||
"close": "Bez\u00e1r\u00e1s",
|
||||
"split_transaction_title": "Felosztott tranzakci\u00f3 le\u00edr\u00e1sa",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Bek\u00fcld\u00e9s",
|
||||
"amount": "\u00d6sszeg",
|
||||
"date": "D\u00e1tum",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "C\u00edmk\u00e9k",
|
||||
"no_budget": "(nincs k\u00f6lts\u00e9gkeret)",
|
||||
"no_bill": "(no bill)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Apa yang sedang dimainkan?",
|
||||
"flash_error": "Kesalahan!",
|
||||
"flash_warning": "PERINGATAN!",
|
||||
"flash_success": "Keberhasilan!",
|
||||
"close": "Dekat",
|
||||
"split_transaction_title": "Description of the split transaction",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Menyerahkan",
|
||||
"amount": "Jumlah",
|
||||
"date": "Tanggal",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Tag",
|
||||
"no_budget": "(no budget)",
|
||||
"no_bill": "(no bill)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "La tua situazione finanziaria",
|
||||
"flash_error": "Errore!",
|
||||
"flash_warning": "Avviso!",
|
||||
"flash_success": "Successo!",
|
||||
"close": "Chiudi",
|
||||
"split_transaction_title": "Descrizione della transazione suddivisa",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Invia",
|
||||
"amount": "Importo",
|
||||
"date": "Data",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Etichette",
|
||||
"no_budget": "(nessun budget)",
|
||||
"no_bill": "(nessuna bolletta)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "\u6982\u8981",
|
||||
"flash_error": "\u30a8\u30e9\u30fc\uff01",
|
||||
"flash_warning": "\u8b66\u544a\uff01",
|
||||
"flash_success": "\u6210\u529f\u3057\u307e\u3057\u305f\uff01",
|
||||
"close": "\u9589\u3058\u308b",
|
||||
"split_transaction_title": "\u5206\u5272\u53d6\u5f15\u306e\u6982\u8981",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "\u9001\u4fe1",
|
||||
"amount": "\u91d1\u984d",
|
||||
"date": "\u65e5\u4ed8",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\u30bf\u30b0",
|
||||
"no_budget": "(\u4e88\u7b97\u306a\u3057)",
|
||||
"no_bill": "(\u8acb\u6c42\u306a\u3057)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "\ubb34\uc2a8 \uc77c\uc774\uc8e0?",
|
||||
"flash_error": "\uc624\ub958!",
|
||||
"flash_warning": "\uacbd\uace0!",
|
||||
"flash_success": "\uc131\uacf5!",
|
||||
"close": "\ub2eb\uae30",
|
||||
"split_transaction_title": "\ubd84\ud560 \uac70\ub798\uc5d0 \ub300\ud55c \uc124\uba85",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "\uc81c\ucd9c",
|
||||
"amount": "\uae08\uc561",
|
||||
"date": "\ub0a0\uc9dc",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\ud0dc\uadf8",
|
||||
"no_budget": "(\uc608\uc0b0 \uc5c6\uc74c)",
|
||||
"no_bill": "(\uccad\uad6c\uc11c \uc5c6\uc74c)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Hvordan g\u00e5r det?",
|
||||
"flash_error": "Feil!",
|
||||
"flash_warning": "Advarsel!",
|
||||
"flash_success": "Suksess!",
|
||||
"close": "Lukk",
|
||||
"split_transaction_title": "Beskrivelse av den splittende transaksjon",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Send inn",
|
||||
"amount": "Bel\u00f8p",
|
||||
"date": "Dato",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Tagger",
|
||||
"no_budget": "(ingen budsjett)",
|
||||
"no_bill": "(ingen regning)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Hoe staat het er voor?",
|
||||
"flash_error": "Fout!",
|
||||
"flash_warning": "Waarschuwing!",
|
||||
"flash_success": "Gelukt!",
|
||||
"close": "Sluiten",
|
||||
"split_transaction_title": "Beschrijving van de gesplitste transactie",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Invoeren",
|
||||
"amount": "Bedrag",
|
||||
"date": "Datum",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Tags",
|
||||
"no_budget": "(geen budget)",
|
||||
"no_bill": "(geen contract)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Korleis g\u00e5r det?",
|
||||
"flash_error": "Feil!",
|
||||
"flash_warning": "Advarsel!",
|
||||
"flash_success": "Suksess!",
|
||||
"close": "Lukk",
|
||||
"split_transaction_title": "Beskrivinga av den splitta transaksjonen",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Send inn",
|
||||
"amount": "Bel\u00f8p",
|
||||
"date": "Dato",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "N\u00f8kkelord",
|
||||
"no_budget": "(ingen budsjett)",
|
||||
"no_bill": "(ingen rekning)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Co jest grane?",
|
||||
"flash_error": "B\u0142\u0105d!",
|
||||
"flash_warning": "Ostrze\u017cenie!",
|
||||
"flash_success": "Sukces!",
|
||||
"close": "Zamknij",
|
||||
"split_transaction_title": "Opis podzielonej transakcji",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Prze\u015blij",
|
||||
"amount": "Kwota",
|
||||
"date": "Data",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Tagi",
|
||||
"no_budget": "(brak bud\u017cetu)",
|
||||
"no_bill": "(brak rachunku)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "O que est\u00e1 acontecendo?",
|
||||
"flash_error": "Erro!",
|
||||
"flash_warning": "Aten\u00e7\u00e3o!",
|
||||
"flash_success": "Sucesso!",
|
||||
"close": "Fechar",
|
||||
"split_transaction_title": "Descri\u00e7\u00e3o da transa\u00e7\u00e3o dividida",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Enviar",
|
||||
"amount": "Valor",
|
||||
"date": "Data",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Tags",
|
||||
"no_budget": "(sem or\u00e7amento)",
|
||||
"no_bill": "(sem fatura)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Painel de controlo",
|
||||
"flash_error": "Erro!",
|
||||
"flash_warning": "Aviso!",
|
||||
"flash_success": "Sucesso!",
|
||||
"close": "Fechar",
|
||||
"split_transaction_title": "Descri\u00e7\u00e3o da transa\u00e7\u00e3o dividida",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Guardar",
|
||||
"amount": "Montante",
|
||||
"date": "Data",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Etiquetas",
|
||||
"no_budget": "(sem or\u00e7amento)",
|
||||
"no_bill": "(sem encargo)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Ce se red\u0103?",
|
||||
"flash_error": "Eroare!",
|
||||
"flash_warning": "Avertizare!",
|
||||
"flash_success": "Succes!",
|
||||
"close": "\u00cenchide",
|
||||
"split_transaction_title": "Descrierea tranzac\u021biei divizate",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Trimite",
|
||||
"amount": "Sum\u0103",
|
||||
"date": "Dat\u0103",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Etichete",
|
||||
"no_budget": "(nici un buget)",
|
||||
"no_bill": "(f\u0103r\u0103 factur\u0103)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043c\u043e\u0438\u043c\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u0430\u043c\u0438?",
|
||||
"flash_error": "\u041e\u0448\u0438\u0431\u043a\u0430!",
|
||||
"flash_warning": "\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435!",
|
||||
"flash_success": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e!",
|
||||
"close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
|
||||
"split_transaction_title": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c",
|
||||
"amount": "\u0421\u0443\u043c\u043c\u0430",
|
||||
"date": "\u0414\u0430\u0442\u0430",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\u041c\u0435\u0442\u043a\u0438",
|
||||
"no_budget": "(\u0432\u043d\u0435 \u0431\u044e\u0434\u0436\u0435\u0442\u0430)",
|
||||
"no_bill": "(\u043d\u0435\u0442 \u0441\u0447\u0451\u0442\u0430 \u043d\u0430 \u043e\u043f\u043b\u0430\u0442\u0443)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Ako to ide?",
|
||||
"flash_error": "Chyba!",
|
||||
"flash_warning": "Varovanie!",
|
||||
"flash_success": "Hotovo!",
|
||||
"close": "Zavrie\u0165",
|
||||
"split_transaction_title": "Popis roz\u00fa\u010dtovania",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Odosla\u0165",
|
||||
"amount": "Suma",
|
||||
"date": "D\u00e1tum",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\u0160t\u00edtky",
|
||||
"no_budget": "(\u017eiadny rozpo\u010det)",
|
||||
"no_bill": "(\u017eiadny \u00fa\u010det)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Kaj dogaja?",
|
||||
"flash_error": "Napaka!",
|
||||
"flash_warning": "Opozorilo!",
|
||||
"flash_success": "Uspelo je!",
|
||||
"close": "zapri",
|
||||
"split_transaction_title": "Opis deljene transakcije",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Potrdi",
|
||||
"amount": "Znesek",
|
||||
"date": "Datum",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Oznake",
|
||||
"no_budget": "(brez prora\u010duna)",
|
||||
"no_bill": "(ni ra\u010duna)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Vad spelas?",
|
||||
"flash_error": "Fel!",
|
||||
"flash_warning": "Varning!",
|
||||
"flash_success": "Slutf\u00f6rd!",
|
||||
"close": "St\u00e4ng",
|
||||
"split_transaction_title": "Beskrivning av delad transaktion",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "Skicka",
|
||||
"amount": "Belopp",
|
||||
"date": "Datum",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Etiketter",
|
||||
"no_budget": "(ingen budget)",
|
||||
"no_bill": "(ingen r\u00e4kning)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Neler oluyor?",
|
||||
"flash_error": "Hata!",
|
||||
"flash_warning": "Uyar\u0131!",
|
||||
"flash_success": "Ba\u015far\u0131l\u0131!",
|
||||
"close": "Kapat",
|
||||
"split_transaction_title": "Description of the split transaction",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "G\u00f6nder",
|
||||
"amount": "Miktar",
|
||||
"date": "Tarih",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Etiketler",
|
||||
"no_budget": "(b\u00fct\u00e7e yok)",
|
||||
"no_bill": "(hay\u0131r bill)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "\u0429\u043e \u0432 \u0433\u0430\u043c\u0430\u043d\u0446\u0456?",
|
||||
"flash_error": "\u041f\u043e\u043c\u0438\u043b\u043a\u0430!",
|
||||
"flash_warning": "\u0423\u0432\u0430\u0433\u0430!",
|
||||
"flash_success": "\u0423\u0441\u043f\u0456\u0448\u043d\u043e!",
|
||||
"close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438",
|
||||
"split_transaction_title": "Description of the split transaction",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438",
|
||||
"amount": "\u0421\u0443\u043c\u0430",
|
||||
"date": "\u0414\u0430\u0442\u0430",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\u0422\u0435\u0433\u0438",
|
||||
"no_budget": "(\u043f\u043e\u0437\u0430 \u0431\u044e\u0434\u0436\u0435\u0442\u043e\u043c)",
|
||||
"no_bill": "(no bill)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "Ch\u00e0o m\u1eebng tr\u1edf l\u1ea1i?",
|
||||
"flash_error": "L\u1ed7i!",
|
||||
"flash_warning": "C\u1ea3nh b\u00e1o!",
|
||||
"flash_success": "Th\u00e0nh c\u00f4ng!",
|
||||
"close": "\u0110\u00f3ng",
|
||||
"split_transaction_title": "M\u00f4 t\u1ea3 giao d\u1ecbch t\u00e1ch",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "G\u1eedi",
|
||||
"amount": "S\u1ed1 ti\u1ec1n",
|
||||
"date": "Ng\u00e0y",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "Nh\u00e3n",
|
||||
"no_budget": "(kh\u00f4ng c\u00f3 ng\u00e2n s\u00e1ch)",
|
||||
"no_bill": "(no bill)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "\u4eca\u5929\u7406\u8d22\u4e86\u5417\uff1f",
|
||||
"flash_error": "\u9519\u8bef\uff01",
|
||||
"flash_warning": "\u8b66\u544a\uff01",
|
||||
"flash_success": "\u6210\u529f\uff01",
|
||||
"close": "\u5173\u95ed",
|
||||
"split_transaction_title": "\u62c6\u5206\u4ea4\u6613\u7684\u63cf\u8ff0",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "\u63d0\u4ea4",
|
||||
"amount": "\u91d1\u989d",
|
||||
"date": "\u65e5\u671f",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\u6807\u7b7e",
|
||||
"no_budget": "(\u65e0\u9884\u7b97)",
|
||||
"no_bill": "(\u65e0\u8d26\u5355)",
|
||||
|
@ -2,6 +2,7 @@
|
||||
"firefly": {
|
||||
"welcome_back": "What's playing?",
|
||||
"flash_error": "\u932f\u8aa4\uff01",
|
||||
"flash_warning": "\u8b66\u544a\uff01",
|
||||
"flash_success": "\u6210\u529f\uff01",
|
||||
"close": "\u95dc\u9589",
|
||||
"split_transaction_title": "\u62c6\u5206\u4ea4\u6613\u7684\u63cf\u8ff0",
|
||||
@ -29,6 +30,7 @@
|
||||
"submit": "\u9001\u51fa",
|
||||
"amount": "\u91d1\u984d",
|
||||
"date": "\u65e5\u671f",
|
||||
"is_reconciled_fields_dropped": "Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).",
|
||||
"tags": "\u6a19\u7c64",
|
||||
"no_budget": "(\u7121\u9810\u7b97)",
|
||||
"no_bill": "(no bill)",
|
||||
|
@ -1516,6 +1516,7 @@ return [
|
||||
'list_all_attachments' => 'List of all attachments',
|
||||
|
||||
// transaction index
|
||||
'is_reconciled_fields_dropped' => 'Because this transaction is reconciled, you will not be able to update the accounts, nor the amount(s).',
|
||||
'title_expenses' => 'Expenses',
|
||||
'title_withdrawal' => 'Expenses',
|
||||
'title_revenue' => 'Revenue / income',
|
||||
@ -1888,6 +1889,7 @@ return [
|
||||
// Ignore this comment
|
||||
|
||||
// transactions:
|
||||
'unreconcile' => 'Undo reconciliation',
|
||||
'update_withdrawal' => 'Update withdrawal',
|
||||
'update_deposit' => 'Update deposit',
|
||||
'update_transaction' => 'Update transaction',
|
||||
|
@ -38,6 +38,7 @@ return [
|
||||
'source_equals_destination' => 'The source account equals the destination account.',
|
||||
'unique_account_number_for_user' => 'It looks like this account number is already in use.',
|
||||
'unique_iban_for_user' => 'It looks like this IBAN is already in use.',
|
||||
'reconciled_forbidden_field' => 'This transaction is already reconciled, you cannot change the ":field"',
|
||||
'deleted_user' => 'Due to security constraints, you cannot register using this email address.',
|
||||
'rule_trigger_value' => 'This value is invalid for the selected trigger.',
|
||||
'rule_action_value' => 'This value is invalid for the selected action.',
|
||||
|
@ -220,6 +220,10 @@
|
||||
class="fa fa-pencil"></span> {{ 'edit'|_ }}</a></li>
|
||||
<li><a href="{{ route('transactions.delete', [transactionGroup.id]) }}"><span
|
||||
class="fa fa-trash"></span> {{ 'delete'|_ }}</a></li>
|
||||
{% if journal.reconciled %}
|
||||
<li><a class="reconcile-button" href="{{ route('transactions.unreconcile', [journal.transaction_journal_id]) }}"><span
|
||||
class="fa fa-history"></span> {{ 'unreconcile'|_ }}</a></li>
|
||||
{% endif %}
|
||||
<li role="separator" class="divider"></li>
|
||||
|
||||
{# convert to different type #}
|
||||
@ -504,9 +508,25 @@
|
||||
var cloneGroupUrl = '{{ route('transactions.clone') }}';
|
||||
var cloneAndEditUrl = '{{ route('transactions.clone') }}?redirect=edit';
|
||||
|
||||
|
||||
$('.switch-link').on('click', switchLink);
|
||||
$('.reconcile-button').on('click', unreconcile);
|
||||
var switchLinkUrl = '{{ route('transactions.link.switch') }}';
|
||||
|
||||
function unreconcile(e) {
|
||||
e.preventDefault();
|
||||
var obj = $(e.currentTarget);
|
||||
$.post(obj.attr('href'), {
|
||||
_token: token
|
||||
}).done(function () {
|
||||
location.reload();
|
||||
}).fail(function () {
|
||||
console.error('I failed :(');
|
||||
});
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
function switchLink(e) {
|
||||
e.preventDefault();
|
||||
var obj = $(e.currentTarget);
|
||||
|
@ -1227,6 +1227,9 @@ Route::group(
|
||||
Route::get('delete/{transactionGroup}', ['uses' => 'Transaction\DeleteController@delete', 'as' => 'delete']);
|
||||
Route::post('destroy/{transactionGroup}', ['uses' => 'Transaction\DeleteController@destroy', 'as' => 'destroy']);
|
||||
|
||||
// unreconcile
|
||||
Route::post('unreconcile/{tj}', ['uses' => 'Transaction\EditController@unreconcile', 'as' => 'unreconcile']);
|
||||
|
||||
Route::get('show/{transactionGroup}', ['uses' => 'Transaction\ShowController@show', 'as' => 'show']);
|
||||
Route::get('debug/{transactionGroup}', ['uses' => 'Transaction\ShowController@debugShow', 'as' => 'debug']);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user