| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- <?php
- /**
- * @param $_GET['task']
- * @param $_GET['id_mnp']
- *
- * if $_GET['task'] == 'create_koresp_out'
- * @require $_GET['id_mnp']
- *
- * @requires TYPESPECIALS:
- * [6958] TYPESPECIAL MNP wyślij koresp. link
- * [6959] PARAM_OUT Wyślij koresp.
- * <a href="index.php?MENU_INIT=AHMES_MNP&task=create_koresp_out&id_mnp={ID_MNP}" target="_blank">Wyślij koresp.</a>
- * [6960] (ALIAS DO [6929]) DANE ID_MNP
- * [6961] (ALIAS DO [6962]) PARAM_IN ADD_KORESP_OUT_LINK in MNP
- *
- */
- function AHMES_MNP() {
- Lib::loadClass('ProcesHelper');
- $tblMnpId = ProcesHelper::getZasobTableID('MNP');
- $tblKorespId = ProcesHelper::getZasobTableID('IN7_DZIENNIK_KORESP');
- Lib::loadClass('ProcesHelper');
- $zasobObj = ProcesHelper::getZasobTableInfo($tblMnpId);
- if (!$zasobObj) {
- echo '<div class="alert alert-danger">' . "Zasob TABELA ID={$tblMnpId} nie istnieje" . '</div>';
- //echo UserActivity::showSimpleList();
- return;
- }
- $korespObj = ProcesHelper::getZasobTableInfo($tblKorespId);
- if (!$korespObj) {
- echo '<div class="alert alert-danger">' . "Zasob TABELA ID={$tblKorespId} nie istnieje" . '</div>';
- //echo UserActivity::showSimpleList();
- return;
- }
- //UserActivity::add($tblMnpId);
- $userAcl = User::getAcl();
- $userAcl->fetchGroups();
- if (!$userAcl->hasTableAcl($zasobObj->ID)) {
- echo '<div class="alert alert-danger">' . "Brak uprawnień do tabeli ID={$zasobObj->ID}" . '</div>';
- //echo UserActivity::showSimpleList();
- return;
- }
- if (!$userAcl->hasTableAcl($korespObj->ID)) {
- echo '<div class="alert alert-danger">' . "Brak uprawnień do tabeli Korespondencja (ID={$korespObj->ID})" . '</div>';
- //echo UserActivity::showSimpleList();
- return;
- }
- $tblAcl = $userAcl->getTableAcl($zasobObj->ID);
- $korespAcl = $userAcl->getTableAcl($korespObj->ID);
- $forceTblAclInit = ('1' == V::get('_force', '', $_GET));
- $tblAcl->init($forceTblAclInit);
- $korespAcl->init($forceTblAclInit);
- $module = new Ahmes_Mnp($tblAcl, $korespAcl, $_GET);
- $module->run();
- }
- class Ahmes_Mnp {
- private $_args = null;
- private $_tbl = null;
- private $_acl = null;
- private $_zasobID = null;
- private $_dataSource = null;
- private $_htmlID = '';
- public function __construct($tblAcl, $korespAcl, $args) {
- $this->_args = $args;
- $this->_tbl = $tblAcl->getName();
- $this->_acl = $tblAcl;
- $this->_korespAcl = $korespAcl;
- $this->_zasobID = $tblAcl->getID();
- Lib::loadClass('Data_Source');
- $this->_dataSource = new Data_Source($tblAcl->getDB());
- $this->_dataSource->setTable($tblAcl->getName());
- $realFieldList = $tblAcl->getRealFieldList();
- $this->_dataSource->setCols($realFieldList);
- $this->_dataSource->setColTypes($tblAcl->getTypes());
- $this->_dataSource->setVirtualCols($tblAcl->getVirtualFieldList());
- $this->_dataSource->setFieldGroupWrite('A_ADM_COMPANY', $tblAcl->hasFieldType('A_ADM_COMPANY'));
- $this->_dataSource->setFieldGroupRead('A_CLASSIFIED', $tblAcl->hasFieldType('A_CLASSIFIED'));
- $this->_dataSource->setAccessFltrAllowed(!$tblAcl->hasSuperAccessPerms());
- $this->_htmlID = 'Ahmes_Mnp';
- $adminFields = array('A_RECORD_CREATE_DATE', 'A_RECORD_CREATE_AUTHOR', 'A_RECORD_UPDATE_DATE', 'A_RECORD_UPDATE_AUTHOR');
- foreach ($adminFields as $vAdmFld) {
- if (!in_array($vAdmFld, $realFieldList) && $tblAcl->hasFieldType($vAdmFld)) {
- $this->_dataSource->addCol($vAdmFld);
- }
- }
- }
- public function run() {
- Lib::loadClass('SE_Layout');
- SE_Layout::menu();
- $task = V::get('task', '', $this->_args);
- switch ($task) {
- case 'create_koresp_out':
- $id_mnp = V::get('id_mnp', '', $this->_args);
- if (!$id_mnp) {
- echo '<div class="alert alert-danger">' . "Brak numeru z dziennika pism!" . '</div>';
- } else {
- $this->taskCreateKorespOut($id_mnp);
- }
- break;
- default:
- echo '<div class="alert alert-danger">' . "Brak zadania do wykonania!" . '</div>';
- }
- }
- private function renderError($msg) {
- echo '<div class="alert alert-danger">' . $msg . '</div>';
- }
- private function getMnp($id_mnp) {
- $db = DB::getDB();
- if (!$db) return false;
- $mnp = $db->get_by_id('MNP', $id_mnp);
- return $mnp;
- }
- private function checkMnp($mnp) {
- return true;
- }
- private function taskCreateKorespOut($id_mnp) {
- $mnp = $this->getMnp($id_mnp);
- if (!$mnp) {
- $this->renderError("Brak dostępu do mnp lub rekord nie istnieje");
- return;
- }
- if (!$this->checkMnp($mnp)) {
- $this->renderError("Mnp nie może zostać użyty");
- return;
- }
- if ('1' == V::get('frm_sent', '', $_POST)) {
- $frmSaved = $this->saveCreateKorespOutForm($mnp, $_POST);
- if ($frmSaved) return;
- }
- $this->renderCreateKorespOutForm($mnp);
- }
- public function renderCreateKorespOutForm($mnp) {
- $DBG = ('1' == V::get('DBG', '', $_REQUEST));
- $forceFilterInit = array();
- foreach ($this->_args as $k => $v) {
- if (strlen($k) > 4 && substr($k, 0, 3) == 'ff_' && !empty($v)) {// force filter prefix
- $fldName = substr($k, 3);
- $forceFilterInit[$fldName] = $v;
- }
- }
- $forceFilterInit['K_TYP_KORESP'] = 'OUT';
- $forceFilterInit['K_DATA_OTRZYMANEJ_KORESP'] = date('Y-m-d');
- $forceFilterInit['K_OD_KOGO'] = $mnp->Klient_name;
- $forceFilterInit['OD_KOGO_ADRES'] = $mnp->Klient_address;
- $fieldsList = $this->_korespAcl->getFields();
- $fieldsList = array_filter($fieldsList, function($vCol) {
- return ($vCol['name'] != 'ID');
- });
- $fieldsList = array_map(function($vCol) {
- $vCol['label'] = (!empty($vCol['label']))? $vCol['label'] : $vCol['name'];
- return $vCol;
- }, $fieldsList);
- $cols = array();
- foreach ($fieldsList as $kID => $vCol) {
- $defaultValue = '';
- if (!empty($forceFilterInit[$vCol['name']])) {
- $defaultValue = $forceFilterInit[$vCol['name']];
- }
- // TODO: read from session cache
- $cols[$kID] = V::get("f{$kID}", $defaultValue, $_POST);
- }
- $mnpFldsList = $this->_acl->getFields();
- $mnpFldsList = array_filter($mnpFldsList, function($fld) {
- $mnpFldsName = array();
- $mnpFldsName[] = 'ID';
- $mnpFldsName[] = 'DataZgloszenia';
- $mnpFldsName[] = 'dla_kogo';
- $mnpFldsName[] = 'Klient_name';
- $mnpFldsName[] = 'Klient_address';
- $mnpFldsName[] = 'Klient_mail';
- $mnpFldsName[] = 'Klient_tel';
- $mnpFldsName[] = 'data_real';
- $mnpFldsName[] = 'uwagi';
- if (in_array($fld['name'], $mnpFldsName)) {
- return true;
- }
- return false;
- });
- Lib::loadClass('SE_Layout');
- ?>
- <div class="container AjaxFrmHorizontalEdit">
- <form class="form-horizontal" action="" method="post">
- <input type="hidden" name="frm_sent" value="1">
- <fieldset>
- <legend>Dodaj korespondencję na podstawie MNP nr <?php echo $mnp->ID; ?></legend>
- <blockquote>
- <?php foreach ($mnpFldsList as $fldId => $vFld) : ?>
- <p><small><b><?php echo $vFld['label']; ?>: </b> <?php echo $mnp->{$vFld['name']}; ?></small></p>
- <?php endforeach; ?>
- </blockquote>
- <?php $tabindex = 0; foreach ($fieldsList as $kID => $vCol) : ?>
- <?php if ($this->_korespAcl->isAllowed($kID, 'C')) : ?>
- <div class="form-group">
- <label class="col-sm-3 control-label" for="<?php echo "f{$kID}"; ?>"><?php echo $vCol['label']; ?>
- <i class="glyphicon glyphicon-info-sign frm-help" data-toggle="popover" data-trigger="hover" title="" data-content="<?php echo htmlspecialchars($vCol['opis']); ?>" data-original-title="<?php echo "[{$kID}] {$vCol['name']}"; ?>"></i>
- <?php $perms = $this->_korespAcl->getFieldPerms($kID); SE_Layout::hotKeyDBG($perms); ?>
- </label>
- <div class="col-sm-9">
- <?php
- $fieldParams = array('appendBack'=>true, 'tabindex'=>(++$tabindex), 'maxGrid'=>8);
- echo $this->_korespAcl->showFormItem('C', $kID, "f{$kID}", $cols[$kID], $fieldParams);
- ?>
- </div>
- </div>
- <?php endif; ?>
- <?php endforeach; ?>
- <div class="form-group">
- <div class="col-sm-9 col-sm-offset-3">
- <button type="submit" class="btn btn-primary" tabindex="<?php echo (++$tabindex); ?>">Dodaj rekord</button>
- </div>
- </div>
- </fieldset>
- </form>
- </div>
- <script>
- jQuery(document).ready(function(){
- jQuery('textarea').autosize();
- jQuery('.frm-help').popover({trigger:'hover'});
- });
- </script>
- <?php
- }
- public function saveCreateKorespOutForm($mnp, $args) {
- $DBG = ('1' == V::get('DBG', '', $_REQUEST));
- if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TODO: save('.$mnp->ID.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($args);echo'</pre>';}
- if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">acl (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($this->_korespAcl);echo'</pre>';}
- $dbID = $this->_korespAcl->getDB();
- $db = DB::getDB($dbID);
- if (!$db) return false;
- $tblName = $this->_korespAcl->getName();
- $sqlObj = new stdClass();
- $fields = $this->_korespAcl->getFields();
- if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">fields (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($fields);echo'</pre>';}
- foreach ($fields as $kID => $vField) {
- if (!$this->_korespAcl->isAllowed($kID, 'C')) {
- continue;
- }
- if (array_key_exists("f{$kID}", $args)) {
- $sqlObj->{$vField['name']} = $args["f{$kID}"];
- if (empty($args["f{$kID}"]) && strlen($args["f{$kID}"]) == 0) {// fix bug in input type date and value="0000-00-00"
- $sqlObj->{$vField['name']} = $this->_korespAcl->fixEmptyValueFromUser($kID);
- }
- }
- }
- if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlObj);echo'</pre>';}
- $retID = $db->ADD_NEW_OBJ($tblName, $sqlObj);
- if ($retID > 0) {
- ?>
- <div class="alert alert-success">
- Utworzono pomyślnie rekord Nr <?php echo $retID; ?>
- </div>
- <?php
- return true;
- }
- ?>
- <div class="alert alert-danger">
- Wystąpił błąd podczas tworzenia rekordu
- <?php
- if ($db->has_errors()) {
- $outArr = array();
- $errorsSql = $db->get_errors();
- foreach ($errorsSql as $vErr) {
- if (substr($vErr, 0, 18) == 'SQL QUERY FAILED: ') {
- $vErr = substr($vErr, 18);
- // Duplicate entry '123456-1' for key 'P_NIP'
- if (substr($vErr, 0, 16) == 'Duplicate entry ') {
- }
- }
- $outArr[] = $vErr;
- }
- echo implode('<br>', $outArr);
- }
- ?>
- </div>
- <?php
- return false;
- }
- public function ___sendAjaxCreateSave($args) {
- header("Content-type: application/json");
- $DBG = ('1' == V::get('DBG', '', $_REQUEST));
- sleep(1);// TODO: RMME DBG loading
- if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">TODO: save ID(' . $id . ') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($args);echo'</pre>';}
- if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">acl (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($this->_acl);echo'</pre>';}
- $dbID = $this->_acl->getDB();
- $db = DB::getDB($dbID);
- if (!$db) {
- header('HTTP/1.0 406 Not Acceptable');
- echo '{"type":"ERROR", "msg": "' . "Błąd połączenia z bazą danych!" . '"}';
- exit;
- }
- $tblName = $this->_acl->getName();
- $sqlObj = new stdClass();
- $fields = $this->_acl->getFields();
- if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">fields (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($fields);echo'</pre>';}
- foreach ($fields as $kID => $vField) {
- if (!$this->_acl->isAllowed($kID, 'C')) {
- continue;
- }
- if (array_key_exists("f{$kID}", $args)) {
- $sqlObj->{$vField['name']} = $args["f{$kID}"];
- if (empty($args["f{$kID}"]) && strlen($args["f{$kID}"]) == 0) {// fix bug in input type date and value="0000-00-00"
- $sqlObj->{$vField['name']} = $this->_acl->fixEmptyValueFromUser($kID);
- }
- }
- }
- if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlObj);echo'</pre>';}
- $retID = $db->ADD_NEW_OBJ($tblName, $sqlObj);
- $retJson = new stdClass();
- $retJson->type = '';
- $retJson->msg = '';
- if ($retID > 0) {
- $retJson->type = 'SUCCESS';
- $retJson->msg = "Utworzono pomyślnie rekord: ID = {$retID}";
- $retJson->id = $retID;
- } else {
- header('HTTP/1.0 404 Not Found');
- $retJson->type = 'ERROR';
- $retJson->msg = "";
- if ($db->has_errors()) {
- $outArr = array();
- $errorsSql = $db->get_errors();
- foreach ($errorsSql as $vErr) {
- if (substr($vErr, 0, 18) == 'SQL QUERY FAILED: ') {
- $vErr = substr($vErr, 18);
- // Duplicate entry '123456-1' for key 'P_NIP'
- if (substr($vErr, 0, 16) == 'Duplicate entry ') {
- }
- }
- $outArr[] = $vErr;
- }
- $retJson->msg .= implode('<br>', $outArr);
- }
- }
- echo json_encode($retJson);
- exit;
- }
- }
|