From 4148d76e2c8b8ff6a40f86f545d2fe457469a1b1 Mon Sep 17 00:00:00 2001 From: VE10-Sanjeev Date: Tue, 25 Jun 2024 04:55:50 +0000 Subject: [PATCH] FIX_new button For Subscription : ps --- app/Config/Routes.php | 1 + app/Controllers/Invoice.php | 127 +++++++++++++++++++++++++++++++ app/Models/SubscriptionModel.php | 2 +- app/Views/invoice_form.php | 43 ++++++++--- app/Views/subscribers_list.php | 43 ++++++----- 5 files changed, 188 insertions(+), 28 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 21e63eeb..45841cba 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -119,6 +119,7 @@ $routes->get("new_book_invoice/(:any)", "Invoice::new_book_invoice/$1"); $routes->get("new_subscription_invoice/(:any)", "Invoice::new_subscription_invoice/$1"); // $routes->get("download_invoice_pdf/(:num)",'Invoice::download_invoice_pdf/$1'); $routes->get("download_invoice_pdf/(:any)", 'Invoice::download_invoice_pdf/$1'); +$routes->post('update_approval_subscription', 'Invoice::update_approval_subscription'); $routes->post("saveBook", "Invoice::saveBook"); diff --git a/app/Controllers/Invoice.php b/app/Controllers/Invoice.php index 299f67bb..352ced82 100644 --- a/app/Controllers/Invoice.php +++ b/app/Controllers/Invoice.php @@ -1149,4 +1149,131 @@ class Invoice extends BaseController // Return the response as JSON return $this->response->setJSON($response); } + + ## update approval subscription details of the invoice + public function update_approval_subscription() + { + $response = []; + ## Declarions + helper(['session', 'financial_year_helper']); + try{ + // Initialize models and variables + $model = new InvoiceModel(); + $invdate = $this->request->getVar('invoice_date'); + $invoice_status = $this->request->getPost('status'); + $invoice_id = $this->request->getPost('invoice_id'); + $customer_id = (int)$this->request->getPost('customer_name'); + $requestData = $this->request->getPost(); + $invdate_dbformat = !empty($invdate) ? \DateTime::createFromFormat('d/m/Y', $invdate)->format('Y-m-d') : null; + + $invoice_data = [ + 'invoice_number' => $requestData['invoice_number'], + 'invoice_type' => $requestData['invoice_type'], + 'customer_id' => $customer_id, + 'billing_address_id' => (int)$requestData['billing_address_id'], + 'billing_address' => $requestData['billing_address'], + 'shipping_address_id' => (int)$requestData['shipping_address_id'], + 'shipping_address' => $requestData['shipping_address'], + 'notes' => $requestData['notes'], + 'invoice_date' => $invdate_dbformat, + 'subtotal' => (float)$requestData['sub_total'], + 'tax' => (float)$requestData['invoice_tax'], + 'dis_type' => isset($requestData['dis_type'])?$requestData['dis_type']:NULL, + 'discount' => (float)$requestData['discount'], + 'exact_total_amount' => (float)$requestData['exact_total_amount'], + 'total_amount' => (int)$requestData['grand_total'], + 'payment_note' => $requestData['payment_note'], + 'event_id' => (int)$requestData['event_id'], + 'business_id' => (int)get_business_id(), + 'invoice_id' => $invoice_id, + 'updated_by' => (int)get_logged_user_id() + ]; + $invoice_where = ['customer_id' => $customer_id, 'invoice_id' => $invoice_id]; + $invoice_aff_row = $model->updateData('invoice', $invoice_data, $invoice_where); + + + if ($invoice_aff_row) { + $response['invoice']['message'] = 'Subscription Master (Invoice) Changes Updated successfully'; + $this->logger->info("Update Approval Subscription Master (Invoice) has been updated successfully. Updated ID = " . $invoice_id); + } else { + $response['invoice']['message'] = 'Subscription Master (Invoice) There Is No Changes to Updated'; + $this->logger->error("Update Approval Subscription Master (Invoice) Err Failed to update ID =" . $invoice_id); + } + + ## Invoice Line Item.. + $invoice_child_id = $requestData['invoice_child_id']; + $count = count($invoice_child_id); + if ($count > 0) { + for ($x = 0; $x < $count; $x++) { + if (!empty($requestData['item_details'][$x])) { + $invoiceitem_arr[$x]['invoice_id'] = $invoice_id; + $invoiceitem_arr[$x]['product'] = (int)$requestData['item_details'][$x]; + $invoiceitem_arr[$x]['description'] = $requestData['description'][$x]; + $invoiceitem_arr[$x]['quantity'] = (int)$requestData['quantity'][$x]; + $invoiceitem_arr[$x]['tax'] = (float)$requestData['tax'][$x]; + $invoiceitem_arr[$x]['unit_price'] = (float)$requestData['rate'][$x]; + $invoiceitem_arr[$x]['subtotal'] = (float)$requestData['amount'][$x]; + $invoiceitem_arr[$x]['discount_amount'] = (float)$requestData['discount_amount'][$x]; + $invoiceitem_arr[$x]['discount_type'] = $requestData['discount_type'][$x]; + if (!empty($requestData['from_subscription'])) { + $invoiceitem_arr[0]['from_subscription'] = \DateTime::createFromFormat('d/m/Y', $requestData['from_subscription'])->format('Y-m-d'); + } + + if (!empty($requestData['to_subscription'])) { + $invoiceitem_arr[0]['to_subscription'] = \DateTime::createFromFormat('d/m/Y', $requestData['to_subscription'])->format('Y-m-d'); + } + $invoiceitem_arr[$x]['created_by'] = (int)get_logged_user_id(); + $invoiceitem_arr[$x]['updated_by'] = (int)get_logged_user_id(); + $invoiceitem_arr[$x]['invoice_child_id'] = $invoice_child_id[$x]; + } + } + $statement = $model->saveInvoiceItemDetails($invoiceitem_arr); + $response['item']['message'] = 'Subscription Item (Invoice Item)'.implode( ',' , $statement); + $this->logger->error("Update Approval Subscription Child (1st Child) =" .implode( ',' , $statement)); + ## Subscription.. + for ($x = 0; $x < $count; $x++) { + $product_id =(int)$requestData['item_details'][$x]; + $from_sub_date = \DateTime::createFromFormat('d/m/Y', $requestData['from_subscription'])->format('Y-m-d'); + $to_sub_date = \DateTime::createFromFormat('d/m/Y', $requestData['to_subscription'])->format('Y-m-d'); + + $subscription_data = [ + 'customer_id' => $customer_id, + 'invoice_id' => $invoice_id, + 'scheme_id' => $product_id, + 'from_subscription' => $from_sub_date, + 'to_subscription' => $to_sub_date, + 'business_id' => (int)get_business_id(), + 'updated_by' => (int)get_logged_user_id() + ]; + + $subscription_where = [ + 'customer_id' => $customer_id, + 'invoice_id' => $invoice_id, + 'scheme_id' => $product_id + ]; + } + $subs_aff_row = $model->updateData('subscription', $subscription_data, $subscription_where); + if ($subs_aff_row) { + $response['subscription']['message'] = 'Subscription has been updated successfully.'; + $this->logger->info("Subscription updated successfully. ID = $invoice_id"); + } else { + $response['subscription']['message'] = 'Subscription update failed. Please try again.'; + $this->logger->error("Failed to update subscription. ID = $invoice_id"); + } + }else{ + $response['item']['message'] = 'Subscription Item (Invoice Item) There Is No Changes to Updated'; + $response['subscription']['message'] = 'Subscription There Is No Changes to Updated'; + } + $response['success'] = true; + $response['message'] = "Successfully Updation"; + } catch (\Exception $e) { + $response['success'] = false; + $response['message'] = 'Error: ' . $e->getMessage(); + $this->logger->error("Error updating subscription: " . $e->getMessage()); + } + + return $this->response->setJSON($response); + + } + } diff --git a/app/Models/SubscriptionModel.php b/app/Models/SubscriptionModel.php index f45d16e6..b86061e6 100644 --- a/app/Models/SubscriptionModel.php +++ b/app/Models/SubscriptionModel.php @@ -7,7 +7,7 @@ class SubscriptionModel extends Model { protected $table = 'subscription'; protected $primaryKey = 'sub_id'; -protected $allowedFields = ['sub_id','scheme_id','customer_id','to_subscription','from_subscription','mode','created_on','created_by','business_id']; +protected $allowedFields = ['sub_id','scheme_id','customer_id','to_subscription','from_subscription','mode','created_on','created_by','updated_by','updated_on','business_id']; diff --git a/app/Views/invoice_form.php b/app/Views/invoice_form.php index 577ab4d8..6fbf975c 100644 --- a/app/Views/invoice_form.php +++ b/app/Views/invoice_form.php @@ -288,7 +288,7 @@ if (isset($invoice_item_details[0]['to_subscription']) && !empty($invoice_item_d - " name="invoice_child_id[]" value="" placeholder="hidden for invoice child/item id" value="" /> + " name="invoice_child_id[]" placeholder="hidden for invoice child/item id" value="" /> " name="quantity[]" oninput="calculateInvoice(this,)" value="" min="1" /> @@ -334,7 +334,7 @@ if (isset($invoice_item_details[0]['to_subscription']) && !empty($invoice_item_d - + @@ -645,6 +645,7 @@ if (isset($invoice_item_details[0]['to_subscription']) && !empty($invoice_item_d
+
@@ -873,7 +874,7 @@ if (isset($invoice_item_details[0]['to_subscription']) && !empty($invoice_item_d $('#saveDraftButton').click(function() { console.log('Save as Draft button clicked'); }); - + $('#voidButton').click(function() { console.log('Void button clicked'); }); @@ -884,7 +885,7 @@ if (isset($invoice_item_details[0]['to_subscription']) && !empty($invoice_item_d }); function hideAllButtons() { - $('#cancelButton, #saveDraftButton, #voidButton, #saveApprovedButton').hide(); + $('#cancelButton, #saveDraftButton, #voidButton, #saveApprovedButton, #saveButton').hide(); } // Function to show buttons based on status and invoice_type @@ -893,14 +894,14 @@ if (isset($invoice_item_details[0]['to_subscription']) && !empty($invoice_item_d if (invoice_type == '1' || invoice_type =='2') { if (status == '') { $('#saveDraftButton, #saveApprovedButton').show(); - } else if (status === 'Draft') { + } else if (status == 'Draft') { $('#voidButton, #saveDraftButton, #saveApprovedButton').show(); - } else if (status === 'Approved') { + } else if (status == 'Approved') { $('#cancelButton').show(); - if (invoice_type === '2') { - $('#saveApprovedButton').show(); + if (invoice_type == '2') { + $('#saveButton').show(); } - } else if (status === 'Cancelled' || status === 'Void') { + } else if (status == 'Cancelled' || status == 'Void') { hideAllButtons(); } } @@ -1991,6 +1992,30 @@ function saveInvoiceCustomer() { }); }); +