yanovich / abstract-accounting Goto Github PK
View Code? Open in Web Editor NEWAbstract is being developed to be a competitive accounting and planning solution.
Home Page: http://aasii.org
License: GNU Affero General Public License v3.0
Abstract is being developed to be a competitive accounting and planning solution.
Home Page: http://aasii.org
License: GNU Affero General Public License v3.0
надо перевести структуру папок и добавить необходимые gem-ы
We need to figure out the best practice for using 3rd party code in the project. I've seen suggestions to use 'script/plugin' command and keep 3rd party code outside version control with '.gitignore'.
Таблица прямого допуска:
Лицо
Тип документа
Id документа
Любой ресурс может иметь описание (ссылка на основной объект полиморфная)
ID, Тип работ
При нажатию на кнопку создания документа, создание документа происходит по двум сценариям:
специализированная папка:
список с системным ярлыком документа
фильтр имеющий ровно один критерий отбора типа документа
На всех страницах должны присутствовать кнопки выбора языка.
Язык по умолчанию соответстует Accept-Language присланному браузером.
Выбранный язык запоминается для пользователя
Remove repeating code from unit tests.
There was no test for this in C++, so Alex hasn't tested this in ruby.
If state is closed (not deleted) by writing to 'paid' attribute, its amount should not change.
Есть системный ярлык склад
Нажали на системный ярлык склад
Видим таблицу:
Кладовщик
Объект
Название ресурса
Ед. измерения
Актуальное кол-во
Ожидаемое кол-во
Логин по стандартной процедуре (Issue #11)
Открылись новые
Выбрал системный ярлык снабжение.
Пользователь видит счета созданные им либо его подчиненными.
Новые счета должны отображаться жирным
Таблица закупок содержит стандартный набор полей. (Issue #9)
Кнопки операций: (Issue #8: operation buttons)
Согласовать (массовое)
Отменить (массовое)
Нажал на счет
Видит страницу отображения счета. (Issue #17)
Если есть дата проводки, кнопки отправить и отменить заблокированны
Любая операция со счетом
Счет считается просмотренным
Счет находится в новых
Пока не отменен или не отправлен
Фильтр состоит:
Строка ввода текста с автодополнением
Кнопки обработки фильтра
Для автодополнения:
Определяет место доставки
Определяет ответственного сотрудника
Определяет раздел
Кроме того в результате поиска выдает вхождения слов из запроса в:
Наименование ресурса
Комментарий
наименование поставщика
Таблица полномочий:
Лицо
Объект (место)
Вид работ
Тип документа (Накладная, Счет, Выдача и т. д.)
Для Waybill:
для главного deal ("Накладная #{document_id}")
для deal-ов правил ("Накладная #{document_id} строка #{item_index}")
Для Allocation:
для главного deal ("НЗП #{document_id}")
для deal-ов правил ("НЗП #{document_id} строка #{item_index}")
Переименовать в Allocation
Необходимо добавить версии объектов в модель
Gem: paper_trail или схожие.
Страница создания документа:
Если есть список ресурсов:
Навел на комментарий ресурса
Появился плюсик
Нажал плюсик
Появился список комментариев
Появилось поле для ввода комментария
Появилась кнопка добавить
Написал комментарий
Нажал кнопку добавить
Поле комментария обновилось (таблица ресурсов)
Список закрылся
Комментарии на документ:
Список комментариев документа
Поле для ввода коментария на документ
Открыл сайт
Ввел адрес почты и пароль.
Переходит на основную страницу где рабочая поле заполнено таблицей отфильтрованной по новым (Issue #8)
На форме находится Remember Me, для запоминания сессии.
На форме есть ссылка на форму восстановления пароля.
При переходе на форму восстановления пароля, пользователь вводит email и нажимает кнопку Отправить.
Ему на почту приходит сообщение для создания нового пороля.
Переходя по ссылке из email он попадает на страницу где вводит новый пароль.
Аутентификация содержит:
Таблица ролей(CanCan), таблицу групп, таблицу полномочий, таблица прямого доступа.
После проверки CanCan
index
Создатель видит свои объекты
Начальник группы видит объекты всех подчинненых (по иерархии)
Если прошел проверку полномочий:
Объект и вид работ и документ совпадают или пустой каждый
Если выдан прямой допуск
Страница создания роли:
Добавить разрешение на forward(возможность раздачи прямого доступа к объекту)
По умолчанию все галочки должны стоять.
We need ./bootstrap.sh which will run all those tasks.
Если кол-во людей, которые меняли документ, позволяет их вписать в колонку, то пишутся через запятую,
Если не позволяют - то пишутся трое:
В таблице отправленные список лиц не применяется
Таблица документов содержит:
Галочка для массовых операций
Звездочка для пометок
Лица - список (Issue #10)
Дата документа.
Сумма(денежная)
Заголовок: Тип + "-" + Наименование Документа. Наименование определяется для каждого документа отдельно.
Последний комментарий: Обрезается до границы колонки.
Дата изменения.
Таблица сортируется по дате изменения. убывание
Строки должны быть выделены (болд), если последнее действие не было просмотрено текущим пользователем.
Поля: id, tag
Only load list items we show.
Логин по стандартной процедуре.(Issue #11)
Открылись новые
Создалась страница документа по стандартной процедуре
На странице документа:
Ввод даты
Ввод получателя (Наименование)
Ввод объекта
Ввод кладовщика
Кнопка прикрепления файла.
Таблица ресурсов:
Отображение номера элемента
Галочка
Название ресурса
Ед. измерения
Кол-во на складе
Ввод кол-ва к выдаче
Кнопки массовых операций:
Удалить
Таблица ресурсов в наличии:
Отображение номера элемента
Галочка
Название ресурса
Ед. измерения
Кол-во на складе
Кнопки массовых операций:
Принять
Фильтр для нижне таблицы
Комментарии по стандартной процедуре.(Issue #18)
Комментарии не доступны в режиме черновика.
В режиме просмотра нижняя таблица отсутствует.
Если имеется роль пользователя кладовщик, то:
Поле объекта заполняется
Поле кладовщика заполняется
Выбрал ресурсы в таблице наличия
Нажал кнопку принять
Таблица ресурсов к выдаче пополнилась выбранными ресурсами
Кол-во к выдаче заполнилось количеством на складе.
Нажал кнопку сохранить черновик или отправить.
Нажал отправить
Удалилась таблица ресурсов в наличии
Появился поле просмотра создателя документа
Нажал на кнопку отправить:
Появилась кнопка печати документа
Появилась кнопка подтверждения документа
Появилась кнопка отмены
Появился ярлык выдача
Появился ярлык склад
Отмененные выдачи видны в списке Удаленные
Товар может иметь производителя (Entity), описание(текстовое поле)
Товар должен иметь марку(текстовое поле), единицу измерения(ссылка на таблицу MU).
We need to choose either English or Russian. The code and commit messages are in English, so I would choose it.
Ввод/отображение места заказа
Ввод/отображение Поставщика (ИНН и Название)
Ввод/отображение типа работы
Отображение:
Сумма всего
Сумма подтвержденная
Ответственный сотрудник(создатель)
Готов к оплате/подтвержден начальником снабжения/согласован директором
Дата согласования директором
Дата проведения оплаты
Добавление ресурса:
Галочка
Ввод/отображение наименование
Ввод/отображение ед. измерения
Ввод/отображение кол-ва
Ввод/отображение цены
Сумма
Ввод/отображение срока поставки
Гипер ссылки на номера задач либо Поле для ввода номеров багов
Время последнего изменения
Комментарий (20 первых символов последнего комментария)
Кнопки массовых действий с ресурсами
Добавить ресурс
Удалить реурс/ресурсы если галочки отмечены
Комментарии отображаются по стандартной схеме. (Issue #18)
Комментировать можно при частичной оплате счета.
При вводе или изменении цены, если есть кол-во, автоматически высчитывается сумма
При вводе либо изменении кол-ва, если есть цена, автоматически высчитывается сумма
Ввод номеров багов производится через запятую, по сохранении автоматически генерируется ссылка на баг.
Должна быть возможность добавления и удаления ресурса.
Если в режиме редактирования/создания:
Должна быть кнопка Сохранить черновик
Кнопка отправить
Если просматривает человек с правами выше чем у пользователя создавшего документ:
Кнопка отменить
Должна быть кнопка Возврат
Приложение должно быть: single-page application.
Приложение обменивается с сервером данными через ajax.
Страница делится на три части: Header, Left sidebar & Main area.
Header: расположен сверху, на ширину всей страницы.
Делится на три полосы:
Left sidebar: находится под Header слева
Кнопка создания документа (Issue #13)
Содержит список основных ярлыков
Новые
Помеченные
Черновики
Отправленные
Удаленные
Архив
Ниже распологаются системные ярлыки ограниченные по ролям
Тип документа
Есть пользовательские ярлыки
Main area: находится под Header справа
Текущее рабочее поле: таблица(Issue #9) или форма
Operation buttons:
Кнопки операций по текущему документу
Кнопки перехода на предыдущую либо следующую страницу(если таблица) или форму(если просмотр документа)
Если предыдущей либо следующей страницы нет, то кнопки в состоянии disable.
Если находимся на создании документа, кнопки находятся в состоянии disable.
Логин по стандартной процедуре. (Issue #11)
Открылись новые
Создалась страница документа по стандартной процедуре
На странице документа:
Ввод даты
Ввод номера документа
Ввод поставщика (ИНН и Название)
Ввод объекта
Ввод кладовщика
Кнопка прикрепления файла.
Таблица ресурсов:
Отображение номера элемента
Галочка
Ввод названия ресурса
Ввод ед. измерения
Ввод Кол-во
Ввод Цена
Сумма (автоматически - смотри счет)
Кнопки массовых операций:
Удалить ресурсы
Комментарии по стандартной процедуре.(Issue #18)
Если имеется счета от этого поставщика на этот объект, то:
Надо отображать кнопку наличия счетов
При нажатии на кнопку
Появляется:
таблица выбора ресурсов по этим счетам:
Таблица соответствует таблице счета.
Кнопка принятия
Пока документ в режиме черновика
Имеется одна пустая строка ресурса
Если имеется роль пользователя кладовщик, то:
Поле объекта заполняется
Поле кладовщика заполняется
Выбрал оплаченные ресурсы в таблице
Нажал кнопку принять
Таблица ресурсов накладной пополнилась выбранными ресурсами
Нажал кнопку сохранить черновик или отправить.
Нажал отправить
Пустая строка ресурса удалилась
Появился поле просмотра создателя документа
Если создатель и кладовщик не совпадают, то:
Кладовщик видит кнопку подтвердить
Если есть разрешение на отмену
Появляется кнопка отмены накладной
Появился ярлык накладная
Появился ярлык склад
Отмененные накладные видны в списке Удаленные
Состояния как в выдаче
Время выполнения: 4 часа
Во всех операциях проходит суррогат.
Таблицы лиц(Issue #40) и asset используются для хранения суррогатов.
В них добавляется колонка хранящая ссылку на детальный объект (entity_detail or asset_detail).
Для отображения используются данные из таблиц *_detail.
Суррогат для частного лица:
*полное имя
Суррогат для юр лица и частного предпринимателя
*наименование
*страна
*название идентификатор
*значение идентификатора (текстовое)
Суррогат для ресурса:
*наименование
*ед. измерения (текстовое)
Ед. измерения должна иметь название
Услуга должна иметь название(текст) и ед.измерение(ссылка на таблицу MU)
Услуга может иметь описание
В качестве тестовой системы использовать: rspec + factory_girl
Для ускорение использовать spork & guard
Перевести тестирование модели с TestUnit на Rspec
?Переписать в модели остатки(states, balances). Нужно создавать объект после каждой операции....
Добавить в накладную состояния как в выдаче.
Выдача и накладные это расширение диал. Поля по типу storekeeper и т.д. брать из deal.
Вынести логику в отдельный модуль.
Добавить поле в term: классификатор(смотри балансы "type - ссылка на таблицу").
Если сделка кладовщика: тип "Материалы"
Если сделка кладовщика: тип "НЗП"
Добавить таблицу классификаторов.
Добавить fact_group - список фактов. по вложенности. Всегда создается когда создается факт.
Изменить сгенерированное название сделки по накладной (Накладная #{document_id} строка #{item_index}), для выдачи (НЗП #{deal_id}).
Добавить две группы ярлыков: списки(waybill, resource .. и т.д.) и состояния(отчеты)
Списки: ресурсы, лица, места, сделки, правила. Сделки - группа содержащая в себе накладные и выдачи. При нажатии на сделки появляется список сделок и две подгруппы.
Отчеты:
Журнал(Главная книга)
Добавить фильтр по датам.
Балансы: Добавить колонку место. Фильтры по русурсу, месту, лицу.
Выдаваемые счета должны быть упорядочены: кредитовые - пассив, дебетовые - актив
1. Материалы - сделки хранения дебеторка
2. Авансы выданные - сделки конвертации из денег в материалы по которым имеется остаток дебетовый
3. Дебеторская задолженность - сделки конвертации материалов в деньги по которым имеется дебетовый остаток
4. Незавершенное производство(НЗП) - сделки хранения материалов и работ у бригадиров, прорабов и начальников участков.
5. Выданные займы - сделки хранения денег не с банками - дебетовый
6. Деньги - сделки хранения денег с банками или сотрудниками - дебетовый
7. Уставной капитал - сделки продажи долей.
8. Финансовый результат - прибыль (Income)
9. Задолженность по кредитам - сделки хранения денег - кредитовый
10. Кредиторская задолженность по зп - сделки конвертации денег в труд
11. Кредиторская задолженность по налогам - сделки по хранению денег с государством
12. Кредиторская задолженность по материалам - сделки конвертации денег в материалы с кредитовым остатком.
13. Авансы полученные - сделки конвертации материалы в деньги с кредитовым остатком
Склад - частный случай балансов (только материалы)
Группировка по ресурсу, месту и лицу.
Выписки:
Выбор сделки переходом на страницу сделок и выбор сделки там.
Переходы:
Выписки:
При нажатии на строку, переходишь на выписку в этим счетом, за тот же период.
Балансы:
добавить возможность сделать выборку по выбранным в балансах счетам за период. выбор сделок производится по галочке, либо на сделке либо на группу. период - за дату на отчете балансов.
Если выбока идет более чем по одному счету, отчет давать ввиде главной книги.
Главная книга:
Переход на выписку, за дату операции.
Ресурсы:
Переход на отчет балансы с фильтром по этому ресурсу.
Лица:
Переход на отчет балансы с фильтром по этому лицу.
Места:
Переход на отчет балансы с фильтром по этому месту.
Сделки:
Переход на отчет выписки с периодом за текущую дату.
Если есть правила, то на главную книгу с фильтром на факты связанные с этой сделкой, через fact_group
!!!!!
Invoices & Estimates
BoM + Quote + Data filling
Использовать Sorcery для авторизации.
Добавить две группы ярлыков: списки(waybill, resource .. и т.д.) и состояния(отчеты) в UI (например, просто разделить чёрточкой)
Время выполнения: 4 часа.
Создать модуль который будет содержать общую логику (Allocation и Waybill). И для Allocation, и для Waybill информацию о кладовщике (entity, place) нужно цеплять через deal.
Разделим на два этапа:
Время выполнения 8 часов
В системе есть 3 пользователя:
Ссылка на лица во всех таблицах остается
Таблица entity ссылается на реальный объект посредством полиморфной ассоциации.
Лица могут быть 3х видов: юр. лицо(organization) и частное лицо(person), частное лицо занимающееся предпринимательской деятельностью (business_person)
Юр лицо:
*полное наименование
*сокращенное наименование
*страна (ссылка на таблицу)
*юр адрес
*идентификатор (ссылка на таблицу идентфикаторов по стране)
Частное лицо:
*фамилия
*имя
*дата рождения
*место рождения
В таблице сделок ссылка не на лицо а на документ удостоверяющий личность.
Документ удостоверяющий личность:
*страна
*номер
*дата выдачи
*кем выдано
*ссылка на лицо кому выдано
Частное лицо заним. предприн. деятельностью:
*страна
*идентификатор (ссылка на таблицу идентфикаторов по стране)
*ссылка на лицо
Начальник
has_many: подчиненные
Язык письма должен соответствовать языку пользователя которому отсылается.
Списки: ресурсы, лица, места, сделки.
При нажатии на линку "Сделки" должна отобразится таблица сделок + вывалится раскрывающееся меню ("Выдачи" и "Накладные", дальше именуемые подгруппами). При нажатии на подгруппу, толжна отобразится таблица в соответствии с классом подгруппы (нп, для "Выдачи" все выдачи).
В таблице ресурсов (Asset):
Название, ед. изм.
В таблице лиц:
Название
В таблице места:
Название
В таблице сделки:
Название, Лицо, Взятый ресурс(give), Отданый Ресурс(take), Курс(rate)
В таблице Накладные
Дата, Документ ID, Поставщик, Кладовщик, Место кладовщика, Состояние
В таблице Выдачи
Дата, Кладовщик, Место кладовщика, Прораб, Состояние
Время на работу: 30 часов.
Список правил продумаем отдельно. Сделай все сверху. как дойдешь до правил будем обсуждать.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.