| Current Path : /var/www/cesa.co.za/php/templates/ |
| Current File : /var/www/cesa.co.za/php/templates/msd-questionnaire.php |
<?php
if (session_id() == "")
session_start(); // Initialize Session data
require_once($_SERVER['DOCUMENT_ROOT'] . "/php/includes/ADQAudit.php");
$sTable = "";
if (isset($_GET["forprev"]))
$sTable = "ADQFirms_Prev ";
$adqAuditObj = new ADQAudit($sqlf);
$adqAuditObj->checkAudit($ADQFirmID);
$adqAuditObj->checkAuditScore($ADQFirmID);
if (strlen($ADQFirmID) <= 0) {
$ADQFirmID = '0';
}
$sql = "SELECT " . $sTable . "ADQFirms.*, tblMemberFirms.FirmName, tblMemberFirms.DateJoined, "
. "ADecQuestionnaires.*, ADQAudit.*, MAX(ADQAuditID) AS ADQAuditID, MIN(ADQAudit.ADQAuditID) AS FirstADQAuditID, "
. "(SELECT COUNT(*) AS AnswerCount FROM ADQAnswers WHERE ADQFirmID=" . $ADQFirmID . ") AS AnswerCount "
. "FROM " . $sTable . "ADQFirms "
. "JOIN ADecQuestionnaires USING (ADQID) "
. "JOIN tblMemberFirms USING (FirmID) "
. "LEFT JOIN ADQAudit USING (ADQFirmID) "
. "WHERE ADQFirmID=" . $ADQFirmID;
// echo $sql . '<br />';
$rec = mysqli_query($conni, $sql);
if ($rec) {
$row = mysqli_fetch_assoc($rec);
} else {
$row = array();
}
if (count($row) > 0 && $row["ADQFirmID"] > 0) {
$MemberFirmID = $row["FirmID"];
$QID = $row["ADQID"];
$DeclarationYear = $row['AuditYear'];
$iRefCols = 2;
if ($QID == 3)
$iRefCols = 1;
$sHTMLExportFile = ADQAudit::getFileName($row['FirmName'], $row['ADQID']);
$sql = "SELECT * FROM ADQAudit WHERE ADQAuditID=" . $row["ADQAuditID"] . ' ORDER BY DateUpdated DESC';
// echo $sql . '<br />';
$recAudit = mysqli_query($conni, $sql);
if ($recAudit) {
$rowAudit = mysqli_fetch_assoc($recAudit);
} else {
$rowAudit = array();
}
ob_start();
?>
<style>
.adecqtable tr td {
border: 1px solid #333333;
/* border-width:0px 1px 0px 1px; */
padding: 5px !important;
}
.adecqtable tr {
page-break-after: auto;
page-break-before: auto;
page-break-inside: avoid;
}
</style>
<?php
if ($pdf <= 0) {
?>
<div class="printhide">
<table align="center" border="0" cellpadding="4" cellspacing="0" width="100%">
<tr>
<td align="left" valign="top" width="25%">
<p class="printhide"><a href="rptADecQuestionnaires.php?id=<?php echo $QID; ?>&auditYear=<?php echo $row['AuditYear']; ?>">Return to Report</a></p>
<p class="printhide"><a href="exportpdf.php?from=<?php echo $sHTMLExportFile; ?>&to=<?php echo $sHTMLExportFile; ?>&o=landscape" target="_blank">Export to PDF</a></p>
<p class="printhide">You are logged in and interacting with this review as user name: <?php echo CurrentUserName(); ?></p>
</td>
<td align="left" valign="top" width="25%">
<input type="button" value="Usefull Links" id="btnUsefullLinks" onclick="$('#usefulLinks').dialog('open'); return false;" />
<div id="usefulLinks" class="ChangeAnswerDialog" title="Useful Links">
<h3>
Useful Links:
</h3>
<ul>
<li>
<a href="https://view.officeapps.live.com/op/view.aspx?src=https%3A%2F%2Fwww.cesa.co.za%2Fuploads%2F20201114_-_CESA_MSD_Procedure_-_Final_draft.docx&wdOrigin=BROWSELINK"
target="_blank">Procedure: CESA Management System Declarations (MSDs)</a>
</li>
</ul>
<?php
if ($row['ADQID'] == 1) {
//FIMS
?>
<p>
The declaration below consists of a number of questions used to evaluate the level of system development of a member firm’s Integrity Management System and is based on the following guidelines:
</p>
<ul>
<li>
<a href="https://www.dropbox.com/scl/fo/ig3gfuql2norkyykndfy9/h/_Integrity%20Management%20System%20%28FIMS%29%20Guidelines%201st%20Ed%20%282011%29%20Part1.pdf?rlkey=2qhukdmqa3jw0j0t3c9838qzi&dl=0"
target="_blank">FIDIC Guidelines for Integrity Management in the Consulting Industry Part I – Policies and Principles 1st Edition 2011</a>
</li>
<li>
<a href="https://www.dropbox.com/scl/fo/ig3gfuql2norkyykndfy9/h/_Guidelines%20for%20Integrity%20Management%20System%20in%20the%20Consulting%20Industry%201st%20Ed%20%282015%29%20Part%202.pdf?rlkey=2qhukdmqa3jw0j0t3c9838qzi&dl=0"
target="_blank">FIDIC Guidelines for Integrity Management in the Consulting Industry Part II – FIMS Procedures 1st Edition 2015</a>
</li>
</ul>
<?php
} elseif ($row['ADQID'] == 2) {
//QMS
?>
<p>
The declaration below consists of a number of questions used to evaluate the level of system development of a member firm’s Quality Management System and is based on the following guidelines:
</p>
<ul>
<li>
<a href="https://www.dropbox.com/scl/fo/ig3gfuql2norkyykndfy9/h/_Quality%20Management%20Guide%202nd%20Ed%20%282001%29.pdf?rlkey=2qhukdmqa3jw0j0t3c9838qzi&dl=0"
target="_blank">FIDIC Guide to Quality Management in the Consulting Engineering Industry (copyright 2001)</a>
</li>
<li>
<a href="https://www.dropbox.com/scl/fo/ig3gfuql2norkyykndfy9/h/_ISO%209001_2015%20Interpretation%20Guide%201st%20Ed%20%282017%29.pdf?rlkey=2qhukdmqa3jw0j0t3c9838qzi&dl=0"
target="_blank">FIDIC Guide to the interpretation and application of the ISO9001:2015 standard for the Consulting Engineering Industry (copyright 2017)</a>
</li>
<li>
<a href="https://www.cesa.co.za/wp-content/uploads/2022/01/20220126-QMIG-with-cover.pdf"
target="_blank">Quality Management Implementation Guideline (QMIG)</a>
</li>
<li>
<a href="https://www.cesa.co.za/wp-content/uploads/2022/01/20220126-RMIG-with-cover.pdf"
target="_blank">CESA Risk Management Implementation Guideline (RMIG)</a>
</li>
</ul>
<?php
} elseif ($row['ADQID'] == 3) {
//PSM
?>
<p>
The declaration below consists of a number of questions used to evaluate the level of system development of a member firm’s Project Sustainability Management System and is based on the
following guidelines:
</p>
<ul>
<li>
<a href="https://www.dropbox.com/scl/fo/ig3gfuql2norkyykndfy9/h/_Project%20Sustainability%20Management%20-%20Applications%20Manual%20-%202nd%20edition%202013.pdf?rlkey=2qhukdmqa3jw0j0t3c9838qzi&dl=0"
target="_blank">FIDIC Project Sustainability Management Applications Manual Second Edition 2013</a>
</li>
</ul>
<?php
}
?>
</div>
</td>
</tr>
</table>
</div>
<?php
}
?>
<h1><?php echo $row["QuestionnaireName"]; ?></h1>
<h2><?php echo $row["FirmName"]; ?></h2>
<?php
if (!empty($row["DateJoined"]) && strtotime($row["DateJoined"]) > 0) {
$dateJoined = new DateTime($row["DateJoined"]);
?>
<h3>Date Joined: <?php echo $dateJoined->format('d-m-Y'); ?></h3>
<?php
} else {
?>
Date Joined: Not Captured
<?php
}
?>
<?php
if (!empty($row["DateCompleted"])) {
?>
<h3>MSD Submitted on <?php echo date("Y-m-d", strtotime($row["DateCompleted"])); ?><?php if (!empty($row["ScorePerc"])) { ?>
, Score: <?php echo $row["ScorePerc"]; ?>%
<?php
}
if ($rowAudit && count($rowAudit) > 0) {
?>, Verified on <?php echo date("Y-m-d", strtotime($rowAudit["DateUpdated"])); ?>
<?php
if (!empty($row["AuditScorePerc"])) {
?>, Verified Score: <?php echo $row["AuditScorePerc"]; ?>%
<?php
} else {
?>, Verified Score Not Captured
<?php
}
}
?>, Answers: <?php echo ADQFirms::answerCountIndicator($row["AnswerCount"]); ?>
</h3>
<?php
}
$adqFirm = $row;
$adqAudit = $rowAudit;
$Questionnaire_ID = $QID;
include($_SERVER['DOCUMENT_ROOT'] . '/php/templates/msd-review-popup.php');
if (isset($_POST["go"]) && ($_POST["go"] == "Audit")) {
?>
<div class="printhide ewMessage" style="border:1px solid black">
<p><b>Review responses saved.</b></p>
</div>
<?php
}
$sql = "SELECT * FROM ADQAudit JOIN ADQFirms USING (ADQFirmID) "
. "WHERE ADQFirms.ADQID=" . $QID . " "
. "AND ADQFirms.FirmID=" . $MemberFirmID . " "
. "AND ADQFirms.ADQFirmID = " . $ADQFirmID . " ORDER BY ADQAudit.DateUpdated DESC";
// echo $sql . '<br />';
$bLockAuditAnswers = false;
$bAuditStarted = false;
$recAudit = mysqli_query($conni, $sql);
if ($rowAudit = mysqli_fetch_assoc($recAudit)) {
$bAuditStarted = true;
if (($rowAudit["Verified"] == "Y") || ($rowAudit["Verified"] == "C"))
$bLockAuditAnswers = true;
}
mysqli_free_result($recAudit);
$arrFileQs = array(71, 73, 91);
$sql = "SELECT ADQuestions.ADQuestionID, ADQAnswers.* FROM ADQuestions JOIN " . $sTable . "ADQFirms USING (ADQID) "
. "LEFT JOIN ADQAnswers USING (ADQFirmID, ADQuestionID) "
. "WHERE ADQFirms.ADQID=" . $QID . " AND ADQFirms.FirmID=" . $MemberFirmID . " AND ADQFirms.ADQFirmID = " . $ADQFirmID;
// echo $sql . '<br />';
$recExist = mysqli_query($conni, $sql);
while ($rowExist = mysqli_fetch_assoc($recExist)) {
if (in_array($rowExist["ADQuestionID"], $arrFileQs)) {
$arrExist["Ques" . $rowExist["ADQuestionID"]] = "<a href='uploads/" . $rowExist["Answer"] . "' target='_blank'>" . $rowExist["Answer"] . "</a>";
} else {
$arrExist["Ques" . $rowExist["ADQuestionID"]] = $rowExist["Answer"];
}
$arrExist["Evidence" . $rowExist["ADQuestionID"]] = $rowExist["Evidence"];
$arrExist["Justification" . $rowExist["ADQuestionID"]] = $rowExist["Justification"];
$arrExist["ReviewerChangedAnswer" . $rowExist["ADQuestionID"]] = $rowExist["ReviewerChangedAnswer"];
}
?>
<form method="post" action="rptADQFirm.php">
<input type="hidden" name="go" value="Audit">
<input type="hidden" id="ADQFirmID" name="ADQFirmID" value="<?php echo $ADQFirmID; ?>">
<input type="hidden" id="ADQAuditID" name="ADQAuditID" value="<?php echo $row["ADQAuditID"]; ?>">
<table border="1" cellspacing="0" cellpadding="5" width="100%" class="adecqtable">
<?php
$sql = "SELECT * FROM ADQSections WHERE ADQID=" . $QID;
$sql .= " ORDER BY SectionNum";
// echo $sql . '<br />';
$recS = mysqli_query($conni, $sql);
$iNumSections = 0;
$bHeadingsShown = false;
$firstAnswer = null;
while ($rowS = mysqli_fetch_assoc($recS)) {
$iNumSections++;
if (!$bHeadingsShown) {
$bHeadingsShown = true;
?>
<tr>
<td><b>No.</b></td>
<td><b>Ref1</b></td><?php if ($iRefCols > 1) { ?><td><b>Ref2</b></td><?php } ?><td width="40%"><b>Declaration</b></td>
<td colspan="5"><b>Level of System Development</b></td>
</tr>
<tr>
<td colspan="<?php echo 2 + $iRefCols; ?>">
<p>
Please consult the '<strong>Procedure: CESA Management System Declarations (MSDs)</strong>'
for guidance on how to complete the Management System Declaration.
<a href="https://www.cesa.co.za/uploads/20201114_-_CESA_MSD_Procedure_-_Final_draft_CC_DL_review.pdf" target="_blank">Click here</a>
to view the Procedure.
</p>
</td>
<td><b>Answer</b></td>
<td><b>If yes, have evidence for verification</b></td>
<td><b>If NA, give justification</b></td>
<td><b>Review</b></td>
</tr>
<?php
}
$sql = "SELECT * FROM ADQuestions WHERE ADQID=" . $QID . " AND SectionNum=" . $rowS["SectionNum"] . " ORDER BY QuestionNum";
// echo $sql . '<br />';
$recQ = mysqli_query($conni, $sql);
while ($rowQ = mysqli_fetch_assoc($recQ)) {
if (isset($_POST["go"]) && ($_POST["go"] == "Audit")) {
$sql = "REPLACE INTO ADQAuditAnswers (ADQQuestionID, ADQFirmID, DateUpdated, UpdatedBy, Comments, Verified)
VALUES (" . intval($rowQ["ADQuestionID"]) . ", " . intval($_POST["ADQFirmID"]) . ", NOW(), '" . CurrentUserName() . "', '" . addslashes($_POST["Comments_" . $rowQ["ADQuestionID"]]) . "', "
. "'" . addslashes($_POST["Verified_" . $rowQ["ADQuestionID"]]) . "')";
mysqli_query($conni, $sql);
if (mysqli_affected_rows($conni) <= 0 || mysqli_errno($conni) > 0) {
maill(
'cesa-msds@igotafrica.com',
'Error on Audit answer insert: ' . $rowQ["ADQuestionID"],
'Error ' . print_r(mysqli_error_list($conni), true),
null,
[
'from-name' => 'CESA MSDS',
'from-address' => 'info@cesa.co.za',
'reply-to-address' => 'info@cesa.co.za',
]
);
}
}
if ($iNumSections < mysqli_num_rows($recS)) {
if (is_null($firstAnswer) && $rowS["SectionNum"] == 1) {
if ($arrExist["Ques" . $rowQ["ADQuestionID"]] == '') {
$arrExist["Ques" . $rowQ["ADQuestionID"]] = 'No';
}
$firstAnswer = $arrExist["Ques" . $rowQ["ADQuestionID"]];
// echo $rowQ["ADQuestionID"];
}
// echo $rowQ["ADQuestionID"] . ': ' . $firstAnswer . ' - ' . $rowS["SectionNum"] . '<br />';
if ($rowS["SectionNum"] == 1 && ($firstAnswer == 'No' || $firstAnswer == '') && $rowQ["QuestionNum"] >= 2 && $rowQ["QuestionNum"] <= 8) {
// echo 'Continnuing section num<br />';
continue;
}
if ($firstAnswer == 'Yes' && $rowS["SectionNum"] > 1) {
// echo $rowQ["QuestionNum"] . ' Continnuing first answer is Yes<br />';
continue;
}
if ($rowS['SectionNum'] == 1) {
$rowQ["QuestionNum"] = chr(64 + $rowQ["QuestionNum"]);
}
?>
<tr>
<td valign="top"><?php echo $rowQ["QuestionNum"]; ?></td>
<td valign="top"><?php echo nl2br($rowQ["Ref1"]); ?></td>
<?php if ($iRefCols > 1) { ?>
<td valign="top"><?php echo nl2br($rowQ["Ref2"]); ?></td>
<?php } ?>
<td valign="top"><?php echo $rowQ["Question"]; ?><br><br>
<i><?php echo nl2br(str_replace("\\", "", $rowQ["Explanation"])); ?></i>
</td>
<td valign="top" align="center" <?php if (false && $arrExist["Ques" . $rowQ["ADQuestionID"]] == "No") echo " style='background-color:red;color:white'"; ?>>
<?php echo str_replace("\\", "", $arrExist["Ques" . $rowQ["ADQuestionID"]]); ?>
</td>
<td valign="top">
<?php echo str_replace("\\", "", $arrExist["Evidence" . $rowQ["ADQuestionID"]]); ?>
</td>
<td valign="top">
<?php echo str_replace("\\", "", $arrExist["Justification" . $rowQ["ADQuestionID"]]); ?>
</td>
<td>
<?php
$arrAudit = array();
$sql = "SELECT * FROM ADQAuditAnswers WHERE ADQFirmID=" . $ADQFirmID . " AND ADQQuestionID=" . $rowQ["ADQuestionID"];
// echo $sql . '<br />';
$recAudit = mysqli_query($conni, $sql);
if ($rowAudit = mysqli_fetch_assoc($recAudit)) {
$arrAudit = $rowAudit;
}
mysqli_free_result($recAudit);
if (!$bLockAuditAnswers && $pdf <= 0) {
?>
<span id="autoSaveStatus_<?php echo $rowQ["ADQuestionID"]; ?>"></span>
<input type="radio" name="Verified_<?php echo $rowQ["ADQuestionID"]; ?>"
value="" <?php if ($bAuditStarted && (!isset($arrAudit["Verified"]) || empty($arrAudit["Verified"]))) echo " checked"; ?> class="autoSave"
data-adquestionid="<?php echo $rowQ["ADQuestionID"]; ?>" data-adqauditid="<?php echo $arrAudit["ADQAuditID"]; ?>"
data-field-name="Verified">
Verification in progress / pending<br>
<input type="radio" name="Verified_<?php echo $rowQ["ADQuestionID"]; ?>"
value="Y" <?php if (isset($arrAudit["Verified"]) && ($arrAudit["Verified"] == "Y")) echo " checked"; ?> class="autoSave"
data-adquestionid="<?php echo $rowQ["ADQuestionID"]; ?>" data-adqauditid="<?php echo $arrAudit["ADQAuditID"]; ?>"
data-field-name="Verified">
Verified<br>
<input type="radio" name="Verified_<?php echo $rowQ["ADQuestionID"]; ?>"
value="C" <?php if (isset($arrAudit["Verified"]) && ($arrAudit["Verified"] == "C")) echo " checked"; ?> class="autoSave"
data-adquestionid="<?php echo $rowQ["ADQuestionID"]; ?>" data-adqauditid="<?php echo $arrAudit["ADQAuditID"]; ?>"
data-field-name="Verified">
Verified With Comments<br>
<input type="radio" name="Verified_<?php echo $rowQ["ADQuestionID"]; ?>"
value="N" <?php if (isset($arrAudit["Verified"]) && ($arrAudit["Verified"] == "N")) echo " checked"; ?> class="autoSave"
data-adquestionid="<?php echo $rowQ["ADQuestionID"]; ?>" data-adqauditid="<?php echo $arrAudit["ADQAuditID"]; ?>"
data-field-name="Verified">
Not Verified - evidence could not be demonstrated<br>
<textarea name="Comments_<?php echo $rowQ["ADQuestionID"]; ?>" placeholder="Comments" rows="10" cols="40" class="autoSave"
data-adquestionid="<?php echo $rowQ["ADQuestionID"]; ?>" data-adqauditid="<?php echo $arrAudit["ADQAuditID"]; ?>"
data-field-name="Comments"><?php echo @$arrAudit["Comments"]; ?></textarea>
<?php
$ADQuestionID = $rowQ["ADQuestionID"];
$answer = $arrExist["Ques" . $rowQ["ADQuestionID"]];
$evidence = $arrExist["Evidence" . $rowQ["ADQuestionID"]];
$justification = $arrExist["Justification" . $rowQ["ADQuestionID"]];
include($_SERVER['DOCUMENT_ROOT'] . '/php/templates/msd/change-answer-popup.php');
} else {
echo ADQAudit::getStatus($arrAudit["Verified"]);
echo "<p>" . $arrAudit["Comments"] . "</p>";
}
if (isset($arrExist["ReviewerChangedAnswer" . $rowQ["ADQuestionID"]]) && $arrExist["ReviewerChangedAnswer" . $rowQ["ADQuestionID"]] > 0) {
?>
<div class="alert alert-info">
Reviewer changed answer
</div>
<?php
}
?>
</td>
</tr>
<?php
} else {
?>
<tr>
<td colspan="<?php echo 2 + $iRefCols; ?>" valign="top"><?php echo $rowQ["Question"]; ?><br><br>
<i><?php echo nl2br($rowQ["Explanation"]); ?></i>
</td>
<td colspan="5" valign="top">
<?php echo $arrExist["Ques" . $rowQ["ADQuestionID"]]; ?>
</td>
</tr>
<?php
}
}
}
?>
</table>
<?php if (!$bLockAuditAnswers) { ?>
<input type="submit" value="Save Review" class="printhide">
<?php } ?>
</form>
<?php
$htmlexport = ob_get_flush();
file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/echasl23/pdfexport/" . $sHTMLExportFile . '.html', $sPDFHeaderHTML . $htmlexport . $sPDFFooterHTML);
} else {
/*
?>
<h3>MSD not completed yet</h3>
<?php
*
*/
}
?>
<script type="text/javascript" src="/js/msd.js"></script>