printZamowieniePublicAction(); exit; } if (!User::logged()) { User::authByRequest(); } } public function typespecialAction() { $DBG = ('1' == V::get('DBG', '', $_REQUEST)); header("Content-type: application/json"); $fld = V::get('fld', '', $_GET); switch ($fld) { case 'id_company': { $typeSpecialCompanies = TypespecialVariable::getInstance(-1, '__COMPANIES'); $query = V::get('q', '', $_REQUEST); $rawRows = null; $rows = $typeSpecialCompanies->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;
case 'ID_PROJECT': {
$widgetProject = $this->getWidgetProject();
$typeSpecialIdProject = Typespecial::getInstance($widgetProject['idKomorka'], $colName = $widgetProject['fieldName']);
$query = V::get('q', '', $_REQUEST);
$rawRows = null;
$rows = $typeSpecialIdProject->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() {
UI::gora();
if (1 != V::get('_print', '', $_GET)) UI::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');
$data['widgetProject'] = $this->getWidgetProject();
$this->zamZlecFormView($data);
} catch (Exception $e) {
UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
}
if (1 != V::get('_print', '', $_GET)) UI::dol();
}
public function reinstallAction() {
UI::gora();
try {
DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS add INVOICE enum('0','1') NOT NULL DEFAULT '0' ");
DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS_HIST add INVOICE varchar(6) NOT NULL DEFAULT 'N/S;' ");
} catch (Exception $e) {
if (fales !== strpos($e->getMessage(), 'Duplicate column name')) {
UI::alert('warning', $e->getMessage());
} else {
UI::alert('danger', $e->getMessage());
DBG::log($e);
}
}
try {
DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS add PAYMENT enum('0','1') NOT NULL DEFAULT '0' ");
DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS_HIST add PAYMENT varchar(6) NOT NULL DEFAULT 'N/S;' ");
} catch (Exception $e) {
if (fales !== strpos($e->getMessage(), 'Duplicate column name')) {
UI::alert('warning', $e->getMessage());
} else {
UI::alert('danger', $e->getMessage());
DBG::log($e);
}
}
try {
DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS add NR_PKWIU varchar(255) NOT NULL DEFAULT '' ");
DB::getPDO()->execSql(" alter table CRM_LISTA_ZASOBOW_ORDERS_HIST add NR_PKWIU varchar(255) NOT NULL DEFAULT 'N/S;' ");
} catch (Exception $e) {
if (fales !== strpos($e->getMessage(), 'Duplicate column name')) {
UI::alert('warning', $e->getMessage());
} else {
UI::alert('danger', $e->getMessage());
DBG::log($e);
}
}
try {
DB::getPDO()->execSql("
CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `CRM_LISTA_ZASOBOW_ORDERS_summary_view` AS
SELECT o.ID
, SUM( COALESCE(f.OFFER_QUANTITY, 0) * COALESCE(f.OFFER_PRICE_PER_UNIT, 0) ) as SUM_POS
, COUNT(1) as COUNT_POS
, o.`ID_COMPANIES`
, IF(o.`ID_COMPANIES` > 0,
(select c.P_NAME from COMPANIES c where c.ID = o.ID_COMPANIES limit 1)
, '') as Kontrahent
, o.`ID_PROJECT`
, o.`ID_PROJECT_path`
, o.`A_RECORD_CREATE_DATE`
, o.`A_RECORD_CREATE_AUTHOR`
, o.`SYNC_SQIX_STATUS`
, o.`A_RECORD_UPDATE_DATE`
, o.`A_RECORD_UPDATE_AUTHOR`
, o.`L_APPOITMENT_DATE`
, o.`L_APPOITMENT_USER`
, o.`L_APPOITMENT_PERIOD`
, o.`L_APPOITMENT_INFO`
, o.`L_APPOITMENT_TYPE`
, o.`A_STATUS`
, o.`A_STATUS_INFO`
, o.`A_ADM_COMPANY`
, o.`A_CLASSIFIED`
-- , o.`NR`
, o.`COMPANY_NIP`
, o.`COMPANY_NAME`
, o.`COMPANY_ADDRESS`
, o.`OFFER_DATE`
, o.`OFFER_NR`
, o.`ORDER_TYPE`
, o.`DELIVERY_DATE`
, o.`DELIVERY_DATE_NOTES`
, o.`EXECUTION_START_DATE`
, o.`EXECUTION_END_DATE`
, o.`CASH_PENALTY`
, o.`LOCATION`
, o.`NOTES`
FROM `CRM_LISTA_ZASOBOW_ORDERS` o
LEFT JOIN `CRM_LISTA_ZASOBOW_OFFERS` f on(f.ID_ORDER = o.ID and (f.A_STATUS is null or f.A_STATUS != 'DELETED'))
GROUP BY o.`ID`
");
} catch (Exception $e) {
UI::alert('danger', $e->getMessage());
DBG::log($e);
}
UI::alert('info', "Koniec");
UI::dol();
}
public function getWidgetProject() {
$widgetProject = array();
$widgetProject['idTabela'] = 1656;// TODO: idZasob for TABELA Projekty
$widgetProject['idKomorka'] = 1658;// TODO: idZasob for KOMORKA Projekty.P_ID
$widgetProject['fieldName'] = 'ID_PROJECT';
$widgetProject['dataUrl'] = "index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&_task=typespecial&fld={$widgetProject['fieldName']}";
$widgetProject['typeSpecial'] = null;
try {
$acl = User::getAcl()->getObjectAcl('default_db', 'IN7_MK_BAZA_DYSTRYBUCJI');
$acl->init($force = true);
$acl->getFields();
$widgetProject['typeSpecial'] = Typespecial::getInstance($widgetProject['idKomorka'], $colName = $widgetProject['fieldName']);
} catch (Exception $e) {
}
return $widgetProject;
}
public function addZlecenieAction() {
$id_company = V::get('id_company', 0, $_REQUEST, 'int');
$id_project = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
$orderType = 'zlecenie';
$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_DATE_NOTES';
$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 {
UI::gora();
UI::menu();
UI::alert('danger', 'Nie udało się utworzyć rekordu');
UI::dol();
}
}
public function zlecenieAction() {
UI::gora();
if (1 != V::get('_print', '', $_GET)) UI::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);
DBG::log($data, 'array', "\$data");
$mode = (V::get('_print', '', $_REQUEST))? 'print' : 'view';
$this->zamowienieView($data, $mode);
} catch (Exception $e) {
UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
}
if (1 != V::get('_print', '', $_GET)) UI::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_DATE_NOTES';
$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 {
UI::gora();
UI::menu();
UI::alert('danger', 'Nie udało się utworzyć rekordu');
UI::dol();
}
}
public function printZamowieniePublicAction() {
$data = array();
{// auth by token
$id = V::get('id', 0, $_GET, 'int');
if ($id <= 0) die("Brak dostępu");
$token = V::get('token', '', $_GET);
if (empty($token)) die("Brak dostępu");
$email = V::get('email', '', $_GET);
if (empty($email)) die("Brak dostępu");
$data['id'] = $id;
$data = $this->setProps($data);
if (empty($data['id_project'])) die("Brak dostępu");
if ($this->generateOrderLinkToken($id, $email, $data['id_project']) != $token) die("Brak dostępu");
}
$_GET['_print'] = $_REQUEST['_print'] = 1;
UI::gora();
try {
$this->zamowienieView($data, $mode = 'print');
} catch (Exception $e) {
UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
}
echo'