From fdea928933494b19406783e71a077a2d1ffd668a Mon Sep 17 00:00:00 2001 From: papyrussolution Date: Mon, 14 Oct 2024 18:39:34 +0300 Subject: [PATCH] Version 12.1.6-ii --- Src/Include/SLIB.H | 1 + Src/Include/ued-id.h | 8 +-- Src/PPEquip/EquipDll/Pirit.cpp | 4 +- Src/PPLib/Objbill.cpp | 2 +- Src/PPLib/V_gdsopr.cpp | 99 ++++++++++++++++++++++---- Src/PPLib/egais.cpp | 117 ++++++++++++------------------- Src/PPLib/v_lot.cpp | 32 ++++----- Src/PPTEST/UNIT/test-inet.cpp | 24 +++++++ Src/PPTEST/testdef-dedicated.ini | 6 +- Src/Rsrc/Dlg/f_lotoex.dlg | Bin 0 -> 3105 bytes Src/Rsrc/Str/ppstr2.symb | 3 +- Src/Rsrc/Str/ppstr2.txt | 2 + Src/Rsrc/Version/genver-open.dat | 4 +- Src/SLib/macaddr.cpp | 6 +- 14 files changed, 185 insertions(+), 123 deletions(-) create mode 100644 Src/Rsrc/Dlg/f_lotoex.dlg diff --git a/Src/Include/SLIB.H b/Src/Include/SLIB.H index 8b08b1d35..32db83e54 100644 --- a/Src/Include/SLIB.H +++ b/Src/Include/SLIB.H @@ -661,6 +661,7 @@ #define SLERR_MTX_INCOMPATDIM_MMADD 74 // Incompatible dim in matrix+matrix op #define SLERR_MTX_INVERSE 75 // Ошибка обращения матрицы. +#define SLERR_INVMACADDRSTR 93 // @v12.1.7 Недопустимая строка Mac Address (%s) #define SLERR_MKDIRBYTEMPLATEFAULT 94 // @v11.8.12 Error creating directory by template #define SLERR_FILETOOBIG 95 // @v11.3.4 Файл '%s' слишком большой #define SLERR_INVPARAM 96 // Недопустимый параметр функции (%s) diff --git a/Src/Include/ued-id.h b/Src/Include/ued-id.h index abb5eee00..57f5bcd6c 100644 --- a/Src/Include/ued-id.h +++ b/Src/Include/ued-id.h @@ -1,9 +1,9 @@ -// UED-ID.H +// UED-ID-TEMP.H // version: 36 // sha256: 30e57f6807209c82ededb4610622268085372e2295a608dc2a01fc98fa6e8173 // -#ifndef __UED_ID_H -#define __UED_ID_H +#ifndef __UED_ID_TEMP_H +#define __UED_ID_TEMP_H #define UED_META_META 0x100000001ULL #define UED_META_PREDEFVALUE 0x100000002ULL @@ -3693,4 +3693,4 @@ #define UED_META_INTEGER 0x197000000ULL #define UED_META_DECIMAL 0x198000000ULL -#endif // __UED_ID_H +#endif // __UED_ID_TEMP_H diff --git a/Src/PPEquip/EquipDll/Pirit.cpp b/Src/PPEquip/EquipDll/Pirit.cpp index d75230294..4b0652d98 100644 --- a/Src/PPEquip/EquipDll/Pirit.cpp +++ b/Src/PPEquip/EquipDll/Pirit.cpp @@ -2345,8 +2345,8 @@ int PiritEquip::RunCheck(int opertype) CreateStr(Check.Department, in_data); CreateStr(CshrName, in_data); CreateStr(Check.CheckNum, in_data); - if(Check.TaxSys >= 0 && Check.TaxSys <= 5) // @v10.6.4 - CreateStr(inrangeordefault(static_cast(Check.TaxSys), 0L, 5L, 0L), in_data); // @v10.6.3 + if(Check.TaxSys >= 0 && Check.TaxSys <= 5) + CreateStr(inrangeordefault(static_cast(Check.TaxSys), 0L, 5L, 0L), in_data); THROW(ExecCmd("30", in_data, out_data, r_error)); break; case 1: // Закрыть документ diff --git a/Src/PPLib/Objbill.cpp b/Src/PPLib/Objbill.cpp index cc61fa1a7..78fcdd755 100644 --- a/Src/PPLib/Objbill.cpp +++ b/Src/PPLib/Objbill.cpp @@ -1963,7 +1963,7 @@ int PPObjBill::AddExpendByOrder(PPID * pBillID, PPID sampleBillID, const SelAddB GObj.GetSupplDeal(ti.GoodsID, suppl_deal_qi, &supl_deal); if(r_src_ti.Cost > 0.0) // @v12.1.6 ti.Cost = r_src_ti.Cost; - if(supl_deal.Cost > 0.0) { + else if(supl_deal.Cost > 0.0) { ti.Cost = supl_deal.Cost; } else { diff --git a/Src/PPLib/V_gdsopr.cpp b/Src/PPLib/V_gdsopr.cpp index 722e6ab95..dac16b21e 100644 --- a/Src/PPLib/V_gdsopr.cpp +++ b/Src/PPLib/V_gdsopr.cpp @@ -559,7 +559,7 @@ int GoodsOpAnlzFiltDialog::setDTS(const GoodsOpAnalyzeFilt * pFilt) { RVALUEPTR(Data, pFilt); int ok = 1; - ushort v; + //ushort v; PPID acc_sheet_id = 0; PPID parent_grp_id = 0; PPObjOprKind opk_obj; @@ -593,8 +593,17 @@ int GoodsOpAnlzFiltDialog::setDTS(const GoodsOpAnalyzeFilt * pFilt) AddClusterAssoc(CTL_BILLFLT_DIFFBYPRICE, 10, GoodsOpAnalyzeFilt::fCalcCVat); SetClusterData(CTL_BILLFLT_DIFFBYPRICE, Data.Flags); SetupFlags(); - setCtrlData(CTL_BILLFLT_OPRSET, &(v = (ushort)Data.OpGrpID)); - disableCtrls(v & 0x01, /*CTL_BILLFLT_PERIOD,*/ CTL_BILLFLT_OPRKIND, CTL_BILLFLT_AMOUNT, 0); + // @v12.1.7 setCtrlData(CTL_BILLFLT_OPRSET, &(v = (ushort)Data.OpGrpID)); + // @v12.1.7 { + AddClusterAssocDef(CTL_BILLFLT_OPRSET, 0, GoodsOpAnalyzeFilt::ogSelected); + AddClusterAssoc(CTL_BILLFLT_OPRSET, 1, GoodsOpAnalyzeFilt::ogIncoming); + AddClusterAssoc(CTL_BILLFLT_OPRSET, 2, GoodsOpAnalyzeFilt::ogProfitable); + AddClusterAssoc(CTL_BILLFLT_OPRSET, 3, GoodsOpAnalyzeFilt::ogPayed); + AddClusterAssoc(CTL_BILLFLT_OPRSET, 4, GoodsOpAnalyzeFilt::ogInOutAnalyze); + AddClusterAssoc(CTL_BILLFLT_OPRSET, 5, GoodsOpAnalyzeFilt::ogMarketplaceSalesAnalyze); + SetClusterData(CTL_BILLFLT_OPRSET, Data.OpGrpID); + // } @v12.1.7 + disableCtrls(!oneof2(Data.OpGrpID, GoodsOpAnalyzeFilt::ogSelected, GoodsOpAnalyzeFilt::ogInOutAnalyze), /*CTL_BILLFLT_PERIOD,*/ CTL_BILLFLT_OPRKIND, CTL_BILLFLT_AMOUNT, 0); AddClusterAssoc(CTL_BILLFLT_INTRREVAL, 0, GoodsOpAnalyzeFilt::fIntrReval); SetClusterData(CTL_BILLFLT_INTRREVAL, Data.Flags); AddClusterAssoc(CTL_BILLFLT_FLAGS, 0, GoodsOpAnalyzeFilt::fDisplayWoPacks); @@ -634,8 +643,9 @@ int GoodsOpAnlzFiltDialog::getDTS(GoodsOpAnalyzeFilt * pFilt) SETFLAG(Data.Flags, GoodsOpAnalyzeFilt::fCalcCVat, BIN(Data.Flags & (GoodsOpAnalyzeFilt::fCalcCVat|GoodsOpAnalyzeFilt::fCalcPVat))); SETFLAG(Data.Flags, GoodsOpAnalyzeFilt::fCalcPVat, BIN(Data.Flags & (GoodsOpAnalyzeFilt::fCalcCVat|GoodsOpAnalyzeFilt::fCalcPVat))); GetClusterData(CTL_BILLFLT_INTRREVAL, &Data.Flags); - getCtrlData(CTL_BILLFLT_OPRSET, &(v = 0)); - Data.OpGrpID = v; + // @v12.1.7 getCtrlData(CTL_BILLFLT_OPRSET, &(v = 0)); + // @v12.1.7 Data.OpGrpID = v; + GetClusterData(CTL_BILLFLT_OPRSET, &Data.OpGrpID); // @v12.1.7 GetClusterData(CTL_BILLFLT_USEABCANLZ, &Data.Flags); Data.ABCAnlzGroup = BIN(Data.Flags & GoodsOpAnalyzeFilt::fUseABCAnlz); if(Data.Flags & GoodsOpAnalyzeFilt::fUseABCAnlz) @@ -1039,8 +1049,9 @@ IMPL_HANDLE_EVENT(GoodsOpAnlzFiltDialog) void GoodsOpAnlzFiltDialog::replyOprGrpChanged() { ushort v = 0; - if(getCtrlData(CTL_BILLFLT_OPRSET, &v)) { - Data.OpGrpID = v; + // @v12.1.7 if(getCtrlData(CTL_BILLFLT_OPRSET, &v)) { + if(GetClusterData(CTL_BILLFLT_OPRSET, &Data.OpGrpID)) { // @v12.1.7 + // @v12.1.7 Data.OpGrpID = v; SetupCtrls(Data.Flags); setupOpCombo(); if(!oneof2(Data.OpGrpID, GoodsOpAnalyzeFilt::ogSelected, GoodsOpAnalyzeFilt::ogInOutAnalyze)) { @@ -2123,7 +2134,6 @@ int PPViewGoodsOpAnalyze::CreateTempTable(double * pUfpFactors) PPIDArray op_list; PPIDArray neg_op_list; PPOprKind op_rec; - uint i; PPID id; TempGoodsOprTbl * p_prev_temp_tbl = 0; SString wait_msg; @@ -2154,7 +2164,7 @@ int PPViewGoodsOpAnalyze::CreateTempTable(double * pUfpFactors) P_BObj->Subst(P_TradePlanPacket, &subst_bill_val, &Bsp); */ PPTransferItem * p_ti; - for(i = 0; P_TradePlanPacket->enumItems(&i, (void **)&p_ti);) { + for(uint i = 0; P_TradePlanPacket->enumItems(&i, (void **)&p_ti);) { int r; blk.LocID = (f & GoodsOpAnalyzeFilt::fEachLocation) ? p_ti->LocID : LocList_.GetSingle(); THROW(r = PreprocessTi(p_ti, 0, subst_bill_val, &blk)); @@ -2174,8 +2184,64 @@ int PPViewGoodsOpAnalyze::CreateTempTable(double * pUfpFactors) THROW(P_BObj->P_Tbl->GetBillListByExt(Filt.SupplAgentID, 0L, suppl_bill_list)); p_suppl_bill_list = &suppl_bill_list; } - if(Filt.BillList.IsExists() && !(Filt.Flags & GoodsOpAnalyzeFilt::fBillListAsTradePlan)) { - for(i = 0; i < Filt.BillList.Get().getCount(); i++) { + if(Filt.OpGrpID == GoodsOpAnalyzeFilt::ogMarketplaceSalesAnalyze) { // @v12.1.7 + PPMarketplaceConfig cfg; + PrcssrMarketplaceInterchange::ReadConfig(&cfg); + if(cfg.OrderOpID && cfg.SalesOpID) { + // Лидирующая операция - продажа. То есть, мы просматриваем продажи за период, а заказы + // перебираем следующим образом: все заказы за период + все заказы, к которым привязаны продажи. + // + BillTbl::Rec bill_rec; + BillTbl::Key2 k2; + BillCore * p_bt = P_BObj->P_Tbl; + PPIDArray ord_list; + PPIDArray shipm_list; + PPIDArray temp_list; + { + // Продажи + BExtQuery q(p_bt, 2); + q.select(p_bt->ID, p_bt->Code, p_bt->Dt, p_bt->LocID, p_bt->OpID, p_bt->Object, p_bt->Object2, p_bt->Flags, + p_bt->LinkBillID, p_bt->Amount, 0).where(p_bt->OpID == cfg.SalesOpID && daterange(p_bt->Dt, &Filt.Period) && p_bt->EdiOp == PPEDIOP_MRKTPLC_SALE); + MEMSZERO(k2); + k2.OpID = cfg.SalesOpID; + k2.Dt = Filt.Period.low; + for(q.initIteration(false, &k2, spGe); q.nextIteration() > 0;) { + THROW(PPCheckUserBreak()); + p_bt->copyBufTo(&bill_rec); + shipm_list.add(bill_rec.ID); + temp_list.Z(); + p_bt->GetListOfOrdersByLading(bill_rec.ID, temp_list); + ord_list.add(&temp_list); + } + } + { + // Заказы + BExtQuery q(p_bt, 2); + q.select(p_bt->ID, p_bt->Code, p_bt->Dt, p_bt->LocID, p_bt->OpID, p_bt->Object, p_bt->Object2, p_bt->Flags, + p_bt->LinkBillID, p_bt->Amount, 0).where(p_bt->OpID == cfg.OrderOpID && daterange(p_bt->Dt, &Filt.Period) && p_bt->EdiOp == PPEDIOP_MRKTPLC_ORDER); + MEMSZERO(k2); + k2.OpID = cfg.OrderOpID; + k2.Dt = Filt.Period.low; + for(q.initIteration(false, &k2, spGe); q.nextIteration() > 0;) { + THROW(PPCheckUserBreak()); + p_bt->copyBufTo(&bill_rec); + ord_list.add(bill_rec.ID); + } + } + shipm_list.sortAndUndup(); + ord_list.sortAndUndup(); + for(uint i = 0; i < shipm_list.getCount(); i++) { + const PPID bill_id = shipm_list.get(i); + PPBillPacket bpack; + if(P_BObj->ExtractPacket(bill_id, &bpack) > 0) { + bpack.GetOrderList(temp_list); + + } + } + } + } + else if(Filt.BillList.IsExists() && !(Filt.Flags & GoodsOpAnalyzeFilt::fBillListAsTradePlan)) { + for(uint i = 0; i < Filt.BillList.Get().getCount(); i++) { if(P_BObj->ExtractPacket(Filt.BillList.Get().at(i), &pack) > 0) { if(!use_ext_list || ext_bill_list.bsearch(pack.Rec.ID)) { const double part = (GetOpType(pack.Rec.OpID, &op_rec) == PPOPT_GOODSRETURN) ? -1.0 : 1.0; @@ -2196,7 +2262,7 @@ int PPViewGoodsOpAnalyze::CreateTempTable(double * pUfpFactors) if(IsGenericOp(Filt.OpID) > 0) { ObjRestrictArray or_list; op_obj.GetGenericList(Filt.OpID, &or_list); - for(i = 0; i < or_list.getCount(); i++) { + for(uint i = 0; i < or_list.getCount(); i++) { const ObjRestrictItem & r_or_item = or_list.at(i); const PPID op_id = r_or_item.ObjID; op_list.add(op_id); @@ -2271,7 +2337,7 @@ int PPViewGoodsOpAnalyze::CreateTempTable(double * pUfpFactors) } while(gctiter.Next(&trfr_rec, &bill_rec) > 0); if(local_bill_list.getCount()) { local_bill_list.sortAndUndup(); - for(i = 0; i < local_bill_list.getCount(); i++) { + for(uint i = 0; i < local_bill_list.getCount(); i++) { __GoaBillEntry entry; entry.BillID = local_bill_list.get(i); entry.IsPaym = 0; @@ -2283,7 +2349,7 @@ int PPViewGoodsOpAnalyze::CreateTempTable(double * pUfpFactors) } } else { - for(i = 0; i < op_list.getCount(); i++) { + for(uint i = 0; i < op_list.getCount(); i++) { const PPID op_id = op_list.get(i); BillTbl::Rec bill_rec; int is_paym = 0; @@ -4017,6 +4083,11 @@ int PPViewGoodsOpAnalyze::ProcessCommand(uint ppvCmd, const void * pHdr, PPViewB SETIFZ(P_TrfrFilt, new TrfrAnlzFilt()); if(P_TrfrFilt && GObj.Fetch(labs(hdr.GoodsID), &goods_rec) > 0) { PPViewTrfrAnlz trfr_anlz; + // @v12.1.7 { + if(Filt.OpGrpID == GoodsOpAnalyzeFilt::ogSelected) { + P_TrfrFilt->OpID = Filt.OpID; + } + // } @v12.1.7 P_TrfrFilt->Period = Filt.Period; P_TrfrFilt->GoodsID = goods_rec.ID; P_TrfrFilt->GoodsGrpID = goods_rec.ParentID; diff --git a/Src/PPLib/egais.cpp b/Src/PPLib/egais.cpp index 919f0b71f..46618116f 100644 --- a/Src/PPLib/egais.cpp +++ b/Src/PPLib/egais.cpp @@ -987,8 +987,7 @@ int PPEgaisProcessor::PutCCheck(const CCheckPacket & rPack, PPID locID, bool hor THROW(p_wr_buffer); { // - // @v10.6.0 Танец с бубном в стремлении решить непонятную проблему с аварийным завершением сеанса - // в функции ReadAck при чтении xml из буфера + // Танец с бубном в стремлении решить непонятную проблему с аварийным завершением сеанса в функции ReadAck при чтении xml из буфера // uint32 dummy_bytes = 0; const size_t preserve_wr_offs = p_wr_buffer->GetWrOffs(); @@ -1063,8 +1062,7 @@ int PPEgaisProcessor::PutQuery(PPEgaisProcessor::Packet & rPack, PPID locID, con THROW(p_wr_buffer); { // - // @v10.6.0 Танец с бубном в стремлении решить непонятную проблему с аварийным завершением сеанса - // в функции ReadAck при чтении xml из буфера + // Танец с бубном в стремлении решить непонятную проблему с аварийным завершением сеанса в функции ReadAck при чтении xml из буфера // uint32 dummy_bytes = 0; const size_t preserve_wr_offs = p_wr_buffer->GetWrOffs(); @@ -1084,7 +1082,7 @@ int PPEgaisProcessor::PutQuery(PPEgaisProcessor::Packet & rPack, PPID locID, con PPEDIOP_EGAIS_ACTCHARGEON, PPEDIOP_EGAIS_ACTCHARGEON_V2, PPEDIOP_EGAIS_ACTCHARGEONSHOP, PPEDIOP_EGAIS_ACTWRITEOFF, PPEDIOP_EGAIS_ACTWRITEOFF_V2, PPEDIOP_EGAIS_ACTWRITEOFF_V3, PPEDIOP_EGAIS_TRANSFERTOSHOP, PPEDIOP_EGAIS_TRANSFERFROMSHOP, PPEDIOP_EGAIS_ACTWRITEOFFSHOP, PPEDIOP_EGAIS_WAYBILLACT_V2, PPEDIOP_EGAIS_WAYBILLACT_V3, PPEDIOP_EGAIS_WAYBILLACT_V4, - PPEDIOP_EGAIS_ACTFIXBARCODE, PPEDIOP_EGAIS_ACTUNFIXBARCODE, 0); // @v10.9.1 PPEDIOP_EGAIS_ACTFIXBARCODE, PPEDIOP_EGAIS_ACTUNFIXBARCODE + PPEDIOP_EGAIS_ACTFIXBARCODE, PPEDIOP_EGAIS_ACTUNFIXBARCODE, 0); { Reference * p_ref = PPRef; PPTransaction tra(1); @@ -1172,8 +1170,7 @@ int PPEgaisProcessor::QueryRests(PPID locID, const char *) { int ok = -1; Ack ack; - // @v9.9.9 const int __v2 = BIN(Cfg.E.Flags & (Cfg.fEgaisVer2Fmt|Cfg.fEgaisVer3Fmt)); // @v9.9.5 |Cfg.fEgaisVer3Fmt - const int __v2 = BIN((Cfg.E.Flags & Cfg.fEgaisVer2Fmt) || (State & stUseEgaisVer3)); // @v9.9.9 + const int __v2 = BIN((Cfg.E.Flags & Cfg.fEgaisVer2Fmt) || (State & stUseEgaisVer3)); Packet qp(__v2 ? PPEDIOP_EGAIS_QUERYRESTS_V2 : PPEDIOP_EGAIS_QUERYRESTS); THROW(PutQuery(qp, locID, __v2 ? "QueryRests_v2" : "QueryRests", ack)); CATCHZOK @@ -1242,7 +1239,7 @@ int PPEgaisProcessor::QueryInfB(PPID locID, const char * pInfB) PPEgaisProcessor::PPEgaisProcessor(long cflags, PPLogger * pOuterLogger, int __reserve) : PrcssrAlcReport(), PPEmbeddedLogger((cflags & cfDirectFileLogging) ? PPEmbeddedLogger::ctrfDirectLogging : 0, pOuterLogger, PPFILNAM_EGAIS_LOG, LOGMSGF_DBINFO|LOGMSGF_TIME|LOGMSGF_USER), - State(0), P_LecT(0), /* @v10.6.5 P_Logger(0),*/P_UtmEntry(0), P_Taw(0) + State(0), P_LecT(0), P_UtmEntry(0), P_Taw(0) { { // @@ -1265,16 +1262,6 @@ PPEgaisProcessor::PPEgaisProcessor(long cflags, PPLogger * pOuterLogger, int __r P_Las = new PPLocAddrStruc(0, 0); THROW(SetConfig(0)); THROW(Init()); - /* @v10.6.5 if(pOuterLogger) { - P_Logger = pOuterLogger; - State |= stOuterLogger; - } - else if(cflags & cfDirectFileLogging) { - State |= stDirectFileLogging; - } - else { - THROW_MEM(SETIFZ(P_Logger, new PPLogger)); - }*/ if(cflags & cfDebugMode) { State |= stTestSendingMode; } @@ -1365,7 +1352,7 @@ static const SIntToSymbTabEntry _EgaisDocTypes[] = { { PPEDIOP_EGAIS_ACTWRITEOFF, "ActWriteOff" }, { PPEDIOP_EGAIS_ACTWRITEOFF_V2, "ActWriteOff_v2" }, { PPEDIOP_EGAIS_REQUESTREPEALWB, "RequestRepealWB" }, - { PPEDIOP_EGAIS_REQUESTREPEALAWO, "RequestRepealAWO" }, // @v10.0.07 + { PPEDIOP_EGAIS_REQUESTREPEALAWO, "RequestRepealAWO" }, { PPEDIOP_EGAIS_CONFIRMREPEALWB, "ConfirmRepealWB" }, { PPEDIOP_EGAIS_QUERYBARCODE, "QueryBarcode" }, { PPEDIOP_EGAIS_REPLYBARCODE, "ReplyBarcode" }, @@ -1381,11 +1368,11 @@ static const SIntToSymbTabEntry _EgaisDocTypes[] = { { PPEDIOP_EGAIS_WAYBILL_V3, "WayBill_v3" }, { PPEDIOP_EGAIS_WAYBILLACT_V3, "WayBillAct_v3" }, { PPEDIOP_EGAIS_ACTWRITEOFF_V3, "ActWriteOff_v3" }, - { PPEDIOP_EGAIS_QUERYRESENDDOC, "QueryResendDoc" }, // @v10.2.12 - { PPEDIOP_EGAIS_QUERYRESTBCODE, "QueryRestBCode" }, // @v10.5.6 - { PPEDIOP_EGAIS_REPLYRESTBCODE, "ReplyRestBCode" }, // @v10.5.8 - { PPEDIOP_EGAIS_ACTFIXBARCODE, "ActFixBarCode" }, // @v10.9.0 - { PPEDIOP_EGAIS_ACTUNFIXBARCODE, "ActUnFixBarCode" }, // @v10.9.0 + { PPEDIOP_EGAIS_QUERYRESENDDOC, "QueryResendDoc" }, + { PPEDIOP_EGAIS_QUERYRESTBCODE, "QueryRestBCode" }, + { PPEDIOP_EGAIS_REPLYRESTBCODE, "ReplyRestBCode" }, + { PPEDIOP_EGAIS_ACTFIXBARCODE, "ActFixBarCode" }, + { PPEDIOP_EGAIS_ACTUNFIXBARCODE, "ActUnFixBarCode" }, { PPEDIOP_EGAIS_NOTIFY_WBVER4, "InfoVersionTTN" }, // @v11.0.12 { PPEDIOP_EGAIS_WAYBILL_V4, "WayBill_v4" }, // @v11.0.12 { PPEDIOP_EGAIS_WAYBILLACT_V4, "WayBillAct_v4" }, // @v11.0.12 @@ -1436,7 +1423,7 @@ static const SIntToSymbTabEntry _EgaisWayBillTypes[] = { { PPEgaisProcessor::wbtRetToMe, "WBReturnToMe" } }; -/*static*/int FASTCALL PPEgaisProcessor::GetWayBillTypeText(int wbType, SString & rBuf) // @v10.0.05 +/*static*/int FASTCALL PPEgaisProcessor::GetWayBillTypeText(int wbType, SString & rBuf) { return SIntToSymbTab_GetSymb(_EgaisWayBillTypes, SIZEOFARRAY(_EgaisWayBillTypes), wbType, rBuf); } int FASTCALL PPEgaisProcessor::RecognizeWayBillTypeText(const char * pText) { return SIntToSymbTab_GetId(_EgaisWayBillTypes, SIZEOFARRAY(_EgaisWayBillTypes), pText); } @@ -1454,7 +1441,7 @@ int PPEgaisProcessor::WriteOrgInfo(SXml::WDoc & rXmlDoc, const char * pScopeXmlT RegisterTbl::Rec reg_rec; int j_status = 0; // 1 - росс юр, 2 - росс ип, 3 - иностранец (не ТС), 4 - иностранец (таможенный союз) const char * p_j_scope = 0; - THROW(PsnObj.GetPacket(personID, &psn_pack, PGETPCKF_USEINHERITENCE) > 0); // @v9.3.6 PGETPCKF_USEINHERITENCE + THROW(PsnObj.GetPacket(personID, &psn_pack, PGETPCKF_USEINHERITENCE) > 0); info_org_name = psn_pack.Rec.Name; { ObjTagItem tag_item; @@ -1566,12 +1553,10 @@ int PPEgaisProcessor::WriteOrgInfo(SXml::WDoc & rXmlDoc, const char * pScopeXmlT w_a.PutInner(SXml::nst("oref", "Country"), EncText(temp_buf.Z().CatLongZ(epr_item.CountryCode, 3))); if(epr_item.RegionCode) w_a.PutInnerSkipEmpty(SXml::nst("oref", "RegionCode"), EncText(temp_buf.Z().CatLongZ(epr_item.RegionCode, 2))); - // @v9.8.6 { else if(inn.Len() > 2) { inn.Sub(0, 2, temp_buf); w_a.PutInnerSkipEmpty(SXml::nst("oref", "RegionCode"), EncText(temp_buf)); } - // } @v9.8.6 else if(oneof2(j_status, 1, 2)) { LogTextWithAddendum(PPTXT_EGAIS_PERSONHASNTREGCODE, temp_buf = epr_item.Name); } @@ -1760,7 +1745,7 @@ int PPEgaisProcessor::WriteOrgInfo(SXml::WDoc & rXmlDoc, const char * pScopeXmlT LogTextWithAddendum(PPTXT_EGAIS_PERSONHASNTREGCODE, temp_buf = rRefcItem.Name); } w_a.PutInnerSkipEmpty(SXml::nst("oref", "area"), ""); - w_a.PutInner(SXml::nst("oref", "description"), EncText(temp_buf = rRefcItem.AddressDescr)); // @v9.4.6 PutInnerSkipEmpty-->PutInner + w_a.PutInner(SXml::nst("oref", "description"), EncText(temp_buf = rRefcItem.AddressDescr)); /*if(temp_buf.IsEmpty()) { LogTextWithAddendum(PPTXT_EGAIS_PERSONHASNTREGCODE, temp_buf = rRefcItem.Name); }*/ @@ -2185,7 +2170,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p { 30, "ce", "CommonV3" }, // ambiguity { 31, "wb", "TTNSingle_v3" }, // ambiguity { 32, "awr", "ActWriteOff_v3" }, // ambiguity - { 33, "awr", "ActFixBarCode" }, // ambiguity // @v10.9.0 + { 33, "awr", "ActFixBarCode" }, // ambiguity { 34, "wa", "ActTTNSingle_v4" }, // ambiguity // @v11.0.12 { 35, "wb", "TTNSingle_v4" }, // ambiguity // @v11.0.12 }; @@ -2364,7 +2349,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p } } THROW_PP_S(gppf & gppfAlc, PPERR_EGAIS_NOALCINBILL, bill_text); - THROW_PP_S(consignee_psn_id, PPERR_EDI_UNBLRSLV_BILLOBJ, bill_text); // @v10.3.6 + THROW_PP_S(consignee_psn_id, PPERR_EDI_UNBLRSLV_BILLOBJ, bill_text); // @v10.1.6 (moved down) @01 THROW_PP_S((gppf & (gppfPacked|gppfUnpacked)) != (gppfPacked|gppfUnpacked), PPERR_EGAIS_PKUPKMIXINBILL, bill_text); GetWayBillTypeText(wb_type, temp_buf); THROW(temp_buf.NotEmpty()); @@ -2466,7 +2451,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p const double mult = agi.UnpackedVolume / 10.0; qtty = (qtty * mult); // Неупакованная продукция передается в декалитрах price = (price / mult); - qtty_fmt = MKSFMTD(0, 6, 0); // @v9.7.10 // @v11.2.10 MKSFMTD(0, 3, 0)-->MKSFMTD(0, 6, 0) + qtty_fmt = MKSFMTD(0, 6, 0); // @v11.2.10 MKSFMTD(0, 3, 0)-->MKSFMTD(0, 6, 0) } P_BObj->trfr->Rcpt.Search(r_ti.LotID, &lot_rec); P_BObj->MakeLotText(&lot_rec, PPObjBill::ltfGoodsName, temp_buf); @@ -2502,12 +2487,12 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p qtty = total_qtty; price = total_price; seen_pos_list.add(fw_tidx); - local_pos_list.add(fw_tidx); // @v10.4.1 + local_pos_list.add(fw_tidx); } } } seen_pos_list.add(tidx); - local_pos_list.add(tidx); // @v10.4.1 + local_pos_list.add(tidx); // SXml::WNode w_p(_doc, SXml::nst("wb", "Position")); w_p.PutInner(SXml::nst("wb", "Identity"), EncText(temp_buf.Z().Cat(r_ti.RByBill))); @@ -2527,7 +2512,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p SXml::WNode w_s(_doc, SXml::nst("wb", "InformF2")); w_s.PutInner(SXml::nst("ce", "F2RegId"), EncText(ref_b)); // - // @v10.4.1 Уточнение выгрузки марок для случая, если несколько строк документа объединяются в одну + // Уточнение выгрузки марок для случая, если несколько строк документа объединяются в одну // int is_there_ext_codes = 0; { @@ -2604,7 +2589,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p } } } - else if(doc_type == PPEDIOP_EGAIS_QUERYRESTBCODE) { // @v10.5.6 + else if(doc_type == PPEDIOP_EGAIS_QUERYRESTBCODE) { const SString * p_param = static_cast(rPack.P_Data); if(p_param && p_param->NotEmpty()) { SXml::WNode n_arglist(_doc, SXml::nst("qp", "Parameters")); @@ -2828,7 +2813,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p const PPTransferItem * p_lti = 0; // Указатель на строку в документе списания p_link_bp, соответствующую r_ti uint lti_pos = 0; // Позиция строки документа списания p_link_bp, соответствующая bi double real_qtty = 0.0; - double declared_qtty = fabs(r_ti.Quantity_); // @v10.4.3 + double declared_qtty = fabs(r_ti.Quantity_); for(uint lbi = 0; !p_lti && lbi < p_link_bp->GetTCount(); lbi++) { const PPTransferItem & r_lti = p_link_bp->ConstTI(lbi); if(r_lti.RByBill == r_ti.RByBill) { @@ -2861,12 +2846,9 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p } { SXml::WNode n_pos(_doc, SXml::nst("wa", "Position")); - // @v10.9.4 temp_buf.Z().Cat(r_ti.RByBill); - // @v10.9.4 { if(p_bp->LTagL.GetTagStr(bi, PPTAG_LOT_ORGLINEIDENT, temp_buf) <= 0) { temp_buf.Z().Cat(r_ti.RByBill); } - // } @v10.9.4 n_pos.PutInner(SXml::nst("wa", "Identity"), EncText(temp_buf)); // p_bp->LTagL.GetTagStr(bi, PPTAG_LOT_FSRARINFB, temp_buf); @@ -2876,9 +2858,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p n_pos.PutInner(SXml::nst("wa", "InformBRegId"), EncText(temp_buf)); // n_pos.PutInner(SXml::nst("wa", "RealQuantity"), temp_buf.Z().Cat(real_qtty, MKSFMTD(0, 6, NMBF_NOTRAILZ))); - // @v10.3.6 { - // @v10.4.3 if(doc_type == PPEDIOP_EGAIS_WAYBILLACT_V3 && fabs(r_ti.Quantity_) != fabs(p_lti->Quantity_)) { // @v10.4.0 (&& fabs(r_ti.Quantity_) != fabs(p_lti->Quantity_)) - if(oneof2(doc_type, PPEDIOP_EGAIS_WAYBILLACT_V3, PPEDIOP_EGAIS_WAYBILLACT_V4) && declared_qtty > real_qtty) { // @v10.4.3 + if(oneof2(doc_type, PPEDIOP_EGAIS_WAYBILLACT_V3, PPEDIOP_EGAIS_WAYBILLACT_V4) && declared_qtty > real_qtty) { const int do_send_with_waybillact_accepted_marks = 0; if(do_send_with_waybillact_accepted_marks) { uint mark_count = 0; @@ -2898,7 +2878,6 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p } } } - // @v10.3.9 { else if(p_lti) { if(p_bp->XcL.Get(bi+1, 0, ext_codes_set) > 0 && ext_codes_set.GetCount()) { SXml::WNode w_m(_doc, SXml::nst("wa", "MarkInfo")); @@ -2911,9 +2890,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p } } } - // } @v10.3.9 } - // } @v10.3.6 } } } @@ -2950,10 +2927,9 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p SXml::WNode n_h(_doc, SXml::nst("ainp", "Header")); n_h.PutInner(SXml::nst("ainp", "Number"), EncText(temp_buf = p_bp->Rec.Code)); n_h.PutInner(SXml::nst("ainp", "ActDate"), EncText(temp_buf.Z().Cat(p_bp->Rec.Dt, DATF_ISO8601CENT))); - temp_buf.Z(); // @v9.7.5 + temp_buf.Z(); if(p_bp->BTagL.GetItemStr(PPTAG_BILL_FORMALREASON, temp_buf) <= 0) { - // @v9.6.7 (temp_buf = "Продукция, полученная до 01.01.2016").Transf(CTRANSF_OUTER_TO_INNER); - PPLoadText(PPTXT_EGAIS_PRODRCVDBEFORE2016, temp_buf); // @v9.6.7 + PPLoadText(PPTXT_EGAIS_PRODRCVDBEFORE2016, temp_buf); } n_h.PutInner(SXml::nst("ainp", "TypeChargeOn"), EncText(temp_buf)); } @@ -3043,7 +3019,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p n_h.PutInner(SXml::nst("ainp", "ActWriteOff"), EncText(temp_buf)); } } - THROW_MEM(SETIFZ(P_LecT, new LotExtCodeCore)); // @v10.2.9 LotExtCodeTbl-->LotExtCodeCore + THROW_MEM(SETIFZ(P_LecT, new LotExtCodeCore)); { SXml::WNode n_c(_doc, SXml::nst("ainp", "Content")); SString infa_ident; @@ -3216,7 +3192,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p w_p.PutInner(SXml::nst("awr", "Identity"), EncText(temp_buf.Z().Cat(r_ti.RByBill))); { double qtty = fabs(r_ti.Quantity_); - double item_amount = r_ti.NetPrice() * qtty; // @v10.3.10 + double item_amount = r_ti.NetPrice() * qtty; long qtty_fmt = MKSFMTD(0, 0, NMBF_NOTRAILZ); if(agi.UnpackedVolume > 0.0) { const double mult = agi.UnpackedVolume / 10.0; @@ -3224,8 +3200,8 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p qtty_fmt = MKSFMTD(0, 3, 0); } w_p.PutInner(SXml::nst("awr", "Quantity"), EncText(temp_buf.Z().Cat(qtty, qtty_fmt))); - if(doc_type == PPEDIOP_EGAIS_ACTWRITEOFF_V3) { // @v10.5.4 - w_p.PutInner(SXml::nst("awr", "SumSale"), EncText(temp_buf.Z().Cat(item_amount, MKSFMTD_020))); // @v10.3.10 + if(doc_type == PPEDIOP_EGAIS_ACTWRITEOFF_V3) { + w_p.PutInner(SXml::nst("awr", "SumSale"), EncText(temp_buf.Z().Cat(item_amount, MKSFMTD_020))); } } { @@ -3246,9 +3222,8 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p w_refb.PutInner(SXml::nst("pref", "F2RegId"), EncText(temp_buf)); } } - // @v10.3.3 { else if(doc_type == PPEDIOP_EGAIS_ACTWRITEOFF_V3) { - { // @v10.3.9 (марки следуют за зоной InformF1F2 + { // (марки следуют за зоной InformF1F2 SXml::WNode n_infab(_doc, SXml::nst("awr", "InformF1F2")); { SXml::WNode w_refb(_doc, SXml::nst("awr", "InformF2")); @@ -3266,7 +3241,6 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p } } } - // } @v10.3.3 } } } @@ -3302,12 +3276,12 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p qtty = (qtty * mult); // Неупакованная продукция передается в декалитрах qtty_fmt = MKSFMTD(0, 3, NMBF_NOTRAILZ); } - qtty_buf.Z().Cat(qtty, qtty_fmt); // @v10.6.9 - if(qtty_buf.NotEmptyS()) { // @v10.6.9 + qtty_buf.Z().Cat(qtty, qtty_fmt); + if(qtty_buf.NotEmptyS()) { SXml::WNode w_p(_doc, SXml::nst("tts", "Position")); w_p.PutInner(SXml::nst("tts", "Identity"), EncText(temp_buf.Z().Cat(r_ti.RByBill))); w_p.PutInner(SXml::nst("tts", "ProductCode"), EncText(temp_buf = rar_product_ident)); - w_p.PutInner(SXml::nst("tts", "Quantity"), EncText(qtty_buf)); // @v10.6.9 temp_buf.Z().Cat(qtty, qtty_fmt)-->qtty_buf + w_p.PutInner(SXml::nst("tts", "Quantity"), EncText(qtty_buf)); { SXml::WNode w_refb(_doc, SXml::nst("tts", "InformF2")); w_refb.PutInner(SXml::nst("pref", "F2RegId"), EncText(temp_buf = infb_ident)); @@ -3360,7 +3334,6 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p } } } - // @v10.9.0 { else if(doc_type == PPEDIOP_EGAIS_ACTFIXBARCODE) { const PPBillPacket * p_bp = static_cast(rPack.P_Data); n_dt.PutInner(SXml::nst("awr", "Identity"), temp_buf.Z().Cat(p_bp->Rec.ID)); @@ -3399,7 +3372,6 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p else if(doc_type == PPEDIOP_EGAIS_ACTUNFIXBARCODE) { const PPBillPacket * p_bp = static_cast(rPack.P_Data); } - // } @v10.9.0 else if(doc_type == PPEDIOP_EGAIS_REQUESTREPEALWB) { const RepealWb * p_rwb = static_cast(rPack.P_Data); /* @@ -3413,7 +3385,7 @@ int PPEgaisProcessor::Helper_Write(Packet & rPack, PPID locID, xmlTextWriter * p n_dt.PutInner(SXml::nst("qp", "RequestDate"), temp_buf.Z().CatCurDateTime(DATF_ISO8601CENT, 0)); n_dt.PutInner(SXml::nst("qp", "WBRegId"), EncText(temp_buf.Z().Cat(p_rwb->TTNCode))); } - else if(doc_type == PPEDIOP_EGAIS_REQUESTREPEALAWO) { // @v10.0.07 + else if(doc_type == PPEDIOP_EGAIS_REQUESTREPEALAWO) { const RepealWb * p_rwb = static_cast(rPack.P_Data); /* 030000194005 @@ -4164,7 +4136,7 @@ int PPEgaisProcessor::Read_OrgInfo(xmlNode * pFirstNode, PPID personKindID, int } } CATCH - LogLastError(); // @v10.8.1 + LogLastError(); ENDCATCH return ok; } @@ -4259,7 +4231,6 @@ int PPEgaisProcessor::Read_IformA(xmlNode * pFirstNode, Packet * pPack, PrcssrAl } else if(SXml::GetContentByName(p_n, "BottlingDate", temp_buf)) strtodate(temp_buf, DATF_ISO8601, &p_data->BottlingDate); - // @v10.9.5 { else if(SXml::GetContentByName(p_n, "TTNNumber", temp_buf)) { temp_buf.Transf(CTRANSF_UTF8_TO_INNER); STRNSCPY(p_data->TTNNumber, temp_buf); @@ -4291,7 +4262,6 @@ int PPEgaisProcessor::Read_IformA(xmlNode * pFirstNode, Packet * pPack, PrcssrAl STRNSCPY(p_data->ConsigneeRarIdent, p_person->RarIdent); } } - // } @v10.9.5 else if(SXml::IsName(p_n, "OriginalClient")) { // @v11.3.4 Read_OrgInfo(p_n->children, PPPRK_MANUF, EgaisPersonCore::rolefManuf, pPack ? &psn_org_client : 0, pRefC, 0); if(pRefC && pRefC->LastPersonP >= 0) { @@ -4613,7 +4583,6 @@ int PPEgaisProcessor::Read_WayBill(xmlNode * pFirstNode, PPID locID, const DateR int is_pack_inited = 0; int wb_type = 0; int unpacked = 0; // Признак того, что документ содержит неупакованную продукцию (количество в декалитрах) - // PPID op_id = 0; PPID intr_expend_bill_id = 0; // Идент документа внутренней передачи, дубликат которого мы получили по ЕГАИС (установлен в поле Note) // (Замещено на pPack->IntrBillID) PPID local_intr_bill_id = 0; // Локальный для нашей БД идентификатор документа внутренней передачи, соответствующий intr_expend_bill_id const PPID loc_id = NZOR(locID, LConfig.Location); @@ -4633,7 +4602,7 @@ int PPEgaisProcessor::Read_WayBill(xmlNode * pFirstNode, PPID locID, const DateR const PPID manuf_tag_id = Cfg.LotManufTagList.getCount() ? Cfg.LotManufTagList.get(0) : 0; TSCollection ext_code_set_list; if(pPack) - pPack->Flags |= Packet::fFaultObj; // @v9.2.8 Иницилизируем флаг. Когда убедимся, что документ OK, флаг снимим. + pPack->Flags |= Packet::fFaultObj; // Иницилизируем флаг. Когда убедимся, что документ OK, флаг снимим. for(const xmlNode * p_n = pFirstNode; ok > 0 && p_n; p_n = p_n->next) { if(SXml::GetContentByName(p_n, "Identity", temp_buf)) { bill_ident = temp_buf.Transf(CTRANSF_UTF8_TO_INNER); @@ -4771,9 +4740,9 @@ int PPEgaisProcessor::Read_WayBill(xmlNode * pFirstNode, PPID locID, const DateR } } else if(wb_type == wbtRetFromMe) { // Возврат от покупателя ко мне - if(p_bp && ACfg.Hdr.EgaisRetOpID) { + if(p_bp) { const PPID op_id = ACfg.Hdr.EgaisRetOpID; - THROW_PP(op_id, PPERR_EGAIS_RCPTOPUNDEF); + THROW_PP(op_id, PPERR_EGAIS_RETOPUNDEF); GetOpData(op_id, &op_rec); THROW(p_bp->CreateBlank_WithoutCode(op_id, 0, loc_id, 1)); p_bp->Rec.Dt = bill_date; @@ -4889,7 +4858,7 @@ int PPEgaisProcessor::Read_WayBill(xmlNode * pFirstNode, PPID locID, const DateR } else if(SXml::GetContentByName(p_pos, "Party", serial)) serial.Strip().Transf(CTRANSF_UTF8_TO_INNER); - else if(SXml::GetContentByName(p_pos, "FARegId", temp_buf)) // @v9.9.5 (egais ver 3) + else if(SXml::GetContentByName(p_pos, "FARegId", temp_buf)) alc_ext.InformA = temp_buf.Strip().Transf(CTRANSF_UTF8_TO_INNER); else if(SXml::IsName(p_pos, "InformA") || SXml::IsName(p_pos, "InformF1")) { for(const xmlNode * p_inf = p_pos->children; p_inf; p_inf = p_inf->next) { @@ -4901,7 +4870,7 @@ int PPEgaisProcessor::Read_WayBill(xmlNode * pFirstNode, PPID locID, const DateR } else if(SXml::IsName(p_pos, "InformB") || SXml::IsName(p_pos, "InformF2")) { for(const xmlNode * p_inf = p_pos->children; p_inf; p_inf = p_inf->next) { - if(SXml::GetContentByName(p_inf, "F2RegId", temp_buf)) // @v9.9.5 (egais ver 3) + if(SXml::GetContentByName(p_inf, "F2RegId", temp_buf)) alc_ext.InformB = temp_buf.Strip().Transf(CTRANSF_UTF8_TO_INNER); else if(SXml::IsName(p_inf, "MarkInfo")) { THROW_MEM(SETIFZ(p_ecs_entry, ext_code_set_list.CreateNewItem())); @@ -5072,7 +5041,7 @@ int PPEgaisProcessor::Read_WayBill(xmlNode * pFirstNode, PPID locID, const DateR p_bp->InitAmounts(); } } - pPack->Flags &= ~Packet::fFaultObj; // @v9.2.8 Пакет документа готов к акцепту + pPack->Flags &= ~Packet::fFaultObj; // Пакет документа готов к акцепту } } CATCHZOK @@ -6605,7 +6574,7 @@ int PPEgaisProcessor::DeleteDoc(PPEgaisProcessor::Reply & rR) THROW_SL(c.HttpDelete(rR.Url, 0, &wr_stream)); } rR.Status |= Reply::stDeleted; - // @v9.2.10 (лишнее сообщение - мешает) LogTextWithAddendum(PPTXT_EGAIS_DOCDELETED, rR.Url); + // (лишнее сообщение - мешает) LogTextWithAddendum(PPTXT_EGAIS_DOCDELETED, rR.Url); CATCHZOK return ok; } @@ -8496,7 +8465,7 @@ int PPEgaisProcessor::SendBills(const PPBillIterchangeFilt & rP) p_suffix = "WayBillAct_v3"; pack.DocType = PPEDIOP_EGAIS_WAYBILLACT_V3; } - else if(/*p_bp->Rec.EdiOp == PPEDIOP_EGAIS_WAYBILL_V2*/__v2) { // @v9.7.5 (p_bp->Rec.EdiOp == PPEDIOP_EGAIS_WAYBILL_V2)-->__v2 + else if(__v2) { p_suffix = "WayBillAct_v2"; pack.DocType = PPEDIOP_EGAIS_WAYBILLACT_V2; } diff --git a/Src/PPLib/v_lot.cpp b/Src/PPLib/v_lot.cpp index 8d81fbce1..e5d502cf3 100644 --- a/Src/PPLib/v_lot.cpp +++ b/Src/PPLib/v_lot.cpp @@ -2508,6 +2508,13 @@ DBQuery * PPViewLot::CreateBrowserQuery(uint * pBrwId, SString * pSubTitle) else dbe_agentname.push(static_cast(PPDbqFuncPool::IdEmpty)); } + if(Filt.Flags & LotFilt::fShowSerialN) { + PPDbqFuncPool::InitObjTagTextFunc(dbe_serial, PPTAG_LOT_SN, rcp->ID); + } + else { + dbe_serial.init(); + dbe_serial.push(static_cast(PPDbqFuncPool::IdEmpty)); + } // } @v12.1.6 if(P_TempTbl) { THROW(CheckTblPtr(tt = new TempLotTbl(P_TempTbl->GetName()))); @@ -2531,13 +2538,7 @@ DBQuery * PPViewLot::CreateBrowserQuery(uint * pBrwId, SString * pSubTitle) fld_list[c++].E = dbe_bill_code; // #12 // @v11.1.6 fld_list[c++].F = tt->BegRest; // #13 // @v11.1.6 #+1 fld_list[c++].F = tt->EndRest; // #14 // @v11.1.6 #+1 - if(Filt.Flags & LotFilt::fShowSerialN) { - PPDbqFuncPool::InitObjTagTextFunc(dbe_serial, PPTAG_LOT_SN, tt->LotID); - fld_list[c++].E = dbe_serial; // #15 // @v11.1.6 #+1 - } - else { - fld_list[c++].E = dbe_empty; // #15 @stub // @v11.1.6 #+1 - } + fld_list[c++].E = dbe_serial; // #15 // @v11.1.6 #+1 // @v12.1.6 fld_list[c++].F = tt->BillStatus; // #16 // @v11.1.6 #+1 fld_list[c++].E = dbe_billstatus; // #16 // @v11.1.6 #+1 // @v12.1.6 fld_list[c++].E = dbe_agentname; // #17 // @v12.1.6 @@ -2579,15 +2580,11 @@ DBQuery * PPViewLot::CreateBrowserQuery(uint * pBrwId, SString * pSubTitle) fld_list[c++].F = rcp->Expiry; // #10 fld_list[c++].E = dbe_closedate; // #11 fld_list[c++].E = dbe_bill_code; // #12 // @v11.1.6 - fld_list[c++].E = dbe_empty; // #13 // @v12.1.6 Для выравнивания нумерации полей между вариантами с P_TempTbl и без оной - fld_list[c++].E = dbe_empty; // #14 // @v12.1.6 Для выравнивания нумерации полей между вариантами с P_TempTbl и без оной - if(Filt.Flags & LotFilt::fShowSerialN) { - PPDbqFuncPool::InitObjTagTextFunc(dbe_serial, PPTAG_LOT_SN, rcp->ID); - fld_list[c++].E = dbe_serial; // #15 // @v11.1.6 #+1 // @v12.1.6 #+2 - } - else { - fld_list[c++].E = dbe_empty; // #15 @stub // @v11.1.6 #+1 // @v12.1.6 #+2 - } + //fld_list[c++].E = dbe_empty; // #13 // @v12.1.6 Для выравнивания нумерации полей между вариантами с P_TempTbl и без оной + //fld_list[c++].E = dbe_empty; // #14 // @v12.1.6 Для выравнивания нумерации полей между вариантами с P_TempTbl и без оной + fld_list[c++].C.init(0.0); // #13 // @v12.1.6 Для выравнивания нумерации полей между вариантами с P_TempTbl и без оной + fld_list[c++].C.init(0.0); // #14 // @v12.1.6 Для выравнивания нумерации полей между вариантами с P_TempTbl и без оной + fld_list[c++].E = dbe_serial; // #15 // @v11.1.6 #+1 // @v12.1.6 #+2 fld_list[c++].E = dbe_billstatus; // #16 @v12.1.6 fld_list[c++].E = dbe_agentname; // #17 // @v12.1.6 if(Filt.ExtViewAttr == LotFilt::exvaEgaisTags) { @@ -2905,8 +2902,7 @@ int STDCALL ViewLots(PPID goods, PPID locID, PPID suppl, PPID qcert, int modeles { LotFilt flt; flt.GoodsID = goods; - // @v10.6.8 flt.LocID = locID; - flt.LocList.Add(locID); // @v10.6.8 + flt.LocList.Add(locID); flt.SupplID = suppl; flt.QCertID = qcert; return ::ViewLots(&flt, 0, modeless); diff --git a/Src/PPTEST/UNIT/test-inet.cpp b/Src/PPTEST/UNIT/test-inet.cpp index 8e33624b5..bbd60ff2d 100644 --- a/Src/PPTEST/UNIT/test-inet.cpp +++ b/Src/PPTEST/UNIT/test-inet.cpp @@ -503,6 +503,15 @@ SLTEST_R(S_IPAddr) SLTEST_R(MACAddr) { + const char * p_txt_macadr_list = "27-EF-D3-30-C0-D2," + "83-60-A3-2B-78-91,AA-97-A6-41-9D-D7,EA-FB-0D-55-CD-3F,FA-EA-AC-BF-71-2B,49-6E-82-2C-B0-4F,2E-0D-59-F5-B1-FB," + "04-3E-68-A7-FA-8F,FE-F8-DC-C8-F2-AF,2C-85-88-AB-96-A1,2E-5C-20-4A-FD-3E,AB-CC-E5-7E-4C-A3,FD-9C-B5-AD-9C-AE," + "E3-55-6A-F1-49-ED,BE-AC-DC-9B-E1-41,0A-5F-A8-B3-B9-21,FE-9D-F4-30-9B-B2,2A-B9-86-0B-E8-DA,9D-A1-B2-41-B4-E3," + "FD-7C-5B-CD-BA-6F,01-A0-6A-D0-3C-D4,4A-ED-ED-AD-EE-1D,B7-D3-E7-FF-AE-3D,D0-8F-BC-F8-F1-D4,9D-29-AC-2F-DA-5C," + "E4-37-8E-46-CA-AE,3F-EB-F8-50-A7-3C,67-BB-2A-5E-A4-B4,45-E1-1E-8C-AE-78,2F-FF-07-EE-7D-FB,B7-EC-AE-88-BB-EE," + "F5-48-A9-EC-B9-F2,F0-4B-F2-DD-CB-BB,0B-5D-02-6B-59-DF,2F-7D-4D-49-21-46,77-38-7E-EF-1A-6F,C0-A2-64-B0-71-B6," + "FD-10-DB-DC-1E-DA,1C-2C-A4-82-B8-4E,BC-CB-E9-A8-8C-DF,2E-DC-B8-28-CF-AA,B2-F4-B9-D7-CF-DD,8F-9D-E6-FE-C7-C4," + "1C-6D-6F-5B-DB-0E,7F-2B-D5-33-63-CF,08-61-12-1F-D3-E3,DB-AA-DD-BE-F4-EF,40-9F-AD-8C-D9-AD,41-FC-7A-95-CC-8C"; MACAddrArray macadr_list; SString temp_buf; THROW(SLCHECK_NZ(GetMACAddrList(&macadr_list))); @@ -515,6 +524,15 @@ SLTEST_R(MACAddr) _macadr.Z(); SLCHECK_NZ(_macadr.IsZero()); } + { + StringSet ss(',', p_txt_macadr_list); + for(uint ssp = 0; ss.get(&ssp, temp_buf);) { + MACAddr macadr; + SLCHECK_NZ(macadr.FromStr(temp_buf)); + SLCHECK_Z(macadr.IsZero()); + macadr_list.insert(&macadr); + } + } for(uint i = 0; i < macadr_list.getCount(); i++) { MACAddr temp_macadr; const MACAddr & r_macadr = macadr_list.at(i); @@ -559,6 +577,12 @@ SLTEST_R(MACAddr) SLCHECK_NZ(temp_macadr.FromStr(temp_buf)); SLCHECK_NZ(temp_macadr == r_macadr); SLCHECK_NZ(temp_macadr.IsEq(r_macadr)); + { + uint64 ued = UED::SetRaw_MacAddr(r_macadr); + SLCHECK_NZ(ued); + SLCHECK_NZ(UED::GetRaw_MacAddr(ued, temp_macadr)); + SLCHECK_NZ(temp_macadr == r_macadr); + } } CATCH CurrentStatus = 0; diff --git a/Src/PPTEST/testdef-dedicated.ini b/Src/PPTEST/testdef-dedicated.ini index e8fa0c2f6..f7d49955a 100644 --- a/Src/PPTEST/testdef-dedicated.ini +++ b/Src/PPTEST/testdef-dedicated.ini @@ -7,6 +7,9 @@ logfile=\papyrus\src\pptest\testlog-dedicated.txt input=\papyrus\src\pptest\data output=\papyrus\src\pptest\out +[MACAddr] +descr=Тестирование класса MACAddr + [GUID] descr=Функции классов S_GUID_Base и S_GUID @@ -32,9 +35,6 @@ descr=Разработка страничного менеджера запис [S_IPAddr] descr=Тестирование класса SIpAddr -[MACAddr] -descr=Тестирование класса MACAddr - [sql_parser] descr=Тестирование модуля sql-parser diff --git a/Src/Rsrc/Dlg/f_lotoex.dlg b/Src/Rsrc/Dlg/f_lotoex.dlg new file mode 100644 index 0000000000000000000000000000000000000000..93d7296d4bc4a01ec8819e904ab69313cc9e5024 GIT binary patch literal 3105 zcmeHJOK;Oa5FW=(6Oy3V1O$QuzVNuV&;ut(ofJj28kCyHtqN&?sA+;kDsk$8GY5L% zY)}nu6FdACet}~U5492(Dhih{yLOw+gQQrw!AiDg=dm;6Z+3Ry*RP)V&V>LV38(Rm zLkhq#NG96t80>M=a1tUA@FV~n%m^YMy>Wl7wp7Sh3dM31ne5zE_1+Qu6626MyH=}J zD_ue|Ni3=1t%VCa|;07TxU z_qfXglL*lysw)vp>VWplJD-sW#JvQv^Gxu>erN&{h1KkQ$4iGI{y2Qt1opX05W*A) zABRLVrZBz4GtD+M(~&I4dSz>Gbkq1Y0fV^I&hKkdRr2?XKYd ztvk)SzSYvkpBo8p9D%VvC-k6HEH6*buslj1S9AI0Qq|oFPZ;sgQaMAm$DE=nS#>F! zOQr9rcQWa_Ni|2xAx2lB#o|@RJ|{vD;(f&;Y^>|+wy|aIY)Pio(Cta+V=*E5B1crp zPpp(6tz#OiL@FhS-K5Pr8+%ab27S82g=XrSH|>0eA`nqCmB(u}rBo?)EC?ks&@85N znWVzVgQNv{paAT17jb`xeXzt|>ZT^yx>h&dYM%@v480s?Nq^)KP~k_RGWMVdB0Z>F z=}XTaDguMbtz1S+5ie>ck}XNEEqu?mgt-rgA9YIf#-=${a1J z0CvT5FSOPd!$#7!BKb!-g}7pZPJS|ds?G(>lpR#$jOokUjiE5%ePU#>nps>yIY tA*I|T%^w>-_J8dChw35q@BIt~?r`P*#J~Cn0(d-gASVFMduQ@l_zf&!u;%~( literal 0 HcmV?d00001 diff --git a/Src/Rsrc/Str/ppstr2.symb b/Src/Rsrc/Str/ppstr2.symb index 78023d061..af4b52c96 100644 --- a/Src/Rsrc/Str/ppstr2.symb +++ b/Src/Rsrc/Str/ppstr2.symb @@ -2,7 +2,7 @@ [common] LastAutoGrpCode=1001 LastSignatureCode=2147494911 -LastAutoCodeList=1,12242;102,10177;103,10072;110,10000;111,12117;112,10000;119,10000;114,10006;7,10000;4,10000;6,10000;342,10000;118,10152;120,10005;1001,10000;121,10000;122,10000;123,10327;124,10349;125,10064 +LastAutoCodeList=1,12243;102,10177;103,10072;110,10000;111,12117;112,10000;119,10000;114,10006;7,10000;4,10000;6,10000;342,10000;118,10152;120,10005;1001,10000;121,10000;122,10000;123,10327;124,10349;125,10064 [SignatureList] testsign1=2147483649 @@ -13025,6 +13025,7 @@ PPERR_ALCRCFG_INVPROOFDIM=77269 PPERR_ALCRCFG_EQCLSDIM=77270 PPERR_EGAIS_SRVURLUNDEF=77271 PPERR_EGAIS_RCPTOPUNDEF=77272 +PPERR_EGAIS_RETOPUNDEF=77779 PPERR_EGAIS_FSRARIDUNDEF=77273 PPERR_EGAIS_BILLHASNEDIIDENTTAG=77274 PPERR_EGAIS_QUERYFORMREGIDEMPTY=77275 diff --git a/Src/Rsrc/Str/ppstr2.txt b/Src/Rsrc/Str/ppstr2.txt index 084bf4584..7a1a7de6a 100644 --- a/Src/Rsrc/Str/ppstr2.txt +++ b/Src/Rsrc/Str/ppstr2.txt @@ -1867,6 +1867,7 @@ PPERR_ALCRCFG_INVPROOFDIM "Недопустимый классифик PPERR_ALCRCFG_EQCLSDIM "Пересечение товарных классификаторов алкогольной продукции" PPERR_EGAIS_SRVURLUNDEF "Не определен адрес сервера @{brand_egais} в конфигурации глобального обмена" PPERR_EGAIS_RCPTOPUNDEF "Не определена драфт-операция прихода @{brand_egais} в конфигурации глобального обмена" +PPERR_EGAIS_RETOPUNDEF "Не определена операция возврата от покупателя @{brand_egais} в конфигурации глобального обмена" PPERR_EGAIS_FSRARIDUNDEF "Не определен идентификатор ФСРАР для главной организации" PPERR_EGAIS_BILLHASNEDIIDENTTAG "Подтверждаемый документ '%s' не имеет тега EDI-кода" PPERR_EGAIS_QUERYFORMREGIDEMPTY "Запрос справки А(Б) не содержит идентификатора запрашиваемого документа" @@ -5269,6 +5270,7 @@ PPSSYM_FORMAT "int64;int;hex;real;sstr;zstr;date;time;datetime;person;goods;unit 65 "Ошибка при создании TCP-соединения" 66 "Ошибка WinSock: %s" 75 "Ошибка обращения матрицы" +93 "Недопустимая строка представления MAC Address (%s)" // @v12.1.7 94 "Ошибка создания каталога по образцу (%s)" // @v11.8.12 SLERR_MKDIRBYTEMPLATEFAULT 95 "Файл '%s' слишком большой" 96 "Недопустимый параметр функции (%s)" diff --git a/Src/Rsrc/Version/genver-open.dat b/Src/Rsrc/Version/genver-open.dat index 1d192ba3d..319b0ce0c 100644 --- a/Src/Rsrc/Version/genver-open.dat +++ b/Src/Rsrc/Version/genver-open.dat @@ -9,13 +9,13 @@ Product = OpenPapyrus Team = Andrey Fokin, Anton Sobolev Secret = B5IwV3V03KT16vzt StartDevYear = 1996 -LastDevYear = 2021 +LastDevYear = 2024 Demo = 0 OpenSource = 1 MajorVer =12 MinorVer =1 Revision =6 -AssemblyVer=40657 +AssemblyVer=40663 MinMajorVer =9 MinMinorVer =8 MinRevision =11 diff --git a/Src/SLib/macaddr.cpp b/Src/SLib/macaddr.cpp index 180d18fb0..c6dff8fe4 100644 --- a/Src/SLib/macaddr.cpp +++ b/Src/SLib/macaddr.cpp @@ -60,7 +60,6 @@ int ProcPool_IpHlpApi::PtRelease() return ok; } - MACAddr::MACAddr() : TSBinary<6>() { } @@ -123,13 +122,12 @@ bool MACAddr::FromStr(const char * pStr) // @v12.0.1 p++; } if(t == 12) { - size_t i; uint8 * p_data = D; - for(i = 0; i < 6; i++) + for(size_t i = 0; i < 6; i++) p_data[i] = hextobyte(temp_buf + (i << 1)); } else - ok = SLS.SetError(SLERR_INVGUIDSTR, pStr); + ok = SLS.SetError(SLERR_INVMACADDRSTR, pStr); } else ok = false;