From 59054f114e4809cb6edcba062cd5c07ba9ff73ce Mon Sep 17 00:00:00 2001 From: Uryvskiy Dima Date: Wed, 7 Jun 2023 10:13:27 +0300 Subject: [PATCH] ref #89652 Transferring meta fields to standard order\customer fields --- CHANGELOG.md | 5 +- VERSION | 2 +- doc/1.Setup/Custom fields settings.md | 17 +++++++ doc/1.Setup/{Settings .md => Settings.md} | 0 resources/pot/retailcrm-es_ES.pot | 36 ++++++++++++++ resources/pot/retailcrm-ru_RU.pot | 36 ++++++++++++++ src/assets/default/default_meta_fields.txt | 2 - src/assets/js/retailcrm-meta-fields.js | 10 ++++ .../class-wc-retailcrm-abstracts-settings.php | 12 +---- src/include/class-wc-retailcrm-base.php | 47 +++++++++++++++++- src/include/class-wc-retailcrm-customers.php | 21 +++++++- src/include/class-wc-retailcrm-orders.php | 15 +++++- src/languages/retailcrm-es_ES.mo | Bin 11077 -> 11642 bytes src/languages/retailcrm-ru_RU.mo | Bin 13734 -> 14377 bytes src/readme.txt | 5 +- src/retailcrm.php | 2 +- src/uninstall.php | 2 +- .../class-wc-retailcrm-test-case-helper.php | 18 ++++++- tests/test-wc-retailcrm-customers.php | 15 +++++- tests/test-wc-retailcrm-orders.php | 17 +++++-- 20 files changed, 234 insertions(+), 28 deletions(-) rename doc/1.Setup/{Settings .md => Settings.md} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f2673d..3d3090b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ -## 2022-05-26 4.6.4 +## 2022-06-08 4.6.5 +* Transferring WC meta fields to standard CRM order and customer fields + +## 2022-05-30 4.6.4 * Optimizing unloading of stock ## 2022-05-29 4.6.3 diff --git a/VERSION b/VERSION index 101d404..d9167bb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.6.4 \ No newline at end of file +4.6.5 \ No newline at end of file diff --git a/doc/1.Setup/Custom fields settings.md b/doc/1.Setup/Custom fields settings.md index 7b22957..74691da 100644 --- a/doc/1.Setup/Custom fields settings.md +++ b/doc/1.Setup/Custom fields settings.md @@ -18,3 +18,20 @@ На стороне CRM доступные пользовательские поля можно увидеть перейдя в **Настройки - Системные - Пользовательские поля.** + +В версии 4.6.5 добавлен функционал для передачи мета полей CMS в некоторые стандартные поля CRM. + +Список стандартных полей CRM доступных для передачи данных: +* Имя +* Фамилия +* Телефон +* E-mail +* Адрес +* Город +* Индекс +* Регион +* Теги (доступно только для клиентов) +* Комментарий клиента (доступно только для заказов) +* Комментарий менеджера (доступно только для заказов) + +**Важно! Передача мета полей WC в стандартные поля CRM реализована только из CMS в CRM, обратная синхронизация не предусмотрена.** \ No newline at end of file diff --git a/doc/1.Setup/Settings .md b/doc/1.Setup/Settings.md similarity index 100% rename from doc/1.Setup/Settings .md rename to doc/1.Setup/Settings.md diff --git a/resources/pot/retailcrm-es_ES.pot b/resources/pot/retailcrm-es_ES.pot index aac0ee1..e50bb7c 100644 --- a/resources/pot/retailcrm-es_ES.pot +++ b/resources/pot/retailcrm-es_ES.pot @@ -378,3 +378,39 @@ msgstr "Importar los carritos abandonados" msgid "Enable if you want to in CRM abandoned shopping carts were unloaded" msgstr "Habilitar Si desea que en CRM se descargaron las cestas abandonadas de los compradores" + +msgid "firstName" +msgstr "Nombre" + +msgid "lastName" +msgstr "Apellido" + +msgid "phone" +msgstr "Número de teléfono" + +msgid "tags" +msgstr "Etiquetas" + +msgid "customerComment" +msgstr "Comentario del cliente" + +msgid "managerComment" +msgstr "Comentario del asesor" + +msgid "email" +msgstr "E-mail" + +msgid "addressText" +msgstr "Dirección" + +msgid "addressCity" +msgstr "Ciudad" + +msgid "addressIndex" +msgstr "Código postal" + +msgid "addressRegion" +msgstr "Región" + +msgid "Standard CRM fields" +msgstr "Los campos del CRM por defecto" diff --git a/resources/pot/retailcrm-ru_RU.pot b/resources/pot/retailcrm-ru_RU.pot index 1176f76..9923dcc 100644 --- a/resources/pot/retailcrm-ru_RU.pot +++ b/resources/pot/retailcrm-ru_RU.pot @@ -387,3 +387,39 @@ msgstr "Выгружать брошенные корзины" msgid "Enable if you want to in CRM abandoned shopping carts were unloaded" msgstr "Включите, если хотите, чтобы в CRM выгружались брошенные корзины покупателей" + +msgid "firstName" +msgstr "Имя" + +msgid "lastName" +msgstr "Фамилия" + +msgid "phone" +msgstr "Телефон" + +msgid "tags" +msgstr "Теги" + +msgid "customerComment" +msgstr "Комментарий клиента" + +msgid "managerComment" +msgstr "Комментарий менеджера" + +msgid "email" +msgstr "E-mail" + +msgid "addressText" +msgstr "Адрес" + +msgid "addressCity" +msgstr "Город" + +msgid "addressIndex" +msgstr "Индекс" + +msgid "addressRegion" +msgstr "Регион" + +msgid "Standard CRM fields" +msgstr "Стандартные поля CRM" diff --git a/src/assets/default/default_meta_fields.txt b/src/assets/default/default_meta_fields.txt index f237e8f..d69a323 100644 --- a/src/assets/default/default_meta_fields.txt +++ b/src/assets/default/default_meta_fields.txt @@ -100,7 +100,6 @@ _used_by attribute_logo attribute_pa_color attribute_pa_size -is_vat_exempt total_sales coupon_amount date_expires @@ -147,7 +146,6 @@ first_name last_name last_update locale -nickname paying_customer rich_editing session_tokens diff --git a/src/assets/js/retailcrm-meta-fields.js b/src/assets/js/retailcrm-meta-fields.js index c8e13d2..dff9139 100644 --- a/src/assets/js/retailcrm-meta-fields.js +++ b/src/assets/js/retailcrm-meta-fields.js @@ -295,6 +295,16 @@ jQuery(function () { .attr('value', key) .text(value)); }); + + jQuery(`#customFields-${entity}-${index}`) + .append(jQuery(``)); + + jQuery.each(data.crmDefault, function(key, value) { + jQuery(`#default-${entity}-${index}-crm-fields`) + .append(jQuery('') + .attr('value', key) + .text(value)); + }); } RetailcrmMetaFields.prototype.addPairSelects = function (element, entity, data, index) { diff --git a/src/include/abstracts/class-wc-retailcrm-abstracts-settings.php b/src/include/abstracts/class-wc-retailcrm-abstracts-settings.php index d0baafb..678a590 100644 --- a/src/include/abstracts/class-wc-retailcrm-abstracts-settings.php +++ b/src/include/abstracts/class-wc-retailcrm-abstracts-settings.php @@ -203,11 +203,7 @@ abstract class WC_Retailcrm_Abstracts_Settings extends WC_Integration continue; } - if ( - isset($crmDelivery['sites']) - && $crmDelivery['sites'] !== [] - && in_array($crmSite, $crmDelivery['sites']) === false - ) { + if (!empty($crmDelivery['sites']) && in_array($crmSite, $crmDelivery['sites']) === false) { continue; } @@ -252,11 +248,7 @@ abstract class WC_Retailcrm_Abstracts_Settings extends WC_Integration continue; } - if ( - isset($crmPayment['sites']) - && $crmPayment['sites'] !== [] - && in_array($crmSite, $crmPayment['sites']) === false - ) { + if (!empty($crmPayment['sites']) && in_array($crmSite, $crmPayment['sites']) === false) { continue; } diff --git a/src/include/class-wc-retailcrm-base.php b/src/include/class-wc-retailcrm-base.php index 9078b90..4cd4be9 100644 --- a/src/include/class-wc-retailcrm-base.php +++ b/src/include/class-wc-retailcrm-base.php @@ -706,6 +706,8 @@ if (!class_exists('WC_Retailcrm_Base')) { $customerMetaData = $this->getMetaData('user'); $orderCustomFields = $this->getCustomFields('order'); $customerCustomFields = $this->getCustomFields('customer'); + $defaultCrmOrderFields = $this->getDefaultCrmOrderFields(); + $defaultCrmCustomerFields = $this->getDefaultCrmCustomerFields(); $translate = [ 'tr_lb_order' => __('Custom fields for order', 'retailcrm'), @@ -715,8 +717,18 @@ if (!class_exists('WC_Retailcrm_Base')) { echo json_encode( [ - 'order' => ['custom' => $orderCustomFields, 'meta' => $orderMetaData], - 'customer' => ['custom' => $customerCustomFields, 'meta' => $customerMetaData], + 'order' => [ + 'meta' => $orderMetaData, + 'custom' => $orderCustomFields, + 'crmDefault' => $defaultCrmOrderFields, + 'tr_default_crm_fields' => __('Standard CRM fields', 'retailcrm'), + ], + 'customer' => [ + 'meta' => $customerMetaData, + 'custom' => $customerCustomFields, + 'crmDefault' => $defaultCrmCustomerFields, + 'tr_default_crm_fields' => __('Standard CRM fields', 'retailcrm'), + ], 'translate' => $translate, ] ); @@ -830,5 +842,36 @@ if (!class_exists('WC_Retailcrm_Base')) { } } } + + private function getDefaultCrmOrderFields() + { + return [ + 'default-crm-field#firstName' => __('firstName', 'retailcrm'), + 'default-crm-field#lastName' => __('lastName', 'retailcrm'), + 'default-crm-field#phone' => __('phone', 'retailcrm'), + 'default-crm-field#email' => __('email', 'retailcrm'), + 'default-crm-field#delivery#address#index' => __('addressIndex', 'retailcrm'), + 'default-crm-field#delivery#address#region' => __('addressRegion', 'retailcrm'), + 'default-crm-field#delivery#address#city' => __('addressCity', 'retailcrm'), + 'default-crm-field#delivery#address#text' => __('addressText', 'retailcrm'), + 'default-crm-field#customerComment' => __('customerComment', 'retailcrm'), + 'default-crm-field#managerComment' => __('managerComment', 'retailcrm'), + ]; + } + + private function getDefaultCrmCustomerFields() + { + return [ + 'default-crm-field#firstName' => __('firstName', 'retailcrm'), + 'default-crm-field#lastName' => __('lastName', 'retailcrm'), + 'default-crm-field#phones' => __('phone', 'retailcrm'), + 'default-crm-field#email' => __('email', 'retailcrm'), + 'default-crm-field#address#index' => __('addressIndex', 'retailcrm'), + 'default-crm-field#address#region' => __('addressRegion', 'retailcrm'), + 'default-crm-field#address#city' => __('addressCity', 'retailcrm'), + 'default-crm-field#address#text' => __('addressText', 'retailcrm'), + 'default-crm-field#tags' => __('tags', 'retailcrm'), + ]; + } } } diff --git a/src/include/class-wc-retailcrm-customers.php b/src/include/class-wc-retailcrm-customers.php index c6c34a3..a7b59ed 100644 --- a/src/include/class-wc-retailcrm-customers.php +++ b/src/include/class-wc-retailcrm-customers.php @@ -438,7 +438,26 @@ if (!class_exists('WC_Retailcrm_Customers')) : foreach ($this->customFields as $metaKey => $customKey) { $metaValue = $customer->get_meta($metaKey); - if (!empty($metaValue)) { + if (empty($metaValue)) { + continue; + } + + if (strpos($customKey, 'default-crm-field') !== false) { + $crmField = explode('#', $customKey); + + if (count($crmField) === 2 && isset($crmField[1])) { + if ($crmField[1] === 'phones') { + $customerData[$crmField[1]][] = ['number' => $metaValue]; + } elseif ($crmField[1] === 'tags') { + $customerData['addTags'][] = $metaValue; + } else { + $customerData[$crmField[1]] = $metaValue; + } + } elseif (isset($crmField[1], $crmField[2])) { + // For customer delivery + $customerData[$crmField[1]][$crmField[2]] = $metaValue; + } + } else { $customerData['customFields'][$customKey] = $metaValue; } } diff --git a/src/include/class-wc-retailcrm-orders.php b/src/include/class-wc-retailcrm-orders.php index 1977b9d..e543c2c 100644 --- a/src/include/class-wc-retailcrm-orders.php +++ b/src/include/class-wc-retailcrm-orders.php @@ -416,7 +416,20 @@ if (!class_exists('WC_Retailcrm_Orders')) : foreach ($this->customFields as $metaKey => $customKey) { $metaValue = $order->get_meta($metaKey); - if (!empty($metaValue)) { + if (empty($metaValue)) { + continue; + } + + if (strpos($customKey, 'default-crm-field') !== false) { + $crmField = explode('#', $customKey); + + if (count($crmField) === 2 && isset($crmField[1])) { + $orderData[$crmField[1]] = $metaValue; + } elseif (isset($crmField[1], $crmField[2], $crmField[3])) { + // For order delivery + $orderData[$crmField[1]][$crmField[2]][$crmField[3]] = $metaValue; + } + } else { $orderData['customFields'][$customKey] = $metaValue; } } diff --git a/src/languages/retailcrm-es_ES.mo b/src/languages/retailcrm-es_ES.mo index b85f0855694f6c58d0f84719b8b5d52de70ea7c0..e638036e91c4597574a9cbbe53897bb4a013b769 100644 GIT binary patch delta 3243 zcmZA1X>3$g7{>9JTDC#~TTpfeWRW5Tp&&?E+M!61wo;(77H(&5+ksiynJKb5TBRl~ zA%=hu6Zn8J0V@&;m=F@#HA>W=p#dU%Q1pWVg9HM^1pm);K;p@~_jm4g&bjY7XUxRQxP(vQZPb7|b~EE=SsVuAVAOptY5)t-i}k24 zJdDrbUl_ptq-PX1p)z?8b^j<9(!c#dMFYs;b4zh1YQ$Sn8TgC?W3gk%qxNm;`XwX@ z_Gjw)UDSJ>7@eN;;7S~e1^6M(!k;i3`;x8%gS1>KIXD%EV=d}|EtrdYP$NE%O5Fn- zheLQs16zoC&xee`-c4Qq81p#aiyiO^@~U0Ko_IH#{HuXX&eTyqv1UVL#6Ns z)C*T}Al|~!nDvy|0Gxp%uo79#)`S(f8jn|!PX?G=t~<>sojbi z=@C@QzCzltv#I;PpmvLTn*<)z6fQ<(uom_FN61)hKOV)?s16e>G-dET)Q2Z_P|=M~ zQD1xzwareVQuhsN3eKa}z%|qWv)C%?xF72I9OSRV#$vpk*#uNa``9At=u6b|XHfn8 zjLcTTexssobq^V&^HsO|Gf%4XD59YS?<5v%Zb)Rz~NZ<@3fs7!7^ zeMloJgWIs1_WxljO4(`Di|Dqvr4~*5e3|+4Hy)m67joB3{5U%w&{2YRj=4H=zdp zBL}7UZ&YT|SXfGZchmlYm z;TXJ+$!$kEG|+sUgfYy)W-P^4)If$0Bma3+^2w`GR*y=}W?X~^QFGp9c-!{NM%I;$ zL#46=U%*P#z_+KaA3$c$PN0idQSBG8S2e)JsCHM6NVMIErEa`~n!}x_)!&TlI6Hz& zpM8(oE!R(w=Sm1Ij~nT%587>DxBrOl(GyYBy8YdnQ;JnzJdm5SL>SwxC9Q z4@rV$lD{+@kD9xQ$U?W7I0_xizz?uJ?m)G>3)SIqq$&FqH6@w6q{W+74_VWl($it{0I42cNR(~%ty6fgvtHCluBnV z)L}cELM$Q168e&5go>u2gs9dD#Y^bD$BPzc7vi?VD7L*F(u?56D;#ERrJfXDd%YwvGLPb;L5=ya;U?bSugi0>)I?+fd!GZKt*YpCFjEN2QqB9O6xa=}#7i<4Phi zi^Cg)istWOsid-r(BknE(+O>{2}B*CIaSgBKpIg-%qD6Gl|gMJk6lys5NZvnR1h;X z_97~Ugvw@O4Y7h4N2q8!tta9{fLKRpr$mVPL<6Cs?Wu*RGL%?Lyi91d=Mj^MQbLPY z3-B!>If44;YD%88?d6TswYBCF+8NUbl~qJ7QLYn;ho~o36E70_W6_RyR9cEMGBbLF z{Z7>H@s^i(ssnD&A8RS?IUv2<@%y80EanZw*IBAw9QM0wAD)!EHGxR@;n@OrZQOhf zv3MlpM!k_x$PLHM4LO0JRR^N6c&QU|x3214FeK=-omj{TJ2n43TUQ$iyB2q9VlDf6 z@5=1!b3%2In8)u1lOwB(M5$N1zIdd?JN#sNi8s*Tcl_o()#4A-L_9njcY>xtooWf& z%s|xj`I1!z!&sbXAd+m%7YuOfvb&RmD~*JzqREj>E2wjW!GJ$v|9iuUxv@ypN>3f- a)6|G3?gmfot&W5vRum7^H@I;pX8!`xs&o?o delta 2682 zcmYk-eN0wW9Ki9TfDkXCqzPz=n5c+orl}|?s3fE!C8TC*iuhJ2rlq#^ES+s?FEh(O zGMCGLQvb+7Zl?CKwQ81In^u-efVp^ z7fp%IywtY>Z41$#xRMgWK|Gbtfi@#E1iQ7!Cp2)##)X)Lt1uTgVo%(T1-Li<{wNl6 zehMexMeK(KT$~?5B8;UofPvY_ccB$$;%0QhFR>4v$29yi9>0!Gl*(#yun6<8JU*|& zLeA^4FRsQra4Wi?SFk7d4PoraH2)%1#7Vux1vvc z1})Z~FavL*6W&5=r8g(6F_fZvJ_-H1n%H{uzVmvM|B-ZB7`PAjqNzKH%oV=Dd+{QU zz<==`EaNUiunwu>upXOm7nn{@3$fM4sYWLJc?#;4XbnuU&IaFm>b#@ncxc`FXUu3wb597|m!YdZT(=iVM*Neu{h&;d_og z@ila%UFef$vB55AIQnE2=!FgFf>xk^w*$@GAsmeDXlj2%rV5wQg`}}>&R>ddZDsPD z{coT%jDcqK!q?DLy^BqF2J3JTgPsw;`W!j>DsP9bI@$ zQIz48n4Mr?6CIy)JNkrgqFZtp9Y2m{;4AcZq7%1b7tX>LnAIDeMz^Sdf^iE+qeWYd zBXJ%2RvbVV+K!3wbS~5J{VyIA{Q%8E7xE5{@ek3IT|zVSH_pSMF|3j>GTJg=e!rj+Y=w4dVv0|I6t#GT;qPqAUCso%ok{{Bk`054wlBCDD6bj1+h% zLtm?DXf4b^w`M+C#JkWN9*F$}`GlWK$p17tDMO;yYzF$p8g#GTz()KKr(@>OXrXhE zwS;EujyusUdljj-un+ysKaSSMZ~^x6ntKVKP}6}^R+ zLHI+FPuO?~k}ZQ{9Wj=8JUJ2_o`qgSHPO^DJu4@(qoq$l>YlR&Q#!^L?$7DCHss^v F*?)J3=*0j4 diff --git a/src/languages/retailcrm-ru_RU.mo b/src/languages/retailcrm-ru_RU.mo index f4b9b2115920afd045a50479108c22c0622e4f42..c8531f52b125599e7df3bd7679163a8891cc6512 100644 GIT binary patch delta 3380 zcmZ|Rd2AGA7{~DkEG;($%Bj!=x=B667C@CI%Ay{&uH|e>nD;&-=bRGw=I8^S*;e@{X;E z{?IC6w{dJE9wU4SW|#1thMYK#HZe=WW7rr^VN<+-{MltrE%0mXfWNrye_>1NO}Mx{ zcEYYW6i479eAFyz748KmFqI!ZMRjx=XX0;|jN_Y`wZS>q0CQ38LF7TU3Hh^qoLb>g zw|*WwQooGt@Fq6G2iTSVEwOq0LA_Bk7>T-JK57Ob)PTy6KYNK&7u=8fy#_UaFEJhO zpk_FLwDiRQ25=8Pff}_k+86uMzok)_h+fnH4&!XRh#GM-dZB3DkwM!~RLUp0?emc& zncrzs7`y(oqH6q31`9b>Ig zGfhRMb|7k`^H3>Uiagu0QH!(~b=_{%?y1J%cn$R`Te6^(Ne}A2Ok}Q>gXb_>LO~r5 z<7rA|I_ecUaVx zPBZgk9_~Rcs`~6jF0mHK7;F@3?f5VQOHl**7?rV`{m8#M_??DVu^lf;_2Z~_`8jHp zC-E`RgF2!HFced9F*d?t)OTUC`}hvvgX z?f>oZg1v$o(O%R*-bSVH8Y)${+7}53t3#=8Pi!KdC4$7mM~I4chSzP(!}$c?n%FmhWfEH_5Ze(mRB(@ZSW4(M zuOv9)^IuG<9if$9cZ_!nejG=1A+#Wy5$x93Kc`>?L|qnFP%b9c5?hGp2_5>j)Ey-h zSUNT;*1(;~6y^|G^(|tJ@&B1naXQh9c$#>D(8nV{u#IE8Vly@+v^BGd3_`1X8!?z@ zK4@8R0El(@(`PbJ~=K6C3p@O>FeE<50Wv>lKLP39F zdMFt57eve-^ak=RCr}uU%=QNT75*U;y5@W16$^R`yt)5gyJl6Wz;6+6Zn$z{htnyY zoEqnhbF#Lyw%n4YcxZzoMjUr^2~dTT1I0bN0rruX4`SmYMU0 zQ{_}T)%;Rp&MxN+7gec!A1xR7uZl;O>)~AUzQ;M|oTuP6T1LOvsCnXr+MOEm9Otle mlDn#PS?$jMeN61RJm!pZmhMWOljgih^*oi$@u8^7xa@BM`q9V$ delta 2743 zcmXxmX|Pvg90%}6-Lzdr_qw>EtH_chF0xc^NGX*lOF~72h!)!XhruLfh@oa|(~PaL zyS6f8#?oLg8ip748Ot!jc!4)eKHvX6p1HsCdCv1c=RDi*oZ7VLu`6m{4`{fzD67Rl z(a=!Jnb2Qz@1IfV}~BmR{cU=Ih+E-lnl_GjAL9n7JeQngQK?wiXj`HHIj zL0;tiX?C!m+119YOjBv%dKz4Ll80~$hw_K&_eSe_nDaJfW>c9CR`Ccv%na~j=Du&K zuhP@Q)4nI$Ig~qdR+II2O_{5qnM2!6-?+2rml^(gAAOyIsepToJ5`*0Hv z{H**vpVYcuqW(Bu1_w8*|##D~r7EWMRvesS3WiMN}WG5NSEa|IyNtSM99`GSE z!0(yt|C0xE52>H*?{G-_Y))d0NAi8n;|}KjdG;wT;mExIx2R-qUg2WC#~~bToic+t z%nf%jGv3HCe49zq?)IaNhcN@1%CTI|(cH|e$lpAUJ6o`8 zIrqQpP|E|qR++(nIDykWEh}+9bH0_QvY*DWoXI7;kJ)1(QpbsV+J%(MrO&5V>+0`yScDB&%2ks9L!|#Z00$Om;u~D zyH=iKZ*F5=-_My`_^tBa;nqJhY?J`{E;DFS<;Kby?VrG=@X*z0RI-0-?WGPSL3p|&9 z(Jf_~ckOiEL}M-6n2vUE+D_^oHo*CO8JOoSr{+@Yn{4sW?M;%jzZHj74I$*hO3`t`x_Mtk@-D_q_jSs-!IJqMm3bRWJGS9bMJ` z=VTRmT2HLBT`0~L$%o{?TrpFmWTq*}fvo0PIjKq`$L9UNNF_^{jLhqiM4TsVX}MUW zWJ%8#*NH51$`r9ec&qA3dJI#tufDGJZOZxOVu|p!)?e!e4iu}zB>k6jM9MXyS#%S& ztzNo2UM 'yes', 'debug_mode' => 'yes', 'debug-info' => '', - 'order-meta-data-retailcrm' => json_encode(['woo_order' => 'crm_order']), - 'customer-meta-data-retailcrm' => json_encode(['woo_customer' => 'crm_customer']), + 'order-meta-data-retailcrm' => json_encode( + [ + 'woo_order' => 'crm_order', + 'crm_phone' => 'default-crm-field#phone', + 'crm_address_text' => 'default-crm-field#delivery#address#text', + 'crm_customer_comment' => 'default-crm-field#customerComment', + ] + ), + 'customer-meta-data-retailcrm' => json_encode( + [ + 'woo_customer' => 'crm_customer', + '_crm_tags' => 'default-crm-field#tags', + '_crm_phone' => 'default-crm-field#phones', + '_crm_address_text' => 'default-crm-field#address#text', + ] + ), 'product_description' => 'full', ]; diff --git a/tests/test-wc-retailcrm-customers.php b/tests/test-wc-retailcrm-customers.php index 7d0db15..001cba1 100644 --- a/tests/test-wc-retailcrm-customers.php +++ b/tests/test-wc-retailcrm-customers.php @@ -61,21 +61,27 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->setMockResponse($this->apiMock, 'customersCorporateCreate', true); $this->customer = new WC_Customer(); + $this->customer->set_first_name('Tester'); $this->customer->set_last_name('Tester'); $this->customer->set_email(uniqid(md5(date('Y-m-d H:i:s'))) . '@mail.com'); $this->customer->set_billing_email($this->customer->get_email()); $this->customer->set_password('password'); - $this->customer->set_billing_phone('89000000000'); $this->customer->set_billing_company('test_company'); $this->customer->set_billing_state('test_state'); $this->customer->set_billing_postcode('123456'); $this->customer->set_billing_city('test_city'); $this->customer->set_billing_address_1('test_address_line'); $this->customer->set_date_created(date('Y-m-d H:i:s')); + $this->customer->save(); - update_user_meta($this->customer->get_id(), 'woo_customer', 'test_custom_fields'); + $customerId = $this->customer->get_id(); + + add_user_meta($customerId, 'woo_customer', 'test_custom_fields'); + add_user_meta($customerId, '_crm_phone', '1111122222'); + add_user_meta($customerId, '_crm_tags', 'tags_test'); + add_user_meta($customerId, '_crm_address_text', 'crm_address_text_test'); } /** @@ -113,6 +119,11 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->assertNotEmpty($customer['email']); $this->assertEquals($customer['firstName'], $this->customer->get_first_name()); $this->assertEquals($customer['email'], $this->customer->get_email()); + + //Check transferring WC meta to CRM customer fields + $this->assertEquals($customer['addTags'][0], 'tags_test'); + $this->assertEquals($customer['address']['text'], 'crm_address_text_test'); + $this->assertEquals($customer['phones'][0]['number'], '1111122222'); $this->assertEquals($customer['customFields']['crm_customer'], 'test_custom_fields'); } else { $this->assertEquals(null, $id); diff --git a/tests/test-wc-retailcrm-orders.php b/tests/test-wc-retailcrm-orders.php index 2b904a6..c1889b6 100644 --- a/tests/test-wc-retailcrm-orders.php +++ b/tests/test-wc-retailcrm-orders.php @@ -92,17 +92,20 @@ class WC_Retailcrm_Orders_Test extends WC_Retailcrm_Test_Case_Helper $this->assertArrayHasKey('address', $orderData['delivery']); $this->assertArrayHasKey('index', $orderData['delivery']['address']); $this->assertArrayHasKey('city', $orderData['delivery']['address']); + $this->assertArrayHasKey('text', $orderData['delivery']['address']); $this->assertEquals($this->order->get_id(), $orderData['externalId']); $this->assertEquals('status1', $orderData['status']); $this->assertEquals('Jeroen', $orderData['firstName']); $this->assertEquals('Sormani', $orderData['lastName']); $this->assertEquals('admin@example.org', $orderData['email']); $this->assertEquals('US', $orderData['countryIso']); + if (mb_strlen($orderData['delivery']['address']['index']) === 6) { $this->assertEquals('123456', $orderData['delivery']['address']['index']); } else { $this->assertEquals('12345', $orderData['delivery']['address']['index']); } + $this->assertEquals('WooCity', $orderData['delivery']['address']['city']); $this->assertEquals('delivery', $orderData['delivery']['code']); @@ -111,7 +114,12 @@ class WC_Retailcrm_Orders_Test extends WC_Retailcrm_Test_Case_Helper $this->assertArrayHasKey('type', $orderData['payments'][0]); $this->assertArrayHasKey('externalId', $orderData['payments'][0]); $this->assertEquals('payment1', $orderData['payments'][0]['type']); + + //Check transferring WC meta to CRM order fields + $this->assertEquals($orderData['phone'], '1111122222'); $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'); } else { $this->assertEquals(null, $order); } @@ -242,10 +250,8 @@ class WC_Retailcrm_Orders_Test extends WC_Retailcrm_Test_Case_Helper $this->assertEquals('US', $orderData['countryIso']); $this->assertEquals(0, $orderData['discountManualAmount']); $this->assertEquals(0, $orderData['discountManualPercent']); - $this->assertEquals($orderData['customFields']['crm_order'], 'test_custom_fields'); - if (mb_strlen($orderData['delivery']['address']['index']) === 6) { $this->assertEquals('123456', $orderData['delivery']['address']['index']); } else { @@ -599,7 +605,12 @@ class WC_Retailcrm_Orders_Test extends WC_Retailcrm_Test_Case_Helper $this->order->save(); - update_post_meta($this->order->get_id(), 'woo_order', 'test_custom_fields'); + $orderId = $this->order->get_id(); + + update_post_meta($orderId, 'woo_order', 'test_custom_fields'); + update_post_meta($orderId, 'crm_phone', '1111122222'); + update_post_meta($orderId, 'crm_address_text', 'crm_address_text_test'); + update_post_meta($orderId, 'crm_customer_comment', 'crm_customer_comment_test'); } private function getResponseData($externalId)