diff --git a/app/Http/Controllers/FormController.php b/app/Http/Controllers/FormController.php
index 57c1dda8..22695c04 100644
--- a/app/Http/Controllers/FormController.php
+++ b/app/Http/Controllers/FormController.php
@@ -63,6 +63,88 @@ class FormController extends Controller
return $formId;
}
+ protected function pobFormId() {
+ return '1791391025-cf688862-93e7-43b5-bf4e-7a29b30e3830';
+ }
+
+ protected function pobPrices() {
+ return [
+ 'asthalin_inhaler' => 129,
+ 'asthalin_rotacap' => 55,
+ 'aerocort_inhaler' => 260,
+ 'aerocort_rotacap' => 109,
+ 'aerocort_forte_rotacap' => 99,
+ ];
+ }
+
+ protected function pobWholeNumber($value) {
+ if ($value === null || $value === '') {
+ return 0;
+ }
+ if (!preg_match('/^\d+$/', trim((string) $value))) {
+ return null;
+ }
+ return (int) $value;
+ }
+
+ protected function applyPobAmounts(array $post) {
+ if (($post['form_id'] ?? '') !== $this->pobFormId()) {
+ return $post;
+ }
+ $prices = $this->pobPrices();
+ $isUpload = !empty($post['id']);
+ if (!$isUpload) {
+ $date = (string) ($post['record_date'] ?? '');
+ $today = date('Y-m-d');
+ if ($date < '2026-09-01' || $date > $today) {
+ return ['__error' => 'Date must be from 1 Sep 2026 through today.'];
+ }
+ if (empty($post['contact_id']) || !in_array($post['contact_type'] ?? '', ['ebt_doctor', 'ebt_chemist'], true)) {
+ return ['__error' => 'Select a doctor or chemist.'];
+ }
+ if (!in_array($post['supply_status'] ?? '', ['Yes', 'No'], true)) {
+ return ['__error' => 'Select the supply status.'];
+ }
+ $totalUnits = 0;
+ $totalValue = 0;
+ foreach ($prices as $code => $price) {
+ $units = $this->pobWholeNumber($post[$code.'_units'] ?? 0);
+ if ($units === null) {
+ return ['__error' => 'POB units must be a whole number.'];
+ }
+ $post[$code.'_units'] = (string) $units;
+ $post[$code.'_value'] = (string) ($units * $price);
+ $totalUnits += $units;
+ $totalValue += $units * $price;
+ }
+ $post['total_pob_units'] = (string) $totalUnits;
+ $post['total_pob_value'] = (string) $totalValue;
+ $post['submission_status'] = 'Order Taken';
+ return $post;
+ }
+ $invoice = (string) ($post['upload_invoice'] ?? '');
+ $extension = strtolower(pathinfo((string) parse_url($invoice, PHP_URL_PATH), PATHINFO_EXTENSION));
+ if ($invoice === '' || !in_array($extension, ['jpg', 'jpeg', 'png', 'pdf'], true)) {
+ return ['__error' => 'Upload an invoice as a JPG, JPEG, PNG, or PDF file.'];
+ }
+ $totalUnits = 0;
+ $totalValue = 0;
+ foreach ($prices as $code => $price) {
+ $units = $this->pobWholeNumber($post['actual_'.$code.'_units'] ?? 0);
+ if ($units === null) {
+ return ['__error' => 'Actual POB units must be a whole number.'];
+ }
+ $post['actual_'.$code.'_units'] = (string) $units;
+ $post['actual_'.$code.'_value'] = (string) ($units * $price);
+ $totalUnits += $units;
+ $totalValue += $units * $price;
+ }
+ $post['total_actual_pob_units'] = (string) $totalUnits;
+ $post['total_actual_pob_value'] = (string) $totalValue;
+ $post['submission_status'] = 'Invoice Uploaded';
+ return $post;
+ }
+
protected function deliverform($formdata, $questions, $id = false) {
$additional_info = $this->get_additional_info($formdata);
// if($formdata->form_id == '1711609582-e93dba24-9c98-43e7-b97a-b22d64d9b9fc') {
@@ -7659,6 +7741,10 @@ class FormController extends Controller
if(isset($formdata) && !empty($formdata) && $formdata->user_id != '') {
+ $post = $this->applyPobAmounts($post);
+ if (isset($post['__error'])) {
+ return response()->json(['status' => 'error', 'message' => $post['__error']]);
+ }
$post = $this->processformdata($formdata->form_id, $post, $formdata->user_id, $formdata->partition);
Log::debug(print_r($post, true));
$finfo = LambdaRequest::postrequest('form', 'formentity/submitmultipleform', ['formdata' => $post, 'entity_id' => $post['form_id'], 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
@@ -8256,6 +8342,24 @@ class FormController extends Controller
return response()->json(['form' => $history->data->form, 'questions' => $history->data->questions, 'submissions' => $history->data->submissions, 'form_id' => $form_id]);
}
+ public function pobhistory(Request $request) {
+ $formdata = $request->session()->get('formdata');
+ $formId = $request->input('form_id', '');
+ $contactId = $request->input('contact_id', '');
+ if (!$formdata || $formId !== $this->pobFormId() || $contactId === '') {
+ return response()->json(['submissions' => []]);
+ }
+ $history = LambdaRequest::postrequest('form', 'formentity/getformhistory', [
+ 'form_id' => $formId,
+ 'user_id' => $formdata->user_id,
+ 'partition' => $formdata->partition,
+ 'limit' => 100,
+ 'filters' => ['formdata.contact_id' => $contactId],
+ ]);
+ $submissions = (isset($history->data) && isset($history->data->submissions)) ? $history->data->submissions : [];
+ return response()->json(['submissions' => $submissions]);
+ }
+
public function history(Request $request) {
$formdata = $request->session()->get('formdata');
Log::debug(print_r($formdata, true));
diff --git a/resources/views/form/rapport-team3/1791391025-cf688862-93e7-43b5-bf4e-7a29b30e3830.blade.php b/resources/views/form/rapport-team3/1791391025-cf688862-93e7-43b5-bf4e-7a29b30e3830.blade.php
new file mode 100644
index 00000000..8bd79045
--- /dev/null
+++ b/resources/views/form/rapport-team3/1791391025-cf688862-93e7-43b5-bf4e-7a29b30e3830.blade.php
@@ -0,0 +1,499 @@
+
+
+
+ @include('layouts.shared/title-meta', ['title' => 'POB'])
+ @include('layouts.shared/head-css', ['mode' => $mode ?? '', 'demo' => $demo ?? ''])
+
+
+
+
+
+Loading
+
+@include('layouts.shared/footer-script')
+
+
+
+
+
diff --git a/routes/edit/web.php b/routes/edit/web.php
index 9727a891..da7fe716 100644
--- a/routes/edit/web.php
+++ b/routes/edit/web.php
@@ -236,6 +236,7 @@ foreach ($modules as $mod => $class) {
Route::any('/getidrivedoctowisedownload', [FormController::class, 'getidrivedoctowisedownload']);
Route::get('/form/nebmitrahistory', [FormController::class, 'nebmitrahistory']);
+Route::get('/form/pobhistory', [FormController::class, 'pobhistory']);
Route::post('/form/ajaxdoctortagging', [FormController::class, 'ajaxdoctortagging']);
Route::get('/form/pulmocarecoachingtool', [FormController::class, 'pulmocarecoachingtool']);
diff --git a/routes/web.php b/routes/web.php
index 2dbf5e0f..951fae50 100755
--- a/routes/web.php
+++ b/routes/web.php
@@ -303,6 +303,7 @@ Route::get('/milestones/exportTeamReport', [MilestoneController::class, 'exportT
Route::any('/getidrivedoctowisedownload', [FormController::class, 'getidrivedoctowisedownload']);
Route::get('/form/nebmitrahistory', [FormController::class, 'nebmitrahistory']);
+Route::get('/form/pobhistory', [FormController::class, 'pobhistory']);
Route::post('/form/ajaxdoctortagging', [FormController::class, 'ajaxdoctortagging']);
Route::get('/form/pulmocarecoachingtool', [FormController::class, 'pulmocarecoachingtool']);