accounting_entries.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. header("Access-Control-Allow-Origin: *");
  3. header("Content-Type: application/json; charset=UTF-8");
  4. header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
  5. header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
  6. if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
  7. exit(0);
  8. }
  9. require_once __DIR__ . '/../config/database.php';
  10. require_once __DIR__ . '/../models/AccountingEntry.php';
  11. $database = new Database();
  12. $db = $database->getConnection();
  13. $entry = new AccountingEntry($db);
  14. $request_method = $_SERVER['REQUEST_METHOD'];
  15. switch($request_method) {
  16. case 'GET':
  17. if(isset($_GET['id'])) {
  18. $entry->id = $_GET['id'];
  19. $entry->readOne();
  20. if($entry->description != null) {
  21. $entry_arr = array(
  22. "id" => $entry->id,
  23. "entry_date" => $entry->entry_date,
  24. "description" => $entry->description,
  25. "entry_type" => $entry->entry_type,
  26. "category" => $entry->category,
  27. "tax_free_amount" => $entry->tax_free_amount,
  28. "vat_percentage" => $entry->vat_percentage,
  29. "vat_25_5" => $entry->vat_25_5,
  30. "vat_14" => $entry->vat_14,
  31. "vat_10" => $entry->vat_10,
  32. "total_amount" => $entry->total_amount,
  33. "net_amount" => $entry->net_amount,
  34. "vat_amount" => $entry->vat_amount,
  35. "reference_number" => $entry->reference_number,
  36. "entry_type_badge" => $entry->getEntryTypeBadge(),
  37. "entry_type_name" => $entry->getEntryTypeName()
  38. );
  39. http_response_code(200);
  40. echo json_encode($entry_arr);
  41. } else {
  42. http_response_code(404);
  43. echo json_encode(array("message" => "Entry not found."));
  44. }
  45. } else {
  46. // Handle date range filtering
  47. if(isset($_GET['start_date']) && isset($_GET['end_date'])) {
  48. $stmt = $entry->getByDateRange($_GET['start_date'], $_GET['end_date']);
  49. } else {
  50. $stmt = $entry->read();
  51. }
  52. $num = $stmt->rowCount();
  53. if($num > 0) {
  54. $entries_arr = array();
  55. $entries_arr["records"] = array();
  56. while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  57. $entry_item = array(
  58. "id" => $row['id'],
  59. "entry_date" => $row['entry_date'],
  60. "description" => $row['description'],
  61. "entry_type" => $row['entry_type'],
  62. "category" => $row['category'],
  63. "tax_free_amount" => $row['tax_free_amount'],
  64. "vat_percentage" => $row['vat_percentage'],
  65. "vat_25_5" => $row['vat_25_5'],
  66. "vat_14" => $row['vat_14'],
  67. "vat_10" => $row['vat_10'],
  68. "total_amount" => $row['total_amount'],
  69. "net_amount" => $row['net_amount'],
  70. "vat_amount" => $row['vat_amount'],
  71. "reference_number" => $row['reference_number'],
  72. "entry_type_badge" => $entry->getEntryTypeBadge($row['entry_type']),
  73. "entry_type_name" => $entry->getEntryTypeName($row['entry_type'])
  74. );
  75. array_push($entries_arr["records"], $entry_item);
  76. }
  77. http_response_code(200);
  78. echo json_encode($entries_arr);
  79. } else {
  80. http_response_code(200);
  81. echo json_encode(array("records" => array()));
  82. }
  83. }
  84. break;
  85. case 'POST':
  86. $data = json_decode(file_get_contents("php://input"));
  87. if(!empty($data->description) && !empty($data->entry_type)) {
  88. $entry->entry_date = $data->entry_date ?? date('Y-m-d');
  89. $entry->description = $data->description;
  90. $entry->entry_type = $data->entry_type;
  91. $entry->category = $data->category ?? '';
  92. $entry->tax_free_amount = $data->tax_free_amount ?? 0;
  93. $entry->vat_percentage = $data->vat_percentage ?? 0;
  94. $entry->vat_25_5 = $data->vat_25_5 ?? 0;
  95. $entry->vat_14 = $data->vat_14 ?? 0;
  96. $entry->vat_10 = $data->vat_10 ?? 0;
  97. $entry->total_amount = $data->total_amount ?? 0;
  98. $entry->net_amount = $data->net_amount ?? 0;
  99. $entry->vat_amount = $data->vat_amount ?? 0;
  100. $entry->reference_number = $data->reference_number ?? '';
  101. if($entry->create()) {
  102. http_response_code(201);
  103. echo json_encode(array("message" => "Entry was created."));
  104. } else {
  105. http_response_code(503);
  106. echo json_encode(array("message" => "Unable to create entry."));
  107. }
  108. } else {
  109. http_response_code(400);
  110. echo json_encode(array("message" => "Unable to create entry. Data is incomplete."));
  111. }
  112. break;
  113. case 'PUT':
  114. $data = json_decode(file_get_contents("php://input"));
  115. if(!empty($data->id) && !empty($data->description) && !empty($data->entry_type)) {
  116. $entry->id = $data->id;
  117. $entry->entry_date = $data->entry_date ?? date('Y-m-d');
  118. $entry->description = $data->description;
  119. $entry->entry_type = $data->entry_type;
  120. $entry->category = $data->category ?? '';
  121. $entry->tax_free_amount = $data->tax_free_amount ?? 0;
  122. $entry->vat_percentage = $data->vat_percentage ?? 0;
  123. $entry->vat_25_5 = $data->vat_25_5 ?? 0;
  124. $entry->vat_14 = $data->vat_14 ?? 0;
  125. $entry->vat_10 = $data->vat_10 ?? 0;
  126. $entry->total_amount = $data->total_amount ?? 0;
  127. $entry->net_amount = $data->net_amount ?? 0;
  128. $entry->vat_amount = $data->vat_amount ?? 0;
  129. $entry->reference_number = $data->reference_number ?? '';
  130. if($entry->update()) {
  131. http_response_code(200);
  132. echo json_encode(array("message" => "Entry was updated."));
  133. } else {
  134. http_response_code(503);
  135. echo json_encode(array("message" => "Unable to update entry."));
  136. }
  137. } else {
  138. http_response_code(400);
  139. echo json_encode(array("message" => "Unable to update entry. Data is incomplete."));
  140. }
  141. break;
  142. case 'DELETE':
  143. if(isset($_GET['id'])) {
  144. $entry->id = $_GET['id'];
  145. if($entry->delete()) {
  146. http_response_code(200);
  147. echo json_encode(array("message" => "Entry was deleted."));
  148. } else {
  149. http_response_code(503);
  150. echo json_encode(array("message" => "Unable to delete entry."));
  151. }
  152. } else {
  153. http_response_code(400);
  154. echo json_encode(array("message" => "Unable to delete entry. ID is missing."));
  155. }
  156. break;
  157. default:
  158. http_response_code(405);
  159. echo json_encode(array("message" => "Method not allowed."));
  160. break;
  161. }
  162. ?>