/
Alexandr_Pidkasisty
/
froma2
Обзор
Документация
Войти
/
Alexandr_Pidkasisty
/
froma2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
libsource/manufact_module.h
768 строк
54 KB
Alexandr Pidkasisty
В модуле MANUFACT создал новый метод clsManufactory::GetHomeCurrency для получения индекса валюты. Повысил версию библиотеки до 1.2.11
06 июл 2026, 14:35
Верифицирован
06 июл 2026, 14:35
40d440f
Код
Авторство
О чём код?
#ifndef FROMA2_MANUFACT_MODULE_H_INCLUDED #define FROMA2_MANUFACT_MODULE_H_INCLUDED /** ���� ���� �������� ������ ���������� ������������ ����������� ��� �������������� �������������, ����������� ������� � ������������ ������������ ������������ ����������� "Free Operation Manager 2" (���������� FROMA2). **/ /****************************************************************************************************/ /****************************************************************************************************/ /*** ***/ /*** Copyright � 2025 ����������� ��������� �������� ***/ /*** ***/ /*** ������ �������� ��������� �����, ���������� ����� ������� ������������ ����������� � ***/ /*** ������������� ������������ (����� � ����������� �����������), ������������ ������������ ***/ /*** ����������� ����������� ��� �����������, ������� �������������� ����� �� �������������, ***/ /*** �����������, ���������, �������, ����������, ���������������, ����������������� �/��� ***/ /*** ������� ����� ������������ �����������, � ����� �����, ������� ��������������� ������ ***/ /*** ����������� �����������, ��� ���������� ��������� �������: ***/ /*** ***/ /*** ��������� ���� ����������� �� ��������� ����� � ������ ������� ������ ���� �������� �� ***/ /*** ��� ����� ��� �������� ����� ������� ������������ �����������. ***/ /*** ***/ /*** ������ ����������� ����������� ��������������� ���� ���ܻ, ��� �����-���� ��������, ���� ***/ /*** ���������� ��� ���������������, ������� �������� �������� �����������, ������������ �� ***/ /*** ��� ����������� ���������� � ���������� ���������, �� �� ������������� ���. �� � ����� ***/ /*** ������ ������ ��� ��������������� �� ����� ��������������� �� �����-���� �����, �� ����� ***/ /*** ��� �� ���� �����������, � ��� �����, ��� �������� ���������, ������� ��� ���� ��������, ***/ /*** ��������� ��-�� ������������� ������������ ����������� ��� ���� �������� � ����������� ***/ /*** ������������. ***/ /*** ***/ /****************************************************************************************************/ /****************************************************************************************************/ #include <vector> // ����������� ���������� #include <algorithm> // ����������� ���������� ��� ������ � vector #include <thread> // ������ ���������� #include <future> // ������ ���������� #include <mutex> // ���������� ������� #include "common_values.hpp" // ����� ����, ���������, ������� #include "serialization_module.hpp" // ������ ������������ #include "LongReal_module.h" // ������� ���������� /*************************************************************************************************************************/ /*************************************************************************************************************************/ /** **/ /** **/ /** ��������� � ������� clsRecipeItem, clsManufactItem, clsManufactory **/ /** ������ �� 2025.06.11 **/ /** **/ /** **/ /*************************************************************************************************************************/ /*************************************************************************************************************************/ using namespace nmBPTypes; // �������� ����������� ��������� � ����, ������������ �� ���� ������� ������� using namespace nmPrntSrvs; // ��������� � ������� ��� ������� ����������� �������� const string strName = "������������ ", strMeas = "��.���������", fileopenerror = "������ �������� �����"; /*************************************************************************************************************************/ /** **/ /** ��������������� ������� **/ /** **/ /*************************************************************************************************************************/ inline void Sum(decimal arr1[], const decimal arr2[], size_t N); /** ����� ��������� ����������� ��� �������, ��������� ��������� � ������ �������. ���������: arr1 - ������ ������, arr2 - ������ ������, N - ����������� ����� ��������. ��� ������� ������ ����� ���������� ������ N. ����� inline ��� ����������� ��� ���� � ����� ������. ��������!!! ����� �� ��������� ���������� ����������� �������� **/ inline void Dif(decimal arr1[], const decimal arr2[], size_t N); /** ����� �������� ����������� ��� �������, ��������� ��������� � ������ �������. ���������: arr1 - ������ ������, arr2 - ������ ������, N - ����������� ����� ��������. ��� ������� ������ ����� ���������� ������ N. ����� inline ��� ����������� ��� ���� � ����� ������. ��������!!! ����� �� ��������� ���������� ����������� �������� **/ inline decimal *Mult(const decimal arr1[], const decimal arr2[], const size_t N); /** ����� ���������� ��������� ��������� ��������� ���� �������� � ����������� ��������� ���� �� �����. ��������� ������������ � ���� ��������� �� ����� ������. ���������: arr1 - ������ ������, arr2 - ������ ������, N - ����������� ����� ��������. ��� ������� ������ ����� ���������� ������ N. ��������!!! ����� �� ��������� ���������� ����������� �������� � �� ��������� ������� �� nullptr **/ /*************************************************************************************************************************/ /** **/ /** class clsRecipeItem **/ /** **/ /*************************************************************************************************************************/ class clsRecipeItem { /** ����� - ��������� ���������� ��������. ��������� ������� �������� ������������ ����� �������: ������ ������� - ��� �������, �������������� � ������������ ��������, ������� - ������� ����������������� �����; �� ����������� ����� � �������� ����������� �������� ������ �������� �� ������������ ������� ������� �������� � ����������� ��������� � ��������� ������ ����������������� �����. ������ � ����� ������� ������� ������������� ������� ������ �������� ��������. **/ private: string name; // �������� �������� string measure; // �������� ������� ��������� ������������ ������ �������� size_t duration; // ������������ ����������������� ����� size_t rcount; // ���������� ������� � ������������ ��������, ��������� ��� ������������ �������� strNameMeas *rnames; // ��������� �� ���������� ������ � ���������� �������� � ��������� ���������. ����������� rcount decimal *recipeitem; // ��������� �������� (���������� ������ ��������� ������� �������� rcount*duration ). // ��������� � i,j-�������� ������� ������������ ���: *(recipeitem + duration * i + j), ��� // i - ����� ������, j - ����� �������. �������� (i,j)-������ ������� �������� ������ i-�� // ������� �� ������������ ������� �������� � j-� ������� �� ������ ��� ����������������� ����� decimal *CalcRawMatVolumeItem(const size_t PrCount, const size_t period, const decimal volume) const; /** ����� ������������ ����� ����������� �������� � ������ ������� ���������������� ����� � ����������� �� ���������� ������ �������� �������� �� ������ ����� �����. ����� ������������ ����������� � �������� ������ ��� ������ ���������� ����������������� ����� (���). ��� - ��� ������� ������������ ������ ������������ �������� � �����-���� ��������� ������� �������. ���������: PrCount - ����� �������� �������, period - ����� ������� �������, � ������� ��������� ������� ������������� �������, volume - ��������� ����� ����� ��������. ����� ���������� ��������� �� ���������� ������, ������ ��������� �������, �������� rcount*PrCount � ������������� �������� ��������� � ������������ ��������: ����� ����� ������� ��������� � ������ ������� ��������, ����� �������� - � ������������� �������. ������� ������ ������� �� ������������� (������������� ���������� �������). ��������!!! ��� ������ ������� ������ ������� ������� � ������������� ������������� ������ � �������� ���������� ������ ������� ������������� ������� **/ decimal *CalcWorkingVolumeItem(const size_t PrCount, const size_t period, const decimal volume) const; /** ����� ������������ ������ �������������� ������������ ��� ��������, ������������ � ���������� ������ �������. ���������: PrCount - ����� �������� �������, period - ����� ������� �������, � ������� ��������� ������� ������������� �������, volume - ��������� ����� ����� ��������. ����� ���������� ��������� �� ���������� ������ ������������ ������� �������������� ������������ � ����������� ��������� �������� PrCount. ��������!!! ��� ������ ������� ������ ������� ������� � ������������� ������������� ������ � �������� ���������� ������ ������� ������������� �������. **/ decimal *CalcWorkingVolume(const size_t PrCount, const strItem volume[]) const; /** ����� ������������ ������ �������������� ������������ ��� ����������� �������� � ����������� ���������, ������������ �� ���������� ����� �������. ���������: PrCount - ����� �������� �������, volume - ��������� �� ������ ����������� PrCount � �������� ������������ �������� �� �������� (���� ������� ��������). ����� ���������� ��������� �� ���������� ������ ������������ ������� �������������� ������������ � ����������� ��������� �������� PrCount. ��������!!! ��� ������ ������� ������ ������� ������� � ������������� ������������� ������ � �������� ���������� ������ ������� ������������� �������. **/ decimal *CalcWorkingValueItem(const size_t _PrCount, const size_t period, const decimal rmprice[], const decimal volume) const; /** ����� ���������� ���������� ������ ��������� ������������� �������� � ������� ���������� ���������������� �����. ������� ����������� � �������� ������ period. ����������� ������������� ������� _PrCount. ���������: _PrCount - ������������ �������, period - ������ ������� ��������, rmprice[] - 2D-������ � ������ �������� ������������ rcount*_PrCount, volume - ����� ������������ �������� � ������ period. ����� ���������� ���������� ������ ������������ _PrCount. ��������!!! ��� ������ ������� ������ ������� ������� � ������������� ������������� ������ � �������� ���������� ������ ������� ������������� �������. **/ decimal *CalcWorkingValue(const size_t _PrCount, const size_t period, const decimal rmprice[], const decimal volume) const; /** ����� ���������� ���������� ������ ���������������� ������������� �������� � ������� ���������� ���������������� �����. ������� ����������� � �������� ������ period. ����������� ������������� ������� _PrCount. ���������: _PrCount - ������������ �������, period - ������ ������� ��������, rmprice[] - 2D-������ � ������ �������� ������������ rcount*PrCount, volume - ����� ������������ ��������� ������ period. ��������!!! ��� ������ ������� ������ ������� ������� � ������������� ������������� ������ � �������� ���������� ������ ������� ������������� �������. **/ decimal *CalcWorkingBalanceItem(const size_t _PrCount, const size_t period, const decimal rmprice[], const decimal volume) const; /** ����� ���������� ���������� ������ ���������������� ������������� �������������� ������������ � ������� ���������� ���������������� �����. ������� ����������� � �������� ������ period. ����������� ������������� ������� _PrCount. ���������: _PrCount - ������������ �������, period - ������ ������� ��������, rmprice[] - 2D-������ � ������ �������� ������������ rcount*PrCount, volume - ����� ������������ �������� � ������ period. ��������!!! ��� ������ ������� ������ ������� ������� � ������������� ������������� ������ � �������� ���������� ������ ������� ������������� �������.**/ decimal *CalcProductBalanceItem(const size_t _PrCount, const size_t period, const decimal rmprice[], const decimal volume) const; /** ����� ���������� ���������� ������ ������������� �������� ��������, ����������� � ������ period. ����������� ������������� ������� _PrCount. ���������: _PrCount - ������������ �������, period - ������ ������� ��������, rmprice[] - 2D-������ � ������ �������� ������������ rcount*PrCount, volume - ����� ������������ �������� � ������ period. ��������!!! ��� ������ ������� ������ ������� ������� � ������������� ������������� ������ � �������� ���������� ������ ������� ������������� �������.**/ void clsEraser(); /** ����� "��������" ��� ���� ���������� ������ **/ void View_f_Item(const size_t PrCount, const strItem ProPlan[], const decimal rmprice[], const string&\ _hmcur, decimal* (clsRecipeItem::*f)(const size_t, const size_t, const decimal*, const decimal) const) const; /** ��������� ������� ��� ���������� ����������� ��������. ��������� ����������� �������� ����������������� �������: CalcWorkingValueItem, CalcWorkingValue, CalcWorkingBalanceItem � CalcProductBalanceItem. ������������ ���������: ViewWorkingValueItem, ViewWorkingValue, ViewWorkingBalanceItem � ViewProductBalanceItem. ���������: PrCount - ����� �������� �������, ProPlan[] - ��������� �� ������ c ������ ������ ������� ��������� ������������ PrCount, rmprice[] - 2D-������ � ������ �������� ������������ rcount*PrCount, ��� rcount - ���������� ������� ��������; decimal* (clsRecipeItem::*f)(const size_t, const size_t, const decimal*, const decimal) const - ��������� �� ���� �� �������: CalcWorkingValueItem, CalcWorkingValue, CalcWorkingBalanceItem ��� CalcProductBalanceItem. **/ void View_f_Balance(const size_t _PrCount, const strItem ProPlan[], const decimal rmprice[], const string& _hmcur, strItem* (clsRecipeItem::*f)(const size_t, const decimal*, const strItem*) const) const; /** ��������� ������� ��� ���������� ����������� ��������. ��������� ����������� �������� ����������������� �������: CalcWorkingBalance � CalcProductBalance. ������������ ���������: ViewWorkingBalance � ViewProductBalance. ���������: PrCount - ����� �������� �������, ProPlan[] - ������ c ������ ������ ������� ��������� ������������ PrCount, rmprice[] - 2D-������ � ������ �������� ������������ rcount*PrCount, ��� rcount - ���������� ������� ��������; strItem* (clsRecipeItem::*f)(const size_t, const decimal*, const strItem*) const - ��������� �� ���� �� ������� CalcWorkingBalance ��� CalcProductBalance. **/ public: clsRecipeItem(); /** ����������� ��� ����������. ������ ��� �������� ���������� ������ ��� ���������� �������������� ������ �� ����� � ���� ���������, ��� ����������� ��� ����������� � ��������� �� ������� �������. **/ clsRecipeItem(const string &_name, const string &_measure, const size_t _duration, const size_t _rcount,\ const strNameMeas _rnames[], const decimal _recipeitem[]); /** ����������� � ������ ���� ����������. ���������: &_name - ������ �� �������� ��������, &_measure - ������ �� ������������ ������� ��������� ������������ ������ ��������, _duration - ������������ ����������������� �����, _rcount - ���������� ������� ��������, _rnames[] - ��������� �� ������ � �������������� �������� � ��������� ��������� �������� _rcount, _recipeitem[] - ��������� �� ������ ���������� ������ ������� � ����������� ������������ _rcount*_duration. **/ clsRecipeItem(const clsRecipeItem &obj); /** ����������� ����������� **/ void swap(clsRecipeItem& obj) noexcept; /** ������� ������ ���������� ����� ���������. ������� ��������� noexcept - �� ���������� ���������� **/ clsRecipeItem(clsRecipeItem &&obj); /** ����������� ����������� **/ clsRecipeItem &operator= (const clsRecipeItem &obj); /** ���������� ��������� ������������ ������������ **/ clsRecipeItem &operator= (clsRecipeItem &&obj); /** ���������� ��������� ������������ ������������ **/ ~clsRecipeItem(); /** ����������**/ /** Get - ������ (��������� �����) **/ strItem *CalcWorkingBalance(const size_t _PrCount, const decimal rmprice[], const strItem ProPlan[]) const; /** ����� ������������ �����, �������� � ������ ������������� �������������� ������������ ��� ����������� ��������, ������������ �� ���������� ����� �������. ���������: _PrCount - ����� �������� �������, ProPlan - ��������� �� ������ ����������� PrCount � �������� ������������ �������� �� �������� (���� ������� ��������), rmprice ��������� �� ������� � ������ �� �������, ������������ rcount*PrCount. ��������!!! ��� ������ ������� ������ ������� ������� � ������������� ������������� ������ � �������� ���������� ������ ������� ������������� �������. **/ strItem *CalcProductBalance(const size_t _PrCount, const decimal rmprice[], const strItem ProPlan[]) const; /** ����� ������������ �����, �������� � ������ ������������� �������� ��������. ���������: _PrCount - ����� �������� �������, ProPlan - ��������� �� ������ ����������� PrCount � �������� ������������ �������� �� �������� (���� ������� ��������), rmprice ������� � ������ �� �������, ������������ rcount*PrCount. ��������!!! ��� ������ ������� ������ ������� ������� � ������������� ������������� ������ � �������� ���������� ������ ������� ������������� �������. **/ decimal *CalcRawMatVolume(const size_t PrCount, const strItem volume[]) const; /** ����� ������������ � ���������� ����� ����������� �������� � ����������� ��������� ��� ����� ����� ������� ��������. ���������: PrCount - ����� �������� �������, volume[] - ��������� �� ������ ����������� PrCount � �������� ������������ �������� �� �������� (���� ������� ��������). ����� ���������� 2D-������ ������ �������� ������������ ����� �������� ��������, � ������� - ������ �������. **/ strNameMeas *GetRawNamesItem() const; /** ����� ���������� ��������� �� ����� ����������� ������������ ������ � �������������� �������� � ��������� ��������� ������� �������� �� ������������ ������� ��������. ������ ��������� ��� ����� � �������� �������� ����� �������������. **/ const strNameMeas* GetRefRawNamesItem() const; /** ����� ���������� ����������� ��������� �� ���������� ������ � �������������� �������� � ��������� ������������ ��������� ��������. **/ decimal* GetRecipeitem() const; /** ����� ���������� ��������� �� ����� ����������� ������������ ������ � ����������� (������ ��������� ������� �������� rcount*duration). ������ ��������� ��� ����� � �������� �������� ����� �������������. **/ const decimal* GetRefRecipeitem() const; /** ����� ���������� ����������� ��������� �� ���������� ������ � ����������� (������ ��������� ������� �������� rcount*duration). **/ const size_t GetDuration() const; // ������� ������������ ����������������� ����� const size_t GetRCount() const; // ������� ������� ������� rnames (���������� ������� ��������) const string& GetName() const; // ������� ������ �� ������������ �������� const string& GetMeasure() const; // ������� ������ �� ������������ ������� ��������� �������� /** --------------------------------- ������ ������������ � �������������� ------------------------------------------------ **/ bool StF(ofstream &_outF); /** ����� ������������� ������ � �������� ���������� �������� ���������� ������ clsRecipeItem (������ � ����, ����� ������������). ���������: &_outF - ��������� ������ ofstream ��� ������ ������. ��������!!! ���� ������ ���� ������ � ������ ios::binary (�� ��������� �����!). **/ bool SaveToFile(const string _filename); /** ����� ������ �������� ���������� ������ � ���� **/ bool RfF(ifstream &_inF); /** ����� ������������� ������ �� �������� ���������� �������� ���������� ������ clsRecipeItem(������ �� �����, ����� ��������������). ���������: &_inF - ��������� ������ ifstream ��� ������ ������. ��������!!! ���� ������ ���� ������ � ������ ios::binary (�� ��������� �����!). **/ bool ReadFromFile(const string _filename); /** ����� ������ �� ����� � ������ � ��������� ������ **/ /** ----------------------- ������ ����������� �������� ������� ������ clsRecipeItem --------------------------------- **/ void ViewMainParametrs() const; /** ������� �� ����� �������� ��������� ������ **/ void ViewRawNames() const; /** ����� ����������� �������� ����������������� ������� GetRawNamesItem **/ void ViewRefRawNames() const; /** ����� ����������� �������� ����������������� ������� GetRefRawNamesItem **/ void ViewRecipeitem() const; /** ����� ����������� �������� ����������������� ������� GetRecipeitem. **/ void ViewRefRecipeitem() const; /** ����� ����������� �������� ����������������� ������� GetRefRecipeitem. **/ void ViewRawMatVolume(const size_t PrCount, const strItem ProPlan[]) const; /** ����� ����������� �������� ����������������� ������� CalcRawMatVolume **/ void ViewWorkingValueItem(const size_t PrCount, const strItem ProPlan[], const decimal rmprice[],\ const string& hmcur) const; /** ����� ����������� �������� ����������������� ������� CalcWorkingValueItem. ���������: PrCount - ����� �������� �������, ProPlan[] - ������ c ������ ������ ������� ��������� ������������ PrCount, rmprice[] - 2D-������ � ������ �������� ������������ rcount*PrCount, ��� rcount - ���������� ������� ��������, hmcur - ������������ ������ ������� ("RUR", "CNY", "USD", "EUR" � ����.) **/ void ViewWorkingValue(const size_t PrCount, const strItem ProPlan[], const decimal rmprice[],\ const string& hmcur) const; /** ����� ����������� �������� ����������������� ������� CalcWorkingValue **/ void ViewWorkingBalanceItem(const size_t PrCount, const strItem ProPlan[], const decimal rmprice[],\ const string& hmcur) const; /** ����� ����������� �������� ����������������� ������� CalcWorkingBalanceItem **/ void ViewWorkingBalance(const size_t _PrCount, const strItem ProPlan[], const decimal rmprice[], const string& hmcur) const; /** ����� ����������� �������� ����������������� ������� CalcWorkingBalance **/ void ViewProductBalanceItem(const size_t PrCount, const strItem ProPlan[], const decimal rmprice[], const string& hmcur) const; /** ����� ����������� �������� ����������������� ������� CalcProductBalanceItem **/ void ViewProductBalance(const size_t _PrCount, const strItem ProPlan[], const decimal rmprice[], const string& hmcur) const; /** ����� ����������� �������� ������� CalcProductBalance **/ }; // class clsRecipeItem /*************************************************************************************************************************/ /** **/ /** class clsManufactItem **/ /** **/ /*************************************************************************************************************************/ class clsManufactItem { /** ����� - ������������ ���������� ��������. ������ ������ � ����������� � �������� ��� ������� �������� � �������� ������� �� ��������� �������, ���� �� �������, ������, ������ � �������� ������������� �������������� ��������, ���������� ������ � �������� ��������� �������������� ������������. **/ private: size_t PrCount; // ���������� �������� ������� const string* name; // ��������� �� �������� �������� const string* measure; // ��������� �� �������� ������� ��������� �������� size_t duration; // ������������ ����������������� ����� size_t rcount; // ���������� ������� � ������������ �������� clsRecipeItem *Recipe; /** ��������� �� ��������� ������ �������� **/ strItem *ProductPlan; /** ��������� �� ������ ������������ PrCount. �������� ���� �� ������� ���������, ������������ �������� �������� ������������� �������� � ������������� ������ ��������� � ������ ������� �������. **/ decimal *RawMatPurchPlan; /** ��������� �� ������ � ������ ������� �������� � ����������� ��������� �� ������� ���� ��������. ����������� ������� rcount*PrCount **/ decimal *RawMatPrice; /** ��������� �� ������ � ������ �� ������� � ������ ������� �������. ������ ������� rcount*PrCount **/ strItem *Balance; /** ��������� �� ������ �� ���������� �������, ���������� ��������� �������������� ������������ � �������� ��������� ������������� ���������. ������ ������� ��������� � ������ �������� ������ PrCount **/ void clsEraser(); /** ����� "��������" ��� ���� ������ **/ public: clsManufactItem(); /** ����������� ��� ���������� **/ clsManufactItem(const size_t _PrCount, const clsRecipeItem &obj); /** ����������� � �����������: _PrCount - ���������� �������� �������, obj - const ������ �� ������ ���� clsRecipeItem. ������ obj ����������. **/ clsManufactItem(const size_t _PrCount, clsRecipeItem &&obj); /** ����������� � �����������: _PrCount - ���������� �������� �������, obj - rvalue ������ �� ������ ���� clsRecipeItem. ������ obj ������������. **/ clsManufactItem(const size_t _PrCount, const string &_name, const string &_measure, const size_t _duration, \ const size_t _rcount, const strNameMeas _rnames[], const decimal _recipeitem[]); /** ����������� � �����������, ������� ����� �������� **/ clsManufactItem(const clsManufactItem &obj); /** ����������� ����������� **/ void swap(clsManufactItem& obj) noexcept; /** ������� ������ ���������� ����� ���������. **/ clsManufactItem(clsManufactItem &&obj); /** ����������� �����������. ����� ����������� ���������� obj �� ���������, ������ �� ���� ���������� ���� ��������� �� nullptr. **/ clsManufactItem &operator= (const clsManufactItem &obj); /** ���������� ��������� ������������ ������������ **/ clsManufactItem &operator= (clsManufactItem &&obj); /** ���������� ��������� ������������ ������������ **/ bool operator == (const string &Rightname) const; /** ��������������� ��������� ��������� ��� ������ ���������� ������� �� ������������ �������� **/ ~clsManufactItem(); // ���������� /** Get - ������ **/ const size_t& GetPrCount() const; // ���������� const-������ �� ���������� �������� ������� const size_t& GetRCount() const; // ���������� const-������ �� ���������� ������� ��������, ������������ � ������������ const size_t& GetDuration() const; // ���������� const-������ �� ������������ ����������������� ����� const string* GetName() const; /** ���������� const-��������� �� ������������ ��������. **/ const string* GetMeasure() const; /** ����� ���������� ����������� ��������� �� ������� ��������� ������������ ������ ��������. **/ const decimal* GetRefRecipe() const; /** ����� ���������� ����������� ��������� �� ���������� ������ � �����������. **/ const strNameMeas* GetRefRawNames() const; /** ����� ���������� ����������� ��������� �� ���������� ������ � �������������� �������� � ��������� ������������ ��������� ��������. **/ const decimal* GetRawMatPurchPlan() const; /** ����� ���������� ����������� ��������� �� ������ RawMatPurchPlan � ������� ����������� �������� � ����������� ��������� ��� ����� ����� ������� �������� **/ const decimal* GetRawMatPrice() const; /** ����� ���������� ����������� ��������� �� ������ RawMatPrice � ������ �� �������. **/ const strItem* GetBalance() const; /** ����� ���������� ����������� ��������� �� ������ � �������, �������� � ������ �������������� �������������� ������������ ��� ����������� ��������, ������������ �� ���������� ����� �������. **/ const strItem* GetProductPlan() const; /** ����� ���������� ����������� ��������� �� ������ � �������, �������� � ������ �������������� ������� ��������� ��� ����������� ��������, ������������ �� ���������� ����� �������. **/ /** Set - ������ **/ bool SetProductPlan(const strItem _ProductPlan[]); /** ����� ����� ����� ������� �������� (����� ������� � ����������� ��������� � ������ �������). ���������: _Product - ��������� �� ������ ���� strItem ������������ PrCount. ������������ ������ ���� _Product.volume. ������ �������� ������������. **/ bool SetProductPlan(strItem* &_ProductPlan); /** ����� ����� ����� ������� �������� (����� ������� � ����������� ��������� � ������ �������). ���������: _Product - ������ �� ��������� �� ������ ���� strItem ������������ PrCount. ������������ ������ ���� _Product.volume. ������ �������� ������������. ��������!!! ����� ����������� ������ _ProductPlan �� ���� � �������� �������������� ������! **/ bool SetRawMatPrice(const decimal _Price[]); /** ����� ����� ��� �� �������. ��������������, ��� ����� ��������� ������� ���������� � ����������� � ��������, ����� ���������� ���������� �� ������� ����� �� ��� �������. ��� ���������� � ������� ������� ������ ���������� � ������ RawMatPrice �������� rcount*PrCount. ���������: _Price - ��������� �� ������ (�������) ��� �� ������� �������� rcount*PrCount. **/ bool MoveRawMatPrice(decimal* &_Price); /** ����� ����� ��� �� �������. ��������������, ��� ����� ��������� ������� ���������� � ����������� � ��������, ����� ���������� ���������� �� ������� ����� �� �������. ��� ���������� � ������� ������� ������ ������������ � ������ RawMatPrice �������� rcount*PrCount. ���������: _Price - ��������� �� ������ (�������) ��� �� ������� �������� rcount*PrCount. �� ��������� ������ ��������� _Price ��������� �������� nullptr. **/ bool SetRawMatPrice(const strItem _Price[]); /** ���������� ������ SetRawMatPrice(const decimal), �� ������� ������ ���� strItem (������������ ���� price) **/ /** �������������� ������ **/ bool Resize(size_t _n); /** ������� �������� ������� ��������, ������������ ����� ����� �������� �������, ������ _n. ��� _n < PrCount, ������ ����������, ��� _n > PrCount, - ����������� ����� �������� �������� � �������� ����������. ������� ���������� true ��� ������� ��������� �������� ��������, false - � ��������� ������ **/ void CalcRawMatPurchPlan(); /** ����� ������������ ����� ����������� �������� � ����������� ��������� ��� ����� ����� ������� �������� � ��������� ������ RawMatPurchPlan. **/ bool CalculateItem(); /** ����� ������������ �����, �������� � ������ ������������� �������������� ������������ � ������� ��������� ��� ����������� ��������, ������������ �� ���������� ����� �������. **/ /** --------------------------------- ������ ������������ � �������������� ------------------------------------------------ **/ bool StF(ofstream &_outF); /** ����� ������������� ������ � �������� ���������� �������� ���������� ������ clsManufactItem (������ � ����, ����� ������������). ���������: &_outF - ��������� ������ ofstream ��� ������ ������ **/ bool SaveToFile(const string _filename); /** ����� ������ �������� ���������� ������ clsManufactItem � ���� **/ bool RfF(ifstream &_inF); /** ����� ������������� ������ �� �������� ���������� �������� ���������� ������ clsManufactItem (������ �� �����, ����� ��������������). ���������: &_inF - ��������� ������ ifstream ��� ������ ������ **/ bool ReadFromFile(const string _filename); /** ����� ������ �� ����� � ������ � ��������� ������ clsManufactItem **/ /** ----------------------- ������ ����������� �������� ������� ������ clsManufactItem ------------------------------- **/ void ViewMainParametrs() const; /** ����� ����������� �������� ������� GetPrCount, GetName, GetMeasure, GetDuration, GetRCount **/ void ViewRefRecipe() const; /** ����� ����������� �������� ������� GetRefRecipe � GetRefRawNames **/ void ViewRawMatPurchPlan() const; /** ����� ����������� �������� ����������������� ������� GetRCount, GetRefRawNames, GetPrCount, CalcRawMatPurchPlan � GetRawMatPurchPlan. **/ void ViewRawMatPrice(const string& hmcur) const; /** ����� ����������� �������� ����������������� ������� GetRCount, GetRefRawNames, GetPrCount, SetRawMatPrice � GetRawMatPrice. **/ void ViewCalculate(const string& hmcur) const; /** ����� ����������� �������� ����������������� ������� GetBalance � GetProductPlan. **/ }; // class clsManufactItem /*************************************************************************************************************************/ /** **/ /** class clsManufactory **/ /** **/ /*************************************************************************************************************************/ class clsManufactory { /** ����� - ������������ ���� ����������� ��� ������� ���������. ��������� ����������� ������ ����������� � �������� ��� ������� ��������� � �������� ������� �� ��������� �������, ���������� ������������� ������������� ���������, ���������� ������, ���������� ��������� � �������� ��������� �������������� ������������ ������� ��������. ��� ������� ���������������� ����������� ��������� ���� �� ����� (����� ������ ����� � ��������� �������� �� �� ����� ��������) ��������� ������� ������������� ����� �����������. **/ private: size_t PrCount; // ���������� �������� ������� size_t RMCount; // ������ ���������� ������� � ������������ �������� Currency hmcur; // �������� (��������) ������ ("Home Currency") strNameMeas *RMNames; /** ������ ������ � ���������� ��������. ����������� RMCount. ���� ������ � ������� �� �������� clsRecipeItem::*rnames �������� ������ ������ ���� ������� ��������. ��������������, RMCount >= clsRecipeItem::rcount. **/ vector <clsManufactItem> Manuf; // ������ ������������ ��������� ��������� clsProgress_shell<type_progress>* pshell{nullptr}; // ��������� �� ������-�������� ��� ��������-���� inline bool Checkrnames(const size_t _rcount, const strNameMeas _rnames[]); /** ����� �������� ����� ���� �� ������� _rnames � ������� RMNames. � ������ ������� � ������� _rnames ���� �� ������ �����, �������������� � RMNames, ������ false. ���� ������������� ���� ���, �� ���������� true. **/ strItem* gettotal(const strItem* (clsManufactItem::*f)() const) const; /** ����� ���������� ��������� �� ���������� ������, ���������� �������� ��������� ������� � ��������� �������������� ������������ (��� ����������� ������ f ������ GetBalance) ��� ������� ������ ���� ��������� (��� ����������� ������ f ������ GetProductPlan) � �����������, �������� � ������ ����������� ���������. ������ ������� Manuf.size()*PrCount. ������ ������� ������� ����� ��� strItem, �.�. ����� � ����� ������� �������� volume, price � value ��� ��������. ������ ��������� � ������������ ������, ����� ������������� ������� ������ �������� � ������� ��������� delete[].**/ public: clsManufactory(); /** ������ �����������. ����������� � ������ emplace_back ��� �������������� ������ �� �����. **/ clsManufactory(const size_t _PrCount, const size_t _RMCount, const strNameMeas _RMNames[], const size_t msize); /** ����������� � �����������: _PrCount - ���������� �������� �������, _RMCount - ������ ���������� ������� ��������, _RMNames - ������ ������ � ���������� ��������, msize - ������ ���������� ������������ ���������. **/ clsManufactory(const size_t _PrCount, const size_t _RMCount, const strNameMeas _RMNames[], const size_t msize,\ const Currency _cur, const clsRecipeItem _Recipies[]); /** ����������� � �����������: _PrCount - ���������� �������� �������, _RMCount - ������ ���������� ������� ��������, _RMNames - ������ ������ � ���������� ��������, msize - ������ ���������� ������������ ���������, _cur - ������ �������, _Recipies - ��������� �� ������ � ����������� ���������. ������������ �������� � ��������� ����������. **/ clsManufactory(const size_t _PrCount, const size_t _RMCount, strNameMeas* &_RMNames, const size_t msize,\ const Currency _cur, clsRecipeItem* &_Recipies); /** ����������� � �����������: _PrCount - ���������� �������� �������, _RMCount - ������ ���������� ������� ��������, _RMNames - ������ ������ � ���������� ��������, msize - ������ ���������� ������������ ���������, _cur - ������ �������, _Recipies - ������ �� ��������� �� ������ � ����������� ���������. ������������ �������� � ��������� ������������. **/ clsManufactory(const clsManufactory&); // ����������� ����������� void swap(clsManufactory& obj) noexcept; // ������� ������ ���������� ����� ��������� clsManufactory(clsManufactory&&); // ����������� ����������� clsManufactory& operator=(const clsManufactory&); // �������� ������������ ������������ clsManufactory& operator=(clsManufactory&&); // �������� ������������ ������������ ~clsManufactory(); /** ���������� **/ /** Set - ������ **/ void Set_progress_shell(clsProgress_shell<type_progress>* val); /** ������� ����������� ��������� pshell ����� ������� val **/ void Set_progress_message(string&& _message); /** ������� ������������� ����� �������� ��������� �� ����� ������ ���������� **/ void Set_progress_maxcount(const int _mx); /** ������� ������������� ����� �������� ������������� ����� �������� ��� ���������� ��������� **/ void SetCurrency(const Currency&); /** ������������� �������� ������ ������� **/ bool SetManufItem(const string &_name, const string &_measure, const size_t _duration, const size_t _rcount,\ const strNameMeas _rnames[], const decimal _recipe[], const strItem _pplan[]); /** ����� �������� ������������ ��� ����������� ��������. ������� ����� ��������� ������ clsManufactItem, ��������� ��� � ������, ������ ������ �������� � ��������� � ��������� ������������. ���������: _name - ������������ ��������, _measure - ������������ ������� ���������, _duration - ������������ ����������������� �����, _rcount - ����� ������� ��������, ����������� � ������������ ������� ��������, _rnames - ������ � �������������� ��������, ������������ rcount, ���������� ������������� ������������ �� ������� ������� � ���������� ��������, _recipe - ��������� �� 2D-������ � �����������, �������� rcount*duration, _pplan - ��������� �� ������ �������� PrCount � ������ ������� ��������. **/ bool SetManufItem(const clsRecipeItem &obj, const strItem _pplan[]); /** ����� �������� ������������ ��� ����������� ��������. ������� ����� ��������� ������ clsManufactItem, ��������� ��� � ������. ���������: obj - ���������� ��������� ������ clsRecipeItem, _pplan - ��������� �� ������ �������� PrCount � ������ ������� �������� **/ bool SetManufItem(clsRecipeItem &&obj, const strItem _pplan[]); /** ����� �������� ������������ ��� ����������� ��������. ������� ����� ��������� ������ clsManufactItem, ��������� ��� � ������. ���������: obj - ������������ ��������� ������ clsRecipeItem, _pplan - ��������� �� ������ �������� PrCount � ������ ������� �������� **/ bool SetManufItem(const clsManufactItem &obj); /** ����� �������� ������������ ��� ����������� ��������. ������� ����� ��������� ������ clsManufactItem, ��������� ��� � ������. ���������: obj - ���������� ��������� ������ clsManufactItem **/ bool SetManufItem(clsManufactItem &&obj); /** ����� �������� ������������ ��� ����������� ��������. ������� ����� ��������� ������ clsManufactItem, ��������� ��� � ������. ���������: obj - ������������ ��������� ������ clsManufactItem **/ bool SetProdPlan(const strItem _ProdPlan[]); /** ����� ������ ���� ������� ���� ��������� � ������������. ���������: _ProdPlan - ��������� �� ������ ������ � ������ ������� ���� ���������, �������� Manuf.size()*PrCount. ������ �������� ������������. **/ bool SetProdPlan(strItem* &_ProdPlan); /** ����� ������ ���� ������� ���� ��������� � ������������. ���������: _ProdPlan - ������ �� ��������� �� ������ ������ � ������ ������� ���� ���������, �������� Manuf.size()*PrCount. ������ �������� ������������. **/ bool SetRawMatPrice(const decimal _Price[]); /** ����� ����� ��� �� �������. ��������������, ��� ����� ��������� ������� ���������� � ����������� � ��������, ����� ���������� ���������� �� ������� ����� �� �������. ������ ����� �������� ����������� ������ ������� �������� �������, ������� ���������� ���������� � ����� � ������� RawMatPrice ������� ���������� ������������. ���������: _Price - ������� ��� �� ������� �������� RMCount*PrCount. **/ bool SetRawMatPrice(const strItem _Price[]); /** ���������� ������ SetRawMatPrice(const decimal*), �� �������� ������� ������������ ����� ��������� strtItem, �� ������� ������������ ������ ���� price **/ bool SetRawMatPrice(strItem* &_Price); /** ���������� ������ SetRawMatPrice(const strItem _Price[]), �� ����� ����������� �������� ������ ������������, � ��������� _Price ���������� ������ nullptr. **/ /** ��������� ������ **/ bool IncreaseCapacity(size_t msize); /** ����� ����������� ������ ������� ��� ���������� ����� ���������. ������ ��� ����� �������� ����������� � �������� ���� ��������� �������, ��� ������ ��������. ����� �� ������ ������ ������� � ������� ��� �������������. **/ /** �������������� ������. ���������� � ����������� ������ **/ void CalcRawMatPurchPlan(size_t bg, size_t en); /** ����� ������������ ����� ����������� �������� � ����������� ��������� � ������������ � ������ ������� ��� ������� �������� � ���������: �� �������� � �������� bg �� �������� � �������� en-1. **/ void CalcRawMatPurchPlan(); /** ����� ������������ ����� ����������� �������� � ����������� ��������� ��� ����� ����� ������� ���� ���������. **/ void CalcRawMatPurchPlan_future(); /** ����� ������������ ����� ����������� �������� � ����������� ��������� ��� ����� ����� ������� ���� ���������. ��� ������� ����������� ���������� � �������, ����� ������� �� ������� ������ ����� ���� ����������. **/ void CalcRawMatPurchPlan_thread(); /** ����� ������������ ����� ����������� �������� � ����������� ��������� ��� ����� ����� ������� ���� ���������. ��� ������� ����������� � �������, ����� ������� �� ������� ������ ����� ���� ����������. **/ bool Calculate(size_t bg, size_t en); /** ����� ������������ �����, �������� � ������ ������������� �������������� ������������ � ������� ��������� ��� ��������� � ��������� �� bg �� en-1, ����������� �� ���������� ����� �������. ����� ���������� �������� ������ CalculateItem ��� ������� ���������� ������������; ��������� ������� ��������� � ������� �������������� ������������ ��� ������� �������� �� ��������� ��������� **/ bool Calculate(); /** ����� ������������ �����, �������� � ������ ������������� �������������� ������������ � ������� ��������� ��� ���� ���������, ����������� �� ���������� ����� �������. ����� ���������� �������� ������ CalculateItem ��� ������� ���������� ������������; ��������� ������� ��������� � ������� �������������� ������������ ��� ������� �������� **/ bool Calculate_future(); /** ����� ������������ �����, �������� � ������ ������������� �������������� ������������ � ������� ��������� ��� ���� ���������, ����������� �� ���������� ����� �������. ����� ���������� �������� ������ CalculateItem ��� ������� ���������� ������������; ��������� ������� ��������� � ������� �������������� ������������ ��� ������� ��������. ��� ������� ����������� � ����������� �������, ����� ������� �� ������� ������ ����� ���� ����������. **/ bool Calculate_thread(); /** ����� ������������ �����, �������� � ������ ������������� �������������� ������������ � ������� ��������� ��� ���� ���������, ����������� �� ���������� ����� �������. ����� ���������� �������� ������ CalculateItem ��� ������� ���������� ������������; ��������� ������� ��������� � ������� �������������� ������������ ��� ������� ��������. ��� ������� ����������� � �������, ����� ������� �� ������� ������ ����� ���� ����������. **/ /** Get - ������ **/ const size_t GetRMCount() const; // ����� ���������� ����� ����� ������� �������� const size_t GetPrCount() const; // ����� ���������� ����� �������� ������� const size_t GetProdCount() const; // ���������� ����� ��������� const string GetCurrency() const; /** ���������� �������� ������ ������� � ���� ��������� ������ **/ const size_t GetHomeCurrency() const; /** ���������� �������� ������ ������� � ���� �������� ���� hmcur. **/ strNameMeas *GetProductDescription() const; /** ����� ���������� ��������� �� ����� ����������� ������ � ������� � ��.��������� ���� ���������. **/ const strNameMeas *GetRMNames() const; /** ����� ���������� const-��������� �� ���������� ������ � ������� � ��. ��������� ��������. **/ strNameMeas *GetRawMatDescription() const; /** ����� ���������� ��������� �� ����� ����������� ������ � ������� � ��. ��������� ��������. **/ decimal *GetRawMatPurchPlan() const; /** �������������� ����� ���������� ��������� �� ����� ����������� ������ �������� RMCount*PrCount, � ������� ���������� ����������� ��� ������� ������������ ������� � ������ ������� �������. ����������� � �������� ���������, �� ���� ��������� ������������� ���� ���������. **/ strItem *GetRMPurchPlan() const; /** �������������� ����� ���������� ��������� �� ����� ����������� ������ �������� RMCount*PrCount, � ������� ���������� ����������� ��� ������� ������������ ������� � ������ ������� �������. ����������� � �������� ���������, �� ���� ��������� ������������� ���� ���������. ��� ������� - strItem, ��������� ������ ���� volume; ���� price � value �������. **/ strItem *GetTotalBalance() const; /** ����� ��������� ��������� �� ���������� ������, ���������� �������� ��������� ������� � ��������� �������������� ������������ ��� ���� ���������. ������ ������� Manuf.size()*PrCount. ������ ������� ������� ����� ��� strItem, �.�. ����� � ����� ������� �������� volume, price � value ��� �������������� ������������. ������ ��������� � ������������ ������, ����� ������������� ������� ������ �������� � ������� ��������� delete[]. **/ strItem *GetTotalProduct() const; /** ����� ���������� ��������� �� ���������� ������, ���������� �������� ��������� ������� � ������� ������ ���� ��������� � �����������, �������� � ������ ����������� ���������. ������ ������� Manuf.size()*PrCount. ������ ������� ������� ����� ��� strItem, �.�. ����� � ����� ������� �������� volume, price � value ��� ��������. ������ ��������� � ������������ ������, ����� ������������� ������� ������ �������� � ������� ��������� delete[].**/ const decimal* GetRecipeItem(const string& Name) const; /** ����� ���������� ����������� ��������� �� ���������� ������ � ����������� ��� ������������ �������� � ������ Name **/ const decimal* GetRecipeItem(const size_t _ind) const; /** ����� ���������� ����������� ��������� �� ���������� ������ � ����������� ��� ������������ �������� � �������� _ind **/ const strNameMeas* GetRawNamesItem(const string& Name) const; /** ����� ���������� ����������� ��������� �� ���������� ������ � �������������� �������� � ������ �� ��������� � ��������� �������� � ������ Name **/ const strNameMeas* GetRawNamesItem(const size_t _ind) const; /** ����� ���������� ����������� ��������� �� ���������� ������ � �������������� �������� � ��������� �������� � �������� _ind **/ const size_t GetDuration(const string& Name) const; /** ����� ���������� ������������ ����������������� ����� � ��������� �������� � ������ Name **/ const size_t GetDuration(const size_t _ind) const; /** ����� ���������� ������������ ����������������� ����� � ��������� �������� � �������� _ind **/ const size_t GetRCount(const string& Name) const; /** ����� ���������� ����� ������� ��������, ����������� � ��������� �������� � ������ Name (������ ������� � �������������� ��������) **/ const size_t GetRCount(const size_t _ind) const; /** ����� ���������� ����� ������� ��������, ����������� � ��������� �������� � �������� _ind **/ const strNameMeas GetNameItem(const size_t _ind) const; /** ����� ���������� ������������ �������� � ������� ��� ��������� ��� �������� � �������� _ind **/ /** --------------------------------- ������ ������������ � �������������� clsManufactory ---------------------------------- **/ bool StF(ofstream &_outF); /** ����� ������������� ������ � �������� ���������� �������� ���������� ������ clsManufactory (����� ������������). ���������: &_outF - ��������� ������ ofstream ��� ������ ������ **/ bool SaveToFile(const string _filename); /** ����� ������ �������� ���������� ������ clsManufactory � ���� **/ bool RfF(ifstream &_inF); /** ����� ������������� ������ �� �������� ���������� �������� ���������� ������ clsManufactory (����� ��������������). ���������: &_inF - ��������� ������ ifstream ��� ������ ������ **/ bool ReadFromFile(const string _filename); /** ����� ������ �� ����� � ������ � ��������� ������ **/ /** ----------------------- ������ ����������� �������� ������� ������ clsManufactory --------------------------------- **/ void ViewProjectParametrs() const; /** ����� ����������� �������� ������� GetPrCount, GetProdCount, GetRMCount **/ void ViewRawMatPurchPlan() const; /** ����� ����������� �������� ������� GetRawMatPlan **/ void ViewRawMatPrice() const; /** ����� ����������� �������� ����������������� ������� SetRawMatPrice. **/ void ViewCalculate() const; /** ����� ����������� �������� ����������������� ������� Calculate. **/ void ViewBalance() const; /** ����� ����������� �������� ������� GetProductDescription, GetTotalBalance **/ void ViewProductPlan() const; /** ����� ����������� �������� ������� GetProductDescription, GetTotalProduct **/ void ViewRecipes() const; /** ����� ���������� ������� �� ����� ��������� ���� ��������� **/ }; // clsManufactory #endif // FROMA2_MANUFACT_MODULE_H_INCLUDED