From a85a43f69cadea0a14252d6226428fab502942e7 Mon Sep 17 00:00:00 2001 From: Srinivas-Saravanan Date: Fri, 7 Mar 2025 16:02:22 +0530 Subject: [PATCH] FIX_INVOICE_ORDER_IN_REPORTS --- app/Models/InvoiceModel.php | 1270 ++++++++++--------- app/Views/notify_the_expiry_subscribers.php | 294 ++--- app/Views/payment_status_table.php | 16 +- app/Views/received_payments_report.php | 2 +- app/Views/report_general_invoice.php | 2 +- app/Views/report_userwise_and_eventwise.php | 98 +- 6 files changed, 848 insertions(+), 834 deletions(-) diff --git a/app/Models/InvoiceModel.php b/app/Models/InvoiceModel.php index b8e3cf20..44aaf304 100755 --- a/app/Models/InvoiceModel.php +++ b/app/Models/InvoiceModel.php @@ -1,143 +1,148 @@ -db->table('invoiceitems')->where('invoice_child_id', $id)->update($row);// Update the row with the specified id - $affectedRows = $this->db->affectedRows(); - $statement[$i] = "Invoice Item - ".$id." ".$affectedRows ? " Updated":" Not Updated"; - }else{ - if (!empty($row['updated_by'])){ - unset($row['updated_by']); // bcoz here data are inserting here. - } - $this->db->table('invoiceitems')->insert($row); - $insertID = $this->db->insertID(); - $statement[$i] = "Invoice Item - ".$insertID." Inserted"; + public function saveInvoiceItemDetails($data) + { + $i = 0; + $statement = []; + foreach ($data as $row) { + $id = isset($row['invoice_child_id']) ? $row['invoice_child_id'] : ''; + if ($id != '') { + unset($row['invoice_child_id']); // Remove the id from the data to avoid updating it + unset($row['created_by']); // bcoz here data are Updating here. + + $this->db->table('invoiceitems')->where('invoice_child_id', $id)->update($row); // Update the row with the specified id + $affectedRows = $this->db->affectedRows(); + $statement[$i] = "Invoice Item - " . $id . " " . $affectedRows ? " Updated" : " Not Updated"; + } else { + if (!empty($row['updated_by'])) { + unset($row['updated_by']); // bcoz here data are inserting here. + } + $this->db->table('invoiceitems')->insert($row); + $insertID = $this->db->insertID(); + $statement[$i] = "Invoice Item - " . $insertID . " Inserted"; + } } + return $statement; } - return $statement; -} -public function inactiveMissingInvoiceItemDetails($where,$missingValues){ - $dataToUpdate = ['isactive' => 0]; - $this->db->table('invoiceitems')->where($where)->whereIn('invoice_child_id',$missingValues)->update($dataToUpdate); -} + public function inactiveMissingInvoiceItemDetails($where, $missingValues) + { + $dataToUpdate = ['isactive' => 0]; + $this->db->table('invoiceitems')->where($where)->whereIn('invoice_child_id', $missingValues)->update($dataToUpdate); + } -public function deleteMissingInvoiceItemDetails($where, $missingValues) { - $this->db->table('invoiceitems') - ->where($where) - ->whereIn('invoice_child_id', $missingValues) - ->delete(); -} + public function deleteMissingInvoiceItemDetails($where, $missingValues) + { + $this->db->table('invoiceitems') + ->where($where) + ->whereIn('invoice_child_id', $missingValues) + ->delete(); + } -public function updateData($table, $data, $where) -{ + public function updateData($table, $data, $where) + { $this->db->table($table)->update($data, $where); $affected_rows = $this->db->affectedRows(); return $affected_rows; -} - -public function InactiveSubscriptionDraftDetails($where,$update_by_id) -{ - $result = $this->getJoinedData($where); - $inactive_invoice_ids = array(); - foreach ($result as $item) { - $inactive_invoice_ids[] = $item['invoice_id']; } - if(count($inactive_invoice_ids)>0){ - $this->db->table('subscription') + public function InactiveSubscriptionDraftDetails($where, $update_by_id) + { + $result = $this->getJoinedData($where); + $inactive_invoice_ids = array(); + foreach ($result as $item) { + $inactive_invoice_ids[] = $item['invoice_id']; + } + + if (count($inactive_invoice_ids) > 0) { + $this->db->table('subscription') ->whereIn('invoice_id', $inactive_invoice_ids) ->set('isactive', 0) ->set('updated_by', $update_by_id) ->update(); + } + + return $inactive_invoice_ids; } - return $inactive_invoice_ids; -} - -public function deleteSubscriptionDraftDetails($where,$update_by_id) -{ - $result = $this->getJoinedData($where); - $delete_invoice_ids = array(); - foreach ($result as $item) { - $delete_invoice_ids[] = $item['invoice_id']; + public function deleteSubscriptionDraftDetails($where, $update_by_id) + { + $result = $this->getJoinedData($where); + $delete_invoice_ids = array(); + foreach ($result as $item) { + $delete_invoice_ids[] = $item['invoice_id']; + } + if (count($delete_invoice_ids) > 0) { + $this->db->table('subscription') + ->whereIn('invoice_id', $delete_invoice_ids) + ->delete(); + } + return $delete_invoice_ids; } - if(count($delete_invoice_ids)>0){ - $this->db->table('subscription') - ->whereIn('invoice_id', $delete_invoice_ids) - ->delete(); - } - return $delete_invoice_ids; -} -## check the customer the scheme already Exist -public function existsSubscriptionDetails($where){ - $result = $this->getJoinedData($where); - if(count($result)>0){ - return 1; - }else{ - return 0; - } -} - -public function getSubscriptionInvoiceDetail($where) -{ - $result = $this->getJoinedData($where); - // print_r($result);die; - if (!empty($result)) { - foreach ($result as $i => $item) { - $invoiceId = $item['invoice_id']; - $schemes = []; - $invoiceItems = $this->getInvoiceItems($invoiceId, ''); - foreach ($invoiceItems as $j => $child) { - if (strtolower($child->category_name) == strtolower('Membership')) { - $schemes[] = [ - 'scheme_name' => $child->title, - 'scheme_code' => !empty($child->short_code)?$child->short_code:$child->title, - ]; - } - } - $result[$i]['scheme_name'] = !empty($schemes) ? implode(", ", array_column($schemes, 'scheme_name')) : ''; - $result[$i]['scheme_code'] = !empty($schemes) ? implode(", ", array_column($schemes, 'scheme_code')) : ''; - - $result[$i]['invoice_items_details'] = $invoiceItems; + ## check the customer the scheme already Exist + public function existsSubscriptionDetails($where) + { + $result = $this->getJoinedData($where); + if (count($result) > 0) { + return 1; + } else { + return 0; } } - return $result; -} -public function getJoinedData($where, $orderby = []) -{ - // dd($where); - $query = $this->db->table($this->table.' as I' ) - ->join('customers as C', 'C.customer_id = I.customer_id', 'left') - ->join('subscription as S', 'S.invoice_id = I.invoice_id', 'left') - ->join('events as E', 'E.event_id = I.event_id', 'left') - ->join('business as B', 'B.business_id = I.business_id', 'left') - ->join('users as U1', 'U1.user_id = I.created_by', 'left') - ->join('users as U2', 'U2.user_id = I.updated_by', 'left') - ->select('I.invoice_id,I.wp_api_order_id,I.invoice_number, I.customer_id,CONCAT_WS(" ", C.first_name, C.last_name) as customer_name ,C.mobile_no, I.invoice_date, I.due_date, I.subtotal, I.tax, I.discount, I.total_amount,I.status, I.payment_status, I.order_number, I.payment_method,I.invoice_type, I.event_id,E.event_name, I.business_id,B.title as business_name,DATE_FORMAT(I.created_on, "%d/%m/%Y") as created_on_format,I.created_on, I.created_by,CONCAT_WS(" ", U1.first_name, U1.last_name) as created_by_name,DATE_FORMAT(I.updated_on, "%d/%m/%Y") as updated_on_format, I.updated_by,CONCAT_WS(" ", U2.first_name, U2.last_name) as updated_by_name, I.isactive,C.email as customer_email,C.mobile_no as customer_mobile,I.shipping_address_id,I.shipping_address,I.billing_address_id,I.billing_address,B.address as business_address,B.city as business_city,B.state as business_state,B.postal_code as business_postal_code,B.email as business_email,B.mobile_no as business_mobile_no,S.from_subscription,S.to_subscription,DATEDIFF(S.to_subscription, S.from_subscription) as subscription_in_days,S.scheme_id,(SELECT is_renew FROM subscription as sub WHERE S.sub_id = sub.is_renew LIMIT 1) as renewed') - ->where($where); + public function getSubscriptionInvoiceDetail($where) + { + $result = $this->getJoinedData($where); + // print_r($result);die; + if (!empty($result)) { + foreach ($result as $i => $item) { + $invoiceId = $item['invoice_id']; + $schemes = []; + $invoiceItems = $this->getInvoiceItems($invoiceId, ''); + foreach ($invoiceItems as $j => $child) { + if (strtolower($child->category_name) == strtolower('Membership')) { + $schemes[] = [ + 'scheme_name' => $child->title, + 'scheme_code' => !empty($child->short_code) ? $child->short_code : $child->title, + ]; + } + } + $result[$i]['scheme_name'] = !empty($schemes) ? implode(", ", array_column($schemes, 'scheme_name')) : ''; + $result[$i]['scheme_code'] = !empty($schemes) ? implode(", ", array_column($schemes, 'scheme_code')) : ''; + + $result[$i]['invoice_items_details'] = $invoiceItems; + } + } + return $result; + } + + public function getJoinedData($where, $orderby = []) + { + // dd($where); + $query = $this->db->table($this->table . ' as I') + ->join('customers as C', 'C.customer_id = I.customer_id', 'left') + ->join('subscription as S', 'S.invoice_id = I.invoice_id', 'left') + ->join('events as E', 'E.event_id = I.event_id', 'left') + ->join('business as B', 'B.business_id = I.business_id', 'left') + ->join('users as U1', 'U1.user_id = I.created_by', 'left') + ->join('users as U2', 'U2.user_id = I.updated_by', 'left') + ->select('I.invoice_id,I.wp_api_order_id,I.invoice_number, I.customer_id,CONCAT_WS(" ", C.first_name, C.last_name) as customer_name ,C.mobile_no, I.invoice_date, I.due_date, I.subtotal, I.tax, I.discount, I.total_amount,I.status, I.payment_status, I.order_number, I.payment_method,I.invoice_type, I.event_id,E.event_name, I.business_id,B.title as business_name,DATE_FORMAT(I.created_on, "%d/%m/%Y") as created_on_format,I.created_on, I.created_by,CONCAT_WS(" ", U1.first_name, U1.last_name) as created_by_name,DATE_FORMAT(I.updated_on, "%d/%m/%Y") as updated_on_format, I.updated_by,CONCAT_WS(" ", U2.first_name, U2.last_name) as updated_by_name, I.isactive,C.email as customer_email,C.mobile_no as customer_mobile,I.shipping_address_id,I.shipping_address,I.billing_address_id,I.billing_address,B.address as business_address,B.city as business_city,B.state as business_state,B.postal_code as business_postal_code,B.email as business_email,B.mobile_no as business_mobile_no,S.from_subscription,S.to_subscription,DATEDIFF(S.to_subscription, S.from_subscription) as subscription_in_days,S.scheme_id,(SELECT is_renew FROM subscription as sub WHERE S.sub_id = sub.is_renew LIMIT 1) as renewed') + ->where($where); // if (!empty($orderby)) { // $query->orderBy($orderby[0], $orderby[1]); // } else { @@ -147,55 +152,58 @@ public function getJoinedData($where, $orderby = []) $query->orderBy('I.invoice_id', 'DESC'); // $query->groupBy('I.invoice_id'); $resultArray = $query->get()->getResultArray(); - - // Print the last executed query - //echo $this->db->getLastQuery();die; - return $resultArray; -} + // Print the last executed query + //echo $this->db->getLastQuery();die; + + return $resultArray; + } ## subscription_inactive - public function subscription_inactive(){ + public function subscription_inactive() + { $now = date('Y-m-d'); - $result = $this->db->table('subscription as S') + $result = $this->db->table('subscription as S') ->select('S.sub_id, S.scheme_id, S.customer_id, S.business_id,S.invoice_id,S.mode,S.from_subscription, S.to_subscription, S.is_renew, S.isactive') - ->where("S.isactive",1) - ->where("S.to_subscription < ",$now) + ->where("S.isactive", 1) + ->where("S.to_subscription < ", $now) ->get() ->getResultArray(); // echo "
";print_r($result);echo "
";die; - $returnMessages = [];$i = 0 ;$j = 0; + $returnMessages = []; + $i = 0; + $j = 0; if (!empty($result)) { - foreach ($result as $row) { - // $this->db->table('invoiceitems')->where(['invoice_id' => $row['invoice_id']])->update(['from_subscription' => NULL,'to_subscription' => NULL]);//first child - $this->db->table('subscription')->where(['sub_id' => $row['sub_id']])->update(['isactive' => 0]);//second child - $affectedRows = $this->db->affectedRows(); - if ($affectedRows) { - $returnMessages['message'] = "Success for sub_id: " . $row['sub_id']; - $returnMessages['success_rating'] = $i++; - }else { - $returnMessages['message'] = 'Failed to update subscription with sub_id ' . $row['sub_id'] . '. No rows were affected.'; - $returnMessages['error_rating'] = $j++; - } + foreach ($result as $row) { + // $this->db->table('invoiceitems')->where(['invoice_id' => $row['invoice_id']])->update(['from_subscription' => NULL,'to_subscription' => NULL]);//first child + $this->db->table('subscription')->where(['sub_id' => $row['sub_id']])->update(['isactive' => 0]); //second child + $affectedRows = $this->db->affectedRows(); + if ($affectedRows) { + $returnMessages['message'] = "Success for sub_id: " . $row['sub_id']; + $returnMessages['success_rating'] = $i++; + } else { + $returnMessages['message'] = 'Failed to update subscription with sub_id ' . $row['sub_id'] . '. No rows were affected.'; + $returnMessages['error_rating'] = $j++; } + } return $returnMessages; // return implode("\n", $returnMessages); } else { return "No data"; } } - + public function getDetailForApproveNotifications($where) { $result = $this->getJoinedData($where); - if(!empty($result)){ + if (!empty($result)) { foreach ($result as $object) { $invoiceId = $object['invoice_id']; - $items = $this->getInvoiceItems($invoiceId,''); + $items = $this->getInvoiceItems($invoiceId, ''); } - }else{ + } else { $items = []; } $data['invoice'] = $result; @@ -226,7 +234,7 @@ public function getJoinedData($where, $orderby = []) // // ->select(' customer_bill_country') // ->get() // ->getResult(); - + // } public function getInvoiceData($id) { @@ -239,62 +247,61 @@ public function getJoinedData($where, $orderby = []) // Fetch invoice data return $this->db->table('invoice') - ->where('invoice_id', $id) - ->join('customers as C','C.customer_id= invoice.customer_id','left') - ->join('business as B','B.business_id = invoice.business_id','left') - ->join('customer_addresses as A','A.customer_address_id=invoice.billing_address_id AND A.address_type = 1','left') - ->join('customer_addresses as S','S.customer_address_id=invoice.shipping_address_id AND S.address_type = 2','left') - ->join('states', 'states.state_short_name = A.state AND A.country = "IN"', 'left') - ->join('countries', 'countries.country_short_name = A.country', 'left') - ->select('invoice.*,DATE_FORMAT(invoice.invoice_date, "%d/%m/%Y") AS formatted_invoice_date,DATE_FORMAT(invoice.due_date, "%d/%m/%Y") AS formatted_due_date ,CONCAT_WS(" ", C.first_name, C.last_name) as customer_name,C.mobile_no,C.email,A.address_1, A.address_2,A.postal_code,A.city, A.state,C.mobile_no as customer_mobile') - ->select('B.title as company_name,B.business_logo,B.terms as company_terms,B.address as company_address,B.city as company_city,B.state as company_state,B.postal_code as company_postal_code,B.email as company_email,B.mobile_no as company_mobile_no') - ->select('COALESCE(NULLIF(states.state_name, ""), A.state) AS customer_bill_state') - ->select('COALESCE(NULLIF(states.state_name, ""), S.state) AS customer_ship_state') - ->select('CONCAT_WS(" ", A.first_name, A.last_name) as customer_biller_name,concat(A.address_1," ", A.address_2) as customer_bill_address,A.postal_code as customer_bill_postal_code ,A.city as customer_bill_city, countries.country_name as customer_bill_country,A.country as bcountry,A.state as bstate,A.customer_address_id as baddr_id,A.email as bemail,A.mobile_no as bmobile') - ->select('CONCAT_WS(" ", S.first_name, S.last_name) as customer_shipper_name,concat(S.address_1," ", S.address_2) as customer_ship_address,S.postal_code as customer_ship_postal_code ,S.city as customer_ship_city, countries.country_name as customer_ship_country,S.country as scountry,S.state as sstate,S.customer_address_id as saddr_id,S.email as semail,S.mobile_no as smobile') - ->get() - ->getResult(); - + ->where('invoice_id', $id) + ->join('customers as C', 'C.customer_id= invoice.customer_id', 'left') + ->join('business as B', 'B.business_id = invoice.business_id', 'left') + ->join('customer_addresses as A', 'A.customer_address_id=invoice.billing_address_id AND A.address_type = 1', 'left') + ->join('customer_addresses as S', 'S.customer_address_id=invoice.shipping_address_id AND S.address_type = 2', 'left') + ->join('states', 'states.state_short_name = A.state AND A.country = "IN"', 'left') + ->join('countries', 'countries.country_short_name = A.country', 'left') + ->select('invoice.*,DATE_FORMAT(invoice.invoice_date, "%d/%m/%Y") AS formatted_invoice_date,DATE_FORMAT(invoice.due_date, "%d/%m/%Y") AS formatted_due_date ,CONCAT_WS(" ", C.first_name, C.last_name) as customer_name,C.mobile_no,C.email,A.address_1, A.address_2,A.postal_code,A.city, A.state,C.mobile_no as customer_mobile') + ->select('B.title as company_name,B.business_logo,B.terms as company_terms,B.address as company_address,B.city as company_city,B.state as company_state,B.postal_code as company_postal_code,B.email as company_email,B.mobile_no as company_mobile_no') + ->select('COALESCE(NULLIF(states.state_name, ""), A.state) AS customer_bill_state') + ->select('COALESCE(NULLIF(states.state_name, ""), S.state) AS customer_ship_state') + ->select('CONCAT_WS(" ", A.first_name, A.last_name) as customer_biller_name,concat(A.address_1," ", A.address_2) as customer_bill_address,A.postal_code as customer_bill_postal_code ,A.city as customer_bill_city, countries.country_name as customer_bill_country,A.country as bcountry,A.state as bstate,A.customer_address_id as baddr_id,A.email as bemail,A.mobile_no as bmobile') + ->select('CONCAT_WS(" ", S.first_name, S.last_name) as customer_shipper_name,concat(S.address_1," ", S.address_2) as customer_ship_address,S.postal_code as customer_ship_postal_code ,S.city as customer_ship_city, countries.country_name as customer_ship_country,S.country as scountry,S.state as sstate,S.customer_address_id as saddr_id,S.email as semail,S.mobile_no as smobile') + ->get() + ->getResult(); } // this function Also Used For Approve Notification. - public function getInvoiceItems($id,$stringflag) - { + public function getInvoiceItems($id, $stringflag) + { - if ($stringflag == 'groupby') { - $select = ' B.*, GROUP_CONCAT(C.name SEPARATOR \',\') as name,invoiceitems.*'; - $group_by = 'invoiceitems.invoice_child_id'; - } else { - $select = 'invoiceitems.*, B.*, C.name as category_name'; - $group_by = ""; - } - - $data = $this->db->table('invoiceitems') - ->where(['invoice_id' => $id, 'invoiceitems.isactive' => 1]) - ->join('books as B', 'B.book_id = invoiceitems.product', 'left') - ->join('book_categories as BC', 'BC.book_id = invoiceitems.product', 'left') - ->join('category as C', 'C.id = BC.category_id', 'left') - ->select($select) - ->groupBy($group_by) // Fixed the variable name here - ->get() - ->getResult(); - //->orderBy("book_img_id", "asc") // Order by book_img_id in ascending order - //->limit(1,0) - - - // print_r($this->db->getLastQuery());die; - // print_r($data);die("ends -- here"); - return $data; + if ($stringflag == 'groupby') { + $select = ' B.*, GROUP_CONCAT(C.name SEPARATOR \',\') as name,invoiceitems.*'; + $group_by = 'invoiceitems.invoice_child_id'; + } else { + $select = 'invoiceitems.*, B.*, C.name as category_name'; + $group_by = ""; } - - public function getMembershipListForCustomer($category, $id) - { + $data = $this->db->table('invoiceitems') + ->where(['invoice_id' => $id, 'invoiceitems.isactive' => 1]) + ->join('books as B', 'B.book_id = invoiceitems.product', 'left') + ->join('book_categories as BC', 'BC.book_id = invoiceitems.product', 'left') + ->join('category as C', 'C.id = BC.category_id', 'left') + ->select($select) + ->groupBy($group_by) // Fixed the variable name here + ->get() + ->getResult(); + //->orderBy("book_img_id", "asc") // Order by book_img_id in ascending order + //->limit(1,0) + + + // print_r($this->db->getLastQuery());die; + // print_r($data);die("ends -- here"); + return $data; + } + + + public function getMembershipListForCustomer($category, $id) + { $result = $this->db->table('subscription as S') ->join('customers as C', 'C.customer_id = S.customer_id', 'left') ->join('books as BK', 'BK.book_id = S.scheme_id', 'left') ->join('book_categories as BC', 'BC.book_id = S.scheme_id', 'left') - ->join('category as CM', 'CM.id = BC.category_id', 'left') - ->join('invoice as I', 'I.invoice_id = S.invoice_id', 'left') + ->join('category as CM', 'CM.id = BC.category_id', 'left') + ->join('invoice as I', 'I.invoice_id = S.invoice_id', 'left') ->select('S.customer_id,BK.short_code,S.membership_id,S.status,I.status as invoice_status ,CONCAT_WS(" ", C.first_name, C.last_name) as customer_name, S.sub_id, S.scheme_id, DATE_FORMAT(S.from_subscription, "%d/%m/%Y") AS formatted_from_subscription, DATE_FORMAT(S.to_subscription, "%d/%m/%Y") AS formatted_to_subscription, S.from_subscription, S.to_subscription,S.isactive,S.is_renew, S.created_on, CM.name ,BK.title, BK.book_id,(SELECT is_renew FROM subscription as sub WHERE S.sub_id = sub.is_renew LIMIT 1)as renewed') ->where('LOWER(CM.name)', strtolower($category)) ->where('S.customer_id', $id) @@ -303,117 +310,89 @@ public function getJoinedData($where, $orderby = []) ->get() ->getResultArray(); return $result; - } + } - public function getProductImgs($productId) - { - $data = $this->db->table('book_images') - ->where(['book_id' => $productId,'book_images.isactive'=>1]) - // ->join('books as B', 'B.book_id = invoiceitems.product', 'left') - // ->join('book_images as BI', 'BI.book_id = invoiceitems.product', 'left') - ->select('book_images.*') - //->orderBy("book_img_id", "asc") // Order by book_img_id in ascending order - //->limit(1,0) - ->get() - ->getResult(); + public function getProductImgs($productId) + { + $data = $this->db->table('book_images') + ->where(['book_id' => $productId, 'book_images.isactive' => 1]) + // ->join('books as B', 'B.book_id = invoiceitems.product', 'left') + // ->join('book_images as BI', 'BI.book_id = invoiceitems.product', 'left') + ->select('book_images.*') + //->orderBy("book_img_id", "asc") // Order by book_img_id in ascending order + //->limit(1,0) + ->get() + ->getResult(); - // print_r($this->db->getLastQuery()); - return $data; - } - - - public function getCategoryBooks($type) - { - - - // $where = ($type == 1) ? ['LOWER(category.name) !=' => strtolower('Membership')] : ['LOWER(category.name)' => strtolower('Membership')]; - - // $data = $this->db->table('books') - // ->select('books.book_id,books.business_id,books.wp_api_product_id,books.title,books.publication_date,books.publisher,books.author,books.genre,books.language,books.description,books.short_description,books.page_count,books.price,books.isbn_code,books.tax,books.sku,books.category,books.isactive') - // ->join('book_categories', 'book_categories.book_id= books.book_id', 'left') - // ->join('category','category.id=book_categories.category_id') - // ->where($where) - // ->groupBy('books.book_id') - // ->get() - // ->getResult(); - // print_r($this->db->getLastQuery());die; - $data = $this->db->table('books') - ->select('books.book_id,books.business_id,books.wp_api_product_id,books.title,books.publication_date,books.publisher,books.author,books.genre,books.language,books.description,books.short_description,books.page_count,books.price,books.isbn_code,books.tax,books.sku,books.category,books.isactive') - ->join('book_categories', 'book_categories.book_id = books.book_id and book_categories.isactive = 1', 'left') - ->join('category', 'category.id = book_categories.category_id', 'left'); + // print_r($this->db->getLastQuery()); + return $data; + } - if ($type == 1) { - $data->where("LOWER(category.name) != 'membership' OR category.id IS NULL"); - } else { - $data->where('LOWER(category.name)', 'membership'); - } - $data = $data->groupBy('books.book_id') - ->get() - ->getResult(); + public function getCategoryBooks($type) + { - return $data; - } -public function insertupdateSubscriptionData($data,$invoice_status) -{ - if (!empty($data)) { - $invoice_id = $data['invoice_id']; - $customer_id = $data['customer_id']; - $scheme_id = $data['scheme_id']; - $data['isactive'] = $invoice_status === 'Approved' ? 1 : 0 ; - $where = ['invoice_id' => $invoice_id]; // invoice id refer with srinivasan // initally invoice id, scheme id and customer id - $query = $this->db->table('subscription')->select('sub_id')->where($where)->get()->getRow(); + // $where = ($type == 1) ? ['LOWER(category.name) !=' => strtolower('Membership')] : ['LOWER(category.name)' => strtolower('Membership')]; - if (!empty($query)) { - unset($data['created_by']); - return $this->db->table('subscription')->where('sub_id', $query->sub_id)->update($data); + // $data = $this->db->table('books') + // ->select('books.book_id,books.business_id,books.wp_api_product_id,books.title,books.publication_date,books.publisher,books.author,books.genre,books.language,books.description,books.short_description,books.page_count,books.price,books.isbn_code,books.tax,books.sku,books.category,books.isactive') + // ->join('book_categories', 'book_categories.book_id= books.book_id', 'left') + // ->join('category','category.id=book_categories.category_id') + // ->where($where) + // ->groupBy('books.book_id') + // ->get() + // ->getResult(); + // print_r($this->db->getLastQuery());die; + $data = $this->db->table('books') + ->select('books.book_id,books.business_id,books.wp_api_product_id,books.title,books.publication_date,books.publisher,books.author,books.genre,books.language,books.description,books.short_description,books.page_count,books.price,books.isbn_code,books.tax,books.sku,books.category,books.isactive') + ->join('book_categories', 'book_categories.book_id = books.book_id and book_categories.isactive = 1', 'left') + ->join('category', 'category.id = book_categories.category_id', 'left'); + + if ($type == 1) { + $data->where("LOWER(category.name) != 'membership' OR category.id IS NULL"); } else { - unset($data['updated_by']); - return $this->db->table('subscription')->insert($data); + $data->where('LOWER(category.name)', 'membership'); } - } - return false; -} -// ***********************REPORT********************** + $data = $data->groupBy('books.book_id') + ->get() + ->getResult(); -public function get_general_invoice_data($f_date = null, $t_date = null) -{ - // Fetch invoice data - $query = $this->db->table('invoice') - ->select('invoice.*,DATE_FORMAT(invoice.invoice_date, "%d/%m/%Y") AS formatted_invoice_date, customers.*, COUNT(invoiceitems.product) as item_count') - ->where('invoice.isactive', 1) - - ->where('invoiceitems.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); + return $data; } - $result = $query->join('customers', 'customers.customer_id = invoice.customer_id', 'left') - ->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id', 'left') - ->join('books', 'books.book_id = invoiceitems.product', 'left') - ->orderBy("invoice.invoice_date", "DESC") - ->groupBy('invoice.invoice_id') // Assuming invoice_id is the primary key of the invoice table - ->get() - ->getResult(); + public function insertupdateSubscriptionData($data, $invoice_status) + { + if (!empty($data)) { + $invoice_id = $data['invoice_id']; + $customer_id = $data['customer_id']; + $scheme_id = $data['scheme_id']; + $data['isactive'] = $invoice_status === 'Approved' ? 1 : 0; + $where = ['invoice_id' => $invoice_id]; // invoice id refer with srinivasan // initally invoice id, scheme id and customer id + $query = $this->db->table('subscription')->select('sub_id')->where($where)->get()->getRow(); - return $result; -} + if (!empty($query)) { + unset($data['created_by']); + return $this->db->table('subscription')->where('sub_id', $query->sub_id)->update($data); + } else { + unset($data['updated_by']); + return $this->db->table('subscription')->insert($data); + } + } + return false; + } + // ***********************REPORT********************** -public function get_mem_invoice_data($f_date = null, $t_date = null) -{ - // Fetch invoice data - $query = $this->db->table('invoice') - ->select('invoice.*, customers.*, COUNT(invoiceitems.product) as item_count,DATE_FORMAT(invoice.invoice_date, "%d/%m/%Y") AS formatted_invoice_date,subscription.from_subscription,subscription.to_subscription,DATE_FORMAT(subscription.from_subscription, "%d/%m/%Y") AS formatted_from_date,DATE_FORMAT(subscription.to_subscription, "%d/%m/%Y") AS formatted_to_date') - ->join('subscription', 'subscription.invoice_id = invoice.invoice_id', 'left') - ->where('invoice.isactive', 1) - ->where('invoice.invoice_type', 2) - ->where('invoiceitems.isactive', 1); + public function get_general_invoice_data($f_date = null, $t_date = null) + { + // Fetch invoice data + $query = $this->db->table('invoice') + ->select('invoice.*,DATE_FORMAT(invoice.invoice_date, "%d/%m/%Y") AS formatted_invoice_date, customers.*, COUNT(invoiceitems.product) as item_count') + ->where('invoice.isactive', 1) + + ->where('invoiceitems.isactive', 1); // Add date range filter if provided if ($f_date !== null && $t_date !== null) { @@ -421,415 +400,442 @@ public function get_mem_invoice_data($f_date = null, $t_date = null) ->where('invoice.invoice_date <=', $t_date); } - $result = $query->join('customers', 'customers.customer_id = invoice.customer_id', 'left') - ->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id', 'left') - ->join('books', 'books.book_id = invoiceitems.product', 'left') - ->groupBy('invoice.invoice_id') // Assuming invoice_id is the primary key of the invoice table - ->get() - ->getResult(); + $result = $query->join('customers', 'customers.customer_id = invoice.customer_id', 'left') + ->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id', 'left') + ->join('books', 'books.book_id = invoiceitems.product', 'left') + ->orderBy("invoice.invoice_date", "DESC") + ->groupBy('invoice.invoice_id') // Assuming invoice_id is the primary key of the invoice table + ->get() + ->getResult(); return $result; - -} - -// public function itemwise_report_data($f_date = null, $t_date = null) -// { -// // Fetch invoice data -// $query = $this->db->table('invoice') -// ->select('invoice.*, books.* , COUNT(invoiceitems.product) as item_count , sum(invoiceitems.product * invoiceitems.unit_price) as item_cost') -// ->where('invoice.isactive', 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.book_id') -// ->get() -// ->getResult(); - -// return $result; -// } -public function itemwise_report_data($f_date = null, $t_date = null) -{ - - // 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 ,DATE_FORMAT(books.publication_date, "%d/%m/%Y") AS book_publication_date'); - - $query->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) { - $newf_date = date("Y-m-d", strtotime($f_date)); - $newt_date = date("Y-m-d", strtotime($t_date)); - $query->where('books.publication_date >=', $newf_date) - ->where('books.publication_date <=', $newt_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 - // var_dump($result); - // die(); - $groupedResult = []; - foreach ($result as $row) { - $publisherCode = $row->publishers_code; - if (!isset($groupedResult[$publisherCode])) { - $groupedResult[$publisherCode] = (object)[ - 'publisher_code' => $publisherCode, - 'publisher_item_count' => 0, - 'publisher_total_cost' => 0, - 'books' => [], - 'book_name'=>'', - + public function get_mem_invoice_data($f_date = null, $t_date = null) + { + // Fetch invoice data + $query = $this->db->table('invoice') + ->select('invoice.*, customers.*, COUNT(invoiceitems.product) as item_count,DATE_FORMAT(invoice.invoice_date, "%d/%m/%Y") AS formatted_invoice_date,subscription.from_subscription,subscription.to_subscription,DATE_FORMAT(subscription.from_subscription, "%d/%m/%Y") AS formatted_from_date,DATE_FORMAT(subscription.to_subscription, "%d/%m/%Y") AS formatted_to_date') + ->join('subscription', 'subscription.invoice_id = invoice.invoice_id', 'left') + ->where('invoice.isactive', 1) + ->where('invoice.invoice_type', 2) + ->where('invoiceitems.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('customers', 'customers.customer_id = invoice.customer_id', 'left') + ->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id', 'left') + ->join('books', 'books.book_id = invoiceitems.product', 'left') + ->groupBy('invoice.invoice_id') // Assuming invoice_id is the primary key of the invoice table + ->get() + ->getResult(); + + return $result; + } + + // public function itemwise_report_data($f_date = null, $t_date = null) + // { + // // Fetch invoice data + // $query = $this->db->table('invoice') + // ->select('invoice.*, books.* , COUNT(invoiceitems.product) as item_count , sum(invoiceitems.product * invoiceitems.unit_price) as item_cost') + // ->where('invoice.isactive', 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.book_id') + // ->get() + // ->getResult(); + + // return $result; + // } + public function itemwise_report_data($f_date = null, $t_date = null) + { + + // 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 ,DATE_FORMAT(books.publication_date, "%d/%m/%Y") AS book_publication_date'); + + $query->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) { + $newf_date = date("Y-m-d", strtotime($f_date)); + $newt_date = date("Y-m-d", strtotime($t_date)); + $query->where('books.publication_date >=', $newf_date) + ->where('books.publication_date <=', $newt_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 + // var_dump($result); + // die(); + $groupedResult = []; + foreach ($result as $row) { + $publisherCode = $row->publishers_code; + if (!isset($groupedResult[$publisherCode])) { + $groupedResult[$publisherCode] = (object)[ + 'publisher_code' => $publisherCode, + 'publisher_item_count' => 0, + 'publisher_total_cost' => 0, + 'books' => [], + 'book_name' => '', + + ]; + } + + // Add book information to the grouped result + $groupedResult[$publisherCode]->publisher_item_count += $row->item_count; + $groupedResult[$publisherCode]->publisher_total_cost += $row->total_cost; + $groupedResult[$publisherCode]->books[] = (object)[ + 'book_name' => $row->book_name, + 'item_count' => $row->item_count, + 'total_cost' => $row->total_cost, + 'book_publication_date' => $row->book_publication_date, ]; } - // Add book information to the grouped result - $groupedResult[$publisherCode]->publisher_item_count += $row->item_count; - $groupedResult[$publisherCode]->publisher_total_cost += $row->total_cost; - $groupedResult[$publisherCode]->books[] = (object)[ - 'book_name' => $row->book_name, - 'item_count' => $row->item_count, - 'total_cost' => $row->total_cost, - 'book_publication_date' =>$row->book_publication_date, - ]; + return array_values($groupedResult); } - - return array_values($groupedResult); -} -public function getInvoiceIdByMd5($md5Hash) -{ - $result = $this->db->table($this->table) - ->select('invoice_id') - ->get() - ->getResult(); + public function getInvoiceIdByMd5($md5Hash) + { + $result = $this->db->table($this->table) + ->select('invoice_id') + ->get() + ->getResult(); - foreach ($result as $row) { - if (md5($row->invoice_id) === $md5Hash) { - return $row->invoice_id; + foreach ($result as $row) { + if (md5($row->invoice_id) === $md5Hash) { + return $row->invoice_id; + } } + + return null; } + // public function getExpiredCustomers($f_date = null, $t_date = null) + // { + // $now = date('Y-m-d'); + // $futureDate = date('Y-m-d', strtotime($now . ' +30 days')); - return null; -} -// public function getExpiredCustomers($f_date = null, $t_date = null) -// { -// $now = date('Y-m-d'); -// $futureDate = date('Y-m-d', strtotime($now . ' +30 days')); + // $query = $this->db->table('subscription as S'); // Define $query here -// $query = $this->db->table('subscription as S'); // Define $query here + // if ($f_date !== null && $t_date !== null) { + // $query->where('S.to_subscription >=', $f_date) + // ->where('S.to_subscription <=', $t_date); + // } -// if ($f_date !== null && $t_date !== null) { -// $query->where('S.to_subscription >=', $f_date) -// ->where('S.to_subscription <=', $t_date); -// } + // $result = $query + // ->select('S.customer_id,S.sub_id, S.from_subscription, S.to_subscription, C.first_name, C.last_name, C.email, C.mobile_no, S.scheme_id,B.short_code') + // ->join('customers as C', 'C.customer_id = S.customer_id', 'left') + // ->join('books as B', 'B.book_id = S.scheme_id', 'left') + // ->where('S.isactive', 1) + // ->where('S.to_subscription <', $futureDate) + // ->get() + // ->getResultArray(); + // // print_r($result); + // // echo "
";
+    //         // echo $this->db->getLastQuery();
+    //         // echo "
";die; + // echo $this->db->getLastQuery(); + // die(); -// $result = $query -// ->select('S.customer_id,S.sub_id, S.from_subscription, S.to_subscription, C.first_name, C.last_name, C.email, C.mobile_no, S.scheme_id,B.short_code') -// ->join('customers as C', 'C.customer_id = S.customer_id', 'left') -// ->join('books as B', 'B.book_id = S.scheme_id', 'left') -// ->where('S.isactive', 1) -// ->where('S.to_subscription <', $futureDate) -// ->get() -// ->getResultArray(); -// // print_r($result); -// // echo "
";
-//         // echo $this->db->getLastQuery();
-//         // echo "
";die; -// echo $this->db->getLastQuery(); -// die(); + // return $result; -// return $result; + // } + public function getExpiredCustomers($f_date = null, $t_date = null) + { + // Set timezone for accurate date calculation + date_default_timezone_set('Asia/Kolkata'); -// } -public function getExpiredCustomers($f_date = null, $t_date = null) -{ - // Set timezone for accurate date calculation - date_default_timezone_set('Asia/Kolkata'); + // Calculate the date 30 days from now + $futureDate = date('Y-m-d', strtotime('+30 days')); - // Calculate the date 30 days from now - $futureDate = date('Y-m-d', strtotime('+30 days')); + $query = $this->db->table('subscription as S'); -$query = $this->db->table('subscription as S'); + if (!empty($f_date) && !empty($t_date)) { + $query->where('S.to_subscription >=', $f_date) + ->where('S.to_subscription <=', $t_date); + } else { + $query->where('S.to_subscription >=', date('Y-m-d')) + ->where('S.to_subscription <=', $futureDate); + } -if (!empty($f_date) && !empty($t_date)) { - $query->where('S.to_subscription >=', $f_date) - ->where('S.to_subscription <=', $t_date); -} else { - $query->where('S.to_subscription >=', date('Y-m-d')) - ->where('S.to_subscription <=', $futureDate); -} + $subquery = $this->db->table('subscription as S2') + ->select('S.sub_id') + ->where('S2.customer_id = S.customer_id') + ->where('S.sub_id = S2.is_renew'); -$subquery = $this->db->table('subscription as S2') - ->select('S.sub_id') - ->where('S2.customer_id = S.customer_id') - ->where('S.sub_id = S2.is_renew'); - -$result = $query - ->select('S.customer_id, S.sub_id, S.from_subscription, S.to_subscription, + $result = $query + ->select('S.customer_id, S.sub_id, S.from_subscription, S.to_subscription, C.first_name, C.last_name, C.email, C.mobile_no, S.scheme_id, B.short_code, S.membership_id') - ->join('customers as C', 'C.customer_id = S.customer_id', 'left') - ->join('books as B', 'B.book_id = S.scheme_id', 'left') - ->where('S.isactive', 1) - ->whereNotIn('S.sub_id', $subquery) - ->orderBy('S.to_subscription', 'ASC') - ->get(); + ->join('customers as C', 'C.customer_id = S.customer_id', 'left') + ->join('books as B', 'B.book_id = S.scheme_id', 'left') + ->where('S.isactive', 1) + ->whereNotIn('S.sub_id', $subquery) + ->orderBy('S.to_subscription', 'ASC') + ->get(); - // Debugging: output the generated SQL query - // echo $this->db->getLastQuery(); - // die(); + // Debugging: output the generated SQL query + // echo $this->db->getLastQuery(); + // die(); - // Fetch results as an associative array - return $result->getResultArray(); -} -public function getActiveMembers(){ - $result = - $this->db->table('subscription as S') - ->select('S.customer_id, S.sub_id, S.from_subscription, S.to_subscription, + // Fetch results as an associative array + return $result->getResultArray(); + } + public function getActiveMembers() + { + $result = + $this->db->table('subscription as S') + ->select('S.customer_id, S.sub_id, S.from_subscription, S.to_subscription, C.first_name, C.last_name, C.email, C.mobile_no, S.scheme_id, B.short_code, S.membership_id') - ->join('customers as C', 'C.customer_id = S.customer_id', 'left') - ->join('books as B', 'B.book_id = S.scheme_id', 'left') - ->where('S.isactive', 1) - ->where('S.to_subscription>now()') - ->orderBy('S.to_subscription', 'ASC') - ->get(); - return $result->getResultArray(); - -} - -public function itemwise_report_data_with_publish_code($f_date = null, $t_date = null) -{ - // Fetch invoice data - $query = $this->db->table('invoice') - ->select('invoice.*, books.* , COUNT(invoiceitems.product) as item_count , sum(invoiceitems.product * invoiceitems.unit_price) as item_cost') - ->where('invoice.isactive', 1) - ->where('books.isactive', 1) - ->where('books.publishers_code', 'VJB'); // Additional condition for publish_code - - // 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); + ->join('customers as C', 'C.customer_id = S.customer_id', 'left') + ->join('books as B', 'B.book_id = S.scheme_id', 'left') + ->where('S.isactive', 1) + ->where('S.to_subscription>now()') + ->orderBy('S.to_subscription', 'ASC') + ->get(); + return $result->getResultArray(); } - $result = $query->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id', 'left') - ->join('books', 'books.book_id = invoiceitems.product', 'left') - ->groupBy('books.book_id') - ->get() - ->getResult(); + public function itemwise_report_data_with_publish_code($f_date = null, $t_date = null) + { + // Fetch invoice data + $query = $this->db->table('invoice') + ->select('invoice.*, books.* , COUNT(invoiceitems.product) as item_count , sum(invoiceitems.product * invoiceitems.unit_price) as item_cost') + ->where('invoice.isactive', 1) + ->where('books.isactive', 1) + ->where('books.publishers_code', 'VJB'); // Additional condition for publish_code + + // 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.book_id') + ->get() + ->getResult(); // print_r($result);die; - return $result; -} + return $result; + } -public function userwise_eventwise_report($f_date = null, $t_date = null){ - - - $builder = $this->db->table('invoice'); - - $builder->select([ - 'users.user_id', - 'users.first_name', - 'users.role', - 'events.event_name', - 'COUNT(invoice.created_by) AS books_sold', - 'ABS(SUM(invoice.exact_total_amount)) AS total_amount', - 'invoice.payment_method', - 'invoice.invoice_date' - ]); - - $builder->join('users', 'users.user_id = invoice.created_by'); - $builder->join('events', 'events.event_id = invoice.event_id'); - $builder->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id'); - $builder->join('books', 'books.book_id = invoiceitems.product'); + public function userwise_eventwise_report($f_date = null, $t_date = null) { + $builder = $this->db->table('invoice'); - $builder->where('invoice.event_id <>', 0); - if ($f_date !== null && $t_date !== null) { - $builder->where('invoice.invoice_date >=', $f_date) - ->where('invoice.invoice_date <=', $t_date); + $builder->select([ + 'users.user_id', + 'users.first_name', + 'users.role', + 'events.event_name', + 'COUNT(invoice.created_by) AS books_sold', + 'ABS(SUM(invoice.exact_total_amount)) AS total_amount', + 'invoice.payment_method', + // 'DATE(invoice.invoice_date) AS invoice_date' // Convert to DATE + 'invoice.invoice_date' + ]); + + $builder->join('users', 'users.user_id = invoice.created_by'); + $builder->join('events', 'events.event_id = invoice.event_id'); + $builder->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id'); + $builder->join('books', 'books.book_id = invoiceitems.product'); + + $builder->where('invoice.event_id <>', 0); + + if ($f_date !== null && $t_date !== null) { + $builder->where('invoice.invoice_date >=', $f_date) + ->where('invoice.invoice_date <=', $t_date); + } + + $builder->groupBy([ + 'invoice_date', + 'users.user_id', + 'events.event_name' + ]); + + // Order by the converted date + $builder->orderBy('invoice_date', 'DESC'); + + $query = $builder->get(); + + $result = $query->getResultArray(); + // dd($result); + return $result; } - $builder->groupBy([ - 'users.user_id', - 'users.first_name', - 'events.event_name', - 'payment_method' - ]); - $query = $builder->get(); + public function getPaymentReport($f_date = null, $t_date = null) + { - $results = $query->getResultArray(); - return $results; -} - -public function getPaymentReport($f_date = null, $t_date = null) -{ - - $builder = $this->db->table('invoice'); - $builder->select('invoice.invoice_number, customers.first_name, invoice.total_amount, invoice.payment_status, invoice.payment_method, invoice.invoice_date'); - $builder->join('customers', 'invoice.customer_id = customers.customer_id', 'inner'); - if ($f_date !== null && $t_date !== null) { - $builder->where('invoice.invoice_date >=', $f_date) - ->where('invoice.invoice_date <=', $t_date); + $builder = $this->db->table('invoice'); + $builder->select('invoice.invoice_number, customers.first_name, invoice.total_amount, invoice.payment_status, invoice.payment_method, invoice.invoice_date'); + $builder->join('customers', 'invoice.customer_id = customers.customer_id', 'inner'); + if ($f_date !== null && $t_date !== null) { + $builder->where('invoice.invoice_date >=', $f_date) + ->where('invoice.invoice_date <=', $t_date); + } + $builder->where('invoice.status', 'Approved'); + $query = $builder->get(); + $result1 = $query->getResultArray(); + $builder->select('payment_method, SUM(exact_total_amount) as total_amount'); + if ($f_date !== null && $t_date !== null) { + $builder->where('invoice.invoice_date >=', $f_date) + ->where('invoice.invoice_date <=', $t_date); + } + $builder->groupBy('payment_method'); + $query2 = $builder->get(); + $paymentMethodTotals = $query2->getResultArray(); + $paymentMethodMap = []; + foreach ($paymentMethodTotals as $row) { + $paymentMethodMap[$row['payment_method']] = $row['total_amount']; + } + $result2 = $paymentMethodMap; + // log_message('info',json_encode($results)); + // dd($results); + $results = [ + 'result1' => $result1, + 'result2' => $result2 + ]; + return $results; } - $builder->where('invoice.status','Approved'); - $query = $builder->get(); - $result1 = $query->getResultArray(); - $builder->select('payment_method, SUM(exact_total_amount) as total_amount'); - if ($f_date !== null && $t_date !== null) { - $builder->where('invoice.invoice_date >=', $f_date) - ->where('invoice.invoice_date <=', $t_date); - } - $builder->groupBy('payment_method'); - $query2 = $builder->get(); - $paymentMethodTotals = $query2->getResultArray(); - $paymentMethodMap = []; -foreach ($paymentMethodTotals as $row) { - $paymentMethodMap[$row['payment_method']] = $row['total_amount']; -} - $result2 = $paymentMethodMap; -// log_message('info',json_encode($results)); -// dd($results); - $results = [ - 'result1'=>$result1, - 'result2'=>$result2 - ]; - return $results; -} -public function itemwise_report_data_with_payment_method($f_date = null, $t_date = null) -{ - $builder = $this->db->table('invoice'); - $builder->select('books.publishers_code, + public function itemwise_report_data_with_payment_method($f_date = null, $t_date = null) + { + $builder = $this->db->table('invoice'); + $builder->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, invoice.payment_method, DATE_FORMAT(invoice.invoice_date, "%d-%m-%Y") AS invoice_date'); - $builder->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id', 'left'); - $builder->join('books', 'books.book_id = invoiceitems.product', 'left'); - $builder->where('invoice.isactive', 1); - $builder->where('invoice.invoice_type', 1); - $builder->where('books.isactive', 1); - if ($f_date !== null && $t_date !== null) { - $builder->where('invoice_date >=', $f_date) - ->where('invoice_date <=', $t_date); - } - $builder->groupBy(['books.publishers_code', 'books.title', 'invoice.payment_method']); - - $query = $builder->get(); - $results = $query->getResultArray(); - - $groupedResult = []; - foreach ($results as $row) { - // Use a unique key for each combination of publisher and payment method - $publisherCode = $row['publishers_code']; - $paymentMethod = $row['payment_method']; - $uniqueKey = $publisherCode . '-' . $paymentMethod; // Unique key for grouping - - // Initialize the group if it does not exist - if (!isset($groupedResult[$uniqueKey])) { - $groupedResult[$uniqueKey] = (object)[ - 'publisher_code' => $publisherCode, - 'publisher_item_count' => 0, - 'publisher_total_cost' => 0, - 'books' => [], - 'payment_method' => $paymentMethod, + $builder->join('invoiceitems', 'invoiceitems.invoice_id = invoice.invoice_id', 'left'); + $builder->join('books', 'books.book_id = invoiceitems.product', 'left'); + $builder->where('invoice.isactive', 1); + $builder->where('invoice.invoice_type', 1); + $builder->where('books.isactive', 1); + if ($f_date !== null && $t_date !== null) { + $builder->where('invoice_date >=', $f_date) + ->where('invoice_date <=', $t_date); + } + $builder->groupBy(['books.publishers_code', 'books.title', 'invoice.payment_method']); + + $query = $builder->get(); + $results = $query->getResultArray(); + + $groupedResult = []; + foreach ($results as $row) { + // Use a unique key for each combination of publisher and payment method + $publisherCode = $row['publishers_code']; + $paymentMethod = $row['payment_method']; + $uniqueKey = $publisherCode . '-' . $paymentMethod; // Unique key for grouping + + // Initialize the group if it does not exist + if (!isset($groupedResult[$uniqueKey])) { + $groupedResult[$uniqueKey] = (object)[ + 'publisher_code' => $publisherCode, + 'publisher_item_count' => 0, + 'publisher_total_cost' => 0, + 'books' => [], + 'payment_method' => $paymentMethod, + ]; + } + + // Update the group’s cumulative values + $groupedResult[$uniqueKey]->publisher_item_count += $row['publisher_item_count']; + $groupedResult[$uniqueKey]->publisher_total_cost += $row['total_cost']; + + // Add the book-specific information to the books array + $groupedResult[$uniqueKey]->books[] = (object)[ + 'book_name' => $row['book_name'], + 'item_count' => $row['item_count'], + 'total_cost' => $row['total_cost'], + 'invoice_date' => $row['invoice_date'], ]; } - - // Update the group’s cumulative values - $groupedResult[$uniqueKey]->publisher_item_count += $row['publisher_item_count']; - $groupedResult[$uniqueKey]->publisher_total_cost += $row['total_cost']; - - // Add the book-specific information to the books array - $groupedResult[$uniqueKey]->books[] = (object)[ - 'book_name' => $row['book_name'], - 'item_count' => $row['item_count'], - 'total_cost' => $row['total_cost'], - 'invoice_date' => $row['invoice_date'], - ]; + + return array_values($groupedResult); } - - return array_values($groupedResult); -} -public function updateInvoiceStatus($invoiceId, $voidReason) -{ - // Assuming 'invoices' is the name of your table - $builder = $this->db->table('invoice'); + public function updateInvoiceStatus($invoiceId, $voidReason) + { + // Assuming 'invoices' is the name of your table + $builder = $this->db->table('invoice'); - // Define the data to be updated - $data = [ - 'status' => 'Void', // Set the status to 'Void' - 'reason' => $voidReason, // Set the void reason - // You can add more fields to update here if needed - ]; + // Define the data to be updated + $data = [ + 'status' => 'Void', // Set the status to 'Void' + 'reason' => $voidReason, // Set the void reason + // You can add more fields to update here if needed + ]; - // Set the where condition to identify the invoice by its ID - $builder->where('invoice_id', $invoiceId); + // Set the where condition to identify the invoice by its ID + $builder->where('invoice_id', $invoiceId); - // Perform the update and check if successful - $updated = $builder->update($data); + // Perform the update and check if successful + $updated = $builder->update($data); - return $updated; + return $updated; + } + public function updateInvoiceCancelStatus($invoiceIds, $cancelReason) + { + // Assuming 'invoices' is the name of your table + $builder = $this->db->table('invoice'); + + // Define the data to be updated + $data = [ + 'status' => 'Cancelled', // Set the status to 'Canceled' + 'reason' => $cancelReason, // Set the cancel reason + // You can add more fields to update here if needed + ]; + + // Set the where condition to identify the invoices by their IDs + $builder->where('invoice_id', $invoiceIds); + + // Perform the update and check if successful + $updated = $builder->update($data); + + return $updated; + } + public function getActiveSchemes() + { + $builder = $this->db->table($this->table . ' as I'); + $builder->select('books.short_code'); + $builder->join('subscription', 'subscription.invoice_id = I.invoice_id'); + $builder->join('invoiceitems', 'invoiceitems.invoice_id = I.invoice_id'); + $builder->join('books', 'invoiceitems.product = books.book_id'); + $builder->groupBy('short_code'); + + $query = $builder->get(); + $results = $query->getResultArray(); + + return $results; + } } -public function updateInvoiceCancelStatus($invoiceIds, $cancelReason) -{ - // Assuming 'invoices' is the name of your table - $builder = $this->db->table('invoice'); - - // Define the data to be updated - $data = [ - 'status' => 'Cancelled', // Set the status to 'Canceled' - 'reason' => $cancelReason, // Set the cancel reason - // You can add more fields to update here if needed - ]; - - // Set the where condition to identify the invoices by their IDs - $builder->where('invoice_id', $invoiceIds); - - // Perform the update and check if successful - $updated = $builder->update($data); - - return $updated; -} -public function getActiveSchemes(){ - $builder = $this->db->table($this->table.' as I' ); - $builder->select('books.short_code'); - $builder->join('subscription','subscription.invoice_id = I.invoice_id'); - $builder->join('invoiceitems','invoiceitems.invoice_id = I.invoice_id'); - $builder->join('books','invoiceitems.product = books.book_id'); - $builder->groupBy('short_code'); - - $query = $builder->get(); - $results = $query->getResultArray(); - - return $results; -} - - - - -} - diff --git a/app/Views/notify_the_expiry_subscribers.php b/app/Views/notify_the_expiry_subscribers.php index 5f69d1fb..92152e8e 100755 --- a/app/Views/notify_the_expiry_subscribers.php +++ b/app/Views/notify_the_expiry_subscribers.php @@ -5,202 +5,208 @@

- +
- +
- +
- +

- - - + + + + + + + + + function regenerateFilters(table) { + $('#datatable-buttons thead tr:eq(1)').remove(); + $('#datatable-buttons thead tr').clone(true).appendTo('#datatable-buttons thead'); + + $('#datatable-buttons thead tr:eq(1) th').each(function(i) { + var title = $(this).text(); + var column = table.column(i); + + var uniqueValues = column.data().unique().sort(); + + var select = $('') + .appendTo($(this).empty()) + .on('change', function() { + var val = $.fn.dataTable.util.escapeRegex($(this).val()); + column + .search(val ? '^' + val + '$' : '', true, false) + .draw(); + }); + + uniqueValues.each(function(d) { + if (d) { + select.append(''); + } + }); + }); + } + \ No newline at end of file diff --git a/app/Views/payment_status_table.php b/app/Views/payment_status_table.php index 6b35e71f..3c775a68 100644 --- a/app/Views/payment_status_table.php +++ b/app/Views/payment_status_table.php @@ -6,20 +6,20 @@ SCHEME Name Date/Time ORDER ID - Payment Status + Payment Status Amount - - - - - - - + + + + + + + diff --git a/app/Views/received_payments_report.php b/app/Views/received_payments_report.php index 7a7ad1e0..9c1632ad 100644 --- a/app/Views/received_payments_report.php +++ b/app/Views/received_payments_report.php @@ -156,7 +156,7 @@ \ No newline at end of file