Версия 2.0: смешивание валютных карт

Avatar
  • обновлен
  • Исправлен

От пользователя https://vk.com/abaskakau

Есть два счета в разных валютах. К ним привязано по одной карте. Все идентификаторы уникальны. Вот что делает плагин при импорте:

Image 125Image 126Image 124

Пытался при добавлении счета скорректировать привязанные идентефикаторы, но плагин привязывает их снова без моего ведома

Фактически плагин считает, что валютная и рублевая карта — одна сущность

Прикрепленные ответы
Avatar
Anna Chmarak
  • Ответ
Цитата от Andrei Baskakau

Вы вообще молодец. Давно пользую зенмани, тоже думал написать плагин. Но лень оказалась сильнее )

В текущей версии уже должно быть исправлено.

Пожалуйста, сообщите о результатах. Если будут новые проблемы -- не стесняйтесь заводить новый тикет.

Avatar
Anna Chmarak

> Есть два счета в разных валютах. К ним привязано по одной карте. Все идентефикаторы уникальны. Вот что делает плагин при импорте

Не могу пока понять, что не так.

Вижу, что есть долларовый счёт ....0323, к которому привязаны две карты: 0669 и 7201.

Ещё вижу, что есть рублёвый счёт с номером ....1782.

> Фактически плагин считает, что валютная и рублевая карта — одна сущность

Что вы имеете в виду?

Прикрепите, пожалуйста, лог синхронизации.

Avatar
Anna Chmarak

Андрей, скажите, правильно ли я поняла, что все операции на скриншоте были совершены на самом деле не по 0669, а по другому счёту?

Avatar
Andrei Baskakau
Цитата от Anna Chmarak

Андрей, скажите, правильно ли я поняла, что все операции на скриншоте были совершены на самом деле не по 0669, а по другому счёту?

Счет 1782 соответствует карте 0669. Рубли

Счет 0323 соответствует карте 7201. Доллары


Все операции на скриншоте совершены по рублевой карте 0669, однако при импорте тэг 0669 добавился валютной карте. Как видно на скриншоте, попытка импорта предложила создать рублевый СЧЕТ и валютную КАРТУ. Однако валютной КАРТЕ был присвоен тэг рублевой КАРТЫ

Самое интересное, что приложение предложило добавить именно счет, не карту. Я не сильно понимаю, что должно добавляться в данном случае: карты или аккаунты:
Рискну предположить, что этот метод (кликабельно) добавляет аккаунт в самом приложении. В таком случае, не сильно ясно, зачем мне видеть как карты (кликабельно), так и аккаунты карт (кликабельно).


Avatar
Andrei Baskakau
Цитата от Anna Chmarak

> Есть два счета в разных валютах. К ним привязано по одной карте. Все идентефикаторы уникальны. Вот что делает плагин при импорте

Не могу пока понять, что не так.

Вижу, что есть долларовый счёт ....0323, к которому привязаны две карты: 0669 и 7201.

Ещё вижу, что есть рублёвый счёт с номером ....1782.

> Фактически плагин считает, что валютная и рублевая карта — одна сущность

Что вы имеете в виду?

Прикрепите, пожалуйста, лог синхронизации.

plugin_log

Avatar
Andrei Baskakau
Цитата от Алексей Островский

http://support.zenmoney.ru/forums/1-podderzhka-dzen-mani/topics/648-versiya-20-dublirovanie-operatsij-v-drugoj-valyute/

Аналогичная проблема

А вы когда-нибудь переводили свою карту на новый зарплатный проект или меняли счет, привязанный к карте?

Avatar
Andrei Baskakau
Цитата от Anna Chmarak

Андрей, скажите, правильно ли я поняла, что все операции на скриншоте были совершены на самом деле не по 0669, а по другому счёту?

Прошу прощения, был неправ. Достаточно детально посмотрел код.

Подозреваю, что не срабатывает условие: https://github.com/zenmoney/ZenPlugins/blob/master/plugins/raiffeisen/main.js#L116

Я вычитал, что в js переменная, объявленная в теле цикла является глобальной, т.е.

https://github.com/zenmoney/ZenPlugins/blob/master/plugins/raiffeisen/main.js#L99 видна следующему циклу и, возможно, не зануляется здесь: https://github.com/zenmoney/ZenPlugins/blob/master/plugins/raiffeisen/main.js#L113

В таком случае, в приложение отправляется аккаунт (не карта) и один тэг самого аккаунта (Как раз, как в моем случае). В следующем случае, по какой-то причине, проверка срабатывает оба раза.

Если говорить о причинах происходящего, то тут:

Либо реально не совпадают данные (какие-то уникальные вещи для некоторых пользователей)

Либо проблема в ===. Тут, возможно, поможет строгая типизация


P.S. Мне не удалось корректно завести yarn для проверки, да я и не претендую на звание js разработчика. Так что это только моя гипотеза

Avatar
Anna Chmarak
Цитата от Andrei Baskakau

Прошу прощения, был неправ. Достаточно детально посмотрел код.

Подозреваю, что не срабатывает условие: https://github.com/zenmoney/ZenPlugins/blob/master/plugins/raiffeisen/main.js#L116

Я вычитал, что в js переменная, объявленная в теле цикла является глобальной, т.е.

https://github.com/zenmoney/ZenPlugins/blob/master/plugins/raiffeisen/main.js#L99 видна следующему циклу и, возможно, не зануляется здесь: https://github.com/zenmoney/ZenPlugins/blob/master/plugins/raiffeisen/main.js#L113

В таком случае, в приложение отправляется аккаунт (не карта) и один тэг самого аккаунта (Как раз, как в моем случае). В следующем случае, по какой-то причине, проверка срабатывает оба раза.

Если говорить о причинах происходящего, то тут:

Либо реально не совпадают данные (какие-то уникальные вещи для некоторых пользователей)

Либо проблема в ===. Тут, возможно, поможет строгая типизация


P.S. Мне не удалось корректно завести yarn для проверки, да я и не претендую на звание js разработчика. Так что это только моя гипотеза

Спасибо за содействие, причина действительно была здесь. Но там ошибка более существенная:

zenAccounts[j].numberString

У объекта "zenAccounts[j]" нет поля "numberString", поэтому её сравнение с чем угодно будет давать false. Но как вы отметили, переменная zenAccount уже заполнена значениями из предыдущего цикла, поэтому несмотря на то, что соответствующий счёт как бы не найден, карты всё равно добавлялись к какому-то счёту.

Это поле здесь осталось по наследству, так как до этого я искала для каждой карты подходящий объект класса "Account", а у этого класса как раз есть метод с названием "numberString".

Работаю над исправлением.


P.S. Я вообще плюсовик, поэтому редко что-то получается в JS с первого раза -- привыкла ориентироваться на ошибки компиляции. Области видимости в JS и передача reference-by-value меня до сих пор шокируют. Запустить плагин raiffeisen под отладчиком можно и без yarn: в этой версии репозитория лежит папка debugger и инструкция по настройке отладчика.

Avatar
Andrei Baskakau
Цитата от Anna Chmarak

Спасибо за содействие, причина действительно была здесь. Но там ошибка более существенная:

zenAccounts[j].numberString

У объекта "zenAccounts[j]" нет поля "numberString", поэтому её сравнение с чем угодно будет давать false. Но как вы отметили, переменная zenAccount уже заполнена значениями из предыдущего цикла, поэтому несмотря на то, что соответствующий счёт как бы не найден, карты всё равно добавлялись к какому-то счёту.

Это поле здесь осталось по наследству, так как до этого я искала для каждой карты подходящий объект класса "Account", а у этого класса как раз есть метод с названием "numberString".

Работаю над исправлением.


P.S. Я вообще плюсовик, поэтому редко что-то получается в JS с первого раза -- привыкла ориентироваться на ошибки компиляции. Области видимости в JS и передача reference-by-value меня до сих пор шокируют. Запустить плагин raiffeisen под отладчиком можно и без yarn: в этой версии репозитория лежит папка debugger и инструкция по настройке отладчика.

Вы вообще молодец. Давно пользую зенмани, тоже думал написать плагин. Но лень оказалась сильнее )

Avatar
Anna Chmarak
  • Ответ
Цитата от Andrei Baskakau

Вы вообще молодец. Давно пользую зенмани, тоже думал написать плагин. Но лень оказалась сильнее )

В текущей версии уже должно быть исправлено.

Пожалуйста, сообщите о результатах. Если будут новые проблемы -- не стесняйтесь заводить новый тикет.