diff --git a/app/Controllers/Invoice.php b/app/Controllers/Invoice.php index 41704c7b..9acaa8f9 100644 --- a/app/Controllers/Invoice.php +++ b/app/Controllers/Invoice.php @@ -247,6 +247,7 @@ class Invoice extends BaseController $from_sub_date = $item['from_subscription']; $to_sub_date = $item['to_subscription']; + $subscription_data = [ 'customer_id' => (int)$customer_id, 'invoice_id' => $invoice_id, @@ -257,17 +258,10 @@ class Invoice extends BaseController 'created_by' =>get_logged_user_id(), ]; - $subscription_where = ['scheme_id' => $product_id,'customer_id' => $customer_id,'invoice_id' => $invoice_id]; - $subscription_details = $model->getData('subscription', $subscription_where); - - if(count($subscription_details)==0){ - $subscriptionModel->insertSubscriptionData($subscription_data); - }else{ - unset($subscription_data['created_by']); - $subscription_data['updated_by'] =get_logged_user_id(); - $subscription_where = ['sub_id' => (int)$subscription_details[0]->sub_id]; - $subscriptionModel->updateData('subscription', $subscription_data, $subscription_where); - } + $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)); + $subscriptionModel->insertSubscriptionData($subscription_data); } } @@ -282,10 +276,12 @@ class Invoice extends BaseController if ($invoiceType === '2') { + $this->logger->info(session()->getFlashdata()); // If the invoice_type is 2 (subscription invoice), redirect to the subscription list. return redirect()->route('subscribers_list'); // Adjust the route name as needed. } else { // For other invoice types, redirect to the invoice list. + $this->logger->info(session()->getFlashdata()); return redirect()->route('invoice_list'); // Adjust the route name as needed. } } diff --git a/app/Controllers/Subscription.php b/app/Controllers/Subscription.php index 8419a5f5..96c18c5f 100644 --- a/app/Controllers/Subscription.php +++ b/app/Controllers/Subscription.php @@ -20,7 +20,7 @@ class Subscription extends BaseController if (!empty($session_role) && $session_role !== "sadmin") { $this->logger->info("Invoice: Listing In Admin BID = " . $session_bid); - $where = ['I.business_id' => (int)$session_bid, 'I.isactive' => 1,'I.invoice_type'=>2]; + $where = ['I.business_id' => (int)$session_bid, 'I.isactive' => 1,'I.invoice_type'=>2,'S.isactive'=>1]; } else { $this->logger->info("Invoice: Listing In the Super-Admin "); $where = ['I.business_id != ' => NULL, 'I.isactive != ' => NULL,'I.invoice_type'=>2]; diff --git a/app/Models/CustomerModel.php b/app/Models/CustomerModel.php index 042aea41..f629b500 100644 --- a/app/Models/CustomerModel.php +++ b/app/Models/CustomerModel.php @@ -102,18 +102,20 @@ class CustomerModel extends Model } public function getSubscriberDataByCustomerId($customerId) { + // Default invoice type is 2 (subscription). + $where = ['subscription.customer_id'=> $customerId,'invoice.invoice_type' => 2,'subscription.isactive' => 1]; // Assuming 'subscription' is the table name where subscriber data is stored. $builder = $this->db->table('subscription'); $builder->join('books', 'books.book_id = subscription.scheme_id'); $builder->join('invoice', 'subscription.customer_id = invoice.customer_id', 'left'); // Define the columns you want to select from the subscription table. - $builder->select('subscription.*,books.title,DATE_FORMAT(subscription.from_subscription, "%d/%m/%Y") AS formatted_from_subscription,DATE_FORMAT(subscription.to_subscription, "%d/%m/%Y") AS formatted_to_subscription'); + $builder->select('subscription.*,books.title,DATE_FORMAT(subscription.from_subscription, "%d/%m/%Y") AS formatted_from_subscription,DATE_FORMAT(subscription.to_subscription, "%d/%m/%Y") AS formatted_to_subscription,DATEDIFF(subscription.to_subscription, subscription.from_subscription) as subscription_in_days'); // Add a where condition to filter results based on customer ID. - $builder->where('subscription.customer_id', $customerId); - $builder->where('invoice.invoice_type = "2"'); // Default type is 2 (subscription). + $builder->where($where); $builder->groupBy('subscription.sub_id'); // Execute the query and return the result as an array of objects. return $builder->get()->getResult(); + print_r($this->db->getLastQuery());die; } public function saveGroupDetails($data){ diff --git a/app/Models/InvoiceModel.php b/app/Models/InvoiceModel.php index 2309c842..702707e2 100644 --- a/app/Models/InvoiceModel.php +++ b/app/Models/InvoiceModel.php @@ -44,6 +44,25 @@ public function updateData($table, $data, $where) 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') + ->whereIn('invoice_id', $inactive_invoice_ids) + ->set('isactive', 0) + ->set('updated_by', $update_by_id) + ->update(); + } + + return $inactive_invoice_ids; +} + public function getSubscriptionInvoiceDetail($where) { $result = $this->getJoinedData($where); @@ -74,8 +93,9 @@ public function updateData($table, $data, $where) ->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.invoice_number, I.customer_id,concat(C.first_name," ",C.last_name) as customer_name , 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, I.created_on, I.created_by,concat(U1.first_name," ",U1.last_name) as created_by_name, I.updated_on, I.updated_by,concat(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') + ->select('I.invoice_id, I.invoice_number, I.customer_id,concat(C.first_name," ",C.last_name) as customer_name , 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, I.created_on, I.created_by,concat(U1.first_name," ",U1.last_name) as created_by_name, I.updated_on, I.updated_by,concat(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') ->where($where) + // ->like('C.first_name',"%John%") ->orderBy('I.invoice_id', 'DESC') ->groupBy('I.invoice_id') ->get() diff --git a/app/Views/customer_form.php b/app/Views/customer_form.php index 779da50d..6e655f32 100644 --- a/app/Views/customer_form.php +++ b/app/Views/customer_form.php @@ -265,14 +265,28 @@