progress.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <?php
  2. date_default_timezone_set("Australia/Hobart");
  3. //error_reporting(E_ERROR | E_PARSE);
  4. error_reporting(E_ALL);
  5. ini_set('display_errors', '0');
  6. ini_set('log_errors', '1');
  7. require_once 'connection.php';
  8. include_once "vendor/autoload.php";
  9. $accessToken = 'pat-na1-64db9489-15fe-461d-b64c-941c4d80ba8a';
  10. $enquiry_date = date("l dS M \'y");
  11. $drg = isset($_GET['drg']) ? $_GET['drg'] : '';
  12. if (!empty($_GET['drg'])) {
  13. include "table.php";
  14. }
  15. ?>
  16. <!doctype html>
  17. <html lang="en">
  18. <head>
  19. <meta charset="utf-8">
  20. <meta name="viewport" content="width=device-width, initial-scale=1">
  21. <title>Client Payment Plan</title>
  22. <link rel="shortcut icon" href="images/blueprint.ico" type="image/x-icon">
  23. <link href="https://modulosdesign.com.au/internal/css/bootstrap.css" rel="stylesheet">
  24. <link href="https://modulosdesign.com.au/internal/css/blueprint.css" rel="stylesheet">
  25. <link href="https://modulosdesign.com.au/internal/css/print.css" rel="stylesheet" media="print">
  26. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">
  27. <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
  28. <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  29. <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
  30. <script type="text/javascript" src="https://use.fontawesome.com/1e2844bb90.js"></script>
  31. <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin="anonymous"></script>
  32. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-throttle-debounce/1.1/jquery.ba-throttle-debounce.min.js" integrity="sha512-JZSo0h5TONFYmyLMqp8k4oPhuo6yNk9mHM+FY50aBjpypfofqtEWsAgRDQm94ImLCzSaHeqNvYuD9382CEn2zw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  33. </head>
  34. <body>
  35. <nav class="navbar bg-brown-dark brown-light border-bottom border-body d-print-none" data-bs-theme="dark">
  36. <div class="container-fluid">
  37. <a class="navbar-brand brown-light" href="#">
  38. <img src="images/blueprint-logo-light.png" alt="Logo" width="30" height="24" class="d-inline-block align-text-top">
  39. Modulos Design
  40. </a>
  41. </div>
  42. </nav>
  43. <div class="container">
  44. <div class="row pt-2">
  45. <div class="col-sm-4 col-md-4 pt-3">
  46. <img class="img-fluid logo pt-2" src="images/blueprint-full-logo-medium.png" alt="Blueprint Studio">
  47. </div>
  48. <div class="col-sm-4 col-md-4 m-auto text-center">
  49. <h3 class="architect text-center">Job: <?php echo $drg; ?></h3>
  50. </div>
  51. <div class="col-sm-4 col-md-4 text-end pt-3">
  52. <h2 class="fw-bold text-end mb-1">Client Onboarding Form</h2>
  53. <h4 class="text-end mb-1">
  54. <span class="fw-bold brown-two"><?php echo $enquiry_date; ?></span>
  55. </h4>
  56. </div>
  57. </div>
  58. <div class="row">
  59. <div class="col-12">
  60. <div class="row ">
  61. <div class="col ">
  62. <h4 class="fw-bold">Client Details</h4>
  63. </div>
  64. </div>
  65. <div class="mb-1">
  66. <div class="row ">
  67. <div class="col-6 col-md-3">
  68. <label for="firstname" class="form-label form-label-sm p-0 m-0">Clients Name</label>
  69. <input type="text" class="form-control form-control-sm savable-text-field architect brown-four" name="firstname" id="firstname" tabindex="1" value="<?php echo $firstname; ?>" placeholder="First Name" autocomplete="given-name">
  70. </div>
  71. <div class="col-6 col-md-3">
  72. <label for="lastname" class="form-label form-label-sm p-0 m-0"></label>
  73. <input type="text" class="form-control form-control-sm savable-text-field architect brown-four" name="lastname" id="lastname" tabindex="2" value="<?php echo $lastname; ?>" placeholder="Last Name" autocomplete="family-name">
  74. </div>
  75. <div class="col-12 col-md-6">
  76. <label for="joint_name" class="form-label form-label-sm p-0 m-0">T/As - Joint Names</label>
  77. <input type="text" class="form-control form-control-sm savable-text-field architect brown-three" name="joint_name" id="joint_name" value="<?php echo $joint_name; ?>" tabindex="3">
  78. </div>
  79. </div>
  80. </div>
  81. <div class="mb-1">
  82. <label for="postal_address" class="form-label form-label-sm p-0 m-0">Clients Postal Address</label>
  83. <input type="text" class="form-control form-control-sm fw-bold savable-text-field architect brown-three map-autocomplete" id="postal_address" name="postal_address" value="<?php echo $postal_address; ?>" onFocus="geolocate(this)" tabindex="4" autocomplete="on">
  84. </div>
  85. <div class="mb-1">
  86. <div class="row ">
  87. <div class="col-md-6">
  88. <label for="phoneNumber" class="form-label form-label-sm p-0 m-0">Clients Mobile</label>
  89. <input type="phone" class="form-control form-control-sm savable-text-field architect brown-three" minlength="12" id="phoneNumber" name="client_mobile" value="<?php echo $client_mobile; ?>" required onkeyup="check(); return false;" tabindex="5" autocomplete="tel">
  90. </div>
  91. <div class="col-md-6">
  92. <label for="client_email" class="form-label form-label-sm p-0 m-0">Email address</label>
  93. <input type="email" class="form-control form-control-sm savable-text-field architect brown-three" name="client_email" id="client_email" value="<?php echo $client_email; ?>" tabindex="6" autocomplete="email">
  94. </div>
  95. </div>
  96. </div>
  97. </div>
  98. <div class="row mt-3">
  99. <div class="col-md-2">Item</div>
  100. <div class="col-md-7">Description</div>
  101. <div class="col">Price</div>
  102. </div>
  103. <hr>
  104. <?php
  105. $checkRecord = mysqli_query($con, "SELECT * FROM `progress_payments` WHERE `drg` = '{$drg}' " );
  106. $rowcount = mysqli_num_rows($checkRecord);
  107. $result = mysqli_query($con, "SELECT *, @curRow := @curRow + 1 AS position FROM `progress_payments` JOIN (SELECT @curRow := 0) r WHERE `drg` = '{$drg}' ");
  108. if (!$result) {
  109. printf("Error: %s\n", mysqli_error($con));
  110. exit();
  111. }
  112. while ($row = mysqli_fetch_array($result)) {
  113. echo "<div class='mb-1 row justify-content-start'>";
  114. echo "<label for='description' class='col-1 col-form-label'>" . $row['position'] . "</label>";
  115. echo "<input type='hidden' id='progress' v-model='progress' value='" . $row['position'] . "'>";
  116. echo "<div class='col-sm-7'>";
  117. echo "<input type='text' class='form-control' id='description' v-model='description' value='" . $row['description'] . "' disabled>";
  118. echo "</div>";
  119. echo "<div class='col-sm-2'>";
  120. echo "<input type='text' class='form-control' id='paid' v-model='paid' value='" . $row['paid'] . "' disabled>";
  121. echo "</div>";
  122. echo "<div class='col-sm-2'>";
  123. echo "<input type='currency' class='form-control' id='value' v-model='value' value='" . $row['value'] . "' disabled>";
  124. echo "</div>";
  125. echo "</div>";
  126. }
  127. ?>
  128. <div id="progress_payments">
  129. </div>
  130. <div class="row justify-content-end">
  131. <div class="">
  132. <button id="btn" class="btn btn-sm btn-block bg-brown-three brown-five col-3">Add Item</button>
  133. </div>
  134. </div>
  135. </div>
  136. </div>
  137. <script>
  138. var count= <?php echo $rowcount + 1; ?>;
  139. $("#btn").click(function(){
  140. $("#progress_payments").append(addNewRow(count));
  141. count++;
  142. });
  143. function addNewRow(count){
  144. var newrow='<div class="mb-1 row justify-content-start">'+
  145. '<label for="description" class="col-1 col-form-label">'+count+'</label>'+
  146. '<input type="hidden" id="progress" v-model="progress" value="+count+">'+
  147. '<div class="col-sm-9">'+
  148. '<input type="text" class="form-control" id="description" v-model="description">'+
  149. '</div>'+
  150. '<div class="col-sm-2">'+
  151. '<input type="currency" class="form-control" id="value" v-model="value">'+
  152. '</div>'+
  153. '</div>';
  154. return newrow;
  155. }
  156. var currencyInput = document.querySelector('input[type="currency"]')
  157. var currency = 'AUD' // https://www.currency-iso.org/dam/downloads/lists/list_one.xml
  158. // format inital value
  159. onBlur({target:currencyInput})
  160. // bind event listeners
  161. currencyInput.addEventListener('focus', onFocus)
  162. currencyInput.addEventListener('blur', onBlur)
  163. function localStringToNumber( s ){
  164. return Number(String(s).replace(/[^0-9.,-]+/g,""))
  165. }
  166. function onFocus(e){
  167. var value = e.target.value;
  168. e.target.value = value ? localStringToNumber(value) : ''
  169. }
  170. function onBlur(e){
  171. var value = e.target.value
  172. var options = {
  173. maximumFractionDigits : 2,
  174. currency : currency,
  175. style : "currency",
  176. currencyDisplay : "symbol"
  177. }
  178. e.target.value = (value || value === 0)
  179. ? localStringToNumber(value).toLocaleString(undefined, options)
  180. : ''
  181. }
  182. </script>
  183. <hr>
  184. <footer class="footer">
  185. <p class="text-center">&copy; <?php echo date('Y'); ?> - Modulos Design</p>
  186. </footer>
  187. <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-HwwvtgBNo3bZJJLYd8oVXjrBZt8cqVSpeBNS5n7C8IVInixGAoxmnlMuBnhbgrkm" crossorigin="anonymous"></script>
  188. <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB-QceOYrDe9otynMmQ9iNF3yEZzbpsanM&libraries=places&callback=initAutocomplete" async defer></script>
  189. <script src="https://cdn.jsdelivr.net/npm/signature_pad@4.0.0/dist/signature_pad.umd.min.js"></script>
  190. <script src="js/signature.js" ></script>
  191. <script async defer src="https://apis.google.com/js/api.js" onload="gapiLoaded()"></script>
  192. <script async defer src="https://accounts.google.com/gsi/client" onload="gisLoaded()"></script>
  193. </body>
  194. </html>