superedit-PRZYPOMNIJ_FUNC.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693
  1. <?php
  2. function PRZYPOMNIJ_FUNC() {
  3. // TODO: id zasobu IN7_DZIENNIK_KORESP
  4. // https://biuro.biall-net.pl/SE/se-dev-pl/index.php?MENU_INIT=IN7_DZIENNIK_KORESP_EDIT&ARG1=EDIT&ARG1_VAL=3530
  5. // https://biuro.biall-net.pl/SE/se-dev-pl/index.php?MENU_INIT=IN7_MK_BAZA_DYSTRYBUCJI_EDIT&ARG1=EDIT&ARG1_VAL=375
  6. // OK https://biuro.biall-net.pl/SE/se-dev-pl/procesy5.php?task=CRM_PROCES&filtr_search_id=&filtr_id=2783
  7. // index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobProjID}#EDIT/{$ID}
  8. // index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobKorespID}#EDIT/{$ID}
  9. Lib::loadClass('ProcesHelper');
  10. $zasobProjID = ProcesHelper::getZasobTableID('IN7_MK_BAZA_DYSTRYBUCJI');
  11. $zasobKorespID = ProcesHelper::getZasobTableID('IN7_DZIENNIK_KORESP');
  12. SEF('MENU');
  13. MENU();
  14. $db = DB::getDB();
  15. //written by A.Binder at 2008-09-16 for sync purposes
  16. //@2012-05-03 mods for deep searching of duties P_ID
  17. $DEEP_SQL_RECURSE = 10; //jak głęboko wnikać w strukturę spraw PID/ID
  18. echo'<style type="text/css">'."
  19. body{font-family:arial;}
  20. .box{border:1px solid #999;padding:5px;margin:5px;}
  21. .box-center{border:1px solid #999;padding:5px;margin:5px auto;}
  22. .box-silver{border-color:#999;}
  23. .box-red{border-color:#f00;}
  24. .box-blue{border-color:#00f;}
  25. .box-green{border-color:#008000;}
  26. .box-hover-active{background:#fff;border-color:#999;}
  27. .box-hover-active:hover{background:#eee;border-color:#000;}
  28. .btn-box{margin:0 2px 0 0;padding:0 3px;background:#bbb;color:#fff;text-decoration:none;border:0;font-weight:bold;}
  29. .tbl-view {margin:0;font-size:small;}
  30. .tbl-view tbody tr.row-0 {background:#f3f3f3;}
  31. .tbl-view tbody tr.row-1 {background:#fff;}
  32. .tbl-view caption{text-align:left;font-style:italic;font-size:medium;}
  33. .tbl-view caption em{padding:0 5px;font-size:13px;font-style:normal;}
  34. .tbl-view th{padding:0 3px;font-size:small;}
  35. .tbl-view td{padding:0 3px;}
  36. .tbl-view .r{text-align:right;}
  37. .tbl-view thead th {background:#F3F3F3;}
  38. .tbl-view thead td {background:#F3F3F3;}
  39. .tbl-przypomnij {margin:5px 0;}
  40. .use-filtr_only_stare tr.l-app-stare{display:none;}
  41. .use-filtr_hide_PROJEKT tr.type-PROJEKT {display:none;}
  42. .use-filtr_hide_POCZTA tr.type-POCZTA {display:none;}
  43. .use-filtr_hide_PROCES tr.type-PROCES {display:none;}
  44. .nobr {white-space:nowrap;}
  45. ".'</style>';
  46. echo '<script type="text/javascript">' . "
  47. jQuery(document).ready(function(){
  48. jQuery('#filtr_only_stare').click(function(e){
  49. var n=jQuery(this);
  50. var tbl=jQuery('table.tbl-przypomnij');
  51. if (n.is(':checked')) {
  52. tbl.addClass('use-filtr_only_stare');
  53. } else {
  54. tbl.removeClass('use-filtr_only_stare');
  55. }
  56. });
  57. jQuery('#filtr_hide_PROJEKT').click(function(e){
  58. var n=jQuery(this);
  59. var tbl=jQuery('table.tbl-przypomnij');
  60. if (n.is(':checked')) {
  61. tbl.addClass('use-filtr_hide_PROJEKT');
  62. } else {
  63. tbl.removeClass('use-filtr_hide_PROJEKT');
  64. }
  65. });
  66. jQuery('#filtr_hide_POCZTA').click(function(e){
  67. var n=jQuery(this);
  68. var tbl=jQuery('table.tbl-przypomnij');
  69. if (n.is(':checked')) {
  70. tbl.addClass('use-filtr_hide_POCZTA');
  71. } else {
  72. tbl.removeClass('use-filtr_hide_POCZTA');
  73. }
  74. });
  75. jQuery('#filtr_hide_PROCES').click(function(e){
  76. var n=jQuery(this);
  77. var tbl=jQuery('table.tbl-przypomnij');
  78. if (n.is(':checked')) {
  79. tbl.addClass('use-filtr_hide_PROCES');
  80. } else {
  81. tbl.removeClass('use-filtr_hide_PROCES');
  82. }
  83. });
  84. });
  85. " . '</script>';
  86. //$_SERVER['argv'][1] = addslashes($_SERVER['argv'][1]);// ???
  87. //aby było uniwersalnie do wersji KIKE
  88. if(file_exists("../../.config")) include("../../.config");
  89. if(file_exists("../.config")) include("../.config");
  90. if(file_exists("../.config.php")) include("../.config.php");
  91. if(file_exists(".config.php")) include(".config.php");
  92. //if ($_GET['KTO']) $_SERVER['argv'][1] = $_GET['KTO'];// ???
  93. $sql_allowed_users = array();
  94. $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_MK_BAZA_DYSTRYBUCJI` WHERE `L_APPOITMENT_USER` != '' ; ";
  95. // TODO: $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_MK_BAZA_DYSTRYBUCJI` WHERE `L_APPOITMENT_USER` != '' and ( A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or A_CLASSIFIED='' ) ";
  96. $result=$db->query($zap_sql) or die("blad zapytania do bazy ".$zap_sql);
  97. while ($r = $db->fetch($result)) {
  98. $sql_allowed_users[ $r->L_APPOITMENT_USER ] = true;
  99. }
  100. $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_DZIENNIK_KORESP` WHERE `L_APPOITMENT_USER` != '' ; ";
  101. //TODO: $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_DZIENNIK_KORESP` WHERE `L_APPOITMENT_USER` != '' and ( A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or A_CLASSIFIED='' ) ; ";
  102. $result=$db->query($zap_sql) or die("blad zapytania do bazy ".$zap_sql);
  103. while ($r = $db->fetch($result)) {
  104. $sql_allowed_users[ $r->L_APPOITMENT_USER ] = true;
  105. }
  106. $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `CRM_PROCES` WHERE `L_APPOITMENT_USER` != '' ; ";
  107. //TODO: $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_DZIENNIK_KORESP` WHERE `L_APPOITMENT_USER` != '' and ( A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or A_CLASSIFIED='' ) ; ";
  108. $result=$db->query($zap_sql) or die("blad zapytania do bazy ".$zap_sql);
  109. while ($r = $db->fetch($result)) {
  110. $sql_allowed_users[ $r->L_APPOITMENT_USER ] = true;
  111. }
  112. $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `CRM_LISTA_ZASOBOW` WHERE `L_APPOITMENT_USER` != '' ; ";
  113. //TODO: $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_DZIENNIK_KORESP` WHERE `L_APPOITMENT_USER` != '' and ( A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or A_CLASSIFIED='' ) ; ";
  114. $result=$db->query($zap_sql) or die("blad zapytania do bazy ".$zap_sql);
  115. while ($r = $db->fetch($result)) {
  116. $sql_allowed_users[ $r->L_APPOITMENT_USER ] = true;
  117. }
  118. $selected_user = isset($_GET['KTO'])? $_GET['KTO'] : '';//$_SERVER['argv'][1];
  119. if (!empty($selected_user)) {
  120. if (!array_key_exists($selected_user, $sql_allowed_users)) {
  121. $selected_user = '';
  122. $selected_user_err = 'Brak danych - wybierz innego użytkownika';
  123. }
  124. }
  125. // TODO: error jeśli KTO nie ma na liście
  126. ?>
  127. <div class="alert alert-info">
  128. <strong>Testowa wersja przypomnij</strong> - <a href="index.php?MENU_INIT=PRZYPOMNIJ&KTO=<?php echo $selected_user; ?>">uruchom</a>
  129. </div>
  130. <?php
  131. echo'<form action="" method="get">';
  132. echo '<input type="hidden" name="MENU_INIT" value="PRZYPOMNIJ_FUNC" />';
  133. echo'<a href="'."index.php?MENU_INIT=PRZYPOMNIJ_FUNC".'" >'."Wszyscy".'</a>';
  134. echo' | ';
  135. echo'<a href="'."index.php?MENU_INIT=PRZYPOMNIJ_FUNC&KTO=".$_SESSION['AUTHORIZE_USER'].'" >'."Twoje (".$_SESSION['AUTHORIZE_USER'].")".'</a>';
  136. echo' | ';
  137. if (!empty($sql_allowed_users)) {
  138. echo'<select name="'."KTO".'">';
  139. echo'<option value="">'." Wszyscy ".'</option>';
  140. foreach ($sql_allowed_users as $k => $v) {
  141. $sel = ($k == $selected_user)? ' selected="selected"' : '';
  142. echo'<option value="'.$k.'"'.$sel.'>'.$k.'</option>';
  143. }//end foreach
  144. echo'</select>';
  145. }
  146. echo'<input type="submit" value="'."Pokaż".'" />';
  147. echo '<span style="padding:0 0 0 30px;">';
  148. $chkd = (isset($_GET['filtr_only_stare']) && $_GET['filtr_only_stare'] == 1)? 'checked="checked"' : '';
  149. echo '<input type="checkbox" name="filtr_only_stare" value="1" '.$chkd.' id="filtr_only_stare" />';
  150. echo '<label title="' . "L_APPOITMENT_DATE w przeszłości" . '">' . " Tylko przedawnione" . '</label>';
  151. echo '</span>';
  152. echo '<span style="padding:0 0 0 30px;">';
  153. echo '<label>' . "Ukryj: " . '</label>';
  154. $chkd = (isset($_GET['filtr_only_stare']) && $_GET['filtr_only_stare'] == 1)? 'checked="checked"' : '';
  155. echo '<input type="checkbox" name="filtr_hide_PROJEKT" value="1" '.$chkd.' id="filtr_hide_PROJEKT" />';
  156. echo "PROJEKT";
  157. echo '<input type="checkbox" name="filtr_hide_POCZTA" value="1" '.$chkd.' id="filtr_hide_POCZTA" />';
  158. echo "POCZTA";
  159. echo '<input type="checkbox" name="filtr_hide_PROCES" value="1" '.$chkd.' id="filtr_hide_PROCES" />';
  160. echo "PROCESY";
  161. echo '</span>';
  162. echo'</form>';
  163. if ($selected_user_err) {
  164. echo '<div class="alert alert-error">' . $selected_user_err . '</div>';
  165. return;
  166. }
  167. $sql_extra = "";
  168. if ($selected_user) {
  169. $sql_extra = " and ( kor.`L_APPOITMENT_USER`='".$selected_user."'
  170. -- or proj.`L_APPOITMENT_USER`='".$selected_user."'
  171. ) ";
  172. }
  173. $zap_sql = "select kor.*
  174. , 'POCZTA' as CO
  175. -- , 'POCZTA_0' as _test
  176. -- , kor.`L_APPOITMENT_USER` as _test_kor_app
  177. -- , proj.`L_APPOITMENT_USER` as _test_proj_app
  178. , IF(''='".$selected_user."', '',
  179. IF(kor.`L_APPOITMENT_USER`='".$selected_user."', kor.`ID`, proj.`ID`)
  180. ) as _test_id
  181. , IF(''='".$selected_user."', '',
  182. IF(kor.`L_APPOITMENT_USER`='".$selected_user."', 'kor.', 'proj.')
  183. ) as _test_type
  184. , unix_timestamp(now()) as NOW
  185. , unix_timestamp(kor.A_RECORD_UPDATE_DATE) as A_RECORD_UPDATE_DATE_TS
  186. , proj.`ID` as PROJ_ID
  187. , proj.`P_ID` as P_P_ID
  188. , proj.`M_DIST_DESC` as P_M_DIST_DESC
  189. , proj.`M_DISTRIBUTOR` as P_M_DISTRIBUTOR
  190. , kor.`K_LOKALIZACJA`
  191. , kor.`K_LOKALIZACJA_NEW`
  192. , kor.`T_TELBOX_NEIGHBOUR_IN_ID`
  193. , kor.`T_TELBOX_NEIGHBOUR_IN_ID_NEW`
  194. from `IN7_DZIENNIK_KORESP` as kor
  195. left join `IN7_MK_BAZA_DYSTRYBUCJI` as proj on (proj.`ID`=kor.`ID_PROJECT`)
  196. where (
  197. kor.`A_STATUS`='WAITING'
  198. or ( kor.`K_LOKALIZACJA`!=kor.`K_LOKALIZACJA_NEW` and kor.`K_LOKALIZACJA_NEW`!='' )
  199. or ( kor.`T_TELBOX_NEIGHBOUR_IN_ID`!=kor.`T_TELBOX_NEIGHBOUR_IN_ID_NEW` and kor.`T_TELBOX_NEIGHBOUR_IN_ID_NEW`>0 )
  200. or ( kor.`ID_ZASOB`!=kor.`ID_ZASOB_NEW` and kor.`ID_ZASOB_NEW`!='' )
  201. or ( kor.`A_STATUS`!='OFF_HARD' )
  202. )
  203. and kor.`A_STATUS`!='DELETED'
  204. and proj.`A_ADM_COMPANY` not like '%HIDDEN%'
  205. -- and ( kor.A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or kor.A_CLASSIFIED='' )
  206. ".$sql_extra."
  207. union
  208. select kor.*
  209. , 'POCZTA' as CO
  210. -- , 'POCZTA_1' as _test
  211. -- , kor.`L_APPOITMENT_USER` as _test_kor_app
  212. -- , proj_1.`L_APPOITMENT_USER` as _test_proj_app
  213. , IF(''='".$selected_user."', '',
  214. IF(kor.`L_APPOITMENT_USER`='".$selected_user."', kor.`ID`, proj_1.`ID`)
  215. ) as _test_id
  216. , IF(''='".$selected_user."', '',
  217. IF(kor.`L_APPOITMENT_USER`='".$selected_user."', 'kor.', 'proj.')
  218. ) as _test_type
  219. , unix_timestamp(now()) as NOW
  220. , unix_timestamp(kor.`A_RECORD_UPDATE_DATE`) as A_RECORD_UPDATE_DATE_TS
  221. , proj.`ID` as PROJ_ID
  222. , proj.`P_ID` as P_P_ID
  223. , proj.`M_DIST_DESC` as P_M_DIST_DESC
  224. , proj.`M_DISTRIBUTOR` as P_M_DISTRIBUTOR
  225. , kor.`K_LOKALIZACJA`
  226. , kor.`K_LOKALIZACJA_NEW`
  227. , kor.`T_TELBOX_NEIGHBOUR_IN_ID`
  228. , kor.`T_TELBOX_NEIGHBOUR_IN_ID_NEW`
  229. from `IN7_DZIENNIK_KORESP` as kor
  230. left join `IN7_MK_BAZA_DYSTRYBUCJI` as proj on (proj.`ID`=kor.`ID_PROJECT`)
  231. left join `IN7_MK_BAZA_DYSTRYBUCJI` as proj_1 on (proj_1.`ID`=proj.`P_ID`)
  232. where (
  233. kor.`A_STATUS`='WAITING'
  234. or ( kor.`K_LOKALIZACJA`!=kor.`K_LOKALIZACJA_NEW` and kor.`K_LOKALIZACJA_NEW`!='' )
  235. or ( kor.`T_TELBOX_NEIGHBOUR_IN_ID`!=kor.`T_TELBOX_NEIGHBOUR_IN_ID_NEW` and kor.`T_TELBOX_NEIGHBOUR_IN_ID_NEW`>0 )
  236. or ( kor.`A_STATUS`!='OFF_HARD' )
  237. )
  238. and kor.A_STATUS!='DELETED'
  239. and proj.`A_CLASSIFIED` not like '%HIDDEN%'
  240. and proj_1.`A_CLASSIFIED` not like '%HIDDEN%'
  241. and kor.A_CLASSIFIED not like '%HIDDEN%'
  242. -- and (kor.A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or kor.A_CLASSIFIED='')
  243. ";
  244. if ($selected_user) {
  245. $zap_sql .= "\n and ( kor.`L_APPOITMENT_USER`='".$selected_user."' or proj_1.`L_APPOITMENT_USER`='".$selected_user."' ) ";
  246. }
  247. $zap_sql_where = "";
  248. if ($selected_user) {
  249. $zap_sql_where = "\n and proj.`L_APPOITMENT_USER`='' ";
  250. }
  251. for ($CD = 2; $CD <= $DEEP_SQL_RECURSE; $CD++) {
  252. if ($selected_user) {
  253. $zap_sql_where .= "
  254. and proj_".($CD-1).".`L_APPOITMENT_USER`=''
  255. ";
  256. }
  257. $zap_sql_join .= "
  258. left join `IN7_MK_BAZA_DYSTRYBUCJI` as proj_".$CD." on (proj_".$CD.".`ID`=proj_".($CD-1).".`P_ID`)
  259. ";
  260. $zap_sql .= "
  261. union
  262. select kor.*
  263. , 'POCZTA' as CO
  264. -- , 'POCZTA_".$CD."' as _test
  265. -- , kor.`L_APPOITMENT_USER` as _test_kor_app
  266. -- , proj_".$CD.".`L_APPOITMENT_USER` as _test_proj_app
  267. , IF(''='".$selected_user."', '',
  268. IF(kor.`L_APPOITMENT_USER`='".$selected_user."', kor.`ID`, proj_".$CD.".`ID`)
  269. ) as _test_id
  270. , IF(''='".$selected_user."', '',
  271. IF(kor.`L_APPOITMENT_USER`='".$selected_user."', 'kor.', 'proj.')
  272. ) as _test_type
  273. , unix_timestamp(now()) as NOW
  274. , unix_timestamp(kor.`A_RECORD_UPDATE_DATE`) as A_RECORD_UPDATE_DATE_TS
  275. , proj.`ID` as PROJ_ID
  276. , proj.`P_ID` as P_P_ID
  277. , proj.`M_DIST_DESC` as P_M_DIST_DESC
  278. , proj.`M_DISTRIBUTOR` as P_M_DISTRIBUTOR
  279. , kor.`K_LOKALIZACJA`
  280. , kor.`K_LOKALIZACJA_NEW`
  281. , kor.`T_TELBOX_NEIGHBOUR_IN_ID`
  282. , kor.`T_TELBOX_NEIGHBOUR_IN_ID_NEW`
  283. from `IN7_DZIENNIK_KORESP` as kor
  284. left join `IN7_MK_BAZA_DYSTRYBUCJI` as proj on (proj.`ID`=kor.`ID_PROJECT`)
  285. left join `IN7_MK_BAZA_DYSTRYBUCJI` as proj_1 on (proj_1.`ID`=proj.`P_ID`)
  286. ".$zap_sql_join."
  287. where (
  288. kor.`A_STATUS`='WAITING'
  289. or ( kor.`K_LOKALIZACJA`!=kor.`K_LOKALIZACJA_NEW` and kor.`K_LOKALIZACJA_NEW`!='' )
  290. or ( kor.`T_TELBOX_NEIGHBOUR_IN_ID`!=kor.`T_TELBOX_NEIGHBOUR_IN_ID_NEW` and kor.`T_TELBOX_NEIGHBOUR_IN_ID_NEW`>0 )
  291. or ( kor.`A_STATUS`!='OFF_HARD' )
  292. )
  293. and kor.`A_STATUS`!='DELETED'
  294. and proj.`A_CLASSIFIED` not like '%HIDDEN%'
  295. and proj_1.`A_CLASSIFIED` not like '%HIDDEN%'
  296. and kor.A_CLASSIFIED not like '%HIDDEN%'
  297. -- and ( kor.A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or kor.A_CLASSIFIED='' )
  298. ";
  299. if ($selected_user) {
  300. $zap_sql .= $zap_sql_where . "\n" . "and ( kor.`L_APPOITMENT_USER`='".$selected_user."' or proj_".$CD.".`L_APPOITMENT_USER`='".$selected_user."' ) ";
  301. }
  302. }
  303. if(isset($_GET['DBG']) && $_GET['DBG']==1){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">zap_sql: '."\n";print_r($zap_sql);echo'</pre>';}
  304. $result = $db->query($zap_sql) or die("blad zapytania do bazy ".$zap_sql);
  305. $t = 0;
  306. echo '<table border="1" cellspacing="0" cellpadding="0" width="800" class="tbl-view tbl-przypomnij">';
  307. echo'<thead>';
  308. echo '<tr>';
  309. echo '<th style="width:5%;">'."CO".'</th>';
  310. echo '<th>'."Numer Dziennika Korespondencji".'</th>';
  311. echo '<th>'."Data Dziennika".'</th>';
  312. echo '<th>'."Typ".'</th>';
  313. echo '<th>'."Zadanie do wykonania".'</th>';
  314. echo '<th>'."Dane Administracyjne Rekordu Dziennika Korespondencji".'</th>';
  315. echo '<th>'."Od kogo/temat/sprawa".'</th>';
  316. echo '<th>'."Osoba Prowadz.".'</th>';
  317. echo '<th>'."Numer Referencyjny".'</th>';
  318. echo '<th>'."Zadekretowany Numer Sprawy".'</th>';
  319. echo '<th>'."Lokalizacja".'</th>';
  320. echo '</tr>';
  321. echo'</thead>'."\n";
  322. echo'<tbody>'."\n";
  323. while ($h = $db->fetch_array($result)) {
  324. $ILOSC_PISM++;
  325. $JOB = "";
  326. if (($h['K_LOKALIZACJA']!=$h['K_LOKALIZACJA_NEW'])&&($h['K_LOKALIZACJA_NEW']!='')) {
  327. $JOB .= "<font color=red> PRZEMIEŚĆ / WYŚLIJ DOKUMENT DO MIEJSCA</font> :<br> ".$h['K_LOKALIZACJA_NEW']."(".$h['K_LOKALIZACJA_OPIS_NEW'].") ";
  328. }
  329. if (($h['T_TELBOX_NEIGHBOUR_IN_ID']!=$h['T_TELBOX_NEIGHBOUR_IN_ID_NEW'])&&($h['T_TELBOX_NEIGHBOUR_IN_ID_NEW']>0)) {
  330. $JOB .= "<font color=red> PRZEMIEŚĆ / WYŚLIJ DOKUMENT DO MIEJSCA</font> :<br> ".$h['T_TELBOX_NEIGHBOUR_IN_ID_NEW']."(".$h['T_TELBOX_NEIGHBOUR_IN_ID_NEW'].") ";
  331. }
  332. if (($h['NOW']>$h['A_RECORD_UPDATE_DATE_TS']+864000)&&($h['A_STATUS']!='OFF_HARD')) {
  333. $JOB .= "<font color=red> SPRAWA PRZEDAWNIONA PONAD 10 DNI!!! </font> ";
  334. }
  335. if (($h['ID_PROJECT']=='0')) {
  336. $JOB .= "<font color=red> REKORD WYMAGA DEKRETACJI NA SPRAWE </font> ";
  337. }
  338. if (($h['A_STATUS']=='WAITING')) {
  339. $JOB .= "<font color=GREEN> SPRAWA WYMAGA ZAŁATWIENIA (WAITING) </font> ";
  340. }
  341. if (strlen($h['M_DIST_FILES'])>5) {
  342. $JOB .= "<font color=YELLOW> (JEST SKAN) </font> ";
  343. }
  344. $cls = 'row-'.($t = 1 - $t);
  345. $cls .= ' type-' . "POCZTA";
  346. if ($h['L_APPOITMENT_DATE'] > date('Y-m-d')) $cls .= ' l-app-stare';// . ' l-app-date-' . $h['L_APPOITMENT_DATE'];
  347. echo '<tr class="' . $cls . '">';
  348. echo '<td>';
  349. echo $h['CO'];
  350. //echo'<br />('.$h['_test'].')';
  351. //echo'<br />[K.'.$h['ID'].'/P.'.$h['PROJ_ID'].']';
  352. //echo'<br />{K.'.$h['_test_kor_app'].'}';
  353. //echo'<br />{P.'.$h['_test_proj_app'].'}';
  354. if ($selected_user) {
  355. echo'<br /><em style="color:#999;" title="'.$selected_user." przypisany/a do ".$h['_test_type']." ".$h['_test_id'].'">('.$h['_test_id'].')</em>';
  356. //} else {
  357. // echo '<br />';
  358. // if ($h['_test_kor_app']) {
  359. // echo '<em style="color:#999;" title="">(kor. ' . $h['_test_kor_app'] . ')</em> ';
  360. // }
  361. // if ($h['_test_proj_app']) {
  362. // echo '<em style="color:#999;" title="">(proj. ' . $h['_test_proj_app'] . ')</em> ';
  363. // }
  364. }
  365. echo '</td>';
  366. echo '<td>';
  367. echo "L.Dz.(K_ID): ";
  368. echo '<a href="'."index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobKorespID}#EDIT/{$h['ID']}".'">'.$h['ID'].'</a>';
  369. echo ' <a href="'."index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobKorespID}#FILES/{$h['ID']}".'" target="_blank"><i title="Pliki" class="ico-folder-open"></i></a>';
  370. echo '</td>';
  371. echo '<td>'.$h['A_RECORD_CREATE_DATE'].'</td>';
  372. echo '<td>'.$h['K_TYP_KORESP']." -".$h['K_TYP_RODZAJ']." (".$h['K_TYP_RODZAJ_OPIS'].")".'</td>';
  373. echo '<td>'.$JOB.'</td>';
  374. echo '<td>'."Wpr: ".$h['A_RECORD_CREATE_AUTHOR']."/ akt : ".$h['A_RECORD_UPDATE_AUTHOR']."(".$h['A_RECORD_UPDATE_DATE'].")".'</td>';
  375. echo '<td>'.$h['K_OD_KOGO']."/".$h['OD_KOGO_ADRES']."/".$h['K_ZAWARTOS'].'</td>';
  376. echo '<td>'.$h['L_APPOITMENT_USER']." ".$h['L_APPOITMENT_INFO']." ".$h['L_APPOITMENT_INFO']."Termin:".$h['L_APPOITMENT_DATE'].'</td>';
  377. echo '<td>'.$h['K_ZNAK_REFERENTA'].'</td>';
  378. echo '<td>'.$h['ID_PROJECT']." <br><font color=\"#FF5555\">".$h['P_M_DIST_DESC']."</font> (<font color=red> <i>firma</i> <b> ".$h['P_M_DISTRIBUTOR']."</b>)</font> ".'</td>';
  379. echo '<td>'.$h['K_LOKALIZACJA']."(".$h['K_LOKALIZACJA_OPIS'].")".'</td>';
  380. echo '</tr>'."\n";
  381. }// eof while sql
  382. /**
  383. * zapytania:
  384. * 1. wszytkie projekty przypisane do $selected_user
  385. * 2. przypisane do nikogo, gdzie proj. nadrzedny (P_ID) jest przyipsany do $selected_user
  386. * 3. przypisane do nikogo, gdzie proj. nadrzedny do nikogo, a projekt nad nim do $selected_user
  387. * 4. ...
  388. * ...
  389. */
  390. if ($selected_user) {// for recursive search of admins of project @2012-05-03
  391. $extra_proj[1] = " and t1.`L_APPOITMENT_USER`='".$selected_user."' ";
  392. $extra_proj[2] = " and t2.`L_APPOITMENT_USER`='".$selected_user."' ";
  393. $extra_proj[3] = " and t3.`L_APPOITMENT_USER`='".$selected_user."' ";
  394. }
  395. $zap_sql = "select t1.*
  396. -- , 'SPRAWA/PROJEKT' as CO
  397. , 'PROJEKT' as CO
  398. , IF(''='".$selected_user."', '',
  399. IF(t1.`L_APPOITMENT_USER`='".$selected_user."', t1.ID, t1.ID)
  400. ) as _test_proj_id
  401. , unix_timestamp(now()) as NOW
  402. , unix_timestamp(t1.A_RECORD_UPDATE_DATE) as A_RECORD_UPDATE_DATE_TS
  403. from IN7_MK_BAZA_DYSTRYBUCJI as t1
  404. where (
  405. t1.A_STATUS='WAITING'
  406. -- or ( t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > (864000+unix_timestamp(t1.A_RECORD_UPDATE_DATE)) )
  407. -- or ( t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > unix_timestamp(t1.L_APPOITMENT_DATE) and t1.L_APPOITMENT_DATE!='' )
  408. or (
  409. IF(t1.L_APPOITMENT_DATE!=''
  410. , t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > unix_timestamp(t1.L_APPOITMENT_DATE)
  411. , t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > (864000+unix_timestamp(t1.A_RECORD_UPDATE_DATE))
  412. )
  413. )
  414. )
  415. and t1.A_STATUS!='DELETED'
  416. and t1.`A_CLASSIFIED` not like '%HIDDEN%'
  417. -- and ( t1.A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or t1.A_CLASSIFIED='' )
  418. ".$extra_proj[1]."
  419. union
  420. select t1.*
  421. -- , 'SPRAWA/PROJEKT' as CO
  422. , 'PROJEKT' as CO
  423. , IF(''='".$selected_user."', '',
  424. IF(t1.`L_APPOITMENT_USER`='".$selected_user."', t1.ID, t2.ID)
  425. ) as _test_proj_id
  426. , unix_timestamp(now()) as NOW
  427. , unix_timestamp(t1.A_RECORD_UPDATE_DATE) as A_RECORD_UPDATE_DATE_TS
  428. from IN7_MK_BAZA_DYSTRYBUCJI as t2
  429. left join IN7_MK_BAZA_DYSTRYBUCJI as t1 on ( t2.ID=t1.P_ID )
  430. where (
  431. t1.A_STATUS='WAITING'
  432. -- or ( t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > (864000+unix_timestamp(t1.A_RECORD_UPDATE_DATE)) )
  433. -- or ( t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > unix_timestamp(t1.L_APPOITMENT_DATE) and t1.L_APPOITMENT_DATE!='' )
  434. or (
  435. IF(t1.L_APPOITMENT_DATE!=''
  436. , t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > unix_timestamp(t1.L_APPOITMENT_DATE)
  437. , t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > (864000+unix_timestamp(t1.A_RECORD_UPDATE_DATE))
  438. )
  439. )
  440. )
  441. and t1.A_STATUS!='DELETED'
  442. and t1.L_APPOITMENT_USER=''
  443. and t1.`A_CLASSIFIED` not like '%HIDDEN%' and t2.`A_CLASSIFIED` not like '%HIDDEN%'
  444. -- and ( t1.A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or t1.A_CLASSIFIED='' )
  445. ".$extra_proj[2]."
  446. union
  447. select t1.*
  448. -- , 'SPRAWA/PROJEKT' as CO
  449. , 'PROJEKT' as CO
  450. , IF(''='".$selected_user."', '',
  451. IF(t1.`L_APPOITMENT_USER`='".$selected_user."', t1.ID, t3.ID)
  452. ) as _test_proj_id
  453. , unix_timestamp(now()) as NOW
  454. , unix_timestamp(t1.A_RECORD_UPDATE_DATE) as A_RECORD_UPDATE_DATE_TS
  455. from IN7_MK_BAZA_DYSTRYBUCJI as t3
  456. left join IN7_MK_BAZA_DYSTRYBUCJI as t2 on ( t3.ID=t2.P_ID )
  457. left join IN7_MK_BAZA_DYSTRYBUCJI as t1 on ( t2.ID=t1.P_ID )
  458. where (
  459. t1.A_STATUS='WAITING'
  460. -- or ( t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > (86400+unix_timestamp(t1.A_RECORD_UPDATE_DATE)) )
  461. -- or ( t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > unix_timestamp(t1.L_APPOITMENT_DATE) and t1.L_APPOITMENT_DATE!='' )
  462. or (
  463. IF(t1.L_APPOITMENT_DATE!=''
  464. , t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > unix_timestamp(t1.L_APPOITMENT_DATE)
  465. , t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > (864000+unix_timestamp(t1.A_RECORD_UPDATE_DATE))
  466. )
  467. )
  468. )
  469. and t1.A_STATUS!='DELETED'
  470. and t1.L_APPOITMENT_USER=''
  471. and t2.L_APPOITMENT_USER=''
  472. and t1.`A_CLASSIFIED` not like '%HIDDEN%'
  473. and t2.`A_CLASSIFIED` not like '%HIDDEN%'
  474. -- and ( t1.A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or t1.A_CLASSIFIED='' )
  475. ".$extra_proj[3]."
  476. ";
  477. $zap_sql_join = "";
  478. $zap_sql_where = "";
  479. if ($selected_user) {
  480. $CD = 2;
  481. $zap_sql_where .= "\n and t".($CD-1).".L_APPOITMENT_USER='' ";
  482. $CD = 3;
  483. $zap_sql_where .= "\n and t".($CD-1).".L_APPOITMENT_USER='' ";
  484. }
  485. for ($CD = 4; $CD <= $DEEP_SQL_RECURSE; $CD++) {
  486. if ($selected_user) {
  487. $zap_sql_where .= "\n and t".($CD-1).".L_APPOITMENT_USER='' ";
  488. }
  489. $zap_sql_join = "
  490. left join `IN7_MK_BAZA_DYSTRYBUCJI` as t".($CD-1)." on ( t".$CD.".ID=t".($CD-1).".P_ID )
  491. ".$zap_sql_join;
  492. $zap_sql .= "
  493. union
  494. select t1.*
  495. -- ,'SPRAWA/PROJEKT' as CO
  496. , 'PROJEKT' as CO
  497. , IF(''='".$selected_user."', '',
  498. IF(t1.`L_APPOITMENT_USER`='".$selected_user."', t1.ID, t".$CD.".ID)
  499. ) as _test_proj_id
  500. , unix_timestamp(now()) as NOW
  501. , unix_timestamp(t1.A_RECORD_UPDATE_DATE) as A_RECORD_UPDATE_DATE_TS
  502. from `IN7_MK_BAZA_DYSTRYBUCJI` as t".$CD."
  503. ".$zap_sql_join."
  504. left join `IN7_MK_BAZA_DYSTRYBUCJI` as t2 on ( t3.ID=t2.P_ID )
  505. left join `IN7_MK_BAZA_DYSTRYBUCJI` as t1 on ( t2.ID=t1.P_ID )
  506. where (
  507. t1.`A_STATUS`='WAITING'
  508. -- or ( t1.`A_STATUS`!='OFF_HARD' and unix_timestamp(now()) > (86400+unix_timestamp(t1.`A_RECORD_UPDATE_DATE`)) )
  509. -- or ( t1.`A_STATUS`!='OFF_HARD' and unix_timestamp(now()) > unix_timestamp(t1.`L_APPOITMENT_DATE`) and t1.`L_APPOITMENT_DATE`!='' )
  510. or (
  511. IF(t1.L_APPOITMENT_DATE!=''
  512. , t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > unix_timestamp(t1.L_APPOITMENT_DATE)
  513. , t1.A_STATUS!='OFF_HARD' and unix_timestamp(now()) > (864000+unix_timestamp(t1.A_RECORD_UPDATE_DATE))
  514. )
  515. )
  516. )
  517. and t1.`A_STATUS`!='DELETED'
  518. and t1.`A_CLASSIFIED` not like '%HIDDEN%'
  519. and t2.`A_CLASSIFIED` not like '%HIDDEN%'
  520. -- and ( t1.A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or t1.A_CLASSIFIED='' )
  521. ";
  522. if ($selected_user) {
  523. $zap_sql .= $zap_sql_where . " and t".$CD.".`L_APPOITMENT_USER`='".$selected_user."' \n ";
  524. }
  525. }
  526. $zap_sql .= " group by t1.ID ";
  527. if(isset($_GET['DBG']) && $_GET['DBG']==1){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">zap_sql: '."\n";print_r($zap_sql);echo'</pre>';}
  528. $result = $db->query($zap_sql) or die("blad zapytania do bazy ".$zap_sql);
  529. while ($h = $db->fetch_array($result)) {
  530. $ILOSC_SPRAW++;
  531. echo '<tr class="row-'.($t = 1 - $t) . ' ' . "type-" . $h['CO'] . '">';
  532. echo '<td>';
  533. echo $h['CO']." ".'<span style="color:#705680;">'.$h['A_STATUS'].'</span>';
  534. if ($selected_user) {
  535. echo'<br /><em style="color:#999;" title="'.$selected_user." przypisany/a do projektu ".$h['_test_proj_id'].'">('.$h['_test_proj_id'].')</em>';
  536. }
  537. echo '</td>';
  538. echo '<td>';
  539. echo "Sprawa(ID): ".'<a href="'."index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobProjID}#EDIT/{$h['ID']}".'">'.$h['ID'].'</a>';
  540. echo ' <a href="'."index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobProjID}#FILES/{$h['ID']}".'" target="_blank"><i title="Pliki" class="ico-folder-open"></i></a>';
  541. echo "<br> Teczka Nadrzędna(PID): ".'<a href="'."index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobProjID}#EDIT/{$h['P_ID']}".'">'.$h['P_ID'].'</a>'." ";
  542. echo ' <a href="'."index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobProjID}#FILES/{$h['P_ID']}".'" target="_blank"><i title="Pliki" class="ico-folder-open"></i></a>';
  543. echo '</td>';
  544. echo '<td>'."M DIST DATE ".$h['M_DIST_DATE'].'</td>';
  545. echo '<td>';
  546. if (strlen($h['M_DIST_TYPE'] > 20)) {
  547. echo $h['M_DIST_TYPE'];
  548. } else {
  549. echo str_replace('_',' ',$h['M_DIST_TYPE']);
  550. }
  551. echo '</td>';
  552. echo '<td>';
  553. echo $h['M_DIST_DESC']." (<font color=red> <i>firma</i> <b> ".$h['M_DISTRIBUTOR']."</b>)</font> ";
  554. if (strstr($h['M_DIST_TYPE'], 'TV_')) {
  555. foreach ($h as $HRI => $HRV) {
  556. if (isset($h[$HRI])) {
  557. if (strstr($HRI, 'TV_')) {
  558. if (strlen($h[$HRI]) > 1) {
  559. echo " <font size=-2><b>".str_replace('_',' ',$HRI).":</b> ".$h[$HRI]."</font>";
  560. }
  561. }
  562. }
  563. }
  564. }
  565. echo '</td>';
  566. echo '<td>'."Wpr: ".$h['A_RECORD_CREATE_AUTHOR']."/ akt : ".$h['A_RECORD_UPDATE_AUTHOR']."(".$h['A_RECORD_UPDATE_DATE'].")".'</td>';
  567. echo '<td>'." <b>".$h['A_PROBLEM']." ".$h['A_PROBLEM_DATE']."</b><font color=\"#444444\"><pre> ".$h['A_PROBLEM_DESC']."</pre></font>".'</td>';
  568. echo'</tr>';
  569. } //eof while sql
  570. echo'</tbody>';
  571. echo '</table>'."\n";
  572. $ILOSC_PROCES = 0;
  573. {
  574. $t = 0;
  575. echo '<table border="1" cellspacing="0" cellpadding="0" width="800" class="tbl-view tbl-przypomnij">';
  576. echo'<thead>';
  577. echo '<tr>';
  578. echo '<th style="width:5%;">'."CO".'</th>';
  579. echo '<th>'."Numer ID".'</th>';
  580. echo '<th>'."Data".'</th>';
  581. echo '<th>'."Typ".'</th>';
  582. echo '<th>'."Nazwa".'</th>';
  583. echo '<th>'."Dane Administracyjne Rekordu".'</th>';
  584. echo '<th>'."Opis".'</th>';
  585. echo '</tr>';
  586. echo'</thead>'."\n";
  587. echo'<tbody>'."\n";
  588. $sql = "select p.*
  589. from `CRM_PROCES` as p
  590. where p.`TYPE`='PROCES_INIT'
  591. and p.`A_STATUS` in('NORMAL', 'WAITING')
  592. and p.`L_APPOITMENT_DATE`!=''
  593. and p.`L_APPOITMENT_USER`!=''
  594. " . (($selected_user != '')? "and p.`L_APPOITMENT_USER`='" . $selected_user . "'" : "") . "
  595. ";
  596. $result = $db->query($sql) or die("blad zapytania do bazy ".$sql);
  597. while ($h = $db->fetch_assoc($result)) {
  598. $ILOSC_PROCES++;
  599. $cls = '';
  600. if ($h['L_APPOITMENT_DATE'] > date('Y-m-d')) $cls .= ' l-app-stare';// . ' l-app-date-' . $h['L_APPOITMENT_DATE'];
  601. echo '<tr class="row-' . ($t = 1 - $t) . ' type-' . "PROCES" . $cls . '">';
  602. echo '<td>';
  603. echo "Proces ".'<span style="color:#705680;">'.$h['A_STATUS'].'</span>';
  604. if ($h['L_APPOITMENT_USER']) {
  605. echo'<br /><em style="color:#999;" title="'.$h['L_APPOITMENT_USER']." przypisany/a do procesu ".$h['ID'].'">('.$h['ID'].')</em>';
  606. }
  607. echo '</td>';
  608. echo '<td>'."Proces(ID):".'<a href="'."procesy5.php?task=CRM_PROCES&filtr_search_id=&filtr_id=".$h['ID'].'" target="_blank">'.$h['ID'].'</a>'.'</td>';
  609. echo '<td class="nobr">' . $h['L_APPOITMENT_DATE'] . '</td>';
  610. echo '<td>' . $h['TYPE'] . '</td>';
  611. echo '<td>' . $h['DESC'] . '</td>';
  612. echo '<td>'."Wpr: ".$h['A_RECORD_CREATE_AUTHOR']."/ akt : ".$h['A_RECORD_UPDATE_AUTHOR']."(".$h['A_RECORD_UPDATE_DATE'].")".'</td>';
  613. echo '<td>' . $h['L_APPOITMENT_INFO'] . '</td>';
  614. echo'</tr>';
  615. }//eof while sql
  616. echo'</tbody>';
  617. echo '</table>'."\n";
  618. }
  619. echo "Ilość pism : ".$ILOSC_PISM.", ilość spraw : ".$ILOSC_SPRAW.", ilość procesów : ".$ILOSC_PROCES.". Zestawienie w oprarciu o Obiegu dokumentow </a> By Arkadusz Binder. <br>
  620. <br>
  621. Proszę o uznanie spraw w wykazie jako zadań do jakich istnieje zobowiązanie do wykonania lub podjęcia stosownego działania, zgodnie z nadmienionym regulaminem . <br>
  622. W przypadku załatwienia sprawy, zgodnie z par 2 pkt 6 regulaminu należy wykazany rekord zaznaczyĆ jako ZAŁATWIONY. Względnie , jeżeli sprawa wykracza poza nasze kompetencje
  623. lub jeżeli została niewłaściwie zadekretowana proszę o wysłanie informacji na biuro lub proszę korzystając z uprawnień , oraz znając inne sprawy
  624. w wykazie spraw aby sprawę zadekretowaĆ do właściwej sprawy i dla niej odpowiedzialnej osoby. <br>
  625. w przypaku chęci dostosowania indywidualnego widoku kolumn proszę o kontakt z administratorem systemu .
  626. Z poważaniem Arkadiusz Binder Prezes.
  627. ";
  628. echo '</body></html>';
  629. }
  630. ?>