mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Merge branch 'release/4.7.11'
This commit is contained in:
commit
53c71bb7a2
@ -5,13 +5,13 @@ echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
|||||||
|
|
||||||
if [ "$TRAVIS_BRANCH" == "develop" ]; then
|
if [ "$TRAVIS_BRANCH" == "develop" ]; then
|
||||||
echo "Build develop amd64"
|
echo "Build develop amd64"
|
||||||
docker build -t jc5x/firefly-iii:develop-amd -f Dockerfile .
|
docker build -t jc5x/firefly-iii:develop-amd -f Dockerfile.amd64 .
|
||||||
docker push jc5x/firefly-iii:develop-amd
|
docker push jc5x/firefly-iii:develop-amd
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$TRAVIS_BRANCH" == "master" ]; then
|
if [ "$TRAVIS_BRANCH" == "master" ]; then
|
||||||
echo "Build master amd64"
|
echo "Build master amd64"
|
||||||
docker build -t jc5x/firefly-iii:latest-amd -f Dockerfile .
|
docker build -t jc5x/firefly-iii:latest-amd -f Dockerfile.amd64 .
|
||||||
docker tag jc5x/firefly-iii:latest-amd jc5x/firefly-iii:release-$VERSION-amd
|
docker tag jc5x/firefly-iii:latest-amd jc5x/firefly-iii:release-$VERSION-amd
|
||||||
docker push jc5x/firefly-iii:latest-amd
|
docker push jc5x/firefly-iii:latest-amd
|
||||||
docker push jc5x/firefly-iii:release-$VERSION-amd
|
docker push jc5x/firefly-iii:release-$VERSION-amd
|
||||||
|
@ -15,13 +15,13 @@ echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
|||||||
|
|
||||||
if [ "$TRAVIS_BRANCH" == "develop" ]; then
|
if [ "$TRAVIS_BRANCH" == "develop" ]; then
|
||||||
echo "Build develop arm"
|
echo "Build develop arm"
|
||||||
docker build --tag jc5x/firefly-iii:develop-arm --file Dockerfile-ARM .
|
docker build --tag jc5x/firefly-iii:develop-arm --file Dockerfile.arm .
|
||||||
docker push jc5x/firefly-iii:develop-arm
|
docker push jc5x/firefly-iii:develop-arm
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$TRAVIS_BRANCH" == "master" ]; then
|
if [ "$TRAVIS_BRANCH" == "master" ]; then
|
||||||
echo "Build master arm"
|
echo "Build master arm"
|
||||||
docker build --tag jc5x/firefly-iii:latest-arm --file Dockerfile-ARM .
|
docker build --tag jc5x/firefly-iii:latest-arm --file Dockerfile.arm .
|
||||||
docker tag jc5x/firefly-iii:latest-arm jc5x/firefly-iii:release-$VERSION-arm
|
docker tag jc5x/firefly-iii:latest-arm jc5x/firefly-iii:release-$VERSION-arm
|
||||||
docker push jc5x/firefly-iii:latest-arm
|
docker push jc5x/firefly-iii:latest-arm
|
||||||
docker push jc5x/firefly-iii:release-$VERSION-arm
|
docker push jc5x/firefly-iii:release-$VERSION-arm
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
echo "Now in entrypoint.sh for Firefly III"
|
echo "Now in entrypoint.sh for Firefly III"
|
||||||
|
|
||||||
|
lscpu
|
||||||
|
|
||||||
# make sure the correct directories exists (suggested by @chrif):
|
# make sure the correct directories exists (suggested by @chrif):
|
||||||
echo "Making directories..."
|
echo "Making directories..."
|
||||||
mkdir -p $FIREFLY_PATH/storage/app/public
|
mkdir -p $FIREFLY_PATH/storage/app/public
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
if [ "$TRAVIS_BRANCH" == "develop" ]; then
|
if [ "$TRAVIS_BRANCH" == "develop" ]; then
|
||||||
TARGET=jc5x/firefly-iii:develop
|
TARGET=jc5x/firefly-iii:develop
|
||||||
ARM=jc5x/firefly-iii:develop-arm
|
ARM=jc5x/firefly-iii:develop-arm
|
||||||
AMD=jc5x/firefly-iii:develop-amd
|
AMD=jc5x/firefly-iii:develop-amd64
|
||||||
|
|
||||||
docker manifest create $TARGET $AMD $ARM
|
docker manifest create $TARGET $AMD $ARM
|
||||||
docker manifest annotate $TARGET $ARM --arch arm --os linux
|
docker manifest annotate $TARGET $ARM --arch arm --os linux
|
||||||
@ -15,7 +16,7 @@ echo "The version is $VERSION"
|
|||||||
if [ "$TRAVIS_BRANCH" == "master" ]; then
|
if [ "$TRAVIS_BRANCH" == "master" ]; then
|
||||||
TARGET=jc5x/firefly-iii:latest
|
TARGET=jc5x/firefly-iii:latest
|
||||||
ARM=jc5x/firefly-iii:latest-arm
|
ARM=jc5x/firefly-iii:latest-arm
|
||||||
AMD=jc5x/firefly-iii:latest-amd
|
AMD=jc5x/firefly-iii:latest-amd64
|
||||||
|
|
||||||
docker manifest create $TARGET $AMD $ARM
|
docker manifest create $TARGET $AMD $ARM
|
||||||
docker manifest annotate $TARGET $ARM --arch arm --os linux
|
docker manifest annotate $TARGET $ARM --arch arm --os linux
|
||||||
@ -25,7 +26,7 @@ if [ "$TRAVIS_BRANCH" == "master" ]; then
|
|||||||
# and another one for version specific:
|
# and another one for version specific:
|
||||||
TARGET=jc5x/firefly-iii:release-$VERSION
|
TARGET=jc5x/firefly-iii:release-$VERSION
|
||||||
ARM=jc5x/firefly-iii:release-$VERSION-arm
|
ARM=jc5x/firefly-iii:release-$VERSION-arm
|
||||||
AMD=jc5x/firefly-iii:release-$VERSION-amd
|
AMD=jc5x/firefly-iii:release-$VERSION-amd64
|
||||||
|
|
||||||
docker manifest create $TARGET $AMD $ARM
|
docker manifest create $TARGET $AMD $ARM
|
||||||
docker manifest annotate $TARGET $ARM --arch arm --os linux
|
docker manifest annotate $TARGET $ARM --arch arm --os linux
|
||||||
|
@ -1,3 +1,15 @@
|
|||||||
|
# 4.7.11
|
||||||
|
- Experimental audit logging channel to track important events (separate from debug logging).
|
||||||
|
- [Issue 2003](https://github.com/firefly-iii/firefly-iii/issues/2003), [issue 2006](https://github.com/firefly-iii/firefly-iii/issues/2006) Transactions can be stored with a timestamp. The user-interface does not support this yet. But the API does.
|
||||||
|
- Docker image tags a new manifest for arm and amd64.
|
||||||
|
- [skuzzle](https://github.com/skuzzle) removed an annoying console.log statement.
|
||||||
|
- [Issue 2048](https://github.com/firefly-iii/firefly-iii/issues/2048) Fix "Are you sure?" popup, thanks to @nescafe2002!
|
||||||
|
- [Issue 2049](https://github.com/firefly-iii/firefly-iii/issues/2049) Empty preferences would crash Firefly III.
|
||||||
|
- [Issue 2052](https://github.com/firefly-iii/firefly-iii/issues/2052) Rules could not auto-covert to liabilities.
|
||||||
|
- Webbased upgrade routine will also decrypt the database.
|
||||||
|
- Last use date for categories was off.
|
||||||
|
- The `date`-field in any transaction object now returns a ISO 8601 timestamp instead of a date.
|
||||||
|
|
||||||
# 4.7.10
|
# 4.7.10
|
||||||
- [Issue 2037](https://github.com/firefly-iii/firefly-iii/issues/2037) Added some new magic keywords to reports.
|
- [Issue 2037](https://github.com/firefly-iii/firefly-iii/issues/2037) Added some new magic keywords to reports.
|
||||||
- Added a new currency exchange rate service, [ratesapi.io](https://ratesapi.io/), that does not require expensive API keys. Built by [@BoGnY](https://github.com/BoGnY).
|
- Added a new currency exchange rate service, [ratesapi.io](https://ratesapi.io/), that does not require expensive API keys. Built by [@BoGnY](https://github.com/BoGnY).
|
||||||
|
@ -15,8 +15,8 @@ const pkgdef :Spk.PackageDefinition = (
|
|||||||
|
|
||||||
manifest = (
|
manifest = (
|
||||||
appTitle = (defaultText = "Firefly III"),
|
appTitle = (defaultText = "Firefly III"),
|
||||||
appVersion = 20,
|
appVersion = 21,
|
||||||
appMarketingVersion = (defaultText = "4.7.10"),
|
appMarketingVersion = (defaultText = "4.7.11"),
|
||||||
|
|
||||||
actions = [
|
actions = [
|
||||||
# Define your "new document" handlers here.
|
# Define your "new document" handlers here.
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
sudo: required
|
sudo: required
|
||||||
language: bash
|
language: bash
|
||||||
|
env:
|
||||||
|
- VERSION=4.7.11
|
||||||
|
|
||||||
|
dist: xenial
|
||||||
|
|
||||||
# safelist
|
# safelist
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
- develop
|
- develop
|
||||||
- master
|
- master
|
||||||
|
|
||||||
env:
|
|
||||||
- VERSION=4.7.10
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
@ -18,6 +20,7 @@ script:
|
|||||||
- sudo service docker restart
|
- sudo service docker restart
|
||||||
- docker version -f '{{.Server.Experimental}}'
|
- docker version -f '{{.Server.Experimental}}'
|
||||||
- docker version
|
- docker version
|
||||||
|
# build everything
|
||||||
- .deploy/docker/build-amd64.sh
|
- .deploy/docker/build-amd64.sh
|
||||||
- .deploy/docker/build-arm.sh
|
- .deploy/docker/build-arm.sh
|
||||||
- .deploy/docker/manifest.sh
|
- .deploy/docker/manifest.sh
|
51
Dockerfile.amd64
Normal file
51
Dockerfile.amd64
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
FROM php:7.2-apache
|
||||||
|
ARG ARCH
|
||||||
|
ENV FIREFLY_PATH=/var/www/firefly-iii COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
LABEL version="1.3" maintainer="thegrumpydictator@gmail.com"
|
||||||
|
|
||||||
|
# Create volumes
|
||||||
|
VOLUME $FIREFLY_PATH/storage/export $FIREFLY_PATH/storage/upload
|
||||||
|
|
||||||
|
# Install some stuff
|
||||||
|
RUN apt-get update && apt-get install -y libpng-dev \
|
||||||
|
libicu-dev \
|
||||||
|
unzip \
|
||||||
|
gettext-base \
|
||||||
|
libldap2-dev \
|
||||||
|
libpq-dev \
|
||||||
|
locales \
|
||||||
|
libmemcached-dev && \
|
||||||
|
apt-get clean && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Copy in Firefly III source
|
||||||
|
WORKDIR $FIREFLY_PATH
|
||||||
|
ADD . $FIREFLY_PATH
|
||||||
|
|
||||||
|
# copy ca certs to correct location
|
||||||
|
COPY ./.deploy/docker/cacert.pem /usr/local/ssl/cert.pem
|
||||||
|
|
||||||
|
# copy Apache config to correct spot.
|
||||||
|
COPY ./.deploy/docker/apache2.conf /etc/apache2/apache2.conf
|
||||||
|
|
||||||
|
# Enable default site (Firefly III)
|
||||||
|
COPY ./.deploy/docker/apache-firefly.conf /etc/apache2/sites-available/000-default.conf
|
||||||
|
|
||||||
|
# Run a lot of installation commands:
|
||||||
|
RUN chown -R www-data:www-data /var/www && \
|
||||||
|
chmod -R 775 $FIREFLY_PATH/storage && \
|
||||||
|
a2enmod rewrite && a2enmod ssl && \
|
||||||
|
docker-php-ext-configure ldap --with-libdir=lib/$(gcc -dumpmachine)/ && \
|
||||||
|
docker-php-ext-install -j$(nproc) zip bcmath ldap gd pdo_pgsql pdo_mysql intl opcache && \
|
||||||
|
pecl install memcached-3.1.3 && \
|
||||||
|
docker-php-ext-enable memcached && \
|
||||||
|
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
|
||||||
|
echo "de_DE.UTF-8 UTF-8\nen_US.UTF-8 UTF-8\nes_ES.UTF-8 UTF-8\nfr_FR.UTF-8 UTF-8\nid_ID.UTF-8 UTF-8\nit_IT.UTF-8 UTF-8\nnl_NL.UTF-8 UTF-8\npl_PL.UTF-8 UTF-8\npt_BR.UTF-8 UTF-8\nru_RU.UTF-8 UTF-8\ntr_TR.UTF-8 UTF-8\nzh_TW.UTF-8 UTF-8\nzh_CN.UTF-8 UTF-8\n\n" > /etc/locale.gen && \
|
||||||
|
locale-gen && \
|
||||||
|
composer install --prefer-dist --no-dev --no-scripts --no-suggest
|
||||||
|
|
||||||
|
# Expose port 80
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
# Run entrypoint thing
|
||||||
|
ENTRYPOINT [".deploy/docker/entrypoint.sh"]
|
@ -1,5 +1,5 @@
|
|||||||
FROM arm32v7/php:7.2.8-apache-stretch
|
FROM arm32v7/php:7.2.8-apache-stretch
|
||||||
ARG TARGETPLATFORM
|
ARG ARCH
|
||||||
COPY tmp/qemu-arm-static /usr/bin/qemu-arm-static
|
COPY tmp/qemu-arm-static /usr/bin/qemu-arm-static
|
||||||
ENV FIREFLY_PATH=/var/www/firefly-iii COMPOSER_ALLOW_SUPERUSER=1
|
ENV FIREFLY_PATH=/var/www/firefly-iii COMPOSER_ALLOW_SUPERUSER=1
|
||||||
LABEL version="1.3" maintainer="thegrumpydictator@gmail.com"
|
LABEL version="1.3" maintainer="thegrumpydictator@gmail.com"
|
50
Dockerfile.arm64
Normal file
50
Dockerfile.arm64
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
FROM arm32v7/php:7.2.8-apache-stretch
|
||||||
|
ARG ARCH
|
||||||
|
COPY tmp/qemu-arm-static /usr/bin/qemu-arm-static
|
||||||
|
ENV FIREFLY_PATH=/var/www/firefly-iii COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
LABEL version="1.3" maintainer="thegrumpydictator@gmail.com"
|
||||||
|
|
||||||
|
# Create volumes
|
||||||
|
VOLUME $FIREFLY_PATH/storage/export $FIREFLY_PATH/storage/upload
|
||||||
|
|
||||||
|
# Install some stuff
|
||||||
|
RUN apt-get update && apt-get install -y libpng-dev \
|
||||||
|
libicu-dev \
|
||||||
|
unzip \
|
||||||
|
gettext-base \
|
||||||
|
libldap2-dev \
|
||||||
|
libpq-dev \
|
||||||
|
locales \
|
||||||
|
libmemcached-dev
|
||||||
|
|
||||||
|
# Copy in Firefly III source
|
||||||
|
WORKDIR $FIREFLY_PATH
|
||||||
|
ADD . $FIREFLY_PATH
|
||||||
|
|
||||||
|
# copy ca certs to correct location
|
||||||
|
COPY ./.deploy/docker/cacert.pem /usr/local/ssl/cert.pem
|
||||||
|
|
||||||
|
# copy Apache config to correct spot.
|
||||||
|
COPY ./.deploy/docker/apache2.conf /etc/apache2/apache2.conf
|
||||||
|
|
||||||
|
# Enable default site (Firefly III)
|
||||||
|
COPY ./.deploy/docker/apache-firefly.conf /etc/apache2/sites-available/000-default.conf
|
||||||
|
|
||||||
|
# Run a lot of installation commands:
|
||||||
|
RUN chown -R www-data:www-data /var/www && \
|
||||||
|
chmod -R 775 $FIREFLY_PATH/storage && \
|
||||||
|
a2enmod rewrite && a2enmod ssl && \
|
||||||
|
docker-php-ext-configure ldap --with-libdir=lib/$(gcc -dumpmachine)/ && \
|
||||||
|
docker-php-ext-install -j$(nproc) zip bcmath ldap gd pdo_pgsql pdo_mysql intl opcache && \
|
||||||
|
pecl install memcached-3.1.3 && \
|
||||||
|
docker-php-ext-enable memcached && \
|
||||||
|
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
|
||||||
|
echo "de_DE.UTF-8 UTF-8\nen_US.UTF-8 UTF-8\nes_ES.UTF-8 UTF-8\nfr_FR.UTF-8 UTF-8\nid_ID.UTF-8 UTF-8\nit_IT.UTF-8 UTF-8\nnl_NL.UTF-8 UTF-8\npl_PL.UTF-8 UTF-8\npt_BR.UTF-8 UTF-8\nru_RU.UTF-8 UTF-8\ntr_TR.UTF-8 UTF-8\nzh_TW.UTF-8 UTF-8\nzh_CN.UTF-8 UTF-8\n\n" > /etc/locale.gen && \
|
||||||
|
locale-gen && \
|
||||||
|
composer install --prefer-dist --no-dev --no-scripts --no-suggest
|
||||||
|
|
||||||
|
# Expose port 80
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
# Run entrypoint thing
|
||||||
|
ENTRYPOINT [".deploy/docker/entrypoint.sh"]
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AccountController.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers\Chart;
|
namespace FireflyIII\Api\V1\Controllers\Chart;
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AvailableBudgetController.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers\Chart;
|
namespace FireflyIII\Api\V1\Controllers\Chart;
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CategoryController.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers\Chart;
|
namespace FireflyIII\Api\V1\Controllers\Chart;
|
||||||
|
@ -104,7 +104,7 @@ class Controller extends BaseController
|
|||||||
$obj = null;
|
$obj = null;
|
||||||
if (null !== $date) {
|
if (null !== $date) {
|
||||||
try {
|
try {
|
||||||
$obj = new Carbon($date);
|
$obj = Carbon::parse($date);
|
||||||
} catch (InvalidDateException $e) {
|
} catch (InvalidDateException $e) {
|
||||||
// don't care
|
// don't care
|
||||||
Log::error(sprintf('Invalid date exception in API controller: %s', $e->getMessage()));
|
Log::error(sprintf('Invalid date exception in API controller: %s', $e->getMessage()));
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SummaryController.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers;
|
namespace FireflyIII\Api\V1\Controllers;
|
||||||
|
@ -26,6 +26,7 @@ namespace FireflyIII\Api\V1\Requests;
|
|||||||
|
|
||||||
use FireflyIII\Rules\BelongsUser;
|
use FireflyIII\Rules\BelongsUser;
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
|
use FireflyIII\Rules\IsDateOrTime;
|
||||||
use FireflyIII\Validation\TransactionValidation;
|
use FireflyIII\Validation\TransactionValidation;
|
||||||
use Illuminate\Validation\Validator;
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
@ -59,7 +60,7 @@ class TransactionRequest extends Request
|
|||||||
{
|
{
|
||||||
$data = [
|
$data = [
|
||||||
'type' => $this->string('type'),
|
'type' => $this->string('type'),
|
||||||
'date' => $this->date('date'),
|
'date' => $this->dateTime('date'),
|
||||||
'description' => $this->string('description'),
|
'description' => $this->string('description'),
|
||||||
'piggy_bank_id' => $this->integer('piggy_bank_id'),
|
'piggy_bank_id' => $this->integer('piggy_bank_id'),
|
||||||
'piggy_bank_name' => $this->string('piggy_bank_name'),
|
'piggy_bank_name' => $this->string('piggy_bank_name'),
|
||||||
@ -103,7 +104,7 @@ class TransactionRequest extends Request
|
|||||||
// basic fields for journal:
|
// basic fields for journal:
|
||||||
'type' => 'required|in:withdrawal,deposit,transfer,opening-balance,reconciliation',
|
'type' => 'required|in:withdrawal,deposit,transfer,opening-balance,reconciliation',
|
||||||
'description' => 'between:1,255',
|
'description' => 'between:1,255',
|
||||||
'date' => 'required|date',
|
'date' => ['required', new IsDateOrTime],
|
||||||
'piggy_bank_id' => ['numeric', 'nullable', 'mustExist:piggy_banks,id', new BelongsUser],
|
'piggy_bank_id' => ['numeric', 'nullable', 'mustExist:piggy_banks,id', new BelongsUser],
|
||||||
'piggy_bank_name' => ['between:1,255', 'nullable', new BelongsUser],
|
'piggy_bank_name' => ['between:1,255', 'nullable', new BelongsUser],
|
||||||
'bill_id' => ['numeric', 'nullable', 'mustExist:bills,id', new BelongsUser],
|
'bill_id' => ['numeric', 'nullable', 'mustExist:bills,id', new BelongsUser],
|
||||||
|
@ -1,5 +1,27 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DecryptDatabase.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace FireflyIII\Console\Commands;
|
namespace FireflyIII\Console\Commands;
|
||||||
|
|
||||||
use Crypt;
|
use Crypt;
|
||||||
|
@ -24,6 +24,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Factory;
|
namespace FireflyIII\Factory;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Services\Internal\Support\JournalServiceTrait;
|
use FireflyIII\Services\Internal\Support\JournalServiceTrait;
|
||||||
@ -70,14 +71,18 @@ class TransactionJournalFactory
|
|||||||
Log::debug(sprintf('Going to store a %s', $type->type));
|
Log::debug(sprintf('Going to store a %s', $type->type));
|
||||||
$description = app('steam')->cleanString($data['description']);
|
$description = app('steam')->cleanString($data['description']);
|
||||||
$description = str_replace(["\n", "\t", "\r"], "\x20", $description);
|
$description = str_replace(["\n", "\t", "\r"], "\x20", $description);
|
||||||
$journal = TransactionJournal::create(
|
/** @var Carbon $carbon */
|
||||||
|
$carbon = $data['date'];
|
||||||
|
$carbon->setTimezone(config('app.timezone'));
|
||||||
|
|
||||||
|
$journal = TransactionJournal::create(
|
||||||
[
|
[
|
||||||
'user_id' => $data['user'],
|
'user_id' => $data['user'],
|
||||||
'transaction_type_id' => $type->id,
|
'transaction_type_id' => $type->id,
|
||||||
'bill_id' => null,
|
'bill_id' => null,
|
||||||
'transaction_currency_id' => $defaultCurrency->id,
|
'transaction_currency_id' => $defaultCurrency->id,
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'date' => $data['date']->format('Y-m-d'),
|
'date' => $carbon->format('Y-m-d H:i:s'),
|
||||||
'order' => 0,
|
'order' => 0,
|
||||||
'tag_count' => 0,
|
'tag_count' => 0,
|
||||||
'completed' => 0,
|
'completed' => 0,
|
||||||
@ -92,7 +97,7 @@ class TransactionJournalFactory
|
|||||||
/** @var TransactionFactory $factory */
|
/** @var TransactionFactory $factory */
|
||||||
$factory = app(TransactionFactory::class);
|
$factory = app(TransactionFactory::class);
|
||||||
$factory->setUser($this->user);
|
$factory->setUser($this->user);
|
||||||
$totalAmount= '0';
|
$totalAmount = '0';
|
||||||
Log::debug(sprintf('Found %d transactions in array.', \count($data['transactions'])));
|
Log::debug(sprintf('Found %d transactions in array.', \count($data['transactions'])));
|
||||||
/** @var array $trData */
|
/** @var array $trData */
|
||||||
foreach ($data['transactions'] as $index => $trData) {
|
foreach ($data['transactions'] as $index => $trData) {
|
||||||
|
@ -50,6 +50,8 @@ trait UpdateTrait
|
|||||||
$request->call();
|
$request->call();
|
||||||
} catch (FireflyException $e) {
|
} catch (FireflyException $e) {
|
||||||
Log::error(sprintf('Could not check for updates: %s', $e->getMessage()));
|
Log::error(sprintf('Could not check for updates: %s', $e->getMessage()));
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get releases from array.
|
// get releases from array.
|
||||||
@ -79,13 +81,16 @@ trait UpdateTrait
|
|||||||
public function parseResult(int $versionCheck, Release $release = null): string
|
public function parseResult(int $versionCheck, Release $release = null): string
|
||||||
{
|
{
|
||||||
Log::debug(sprintf('Now in parseResult(%d)', $versionCheck));
|
Log::debug(sprintf('Now in parseResult(%d)', $versionCheck));
|
||||||
$current = (string)config('firefly.version');
|
$current = (string)config('firefly.version');
|
||||||
$return = '';
|
$return = '';
|
||||||
|
$triggered = false;
|
||||||
if ($versionCheck === -2) {
|
if ($versionCheck === -2) {
|
||||||
Log::debug('-2, so give error.');
|
Log::debug('-2, so give error.');
|
||||||
$return = (string)trans('firefly.update_check_error');
|
$return = (string)trans('firefly.update_check_error');
|
||||||
|
$triggered = true;
|
||||||
}
|
}
|
||||||
if ($versionCheck === -1 && null !== $release) {
|
if ($versionCheck === -1 && null !== $release) {
|
||||||
|
$triggered = true;
|
||||||
Log::debug('New version!');
|
Log::debug('New version!');
|
||||||
// there is a new FF version!
|
// there is a new FF version!
|
||||||
// has it been released for at least three days?
|
// has it been released for at least three days?
|
||||||
@ -106,16 +111,23 @@ trait UpdateTrait
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (0 === $versionCheck) {
|
if (0 === $versionCheck) {
|
||||||
|
$triggered = true;
|
||||||
Log::debug('User is running current version.');
|
Log::debug('User is running current version.');
|
||||||
// you are running the current version!
|
// you are running the current version!
|
||||||
$return = (string)trans('firefly.update_current_version_alert', ['version' => $current]);
|
$return = (string)trans('firefly.update_current_version_alert', ['version' => $current]);
|
||||||
}
|
}
|
||||||
if (1 === $versionCheck && null !== $release) {
|
if (1 === $versionCheck && null !== $release) {
|
||||||
|
$triggered = true;
|
||||||
Log::debug('User is running NEWER version.');
|
Log::debug('User is running NEWER version.');
|
||||||
// you are running a newer version!
|
// you are running a newer version!
|
||||||
$return = (string)trans('firefly.update_newer_version_alert', ['your_version' => $current, 'new_version' => $release->getTitle()]);
|
$return = (string)trans('firefly.update_newer_version_alert', ['your_version' => $current, 'new_version' => $release->getTitle()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (false === $triggered) {
|
||||||
|
Log::debug('No option was triggered.');
|
||||||
|
$return = (string)trans('firefly.update_check_error');
|
||||||
|
}
|
||||||
|
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,6 +143,7 @@ trait UpdateTrait
|
|||||||
Log::debug('Now in versionCheck()');
|
Log::debug('Now in versionCheck()');
|
||||||
if (null === $release) {
|
if (null === $release) {
|
||||||
Log::debug('Release is null, return -2.');
|
Log::debug('Release is null, return -2.');
|
||||||
|
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
$current = (string)config('firefly.version');
|
$current = (string)config('firefly.version');
|
||||||
|
@ -111,7 +111,7 @@ class CreateController extends Controller
|
|||||||
$this->rememberPreviousUri('accounts.create.uri');
|
$this->rememberPreviousUri('accounts.create.uri');
|
||||||
}
|
}
|
||||||
$request->session()->forget('accounts.create.fromStore');
|
$request->session()->forget('accounts.create.fromStore');
|
||||||
|
Log::channel('audit')->info('Create new account.');
|
||||||
return view('accounts.create', compact('subTitleIcon', 'what', 'interestPeriods', 'subTitle', 'roles', 'liabilityTypes'));
|
return view('accounts.create', compact('subTitleIcon', 'what', 'interestPeriods', 'subTitle', 'roles', 'liabilityTypes'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ class CreateController extends Controller
|
|||||||
$request->session()->flash('success', (string)trans('firefly.stored_new_account', ['name' => $account->name]));
|
$request->session()->flash('success', (string)trans('firefly.stored_new_account', ['name' => $account->name]));
|
||||||
app('preferences')->mark();
|
app('preferences')->mark();
|
||||||
|
|
||||||
|
Log::channel('audit')->info('Store new account.', $data);
|
||||||
|
|
||||||
// update preferences if necessary:
|
// update preferences if necessary:
|
||||||
$frontPage = app('preferences')->get('frontPageAccounts', [])->data;
|
$frontPage = app('preferences')->get('frontPageAccounts', [])->data;
|
||||||
|
@ -29,6 +29,7 @@ use FireflyIII\Http\Middleware\IsSandStormUser;
|
|||||||
use FireflyIII\Http\Requests\ConfigurationRequest;
|
use FireflyIII\Http\Requests\ConfigurationRequest;
|
||||||
use FireflyIII\Support\Facades\FireflyConfig;
|
use FireflyIII\Support\Facades\FireflyConfig;
|
||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ConfigurationController.
|
* Class ConfigurationController.
|
||||||
@ -64,6 +65,8 @@ class ConfigurationController extends Controller
|
|||||||
$subTitle = (string)trans('firefly.instance_configuration');
|
$subTitle = (string)trans('firefly.instance_configuration');
|
||||||
$subTitleIcon = 'fa-wrench';
|
$subTitleIcon = 'fa-wrench';
|
||||||
|
|
||||||
|
Log::channel('audit')->info('User visits admin config index.');
|
||||||
|
|
||||||
// all available configuration and their default value in case
|
// all available configuration and their default value in case
|
||||||
// they don't exist yet.
|
// they don't exist yet.
|
||||||
$singleUserMode = FireflyConfig::get('single_user_mode', config('firefly.configuration.single_user_mode'))->data;
|
$singleUserMode = FireflyConfig::get('single_user_mode', config('firefly.configuration.single_user_mode'))->data;
|
||||||
@ -88,6 +91,8 @@ class ConfigurationController extends Controller
|
|||||||
// get config values:
|
// get config values:
|
||||||
$data = $request->getConfigurationData();
|
$data = $request->getConfigurationData();
|
||||||
|
|
||||||
|
Log::channel('audit')->info('User updates global configuration.', $data);
|
||||||
|
|
||||||
// store config values
|
// store config values
|
||||||
FireflyConfig::set('single_user_mode', $data['single_user_mode']);
|
FireflyConfig::set('single_user_mode', $data['single_user_mode']);
|
||||||
FireflyConfig::set('is_demo_site', $data['is_demo_site']);
|
FireflyConfig::set('is_demo_site', $data['is_demo_site']);
|
||||||
|
@ -52,6 +52,7 @@ class HomeController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
|
Log::channel('audit')->info('User visits admin index.');
|
||||||
$title = (string)trans('firefly.administration');
|
$title = (string)trans('firefly.administration');
|
||||||
$mainTitleIcon = 'fa-hand-spock-o';
|
$mainTitleIcon = 'fa-hand-spock-o';
|
||||||
$sandstorm = 1 === (int)getenv('SANDSTORM');
|
$sandstorm = 1 === (int)getenv('SANDSTORM');
|
||||||
@ -68,6 +69,7 @@ class HomeController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function testMessage(Request $request)
|
public function testMessage(Request $request)
|
||||||
{
|
{
|
||||||
|
Log::channel('audit')->info('User sends test message.');
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
$ipAddress = $request->ip();
|
$ipAddress = $request->ip();
|
||||||
|
@ -28,6 +28,7 @@ use FireflyIII\Http\Requests\LinkTypeFormRequest;
|
|||||||
use FireflyIII\Models\LinkType;
|
use FireflyIII\Models\LinkType;
|
||||||
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Log;
|
||||||
use View;
|
use View;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -63,6 +64,8 @@ class LinkController extends Controller
|
|||||||
$subTitle = (string)trans('firefly.create_new_link_type');
|
$subTitle = (string)trans('firefly.create_new_link_type');
|
||||||
$subTitleIcon = 'fa-link';
|
$subTitleIcon = 'fa-link';
|
||||||
|
|
||||||
|
Log::channel('audit')->info('User visits link index.');
|
||||||
|
|
||||||
// put previous url in session if not redirect from store (not "create another").
|
// put previous url in session if not redirect from store (not "create another").
|
||||||
if (true !== session('link-types.create.fromStore')) {
|
if (true !== session('link-types.create.fromStore')) {
|
||||||
$this->rememberPreviousUri('link-types.create.uri');
|
$this->rememberPreviousUri('link-types.create.uri');
|
||||||
@ -88,6 +91,8 @@ class LinkController extends Controller
|
|||||||
return redirect(route('admin.links.index'));
|
return redirect(route('admin.links.index'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Log::channel('audit')->info(sprintf('User wants to delete link type #%d', $linkType->id));
|
||||||
|
|
||||||
$subTitle = (string)trans('firefly.delete_link_type', ['name' => $linkType->name]);
|
$subTitle = (string)trans('firefly.delete_link_type', ['name' => $linkType->name]);
|
||||||
$otherTypes = $repository->get();
|
$otherTypes = $repository->get();
|
||||||
$count = $repository->countJournals($linkType);
|
$count = $repository->countJournals($linkType);
|
||||||
@ -116,6 +121,7 @@ class LinkController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function destroy(Request $request, LinkTypeRepositoryInterface $repository, LinkType $linkType)
|
public function destroy(Request $request, LinkTypeRepositoryInterface $repository, LinkType $linkType)
|
||||||
{
|
{
|
||||||
|
Log::channel('audit')->info(sprintf('User destroyed link type #%d', $linkType->id));
|
||||||
$name = $linkType->name;
|
$name = $linkType->name;
|
||||||
$moveTo = $repository->findNull((int)$request->get('move_link_type_before_delete'));
|
$moveTo = $repository->findNull((int)$request->get('move_link_type_before_delete'));
|
||||||
$repository->destroy($linkType, $moveTo);
|
$repository->destroy($linkType, $moveTo);
|
||||||
@ -144,6 +150,8 @@ class LinkController extends Controller
|
|||||||
$subTitle = (string)trans('firefly.edit_link_type', ['name' => $linkType->name]);
|
$subTitle = (string)trans('firefly.edit_link_type', ['name' => $linkType->name]);
|
||||||
$subTitleIcon = 'fa-link';
|
$subTitleIcon = 'fa-link';
|
||||||
|
|
||||||
|
Log::channel('audit')->info(sprintf('User wants to edit link type #%d', $linkType->id));
|
||||||
|
|
||||||
// put previous url in session if not redirect from store (not "return_to_edit").
|
// put previous url in session if not redirect from store (not "return_to_edit").
|
||||||
if (true !== session('link-types.edit.fromUpdate')) {
|
if (true !== session('link-types.edit.fromUpdate')) {
|
||||||
$this->rememberPreviousUri('link-types.edit.uri'); // @codeCoverageIgnore
|
$this->rememberPreviousUri('link-types.edit.uri'); // @codeCoverageIgnore
|
||||||
@ -165,6 +173,8 @@ class LinkController extends Controller
|
|||||||
$subTitle = (string)trans('firefly.journal_link_configuration');
|
$subTitle = (string)trans('firefly.journal_link_configuration');
|
||||||
$subTitleIcon = 'fa-link';
|
$subTitleIcon = 'fa-link';
|
||||||
$linkTypes = $repository->get();
|
$linkTypes = $repository->get();
|
||||||
|
|
||||||
|
Log::channel('audit')->info('User on index of link types in admin.');
|
||||||
$linkTypes->each(
|
$linkTypes->each(
|
||||||
function (LinkType $linkType) use ($repository) {
|
function (LinkType $linkType) use ($repository) {
|
||||||
$linkType->journalCount = $repository->countJournals($linkType);
|
$linkType->journalCount = $repository->countJournals($linkType);
|
||||||
@ -187,6 +197,8 @@ class LinkController extends Controller
|
|||||||
$subTitleIcon = 'fa-link';
|
$subTitleIcon = 'fa-link';
|
||||||
$links = $linkType->transactionJournalLinks()->get();
|
$links = $linkType->transactionJournalLinks()->get();
|
||||||
|
|
||||||
|
Log::channel('audit')->info(sprintf('User viewing link type #%d', $linkType->id));
|
||||||
|
|
||||||
return view('admin.link.show', compact('subTitle', 'subTitleIcon', 'linkType', 'links'));
|
return view('admin.link.show', compact('subTitle', 'subTitleIcon', 'linkType', 'links'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,6 +218,9 @@ class LinkController extends Controller
|
|||||||
'outward' => $request->string('outward'),
|
'outward' => $request->string('outward'),
|
||||||
];
|
];
|
||||||
$linkType = $repository->store($data);
|
$linkType = $repository->store($data);
|
||||||
|
|
||||||
|
Log::channel('audit')->info('User stored new link type.', $linkType->toArray());
|
||||||
|
|
||||||
$request->session()->flash('success', (string)trans('firefly.stored_new_link_type', ['name' => $linkType->name]));
|
$request->session()->flash('success', (string)trans('firefly.stored_new_link_type', ['name' => $linkType->name]));
|
||||||
$redirect = redirect($this->getPreviousUri('link-types.create.uri'));
|
$redirect = redirect($this->getPreviousUri('link-types.create.uri'));
|
||||||
if (1 === (int)$request->get('create_another')) {
|
if (1 === (int)$request->get('create_another')) {
|
||||||
@ -243,6 +258,8 @@ class LinkController extends Controller
|
|||||||
];
|
];
|
||||||
$repository->update($linkType, $data);
|
$repository->update($linkType, $data);
|
||||||
|
|
||||||
|
Log::channel('audit')->info(sprintf('User update link type #%d.', $linkType->id), $data);
|
||||||
|
|
||||||
$request->session()->flash('success', (string)trans('firefly.updated_link_type', ['name' => $linkType->name]));
|
$request->session()->flash('success', (string)trans('firefly.updated_link_type', ['name' => $linkType->name]));
|
||||||
app('preferences')->mark();
|
app('preferences')->mark();
|
||||||
$redirect = redirect($this->getPreviousUri('link-types.edit.uri'));
|
$redirect = redirect($this->getPreviousUri('link-types.edit.uri'));
|
||||||
|
@ -91,6 +91,8 @@ class CurrencyController extends Controller
|
|||||||
}
|
}
|
||||||
$request->session()->forget('currencies.create.fromStore');
|
$request->session()->forget('currencies.create.fromStore');
|
||||||
|
|
||||||
|
Log::channel('audit')->info('Create new currency.');
|
||||||
|
|
||||||
return view('currencies.create', compact('subTitleIcon', 'subTitle'));
|
return view('currencies.create', compact('subTitleIcon', 'subTitle'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,6 +109,8 @@ class CurrencyController extends Controller
|
|||||||
app('preferences')->set('currencyPreference', $currency->code);
|
app('preferences')->set('currencyPreference', $currency->code);
|
||||||
app('preferences')->mark();
|
app('preferences')->mark();
|
||||||
|
|
||||||
|
Log::channel('audit')->info(sprintf('Make %s the default currency.', $currency->code));
|
||||||
|
|
||||||
$this->repository->enable($currency);
|
$this->repository->enable($currency);
|
||||||
$request->session()->flash('success', (string)trans('firefly.new_default_currency', ['name' => $currency->name]));
|
$request->session()->flash('success', (string)trans('firefly.new_default_currency', ['name' => $currency->name]));
|
||||||
|
|
||||||
@ -128,6 +132,7 @@ class CurrencyController extends Controller
|
|||||||
if (!$this->userRepository->hasRole($user, 'owner')) {
|
if (!$this->userRepository->hasRole($user, 'owner')) {
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
||||||
|
Log::channel('audit')->info(sprintf('Tried to visit page to delete currency %s but is not site owner.', $currency->code));
|
||||||
|
|
||||||
return redirect(route('currencies.index'));
|
return redirect(route('currencies.index'));
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
@ -135,6 +140,7 @@ class CurrencyController extends Controller
|
|||||||
|
|
||||||
if ($this->repository->currencyInUse($currency)) {
|
if ($this->repository->currencyInUse($currency)) {
|
||||||
$request->session()->flash('error', (string)trans('firefly.cannot_delete_currency', ['name' => $currency->name]));
|
$request->session()->flash('error', (string)trans('firefly.cannot_delete_currency', ['name' => $currency->name]));
|
||||||
|
Log::channel('audit')->info(sprintf('Tried to visit page to delete currency %s but currency is in use.', $currency->code));
|
||||||
|
|
||||||
return redirect(route('currencies.index'));
|
return redirect(route('currencies.index'));
|
||||||
}
|
}
|
||||||
@ -142,6 +148,7 @@ class CurrencyController extends Controller
|
|||||||
// put previous url in session
|
// put previous url in session
|
||||||
$this->rememberPreviousUri('currencies.delete.uri');
|
$this->rememberPreviousUri('currencies.delete.uri');
|
||||||
$subTitle = (string)trans('form.delete_currency', ['name' => $currency->name]);
|
$subTitle = (string)trans('form.delete_currency', ['name' => $currency->name]);
|
||||||
|
Log::channel('audit')->info(sprintf('Visit page to delete currency %s.', $currency->code));
|
||||||
|
|
||||||
return view('currencies.delete', compact('currency', 'subTitle'));
|
return view('currencies.delete', compact('currency', 'subTitle'));
|
||||||
}
|
}
|
||||||
@ -161,6 +168,7 @@ class CurrencyController extends Controller
|
|||||||
if (!$this->userRepository->hasRole($user, 'owner')) {
|
if (!$this->userRepository->hasRole($user, 'owner')) {
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
||||||
|
Log::channel('audit')->info(sprintf('Tried to delete currency %s but is not site owner.', $currency->code));
|
||||||
|
|
||||||
return redirect(route('currencies.index'));
|
return redirect(route('currencies.index'));
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
@ -168,11 +176,13 @@ class CurrencyController extends Controller
|
|||||||
|
|
||||||
if ($this->repository->currencyInUse($currency)) {
|
if ($this->repository->currencyInUse($currency)) {
|
||||||
$request->session()->flash('error', (string)trans('firefly.cannot_delete_currency', ['name' => $currency->name]));
|
$request->session()->flash('error', (string)trans('firefly.cannot_delete_currency', ['name' => $currency->name]));
|
||||||
|
Log::channel('audit')->info(sprintf('Tried to delete currency %s but is in use.', $currency->code));
|
||||||
|
|
||||||
return redirect(route('currencies.index'));
|
return redirect(route('currencies.index'));
|
||||||
}
|
}
|
||||||
|
Log::channel('audit')->info(sprintf('Deleted currency %s.', $currency->code));
|
||||||
$this->repository->destroy($currency);
|
$this->repository->destroy($currency);
|
||||||
|
|
||||||
$request->session()->flash('success', (string)trans('firefly.deleted_currency', ['name' => $currency->name]));
|
$request->session()->flash('success', (string)trans('firefly.deleted_currency', ['name' => $currency->name]));
|
||||||
|
|
||||||
return redirect($this->getPreviousUri('currencies.delete.uri'));
|
return redirect($this->getPreviousUri('currencies.delete.uri'));
|
||||||
@ -193,6 +203,7 @@ class CurrencyController extends Controller
|
|||||||
if (!$this->userRepository->hasRole($user, 'owner')) {
|
if (!$this->userRepository->hasRole($user, 'owner')) {
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
||||||
|
Log::channel('audit')->info(sprintf('Tried to disable currency %s but is not site owner.', $currency->code));
|
||||||
|
|
||||||
return redirect(route('currencies.index'));
|
return redirect(route('currencies.index'));
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
@ -200,20 +211,23 @@ class CurrencyController extends Controller
|
|||||||
|
|
||||||
if ($this->repository->currencyInUse($currency)) {
|
if ($this->repository->currencyInUse($currency)) {
|
||||||
$request->session()->flash('error', (string)trans('firefly.cannot_disable_currency', ['name' => $currency->name]));
|
$request->session()->flash('error', (string)trans('firefly.cannot_disable_currency', ['name' => $currency->name]));
|
||||||
|
Log::channel('audit')->info(sprintf('Tried to disable currency %s but is in use.', $currency->code));
|
||||||
|
|
||||||
return redirect(route('currencies.index'));
|
return redirect(route('currencies.index'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->repository->disable($currency);
|
$this->repository->disable($currency);
|
||||||
|
Log::channel('audit')->info(sprintf('Disabled currency %s.', $currency->code));
|
||||||
// if no currencies are enabled, enable the first one in the DB (usually the EUR)
|
// if no currencies are enabled, enable the first one in the DB (usually the EUR)
|
||||||
if (0 === $this->repository->get()->count()) {
|
if (0 === $this->repository->get()->count()) {
|
||||||
|
/** @var TransactionCurrency $first */
|
||||||
$first = $this->repository->getAll()->first();
|
$first = $this->repository->getAll()->first();
|
||||||
if (null === $first) {
|
if (null === $first) {
|
||||||
throw new FireflyException('No currencies found.');
|
throw new FireflyException('No currencies found.');
|
||||||
}
|
}
|
||||||
|
Log::channel('audit')->info(sprintf('Auto-enabled currency %s.', $first->code));
|
||||||
$this->repository->enable($first);
|
$this->repository->enable($first);
|
||||||
app('preferences')->set('currencyPreference', $currency->code);
|
app('preferences')->set('currencyPreference', $first->code);
|
||||||
app('preferences')->mark();
|
app('preferences')->mark();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,6 +251,7 @@ class CurrencyController extends Controller
|
|||||||
if (!$this->userRepository->hasRole($user, 'owner')) {
|
if (!$this->userRepository->hasRole($user, 'owner')) {
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
||||||
|
Log::channel('audit')->info(sprintf('Tried to edit currency %s but is not owner.', $currency->code));
|
||||||
|
|
||||||
return redirect(route('currencies.index'));
|
return redirect(route('currencies.index'));
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
@ -253,7 +268,7 @@ class CurrencyController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
$request->session()->flash('preFilled', $preFilled);
|
$request->session()->flash('preFilled', $preFilled);
|
||||||
|
Log::channel('audit')->info('Edit currency.', $currency->toArray());
|
||||||
|
|
||||||
// put previous url in session if not redirect from store (not "return_to_edit").
|
// put previous url in session if not redirect from store (not "return_to_edit").
|
||||||
if (true !== session('currencies.edit.fromUpdate')) {
|
if (true !== session('currencies.edit.fromUpdate')) {
|
||||||
@ -275,6 +290,7 @@ class CurrencyController extends Controller
|
|||||||
|
|
||||||
$this->repository->enable($currency);
|
$this->repository->enable($currency);
|
||||||
session()->flash('success', (string)trans('firefly.currency_is_now_enabled', ['name' => $currency->name]));
|
session()->flash('success', (string)trans('firefly.currency_is_now_enabled', ['name' => $currency->name]));
|
||||||
|
Log::channel('audit')->info(sprintf('Enabled currency %s.', $currency->code));
|
||||||
|
|
||||||
return redirect(route('currencies.index'));
|
return redirect(route('currencies.index'));
|
||||||
}
|
}
|
||||||
@ -329,21 +345,23 @@ class CurrencyController extends Controller
|
|||||||
{
|
{
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
|
$data = $request->getCurrencyData();
|
||||||
if (!$this->userRepository->hasRole($user, 'owner')) {
|
if (!$this->userRepository->hasRole($user, 'owner')) {
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
Log::error('User ' . auth()->user()->id . ' is not admin, but tried to store a currency.');
|
Log::error('User ' . auth()->user()->id . ' is not admin, but tried to store a currency.');
|
||||||
|
Log::channel('audit')->info('Tried to create (POST) currency without admin rights.', $data);
|
||||||
|
|
||||||
return redirect($this->getPreviousUri('currencies.create.uri'));
|
return redirect($this->getPreviousUri('currencies.create.uri'));
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $request->getCurrencyData();
|
|
||||||
$data['enabled'] = true;
|
$data['enabled'] = true;
|
||||||
$currency = $this->repository->store($data);
|
$currency = $this->repository->store($data);
|
||||||
$redirect = redirect($this->getPreviousUri('currencies.create.uri'));
|
$redirect = redirect($this->getPreviousUri('currencies.create.uri'));
|
||||||
|
|
||||||
if (null !== $currency) {
|
if (null !== $currency) {
|
||||||
$request->session()->flash('success', (string)trans('firefly.created_currency', ['name' => $currency->name]));
|
$request->session()->flash('success', (string)trans('firefly.created_currency', ['name' => $currency->name]));
|
||||||
|
Log::channel('audit')->info('Created (POST) currency.', $data);
|
||||||
if (1 === (int)$request->get('create_another')) {
|
if (1 === (int)$request->get('create_another')) {
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
$request->session()->put('currencies.create.fromStore', true);
|
$request->session()->put('currencies.create.fromStore', true);
|
||||||
@ -353,6 +371,7 @@ class CurrencyController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (null === $currency) {
|
if (null === $currency) {
|
||||||
|
Log::channel('audit')->info('Could not store (POST) currency without admin rights.', $data);
|
||||||
$request->session()->flash('error', (string)trans('firefly.could_not_store_currency'));
|
$request->session()->flash('error', (string)trans('firefly.could_not_store_currency'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,16 +391,19 @@ class CurrencyController extends Controller
|
|||||||
{
|
{
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
|
$data = $request->getCurrencyData();
|
||||||
if (!$this->userRepository->hasRole($user, 'owner')) {
|
if (!$this->userRepository->hasRole($user, 'owner')) {
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
$request->session()->flash('error', (string)trans('firefly.ask_site_owner', ['owner' => config('firefly.site_owner')]));
|
||||||
|
Log::channel('audit')->info('Tried to update (POST) currency without admin rights.', $data);
|
||||||
|
|
||||||
return redirect(route('currencies.index'));
|
return redirect(route('currencies.index'));
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $request->getCurrencyData();
|
|
||||||
$currency = $this->repository->update($currency, $data);
|
$currency = $this->repository->update($currency, $data);
|
||||||
|
Log::channel('audit')->info('Updated (POST) currency.', $data);
|
||||||
$request->session()->flash('success', (string)trans('firefly.updated_currency', ['name' => $currency->name]));
|
$request->session()->flash('success', (string)trans('firefly.updated_currency', ['name' => $currency->name]));
|
||||||
app('preferences')->mark();
|
app('preferences')->mark();
|
||||||
|
|
||||||
|
@ -67,6 +67,7 @@ class HomeController extends Controller
|
|||||||
|
|
||||||
Log::debug('Received dateRange', ['start' => $request->get('start'), 'end' => $request->get('end'), 'label' => $request->get('label')]);
|
Log::debug('Received dateRange', ['start' => $request->get('start'), 'end' => $request->get('end'), 'label' => $request->get('label')]);
|
||||||
|
|
||||||
|
|
||||||
// check if the label is "everything" or "Custom range" which will betray
|
// check if the label is "everything" or "Custom range" which will betray
|
||||||
// a possible problem with the budgets.
|
// a possible problem with the budgets.
|
||||||
if ($label === (string)trans('firefly.everything') || $label === (string)trans('firefly.customRange')) {
|
if ($label === (string)trans('firefly.everything') || $label === (string)trans('firefly.customRange')) {
|
||||||
@ -103,6 +104,8 @@ class HomeController extends Controller
|
|||||||
$types = config('firefly.accountTypesByIdentifier.asset');
|
$types = config('firefly.accountTypesByIdentifier.asset');
|
||||||
$count = $repository->count($types);
|
$count = $repository->count($types);
|
||||||
|
|
||||||
|
Log::channel('audit')->info('User visits homepage.');
|
||||||
|
|
||||||
if (0 === $count) {
|
if (0 === $count) {
|
||||||
return redirect(route('new-user.index'));
|
return redirect(route('new-user.index'));
|
||||||
}
|
}
|
||||||
|
@ -153,6 +153,34 @@ class InstallController extends Controller
|
|||||||
return response()->json(['error' => false, 'message' => 'OK']);
|
return response()->json(['error' => false, 'message' => 'OK']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do database decrypt.
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Http\JsonResponse
|
||||||
|
*/
|
||||||
|
public function decrypt(): JsonResponse
|
||||||
|
{
|
||||||
|
if ($this->hasForbiddenFunctions()) {
|
||||||
|
return response()->json(['error' => true, 'message' => self::FORBIDDEN_ERROR]);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Log::debug('Am now calling decrypt database routine...');
|
||||||
|
Artisan::call('firefly:decrypt-all');
|
||||||
|
Log::debug(Artisan::output());
|
||||||
|
} catch (Exception $e) {
|
||||||
|
Log::error($e->getMessage());
|
||||||
|
Log::error($e->getTraceAsString());
|
||||||
|
if (strpos($e->getMessage(), 'open_basedir restriction in effect')) {
|
||||||
|
return response()->json(['error' => true, 'message' => self::BASEDIR_ERROR]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json(['error' => true, 'message' => self::OTHER_ERROR . ' ' . $e->getMessage()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json(['error' => false, 'message' => 'OK']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do database verification.
|
* Do database verification.
|
||||||
*
|
*
|
||||||
|
@ -23,7 +23,9 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Http\Requests;
|
namespace FireflyIII\Http\Requests;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Carbon\Exceptions\InvalidDateException;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Request.
|
* Class Request.
|
||||||
@ -130,4 +132,42 @@ class Request extends FormRequest
|
|||||||
{
|
{
|
||||||
return $this->get($field) ? new Carbon($this->get($field)) : null;
|
return $this->get($field) ? new Carbon($this->get($field)) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return date time or NULL.
|
||||||
|
*
|
||||||
|
* @param string $field
|
||||||
|
*
|
||||||
|
* @return Carbon|null
|
||||||
|
*/
|
||||||
|
protected function dateTime(string $field): ?Carbon
|
||||||
|
{
|
||||||
|
if (null === $this->get($field)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$value = (string)$this->get($field);
|
||||||
|
if (10 === \strlen($value)) {
|
||||||
|
// probably a date format.
|
||||||
|
try {
|
||||||
|
$result = Carbon::createFromFormat('Y-m-d', $value);
|
||||||
|
} catch (InvalidDateException $e) {
|
||||||
|
Log::error(sprintf('"%s" is not a valid date: %s', $value, $e->getMessage()));
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
// is an atom string, I hope?
|
||||||
|
try {
|
||||||
|
$result = Carbon::parse($value);
|
||||||
|
} catch (InvalidDateException $e) {
|
||||||
|
Log::error(sprintf('"%s" is not a valid date or time: %s', $value, $e->getMessage()));
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ class RabobankDescription implements SpecificInterface
|
|||||||
*/
|
*/
|
||||||
public static function getDescription(): string
|
public static function getDescription(): string
|
||||||
{
|
{
|
||||||
return 'import.specific_pres_descr';
|
return 'import.specific_rabo_descr';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -457,7 +457,7 @@ class ImportArrayStorage
|
|||||||
|
|
||||||
Log::debug(sprintf('Going to store entry %d of %d', $index + 1, $count));
|
Log::debug(sprintf('Going to store entry %d of %d', $index + 1, $count));
|
||||||
// convert the date to an object:
|
// convert the date to an object:
|
||||||
$store['date'] = Carbon::createFromFormat('Y-m-d', $store['date']);
|
$store['date'] = Carbon::parse($store['date'], config('app.timezone'));
|
||||||
$store['description'] = '' === $store['description'] ? '(empty description)' : $store['description'];
|
$store['description'] = '' === $store['description'] ? '(empty description)' : $store['description'];
|
||||||
// store the journal.
|
// store the journal.
|
||||||
try {
|
try {
|
||||||
@ -556,7 +556,7 @@ class ImportArrayStorage
|
|||||||
Log::debug(sprintf('Comparison is a hit! (%s)', $hits));
|
Log::debug(sprintf('Comparison is a hit! (%s)', $hits));
|
||||||
|
|
||||||
// compare date:
|
// compare date:
|
||||||
$transferDate = $transfer->date->format('Y-m-d');
|
$transferDate = $transfer->date->format('Y-m-d H:i:s');
|
||||||
Log::debug(sprintf('Comparing dates "%s" to "%s"', $transaction['date'], $transferDate));
|
Log::debug(sprintf('Comparing dates "%s" to "%s"', $transaction['date'], $transferDate));
|
||||||
if ($transaction['date'] !== $transferDate) {
|
if ($transaction['date'] !== $transferDate) {
|
||||||
continue; // @codeCoverageIgnore
|
continue; // @codeCoverageIgnore
|
||||||
|
@ -84,7 +84,7 @@ class TransactionJournal extends Model
|
|||||||
'created_at' => 'datetime',
|
'created_at' => 'datetime',
|
||||||
'updated_at' => 'datetime',
|
'updated_at' => 'datetime',
|
||||||
'deleted_at' => 'datetime',
|
'deleted_at' => 'datetime',
|
||||||
'date' => 'date',
|
'date' => 'datetime',
|
||||||
'interest_date' => 'date',
|
'interest_date' => 'date',
|
||||||
'book_date' => 'date',
|
'book_date' => 'date',
|
||||||
'process_date' => 'date',
|
'process_date' => 'date',
|
||||||
|
@ -292,7 +292,7 @@ class CategoryRepository implements CategoryRepositoryInterface
|
|||||||
return $lastTransactionDate;
|
return $lastTransactionDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($lastTransactionDate < $lastJournalDate) {
|
if ($lastTransactionDate > $lastJournalDate) {
|
||||||
return $lastTransactionDate;
|
return $lastTransactionDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
82
app/Rules/IsDateOrTime.php
Normal file
82
app/Rules/IsDateOrTime.php
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IsDateOrTime.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Rules;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Carbon\Exceptions\InvalidDateException;
|
||||||
|
use Illuminate\Contracts\Validation\Rule;
|
||||||
|
use Log;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class IsDateOrTime
|
||||||
|
*/
|
||||||
|
class IsDateOrTime implements Rule
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation error message.
|
||||||
|
*
|
||||||
|
* @return string|array
|
||||||
|
*/
|
||||||
|
public function message()
|
||||||
|
{
|
||||||
|
return (string)trans('validation.date_or_time');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the validation rule passes.
|
||||||
|
*
|
||||||
|
* @param string $attribute
|
||||||
|
* @param mixed $value
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function passes($attribute, $value): bool
|
||||||
|
{
|
||||||
|
$value = (string)$value;
|
||||||
|
if (10 === \strlen($value)) {
|
||||||
|
// probably a date format.
|
||||||
|
try {
|
||||||
|
Carbon::createFromFormat('Y-m-d', $value);
|
||||||
|
} catch (InvalidDateException $e) {
|
||||||
|
Log::error(sprintf('"%s" is not a valid date: %s', $value, $e->getMessage()));
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// is an atom string, I hope?
|
||||||
|
try {
|
||||||
|
Carbon::parse($value);
|
||||||
|
} catch (InvalidDateException $e) {
|
||||||
|
Log::error(sprintf('"%s" is not a valid date or time: %s', $value, $e->getMessage()));
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -62,7 +62,7 @@ class UpdateRequest implements GithubRequest
|
|||||||
$releaseXml = new SimpleXMLElement($res->getBody()->getContents(), LIBXML_NOCDATA);
|
$releaseXml = new SimpleXMLElement($res->getBody()->getContents(), LIBXML_NOCDATA);
|
||||||
} catch (RuntimeException $e) {
|
} catch (RuntimeException $e) {
|
||||||
Log::error(sprintf('Could not get body from github updat result: %s', $e->getMessage()));
|
Log::error(sprintf('Could not get body from github updat result: %s', $e->getMessage()));
|
||||||
$releaseXml = new SimpleXMLElement('');
|
throw new FireflyException(sprintf('Could not get body from github updat result: %s', $e->getMessage()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//fetch the products for each category
|
//fetch the products for each category
|
||||||
|
@ -151,7 +151,7 @@ class ChooseAccountsHandler implements SpectreJobConfigurationInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
// list the users accounts:
|
// list the users accounts:
|
||||||
$accounts = $this->accountRepository->getAccountsByType([AccountType::ASSET]);
|
$accounts = $this->accountRepository->getAccountsByType([AccountType::ASSET, AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE]);
|
||||||
|
|
||||||
$array = [];
|
$array = [];
|
||||||
/** @var AccountModel $account */
|
/** @var AccountModel $account */
|
||||||
|
@ -105,7 +105,10 @@ class PaymentConverter
|
|||||||
$type = TransactionType::TRANSFER;
|
$type = TransactionType::TRANSFER;
|
||||||
Log::debug('Because both transctions are asset, will make it a transfer.');
|
Log::debug('Because both transctions are asset, will make it a transfer.');
|
||||||
}
|
}
|
||||||
$created = new Carbon($payment->getCreated());
|
Log::debug(sprintf('Bunq created = %s', $payment->getCreated()));
|
||||||
|
$created = new Carbon($payment->getCreated(), 'UTC');
|
||||||
|
// correct timezone to system timezone.
|
||||||
|
$created->setTimezone(config('app.timezone'));
|
||||||
|
|
||||||
$description = $payment->getDescription();
|
$description = $payment->getDescription();
|
||||||
if ('' === $payment->getDescription() && 'SAVINGS' === $payment->getType()) {
|
if ('' === $payment->getDescription() && 'SAVINGS' === $payment->getType()) {
|
||||||
@ -115,7 +118,7 @@ class PaymentConverter
|
|||||||
$storeData = [
|
$storeData = [
|
||||||
'user' => $this->importJob->user_id,
|
'user' => $this->importJob->user_id,
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'date' => $created->format('Y-m-d'),
|
'date' => $created->format('Y-m-d H:i:s'),
|
||||||
'timestamp' => $created->toAtomString(),
|
'timestamp' => $created->toAtomString(),
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'piggy_bank_id' => null,
|
'piggy_bank_id' => null,
|
||||||
@ -151,7 +154,7 @@ class PaymentConverter
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
Log::info(sprintf('Parsed %s: "%s" (%s).', $created->format('Y-m-d'), $storeData['description'], $storeData['transactions'][0]['amount']));
|
Log::info(sprintf('Parsed %s: "%s" (%s).', $created->format('Y-m-d H:i:s'), $storeData['description'], $storeData['transactions'][0]['amount']));
|
||||||
|
|
||||||
return $storeData;
|
return $storeData;
|
||||||
|
|
||||||
|
@ -140,8 +140,14 @@ class ImportableConverter
|
|||||||
$result = null;
|
$result = null;
|
||||||
if (null !== $date) {
|
if (null !== $date) {
|
||||||
try {
|
try {
|
||||||
$object = Carbon::createFromFormat($this->config['date-format'] ?? 'Ymd', $date);
|
// add exclamation mark for better parsing. http://php.net/manual/en/datetime.createfromformat.php
|
||||||
$result = $object->format('Y-m-d');
|
$dateFormat = $this->config['date-format'] ?? 'Ymd';
|
||||||
|
if ('!' !== $dateFormat{0}) {
|
||||||
|
$dateFormat = '!' . $dateFormat;
|
||||||
|
}
|
||||||
|
$object = Carbon::createFromFormat($dateFormat, $date);
|
||||||
|
$result = $object->format('Y-m-d H:i:s');
|
||||||
|
Log::debug(sprintf('createFromFormat: Turning "%s" into "%s" using "%s"', $date, $result, $this->config['date-format'] ?? 'Ymd'));
|
||||||
} catch (InvalidDateException|InvalidArgumentException $e) {
|
} catch (InvalidDateException|InvalidArgumentException $e) {
|
||||||
Log::error($e->getMessage());
|
Log::error($e->getMessage());
|
||||||
Log::error($e->getTraceAsString());
|
Log::error($e->getTraceAsString());
|
||||||
@ -213,7 +219,7 @@ class ImportableConverter
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
'type' => $transactionType,
|
'type' => $transactionType,
|
||||||
'date' => $this->convertDateValue($importable->date) ?? Carbon::now()->format('Y-m-d'),
|
'date' => $this->convertDateValue($importable->date) ?? Carbon::now()->format('Y-m-d H:i:s'),
|
||||||
'tags' => $importable->tags,
|
'tags' => $importable->tags,
|
||||||
'user' => $this->importJob->user_id,
|
'user' => $this->importJob->user_id,
|
||||||
'notes' => $importable->note,
|
'notes' => $importable->note,
|
||||||
|
@ -233,8 +233,8 @@ class StageImportDataHandler
|
|||||||
if (null === $account) {
|
if (null === $account) {
|
||||||
throw new FireflyException(sprintf('Cannot find Firefly III asset account with ID #%d. Job must stop now.', $accountId)); // @codeCoverageIgnore
|
throw new FireflyException(sprintf('Cannot find Firefly III asset account with ID #%d. Job must stop now.', $accountId)); // @codeCoverageIgnore
|
||||||
}
|
}
|
||||||
if ($account->accountType->type !== AccountType::ASSET) {
|
if (!\in_array($account->accountType->type ,[AccountType::ASSET, AccountType::LOAN, AccountType::MORTGAGE, AccountType::DEBT], true)) {
|
||||||
throw new FireflyException(sprintf('Account with ID #%d is not an asset account. Job must stop now.', $accountId)); // @codeCoverageIgnore
|
throw new FireflyException(sprintf('Account with ID #%d is not an asset/loan/mortgage/debt account. Job must stop now.', $accountId)); // @codeCoverageIgnore
|
||||||
}
|
}
|
||||||
|
|
||||||
return $account;
|
return $account;
|
||||||
|
44
app/Support/Logging/AuditLogger.php
Normal file
44
app/Support/Logging/AuditLogger.php
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AuditLogger.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Support\Logging;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AuditLogger
|
||||||
|
*/
|
||||||
|
class AuditLogger
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Customize the given logger instance.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Log\Logger $logger
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __invoke($logger)
|
||||||
|
{
|
||||||
|
$processor = new AuditProcessor;
|
||||||
|
$logger->pushProcessor($processor);
|
||||||
|
}
|
||||||
|
}
|
49
app/Support/Logging/AuditProcessor.php
Normal file
49
app/Support/Logging/AuditProcessor.php
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AuditProcessor.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Support\Logging;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class AuditProcessor
|
||||||
|
*/
|
||||||
|
class AuditProcessor
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param array $record
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function __invoke(array $record): array
|
||||||
|
{
|
||||||
|
$record['extra']['path'] = request()->method() . ':' . request()->url();
|
||||||
|
|
||||||
|
$record['extra']['IP'] = app('request')->ip();
|
||||||
|
if (auth()->check()) {
|
||||||
|
$record['extra']['user'] = auth()->user()->email;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $record;
|
||||||
|
}
|
||||||
|
}
|
@ -216,8 +216,22 @@ class Preferences
|
|||||||
{
|
{
|
||||||
$fullName = sprintf('preference%s%s', $user->id, $name);
|
$fullName = sprintf('preference%s%s', $user->id, $name);
|
||||||
Cache::forget($fullName);
|
Cache::forget($fullName);
|
||||||
|
/** @var Preference $pref */
|
||||||
$pref = Preference::where('user_id', $user->id)->where('name', $name)->first(['id', 'name', 'data', 'updated_at', 'created_at']);
|
$pref = Preference::where('user_id', $user->id)->where('name', $name)->first(['id', 'name', 'data', 'updated_at', 'created_at']);
|
||||||
|
|
||||||
|
if (null !== $pref && null === $value) {
|
||||||
|
try {
|
||||||
|
$pref->delete();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
Log::error(sprintf('Could not delete preference: %s', $e->getMessage()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Preference;
|
||||||
|
}
|
||||||
|
if (null === $value) {
|
||||||
|
return new Preference;
|
||||||
|
}
|
||||||
|
|
||||||
if (null !== $pref) {
|
if (null !== $pref) {
|
||||||
$pref->data = $value;
|
$pref->data = $value;
|
||||||
$pref->save();
|
$pref->save();
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CalculateRangeOccurrences.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace FireflyIII\Support\Repositories\Recurring;
|
namespace FireflyIII\Support\Repositories\Recurring;
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CalculateXOccurrences.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace FireflyIII\Support\Repositories\Recurring;
|
namespace FireflyIII\Support\Repositories\Recurring;
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FiltersWeekends.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace FireflyIII\Support\Repositories\Recurring;
|
namespace FireflyIII\Support\Repositories\Recurring;
|
||||||
|
@ -72,7 +72,9 @@ class ConvertToTransfer implements ActionInterface
|
|||||||
/** @var AccountRepositoryInterface $repository */
|
/** @var AccountRepositoryInterface $repository */
|
||||||
$repository = app(AccountRepositoryInterface::class);
|
$repository = app(AccountRepositoryInterface::class);
|
||||||
$repository->setUser($journal->user);
|
$repository->setUser($journal->user);
|
||||||
$asset = $repository->findByName($this->action->action_value, [AccountType::ASSET, AccountType::DEFAULT]);
|
$asset = $repository->findByName(
|
||||||
|
$this->action->action_value, [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]
|
||||||
|
);
|
||||||
if (null === $asset) {
|
if (null === $asset) {
|
||||||
// @codeCoverageIgnoreStart
|
// @codeCoverageIgnoreStart
|
||||||
Log::error(
|
Log::error(
|
||||||
@ -129,6 +131,7 @@ class ConvertToTransfer implements ActionInterface
|
|||||||
|
|
||||||
return false; // @codeCoverageIgnore
|
return false; // @codeCoverageIgnore
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A deposit is from Revenue to Asset.
|
* A deposit is from Revenue to Asset.
|
||||||
* We replace the Revenue with another asset.
|
* We replace the Revenue with another asset.
|
||||||
|
@ -76,7 +76,7 @@ class SetCategory implements ActionInterface
|
|||||||
|
|
||||||
|
|
||||||
$journal->touch();
|
$journal->touch();
|
||||||
Log::debug(sprintf('RuleAction SetCategory set the category of journal #%d to budget #%d ("%s").', $journal->id, $category->id, $category->name));
|
Log::debug(sprintf('RuleAction SetCategory set the category of journal #%d to category #%d ("%s").', $journal->id, $category->id, $category->name));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ class TransactionTransformer extends AbstractTransformer
|
|||||||
'description' => $transaction->description,
|
'description' => $transaction->description,
|
||||||
'journal_description' => $transaction->description,
|
'journal_description' => $transaction->description,
|
||||||
'transaction_description' => $transaction->transaction_description,
|
'transaction_description' => $transaction->transaction_description,
|
||||||
'date' => $transaction->date->format('Y-m-d'),
|
'date' => $transaction->date->toAtomString(),
|
||||||
'type' => $transaction->transaction_type_type,
|
'type' => $transaction->transaction_type_type,
|
||||||
'identifier' => $transaction->identifier,
|
'identifier' => $transaction->identifier,
|
||||||
'journal_id' => (int)$transaction->journal_id,
|
'journal_id' => (int)$transaction->journal_id,
|
||||||
|
26
changelog.md
26
changelog.md
@ -2,6 +2,28 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
## [4.7.11 (API 0.9.2)] - 2019-02-10
|
||||||
|
### Added
|
||||||
|
- Experimental audit logging channel to track important events (separate from debug logging).
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- [Issue 2003](https://github.com/firefly-iii/firefly-iii/issues/2003), [issue 2006](https://github.com/firefly-iii/firefly-iii/issues/2006) Transactions can be stored with a timestamp. The user-interface does not support this yet. But the API does.
|
||||||
|
- Docker image tags a new manifest for arm and amd64.
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
- [skuzzle](https://github.com/skuzzle) removed an annoying console.log statement.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- [Issue 2048](https://github.com/firefly-iii/firefly-iii/issues/2048) Fix "Are you sure?" popup, thanks to @nescafe2002!
|
||||||
|
- [Issue 2049](https://github.com/firefly-iii/firefly-iii/issues/2049) Empty preferences would crash Firefly III.
|
||||||
|
- [Issue 2052](https://github.com/firefly-iii/firefly-iii/issues/2052) Rules could not auto-covert to liabilities.
|
||||||
|
- Webbased upgrade routine will also decrypt the database.
|
||||||
|
- Last use date for categories was off.
|
||||||
|
|
||||||
|
### API
|
||||||
|
- The `date`-field in any transaction object now returns a ISO 8601 timestamp instead of a date.
|
||||||
|
|
||||||
|
|
||||||
## [4.7.10] - 2019-02-03
|
## [4.7.10] - 2019-02-03
|
||||||
### Added
|
### Added
|
||||||
- [Issue 2037](https://github.com/firefly-iii/firefly-iii/issues/2037) Added some new magic keywords to reports.
|
- [Issue 2037](https://github.com/firefly-iii/firefly-iii/issues/2037) Added some new magic keywords to reports.
|
||||||
@ -18,7 +40,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
- I will no longer accept PR's that introduce new currencies.
|
- I will no longer accept PR's that introduce new currencies.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
- Firefly III no longer encrypts the database and will [decrypt the database]() on its first run.
|
- Firefly III no longer encrypts the database and will [decrypt the database](https://github.com/firefly-iii/help/wiki/Database-encryption) on its first run.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- [Issue 1923](https://github.com/firefly-iii/firefly-iii/issues/1923) Broken window position for date picker.
|
- [Issue 1923](https://github.com/firefly-iii/firefly-iii/issues/1923) Broken window position for date picker.
|
||||||
@ -42,7 +64,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
- [Issue 2009](https://github.com/firefly-iii/firefly-iii/issues/2009) Could not change recurrence back to "forever".
|
- [Issue 2009](https://github.com/firefly-iii/firefly-iii/issues/2009) Could not change recurrence back to "forever".
|
||||||
- [Issue 2033](https://github.com/firefly-iii/firefly-iii/issues/2033) Longitude can go from -180 to 180.
|
- [Issue 2033](https://github.com/firefly-iii/firefly-iii/issues/2033) Longitude can go from -180 to 180.
|
||||||
- [Issue 2034](https://github.com/firefly-iii/firefly-iii/issues/2034) Rules were not being triggered in mass-edit.
|
- [Issue 2034](https://github.com/firefly-iii/firefly-iii/issues/2034) Rules were not being triggered in mass-edit.
|
||||||
- #2043 In rare instances the repetition of a recurring transaction was displayed incorrectly.
|
- [Issue 2043](https://github.com/firefly-iii/firefly-iii/issues/2043) In rare instances the repetition of a recurring transaction was displayed incorrectly.
|
||||||
- Fixed broken translations in the recurring transactions overview.
|
- Fixed broken translations in the recurring transactions overview.
|
||||||
- When you create a recurring transfer you make make it fill (or empty) a piggy bank. This was not working, despite a fix in 4.7.8.
|
- When you create a recurring transfer you make make it fill (or empty) a piggy bank. This was not working, despite a fix in 4.7.8.
|
||||||
- Fixed a bug where the importer would not be capable of creating new currencies.
|
- Fixed a bug where the importer would not be capable of creating new currencies.
|
||||||
|
223
composer.lock
generated
223
composer.lock
generated
@ -1303,16 +1303,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/framework",
|
"name": "laravel/framework",
|
||||||
"version": "v5.7.24",
|
"version": "v5.7.25",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/laravel/framework.git",
|
"url": "https://github.com/laravel/framework.git",
|
||||||
"reference": "2ede55db4b8201ed0450fa7e7a4d7220aa29bc34"
|
"reference": "f8fb354878064b94a3ff09a6ffd48ee9a8d712cf"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/laravel/framework/zipball/2ede55db4b8201ed0450fa7e7a4d7220aa29bc34",
|
"url": "https://api.github.com/repos/laravel/framework/zipball/f8fb354878064b94a3ff09a6ffd48ee9a8d712cf",
|
||||||
"reference": "2ede55db4b8201ed0450fa7e7a4d7220aa29bc34",
|
"reference": "f8fb354878064b94a3ff09a6ffd48ee9a8d712cf",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -1445,7 +1445,7 @@
|
|||||||
"framework",
|
"framework",
|
||||||
"laravel"
|
"laravel"
|
||||||
],
|
],
|
||||||
"time": "2019-01-29T22:13:46+00:00"
|
"time": "2019-02-05T14:28:43+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/nexmo-notification-channel",
|
"name": "laravel/nexmo-notification-channel",
|
||||||
@ -2470,16 +2470,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nexmo/client",
|
"name": "nexmo/client",
|
||||||
"version": "1.6.1",
|
"version": "1.6.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/Nexmo/nexmo-php.git",
|
"url": "https://github.com/Nexmo/nexmo-php.git",
|
||||||
"reference": "3dc03ca1dab726a23b757110897740e54304fc65"
|
"reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/3dc03ca1dab726a23b757110897740e54304fc65",
|
"url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/2f79f67f24225ea627ee14578e98c96276cdd4c5",
|
||||||
"reference": "3dc03ca1dab726a23b757110897740e54304fc65",
|
"reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2514,7 +2514,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "PHP Client for using Nexmo's API.",
|
"description": "PHP Client for using Nexmo's API.",
|
||||||
"time": "2019-01-02T09:06:47+00:00"
|
"time": "2019-02-07T11:14:34+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "opis/closure",
|
"name": "opis/closure",
|
||||||
@ -3523,16 +3523,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522"
|
"reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
|
"url": "https://api.github.com/repos/symfony/console/zipball/1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4",
|
||||||
"reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
|
"reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3544,6 +3544,9 @@
|
|||||||
"symfony/dependency-injection": "<3.4",
|
"symfony/dependency-injection": "<3.4",
|
||||||
"symfony/process": "<3.3"
|
"symfony/process": "<3.3"
|
||||||
},
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/log-implementation": "1.0"
|
||||||
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"psr/log": "~1.0",
|
"psr/log": "~1.0",
|
||||||
"symfony/config": "~3.4|~4.0",
|
"symfony/config": "~3.4|~4.0",
|
||||||
@ -3553,7 +3556,7 @@
|
|||||||
"symfony/process": "~3.4|~4.0"
|
"symfony/process": "~3.4|~4.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"psr/log-implementation": "For using the console logger",
|
"psr/log": "For using the console logger",
|
||||||
"symfony/event-dispatcher": "",
|
"symfony/event-dispatcher": "",
|
||||||
"symfony/lock": "",
|
"symfony/lock": "",
|
||||||
"symfony/process": ""
|
"symfony/process": ""
|
||||||
@ -3588,7 +3591,7 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Console Component",
|
"description": "Symfony Console Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-04T15:13:53+00:00"
|
"time": "2019-01-25T14:35:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/contracts",
|
"name": "symfony/contracts",
|
||||||
@ -3660,16 +3663,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/css-selector",
|
"name": "symfony/css-selector",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/css-selector.git",
|
"url": "https://github.com/symfony/css-selector.git",
|
||||||
"reference": "76dac1dbe2830213e95892c7c2ec1edd74113ea4"
|
"reference": "48eddf66950fa57996e1be4a55916d65c10c604a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/css-selector/zipball/76dac1dbe2830213e95892c7c2ec1edd74113ea4",
|
"url": "https://api.github.com/repos/symfony/css-selector/zipball/48eddf66950fa57996e1be4a55916d65c10c604a",
|
||||||
"reference": "76dac1dbe2830213e95892c7c2ec1edd74113ea4",
|
"reference": "48eddf66950fa57996e1be4a55916d65c10c604a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3709,20 +3712,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony CssSelector Component",
|
"description": "Symfony CssSelector Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-16T20:31:39+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/debug",
|
"name": "symfony/debug",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/debug.git",
|
"url": "https://github.com/symfony/debug.git",
|
||||||
"reference": "64cb33c81e37d19b7715d4a6a4d49c1c382066dd"
|
"reference": "cf9b2e33f757deb884ce474e06d2647c1c769b65"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/debug/zipball/64cb33c81e37d19b7715d4a6a4d49c1c382066dd",
|
"url": "https://api.github.com/repos/symfony/debug/zipball/cf9b2e33f757deb884ce474e06d2647c1c769b65",
|
||||||
"reference": "64cb33c81e37d19b7715d4a6a4d49c1c382066dd",
|
"reference": "cf9b2e33f757deb884ce474e06d2647c1c769b65",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3765,20 +3768,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Debug Component",
|
"description": "Symfony Debug Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-25T14:35:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/event-dispatcher",
|
"name": "symfony/event-dispatcher",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/event-dispatcher.git",
|
"url": "https://github.com/symfony/event-dispatcher.git",
|
||||||
"reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e"
|
"reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
|
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1",
|
||||||
"reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
|
"reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3829,20 +3832,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony EventDispatcher Component",
|
"description": "Symfony EventDispatcher Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-05T16:37:49+00:00"
|
"time": "2019-01-16T20:35:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/finder",
|
"name": "symfony/finder",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/finder.git",
|
"url": "https://github.com/symfony/finder.git",
|
||||||
"reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce"
|
"reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/finder/zipball/9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
|
"url": "https://api.github.com/repos/symfony/finder/zipball/ef71816cbb264988bb57fe6a73f610888b9aa70c",
|
||||||
"reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
|
"reference": "ef71816cbb264988bb57fe6a73f610888b9aa70c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3878,20 +3881,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Finder Component",
|
"description": "Symfony Finder Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-16T20:35:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/http-foundation",
|
"name": "symfony/http-foundation",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/http-foundation.git",
|
"url": "https://github.com/symfony/http-foundation.git",
|
||||||
"reference": "a633d422a09242064ba24e44a6e1494c5126de86"
|
"reference": "8d2318b73e0a1bc75baa699d00ebe2ae8b595a39"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/a633d422a09242064ba24e44a6e1494c5126de86",
|
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/8d2318b73e0a1bc75baa699d00ebe2ae8b595a39",
|
||||||
"reference": "a633d422a09242064ba24e44a6e1494c5126de86",
|
"reference": "8d2318b73e0a1bc75baa699d00ebe2ae8b595a39",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -3932,20 +3935,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony HttpFoundation Component",
|
"description": "Symfony HttpFoundation Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-05T16:37:49+00:00"
|
"time": "2019-01-29T09:49:29+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/http-kernel",
|
"name": "symfony/http-kernel",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/http-kernel.git",
|
"url": "https://github.com/symfony/http-kernel.git",
|
||||||
"reference": "83de6543328917c18d5498eeb6bb6d36f7aab31b"
|
"reference": "d56b1706abaa771eb6acd894c6787cb88f1dc97d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/83de6543328917c18d5498eeb6bb6d36f7aab31b",
|
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/d56b1706abaa771eb6acd894c6787cb88f1dc97d",
|
||||||
"reference": "83de6543328917c18d5498eeb6bb6d36f7aab31b",
|
"reference": "d56b1706abaa771eb6acd894c6787cb88f1dc97d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -4021,7 +4024,7 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony HttpKernel Component",
|
"description": "Symfony HttpKernel Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-06T16:19:23+00:00"
|
"time": "2019-02-03T12:47:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
@ -4305,16 +4308,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/process",
|
"name": "symfony/process",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/process.git",
|
"url": "https://github.com/symfony/process.git",
|
||||||
"reference": "ea043ab5d8ed13b467a9087d81cb876aee7f689a"
|
"reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/process/zipball/ea043ab5d8ed13b467a9087d81cb876aee7f689a",
|
"url": "https://api.github.com/repos/symfony/process/zipball/6c05edb11fbeff9e2b324b4270ecb17911a8b7ad",
|
||||||
"reference": "ea043ab5d8ed13b467a9087d81cb876aee7f689a",
|
"reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -4350,7 +4353,7 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Process Component",
|
"description": "Symfony Process Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-03T14:48:52+00:00"
|
"time": "2019-01-24T22:05:03+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/psr-http-message-bridge",
|
"name": "symfony/psr-http-message-bridge",
|
||||||
@ -4415,16 +4418,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/routing",
|
"name": "symfony/routing",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/routing.git",
|
"url": "https://github.com/symfony/routing.git",
|
||||||
"reference": "e69b7a13a0b58af378a49b49dd7084462de16cee"
|
"reference": "7f8e44fc498972466f0841c3e48dc555f23bdf53"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/routing/zipball/e69b7a13a0b58af378a49b49dd7084462de16cee",
|
"url": "https://api.github.com/repos/symfony/routing/zipball/7f8e44fc498972466f0841c3e48dc555f23bdf53",
|
||||||
"reference": "e69b7a13a0b58af378a49b49dd7084462de16cee",
|
"reference": "7f8e44fc498972466f0841c3e48dc555f23bdf53",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -4488,20 +4491,20 @@
|
|||||||
"uri",
|
"uri",
|
||||||
"url"
|
"url"
|
||||||
],
|
],
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-29T09:49:29+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/translation",
|
"name": "symfony/translation",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/translation.git",
|
"url": "https://github.com/symfony/translation.git",
|
||||||
"reference": "939fb792d73f2ce80e6ae9019d205fc480f1c9a0"
|
"reference": "23fd7aac70d99a17a8e6473a41fec8fab3331050"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/translation/zipball/939fb792d73f2ce80e6ae9019d205fc480f1c9a0",
|
"url": "https://api.github.com/repos/symfony/translation/zipball/23fd7aac70d99a17a8e6473a41fec8fab3331050",
|
||||||
"reference": "939fb792d73f2ce80e6ae9019d205fc480f1c9a0",
|
"reference": "23fd7aac70d99a17a8e6473a41fec8fab3331050",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -4561,20 +4564,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Translation Component",
|
"description": "Symfony Translation Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-27T23:11:39+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/var-dumper",
|
"name": "symfony/var-dumper",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/var-dumper.git",
|
"url": "https://github.com/symfony/var-dumper.git",
|
||||||
"reference": "85bde661b178173d85c6f11ea9d03b61d1212bb2"
|
"reference": "223bda89f9be41cf7033eeaf11bc61a280489c17"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/85bde661b178173d85c6f11ea9d03b61d1212bb2",
|
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/223bda89f9be41cf7033eeaf11bc61a280489c17",
|
||||||
"reference": "85bde661b178173d85c6f11ea9d03b61d1212bb2",
|
"reference": "223bda89f9be41cf7033eeaf11bc61a280489c17",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -4637,7 +4640,7 @@
|
|||||||
"debug",
|
"debug",
|
||||||
"dump"
|
"dump"
|
||||||
],
|
],
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-30T11:44:30+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "tijsverkoyen/css-to-inline-styles",
|
"name": "tijsverkoyen/css-to-inline-styles",
|
||||||
@ -5624,16 +5627,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "mockery/mockery",
|
"name": "mockery/mockery",
|
||||||
"version": "1.2.0",
|
"version": "1.2.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/mockery/mockery.git",
|
"url": "https://github.com/mockery/mockery.git",
|
||||||
"reference": "100633629bf76d57430b86b7098cd6beb996a35a"
|
"reference": "dc4f10b6b1148744facb784015e4b339d7feec23"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/mockery/mockery/zipball/100633629bf76d57430b86b7098cd6beb996a35a",
|
"url": "https://api.github.com/repos/mockery/mockery/zipball/dc4f10b6b1148744facb784015e4b339d7feec23",
|
||||||
"reference": "100633629bf76d57430b86b7098cd6beb996a35a",
|
"reference": "dc4f10b6b1148744facb784015e4b339d7feec23",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -5642,7 +5645,7 @@
|
|||||||
"php": ">=5.6.0"
|
"php": ">=5.6.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "~5.7.10|~6.5|~7.0"
|
"phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
@ -5685,7 +5688,7 @@
|
|||||||
"test double",
|
"test double",
|
||||||
"testing"
|
"testing"
|
||||||
],
|
],
|
||||||
"time": "2018-10-02T21:52:37+00:00"
|
"time": "2019-02-08T14:43:54+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
@ -6389,16 +6392,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "7.5.3",
|
"version": "7.5.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "2cb759721e53bc05f56487f628c6b9fbb6c18746"
|
"reference": "2896657da5fb237bc316bdfc18c2650efeee0dc0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2cb759721e53bc05f56487f628c6b9fbb6c18746",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2896657da5fb237bc316bdfc18c2650efeee0dc0",
|
||||||
"reference": "2cb759721e53bc05f56487f628c6b9fbb6c18746",
|
"reference": "2896657da5fb237bc316bdfc18c2650efeee0dc0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -6469,7 +6472,7 @@
|
|||||||
"testing",
|
"testing",
|
||||||
"xunit"
|
"xunit"
|
||||||
],
|
],
|
||||||
"time": "2019-02-01T05:24:07+00:00"
|
"time": "2019-02-07T14:15:04+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "roave/security-advisories",
|
"name": "roave/security-advisories",
|
||||||
@ -6477,12 +6480,12 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
||||||
"reference": "db876706aacd4ffbd1c253358d19a651e50e65c2"
|
"reference": "344bf4ed1263c75e7f96b87b80c52e8373561e19"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/db876706aacd4ffbd1c253358d19a651e50e65c2",
|
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/344bf4ed1263c75e7f96b87b80c52e8373561e19",
|
||||||
"reference": "db876706aacd4ffbd1c253358d19a651e50e65c2",
|
"reference": "344bf4ed1263c75e7f96b87b80c52e8373561e19",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
@ -6517,8 +6520,8 @@
|
|||||||
"doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
|
"doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
|
||||||
"doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
|
"doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
|
||||||
"dompdf/dompdf": ">=0.6,<0.6.2",
|
"dompdf/dompdf": ">=0.6,<0.6.2",
|
||||||
"drupal/core": ">=7,<7.60|>=8,<8.5.8|>=8.6,<8.6.2",
|
"drupal/core": ">=7,<7.62|>=8,<8.5.9|>=8.6,<8.6.6",
|
||||||
"drupal/drupal": ">=7,<7.60|>=8,<8.5.8|>=8.6,<8.6.2",
|
"drupal/drupal": ">=7,<7.62|>=8,<8.5.9|>=8.6,<8.6.6",
|
||||||
"erusev/parsedown": "<1.7",
|
"erusev/parsedown": "<1.7",
|
||||||
"ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1",
|
"ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1",
|
||||||
"ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.12.3|>=2011,<2017.12.4.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3",
|
"ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.12.3|>=2011,<2017.12.4.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3",
|
||||||
@ -6615,7 +6618,7 @@
|
|||||||
"symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
|
"symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
|
||||||
"tecnickcom/tcpdf": "<6.2.22",
|
"tecnickcom/tcpdf": "<6.2.22",
|
||||||
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
|
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
|
||||||
"thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2",
|
"thelia/thelia": ">=2.1,<2.1.2|>=2.1.0-beta1,<2.1.3",
|
||||||
"theonedemon/phpwhois": "<=4.2.5",
|
"theonedemon/phpwhois": "<=4.2.5",
|
||||||
"titon/framework": ">=0,<9.9.99",
|
"titon/framework": ">=0,<9.9.99",
|
||||||
"truckersmp/phpwhois": "<=4.3.1",
|
"truckersmp/phpwhois": "<=4.3.1",
|
||||||
@ -6673,7 +6676,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
|
"description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
|
||||||
"time": "2019-01-22T18:37:22+00:00"
|
"time": "2019-02-05T19:58:17+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/code-unit-reverse-lookup",
|
"name": "sebastian/code-unit-reverse-lookup",
|
||||||
@ -6786,23 +6789,23 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/diff",
|
"name": "sebastian/diff",
|
||||||
"version": "3.0.1",
|
"version": "3.0.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/diff.git",
|
"url": "https://github.com/sebastianbergmann/diff.git",
|
||||||
"reference": "366541b989927187c4ca70490a35615d3fef2dce"
|
"reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/366541b989927187c4ca70490a35615d3fef2dce",
|
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
|
||||||
"reference": "366541b989927187c4ca70490a35615d3fef2dce",
|
"reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1"
|
"php": "^7.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^7.0",
|
"phpunit/phpunit": "^7.5 || ^8.0",
|
||||||
"symfony/process": "^2 || ^3.3 || ^4"
|
"symfony/process": "^2 || ^3.3 || ^4"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
@ -6838,7 +6841,7 @@
|
|||||||
"unidiff",
|
"unidiff",
|
||||||
"unified diff"
|
"unified diff"
|
||||||
],
|
],
|
||||||
"time": "2018-06-10T07:54:39+00:00"
|
"time": "2019-02-04T06:01:07+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/environment",
|
"name": "sebastian/environment",
|
||||||
@ -7336,16 +7339,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/config",
|
"name": "symfony/config",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/config.git",
|
"url": "https://github.com/symfony/config.git",
|
||||||
"reference": "a7a7d0a0244cfc82f040729ccf769e6cf55a78fb"
|
"reference": "25a2e7abe0d97e70282537292e3df45cf6da7b98"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/config/zipball/a7a7d0a0244cfc82f040729ccf769e6cf55a78fb",
|
"url": "https://api.github.com/repos/symfony/config/zipball/25a2e7abe0d97e70282537292e3df45cf6da7b98",
|
||||||
"reference": "a7a7d0a0244cfc82f040729ccf769e6cf55a78fb",
|
"reference": "25a2e7abe0d97e70282537292e3df45cf6da7b98",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -7395,20 +7398,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Config Component",
|
"description": "Symfony Config Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-30T11:44:30+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/filesystem",
|
"name": "symfony/filesystem",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/filesystem.git",
|
"url": "https://github.com/symfony/filesystem.git",
|
||||||
"reference": "c2ffd9a93f2d6c5be2f68a0aa7953cc229f871f8"
|
"reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/c2ffd9a93f2d6c5be2f68a0aa7953cc229f871f8",
|
"url": "https://api.github.com/repos/symfony/filesystem/zipball/7c16ebc2629827d4ec915a52ac809768d060a4ee",
|
||||||
"reference": "c2ffd9a93f2d6c5be2f68a0aa7953cc229f871f8",
|
"reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -7445,20 +7448,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Filesystem Component",
|
"description": "Symfony Filesystem Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-16T20:35:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/stopwatch",
|
"name": "symfony/stopwatch",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/stopwatch.git",
|
"url": "https://github.com/symfony/stopwatch.git",
|
||||||
"reference": "af62b35760fc92c8dbdce659b4eebdfe0e6a0472"
|
"reference": "b1a5f646d56a3290230dbc8edf2a0d62cda23f67"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/af62b35760fc92c8dbdce659b4eebdfe0e6a0472",
|
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/b1a5f646d56a3290230dbc8edf2a0d62cda23f67",
|
||||||
"reference": "af62b35760fc92c8dbdce659b4eebdfe0e6a0472",
|
"reference": "b1a5f646d56a3290230dbc8edf2a0d62cda23f67",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -7495,20 +7498,20 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Stopwatch Component",
|
"description": "Symfony Stopwatch Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-16T20:31:39+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/yaml",
|
"name": "symfony/yaml",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/yaml.git",
|
"url": "https://github.com/symfony/yaml.git",
|
||||||
"reference": "d0aa6c0ea484087927b49fd513383a7d36190ca6"
|
"reference": "d461670ee145092b7e2a56c1da7118f19cadadb0"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/d0aa6c0ea484087927b49fd513383a7d36190ca6",
|
"url": "https://api.github.com/repos/symfony/yaml/zipball/d461670ee145092b7e2a56c1da7118f19cadadb0",
|
||||||
"reference": "d0aa6c0ea484087927b49fd513383a7d36190ca6",
|
"reference": "d461670ee145092b7e2a56c1da7118f19cadadb0",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -7554,7 +7557,7 @@
|
|||||||
],
|
],
|
||||||
"description": "Symfony Yaml Component",
|
"description": "Symfony Yaml Component",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"time": "2019-01-03T09:07:35+00:00"
|
"time": "2019-01-16T20:35:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "theseer/tokenizer",
|
"name": "theseer/tokenizer",
|
||||||
|
@ -93,9 +93,9 @@ return [
|
|||||||
'is_demo_site' => false,
|
'is_demo_site' => false,
|
||||||
],
|
],
|
||||||
'encryption' => null === env('USE_ENCRYPTION') || env('USE_ENCRYPTION') === true,
|
'encryption' => null === env('USE_ENCRYPTION') || env('USE_ENCRYPTION') === true,
|
||||||
'version' => '4.7.10',
|
'version' => '4.7.11',
|
||||||
'api_version' => '0.9.1',
|
'api_version' => '0.9.2',
|
||||||
'db_version' => 7,
|
'db_version' => 8,
|
||||||
'maxUploadSize' => 15242880,
|
'maxUploadSize' => 15242880,
|
||||||
'send_error_message' => env('SEND_ERROR_MESSAGE', true),
|
'send_error_message' => env('SEND_ERROR_MESSAGE', true),
|
||||||
'site_owner' => env('SITE_OWNER', ''),
|
'site_owner' => env('SITE_OWNER', ''),
|
||||||
|
@ -19,8 +19,11 @@
|
|||||||
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use FireflyIII\Support\Logging\AuditLogger;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -56,23 +59,29 @@ return [
|
|||||||
'channels' => ['daily', 'slack'],
|
'channels' => ['daily', 'slack'],
|
||||||
],
|
],
|
||||||
|
|
||||||
'single' => [
|
'single' => [
|
||||||
'driver' => 'single',
|
'driver' => 'single',
|
||||||
'path' => storage_path('logs/laravel.log'),
|
'path' => storage_path('logs/laravel.log'),
|
||||||
'level' => envNonEmpty('APP_LOG_LEVEL', 'info'),
|
'level' => envNonEmpty('APP_LOG_LEVEL', 'info'),
|
||||||
],
|
],
|
||||||
'stdout' => [
|
'stdout' => [
|
||||||
'driver' => 'single',
|
'driver' => 'single',
|
||||||
'path' => 'php://stdout',
|
'path' => 'php://stdout',
|
||||||
'level' => envNonEmpty('APP_LOG_LEVEL', 'info'),
|
'level' => envNonEmpty('APP_LOG_LEVEL', 'info'),
|
||||||
],
|
],
|
||||||
|
|
||||||
'daily' => [
|
'daily' => [
|
||||||
'driver' => 'daily',
|
'driver' => 'daily',
|
||||||
'path' => storage_path('logs/ff3-' . PHP_SAPI . '.log'),
|
'path' => storage_path('logs/ff3-' . PHP_SAPI . '.log'),
|
||||||
'level' => envNonEmpty('APP_LOG_LEVEL', 'info'),
|
'level' => envNonEmpty('APP_LOG_LEVEL', 'info'),
|
||||||
'days' => 7,
|
'days' => 7,
|
||||||
],
|
],
|
||||||
|
'audit' => [
|
||||||
|
'driver' => 'daily',
|
||||||
|
'path' => storage_path('logs/ff3-audit.log'),
|
||||||
|
'tap' => [AuditLogger::class],
|
||||||
|
'level' => 'info',
|
||||||
|
'days' => 90,
|
||||||
|
],
|
||||||
'dailytest' => [
|
'dailytest' => [
|
||||||
'driver' => 'daily',
|
'driver' => 'daily',
|
||||||
'path' => storage_path('logs/test-ff3-' . PHP_SAPI . '.log'),
|
'path' => storage_path('logs/test-ff3-' . PHP_SAPI . '.log'),
|
||||||
|
@ -1,5 +1,27 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 2019_01_28_193833_changes_for_v4710.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
@ -11,7 +33,7 @@ class ChangesForV4710 extends Migration
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function down()
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('group_journals');
|
Schema::dropIfExists('group_journals');
|
||||||
Schema::dropIfExists('transaction_groups');
|
Schema::dropIfExists('transaction_groups');
|
||||||
@ -22,7 +44,7 @@ class ChangesForV4710 extends Migration
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function up()
|
public function up(): void
|
||||||
{
|
{
|
||||||
if (!Schema::hasTable('transaction_groups')) {
|
if (!Schema::hasTable('transaction_groups')) {
|
||||||
Schema::create(
|
Schema::create(
|
||||||
|
59
database/migrations/2019_02_05_055516_changes_for_v4711.php
Normal file
59
database/migrations/2019_02_05_055516_changes_for_v4711.php
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 2019_02_05_055516_changes_for_v4711.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class ChangesForV4711 extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table(
|
||||||
|
'transaction_journals', function (Blueprint $table) {
|
||||||
|
$table->dateTimeTz('date')->change();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
Schema::table('preferences', function (Blueprint $table) {
|
||||||
|
$table->text('data')->nullable()->change();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
21
index.php
21
index.php
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* index.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
/**
|
/**
|
||||||
* index.php
|
* index.php
|
||||||
|
1
public/v1/js/ff/charts.js
vendored
1
public/v1/js/ff/charts.js
vendored
@ -346,7 +346,6 @@ function drawAChart(URI, container, chartType, options, colorData) {
|
|||||||
if (typeof drawVerticalLine !== 'undefined') {
|
if (typeof drawVerticalLine !== 'undefined') {
|
||||||
if (drawVerticalLine !== '') {
|
if (drawVerticalLine !== '') {
|
||||||
// draw line using annotation plugin.
|
// draw line using annotation plugin.
|
||||||
console.log('Will draw line');
|
|
||||||
chartOpts.options.annotation = {
|
chartOpts.options.annotation = {
|
||||||
annotations: [{
|
annotations: [{
|
||||||
type: 'line',
|
type: 'line',
|
||||||
|
16
public/v1/js/ff/install/index.js
vendored
16
public/v1/js/ff/install/index.js
vendored
@ -30,6 +30,22 @@ function startMigration() {
|
|||||||
$('#status-box').html('<i class="fa fa-spin fa-spinner"></i> Setting up DB...');
|
$('#status-box').html('<i class="fa fa-spin fa-spinner"></i> Setting up DB...');
|
||||||
$.post(migrateUri, {_token: token}).done(function (data) {
|
$.post(migrateUri, {_token: token}).done(function (data) {
|
||||||
if(data.error === false) {
|
if(data.error === false) {
|
||||||
|
// move to decrypt routine.
|
||||||
|
startDecryption();
|
||||||
|
} else {
|
||||||
|
displaySoftFail(data.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}).fail(function () {
|
||||||
|
$('#status-box').html('<i class="fa fa-warning"></i> Migration failed! See log files :(');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function startDecryption() {
|
||||||
|
$('#status-box').html('<i class="fa fa-spin fa-spinner"></i> Setting up DB #2...');
|
||||||
|
$.post(decryptUri, {_token: token}).done(function (data) {
|
||||||
|
if(data.error === false) {
|
||||||
|
// move to decrypt routine.
|
||||||
startPassport();
|
startPassport();
|
||||||
} else {
|
} else {
|
||||||
displaySoftFail(data.message);
|
displaySoftFail(data.message);
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Voraussetzungen für YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Voraussetzungen für YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Konfiguration für „:key”',
|
'job_configuration_breadcrumb' => 'Konfiguration für „:key”',
|
||||||
'job_status_breadcrumb' => 'Importstatus für „:key”',
|
'job_status_breadcrumb' => 'Importstatus für „:key”',
|
||||||
'cannot_create_for_provider' => 'Firefly III konnte keine Aufgabe für den Anbieter „:provider” erstellen.',
|
|
||||||
'disabled_for_demo_user' => 'in der Demo deaktiviert',
|
'disabled_for_demo_user' => 'in der Demo deaktiviert',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Datei importieren',
|
|
||||||
'general_index_intro' => 'Willkommen beim Importassistenten von Firefly III. Es gibt einige Möglichkeiten, Daten in Firefly III zu importieren, die hier als Schaltflächen angezeigt werden.',
|
'general_index_intro' => 'Willkommen beim Importassistenten von Firefly III. Es gibt einige Möglichkeiten, Daten in Firefly III zu importieren, die hier als Schaltflächen angezeigt werden.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Importieren via FinTS',
|
'button_fints' => 'Importieren via FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Allgemeine Importkonfiguration',
|
|
||||||
'global_config_text' => 'In Zukunft wird dieses Feld Einstellungen enthalten, die für ALLE oben genannten Importanbieter gelten.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Importvoraussetzungen',
|
'need_prereq_title' => 'Importvoraussetzungen',
|
||||||
'need_prereq_intro' => 'Einige Importmethoden benötigen Ihre Aufmerksamkeit, bevor sie verwendet werden können. Beispielsweise benötigen sie spezielle API-Schlüssel oder Anwendungsgeheimnisse. Sie können sie hier konfigurieren. Das Symbol zeigt an, ob diese Voraussetzungen erfüllt sind.',
|
'need_prereq_intro' => 'Einige Importmethoden benötigen Ihre Aufmerksamkeit, bevor sie verwendet werden können. Beispielsweise benötigen sie spezielle API-Schlüssel oder Anwendungsgeheimnisse. Sie können sie hier konfigurieren. Das Symbol zeigt an, ob diese Voraussetzungen erfüllt sind.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Voraussetzungen für den Import mit Quovo',
|
'do_prereq_quovo' => 'Voraussetzungen für den Import mit Quovo',
|
||||||
'do_prereq_ynab' => 'Voraussetzungen für den Import aus YNAB',
|
'do_prereq_ynab' => 'Voraussetzungen für den Import aus YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Einstellungen importieren',
|
|
||||||
'can_config_intro' => 'Einige Importmethoden können nach Ihren Wünschen konfiguriert werden. Sie verfügen über zusätzliche Einstellungen, die Sie anpassen können.',
|
|
||||||
'do_config_fake' => 'Konfiguration für den Scheinanbieter',
|
|
||||||
'do_config_file' => 'Konfiguration für Dateiimporte',
|
|
||||||
'do_config_bunq' => 'Konfiguration für den Import aus bunq',
|
|
||||||
'do_config_spectre' => 'Konfiguration für den Import aus Spectre',
|
|
||||||
'do_config_plaid' => 'Konfiguration für den Import aus Plaid',
|
|
||||||
'do_config_yodlee' => 'Konfiguration für den Import aus Yodlee',
|
|
||||||
'do_config_quovo' => 'Konfiguration für den Import aus Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Voraussetzungen für einen Import vom Scheinimportanbieter',
|
'prereq_fake_title' => 'Voraussetzungen für einen Import vom Scheinimportanbieter',
|
||||||
'prereq_fake_text' => 'Dieser Scheinanbieter benötigt einen eigenen API-Schlüssel. Dieser muss 32 Zeichen lang sein. Sie können diese hier verwenden: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'Dieser Scheinanbieter benötigt einen eigenen API-Schlüssel. Dieser muss 32 Zeichen lang sein. Sie können diese hier verwenden: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Melden Sie sich bei einer anderen Bank oder einer dieser Banken mit anderen Zugangsdaten an.',
|
'spectre_login_new_login' => 'Melden Sie sich bei einer anderen Bank oder einer dieser Banken mit anderen Zugangsdaten an.',
|
||||||
'job_config_spectre_accounts_title' => 'Import-Konten auswählen',
|
'job_config_spectre_accounts_title' => 'Import-Konten auswählen',
|
||||||
'job_config_spectre_accounts_text' => 'Sie haben „:name” (:country) gewählt. Sie haben :count Konto(s) bei diesem Anbieter. Bitte wählen Sie das/die Firefly III-Kont(o/en), auf dem/denen die Buchungen von diesen Konten gespeichert werden sollen. Denken Sie daran, dass zum Importieren von Daten sowohl das Firefly III-Konto als auch das „:name”-Konto dieselbe Währung haben müssen.',
|
'job_config_spectre_accounts_text' => 'Sie haben „:name” (:country) gewählt. Sie haben :count Konto(s) bei diesem Anbieter. Bitte wählen Sie das/die Firefly III-Kont(o/en), auf dem/denen die Buchungen von diesen Konten gespeichert werden sollen. Denken Sie daran, dass zum Importieren von Daten sowohl das Firefly III-Konto als auch das „:name”-Konto dieselbe Währung haben müssen.',
|
||||||
'spectre_no_supported_accounts' => 'Von diesem Konto können Sie nicht importieren, da die Währungen nicht übereinstimmen.',
|
|
||||||
'spectre_do_not_import' => '(Nicht importieren)',
|
'spectre_do_not_import' => '(Nicht importieren)',
|
||||||
'spectre_no_mapping' => 'Es scheint, dass Sie keine Konten zum Importieren ausgewählt haben.',
|
'spectre_no_mapping' => 'Es scheint, dass Sie keine Konten zum Importieren ausgewählt haben.',
|
||||||
'imported_from_account' => 'Von „:account” importiert',
|
'imported_from_account' => 'Von „:account” importiert',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'Dies ist keine gültige IBAN.',
|
'iban' => 'Dies ist keine gültige IBAN.',
|
||||||
'zero_or_more' => 'Der Wert darf nicht negativ sein.',
|
'zero_or_more' => 'Der Wert darf nicht negativ sein.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'Das Quellkonto entspricht dem Zielkonto.',
|
'source_equals_destination' => 'Das Quellkonto entspricht dem Zielkonto.',
|
||||||
'unique_account_number_for_user' => 'Diese Kontonummer scheint bereits verwendet zu sein.',
|
'unique_account_number_for_user' => 'Diese Kontonummer scheint bereits verwendet zu sein.',
|
||||||
'unique_iban_for_user' => 'Dieser IBAN scheint bereits verwendet zu werden.',
|
'unique_iban_for_user' => 'Dieser IBAN scheint bereits verwendet zu werden.',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Prerequisites for YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Prerequisites for YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Configuration for ":key"',
|
'job_configuration_breadcrumb' => 'Configuration for ":key"',
|
||||||
'job_status_breadcrumb' => 'Import status for ":key"',
|
'job_status_breadcrumb' => 'Import status for ":key"',
|
||||||
'cannot_create_for_provider' => 'Firefly III cannot create a job for the ":provider"-provider.',
|
|
||||||
'disabled_for_demo_user' => 'disabled in demo',
|
'disabled_for_demo_user' => 'disabled in demo',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Import a file',
|
|
||||||
'general_index_intro' => 'Welcome to Firefly III\'s import routine. There are a few ways of importing data into Firefly III, displayed here as buttons.',
|
'general_index_intro' => 'Welcome to Firefly III\'s import routine. There are a few ways of importing data into Firefly III, displayed here as buttons.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Import using FinTS',
|
'button_fints' => 'Import using FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Global import configuration',
|
|
||||||
'global_config_text' => 'In the future, this box will feature preferences that apply to ALL import providers above.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Import prerequisites',
|
'need_prereq_title' => 'Import prerequisites',
|
||||||
'need_prereq_intro' => 'Some import methods need your attention before they can be used. For example, they might require special API keys or application secrets. You can configure them here. The icon indicates if these prerequisites have been met.',
|
'need_prereq_intro' => 'Some import methods need your attention before they can be used. For example, they might require special API keys or application secrets. You can configure them here. The icon indicates if these prerequisites have been met.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Prerequisites for imports using Quovo',
|
'do_prereq_quovo' => 'Prerequisites for imports using Quovo',
|
||||||
'do_prereq_ynab' => 'Prerequisites for imports from YNAB',
|
'do_prereq_ynab' => 'Prerequisites for imports from YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Import configuration',
|
|
||||||
'can_config_intro' => 'Some import methods can be configured to your liking. They have extra settings you can tweak.',
|
|
||||||
'do_config_fake' => 'Configuration for the fake provider',
|
|
||||||
'do_config_file' => 'Configuration for file imports',
|
|
||||||
'do_config_bunq' => 'Configuration for bunq imports',
|
|
||||||
'do_config_spectre' => 'Configuration for imports from Spectre',
|
|
||||||
'do_config_plaid' => 'Configuration for imports from Plaid',
|
|
||||||
'do_config_yodlee' => 'Configuration for imports from Yodlee',
|
|
||||||
'do_config_quovo' => 'Configuration for imports from Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Prerequisites for an import from the fake import provider',
|
'prereq_fake_title' => 'Prerequisites for an import from the fake import provider',
|
||||||
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
||||||
'job_config_spectre_accounts_title' => 'Select accounts to import from',
|
'job_config_spectre_accounts_title' => 'Select accounts to import from',
|
||||||
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
||||||
'spectre_no_supported_accounts' => 'You cannot import from this account due to a currency mismatch.',
|
|
||||||
'spectre_do_not_import' => '(do not import)',
|
'spectre_do_not_import' => '(do not import)',
|
||||||
'spectre_no_mapping' => 'It seems you have not selected any accounts to import from.',
|
'spectre_no_mapping' => 'It seems you have not selected any accounts to import from.',
|
||||||
'imported_from_account' => 'Imported from ":account"',
|
'imported_from_account' => 'Imported from ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'This is not a valid IBAN.',
|
'iban' => 'This is not a valid IBAN.',
|
||||||
'zero_or_more' => 'The value cannot be negative.',
|
'zero_or_more' => 'The value cannot be negative.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'The source account equals the destination account.',
|
'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_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.',
|
'unique_iban_for_user' => 'It looks like this IBAN is already in use.',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Pre requisitos para YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Pre requisitos para YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Configuración para ":key"',
|
'job_configuration_breadcrumb' => 'Configuración para ":key"',
|
||||||
'job_status_breadcrumb' => 'Estado de importación de ":key"',
|
'job_status_breadcrumb' => 'Estado de importación de ":key"',
|
||||||
'cannot_create_for_provider' => 'Firefly III no puede crear un trabajo para el ":provider"-proveedor.',
|
|
||||||
'disabled_for_demo_user' => 'deshabilitado en demo',
|
'disabled_for_demo_user' => 'deshabilitado en demo',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Importar un archivo',
|
|
||||||
'general_index_intro' => 'Bienvenido a la rutina de importación de Firefly III. Hay algunas formas de importar datos a Firefly III, que se muestran aquí como botones.',
|
'general_index_intro' => 'Bienvenido a la rutina de importación de Firefly III. Hay algunas formas de importar datos a Firefly III, que se muestran aquí como botones.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Importar usando FinTS',
|
'button_fints' => 'Importar usando FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Configuración global de importación',
|
|
||||||
'global_config_text' => 'En el futuro, este cuadro contará con preferencias que se aplican a todos los proveedores de importación anterior.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Importar requisitos previos',
|
'need_prereq_title' => 'Importar requisitos previos',
|
||||||
'need_prereq_intro' => 'Algunos métodos de importación necesitan su atención antes de que se pueden utilizar. Por ejemplo, podrían requerir claves API especiales o secretos de aplicación. Usted puede configurarlos aquí. El icono indica si se han cumplido los requisitos previos.',
|
'need_prereq_intro' => 'Algunos métodos de importación necesitan su atención antes de que se pueden utilizar. Por ejemplo, podrían requerir claves API especiales o secretos de aplicación. Usted puede configurarlos aquí. El icono indica si se han cumplido los requisitos previos.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Pre requisitos para las importaciones usando Quovo',
|
'do_prereq_quovo' => 'Pre requisitos para las importaciones usando Quovo',
|
||||||
'do_prereq_ynab' => 'Pre requisitos para las importaciones desde YNAB',
|
'do_prereq_ynab' => 'Pre requisitos para las importaciones desde YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Importar configuración',
|
|
||||||
'can_config_intro' => 'Algunos métodos de importación se pueden configurar a su gusto. Tienen configuración extra que usted puede modificar.',
|
|
||||||
'do_config_fake' => 'Configuración para el proveedor de falso',
|
|
||||||
'do_config_file' => 'Configuración para la importación de archivos',
|
|
||||||
'do_config_bunq' => 'Configuración para la importación de bunq',
|
|
||||||
'do_config_spectre' => 'Configuración de importaciones desde Spectre',
|
|
||||||
'do_config_plaid' => 'Configuración de importaciones desde Plaid',
|
|
||||||
'do_config_yodlee' => 'Configuración de importaciones desde Yodlee',
|
|
||||||
'do_config_quovo' => 'Configuración de importaciones desde Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Pre requisitos para una importación desde el proveedor de importación falso',
|
'prereq_fake_title' => 'Pre requisitos para una importación desde el proveedor de importación falso',
|
||||||
'prereq_fake_text' => 'Este proveedor falso requiere una clave de API falsa. Debe ser 32 caracteres de largo. Puede utilizar este: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'Este proveedor falso requiere una clave de API falsa. Debe ser 32 caracteres de largo. Puede utilizar este: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Iniciar sesión con otro banco, o uno de estos bancos con credenciales diferentes.',
|
'spectre_login_new_login' => 'Iniciar sesión con otro banco, o uno de estos bancos con credenciales diferentes.',
|
||||||
'job_config_spectre_accounts_title' => 'Seleccione las cuentas desde las cuáles importar',
|
'job_config_spectre_accounts_title' => 'Seleccione las cuentas desde las cuáles importar',
|
||||||
'job_config_spectre_accounts_text' => 'Usted ha seleccionado ":name" (:country). Tienes :count cuenta(s) de este proveedor. Por favor, seleccione las cuentas de activo de Firefly III donde las transacciones provenientes de estas cuentas deben ser guardadas. Recuerde que, para poder importar datos, la cuenta de Firefly III y el ":name"-cuenta deben tener la misma moneda.',
|
'job_config_spectre_accounts_text' => 'Usted ha seleccionado ":name" (:country). Tienes :count cuenta(s) de este proveedor. Por favor, seleccione las cuentas de activo de Firefly III donde las transacciones provenientes de estas cuentas deben ser guardadas. Recuerde que, para poder importar datos, la cuenta de Firefly III y el ":name"-cuenta deben tener la misma moneda.',
|
||||||
'spectre_no_supported_accounts' => 'No se puede importar desde esta cuenta debido a un desajuste de monedas.',
|
|
||||||
'spectre_do_not_import' => '(no importar)',
|
'spectre_do_not_import' => '(no importar)',
|
||||||
'spectre_no_mapping' => 'Parece que no ha seleccionado ninguna cuenta desde la cual importar.',
|
'spectre_no_mapping' => 'Parece que no ha seleccionado ninguna cuenta desde la cual importar.',
|
||||||
'imported_from_account' => 'Importado de ":account"',
|
'imported_from_account' => 'Importado de ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'Este no es un IBAN válido.',
|
'iban' => 'Este no es un IBAN válido.',
|
||||||
'zero_or_more' => 'The value cannot be negative.',
|
'zero_or_more' => 'The value cannot be negative.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'La cuenta origen es igual que la cuenta destino.',
|
'source_equals_destination' => 'La cuenta origen es igual que la cuenta destino.',
|
||||||
'unique_account_number_for_user' => 'Parece que este número de cuenta ya está en uso.',
|
'unique_account_number_for_user' => 'Parece que este número de cuenta ya está en uso.',
|
||||||
'unique_iban_for_user' => 'Parece que este IBAN ya está en uso.',
|
'unique_iban_for_user' => 'Parece que este IBAN ya está en uso.',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Prérequis pour YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Prérequis pour YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Configuration pour ":key"',
|
'job_configuration_breadcrumb' => 'Configuration pour ":key"',
|
||||||
'job_status_breadcrumb' => 'Statut d\'importation pour ":key"',
|
'job_status_breadcrumb' => 'Statut d\'importation pour ":key"',
|
||||||
'cannot_create_for_provider' => 'Firefly III ne peut pas créer de tâche pour le fournisseur ":provider".',
|
|
||||||
'disabled_for_demo_user' => 'désactivé pour la démo',
|
'disabled_for_demo_user' => 'désactivé pour la démo',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Importer un fichier',
|
|
||||||
'general_index_intro' => 'Bienvenue dans la routine d\'importation de Firefly III. Il existe différentes façons d\'importer des données dans Firefly III, affichées ici sous forme de boutons.',
|
'general_index_intro' => 'Bienvenue dans la routine d\'importation de Firefly III. Il existe différentes façons d\'importer des données dans Firefly III, affichées ici sous forme de boutons.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Importer en utilisant FinTS',
|
'button_fints' => 'Importer en utilisant FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Configuration d\'importation globale',
|
|
||||||
'global_config_text' => 'À l\'avenir, cette boîte contiendra les préférences qui s\'appliquent à TOUTES les sources d\'importation ci-dessus.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Prérequis d\'importation',
|
'need_prereq_title' => 'Prérequis d\'importation',
|
||||||
'need_prereq_intro' => 'Certaines méthodes d\'importation nécessitent votre attention avant de pouvoir être utilisées. Par exemple, elles peuvent nécessiter des clés d\'API spéciales ou des clés secrètes. Vous pouvez les configurer ici. L\'icône indique si ces conditions préalables ont été remplies.',
|
'need_prereq_intro' => 'Certaines méthodes d\'importation nécessitent votre attention avant de pouvoir être utilisées. Par exemple, elles peuvent nécessiter des clés d\'API spéciales ou des clés secrètes. Vous pouvez les configurer ici. L\'icône indique si ces conditions préalables ont été remplies.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Prérequis pour les importations depuis Quovo',
|
'do_prereq_quovo' => 'Prérequis pour les importations depuis Quovo',
|
||||||
'do_prereq_ynab' => 'Prérequis pour les importations depuis YNAB',
|
'do_prereq_ynab' => 'Prérequis pour les importations depuis YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Configuration d\'importation',
|
|
||||||
'can_config_intro' => 'Certaines méthodes d’importation peuvent être configurées selon vos préférences. Elles ont des paramètres supplémentaires que vous pouvez modifier.',
|
|
||||||
'do_config_fake' => 'Configuration du simulateur d\'importation',
|
|
||||||
'do_config_file' => 'Configuration pour l’importation de fichier',
|
|
||||||
'do_config_bunq' => 'Configuration pour les importations depuis Bunq',
|
|
||||||
'do_config_spectre' => 'Configuration pour les importations depuis Spectre',
|
|
||||||
'do_config_plaid' => 'Configuration pour les importations depuis Plaid',
|
|
||||||
'do_config_yodlee' => 'Configuration pour les importations depuis Yodlee',
|
|
||||||
'do_config_quovo' => 'Configuration pour les importations depuis Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Prérequis pour une importation utilisant le simulateur d\'importation',
|
'prereq_fake_title' => 'Prérequis pour une importation utilisant le simulateur d\'importation',
|
||||||
'prereq_fake_text' => 'Le simulateur d\'importation nécessite une fausse clé d\'API. Vous pouvez utiliser la clé suivante : 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'Le simulateur d\'importation nécessite une fausse clé d\'API. Vous pouvez utiliser la clé suivante : 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'S\'identifier avec une autre banque, ou à une de ces banques avec un autre identifiant.',
|
'spectre_login_new_login' => 'S\'identifier avec une autre banque, ou à une de ces banques avec un autre identifiant.',
|
||||||
'job_config_spectre_accounts_title' => 'Sélectionnez le·s compte·s à importer',
|
'job_config_spectre_accounts_title' => 'Sélectionnez le·s compte·s à importer',
|
||||||
'job_config_spectre_accounts_text' => 'Vous avez sélectionné ":name" (:country). Vous avez :count compte·s disponible·s chez ce fournisseur. Veuillez sélectionner le·s compte·s d\'actifs Firefly III dans le·s·quel·s enregistrer les opérations. Souvenez-vous, pour importer des données, le compte Firefly III et le compte ":name" doivent avoir la même devise.',
|
'job_config_spectre_accounts_text' => 'Vous avez sélectionné ":name" (:country). Vous avez :count compte·s disponible·s chez ce fournisseur. Veuillez sélectionner le·s compte·s d\'actifs Firefly III dans le·s·quel·s enregistrer les opérations. Souvenez-vous, pour importer des données, le compte Firefly III et le compte ":name" doivent avoir la même devise.',
|
||||||
'spectre_no_supported_accounts' => 'Vous ne pouvez pas importer de données depuis ce compte car les devises ne sont pas identiques.',
|
|
||||||
'spectre_do_not_import' => '(ne pas importer)',
|
'spectre_do_not_import' => '(ne pas importer)',
|
||||||
'spectre_no_mapping' => 'Il semble que vous n\'avez sélectionné aucun compte depuis lequel importer.',
|
'spectre_no_mapping' => 'Il semble que vous n\'avez sélectionné aucun compte depuis lequel importer.',
|
||||||
'imported_from_account' => 'Importé depuis ":account"',
|
'imported_from_account' => 'Importé depuis ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'Il ne s\'agit pas d\'un IBAN valide.',
|
'iban' => 'Il ne s\'agit pas d\'un IBAN valide.',
|
||||||
'zero_or_more' => 'Le montant ne peut pas être négatif.',
|
'zero_or_more' => 'Le montant ne peut pas être négatif.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'Le compte source est identique au compte de destination.',
|
'source_equals_destination' => 'Le compte source est identique au compte de destination.',
|
||||||
'unique_account_number_for_user' => 'Il semble que ce numéro de compte est déjà utilisé.',
|
'unique_account_number_for_user' => 'Il semble que ce numéro de compte est déjà utilisé.',
|
||||||
'unique_iban_for_user' => 'Il semble que cet IBAN soit déjà utilisé.',
|
'unique_iban_for_user' => 'Il semble que cet IBAN soit déjà utilisé.',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Prerequisites for YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Prerequisites for YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Configuration for ":key"',
|
'job_configuration_breadcrumb' => 'Configuration for ":key"',
|
||||||
'job_status_breadcrumb' => 'Import status for ":key"',
|
'job_status_breadcrumb' => 'Import status for ":key"',
|
||||||
'cannot_create_for_provider' => 'Firefly III cannot create a job for the ":provider"-provider.',
|
|
||||||
'disabled_for_demo_user' => 'disabled in demo',
|
'disabled_for_demo_user' => 'disabled in demo',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Import a file',
|
|
||||||
'general_index_intro' => 'Welcome to Firefly III\'s import routine. There are a few ways of importing data into Firefly III, displayed here as buttons.',
|
'general_index_intro' => 'Welcome to Firefly III\'s import routine. There are a few ways of importing data into Firefly III, displayed here as buttons.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Import using FinTS',
|
'button_fints' => 'Import using FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Global import configuration',
|
|
||||||
'global_config_text' => 'In the future, this box will feature preferences that apply to ALL import providers above.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Import prerequisites',
|
'need_prereq_title' => 'Import prerequisites',
|
||||||
'need_prereq_intro' => 'Some import methods need your attention before they can be used. For example, they might require special API keys or application secrets. You can configure them here. The icon indicates if these prerequisites have been met.',
|
'need_prereq_intro' => 'Some import methods need your attention before they can be used. For example, they might require special API keys or application secrets. You can configure them here. The icon indicates if these prerequisites have been met.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Prerequisites for imports using Quovo',
|
'do_prereq_quovo' => 'Prerequisites for imports using Quovo',
|
||||||
'do_prereq_ynab' => 'Prerequisites for imports from YNAB',
|
'do_prereq_ynab' => 'Prerequisites for imports from YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Import configuration',
|
|
||||||
'can_config_intro' => 'Some import methods can be configured to your liking. They have extra settings you can tweak.',
|
|
||||||
'do_config_fake' => 'Configuration for the fake provider',
|
|
||||||
'do_config_file' => 'Configuration for file imports',
|
|
||||||
'do_config_bunq' => 'Configuration for bunq imports',
|
|
||||||
'do_config_spectre' => 'Configuration for imports from Spectre',
|
|
||||||
'do_config_plaid' => 'Configuration for imports from Plaid',
|
|
||||||
'do_config_yodlee' => 'Configuration for imports from Yodlee',
|
|
||||||
'do_config_quovo' => 'Configuration for imports from Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Prerequisites for an import from the fake import provider',
|
'prereq_fake_title' => 'Prerequisites for an import from the fake import provider',
|
||||||
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
||||||
'job_config_spectre_accounts_title' => 'Select accounts to import from',
|
'job_config_spectre_accounts_title' => 'Select accounts to import from',
|
||||||
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
||||||
'spectre_no_supported_accounts' => 'You cannot import from this account due to a currency mismatch.',
|
|
||||||
'spectre_do_not_import' => '(do not import)',
|
'spectre_do_not_import' => '(do not import)',
|
||||||
'spectre_no_mapping' => 'It seems you have not selected any accounts to import from.',
|
'spectre_no_mapping' => 'It seems you have not selected any accounts to import from.',
|
||||||
'imported_from_account' => 'Imported from ":account"',
|
'imported_from_account' => 'Imported from ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'Ini bukan IBAN yang valid.',
|
'iban' => 'Ini bukan IBAN yang valid.',
|
||||||
'zero_or_more' => 'Nilai tidak bisa negatif.',
|
'zero_or_more' => 'Nilai tidak bisa negatif.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'Akun sumber sama dengan akun tujuan.',
|
'source_equals_destination' => 'Akun sumber sama dengan akun tujuan.',
|
||||||
'unique_account_number_for_user' => 'Sepertinya nomor rekening ini sudah digunakan.',
|
'unique_account_number_for_user' => 'Sepertinya nomor rekening ini sudah digunakan.',
|
||||||
'unique_iban_for_user' => 'Sepertinya nomor rekening ini sudah digunakan.',
|
'unique_iban_for_user' => 'Sepertinya nomor rekening ini sudah digunakan.',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Prerequisiti per YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Prerequisiti per YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Configurazione per ":key"',
|
'job_configuration_breadcrumb' => 'Configurazione per ":key"',
|
||||||
'job_status_breadcrumb' => 'Stato di importazione per ":key"',
|
'job_status_breadcrumb' => 'Stato di importazione per ":key"',
|
||||||
'cannot_create_for_provider' => 'Firefly III non può creare un\'operazione per il provider ":provider".',
|
|
||||||
'disabled_for_demo_user' => 'disabilitata nella demo',
|
'disabled_for_demo_user' => 'disabilitata nella demo',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Importa un file',
|
|
||||||
'general_index_intro' => 'Benvenuti nella routine di importazione di Firefly III. Esistono alcuni modi per importare dati in Firefly III, visualizzati qui come pulsanti.',
|
'general_index_intro' => 'Benvenuti nella routine di importazione di Firefly III. Esistono alcuni modi per importare dati in Firefly III, visualizzati qui come pulsanti.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Importa usando FinTS',
|
'button_fints' => 'Importa usando FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Configurazione globale di importazione',
|
|
||||||
'global_config_text' => 'In futuro questo riquadro presenterà le preferenze che si applicano a TUTTI i fornitori di importazione di cui sopra.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Prerequisiti di importazione',
|
'need_prereq_title' => 'Prerequisiti di importazione',
|
||||||
'need_prereq_intro' => 'Alcuni metodi di importazione richiedono la tua attenzione prima che possano essere utilizzati. Ad esempio, potrebbero richiedere speciali chiavi API o segreti dell\'applicazione. Puoi configurarli qui. L\'icona indica se questi prerequisiti sono stati soddisfatti.',
|
'need_prereq_intro' => 'Alcuni metodi di importazione richiedono la tua attenzione prima che possano essere utilizzati. Ad esempio, potrebbero richiedere speciali chiavi API o segreti dell\'applicazione. Puoi configurarli qui. L\'icona indica se questi prerequisiti sono stati soddisfatti.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Prerequisiti per le importazioni usando Quovo',
|
'do_prereq_quovo' => 'Prerequisiti per le importazioni usando Quovo',
|
||||||
'do_prereq_ynab' => 'Prerequisiti per le importazioni da YNAB',
|
'do_prereq_ynab' => 'Prerequisiti per le importazioni da YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Configurazione di importazione',
|
|
||||||
'can_config_intro' => 'Alcuni metodi di importazione possono essere configurati a tuo piacimento. Hanno ulteriori impostazioni che puoi modificare.',
|
|
||||||
'do_config_fake' => 'Configurazione per il fornitore fittizio',
|
|
||||||
'do_config_file' => 'Configurazione per le importazioni da file',
|
|
||||||
'do_config_bunq' => 'Configurazione per le importazioni da bunq',
|
|
||||||
'do_config_spectre' => 'Configurazione per importazioni da Spectre',
|
|
||||||
'do_config_plaid' => 'Configurazione per importazioni da Plaid',
|
|
||||||
'do_config_yodlee' => 'Configurazione per importazioni da Yodlee',
|
|
||||||
'do_config_quovo' => 'Configurazione per importazioni da Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Prerequisiti per un\'importazione dal fornitore di importazione fittizio',
|
'prereq_fake_title' => 'Prerequisiti per un\'importazione dal fornitore di importazione fittizio',
|
||||||
'prereq_fake_text' => 'Questo provider fittizio richiede una chiave API fittizia. Deve contenere 32 caratteri. È possibile utilizzare questa: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'Questo provider fittizio richiede una chiave API fittizia. Deve contenere 32 caratteri. È possibile utilizzare questa: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Accedi con un\'altra banca o con una di queste banche con credenziali diverse.',
|
'spectre_login_new_login' => 'Accedi con un\'altra banca o con una di queste banche con credenziali diverse.',
|
||||||
'job_config_spectre_accounts_title' => 'Seleziona i conti dai quali importare',
|
'job_config_spectre_accounts_title' => 'Seleziona i conti dai quali importare',
|
||||||
'job_config_spectre_accounts_text' => 'Hai selezionato ":name" (:country). Hai :count conti disponibili da questo fornitore. Seleziona i conti attività di Firefly III in cui devono essere memorizzate le transazioni da questi conti. Ricorda che, per importare i dati, sia il conto di Firefly III sia il conto ":name" devono avere la stessa valuta.',
|
'job_config_spectre_accounts_text' => 'Hai selezionato ":name" (:country). Hai :count conti disponibili da questo fornitore. Seleziona i conti attività di Firefly III in cui devono essere memorizzate le transazioni da questi conti. Ricorda che, per importare i dati, sia il conto di Firefly III sia il conto ":name" devono avere la stessa valuta.',
|
||||||
'spectre_no_supported_accounts' => 'Non puoi importare da questo conto perché le valute non corrispondono.',
|
|
||||||
'spectre_do_not_import' => '(non importare)',
|
'spectre_do_not_import' => '(non importare)',
|
||||||
'spectre_no_mapping' => 'Sembra che tu non abbia selezionato nessun account da cui importare.',
|
'spectre_no_mapping' => 'Sembra che tu non abbia selezionato nessun account da cui importare.',
|
||||||
'imported_from_account' => 'Importato da ":account"',
|
'imported_from_account' => 'Importato da ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'Questo non è un IBAN valido.',
|
'iban' => 'Questo non è un IBAN valido.',
|
||||||
'zero_or_more' => 'Il valore non può essere negativo.',
|
'zero_or_more' => 'Il valore non può essere negativo.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'Il conto di origine è uguale al conto di destinazione.',
|
'source_equals_destination' => 'Il conto di origine è uguale al conto di destinazione.',
|
||||||
'unique_account_number_for_user' => 'Sembra che questo numero di conto sia già in uso.',
|
'unique_account_number_for_user' => 'Sembra che questo numero di conto sia già in uso.',
|
||||||
'unique_iban_for_user' => 'Sembra che questo IBAN sia già in uso.',
|
'unique_iban_for_user' => 'Sembra che questo IBAN sia già in uso.',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Vereisten voor YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Vereisten voor YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Instellingen voor ":key"',
|
'job_configuration_breadcrumb' => 'Instellingen voor ":key"',
|
||||||
'job_status_breadcrumb' => 'Importstatus voor ":key"',
|
'job_status_breadcrumb' => 'Importstatus voor ":key"',
|
||||||
'cannot_create_for_provider' => 'Firefly III kan niet importeren met behulp van ":provider".',
|
|
||||||
'disabled_for_demo_user' => 'uitgeschakeld in demo',
|
'disabled_for_demo_user' => 'uitgeschakeld in demo',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Importeer een bestand',
|
|
||||||
'general_index_intro' => 'Dit is de import-routine van Firefly III. Er zijn verschillende manieren om gegevens te importeren in Firefly III, hier als knoppen weergegeven.',
|
'general_index_intro' => 'Dit is de import-routine van Firefly III. Er zijn verschillende manieren om gegevens te importeren in Firefly III, hier als knoppen weergegeven.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Importeer via FinTS',
|
'button_fints' => 'Importeer via FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Configuratiebestand',
|
|
||||||
'global_config_text' => 'In de toekomst bevat dit vak voorkeuren die van toepassing zijn op ALLE bovenstaande importproviders.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Importvereisten',
|
'need_prereq_title' => 'Importvereisten',
|
||||||
'need_prereq_intro' => 'Sommige importmethoden hebben je aandacht nodig voor ze gebruikt kunnen worden. Ze vereisen bijvoorbeeld speciale API-sleutels of geheime waardes. Je kan ze hier instellen. Het icoontje geeft aan of deze vereisten al ingevuld zijn.',
|
'need_prereq_intro' => 'Sommige importmethoden hebben je aandacht nodig voor ze gebruikt kunnen worden. Ze vereisen bijvoorbeeld speciale API-sleutels of geheime waardes. Je kan ze hier instellen. Het icoontje geeft aan of deze vereisten al ingevuld zijn.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Vereisten voor een import via Quovo',
|
'do_prereq_quovo' => 'Vereisten voor een import via Quovo',
|
||||||
'do_prereq_ynab' => 'Vereisten voor imports van YNAB',
|
'do_prereq_ynab' => 'Vereisten voor imports van YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Importinstellingen',
|
|
||||||
'can_config_intro' => 'Sommige importmethodes kunnen ingesteld worden zoals jij dat wilt. Er zijn extra instellingen die je aan kan passen.',
|
|
||||||
'do_config_fake' => 'Instellingen voor de nep-importhulp',
|
|
||||||
'do_config_file' => 'Instellingen voor importeren van bestanden',
|
|
||||||
'do_config_bunq' => 'Instellingen voor importeren uit bunq',
|
|
||||||
'do_config_spectre' => 'Instellingen voor importeren uit Spectre',
|
|
||||||
'do_config_plaid' => 'Instellingen voor importeren uit Plaid',
|
|
||||||
'do_config_yodlee' => 'Instellingen voor importeren uit Yodlee',
|
|
||||||
'do_config_quovo' => 'Instellingen voor importeren uit Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Instellingen voor importeren uit de nep-importhulp',
|
'prereq_fake_title' => 'Instellingen voor importeren uit de nep-importhulp',
|
||||||
'prereq_fake_text' => 'Deze nep-provider heeft een neppe API key nodig. Deze moet 32 tekens lang zijn. Je mag deze gebruiken: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'Deze nep-provider heeft een neppe API key nodig. Deze moet 32 tekens lang zijn. Je mag deze gebruiken: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Log in via een andere bank, of via een van deze banken met andere inloggegevens.',
|
'spectre_login_new_login' => 'Log in via een andere bank, of via een van deze banken met andere inloggegevens.',
|
||||||
'job_config_spectre_accounts_title' => 'Selecteer de rekeningen waaruit je wilt importeren',
|
'job_config_spectre_accounts_title' => 'Selecteer de rekeningen waaruit je wilt importeren',
|
||||||
'job_config_spectre_accounts_text' => 'Je hebt ":name" (:country) geselecteerd. Je hebt :count rekening(en) bij deze provider. Kies de Firefly III betaalrekening(en) waar je de transacties in wilt opslaan. Denk er aan dat zowel de ":name"-rekeningen als de Firefly III rekeningen dezelfde valuta moeten hebben.',
|
'job_config_spectre_accounts_text' => 'Je hebt ":name" (:country) geselecteerd. Je hebt :count rekening(en) bij deze provider. Kies de Firefly III betaalrekening(en) waar je de transacties in wilt opslaan. Denk er aan dat zowel de ":name"-rekeningen als de Firefly III rekeningen dezelfde valuta moeten hebben.',
|
||||||
'spectre_no_supported_accounts' => 'Je kan niet importeren van deze rekening omdat de valuta niet overeen komt.',
|
|
||||||
'spectre_do_not_import' => '(niet importeren)',
|
'spectre_do_not_import' => '(niet importeren)',
|
||||||
'spectre_no_mapping' => 'Je hebt geen rekeningen geselecteerd om uit te importeren.',
|
'spectre_no_mapping' => 'Je hebt geen rekeningen geselecteerd om uit te importeren.',
|
||||||
'imported_from_account' => 'Geïmporteerd uit ":account"',
|
'imported_from_account' => 'Geïmporteerd uit ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'Dit is niet een geldige IBAN.',
|
'iban' => 'Dit is niet een geldige IBAN.',
|
||||||
'zero_or_more' => 'De waarde mag niet negatief zijn.',
|
'zero_or_more' => 'De waarde mag niet negatief zijn.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'De bronrekening is gelijk aan de doelrekening.',
|
'source_equals_destination' => 'De bronrekening is gelijk aan de doelrekening.',
|
||||||
'unique_account_number_for_user' => 'Het lijkt erop dat dit rekeningnummer al in gebruik is.',
|
'unique_account_number_for_user' => 'Het lijkt erop dat dit rekeningnummer al in gebruik is.',
|
||||||
'unique_iban_for_user' => 'Het lijkt erop dat deze IBAN al in gebruik is.',
|
'unique_iban_for_user' => 'Het lijkt erop dat deze IBAN al in gebruik is.',
|
||||||
|
@ -1062,7 +1062,7 @@ return [
|
|||||||
'journal-amount' => 'Faktyczna kwota',
|
'journal-amount' => 'Faktyczna kwota',
|
||||||
'name' => 'Nazwa',
|
'name' => 'Nazwa',
|
||||||
'date' => 'Data',
|
'date' => 'Data',
|
||||||
'paid' => 'Zpłacone',
|
'paid' => 'Zapłacone',
|
||||||
'unpaid' => 'Niezapłacone',
|
'unpaid' => 'Niezapłacone',
|
||||||
'day' => 'Dzień',
|
'day' => 'Dzień',
|
||||||
'budgeted' => 'Zabudżetowano',
|
'budgeted' => 'Zabudżetowano',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Wymagania dla YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Wymagania dla YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Konfiguracja dla ":key"',
|
'job_configuration_breadcrumb' => 'Konfiguracja dla ":key"',
|
||||||
'job_status_breadcrumb' => 'Status importu dla ":key"',
|
'job_status_breadcrumb' => 'Status importu dla ":key"',
|
||||||
'cannot_create_for_provider' => 'Firefly III nie może utworzyć zadania dla dostawcy ":provider".',
|
|
||||||
'disabled_for_demo_user' => 'zablokowane na demo',
|
'disabled_for_demo_user' => 'zablokowane na demo',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Importuj plik',
|
|
||||||
'general_index_intro' => 'Witamy w procedurze importu Firefly III. Istnieje kilka sposobów importowania danych do Firefly III.',
|
'general_index_intro' => 'Witamy w procedurze importu Firefly III. Istnieje kilka sposobów importowania danych do Firefly III.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Importuj za pomocą FinTS',
|
'button_fints' => 'Importuj za pomocą FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Globalna konfiguracja importu',
|
|
||||||
'global_config_text' => 'W przyszłości, to pole będzie przedstawiać preferencje, które mają zastosowanie do WSZYSTKICH dostawców importu powyżej.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Wymagania importu',
|
'need_prereq_title' => 'Wymagania importu',
|
||||||
'need_prereq_intro' => 'Niektóre metody importu wymagają Twojej uwagi zanim będą mogły być użyte. Na przykład, mogą wymagać specjalnych kluczy API lub sekretów aplikacji. Tutaj możesz je skonfigurować. Ikonka wskazuje czy wymagania zostały spełnione.',
|
'need_prereq_intro' => 'Niektóre metody importu wymagają Twojej uwagi zanim będą mogły być użyte. Na przykład, mogą wymagać specjalnych kluczy API lub sekretów aplikacji. Tutaj możesz je skonfigurować. Ikonka wskazuje czy wymagania zostały spełnione.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Wymagania dla importu za pomocą Quovo',
|
'do_prereq_quovo' => 'Wymagania dla importu za pomocą Quovo',
|
||||||
'do_prereq_ynab' => 'Wymagania dla importu za pomocą YNAB',
|
'do_prereq_ynab' => 'Wymagania dla importu za pomocą YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Importuj konfigurację',
|
|
||||||
'can_config_intro' => 'Niektóre metody importu można skonfigurować do swoich potrzeb. Mają one dodatkowe ustawienia, które możesz dostosować.',
|
|
||||||
'do_config_fake' => 'Konfiguracja dla fałszywego dostawcy',
|
|
||||||
'do_config_file' => 'Konfiguracja dla importu plików',
|
|
||||||
'do_config_bunq' => 'Konfiguracja dla importu z bunq',
|
|
||||||
'do_config_spectre' => 'Konfiguracja dla importu używającego Spectre',
|
|
||||||
'do_config_plaid' => 'Konfiguracja dla importu używającego Plaid',
|
|
||||||
'do_config_yodlee' => 'Konfiguracja dla importu używającego Yodlee',
|
|
||||||
'do_config_quovo' => 'Konfiguracja dla importu używającego Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Wymagania dla importu używającego fałszywego dostawcy importu',
|
'prereq_fake_title' => 'Wymagania dla importu używającego fałszywego dostawcy importu',
|
||||||
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
||||||
'job_config_spectre_accounts_title' => 'Select accounts to import from',
|
'job_config_spectre_accounts_title' => 'Select accounts to import from',
|
||||||
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
||||||
'spectre_no_supported_accounts' => 'You cannot import from this account due to a currency mismatch.',
|
|
||||||
'spectre_do_not_import' => '(nie importuj)',
|
'spectre_do_not_import' => '(nie importuj)',
|
||||||
'spectre_no_mapping' => 'Wygląda na to, że nie wybrałeś żadnych kont z których można zaimportować dane.',
|
'spectre_no_mapping' => 'Wygląda na to, że nie wybrałeś żadnych kont z których można zaimportować dane.',
|
||||||
'imported_from_account' => 'Zaimportowane z ":account"',
|
'imported_from_account' => 'Zaimportowane z ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'To nie jest prawidłowy IBAN.',
|
'iban' => 'To nie jest prawidłowy IBAN.',
|
||||||
'zero_or_more' => 'Wartość nie może być ujemna.',
|
'zero_or_more' => 'Wartość nie może być ujemna.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'Konto źródłowe jest równe kontu docelowemu.',
|
'source_equals_destination' => 'Konto źródłowe jest równe kontu docelowemu.',
|
||||||
'unique_account_number_for_user' => 'Wygląda na to, że ten numer konta jest już w użyciu.',
|
'unique_account_number_for_user' => 'Wygląda na to, że ten numer konta jest już w użyciu.',
|
||||||
'unique_iban_for_user' => 'Wygląda na to, że ten IBAN jest już używany.',
|
'unique_iban_for_user' => 'Wygląda na to, że ten IBAN jest już używany.',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Pré-requisitos para YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Pré-requisitos para YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Configuração para ":key"',
|
'job_configuration_breadcrumb' => 'Configuração para ":key"',
|
||||||
'job_status_breadcrumb' => 'Status de importação para ":key"',
|
'job_status_breadcrumb' => 'Status de importação para ":key"',
|
||||||
'cannot_create_for_provider' => 'Firefly III não pode criar um trabalho para o provedor ":provider".',
|
|
||||||
'disabled_for_demo_user' => 'desativado no modo demonstração',
|
'disabled_for_demo_user' => 'desativado no modo demonstração',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Importar um arquivo',
|
|
||||||
'general_index_intro' => 'Bem-vindo à rotina de importação do Firefly III. Existem algumas maneiras de importar dados no Firefly III; elas estão mostradas aqui como botões.',
|
'general_index_intro' => 'Bem-vindo à rotina de importação do Firefly III. Existem algumas maneiras de importar dados no Firefly III; elas estão mostradas aqui como botões.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Importar usando FinTS',
|
'button_fints' => 'Importar usando FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Configuração global de importação',
|
|
||||||
'global_config_text' => 'No futuro, esta caixa terá preferências que se aplicam a TODOS os provedores de importação acima.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Pré-requisitos de importação',
|
'need_prereq_title' => 'Pré-requisitos de importação',
|
||||||
'need_prereq_intro' => 'Alguns metodos de importacao necessitam da tua atencao antes que possam ser usados. Por exemplo, eles podem necessitar de uma chave especial da API. Podes configurar tudo aqui. O icon indica se esses pre-requesitos foram cumpridos.',
|
'need_prereq_intro' => 'Alguns metodos de importacao necessitam da tua atencao antes que possam ser usados. Por exemplo, eles podem necessitar de uma chave especial da API. Podes configurar tudo aqui. O icon indica se esses pre-requesitos foram cumpridos.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Pre-requesitos para a importacao do Quovo',
|
'do_prereq_quovo' => 'Pre-requesitos para a importacao do Quovo',
|
||||||
'do_prereq_ynab' => 'Pre-requesitos para a importacao do YNAB',
|
'do_prereq_ynab' => 'Pre-requesitos para a importacao do YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Importar configuracao',
|
|
||||||
'can_config_intro' => 'Alguns metodos de importacao podem ser configurados ao teu gosto. Eles contem propriedades extra que podes ajustar.',
|
|
||||||
'do_config_fake' => 'Configuracao para o provedor ficticio',
|
|
||||||
'do_config_file' => 'Configuracao para a importacao de ficheiros',
|
|
||||||
'do_config_bunq' => 'Configuracao para a importacao pelo bunq',
|
|
||||||
'do_config_spectre' => 'Configuracao para a importacao pelo Spectre',
|
|
||||||
'do_config_plaid' => 'Configuracao para a importacao pelo Plaid',
|
|
||||||
'do_config_yodlee' => 'Configuracao para a importacao pelo Yodlee',
|
|
||||||
'do_config_quovo' => 'Configuracao para a importacao pelo Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Configuracao para a importacao pelo provedor de importacao ficticio',
|
'prereq_fake_title' => 'Configuracao para a importacao pelo provedor de importacao ficticio',
|
||||||
'prereq_fake_text' => 'Este provedor ficticio necessita de uma chave API ficticia. Ela tem de conter 32 caracteres de comprimento. Podes usar esta: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'Este provedor ficticio necessita de uma chave API ficticia. Ela tem de conter 32 caracteres de comprimento. Podes usar esta: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
||||||
'job_config_spectre_accounts_title' => 'Seleccionar as contas de onde vai importar',
|
'job_config_spectre_accounts_title' => 'Seleccionar as contas de onde vai importar',
|
||||||
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
||||||
'spectre_no_supported_accounts' => 'You cannot import from this account due to a currency mismatch.',
|
|
||||||
'spectre_do_not_import' => '(nao importar)',
|
'spectre_do_not_import' => '(nao importar)',
|
||||||
'spectre_no_mapping' => 'It seems you have not selected any accounts to import from.',
|
'spectre_no_mapping' => 'It seems you have not selected any accounts to import from.',
|
||||||
'imported_from_account' => 'Importado de ":account"',
|
'imported_from_account' => 'Importado de ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'Este não é um válido IBAN.',
|
'iban' => 'Este não é um válido IBAN.',
|
||||||
'zero_or_more' => 'O valor não pode ser negativo.',
|
'zero_or_more' => 'O valor não pode ser negativo.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'A conta de origem é igual à conta de destino.',
|
'source_equals_destination' => 'A conta de origem é igual à conta de destino.',
|
||||||
'unique_account_number_for_user' => 'Parece que este número de conta já está em uso.',
|
'unique_account_number_for_user' => 'Parece que este número de conta já está em uso.',
|
||||||
'unique_iban_for_user' => 'Parece que este IBAN já está em uso.',
|
'unique_iban_for_user' => 'Parece que este IBAN já está em uso.',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'Требования для YNAB',
|
'prerequisites_breadcrumb_ynab' => 'Требования для YNAB',
|
||||||
'job_configuration_breadcrumb' => 'Конфигурация для ":key"',
|
'job_configuration_breadcrumb' => 'Конфигурация для ":key"',
|
||||||
'job_status_breadcrumb' => 'Статус импорта для ":key"',
|
'job_status_breadcrumb' => 'Статус импорта для ":key"',
|
||||||
'cannot_create_for_provider' => 'Firefly III не может создать задачу для ":provider"-провайдера.',
|
|
||||||
'disabled_for_demo_user' => 'отключено в демо-версии',
|
'disabled_for_demo_user' => 'отключено в демо-версии',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Импортировать файл',
|
|
||||||
'general_index_intro' => 'Добро пожаловать в инструмент импорта Firefly III. Существует несколько способов импорта данных в Firefly III, отображаемых здесь в виде кнопок.',
|
'general_index_intro' => 'Добро пожаловать в инструмент импорта Firefly III. Существует несколько способов импорта данных в Firefly III, отображаемых здесь в виде кнопок.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'Import using FinTS',
|
'button_fints' => 'Import using FinTS',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Глобальные настройки импорта',
|
|
||||||
'global_config_text' => 'In the future, this box will feature preferences that apply to ALL import providers above.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Import prerequisites',
|
'need_prereq_title' => 'Import prerequisites',
|
||||||
'need_prereq_intro' => 'Some import methods need your attention before they can be used. For example, they might require special API keys or application secrets. You can configure them here. The icon indicates if these prerequisites have been met.',
|
'need_prereq_intro' => 'Some import methods need your attention before they can be used. For example, they might require special API keys or application secrets. You can configure them here. The icon indicates if these prerequisites have been met.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Prerequisites for imports using Quovo',
|
'do_prereq_quovo' => 'Prerequisites for imports using Quovo',
|
||||||
'do_prereq_ynab' => 'Prerequisites for imports from YNAB',
|
'do_prereq_ynab' => 'Prerequisites for imports from YNAB',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'Импорт конфигурации',
|
|
||||||
'can_config_intro' => 'Some import methods can be configured to your liking. They have extra settings you can tweak.',
|
|
||||||
'do_config_fake' => 'Configuration for the fake provider',
|
|
||||||
'do_config_file' => 'Configuration for file imports',
|
|
||||||
'do_config_bunq' => 'Configuration for bunq imports',
|
|
||||||
'do_config_spectre' => 'Конфигурация для импорта из Spectre',
|
|
||||||
'do_config_plaid' => 'Конфигурация для импорта из Plaid',
|
|
||||||
'do_config_yodlee' => 'Конфигурация для импорта из Yodlee',
|
|
||||||
'do_config_quovo' => 'Конфигурация для импорта из Quovo',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Prerequisites for an import from the fake import provider',
|
'prereq_fake_title' => 'Prerequisites for an import from the fake import provider',
|
||||||
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
||||||
'job_config_spectre_accounts_title' => 'Выберите счета, с которых будет производиться импорт',
|
'job_config_spectre_accounts_title' => 'Выберите счета, с которых будет производиться импорт',
|
||||||
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
||||||
'spectre_no_supported_accounts' => 'Вы не можете импортировать с этого счёта из-за несоответствия валюты.',
|
|
||||||
'spectre_do_not_import' => '(не импортировать)',
|
'spectre_do_not_import' => '(не импортировать)',
|
||||||
'spectre_no_mapping' => 'Похоже, вы не выбрали ни одного счёта для импорта.',
|
'spectre_no_mapping' => 'Похоже, вы не выбрали ни одного счёта для импорта.',
|
||||||
'imported_from_account' => 'Импортировано со счёта ":account"',
|
'imported_from_account' => 'Импортировано со счёта ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'Это некорректный IBAN.',
|
'iban' => 'Это некорректный IBAN.',
|
||||||
'zero_or_more' => 'Это значение не может быть отрицательным.',
|
'zero_or_more' => 'Это значение не может быть отрицательным.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'Счёт источник и счёт назначения совпадают.',
|
'source_equals_destination' => 'Счёт источник и счёт назначения совпадают.',
|
||||||
'unique_account_number_for_user' => 'Этот номер счёта уже используется.',
|
'unique_account_number_for_user' => 'Этот номер счёта уже используется.',
|
||||||
'unique_iban_for_user' => 'Этот IBAN уже используется.',
|
'unique_iban_for_user' => 'Этот IBAN уже используется.',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'YNAB için Önkoşullar',
|
'prerequisites_breadcrumb_ynab' => 'YNAB için Önkoşullar',
|
||||||
'job_configuration_breadcrumb' => 'Yapılandırma için ":key"',
|
'job_configuration_breadcrumb' => 'Yapılandırma için ":key"',
|
||||||
'job_status_breadcrumb' => 'Aktarma durumu ":key" için',
|
'job_status_breadcrumb' => 'Aktarma durumu ":key" için',
|
||||||
'cannot_create_for_provider' => 'Firefly III bir iş için oluşturamıyor ":provider".',
|
|
||||||
'disabled_for_demo_user' => 'demoda devre dışı',
|
'disabled_for_demo_user' => 'demoda devre dışı',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => 'Bir Dosyayı içe aktar',
|
|
||||||
'general_index_intro' => 'Firefly aktarım programına hoş geldiniz. Firefly III içine dosya aktarmanın burada bir kaç yolu var, burada olarak görüntülenmekte.',
|
'general_index_intro' => 'Firefly aktarım programına hoş geldiniz. Firefly III içine dosya aktarmanın burada bir kaç yolu var, burada olarak görüntülenmekte.',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => 'FinTS kullanarak içe aktar',
|
'button_fints' => 'FinTS kullanarak içe aktar',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => 'Genel aktarma yapılandırması',
|
|
||||||
'global_config_text' => 'Gelecekte, bu kutuyu tüm alma sağlayıcıları için yukarıdaki uygulama tercihleri yer alacak.',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => 'Ön Koşullar',
|
'need_prereq_title' => 'Ön Koşullar',
|
||||||
'need_prereq_intro' => 'Bunların kullanılabilmesi için önce bazı alma yöntemleri dikkat etmeniz gereken. Örneğin, özel API anahtar taşı ya da uygulama sırları gerektirebilir. Burada bunları konfigüre edebilirsiniz. Bu önkoşullar karşılandıktan simge gösterir.',
|
'need_prereq_intro' => 'Bunların kullanılabilmesi için önce bazı alma yöntemleri dikkat etmeniz gereken. Örneğin, özel API anahtar taşı ya da uygulama sırları gerektirebilir. Burada bunları konfigüre edebilirsiniz. Bu önkoşullar karşılandıktan simge gösterir.',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => 'Quovo kullanarak içe aktarma için ön koşullar',
|
'do_prereq_quovo' => 'Quovo kullanarak içe aktarma için ön koşullar',
|
||||||
'do_prereq_ynab' => 'YNAB içeri aktarım için ön şartlar',
|
'do_prereq_ynab' => 'YNAB içeri aktarım için ön şartlar',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => 'İçe aktarma yapılandırması',
|
|
||||||
'can_config_intro' => 'Sizin beğeninize göre bazı alma yöntemleri yapılandırılabilir. ',
|
|
||||||
'do_config_fake' => 'Sahte sağlayıcı için yapılandırma',
|
|
||||||
'do_config_file' => 'Dosya aktarma için ayarlar',
|
|
||||||
'do_config_bunq' => 'Bunq ithalat için yapılandırma',
|
|
||||||
'do_config_spectre' => 'Spectre içe aktarım için yapılandırma',
|
|
||||||
'do_config_plaid' => 'Plaid içe aktarım için yapılandırma',
|
|
||||||
'do_config_yodlee' => 'Yodlee içe aktarım için yapılandırma',
|
|
||||||
'do_config_quovo' => 'Quovo içe aktarım için yapılandırma',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => 'Prerequisites for an import from the fake import provider',
|
'prereq_fake_title' => 'Prerequisites for an import from the fake import provider',
|
||||||
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
'prereq_fake_text' => 'This fake provider requires a fake API key. It must be 32 characters long. You can use this one: 123456789012345678901234567890AA',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
'spectre_login_new_login' => 'Login with another bank, or one of these banks with different credentials.',
|
||||||
'job_config_spectre_accounts_title' => 'Select accounts to import from',
|
'job_config_spectre_accounts_title' => 'Select accounts to import from',
|
||||||
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
'job_config_spectre_accounts_text' => 'You have selected ":name" (:country). You have :count account(s) available from this provider. Please select the Firefly III asset account(s) where the transactions from these accounts should be stored. Remember, in order to import data both the Firefly III account and the ":name"-account must have the same currency.',
|
||||||
'spectre_no_supported_accounts' => 'You cannot import from this account due to a currency mismatch.',
|
|
||||||
'spectre_do_not_import' => '(do not import)',
|
'spectre_do_not_import' => '(do not import)',
|
||||||
'spectre_no_mapping' => 'It seems you have not selected any accounts to import from.',
|
'spectre_no_mapping' => 'It seems you have not selected any accounts to import from.',
|
||||||
'imported_from_account' => 'Imported from ":account"',
|
'imported_from_account' => 'Imported from ":account"',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => 'Bu geçerli bir IBAN değil.',
|
'iban' => 'Bu geçerli bir IBAN değil.',
|
||||||
'zero_or_more' => 'The value cannot be negative.',
|
'zero_or_more' => 'The value cannot be negative.',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => 'Kaynak hesabın hedef hesap eşittir.',
|
'source_equals_destination' => 'Kaynak hesabın hedef hesap eşittir.',
|
||||||
'unique_account_number_for_user' => 'Bu hesap numarası zaten kullanılmaktadır.',
|
'unique_account_number_for_user' => 'Bu hesap numarası zaten kullanılmaktadır.',
|
||||||
'unique_iban_for_user' => 'Bu IBAN numarası zaten kullanılmaktadır.',
|
'unique_iban_for_user' => 'Bu IBAN numarası zaten kullanılmaktadır.',
|
||||||
|
@ -953,11 +953,11 @@ return [
|
|||||||
'report_budget' => '自 :start 至 :end 的预算报表',
|
'report_budget' => '自 :start 至 :end 的预算报表',
|
||||||
'report_tag' => '自 :start 至 :end 的标签报表',
|
'report_tag' => '自 :start 至 :end 的标签报表',
|
||||||
'quick_link_reports' => '快速连结',
|
'quick_link_reports' => '快速连结',
|
||||||
'quick_link_examples' => 'These are just some example links to get you started. Check out the help pages under the (?)-button for information on all reports and the magic words you can use.',
|
'quick_link_examples' => '这只是一些例子链接。查看 (?) 下的帮助按钮, 提供所有报告和你可以使用的神奇词汇的信息.',
|
||||||
'quick_link_default_report' => '预设财务报表',
|
'quick_link_default_report' => '预设财务报表',
|
||||||
'quick_link_audit_report' => '交易历史概览',
|
'quick_link_audit_report' => '交易历史概览',
|
||||||
'report_this_month_quick' => '目前月份之全部帐户',
|
'report_this_month_quick' => '目前月份之全部帐户',
|
||||||
'report_last_month_quick' => 'Last month, all accounts',
|
'report_last_month_quick' => '上个月之全部帐户',
|
||||||
'report_this_year_quick' => '目前年份之全部帐户',
|
'report_this_year_quick' => '目前年份之全部帐户',
|
||||||
'report_this_fiscal_year_quick' => '目前财政年度之全部帐户',
|
'report_this_fiscal_year_quick' => '目前财政年度之全部帐户',
|
||||||
'report_all_time_quick' => '所有时间之全部帐户',
|
'report_all_time_quick' => '所有时间之全部帐户',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'YNAB 的先决条件',
|
'prerequisites_breadcrumb_ynab' => 'YNAB 的先决条件',
|
||||||
'job_configuration_breadcrumb' => '":key" 设定',
|
'job_configuration_breadcrumb' => '":key" 设定',
|
||||||
'job_status_breadcrumb' => '":key" 导入状态',
|
'job_status_breadcrumb' => '":key" 导入状态',
|
||||||
'cannot_create_for_provider' => 'Firefly III 无法为 ":provider"-供应商建立工作。',
|
|
||||||
'disabled_for_demo_user' => '在展示中不启用',
|
'disabled_for_demo_user' => '在展示中不启用',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => '导入档案',
|
|
||||||
'general_index_intro' => '欢迎来到 Firefly III 的导入例行。有几种方法可以将资料导入 Firefly III 中,在此以按钮表示。',
|
'general_index_intro' => '欢迎来到 Firefly III 的导入例行。有几种方法可以将资料导入 Firefly III 中,在此以按钮表示。',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => '使用 FinTS 导入',
|
'button_fints' => '使用 FinTS 导入',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => '全域导入设定',
|
|
||||||
'global_config_text' => '未来,此区块将提供可套用至上述全部服务供应商的偏好设定。',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => '导入先决条件',
|
'need_prereq_title' => '导入先决条件',
|
||||||
'need_prereq_intro' => '部分导入方式您得先在使用前注意一下。比方说,他们可能需要特别的串接秘钥或应用程式金钥,您可在此设定。此图示表示所属的先决条件已经媒合。',
|
'need_prereq_intro' => '部分导入方式您得先在使用前注意一下。比方说,他们可能需要特别的串接秘钥或应用程式金钥,您可在此设定。此图示表示所属的先决条件已经媒合。',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => '使用 Quovo 导入的先决条件',
|
'do_prereq_quovo' => '使用 Quovo 导入的先决条件',
|
||||||
'do_prereq_ynab' => '从 YNAB 导入的先决条件',
|
'do_prereq_ynab' => '从 YNAB 导入的先决条件',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => '导入设定',
|
|
||||||
'can_config_intro' => '部分导入方式可以依照您的喜好设定,它们有额外的设定选项可让您操作。',
|
|
||||||
'do_config_fake' => '假供应商的设定',
|
|
||||||
'do_config_file' => '档案导入的设定',
|
|
||||||
'do_config_bunq' => 'bunq 导入设定',
|
|
||||||
'do_config_spectre' => 'Spectre 导入设定',
|
|
||||||
'do_config_plaid' => '自 Plaid 的导入设定',
|
|
||||||
'do_config_yodlee' => '自 Yodlee 导入的设定',
|
|
||||||
'do_config_quovo' => '自 Quovo 导入的设定',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => '自假的导入供应商导入的先决条件',
|
'prereq_fake_title' => '自假的导入供应商导入的先决条件',
|
||||||
'prereq_fake_text' => '这个假的供应商需要一个假的 API 金钥,必须是32个字元长。您可以使用此:12446809901236890123690124444466990aa',
|
'prereq_fake_text' => '这个假的供应商需要一个假的 API 金钥,必须是32个字元长。您可以使用此:12446809901236890123690124444466990aa',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => '使用其他银行登入,或其中一间具有不同凭证的银行。',
|
'spectre_login_new_login' => '使用其他银行登入,或其中一间具有不同凭证的银行。',
|
||||||
'job_config_spectre_accounts_title' => '选择欲导入的帐户',
|
'job_config_spectre_accounts_title' => '选择欲导入的帐户',
|
||||||
'job_config_spectre_accounts_text' => '您以选择 ":name" (:country)。您在这个供应商有 :count 个可用帐户,请在 Firefly III 的资产帐户中选择这些交易应被储存的帐户。请记得,若要导入资料,Firefly III 与 ":name"-帐户两者均需使用相同货币。',
|
'job_config_spectre_accounts_text' => '您以选择 ":name" (:country)。您在这个供应商有 :count 个可用帐户,请在 Firefly III 的资产帐户中选择这些交易应被储存的帐户。请记得,若要导入资料,Firefly III 与 ":name"-帐户两者均需使用相同货币。',
|
||||||
'spectre_no_supported_accounts' => '因为货币不相符,你不能自此帐号导入。',
|
|
||||||
'spectre_do_not_import' => '(不导入)',
|
'spectre_do_not_import' => '(不导入)',
|
||||||
'spectre_no_mapping' => '您似乎没有选择任何欲导入的帐户。',
|
'spectre_no_mapping' => '您似乎没有选择任何欲导入的帐户。',
|
||||||
'imported_from_account' => '已自 ":account" 导入',
|
'imported_from_account' => '已自 ":account" 导入',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => '这不是有效的 IBAN。',
|
'iban' => '这不是有效的 IBAN。',
|
||||||
'zero_or_more' => '此数值不能为负数',
|
'zero_or_more' => '此数值不能为负数',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => '来源帐户与目标帐户相同。',
|
'source_equals_destination' => '来源帐户与目标帐户相同。',
|
||||||
'unique_account_number_for_user' => '看起来此帐户号码已在使用中。',
|
'unique_account_number_for_user' => '看起来此帐户号码已在使用中。',
|
||||||
'unique_iban_for_user' => '看起来此IBAN已在使用中。',
|
'unique_iban_for_user' => '看起来此IBAN已在使用中。',
|
||||||
|
@ -31,11 +31,9 @@ return [
|
|||||||
'prerequisites_breadcrumb_ynab' => 'YNAB 的先決條件',
|
'prerequisites_breadcrumb_ynab' => 'YNAB 的先決條件',
|
||||||
'job_configuration_breadcrumb' => '":key" 設定',
|
'job_configuration_breadcrumb' => '":key" 設定',
|
||||||
'job_status_breadcrumb' => '":key" 匯入狀態',
|
'job_status_breadcrumb' => '":key" 匯入狀態',
|
||||||
'cannot_create_for_provider' => 'Firefly III 無法為 ":provider"-供應商建立工作。',
|
|
||||||
'disabled_for_demo_user' => '在展示中不啟用',
|
'disabled_for_demo_user' => '在展示中不啟用',
|
||||||
|
|
||||||
// index page:
|
// index page:
|
||||||
'general_index_title' => '匯入檔案',
|
|
||||||
'general_index_intro' => '歡迎來到 Firefly III 的匯入例行。有幾種方法可以將資料匯入 Firefly III 中,在此以按鈕表示。',
|
'general_index_intro' => '歡迎來到 Firefly III 的匯入例行。有幾種方法可以將資料匯入 Firefly III 中,在此以按鈕表示。',
|
||||||
|
|
||||||
// import provider strings (index):
|
// import provider strings (index):
|
||||||
@ -50,9 +48,6 @@ return [
|
|||||||
'button_fints' => '使用 FinTS 匯入',
|
'button_fints' => '使用 FinTS 匯入',
|
||||||
|
|
||||||
|
|
||||||
// global config box (index)
|
|
||||||
'global_config_title' => '全域匯入設定',
|
|
||||||
'global_config_text' => '未來,此區塊將提供可套用至上述全部服務供應商的偏好設定。',
|
|
||||||
// prerequisites box (index)
|
// prerequisites box (index)
|
||||||
'need_prereq_title' => '匯入先決條件',
|
'need_prereq_title' => '匯入先決條件',
|
||||||
'need_prereq_intro' => '部分匯入方式您得先在使用前注意一下。比方說,他們可能需要特別的串接秘鑰或應用程式金鑰,您可在此設定。此圖示表示所屬的先決條件已經媒合。',
|
'need_prereq_intro' => '部分匯入方式您得先在使用前注意一下。比方說,他們可能需要特別的串接秘鑰或應用程式金鑰,您可在此設定。此圖示表示所屬的先決條件已經媒合。',
|
||||||
@ -65,17 +60,6 @@ return [
|
|||||||
'do_prereq_quovo' => '使用 Quovo 匯入的先決條件',
|
'do_prereq_quovo' => '使用 Quovo 匯入的先決條件',
|
||||||
'do_prereq_ynab' => '從 YNAB 匯入的先決條件',
|
'do_prereq_ynab' => '從 YNAB 匯入的先決條件',
|
||||||
|
|
||||||
// provider config box (index)
|
|
||||||
'can_config_title' => '匯入設定',
|
|
||||||
'can_config_intro' => '部分匯入方式可以依照您的喜好設定,它們有額外的設定選項可讓您操作。',
|
|
||||||
'do_config_fake' => '假供應商的設定',
|
|
||||||
'do_config_file' => '檔案匯入的設定',
|
|
||||||
'do_config_bunq' => 'bunq 匯入設定',
|
|
||||||
'do_config_spectre' => 'Spectre 匯入設定',
|
|
||||||
'do_config_plaid' => '自 Plaid 的匯入設定',
|
|
||||||
'do_config_yodlee' => '自 Yodlee 匯入的設定',
|
|
||||||
'do_config_quovo' => '自 Quovo 匯入的設定',
|
|
||||||
|
|
||||||
// prerequisites:
|
// prerequisites:
|
||||||
'prereq_fake_title' => '自假的匯入供應商匯入的先決條件',
|
'prereq_fake_title' => '自假的匯入供應商匯入的先決條件',
|
||||||
'prereq_fake_text' => '這個假的供應商需要一個假的 API 金鑰,必須是32個字元長。您可以使用此:12446809901236890123690124444466990aa',
|
'prereq_fake_text' => '這個假的供應商需要一個假的 API 金鑰,必須是32個字元長。您可以使用此:12446809901236890123690124444466990aa',
|
||||||
@ -138,7 +122,6 @@ return [
|
|||||||
'spectre_login_new_login' => '使用其他銀行登入,或其中一間具有不同憑證的銀行。',
|
'spectre_login_new_login' => '使用其他銀行登入,或其中一間具有不同憑證的銀行。',
|
||||||
'job_config_spectre_accounts_title' => '選擇欲匯入的帳戶',
|
'job_config_spectre_accounts_title' => '選擇欲匯入的帳戶',
|
||||||
'job_config_spectre_accounts_text' => '您以選擇 ":name" (:country)。您在這個供應商有 :count 個可用帳戶,請在 Firefly III 的資產帳戶中選擇這些交易應被儲存的帳戶。請記得,若要匯入資料,Firefly III 與 ":name"-帳戶兩者均需使用相同貨幣。',
|
'job_config_spectre_accounts_text' => '您以選擇 ":name" (:country)。您在這個供應商有 :count 個可用帳戶,請在 Firefly III 的資產帳戶中選擇這些交易應被儲存的帳戶。請記得,若要匯入資料,Firefly III 與 ":name"-帳戶兩者均需使用相同貨幣。',
|
||||||
'spectre_no_supported_accounts' => '因為貨幣不相符,你不能自此帳號匯入。',
|
|
||||||
'spectre_do_not_import' => '(不匯入)',
|
'spectre_do_not_import' => '(不匯入)',
|
||||||
'spectre_no_mapping' => '您似乎沒有選擇任何欲匯入的帳戶。',
|
'spectre_no_mapping' => '您似乎沒有選擇任何欲匯入的帳戶。',
|
||||||
'imported_from_account' => '已自 ":account" 匯入',
|
'imported_from_account' => '已自 ":account" 匯入',
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
return [
|
return [
|
||||||
'iban' => '這不是有效的 IBAN。',
|
'iban' => '這不是有效的 IBAN。',
|
||||||
'zero_or_more' => '此數值不能為負數',
|
'zero_or_more' => '此數值不能為負數',
|
||||||
|
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
|
||||||
'source_equals_destination' => '來源帳戶與目標帳戶相同。',
|
'source_equals_destination' => '來源帳戶與目標帳戶相同。',
|
||||||
'unique_account_number_for_user' => '看起來此帳戶號碼已在使用中。',
|
'unique_account_number_for_user' => '看起來此帳戶號碼已在使用中。',
|
||||||
'unique_iban_for_user' => '看起來此IBAN已在使用中。',
|
'unique_iban_for_user' => '看起來此IBAN已在使用中。',
|
||||||
|
@ -38,20 +38,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{#
|
|
||||||
<div class="col-lg-4 col-md-12 col-sm-12 col-xs-12">
|
|
||||||
<div class="box box-default">
|
|
||||||
<div class="box-header with-border">
|
|
||||||
<h3 class="box-title">{{ trans('import.global_config_title') }}</h3>
|
|
||||||
</div>
|
|
||||||
<div class="box-body">
|
|
||||||
<p>
|
|
||||||
{{ trans('import.global_config_text') }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
#}
|
|
||||||
<div class="col-lg-4 col-md-12 col-sm-12 col-xs-12">
|
<div class="col-lg-4 col-md-12 col-sm-12 col-xs-12">
|
||||||
<div class="box box-default">
|
<div class="box box-default">
|
||||||
<div class="box-header with-border">
|
<div class="box-header with-border">
|
||||||
@ -78,60 +64,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{#
|
|
||||||
<div class="col-lg-4 col-md-12 col-sm-12 col-xs-12">
|
|
||||||
<div class="box box-default">
|
|
||||||
<div class="box-header with-border">
|
|
||||||
<h3 class="box-title">{{ trans('import.can_config_title') }}</h3>
|
|
||||||
</div>
|
|
||||||
<div class="box-body">
|
|
||||||
<p>
|
|
||||||
{{ trans('import.can_config_title') }}
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
{% for name, provider in providers %}
|
|
||||||
{% if provider.has_config %}
|
|
||||||
<li><i class="fa fa-fw fa-wrench"></i> <a href="#">{{ trans('import.do_config_'~name) }}</a></li>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
#}
|
|
||||||
</div>
|
</div>
|
||||||
<!--
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
|
||||||
<div class="box box-default">
|
|
||||||
<div class="box-header with-border">
|
|
||||||
<h3 class="box-title">{{ 'reset_import_settings_title'|_ }}</h3>
|
|
||||||
</div>
|
|
||||||
<div class="box-body">
|
|
||||||
<p>
|
|
||||||
{{ 'reset_import_settings_text'|_ }}
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
{# bunq import #}
|
|
||||||
{% if routines.bunq == true %}
|
|
||||||
<li><a href="{{ route('import.reset', ['bunq']) }}">{{ 'reset_settings_bunq'|_ }}</a></li>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# import from Spectre #}
|
|
||||||
{% if routines.spectre == true %}
|
|
||||||
<li><a href="{{ route('import.reset', ['spectre']) }}">{{ 'reset_settings_spectre'|_ }}</a></li>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# import from Plaid #}
|
|
||||||
{% if routines.plaid == true %}
|
|
||||||
<li><a href="{{ route('import.reset', ['plaid']) }}">{{ 'reset_settings_plaid'|_ }}</a></li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
var keysUri = '{{ route('installer.keys') }}';
|
var keysUri = '{{ route('installer.keys') }}';
|
||||||
var upgradeUri = '{{ route('installer.upgrade') }}';
|
var upgradeUri = '{{ route('installer.upgrade') }}';
|
||||||
var verifyUri = '{{ route('installer.verify') }}';
|
var verifyUri = '{{ route('installer.verify') }}';
|
||||||
|
var decryptUri = '{{ route('installer.decrypt') }}';
|
||||||
var homeUri = '{{ route('home') }}';
|
var homeUri = '{{ route('home') }}';
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="v1/js/ff/install/index.js"></script>
|
<script type="text/javascript" src="v1/js/ff/install/index.js"></script>
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-footer">
|
<div class="box-footer">
|
||||||
<button type="submit" onclick="confirm('{{ 'are_you_sure'|_ }}')" class="btn btn-danger pull-right">
|
<button type="submit" onclick="return confirm('{{ 'are_you_sure'|_ }}');" class="btn btn-danger pull-right">
|
||||||
{{ 'delete_account_button'|_ }}
|
{{ 'delete_account_button'|_ }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -108,7 +108,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width:30%;">{{ trans('list.date') }}</td>
|
<td style="width:30%;">{{ trans('list.date') }}</td>
|
||||||
<td>{{ journal.date.formatLocalized(monthAndDayFormat) }}</td>
|
<td>{{ journal.date.formatLocalized(dateTimeFormat) }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col col-login mx-auto">
|
<div class="col col-login mx-auto">
|
||||||
<div class="text-center mb-6">
|
<div class="text-center mb-6">
|
||||||
<img src="v2/assets/images/firefly-iii-48.png" class="h-6" alt="Firefly III v{{ FF_VERSION }}" title="Firefly III v{{ FF_VERSION }}">
|
<img src="v2/images/basic-logo-square.png" class="h-6" alt="Firefly III v{{ FF_VERSION }}" title="Firefly III v{{ FF_VERSION }}">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{# ERRORS FOR RESET LOGIN STUFF #}
|
{# ERRORS FOR RESET LOGIN STUFF #}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col col-login mx-auto">
|
<div class="col col-login mx-auto">
|
||||||
<div class="text-center mb-6">
|
<div class="text-center mb-6">
|
||||||
<img src="v2/assets/images/firefly-iii-48.png" class="h-6" alt="Firefly III v{{ FF_VERSION }}" title="Firefly III v{{ FF_VERSION }}">
|
<img src="v2/images/basic-logo-square.png" class="h-6" alt="Firefly III v{{ FF_VERSION }}" title="Firefly III v{{ FF_VERSION }}">
|
||||||
</div>
|
</div>
|
||||||
<form class="card" action="{{ route('password.reset.request') }}" method="post">
|
<form class="card" action="{{ route('password.reset.request') }}" method="post">
|
||||||
|
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* api.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
/**
|
/**
|
||||||
* api.php
|
* api.php
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* channels.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
/**
|
/**
|
||||||
* channels.php
|
* channels.php
|
||||||
|
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* console.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
/**
|
/**
|
||||||
* console.php
|
* console.php
|
||||||
|
@ -30,6 +30,7 @@ Route::group(
|
|||||||
Route::post('keys', ['uses' => 'InstallController@keys', 'as' => 'keys']);
|
Route::post('keys', ['uses' => 'InstallController@keys', 'as' => 'keys']);
|
||||||
Route::post('upgrade', ['uses' => 'InstallController@upgrade', 'as' => 'upgrade']);
|
Route::post('upgrade', ['uses' => 'InstallController@upgrade', 'as' => 'upgrade']);
|
||||||
Route::post('verify', ['uses' => 'InstallController@verify', 'as' => 'verify']);
|
Route::post('verify', ['uses' => 'InstallController@verify', 'as' => 'verify']);
|
||||||
|
Route::post('decrypt', ['uses' => 'InstallController@decrypt', 'as' => 'decrypt']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
21
server.php
21
server.php
@ -1,4 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* server.php
|
||||||
|
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||||
|
*
|
||||||
|
* This file is part of Firefly III.
|
||||||
|
*
|
||||||
|
* Firefly III is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Firefly III is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,7 +74,7 @@ class VersionCheckEventHandlerTest extends TestCase
|
|||||||
|
|
||||||
// request thing:
|
// request thing:
|
||||||
$request->shouldReceive('call')->once()->andThrow(new FireflyException('Errrr'));
|
$request->shouldReceive('call')->once()->andThrow(new FireflyException('Errrr'));
|
||||||
$request->shouldReceive('getReleases')->once();
|
$request->shouldNotReceive('getReleases');
|
||||||
|
|
||||||
|
|
||||||
$handler = new VersionCheckEventHandler;
|
$handler = new VersionCheckEventHandler;
|
||||||
|
@ -125,7 +125,6 @@ class ImportArrayStorageTest extends TestCase
|
|||||||
$transactions = [$this->singleTransfer(), $this->singleWithdrawal(), $this->basedOnTransfer($transfer)];
|
$transactions = [$this->singleTransfer(), $this->singleWithdrawal(), $this->basedOnTransfer($transfer)];
|
||||||
$job->save();
|
$job->save();
|
||||||
|
|
||||||
|
|
||||||
// get some stuff:
|
// get some stuff:
|
||||||
$tag = $this->user()->tags()->inRandomOrder()->first();
|
$tag = $this->user()->tags()->inRandomOrder()->first();
|
||||||
$journal = $this->user()->transactionJournals()->inRandomOrder()->first();
|
$journal = $this->user()->transactionJournals()->inRandomOrder()->first();
|
||||||
@ -141,9 +140,9 @@ class ImportArrayStorageTest extends TestCase
|
|||||||
$ruleRepos = $this->mock(RuleRepositoryInterface::class);
|
$ruleRepos = $this->mock(RuleRepositoryInterface::class);
|
||||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||||
$repository->shouldReceive('getTransactions')->times(2)->andReturn($transactions);
|
$repository->shouldReceive('getTransactions')->times(2)->andReturn($transactions);
|
||||||
|
|
||||||
// mock calls:
|
// mock calls:
|
||||||
$collector->shouldReceive('setUser')->times(2);
|
$collector->shouldReceive('setUser')->times(2);
|
||||||
|
|
||||||
$repository->shouldReceive('setUser')->once();
|
$repository->shouldReceive('setUser')->once();
|
||||||
$repository->shouldReceive('setStatus')->withAnyArgs();
|
$repository->shouldReceive('setStatus')->withAnyArgs();
|
||||||
$ruleRepos->shouldReceive('setUser')->once();
|
$ruleRepos->shouldReceive('setUser')->once();
|
||||||
@ -554,7 +553,7 @@ class ImportArrayStorageTest extends TestCase
|
|||||||
return
|
return
|
||||||
[
|
[
|
||||||
'type' => 'transfer',
|
'type' => 'transfer',
|
||||||
'date' => $transfer->date->format('Y-m-d'),
|
'date' => $transfer->date->format('Y-m-d H:i:s'),
|
||||||
'tags' => '',
|
'tags' => '',
|
||||||
'user' => $this->user()->id,
|
'user' => $this->user()->id,
|
||||||
|
|
||||||
|
@ -472,7 +472,7 @@ class ChooseAccountsHandlerTest extends TestCase
|
|||||||
$usd = TransactionCurrency::where('code', 'USD')->first();
|
$usd = TransactionCurrency::where('code', 'USD')->first();
|
||||||
$first = $this->user()->accounts()->where('account_type_id', 3)->first();
|
$first = $this->user()->accounts()->where('account_type_id', 3)->first();
|
||||||
$second = $this->user()->accounts()->where('account_type_id', 3)->where('id', '!=', $first->id)->first();
|
$second = $this->user()->accounts()->where('account_type_id', 3)->where('id', '!=', $first->id)->first();
|
||||||
$accountRepos->shouldReceive('getAccountsByType')->withArgs([[AccountType::ASSET]])
|
$accountRepos->shouldReceive('getAccountsByType')->withArgs([[AccountType::ASSET, AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE]])
|
||||||
->once()->andReturn(new Collection([$first, $second]));
|
->once()->andReturn(new Collection([$first, $second]));
|
||||||
$accountRepos->shouldReceive('getMetaValue')->twice()->withArgs([Mockery::any(), 'currency_id'])
|
$accountRepos->shouldReceive('getMetaValue')->twice()->withArgs([Mockery::any(), 'currency_id'])
|
||||||
->andReturn(1, 2);
|
->andReturn(1, 2);
|
||||||
@ -625,7 +625,7 @@ class ChooseAccountsHandlerTest extends TestCase
|
|||||||
$usd = TransactionCurrency::where('code', 'USD')->first();
|
$usd = TransactionCurrency::where('code', 'USD')->first();
|
||||||
$first = $this->user()->accounts()->where('account_type_id', 3)->first();
|
$first = $this->user()->accounts()->where('account_type_id', 3)->first();
|
||||||
$second = $this->user()->accounts()->where('account_type_id', 3)->where('id', '!=', $first->id)->first();
|
$second = $this->user()->accounts()->where('account_type_id', 3)->where('id', '!=', $first->id)->first();
|
||||||
$accountRepos->shouldReceive('getAccountsByType')->withArgs([[AccountType::ASSET]])
|
$accountRepos->shouldReceive('getAccountsByType')->withArgs([[AccountType::ASSET, AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE]])
|
||||||
->once()->andReturn(new Collection([$first, $second]));
|
->once()->andReturn(new Collection([$first, $second]));
|
||||||
$accountRepos->shouldReceive('getMetaValue')->twice()->withArgs([Mockery::any(), 'currency_id'])
|
$accountRepos->shouldReceive('getMetaValue')->twice()->withArgs([Mockery::any(), 'currency_id'])
|
||||||
->andReturn(1, 2);
|
->andReturn(1, 2);
|
||||||
|
@ -65,7 +65,7 @@ class ConvertToTransferTest extends TestCase
|
|||||||
// mock used stuff:
|
// mock used stuff:
|
||||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||||
$accountRepos->shouldReceive('setUser')->once();
|
$accountRepos->shouldReceive('setUser')->once();
|
||||||
$accountRepos->shouldReceive('findByName')->withArgs([$asset->name, [AccountType::ASSET, AccountType::DEFAULT]])->andReturn($asset);
|
$accountRepos->shouldReceive('findByName')->withArgs([$asset->name, [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]])->andReturn($asset);
|
||||||
|
|
||||||
// fire the action:
|
// fire the action:
|
||||||
$ruleAction = new RuleAction;
|
$ruleAction = new RuleAction;
|
||||||
@ -100,7 +100,7 @@ class ConvertToTransferTest extends TestCase
|
|||||||
// mock used stuff:
|
// mock used stuff:
|
||||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||||
$accountRepos->shouldReceive('setUser')->once();
|
$accountRepos->shouldReceive('setUser')->once();
|
||||||
$accountRepos->shouldReceive('findByName')->withArgs([$asset->name, [AccountType::ASSET, AccountType::DEFAULT]])->andReturn($asset);
|
$accountRepos->shouldReceive('findByName')->withArgs([$asset->name, [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]])->andReturn($asset);
|
||||||
|
|
||||||
// fire the action:
|
// fire the action:
|
||||||
$ruleAction = new RuleAction;
|
$ruleAction = new RuleAction;
|
||||||
|
Loading…
Reference in New Issue
Block a user