getValuesWithExports($query); if($DBG){echo'
rows('.$query.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($rows);echo'
';} foreach ($rows as $kID => $vItem) { $itemJson = new stdClass(); $itemJson->id = $vItem->id; $itemJson->name = $vItem->param_out; if (!empty($vItem->exports)) { $itemJson->exports = $vItem->exports; } $jsonData[] = $itemJson; } echo json_encode($jsonData); } break; } } public function defaultAction() { SE_Layout::gora(); if (1 != V::get('_print', '', $_GET)) SE_Layout::menu(); try { $data = array(); $data['id_project'] = V::get('ID_PROJECT', 0, $_REQUEST, 'int'); $data['id_company'] = V::get('id_company', 0, $_REQUEST, 'int'); $data['items_count'] = V::get('items_count', 10, $_REQUEST, 'int'); $data['widgetCompanies'] = array(); $data['widgetCompanies']['fieldName'] = 'id_company'; $data['widgetCompanies']['dataUrl'] = "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=typespecial&fld={$data['widgetCompanies']['fieldName']}"; $data['widgetCompanies']['typeSpecial'] = TypespecialVariable::getInstance(-1, '__COMPANIES'); $this->zamZlecFormView($data); } catch (Exception $e) { SE_Layout::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage()); } if (1 != V::get('_print', '', $_GET)) SE_Layout::dol(); } public function addZlecenieAction() { die("TODO: add zlecenie and redirect"); } public function rmOrdersDataAction() {// TODO: RMME only TEST if ('diradmin' != User::getLogin()) die('access denied!'); if ('doRemove' != V::get('rm', '', $_GET)) die('confirmation required!'); DB::getPDO()->exec("TRUNCATE CRM_LISTA_ZASOBOW_ORDERS_HIST"); DB::getPDO()->exec("TRUNCATE CRM_LISTA_ZASOBOW_ORDERS"); die('orders data removed'); } public function zlecenieAction() { SE_Layout::gora(); if (1 != V::get('_print', '', $_GET)) SE_Layout::menu(); try { $id_project = V::get('ID_PROJECT', 0, $_REQUEST, 'int'); $id_company = V::get('id_company', 0, $_REQUEST, 'int'); $items_count = V::get('items_count', 10, $_REQUEST, 'int'); if (1 != V::get('_print', '', $_GET)) { $basePrintUrl = "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT={$id_project}"; $basePrintUrl .= "&id_company={$id_company}"; $basePrintUrl .= "&items_count={$items_count}"; ?>
Cofnij Drukuj Zlecenie
setProps($data); $this->zlecenieView($data); } catch (Exception $e) { SE_Layout::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage()); } if (1 != V::get('_print', '', $_GET)) SE_Layout::dol(); } public function addZamowienieAction() { $id_company = V::get('id_company', 0, $_REQUEST, 'int'); $id_project = V::get('ID_PROJECT', 0, $_REQUEST, 'int'); $orderType = 'zamowienie'; $data = array(); $data['id_company'] = $id_company; $data['id_project'] = $id_project; $data = $this->setProps($data); $sqlFieldsList = array(); $sqlFieldsList[] = 'ID_PROJECT'; $sqlFieldsList[] = 'ID_COMPANIES'; $sqlFieldsList[] = 'COMPANY_NAME'; $sqlFieldsList[] = 'COMPANY_ADDRESS'; $sqlFieldsList[] = 'COMPANY_POST_CODE'; $sqlFieldsList[] = 'COMPANY_CITY'; $sqlFieldsList[] = 'COMPANY_NIP'; $sqlFieldsList[] = 'COMPANY_CONTACT_PERSON'; $sqlFieldsList[] = 'COMPANY_CONTACT_TEL'; $sqlFieldsList[] = 'COMPANY_CONTACT_MAIL'; $sqlFieldsList[] = 'DELIVERY_DATE'; $sqlFieldsList[] = 'DELIVERY_TYPE'; $sqlFieldsList[] = 'DELIVERY_LOCATION'; $sqlFieldsList[] = 'CASH_PENALTY'; $sqlFieldsList[] = 'ORDER_CONTACT_PERSON'; $sqlFieldsList[] = 'ORDER_APPROVE_PERSON'; $sqlFieldsList[] = 'DELIVERY_CONTACT_PERSON'; $sqlFieldsList[] = 'PAYMENT_TERM_DAYS_FV'; $sqlFieldsList[] = 'PAYMENT_METHOD'; $sqlObj = array(); $sqlObj['ORDER_TYPE'] = $orderType; foreach ($data as $fldName => $val) { if (!in_array($fldName, $sqlFieldsList)) continue; $sqlObj[$fldName] = $val; } $idOrder = DB::getDB()->ADD_NEW_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj); if ($idOrder > 0) { {// update `ORDER_LABEL`: nr zamówienia / inicjały zamawiającego / numer budowy / miesiąc / rok if (!empty($data['obcy_nr_sprawy'])) { $inicjaly = User::getInicjaly(); $year = date('Y'); $month = '';// n Liczbowa forma miesiąca, bez zer wiodących 1 aż do 12 switch (date('n')) { case 1: $month = 'I'; break; case 2: $month = 'II'; break; case 3: $month = 'III'; break; case 4: $month = 'IV'; break; case 5: $month = 'V'; break; case 6: $month = 'VI'; break; case 7: $month = 'VII'; break; case 8: $month = 'VIII'; break; case 9: $month = 'IX'; break; case 10: $month = 'X'; break; case 11: $month = 'XI'; break; case 12: $month = 'XII'; break; } // 58/MŁ/13/2016/10/VII/2016 // 58 - nr rekordu // MŁ - inicjały // 13/2016 - nr budowy (obcy_nr_sprawy) // 10 - nr kolejny zamówienia w odniesieniu do danej budowy // VII - miesiąc // 2016 - rok $lpOrder = ''; if ($data['id_project'] > 0) { $sqlIdProject = DB::getPDO()->quote($data['id_project'], PDO::PARAM_INT); $lpOrder = DB::getPDO()->fetchValue("select count(*) as cnt from CRM_LISTA_ZASOBOW_ORDERS where ID_PROJECT = {$sqlIdProject}"); if ($lpOrder < 1) $lpOrder = 1; } $data['ORDER_LABEL'] = "{$idOrder}/{$inicjaly}/{$data['obcy_nr_sprawy']}/{$lpOrder}/{$month}/{$year}"; } DB::getPDO()->exec("update CRM_LISTA_ZASOBOW_ORDERS set ORDER_LABEL = '{$data['ORDER_LABEL']}' where ID = '{$idOrder}'"); } $urlZam = Request::getPathUri() . "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task={$orderType}&id={$idOrder}"; header("Location: {$urlZam}"); exit; } else { SE_Layout::gora(); SE_Layout::menu(); SE_Layout::alert('danger', 'Nie udało się utworzyć rekordu'); SE_Layout::dol(); } } public function zamowienieAction() { SE_Layout::gora(); if (1 != V::get('_print', '', $_GET)) SE_Layout::menu(); try { $id_order = V::get('id', 0, $_REQUEST, 'int'); $id_project = V::get('ID_PROJECT', 0, $_REQUEST, 'int'); $id_company = V::get('id_company', 0, $_REQUEST, 'int'); $items_count = V::get('items_count', 10, $_REQUEST, 'int'); $data = array(); $data['id'] = $id_order; $data['ile_pozycji'] = $items_count; $data['id_company'] = $id_company; $data['id_project'] = $id_project; $data = $this->setProps($data); $mode = (V::get('_print', '', $_REQUEST))? 'print' : 'view'; $this->zamowienieView($data, $mode); } catch (Exception $e) { SE_Layout::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage()); } if (1 != V::get('_print', '', $_GET)) SE_Layout::dol(); } public function previewOrder($idOrder) { try { $id_order = $idOrder; $data = array(); $data['id'] = $id_order; $data = $this->setProps($data); $this->zamowienieView($data, $mode = 'preview'); } catch (Exception $e) { SE_Layout::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage()); } } public function setProps($data) { $data['_nr_budowy'] = '';// fetch from project - field M_DIST_DESC $sqlIdOrder = V::get('id', 0, $data, 'int'); if ($sqlIdOrder > 0) { $rows = DB::getPDO()->fetchAll(" select t.* from CRM_LISTA_ZASOBOW_ORDERS t where t.ID = {$sqlIdOrder} "); if (count($rows) > 0) { $row = reset($rows); if (!empty($row['ID_COMPANIES'])) $data['id_company'] = $row['ID_COMPANIES']; if (!empty($row['ID_PROJECT'])) $data['id_project'] = $row['ID_PROJECT']; $data['ORDER_TYPE'] = V::get('ORDER_TYPE', '', $row); $data['ORDER_LABEL'] = V::get('ORDER_LABEL', '', $row); $defaultOrderDate = substr(V::get('A_RECORD_CREATE_DATE', date("Y-m-d"), $row), 0, 10); $data['ORDER_DATE'] = V::get('ORDER_DATE', $defaultOrderDate, $row); $data['OFFER_NR'] = V::get('OFFER_NR', '', $row); $data['COMPANY_NAME'] = V::get('COMPANY_NAME', '', $row); $data['COMPANY_ADDRESS'] = V::get('COMPANY_ADDRESS', '', $row); $data['COMPANY_POST_CODE'] = V::get('COMPANY_POST_CODE', '', $row); $data['COMPANY_CITY'] = V::get('COMPANY_CITY', '', $row); $data['COMPANY_NIP'] = V::get('COMPANY_NIP', '', $row); $data['COMPANY_CONTACT_PERSON'] = V::get('COMPANY_CONTACT_PERSON', '', $row); $data['COMPANY_CONTACT_TEL'] = V::get('COMPANY_CONTACT_TEL', '', $row); $data['COMPANY_CONTACT_MAIL'] = V::get('COMPANY_CONTACT_MAIL', '', $row); $data['DELIVERY_DATE'] = V::get('DELIVERY_DATE', '', $row); $data['DELIVERY_TYPE'] = V::get('DELIVERY_TYPE', '', $row); $data['DELIVERY_LOCATION'] = V::get('DELIVERY_LOCATION', '', $row); $data['CASH_PENALTY'] = V::get('CASH_PENALTY', '', $row); $data['ORDER_CONTACT_PERSON'] = V::get('ORDER_CONTACT_PERSON', '', $row); $data['ORDER_APPROVE_PERSON'] = V::get('ORDER_APPROVE_PERSON', '', $row); $data['DELIVERY_CONTACT_PERSON'] = V::get('DELIVERY_CONTACT_PERSON', '', $row); $data['PAYMENT_TERM_DAYS_FV'] = V::get('PAYMENT_TERM_DAYS_FV', '60', $row); $data['PAYMENT_METHOD'] = V::get('PAYMENT_METHOD', 'przelew', $row); } $data['orderPosList'] = $this->fetchOrderPosList($sqlIdOrder); } $sqlIdCompany = V::get('id_company', 0, $data, 'int'); if ($sqlIdCompany > 0) { $rows = DB::getPDO()->fetchAll(" select c.* from COMPANIES c where c.ID = {$sqlIdCompany} "); if (count($rows) > 0) { $row = reset($rows); DBG::_('DBG', '>2', "company by id='{$sqlIdCompany}'", $row, __CLASS__, __FUNCTION__, __LINE__); if (empty($data['COMPANY_NAME'])) $data['COMPANY_NAME'] = V::get('P_NAME', '', $row); if (empty($data['COMPANY_ADDRESS'])) { $data['COMPANY_ADDRESS'] = V::get('P_ADDRESS_STREET', '', $row); if (!empty($row['P_ADDRESS_HOUSE'])) $data['COMPANY_ADDRESS'] .= " {$row['P_ADDRESS_HOUSE']}";// TODO: add P_ADDRESS_HOUSE if (!empty($row['P_ADDRESS_HOME'])) $data['COMPANY_ADDRESS'] .= "/{$row['P_ADDRESS_HOME']}";// TODO: add '/' P_ADDRESS_HOME } if (empty($data['COMPANY_POST_CODE'])) $data['COMPANY_POST_CODE'] = V::get('P_ADDRESS_POST_CODE', '', $row); if (empty($data['COMPANY_CITY'])) $data['COMPANY_CITY'] = V::get('P_ADDRESS_CITY', '', $row); if (empty($data['COMPANY_NIP'])) $data['COMPANY_NIP'] = V::get('P_NIP', '', $row); if (empty($data['COMPANY_CONTACT_PERSON'])) $data['COMPANY_CONTACT_PERSON'] = V::get('P_CONTACT_PERSON', '', $row); if (empty($data['COMPANY_CONTACT_TEL'])) $data['COMPANY_CONTACT_TEL'] = V::get('P_PHONE', '', $row); if (empty($data['COMPANY_CONTACT_MAIL'])) $data['COMPANY_CONTACT_MAIL'] = V::get('user_mail_contact', '', $row); } } $sqlIdProject = V::get('id_project', 0, $data, 'int'); if ($sqlIdProject > 0) { $rows = DB::getPDO()->fetchAll(" select p.* from IN7_MK_BAZA_DYSTRYBUCJI p where p.ID = {$sqlIdProject} limit 1 "); if (count($rows) > 0) { $row = reset($rows); if (!empty($row['M_DIST_DEALNUM'])) $data['obcy_nr_sprawy'] = $row['M_DIST_DEALNUM']; if (!empty($row['M_DIST_DESC'])) $data['_nr_budowy'] = $row['M_DIST_DESC']; } } if (!empty($data['id_company'])) $data['ID_COMPANIES'] = $data['id_company']; if (!empty($data['id_project'])) $data['ID_PROJECT'] = $data['id_project']; // TODO: $data['obcy_nr_sprawy'] = 'zam./OSOBA/nr budowy/I/2016' lub 'zlec./OSOBA/nr budowy/I/2016' return $data; } public function zamZlecFormView($data) { $id_project = V::get('id_project', 0, $data); $id_company = V::get('id_company', 0, $data); $items_count = V::get('items_count', 0, $data); $widgetCompanies = V::get('widgetCompanies', array(), $data); $sqlWhere = ''; if ($id_project > 0) $sqlWhere = "where o.ID_PROJECT = {$id_project}"; $projOrders = DB::getPDO()->fetchAll(" select o.* , p.M_DIST_DEALNUM as obcy_nr_sprawy from CRM_LISTA_ZASOBOW_ORDERS o left join IN7_MK_BAZA_DYSTRYBUCJI p on(p.ID = o.ID_PROJECT) left join COMPANIES c on(c.ID = o.ID_COMPANIES) {$sqlWhere} order by ID DESC limit 100 "); ?>
0) { $tsValues = $widgetCompanies['typeSpecial']->getEditSelectedValuesByIds(-1, $id = $id_company, $fName, $fieldValue = $id_company); if (1 == count($tsValues)) { $fldParams['typespecialValue'] = array_values($tsValues); $fldParams['typespecialValue'] = reset($fldParams['typespecialValue']); } } //$fldParams['ajaxDataUrlBase'] .= "&DBG_TS=3"; echo $widgetCompanies['typeSpecial']->showFormItem($tblID = -1, $fName, $selValue = $id_company, $fldParams); ?>

# status nr zlecenia nr budowy
Edytuj $fun) : ?> Zmień na:
fetchAll(" select z.ID, z.`DESC` from CRM_LISTA_ZASOBOW z where z.PARENT_ID = '{$idTableOrders}' and z.`TYPE` = 'KOMORKA' "); if (empty($rows)) return '#'; foreach ($rows as $row) { $fieldMap[ $row['ID'] ] = $row['DESC']; } if (empty($fieldMap)) return '#'; } $record = null; { $rows = DB::getPDO()->fetchAll(" select r.* from CRM_LISTA_ZASOBOW_ORDERS r where r.ID = '{$idOrder}' "); if (empty($rows)) return '#'; $record = $rows[0]; } if (!$record) return '#'; $urlParams = array();// [ "{$urlParamName}={$paramValue}" ] foreach ($fun['cell_id_params'] as $idField => $urlParamName) { $paramValue = ''; if (array_key_exists($idField, $fieldMap)) { $paramValue = V::get($fieldMap[$idField], '', $record); $urlParams[] = "{$urlParamName}={$paramValue}"; } } if (!empty($urlParams)) $link .= "&" . implode("&", $urlParams); return $link; } public function zlecenieView($data) { $ile_pozycji = V::get('ile_pozycji', 10, $data); ?>
Gdańsk, dnia ____ _____ 2016 roku
Zleceniodawca:
PRO-NET.MEDIA S.A.
80-557 Gdańsk, ul. Narwicka 21
NIP 583-315-47-35

Zleceniobiorca:


NIP

Zlecenie nr:

Zleceniodawca niniejszym składa zlecenie na wskazanych poniżej warunkach zgodnie z ofertą Zleceniobiorcy z dnia .

Lp. Przedmiot zlecenia J.M. Ilość Cena jednostkowa netto
[pln]
Wartość brutto
[pln]
.
RAZEM:
Słownie:
UWAGI: NA FAKTURZE VAT NALEŻY UMIESZCZAĆ CZYTELNY NR ZLECENIA

WARUNKI REALIZACJI ZLECENIA:

  1. Termin wykonania zlecenia: od dnia ………. ……………. 2016 roku do dnia ……… ……….2016 roku, 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 ……….. złotych (słownie: …………. złotych 00/100) za każdy rozpoczęty dzień opóźnienia z terminem płatności tej kary – 7 dni od jej naliczenia. 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.
  2. Miejsce wykonania zlecenia: ……………………………………..
  3. Forma płatności: przelew.
  4. Wynagrodzenie objęte niniejszym zleceniem jest wynagrodzeniem ryczałtowym.
  5. Termin płatności: 30 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. Osoba do kontaktu ze strony Zleceniodawcy: ……………………………………..
  11. Osoba uprawniona do kontaktu ze strony Zleceniobiorcy: ………………………………
  12. Za datę zapłaty uważa się datę obciążenia rachunku bankowego Zleceniodawcy.
  13. 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ę. Potwierdzenie pod rygorem nieważności winno być przesłane faksem do Zleceniodawcy pod numer ………… lub pocztą elektroniczną na adres email: ……….. 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.
  14. Wierzytelności wynikające z niniejszego zlecenia nie mogą być przenoszone przez Zleceniobiorcę na osoby trzecie bez uprzedniej, pisemnej zgody Zleceniodawcy.
  15. 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:
    1. 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,
    2. powzięcia przez Zleceniodawcę informacji, iż sytuacja finansowa Zleceniobiorcy nie pozwala na wykonanie prac zleconych na mocy niniejszego zlecenia,
    3. powzięcia przez Zleceniodawcę informacji, iż Zleceniobiorca nie przestrzega przepisów BHP oraz przeciwpożarowych,
    4. 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.
  16. 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.
  17. Ustalenia dodatkowe: ……………………………….
(pieczęć i czytelny podpis Zamawiającego) …………………………………………………………….

NINIEJSZYM OŚWIADCZAM, ŻE ZLECENIOBIORCA PRZYJMUJE ZLECENIE DO REALIZACJI NA POWYŻSZYCH WARUNKACH:

………………………….,dnia………………………….………………………………………………..
(pieczęć i czytelny podpis Zleceniobiorcy zgodnie z zasadami reprezentacji)
setProps($data); $res = new stdClass(); $res->type = 'success'; $res->msg = 'OK'; $res->idOrder = V::get('idOrder', -1, $json, 'int'); $res->orderPosList = array(); $res->fields = new stdClass(); $res->DBG_DATA = $data;// TODO: DBG if (!empty($json['fields'])) { $sqlFieldsList = array(); $sqlFieldsList[] = 'ID_PROJECT'; $sqlFieldsList[] = 'ID_COMPANIES'; $sqlFieldsList[] = 'COMPANY_NAME'; $sqlFieldsList[] = 'COMPANY_ADDRESS'; $sqlFieldsList[] = 'COMPANY_POST_CODE'; $sqlFieldsList[] = 'COMPANY_CITY'; $sqlFieldsList[] = 'COMPANY_NIP'; $sqlFieldsList[] = 'COMPANY_CONTACT_PERSON'; $sqlFieldsList[] = 'COMPANY_CONTACT_TEL'; $sqlFieldsList[] = 'COMPANY_CONTACT_MAIL'; $sqlFieldsList[] = 'DELIVERY_DATE'; $sqlFieldsList[] = 'DELIVERY_TYPE'; $sqlFieldsList[] = 'DELIVERY_LOCATION'; $sqlFieldsList[] = 'CASH_PENALTY'; $sqlFieldsList[] = 'ORDER_CONTACT_PERSON'; $sqlFieldsList[] = 'ORDER_APPROVE_PERSON'; $sqlFieldsList[] = 'DELIVERY_CONTACT_PERSON'; $sqlFieldsList[] = 'OFFER_NR'; $sqlFieldsList[] = 'ORDER_DATE'; $sqlFieldsList[] = 'PAYMENT_TERM_DAYS_FV'; $sqlFieldsList[] = 'PAYMENT_METHOD'; $sqlObj = array(); //$sqlObj['ORDER_TYPE'] = $json['type']; foreach ($data as $fldName => $val) { if (!in_array($fldName, $sqlFieldsList)) continue; $sqlObj[$fldName] = $val; } foreach ($json['fields'] as $fldName => $val) { if (!in_array($fldName, $sqlFieldsList)) continue; $sqlObj[$fldName] = $val; } $res->TODO_SQL_OBJ = $sqlObj; $res->fields = $sqlObj; if ($res->idOrder > 0) { $sqlObj['ID'] = $res->idOrder; $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj); if ($affected > 0) { $res->type = 'success'; $res->msg = "Zaktualizowano rekord '{$res->idOrder}'"; $rows = DB::getPDO()->fetchAll("select * from CRM_LISTA_ZASOBOW_ORDERS where ID = '{$res->idOrder}'"); $row = reset($rows); $res->fields = $row; } else if ($affected < 0) { $res->type = 'danger'; $res->msg = 'Nie udało się wprowadzić zmian'; } } else { $idOrder = DB::getDB()->ADD_NEW_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj); if ($idOrder > 0) { $res->idOrder = $idOrder; $res->type = 'success'; $res->msg = "Utworzono rekord nr '{$res->idOrder}'"; $rows = DB::getPDO()->fetchAll("select * from CRM_LISTA_ZASOBOW_ORDERS where ID = '{$res->idOrder}'"); $row = reset($rows); $res->fields = $row; } else { $res->idOrder = -1; $res->type = 'danger'; $res->msg = 'Nie udało się utworzyć rekordu'; } } {// try to add new company if (empty($res->fields['ID_COMPANIES'])) { $comObj = array(); $comObj['P_NAME'] = V::get('COMPANY_NAME', '', $sqlObj); $comObj['P_ADDRESS_STREET'] = V::get('COMPANY_ADDRESS', '', $sqlObj); $comObj['P_ADDRESS_POST_CODE'] = V::get('COMPANY_POST_CODE', '', $sqlObj); $comObj['P_ADDRESS_CITY'] = V::get('COMPANY_CITY', '', $sqlObj); $comObj['P_NIP'] = V::get('COMPANY_NIP', '', $sqlObj); $comObj['P_CONTACT_PERSON'] = V::get('COMPANY_CONTACT_PERSON', '', $sqlObj); $comObj['P_PHONE'] = V::get('COMPANY_CONTACT_TEL', '', $sqlObj); $comObj['user_mail_contact'] = V::get('COMPANY_CONTACT_MAIL', '', $sqlObj); if (!empty($comObj['P_NIP']) && !empty($comObj['P_NAME']) && !empty($comObj['P_ADDRESS_STREET']) && !empty($comObj['P_PHONE'])) { $res->TODO_ADD_COM = $comObj; $idCompany = DB::getDB()->ADD_NEW_OBJ('COMPANIES', (object)$comObj); if ($idCompany > 0) { $orderObj['ID'] = $res->idOrder; $orderObj['ID_COMPANIES'] = $idCompany; $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$orderObj); $rows = DB::getPDO()->fetchAll("select * from CRM_LISTA_ZASOBOW_ORDERS where ID = '{$res->idOrder}'"); $row = reset($rows); $res->fields = $row; } } } } } $currentPosList = $this->fetchOrderPosList($res->idOrder); $res->validateErrors = array(); if (!empty($json['orderPosList']) && $res->idOrder > 0) { $idMap = array();// $idFrontEnd => $idBackEnd foreach ($json['orderPosList'] as $item) { $sqlObj = array(); $sqlObj['ID_ORDER'] = $res->idOrder; if ($item['id'] <= 0 && empty($item['name']) && empty($item['price']) && empty($item['quantity']) && empty($item['unit'])) {// skip empty pos continue; } $validatePosErrors = $this->validatePos($item); if (!empty($validatePosErrors)) { $res->validateErrors[ $item['id'] ] = $validatePosErrors; } else { $sqlObj['OFFER_NAME'] = $item['name']; $sqlObj['OFFER_PRICE_PER_UNIT'] = str_replace(',', '.', $item['price']); $sqlObj['OFFER_QUANTITY'] = $item['quantity']; $sqlObj['OFFER_UNIT'] = $item['unit']; if ($item['id'] > 0) { $sqlObj['ID'] = $item['id']; } if ($sqlObj['ID'] > 0) { DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_OFFERS', (object)$sqlObj); } else { $idPos = DB::getDB()->ADD_NEW_OBJ('CRM_LISTA_ZASOBOW_OFFERS', (object)$sqlObj); $idMap[ $item['id'] ] = $idPos; } } } if (!empty($json['toDeletePosList']) && $res->idOrder > 0) { $res->DELETE_LOG = array(); foreach ($json['toDeletePosList'] as $idFrontEnd => $bool) { if (!$bool) continue; if ($idFrontEnd <= 0) continue; if (array_key_exists($idFrontEnd, $currentPosList)) { $sqlObj = array(); $sqlObj['ID'] = $idFrontEnd; $sqlObj['A_STATUS'] = 'DELETED'; $res->DELETE_LOG[$idFrontEnd] = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_OFFERS', (object)$sqlObj); } } } $orderPoslist = array(); {// fix state frontEnd <--> backEnd $updatedPosList = $this->fetchOrderPosList($res->idOrder); foreach ($json['orderPosList'] as $item) { $idFrontEnd = $item['id']; $idBackEnd = 0; if ($idFrontEnd <= 0 && array_key_exists($idFrontEnd, $idMap)) { $idBackEnd = $idMap[$idFrontEnd]; } else {// $item['id'] > 0 $idBackEnd = $idFrontEnd; } if (!array_key_exists($idBackEnd, $updatedPosList)) $idBackEnd = 0; if ($idBackEnd) { $orderPoslist[] = $updatedPosList[ $idBackEnd ]; } else { $orderPoslist[] = $item; $res->validateErrors[ $item['id'] ][ 'name' ] = true; $res->validateErrors[ $item['id'] ][ 'price' ] = true; $res->validateErrors[ $item['id'] ][ 'quantity' ] = true; $res->validateErrors[ $item['id'] ][ 'unit' ] = true; } } $res->orderPosList = $orderPoslist; } foreach ($idMap as $idFrontEnd => $idBackEnd) { if (array_key_exists($idFrontEnd, $res->validateErrors)) { } } } $res->validateErrors = (object)$res->validateErrors; Response::sendJsonExit($res); } public function validatePos($item) { $validatePosErrors = array(); if (empty($item['name'])) $validatePosErrors['name'] = 'Brak nazwy'; if (empty($item['unit'])) $validatePosErrors['unit'] = 'Brak jednostki'; if (empty($item['quantity'])) $validatePosErrors['quantity'] = 'Brak ilości'; if (empty($item['price'])) $validatePosErrors['price'] = 'Brak ceny jednostkowej'; return $validatePosErrors; } public function fetchOrderPosList($idOrder) { $orderPosList = array(); $rows = DB::getPDO()->fetchAll(" select o.* from CRM_LISTA_ZASOBOW_OFFERS o where o.ID_ORDER = {$idOrder} and (o.A_STATUS != 'DELETED' or o.A_STATUS is null) "); foreach ($rows as $row) { $price = number_format($row['OFFER_PRICE_PER_UNIT'], 4, '.', ''); $price_f2 = number_format($row['OFFER_PRICE_PER_UNIT'], 2, '.', ''); if ($price_f2 . "00" == $price) $price = $price_f2; $quantity = number_format($row['OFFER_QUANTITY'], 4, '.', ''); $quantity_f2 = number_format($row['OFFER_QUANTITY'], 2, '.', ''); $quantity_int = intval($row['OFFER_QUANTITY']); if ($quantity_int . ".0000" == $quantity) $quantity = $quantity_int; else if ($quantity_f2 . "00" == $quantity) $quantity = $quantity_f2; $posItem = array('id' => $row['ID'], 'name' => $row['OFFER_NAME'], 'price' => $price, 'quantity' => $quantity, 'unit' => $row['OFFER_UNIT']); $orderPosList[ $row['ID'] ] = (object)$posItem; } return $orderPosList; } public function zamowienieView($data, $mode = 'view') { $id_order = V::get('id', 0, $data); $id_company = V::get('id_company', 0, $data); $id_project = V::get('id_project', 0, $data); $orderPosList = array(); if ($id_order > 0) { $orderPosList = V::get('orderPosList', array(), $data); $orderPosList = array_values($orderPosList); } if (empty($orderPosList)) { $ile_pozycji = V::get('ile_pozycji', 10, $data); for ($i = 1; $i <= $ile_pozycji; $i++) { $posItem = array('id' => -1 * $i, 'name' => '', 'price' => '', 'quantity' => '', 'unit' => ''); $orderPosList[] = (object)$posItem; } } // fetch from db - overwrite $orderPosList DBG::_('DBG', '>1', 'data', $data, __CLASS_, __FUNCTION__, __LINE__); $saveLink = Request::getPathUri() . "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=saveAjax&id={$id_order}"; $fields = $data;// TODO: only row fields? ?>