/
Alexandr_Pidkasisty
/
froma2
Обзор
Документация
Войти
/
Alexandr_Pidkasisty
/
froma2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
libsource/warehouse_module.h
611 строк
47 KB
Alexandr Pidkasisty
В модуль warehouse внес изменения. Теперь метод clsStorage::SetSKU принимает параметр _pur только как константный.
26 июл 2026, 14:07
Верифицирован
26 июл 2026, 14:07
3cf31de
Код
Авторство
О чём код?
#ifndef FROMA2_WAREHOUSE_MODULE_H_INCLUDED #define FROMA2_WAREHOUSE_MODULE_H_INCLUDED /** ���� ���� �������� ������ ���������� ������������ ����������� ��� �������������� �������������, ����������� ������� � ������������ ������������ ������������ ����������� "Free Operation Manager 2" (���������� FROMA2). **/ /****************************************************************************************************/ /****************************************************************************************************/ /*** ***/ /*** Copyright � 2025 ����������� ��������� �������� ***/ /*** ***/ /*** ������ �������� ��������� �����, ���������� ����� ������� ������������ ����������� � ***/ /*** ������������� ������������ (����� � ����������� �����������), ������������ ������������ ***/ /*** ����������� ����������� ��� �����������, ������� �������������� ����� �� �������������, ***/ /*** �����������, ���������, �������, ����������, ���������������, ����������������� �/��� ***/ /*** ������� ����� ������������ �����������, � ����� �����, ������� ��������������� ������ ***/ /*** ����������� �����������, ��� ���������� ��������� �������: ***/ /*** ***/ /*** ��������� ���� ����������� �� ��������� ����� � ������ ������� ������ ���� �������� �� ***/ /*** ��� ����� ��� �������� ����� ������� ������������ �����������. ***/ /*** ***/ /*** ������ ����������� ����������� ��������������� ���� ���ܻ, ��� �����-���� ��������, ���� ***/ /*** ���������� ��� ���������������, ������� �������� �������� �����������, ������������ �� ***/ /*** ��� ����������� ���������� � ���������� ���������, �� �� ������������� ���. �� � ����� ***/ /*** ������ ������ ��� ��������������� �� ����� ��������������� �� �����-���� �����, �� ����� ***/ /*** ��� �� ���� �����������, � ��� �����, ��� �������� ���������, ������� ��� ���� ��������, ***/ /*** ��������� ��-�� ������������� ������������ ����������� ��� ���� �������� � ����������� ***/ /*** ������������. ***/ /*** ***/ /****************************************************************************************************/ /****************************************************************************************************/ #include <vector> // ����������� ���������� vector #include <algorithm> // ����������� ���������� ��� ������ � vector #include <cmath> // ����������� �������������� ������� #include <type_traits> // ������ ��� ��������� ���������� � ���� �� ����� ���������� #include <thread> // ������ ���������� #include <future> // ������ ���������� #include <mutex> // ���������� ������� #include <atomic> // ��������� ���������� ��� ���������� ������� #include "common_values.hpp" // ����� ����, ���������, ������ � ������� #include "serialization_module.hpp" // ������ ������������ #include "LongReal_module.h" // ������� ���������� #include "progress_module.hpp" // ��������� ��������� �������� /*************************************************************************************************************************/ /*************************************************************************************************************************/ /** **/ /** **/ /** ��������� � ������� clsSKU, clsStorage **/ /** ������ �� 2025.06.11 **/ /** **/ /** **/ /*************************************************************************************************************************/ /*************************************************************************************************************************/ using namespace nmBPTypes; // �������� ����������� ���������, ���� � ������� using namespace nmPrntSrvs; // ��������� � ������� ��� ������� ����������� �������� enum AccountingMethod {FIFO = sZero, LIFO, AVG}; // ������� ��������� ����� ������� const string AccountTXT[] = {"FIFO", "LIFO", "AVERAGE"}; // ������������ ��������� ����� ������� enum ChoiseData {purchase = sZero, balance, shipment}; // ����� ������ ��� �����/������: ������ ������� ��� �������� enum PurchaseCalc {calc = sZero, nocalc}; // ���� �����������/ ����������� ������������ ����� ������� const string PurchaseCalcTXT[] = {"AUTO", "MANUAL"}; // ������������ ����� ������� ������� const string ProhibitedTXT[] = {"PROHIBITED", "ALLOWED"}; // ������������ ����� ���������� ����������� � �������� // � ����� � ��� �� ������� struct TLack { /** ��������� ��� ��������� ���������� � �������� �������� � ����� SKU, ��� ���� ������� **/ decimal lack{dZero}; // ������� �������� string Name{EmpStr}; // ������������ SKU (Stock Keeping Unit - ������� ���������� �����), ��� ������� ������� }; // TLack /*************************************************************************************************************************/ /** **/ /** class clsSKU **/ /** **/ /*************************************************************************************************************************/ class clsSKU { /** ����� �������� ��� ����� �������������� ������� (Stock Keeping Unit - ������� ���������� �����)**/ private: size_t PrCount; // ���������� �������� �������. ������� ������ - ������ ����� ������� ������� (������ ��� ���������� �������). string name; // �������� �������������� ������� �������� string measure; // ������� ��������� ������� �������-�������� strItem *Pur; // "Purchase". ��������� �� ������ �� ������ ��������, ����������� �� ����� (���� �����������) strItem *Rem; // "Remaining". ��������� �� ��������������� ������ �������� �� ������ �������� �� ������ �� ����� ������� strItem *Bal; // "Balance". ��������� �� ������ ���������� �������� ����� �������� � ������ ������� strItem *Ship; // "Shipment". ��������� �� ������ ������ ��������, ����������� �� ������ �� ����� (���� ��������); // � �������� ��� ������ ������ ����, ������������ �� ������ FIFO, LIFO ��� Average decimal lack; // ������� �������� ��� �������� �� ������; ���� lack>0, �� �������� �� ����� ���������� bool indr; // ����������, �������� ������������� ������������� ���������� ������������ ���������� � �����-���� // i-� ������� ������� ��� �������� � ���� �� �������: True - �����, False - ������, AccountingMethod acct; // ����������, �������� ������������� ������������� ������� ����� �������: FIFO, LIFO ��� AVG PurchaseCalc pcalc; // ����������, �������� ������������� ������������� ���� ��� ���������� ������� ������� decimal share; // ����� �������� �� ������ � ������ ������, ���������� � ���� �� ������ �������� �� ���� ������ decimal AVGcalc(const strItem P[], strItem R[], strItem S[], size_t N, bool ip); /** ������� ������������ ���� � ��������� ��������, ����������� �� ������ � ������ ������� ������� �� �������� AVG, ��������� ������ �������� � ������ �������� �������� � ���������� ������� �������� ��� ��������. ���������: P[] - ��������� �� ������ ������� (������ �������� ���������, const), R[] - ��������� �� ��������������� ������, - ����� ���� ����������� �������� ���������� ������� �� ������ ������ �� ����� �������, S[] - - ��������� �� ������ ��������, � �������� ��������� ���� S.volume (���������� � �������� ������ �������: �������������� ���� price � value); N - ����������� �������� �������, �������� � ��������; ip - ���������, ������� ����, ����� �� ������������ ���������� � �����-���� ������� ������� ��� �������� � ���� �� �������: "true" ��������, ��� ������� �������������� � ������ ������� ������� � ���������� ������� ����� ���� ������������ � ��������� ���� �� �������, "false" ��������, ��� ������� ������������ � ����� ������� �������, ������� �������� ���� �������� ����� ���� ������ � ��������� ��������. ��������!!! ������� �� ������������ ���� ��������, ���� ��������� ������� ��������; � ������� ��� ��������� �������, ������ ��� � ��������� ����������� ������ �� ���������.**/ decimal FLFcalc(const strItem P[], strItem R[], strItem S[], size_t N, bool ip, AccountingMethod ind); /** ������� ������������ ���� � ��������� ��������, ����������� �� ������ � ������ ������� �������. �� �������� FIFO ��� LIFO, ��������� ������ �������� � ������ �������� �������� � ���������� ������� �������� ��� ��������. ���������: P[] - ��������� �� ������ ������� (������ �������� ���������, const), R[] - ��������� �� ��������������� ������, - ����� ���� ����������� �������� ���������� ������� �� ������ ������ �� ����� �������. S[] - ��������� �� ������ ��������, � �������� ��������� ���� S.volume (���������� � �������� ������ �������: �������������� ���� price � value); N - ����������� �������� �������, �������� � ��������; ip - ���������, ������� ����, ����� �� ������������ ���������� � �����-���� ������� ������� ��� �������� � ���� �� �������: "true" ��������, ��� ������� �������������� � ������ ������� ������� � ���������� ������� ����� ���� ������������ � ��������� ���� �� �������, "false" ��������, ��� ������� ������������ � ����� ������� �������, ������� �������� ���� �������� ����� ���� ������ � ��������� ��������. Ind � ����, ��������������� ������� ����� �������: FIFO ��� LIFO.��������!!! ������� �� ������������ ���� ��������, ���� ��������� ������� ��������; � ������� ��� ��������� �������, ������ ��� � ��������� ����������� ������ �� ���������.**/ decimal PURcalc(strItem P[], const strItem S[], size_t N, bool ip, decimal Shr); /** ������� ������������ ������ �������, ����������� ��� ���������� ����� �������� � ����������� ��������� ������� �������� (������� �������� ��� ���� �� ������ �������� �� ������) � ���������� ������� �������� � ������������ (�������) �������. �������������� ������� � �������� �������� - � ������� �� ���������� (N-1). ������� � ������� ������ �������� ������� � ������������� ������� �������� � ������ ������� (������� ���������� �������). ���������: P[] - ��������� �� ������ ������� (���������� � �������� ������ �������), S[] - ��������� �� ������ ��������, � �������� ��������� ���� S.volume (������ �������� ���������, const); N - ����������� �������� ������� � ��������; ip - ������� ����, ����� �� ������������ ���������� � �����-���� i-� ������� ������� ��� �������� � ���� �� �������: True - �����, False - ������, ��� �������� ����� ������������ ������ ������ �� ���������� ��������; Shr - �������� ������� ��������, ��������, ��� ���� �������� �� ������ (����� �� 0) **/ void BALcalc(const strItem P[], strItem B[], const strItem S[], size_t N); /** ������� ��������� ������ ���������� �������� �������� �� ������. ������� ����� ���� ������� ������ ����� ����������� ������� ������� ������� (�������� PURcalc) � ��� �������� (������� FLFcalc ��� AVGcalc). ���������: P[] - ��������� �� ������ ��������� ������������ ������� (���������), B[] - ��������� �� ������ ���������� �������� (���������� � �������� ������ �������), S[] - ��������� �� ������ ��������� ������������ �������� (���������), N - ����������� �������� ������� � �������� **/ public: clsSKU(); /** ������ �����������. **/ clsSKU(const size_t _PrCount, const string &_name, const string &_measure, AccountingMethod _ac, bool _ind,\ PurchaseCalc _flag, const decimal& _share, const strItem _Ship[]); /** ����������� � ������ ������� ��������. ���������: _PrCount - ���������� �������� �������, _name - ������������ �������, _measure - ������� ��������� ��������, _ac - ����� ����� �������, _ind - ���������� �� �������� � ������� � ����� �������, _flag - ���� �������/ ��������������� ������� ������� ��������, _share - ����� �������� �� ������ � ������ ������, ���������� � ���� �� ������ �������� �� ���� ������, _Ship - ������ � ������� �������� (��������� ������ ���� volume) **/ clsSKU(const size_t _PrCount, const string &_name, const string &_measure, AccountingMethod _ac, bool _ind,\ PurchaseCalc _flag, const decimal& _share); /** ����������� � �����������. ���������� �����������, �� ��� ����� ������ �� ���������. ������������ � ������ clsStorage::RfF ��� ��������������. **/ clsSKU(const clsSKU &obj); /** ��������� � ������ ������������ ������������ ��������� ������ ��� ����������, ��������� ����������� �����������. ����������� ����������� ��������� ��� ����, ����� �� ����� ��������� ��������� (� �� ���������) ����� ��� �������� ������. ����� ����� ������� ����� ������������ � ��������� �������: ��� �������� ������� ������ � �������, ��� ��������� �� �������� (� �� �� ������); ��� ����������� �� ������� ������� ������, ��� ���������� � ������; ��� ������������� ������ ������� ������ ������ �������� ����� ������.**/ clsSKU(clsSKU&& obj); /** ����������� ����������� **/ clsSKU& operator=(const clsSKU &obj); /** ���������� ��������� ������������ ������������ **/ clsSKU& operator=(clsSKU &&obj); /** ���������� ��������� ������������ ������������ **/ ~clsSKU(); /** ���������� **/ bool operator == (const string& Rightname) const; /** ��������������� ��������� ��������� ��� ������ ���������� ������� �� �����**/ void swap(clsSKU& obj) noexcept; // ������� ������ ���������� ����� ��������� /** Get-������ **/ const size_t& Count() const; // ���������� const-������ �� ���������� �������� const string& Name() const; // ���������� const-������ �� �������� �������������� ������� ���������� ����� const string& Measure() const; // ���������� const-������ �� ������� ������������ ��������� string AccMethod() const; // ���������� ������� ����� ������� � ���� ��������� ������ string Permission() const; /** ���������� ���� ����������/���������� �������� � ����� ������� � ���� ��������� ������ */ bool PermissionBool() const; /** ���������� ���� ����������/���������� �������� � ����� ������� � ���� �������� ���� bool **/ string AutoPurchase() const; // ���������� ���� �����������/ ������� ������� ������� � ���� ������ const PurchaseCalc& GetAutoPurchase() const; // ���������� const-������ �� ���� �����������/ ������� ������� ������� const decimal& Share() const; // ���������� const-������ �� �������� ������ �������� � ����� �� ������ �������� const strItem* GetDataItem(const ChoiseData _cd, size_t _N) const; /** ������� ���������� ������ �������� ������� � �������� _N � ���� const-��������� �� ��������� ���� strItem; ����� ������� ������������ ��������� ���������� _cd (purchase - �������, balance - �������, shipment - ��������). **/ const strItem* GetShipment() const; /** ����� ���������� ����������� ��������� �� ������ Ship **/ const strItem* GetPurchase() const; /** ����� ���������� ����������� ��������� �� ������ Pur **/ const strItem* GetBalance() const; /** ����� ���������� ����������� ��������� �� ������ Bal **/ const decimal& GetLack() const; /** ����� ���������� ������� �������� ��� �������� �� ������ **/ /** Set-������ **/ void SetName(const string& _name); // ������ ��� SKU void SetMeasure(const string& _measure); // ������ ������� ��������� void SetPermission(bool _indr); // ������������� ���� �������� � ������� � ����� ������� void SetAutoPurchase(PurchaseCalc _pcalc); // ������������� ���� ����������� ������� void SetShare(decimal _share); // ������������� �������� ������ �������� �� ������ void SetAccount(AccountingMethod _acct); // ������������� ������� ����� ������� bool SetDataItem(const ChoiseData _cd, const strItem _U, size_t _N); /** ������� ���������� � ������� ������� � �������� _N �������� volume, price � value �� ���������� _U; ����� ������� ������������ ��������� ���������� _cd. ���������� True, ���� ������ ������� **/ bool SetPurchase(const strItem _unit[], size_t _count); /** ������� ��������� ������ � ������� �������� �� ����� (������, ����, ���������). ���������: _unit[] - ��������� �� ������ ����������� ������, _count - ����������� ������� (����� �� ��������� � ������������ ������� ������� PrCount). ������ ����������� ������������ �� ���������� ������� Pur � Rem. **/ bool SetPurchase(strItem* &_unit, size_t _count); /** ������� ��������� ������ � ������� �������� �� ����� (������, ����, ���������). ���������: _unit[] - ������ �� ��������� �� ������ ����������� ������, _count - ����������� ������� (����� �� ��������� � ������������ ������� ������� PrCount). ������ ����������� ������������ �� ���������� ������ Pur � ������������ ������� Pur �� ���������� ������ Rem. **/ bool SetPurPrice(const strItem _unit[], size_t _count); /** ������� ��������� ������ ���� �� ���������� �� ����� �������. ���������: _unit[] - ��������� �� ������ ����������� ������, _count - ����������� ������� (����� �� ��������� � ������������ ������� ������� PrCount)**/ bool SetShipment(const decimal _unit[], size_t _count); /** ������� ��������� ������ � �������� ��������� �������� �� ������ (������ ������). ���������: _unit[] - ��������� �� ������, ���������� ������ ��������, _count - ����������� ������� (����� �� ��������� � ������������ ������� ������� PrCount). **/ bool SetShipment(const strItem _unit[], size_t _count); /** ������� ��������� ������ � �������� ��������� �������� �� ������. ��������� ���������� �������� ������ ������ � ����������� ��������� (���� volume). ������ ����������� ������������ �� ���������� ������ Ship. ���������: _unit[] - ��������� �� ������ ���� strItem, ���������� ������ ��������, _count - ����������� ������� (����� �� ��������� � ������������ ������� ������� PrCount).**/ bool SetShipment(strItem* &_unit, size_t _count); /** ������� ��������� ������ � �������� ��������� �������� �� ������. ��������� ���������� �������� ������ ������ � ����������� ��������� (���� volume). ������ ����������� ������������ �� ���������� ������ Ship. ���������: _unit[] - ������ �� ��������� �� ������ ���� strItem, ���������� ������ ��������, _count - ����������� ������� (����� �� ��������� � ������������ ������� ������� PrCount). ��������!!! ����� ����������� ������ _unit �� ���� � �������� �������������� ������! **/ /** ������ ����������� �������� **/ void View() const; // ������� �� ����� ��������� �������, ��������, �������� void ViewData(const ChoiseData _cd) const; /** ����� ����������� �������� ��������� �������, ��������, ��������; ����� ������� ������������ ��������� ���������� _cd (purchase - �������, balance - �������, shipment - ��������). **/ /** ��������� ������ **/ const decimal& CalcPrice(); /** ������� ������������ ���� � ��������� ����������� �������� � ������ ������� �� ������ �������������� ������������� �������� ����� �������: FIFO, LIFO ��� AVERAGE, ���������� ���������� �������� � ������ Ship, ���������� �������� �������� �������� ��� ����������� �������� ��������. ���� ������ �� ����� ����, ������������ ���� � ��������� ����� ����� ������������ ��������. **/ const decimal& CalcPurchase(); /** ������� ������������ ������ �������, ����������� ��� ���������� ����� �������� � ����������� ��������� ������� ��������, ���������� ���������� �������� � ������ Pur, ���������� �������� �������� �������� ��� ����������� �������� �������� � ������� �������.**/ bool Resize(size_t _n); /** ������� �������� ������� �������� ���� strItem, ������������ ����� ����� �������� �������, ������ _n. ��� _n < PrCount, ������ ����������, ��� _n > PrCount, - ����������� ����� �������� �������� � �������� ����������. ������� ���������� true ��� ������� ��������� �������� ��������, false - � ��������� ������ **/ TLack Calculate(); /** ������� ������������ ��������� ����� �������, ���� ��������� ���� pcalc ����������� ������. ������� ����� ������������ ���� � ��������� ����������� ������ � ������������ � ��������� ��������� FIFO, LIFO ��� AVG. ������� ������������ ������� �������� ��� �������� �� ������ lack. ���� lack > epsln, ��������� ����� ������� �������� � ����������� ���������� ����� ���� �������������. ���������� ������������ � ���� ��������� ���� TLack **/ /** ������ ������������� � �������������� **/ bool StF(ofstream &_outF); /** ����� ������������� ������ � �������� ���������� �������� ���������� ������ (������ � ����, ����� ������������). ���������: &_outF - ��������� ������ ofstream ��� ������ ������ **/ bool RfF(ifstream &_inF); /** ����� ������������� ������ �� �������� ���������� �������� ���������� ������ (������ �� �����, ����� ��������������). ���������: &_inF - ��������� ������ ifstream ��� ������ ������ **/ }; // clsSKU /*************************************************************************************************************************/ /** **/ /** class clsStorage **/ /** **/ /*************************************************************************************************************************/ class clsStorage { /** ����� �������� ��� ���������� �������������� ������� **/ private: size_t PrCount; // ���������� �������� �������. ������� ������ - ������ ����� ������� ������� (������ ��� ���������� �������). Currency hmcur; // �������� (��������) ������ ("Home Currency") AccountingMethod acct; // ����������, �������� ������������� ������������� ������� ����� �������: FIFO, LIFO ��� AVG vector <clsSKU> stock; // ��������� ������ atomic<bool> Calculation_Exit; // ���� ���������� ������ ������ Calculate(size_t, size_t) clsProgress_shell<type_progress>* pshell{nullptr}; // ��������� �� ������-�������� ��� ��������-���� strItem* getresult(const strItem* (clsSKU::*)() const) const; /** ����� ������� � ���������� ��������� �� ������ � ��������, ������� �������� � ������ ��������������� ��� ���� ������������ �������� ��� ������� ��� �������� � ����������� �� ��������� � �������� ��������� ������� ���� const strItem* (clsSKU::*)() const (GetPurchase - ��������� �� �������, ������������ ������ � ���������, GetBalance - � ���������, GetShipment - � ����������). **/ template <typename T, typename U = T> void _setdataitem(size_t i, const T val, void (clsSKU::*f)(const U val)); /** ��� SKU � �������� i ����� ������������� �����: ������������, ������� ���������, ���������� �� �������� � ������� � ����� � ��� �� �������, ���� �����������/ ������� ������� �������, �������� ������ ��������. val - ����� ��������������� ��������. ��� ������������ � ��.��������� ��� const string&; ��� ���������� �� �������� � ������� const bool; ��� ����� ����������� const PurchaseCalc; ��� ��������� �������� const decimal (������������ �����). ������������ � �������: clsStorage::SetName, clsStorage::SetMeasure, clsStorage::SetPermission, clsStorage::SetAutoPurchase, clsStorage::SetShare. **/ TLack Calculate(size_t bg, size_t en); /** ������� ��������� ���������� �������� � ������� SKU: ���� ��� ���������� �� ����������, �������������� � ���������� PRCount, �� ��� ����� SKU ���������� ������� Resize, ������� �������� ���������� �������� � ���������. ������� ����� ������������ ��������� ����� ������� ��� ��� SKU, � ������� ��������� ����������� ����� ������ ����. ��� ������� SKU ������� ������������ ���� � ��������� ����������� ������ � ������������ � ��������� ��������� FIFO, LIFO ��� AVG. ������� ��������� ������ ��� ���������� ������� �������� � �������� � ������� ����� �������� � ������������ SKU, ��� ������ �������. ���������� ������� �� ������������. ���������� ������������ � ���� ��������� ���� TLack. ��� ������� ������������ � ��� SKU, ��� ������� � ������� stock ����� ����� bg � en. **/ TLack CalcPurchase(size_t bg, size_t en); /** ������� ��������� ���������� �������� � ������� SKU: ���� ��� ���������� �� ����������, �������������� � ���������� PRCount, �� ��� ����� SKU ���������� ������� Resize, ������� �������� ���������� �������� � ���������. ������� ����� ������������ ��������� ����� ������� ��� ��� SKU, � ������� ��������� ����������� ����� ������ ����. ������� ��������� ������ ��� ���������� ������� �������� � ������������ (�������) ������� � �������� � ������� ����� �������� � ������������ SKU, ��� ������ ������� � ������������ (�������) �������. ���������� ������� �� ������������. ���������� ������������ � ���� ��������� ���� TLack. ��� ������� ������������ � ��� SKU, ��� ������� � ������� stock ����� ����� bg � en. **/ TLack CalcPrice(size_t bg, size_t en); /** ��� ������� SKU ������� ������������ ���� � ��������� ����������� ������ � ������������ � ��������� ��������� FIFO, LIFO ��� AVG. ������� ��������� ������ ��� ���������� ������� �������� �������� � �������� � ������� ����� �������� � ������������ SKU, ��� ������ �������. ���������� ������� �� ������������. ���������� ������������ � ���� ��������� ���� TLack. ��� ������� ������������ � ��� SKU, ��� ������� � ������� stock ����� ����� bg � en. **/ public: clsStorage(); // ������ ����������� clsStorage(size_t _pcnt, Currency _cur, AccountingMethod _ac); // ����������� � ����������� clsStorage(size_t _pcnt, Currency _cur, AccountingMethod _ac, size_t stocksize); /** ����������� � ��������� ������� ��������� ������� **/ clsStorage(const size_t _PrCount, const Currency _cur, const AccountingMethod _ac, const size_t stocksize, const strNameMeas RMNames[]); /** ����������� � ��������� �������������� ������� � ��������� �����������. ���������: _PrCount - ���������� �������� �������, _cur - �������� ������ �������, _ac - ������� ����� �������, stocksize - ���������� �������������� ������� �������� (���������� �������������� �������), RMNames - ��������� �� ������ � �������������� �������� � ��.���������. **/ clsStorage(const clsStorage&); // ����������� ����������� clsStorage(clsStorage&&); // ����������� ����������� void swap(clsStorage& obj) noexcept; // ������� ������ ���������� ����� ��������� clsStorage& operator=(const clsStorage&); // �������� ������������ ������������ clsStorage& operator=(clsStorage&&); // �������� ������������ ������������ virtual ~clsStorage(); // ���������� /** Get-������ **/ const size_t& ProjectCount() const; // ���������� ���������� �������� ������� size_t Size() const; // ���������� ������ �������, ������ ���������� SKU const string& Name(size_t i) const; // ���������� ������������ SKU ��� �������� � �������� i const string& Measure(size_t i) const; // ���������� ������� ��������� SKU ��� �������� � �������� i strNameMeas* GetNameMeas() const; /** ����� ���������� ��������� �� ����� ����������� ������ ���� strNameMeas � ��������� �������� � ��������� ��������� ��� ���� ������� **/ string Permission(size_t i) const; /** ���������� ���������� �� �������� � ������� ��� i-�� SKU � ���� ��������� ������ **/ bool PermissionBool(size_t i) const; /** ���������� ���������� �� �������� � ������� ��� i-�� SKU � ���� �������� ���� bool **/ string AutoPurchase(size_t i) const; /** ���������� ������� ����������� ������� ��� i-�� SKU � ���� ��������� ������ **/ const size_t GetAutoPurchase(size_t i) const; /** ���������� ������� ����������� ������� ��� i-�� SKU **/ string HomeCurrency() const; /** ���������� �������� ������ ������� � ���� ��������� ������ **/ const size_t GetHomeCurrency() const; /** ���������� �������� ������ ������� � ���� �������� ���� hmcur. **/ string Accounting() const; // ���������� ������� ����� � ���� ��������� ������ const decimal& Share(size_t i) const; // ���������� �������� ������ �������� � ����� �� ������ �������� decimal* GetShipPrice(); /** ����� ������� ������ � ������� �������������� �������� ��� ���� ������������ � ���������� ��������� �� ����. ������ �������� ���������� �������� ������� �������� stock.size()*PrCount. **/ strItem* GetShip() const; /** ����� ������� ������ � ��������, ������� �������� � ������ ��������������� ��� ���� ������������ �������� � ���������� ��������� �� ����. ������ �������� ���������� �������� ������� �������� stock.size()*PrCount.**/ strItem* GetPure() const; /** ����� ������� ������ � ��������, ������� �������� � ������ ��������������� ��� ���� ������������ ������� � ���������� ��������� �� ����. ������ �������� ���������� �������� ������� �������� stock.size()*PrCount **/ strItem* GetBal() const; /** ����� ������� ������ � ��������, ������� �������� � ������ ��������������� ��� ���� ������������ �������� � ���������� ��������� �� ����. ������ �������� ���������� �������� ������� �������� stock.size()*PrCount **/ const strItem* GetDataItem(const ChoiseData _cd, size_t index, size_t _N) const; /** ����� ���������� ������ ��� SKU � �������� index � �������� _N. ������ ������������ � ���� const-��������� �� ��������� ���� strItem, ���������� ���������� �� ������� ������� ��� ��������, ����� � ���������; ����� ������� ������������ ��������� ���������� _cd. **/ /** 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 SetCount(const size_t _n); /** ������������� ���������� �������� �������**/ void SetName(size_t i, const string& _name); /** ������ ������������ �������������� ������� (SKU) ��� �������� � �������� i **/ void SetMeasure(size_t i, const string& _measure); /** ������ ��.��������� �������������� ������� (SKU) ��� �������� � �������� i **/ void SetCurrency(const Currency _cur); /** ������������� �������� ������ ������� **/ void SetPermission(size_t i, const bool _indr); /** ������ ���������� �� �������� � ������� � ����� � ��� �� ������� ��� �������� � �������� i**/ void SetAutoPurchase(size_t i, const PurchaseCalc _pcalc); /** ������ ���� �����������/ ������� ������� ������� ��� �������� � �������� i **/ void SetShare(size_t i, const decimal _share); /** ������ �������� ������ �������� � ����� �� ������ �������� � ������� ��� �������� � �������� i **/ void SetAccounting(const AccountingMethod _acct); /** ������������� ������� ����� ������� **/ bool SetShipment(const strItem _unit[]); /** ������� ��������� ������ � �������� ��������� �������� �� ������. ��������� ���������� �������� ������ ������ � ����������� ��������� (���� volume). ���������: _unit[] - ��������� �� ���������� ������, ���������� �������� ��������� ������� �������� stock.size()*PrCount, ���������� ������ ��������. ������ ����������� ������������. ������� ���������� true ��� ������� ���������� ��������. **/ bool SetShipment(strItem* &_unit); /** ������� ��������� ������ � �������� ��������� �������� �� ������. ��������� ���������� �������� ������ ������ � ����������� ��������� (���� volume). ���������: _unit[] - ������ �� ��������� �� ���������� ������, ���������� �������� ��������� ������� �������� stock.size()*PrCount, ���������� ������ ��������. ������ ����������� ������������. ������� ���������� true ��� ������� ���������� ��������. ����� ���������� ������ ������ ��������� _unit ���������� ������ nullptr. **/ bool SetDataItem(const ChoiseData _cd, const strItem _U, size_t index, size_t _N); /** ������� ���������� � ������� ������� � �������� index � ������ � �������� _N �������� volume, price � value �� ���������� _U; ����� ������� ������������ ��������� ���������� _cd. ����� �������� ������ � �������� ��������. � ������ �������� ������, ����� ���������� true. **/ bool SetSKU(const string& Name, const string& Measure, PurchaseCalc _flag, decimal _share, bool _perm,\ strItem _ship[], const strItem _pur[]); /** ����� �������� ������ ��� ����������� SKU. ������� ����� ��������� ������ cksSKU �������������� � �������. ���������: Name - ������������ SKU, Measure - ������� ��������� SKU, _flag - ���� ����������� ���������� �������, _share - ����� �������� �� ������ � ������ ������, ���������� � ���� �� ������ �������� �� ���� ������, _perm - ���� �����������/����������� ������� � �������� � ����� �������, _ship - ������ ��������, _pur - ������ �������. ����� �������� ��� � ������, ��� � �� ������ ��������. **/ bool SetPurchase(size_t isku, const strItem _unit[], size_t _count); /** ����� ��������� ������ ������� _unit �������� _count � �������������� ����� � ������� isku. **/ bool SetPurchase(const strItem _unit[]); /** ����� ��������� ������ � ��������� �������� �� ����� (������, ����, ���������). ���������: _unit[] - ��������� �� ���������� ������, ���������� �������� ��������� ������� �������� stock.size()*PrCount, ���������� ������ � ���������. ������ ����������� ������������. ������� ���������� true ��� ������� ���������� ��������. **/ bool SetPurchase(strItem* &_unit); /** ����� ��������� ������ � ��������� �������� �� ����� (������, ����, ���������). ���������: _unit - ������ �� ��������� �� ���������� ������, ���������� �������� ��������� ������� �������� stock.size()*PrCount, ���������� ������ � ���������. ������ ����������� ������������. ������� ���������� true ��� ������� ���������� ��������. ����� ���������� ������ ������ ��������� _unit ���������� ������ nullptr. **/ bool SetPurPrice(const strItem _unit[]); /** ����� ��������� ���� �� ����������� �������, ����������� �������� ������� � ������� ������� ���� ������� �������� � �����������, �������� � ������ ����������� ���������. ������ ������� RMCount*PrCount. ������ ������� ������� ����� ��� strItem, �.�. ����� � ����� ������� �������� volume, price � value ��� ��������. ������������ ������ ���� price. **/ bool CheckPurchase(const strItem _pur[]) const; /** ��� �����, ����������� �������������� ������ �������, ������ ������� ������ ��������� ���������� �����, �.� ������������ volume * price == value. ���� ��� ������� �� �����������, ��������� ������������� �������� ����� ��������� �����������. ������ ����� ��������� ������������ ������� �������. **/ bool SetStorage(size_t RMCount, const strNameMeas RMNames[], decimal ShipPlan[], decimal PricePur[]); /** ����� ����� �������� ������ � �������, ����������� � �������� �������� strNameMeas* clsManufactory::GetRefRawNames � clsManufactory::decimal* GetRawMatPurchPlan(). ����� �������� "�������" ���������� ������ clsStorage, ������ ����� ������� ������ ��� ��������� ��������� � ����������, ������ ���������� ������� ��������, ��������� ��� ���������������� ��������� ������� ���� clsManufactory (����� clsManufactory::RMCount. ���������: RMCount - ����� �������������� ������� ��������, RMNames - ������ � ���������� ��������, ������������ RMCount; ������ �������� � ������� ������������ ������� ���������. ShipPlan - ������ �������� �������� � ������������ ��� ������� ������������ �������� � ������ ������� �������; ������ ������������ ����� ���������� ������ ��������� ������� �������� RMCount*PrCount. ��� ������� � �������� � �������� i,j ������������ ���������� ����������: *(X+cols*i+j), ��� X - ��������� �� ������ ������� �������, cols - ����� �������� � �������, i � j - �������������� ����� ������ � ������� � �������. PricePur - ������ ��� ���������� �������� �������� RMCount*PrCount. ���� ����� ������������� ��� ���� ������� ������� ���� ����������� �������������� ������ ������� (calc), ������� ����� �������� �� ������ � ������ ������ � ���� ����������� ������� � �������� � ����� ������� (true); � ���������� ��� ��������� ����� ��������������� ��� ������� ������ �������� ������� �������� ������. ������ ����� ������������� ��������� � ���� � ������������� � �����������, ��������������� ����� �������� �������, �������� ������ � ������� ����� ������� (clsStorage(size_t _pcnt, Currency _cur, AccountingMethod _ac)). ��������!!! ������ ShipPlan - ������������, ����� �� ������������� ������� �������� � ������ ������ ���������� delete[].**/ bool SetStorage(size_t RMCount, const strNameMeas RMNames[], strItem ShipPlan[], strItem Purchase[]); /** ����������� �����������, �� ������� �������� � ������� � ������� strItem, ����������� � ���� � ������ **/ bool SetData(const clsSKU &obj); /** ������� ������� � ������ ������ ���������� � ���������� SKU ����� ����������� ���������� ������ clsSKU � ������ **/ bool SetData(clsSKU &&obj); /** ������� ������� � ������ ������ ���������� � ���������� SKU ����� ����������� ���������� ������ clsSKU � ������ **/ void EraseSKU(size_t _i); /** ����� ������� �������������� ������� ��� ������� _i � ��� ��������� � ��� ������ **/ /** ������ ����������� �������� **/ void ViewSettings() const; /** ������� ������� �� ����� ���������� � ���������� ��� �������. � ���������� ��������� ���������: ������������ �������, �������� (��������) ������, ����� ����� �������, ����������/������ �� ������� � �������� � ����� �������, ������� ����/ ������� ������� �������, �������� ������ ��������. **/ void View() const; /** ������� ������� �� ����� ���������� �� ����� ������ **/ void ViewChoise(ChoiseData _arr, ReportData flg) const; /** ����� ����������� �������� ���������� ������� ��� ���� �������. ��������� �������: _arr = purchase, ������ ����������� �� �����; _arr = balance, ������ �������� �� ������; _arr = shipment, ������ �������� �� ������. �������� flg - ��� ��������� ����������: volume - � �����������, value - � �����������, price - � ������� ��������� **/ /** ��������� ������ **/ TLack Calculate(); /** ������� ��������� ���������� �������� � ������� SKU: ���� ��� ���������� �� ����������, �������������� � ���������� PRCount, �� ��� ����� SKU ���������� ������� Resize, ������� �������� ���������� �������� � ���������. ������� ����� ������������ ��������� ����� ������� ��� ��� SKU, � ������� ��������� ����������� ����� ������ ����. ��� ������� SKU ������� ������������ ���� � ��������� ����������� ������ � ������������ � ��������� ��������� FIFO, LIFO ��� AVG. ������� ��������� ������ ��� ���������� ������� �������� � �������� � ������� ����� �������� � ������������ SKU, ��� ������ �������. ���������� ������� �� ������������. ���������� ������������ � ���� ��������� ���� TLack. ������� ������������ �� ���� SKU ���������������. **/ TLack CalcPurchase(); /** ������� ��������� ���������� �������� � ������� SKU: ���� ��� ���������� �� ����������, �������������� � ���������� PRCount, �� ��� ����� SKU ���������� ������� Resize, ������� �������� ���������� �������� � ���������. ������� ����� ������������ ��������� ����� ������� ��� ��� SKU, � ������� ��������� ����������� ����� ������ ����. ������� ��������� ������ ��� ���������� ������� �������� � ������������ (�������) ������� � �������� � ������� ����� �������� � ������������ SKU, ��� ������ ������� � ������������ (�������) �������. ���������� ������� �� ������������. ���������� ������������ � ���� ��������� ���� TLack. ������� ������������ �� ���� SKU ���������������. **/ TLack CalcPrice(); /** ��� ������� SKU ������� ������������ ���� � ��������� ����������� ������ � ������������ � ��������� ��������� FIFO, LIFO ��� AVG. ������� ��������� ������ ��� ���������� ������� �������� �������� � �������� � ������� ����� �������� � ������������ SKU, ��� ������ �������. ���������� ������� �� ������������. ���������� ������������ � ���� ��������� ���� TLack. ������� ������������ �� ���� SKU ���������������. **/ TLack Calculate(size_t); /** �������-��������� ��� ������ ������ �� ��������� ��������� �������: Calculate(), CalcPurchase() ��� CalcPrice(). ������� ������������ ��� ���� SKU ���������������. **/ TLack Calculate_future(); /** ������� ��������� ���������� �������� � ������� SKU: ���� ��� ���������� �� ����������, �������������� � ���������� PRCount, �� ��� ����� SKU ���������� ������� Resize, ������� �������� ���������� �������� � ���������. ������� ����� ������������ ��������� ����� ������� ��� ��� SKU, � ������� ��������� ����������� ����� ������ ����. ��� ������� SKU ������� ������������ ���� � ��������� ����������� ������ � ������������ � ��������� ��������� FIFO, LIFO ��� AVG. ������� ��������� ������ ��� ���������� ������� �������� � �������� � ������� ����� �������� � ������������ SKU, ��� ������ �������. ���������� ������� �� ������������. ���������� ������������ � ���� ��������� ���� TLack. ��� ������� ����������� � ����������� �������, ����� ������� �� ������� ������ ����� ���� ����������. **/ TLack Calculate_future(size_t); /** �������-��������� ��� ������ ������ �� ��������� ��������� �������: Calculate(size_t, size_t), CalcPurchase(size_t, size_t) ��� CalcPrice(size_t, size_t). ������� ������������ ��� ���� SKU. ������������ ������������ ����������� ����������. **/ TLack Calculate_thread(); /** ������� ��������� ���������� �������� � ������� SKU: ���� ��� ���������� �� ����������, �������������� � ���������� PRCount, �� ��� ����� SKU ���������� ������� Resize, ������� �������� ���������� �������� � ���������. ������� ����� ������������ ��������� ����� ������� ��� ��� SKU, � ������� ��������� ����������� ����� ������ ����. ��� ������� SKU ������� ������������ ���� � ��������� ����������� ������ � ������������ � ��������� ��������� FIFO, LIFO ��� AVG. ������� ��������� ������ ��� ���������� ������� �������� � �������� � ������� ����� �������� � ������������ SKU, ��� ������ �������. ���������� ������� �� ������������. ���������� ������������ � ���� ��������� ���� TLack. ��� ������� ����������� � �������, ����� ������� �� ������� ������ ����� ���� ����������. **/ TLack Calculate_thread(size_t); /** �������-��������� ��� ������ ������ �� ��������� ��������� �������: Calculate(size_t, size_t), CalcPurchase(size_t, size_t) ��� CalcPrice(size_t, size_t). ������� ������������ ��� ���� SKU. ������������ ������������ ���������� ����������. **/ bool StF(ofstream &_outF); /** ����� ������������� ������ � �������� ���������� �������� ���������� ������ (����� ������������). ���������: &_outF - ��������� ������ ofstream ��� ������ ������ **/ bool RfF(ifstream &_inF); /** ����� ������������� ������ �� �������� ���������� �������� ���������� ������ (����� ��������������). ���������: &_inF - ��������� ������ ifstream ��� ������ ������ **/ }; // clsStorage #endif // FROMA2_WAREHOUSE_MODULE_H_INCLUDED