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