Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
[submodule "3rdParty/URLCanonicalizer"]
path = 3rdParty/URLCanonicalizer
url = https://github.com/Targoman/URLCanonicalizer.git
[submodule "3rdParty/E4MT"]
path = 3rdParty/E4MT
url = https://github.com/Targoman/E4MT.git
[submodule "3rdParty/QtCurl"]
path = 3rdParty/QtCurl
url = https://github.com/Targoman/qtcurl.git
Expand All @@ -28,3 +25,6 @@
[submodule "3rdParty/TargomanCommon"]
path = 3rdParty/TargomanCommon
url = https://github.com/Targoman/TargomanCommon.git
[submodule "3rdParty/E4MT"]
path = 3rdParty/E4MT
url = git@github.com:Targoman/E4MT.git
2 changes: 1 addition & 1 deletion 3rdParty/E4MT
2 changes: 1 addition & 1 deletion 3rdParty/QBuildSystem
2 changes: 1 addition & 1 deletion 3rdParty/TargomanCommon
Submodule TargomanCommon updated 0 files
2 changes: 1 addition & 1 deletion 3rdParty/TargomanDBM
217 changes: 178 additions & 39 deletions Interfaces/AAA/Accounting_Defs.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,30 @@ TAPI_DEFINE_VARIANT_ENABLED_STRUCT(stuUsage,

typedef QMap<QString, stuUsage> UsageLimits_t;

#define SF_UsageLimits_t(_name) SF_Generic( \
/* type */ UsageLimits_t, \
/* name */ Digested_Limits, \
/* def */ UsageLimits_t(), \
/* validator */ v.size(), \
/* type 2 QJsonValue */ [](UsageLimits_t v) -> QJsonValue { \
QJsonObject A; \
for (auto it = v.begin(); \
it != v.end(); \
it++ \
) { \
A.insert(it.key(), it->toJson()); \
} \
return A; \
}(v), \
/* QJsonValue 2 type */ [](QJsonValue v) -> UsageLimits_t { \
UsageLimits_t L; \
QJsonObject O = v.toObject(); \
foreach (const QString &Key, O.keys()) \
L.insert(Key, stuUsage().fromJson(O.value(Key).toObject())); \
return L; \
}(v) \
)

struct stuUsageColDefinition {
QString PerDay;
QString PerWeek;
Expand All @@ -156,51 +180,77 @@ typedef QMap<QString, stuUsageColDefinition> AssetUsageLimitsCols_t;

typedef QMap<QString, QString> OrderAdditives_t;

struct stuAssetItem {
TAPI_DEFINE_VARIANT_ENABLED_STRUCT(stuAssetItem,
//product
quint32 prdID;
TAPI::ProductCode_t prdCode;
QString prdName;
TAPI::Date_t prdValidFromDate;
TAPI::Date_t prdValidToDate;
NULLABLE_TYPE(quint8) prdValidFromHour;
NULLABLE_TYPE(quint8) prdValidToHour;
TAPI::PrivObject_t prdPrivs;
NULLABLE_TYPE(double) prdVAT;
quint32 prdInStockQty;
NULLABLE_TYPE(quint32) prdOrderedQty;
NULLABLE_TYPE(quint32) prdReturnedQty;
TAPI::enuGenericStatus::Type prdStatus;
SF_quint32 (prdID),
SF_QString (prdCode), //TAPI::ProductCode_t
SF_QString (prdName),
SF_Date_t (prdValidFromDate),
SF_Date_t (prdValidToDate),
SF_NULLABLE_quint8 (prdValidFromHour),
SF_NULLABLE_quint8 (prdValidToHour),
SF_JSON_t (prdPrivs), //TAPI::PrivObject_t
SF_NULLABLE_qreal (prdVAT),
SF_quint32 (prdInStockQty),
SF_NULLABLE_quint32 (prdOrderedQty),
SF_NULLABLE_quint32 (prdReturnedQty),
SF_Enum (TAPI::enuGenericStatus, prdStatus, TAPI::enuGenericStatus::Active),

//saleable
quint32 slbID;
TAPI::SaleableCode_t slbCode;
QString slbName;
TAPI::JSON_t slbPrivs;
qreal slbBasePrice;
TAPI::SaleableAdditive_t slbAdditives;
// quint32 slbProductCount;
NULLABLE_TYPE(quint32) slbMaxSaleCountPerUser;
quint32 slbInStockQty;
NULLABLE_TYPE(quint32) slbOrderedQty;
NULLABLE_TYPE(quint32) slbReturnedQty;
QString slbVoucherTemplate;
TAPI::enuGenericStatus::Type slbStatus;

qreal SubTotal;
NULLABLE_TYPE(stuDiscount3) Discount;
qreal TotalPrice;

SF_quint32 (slbID),
SF_QString (slbCode), //TAPI::SaleableCode_t
SF_QString (slbName),
SF_JSON_t (slbPrivs),
SF_qreal (slbBasePrice),
SF_JSON_t (slbAdditives), //TAPI::SaleableAdditive_t
// SF_quint32 (slbProductCount),
SF_NULLABLE_quint32 (slbMaxSaleCountPerUser),
SF_quint32 (slbInStockQty),
SF_NULLABLE_quint32 (slbOrderedQty),
SF_NULLABLE_quint32 (slbReturnedQty),
SF_QString (slbVoucherTemplate),
SF_Enum (TAPI::enuGenericStatus, slbStatus, TAPI::enuGenericStatus::Active),

SF_qreal (SubTotal),
SF_Var_Struct (stuDiscount3, Discount, [](Q_DECL_UNUSED auto v) { return true; }(v)), //NULLABLE_TYPE
SF_qreal (TotalPrice),

/*
struct {
// QJsonObject Additives;
UsageLimits_t Limits;
// QJsonObject Privs;
} Digested;
} Digested;*/

QJsonObject toJson(bool _full);
stuAssetItem& fromJson(const QJsonObject& _obj);
void fromVariantMap(const QVariantMap& _info);
};
// SF_UsageLimits_t(Digested_Limits)
SF_Generic(
/* type */ UsageLimits_t,
/* name */ Digested_Limits,
/* def */ UsageLimits_t(),
/* validator */ v.size(),
/* type 2 QJsonValue */ [](UsageLimits_t v) -> QJsonValue {
QJsonObject A;
for (auto it = v.begin();
it != v.end();
it++
) {
A.insert(it.key(), it->toJson());
}
return A;
}(v),
/* QJsonValue 2 type */ [](QJsonValue v) -> UsageLimits_t {
UsageLimits_t L;
QJsonObject O = v.toObject();
foreach (const QString &Key, O.keys())
L.insert(Key, stuUsage().fromJson(O.value(Key).toObject()));
return L;
}(v)
)

// QJsonObject toJson(bool _full);
// stuAssetItem& fromJson(const QJsonObject& _obj);
// void fromVariantMap(const QVariantMap& _info);
);

typedef QMap<QString, stuAssetItem> ActiveCredits_t;

Expand All @@ -218,6 +268,7 @@ struct stuServiceCreditsInfo {
QDateTime _dbCurrentDateTime);
};

/*
struct stuActiveCredit {
stuAssetItem Credit;
bool IsFromParent;
Expand All @@ -228,9 +279,41 @@ struct stuActiveCredit {
bool _isFromParent = false,
const UsageLimits_t& _myLimitsOnParent = {},
qint64 _ttl = 0);
QJsonObject toJson(bool _full);
stuActiveCredit& fromJson(const QJsonObject _obj);

// QJsonObject toJson(bool _full);
// stuActiveCredit& fromJson(const QJsonObject _obj);
};
*/

TAPI_DEFINE_VARIANT_ENABLED_STRUCT(stuActiveCredit,
SF_Var_Struct(stuAssetItem, Credit, v.prdID),
SF_bool(IsFromParent),
// SF_UsageLimits_t(MyLimitsOnParent),
SF_Generic(
/* type */ UsageLimits_t,
/* name */ MyLimitsOnParent,
/* def */ UsageLimits_t(),
/* validator */ v.size(),
/* type 2 QJsonValue */ [](UsageLimits_t v) -> QJsonValue {
QJsonObject A;
for (auto it = v.begin();
it != v.end();
it++
) {
A.insert(it.key(), it->toJson());
}
return A;
}(v),
/* QJsonValue 2 type */ [](QJsonValue v) -> UsageLimits_t {
UsageLimits_t L;
QJsonObject O = v.toObject();
foreach (const QString &Key, O.keys())
L.insert(Key, stuUsage().fromJson(O.value(Key).toObject()));
return L;
}(v)
),
SF_qint64(TTL)
);

typedef QList<stuVoucherItem> InvItems_t;

Expand Down Expand Up @@ -276,6 +359,7 @@ extern void checkPreVoucherSanity(stuPreVoucher _preVoucher);

namespace tblAccountProductsBase {
constexpr char Name[] = "tblAccountProducts";

TARGOMAN_CREATE_CONSTEXPR(prdID);
TARGOMAN_CREATE_CONSTEXPR(prdCode);
TARGOMAN_CREATE_CONSTEXPR(prdName);
Expand All @@ -297,10 +381,35 @@ namespace tblAccountProductsBase {
TARGOMAN_CREATE_CONSTEXPR(prdCreatedBy_usrID);
TARGOMAN_CREATE_CONSTEXPR(prdCreationDateTime);
TARGOMAN_CREATE_CONSTEXPR(prdUpdatedBy_usrID);

inline QStringList ColumnNames() {
return {
prdID,
prdCode,
prdName,
prdDesc,
prdValidFromDate,
prdValidToDate,
prdValidFromHour,
prdValidToHour,
prdPrivs,
prdVAT,
prdInStockQty,
prdOrderedQty,
prdReturnedQty,
// prdRemainingCount = prdInStockQty - (prdOrderedQty - prdReturnedQty)
prdStatus,
prdCreatedBy_usrID,
prdCreationDateTime,
prdUpdatedBy_usrID,
};
}

}

namespace tblAccountSaleablesBase {
constexpr char Name[] = "tblAccountSaleables";

TARGOMAN_CREATE_CONSTEXPR(slbID);
TARGOMAN_CREATE_CONSTEXPR(slb_prdID);
TARGOMAN_CREATE_CONSTEXPR(slbCode);
Expand All @@ -326,10 +435,39 @@ namespace tblAccountSaleablesBase {
TARGOMAN_CREATE_CONSTEXPR(slbCreatedBy_usrID);
TARGOMAN_CREATE_CONSTEXPR(slbCreationDateTime);
TARGOMAN_CREATE_CONSTEXPR(slbUpdatedBy_usrID);

inline QStringList ColumnNames() {
return {
slbID,
slb_prdID,
slbCode,
slbName,
slbDesc,
slbType,
slbAvailableFromDate,
slbAvailableToDate,
slbPrivs,
slbBasePrice,
slbAdditives,
// slbProductCount, //what is this?
slbMaxSaleCountPerUser,
slbInStockQty,
slbOrderedQty,
slbReturnedQty,
// slbRemainingCount = slbInStockQty - (slbOrderedQty - slbReturnedQty)
slbVoucherTemplate,
slbStatus,
slbCreatedBy_usrID,
slbCreationDateTime,
slbUpdatedBy_usrID,
};
}

}

namespace tblAccountUserAssetsBase {
constexpr char Name[] = "tblAccountUserAssets";

TARGOMAN_CREATE_CONSTEXPR(uasID);
TARGOMAN_CREATE_CONSTEXPR(uas_usrID);
TARGOMAN_CREATE_CONSTEXPR(uas_slbID);
Expand Down Expand Up @@ -382,6 +520,7 @@ namespace tblAccountCouponsBase {

namespace tblAccountReferalsBase {
constexpr char Name[] = "tblAccountReferals";

TARGOMAN_CREATE_CONSTEXPR(ref_usrID);
TARGOMAN_CREATE_CONSTEXPR(refValidFromDateTime);
TARGOMAN_CREATE_CONSTEXPR(refValidToDateTime);
Expand Down
Loading