lsfusion-solutions / mycompany Goto Github PK
View Code? Open in Web Editor NEWERP-system for small businesses
License: Apache License 2.0
ERP-system for small businesses
License: Apache License 2.0
Нужно создать свойство archived 'Неактивный' для Item, LegalEntity и т.д. Соответственно, сделать свойство active 'Активный'. На всех формах с выбором товаров добавить по умолчанию FILTERGROUP на только активные записи.
Сделать также, как сделано в Odoo.
Сделать вкладки :
Операции
Во вкладке Склады настройки тоже перенести в конец
Сделать кнопку, которая удалит зарезервированное количество и вернет в статус В ожидании
По аналогии с формами items и item для номенклатуры.
Добавить вкладку со счетами и возможностью их добавления прямо на форме редактирования (это сделать в модуле Invocing). MasterData не должен зависеть от Invoicing.
Пусть в нем можно будет корректировать строки и initial demand, но при этом все изменения писать в историю.
Пусть будет папка Operations (Операции). В нее войдут Поступления и Отгрузки.
В папку Reporting пойдут Текущие остатки.
Папка Настройка будет содержать Склады и Операции.
Нужно создать отдельную папку верхнего уровня invoicing (с отдельным NAMESPACE Invoicing).
Добавить 2 типа документов : Bill (Счет) и Invoice (Накладная). Первый на приход, второй на расход. Поместить их в отдельные папки (bills и invoices).
Также ряд других полей шапки (примечание, партнера, склады и т. д.)
Назвать ResLedger и положить в отдельный модуль. По нему проводить reserved в случае, если статус отгрузки равен Ready.
У платежа должны указываться счет с которого и счет на который. Также у платежа должна быть привязка к счету или к накладной (двумя отдельными свойствами). Добавить кнопку Register Payment по аналогии с Odoo.
Сделать вверху выбор даты/времени (DATA LOCAL). Если дата/время выбрана, то отображать остатки на эту дату, иначе - текущие.
Сделать отдельный модуль Barcode, в котором будет класс Barcode, который ссылается на Item.
Переделать DATA свойство barcode из Item на вычисляемое (какой-то один из штрих-кодов). При вводе значения в это свойство автоматически создавать новый штрих-код, если ни одного нет.
ReceiptOperation -> ReceiptType, ShipmentOperation - ShipmentType
Соответственно, operation -> type. По русски тоже операцию переименовать в тип.
Объявить ее в отдельном модуле Company. Делать форму редактирования и просмотра списка пока не надо (будут использоваться стандартные формы для контрагента). Только нужно добавить кнопку + Компания на форме Контрагенты.
Аналогично логике Receipt, только добавляется колонка Reserved и промежуточный статус Waiting
Для всех справочников, документов и строк документов
Добавить в настройки операций
Создать 2 конкретных класса BankAccount (Банковский счет) и CashAccount (Касса) и один абстрактный Account (Счет). Создать формы просмотра accounts и редактирования account.
Под каждый класс отдельный модуль. Поместить в папку invoicing/accounts.
Кнопки должны быть доступны на тех же статусах, что и в Odoo.
Должна быть не ссылка платежа на инвойс, а DATA NUMERIC[] (Payment, Bill/Invoice), в которой будет сумма закрытия платежа инвойсом.
Создать категории (Category), у которой можно задать предка. Логика категорий должна быть в модуле Category.
Создать 2 конкретных класса Product (Товар) и Service (Услуга), а также один абстрактный класс Item (Номенклатура), от которого они наследуются. Номенклатура должна привязываться к категориям.
Каждый из классов объявляется в своем модуле. Пока делаются две формы : products со списком номенклатуры и product для редактирования номенклатуры.
Все модули должны быть в папке masterdata/items
Посмотреть также, чтобы все другие поля копировались.
Нужно создать новый модуль Receipt, который поместить в папку inventory/receipts
В нем создать документ Receipt со строками ReceiptLine. В шапке должна задаваться даты предполагаемой приемки (Scheduled date), склад, партнер, примечание.
В строках должен выбираться товар (Product), исходное количество (Initial Demand), принятое количество (Done).
Должны быть 3 статуса (черновик - Draft, к приемке - Ready, принят - Done). Сделать соответственно кнопки перехода по статусам внутри формы редактирования.
Создать 2 конкретных класса Individual (Физическое лицо) и LegalEntity (Организация) и один абстрактный Partner (Контрагент), от которого они наследуются.
Сделать формы по вводу и редактированию. Также сделать диалоговую форму по выбору партнера. Все положить в 3 модуля : Individual, Company и Partner. Должны находиться в каталоге masterdata/partners.
Тип, Места хранения, Партнеры, Примечание
Группа налога (TaxGroup) должен быть отдельным справочником. В форме по выбору налога при включении налога из одной группы нужно выключать налоги из всех других групп. То есть, если создать TaxGroup - VAT, и 2 налога VAT 10%, VAT 20%, то при выборе 10% должен сбрасываться 20%.
Чтобы не копировать постоянно код, нужно создать в Doc метакод, который будет добавлять в документ вкладку Подбор. По аналогии с тем, как это описано в статье :
https://habr.com/ru/company/lsfusion/blog/464487/
Вкладку на формах называть search и объявлять их в отдельных модулях : ReceiptSearch, ShipmentSearch, BillSearch и InvoiceSearch. На вкладку вынести колонку с текущим остатком.
По аналогии с отгрузкой и приемкой
Создать в папке inventory модуль Adjustment. В нем документ Adjustment, в котором будет 2 количества : theoreticalQuantity и realQuantity. Там где расхождение, то провести разницу по InvLedger (создать 2 объекта через AGGR - InAdjustment и OutAdjustment).
Нужно создать отдельный модуль ReceiptOperation (рядом с Receipt). Там объявить новый класс ReceiptOperation (Операция) и добавить на него ссылку для документа поступления на склад. В нем задавать название, нумератор, местоположение для приемки по умолчанию.
Сделать автоматическую генерацию номера поступления.
Сделать также, как и в Odoo : подсветить цветом те кнопки, которые переводят в следующий статус. Также постараться сделать такой же порядок кнопок, как и в Odoo.
Такое же ограничение добавить для доступного количества.
Эти ограничения должны включаться в зависимости от опции, установленной для конкретного склада (должно действовать также для всех складов, которые находятся ниже уровнем).
Добавить в тулбар со списком. Новые модули создавать не надо (в Receipt добавить). Копировать только initialDemand, а остальные не трогать. Также не копировать статусы.
Создать новый класс Склад (Stock) с формами просмотра и редактирования. Поместить в отдельный модуль Stock. Поместить в папку inventory.
Логика как в Odoo.
В 4х документах.
На каждом из статусов подсветить легким синим цветом колонку, которую предполагается (и можно вводить на этом статусе)
Для этого вводится классы ReceiptHistory, который ссылается на Receipt.
В строке истории должны быть :
Сделать через метакод в Doc. Для каждого из документов добавить модуль вроде ReceiptHistory, который будет вызывать метакод из Doc. При изменении статусов документов писать соответствующую строку в историю. Историю выводить отдельной вкладкой (там где Строки и Подбор).
Создать новый модуль InvLedger (в папке inventory/ledgers).
В нем сделать абстрактный класс InvLedger 'Регистр изменения остатка'. Добавить свойства :
Посчитать текущий остаток и остаток на дату время.
Сделать форму текущих остатков (слева дерева, справа остатки по всем складам). Внизу движение по товару и складу. Вверху выбор склада.
По этому регистру провести ReceiptLine.
Создать новый модуль Scrap, в котором сделать документ с классом Scrap. В нем должно быть только количество.
Добавить возможность добавлять списание на основе поступлений.
Автоматически заполнять ее в момент установки статуса Done. Показывать ее тоже только в статусе Done.
Подсветить его также notNull.
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.