From 6407a6b5a7e8c74f41a5d8d74e2f6e6dfaff3113 Mon Sep 17 00:00:00 2001 From: robertsaternus Date: Tue, 19 Aug 2025 10:15:37 +0200 Subject: [PATCH 1/3] FFWEB-3438: Add automated feed export Add automated feed export base on Shopware Scheduled Task --- CHANGELOG.md | 1 + README.md | 18 +++++++ docs/assets/automatic-export-settings.png | Bin 0 -> 90578 bytes src/Resources/config/config.xml | 33 ++++++++++++ src/Resources/config/services.xml | 11 ++++ src/ScheduledTask/ExportScheduledTask.php | 21 ++++++++ .../ExportScheduledTaskHandler.php | 49 ++++++++++++++++++ .../EnrichProxyDataEventSubscriber.php | 26 ++++++++++ 8 files changed, 159 insertions(+) create mode 100644 docs/assets/automatic-export-settings.png create mode 100644 src/ScheduledTask/ExportScheduledTask.php create mode 100644 src/ScheduledTask/ExportScheduledTaskHandler.php create mode 100644 src/Subscriber/EnrichProxyDataEventSubscriber.php diff --git a/CHANGELOG.md b/CHANGELOG.md index a5b367a7..7e985017 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased ### Add - Add to cart button for record list +- Add automated feed export base on Shopware Scheduled Task ## [v7.0.0] - 2025.07.23 ### BREAKING diff --git a/README.md b/README.md index c1bd43df..7364c5e2 100755 --- a/README.md +++ b/README.md @@ -208,6 +208,24 @@ Following settings are used for uploading already exported feed to a given FTP/S You can check if the above data is correctly set by clicking on the `Test Connection` button. Please save your settings before clicking on button. +## Automatic Export Settings + +![automatic-export-settings.png](docs/assets/automatic-export-settings.png) + +The plugin provides a configuration section in the administration panel that allows you to enable or disable automatic export and define which sales channel and language should be used for the export. +By default, the automatic export is disabled. Once the administrator enables it and choose the sales channel and language, the automatic export will be active. +By default, automatic export is performed once every 48 hours. If you want to change this value, you must overwrite the `ExportScheduledTask` file as follows: + + //src/ScheduledTask/ExportScheduledTask.php + public static function getDefaultInterval(): int + { + // change this value to adjust the export interval. This value is in seconds. + // For example, to set the interval to 48 hours = 172800, return 600. + return 172800; + } + +Automatic Export is based on Shopware Scheduled Task. For more information, see the [Shopware documentation](https://developer.shopware.com/docs/guides/plugins/plugins/plugin-fundamentals/add-scheduled-task.html) + ## Category Pages Plugin offers a way to use FACT-Finder® Web Components on category pages using page builder Shopping Experiences. There diff --git a/docs/assets/automatic-export-settings.png b/docs/assets/automatic-export-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..d2d97965a0cc7bd4b82234d1c2bd7cbf9c49ac7c GIT binary patch literal 90578 zcmeFZbySr58a9kzfTTr8S%63kA=06!h@_&3QUcN)QUi=^N?NIr1{F|A0fC`L7+|Ek zW9R{ip(mL5p4sQ@bN2h4;3c0TH`!C@yk1}`+AJj*VSM?dHy5~4GpvAz1t6I zXin_W(9rqP9|z7%$Mvbx&@d_6tE=m4s;ghn_i(kbce19TxfhxItww!+(V_a1HNY0C?r#ya2s=E!lbEVuAd6fc{irR^!FF%HIS9koVf zBCZeBMgy0?La3=jbhb1_-g9$Gisn=HVpJ>a({UQV_qQ}n?$KCj-@g_zM8}5vK&$s0 zv2^bBQ%T8FG!wIU%)#dIy)f_LoB8{_WQs#tz|AA9G*^z#dj%ZOIr9fwis;>`FX|ZRURO6RykqWdSuqvcN2DSMI7CodR$}Gh_3>eO`zxIR~ zP_MDJd9RrcDg_5xe_5P3Glx!-h8v3s1pFcRXMn{(l+*=mJm z0)IhF*of`DF;M|XmdIOVa%(N9Tl0nRzPT-f-2Fi9VmXnET$U$W*zYudy!v|hg16|8 zNY*EW81WuU4Q9fEQMI9a2bve_8an)+&J{7Pxg-XyQF70M~R zV)Ao+8*rP&m)4z+{se3b{z&Ei^|N9OO5rhE{Qa=9?dOfKvUUPRS@lPdtus#bL+(1#W{uCXgA0AZY7Ha zqL*)S46z!HTp}T#%^K$mT=BYu!yq-Se<8UGAp{`|v%WEFT8md`qzt~|8s8F0Wlj7E6kdb7rEtAtv&qSi%fEjf`HWnReqX9D zapxfB_keMMOeD@}kd z6B82;z9%e`=6UvsdJ-!H?euPIIQQgtJVNR7$9qk4<#b0>1cv4^^I2np<;#M1-H&g6 z=f;IxU_1W)Chff=XPzHCb<5QH{z8Jc>xe)OlPF!`&0}NqRj+uT%Z{<0|Ng-3WX3V5 znqm#h=J(-2X0ul+TPy*0*+N76*c9H!zq^p~T6sQ3;*|Ln`bf3;H)pRfx8J_~`fO@k zmwLyWbN7ywbA7&fa53Vo!H;7f>0n_>YW{CVe+Zpb|NQBOL+G>I%MS!QZXx=QdMTwv z>fVa($FH3B5_=ZAd26lTU`1e0VIr(i?NIX7XUp1m!ppBDC2z3D=2>#RJDMJuY`J74 zV;CXRv=(q~t=a!;yxggR1*WMZCA0cUr_ghWTd6q9dRkQQ=zbudiQN6_2OHVo@ts-*pb#&xfB>1&ZByWpG zOVH`ak9y@o_&4u0O&(tS99kJy8SV9(SJ;paA?N)U%lGp|r;8H4TzZ&V_^_nhV5z3# zTynv+?Dq37w8}Z;)4GK81V93=0=TI?pZTRPK$)|=#LWRa(Du#qUaTG!e`SsyNGle%t$_Ac0 zy2;o$JaXU}Ss7Xx{pc7s5Hr#>Xi@|-*!^u;S}Y+Y+3*d!xntu9d-342_!Z9SjGp}6 zmE9HNRoj*6iQCSO&T-yV-l+#J8#gvoc*S_1WM0V>R!CMrdewSKnu?glxs+@^oF>)E zdZ{u?pKm)a$XR7)G+icwm|0^U-5ou%lKgX{zpezUnVrl3G5Z7D1b&l}b;RYlEt{jn z`16n^u8^6z2}DE0Za9<$rAn;2=wN5dX)D+57Hv^z0e}1T!RxnUcA5S5AIz*wtso0d z3y<57v0&{L!A8MbiH`+^w6mnWI7RP@TZw%L>$i2VJMVB!X4+}OhA`eWA=>X$GR{{4 zUOwxY?-!20wrjJi!gwb7Ui2#aH}-0=_7v?-(N38Zv?$8>sj+~uSeZkazfG}i_gC?% zl5dTU>J{4+sV@wiJ-buvIxD-snz~N9L`=ZOt;Zivm{w_QOmBo8tZgXXWxMMe#}@mE zuYXnT<#YM7@I;i!K)jZ|R1gzJ*YSMtFO~$SLVE7l67hJKZ(Xl9N$V zslPah@ZwP%Biq-m}>7UK>uKp6tvFnGVbeqY2$$O{rujeN` zOng|KcM#8fzRuqXD_89g$E;mE|tM84qo=V7z<;d*URF}A5HsUp(ga$)G;^)P@C0=&>NRQiM_%^)3j$+Hf{Au^mE2Wx+Li?J{0+T1-{I-28 zHf&-`z45WbWzro&&X4L(mUlY^JVm8GgWK} zAzVdV>9&`o2W@ZkN@dGH46*BP#ubGN!RUGa}84M!Dz4mm)1l|Eoizd zrbfGRz0Cu@q-bbYa@B0x&U&$f@HpmiUg1nhRt@16%n{!vlO!`BW9oQ$cpEH!;m-&4=qzegG(G=>+2m$W6d#UU&r($nkHS$N%* z%1NJA`#Y=@kSTlxJlT+d+1uNZJh5{))WrwV>0QBCw!O>@y#uGiE+47JZxb;=f zB2S^7!wgmbrnTm|=&opH=oDzUy7n6%VR{3r?!4)|4^rDv4xZ}l9e75 zJo@!SFzYk^Hr4vw*VvWTh2N0owP@8`WnqZJPUUjyZp8=XCgqJ@qzWeJV$e3MdQq=i zwa{#$UI_=Km=_0H5o*mf&6w-Wh<7R72h}C6>4#PX47?MJ#RsmQAh9Z{NU3HWCJ|Rx z(e38<%twO0ktX)Uh?CR7^}$CZpEM^!PChTo<>I2LpJAa9J4T~0mHnXY+5yBv{Vdo} zo|eKOa`4*2^F$6y5FB~XT$-*+bKnv-3Hns3!t#pqJPkt@%}aMKhY+v~zVV^W?Hbmx zvjiDs5HFG2U|k;a;}9+V=5y_D*}W86dzFBfb;`m()<6?wZKP?VqeF8IIHspLdgMIK zG2rM3@Krg&{jcM@N3PP){eGU7h9<(E=IB4~(FJ~~pEtml`piFm=@PEd_lV}h zD_cPOqxO%Cyo_|T6|7vH#VuaAT3U|D)=g2`uz?C z;Fx+Ebm_wHw|F@!Uoz6szo72wVSV9-xP-XGC6$vGE?iLZcwwXP@b=w*J`Vh)e96ws z%S{0U^6~Kz_mLKN^{@p=%FD}xB&0x6QewazVxE33UKYM$E}obF(a0a|+_v_#^00UF zvUhd4KyBB;()Fd6@}*1Ej{f!e$2hHh?f>1Ai|0S51xye`y#kUHmjL~%ZQxNQ>RAPS zdtYm(r?>5$fi(mAP?3|9Q~Le>|G4t+9{=>D(Z8RRl90af=STl^>Hq)eV^3=jbysJg zPcM~!@7F&c{`19uKBxquPW?|y@sD->{VcH1Dkqgd|JpQ_lLLNp{J=i)*x%NB1pES0 zM*SSA2mZPGk6-F>agsaZ&UG3ZH5$#^Hy`;PS)cZqI@{WGV(Y=pGLEw%*Ph2qMwxy% z)ymEob#A?ZBSz+c_JBRM|Fx;r5isJu)7MDCe?CEng3#7zh4SIf0k`!^m*RZ(|T00Vg9=ehUE#E0pudvFRlVv7vs56?!%vkvO1nyyGulwf{b&ooI_1^?Qu zO?>?Bg9_wVxu;-*)UKYsJ{T&_*u!sgPs+6OXz&f*6=W73L&lIy-tnWKuhi;88GJUm z|GGtbZTDbG!{JR%>E%KRozp*k)~a%{2zO)#^65y`D1TYmu0{#?r?xzn%%~y`AQ4;l38M7e=cU<0)S~=EKmO@EVe>a#%v)@KhJkNxVg_tVWx(%R;%FIV{({=;_udF%Tejx`=` z9&Qo1?R)CBE=}J;vJ6&DfKwkGb4?5;Bl#hx@5Ym*y5y1Txmr*^q2%PXzidwJ)%O=? zakC-u2;1yYh8m>PtL+nyVKg6diY!4@yI8*}qM)6lsp@YhrR zY4Uu%#(ggN$w0kNqyRg^ptiJ*X>=t_jnWB%pX3jclj>3$jIo#l)^)Apxl&!zs!)S=#%!*Nc`^K#65{m zo)3KjHAiS}I*yUpCQNcD-aA!otX9bIR`v~cn|Bt3_Q?d3%)beZ1V8^SwPuioObJtD zTrM~>zGG&YmNaS>C{0uf3NRvIwL-l&eu7oPGzmjBoPWJyUoLFz_AVeG<^eL5={9L) zxYN;(<~SU&Le$|6Xq7Hif<@~dZF~{o`s;S+uV34m+665ghQFTY3_`lh@JG8W<%JQRx;!pk8uKo4M zf8GR!FjB4t=X+KMzVg?KDRP=^r65_L&-G5M;e)@{7JXLg5K@j2_WLHLFaPxrp1pmg zrdli-936VxGe(vtk` zHvT8N{}bK+iLToJtS;aZ{%3W6_ly7cR#!0Z``A}2#N~J;c6RfCuVvq9O$C?oOrvRn zHAS~Zj9nwJD9VMRMuJ0b;Nd|c?x(oM|6%U`ZM7ZrsNOnK4Sq0TQ*nRqVA3^WdjZm( zAwB%aAnXqNQ@M)nlfjn3wpmnnjgYeCSK;2jpsKYswNMd2bD)O zVtg;Imo12MMa(qFvIu4R2H2#Z`|kt2&^JPL*Rdz}jNLmMSLU^v!#KRhQ) z-3H5CE7VMU=In8luc=4R`&4HG%R4!$0z>Hs>4}F=gCy*cLYYbuF?`DT_Q&qW{TwNF zl-n3Oa&8iw2pWl@Gv1kM?UWte`ikUZJzNK?<-c$&9hT1U>`6^^HvDsP@~5~>&G-xu zBFS9qb8Qs^C(Z;m*I^o;9Iz<(WJyo?V5Tj8el8HNgQs!x2iO^{peS#;^s;<5pXS>3 z%1BQZRcggE2m~NKX_NI64u#X zsG=)jZJNB(S$ej4V?Kmqb4HAb%R_zG%+g`ibM!P~djT0SWt?bOXTD^gD=FVTs9^Z09vsrP^i*Gl5sgeT{*K%~itNcV5Z(4I7^q)t!0x zjrfz6lrpKaDJ?WwK|~IZGMPh2I=MJ1Mp3g6XN<`3?0PU}NLU)T&1O`@l!I+{?{bsn znRt93+DtA!vtRX;g)s?@2G)xIViDgx1QziTU{>;;&AQ^IsV2{R+PSyu+yTlpTY>~Y zM}xYG(iIJ#J%^DqUwf6Y0n1ZI=ybb^I7(Y23iql8){A7 ziYV)E;|}MteV4me*+tmxjlUPZ*eGAIF=iFd!mFU29vW#L!R^X(I?JDsy4C*UEo^SO z&IiL+HEvT_wwR#xqK8X%6Y18gtd3Aegonke@^Q`cjBbZT%yR)^r#$8ZMAZIK*Xz(IX4?H zWa9FaZMBOj0+V7=UgnI5CG!}XS}!&Gd#))$EZvm@GUQtQU++SDWkyXbh95s+a4emc z?z%DQghv?f$;;D{>M(rg`5;8q)SbPJx|c={pHbFTOHbNjxuHi91!38cEQzB51@a1E zA&30$RIemC>fyb4%xk$6_8PZP6tZl6hIah+bTuj*kIq&lTBPP7*wbD4Y*O=92T!!{ z$Gi+MmqHQ~HGB6~RDKTjHfy&tD(+tC?Yk5$%H!`^tNGeFe_&?`Y91!tBPZhdgWdRm zp;Np<`}My6@Z-_Yf-HZ9fSvXN7&N2=PEM0ph>>2-iX~R42xl#6A4y0yDv=>q8rtk$ zD=a!I-ni1-RplY#{*H{D0mIAIeBj1XCfL$K# z!e;aICw*r8e3rY^Sys)rT@e&A)@7%tKEVWAyw%3-8qTVUyU=yx&`Fa!TPW4TqUmEs zx*<{a(yrAn+(3>F6)tc%yHee}96)3c3QKowlmQqXE^v8mRnneC=1W<6z%Dylp#0ZL z5<`6p*hjbzJ-WUkBPLzyE>|3eokDPDJ_#K9^dNUsf%`=qDzMu07Sr{G9Y9^fzJZIg z$Ib1nf6T5S-bafM%)a3)$_gSpovWI3)w|W5eSW>y^|iA9p-aWfF_7Qa+^;mmgGmg% z2ES(jIcW-ghT?ag>Dc?=rB%{oUTp^?*LfP-q zp^d)aRV?T6Y;Qv9T=JFm;!3YgCEGFQQBw~PdlFyuc3XNlc7~GU> z;U|kvq_abgo3fL=$tdYb%U;YFoe~@nXjuWznqGNyM!VaVMyODBfC9vBS^7M$@An{! zNoS!UjpbJf$&RHB;>6wTkmh$+lAN6)J-bVXD{SQs#y&I`wKK9WrQj}oC#<<9jh{20 zSRME5E?Z(Zj)+fqUgzt#I2V!N*e%tbwKVU@0RdsFUo>6Ok5}Fks%qg7vQ*19&rfss zBC$VYfPTUqpptqNPp2m@)}miKP=4@C8R3rPH61Az=$&@OgN;gN4kkRYWxXn3YnR-; zR5Q!SRs{2?IX9VviAX%ajcQMVR3!O0C^oHd)8rJK>}<;mhfqaKt%xKDvdA*&%1sag zHB7lJ%)Y1%m6kd&9XPttt|hi>UDcXQ^>B>hH4-M?_;aylvV4HYuAAERG1{qivIM!d zE{Od*Nd0qQ(nkQQqV~K%NcGg14AcQ`^?n;^XVPoHSw;&sbe48bx9cimQdaFzlB<3S zPGfWy;UBRxxzIs*^tSdZ^J`5r}J1@HOkv_ zEFV)fcZh-fFe&g_YB>|f`1OQCwu*7MEBvs;%g07Jd~3UQ`&hI`r#dT1kte9-?Zx9S zbWG#q=KK0eF*i~X#-~M>L46s7IE%$#P38Ken7FyS@tI{6%QunmrZ#nH!nd=9~#A*cYG`0%xU9rNgJ@K)@$xn zXO)-p?4C~^6QP8j(Pi6&6-85sI#*3Qjv*xbAUlx-9pt;;fS!7W zM_0yY!_uO~31FK?kpqYJn}nC6({Ji|ylgnL>yP#&<$3N{wyBccZYKl>aD) ze{yuQ4kObKj-#lwz@KhgCwXWQ)2p#Fhd>OAbA?T(Ivcw-SW}~8!DEE&JL$Nc&ex~T zz+K21DdvqDIAj>4H?}ANwVe3hk*A4#DnRxGz~~%Nh;U#fef!L%@>DLYp37#{v$A{H z@wveEfK?73TDILbo&`&#OGsWmTE9Kz(cmDhyr)W0+MD^Pw`n_Hwq%uIfGrE04Bp%w$AhhQMTvX8t5PTTx#?5rJO+;}%3lB0XoVTys6q+L z4&NkC5p6{c&>#6!D8y(J&?NDIi1wb`XN=%Yb1uXOCaVZN$>FElQ38xEK$n&I{!v-e1?l!}RAJ3JeA-+rbyDfzdU54-nb~f0E6d;@at-dOxV9o@s=`A(kc0mT zk%WOzG-~9yZ0dbe9ZP!VLKot@yN9z-45?V7*pxct@!i+;Xb(6787p zcb@jCl?Yz%dq(!H=R6vg7p5lALh5Q9ti4(AzRJNW*2B#TAMw!GT}5~rQz~Q=2I)Me zhqs!yWqQo-``m6je+o-Yd6*ioja>(v&s<|yxag@93aLP$lAimd09Ah#>0u5Ngn zxamA`ike&5?6x%T<&R+RaG0MKuitv#^=)DAxTN+PY&qM*(;dlneImxHYD2gVKyc{{jJDmMz8*=*2y0oVQftN?e~Rl2MauQXrQ zSB)8gVKDW(@G|_ev9;MJyY;1*wh4oJ{p=TJJ3;MdPizak!X(UeUrvBtKhC1`t*Pw5 zvqw@xs*)(iOuHrrCGmkbGyP6oI6f62wBgk$CJWLQ*`9DL6+*1@^P7Q5u_pLk%J_5A zezSc6Gqu;wV+cImJfjGS;CzPN^u=3~AH3+h=HQJi7;I@5+0vV$)Y*!bJy6!Q?gz}a zb%EzfpT$I3$2AeOnaxuR{E~WxUW0t+J4vf%oAw{)KWM}YXRw<`;X0d6go!1-7o7-m(Tw86ouA^xo7reOlFXM;oCx|2zUdgVHB|4nh*$IHY3Qd6?vW~ zigiIhTG3>xHeRD<)Zi2jh&B z_u*9e&X$#@BXJfLk9%fn=kS38S!x&O%bHJiqNDY3JPLa=Q#}1)%JW?g)jD?c)^iKD5&FDDc*6tp_e?jjTG8Dh-(PL)R0n$o6WXbzqRHMVS&u!&5(NO z7J}7^5q_?rME9=2RoRb+Kxod@qiN=H)y#YHCE86*$~?d`#UnV#vnRfx2Ly!NclG3F zUyfVSs($xD`#u#ayjD=)^vQ0!}VmIfo)4B81qd-Y8{`Ix-fsAC(mM6tg1%| zY1M8E;2} zFWRz@DarXq>s!$}J!){1zCoY#V#HewK0}kxE^G*^%5|kTdm|t-@w&ZiKqH|dPS-fT zZ&ofG%*}o*a9Q2alIlH(5-CnwmE-}}wwYlKT5p%Vh-?@vZ6r)|jWo%UMHm`6I-Nw! zB0=Jnj-%q*=}gh4F7kjCLgYbBAB>%Y9Q131hXJ4gtV}G(UbAd0iO`77%AMP~9M?fK z%=1GbV-F>rD%~+#s|6oUqKne@isC$TWo?B=gVH_8Ewm&+2Cq8RjxVRyP6uL55gj7M zoZdR&G$6B%unjzEX=0FyM*?xs=J7dKa)w9mmcm+5=2~)ws$e5$`3wQlv-dg4}z=E~#VCseSw0gwn~x;*77t9~u@gqn?LP$RvgQ1Byny-_N@P_z6~WPY<;%Yb%f{)~`q z4&+B}gi!7ZU8^dGi>80S4`xKHqS#lU2hNM06F0jbaUaC-Ju8bzt1(DQ$q#0|pmT!} z(|`@Kc(UHFxRS8GwTsULs4!NXz8&`X;VJYvDC_-jnAwer;?E*qWqsDg$oHi_Lbg3@ zrIf&{YzJZt?CB3tOZh&&vt)2WKdS-&Em7X6-;K+q+++r$(Y=u$uJ1jw4PlE2?ghDr zzKWnI=Qcp=C~}Kn9zw%cfky4G1097nS$F_?R+@4ng+jG~82k@lHP*DM=>XVsX7RpI z=7j|OdIU=Ys0GR&&dQ$!EAS{la+n^>fJU^#xb$ocp&nM=AVzQJy zFb2+lH%Lj!FLJhFt0{s%g;}bQYXv$&C1RcB1Mi_y!5KUvOSBuD{(8{RO`WInT4(7_ zWIfvM<2;YuZ18(+VGk3C%aHKhdU?+LlJIEOJjSKcqKY@g4DNM5hVz~(c6~5xu5+RC zm^m3lD^LZaD$vIjOF1Z?4(f3DY0u}NIvkbn*FLt>4+rq z;Tesak;-^2^Jh^)t#Ev_(1(Yj--a;F190>lXzJyF=;*$5A)97`k?Z zF9abM;00T1JmjaBd?9Xj?U>}Zvn!<)o5xcnoO8q2nW}|$-#vL2MA{!M+qnkm>cWyE zR7Eq>G0G4#7){kfeFY%qkek|j{KWLkjQ`q(gbG7dTJ0n0K2ULlTs=Nk)@*d>eHE?- z@a_iwk7cnZ__g!xR&CY%eer^}| zLP=N23I2N77Gd7`ol!X7na%pO%`S2TUp=TxQlp@&Y9Kift9U_)u(FWajmY+UFOjDX z1Duo|rt8>!!!NumP-4JlE7ZtU-KADO0KfDkuMRO6!F#%Dy2{n!P^@}}Jx+16rP*H# zE(#BbcN@=xzR-1L4kj~R4u@u5x-xSwK;CJbPsC>P^YuQ^Xj}TuK*t>plC%jfetm^K zFF1%e2bitP>s5zYbA_dXF+bl5>-XQ!@V1=ZA7Pkuo-FMb7K>uR{(_e=@rs%q-v+W{ z`!2=x8c$Bic{u!YC8H09-KEjbZQOC_VGewPf0PLou&a}sk=GPpq0tT1 z8J6qz2BABefA9z+*!T$McgQJh0LmmYpWH)1C?REzlvt|j$8~hO5G#``OQUc_soc8K zCyIG96$Pn)%f0JezxqrVd+Ga!cqYb*E-BB=PgQIyXjg0me-J$Ys@{Da9JnntYLbZ{ zVW$noyf(g#h7Ibv5|U`c&S*6z>6)|ojH>5AcDt)X7xd)hKe!WC3qtotjb$r}y{!9k zI-5~F6tIn_J2z+sNN=;3$bu@wAD1usfgIm={>JE~`7>ztc6LRi*^eW?FkQP;$&LaD z^{7YcuP<&Lhs?Z4Nb+(UK=^#fGiJRB1_J4jc2JE(aO?=`K}wd<*Qv zcRBC1Jue?PP1iW44wqw#Qg<{D=no4U>^N37%(MpwK%26;yXm3*AB4KHvp`d{rnRBN zhQ=~2{q*zE^wC1Q*(hJctlOp^8qL}sXb6ZuZ|?I=82Ti3I(kzqfpPyESP{ z{F+$aZVDBBP*Nm*ZWeYH?u(Z_r?E6oh+IvpJ_?c*fB+= z{h`5B6bV~)h*+=a%^EkXKaI{sDKKE8pmMxT?LwLQV~@mN72D)M#;u=Rr(XdVHyDn2 z_D&~2McGA?q$x`So#L$MOlUC{kp8-j#wWfCsdY+lZR!1?cBN%KfaN!_B&(Cs>u{8S z6*728TzZ2LNr6OcR5M5Lc({E)0?2Iy&w%QB8Ob{~>x@rQW7)u0E9BOm!I|(53R?9< z7$cb+-zC!{w=h&TQ@i$}D!HVn{O8Y$jn@;*sihSOua!*vuzq1M`Ex-Q-;B6_ujlgyB3R{K?HA+-`6t9Vpx>iBmPDdisD#PgPo}!Vf?*mSXR$)XdWwN5Vj_%{;;d9gL&HMM~;x%lP2hU(_fW zo)mU*II*MaTdy*@s0^rk*Z_rX69_5RVph1|oa;#qK6j&)NuRamDj)%sp(FhPh1~M9 zG;Mj~n0EK43m*Va1iW<`%huI=4?uRko#LHlvN!t)N01bTJMeXEX8b594w*) zDHt6I1E;8PIl%Q!a|RjWhEbsXIx55}<*YE$Nd>dnO}*YWySGxYR=KGl9&h;9ys2m* zEpgawDw=h&K#7clG|wEan*(@kmDX~Ys%R>IgHd<;SkmEUL!rdUTNX$P#P2ZE=N3`6(6=(F zrVth!wEdErEV;F%+5%~;V-XqY)^rSQUG?<8Q^A9)1OQZQ%^=5oVS^AWJHuq`1k=e+ zl6(Hh0eNE|?46qB^Z0(Og~l%Wfa z9>HW;RKS_}0BmcgP5J?gP==e+c77K&U;C?m2_L&z4VY63N04|qZ(OT{o!Yf1_-J|- zbVfvD`zs!ksMx0ppfJtJPju+}tmp%Px=gssbZwZteunml}^h=8(& zC5a$YOXG2Sv?=2CDN6Uc!eP;%da0QsN0m;L8XVT^F^3chfE{k;&b_`I-@(&gfzI{- zUA}%$uBC)aokJkZz#H6DjzBXE;KU@QU&}4Kh%fJLJd8l{9qL&OI<>nIt5HE(uMPZ? zj4kyc)bd-ZO@?sGXO8(tXCOGlKrR@&36vgy#DMYoXxZoektEw%+;K}q<0@oSYx=G1 zZvTjd_+Ik#?~IE;tnwS>lHUBeF{?O-EuYzf?4Xk;0QSaf^?j&#UNG6YdivDeI36yQ z!}Z<8)I(8#f}Sz=&Z>Oy@?xnZ_4S1N$-~kho4u8;c{+N?EQkPzr`oZ#AsHym?V3rc-n z=IaoyxLGg4^YYP+J|%L^heSSPy3AD{tKcA}D3Bbb-h@6wRe0nKPn!$Y zEG=Jb?>uT6EgK=7IP)V9DL&O;EH&SjY(ZG90DVhJPrF!E433z|RH`0iFPR*AUgLHv z6(r`D(rF@CVZZo8FW~|Ijh>h*r&*1hhaY>We*rb@VWg4BD(^v^>QF{d{ndcOX`j@< zrSOpW50)+cl2OpHI`H>biRVKJ+n9DUFlO|5M|^Z5hpVBc*>_>H-*eA&$FU)Q$Dh)f z@CX32qTqYa$R`s0@Vz*n3vpg$E0?0LG;BkJFZkU?>ymm7OHq>sN+ z$G}8d<|fk1lej(nN1oa;uqykS+lcRtRg~)uTqZVPXI$OJdJiIKUR~Ml7o+_R8Dh)CcJNYhTc#6ZLxHShfIwIwELt^9?vM z2lug+!}xkpc0E&{{Hpw+=EJN>OpSE?;U>5>A{3x%TpUe@4}CJBG42K;$x0e60rg7P zw7n?Pm&uP4a=dFlYLFE*vP_~n}CdGs+z>27{Ouo3B8{2lPT~6%#vau7d z3Xo0t8dj7I!auJdJ z=udu! z;Ii&#iI)S70Ei9ST0En7)V;Fn<@@KcuG0$8YWt z3917OWI9ELOTaQm5*24aZ9kfy`{u?DNZjY&7)T6O)Ug2{mxs zd}q7X3j`t%t7?R+7J>xue7!`D`vn9xQ9@13jDc5atGChF{BJ{}$6;AkuTF);EQ^AL zly&*_{GYOe(Af|d+~D~_z$Y&)Z}#x$SDubIhZ0IfgQsfv8I8FC>vH4-pO+iwjrFGwu z{H*f$+IDNKoC$%X`Q~vwAkBJR*Lq}l!2)RLawsIZd4#xsUv+{02nU%&WK$MJ;H%QDZlL2vOLx z8(_Iy#mWUXbxA|{2_*cf%O2_-lr6-VM}cgu^ICB=lLl%3_3^{>^GvdGUtg$eWi2IW zC7CJ{R;&^^ygDM^*Y$(Rp!*73hIn zk2$zcfMdzudUxIh+bDw;s zo#VUeQDL;~f%vtz5$L-XW0Y6qJI3mEqJ8lvc!ww;7#=1qM5J_NwexHo3VMD6HaQ%k zp6G}2+<POs;kT)MM()l4 z`yNlIYJ+^ZPI2|J%3wFco)ydrtfI*E5VAFUF%^D@2S7=q%44% zWgr$E;?_ycUty#8(@-#p_bDwA?5=_!@co5~m%Qif3h3wT!h{8)GF=~$%S z(*pn`PNl_sZOM+J_=<5)djk+U6h>3D3fzBW4>ktYO?j~b*@CB$Po|j;i;vaoKvW<$ z0#~mhO&ljKNo6yN_X(snTh{e~6Jyhd;?j4g&QbIYsD7e5Fh89esOIu@1_H@%cr}V_ z&MD*YXcP6}PNMhdWxsLjrelMrQ+jmlNcAR)<5QNi9BPXZd{B3??Na3784^*cY@ z4NOS~H&`L#G(kJNnzb*k`c*p)0zr4qbfk8s&6b~R%nO&usOc<4yQbR$GK;RF= z8kjKFgf~^{5pl5RqAVNA!kgAz?<6gNIL`y*-ol{<@W++feWTVa_Esb{^@vYBM=>)E z#)%=rnuhO$eRJ;z2Q?Z2oiYR54*%CLr}H|AF!a^qNn%guJ>_;1^_qWttPWy&xDc?g zee4a+sSRy+Ulh>j^k*Y0*nT8GI_uCi0ea8UI1bBg&WA7V)eN{hZ+9{~fMAakU?8AV zeX=A_^}AKRFCu;Q02+~CwS_^k(2_eu&&;S6mmMMn4cH3Kwdh$~D!i{%gu(fURPEv} zJsZ9912a-=JpSPNHB+R@FE9yiY6!@8jNtr1xsH+c=oitxBsF-)ogL4kf`w}9!~7b> z?_Q2P6(Q>a1+vf+{O1kjY^c#pK{lb+HHhJZ+s$9Rf1M*vrRd85Z`8eq)oIcm75w%} z4e~I$)=cbVJ-`W{>qqi2_NpA3_|An<1TTNVcS0s$bYkH+}mJf2u5V3NIZ-{8$A4D`Dpd?E|2>D!SlCbTCkT6a!w%tfuJ}E;gJ!#K2jhX8wMhQj5zH z%bg&R86@z6HNW?aJ+chJG8q=ft7xb+qWh~ge+QWP6p@Y~AfTXBsX?VkN2-)0Vnam*snS83)F8bj zQBjfJyAWv-2oOpjkdWj|)?V*gYwxYE-;eX-JJ<1#7s3OX&zxh9anCXCd(62PDM#P+ z3^05Fbz&7lm)1mTAeB>%;%E8~-@xIV46QmtwDAQ&-sU6$+b!sawSPjXGAAyD|FlBd z&jAj+lXMi;+kC%!cIPOsLPvSl{^?gU{nxU- ztpYR7&WW|CpV?CV#j5=4+0)?7f*45b$xl=N{SN;g;(sXKuX+G07L)2i1hlS&{O;Ku zTUrICd5%^2?`6dr86&{4nA&7O7UO4$KmFjp#(F{{;|+MTnWI<>cj17ar#$|(I2x5; zdGl*D&?Aza_}{eL(a;8O)*{%27`nXh_k!tNVXgbE1&|@8duO%X3%dx z$M*DJLH*}n2n*YPrI@~L-{|7R8Z8_xP5=30e_@MC(VY^Ub_OJQ(Io$`Z~lBxSF3jp zJ@b1={$$3QJAV(Q`u?G(;0%L#R2k(6{4Fxj7y}rww}2BnxG4Dj%irUptI0bF8|exrUD=gXhH;D7txd6S)`l4c-vxTp6W`0Z%EmhQ}Du}D{E zsqMXky1!Ye-3%$BJ4?k$2X(G8a((pQKKUnh!{~5*XD$a=vCczM?;i>NZ_E16i3dOJ zU;|6FbTAAhJ1SDC`P-Of8pMSP@zNnDJvI{Dkt{4x7q z&*=ZfW}nbEzfgNu(T7lzq5?IaoSd4O6cV}~_B&(c(moMW*H!fHU9_@uK&=Gat~pI| zz%0QK*t;Pe#jmS~$WO9hqJ&8B_Qi?`{Kj}R&2s4{np554D z{3{Xz$$UznEAW!Y8sf{a?@F0V6Q8UM+Hd8}!!4@Dw$AUiW#m1k_3DKoH=TKiNyBT0 zP7d5~JRchDyucS4n9Slpd|0E;=Ft8@l?zi>oeF;AMDDpUEO5O)_@h-&8*%z|2_gb` zHz)&%$>YoM>cz7rH)C)3p|tQv`hVjr-doZI$5Nf-^&#kE+R1^$D^{ebB@Qz#=>*?lcF{u2_ z5_sp_v-Z)UgBAv{V3jM9>vFObV-s9|y5hyVXqxhsS-G>- zi!AkZppny&_B6uBxY*#SP@wrMfgl;Z{QHU7AL9~pTKdmM8x-HV@b}T=1WTBIvh>$a zIV)*eMP}%AS8T@=>#^Q_j8?4MPb5nNrcCi$T!fx!a?WHnES6 zvp8(&;MA)tZWdafE0?P~84+6}VPcgUz4kMt`tR@6T+C>E?Rztvm}zI+M0yv^cb`It zmKB}>Kwv+J7X8L=DpXbdD)QA&eQj8u%{t|fT6JgZn2WU#Mdc{FnS|lrVsr=Zu&1po zp*qvyjS~cWb=B$TnKi6fYkdY%W<~tz*gHPDqg1>$*OqpJySWKY`G#m#?j#6yBBK8@@H-Zro*C-EiHK8oCVd2nsf`i&MPljs~b>2k)H z280ChSCSP*^9)zZ?LXW%&I+zP)tckDo6NmB(<)NwI?gwc4<~yd7lvw04&>tsm!fdW zzCWH9*{mnlruF3LH?I#uI0q`zwfMuHjdg5p8_w~ozi4^Y6aE}~*RYMNvGxQV)Zm4Nddfh|Uh?^O zS^m~X5?p&125W_N3hYuXTR1vSJ@T1l;*YLNgTebAhz%Rf z%(P$2avZ7PI+>nhobyZuIx-#Anx}n%%v~aBVeZsPJyB$WlCh6!OI3yxe6zC5y_|S# z;H+_Qo_2&tec5 zP3h8)IRB3J*ebB)SHX|V_JmO0FtgKK#T+s9wd~$<19#OhRE}0g`gQTAljrjM|7pva zkLH_i)FU09S0K2j_OCoxENrASW6~4kN25!$rdH4PRO!dthwHyu4>)lwMzK6r%vP-V z*8H_e`h5hWG8-$7Qp5+3Fj)OY>NH>m60UY6D_gh3iY{)YCPA#KJ;jr&-CzA^=T9)? z9nJfZ&jVdx6*0U-A#*1wq0ZiXZJO_c6Iy=}8JXY|c`iY+rO>P}zK4=nk`Sv`%pNdm z)JajObZ1ePT2wyETlMody~nyoSjr&kslil?nLKaDXseaH8T_pQ*uy>V?B;)%WDb0G zQM~nbeM4F|!|Ul0EV=qn_;!G??kH^fjb9pn!lX>GnDeV#h0mvOHRW(sY1skcQ?;En z;br*%^*ETa?(s7IXiwH12(46lE_e~nN#_2>hQ(vx8cW52>2HU>3Aqhie;N^y z0NA4~B62Y6tzG z^r_oh4?K-t9R9D@mA8pj5?)jmJz4ehbMw7k2F+AgNcg5w6k?kF2hOdVnW4y}{8Bjg zg0ka0RAlD)tBU==jw3bHqs?QVk(KhZUQosC)W(jHSTALkK4kqd+H_c`4_)oXELY9%Z=fUxELA&ixnOe0KjsB_;Lzxz)k^Yox`dl!J40F-qo__UVOb8n$o= z*7E%4Fmtj}jp^5tI}RzCV$u9EdWl ztt`8oD0B9y(q zk@B*=C|oy*Rrq-fcYooYv3@e_n|I@SE-dT-ez;sWVCkFCaJjPuan{LX`djV!tvL~# zUBE)$a8dnIo!d+z?PXVIs&aL#H2hXZW1>IW&C6_ds)hPYT#6Iv_3q~9`|-q*!m$7; zo0^QJQU29I4BTLke@U5RtA6ffl&oorqOT5&I%6@MGY@%l@lO8L%!a(NJ*tT#-qT-? zZjtdX%B*e4TMyTARZWYnJ|Ek}@AQNnZU~CtF%cvHp`%c_B_?9jv+xFrQ{3FN1T=5& z^i-#wcrH+N8I{S-%*591911vfs3?x6zSc zd#oDpCa(mvvmKgQ(r#|}Cy1FDkFANfk;dwYUx5-@s*c$;uO&`=kK6{&C%l1vh2U5` zSSE2C9CL!*j68tQe^LP@o5iI6A}nbn?N}GY;kCOI6 z%3l*UOmfdHtUidl)rTbV&5hwc-#Zz2It-?%dH)cXk`0H%_1hmWkcUVn`&yB9!50e5 z3g?kZMR=vI(1myLP8eoqr1Sj&^Wu@$N9r#;Agz+z9^B^}B*QMJpBq*=boA|VtZ1(T z;q@J1Z`-=*TP6;86x0|oP6>OK?5|L;yhR~8+m%st*;APKR4$+M7+ENn^!;(!xX|g! z+#n*7P2zf&b24?p)?zH6%5zwZ0^vGELauMT;b#cC_35fFuTm6r<+EKGDMET?duuJ= zC~F(Khc=V3v5%QAws}5ywi9A+XZwBl8nii1JWply66@SRWklx#`UnoF1eCNvl$u`~ zqpj~dd|d6cav%L(Bh`LAC4YCki8<|3(V`73=mwYEa$LqbdfMJje4&cpGeh09ayAe{ z)&OQMcJK$BZF%=|y_nqBTml4o@p84-qBAXVYklugo@0n5WOa$kXja~Vp5k!L1$H9^Y6(+E|jqyI~%+LP$COfcO=@_1)k?u5u4_T?vOv*gEV)@ zTJuq%iHqunA#_XvOJ?ynUfVvcWB!ntv$~&^Sh5!G_NgdMDlfB zDvX!Boajw!ppvd`*$;#}og#ePGPwFYk7H`C|DbY;`=aO zZ=~+~4S=~XzM&ze!FuamAJ;mGgrY$R)m(7STD{xQFjYx%xF1?O@#T1*`=Kqz>ZHsG zX?botX`s7L#nug#E4+@Ij|{X8KLj(YObv4~$-pPf^~T1k@7WKAAr?kSyXU#Sjuu-ICcFSzto zUIVZDzJmnhsA0T>W!u}8*Ai!)&e5r|K7xIpPIRu*FEnp3S*qazexUsLTS;qZ#lV_ z2HxJjDmaJWYhbL%HdXFn?#G6E66pC!{_MfIPn7(Z;ziPKJ38IITE`Wmd9Ban+{Rl;?eu(heNNoTc&9m;OlSY z=sb-LO4w2umHt{-IQd|p=<q$5`EQsG`f^yE47wh35JL0OycZ4VuLxiM_s3p zcAyi!V$edjliDCDjr(Mg)_J7Ln{iHXg`su2{YHc|IvO-DNcOHqb1#n7tZ1o`M+Y-H z5xSZfe+!Sfl?BtF=RAs#;rh(gD6tYyMo!6i& zyPRv^neQi&cwHZQD4zcD>dQO4(F$JU`hMQlwLaQhGMnd0gyraV%JRTXs7d_N>fNs8)_nKwpCIq{YG9|0BDI3GYJ^p3T02^Z}1EC@mNTtIu;59hVEA7b-$ z>Xca=try$y$0afmw0Nn5)wi0MxMTwwBp|4sg{s~p z7W(&PR(RFJLVuNW>}I>v!L}7PKl~0>x}R{O!xY``5L0P5d|@TtNp6*%`I}cRCsD0idLD|6P@`U)>|-0IH@&{dOB$I; zTU<#gve`CE*!UV~yF_nhM4|eG=t*?ZK!=9D z(}XG~HfrGmyH}47OQ*)$McR9gRy_!ECVGewpazf76B6lglvSN-Z{tFp!-_yU@m=8D z>T_)P@qe7l-dgUZlLRiWlAdzTV>EfLe{H5!eCshOK=5vSq%o zCELLR>@BUzvbnZCc#+E~5>rjqH|`EfrRLbypWDb(O-BZ=#~E=*pUoP_z(NX~kxUEz z$(9WcPi5-O!2JW)I?s_KVBfPlRM)3VgUvp5okZkYFnx3Ll1YEHmlRA2RDBR;H&W$N z%y)V2CMtxc7)*G3V2eK<-tSy0Gd_bvk9w$oqq_08GA$Y8b4d{BMM)D+E8Pb5j`!#K zUs8jPu&s?8s&AmU>?4t?Vg6xh!5FwAI9SU;r_T<*yOkHD`mro0eY0WwgwSZW|6qJf z;CSNF8ax&bC3w+MG{lOuex9olIdG8$OAg;^=3NA3N*~Gl8kn+ET}HL%;@;@`=x1Q; z=WE%JC7(S^&eH#~Ya#7BPBISe^U3{WA+bz_xDs}XT@d~=nR}dDU1vdb64{EylXw@_=M~OO6jSUx>M!36 zqrMMAG^a%V5a!OtO%35~2PfvMF`+Z8RwJ`|^J~M-{SOWnskl|2=f1*Z2;3#v&7(5kV$7+7H z(Cgf)o27N*tZ(u<2btBeM_^e=nvl+ZhE=uPJRf<}eiJUdYc&rSH4xnz^pw;U^~yEAdbs z{H?nPqe8r4GnXLJ4xG@UG}L?IWA(|(IaxyNuSJNfCQAQYP;&61#?{D=>uFMB<4d&s z#`8P-Z-vQm-IN@NF&iD9UULZ_3!cUs;ZVfk_#tLhp{>V<;cw?w!<&CdTKCr;Y;9q0 z4GnmQxPaJRjWCObAbnMbR!wK6%ADF2=2hp}`<^V%rQHO=YNGsI4d8nPQbmbXmv0+T3Ian)^IE1N!r=h~_!(t|<@TRfLkB zGaN5of~p(Kf*#U&CHBUH1^kb@n6o(((ycKG3LJ;7W(=TX`KnEK1jg znmSX(6LxwPj@OHjY|&yGkr{&~8@O;)Zn?M82=uwH&gqxvDPVlDJ57-34ypc>L*XFuS?jjt_U^hi7ltd_}768qz0a!rUkdp z8*C8mG9i{-1^(9M`bM*M<}dmN4NgBY>ucY&OY)N5#S5nX>r8|Mc-_TkY_)`wPp{HZ z(6sT>=?JRkxq?nf>*^LY|MZRm3zfUl`9L~XVAHRXk*SNUzP(aIoHL#d$)*g}vyl3a zd5rp>L0l^xjO1F&{dTP|m$DWOb{jK6>=5na;U%wA^#P0KH(`zWlR*eL=_4O?$?#G? zcBft5(P2rKe(K*v= z#F@PB@^doqwFD$`9dt)gMnw}?r{tuF^f1CahD zPhTxnmSulk(SaqN5LZZL4lb&5lr^YMqLCvNZhts)?jkqiW0sbAS0N6p`luFC0hYsF zg3GVR_19Z?O28l3K>N)A7`5{?lkIy;I_l~Ny(viWXQYl*yRkq6DH#_K%?paYId@kI zXQs5*RBwWXu>C$D*54kx5ScH!%pa7U@0|V##U^EQ$)_;CRm-*^56A4E?$n;7k4Ugv z7Ui3#yq0r$_MDe!J|sxUGfF=xh~bgUd>w*Thf*7cjqCheOlGgnbL(Zm=lfi?I^ju4 zmaKmFAZVCs?P3+T55<4504F6pTyD*LMTO$0uvU5rtO-eAv1-k4RwPF&JV1>oCIq`U z0!QM!Nd%Xmw|7{(neB%R21|?#>Z^=~)TOs7=qVZj)JJX@|41IS(2K|^RHYwo;Iq47 zVZby5(1hSeVZX>;n(P7Rmi2Y425j-ia`{=j3ps0MDmLY84-TAQ81@qcJ@oP`&?ZVF zv&o&U%hD{y1Tkm1RNJ`1L!ni! zwGPdz=zRu2@hv6q)_;!tl3&4Uc${PT{Dv0Wgkde(p;;zqC1?D{kU@fk%k8EB{WK@jjta; X)c4PnC<1pNS4#F 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 + + + Automatic Export Settings + Einstellungen für automatischen Export + + autoExportEnabled + + + Enable or disable the automatic export feature. More information in the documentation + Aktivieren oder deaktivieren Sie die Funktion für den automatischen Export. + false + + + autoExportSelectedSalesChannel + + + Select the sales channel for automatic export. + Wählen Sie den Vertriebskanal für den automatischen Export. + sales_channel + Select a sales channel... + Vertriebskanal auswählen... + + + autoExportSelectedLanguage + + + Select the language for the export. + Wählen Sie die Sprache für den Export des Vertriebskanals. + language + Select a language... + Sprache auswählen... + + diff --git a/src/Resources/config/services.xml b/src/Resources/config/services.xml index 63938d55..f0153e12 100644 --- a/src/Resources/config/services.xml +++ b/src/Resources/config/services.xml @@ -202,5 +202,16 @@ + + + + + + + + + + + diff --git a/src/ScheduledTask/ExportScheduledTask.php b/src/ScheduledTask/ExportScheduledTask.php new file mode 100644 index 00000000..69dc7652 --- /dev/null +++ b/src/ScheduledTask/ExportScheduledTask.php @@ -0,0 +1,21 @@ +systemConfig->get('OmikronFactFinder.config.autoExportEnabled'); + $salesChannel = $this->systemConfig->get('OmikronFactFinder.config.autoExportSelectedSalesChannel'); + $language = $this->systemConfig->get('OmikronFactFinder.config.autoExportSelectedLanguage'); + + if (!$autoExportEnabled || !$salesChannel || !$language) { + $this->factfinderLogger->info('FactFinder auto export is disabled or not configured properly.'); + + return; + } + + try { + $this->feedExportHandler->__invoke(new FeedExport( + $salesChannel, + $language, + 'products' + )); + } catch (\Exception $e) { + $this->factfinderLogger->error($e->getMessage()); + } + } +} diff --git a/src/Subscriber/EnrichProxyDataEventSubscriber.php b/src/Subscriber/EnrichProxyDataEventSubscriber.php new file mode 100644 index 00000000..38929a92 --- /dev/null +++ b/src/Subscriber/EnrichProxyDataEventSubscriber.php @@ -0,0 +1,26 @@ + 'enrichData']; + } + + public function enrichData(EnrichProxyDataEvent $event): void + { + $data = $event->getData(); + $data['example_data'] = [ + 'some_data' => 'data_1moja', + 'some_data2' => 'data_2', + ]; + $event->setData($data); + } +} From 19ca2f25f82253e56ca0b393f9e2c759daadc6de Mon Sep 17 00:00:00 2001 From: robertsaternus Date: Tue, 19 Aug 2025 10:40:55 +0200 Subject: [PATCH 2/3] Update --- README.md | 4 ++-- src/ScheduledTask/ExportScheduledTask.php | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7364c5e2..84044172 100755 --- a/README.md +++ b/README.md @@ -212,7 +212,7 @@ You can check if the above data is correctly set by clicking on the `Test Connec ![automatic-export-settings.png](docs/assets/automatic-export-settings.png) -The plugin provides a configuration section in the administration panel that allows you to enable or disable automatic export and define which sales channel and language should be used for the export. +The plugin provides a configuration section in the administration panel that allows you to enable or disable automatic export and define which sales channel and language should be used for the products export. By default, the automatic export is disabled. Once the administrator enables it and choose the sales channel and language, the automatic export will be active. By default, automatic export is performed once every 48 hours. If you want to change this value, you must overwrite the `ExportScheduledTask` file as follows: @@ -220,7 +220,7 @@ By default, automatic export is performed once every 48 hours. If you want to ch public static function getDefaultInterval(): int { // change this value to adjust the export interval. This value is in seconds. - // For example, to set the interval to 48 hours = 172800, return 600. + // for example: 48 hours = 172800 return 172800; } diff --git a/src/ScheduledTask/ExportScheduledTask.php b/src/ScheduledTask/ExportScheduledTask.php index 69dc7652..59049b8d 100644 --- a/src/ScheduledTask/ExportScheduledTask.php +++ b/src/ScheduledTask/ExportScheduledTask.php @@ -1,4 +1,5 @@ Date: Tue, 19 Aug 2025 10:43:41 +0200 Subject: [PATCH 3/3] Delete src/Subscriber/EnrichProxyDataEventSubscriber.php --- .../EnrichProxyDataEventSubscriber.php | 26 ------------------- 1 file changed, 26 deletions(-) delete mode 100644 src/Subscriber/EnrichProxyDataEventSubscriber.php diff --git a/src/Subscriber/EnrichProxyDataEventSubscriber.php b/src/Subscriber/EnrichProxyDataEventSubscriber.php deleted file mode 100644 index 38929a92..00000000 --- a/src/Subscriber/EnrichProxyDataEventSubscriber.php +++ /dev/null @@ -1,26 +0,0 @@ - 'enrichData']; - } - - public function enrichData(EnrichProxyDataEvent $event): void - { - $data = $event->getData(); - $data['example_data'] = [ - 'some_data' => 'data_1moja', - 'some_data2' => 'data_2', - ]; - $event->setData($data); - } -}