From d23b1231517b1c8b52f2f57412796dfa8c16c818 Mon Sep 17 00:00:00 2001 From: Ivan Chaplygin Date: Tue, 29 Aug 2023 18:05:34 +0300 Subject: [PATCH] =?UTF-8?q?ref=20#89649=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=BA?= =?UTF-8?q?=D1=83=D0=BF=D0=BE=D0=BD=D0=BE=D0=B2=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=20?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=D1=8B=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B5=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/pot/retailcrm-es_ES.pot | 8 +++++++- resources/pot/retailcrm-ru_RU.pot | 6 ++++++ .../class-wc-retailcrm-abstracts-settings.php | 13 ++++++++++++ src/include/class-wc-retailcrm-history.php | 19 ++++++++---------- src/languages/retailcrm-es_ES.mo | Bin 12190 -> 12731 bytes src/languages/retailcrm-ru_RU.mo | Bin 14984 -> 15654 bytes tests/test-wc-retailcrm-orders.php | 2 +- 7 files changed, 35 insertions(+), 13 deletions(-) diff --git a/resources/pot/retailcrm-es_ES.pot b/resources/pot/retailcrm-es_ES.pot index 8b4dedf..19af6da 100644 --- a/resources/pot/retailcrm-es_ES.pot +++ b/resources/pot/retailcrm-es_ES.pot @@ -125,7 +125,13 @@ msgid "Statuses" msgstr "Los estados" msgid "Coupon" -msgstr 'Cupón' +msgstr "Cupón" + +msgid "When working with coupons through CRM, it is impossible to transfer manual discounts" +msgstr "Al trabajar con cupones a través de CRM, es imposible transferir descuentos manuales" + +msgid "The custom field must be in the form of a string or text. An example of filling in a field in CRM: `code_coupon` or `code_coupon1; code_coupon2`" +msgstr "El campo personalizado debe tener el formato de una cadena o texto. Un ejemplo de cómo completar un campo en CRM: `code_coupon` o `code_coupon1; código_cupón2`" msgid "Payment types" msgstr "Métodos de pago" diff --git a/resources/pot/retailcrm-ru_RU.pot b/resources/pot/retailcrm-ru_RU.pot index 6e1605a..178491e 100644 --- a/resources/pot/retailcrm-ru_RU.pot +++ b/resources/pot/retailcrm-ru_RU.pot @@ -136,6 +136,12 @@ msgstr "Статусы" msgid "Coupon" msgstr "Купон" +msgid "When working with coupons through CRM, it is impossible to transfer manual discounts" +msgstr "При работе с купонами через CRM, невозможно передавать ручные скидки." + +msgid "The custom field must be in the form of a string or text. An example of filling in a field in CRM: `code_coupon` or `code_coupon1; code_coupon2`" +msgstr "Пользовательское поле должно быть формата string или text. Пример заполнения поля в CRM при использовании нескольких купонов: code_coupon_1; code_coupon_2" + msgid "Payment types" msgstr "Способы оплаты" diff --git a/src/include/abstracts/class-wc-retailcrm-abstracts-settings.php b/src/include/abstracts/class-wc-retailcrm-abstracts-settings.php index 3e21d90..d6f14a9 100644 --- a/src/include/abstracts/class-wc-retailcrm-abstracts-settings.php +++ b/src/include/abstracts/class-wc-retailcrm-abstracts-settings.php @@ -361,6 +361,18 @@ abstract class WC_Retailcrm_Abstracts_Settings extends WC_Integration 'id' => 'coupon_options' ]; + $this->form_fields['coupon_notification'] = [ + 'id' => 'coupon_options', + 'css' => 'max-width:400px;resize: none;height:150px;', + 'type' => 'textarea', + 'title' => __('Attention!', 'retailcrm'), + 'value' => '', + 'placeholder' => __('When working with coupons through CRM, it is impossible to transfer manual discounts', 'retailcrm') . + PHP_EOL . PHP_EOL . + __('The custom field must be in the form of a string or text. An example of filling in a field in CRM: `code_coupon` or `code_coupon1; code_coupon2`', 'retailcrm'), + 'custom_attributes' => ['readonly' => 'readonly'], + ]; + $this->form_fields['woo_coupon_apply_field'] = [ 'title' => __('Coupon', 'retailcrm'), 'css' => 'min-width:350px;', @@ -368,6 +380,7 @@ abstract class WC_Retailcrm_Abstracts_Settings extends WC_Integration 'type' => 'select', 'options' => $coupon_option_list, 'desc_tip' => true, + 'description' => __('The custom field must be in the form of a string or text. An example of filling in a field in CRM: `code_coupon` or `code_coupon1; code_coupon2`', 'retailcrm') ]; } diff --git a/src/include/class-wc-retailcrm-history.php b/src/include/class-wc-retailcrm-history.php index 65848ad..30cb14b 100644 --- a/src/include/class-wc-retailcrm-history.php +++ b/src/include/class-wc-retailcrm-history.php @@ -300,7 +300,6 @@ if (!class_exists('WC_Retailcrm_History')) : ); } } - // @codeCoverageIgnoreStart } catch (Exception $exception) { WC_Retailcrm_Logger::add( sprintf( @@ -312,7 +311,6 @@ if (!class_exists('WC_Retailcrm_History')) : continue; } - // @codeCoverageIgnoreEnd } } else { break; @@ -509,8 +507,8 @@ if (!class_exists('WC_Retailcrm_History')) : } } - $this->addProductInWcOrder($wcOrder, $wcProduct, $crmProduct);//TODO изменить логику, передавая просто данные, уже после в зависимости от наличия купонов выполнять определенные действия - // вообще без разницы как из создавать, скидки все равно сбрасываются + $this->addProductInWcOrder($wcOrder, $wcProduct, $crmProduct); + foreach ($wcOrder->get_items() as $orderItemId => $orderItem) { $arItemsNew[$orderItemId] = $orderItemId; } @@ -550,7 +548,7 @@ if (!class_exists('WC_Retailcrm_History')) : wc_delete_order_item($itemExternalId[1]); } - $this->updateProductInWcOrder($wcOrderItem, $crmProduct);//TODO изменить логику, передавая просто данные, уже после в зависимости от наличия купонов выполнять определенные действия + $this->updateProductInWcOrder($wcOrderItem, $crmProduct); } } } @@ -842,7 +840,7 @@ if (!class_exists('WC_Retailcrm_History')) : $arItemsOld[$orderItemId] = $orderItemId; } - $this->addProductInWcOrder($wcOrder, $wcProduct, $crmProduct); //TODO изменить логику, передавая просто данные, уже после в зависимости от наличия купонов выполнять определенные действия + $this->addProductInWcOrder($wcOrder, $wcProduct, $crmProduct); foreach ($wcOrder->get_items() as $orderItemId => $orderItem) { $arItemsNew[$orderItemId] = $orderItemId; @@ -1043,10 +1041,10 @@ if (!class_exists('WC_Retailcrm_History')) : $rewriteItems = false; $wcOrderCoupons = $wcOrder->get_coupon_codes(); - if (!empty($orderHistory['customFields']) + if (isset($orderHistory['customFields']) && array_key_exists($couponField, $orderHistory['customFields']) && empty($orderHistory['customFields'][$couponField]) - && !empty($wcOrderCoupons) + && $wcOrderCoupons ) { foreach ($wcOrderCoupons as $code) { $wcOrder->remove_coupon($code); @@ -1071,11 +1069,10 @@ if (!class_exists('WC_Retailcrm_History')) : } } - if (!$rewriteItems && $this->recalculateCoupons) { + if (($rewriteItems || $this->recalculateCoupons) + && ($wcOrderCoupons || !empty($orderHistory['customFields'][$couponField]))) { $wcOrder->recalculate_coupons(); - } - if ($rewriteItems || $this->recalculateCoupons) { $orderItem = new WC_Retailcrm_Order_Item($this->retailcrmSettings); $orderItems = []; diff --git a/src/languages/retailcrm-es_ES.mo b/src/languages/retailcrm-es_ES.mo index 1d0853ca465896b0306029a80ce08a13f06bc2d9..88c6e6f6531666f8e84409c54285e2db235c68f3 100644 GIT binary patch delta 3569 zcmZYAeQXp(7{~ExOKVH1MJ%+az(TRsmQss|fP%JwT5Zu+)^ zF6w$4huLVOzU(p7+`f%-@JrMH%geIQU5FZZ3#xq;&c!vTDSNhz{L_bdo(6vAAP3!e z1l7^U$UDtA7Jy!4q3&u;fU(-$}&^H|B6(koGm z^afOBdr{A&c2QYD6xqB3&IZ~p_8i30MiZ8-^*(hE>iRE1h2 z3s3_NqXy!l?%$03sY#h(DqfB;528Byi!`XCV)Cg6CZjs4M$P4X)b?vdl4o4h_I$u^ ze-yQwUO{cM-+Yx8O<^IbpE~T({$EH%U%ngpD3eB|_6X`rjv_zvt>0c`Wd}AMmBMML z=jWjY)`Ge}hWhgDcp*NHn#wm&{T#-bDJtJlQAedbtwl8hbv_R-#%9!m2~> z^;pQl(44m8AP!*z{*1~@RVDAj2D}mbPy;-Gshg=Br^35TE%_vp|)c?+Bk^n;21uE-=hXP%&64CF4XlssP>mpQ}_-R;W5-U{|q&d-%-1( zB2}ARBr{QSR)<>UU8n(gzK`HO&R;^3V%k{@4m73MvIO{D5cUuc(yflMW4_1hvR2Q1{jQ&O@bm5%SUICM?8F zs1CNEGWj%W3ie|TYQf(}=-x%z|0)j>F+z(&52=I+WkRKsxSP0+P}(;UY?@3N=E!uK zJYq8uAyyHZ=WgOsLZz8V5^>^2B2)bS^{3D*BvuppN)~ixzBE^t5!$aRi?jTDTt`jw zNcN3IXlhheW-&LRrq?0v^4o-Vmq(oLUu~Hkpwz20X36XZzna;4O6_{$PQOv9uORLr z5`;_i5;mbSNGu?FbV7*|D+o>LR`oxZ3R7eH3C-sX#OcybqIqSGk_3CT`UUMO%0c!J;>}5%&|t1Z&)ch-KXzRJIXw2yHc$sx1E=AE0&%aR;H* ztkOhi%U!G!N*B>Vv=FVtSmN^Zlf~cUtQDn(PbVB_-~@RQb$w0&kISHPPd5QFwlMC|;mLvy8)3NmT zQ}-69mPM=}AK+R8c0A$60ug6JAmmyho6q;`81JwnnFIuQZ^*Wiu>cQ*Y@i>K;Lf%> z$U?tO7BY7PN7GT4u_`NGAkGth4}8x5a#2Y#{+kP45OR9mu3%=EWMga1ZFwDy5q(xq zpr2O;UEZm=vlC>R=Cz|E35_n35gIe;$Y#S&g%js`BAB#eo}2LVVv~=$gE{{IzpTWQ delta 3032 zcmY+^drVhl9LMo5SN(~|CGY}hbb$abkeViBCISWu8ibcj1f>8mLm&$?4@h}iQEt%a zj{;Y=Vr8pewSZcyR%UaSE!wnop|W|KbHg>0R=q#J-@)0l-}k(p^Zd>^&vU-d^PK(- zFRgQaiVp5D%3dOYs0=py7~dGpf%00I*(iJ+$KcyI7C%IOc7#I&4qzmn!b$ii^0P=T zz7Z2}9xlLmY{H3Vj&)GEo`yrH4vyhcJb`*(a=2M6&czTcM75Wo9#o0^teHbJwz=mA zFpl%LZ~}gX9{d$Gpz|0>{}wUMKjK8x4Vf5)rKkZ_AwR3?z?~*U~G)PJsD?nJ{v=^26?pA#gKpM*2+N-=tOn&D)I~)Kt1RT>V_+r zkKrr`z4=Of7AsMU_Y!K|MvXV$bK{UEOGjSba#3qwCF;70@#J3}ZFC!Upa!xV)3F0@ z#?MiyKa0Bl3QoastR-vx1bEpJTX+v$7{irv7 z5tZUYsF5B=rS2rsw+*`gUqA^mMowWLI>S`d@%t=& zrSwx&2EInM|A>0?GpOzN7b=DSqNc<{FIp1`sDb9A22hN;z5@BASQRz~m~BG!Gst|= zk7F08=!U;h9fgq>rrF|A+bsimNh?Ne$6B|2D`s=viP}~_xc-KkvU8}8BAKW4I2rZk z&Bz$+c?{M5e}{_Rq!*RSqo@I$N2P2Sbz?MtYCtKd>k2sNjW=QvHlU{N1ylz;sDXTe zdj2`o+WE&lk4`j8b!bSUq8pc?Qdy2#G|ylG{*E&+o!+-#8QzNDpfVE3LYaf%xD0cU zKCB&!@m=In8+DUE!>Opu%tJ?Snny)%Sc;naT2y-zDg%3vWnx{Zj(Tw?Uc^Fd;5F6p zC#b24A|0B_G@Oo^n2yz`ZPV8ILXb4wf zB7049--OJPwIJ)#x=|VJ$GLbE^#Z{u{`M)z^04$2^8WypLK@V87d!DVYNX|<{toI< z|8GOJx1r{=8$IYn?dy+F0~tW=o=Z3y^>&&v4{C8|p$4$raVwjVm$IiZ2ffI&*=4sq zeyV>Cv$2%+O3cMR)WDP$l4vm)h?%IVoR9i4E@7=lh06)lc~s16S!gSNA% zsfl3%wVDf2530dCa2M*n&rnl!3ctr;48?C*v06hXa1@?Kb$k)EriPL09E)aU=!QwC zlqMp5+bmS-%26HEpi<|c2iq|K?;*4pb*%=bvWwV6XwG$yN+m%uua+mME!O^D9;NB`<~tG=!4D79OON8MH} z60PJN#1`TqLOW!nJWNIFqQY&c#S(%~f$bq?5g9}^q3J9jMoKZ2W~UkTNb#M;+;eykxh&xv_7=@RW=hNSuCf%jc6nuBU%ZSJU_nUc8>ZcWD>h|X9Shy zL>4iQP|=E4$tU=B_&zo|PatXt7O$-)o+QEu)}n17atM{Zg!a3(m`akLtH-CPtt8ec zRUWr_A?oXu;+~h`y~Gk?DWUB%$9p8~bb$AR@cka|$qC;DdV}IaL%flR-C^F6X{&?0 Jff>C4{{ak!4SoOs diff --git a/src/languages/retailcrm-ru_RU.mo b/src/languages/retailcrm-ru_RU.mo index 60c038b836ae5be22e10d23bee012b32b4262d1c..6406c892e53d5b7c8b37d7b1d24c686bb3f1e0bf 100644 GIT binary patch delta 3691 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 delta 3066 zcmYk-4NR3)9LMp$S5e{WRo;}qcT*5a313JJR4B+7%s222-%3Rw3KgwTxu7JVu4c}; zOl+ESZf&JrH;de=sm>;OK7(wG>7>{ZnjnOy> z6R-e>;2NBOO_*dBv~%tUH*p|e{E2!{LQk`qI23zhCB|bNM&N$e-i+MHK14p&$|(k~ zy83NQr2Y{5VqCy164P)9&$sau^ngXE5tN}Ws7H<9JyeHIA|E@;X)s8urKl>x4QN=Or_qAD=>vL1*cMIqL7D|FcxDtF&G<;x?mg*#}&xO8aR!@ zcTpp3MLp;NW?*7mxT6KA>z1Gfu+6pa#j(^6$C3Z86t2*~v+V}*v3r~}(g-G84~j+Z zZ8@kL6`_7#g43`Xm4Wm47G6dz=9PWSw2o^~_iaGFvV%wx>{K7}uf=fQ{qQT)gT8h3 z+o+EGfuqq!ULVH{)D$d0{k{YT;AVUR4`6@1h{^aXY8M1J6=57u-M} zK03w_(&!MLDFVtf7^J8T;m`p)8 zC_<&C0$Xr9ssq{lTB)6m%ESUx`)X7M)}gjz9V(LzsHxe5S{p}E9lng}z%|tGZy~Rm zpxvcV)rl0N9#l#iv^_SVI#z?qz&_NrJBB0hB65k{ckKc4KZANYj=?SXBA!59A4fXm zFnkinW3=}FS_&IzsK%jq2bG$bLE#IgqEb2+vvDJ8SDZ#Zc9WAjq~1-2RLsIM)QFGc zL_CA)zYrc*-oQEVyWvfR%c7&6@Z^ab+ z3Fn}n3VpGqI3MfqXS{-q*up4Z!(1Mw`dF57Cj`Yd)EB{(VpVROxUPpCk2%BAV zH3jv6IruhiaP_X-{TlTY)ZBJvMQPP%qwY5c)sYI+RPMn@Jc+URsr&xxAcX)8zdL;y z;S5Bhdb${ui5<=p_%!uvxCZ-<3BO8fkYrd0HS!;D7eItQ^Gf_jlL@Xl)5Gx60 z!aJsOR?62Cv%MBhnkxpNSD{TJo+mU)ZI3uYBWDJ@MFci^?@52G*J&kl5TQxau`rCc z5tWBhVvB1N%!{{Y{@3Jf?&Yo_#~Fi|`Yfp@)8-FXRiHjtu1|-1UWaCFOSw-58u46KWqjJ0jFNvDo)7sbeE+ diff --git a/tests/test-wc-retailcrm-orders.php b/tests/test-wc-retailcrm-orders.php index 812a279..2fe429c 100644 --- a/tests/test-wc-retailcrm-orders.php +++ b/tests/test-wc-retailcrm-orders.php @@ -120,7 +120,7 @@ class WC_Retailcrm_Orders_Test extends WC_Retailcrm_Test_Case_Helper $this->assertEquals($orderData['customFields']['crm_order'], 'test_custom_fields'); $this->assertEquals($orderData['customerComment'], 'crm_customer_comment_test'); $this->assertEquals($orderData['delivery']['address']['text'], 'crm_address_text_test'); - $this->assertEquals($orderData['customFields']['testField'], 'test1;test2;'); + $this->assertEquals($orderData['customFields']['testField'], 'test1; test2;'); } else { $this->assertEquals(null, $order); }