RaportyKasowe.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. <?php
  2. Lib::loadClass('RouteBase');
  3. Lib::loadClass('ProcesHelper');
  4. class Route_UrlAction_RaportyKasowe extends RouteBase {
  5. private $REFERER, $LAST_REFERER;
  6. private $RK, $BO;
  7. public function handleAuth() {
  8. if (!User::logged()) {
  9. throw new HttpException('Unauthorized', 401);
  10. }
  11. $this->LAST_REFERER = $_SERVER['HTTP_REFERER'];
  12. if (($this->REFERER=V::get('REFERER','',$_POST))=='') $this->REFERER = $_SERVER['HTTP_REFERER'];
  13. try {
  14. if (!($ID_BILLS_RK = V::get('ID_BILLS_RK',0,$_GET,'int'))) throw new Exception("Błąd parametru");
  15. if ($result = DB::getPDO()->fetchall("select * from BILLS_RK where ID='{$ID_BILLS_RK}' and L_APPOITMENT_USER='".User::getLogin()."'")) $this->RK = $result[0];
  16. else throw new Exception("Dostęp zabroniony");
  17. if ($result = DB::getPDO()->fetchall("select * from BILLING_OWNER where ID='{$this->RK['ID_BILLING_OWNER']}'")) $this->BO = $result[0];
  18. else throw new Exception("Błąd spójności danych");
  19. } catch (Exception $e) {
  20. SE_Layout::gora();
  21. SE_Layout::menu();
  22. SE_Layout::alert('danger',$e->getMessage());
  23. ?>
  24. <div class="container" style="text-align:center">
  25. <a href="<?php echo $this->REFERER?>" class="btn btn-primary">Powrót</a>
  26. </div>
  27. <?php
  28. SE_Layout::dol();
  29. die();
  30. }
  31. $this->importRemote("L1");
  32. }
  33. private function importRemote($source) {
  34. if ($source == "L1") {
  35. $REMOTE_ID_BILLING_USERS = DB::getPDO()->fetchValue("select ID_BILLING_USERS from ADMIN_USERS where ID='".User::getID()."'");
  36. if (!$REMOTE_ID_BILLING_USERS) return false;
  37. // $query = "select '".User::getID()."' as ID_ADMIN_USERS, '{$BO}' as ID_BILLING_OWNER, bkp.ID as REMOTE_ID, bkp.ID_BILLIN
  38. }
  39. }
  40. private function initialize() {
  41. SE_Layout::gora();
  42. SE_Layout::menu();
  43. try {
  44. $lastDate = DB::getPDO()->fetchValue("select max(RK_DATE_TO) from BILLS_RK where A_STATUS='OFF_HARD' and ID_BILLING_OWNER='{$this->RK['ID_BILLING_OWNER']}' and L_APPOITMENT_USER='".User::getLogin()."'");
  45. if (!$lastRK=($lastDate)) $lastDate = '2015-12-31';
  46. $minTS = strtotime($lastDate . " + 1 day");
  47. $minDate = date("Y-m-d", $minTS);
  48. $firstTS = strtotime(date("Y-m", strtotime($minDate)));
  49. $nierozliczone = false;
  50. if ($ID_BILLING_USERS = DB::getPDO()->fetchValue("select ID_BILLING_USERS from ADMIN_USERS where ID='".User::getID()."'")) {
  51. //$ID_BILLING_USERS=
  52. $maxMonth = DB::getPDO(931)->fetchValue("select substring(min(DATE),1,7) from (select min(bkp.BILL_DATE) as DATE from BILLING_NUMBERS bn join BILLS_KP bkp on bn.ID=bkp.ID_BILLING_NUMBERS join BILLING_USERS bu on bn.ID_BILLING_USERS=bu.ID where bkp.ID_BILLS_RK_POS is null and bu.BILLING_OWNER='{$this->RK['ID_BILLING_OWNER']}' and bn.U_ID='{$ID_BILLING_USERS}' union select min(bkw.BILL_DATE) as DATE from BILLING_NUMBERS bn join BILLS_KW bkw on bn.ID=bkw.ID_BILLING_NUMBERS join BILLING_USERS bu on bn.ID_BILLING_USERS=bu.ID where bkw.ID_BILLS_RK_POS is null and bu.BILLING_OWNER='{$this->RK['ID_BILLING_OWNER']}' and bn.U_ID='{$ID_BILLING_USERS}') as r1");
  53. if (!$nierozliczone=$maxMonth) $maxMonth = date("Y-m");
  54. } else $maxMonth = date("Y-m");
  55. $maxTS = strtotime($maxMonth);
  56. if ($firstTS > $maxTS) throw new Exception("poprzedni raport kasowy zawiera już okres do końca bieżącego miesiąca.");
  57. $months = Array($maxMonth);
  58. while ($maxTS > $firstTS) {
  59. $maxTS = strtotime($maxMonth. " -1 month");
  60. $maxMonth = date("Y-m", $maxTS);
  61. $months[] = $maxMonth;
  62. }
  63. $saldo = DB::getPDO()->fetchValue("select coalesce(RK_FINAL_BALANCE,0) from BILLS_RK where A_STATUS='OFF_HARD' and ID_BILLING_OWNER='{$this->RK['ID_BILLING_OWNER']}' and L_APPOITMENT_USER='".User::getLogin()."' order by ID desc limit 1");
  64. $numer = DB::getPDO()->fetchValue("select coalesce(max(RK_NUMBER),0)+1 from BILLS_RK where A_STATUS='OFF_HARD' and ID_BILLING_OWNER='{$this->RK['ID_BILLING_OWNER']}' and L_APPOITMENT_USER='".User::getLogin()."'");
  65. if (($month = V::get('MONTH','',$_POST))!='') {
  66. if (!in_array($month, $months)) throw new Exception("niedopuszczalny miesiąc raportu (abuse - wysłano do administratora informację na temat próby nielegalnego dostępu do danych!)");
  67. if ($minTS > strtotime($month)) $startDate = $minDate;
  68. else $startDate = date("Y-m-d", strtotime($month));
  69. $sqlObj = new stdClass();
  70. $sqlObj->ID = $this->RK['ID'];
  71. $sqlObj->A_STATUS = 'NORMAL';
  72. $sqlObj->ID_ADMIN_USERS = User::getID();
  73. $sqlObj->RK_NUMBER = $numer;
  74. $sqlObj->RK_MONTH = $month;
  75. $sqlObj->RK_DATE_FROM = $startDate;
  76. $sqlObj->RK_STARTING_BALANCE = $saldo;
  77. $affected = DB::getDB()->UPDATE_OBJ('BILLS_RK', $sqlObj);
  78. if ($affected) {
  79. SE_Layout::alert('success','Pomyślnie zainicjalizowano raport kasowy.');
  80. ?>
  81. <div class="container" style="text-align:center">
  82. <form method="post">
  83. <input type="hidden" name="REFERER" value="<?php echo $this->REFERER?>"/>
  84. <button type="submit" class="btn btn-primary">Edytuj</button>
  85. <a href="<?php echo $this->REFERER?>" class="btn btn-default">Powrót</a>
  86. </form>
  87. </div>
  88. <?php
  89. }
  90. else {
  91. SE_Layout::alert('warning','Wystąpił nieznany błąd podczas inicjalizowania raportu kasowego.');
  92. ?>
  93. <div class="container" style="text-align:center">
  94. <a href="<?php echo $this->REFERER?>" class="btn btn-primary">Powrót</a>
  95. </div>
  96. <?php
  97. }
  98. } else {
  99. ?>
  100. <div class="container" style="margin-top:20px">
  101. <form class="form-horizontal" method="post">
  102. <legend>Inicjalizacja raportu kasowego</legend>
  103. <div class="form-group">
  104. <label class="col-sm-3 control-label">Operator</label>
  105. <div class="col-sm-9" style="margin-top:7px;"><?php echo $this->BO['name1']?></div>
  106. </div>
  107. <div class="form-group">
  108. <label class="col-sm-3 control-label">Nr kasy</label>
  109. <div class="col-sm-9" style="margin-top:7px;"><?php echo User::getID()?></div>
  110. </div>
  111. <div class="form-group">
  112. <label class="col-sm-3 control-label">Numer raportu</label>
  113. <div class="col-sm-9" style="margin-top:7px;"><?php echo $numer?></div>
  114. </div>
  115. <div class="form-group">
  116. <label class="col-sm-3 control-label">Końcowa data poprzedniego raportu</label>
  117. <div class="col-sm-9" style="margin-top:7px;"><?php echo ($lastRK?$lastDate:"brak")?></div>
  118. </div>
  119. <div class="form-group">
  120. <label class="col-sm-3 control-label">Miesiąc, którego dotyczy raport</label>
  121. <div class="col-sm-2">
  122. <select class="form-control" name="MONTH">
  123. <?php foreach ($months as $month) echo "<option value='{$month}'>{$month}</option>"?>
  124. </select>
  125. </div>
  126. <?php if ($nierozliczone) echo '<div class="col-sm-7" style="margin-top:7px;">(znaleziono w L1 nierozliczone dokumenty kasowe z miesiąca '.$months[0].')</div>'?>
  127. </div>
  128. <div class="form-group">
  129. <label class="col-sm-3 control-label">Saldo początkowe</label>
  130. <div class="col-sm-9" style="margin-top:7px;"><?php echo number_format($saldo, 2, ',', ' ') . " PLN"?></div>
  131. </div>
  132. <div class="form-group">
  133. <div class="col-sm-offset-3 col-sm-9">
  134. <button type="submit" class="btn btn-primary">Zapisz</button>
  135. <a href="<?php echo $this->REFERER?>" class="btn btn-default">Anuluj</a>
  136. </div>
  137. </div>
  138. <input type="hidden" name="REFERER" value="<?php echo $this->REFERER?>"/>
  139. </form>
  140. </div>
  141. <?php
  142. }
  143. } catch (Exception $e) {
  144. SE_Layout::alert('danger', "Wystąpił błąd podczas inicjalizacji nowego raportu kasowego - " . $e->getMessage());
  145. ?>
  146. <div class="container" style="text-align:center">
  147. <a href="<?php echo $this->REFERER?>" class="btn btn-primary">Powrót</a>
  148. </div>
  149. <?php
  150. }
  151. SE_Layout::dol();
  152. }
  153. private function edit() {
  154. SE_Layout::gora();
  155. SE_Layout::menu();
  156. $docs = DB::getPDO()->fetchall("select * from BILLS_RK_POS where ID_BILLS_RK='{$this->RK['ID']}'");
  157. ?>
  158. <div class="container" style="margin-top:20px">
  159. <form class="form-horizontal" method="post">
  160. <legend>
  161. Edycja raportu kasowego nr <?=$this->RK['RK_NUMBER']?>/<?=User::getID()?> :: <?=$this->RK['RK_MONTH']?>
  162. <span class="pull-right">
  163. Kasjer: <?=User::getFullname()?> :: <?=$this->BO['name1']?>
  164. </span>
  165. </legend>
  166. <div class="form-group">
  167. <div class="col-sm-12">
  168. <input type="submit" class="btn btn-default btn-sm" name="action" value="Dodaj KP"/>
  169. <input type="submit" class="btn btn-default btn-sm" name="action" value="Dodaj KW"/>
  170. <?php
  171. if ($ID_BILLING_USERS = DB::getPDO()->fetchValue("select ID_BILLING_USERS from ADMIN_USERS where ID='".User::getID()."'")) {
  172. $query = "select `TABLE`, `ID`, `BILL_DATE`, `WINIEN`, `MA` from (select 'BILLS_KP' as `TABLE`, `bkp`.`ID`, `bkp`.`BILL_DATE`, `bkp`.`WINIEN`, `bkp`.`MA` from `BILLING_NUMBERS` `bn` join `BILLS_KP` `bkp` on `bn`.`ID` = `bkp`.`ID_BILLING_NUMBERS` join `BILLING_USERS` `bu` on `bn`.`ID_BILLING_USERS` = `bu`.`ID` where `bkp`.`ID_BILLS_RK_POS` is null and `bu`.`BILLING_OWNER` = '{$this->RK['ID_BILLING_OWNER']}' and `bn`.`U_ID` = '{$ID_BILLING_USERS}' and `bkp`.`BILL_DATE` like '{$this->RK['RK_MONTH']}%' union select 'BILLS_KW' as `TABLE`, `bkw`.`ID`, `bkw`.`BILL_DATE`, `bkw`.`WINIEN`, `bkw`.`MA` from `BILLING_NUMBERS` `bn` join `BILLS_KW` `bkw` on `bn`.`ID` = `bkw`.`ID_BILLING_NUMBERS` join `BILLING_USERS` `bu` on `bn`.`ID_BILLING_USERS` = `bu`.`ID` where `bkw`.`ID_BILLS_RK_POS` is null and `bu`.`BILLING_OWNER` = '{$this->RK['ID_BILLING_OWNER']}' and `bn`.`U_ID` = '{$ID_BILLING_USERS}' and `bkw`.`BILL_DATE` like '{$this->RK['RK_MONTH']}%') as r1";
  173. $docs = DB::getPDO(931)->fetchAll($query);
  174. print_r($docs);
  175. }
  176. ?>
  177. <input type="hidden" name="_task" value="edit">
  178. <input type="hidden" name="REFERER" value="<?php echo $this->REFERER?>"/>
  179. </div>
  180. </div>
  181. <div class="form-group">
  182. <div class="col-sm-12">
  183. <table class="table table-bordered table-hover table-striped">
  184. <thead>
  185. <tr style="text-align:center; background-color:lightgray"><td width="1">Lp.</td><td>Data</td><td>Numer</td><td>Tytułem</td><td>Kontrahent</td><td>Przychód</td><td>Rozchód</td></tr>
  186. </thead>
  187. <tbody>
  188. <?php
  189. if ($docs) {
  190. } else echo '<tr style="text-align:center"><td colspan="7">Brak dokumentów</td></tr>';
  191. ?>
  192. </tbody>
  193. <table>
  194. </div>
  195. </div>
  196. <div class="form-group" style="text-align:center">
  197. <div class="col-sm-12">
  198. <button type="submit" class="btn btn-default" name="action" value="<?=($docs?"close":"reinitialize")?>"><?=($docs?"Zamknij":"Reinicjalizuj")?> raport</button>
  199. <a href="<?php echo $this->REFERER?>" class="btn btn-primary">Powrót</a>
  200. </div>
  201. </div>
  202. </form>
  203. </div>
  204. <?php
  205. SE_Layout::dol();
  206. }
  207. public function editAction() {
  208. switch (V::get('action','',$_POST)) {
  209. case "Dodaj KP":
  210. case "Dodaj KW":
  211. $this->addDoc();
  212. break;
  213. case "reinitialize":
  214. $this->reinitialize();
  215. break;
  216. default:
  217. SE_Layout::gora();
  218. SE_Layout::menu();
  219. SE_Layout::alert('danger', "Wykryto abuse! Wysłano informację do administratora.");
  220. ?>
  221. <div class="container" style="text-align:center">
  222. <form method="post" action="<?php echo $this->LAST_REFERER?>">
  223. <input type="hidden" name="REFERER" value="<?php echo $this->REFERER?>"/>
  224. <button type="submit" class="btn btn-primary">Powrót</button>
  225. </form>
  226. </div>
  227. <?php
  228. SE_Layout::dol();
  229. }
  230. }
  231. private function addDoc() {
  232. echo V::kwotaSlownie("1267650600000000000000000000000");
  233. echo "<br>".V::kwotaSlownie("0000000.23");
  234. }
  235. private function importL1() {
  236. }
  237. private function add() {
  238. SE_Layout::gora();
  239. SE_Layout::menu();
  240. ?>
  241. <div class="container" style="margin-top:20px">
  242. <form class="form-horizontal" method="post">
  243. <legend>
  244. Edycja raportu kasowego nr <?php echo $this->RK['RK_NUMBER']?>
  245. <span class="pull-right">
  246. <?php echo "Nr kasy: " . User::getID()?>
  247. </span>
  248. </legend>
  249. <div class="form-group">
  250. <label class="col-sm-12 control-label" style="text-align:left"><h4>Nowy dokument</h4></label>
  251. </div>
  252. <div class="form-group">
  253. <label class="col-xs-12 col-sm-3 col-md-2 control-label">Data dokumentu</label>
  254. <div class="col-xs-12 col-sm-9 col-md-10">
  255. <div class="input-group">
  256. <input type="text" id="DOC_DATE" class="form-control se_type-date" name="DOC_DATE" value="<?php echo date("Y-m-d")?>" maxlength="10"/>
  257. <span class="input-group-addon">
  258. <span class="glyphicon glyphicon-calendar">
  259. </span>
  260. </span>
  261. </div>
  262. </div>
  263. </div>
  264. </form>
  265. </div>
  266. <script>
  267. console.log(document.getElementById('DOC_DATE'));
  268. jQuery(document.getElementById('DOC_DATE')).parent().datetimepicker({
  269. format: 'YYYY-MM-DD'
  270. , locale: 'pl'
  271. , showTodayButton: true
  272. , minDate: '2017-01-01'
  273. , maxDate: '2017-01-03'
  274. });
  275. </script>
  276. <?php
  277. SE_Layout::dol();
  278. }
  279. private function reinitialize() {
  280. $sqlObj = new stdClass();
  281. $sqlObj->ID = $this->RK['ID'];
  282. $sqlObj->A_STATUS = 'WAITING';
  283. $sqlObj->ID_ADMIN_USERS = "NULL";
  284. $sqlObj->RK_NUMBER = "NULL";
  285. $sqlObj->RK_MONTH = "NULL";
  286. $sqlObj->RK_DATE_FROM = "NULL";
  287. $sqlObj->RK_STARTING_BALANCE = "NULL";
  288. DB::getDB()->UPDATE_OBJ('BILLS_RK', $sqlObj);
  289. $this->initialize();
  290. }
  291. public function defaultAction() {
  292. switch ($this->RK['A_STATUS']) {
  293. case "WAITING":
  294. $this->initialize();
  295. break;
  296. case "NORMAL":
  297. $this->edit();
  298. break;
  299. default:
  300. SE_Layout::alert('danger', "Błędny status rekordu.");
  301. }
  302. }
  303. public function reinstallAction() {
  304. $this->reinstall();
  305. die('OK');
  306. }
  307. public function reinstall() {
  308. $sqlList = array();
  309. /* $sqlList['InstallLayerTable'] = <<<SQL
  310. CREATE TABLE IF NOT EXISTS `WMS_LAYERS` (
  311. `ID` int(11) NOT NULL AUTO_INCREMENT,
  312. `the_geom` polygon NOT NULL,
  313. `ID_PROJECT` int(11) NOT NULL,
  314. `LAYER_NAME` varchar(100) NOT NULL,
  315. `LAYER_TYPE` enum('GeoTIFF','QGIS') NOT NULL DEFAULT 'GeoTIFF',
  316. `OLD_LAYER_TYPE` enum('GeoTIFF','QGIS') NOT NULL,
  317. `LAYER_DESC` text NOT NULL,
  318. `ID_WMS_MAPS` int(11) NOT NULL,
  319. `OLD_ID_WMS_MAPS` int(11) NOT NULL,
  320. `FILE_NAME` varchar(255) NOT NULL,
  321. `FILE_STATUS` enum('NONE','TO_GENERATE','IN_PROGRESS','GENERATED','ERROR') NOT NULL DEFAULT 'NONE',
  322. `FILE_STATUS_INFO` varchar(255) NOT NULL,
  323. `EPSG` int(11) NOT NULL,
  324. `EXTENT` varchar(100) NOT NULL,
  325. `MAP_STATUS` enum('ACTIVE','INACTIVE') NOT NULL DEFAULT 'INACTIVE',
  326. `FILE_MD5` varchar(32) NOT NULL,
  327. `A_RECORD_CREATE_DATE` datetime NOT NULL,
  328. `A_RECORD_CREATE_AUTHOR` varchar(40) NOT NULL,
  329. `A_RECORD_UPDATE_DATE` varchar(18) NOT NULL,
  330. `A_RECORD_UPDATE_AUTHOR` varchar(40) NOT NULL,
  331. `L_APPOITMENT_DATE` datetime NOT NULL,
  332. `L_APPOITMENT_USER` varchar(40) NOT NULL,
  333. `L_APPOITMENT_PERIOD` varchar(30) NOT NULL,
  334. `L_APPOITMENT_INFO` varchar(200) NOT NULL,
  335. `L_APPOITMENT_TYPE` enum('','ARRANGED','TO_ARRANGE','CANCELLED','TO_CANCEL','RELATE','WAIT') NOT NULL,
  336. `A_PROBLEM` enum('','WARNING','PROBLEM','SERIOUS','UNVERIFIED') NOT NULL,
  337. `A_PROBLEM_DESC` varchar(200) NOT NULL,
  338. `A_PROBLEM_DATE` datetime NOT NULL,
  339. `A_STATUS` enum('DELETED','MONITOR','NORMAL','OFF_HARD','OFF_SOFT','WAITING','WARNING') NOT NULL DEFAULT 'WAITING',
  340. `A_STATUS_INFO` varchar(100) NOT NULL,
  341. `A_STATUS_LASTCHANGE_DATE` datetime NOT NULL,
  342. `A_ADM_COMPANY` varchar(100) NOT NULL,
  343. `A_CLASSIFIED` varchar(100) NOT NULL,
  344. `SYNC_SQIX_STATUS` varchar(100) NOT NULL,
  345. PRIMARY KEY (`ID`)
  346. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  347. SQL;
  348. $sqlList['InstallLayerHistTable'] = <<<SQL
  349. CREATE TABLE IF NOT EXISTS `WMS_LAYERS_HIST` (
  350. `ID` int(11) NOT NULL AUTO_INCREMENT,
  351. `ID_USERS2` int(11) NOT NULL,
  352. `the_geom` text,
  353. `ID_PROJECT` varchar(20) DEFAULT 'N/S;',
  354. `LAYER_NAME` varchar(100) DEFAULT 'N/S;',
  355. `LAYER_TYPE` varchar(10) DEFAULT 'N/S;',
  356. `OLD_LAYER_TYPE` varchar(10) DEFAULT 'N/S;',
  357. `LAYER_DESC` varchar(10000) DEFAULT 'N/S;',
  358. `ID_WMS_MAPS` varchar(20) DEFAULT 'N/S;',
  359. `OLD_ID_WMS_MAPS` varchar(20) DEFAULT 'N/S;',
  360. `FILE_NAME` varchar(255) DEFAULT 'N/S;',
  361. `FILE_STATUS` varchar(20) DEFAULT 'N/S;',
  362. `FILE_STATUS_INFO` varchar(255) DEFAULT 'N/S;',
  363. `EPSG` varchar(10) DEFAULT 'N/S;',
  364. `EXTENT` varchar(100) DEFAULT 'N/S;',
  365. `MAP_STATUS` varchar(20) DEFAULT 'N/S;',
  366. `FILE_MD5` varchar(32) DEFAULT 'N/S;',
  367. `A_RECORD_CREATE_DATE` varchar(30) DEFAULT 'N/S;',
  368. `A_RECORD_CREATE_AUTHOR` varchar(40) DEFAULT 'N/S;',
  369. `A_RECORD_UPDATE_DATE` varchar(18) DEFAULT 'N/S;',
  370. `A_RECORD_UPDATE_AUTHOR` varchar(40) DEFAULT 'N/S;',
  371. `L_APPOITMENT_DATE` varchar(30) DEFAULT 'N/S;',
  372. `L_APPOITMENT_USER` varchar(40) DEFAULT 'N/S;',
  373. `L_APPOITMENT_PERIOD` varchar(30) DEFAULT 'N/S;',
  374. `L_APPOITMENT_INFO` varchar(200) DEFAULT 'N/S;',
  375. `L_APPOITMENT_TYPE` varchar(255) DEFAULT 'N/S;',
  376. `A_PROBLEM` varchar(255) DEFAULT 'N/S;',
  377. `A_PROBLEM_DESC` varchar(200) DEFAULT 'N/S;',
  378. `A_PROBLEM_DATE` varchar(255) DEFAULT 'N/S;',
  379. `A_STATUS` varchar(255) DEFAULT 'N/S;',
  380. `A_STATUS_INFO` varchar(100) DEFAULT 'N/S;',
  381. `A_STATUS_LASTCHANGE_DATE` varchar(255) DEFAULT 'N/S;',
  382. `A_ADM_COMPANY` varchar(100) DEFAULT 'N/S;',
  383. `A_CLASSIFIED` varchar(100) DEFAULT 'N/S;',
  384. `SYNC_SQIX_STATUS` varchar(100) DEFAULT 'N/S;',
  385. PRIMARY KEY (`ID`)
  386. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  387. SQL;
  388. $sqlList['InstallMapTable'] = <<<SQL
  389. CREATE TABLE IF NOT EXISTS `WMS_MAPS` (
  390. `ID` int(11) NOT NULL AUTO_INCREMENT,
  391. `MAP_NAME` varchar(100) NOT NULL,
  392. `MAP_DESC` text NOT NULL,
  393. `MAP_STATUS` enum('NONE','TO_GENERATE','IN_PROGRESS','GENERATED','ERROR') NOT NULL DEFAULT 'NONE',
  394. `MAP_STATUS_INFO` varchar(255) NOT NULL,
  395. `MAP_URL` varchar(100) NOT NULL,
  396. `MAP_FILE` varchar(100) NOT NULL,
  397. `A_RECORD_CREATE_DATE` datetime NOT NULL,
  398. `A_RECORD_CREATE_AUTHOR` varchar(40) NOT NULL,
  399. `A_RECORD_UPDATE_DATE` varchar(18) NOT NULL,
  400. `A_RECORD_UPDATE_AUTHOR` varchar(40) NOT NULL,
  401. `L_APPOITMENT_DATE` datetime NOT NULL,
  402. `L_APPOITMENT_USER` varchar(40) NOT NULL,
  403. `L_APPOITMENT_PERIOD` varchar(30) NOT NULL,
  404. `L_APPOITMENT_INFO` varchar(200) NOT NULL,
  405. `L_APPOITMENT_TYPE` enum('','ARRANGED','TO_ARRANGE','CANCELLED','TO_CANCEL','RELATE','WAIT') NOT NULL,
  406. `A_PROBLEM` enum('','WARNING','PROBLEM','SERIOUS','UNVERIFIED') NOT NULL,
  407. `A_PROBLEM_DESC` varchar(200) NOT NULL,
  408. `A_PROBLEM_DATE` datetime NOT NULL,
  409. `A_STATUS` enum('DELETED','MONITOR','NORMAL','OFF_HARD','OFF_SOFT','WAITING','WARNING') NOT NULL DEFAULT 'WAITING',
  410. `A_STATUS_INFO` varchar(100) NOT NULL,
  411. `A_STATUS_LASTCHANGE_DATE` datetime NOT NULL,
  412. `A_ADM_COMPANY` varchar(100) NOT NULL,
  413. `A_CLASSIFIED` varchar(100) NOT NULL,
  414. `SYNC_SQIX_STATUS` varchar(100) NOT NULL,
  415. PRIMARY KEY (`ID`)
  416. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  417. SQL;
  418. $sqlList['InstallMapHistTable'] = <<<SQL
  419. CREATE TABLE IF NOT EXISTS `WMS_MAPS_HIST` (
  420. `ID` int(11) NOT NULL AUTO_INCREMENT,
  421. `ID_USERS2` int(11) NOT NULL,
  422. `MAP_NAME` varchar(100) DEFAULT 'N/S;',
  423. `MAP_DESC` varchar(10000) NOT NULL DEFAULT 'N/S;',
  424. `MAP_STATUS` varchar(20) NOT NULL DEFAULT 'N/S;',
  425. `MAP_STATUS_INFO` varchar(255) NOT NULL DEFAULT 'N/S;',
  426. `MAP_URL` varchar(100) NOT NULL DEFAULT 'N/S;',
  427. `MAP_FILE` varchar(100) NOT NULL DEFAULT 'N/S;',
  428. `A_RECORD_CREATE_DATE` varchar(30) DEFAULT 'N/S;',
  429. `A_RECORD_CREATE_AUTHOR` varchar(40) DEFAULT 'N/S;',
  430. `A_RECORD_UPDATE_DATE` varchar(18) DEFAULT 'N/S;',
  431. `A_RECORD_UPDATE_AUTHOR` varchar(40) DEFAULT 'N/S;',
  432. `L_APPOITMENT_DATE` varchar(30) DEFAULT 'N/S;',
  433. `L_APPOITMENT_USER` varchar(40) DEFAULT 'N/S;',
  434. `L_APPOITMENT_PERIOD` varchar(30) DEFAULT 'N/S;',
  435. `L_APPOITMENT_INFO` varchar(200) DEFAULT 'N/S;',
  436. `L_APPOITMENT_TYPE` varchar(255) DEFAULT 'N/S;',
  437. `A_PROBLEM` varchar(255) DEFAULT 'N/S;',
  438. `A_PROBLEM_DESC` varchar(200) DEFAULT 'N/S;',
  439. `A_PROBLEM_DATE` varchar(255) DEFAULT 'N/S;',
  440. `A_STATUS` varchar(255) DEFAULT 'N/S;',
  441. `A_STATUS_INFO` varchar(100) DEFAULT 'N/S;',
  442. `A_STATUS_LASTCHANGE_DATE` varchar(255) DEFAULT 'N/S;',
  443. `A_ADM_COMPANY` varchar(100) DEFAULT 'N/S;',
  444. `A_CLASSIFIED` varchar(100) DEFAULT 'N/S;',
  445. `SYNC_SQIX_STATUS` varchar(100) DEFAULT 'N/S;',
  446. PRIMARY KEY (`ID`)
  447. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  448. SQL;
  449. */
  450. $db = DB::getDB();
  451. if ($db->has_errors()) {
  452. throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
  453. }
  454. foreach ($sqlList as $sqlName => $sql) {
  455. $res = $db->query($sql);
  456. if ($db->has_errors()) {
  457. throw new Exception("DB Errors at sql '{$sqlName}': " . implode("\n<br>", $db->get_errors()));
  458. }
  459. }
  460. }
  461. }