category breakdown
[contractdashboard.git] / displayCategory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<?php
include_once("./lib/common.inc.php");
if ($_REQUEST['category']) {
 
    // if UNSPSC code known show, say if is a parent and offer to include children, if child link to parent
    $query = 'SELECT key, d."UNSPSC", "Title" AS category FROM
(SELECT \'categoryUNSPSC\' AS key, "categoryUNSPSC"::TEXT AS "UNSPSC" FROM contractnotice WHERE category = :category  
UNION SELECT \'parentUNSPSC\', substr( "categoryUNSPSC"::TEXT, 0, 5 )||\'0000\'::TEXT AS "parentUNSPSC" FROM contractnotice WHERE category = :category 
UNION SELECT \'grandparentUNSPSC\', substr( "categoryUNSPSC"::TEXT, 0, 3 )||\'000000\'::TEXT AS "grandparentUNSPSC" 
FROM contractnotice WHERE category = :category ) d 
INNER JOIN (SELECT "Title", "UNSPSC" FROM "UNSPSCcategories" ) c ON c."UNSPSC"=d."UNSPSC"::INTEGER';
    $query = $conn->prepare($query);
    $query->bindParam(":category", $_REQUEST['category']);
    $query->execute();
    databaseError($conn->errorInfo());
    $unspsc = Array();
    foreach ($query->fetchAll() as $d) {
        $unspsc[$d['key']] = $d;
    }
 
 
    include_header($_REQUEST['category'] . " goods and services");
    if ($unspsc['categoryUNSPSC']) {
        echo "<center><h1>{$_REQUEST['category']} ({$unspsc['categoryUNSPSC']['UNSPSC']})</h1></center>";
 
        if ($unspsc['parentUNSPSC']['UNSPSC'] != $unspsc['categoryUNSPSC']['UNSPSC']) {
            echo "Parent Category: <a href='displayCategory.php?category={$unspsc['parentUNSPSC']['category']}'>{$unspsc['parentUNSPSC']['UNSPSC']} {$unspsc['parentUNSPSC']['category']}</a> <br/>";
        }
        if ($unspsc['grandparentUNSPSC']['UNSPSC'] != $unspsc['categoryUNSPSC']['UNSPSC']) {
            echo "Grandparent Category: <a href='displayCategory.php?category={$unspsc['grandparentUNSPSC']['category']}'>{$unspsc['grandparentUNSPSC']['UNSPSC']} {$unspsc['grandparentUNSPSC']['category']}</a></br>";
        }
 
    } else {
        echo "<center><h1>{$_REQUEST['category']}</h1></center>";
    }
 
    $query = '
    SELECT 
sum((consultancy = \'Yes\')::int) AS consultancy,
sum(("confidentialityContract" = \'Yes\')::int) AS "confidentialityContract",
sum(("confidentialityOutputs" = \'Yes\')::int) AS "confidentialityOutputs",
sum((("procurementMethod" = \'Open\' OR "procurementMethod" = \'Open tender\') AND "SONID" IS null)::int) AS open,
sum((("procurementMethod" = \'Open\' OR "procurementMethod" = \'Open tender\') AND "SONID" IS NOT null)::int) AS "openSON",
sum(("procurementMethod" = \'Prequalified tender\' OR "procurementMethod" = \'Select\')::INT) AS prequalified,
sum(("procurementMethod" = \'Direct\' OR "procurementMethod" = \'Limited tender\')::int) AS limited,
sum("value") as total_value,
COUNT(*) AS total
FROM contractnotice 
 WHERE category = :category AND ' . " $yearQ $standardQ ";
    $query = $conn->prepare($query);
    $query->bindParam(":category", $_REQUEST['category']);
    $query->execute();
    databaseError($conn->errorInfo());
 
    $stats = reset($query->fetchAll());
    show_stats($stats);
 
 
    $query = 'SELECT contractnotice."SONID", min(title) AS title, count(*), sum(value) AS value FROM contractnotice INNER JOIN standingoffers ON contractnotice."SONID" = standingoffers."SONID" 
WHERE category = :category AND ' . " $yearQ $standardQ " . 'AND contractnotice."SONID" != \'\' GROUP BY contractnotice."SONID"';
    $query = $conn->prepare($query);
    $query->bindParam(":category", $_REQUEST['category']);
    $query->execute();
    databaseError($conn->errorInfo());
    $sonrows = "";
    foreach ($query->fetchAll() as $row) {
        setlocale(LC_MONETARY, 'en_US');
        $value = number_format(doubleval($row['value']), 2);
        $sonrows .= "<tr>
    <td><B><a href=\"displaySON.php?SONID={$row['SONID']}\">{$row['title']}</a></b></td>
    <td>{$row['count']}</td>
    <td>\$$value</td>
    </tr>";
    }
    if (strlen($sonrows) > 1) {
        echo "<h3>Standing Offers/Panels</h3><table>  <thead>
    <tr>
      <th>Standing Offer</th>
      <th>Contracts Count</th>
      <th>Total Contract Value</th>
    </tr>
  </thead>$sonrows</table><br/>";
    }
 
    $query = 'SELECT SUM(value) AS value, count(*), text_mode("supplierName") "supplierName", min("supplierABN") AS "supplierABN", (
 CASE WHEN "supplierABN" != 0 THEN "supplierABN"::TEXT ELSE lower("supplierName") END) AS "supplierID"  FROM contractnotice 
WHERE ' . $yearQ . " " . $standardQ . ' AND category = :category
GROUP BY "supplierID" ORDER BY "value" DESC';
    $query = $conn->prepare($query);
    $query->bindParam(":category", $_REQUEST['category']);
    $query->execute();
    databaseError($conn->errorInfo());
    echo "<h3>Suppliers</h3><table>  <thead>
    <tr>
      <th>Supplier</th>
      <th>Contracts Count</th>
      <th>Total Contract Value</th>
    </tr>
  </thead>";
    foreach ($query->fetchAll() as $row) {
        setlocale(LC_MONETARY, 'en_US');
        $value = number_format(doubleval($row['value']), 2);
        $supplierID = $row['supplierABN'] . '-' . urlencode($row['supplierName']);
        echo("<tr>
    <td><B><a href=\"displaySupplier.php?supplier=$supplierID\" >{$row['supplierName']}</a></b></td>
    <td>{$row['count']}</td>
    <td>\$$value</td>
    </tr>");
    }
    echo "</table><br/>";
 
    $query = 'SELECT SUM("value") AS "value", count(*), "agencyName" AS agencyname FROM contractnotice 
WHERE ' . $yearQ . ' "childCN" IS NULL AND category = :category GROUP BY "agencyName" ORDER BY SUM("value") DESC';
 
    $query = $conn->prepare($query);
    $query->bindParam(":category", $_REQUEST['category']);
    $query->execute();
    databaseError($conn->errorInfo());
 
    echo "<h3>Agencies</h3><table>  <thead>
    <tr>
      <th>Agency</th>
      <th>Contracts Count</th>
      <th>Total Contract Value</th>
    </tr>
  </thead>";
    foreach ($query->fetchAll() as $row) {
        setlocale(LC_MONETARY, 'en_US');
        $value = number_format(doubleval($row['value']), 2);
        $agency =urlencode($row['agencyname']);
        echo("<tr>
    <td><B><a href=\"displayAgency.php?agency=$agency\">{$row['agencyname']}</a></b></td>
    <td>{$row['count']}</td>
    <td>\$$value</td>
    </tr>");
    }
    echo "</table><br/>";
 
 
    $query = 'SELECT "CNID", description, value, "agencyName", category, "contractStart", "supplierName"
    FROM contractnotice
    WHERE ' . $yearQ . ' "childCN" IS NULL 
    AND category = :category
    ORDER BY VALUE DESC';
    $query = $conn->prepare($query);
    $query->bindParam(":category", $_REQUEST['category']);
    $query->execute();
    databaseError($conn->errorInfo());
 
    echo "<table>  <thead>
    <tr>
      <th>Contract Notice Number</th>
      <th>Contract Description</th>
      <th>Total Contract Value</th>
      <th>Agency</th>
      <th>Contract Start Date</th>
      <th>Supplier</th>
    </tr>
  </thead>";
    foreach ($query->fetchAll() as $row) {
        setlocale(LC_MONETARY, 'en_US');
        $value = number_format(doubleval($row['value']), 2);
        echo("<tr>
    <td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td>
    <td><b>{$row['description']}</b></a></td>
    <td>\$$value</td><td>{$row['agencyName']}</td>
    <td>{$row['contractStart']}</td>
    <td>{$row['supplierName']}</td>
    </tr>");
    }
    echo "</table>";
} else {
    /*
     split by main categories
    */
    include_header("Categories");
    $query = 'SELECT sum(value), category
FROM contractnotice
WHERE ' . $yearQ . ' "childCN" IS NULL
GROUP BY CATEGORY ORDER BY sum(VALUE) DESC ';
    $query = $conn->prepare($query);
    $query->execute();
    databaseError($conn->errorInfo());
    echo "<table>  <thead>
    <tr>
      <th>Category</th>
      <th>Total Contracts Value</th>
    </tr>
  </thead>";
    foreach ($query->fetchAll() as $row) {
        setlocale(LC_MONETARY, 'en_US');
        $value = number_format(doubleval($row[0]), 2);
        echo("<tr><td><A href=\"displayCategory.php?category={$row[1]}\"><b>{$row[1]}</b></a></td><td>\$$value</td></tr>");
    }
    echo "</table>";
}
include_footer();
?>