Commit Graph
100 Commits
Author SHA1 Message Date
anthony b9eae25d2c Мелочи по README 2022-08-13 21:59:01 +08:00
anthony a72963a9ec Обновлены зависимости 2022-08-13 21:53:03 +08:00
anthonyandGitHub 6e31af95c5 Actual homepage url 2022-02-13 23:21:56 +08:00
anthonyandGitHub 83a32873b3 Liberapay in funding 2022-01-30 23:01:18 +08:00
anthonyandGitHub 9f4b3f2427 Liberapay shields in readme 2022-01-30 23:00:48 +08:00
anthonyandGitHub aa390bf453 Merge pull request #19 from anthonyaxenov/dev
Актуализация README
2021-12-20 10:44:14 +08:00
anthony d8f13e3054 Merge branch 'master' into dev 2021-12-20 10:43:07 +08:00
anthonyandGitHub 080c7e7247 Исправлен README 2021-12-20 10:41:46 +08:00
anthonyandGitHub 4bc92ac0ad Merge pull request #17 from anthonyaxenov/dev
#16 убраны лишние проверки в тестах фискализатора
2021-12-20 00:45:24 +08:00
anthony 9fa55e7c5f #16 убраны лишние проверки в тестах фискализатора 2021-12-19 23:07:03 +08:00
anthonyandGitHub baf97cad20 Merge pull request #15 from anthonyaxenov/dev
v1.0.0
2021-12-19 23:00:14 +08:00
anthony 2e8099e0a4 Актуализирован readme 2021-12-19 22:58:47 +08:00
anthony d7f3c81fac Мелкофикс gh-actions 2021-12-19 22:52:21 +08:00
anthony e22c1cb091 Финализация оставшихся классов 2021-12-19 22:50:52 +08:00
anthony 58bc344a86 Более или менее актуальная документация 2021-12-19 22:30:21 +08:00
anthony fdc5ab112a Переименования классов для пущей простоты 2021-12-19 22:29:53 +08:00
anthony 71d1f2900c Большие доработки по фискилизации
- у `AtolClient` теперь возможно получить последний отправленный запрос `getLastRequest()`
- у `AtolClient::auth()` удалены аргументы за ненадобностью
- улучшен `Client::jsonSerialize()`
- исправлен `Receipt::jsonSerialize()`
- у `Receipt` и `Correction` появились методы фискализации, вкусный сахарок
- удалён енам `DocumentTypes` за ненадобностью
- исправлены тесты монитора и документов
- рабочий фискализатор с получением результатов и покрытием
2021-12-18 14:45:00 +08:00
anthony b4cc0fec53 Мелочи по конфигу composer 2021-12-18 14:09:07 +08:00
anthony 573af15bac Фиксы геттеров логина и пароля для AtolClient 2021-12-16 18:35:49 +08:00
anthony 19653776c5 Фикс оплат и ставок в данных коррекции 2021-12-16 18:33:13 +08:00
anthony c7d07a18f1 Мелкофиксы по кодстайлу 2021-12-12 14:50:29 +08:00
anthony 464a8f0706 Более корректный порядок тестов 2021-12-12 14:36:04 +08:00
anthony 294a3ef2f3 Допокрытие ArrayAccess-методов 2021-12-12 11:09:12 +08:00
anthony b4af189292 Обновление зависимостей 2021-12-11 15:54:42 +08:00
anthony 6787ce3ad7 Класс документа коррекции Correction с покрытием и всякая мелочёвка
- финализация Receipt + Payment
- фиксы phpdoc
2021-12-11 15:53:57 +08:00
anthony 1d6abfd475 Более симпатичные бейджики в README 2021-12-09 20:14:35 +08:00
anthony 058ce5ed3d Доработки коллекций, чека и тестов
- `EntityCollection` сильно упрощён, добавлен выброс исключений при пустом содержимом
- `Receipt::setItems(), setPayments() и setVats()` получили одинаковые проверки входящих данных
- округление в `Vat::setSum()`
- доработаны тесты коллекций
2021-12-09 20:14:35 +08:00
anthony 16d1146826 Четвёртая итерация Receipt
- 100% покрытие
- элвисы в разных сеттерах
2021-12-08 19:04:14 +08:00
anthony 703c5178f5 Минорные апдейты зависимостей 2021-12-08 16:11:39 +08:00
anthony fdc64954f9 Третья итерация Receipt
- просчёт ставок секи в `setVats()`
- просчёт суммы чека в `setItems()`
- геттеры `getItems()` и `getVats()` возвращают пустую коллекцию, если в чеке они отсутствуют
- фикс `vats => supplier_info` в `jsonSerialize()`
- тесты поставщика, ставок, расчёта ставок и суммы чека
2021-12-08 16:01:25 +08:00
anthony 793549aaac Entity теперь имплементирует Arrayable и ArrayAccess для совместимости с иммутабельными методами коллекций 2021-12-08 15:56:07 +08:00
anthony b57acf8b05 EntityCollection помечен для переделки 2021-12-08 15:50:06 +08:00
anthony b39e76f312 Вторая итерация Receipt
- фикс nullable-свойств и геттеров
- проверка на пустоту в `setPayments()`, `setItems()` и `setVats()`
- часть тестов с покрытием (конструктор, агент, исключения при пустых коллекциях)
2021-12-07 20:09:12 +08:00
anthony a34a6927d1 Небольшой рефакторинг по тестам
- `BasicTestCase::assertAtolable() => assertIsAtolable()`
- генерация тестовых объектов `Vat`, `Payment` и `Item` вынесены в `BasicTestCase`
2021-12-07 20:04:03 +08:00
anthony 1f3d5d2f3d Первая итерация Receipt 2021-12-06 20:07:17 +08:00
anthony 359264db64 Новая сущность AdditionalUserProps с покрытием для будущей поддержки в документе 2021-12-06 19:32:50 +08:00
anthony 557c76fefa Доработка коллекций и не только
- коллекция `Items` с покрытием
- вынос коллекций из `AtolOnline\Entities` в `AtolOnline\Collections`
- фикс ] в `AtolException`
- финализирован `CorrectionInfo`
- фиксы по тестам коллекций
- прочие мелочи по phpdoc
2021-12-06 16:14:19 +08:00
anthony bf09641c8b Класс коллекции оплат Payments 2021-12-06 14:17:05 +08:00
anthony 6b5a025051 Класс коллекции ставок НДС Vats 2021-12-06 14:16:50 +08:00
anthony 3d3eba5b4e Базовый класс коллекции объектов EntityCollection 2021-12-06 14:16:34 +08:00
anthony a5c88cd7d3 Функции проверки наследования классов вернул из Helpers в BasicTestCase и отрефакторил
- `isSameClass()`
- `checkImplementsInterfaces()`
- `checkUsesTraits()` + переписана под наследование
2021-12-06 14:15:47 +08:00
anthony b451c7dc68 Мелочи по phpdoc 2021-12-06 14:13:48 +08:00
anthony 7d0c526663 Готов класс оплаты Payment для будущей поддержки оплат в документе 2021-12-03 23:53:42 +08:00
anthony 65ec639014 Округление цены и количества в сетьерах Item до 2 и 3 зн после запятой соответственно
Также переименованы исключения о слишком высоких цене и сумме предмета расчёта, чтобы избежать конфликтов с другими
2021-12-03 23:52:41 +08:00
anthony d533164d1b Поддержка correction_info 2021-12-03 20:09:14 +08:00
anthony 05fd25e810 Фикс AgentInfoTest 2021-12-03 19:06:15 +08:00
anthony 3e03fdca61 Финализация всех Entities 2021-12-03 18:24:21 +08:00
anthony c077f98cf9 Item - пересчёт НДС при изменении цены, количества и акциза 2021-12-03 18:24:00 +08:00
anthony 2260233e3f Общие сеттеры-геттеры сущностей вынесены в трейты HasEmail, HasInn, HasPhones
Кодстайл и микрорефакторинг сущностей
2021-12-03 18:23:00 +08:00
anthony c30c7d069f Непереработанные классы переименованы для наглядности 2021-12-03 18:16:28 +08:00
anthony 8f235d4730 Удалён ROADMAP, поправлен README 2021-12-03 18:15:16 +08:00
anthony 85750cd211 Обновление зависимостей
Также подключен jetbrains/phpstorm-attributes, чтобы всё по красоте
2021-12-03 18:10:06 +08:00
anthony 2a66889e46 Поддержка nomenclature_code у предмета расчёта + мелкофиксы
- теперь `getSum()` проверяет по `Constraints::MAX_COUNT_ITEM_SUM` вместо `MAX_COUNT_ITEM_PRICE` (как и должен был изначально)
- подправил `TooLongException`
- всякие phpdoc-и
2021-12-03 11:52:40 +08:00
anthony 1c0d8ba64d Корректировка readme 2021-12-02 16:14:01 +08:00
anthonyandGitHub fc37580078 Merge pull request #10 from anthonyaxenov/gha
Настройка gh-actions для работы с codecov.io
2021-12-02 15:57:20 +08:00
anthony 96137d20b2 Настройка gh-actions для работы с codecov.io 2021-12-02 15:56:32 +08:00
anthony 267431ec28 Мелочи в readme и phpunit.xml (удалены дефолтные параметры) 2021-12-02 01:10:54 +08:00
anthony cb24bb1fb0 Доработки енамов и тегов ФФД 2021-12-02 01:10:16 +08:00
anthony 11646113b6 Доработки Item
- поддержка `excise`, покрыта тестами
- фикс `setVat()`
- улучшен `jsonSerialize()`
2021-12-02 01:09:25 +08:00
anthony 650b46923e Бейджики в readme 2021-12-01 20:12:11 +08:00
anthony 3f3eb68ea2 Корректировки в composer.json 2021-12-01 20:11:57 +08:00
anthony 5ccb0e9db4 Кучад доработок, главным образом вокруг Item
- `Item` почти готов и весь покрыт тестами. Пока остались нереализованными `nomenclature_code` и `excise`
- `Client::setPhone()` теперь выбрасывает InvalidPhoneException
- доработка и создание новых исключений (не буду все перечислять, смотри диффы)
- мелочи по phpdoc и всяким текстовкам
2021-12-01 20:11:08 +08:00
anthony bce21f9658 Правки по документации
Актуализирована часть про `Vat`, пересобрал README, мелочи
2021-11-28 12:01:28 +08:00
anthony a7205ff754 Переработан Vat, покрыт тестами 2021-11-28 00:58:05 +08:00
anthony e0ff5a261a Новые теги в Ffd105Tags + мелочи 2021-11-28 00:57:19 +08:00
anthony 2ebb172f2e Мелочи по конвертации денег 2021-11-28 00:55:34 +08:00
anthony e2141551d5 Enum стал абстрактным внутри Enums, наследникам созданы getFfdTags() 2021-11-28 00:55:28 +08:00
anthony c9670a1321 Удалены бесполезные ItemArray, VatArray и PaymentArray, будут заменены коллекциями 2021-11-28 00:49:53 +08:00
anthony 9d2617858d AgentInfo: перенос валидации типа агента из конструктора в сеттер 2021-11-28 00:44:43 +08:00
anthony f548032843 Ссылки на телеграм и патреон 2021-11-27 18:53:23 +08:00
anthony e0d792d3a4 Реализован и покрыт тестами AgentInfo (переименован из Agent) 2021-11-27 17:59:50 +08:00
anthony 16c8d8a676 Реализован и покрыт тестами MoneyTransferOperator 2021-11-26 09:16:46 +08:00
anthony 8b79b2be51 Мелкофиксы
- `Ffd105Tags::CLIENT_CONTACTS` => `CLIENT_PHONE_EMAIL`
+ мелочи по `Client`, `ClientTest` и `PayingAgentTest`
2021-11-24 18:55:53 +08:00
anthony 95dbc3a5b7 Класс Supplier обзавёлся name + inn и допокрыт тестами 2021-11-24 18:54:48 +08:00
anthony 790831e933 MoneyTransferOperator => ReceivePaymentsOperator 2021-11-24 18:45:01 +08:00
anthony 3b75c8b983 Класс Supplier, покрытый тестами
Это было слишком легко :(
2021-11-24 17:57:24 +08:00
anthony c5b57ec26d Класс MoneyTransferOperator, покрытый тестами
Также мелкофиксы по phpdoc `PayingAgent` и его тестам
2021-11-24 17:54:04 +08:00
anthony 42d194116f Туча доработок
- класс `PayingAgent`, покрытый тестами
- новые константы для тегов ФФД 1.05 `Ffd105Tags`
- `Entity::jsonSerialize()` object -> array (again)
- `TooManyException::$max` int -> float
- тесты по psr-4, потому что почему бы и нет
- некоторые провайдеры вынесены в `BasicTestCase`
- улучшен тест покупателя
2021-11-24 01:30:54 +08:00
anthony b5a01debd2 Новый енам AgentTypes 2021-11-22 14:53:10 +08:00
anthony 9d3344a0df Мелкофиксы в конструкторе KktMonitor 2021-11-22 14:52:27 +08:00
anthony 00b2643f42 Новые функции в Helpers для проверки классов 2021-11-22 14:52:05 +08:00
anthony 3bf8667437 Рефакторинг исключений, новые константы ограничений
Описывать все слишком долго, TLDR:
- упрощены корневые AtolException, {BasicTooLongException => TooLongException}, {BasicTooManyException => TooManyException}
- InvalidSnoException заменён на InvalidEnumValueException
- добавлены новые константы, общий порядок изменён в соответствии с порядком упоминания в документации, ссылки на которую тоже добавлены с указанием страниц

Помимо этого, в enum-ах теперь должен быть предусмотрен метод getFfdTags()
2021-11-22 14:51:10 +08:00
anthony e1303f4fdb Правки по документации
- в мониторинг добавлено о приведении к строке
- актуализированы Client и Company
- мелочи в соотв. классах
2021-11-21 19:06:55 +08:00
anthony 920c08c610 Правки по документации
- добавлено про мониторинг
- убрано про `base_name` из коррекции
2021-11-21 18:58:03 +08:00
anthony d281071970 Удалён метод AtolOnline\Entities\Kkt::getNetworkError() за ненадобностью 2021-11-21 18:57:20 +08:00
anthony 95499174b0 Warning in readme 2021-11-21 00:33:43 +08:00
anthony 6d0cac2cbc Первая итерация рефаторинга фискализатора 2021-11-21 00:19:35 +08:00
anthony 6620acf1bf Мелкофикс теста KktMonitor::GetOne() 2021-11-21 00:17:40 +08:00
anthony e89369348a Метод KktMonitor::auth() перенесён в AtolClient для совместимости в фискализатором 2021-11-21 00:15:59 +08:00
anthony b35b9bfa87 Удалена поддержка base_name в документе коррекции (#5) 2021-11-20 23:46:39 +08:00
anthony e1120051c1 Новая сущность Kkt для ответов мониторинга (#8) + мелкий рефакторинг
- enum-константы перенесены в своё пространство Enums
- новые исключения EmptyMonitorDataException + NotEnoughMonitorDataException
- KktMonitor::getAll() теперь возвращает коллекцию объектов Kkt
- KktMonitor::getOne() теперь возвращает объект Kkt
- местами актуализированы return types + phpdoc

Покрытие тестами:
- 61% исключений
- 98% AtolClient (пока хз как покрыть 208-ую строку)
- 100% KktMonitor
- 100% Kkt
- 100% Client
- 100% Company
- 100% Entity
2021-11-20 23:39:08 +08:00
anthony 6551366d84 Полное покрытие тестами классов AtolClient + KktMonitor + половины исключений
Часть тестов завязаны на тестовый API мониторинга Атола. Иногда он закашливается и не отвечает, возможно, там рейтлимит. Да и пофиг, моки -- злейшее зло, и мне лень их писать.
2021-11-19 18:42:14 +08:00
anthony 2c5144caac KktMonitor::getAll() теперь возвращает коллекцию объектов ККТ
При этом остаётся возможность получить полный ответ через KktMonitor::getResponse()
2021-11-19 18:29:09 +08:00
anthony 92a2c6cc48 Переработаны существующие и дописаны новые тест AtolClient
Используется тестовый API АТОЛ Онлайн. 94% покрытие AtolClient, но ещё не закончено
2021-11-19 13:42:51 +08:00
anthony 949b31a85a [WIP] Начало работы над тестом KktMonitorTest 2021-11-18 19:07:32 +08:00
anthony 03591600dd Поддержка мониторинга (#8) и рефакторинг
- абстрактный класс AtolClient:
    - больше не наследуется от клиента guzzle, но содержит его объект
    - из Kkt вынесены методы, отвечающие за формирование запроса, отправку и получение ответа, в т.ч. авторизацию
- переименованы исключения TooLongKktLoginException, TooLongKktPasswordException, EmptyKktLoginException и EmptyKktPasswordException
- мелочи по AuthFailedException
- заготовки тестов AtolClient и KktMonitor
2021-11-18 12:24:44 +08:00
anthony 77481884ad Начало работы по #5 и #6
- строгая типизация
- переработан класс `TestEnvParams`:
    - вынесен на уровень выше из под `AtolOnline\Constants`
    - вместо констант - две функции для получения актуальных параметров подключения по ФФД1.05 и ФФД1.2
- актуализированы `PaymentObjects` согласно #5
- исходники вынесены не уровень выше в `src`
- константы теперь enum через `myclabs/php-enum`
- новые константы `DocumentTypes`
- классы констант финализированы
- все исключения переименованы, а многие так или иначе отрефакторены (не полностью)
- новые исключения `InvalidSnoException`, `InvalidPaymentAddressException`
- `helpers.php` стал полноценным классом `Helpers`
- удалены трейты `HasEmail`, `HasInn`, `RublesKopeksConverter` (конвертация перенесена в `Helpers`)
- удалён хелпер `valid_strlen()`, вместо него теперь везде `mb_strlen()`
- сущности `Client` и `Company` получили свои имплементации для `email` и `inn`
- доработки в `BasicTestCase`
- полное покрытие тестами: `Client`, `Company`, `Helpers`
- поправлен `phpunit.xml`
- везде обновлены копирайты
- актуализированы и исправлены phpdoc, return types
- начато введение `strict_types=1`
- минимальный php теперь 8.0
- обновлены все зависимости
- подключен пакет коллекций laravel для будущего использования
- теперь можно `composer test` и `composer test-cov`
2021-11-18 12:24:30 +08:00
anthony cc944a1dbb Бейджи в README 2021-05-25 11:48:37 +08:00
anthony bb05f0c752 Merge branch 'master' into dev 2021-05-25 00:58:53 +08:00
anthony 1c76608468 Github Actions разграничены для веток master и dev 2021-05-24 23:40:46 +08:00