Skip to content

Commit

Permalink
Version 12.0.12-pre
Browse files Browse the repository at this point in the history
  • Loading branch information
papyrussolution committed Aug 22, 2024
1 parent ffc435d commit 16661ca
Show file tree
Hide file tree
Showing 19 changed files with 518 additions and 347 deletions.
23 changes: 23 additions & 0 deletions Src/Build/wsctl.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,29 @@ BrandingText " "
!define MUI_ABORTWARNING
!define MUI_ICON "${SRC_ROOT}\SRC\RSRC\ICO\P2.ICO"
!define MUI_UNICON "${SRC_ROOT}\SRC\RSRC\ICO\P2.ICO"
;
; Утилита, собираемая проектом VersionSelector
;
!define VERSELDLL "versel.dll"

Function .onInit
IfFileExists "$SYSDIR\${VERSELDLL}" 0 +2
Delete "$SYSDIR\${VERSELDLL}"
FunctionEnd

Function SelectDir
!insertmacro InstallLib DLL NOSHARED NOREBOOT_NOTPROTECTED ${VERSELDLL} $SYSDIR\${VERSELDLL} $SYSDIR
Push $2
Push $1
Push $0
StrCpy $0 "1" ${NSIS_MAX_STRLEN}
System::Call 'versel::SelectVersion(i $HWNDPARENT,t r0r2,i 0) i.r1'
StrCmp $1 '1' 0 +2
StrCpy $INSTDIR $2
Pop $0
Pop $1
Pop $2
FunctionEnd

Section "Файлы приложения" SEC01
SetOutPath "${DIR_BIN}"
Expand Down
1 change: 1 addition & 0 deletions Src/BuildVC2019/papyrus-lib.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1406,6 +1406,7 @@
<ClCompile Include="..\PPLib\Loadtrfr.cpp" />
<ClCompile Include="..\PPLib\LOCATION.CPP" />
<ClCompile Include="..\PPLib\loctransf.cpp" />
<ClCompile Include="..\PPLib\marketplace.cpp" />
<ClCompile Include="..\PPLib\mrp.cpp" />
<ClCompile Include="..\PPLib\Nmbtotxt.cpp" />
<ClCompile Include="..\PPLib\Objacct.cpp" />
Expand Down
1 change: 1 addition & 0 deletions Src/BuildVC2019/papyrus-lib.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -341,5 +341,6 @@
<ClCompile Include="..\PPLib\ued.cpp" />
<ClCompile Include="..\PPLib\zxing_client.cpp" />
<ClCompile Include="..\PPLib\imgui-support.cpp" />
<ClCompile Include="..\PPLib\marketplace.cpp" />
</ItemGroup>
</Project>
4 changes: 3 additions & 1 deletion Src/Include/PPDEFS.H
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,8 @@
// Набор сумм по строкам расширения бухгалтерских документов
#define PPAMT_ADLN_MAIN 41L // Номинальная сумма строки расширения //
#define PPOBJ_CASHNODE 17L // $ Расчетные кассовые узлы
#define PPPOSN_SHADOW 101L // @v12.0.12 Идентификатор теневого узла, к которому привязываются образы настоящих чеков. Такие образы формируются //
// для специальных целей.
//
// Extra records of PPOBJ_CASHNODE
#define CNPRP_EXTRA 1L // Дополнительная запись
Expand Down Expand Up @@ -11605,7 +11607,7 @@
#define DLG_GSPPITEM 1444 // @v12.0.6 Элемент структуры товара (для структуры планирования цены)
#define DLG_SELOPREFSUPL 1445 // @v12.0.8 Диалог выбора предпоичтительного поставщика для дозаказа в строках документа заказа
#define CTL_SELOPREFSUPL_LIST (1 + WINDOWS_ID_BIAS)
#define DLG_RAWMAT 1446 // @v12.0.10 PPOBJ_RAWMATERIAL
#define DLG_RAWMAT 1446 // @v12.0.10 PPOBJ_RAWMATERIAL
#define CTL_RAWMAT_ID (1 + WINDOWS_ID_BIAS)
#define CTL_RAWMAT_NAME (2 + WINDOWS_ID_BIAS)
#define CTL_RAWMAT_SYMB (3 + WINDOWS_ID_BIAS)
Expand Down
46 changes: 28 additions & 18 deletions Src/Include/Pp.h
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,7 @@ class StyloQDocumentPrereqParam;
class StyloQPersonEventParam;
class PPObjTech;
class PPBillImporter;
class EgaisMarkAutoSelector;

typedef struct bignum_st BIGNUM; // OpenSSL
typedef int32 PPID; // @v11.6.8 long-->int32
Expand Down Expand Up @@ -10246,13 +10247,13 @@ class CCheckPacket : public PPExtStrContainer {
// Descr: Идентификаторы текстовых расширений строк чека
//
enum { // @persistent
lnextSerial = 1, // Серийный номер
lnextEgaisMark = 2, // Марка ЕГАИС
lnextSerial = 1, // Серийный номер
lnextEgaisMark = 2, // Марка ЕГАИС
lnextRemoteProcessingTa = 3, // Символ транзакции удаленной обработки строки. Имеет специальное назначение,
// сопряженное с предварительной обработкой чека перед проведением через удаленный сервис.
lnextChZnSerial = 4, // Серийный номер 'честный знак'
lnextChZnGtin = 5, // GTIN считанный из кода 'честный знак'
lnextChZnMark = 6, // Марка 'честный знак'
lnextChZnSerial = 4, // Серийный номер 'честный знак'
lnextChZnGtin = 5, // GTIN считанный из кода 'честный знак'
lnextChZnMark = 6, // Марка 'честный знак'
};
struct PreprocessChZnCodeResult { // @flat
PreprocessChZnCodeResult();
Expand Down Expand Up @@ -15654,6 +15655,7 @@ class CCheckCore : public CCheckTbl {
char Mark[256]; // IN Код маркировки
double TotalOpQtty; // OUT Суммарное операционное количество по всем встреченным строкам чеков (с учетом знака - see CcMarkedEntry::Qtty)
TSVector <CcMarkedEntry> CcList;
void * P_Extra; // IN @v12.0.12 Указатель, используемый для привязки внешних данных к этому элементу.
//SBitArray SentList__ToRemove; // @todo Это поле будет удалено в пользу флага CcMarkedEntry::fSent
};

Expand Down Expand Up @@ -24099,7 +24101,7 @@ class PPObjDBDiv : public PPObjReference {
#define GTF_EGAISAUTOWO 0x00020000L // @v12.0.7 Специальная опция, позволяющая автоматически определять марки егаис для списания при проведении
// кассового чека с товаром, имеющим тип с таким флагом. Сам товар может не идентифицироваться как алкогольный, но если он имеет комплектующую
// товарную структуру, в которую входят алкогольные товары с марками, то формируется специальная алгоритмическая структура для списания долей этих товаров
// через егаис (see EgaisMarkAutoSelect)
// через егаис.

#define GTCHZNPT_UNKN -1 // @v11.5.0 Специальное интерфейсное значение, используемое для обозначения того, что товар маркируемый, но категория в терминах честного знака не ясна
#define GTCHZNPT_UNDEF 0
Expand Down Expand Up @@ -50764,7 +50766,7 @@ class BillTotalBlock {
long State;
long Flags;
PPIDArray GoodsList;
PPObjGoodsType GTObj;
PPObjGoodsType GtObj;
PPObjGoods GObj;
PPObjAmountType ATObj;
BillTotalData * P_Data;
Expand Down Expand Up @@ -54975,6 +54977,7 @@ class CPosProcessor {
CCheckPacket * P_ChkPack;
PPViewCCheck * P_CcView;
PPEgaisProcessor * P_EgPrc;
EgaisMarkAutoSelector * P_EgMas; // @v12.0.12
S_GUID SessUUID;
LAssocArray SpcTrtScsList; // Список серий карт со специальной трактовкой
};
Expand Down Expand Up @@ -55090,7 +55093,6 @@ class CheckPaneDialog : public TDialog, public CPosProcessor {
// 0 - ошибка
//
int ChZnMarkAutoSelect(PPID goodsID, double qtty, SString & rChZnBuf);
int EgaisMarkAutoSelect(PPID goodsID, double qtty, SString & rMarkBuf); // @v12.0.7 @construction

ExtGoodsSelDialog * P_EGSDlg;
long AutoInputTolerance; // Мин среднее время (ms) между вводом символом, ниже которого считается, что данные были введены автоматическим средством ввода (напр. сканером штрихкодов)
Expand Down Expand Up @@ -57149,27 +57151,35 @@ class EgaisMarkAutoSelector {
Entry(const Entry & rS);
Entry & FASTCALL operator = (const Entry & rS);
bool FASTCALL Copy(const Entry & rS);
const _TerminalEntry * SelectMark(uint * pMarkEntryIdx) const;

PPID GsID; // Идентификатор структуры, из которой сформирован экземпляр this
//bool IsOrList; // Если true, то список Te определяет вариант "один-из", в противном случае это - терминальный элемент.
//uint8 Reserve[3]; // @alignment
//
// Если this связан с конечным компонентом комплектующей структуры, то Te содержит единственный элемент,
// если this связан с точкой подстановочной структуры, то Te может содержать более одного елемента.
// если this связан с точкой подстановочной структуры, то Te может содержать более одного элемента.
//
TSCollection <_TerminalEntry> Te;
};
class ResultBlock : public TSCollection <Entry> {
class DocItem : public TSCollection <Entry> {
public:
ResultBlock(PPID goodsID, double qtty);
ResultBlock(const ResultBlock & rS);
ResultBlock & FASTCALL operator = (const ResultBlock & rS);
bool FASTCALL Copy(const ResultBlock & rS);
DocItem();
DocItem(long itemId, PPID goodsID, double qtty);
DocItem(const DocItem & rS);
DocItem & FASTCALL operator = (const DocItem & rS);
bool FASTCALL Copy(const DocItem & rS);

long ItemId; // Идентификатор для ссылки на исходный документ
PPID GoodsID; // Стартовый товар (который был продан)
double Qtty; // Количество проданного стартового товара
double VolumeQtty; // Количество проданного стартового товара в литрах
};
class ResultBlock : public TSCollection <DocItem> {
public:
ResultBlock();
ResultBlock(const ResultBlock & rS);
ResultBlock & FASTCALL operator = (const ResultBlock & rS);
bool FASTCALL Copy(const ResultBlock & rS);
};
EgaisMarkAutoSelector(PPEgaisProcessor * pEgPrc);
~EgaisMarkAutoSelector();
int Run(ResultBlock & rResult);
Expand All @@ -57189,8 +57199,8 @@ class EgaisMarkAutoSelector {
};
static bool SearchRefBEntry(const TSVector <RefBEntry> & rList, const RefBEntry & rKey, uint * pPos);
static bool SearchRefB(const TSVector <RefBEntry> & rList, const char * pRefB, uint * pPos);
int Helper(PPID goodsID, double qtty, ResultBlock & rResult);
int Helper_ProcessLot(PPID goodsStrucID, const ReceiptTbl::Rec & rLotRec, double phQtty, Entry ** ppEntry, ResultBlock & rResult);
int Helper(PPID goodsID, double qtty, DocItem & rResult);
int Helper_ProcessLot(PPID goodsStrucID, const ReceiptTbl::Rec & rLotRec, double qtty, Entry ** ppEntry, DocItem & rResult);
int GetRecentEgaisStock(TSVector <RefBEntry> & rResultList);

PPObjGoods GObj;
Expand Down
2 changes: 1 addition & 1 deletion Src/PPEquip/Checkfmt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1549,7 +1549,7 @@ int PPSlipFormat::NextIteration(Iter * pIter, SString & rBuf)
if(P_Od->GObj.FetchTax(pIter->GoodsID, P_CcPack->Rec.Dt, 0, &tax_entry) > 0)
pIter->VatRate = tax_entry.GetVatRate();
if(goods_rec.GoodsTypeID && P_Od->GObj.FetchGoodsType(goods_rec.GoodsTypeID, &gt_rec) > 0) {
chzn_product_type = gt_rec.ChZnProdType; // @v10.7.2
chzn_product_type = gt_rec.ChZnProdType;
if(gt_rec.Flags & GTF_ADVANCECERT)
pIter->Ptt = CCheckPacket::pttAdvance;
//@erikL v10.4.12 {
Expand Down
15 changes: 7 additions & 8 deletions Src/PPEquip/EquipDll/Pirit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2768,19 +2768,18 @@ int PiritEquip::RunCheck(int opertype)
(str = Check.Code).Trim(13); // [0..18]
CreateStr(str, in_data); // Артикул или штрихкод
{
/* @construction
double qtty = 0.0;
double price = 0.0;
if(Check.ChZnProdType == 1012 && Check.PhQtty > 0.0 && Check.UomId == SUOM_LITER) { // @v12.0.11 GTCHZNPT_DRAFTBEER_AWR
CreateStr(Check.PhQtty, in_data);
qtty = Check.PhQtty;
price = R2((Check.Qtty * Check.Price) / Check.PhQtty);
}
else*/ {
CreateStr(Check.Qtty, in_data);
else {
qtty = Check.Qtty;
price = Check.Price;
}
// @vmiller comment
/*FormatPaym(Check.Price, str);
CreateStr(str, in_data);*/
CreateStr(Check.Price, in_data); // @vmiller
CreateStr(qtty, in_data);
CreateStr(price, in_data);
}
CreateStr((int)Check.Tax, in_data); // Номер налоговой ставки
CreateStr((int)0, in_data); // Номер товарной позиции
Expand Down
21 changes: 9 additions & 12 deletions Src/PPEquip/Synccash.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -832,12 +832,12 @@ int SCS_SYNCCASH::PrintCheck(CCheckPacket * pPack, uint flags)
else {
THROW(ArrAdd(Arr_In, DVCPARAM_VATRATE, fabs(sl_param.VatRate)));
}
if(sl_param.ChZnCode.NotEmptyS()) { // @v10.7.0
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNCODE, sl_param.ChZnCode)); // @v10.6.12
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNGTIN, sl_param.ChZnGTIN)); // @v10.7.2
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNSERIAL, sl_param.ChZnSerial)); // @v10.7.2
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNPARTN, sl_param.ChZnPartN)); // @v10.7.8
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNPRODTYPE, sl_param.ChZnProductType)); // @v10.7.2
if(sl_param.ChZnCode.NotEmptyS()) {
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNCODE, sl_param.ChZnCode));
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNGTIN, sl_param.ChZnGTIN));
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNSERIAL, sl_param.ChZnSerial));
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNPARTN, sl_param.ChZnPartN));
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNPRODTYPE, sl_param.ChZnProductType));
// @v11.1.11 {
if(sl_param.PpChZnR.LineIdx > 0) {
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNPPRESULT, sl_param.PpChZnR.CheckResult)); // @v11.1.11 Результат проверки марки честный знак на фазе препроцессинга
Expand Down Expand Up @@ -1002,22 +1002,19 @@ int SCS_SYNCCASH::PrintCheck(CCheckPacket * pPack, uint flags)
THROW(ExecPrintOper(DVCCMD_PRINTTEXT, Arr_In, Arr_Out));
}
Arr_In.Z();
// @v10.4.7 @fix {
if(flags & PRNCHK_RETURN) {
if(amt_bnk != 0.0) { THROW(ArrAdd(Arr_In, DVCPARAM_PAYMCARD, fabs(amt_bnk))) }
if(amt_cash != 0.0) { THROW(ArrAdd(Arr_In, DVCPARAM_PAYMCASH, fabs(amt_cash))); }
if(amt_ccrd != 0.0) { THROW(ArrAdd(Arr_In, DVCPARAM_PAYMCCRD, fabs(amt_ccrd))); } // @v10.4.1
if(amt_ccrd != 0.0) { THROW(ArrAdd(Arr_In, DVCPARAM_PAYMCCRD, fabs(amt_ccrd))); }
}
else /* } @v10.4.7 @fix */ {
else {
if(amt_bnk > 0.0) { THROW(ArrAdd(Arr_In, DVCPARAM_PAYMCARD, amt_bnk)) }
if(amt_cash > 0.0) { THROW(ArrAdd(Arr_In, DVCPARAM_PAYMCASH, amt_cash)); }
if(amt_ccrd > 0.0) { THROW(ArrAdd(Arr_In, DVCPARAM_PAYMCCRD, amt_ccrd)); } // @v10.4.1
if(amt_ccrd > 0.0) { THROW(ArrAdd(Arr_In, DVCPARAM_PAYMCCRD, amt_ccrd)); }
}
{
// @v10.8.12 {
if(ofdf.Sid.NotEmpty())
THROW(ArrAdd(Arr_In, DVCPARAM_CHZNSID, ofdf.Sid));
// } @v10.8.12
}
// @v11.3.6 {
if(buyers_email.NotEmptyS()) {
Expand Down
2 changes: 1 addition & 1 deletion Src/PPLib/Bpakcore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5683,7 +5683,7 @@ void FASTCALL BillTotalBlock::Add(PPTransferItem * pTI)
PPGoodsType gt_rec;
if(SETIFZ(gt_id, goods_rec.GoodsTypeID) && gt_id != PPGT_DEFAULT) {
oddgoods = 1;
if(GTObj.Fetch(gt_id, &gt_rec) > 0) {
if(GtObj.Fetch(gt_id, &gt_rec) > 0) {
if(gt_rec.Flags & GTF_EXCLAMOUNT)
exclamount = 1;
SetupStdAmount(PPAMT_BUYING, gt_rec.AmtCost, cq, cq, (gt_rec.Flags & GTF_RPLC_COST), in_out);
Expand Down
10 changes: 2 additions & 8 deletions Src/PPLib/CCHECK.CPP
Original file line number Diff line number Diff line change
Expand Up @@ -1470,32 +1470,26 @@ int CCheckPacket::InsertItem(const CCheckItem & rItem)
if(rItem.EgaisMark[0]) {
THROW(SetLineTextExt(idx, CCheckPacket::lnextEgaisMark, rItem.EgaisMark));
}
// @v10.1.6 {
if(rItem.RemoteProcessingTa[0]) {
THROW(SetLineTextExt(idx, CCheckPacket::lnextRemoteProcessingTa, rItem.RemoteProcessingTa));
}
// } @v10.1.6
// @v10.4.12 {
if(rItem.ChZnGtin[0]) {
THROW(SetLineTextExt(idx, CCheckPacket::lnextChZnGtin, rItem.ChZnGtin));
}
if(rItem.ChZnSerial[0]) {
THROW(SetLineTextExt(idx, CCheckPacket::lnextChZnSerial, rItem.ChZnSerial));
}
// } @v10.4.12
// @v10.6.9 {
if(rItem.ChZnMark[0]) {
THROW(SetLineTextExt(idx, CCheckPacket::lnextChZnMark, rItem.ChZnMark));
}
// } @v10.6.9
{
LineExt le;
le.Queue = rItem.Queue;
SETFLAG(le.Flags, le.fGroup, rItem.Flags & cifGrouped);
SETFLAG(le.Flags, le.fModifier, rItem.Flags & cifModifier);
SETFLAG(le.Flags, le.fPartOfComplex, rItem.Flags & cifPartOfComplex);
SETFLAG(le.Flags, le.fQuotedByGift, rItem.Flags & cifQuotedByGift);
SETFLAG(le.Flags, le.fFixedPrice, rItem.Flags & cifFixedPrice); // @v10.1.7
SETFLAG(le.Flags, le.fFixedPrice, rItem.Flags & cifFixedPrice);
THROW(SetLineExt(idx, le));
}
}
Expand Down Expand Up @@ -1834,7 +1828,7 @@ CCheckCore::CcMarkedEntry::CcMarkedEntry() : CcID(0), LineNo(0), Flags(0), Qtty(
{
}

CCheckCore::ListByMarkEntry::ListByMarkEntry() : OrgLotID(0), OrgLotDate(ZERODATE), OrgLotQtty(0.0), Flags(0), TotalOpQtty(0.0)
CCheckCore::ListByMarkEntry::ListByMarkEntry() : OrgLotID(0), OrgLotDate(ZERODATE), OrgLotQtty(0.0), Flags(0), TotalOpQtty(0.0), P_Extra(0)
{
Mark[0] = 0;
}
Expand Down
Loading

0 comments on commit 16661ca

Please sign in to comment.