Skip to content

Commit 0fec219

Browse files
Version 12.0.8
1 parent 8078a26 commit 0fec219

32 files changed

+751
-463
lines changed

Src/Include/Pp.h

+18-10
Original file line numberDiff line numberDiff line change
@@ -3371,12 +3371,11 @@ class ObjVersioningCore : public ObjVerTbl {
33713371
//
33723372
#define OTF_NOZERO 0x0002 // Тег с нулевым значение удаляется //
33733373
#define OTF_NMBRULE 0x0004 // Для тега с числовым значением определено правило
3374-
#define OTF_WARNZERO 0x0008 // Нулевое или отрицательное значение тега является поводом для предупреждения //
3375-
// оператора (в документах, персональных операциях и т.д.)
3376-
#define OTF_INHERITABLE 0x0010 // Наследуемый tag. Интерпретация флага зависит от типа объектов,
3377-
// к которому относится tag.
3374+
#define OTF_WARNZERO 0x0008 // Нулевое или отрицательное значение тега является поводом для предупреждения оператора (в документах, персональных операциях и т.д.)
3375+
#define OTF_INHERITABLE 0x0010 // Наследуемый tag. Интерпретация флага зависит от типа объектов, к которому относится tag.
33783376
#define OTF_NOTICEINCASHPANE 0x0020 // Извещение в кассовой панели
33793377
#define OTF_HIERENUM 0x0040 // Иерерхическое перечисление
3378+
#define OTF_PASSIVE 0x0080 // @v12.0.8 Пассивный тег (не отображается в списках)
33803379

33813380
struct PPObjectTag2 { // @persistent @store(Reference2Tbl+)
33823381
PPObjectTag2();
@@ -17035,7 +17034,6 @@ struct ObjTagFilt {
1703517034

1703617035
class PPObjTag : public PPObjReference {
1703717036
public:
17038-
// @v10.7.8 (unused) static int EditEnumListDialog(PPTagEnumList *);
1703917037
static int CheckForTagFilt(PPID objType, PPID objID, const TagFilt * pFilt);
1704017038
//
1704117039
// Descr: Вспомогательная функция для извлечения тега объекта {objType; objID}
@@ -24394,7 +24392,7 @@ class PPGoodsStruc : public PPExtStrContainer { // @v12.0.6 унаследова
2439424392
//
2439524393
// Descr: Перечисляет элементы структуры с вычислением количества, необходимого
2439624394
// для комплектации srcQtty единиц составного товара. Требуемое количество
24397-
// возвращается по указателю pQtty. Для получения первого элемента по уазателю pPos
24395+
// возвращается по указателю pQtty. Для получения первого элемента по указателю pPos
2439824396
// следует передать значение 0.
2439924397
// Функция, после каждого успешного вызова, увеличивает значение *pPos на единицу.
2440024398
// Returns:
@@ -24962,6 +24960,7 @@ struct QuotKindFilt {
2496224960
// ограничение (если есть) - максимальное количество хранимых значений.
2496324961
#define QUOTKF_NODIS 0x0100L // Если применяется этот вид котировки, то скидки по картам не действуют.
2496424962
#define QUOTKF_USEROUNDING 0x0200L // @v10.9.10 Применять округление значений котировок в соответствии с полями PPQuotKind2::RoundingPrec, PPQuotKind2::RoundingDir
24963+
#define QUOTKF_PASSIVE 0x0400L // @v12.0.8 Пассивный вид котировки (не отображается в списках)
2496524964

2496624965
struct PPQuotKind2 { // @flat @persistent @store(Reference2Tbl+)
2496724966
PPQuotKind2();
@@ -53727,15 +53726,16 @@ class PPListDialog : public TDialog {
5372753726
// Descr: Флаги конструктора
5372853727
//
5372953728
enum {
53730-
fOnDblClkOk = 0x0001, // При двойном щелчке, если выбран элемент списка завершать работу диалога как по cmOK
53729+
fOnDblClkOk = 0x0001, // При двойном щелчке, если выбран элемент списка завершать работу диалога как по cmOK
5373153730
fOmitSearchByFirstChar = 0x0002, // Не выводить окно поиска в ответ на нажатие символьной клавиши
53732-
fOwnerDraw = 0x0004, // @v10.3.0 Если установлен, то конструктор вызывает SetOwnerDrawState()
53733-
fMultiselect = 0x0008 // @v11.4.3 Допускается множественный выбор в списке
53731+
fOwnerDraw = 0x0004, // Если установлен, то конструктор вызывает SetOwnerDrawState()
53732+
fMultiselect = 0x0008 // @v11.4.3 Допускается множественный выбор в списке
5373453733
};
5373553734
PPListDialog(uint rezID, uint aCtlList, long flags = 0);
5373653735
int addStringToList(long id, const char * pText);
5373753736
int getSelection(long * pID);
53738-
void updateList(long, int byPos = 1);
53737+
void updateList(long pos);
53738+
void updateListById(long id);
5373953739
protected:
5374053740
DECL_HANDLE_EVENT;
5374153741
virtual int setupList();
@@ -55011,7 +55011,15 @@ class CheckPaneDialog : public TDialog, public CPosProcessor {
5501155011
// 0 - ошибка
5501255012
//
5501355013
int ChZnMarkAutoSelect(PPID goodsID, double qtty, SString & rChZnBuf);
55014+
55015+
struct EgaisMarkAutoSelectEntry {
55016+
PPID GoodsID;
55017+
double Qtty;
55018+
SString Mark;
55019+
};
55020+
5501455021
int EgaisMarkAutoSelect(PPID goodsID, double qtty, SString & rMarkBuf); // @v12.0.7
55022+
int Helper_EgaisMarkAutoSelect(PPID goodsID, double qtty, TSCollection <EgaisMarkAutoSelectEntry> & rResult);
5501555023

5501655024
ExtGoodsSelDialog * P_EGSDlg;
5501755025
long AutoInputTolerance; // Мин среднее время (ms) между вводом символом, ниже которого считается, что данные были введены автоматическим средством ввода (напр. сканером штрихкодов)

Src/Include/SLIB.H

+13
Original file line numberDiff line numberDiff line change
@@ -961,6 +961,19 @@
961961
#define SLERR_VSLOC_ENUMINSTCALL_FAULT 784 //"ERROR: EnumInstances call failed (0x%08lx)"
962962
#define SLERR_VSLOC_NEXTINSTCALL_FAULT 785 //"ERROR: While enumerating instances, Next call failed (0x%08lx)"
963963

964+
#define SLERR_RECMGR_INVROWID_POBW 801 // Invalid RowId: битовая ширина смещения на странице выходит за допустимые пределы
965+
#define SLERR_RECMGR_INVROWID_PDBWFIT 802 // Invalid RowId: битовая ширина смещения на странице не вписывается в размер страницы
966+
#define SLERR_RECMGR_INVROWID_PAGESEQLO 803 // Invalid RowId: номер страницы ниже допустимой величины
967+
#define SLERR_RECMGR_INVROWID_PAGESEQUP 804 // Invalid RowId: номер страницы выше допустимой величины
968+
#define SLERR_RECMGR_INVROWID_OFFSUP 805 // Invalid RowId: смещение выше допустимой величины
969+
#define SLERR_RECMGR_INVROWID_OFFSOUTOFPG 806 // Invalid RowId: смещение превышает размер странцы
970+
#define SLERR_RECMGR_INVPAGE_SIGNATURE 806 // Invalid page: signature
971+
#define SLERR_RECMGR_INVPAGE_ZEROSIZE 807 // Invalid page: size is zero
972+
#define SLERR_RECMGR_INVPAGE_FIXEDCHUNK 808 // Invalid page: нарушение в определении фиксированного размера записей
973+
#define SLERR_RECMGR_RECPFX_PAYLOADSIZE 809 // Invalid recprefix: недопустимый размер полезной нагрузки блока
974+
#define SLERR_RECMGR_RECPFX_SIGNATURE 810 // Invalid recprefix: недопустимая сигнатура в начале блока
975+
#define SLERR_RECMGR_RECPFX_FLAGS 811 // Invalid recprefix: недопустимые флаги заголовка блока
976+
964977
#define SLERR_ERRNO_OFFSET 2000 // Смещение с которого начинаются коды ошибок, соответствующие posix-мнемоникам (errno)
965978
#define SLERR_ERRNO_LAST 2999 // Максимальное значение для posix errno (если я правильно понял, то errno не имеет официального максимуму потому использую свой собственный).
966979

Src/Include/ued-id.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
// UED-ID-TEMP.H
1+
// UED-ID.H
22
// version: 34
33
// sha256: 5e9cbeca2b7ff057db997ea47b5400d7c63f2e77ac1a15b6a66c2e3d93221a0b
44
//
5-
#ifndef __UED_ID_TEMP_H
6-
#define __UED_ID_TEMP_H
5+
#ifndef __UED_ID_H
6+
#define __UED_ID_H
77

88
#define UED_META_META 0x100000001ULL
99
#define UED_META_PREDEFVALUE 0x100000002ULL
@@ -3692,4 +3692,4 @@
36923692
#define UED_META_INTEGER 0x197000000ULL
36933693
#define UED_META_DECIMAL 0x198000000ULL
36943694

3695-
#endif // __UED_ID_TEMP_H
3695+
#endif // __UED_ID_H

Src/PPEquip/Bht.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -3270,11 +3270,11 @@ int PPObjBHT::PrepareConfigData(const PPBhtTerminalPacket * pPack, StyloBhtIICon
32703270
for(uint i = 0; i < p_op_list->getCount(); i++) {
32713271
const SBIIOpInfo & op_info = pPack->P_SBIICfg->P_OpList->at(i);
32723272
long op_id = op_info.ToHostOpID;
3273-
PPOprKind op_data;
3274-
if(op_id && GetOpData(op_id, &op_data) > 0) {
3273+
PPOprKind op_rec;
3274+
if(op_id && GetOpData(op_id, &op_rec) > 0) {
32753275
Sdr_SBIIOpRestr sdr_op;
32763276
sdr_op.OpID = op_info.OpID;
3277-
sdr_op.AccSheet = op_data.AccSheetID;
3277+
sdr_op.AccSheet = op_rec.AccSheetID;
32783278
sdr_op.ToBhtOp = op_info.ToBhtOpID;
32793279
sdr_op.BhtOkCA = op_info.BhtOkCancelActions;
32803280
sdr_op.BhtCfmA = op_info.BhtCfmActions;

Src/PPLib/Billdlg.cpp

+61-35
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,7 @@ class BillDialog : public PPListDialog {
622622
int editPaymOrder(int forceUpdateRcvr);
623623
int EditFreight();
624624
int calcAmounts(double * _amt);
625-
void SetupInfoText(); // @v10.9.9 CTL_BILL_ST_SCARD
625+
void SetupInfoText(); // CTL_BILL_ST_SCARD
626626
void setupDebtText();
627627
void setupByCntragnt();
628628
void ReplyCntragntSelection(int force);
@@ -644,25 +644,14 @@ class BillDialog : public PPListDialog {
644644
void SetupAgreementButton();
645645
int EditAgreement();
646646
void SetupPaymDateCtrls();
647-
void SetupMarks()
648-
{
649-
bool show_autorcpt_mark = false;
650-
bool show_whitelabel_mark = false;
651-
if(P_Pack) {
652-
if(P_Pack->Rec.Flags & BILLF_WHITELABEL)
653-
show_whitelabel_mark = true;
654-
if(P_Pack->Rec.Flags2 & BILLF2_FORCEDRECEIPT)
655-
show_autorcpt_mark = true;
656-
}
657-
showCtrl(CTL_BILL_IND_AUTORCPT, show_autorcpt_mark);
658-
showCtrl(CTL_BILL_IND_WL, show_whitelabel_mark);
659-
}
647+
void SetupMarks();
648+
660649
enum {
661-
fPctDis = 0x0001, // Признак того, что скидка указана в процентах
650+
fPctDis = 0x0001, // Признак того, что скидка указана в процентах
662651
fExtMainCurAmount = 0x0002, // Признак наличия в диалоге полей валюты и валютного курса (CTL_BILL_CUR, CTLSEL_BILL_CUR, CTL_BILL_CRATE, CTL_BILL_BASEAMT)
663-
fEditMode = 0x0004,
652+
fEditMode = 0x0004,
664653
fHasAmtIDList = 0x0008,
665-
fModified = 0x0010,
654+
fModified = 0x0010,
666655
fSetupObj2ByCliAgt = 0x0020,
667656
fCheckAgreement = 0x0040, // Включается если в таблице статей установлено использование соглашений
668657
fCheckCreditLim = 0x0080, // Вид операции, возможно, требует проверки кредитного лимита
@@ -756,8 +745,7 @@ int EditGoodsBill(PPBillPacket * pPack, long egbFlags)
756745
uint prn_form = 0;
757746
BillDialog * dlg = 0;
758747
uint dlg_id = 0;
759-
// @v10.2.3 THROW(r_rt.CheckOpID(pPack->Rec.OpID, PPR_READ));
760-
THROW(p_bobj->CheckRightsWithOp(pPack->Rec.OpID, PPR_READ)); // @v10.2.3
748+
THROW(p_bobj->CheckRightsWithOp(pPack->Rec.OpID, PPR_READ));
761749
if(CheckOpFlags(pPack->Rec.OpID, OPKF_CURTRANSIT)) {
762750
THROW(r = EditCurTransitBill(pPack));
763751
}
@@ -769,8 +757,7 @@ int EditGoodsBill(PPBillPacket * pPack, long egbFlags)
769757
if(egbFlags & PPObjBill::efEdit && egbFlags & PPObjBill::efForceModify/*options == 2*/)
770758
dlg->Flags |= BillDialog::fModified;
771759
if(egbFlags & PPObjBill::efEdit/*options >= 1*/) {
772-
// @v10.2.3 if(!p_bobj->CheckRights(PPR_MOD) || !r_rt.CheckBillDate(pPack->Rec.Dt) || !r_rt.CheckOpID(pPack->Rec.OpID, PPR_MOD)) {
773-
if(!p_bobj->CheckRights(PPR_MOD) || !r_rt.CheckBillDate(pPack->Rec) || !p_bobj->CheckRightsWithOp(pPack->Rec.OpID, PPR_MOD)) { // @v10.2.3
760+
if(!p_bobj->CheckRights(PPR_MOD) || !r_rt.CheckBillDate(pPack->Rec) || !p_bobj->CheckRightsWithOp(pPack->Rec.OpID, PPR_MOD)) {
774761
dlg->enableCommand(cmOK, 0);
775762
//options = 3;
776763
egbFlags |= PPObjBill::efNoUpdNotif;
@@ -2286,7 +2273,7 @@ void BillDialog::ReplyCntragntSelection(int force)
22862273
PaymTerm = -1; // Срок оплаты по документу (в днях), взятый из соглашения //
22872274
PayDateBase = 0;
22882275
SString add_msg;
2289-
PPID client_id = force ? P_Pack->Rec.Object : getCtrlLong(CTLSEL_BILL_OBJECT);
2276+
const PPID client_id = force ? P_Pack->Rec.Object : getCtrlLong(CTLSEL_BILL_OBJECT);
22902277
const int to_force_update = BIN((force && client_id) || client_id != P_Pack->Rec.Object);
22912278
if(P_Pack->SampleBillID)
22922279
P_BObj->SetupQuot(P_Pack, client_id);
@@ -2399,19 +2386,44 @@ void BillDialog::ReplyCntragntSelection(int force)
23992386
ExecViewAndDestroy(dlg);
24002387
}
24012388
}
2402-
if(client_id && P_Pack->OpTypeID == PPOPT_GOODSRECEIPT && P_Pack->AccSheetID == GetSupplAccSheet() && P_Pack->GetTCount()) {
2403-
int is_there_force_suppl = 0;
2404-
uint i;
2405-
for(i = 0; !is_there_force_suppl && i < P_Pack->GetTCount(); i++) {
2406-
PPTransferItem & r_ti = P_Pack->TI(i);
2407-
if(r_ti.Flags & PPTFR_FORCESUPPL)
2408-
is_there_force_suppl = 1;
2409-
}
2410-
if(is_there_force_suppl && CONFIRM(PPCFM_REPLCTIFORCESUPPL)) {
2411-
for(i = 0; i < P_Pack->GetTCount(); i++) {
2412-
PPTransferItem & r_ti = P_Pack->TI(i);
2413-
if(r_ti.Flags & PPTFR_FORCESUPPL)
2414-
r_ti.Flags &= ~PPTFR_FORCESUPPL;
2389+
if(client_id) {
2390+
const uint tcount = P_Pack->GetTCount();
2391+
if(tcount) {
2392+
if(P_Pack->AccSheetID == GetSupplAccSheet()) {
2393+
if(P_Pack->OpTypeID == PPOPT_GOODSRECEIPT) {
2394+
bool is_there_force_suppl = false;
2395+
{
2396+
for(uint i = 0; !is_there_force_suppl && i < tcount; i++) {
2397+
PPTransferItem & r_ti = P_Pack->TI(i);
2398+
if(r_ti.Flags & PPTFR_FORCESUPPL)
2399+
is_there_force_suppl = true;
2400+
}
2401+
}
2402+
if(is_there_force_suppl && CONFIRM(PPCFM_REPLCTIFORCESUPPL)) {
2403+
for(uint i = 0; i < tcount; i++) {
2404+
PPTransferItem & r_ti = P_Pack->TI(i);
2405+
if(r_ti.Flags & PPTFR_FORCESUPPL)
2406+
r_ti.Flags &= ~PPTFR_FORCESUPPL;
2407+
}
2408+
}
2409+
}
2410+
else if(P_Pack->OpTypeID == PPOPT_DRAFTRECEIPT) { // @v12.0.8
2411+
//
2412+
// В случае, если мы устанавливаем поставщика в драфт-приходе и в какой-то строке цена поступления не определена,
2413+
// то применяем в этом случае контрактную цену поставщика (если такая есть)
2414+
//
2415+
for(uint i = 0; i < tcount; i++) {
2416+
PPTransferItem & r_ti = P_Pack->TI(i);
2417+
if(r_ti.Cost == 0.0) {
2418+
QuotIdent qi(P_Pack->Rec.LocID, 0, P_Pack->Rec.CurID, client_id);
2419+
PPSupplDeal sd;
2420+
GObj.GetSupplDeal(r_ti.GoodsID, qi, &sd, 1);
2421+
if(!sd.IsDisabled && sd.Cost > 0) {
2422+
r_ti.Cost = sd.Cost;
2423+
}
2424+
}
2425+
}
2426+
}
24152427
}
24162428
}
24172429
}
@@ -2542,6 +2554,20 @@ void BillDialog::SetupPaymDateCtrls()
25422554
}
25432555
}
25442556

2557+
void BillDialog::SetupMarks()
2558+
{
2559+
bool show_autorcpt_mark = false;
2560+
bool show_whitelabel_mark = false;
2561+
if(P_Pack) {
2562+
if(P_Pack->Rec.Flags & BILLF_WHITELABEL)
2563+
show_whitelabel_mark = true;
2564+
if(P_Pack->Rec.Flags2 & BILLF2_FORCEDRECEIPT)
2565+
show_autorcpt_mark = true;
2566+
}
2567+
showCtrl(CTL_BILL_IND_AUTORCPT, show_autorcpt_mark);
2568+
showCtrl(CTL_BILL_IND_WL, show_whitelabel_mark);
2569+
}
2570+
25452571
void BillDialog::SetupInfoText()
25462572
{
25472573
SString info_buf;

0 commit comments

Comments
 (0)