ProjektyProNetMediaZamZlec.php 76 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733
  1. <?php
  2. Lib::loadClass('RouteBase');
  3. Lib::loadClass('Typespecial');
  4. Lib::loadClass('TypespecialVariable');
  5. Lib::loadClass('Request');
  6. Lib::loadClass('Response');
  7. Lib::loadClass('ProcesHelper');
  8. Lib::loadClass('Route_UrlAction');
  9. Lib::loadClass('UI');
  10. Lib::loadClass('TableAjax');
  11. class Route_UrlAction_ProjektyProNetMediaZamZlec extends RouteBase {// TODO: UrlActionBase @see Route_UrlAction
  12. public function handleAuth() {
  13. if ('printZamowienie' == V::get('_task', '', $_GET)) {
  14. session_write_close();
  15. $this->printZamowieniePublicAction();
  16. exit;
  17. }
  18. if (!User::logged()) {
  19. User::authByRequest();
  20. }
  21. }
  22. public function typespecialAction() {
  23. $DBG = ('1' == V::get('DBG', '', $_REQUEST));
  24. header("Content-type: application/json");
  25. $fld = V::get('fld', '', $_GET);
  26. switch ($fld) {
  27. case 'id_company': {
  28. $typeSpecialCompanies = TypespecialVariable::getInstance(-1, '__COMPANIES');
  29. $query = V::get('q', '', $_REQUEST);
  30. $rawRows = null;
  31. $rows = $typeSpecialCompanies->getValuesWithExports($query);
  32. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">rows('.$query.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($rows);echo'</pre>';}
  33. foreach ($rows as $kID => $vItem) {
  34. $itemJson = new stdClass();
  35. $itemJson->id = $vItem->id;
  36. $itemJson->name = $vItem->param_out;
  37. if (!empty($vItem->exports)) {
  38. $itemJson->exports = $vItem->exports;
  39. }
  40. $jsonData[] = $itemJson;
  41. }
  42. echo json_encode($jsonData);
  43. }
  44. break;
  45. case 'ID_PROJECT': {
  46. $widgetProject = $this->getWidgetProject();
  47. $typeSpecialIdProject = Typespecial::getInstance($widgetProject['idKomorka'], $colName = $widgetProject['fieldName']);
  48. $query = V::get('q', '', $_REQUEST);
  49. $rawRows = null;
  50. $rows = $typeSpecialIdProject->getValuesWithExports($query);
  51. if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">rows('.$query.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($rows);echo'</pre>';}
  52. foreach ($rows as $kID => $vItem) {
  53. $itemJson = new stdClass();
  54. $itemJson->id = $vItem->id;
  55. $itemJson->name = $vItem->param_out;
  56. if (!empty($vItem->exports)) {
  57. $itemJson->exports = $vItem->exports;
  58. }
  59. $jsonData[] = $itemJson;
  60. }
  61. echo json_encode($jsonData);
  62. }
  63. break;
  64. }
  65. }
  66. public function defaultAction() {
  67. UI::gora();
  68. if (1 != V::get('_print', '', $_GET)) UI::menu();
  69. try {
  70. $data = array();
  71. $data['id_project'] = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
  72. $data['id_company'] = V::get('id_company', 0, $_REQUEST, 'int');
  73. $data['items_count'] = V::get('items_count', 10, $_REQUEST, 'int');
  74. $data['widgetCompanies'] = array();
  75. $data['widgetCompanies']['fieldName'] = 'id_company';
  76. $data['widgetCompanies']['dataUrl'] = "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=typespecial&fld={$data['widgetCompanies']['fieldName']}";
  77. $data['widgetCompanies']['typeSpecial'] = TypespecialVariable::getInstance(-1, '__COMPANIES');
  78. $data['widgetProject'] = $this->getWidgetProject();
  79. $this->zamZlecFormView($data);
  80. } catch (Exception $e) {
  81. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  82. }
  83. if (1 != V::get('_print', '', $_GET)) UI::dol();
  84. }
  85. public function reinstallAction() {
  86. UI::gora();
  87. try {
  88. DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS add INVOICE enum('0','1') NOT NULL DEFAULT '0' ");
  89. DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS_HIST add INVOICE varchar(6) NOT NULL DEFAULT 'N/S;' ");
  90. } catch (Exception $e) {
  91. if (fales !== strpos($e->getMessage(), 'Duplicate column name')) {
  92. UI::alert('warning', $e->getMessage());
  93. } else {
  94. UI::alert('danger', $e->getMessage());
  95. DBG::log($e);
  96. }
  97. }
  98. try {
  99. DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS add PAYMENT enum('0','1') NOT NULL DEFAULT '0' ");
  100. DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS_HIST add PAYMENT varchar(6) NOT NULL DEFAULT 'N/S;' ");
  101. } catch (Exception $e) {
  102. if (fales !== strpos($e->getMessage(), 'Duplicate column name')) {
  103. UI::alert('warning', $e->getMessage());
  104. } else {
  105. UI::alert('danger', $e->getMessage());
  106. DBG::log($e);
  107. }
  108. }
  109. try {
  110. DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS add NR_PKWIU varchar(255) NOT NULL DEFAULT '' ");
  111. DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS_HIST add NR_PKWIU varchar(255) NOT NULL DEFAULT 'N/S;' ");
  112. } catch (Exception $e) {
  113. if (fales !== strpos($e->getMessage(), 'Duplicate column name')) {
  114. UI::alert('warning', $e->getMessage());
  115. } else {
  116. UI::alert('danger', $e->getMessage());
  117. DBG::log($e);
  118. }
  119. }
  120. try {
  121. DB::getPDO()->execSql("
  122. CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `CRM_LISTA_ZASOBOW_ORDERS_summary_view` AS
  123. SELECT o.ID
  124. , SUM( COALESCE(f.OFFER_QUANTITY, 0) * COALESCE(f.OFFER_PRICE_PER_UNIT, 0) ) as SUM_POS
  125. , COUNT(1) as COUNT_POS
  126. , o.`ID_COMPANIES`
  127. , IF(o.`ID_COMPANIES` > 0,
  128. (select c.P_NAME from COMPANIES c where c.ID = o.ID_COMPANIES limit 1)
  129. , '') as Kontrahent
  130. , o.`ID_PROJECT`
  131. , o.`ID_PROJECT_path`
  132. , o.`A_RECORD_CREATE_DATE`
  133. , o.`A_RECORD_CREATE_AUTHOR`
  134. , o.`SYNC_SQIX_STATUS`
  135. , o.`A_RECORD_UPDATE_DATE`
  136. , o.`A_RECORD_UPDATE_AUTHOR`
  137. , o.`L_APPOITMENT_DATE`
  138. , o.`L_APPOITMENT_USER`
  139. , o.`L_APPOITMENT_PERIOD`
  140. , o.`L_APPOITMENT_INFO`
  141. , o.`L_APPOITMENT_TYPE`
  142. , o.`A_STATUS`
  143. , o.`A_STATUS_INFO`
  144. , o.`A_ADM_COMPANY`
  145. , o.`A_CLASSIFIED`
  146. -- , o.`NR`
  147. , o.`COMPANY_NIP`
  148. , o.`COMPANY_NAME`
  149. , o.`COMPANY_ADDRESS`
  150. , o.`OFFER_DATE`
  151. , o.`OFFER_NR`
  152. , o.`ORDER_TYPE`
  153. , o.`DELIVERY_DATE`
  154. , o.`DELIVERY_DATE_NOTES`
  155. , o.`EXECUTION_START_DATE`
  156. , o.`EXECUTION_END_DATE`
  157. , o.`CASH_PENALTY`
  158. , o.`LOCATION`
  159. , o.`NOTES`
  160. FROM `CRM_LISTA_ZASOBOW_ORDERS` o
  161. LEFT JOIN `CRM_LISTA_ZASOBOW_OFFERS` f on(f.ID_ORDER = o.ID and (f.A_STATUS is null or f.A_STATUS != 'DELETED'))
  162. GROUP BY o.`ID`
  163. ");
  164. } catch (Exception $e) {
  165. UI::alert('danger', $e->getMessage());
  166. DBG::log($e);
  167. }
  168. UI::alert('info', "Koniec");
  169. UI::dol();
  170. }
  171. public function getWidgetProject() {
  172. $widgetProject = array();
  173. $widgetProject['idTabela'] = 1656;// TODO: idZasob for TABELA Projekty
  174. $widgetProject['idKomorka'] = 1658;// TODO: idZasob for KOMORKA Projekty.P_ID
  175. $widgetProject['fieldName'] = 'ID_PROJECT';
  176. $widgetProject['dataUrl'] = "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=typespecial&fld={$widgetProject['fieldName']}";
  177. $widgetProject['typeSpecial'] = null;
  178. try {
  179. $acl = User::getAcl()->getObjectAcl('default_db', 'IN7_MK_BAZA_DYSTRYBUCJI');
  180. $acl->init($force = true);
  181. $acl->getFields();
  182. $widgetProject['typeSpecial'] = Typespecial::getInstance($widgetProject['idKomorka'], $colName = $widgetProject['fieldName']);
  183. } catch (Exception $e) {
  184. }
  185. return $widgetProject;
  186. }
  187. public function addZlecenieAction() {
  188. $id_company = V::get('id_company', 0, $_REQUEST, 'int');
  189. $id_project = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
  190. $orderType = 'zlecenie';
  191. $data = array();
  192. $data['id_company'] = $id_company;
  193. $data['id_project'] = $id_project;
  194. $data = $this->setProps($data);
  195. $sqlFieldsList = array();
  196. $sqlFieldsList[] = 'ID_PROJECT';
  197. $sqlFieldsList[] = 'ID_COMPANIES';
  198. $sqlFieldsList[] = 'COMPANY_NAME';
  199. $sqlFieldsList[] = 'COMPANY_ADDRESS';
  200. $sqlFieldsList[] = 'COMPANY_POST_CODE';
  201. $sqlFieldsList[] = 'COMPANY_CITY';
  202. $sqlFieldsList[] = 'COMPANY_NIP';
  203. $sqlFieldsList[] = 'COMPANY_CONTACT_PERSON';
  204. $sqlFieldsList[] = 'COMPANY_CONTACT_TEL';
  205. $sqlFieldsList[] = 'COMPANY_CONTACT_MAIL';
  206. $sqlFieldsList[] = 'DELIVERY_DATE';
  207. $sqlFieldsList[] = 'DELIVERY_DATE_NOTES';
  208. $sqlFieldsList[] = 'DELIVERY_TYPE';
  209. $sqlFieldsList[] = 'DELIVERY_LOCATION';
  210. $sqlFieldsList[] = 'CASH_PENALTY';
  211. $sqlFieldsList[] = 'ORDER_CONTACT_PERSON';
  212. $sqlFieldsList[] = 'ORDER_APPROVE_PERSON';
  213. $sqlFieldsList[] = 'DELIVERY_CONTACT_PERSON';
  214. $sqlFieldsList[] = 'PAYMENT_TERM_DAYS_FV';
  215. $sqlFieldsList[] = 'PAYMENT_METHOD';
  216. $sqlObj = array();
  217. $sqlObj['ORDER_TYPE'] = $orderType;
  218. foreach ($data as $fldName => $val) {
  219. if (!in_array($fldName, $sqlFieldsList)) continue;
  220. $sqlObj[$fldName] = $val;
  221. }
  222. $idOrder = DB::getDB()->ADD_NEW_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  223. if ($idOrder > 0) {
  224. {// update `ORDER_LABEL`: nr zamówienia / inicjały zamawiającego / numer budowy / miesiąc / rok
  225. if (!empty($data['obcy_nr_sprawy'])) {
  226. $inicjaly = User::getInicjaly();
  227. $year = date('Y');
  228. $month = '';// n Liczbowa forma miesiąca, bez zer wiodących 1 aż do 12
  229. switch (date('n')) {
  230. case 1: $month = 'I'; break;
  231. case 2: $month = 'II'; break;
  232. case 3: $month = 'III'; break;
  233. case 4: $month = 'IV'; break;
  234. case 5: $month = 'V'; break;
  235. case 6: $month = 'VI'; break;
  236. case 7: $month = 'VII'; break;
  237. case 8: $month = 'VIII'; break;
  238. case 9: $month = 'IX'; break;
  239. case 10: $month = 'X'; break;
  240. case 11: $month = 'XI'; break;
  241. case 12: $month = 'XII'; break;
  242. }
  243. // 58/MŁ/13/2016/10/VII/2016
  244. // 58 - nr rekordu
  245. // MŁ - inicjały
  246. // 13/2016 - nr budowy (obcy_nr_sprawy)
  247. // 10 - nr kolejny zamówienia w odniesieniu do danej budowy
  248. // VII - miesiąc
  249. // 2016 - rok
  250. $lpOrder = '';
  251. if ($data['id_project'] > 0) {
  252. $sqlIdProject = DB::getPDO()->quote($data['id_project'], PDO::PARAM_INT);
  253. $lpOrder = DB::getPDO()->fetchValue("select count(*) as cnt from CRM_LISTA_ZASOBOW_ORDERS where ID_PROJECT = {$sqlIdProject}");
  254. if ($lpOrder < 1) $lpOrder = 1;
  255. }
  256. $data['ORDER_LABEL'] = "{$idOrder}/{$inicjaly}/{$data['obcy_nr_sprawy']}/{$lpOrder}/{$month}/{$year}";
  257. }
  258. DB::getPDO()->exec("update CRM_LISTA_ZASOBOW_ORDERS set ORDER_LABEL = '{$data['ORDER_LABEL']}' where ID = '{$idOrder}'");
  259. }
  260. $urlZam = Request::getPathUri() . "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task={$orderType}&id={$idOrder}";
  261. header("Location: {$urlZam}");
  262. exit;
  263. } else {
  264. UI::gora();
  265. UI::menu();
  266. UI::alert('danger', 'Nie udało się utworzyć rekordu');
  267. UI::dol();
  268. }
  269. }
  270. public function zlecenieAction() {
  271. UI::gora();
  272. if (1 != V::get('_print', '', $_GET)) UI::menu();
  273. try {
  274. $id_order = V::get('id', 0, $_REQUEST, 'int');
  275. $id_project = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
  276. $id_company = V::get('id_company', 0, $_REQUEST, 'int');
  277. $items_count = V::get('items_count', 10, $_REQUEST, 'int');
  278. $data = array();
  279. $data['id'] = $id_order;
  280. $data['ile_pozycji'] = $items_count;
  281. $data['id_company'] = $id_company;
  282. $data['id_project'] = $id_project;
  283. $data = $this->setProps($data);
  284. DBG::log($data, 'array', "\$data");
  285. $mode = (V::get('_print', '', $_REQUEST))? 'print' : 'view';
  286. $this->zamowienieView($data, $mode);
  287. } catch (Exception $e) {
  288. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  289. }
  290. if (1 != V::get('_print', '', $_GET)) UI::dol();
  291. }
  292. public function addZamowienieAction() {
  293. $id_company = V::get('id_company', 0, $_REQUEST, 'int');
  294. $id_project = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
  295. $orderType = 'zamowienie';
  296. $data = array();
  297. $data['id_company'] = $id_company;
  298. $data['id_project'] = $id_project;
  299. $data = $this->setProps($data);
  300. $sqlFieldsList = array();
  301. $sqlFieldsList[] = 'ID_PROJECT';
  302. $sqlFieldsList[] = 'ID_COMPANIES';
  303. $sqlFieldsList[] = 'COMPANY_NAME';
  304. $sqlFieldsList[] = 'COMPANY_ADDRESS';
  305. $sqlFieldsList[] = 'COMPANY_POST_CODE';
  306. $sqlFieldsList[] = 'COMPANY_CITY';
  307. $sqlFieldsList[] = 'COMPANY_NIP';
  308. $sqlFieldsList[] = 'COMPANY_CONTACT_PERSON';
  309. $sqlFieldsList[] = 'COMPANY_CONTACT_TEL';
  310. $sqlFieldsList[] = 'COMPANY_CONTACT_MAIL';
  311. $sqlFieldsList[] = 'DELIVERY_DATE';
  312. $sqlFieldsList[] = 'DELIVERY_DATE_NOTES';
  313. $sqlFieldsList[] = 'DELIVERY_TYPE';
  314. $sqlFieldsList[] = 'DELIVERY_LOCATION';
  315. $sqlFieldsList[] = 'CASH_PENALTY';
  316. $sqlFieldsList[] = 'ORDER_CONTACT_PERSON';
  317. $sqlFieldsList[] = 'ORDER_APPROVE_PERSON';
  318. $sqlFieldsList[] = 'DELIVERY_CONTACT_PERSON';
  319. $sqlFieldsList[] = 'PAYMENT_TERM_DAYS_FV';
  320. $sqlFieldsList[] = 'PAYMENT_METHOD';
  321. $sqlObj = array();
  322. $sqlObj['ORDER_TYPE'] = $orderType;
  323. foreach ($data as $fldName => $val) {
  324. if (!in_array($fldName, $sqlFieldsList)) continue;
  325. $sqlObj[$fldName] = $val;
  326. }
  327. $idOrder = DB::getDB()->ADD_NEW_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  328. if ($idOrder > 0) {
  329. {// update `ORDER_LABEL`: nr zamówienia / inicjały zamawiającego / numer budowy / miesiąc / rok
  330. if (!empty($data['obcy_nr_sprawy'])) {
  331. $inicjaly = User::getInicjaly();
  332. $year = date('Y');
  333. $month = '';// n Liczbowa forma miesiąca, bez zer wiodących 1 aż do 12
  334. switch (date('n')) {
  335. case 1: $month = 'I'; break;
  336. case 2: $month = 'II'; break;
  337. case 3: $month = 'III'; break;
  338. case 4: $month = 'IV'; break;
  339. case 5: $month = 'V'; break;
  340. case 6: $month = 'VI'; break;
  341. case 7: $month = 'VII'; break;
  342. case 8: $month = 'VIII'; break;
  343. case 9: $month = 'IX'; break;
  344. case 10: $month = 'X'; break;
  345. case 11: $month = 'XI'; break;
  346. case 12: $month = 'XII'; break;
  347. }
  348. // 58/MŁ/13/2016/10/VII/2016
  349. // 58 - nr rekordu
  350. // MŁ - inicjały
  351. // 13/2016 - nr budowy (obcy_nr_sprawy)
  352. // 10 - nr kolejny zamówienia w odniesieniu do danej budowy
  353. // VII - miesiąc
  354. // 2016 - rok
  355. $lpOrder = '';
  356. if ($data['id_project'] > 0) {
  357. $sqlIdProject = DB::getPDO()->quote($data['id_project'], PDO::PARAM_INT);
  358. $lpOrder = DB::getPDO()->fetchValue("select count(*) as cnt from CRM_LISTA_ZASOBOW_ORDERS where ID_PROJECT = {$sqlIdProject}");
  359. if ($lpOrder < 1) $lpOrder = 1;
  360. }
  361. $data['ORDER_LABEL'] = "{$idOrder}/{$inicjaly}/{$data['obcy_nr_sprawy']}/{$lpOrder}/{$month}/{$year}";
  362. }
  363. DB::getPDO()->exec("update CRM_LISTA_ZASOBOW_ORDERS set ORDER_LABEL = '{$data['ORDER_LABEL']}' where ID = '{$idOrder}'");
  364. }
  365. $urlZam = Request::getPathUri() . "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task={$orderType}&id={$idOrder}";
  366. header("Location: {$urlZam}");
  367. exit;
  368. } else {
  369. UI::gora();
  370. UI::menu();
  371. UI::alert('danger', 'Nie udało się utworzyć rekordu');
  372. UI::dol();
  373. }
  374. }
  375. public function printZamowieniePublicAction() {
  376. $data = array();
  377. {// auth by token
  378. $id = V::get('id', 0, $_GET, 'int');
  379. if ($id <= 0) die("Brak dostępu");
  380. $token = V::get('token', '', $_GET);
  381. if (empty($token)) die("Brak dostępu");
  382. $email = V::get('email', '', $_GET);
  383. if (empty($email)) die("Brak dostępu");
  384. $data['id'] = $id;
  385. $data = $this->setProps($data);
  386. if (empty($data['id_project'])) die("Brak dostępu");
  387. if ($this->generateOrderLinkToken($id, $email, $data['id_project']) != $token) die("Brak dostępu");
  388. }
  389. $_GET['_print'] = $_REQUEST['_print'] = 1;
  390. UI::gora();
  391. try {
  392. $this->zamowienieView($data, $mode = 'print');
  393. } catch (Exception $e) {
  394. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  395. }
  396. echo'</body></html>';
  397. }
  398. public function generateOrderLinkToken($id, $email, $id_project) {
  399. return md5("pro-netmedia--{$id}--{$email}--{$id_project}");
  400. }
  401. public function zamowienieAction() {
  402. UI::gora();
  403. if (1 != V::get('_print', '', $_GET)) UI::menu();
  404. try {
  405. $id_order = V::get('id', 0, $_REQUEST, 'int');
  406. $id_project = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
  407. $id_company = V::get('id_company', 0, $_REQUEST, 'int');
  408. $items_count = V::get('items_count', 10, $_REQUEST, 'int');
  409. $data = array();
  410. $data['id'] = $id_order;
  411. $data['ile_pozycji'] = $items_count;
  412. $data['id_company'] = $id_company;
  413. $data['id_project'] = $id_project;
  414. $data = $this->setProps($data);
  415. if (1 == V::get('DBG_TYPE_ZLECENIE', '', $_GET)) $data['ORDER_TYPE'] = 'zlecenie';
  416. else if (1 == V::get('DBG_TYPE_UNDEFINED', '', $_GET)) $data['ORDER_TYPE'] = 'unknown';
  417. DBG::log($data, 'array', 'data');
  418. $mode = (V::get('_print', '', $_REQUEST))? 'print' : 'view';
  419. $this->zamowienieView($data, $mode);
  420. } catch (Exception $e) {
  421. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  422. }
  423. if (1 != V::get('_print', '', $_GET)) UI::dol();
  424. }
  425. public function previewOrder($idOrder) {
  426. try {
  427. $id_order = $idOrder;
  428. $data = array();
  429. $data['id'] = $id_order;
  430. $data = $this->setProps($data);
  431. $this->zamowienieView($data, $mode = 'preview');
  432. } catch (Exception $e) {
  433. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  434. }
  435. }
  436. public function setProps($data) {
  437. $data['_nr_budowy'] = '';// fetch from project - field M_DIST_DESC
  438. $sqlIdOrder = V::get('id', 0, $data, 'int');
  439. if ($sqlIdOrder > 0) {
  440. $rows = DB::getPDO()->fetchAll("
  441. select t.*
  442. from CRM_LISTA_ZASOBOW_ORDERS t
  443. where t.ID = {$sqlIdOrder}
  444. ");
  445. if (count($rows) > 0) {
  446. $row = reset($rows);
  447. if (!empty($row['ID_COMPANIES'])) $data['id_company'] = $row['ID_COMPANIES'];
  448. if (!empty($row['ID_PROJECT'])) $data['id_project'] = $row['ID_PROJECT'];
  449. $data['ORDER_TYPE'] = V::get('ORDER_TYPE', '', $row);
  450. $data['ORDER_LABEL'] = V::get('ORDER_LABEL', '', $row);
  451. $defaultOrderDate = substr(V::get('A_RECORD_CREATE_DATE', date("Y-m-d"), $row), 0, 10);
  452. $data['ORDER_DATE'] = V::get('ORDER_DATE', $defaultOrderDate, $row);
  453. $data['OFFER_NR'] = V::get('OFFER_NR', '', $row);
  454. $data['OFFER_DATE'] = V::get('OFFER_DATE', '', $row);
  455. $data['COMPANY_NAME'] = V::get('COMPANY_NAME', '', $row);
  456. $data['COMPANY_ADDRESS'] = V::get('COMPANY_ADDRESS', '', $row);
  457. $data['COMPANY_POST_CODE'] = V::get('COMPANY_POST_CODE', '', $row);
  458. $data['COMPANY_CITY'] = V::get('COMPANY_CITY', '', $row);
  459. $data['COMPANY_NIP'] = V::get('COMPANY_NIP', '', $row);
  460. $data['COMPANY_CONTACT_PERSON'] = V::get('COMPANY_CONTACT_PERSON', '', $row);
  461. $data['COMPANY_CONTACT_TEL'] = V::get('COMPANY_CONTACT_TEL', '', $row);
  462. $data['COMPANY_CONTACT_MAIL'] = V::get('COMPANY_CONTACT_MAIL', '', $row);
  463. $data['DELIVERY_DATE'] = V::get('DELIVERY_DATE', '', $row);
  464. if (!empty($data['DELIVERY_DATE'])) {
  465. $data['DELIVERY_DATE'] = (strlen($data['DELIVERY_DATE']) < 10) ? '' : substr($data['DELIVERY_DATE'], 0, 10);
  466. $dateEx = explode('-', $data['DELIVERY_DATE']);
  467. if (count($dateEx) != 3) $data['DELIVERY_DATE'] = '';
  468. else if (strlen($dateEx[0]) != 4 || strlen($dateEx[1]) != 2) $data['DELIVERY_DATE'] = '';
  469. }
  470. $data['DELIVERY_DATE_NOTES'] = V::get('DELIVERY_DATE_NOTES', '', $row);
  471. $data['DELIVERY_START_DATE'] = V::get('DELIVERY_START_DATE', '', $row);
  472. $data['DELIVERY_TYPE'] = V::get('DELIVERY_TYPE', '', $row);
  473. $data['DELIVERY_LOCATION'] = V::get('DELIVERY_LOCATION', '', $row);
  474. $data['CASH_PENALTY'] = V::get('CASH_PENALTY', '', $row);
  475. $data['ORDER_CONTACT_PERSON'] = V::get('ORDER_CONTACT_PERSON', '', $row);
  476. $data['ORDER_APPROVE_PERSON'] = V::get('ORDER_APPROVE_PERSON', '', $row);
  477. $data['DELIVERY_CONTACT_PERSON'] = V::get('DELIVERY_CONTACT_PERSON', '', $row);
  478. $data['PAYMENT_TERM_DAYS_FV'] = V::get('PAYMENT_TERM_DAYS_FV', '60', $row);
  479. $data['PAYMENT_METHOD'] = V::get('PAYMENT_METHOD', 'przelew', $row);
  480. $data['NOTES'] = V::get('NOTES', '', $row);
  481. $data['APPROVE_STATUS'] = V::get('APPROVE_STATUS', '', $row);
  482. $data['ORDER_CONTACT_FAX'] = V::get('ORDER_CONTACT_FAX', '', $row);
  483. $data['ORDER_CONTACT_EMAIL'] = V::get('ORDER_CONTACT_EMAIL', '', $row);
  484. $data['ADDITIONAL_CONDITIONS'] = V::get('ADDITIONAL_CONDITIONS', '', $row);
  485. $data['NR_PKWIU'] = V::get('NR_PKWIU', '', $row);
  486. }
  487. $data['orderPosList'] = $this->fetchOrderPosList($sqlIdOrder);
  488. }
  489. $sqlIdCompany = V::get('id_company', 0, $data, 'int');
  490. if ($sqlIdCompany > 0) {
  491. $rows = DB::getPDO()->fetchAll("
  492. select c.*
  493. from COMPANIES c
  494. where c.ID = {$sqlIdCompany}
  495. ");
  496. if (count($rows) > 0) {
  497. $row = reset($rows);
  498. DBG::log($row, 'array', "company by id='{$sqlIdCompany}'");
  499. if (empty($data['COMPANY_NAME'])) $data['COMPANY_NAME'] = V::get('P_NAME', '', $row);
  500. if (empty($data['COMPANY_ADDRESS'])) {
  501. $data['COMPANY_ADDRESS'] = V::get('P_ADDRESS_STREET', '', $row);
  502. if (!empty($row['P_ADDRESS_HOUSE'])) $data['COMPANY_ADDRESS'] .= " {$row['P_ADDRESS_HOUSE']}";// add P_ADDRESS_HOUSE
  503. if (!empty($row['P_ADDRESS_HOME'])) $data['COMPANY_ADDRESS'] .= "/{$row['P_ADDRESS_HOME']}";// add '/' P_ADDRESS_HOME
  504. }
  505. if (empty($data['COMPANY_POST_CODE'])) $data['COMPANY_POST_CODE'] = V::get('P_ADDRESS_POST_CODE', '', $row);
  506. if (empty($data['COMPANY_CITY'])) $data['COMPANY_CITY'] = V::get('P_ADDRESS_CITY', '', $row);
  507. if (empty($data['COMPANY_NIP'])) $data['COMPANY_NIP'] = V::get('P_NIP', '', $row);
  508. if (empty($data['COMPANY_CONTACT_PERSON'])) $data['COMPANY_CONTACT_PERSON'] = V::get('P_CONTACT_PERSON', '', $row);
  509. if (empty($data['COMPANY_CONTACT_TEL'])) $data['COMPANY_CONTACT_TEL'] = V::get('P_PHONE', '', $row);
  510. if (empty($data['COMPANY_CONTACT_MAIL'])) $data['COMPANY_CONTACT_MAIL'] = V::get('user_mail_contact', '', $row);
  511. }
  512. }
  513. $sqlIdProject = V::get('id_project', 0, $data, 'int');
  514. if ($sqlIdProject > 0) {
  515. $rows = DB::getPDO()->fetchAll("
  516. select p.*
  517. from IN7_MK_BAZA_DYSTRYBUCJI p
  518. where p.ID = {$sqlIdProject}
  519. limit 1
  520. ");
  521. if (count($rows) > 0) {
  522. $row = reset($rows);
  523. if (!empty($row['M_DIST_DEALNUM'])) $data['obcy_nr_sprawy'] = $row['M_DIST_DEALNUM'];
  524. if (!empty($row['M_DIST_DESC'])) $data['_nr_budowy'] = $row['M_DIST_DESC'];
  525. }
  526. }
  527. if (!empty($data['id_company'])) $data['ID_COMPANIES'] = $data['id_company'];
  528. if (!empty($data['id_project'])) $data['ID_PROJECT'] = $data['id_project'];
  529. return $data;
  530. }
  531. public function zamZlecFormView($data) {
  532. $id_project = V::get('id_project', 0, $data);
  533. $id_company = V::get('id_company', 0, $data);
  534. $items_count = V::get('items_count', 0, $data);
  535. $widgetCompanies = V::get('widgetCompanies', array(), $data);
  536. $widgetProject = V::get('widgetProject', array(), $data);
  537. $projOrders = ($id_project > 0)
  538. ? DB::getPDO()->fetchAll("
  539. select o.*
  540. , p.M_DIST_DEALNUM as obcy_nr_sprawy
  541. from CRM_LISTA_ZASOBOW_ORDERS o
  542. left join IN7_MK_BAZA_DYSTRYBUCJI p on(p.ID = o.ID_PROJECT)
  543. left join COMPANIES c on(c.ID = o.ID_COMPANIES)
  544. where o.ID_PROJECT = {$id_project}
  545. order by ID DESC
  546. -- limit 100
  547. ")
  548. : array();
  549. UI::startContainer(['style'=>"margin-top:2em"]);
  550. UI::startTag('form', ['action'=>"", 'method'=>"get", 'class'=>"form-horizontal"]);
  551. echo UI::h('input', ['type'=>"hidden", 'name'=>"_route", 'value'=>"UrlAction_ProjektyProNetMediaZamZlec"]);
  552. UI::startTag('div', ['class'=>"form-group"]);
  553. echo UI::h('label', ['for'=>"id_project", 'class'=>"col-sm-2 control-label"], "Projekt");
  554. UI::startTag('div', ['class'=>"col-sm-4"]);
  555. if ($widgetProject['typeSpecial']) {
  556. $fName = $widgetProject['fieldName'];
  557. $fldParams = array();
  558. $fldParams['allowCreate'] = false;
  559. $fldParams['ajaxDataUrlBase'] = $widgetProject['dataUrl'];
  560. if ($data['id_project'] > 0) {
  561. $tsValues = $widgetProject['typeSpecial']->getValuesWithExports($q = $data['id_project']);
  562. if (!empty($tsValues[ $data['id_project'] ])) {
  563. $fldParams['typespecialValue'] = $tsValues[ $data['id_project'] ]->param_out;
  564. }
  565. }
  566. //$fldParams['ajaxDataUrlBase'] .= "&DBG_TS=3";
  567. echo $widgetProject['typeSpecial']->showFormItem($idTbl = $widgetProject['idTabela'], $fName, $selValue = $data['id_project'], $fldParams);
  568. } else {
  569. echo UI::h('input', ['type'=>"number", 'name'=>$widgetProject['fieldName'], 'value'=>$data['id_project'], 'class'=>"form-control"]);
  570. }
  571. UI::endTag('div');// .col-sm-4
  572. UI::endTag('div');// .form-group
  573. UI::startTag('div', ['class'=>"form-group"]);
  574. echo UI::h('label', ['for'=>"id_company", 'class'=>"col-sm-2 control-label"], "Dostawca");
  575. UI::startTag('div', ['class'=>"col-sm-10"]);
  576. if ($widgetCompanies['typeSpecial']) {
  577. $fName = $widgetCompanies['fieldName'];
  578. $fldParams = array();
  579. $fldParams['allowCreate'] = false;
  580. $fldParams['ajaxDataUrlBase'] = $widgetCompanies['dataUrl'];
  581. if ($id_company > 0) {
  582. $tsValues = $widgetCompanies['typeSpecial']->getEditSelectedValuesByIds(-1, $id = $id_company, $fName, $fieldValue = $id_company);
  583. if (1 == count($tsValues)) {
  584. $fldParams['typespecialValue'] = array_values($tsValues);
  585. $fldParams['typespecialValue'] = reset($fldParams['typespecialValue']);
  586. }
  587. }
  588. //$fldParams['ajaxDataUrlBase'] .= "&DBG_TS=3";
  589. echo $widgetCompanies['typeSpecial']->showFormItem($tblID = -1, $fName, $selValue = $id_company, $fldParams);
  590. } else {
  591. echo UI::h('input', ['type'=>"number", 'name'=>"id_company", 'value'=>$id_company, 'class'=>"form-control"]);
  592. }
  593. UI::endTag('div');// .col-sm-10
  594. UI::endTag('div');// .form-group
  595. echo UI::h('div', ['class'=>"form-group"], [
  596. UI::h('div', ['class'=>"col-sm-offset-2 col-sm-10"], [
  597. UI::h('input', ['type'=>"hidden", 'name'=>"_task", 'value'=>""]),
  598. " ", UI::h('label', [], "Dodaj nowe"),
  599. " ", UI::h('button', ['type'=>"submit", 'class'=>"btn btn-primary", 'onclick'=>"return submitZamowienie(this);"], "Zamówienie"),
  600. " ", UI::h('button', ['type'=>"submit", 'class'=>"btn btn-primary", 'onclick'=>"return submitZlecenie(this);"], "Zlecenie")
  601. ])
  602. ]);
  603. UI::endTag('form');
  604. UI::endContainer();
  605. echo UI::h('hr');
  606. echo UI::h('style', ['type' => "text/css"], "
  607. .orders_cell__order_notes .edit_note_btn { opacity:0.1; cursor:pointer }
  608. .orders_cell__order_notes:hover .edit_note_btn { opacity:1; color:#337AB7 }
  609. ");
  610. if ($id_project > 0) { // !empty($projOrders)) {
  611. UI::startContainer(['style'=>"margin-top:2em"]);
  612. $idTableOrders = ProcesHelper::getZasobTableID('CRM_LISTA_ZASOBOW_ORDERS');
  613. UI::table([
  614. 'disable_lp' => true,
  615. 'cell_padding' => 6,
  616. 'cols' => [
  617. '#',
  618. 'status',
  619. 'uwagi',
  620. 'nr zlecenia',
  621. 'nr budowy',
  622. ],
  623. 'rows' => array_map(function ($order) use ($idTableOrders) {
  624. $changeState = array();
  625. $urlFunctions = Route_UrlAction::getTableFunctions($idTableOrders, $order['ID'], 'CRM_LISTA_ZASOBOW_ORDERS', User::getLogin());
  626. //DBG::_(true, true, 'urlFunctions', $urlFunctions);
  627. if ('WERSJA_ROBOCZA' == $order['APPROVE_STATUS']) {
  628. foreach ($urlFunctions as $fun) {
  629. if ('ProjektyProNetMediaRequestApproveZam' == $fun['name']) {
  630. $changeState['OCZEKUJE_ZATWIERDZENIA'] = $fun;
  631. }
  632. }
  633. }
  634. else if ('OCZEKUJE_ZATWIERDZENIA' == $order['APPROVE_STATUS']) {
  635. foreach ($urlFunctions as $fun) {
  636. if ('ProjektyProNetMediaApproveZam' == $fun['name']) {
  637. $changeState['OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA'] = $fun;
  638. }
  639. }
  640. }
  641. else if ('OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA' == $order['APPROVE_STATUS']) {
  642. foreach ($urlFunctions as $fun) {
  643. if ('ProjektyProNetMediaFinalApproveZam' == $fun['name']) {
  644. $changeState['ZATWIERDZONE'] = $fun;
  645. }
  646. }
  647. }
  648. $changeStateOut = "";
  649. if (!empty($changeState)) {
  650. foreach ($changeState as $key => $fun) {
  651. $changeStateOut .= UI::h('a', [
  652. 'href' => $this->generateFunctionLink($fun, $idTableOrders, $order['ID'], $order),
  653. 'class' => "btn btn-xs btn-default"
  654. ], "Zmień na: {$key}");
  655. $changeStateOut .= " ";
  656. }
  657. }
  658. return [
  659. '#' => $order['ID'] . UI::h('a', [
  660. 'href' => "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task={$order['ORDER_TYPE']}&id={$order['ID']}",
  661. 'class' => "btn btn-link btn-xs"
  662. ], "Edytuj {$order['ORDER_TYPE']}"),
  663. 'status' => $order['APPROVE_STATUS'] . " " . $changeStateOut,
  664. '@class[uwagi]' => 'orders_cell__order_notes',
  665. 'uwagi' => UI::h('span', ['class'=>"order-notes"], $order['ORDER_NOTES']) . " " .
  666. UI::h('i', [
  667. 'onClick' => "return p5UI__Clickable(this, 'p5:ZamZlec:editNote', {idOrder: '{$order['ID']}', label: '{$order['ORDER_LABEL']}'})",
  668. 'class' => "glyphicon glyphicon-pencil edit_note_btn",
  669. 'title' => "Edytuj"
  670. ]),
  671. 'nr zlecenia' => $order['ORDER_LABEL'],
  672. 'nr budowy' => $order['obcy_nr_sprawy'],
  673. ];
  674. }, $projOrders)
  675. ]);
  676. UI::endContainer();
  677. } else {
  678. $filterInit = [];
  679. $forceFilterInit = [];
  680. $acl = Core_AclHelper::getAclByNamespace('default_db/CRM_LISTA_ZASOBOW_ORDERS');
  681. $syncUrl = Request::getPathUri() . 'index.php?_route=ViewTableAjax&namespace=' . $acl->getNamespace();
  682. $tbl = new TableAjax($acl);
  683. $tblLabel = $acl->getNamespace();
  684. if ('default_db' == $acl->getSourceName()) {
  685. $tblLabel = array();
  686. $zasobObj = ProcesHelper::getZasobTableInfo($acl->getID());
  687. if (!$zasobObj) throw new Exception("Zasob TABELA ID=" . $acl->getID() . " nie istnieje");
  688. if (!empty($zasobObj->DESC_PL)) $tblLabel []= $zasobObj->DESC_PL;
  689. if (!empty($zasobObj->OPIS)) $tblLabel []= $zasobObj->OPIS;
  690. $tblLabel = implode(" - ", $tblLabel);
  691. }
  692. $tbl->setSyncUrl($syncUrl);
  693. $tbl->setLabel($tblLabel);
  694. $tbl->addRowFunction('edit');
  695. // $tbl->addRowFunction('hist');
  696. // $tbl->addRowFunction('files');
  697. $tbl->addRowFunction('msgs');
  698. $tbl->setFilterInit($filterInit);
  699. if (!empty($forceFilterInit)) $tbl->setForceFilterInit($forceFilterInit);
  700. echo $tbl->render();
  701. }
  702. echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"static/sweetalert2.min.css"]);
  703. echo UI::h('script', ['src'=>'static/sweetalert2.min.js']);
  704. UI::inlineJS(__FILE__ . ".zam-zlec-list.js", [
  705. 'SAVE_ORDER_NOTES_URL' => "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=updateOrderNoteAjax",
  706. 'DBG' => (DBG::isActive()) ? "1" : "0"
  707. ]);
  708. }
  709. public function generateFunctionLink($fun, $idTableOrders, $idOrder, $order) {
  710. $link = $fun['baseLink'];
  711. if (empty($fun['cell_id_params'])) return $link;
  712. $fieldMap = array();
  713. {
  714. $rows = DB::getPDO()->fetchAll("
  715. select z.ID, z.`DESC`
  716. from CRM_LISTA_ZASOBOW z
  717. where z.PARENT_ID = '{$idTableOrders}'
  718. and z.`TYPE` = 'KOMORKA'
  719. ");
  720. if (empty($rows)) return '#';
  721. foreach ($rows as $row) {
  722. $fieldMap[ $row['ID'] ] = $row['DESC'];
  723. }
  724. if (empty($fieldMap)) return '#';
  725. }
  726. $record = null;
  727. {
  728. $rows = DB::getPDO()->fetchAll("
  729. select r.*
  730. from CRM_LISTA_ZASOBOW_ORDERS r
  731. where r.ID = '{$idOrder}'
  732. ");
  733. if (empty($rows)) return '#';
  734. $record = $rows[0];
  735. }
  736. if (!$record) return '#';
  737. $urlParams = array();// [ "{$urlParamName}={$paramValue}" ]
  738. foreach ($fun['cell_id_params'] as $idField => $urlParamName) {
  739. $paramValue = '';
  740. if (array_key_exists($idField, $fieldMap)) {
  741. $paramValue = V::get($fieldMap[$idField], '', $record);
  742. $urlParams[] = "{$urlParamName}={$paramValue}";
  743. }
  744. }
  745. if (!empty($urlParams)) $link .= "&" . implode("&", $urlParams);
  746. return $link;
  747. }
  748. public function sendToAjaxAction() {
  749. Response::sendTryCatchJson(array($this, 'sendToAjax'), $args = 'JSON_FROM_REQUEST_BODY');
  750. }
  751. public function sendToAjax($args) {
  752. $response = array();
  753. $id = V::get('id', 0, $args, 'int');
  754. if ($id <= 0) throw new Exception("Error Processing Request - missing id");
  755. $email = V::get('email', '', $args, 'word');
  756. if (empty($email)) throw new Exception("Error Processing Request - missing email");
  757. // TODO: validate email address
  758. $data['id'] = $id;
  759. $data = $this->setProps($data);
  760. if (empty($data['id_project'])) throw new Exception("Error Processing Request - missing project id");
  761. $token = $this->generateOrderLinkToken($id, $email, $data['id_project']);
  762. $orderStatus = '';
  763. if ('ZATWIERDZONE' == $data['APPROVE_STATUS']) $orderStatus = 'Zatwierdzone';
  764. else if ('ODRZUCONE' == $data['APPROVE_STATUS']) $orderStatus = 'Odrzucone';
  765. else if ('OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA' == $data['APPROVE_STATUS']) $orderStatus = 'Oczekuje ostatecznego zatwierdzenia';
  766. else if ('OCZEKUJE_ZATWIERDZENIA' == $data['APPROVE_STATUS']) $orderStatus = 'Oczekuje zatwierdzenia';
  767. else if ('WERSJA_ROBOCZA' == $data['APPROVE_STATUS']) $orderStatus = 'Wersja robocza';
  768. if (DBG::isActive()) $response['DBG__DATA'] = $data;
  769. if (DBG::isActive()) $response['DBG__TOKEN'] = $token;
  770. $link = Request::getPathUri() . "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec";
  771. $link .= "&_task=printZamowienie";
  772. $link .= "&id={$id}";
  773. $link .= "&email={$email}";
  774. $link .= "&token={$token}";
  775. if (DBG::isActive()) $response['DBG__LINK'] = $link;
  776. $subject = "Zamówienie {$data['ORDER_LABEL']} - Pro-Net.Media S.A.";
  777. $message = '<html><body>';
  778. $message .= '<p><a href="'.$link.'">'."Zamówienie nr {$data['ORDER_LABEL']}".'</a></p>'."\n";
  779. $message .= "<p>Status zamówienia: {$orderStatus}</p>\n";
  780. $message .= "\n<p>Wiadomość została wygenerowana automatycznie, prosimy na nią nie odpowiadać.</p>";
  781. $message .= "<p>Pro-Net.Media S.A.<br><a href=\"http://pro-netmedia.pl/\">pro-netmedia.pl</a></p>";
  782. $message .= '</body></html>';
  783. $headers = 'MIME-Version: 1.0' . "\r\n";
  784. $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
  785. $headers .= 'From: "Pro-Net.Media S.A." <noreply@pro-netmedia.pl>' . "\r\n";
  786. // $headers .= 'Bcc: piotrl86+zlecenie--pro-netmedia@gmail.com' . "\r\n";
  787. // $email = 'piotrl86+dbg-orders-pro-netmedia@gmail.com';// TODO: RMME TEST
  788. if (!mail($email, $subject, $message, $headers)) {
  789. $response['msg'] = "Nie udało się wysłać wiadomości";
  790. $response['type'] = "error";
  791. } else {
  792. $response['msg'] = "Wysłano wiadomość";
  793. $response['type'] = "success";
  794. }
  795. return $response;
  796. }
  797. public function updateOrderNoteAjaxAction() {
  798. Response::sendTryCatchJson(array($this, 'updateOrderNoteAjax'), $args = 'JSON_FROM_REQUEST_BODY');
  799. }
  800. public function updateOrderNoteAjax($args) {
  801. $response = array();
  802. $response['type'] = "error";
  803. if (DBG::isActive()) $response['DBG__ARGS'] = $args;
  804. $id = V::get('id', 0, $args, 'int');
  805. if ($id <= 0) throw new Exception("Error Processing Request - wrong id format");
  806. $notes = V::get('notes', '', $args);
  807. if (strlen($notes) > 255) throw new Exception("Przekroczono limit długości znaków");
  808. $sqlObj = array();
  809. $sqlObj['ID'] = $id;
  810. $sqlObj['ORDER_NOTES'] = $notes;
  811. $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  812. if (DBG::isActive()) $response['DBG__DB_affected'] = $affected;
  813. if ($affected < 0) throw new Exception("Wystąpiły błędy podczas wprowadzania zmian");
  814. $response['order'] = array();
  815. $response['order']['ID'] = $id;
  816. $response['order']['ORDER_NOTES'] = DB::getPDO()->fetchValue("select ORDER_NOTES from CRM_LISTA_ZASOBOW_ORDERS where ID = {$id}");
  817. $response['msg'] = "Zmiany wprowadzono pomyślnie";
  818. $response['type'] = "success";
  819. return $response;
  820. }
  821. public function saveAjaxAction() {
  822. $body = Request::getRequestBody();
  823. $json = json_decode($body, $assoc = true);
  824. $data = array();
  825. $data['id'] = V::get('id', 0, $_REQUEST, 'int');
  826. $data['id_company'] = V::get('id_company', 0, $_REQUEST, 'int');
  827. $data['id_project'] = V::get('id_project', 0, $_REQUEST, 'int');
  828. $data = $this->setProps($data);
  829. $res = new stdClass();
  830. $res->type = 'success';
  831. $res->msg = 'OK';
  832. $res->idOrder = V::get('idOrder', -1, $json, 'int');
  833. $res->orderPosList = array();
  834. $res->fields = new stdClass();
  835. if (DBG::isActive()) $res->DBG_DATA = $data;
  836. if (!empty($json['fields'])) {
  837. $sqlFieldsList = array();
  838. $sqlFieldsList[] = 'ID_PROJECT';
  839. $sqlFieldsList[] = 'ID_COMPANIES';
  840. $sqlFieldsList[] = 'COMPANY_NAME';
  841. $sqlFieldsList[] = 'COMPANY_ADDRESS';
  842. $sqlFieldsList[] = 'COMPANY_POST_CODE';
  843. $sqlFieldsList[] = 'COMPANY_CITY';
  844. $sqlFieldsList[] = 'COMPANY_NIP';
  845. $sqlFieldsList[] = 'COMPANY_CONTACT_PERSON';
  846. $sqlFieldsList[] = 'COMPANY_CONTACT_TEL';
  847. $sqlFieldsList[] = 'COMPANY_CONTACT_MAIL';
  848. $sqlFieldsList[] = 'DELIVERY_DATE';
  849. $sqlFieldsList[] = 'DELIVERY_DATE_NOTES';
  850. $sqlFieldsList[] = 'DELIVERY_TYPE';
  851. $sqlFieldsList[] = 'DELIVERY_LOCATION';
  852. $sqlFieldsList[] = 'CASH_PENALTY';
  853. $sqlFieldsList[] = 'ORDER_CONTACT_PERSON';
  854. $sqlFieldsList[] = 'ORDER_APPROVE_PERSON';
  855. $sqlFieldsList[] = 'DELIVERY_CONTACT_PERSON';
  856. $sqlFieldsList[] = 'OFFER_NR';
  857. $sqlFieldsList[] = 'ORDER_DATE';
  858. $sqlFieldsList[] = 'PAYMENT_TERM_DAYS_FV';
  859. $sqlFieldsList[] = 'PAYMENT_METHOD';
  860. $sqlFieldsList[] = 'NOTES';
  861. $sqlFieldsList[] = 'DELIVERY_START_DATE';
  862. $sqlFieldsList[] = 'ORDER_CONTACT_FAX';
  863. $sqlFieldsList[] = 'ORDER_CONTACT_EMAIL';
  864. $sqlFieldsList[] = 'ADDITIONAL_CONDITIONS';
  865. $sqlFieldsList[] = 'NR_PKWIU';
  866. $sqlObj = array();
  867. //$sqlObj['ORDER_TYPE'] = $json['type'];
  868. foreach ($data as $fldName => $val) {
  869. if (!in_array($fldName, $sqlFieldsList)) continue;
  870. $sqlObj[$fldName] = $val;
  871. }
  872. foreach ($json['fields'] as $fldName => $val) {
  873. if (!in_array($fldName, $sqlFieldsList)) continue;
  874. $sqlObj[$fldName] = $val;
  875. }
  876. $res->TODO_SQL_OBJ = $sqlObj;
  877. $res->fields = $sqlObj;
  878. if ($res->idOrder > 0) {
  879. $sqlObj['ID'] = $res->idOrder;
  880. $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  881. if ($affected > 0) {
  882. $res->type = 'success';
  883. $res->msg = "Zaktualizowano rekord '{$res->idOrder}'";
  884. $rows = DB::getPDO()->fetchAll("select * from CRM_LISTA_ZASOBOW_ORDERS where ID = '{$res->idOrder}'");
  885. $row = reset($rows);
  886. $res->fields = $row;
  887. } else if ($affected < 0) {
  888. $res->type = 'danger';
  889. $res->msg = 'Nie udało się wprowadzić zmian';
  890. }
  891. } else {
  892. $idOrder = DB::getDB()->ADD_NEW_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  893. if ($idOrder > 0) {
  894. $res->idOrder = $idOrder;
  895. $res->type = 'success';
  896. $res->msg = "Utworzono rekord nr '{$res->idOrder}'";
  897. $rows = DB::getPDO()->fetchAll("select * from CRM_LISTA_ZASOBOW_ORDERS where ID = '{$res->idOrder}'");
  898. $row = reset($rows);
  899. $res->fields = $row;
  900. } else {
  901. $res->idOrder = -1;
  902. $res->type = 'danger';
  903. $res->msg = 'Nie udało się utworzyć rekordu';
  904. }
  905. }
  906. {// try to add new company
  907. if (empty($res->fields['ID_COMPANIES'])) {
  908. $comObj = array();
  909. $comObj['P_NAME'] = V::get('COMPANY_NAME', '', $sqlObj);
  910. $comObj['P_ADDRESS_STREET'] = V::get('COMPANY_ADDRESS', '', $sqlObj);
  911. $comObj['P_ADDRESS_POST_CODE'] = V::get('COMPANY_POST_CODE', '', $sqlObj);
  912. $comObj['P_ADDRESS_CITY'] = V::get('COMPANY_CITY', '', $sqlObj);
  913. $comObj['P_NIP'] = V::get('COMPANY_NIP', '', $sqlObj);
  914. $comObj['P_CONTACT_PERSON'] = V::get('COMPANY_CONTACT_PERSON', '', $sqlObj);
  915. $comObj['P_PHONE'] = V::get('COMPANY_CONTACT_TEL', '', $sqlObj);
  916. $comObj['user_mail_contact'] = V::get('COMPANY_CONTACT_MAIL', '', $sqlObj);
  917. if (!empty($comObj['P_NIP']) && !empty($comObj['P_NAME']) && !empty($comObj['P_ADDRESS_STREET']) && !empty($comObj['P_PHONE'])) {
  918. $res->TODO_ADD_COM = $comObj;
  919. $idCompany = DB::getDB()->ADD_NEW_OBJ('COMPANIES', (object)$comObj);
  920. if ($idCompany > 0) {
  921. $orderObj['ID'] = $res->idOrder;
  922. $orderObj['ID_COMPANIES'] = $idCompany;
  923. $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$orderObj);
  924. $rows = DB::getPDO()->fetchAll("select * from CRM_LISTA_ZASOBOW_ORDERS where ID = '{$res->idOrder}'");
  925. $row = reset($rows);
  926. $res->fields = $row;
  927. }
  928. }
  929. }
  930. }
  931. }
  932. $currentPosList = $this->fetchOrderPosList($res->idOrder);
  933. $res->validateErrors = array();
  934. if (!empty($json['orderPosList']) && $res->idOrder > 0) {
  935. $idMap = array();// $idFrontEnd => $idBackEnd
  936. foreach ($json['orderPosList'] as $item) {
  937. $sqlObj = array();
  938. $sqlObj['ID_ORDER'] = $res->idOrder;
  939. if ($item['id'] <= 0
  940. && empty($item['name'])
  941. && empty($item['price'])
  942. && empty($item['quantity'])
  943. && empty($item['unit'])) {// skip empty pos
  944. continue;
  945. }
  946. $validatePosErrors = $this->validatePos($item);
  947. if (!empty($validatePosErrors)) {
  948. $res->validateErrors[ $item['id'] ] = $validatePosErrors;
  949. } else {
  950. $sqlObj['OFFER_NAME'] = $item['name'];
  951. $sqlObj['OFFER_PRICE_PER_UNIT'] = str_replace(',', '.', $item['price']);
  952. $sqlObj['OFFER_QUANTITY'] = $item['quantity'];
  953. $sqlObj['OFFER_UNIT'] = $item['unit'];
  954. if ($item['id'] > 0) {
  955. $sqlObj['ID'] = $item['id'];
  956. }
  957. if ($sqlObj['ID'] > 0) {
  958. DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_OFFERS', (object)$sqlObj);
  959. } else {
  960. $idPos = DB::getDB()->ADD_NEW_OBJ('CRM_LISTA_ZASOBOW_OFFERS', (object)$sqlObj);
  961. $idMap[ $item['id'] ] = $idPos;
  962. }
  963. }
  964. }
  965. if (!empty($json['toDeletePosList']) && $res->idOrder > 0) {
  966. $res->DELETE_LOG = array();
  967. foreach ($json['toDeletePosList'] as $idFrontEnd => $bool) {
  968. if (!$bool) continue;
  969. if ($idFrontEnd <= 0) continue;
  970. if (array_key_exists($idFrontEnd, $currentPosList)) {
  971. $sqlObj = array();
  972. $sqlObj['ID'] = $idFrontEnd;
  973. $sqlObj['A_STATUS'] = 'DELETED';
  974. $res->DELETE_LOG[$idFrontEnd] = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_OFFERS', (object)$sqlObj);
  975. }
  976. }
  977. }
  978. $orderPoslist = array();
  979. {// fix state frontEnd <--> backEnd
  980. $updatedPosList = $this->fetchOrderPosList($res->idOrder);
  981. foreach ($json['orderPosList'] as $item) {
  982. $idFrontEnd = $item['id'];
  983. $idBackEnd = 0;
  984. if ($idFrontEnd <= 0 && array_key_exists($idFrontEnd, $idMap)) {
  985. $idBackEnd = $idMap[$idFrontEnd];
  986. } else {// $item['id'] > 0
  987. $idBackEnd = $idFrontEnd;
  988. }
  989. if (!array_key_exists($idBackEnd, $updatedPosList)) $idBackEnd = 0;
  990. if ($idBackEnd) {
  991. $orderPoslist[] = $updatedPosList[ $idBackEnd ];
  992. } else {
  993. $orderPoslist[] = $item;
  994. $res->validateErrors[ $item['id'] ][ 'name' ] = true;
  995. $res->validateErrors[ $item['id'] ][ 'price' ] = true;
  996. $res->validateErrors[ $item['id'] ][ 'quantity' ] = true;
  997. $res->validateErrors[ $item['id'] ][ 'unit' ] = true;
  998. }
  999. }
  1000. $res->orderPosList = $orderPoslist;
  1001. }
  1002. foreach ($idMap as $idFrontEnd => $idBackEnd) {
  1003. if (array_key_exists($idFrontEnd, $res->validateErrors)) {
  1004. }
  1005. }
  1006. }
  1007. $res->validateErrors = (object)$res->validateErrors;
  1008. Response::sendJsonExit($res);
  1009. }
  1010. public function validatePos($item) {
  1011. $validatePosErrors = array();
  1012. if (empty($item['name'])) $validatePosErrors['name'] = 'Brak nazwy';
  1013. if (empty($item['unit'])) $validatePosErrors['unit'] = 'Brak jednostki';
  1014. if (empty($item['quantity'])) $validatePosErrors['quantity'] = 'Brak ilości';
  1015. if (empty($item['price'])) $validatePosErrors['price'] = 'Brak ceny jednostkowej';
  1016. return $validatePosErrors;
  1017. }
  1018. public function fetchOrderPosList($idOrder) {
  1019. $orderPosList = array();
  1020. $rows = DB::getPDO()->fetchAll("
  1021. select o.*
  1022. from CRM_LISTA_ZASOBOW_OFFERS o
  1023. where o.ID_ORDER = {$idOrder}
  1024. and (o.A_STATUS != 'DELETED' or o.A_STATUS is null)
  1025. ");
  1026. foreach ($rows as $row) {
  1027. $price = number_format($row['OFFER_PRICE_PER_UNIT'], 4, '.', '');
  1028. $price_f2 = number_format($row['OFFER_PRICE_PER_UNIT'], 2, '.', '');
  1029. if ($price_f2 . "00" == $price) $price = $price_f2;
  1030. $quantity = number_format($row['OFFER_QUANTITY'], 4, '.', '');
  1031. $quantity_f2 = number_format($row['OFFER_QUANTITY'], 2, '.', '');
  1032. $quantity_int = intval($row['OFFER_QUANTITY']);
  1033. if ($quantity_int . ".0000" == $quantity) $quantity = $quantity_int;
  1034. else if ($quantity_f2 . "00" == $quantity) $quantity = $quantity_f2;
  1035. $posItem = array('id' => $row['ID'], 'name' => $row['OFFER_NAME'], 'price' => $price, 'quantity' => $quantity, 'unit' => $row['OFFER_UNIT']);
  1036. $orderPosList[ $row['ID'] ] = (object)$posItem;
  1037. }
  1038. return $orderPosList;
  1039. }
  1040. public function zamowienieView($data, $mode = 'view') {
  1041. $id_order = V::get('id', 0, $data);
  1042. $id_company = V::get('id_company', 0, $data);
  1043. $id_project = V::get('id_project', 0, $data);
  1044. $orderPosList = array();
  1045. if ($id_order > 0) {
  1046. $orderPosList = V::get('orderPosList', array(), $data);
  1047. $orderPosList = array_values($orderPosList);
  1048. }
  1049. if (empty($orderPosList)) {
  1050. $ile_pozycji = V::get('ile_pozycji', 10, $data);
  1051. for ($i = 1; $i <= $ile_pozycji; $i++) {
  1052. $posItem = array('id' => -1 * $i, 'name' => '', 'price' => '', 'quantity' => '', 'unit' => '');
  1053. $orderPosList[] = (object)$posItem;
  1054. }
  1055. }
  1056. // fetch from db - overwrite $orderPosList
  1057. DBG::_('DBG', '>1', 'data', $data, __CLASS_, __FUNCTION__, __LINE__);
  1058. $sendToLink = Request::getPathUri() . "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=sendToAjax&id={$id_order}";
  1059. $saveLink = Request::getPathUri() . "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=saveAjax&id={$id_order}";
  1060. $fields = $data;
  1061. $labels = array();// $data['ORDER_TYPE']: zamowienie, zlecenie
  1062. $isTypeZlecenie = ('zlecenie' == $data['ORDER_TYPE']);
  1063. $labels['main'] = ($isTypeZlecenie) ? "Zlecenie" : "Zamówienie";
  1064. $labels['comA'] = ($isTypeZlecenie) ? "Zleceniodawca" : "Zamawiający";
  1065. $labels['comB'] = ($isTypeZlecenie) ? "Zleceniobiorca" : "Dostawca";
  1066. $labels['invoiceMessage'] = "NA FAKTURZE VAT NALEŻY UMIEŚCIĆ CZYTELNY NR " . (($isTypeZlecenie) ? "ZLECENIA" : "ZAMÓWIENIA");
  1067. $labels['offer'] = "Zamawiający zleca Dostawcy dostawę poniższych materiałów na wskazanych poniżej warunkach. Zgodnie z ofertą ";
  1068. if ($isTypeZlecenie) $labels['offer'] = "Zleceniodawca niniejszym składa zlecenie na wskazanych poniżej warunkach zgodnie z ofertą Zleceniobiorcy z dnia ";
  1069. $labels['firstPosFieldLabel'] = ($isTypeZlecenie)? 'Przedmiot zlecenia' : 'Wyszczególnienie';
  1070. $labels['conditions'] = "WARUNKI REALIZACJI " . (($isTypeZlecenie) ? "ZLECENIA" : "ZAMÓWIENIA");
  1071. $labels['signatureComA'] = "pieczęć i czytelny podpis " . (($isTypeZlecenie) ? "Zleceniodawcy" : "Zamawiającego");
  1072. $labels['signatureComB'] = "pieczęć i czytelny podpis " . (($isTypeZlecenie) ? "Zleceniobiorcy" : "Dostawcy") . " zgodnie z zasadami reprezentacji";
  1073. $labels['statement'] = "NINIEJSZYM OŚWIADCZAM, ŻE " . (($isTypeZlecenie) ? "ZLECENIOBIORCA" : "DOSTAWCA") . " PRZYJMUJE ZAMÓWIENIE DO REALIZACJI NA POWYŻSZYCH WARUNKACH:";
  1074. $conditions = array();
  1075. if ($isTypeZlecenie) {
  1076. $conditions[] = [
  1077. ['text', 'Termin wykonania zlecenia: od dnia '],
  1078. ['field', '', 'DELIVERY_START_DATE', 'string'],
  1079. ['text', ' do dnia '],
  1080. ['field', '', 'DELIVERY_DATE', 'date'],
  1081. ['text', ' '],
  1082. ['field', '', 'DELIVERY_DATE_NOTES', 'text'],
  1083. ['text', ' , po tym terminie będzie naliczana przez Zleceniodawcę kara umowna odpowiednio za opóźnienie Zleceniobiorcy w rozpoczęciu / zakończeniu przedmiotu zlecenia w wysokości '],
  1084. ['field', '', 'CASH_PENALTY', 'string'],
  1085. // "……….. złotych (słownie: …………. złotych 00/100)
  1086. ['text', ' za każdy rozpoczęty dzień opóźnienia z terminem płatności tej kary – 7 dni od jej naliczenia. '],
  1087. ['text', ' Zleceniodawca może potrącić wskazaną karę umowną z wynagrodzenia Zleceniobiorcy. Zleceniodawca zastrzega sobie prawo dochodzenia odszkodowania na zasadach ogólnych, przekraczającego wysokość zastrzeżonej w niniejszym punkcie kary umownej.']
  1088. ];
  1089. $conditions[] = [
  1090. ['text', 'Miejsce wykonania zlecenia: '],
  1091. ['field', '', 'DELIVERY_LOCATION', 'string']
  1092. ];
  1093. $conditions[] = [
  1094. ['text', 'Forma płatności: '],
  1095. ['field', 'przelew', 'PAYMENT_METHOD', 'string']
  1096. ];
  1097. $conditions[] = [
  1098. ['text', 'Wynagrodzenie objęte niniejszym zleceniem jest wynagrodzeniem ryczałtowym.']
  1099. ];
  1100. $conditions[] = [
  1101. ['text', 'Termin płatności: '],
  1102. ['field', '', 'PAYMENT_TERM_DAYS_FV', 'int'],
  1103. ['text', ' dni od daty wpływu do siedziby Zleceniodawcy wszystkich prawidłowych i kompletnych dokumentów, o których mowa w pkt 6 i 7 poniżej w trybie zgodnym z pkt 8 poniżej.']
  1104. ];
  1105. $conditions[] = [
  1106. ['text', 'Podstawą do wystawienia przez Zleceniobiorcę na rzecz Zleceniodawcy faktury VAT jest podpisany przez obie strony bezusterkowy protokół odbioru przez Zleceniodawcę przedmiotu zlecenia oraz dostarczenie Zleceniodawcy przez Zleceniobiorcę wszelkich niezbędnych dokumentów związanych z przedmiotem zlecenia, a także w razie gdy przedmiotem zlecenia jest wynajem sprzętu – podpisana i zaakceptowana przez obie strony karta pracy sprzętu.']
  1107. ];
  1108. $conditions[] = [
  1109. ['text', 'Płatność dokonana będzie wyłącznie na podstawie prawidłowo wystawionej i doręczonej Zleceniodawcy przez Zleceniobiorcę faktury VAT z dołączonym oryginałem dokumentu potwierdzającego bezusterkowy odbiór przez Zleceniodawcę przedmiotu zlecenia wraz ze wszystkimi niezbędnymi dokumentami przez osoby wymienione w pkt 10 i 11 poniżej, a także w przypadku gdy przedmiotem zlecenia jest wynajem sprzętu – w oparciu o podpisaną przez osoby wymienione w pkt 10 i 11 poniżej i zaakceptowaną przez obie strony kartę pracy sprzętu, a także kopią niniejszego zlecenia podpisaną przez Zleceniodawcę i Zleceniobiorcę zgodnie z zasadami reprezentacji, poświadczoną przez Zleceniobiorcę za zgodność z oryginałem.']
  1110. ];
  1111. $conditions[] = [
  1112. ['bold', 'Zleceniobiorca przekaże Zleceniodawcy fakturę VAT wraz z wymaganymi załącznikami, o których mowa w pkt 5-7 powyżej wyłącznie przesyłką poleconą Poczty Polskiej za potwierdzeniem odbioru.']
  1113. ];
  1114. $conditions[] = [
  1115. ['bold', 'W przypadku gdy Zleceniobiorca otrzyma dokumenty, o których mowa w pkt 5-7 powyżej, niespełniające warunków wskazanych w niniejszym zleceniu lub zostaną one wysłane niezgodnie z trybem określonym w pkt 8 powyżej, wówczas Zleceniodawca zastrzega sobie prawo do odmowy realizacji płatności i odesłania ich na adres Zleceniobiorcy celem skorygowania.']
  1116. ];
  1117. $conditions[] = [
  1118. ['text', 'Osoba do kontaktu ze strony Zleceniodawcy: '],
  1119. ['tag', 'newline'],
  1120. ['field', '', 'ORDER_CONTACT_PERSON', 'text']
  1121. ];
  1122. $conditions[] = [
  1123. ['text', 'Osoba uprawniona do kontaktu ze strony Zleceniobiorcy: '],
  1124. ['field', '', 'DELIVERY_CONTACT_PERSON', 'string']
  1125. ];
  1126. $conditions[] = [
  1127. ['text', 'Za datę zapłaty uważa się datę obciążenia rachunku bankowego Zleceniodawcy.']
  1128. ];
  1129. $conditions[] = [
  1130. ['text', 'Niniejsze zlecenie jest ważne po potwierdzeniu przez Zleceniobiorcę przyjęcia do realizacji niniejszego zlecenia w terminie 2 dni roboczych od daty jego przekazania Zleceniobiorcy przez Zleceniodawcę.'],
  1131. ['text', ' Potwierdzenie pod rygorem nieważności winno być przesłane faksem do Zleceniodawcy pod numer '],
  1132. ['field', '', 'ORDER_CONTACT_FAX', 'string'],
  1133. ['text', ' lub pocztą elektroniczną na adres email: '],
  1134. ['field', '', 'ORDER_CONTACT_EMAIL', 'string'],
  1135. ['text', ' Brak potwierdzenia jest uznawany jako odmowa przyjęcia przez Zleceniobiorcę do realizacji niniejszego zlecenia. Każda proponowana zamiana warunków zlecenia określonych w niniejszym zleceniu oznacza złożenie nowej oferty i winna być pod rygorem nieważności potwierdzona w formie pisemnej przez Zleceniodawcę. Nie dopuszcza się akceptu milczącego.']
  1136. ];
  1137. $conditions[] = [
  1138. ['text', 'Wierzytelności wynikające z niniejszego zlecenia nie mogą być przenoszone przez Zleceniobiorcę na osoby trzecie bez uprzedniej, pisemnej zgody Zleceniodawcy.']
  1139. ];
  1140. $conditions[] = [
  1141. ['text', 'Zleceniodawca ma prawo odstąpić od umowy objętej niniejszym zleceniem w terminie 30 dni od dnia wystąpienia jednej z następujących okoliczności:'],
  1142. ['tag', 'newline'],
  1143. ['text', 'a) Zleceniobiorca nie wykonuje lub nienależycie wykonuje jakiekolwiek ze zobowiązań Zleceniobiorcy wynikających z umowy objętej niniejszym zleceniem, pomimo wezwania Zleceniobiorcy przez Zleceniodawcę do usunięcia naruszeń w terminie 3 dni roboczych od dnia tego wezwania,'],
  1144. ['tag', 'newline'],
  1145. ['text', 'b) powzięcia przez Zleceniodawcę informacji, iż sytuacja finansowa Zleceniobiorcy nie pozwala na wykonanie prac zleconych na mocy niniejszego zlecenia,'],
  1146. ['tag', 'newline'],
  1147. ['text', 'c) powzięcia przez Zleceniodawcę informacji, iż Zleceniobiorca nie przestrzega przepisów BHP oraz przeciwpożarowych,'],
  1148. ['tag', 'newline'],
  1149. ['text', 'd) Zleceniobiorca zaprzestał wykonywania zlecenia na okres dłuższy niż 2 dni robocze lub przerwał prace na okres dłuższy niż 2 dni robocze.']
  1150. ];
  1151. $conditions[] = [
  1152. ['text', 'Zleceniobiorca ma prawo korzystać z osób trzecich do wykonywania przez niego przedmiotu zlecenia wyłącznie po uzyskaniu uprzedniej, pisemnej zgody Zleceniodawcy. Zleceniobiorca odpowiada za działania i zaniechania osób trzecich jak za własne.']
  1153. ];
  1154. $conditions[] = [
  1155. ['bold', 'Zleceniobiorca usługi potwierdza / nie potwierdza iż jest podwykonawcą zlecanej usługi, objęty numerem PKWiU: '],
  1156. ['field', '', 'NR_PKWIU', 'string']
  1157. ];
  1158. $conditions[] = [
  1159. ['bold', 'Zleceniobiorca oświadcza, że jest / nie jest czynnym podatnikiem VAT'],
  1160. ];
  1161. $conditions[] = [
  1162. ['text', 'Ustalenia dodatkowe: '],
  1163. ['field', '', 'ADDITIONAL_CONDITIONS', 'string']
  1164. ];
  1165. } else {
  1166. $conditions[] = [
  1167. ['bold', 'Termin wykonania usługi: '],
  1168. ['field', '', 'DELIVERY_DATE', 'date'],
  1169. ['text', ' '],
  1170. ['field', '', 'DELIVERY_DATE_NOTES', 'text'],
  1171. ['text', ', po tym terminie Zamawiający zastrzega sobie prawo do odmowy odbioru przedmiotu zamówienia.']
  1172. ];
  1173. $conditions[] = [
  1174. ['bold', 'Forma dostawy: '],
  1175. ['field', '', 'DELIVERY_TYPE', 'string']
  1176. ];
  1177. $conditions[] = [
  1178. ['bold', 'Miejsce dostawy: '],
  1179. ['field', '', 'DELIVERY_LOCATION', 'string']
  1180. ];
  1181. $conditions[] = [
  1182. ['bold', 'Warunki płatności: '],
  1183. ['field_readonly', 'przelew', 'PAYMENT_METHOD'],
  1184. ['text', ' '],
  1185. ['field', '', 'PAYMENT_TERM_DAYS_FV', 'int'],
  1186. ['text', ' dni po dostawie towaru']
  1187. ];
  1188. $conditions[] = [
  1189. ['bold', 'Forma płatności: '],
  1190. ['field', 'przelew', 'PAYMENT_METHOD', 'string']
  1191. ];
  1192. $conditions[] = [
  1193. ['bold', 'Termin płatności: '],
  1194. ['field', '', 'PAYMENT_TERM_DAYS_FV', 'int'],
  1195. ['text', ' dni od daty wpływu do siedziby Zamawiającego prawidłowych i kompletnych dokumentów, o których mowa w pkt 7 poniżej w trybie zgodnym z pkt 8 poniżej.']
  1196. ];
  1197. $conditions[] = [
  1198. ['text', 'Płatność dokonana będzie wyłącznie na podstawie prawidłowo wystawionej i doręczonej Zamawiającemu przez Dostawcę faktury VAT z dołączonym oryginałem dokumentu potwierdzającego bezusterkowy odbiór przez Zamawiającego przedmiotu zamówienia wraz ze wszystkimi niezbędnymi dokumentami, gwarancjami, atestami, testami, etc. przez osoby wymienione w pkt 11-12 poniżej, a także kopią niniejszego zamówienia podpisaną przez Zamawiającego i Dostawcę zgodnie z zasadami reprezentacji, poświadczoną przez Dostawcę za zgodność z oryginałem.']
  1199. ];
  1200. $conditions[] = [
  1201. ['bold', 'Dostawca przekaże Zamawiającemu fakturę VAT wraz z wymaganymi załącznikami, o których mowa w pkt 7 powyżej wyłącznie przesyłką poleconą Poczty Polskiej za potwierdzeniem odbioru.']
  1202. ];
  1203. $conditions[] = [
  1204. ['bold', 'W przypadku gdy Zamawiający otrzyma dokumenty, o których mowa w pkt 7 i 8 powyżej, niespełniające warunków wskazanych w niniejszym zamówieniu lub zostaną one wysłane niezgodnie z trybem określonym w pkt 8 powyżej, wówczas Zamawiający zastrzega sobie prawo do odmowy realizacji płatności i odesłania ich na adres Dostawcy celem skorygowania.']
  1205. ];
  1206. $conditions[] = [
  1207. ['text', 'Zamawiającemu przysługuje prawo do naliczenia Dostawcy kary umownej w wysokości '],
  1208. ['field', '', 'CASH_PENALTY', 'price'],
  1209. ['text', '% wartości zamówienia netto za każdy rozpoczęty dzień opóźnienia w dostawie przedmiotu zamówienia z terminem płatności tej kary - 7 dni od dnia jej naliczenia. Zamawiający może potrącić wskazaną karę umowną z wynagrodzenia Dostawcy. Zamawiający zastrzega sobie prawo do dochodzenia odszkodowania na zasadach ogólnych, przekraczającego wysokość kary umownej zastrzeżonej w niniejszym punkcie.']
  1210. ];
  1211. $conditions[] = [
  1212. ['bold', 'Osoba do kontaktu ze strony Zamawiającego:'],
  1213. ['tag', 'newline'],
  1214. ['field', '', 'ORDER_CONTACT_PERSON', 'text']
  1215. ];
  1216. $conditions[] = [
  1217. ['bold', 'Osoby upoważnione do odbioru towaru:'],
  1218. ['tag', 'newline'],
  1219. ['field', '', 'ORDER_APPROVE_PERSON', 'text']
  1220. ];
  1221. $conditions[] = [
  1222. ['bold', 'Osoba uprawniona do kontaktu ze strony Dostawcy: '],
  1223. ['field', '', 'DELIVERY_CONTACT_PERSON', 'string']
  1224. ];
  1225. $conditions[] = [
  1226. ['text', 'Za datę zapłaty uważa się datę obciążenia rachunku bankowego Zamawiającego.']
  1227. ];
  1228. $conditions[] = [
  1229. ['text', 'Niniejsze zamówienie jest ważne po potwierdzeniu przez Dostawcę przyjęcia do realizacji niniejszego zamówienia w terminie 2 dni roboczych od daty jego złożenia Dostawcy przez Zamawiającego.'],
  1230. ['tag', 'newline'],
  1231. ['text', 'Potwierdzenie pod rygorem nieważności winno być przesłane faksem do Zamawiającego pod numer (58) 347 51 02 lub pocztą elektroniczną na adres email: '],
  1232. ['tag', 'u', 'asmentoch@pro-netmedia.pl'],
  1233. ['text', ' Brak potwierdzenia jest uznawany jako odmowa przyjęcia przez Dostawcę do realizacji niniejszego zamówienia. Każda proponowana zamiana warunków dostawy określonych w niniejszym zamówieniu oznacza złożenie nowej oferty i winna być pod rygorem nieważności potwierdzona przez Zamawiającego. Nie dopuszcza się akceptu milczącego.']
  1234. ];
  1235. $conditions[] = [
  1236. ['text', 'Wierzytelności wynikające z niniejszego zamówienia nie mogą być przenoszone przez Dostawcę na osoby trzecie bez uprzedniej, pisemnej zgody Zamawiającego.']
  1237. ];
  1238. }
  1239. ?>
  1240. <style type="text/css">
  1241. body { font-size:12px; line-height:1.3em }
  1242. #tbl-items td { padding:3px !important }
  1243. @media print {
  1244. body { font-size:12px; line-height:1.3em }
  1245. h4 { font-size:1.3em; margin-top:8px; margin-bottom:6px }
  1246. h3 { font-size:1.5em; margin-top:8px; margin-bottom:6px }
  1247. h2 { font-size:1.6em; margin-top:8px; margin-bottom:6px }
  1248. h1 { font-size:1.8em; margin-top:8px; margin-bottom:6px }
  1249. table { page-break-inside:auto }
  1250. tr { page-break-inside:avoid; page-break-after:auto }
  1251. li { page-break-inside:avoid; page-break-after:auto }
  1252. .page-break-block { page-break-inside:avoid; page-break-after:auto }
  1253. td, th,
  1254. .table>tbody>tr>td,
  1255. .table>tbody>tr>th,
  1256. .table>thead>tr>th { padding:2px }
  1257. .order-panel { display:none }
  1258. }
  1259. </style>
  1260. <div class="container">
  1261. <div id="tbl-items">
  1262. <div id="widget-orders"></div>
  1263. </div>
  1264. </div>
  1265. <link rel="stylesheet" type="text/css" href="static/sweetalert2.min.css">
  1266. <script src="static/sweetalert2.min.js"></script>
  1267. <script src="stuff/vendors.js"></script>
  1268. <script src="stuff/bundle.se_route_orders.js?_ver=8b030997<?php if (V::get('DBG_JS', '', $_GET)) : ?>&_ts=<?= time(); ?><?php endif; ?>"></script>
  1269. <script>
  1270. (function() {
  1271. <?php
  1272. $showSendToLink = (in_array($data['APPROVE_STATUS'], ['OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA','ZATWIERDZONE','OCZEKUJE_ZATWIERDZENIA']));
  1273. $sendToDealEmail = (in_array($data['APPROVE_STATUS'], ['ZATWIERDZONE'])) ? $data['COMPANY_CONTACT_MAIL'] : '';
  1274. ?>
  1275. var _showSendToLink = <?= ($showSendToLink) ? 'true' : 'false' ?>;
  1276. var _sendToAutorEmail = '<?= DB::getPDO()->fetchValue("select u.EMAIL from CRM_LISTA_ZASOBOW_ORDERS o join ADMIN_USERS u on(u.ADM_ACCOUNT = o.A_RECORD_CREATE_AUTHOR) where o.ID={$id_order}"); ?>';
  1277. var _sendToDealEmail = '<?= $sendToDealEmail; ?>';
  1278. var _sendToLinkLabel = "Wyślij";
  1279. var _sendToLink = '<?= $sendToLink; ?>';
  1280. var _mode = '<?= $mode; ?>';
  1281. var _pos = <?php echo json_encode($orderPosList); ?>;
  1282. var _saveLink = '<?= $saveLink; ?>';
  1283. var _dbg = <?= (DBG::isActive())? 'true' : 'false'; ?>;
  1284. var _fields = <?= json_encode($fields); ?>;
  1285. var _conditions = <?= json_encode($conditions); ?>;
  1286. jQuery("#widget-orders").p5_Orders({
  1287. year: '2016',
  1288. idOrder: '<?php echo V::get('id', '', $data); ?>',
  1289. deal: {
  1290. type: 'zamowienie',
  1291. label: '<?= $labels['main']; ?>',
  1292. nr: '<?php echo V::get('ORDER_LABEL', 'nr zamówienia / inicjały zamawiającego / numer budowy / miesiąc / rok', $data); ?>',
  1293. showOfferLabel: true,
  1294. offerLabel: '<?= $labels['offer']; ?>',
  1295. offerNr: '',
  1296. targetName: '',
  1297. statement: '<?= $labels['statement']; ?>',
  1298. conditions: _conditions,
  1299. condLabel: '<?= $labels['conditions']; ?>',
  1300. date: '<?php echo V::get('ORDER_DATE', date("Y-m-d"), $data); ?>',
  1301. city: '<?php echo V::get('ORDER_CITY', 'Gdańsk', $data); ?>'
  1302. },
  1303. fields: _fields,
  1304. mapFields: {
  1305. deal: {
  1306. nr: 'ORDER_LABEL',
  1307. offerNr: 'OFFER_NR',
  1308. date: 'ORDER_DATE',
  1309. targetName: '_nr_budowy'
  1310. },
  1311. comB: {
  1312. name: 'COMPANY_NAME',
  1313. address: 'COMPANY_ADDRESS',
  1314. postCode: 'COMPANY_POST_CODE',
  1315. city: 'COMPANY_CITY',
  1316. nip: 'COMPANY_NIP',
  1317. contactPerson: 'COMPANY_CONTACT_PERSON',
  1318. contactTel: 'COMPANY_CONTACT_TEL',
  1319. contactMail: 'COMPANY_CONTACT_MAIL'
  1320. },
  1321. notes: 'NOTES'
  1322. },
  1323. comA: {
  1324. label: '<?= $labels['comA']; ?>',
  1325. name: 'PRO-NET.MEDIA S.A.',
  1326. address: 'ul. Narwicka 21',
  1327. postCode: '80-557',
  1328. city: 'Gdańsk',
  1329. nip: '583-315-47-35'
  1330. },
  1331. comB: {
  1332. label: '<?= $labels['comB']; ?>',
  1333. name: '',
  1334. address: '',
  1335. postCode: '',
  1336. city: '',
  1337. nip: ''
  1338. },
  1339. signatureComA: '<?= $labels['signatureComA']; ?>',
  1340. signatureComB: '<?= $labels['signatureComB']; ?>',
  1341. backLink: 'index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT=<?php echo $id_project; ?>',
  1342. printLink: 'index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=zamowienie&_print=1',
  1343. printIdOrderArg: 'id',
  1344. pos: _pos,
  1345. firstPosFieldLabel: '<?= $labels['firstPosFieldLabel']; ?>',
  1346. invoiceMessage: '<?= $labels['invoiceMessage']; ?>',
  1347. notes: '',
  1348. mode: _mode,
  1349. actions: {
  1350. save: function(data, callback) {
  1351. var orderPosList, idOrder;
  1352. try {
  1353. console.log('#widget-orders/Orders::save: data:', data);
  1354. if (!data || !('orderPosList' in data)) throw "Brak danych do zapisania";
  1355. var orderPosList = data.orderPosList || [];
  1356. var fields = data.fields || {};
  1357. var idOrder = data.idOrder || -1;
  1358. var req = superagent
  1359. .post(_saveLink)
  1360. .type('json') // header ĺapplication/x-www-form-urlencoded' requires type('form');
  1361. .send({
  1362. type: data.type || 'zamowienie',
  1363. orderPosList: orderPosList,
  1364. toDeletePosList: data.toDeletePosList || {},
  1365. fields: fields,
  1366. idOrder: idOrder
  1367. })
  1368. .set('Accept', 'application/json')
  1369. .end(function(err, res) {
  1370. if(_dbg)console.log('#widget-orders/Orders::save: res:', res, 'res.body:', res.body);
  1371. if (err || !res.ok) {
  1372. jQuery(document).trigger('DBG:notify', {type: 'warning', msg: 'Req error', err: err});
  1373. } else {
  1374. if ('application/json' !== res.type) {
  1375. jQuery(document).trigger('DBG:notify', {type: 'warning', msg: 'Wrong response type - required json. ' + res.text});
  1376. return;
  1377. }
  1378. jQuery(document).trigger('DBG:notify', {type: 'success', msg: 'res.status:' + res.status + '. res.body:' + JSON.stringify(res.body)});
  1379. callback(null, {
  1380. message: 'Saved',
  1381. type: 'success',
  1382. orderPosList: res.body.orderPosList,
  1383. fields: res.body.fields,
  1384. idOrder: res.body.idOrder
  1385. });
  1386. }
  1387. req = null;
  1388. });
  1389. } catch (e) {
  1390. callback(e);
  1391. }
  1392. },
  1393. sendTo: orderView__sendTo
  1394. },
  1395. showSendToLink: _showSendToLink,
  1396. sendToLinkLabel: _sendToLinkLabel,
  1397. dbg: false
  1398. });
  1399. function orderView__sendTo(idOrder) {
  1400. var htmlEmails = '<div style="text-align:left">';
  1401. var changeJs = "jQuery(this).parents('.swal2-content').next('.swal2-input').val(this.value)";
  1402. htmlEmails += '';
  1403. if (_sendToAutorEmail) htmlEmails += '<div class="radio"><label style="font-weight:normal"><input onclick="'+changeJs+'" type="radio" name="email" value="'+_sendToAutorEmail+'"> '+_sendToAutorEmail+' <i>(Autor)</i></label></div>';
  1404. if (_sendToDealEmail) htmlEmails += '<div class="radio"><label style="font-weight:normal"><input onclick="'+changeJs+'" type="radio" name="email" value="'+_sendToDealEmail+'"> '+_sendToDealEmail+' <i>(Dostawca)</i></label></div>';
  1405. htmlEmails += '<div class="radio"><label style="font-weight:normal"><input onclick="'+changeJs+'" type="radio" name="email" value=""> inny adres</label></div>';
  1406. htmlEmails += '</div>';
  1407. swal({
  1408. title: _sendToLinkLabel,
  1409. html: htmlEmails,
  1410. animation: false,
  1411. input: 'text',
  1412. inputPlaceholder: 'adres email',
  1413. inputValue: _sendToDealEmail,
  1414. showCancelButton: true,
  1415. confirmButtonText: 'Wyślij',
  1416. showLoaderOnConfirm: true,
  1417. showCloseButton: true,
  1418. preConfirm: function(email) {
  1419. <?php if(DBG::isActive()): ?>console.log('#widget-orders/Orders::sendTo: ...');<?php echo"\n";endif; ?>
  1420. return new Promise(function(resolve, reject) {
  1421. if (email.length > 255) reject('Przekroczono limit długości znaków')
  1422. var emailErrors = validate({email_value: email}, {email_value: {email: true, presence: true}});
  1423. if (emailErrors) {
  1424. <?php if(DBG::isActive()): ?>console.log('#widget-orders/Orders::sendTo: email validate errors:', emailErrors);<?php echo"\n";endif; ?>
  1425. reject("Błędny adres email")
  1426. return;
  1427. }
  1428. superagent
  1429. .post(_sendToLink)
  1430. .type('json') // header ĺapplication/x-www-form-urlencoded' requires type('form');
  1431. .send({
  1432. id: idOrder,
  1433. email: email
  1434. })
  1435. .set('Accept', 'application/json')
  1436. .end(function(err, res) {
  1437. <?php if(DBG::isActive()): ?>console.log('#widget-orders/Orders::sendTo: res:', res, 'res.body:', res.body);<?php echo"\n";endif; ?>
  1438. if (err || !res.ok) {
  1439. reject((res.body && res.body.msg) ? res.body.msg || "Request error" : "Request error")
  1440. } else {
  1441. if ('application/json' !== res.type) {
  1442. reject("Wrong response type - required json")
  1443. return
  1444. }
  1445. if (!res.body.msg) reject(res.body.msg || "Wystąpiły błędy")
  1446. resolve(res.body)
  1447. }
  1448. })
  1449. })
  1450. },
  1451. allowOutsideClick: false
  1452. }).then(function(body) {
  1453. <?php if(DBG::isActive()): ?>console.log('#widget-orders/Orders::sendTo: body:', body);<?php echo"\n";endif; ?>
  1454. // msg "wysłany pomyślnie"? (swal?)
  1455. }).catch(function(e) {
  1456. // eg. hit Cancel
  1457. })
  1458. }
  1459. })();
  1460. </script>
  1461. <script>
  1462. jQuery(document).ready(function() {
  1463. var _mode = '<?php echo $mode; ?>';
  1464. document.title = 'zamowienie_nr_<?php echo V::get('ORDER_LABEL', 'nr zamówienia / inicjały zamawiającego / numer budowy / miesiąc / rok', $data); ?>';
  1465. if ('print' == _mode) {
  1466. window.print();
  1467. }
  1468. })
  1469. </script>
  1470. <?php
  1471. }
  1472. }
  1473. /*
  1474. ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS` ADD `ID_ORDER` int(11) NOT NULL DEFAULT 0;
  1475. ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS_HIST` ADD `ID_ORDER` varchar(11) NOT NULL DEFAULT 'N/S;';
  1476. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `ORDER_CONTACT_PERSON` varchar(255) NOT NULL DEFAULT '';
  1477. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `ORDER_CONTACT_PERSON` varchar(255) NOT NULL DEFAULT 'N/S;';
  1478. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `ORDER_APPROVE_PERSON` varchar(255) NOT NULL DEFAULT '';
  1479. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `ORDER_APPROVE_PERSON` varchar(255) NOT NULL DEFAULT 'N/S;';
  1480. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `DELIVERY_CONTACT_PERSON` varchar(255) NOT NULL DEFAULT '';
  1481. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `DELIVERY_CONTACT_PERSON` varchar(255) NOT NULL DEFAULT 'N/S;';
  1482. $sqlFieldsList[] = 'ORDER_CONTACT_PERSON';
  1483. $sqlFieldsList[] = 'ORDER_APPROVE_PERSON';
  1484. $sqlFieldsList[] = 'DELIVERY_CONTACT_PERSON';
  1485. CREATE TABLE IF NOT EXISTS `CRM_LISTA_ZASOBOW_ORDERS` (
  1486. `ID` int(11) NOT NULL AUTO_INCREMENT,
  1487. `ID_COMPANIES` int(11) NOT NULL DEFAULT 0,
  1488. `ID_PROJECT` int(11) NOT NULL DEFAULT 0,
  1489. `ID_PROJECT_path` varchar(255) NOT NULL COMMENT 'wyliczalna dynamicznie sciezka sprawy',
  1490. `A_RECORD_CREATE_DATE` datetime DEFAULT NULL,
  1491. `A_RECORD_CREATE_AUTHOR` varchar(100) DEFAULT NULL,
  1492. `SYNC_SQIX_STATUS` varchar(100) NOT NULL DEFAULT '',
  1493. `A_RECORD_UPDATE_DATE` datetime DEFAULT NULL,
  1494. `A_RECORD_UPDATE_AUTHOR` varchar(100) NOT NULL DEFAULT '',
  1495. `L_APPOITMENT_DATE` varchar(30) NOT NULL DEFAULT '',
  1496. `L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT '',
  1497. `L_APPOITMENT_PERIOD` varchar(4) NOT NULL DEFAULT '',
  1498. `L_APPOITMENT_INFO` varchar(255) NOT NULL DEFAULT '',
  1499. `L_APPOITMENT_TYPE` enum('','ARRANGED','TO_ARRANGE','CANCELLED','TO_CANCEL','RELATE','WAIT') DEFAULT NULL,
  1500. `A_STATUS` enum('WAITING','NORMAL','MONITOR','WARNING','OFF_SOFT','OFF_HARD','DELETED') DEFAULT NULL,
  1501. `A_STATUS_INFO` varchar(255) NOT NULL DEFAULT '',
  1502. `A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT '',
  1503. `A_CLASSIFIED` varchar(100) NOT NULL DEFAULT '',
  1504. `NR` varchar(255) NOT NULL DEFAULT '',
  1505. `COMPANY_NAME` varchar(255) NOT NULL DEFAULT '',
  1506. `COMPANY_ADDRESS` varchar(255) NOT NULL DEFAULT '',
  1507. `COMPANY_POST_CODE` varchar(6) NOT NULL DEFAULT '',
  1508. `COMPANY_CITY` varchar(255) NOT NULL DEFAULT '',
  1509. `COMPANY_NIP` varchar(32) NOT NULL DEFAULT '',
  1510. `COMPANY_CONTACT_PERSON` varchar(64) NOT NULL DEFAULT '',
  1511. `COMPANY_CONTACT_TEL` varchar(32) NOT NULL DEFAULT '',
  1512. `COMPANY_CONTACT_MAIL` varchar(64) NOT NULL DEFAULT '',
  1513. `OFFER_DATE` date DEFAULT NULL,
  1514. `OFFER_NR` varchar(255) NOT NULL DEFAULT '',
  1515. `ORDER_TYPE` varchar(255) NOT NULL DEFAULT '',
  1516. `DELIVERY_DATE` date DEFAULT NULL,
  1517. `DELIVERY_TYPE` varchar(255) DEFAULT '',
  1518. `DELIVERY_LOCATION` varchar(255) DEFAULT '',
  1519. `EXECUTION_START_DATE` date DEFAULT NULL,
  1520. `EXECUTION_END_DATE` date DEFAULT NULL,
  1521. `CASH_PENALTY` varchar(255) NOT NULL DEFAULT '',
  1522. `ORDER_CONTACT_PERSON` varchar(255) NOT NULL DEFAULT '',
  1523. `ORDER_APPROVE_PERSON` varchar(255) NOT NULL DEFAULT '',
  1524. `DELIVERY_CONTACT_PERSON` varchar(255) NOT NULL DEFAULT '',
  1525. `LOCATION` date DEFAULT NULL,
  1526. `NOTES` varchar(1000) NOT NULL DEFAULT '',
  1527. PRIMARY KEY (`ID`)
  1528. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  1529. CREATE TABLE IF NOT EXISTS `CRM_LISTA_ZASOBOW_ORDERS_HIST` (
  1530. `ID` int(11) NOT NULL AUTO_INCREMENT,
  1531. `ID_USERS2` int(11) NOT NULL,
  1532. `ID_COMPANIES` varchar(255) NOT NULL DEFAULT 'N/S;',
  1533. `ID_PROJECT` varchar(255) NOT NULL DEFAULT 'N/S;',
  1534. `ID_PROJECT_path` varchar(255) NOT NULL DEFAULT 'N/S;',
  1535. `A_RECORD_CREATE_DATE` varchar(255) NOT NULL DEFAULT 'N/S;',
  1536. `A_RECORD_CREATE_AUTHOR` varchar(255) NOT NULL DEFAULT 'N/S;',
  1537. `SYNC_SQIX_STATUS` varchar(255) NOT NULL DEFAULT 'N/S;',
  1538. `A_RECORD_UPDATE_DATE` varchar(255) NOT NULL DEFAULT 'N/S;',
  1539. `A_RECORD_UPDATE_AUTHOR` varchar(255) NOT NULL DEFAULT 'N/S;',
  1540. `L_APPOITMENT_DATE` varchar(255) NOT NULL DEFAULT 'N/S;',
  1541. `L_APPOITMENT_USER` varchar(255) NOT NULL DEFAULT 'N/S;',
  1542. `L_APPOITMENT_PERIOD` varchar(255) NOT NULL DEFAULT 'N/S;',
  1543. `L_APPOITMENT_INFO` varchar(255) NOT NULL DEFAULT 'N/S;',
  1544. `L_APPOITMENT_TYPE` varchar(255) NOT NULL DEFAULT 'N/S;',
  1545. `A_STATUS` varchar(255) NOT NULL DEFAULT 'N/S;',
  1546. `A_STATUS_INFO` varchar(255) NOT NULL DEFAULT 'N/S;',
  1547. `A_ADM_COMPANY` varchar(255) NOT NULL DEFAULT 'N/S;',
  1548. `A_CLASSIFIED` varchar(255) NOT NULL DEFAULT 'N/S;',
  1549. `NR` varchar(255) NOT NULL DEFAULT 'N/S;'
  1550. `COMPANY_NAME` varchar(255) NOT NULL DEFAULT 'N/S;'
  1551. `COMPANY_ADDRESS` varchar(255) NOT NULL DEFAULT 'N/S;'
  1552. `COMPANY_POST_CODE` varchar(6) NOT NULL DEFAULT 'N/S;'
  1553. `COMPANY_CITY` varchar(255) NOT NULL DEFAULT 'N/S;'
  1554. `COMPANY_NIP` varchar(32) NOT NULL DEFAULT 'N/S;'
  1555. `COMPANY_CONTACT_PERSON` varchar(64) NOT NULL DEFAULT 'N/S;'
  1556. `COMPANY_CONTACT_TEL` varchar(32) NOT NULL DEFAULT 'N/S;'
  1557. `COMPANY_CONTACT_MAIL` varchar(64) NOT NULL DEFAULT 'N/S;'
  1558. `OFFER_DATE` varchar(10) NOT NULL DEFAULT 'N/S;'
  1559. `OFFER_NR` varchar(255) NOT NULL DEFAULT 'N/S;'
  1560. `ORDER_TYPE` varchar(255) NOT NULL DEFAULT 'N/S;'
  1561. `DELIVERY_DATE` varchar(255) NOT NULL DEFAULT 'N/S;'
  1562. `DELIVERY_TYPE` varchar(255) DEFAULT 'N/S;',
  1563. `DELIVERY_LOCATION` varchar(255) DEFAULT 'N/S;',
  1564. `EXECUTION_START_DATE` varchar(10) NOT NULL DEFAULT 'N/S;',
  1565. `EXECUTION_END_DATE` varchar(10) NOT NULL DEFAULT 'N/S;',
  1566. `CASH_PENALTY` varchar(255) NOT NULL DEFAULT 'N/S;',
  1567. `ORDER_CONTACT_PERSON` varchar(255) NOT NULL DEFAULT 'N/S;',
  1568. `ORDER_APPROVE_PERSON` varchar(255) NOT NULL DEFAULT 'N/S;',
  1569. `DELIVERY_CONTACT_PERSON` varchar(255) NOT NULL DEFAULT 'N/S;',
  1570. `LOCATION` varchar(10) NOT NULL DEFAULT 'N/S;',
  1571. `NOTES` varchar(1000) NOT NULL DEFAULT 'N/S;',
  1572. PRIMARY KEY (`ID`),
  1573. KEY `ID_USERS2` (`ID_USERS2`)
  1574. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  1575. -- ADD ORDER_NR to KORESP
  1576. ALTER TABLE `IN7_DZIENNIK_KORESP_HIST` ADD `ORDER_NR` VARCHAR(32) NOT NULL DEFAULT 'N/S;';
  1577. ALTER TABLE `IN7_DZIENNIK_KORESP` ADD `ORDER_NR` VARCHAR(32) NOT NULL DEFAULT '';
  1578. SELECT ID,ID_PROJECT,ORDER_NR FROM `IN7_DZIENNIK_KORESP` where ID_PROJECT is not null or ORDER_NR != '' ORDER BY `IN7_DZIENNIK_KORESP`.`ID` DESC limit 500;
  1579. SELECT ID,ID_PROJECT,ORDER_NR FROM `IN7_DZIENNIK_KORESP` where ID_PROJECT is not null and ORDER_NR != '' ORDER BY `IN7_DZIENNIK_KORESP`.`ID` DESC limit 500;
  1580. -- ADD missing fields in CRM_LISTA_ZASOBOW_OFFERS
  1581. -- ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS` CHANGE `OFFER_UNIT_TYPE` `OFFER_UNIT_TYPE` VARCHAR(16) CHARACTER SET latin2 COLLATE latin2_general_ci NULL DEFAULT 'szt.';
  1582. ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS_HIST` ADD `OFFER_NAME` VARCHAR(255) NOT NULL DEFAULT 'N/S;';
  1583. ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS` ADD `OFFER_NAME` VARCHAR(255) NOT NULL DEFAULT '';
  1584. ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS_HIST` ADD `OFFER_QUANTITY` VARCHAR(16) NOT NULL DEFAULT 'N/S;';
  1585. ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS` ADD `OFFER_QUANTITY` decimal(10,4) NOT NULL DEFAULT 0;
  1586. ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS_HIST` ADD `OFFER_UNIT` VARCHAR(16) NOT NULL DEFAULT 'N/S;';
  1587. ALTER TABLE `CRM_LISTA_ZASOBOW_OFFERS` ADD `OFFER_UNIT` VARCHAR(16) NOT NULL DEFAULT '';
  1588. -- ADD zatwierdzony przez
  1589. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `APPROVED_BY` VARCHAR(64) NOT NULL DEFAULT 'N/S;';
  1590. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `APPROVED_BY` VARCHAR(64) NOT NULL DEFAULT ''; -- ZATWIERDZONE PRZEZ
  1591. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `APPROVE_STATUS` VARCHAR(32) NOT NULL DEFAULT 'N/S;';
  1592. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `APPROVE_STATUS` enum('WERSJA_ROBOCZA', 'OCZEKUJE_ZATWIERDZENIA', 'ZATWIERDZONE', 'ODRZUCONE') NOT NULL DEFAULT 'WERSJA_ROBOCZA';
  1593. -- ADD payment term days after fv
  1594. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `PAYMENT_TERM_DAYS_FV` VARCHAR(11) NOT NULL DEFAULT 'N/S;';
  1595. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `PAYMENT_TERM_DAYS_FV` int(11) NOT NULL DEFAULT '0';
  1596. -- ADD payment method
  1597. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `PAYMENT_METHOD` VARCHAR(32) NOT NULL DEFAULT 'N/S;';
  1598. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `PAYMENT_METHOD` VARCHAR(32) NOT NULL DEFAULT '';
  1599. -- 2016-07-13 - ADD 'OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA' to `APPROVE_STATUS`
  1600. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` CHANGE `APPROVE_STATUS` `APPROVE_STATUS` ENUM('WERSJA_ROBOCZA','OCZEKUJE_ZATWIERDZENIA','ZATWIERDZONE','ODRZUCONE','OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA') CHARACTER SET latin2 COLLATE latin2_general_ci NOT NULL DEFAULT 'WERSJA_ROBOCZA';
  1601. 1213 12 14/AS/13/SP/2014/IV/2016 14 / AS / 13/SP/2014 / IV / 2016
  1602. 1292 30 34/JL/16/SP/2015/V/2016 34 / JL / 16/SP/2015 / V / 2016
  1603. 1259 37 24/JT/23/SP/2015/V/2016 24 / JT / 23/SP/2015 / V / 2016
  1604. 1210 44 1/AS/2/2016/III/2016 1 / AS / 2/ 2016 / III / 2016
  1605. 1211 44 1/AS/2/2016/III/2016 1 / AS / 2/ 2016 / III / 2016
  1606. 1212 44 9/JT/2/SP/2016/IV/2016 9 / JT / 2/SP/2016 / IV / 2016
  1607. 1215 44 10/JT/2/SP/2016/IV/2016 10 / JT / 2/SP/2016 / IV / 2016
  1608. 1216 44 11/JT/2/SP/2016/V/2016 11 / JT / 2/SP/2016 / V / 2016
  1609. 1214 45 8/AS/3/SP/2016/IV/2016 8 / AS / 3/SP/2016 / IV / 2016
  1610. 1218 46 25/AS/04/SP/2016/V/2016 25 / AS / 04/SP/2016 / V / 2016
  1611. 1255 46 11/RG/04/SP/2016/III/2016 11 / RG / 04/SP/2016 / III / 2016
  1612. 1270 46 27/RG/04/SP/2016/V/2016 27 / RG / 04/SP/2016 / V / 2016
  1613. 1219 50 2/MK/8/SP/2016/V/2016 2 / MK / 8/SP/2016 / V / 2016
  1614. 1223 50 3/AS/8/SP/2016/V/2016 3 / AS / 8/SP/2016 / V / 2016
  1615. -- ADD `ORDER_NOTES` - visible in orders list
  1616. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `ORDER_NOTES` varchar(255) NOT NULL DEFAULT '';
  1617. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `ORDER_NOTES` varchar(255) NOT NULL DEFAULT 'N/S;';
  1618. -- ADD `DELIVERY_START_DATE` - visible in orders list
  1619. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `DELIVERY_START_DATE` varchar(32) NOT NULL DEFAULT '';
  1620. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `DELIVERY_START_DATE` varchar(32) NOT NULL DEFAULT 'N/S;';
  1621. -- ADD `ORDER_CONTACT_FAX` - visible in orders list
  1622. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `ORDER_CONTACT_FAX` varchar(32) NOT NULL DEFAULT '';
  1623. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `ORDER_CONTACT_FAX` varchar(32) NOT NULL DEFAULT 'N/S;';
  1624. -- ADD `ORDER_CONTACT_EMAIL` - visible in orders list
  1625. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `ORDER_CONTACT_EMAIL` varchar(64) NOT NULL DEFAULT '';
  1626. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `ORDER_CONTACT_EMAIL` varchar(64) NOT NULL DEFAULT 'N/S;';
  1627. -- ADD `ADDITIONAL_CONDITIONS` - visible in orders list
  1628. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `ADDITIONAL_CONDITIONS` varchar(1000) NOT NULL DEFAULT '';
  1629. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `ADDITIONAL_CONDITIONS` varchar(1000) NOT NULL DEFAULT 'N/S;';
  1630. -- ADD `DELIVERY_DATE_NOTES` - visible in orders list
  1631. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS` ADD `DELIVERY_DATE_NOTES` varchar(255) NOT NULL DEFAULT '';
  1632. ALTER TABLE `CRM_LISTA_ZASOBOW_ORDERS_HIST` ADD `DELIVERY_DATE_NOTES` varchar(255) NOT NULL DEFAULT 'N/S;';
  1633. -- update
  1634. update `CRM_LISTA_ZASOBOW_ORDERS` set `DELIVERY_DATE_NOTES` = `DELIVERY_DATE`;
  1635. update `CRM_LISTA_ZASOBOW_ORDERS` set `DELIVERY_DATE` = '';
  1636. */