mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-11-03 20:57:23 -06:00
Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop
This commit is contained in:
commit
a26c40a86b
15 files changed
+45
-78
No files matched your search
@@ -148,7 +148,7 @@ final class AccountController extends Controller
|
||||
$rangeVals = array_values($range);
|
||||
$rangeIdx = 0;
|
||||
$rangeCount = count($rangeDates);
|
||||
$converter = new ExchangeRateConverter();
|
||||
$converter = new ExchangeRateConverter();
|
||||
|
||||
while ($currentStart <= $params['end']) {
|
||||
$label = $currentStart->toAtomString();
|
||||
@@ -157,15 +157,16 @@ final class AccountController extends Controller
|
||||
while ($rangeIdx < $rangeCount && $rangeDates[$rangeIdx] <= $currentStart) {
|
||||
$previous = $rangeVals[$rangeIdx]['balance'];
|
||||
if ($this->convertToPrimary) {
|
||||
$pcPrevious = $rangeVals[$rangeIdx]['balance'];
|
||||
$pcPrevious = $rangeVals[$rangeIdx]['balance'];
|
||||
}
|
||||
++$rangeIdx;
|
||||
}
|
||||
|
||||
$currentSet['entries'][$label] = $previous;
|
||||
if ($this->convertToPrimary) {
|
||||
$pcPrevious = $converter->convert($currency, $this->primaryCurrency, $currentStart, $previous);
|
||||
$pcPrevious = $converter->convert($currency, $this->primaryCurrency, $currentStart, $previous);
|
||||
$currentSet['pc_entries'][$label] = $pcPrevious;
|
||||
|
||||
// convert for the current moment.
|
||||
}
|
||||
|
||||
|
||||
@@ -158,10 +158,7 @@ final class TagController extends Controller
|
||||
'currency_id' => (string) $foreignCurrencyId,
|
||||
'currency_code' => $journal['foreign_currency_code'],
|
||||
];
|
||||
$response[$foreignKey]['difference'] = bcadd(
|
||||
(string) $response[$foreignKey]['difference'],
|
||||
Steam::positive($journal['foreign_amount'])
|
||||
);
|
||||
$response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount']));
|
||||
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,10 +155,7 @@ final class TagController extends Controller
|
||||
'currency_id' => (string) $foreignCurrencyId,
|
||||
'currency_code' => $journal['foreign_currency_code'],
|
||||
];
|
||||
$response[$foreignKey]['difference'] = bcadd(
|
||||
(string) $response[$foreignKey]['difference'],
|
||||
Steam::positive($journal['foreign_amount'])
|
||||
);
|
||||
$response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount']));
|
||||
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // intentional float
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,13 +198,7 @@ final class BudgetLimitController extends Controller
|
||||
if ($request->expectsJson()) {
|
||||
$array = $limit->toArray();
|
||||
// add some extra metadata:
|
||||
$spentArr = $this->opsRepository->sumExpenses(
|
||||
$limit->start_date,
|
||||
$limit->end_date,
|
||||
null,
|
||||
new Collection()->push($budget),
|
||||
$currency
|
||||
);
|
||||
$spentArr = $this->opsRepository->sumExpenses($limit->start_date, $limit->end_date, null, new Collection()->push($budget), $currency);
|
||||
$array['spent'] = $spentArr[$currency->id]['sum'] ?? '0';
|
||||
$array['left_formatted'] = Amount::formatAnything($limit->transactionCurrency, bcadd($array['spent'], (string) $array['amount']));
|
||||
$array['amount_formatted'] = Amount::formatAnything($limit->transactionCurrency, $limit['amount']);
|
||||
|
||||
@@ -272,10 +272,7 @@ final class IndexController extends Controller
|
||||
|
||||
if (array_key_exists($currency->id, $spentArr) && array_key_exists('sum', $spentArr[$currency->id])) {
|
||||
$array['spent'][$currency->id]['spent'] = $spentArr[$currency->id]['sum'];
|
||||
$array['spent'][$currency->id]['spent_outside'] = Steam::negative(bcsub(
|
||||
$spentInLimits[$currency->id],
|
||||
$spentArr[$currency->id]['sum']
|
||||
));
|
||||
$array['spent'][$currency->id]['spent_outside'] = Steam::negative(bcsub($spentInLimits[$currency->id], $spentArr[$currency->id]['sum']));
|
||||
$array['spent'][$currency->id]['currency_id'] = $currency->id;
|
||||
$array['spent'][$currency->id]['currency_symbol'] = $currency->symbol;
|
||||
$array['spent'][$currency->id]['currency_decimal_places'] = $currency->decimal_places;
|
||||
|
||||
@@ -539,13 +539,7 @@ final class BudgetController extends Controller
|
||||
}
|
||||
|
||||
// get spent amount in this period for this currency.
|
||||
$sum = $this->opsRepository->sumExpenses(
|
||||
$currentStart,
|
||||
$currentEnd,
|
||||
$accounts,
|
||||
new Collection()->push($budget),
|
||||
$currency
|
||||
);
|
||||
$sum = $this->opsRepository->sumExpenses($currentStart, $currentEnd, $accounts, new Collection()->push($budget), $currency);
|
||||
$amount = Steam::positive($sum[$currency->id]['sum'] ?? '0');
|
||||
$chartData[0]['entries'][$title] = Steam::bcround($amount, $currency->decimal_places);
|
||||
|
||||
|
||||
@@ -132,13 +132,7 @@ class CreateAutoBudgetLimits implements ShouldQueue
|
||||
// if has one, calculate expenses and use that as a base.
|
||||
$repository = app(OperationsRepositoryInterface::class);
|
||||
$repository->setUser($autoBudget->budget->user);
|
||||
$spent = $repository->sumExpenses(
|
||||
$previousStart,
|
||||
$previousEnd,
|
||||
null,
|
||||
new Collection()->push($autoBudget->budget),
|
||||
$autoBudget->transactionCurrency
|
||||
);
|
||||
$spent = $repository->sumExpenses($previousStart, $previousEnd, null, new Collection()->push($autoBudget->budget), $autoBudget->transactionCurrency);
|
||||
$currencyId = $autoBudget->transaction_currency_id;
|
||||
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
|
||||
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
|
||||
@@ -228,13 +222,7 @@ class CreateAutoBudgetLimits implements ShouldQueue
|
||||
// if has one, calculate expenses and use that as a base.
|
||||
$repository = app(OperationsRepositoryInterface::class);
|
||||
$repository->setUser($autoBudget->budget->user);
|
||||
$spent = $repository->sumExpenses(
|
||||
$previousStart,
|
||||
$previousEnd,
|
||||
null,
|
||||
new Collection()->push($autoBudget->budget),
|
||||
$autoBudget->transactionCurrency
|
||||
);
|
||||
$spent = $repository->sumExpenses($previousStart, $previousEnd, null, new Collection()->push($autoBudget->budget), $autoBudget->transactionCurrency);
|
||||
$currencyId = $autoBudget->transaction_currency_id;
|
||||
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
|
||||
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
|
||||
|
||||
@@ -222,14 +222,7 @@ trait AugumentData
|
||||
$currentEnd->addMonth();
|
||||
}
|
||||
// primary currency amount.
|
||||
$expenses = $opsRepository->sumExpenses(
|
||||
$currentStart,
|
||||
$currentEnd,
|
||||
null,
|
||||
$budgetCollection,
|
||||
$entry->transactionCurrency,
|
||||
$this->convertToPrimary
|
||||
);
|
||||
$expenses = $opsRepository->sumExpenses($currentStart, $currentEnd, null, $budgetCollection, $entry->transactionCurrency, $this->convertToPrimary);
|
||||
$spent = $expenses[$currency->id]['sum'] ?? '0';
|
||||
$entry->pc_spent = $spent;
|
||||
|
||||
|
||||
@@ -354,11 +354,7 @@ class RecurringEnrichment implements EnrichmentInterface
|
||||
|
||||
/** @var RecurrenceRepetition $repetition */
|
||||
foreach ($set as $repetition) {
|
||||
$recurrence = $this->collection->filter(
|
||||
static fn (Recurrence $item): bool => (int) $item->id === (int) $repetition->recurrence_id
|
||||
)
|
||||
->first()
|
||||
;
|
||||
$recurrence = $this->collection->filter(static fn (Recurrence $item): bool => (int) $item->id === (int) $repetition->recurrence_id)->first();
|
||||
$fromDate = clone ($recurrence->latest_date ?? $recurrence->first_date);
|
||||
$recurrenceId = (int) $repetition->recurrence_id;
|
||||
$repId = (int) $repetition->id;
|
||||
|
||||
+1
-1
@@ -79,7 +79,7 @@ return [
|
||||
// see cer.php for exchange rates feature flag.
|
||||
],
|
||||
'version' => 'develop/2026-09-30',
|
||||
'build_time' => 1790748773,
|
||||
'build_time' => 1790763296,
|
||||
'api_version' => '2.1.0', // field is no longer used.
|
||||
'db_version' => 28, // field is no longer used.
|
||||
|
||||
|
||||
@@ -178,11 +178,10 @@ let index = function () {
|
||||
document.querySelector(`div.search-filter[data-column="${column}"] input`).value = "";
|
||||
|
||||
// remove class from parent if was used to sort
|
||||
if(null !== document
|
||||
.querySelector(`th.sortable_sorted[data-column="${column}"]`)) {
|
||||
document
|
||||
.querySelector(`th.sortable_sorted[data-column="${column}"]`)
|
||||
.classList.remove("is-searching");
|
||||
if (null !== document.querySelector(`th.sortable_sorted[data-column="${column}"]`)) {
|
||||
document
|
||||
.querySelector(`th.sortable_sorted[data-column="${column}"]`)
|
||||
.classList.remove("is-searching");
|
||||
}
|
||||
|
||||
let input = document.querySelector(`div.search-filter[data-column="${column}"]`);
|
||||
@@ -202,13 +201,12 @@ let index = function () {
|
||||
document.querySelector(`span.title[data-column="${column}"]`).classList.add("d-none");
|
||||
document.querySelector(`span.search-spacer[data-column="${column}"]`).classList.add("d-none");
|
||||
// add class to parent if it's used to sort
|
||||
if(null !== document.querySelector(`th.sortable_sorted[data-column="${column}"]`)) {
|
||||
if (null !== document.querySelector(`th.sortable_sorted[data-column="${column}"]`)) {
|
||||
document
|
||||
.querySelector(`th.sortable_sorted[data-column="${column}"]`)
|
||||
.classList.add("is-searching");
|
||||
}
|
||||
|
||||
|
||||
// show search input
|
||||
let input = document.querySelector(`div.search-filter[data-column="${column}"]`);
|
||||
input.classList.remove("d-none");
|
||||
|
||||
@@ -116,12 +116,17 @@ let rates = function () {
|
||||
}
|
||||
if (0 !== parseInt(this.rates[index].rate_id)) {
|
||||
// console.log("[a] PUT, not POST.", this.rates[index]);
|
||||
new Put().put({
|
||||
date: this.rates[index].date_field,
|
||||
rate: this.rates[index].rate
|
||||
}, { id: this.rates[index].rate_id }).then(() => {
|
||||
this.updating = false;
|
||||
});
|
||||
new Put()
|
||||
.put(
|
||||
{
|
||||
date: this.rates[index].date_field,
|
||||
rate: this.rates[index].rate,
|
||||
},
|
||||
{ id: this.rates[index].rate_id },
|
||||
)
|
||||
.then(() => {
|
||||
this.updating = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
if ("" !== this.rates[index].inverse) {
|
||||
@@ -145,10 +150,13 @@ let rates = function () {
|
||||
if (0 !== parseInt(this.rates[index].inverse_id)) {
|
||||
// console.log("[a] PUT, not POST.", this.rates[index]);
|
||||
new Put()
|
||||
.put({
|
||||
rate: this.rates[index].inverse,
|
||||
date: this.rates[index].date_field
|
||||
}, { id: this.rates[index].inverse_id })
|
||||
.put(
|
||||
{
|
||||
rate: this.rates[index].inverse,
|
||||
date: this.rates[index].date_field,
|
||||
},
|
||||
{ id: this.rates[index].inverse_id },
|
||||
)
|
||||
.then(() => {
|
||||
this.updating = false;
|
||||
});
|
||||
|
||||
@@ -86,7 +86,9 @@ export function selectDestinationAccount(item, ac) {
|
||||
// currency_code: item.currency_code,
|
||||
// account_currency_code: item.account_currency_code,
|
||||
// };
|
||||
document.querySelector("#form")._x_dataStack[0].changedDestinationAccount("selectDestinationAccount("+index+")");
|
||||
document
|
||||
.querySelector("#form")
|
||||
._x_dataStack[0].changedDestinationAccount("selectDestinationAccount(" + index + ")");
|
||||
}
|
||||
|
||||
export function changeSourceAccount(item, ac) {
|
||||
|
||||
@@ -69,7 +69,9 @@ export function disableSplitInputs() {
|
||||
|
||||
// if is withdrawal, pre-fill the destination account with the first entry's destination account.
|
||||
if ("withdrawal" === this.groupProperties.transactionType) {
|
||||
this.entries[i].destination_account = JSON.parse(JSON.stringify(this.entries[i - 1].destination_account));//structuredClone();
|
||||
this.entries[i].destination_account = JSON.parse(
|
||||
JSON.stringify(this.entries[i - 1].destination_account),
|
||||
); //structuredClone();
|
||||
}
|
||||
|
||||
// disable source when withdrawal or transfer
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {format} from 'date-fns/format';
|
||||
import { format } from "date-fns/format";
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -55,7 +55,7 @@ export function parseFromEntries(entries, originals, transactionType) {
|
||||
current.currency_code = entry.currency_code;
|
||||
|
||||
// dates
|
||||
current.date = format(new Date(entry.date),"yyyy-MM-dd'T'HH:mm:ssxxx");
|
||||
current.date = format(new Date(entry.date), "yyyy-MM-dd'T'HH:mm:ssxxx");
|
||||
// console.log('Full date thing', current.date);
|
||||
if (i > 0 && !!returnArray[0]) {
|
||||
// console.log("Overrule date for entry ", i, " with ", returnArray[0].date);
|
||||
|
||||
Reference in new issue
Block a user