Імпорти

Імпорт у SavingStat працює як завдання: файл, власний життєвий цикл і чернетки наприкінці. Імпорт виписки й імпорт чека виконуються по-різному.

Що таке імпорт

Імпорт працює як завдання. Ви передаєте файл, а першим отримуєте не рядки, а запис про це завдання: він існує ще до того, як щось створено, за ним можна стежити під час роботи, і він нікуди не зникає після завершення.

У записі є файл, гаманець, до якого ви прив’язали імпорт, і те, як далеко просунулася робота. Якщо щось пішло не так, там же зберігається причина. Файл не читається, поки ви дивитеся на екран: вивантаження приймається й стає в чергу, робота виконується окремо, а запис оновлюється в міру того, як вона просувається.

Імпорт живе довше за вивантаження, тому живе й походження даних. Усе, що він створив, посилається на нього, а сам файл прикріплюється до кожного такого рядка. Транзакція з минулої весни й досі покаже виписку, з якої її прочитали.

Два різновиди

Їх два, і це два різні завдання, а не два налаштування одного. Імпорт виписки приймає CSV або PDF, експортовані з банку. Імпорт чека приймає фотографію: JPEG, PNG, WebP або HEIC з iPhone.

Різновид визначає файл, а не меню: .csv або .pdf іде як виписка, усе інше йде як чек. Далі перевірка стає суворішою. Чек має бути JPEG, PNG, WebP або HEIC, причому HEIC з iPhone перетворюється на JPEG під час вивантаження; виписка має бути CSV або PDF. Решту SavingStat відхиляє з повідомленням про те, який формат потрібен.

Допустимий розмір теж різний. CSV приймається до 5 МБ, PDF або зображення чека до 10 МБ. Розмір перевіряється під час вивантаження й лише тоді: файл, який ви замість цього вибрали з бібліотеки, удруге не зважують.

Далі шляхи розходяться. Виписка читається частинами, повідомляє, скільки рядків із загальної кількості вже опрацьовано, і віддає чернетки ще під час роботи. Чек дає одну чернетку, і рахувати рядки в ньому нема чого.

Що він створює

Чернетки, а не транзакції. У чернетці є все, що є в транзакції: сума, дата, гаманець, коментар і підібрані категорія, бюджет чи джерело доходу. Але вона тримається осторонь ваших даних: не потрапляє до списку транзакцій і не рухає баланс жодного гаманця. Ніщо створене імпортом не стає вашим, доки ви його не опублікуєте. Про це стаття «Як перевірити чернетки після імпорту».

Файл теж зберігається. Він потрапляє до вашої бібліотеки й прикріплюється до кожної транзакції, яку створив імпорт, але два різновиди роблять це по-різному: скан чека прикріплюється як спільний, файл виписки як приватний.

Цей зв’язок міцний, а не випадковий. Коли ви видаляєте імпорт, він окремо питає про чернетки, що ще чекають, і окремо про рядки, які ви вже опублікували. Усе, що ви залишаєте, відв’язується від імпорту й не зникає разом із ним.

Власний текст чека

У фотографії чека є більше, ніж підсумок, який потрапляє в транзакцію: продавець, кожна позиція, ставки податку, скільки і чим сплачено. Це прочитання зберігається як розшифрування файлу, і його можна відкрити на транзакції, до якої прикріплене фото.

Розшифрування належить файлу, а не імпорту. Чек, який ви прикріпили вручну до рядка з виписки чи до транзакції, введеної власноруч, читається так само: кнопкою Створити на вкладенні. Імпорт при цьому не створюється, чернетка не з’являється. Розшифрування тут єдиний результат.

Воно створюється на запит, а не щоразу, триває недовго й з’являється саме, щойно готове. Якщо зображення не вдалося прочитати, причина показується поруч із кнопкою Повторити, а розшифрування, яке у вас уже було, залишається як було й не втрачається через невдалу спробу.

Прочитати можна JPEG, PNG і WebP, фото HEIC перетворюються на JPEG під час вивантаження, а розшифрування бачить лише власник файлу. Той, з ким ви ділите бюджет, бачить прикріплену фотографію, але не ваше її прочитання. Усе це крок за кроком розбирає стаття «Як розпізнати чек».

Життєвий цикл імпорту

Спершу імпорт очікує, потім обробляється й завершується або успішно, або помилкою. Ось і все. Стану паузи немає, напівготового стану, у якому можна зависнути, теж.

Поки імпорт виписки обробляється, він повідомляє, скільки рядків із загальної кількості вже прочитано, і це число оновлюється саме. Завдання, яке за кілька хвилин після запуску досі очікує, прийняте, але ще не взяте в роботу: з файлом усе гаразд, просто обробка ще не почалася.

Завершений імпорт може нести примітку про те, чого він не зміг зробити; вона показується над рядками. Невдалий натомість несе причину звичайною мовою, а технічне повідомлення ховає під перемикачем, і на його сторінці видно помилку й файл, а не рядки. Чернетки, які встиг створити перерваний запуск, там не перелічуються. Повторна спроба прибирає їх і повертає той самий файл у чергу, а все, що ви вже опублікували, залишається.