diff --git a/app/Controllers/Invoice.php b/app/Controllers/Invoice.php index 2f0b6b36..1e826af3 100644 --- a/app/Controllers/Invoice.php +++ b/app/Controllers/Invoice.php @@ -291,15 +291,33 @@ class Invoice extends BaseController 'created_by' =>get_logged_user_id(), 'is_renew' => $renewal ]; - + if ($invoice_status == 'Draft') { $get_subscription_draft_dtl_where = ['S.customer_id'=>$customer_id,'I.status'=>$invoice_status]; // $get_subscription_draft_dtl_id = $model->InactiveSubscriptionDraftDetails($get_subscription_draft_dtl_where,get_logged_user_id()); // $this->logger->info($msg_flag_name.": has been Inactived. Inv ID = ".implode(", ", $get_subscription_draft_dtl_id)); $get_subscription_draft_dtl_id = $model->deleteSubscriptionDraftDetails($get_subscription_draft_dtl_where,get_logged_user_id()); $this->logger->info($msg_flag_name.": has been Deleted. Inv ID = ".implode(", ", $get_subscription_draft_dtl_id)); - $subscriptionModel->insertSubscriptionData($subscription_data); + // $subscriptionModel->insertSubscriptionData($subscription_data); + } + else{ + // Check if there is a draft entry for the customer_id and scheme_id + $get_subscription_draft_dtl_where = [ + 'S.customer_id' => $customer_id, + 'S.scheme_id' => $scheme_id, // Assuming scheme_id is available here + 'I.status' => 'Draft' + ]; + + $get_subscription_draft_dtl_id = $model->deleteSubscriptionDraftDetails($get_subscription_draft_dtl_where, get_logged_user_id()); + + $this->logger->info($msg_flag_name . ": Draft entry has been deleted. Inv ID = " . implode(", ", $get_subscription_draft_dtl_id)); + + // Now insert the new entry + } } + $subscriptionModel->insertSubscriptionData($subscription_data); + } + ## Notification For Approve.. $this->logger->info($msg_flag_name.": ID = " . $invoice_id.", Status =".$invoice_status); @@ -735,18 +753,21 @@ $encodedUrl = urlencode($url); $toDate = $dateParts[1]; // Update date conversion format using the global namespace - $fromDate = \DateTime::createFromFormat('d/m/Y', $fromDate)->format('Y-m-d'); - $toDate = \DateTime::createFromFormat('d/m/Y', $toDate)->format('Y-m-d'); - + $fromDate = \DateTime::createFromFormat('d/m/Y', $dateParts[0])->format('Y-m-d'); + $toDate = \DateTime::createFromFormat('d/m/Y', $dateParts[1])->format('Y-m-d'); + // Debugging statements for date range - var_dump($fromDate, $toDate); + // var_dump($fromDate, $toDate);die; $data['report_data'] = $model->get_general_invoice_data($fromDate, $toDate); - $data['selected_data'] = $this->request->getVar('date'); + $data['selected_data'] = ($this->request->getVar('date')) ? $this->request->getVar('date') : ''; + // var_dump( $data['selected_data']);die; + } + // Debugging statement for report data - // var_dump($data['report_data']); + // print_r($data['selected_data']);die; $data['page_name'] = 'Sales Report'; $this->render_page('report_general_invoice', $data); @@ -786,7 +807,7 @@ $encodedUrl = urlencode($url); { $model = new InvoiceModel(); $data['expired_customers'] = $model->getExpiredCustomers(); - + $data['selected_data'] = ""; $this->logger->info("'Membership Renewals Report'"); $data['page_name'] = 'Membership Renewals Report'; $this->render_page('report_expired_customers', $data); @@ -797,10 +818,11 @@ $encodedUrl = urlencode($url); $fromDate = $dateParts[0]; $toDate = $dateParts[1]; - $dateTime = \DateTime::createFromFormat('m/d/Y', $fromDate); - $dateTime1 = \DateTime::createFromFormat('m/d/Y', $toDate); + $dateTime = \DateTime::createFromFormat('d/m/Y', $fromDate); + $dateTime1 = \DateTime::createFromFormat('d/m/Y', $toDate); $model = new InvoiceModel(); $data['expired_customers'] = $model->getExpiredCustomers( $dateTime->format('Y-m-d') , $dateTime1->format('Y-m-d') ); + $data['selected_data'] = $this->request->getVar('date'); $this->logger->info("Itemwise Report "); $this->logger->info("'Membership Renewals Report'"); $data['page_name'] = 'Membership Renewals Report'; @@ -808,33 +830,85 @@ $encodedUrl = urlencode($url); } } - public function itemwise_report() - { - if($this->request->getmethod() == 'get') - { +public function itemwise_report() +{ + if ($this->request->getmethod() == 'get') + { + $model = new InvoiceModel(); + $data['report_data'] = $model->itemwise_report_data(); + $this->logger->info("Itemwise Report "); + $data['page_name'] = 'Bookswise Report'; + $this->render_page('report_itemwise', $data); + } + else + { + if ($this->request->getPost('export_csv')) { + // Handle CSV export + $this->exportCsv(); + } else { + // Handle date range filter + + $model = new InvoiceModel(); $data['report_data'] = $model->itemwise_report_data(); $this->logger->info("Itemwise Report "); - $data['page_name'] = 'Bookswise Report'; - $this->render_page('report_itemwise', $data); - } - else - { - $dateParts = explode(' - ', $this->request->getVar('date') ); - $fromDate = $dateParts[0]; - $toDate = $dateParts[1]; - - $dateTime = \DateTime::createFromFormat('m/d/Y', $fromDate); - $dateTime1 = \DateTime::createFromFormat('m/d/Y', $toDate); - $model = new InvoiceModel(); - $data['report_data'] = $model->itemwise_report_data( $dateTime->format('Y-m-d') , $dateTime1->format('Y-m-d') ); - $this->logger->info("Itemwise Report "); $data['page_name'] = 'Bookswise Report'; - $data['selected_data'] = $this->request->getVar('date'); + $this->exportCsv(); $this->render_page('report_itemwise', $data); } - } +} + +private function exportCsv() +{ + $model = new InvoiceModel(); + $reportData = $model->itemwise_report_data(); + + $csvFileName = 'itemwise_report.csv'; + + // Set appropriate headers for CSV download + header('Content-Type: text/csv; charset=UTF-8'); + header('Content-Disposition: attachment; filename="' . $csvFileName . '"'); + header('Pragma: no-cache'); + header('Expires: 0'); + + // Open a PHP output stream for writing CSV data + $output = fopen('php://output', 'w'); + + // Add UTF-8 BOM to the CSV file + fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF)); + + // Write the CSV headers + fputcsv($output, ['Publisher Code', 'Book Name', 'Item Count', 'Total Cost']); + + // Write the CSV data + foreach ($reportData as $row) { + foreach ($row->books as $book) { + $rowData = [ + $row->publisher_code, + $book->book_name, + $book->item_count, + $book->total_cost, + ]; + + // Convert each field to UTF-8 using iconv + $rowData = array_map(function ($field) { + return iconv('UTF-8', 'UTF-8//IGNORE', $field); + }, $rowData); + + fputcsv($output, $rowData); + } + } + + // Close the PHP output stream + fclose($output); + + // Terminate the script to prevent further output + exit(); +} + + + private function calculateTotalBookQuantity(&$reportData) { // Calculate the total book quantity for each publisher @@ -849,8 +923,9 @@ $encodedUrl = urlencode($url); { $model = new InvoiceModel(); $data['report_data'] = $model->itemwise_report_data_with_publish_code(); + $data['selected_data'] = ""; $this->logger->info("Itemwise Report "); - $data['page_name'] = 'Bookswise Report'; + $data['page_name'] = 'Books Published'; // print_r($data);die; $this->render_page('report_book_publish', $data); } @@ -858,14 +933,14 @@ $encodedUrl = urlencode($url); { $dateParts = explode(' - ', $this->request->getVar('date') ); $fromDate = $dateParts[0]; - $toDate = $dateParts[1]; - - $dateTime = \DateTime::createFromFormat('m/d/Y', $fromDate); - $dateTime1 = \DateTime::createFromFormat('m/d/Y', $toDate); + + $toDate = $dateParts[1]; + $dateTime = \DateTime::createFromFormat('d/m/Y', $fromDate); + $dateTime1 = \DateTime::createFromFormat('d/m/Y', $toDate); $model = new InvoiceModel(); $data['report_data'] = $model->itemwise_report_data_with_publish_code( $dateTime->format('Y-m-d') , $dateTime1->format('Y-m-d') ); $this->logger->info("Itemwise Report "); - $data['page_name'] = 'Bookswise Report'; + $data['page_name'] = 'Books Published'; $data['selected_data'] = $this->request->getVar('date'); $this->render_page('report_book_publish', $data); } diff --git a/app/Models/InvoiceModel.php b/app/Models/InvoiceModel.php index f4f91763..140ab62c 100644 --- a/app/Models/InvoiceModel.php +++ b/app/Models/InvoiceModel.php @@ -399,25 +399,24 @@ public function get_mem_invoice_data($f_date = null, $t_date = null) // return $result; // } -public function itemwise_report_data($f_date = null, $t_date = null) +public function itemwise_report_data() { // Fetch invoice data $query = $this->db->table('invoice') ->select('books.publishers_code, COUNT(invoiceitems.product) as publisher_item_count, books.title as book_name, COUNT(invoiceitems.product) as item_count, SUM(invoiceitems.quantity * invoiceitems.unit_price) as total_cost') ->where('invoice.isactive', 1) + ->where('invoice.invoice_type',1) ->where('books.isactive', 1); // Add date range filter if provided - if ($f_date !== null && $t_date !== null) { - $query->where('invoice.invoice_date >=', $f_date) - ->where('invoice.invoice_date <=', $t_date); - } + $result = $query->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id', 'left') ->join('books', 'books.book_id = invoiceitems.product', 'left') ->groupBy('books.publishers_code, books.title') ->get() ->getResult(); + // print_r($result); // Group by publisher_code and include books $groupedResult = []; diff --git a/app/Views/customer_form.php b/app/Views/customer_form.php index 0f5356a9..eb41b5f5 100644 --- a/app/Views/customer_form.php +++ b/app/Views/customer_form.php @@ -272,10 +272,12 @@
- subscription_in_days; - $fromDateTime = (new DateTime($subscription->from_subscription))->format('Y-m-d'); - $toDateTime = (new DateTime($subscription->to_subscription))->format('Y-m-d'); + $fromDateTime = (new DateTime($subscription->formatted_from_subscription))->format('Y-m-d'); + $toDateTime = (new DateTime($subscription->formatted_from_subscription))->format('Y-m-d'); $currentDate = (new DateTime())->format('Y-m-d'); if ($currentDate === $toDateTime) { $class = 'text-danger'; diff --git a/app/Views/dashboard.php b/app/Views/dashboard.php index 5171f9d8..b3150fe2 100644 --- a/app/Views/dashboard.php +++ b/app/Views/dashboard.php @@ -1,49 +1,5 @@ - +Total Subscriber
+| id | +id | Book Name | Author | Cost | Published By | Inv Date | -
|---|---|---|---|---|---|---|
| title; ?> | +invoice_id; ?> | title; ?> | publisher; ?> | price ?> | publishers_code?> | invoice_date ?> | -