From 996016a2e6a54174637bc0d095bc461abbeb8a05 Mon Sep 17 00:00:00 2001 From: VE10-Sanjeev Date: Mon, 11 Sep 2023 09:57:26 +0530 Subject: [PATCH] Invoice : ps --- app/Config/Routes.php | 7 +- app/Controllers/Authentication.php | 1 + app/Controllers/Customer.php | 99 ----- app/Controllers/Invoice.php | 222 ++++++++++- app/Models/EventModel.php | 1 - app/Models/InvoiceModel.php | 62 ++- app/Views/auth_signup.php | 188 --------- app/Views/customer_form.php | 134 ++++--- app/Views/invoice_form.php | 606 +++++++++++++++++++---------- app/Views/invoice_list.php | 28 +- app/Views/template/footer.php | 4 +- app/Views/template/header.php | 2 +- 12 files changed, 789 insertions(+), 565 deletions(-) delete mode 100755 app/Views/auth_signup.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index bb44fadf..09f21d13 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -95,8 +95,11 @@ $routes->get("new_event/(:any)", "Event::new_event/$1"); $routes->post("insert_event/", "Event::insert_event"); #invoices $routes->get("invoice_list/", "Invoice::index"); -$routes->get("new_invoice/", "Invoice::new_invoice/"); - +$routes->get("new_invoice/(:any)", "Invoice::new_invoice/$1"); +$routes->post("load_details1/", "Invoice::load_details1/"); +$routes->post("load_details2/", "Invoice::load_details2/"); +$routes->post("save_invoice/", "Invoice::save_invoice/"); +$routes->get("delete_invoice/(:any)", "Invoice::delete_invoice/$1"); diff --git a/app/Controllers/Authentication.php b/app/Controllers/Authentication.php index 142e7cd1..8085d39a 100755 --- a/app/Controllers/Authentication.php +++ b/app/Controllers/Authentication.php @@ -242,6 +242,7 @@ class Authentication extends BaseController // Clear session data and perform logout logic $session->destroy(); // $cookie = \Config\Services::cookie(); + // $cookie->delete('ci_session'); // $remembered_username = $cookie->getCookie('remember_username'); // $cookie->delete('remember_username'); diff --git a/app/Controllers/Customer.php b/app/Controllers/Customer.php index fd494bd5..9eaac957 100644 --- a/app/Controllers/Customer.php +++ b/app/Controllers/Customer.php @@ -191,104 +191,5 @@ class Customer extends BaseController $address_details = $model->where($where)->findAll(); return $address_details; } - ## ApiIntegration For Customer. - public function apiintegration() - { - helper('apiIntegration'); - helper('session'); - $session_bid = get_business_id(); - $session_uid = get_logged_user_id(); - $response = perform_http_request('GET', VB_CUSTOMERS); - $message = ""; - if (count($response['response']) > 0) { - //$message = "Reponse Count : ".count($response['response'])."
"; - echo "Note : This For CrossCheck Purpose 1ly
"; - echo "Total Customer API Reponse Count : " . count($response['response']) . "
"; - $CustomerModel = new CustomerModel(); - $x=0; - foreach ($response['response'] as $row) { - $insertion_data['first_name'] = $row->first_name; - $insertion_data['last_name'] = $row->last_name; - $insertion_data['type'] = $row->role; - $insertion_data['email'] = $row->email; - // $insertion_data['profile_picture'] = $row->avatar_url; - $insertion_data['mode'] = 'online'; - $insertion_data['created_by'] = $session_uid; - $insertion_data['business_id'] = $session_bid; - $billing = $row->billing; - $shipping = $row->shipping; - $CustomerModel->insert($insertion_data); - $lastInsertId = $CustomerModel->insertID(); - $insertion_baddress_data = [];$insertion_saddress_data = []; - $i = 0; $j = 0; - - if(isset($billing) && gettype($billing) === 'object') {$billing = [$billing];} - if(isset($shipping) && gettype($shipping) === 'object') {$shipping = [$shipping];} - echo "Customer ID : ".$lastInsertId." have Billing address = ".count($billing)." and Shipping address = ".count($shipping)."
"; - if (count($billing) > 0) { - foreach ($billing as $bill) { - if ($bill->first_name !== '') { - $insertion_baddress_data[$i]['first_name'] = $bill->first_name; - $insertion_baddress_data[$i]['last_name'] = $bill->last_name; - $insertion_baddress_data[$i]['company'] = $bill->company; - $insertion_baddress_data[$i]['address_1'] = $bill->address_1; - $insertion_baddress_data[$i]['address_2'] = $bill->address_2; - $insertion_baddress_data[$i]['city'] = $bill->city; - $insertion_baddress_data[$i]['state'] = $bill->state; - $insertion_baddress_data[$i]['country'] = $bill->country; - $insertion_baddress_data[$i]['postal_code'] = $bill->postcode; - $insertion_baddress_data[$i]['customer_id'] = $lastInsertId; - $insertion_baddress_data[$i]['address_type'] = 1; - $insertion_baddress_data[$i]['created_by'] = $session_uid; - $insertion_baddress_data[$i]['email'] = isset($bill->email) ? $bill->email : ''; - $insertion_baddress_data[$i]['mobile_no'] = isset($bill->phone) ? $bill->phone : ''; - $i++; - echo "       Billing address has a value and Inserted ".$i."
"; - }else{ - echo "       Keys are available but Billing address has no value;
"; - } - } - (!empty($insertion_baddress_data) ? $CustomerModel->insertAddressBatch($insertion_baddress_data) : ""); - } - if (count($shipping) > 0) { - foreach ($shipping as $ship) { - if ($ship->first_name !== '') { - $insertion_saddress_data[$j]['first_name'] = $ship->first_name; - $insertion_saddress_data[$j]['last_name'] = $ship->last_name; - $insertion_saddress_data[$j]['company'] = $ship->company; - $insertion_saddress_data[$j]['address_1'] = $ship->address_1; - $insertion_saddress_data[$j]['address_2'] = $ship->address_2; - $insertion_saddress_data[$j]['city'] = $ship->city; - $insertion_saddress_data[$j]['state'] = $ship->state; - $insertion_saddress_data[$j]['country'] = $ship->country; - $insertion_saddress_data[$j]['postal_code'] = $ship->postcode; - $insertion_saddress_data[$j]['email'] = isset($ship->email)?$ship->email:""; - $insertion_saddress_data[$j]['mobile_no'] = isset($ship->phone)?$ship->phone:""; - $insertion_saddress_data[$j]['customer_id'] = $lastInsertId; - $insertion_saddress_data[$j]['address_type'] = 2; - $insertion_saddress_data[$j]['created_by'] = $session_uid; - $j++; - echo "        Shipping address has a value and Inserted ".$j."
"; - } - else{ - echo "        Keys are available but Shipping address has no value
"; - } - } - (!empty($insertion_saddress_data) ? $CustomerModel->insertAddressBatch($insertion_saddress_data) : ""); - } - } //reponse foreach closed - } //reponse count if closed - if (!empty($response['error'])) { - echo $response['error']; - echo $response['error_msg']; - $message .= $response['error'] . $response['error_msg']; - echo "Error :".$response['error'] . $response['error_msg']; - }else{ - echo "Done"; - } - $go_to_list_page = base_url()."customer_list"; - echo "
go to list page
"; - // return $message; - } } diff --git a/app/Controllers/Invoice.php b/app/Controllers/Invoice.php index c93211aa..de4182d5 100644 --- a/app/Controllers/Invoice.php +++ b/app/Controllers/Invoice.php @@ -16,14 +16,12 @@ class Invoice extends BaseController $session_bid = get_business_id(); if (!empty($session_role) && $session_role !== "sadmin") { - $where = ['invoice.business_id'=>(int)$session_bid]; - }else{ $where = ['invoice.business_id != '=>NULL];} - - $InvoiceModel = new InvoiceModel(); + $where = ['I.business_id'=>(int)$session_bid,'I.isactive' => 0]; + }else{ $where = ['I.business_id != '=>NULL,'I.isactive != ' => NULL];} + + $model = new InvoiceModel(); $data['page_name'] = 'Invoice Details'; - // $data['subscriber'] = $SubscriptionModel->where($where)->findAll();; - // $data['invoice'] = $InvoiceModel->getAllSubscribersWithNames($where); - + $data['invoice'] = $model->getJoinedData($where); $this->render_page('invoice_list', $data); }else { return redirect()->to('login'); @@ -31,23 +29,205 @@ class Invoice extends BaseController } - public function new_invoice() + public function new_invoice($id) { helper('session'); - $session_bid = get_business_id(); - $data['page_name'] = 'Invoice Details'; - $customerModel = new CustomerModel(); - $eventModel = new EventModel(); - - $business_id = get_business_id(); - + + $model = new InvoiceModel(); + $where = ['business_id'=>(int)get_business_id()]; // Get customer names for the dropdown - $data['customers'] = $customerModel->getCustomerNamesByBusiness($business_id); -$data['events']= $eventModel->getEventnamesByBusiness($business_id); - // Initialize billing and shipping addresses as empty - $data['billingAddress'] = ''; - $data['shippingAddress'] = ''; - + $data['customers'] = $model->getData('customers',$where); + $data['events']= $model->getData('events',$where); + $data['books']= $model->getData('books',$where); + if ($id === '0') { + $data['page_name'] = 'Add Invoice Details'; + $data['invoice_details'] = []; + $data['invoice_item_details'] = []; + } else if ($id !== '0') { + $data['page_name'] = 'Edit Invoice Details'; + $data['invoice_details'] = $model->where(['invoice_id' => $id,'isactive' => 1])->first(); + $data['invoice_item_details'] = $this->get_invoice_item($id); + } $this->render_page('invoice_form', $data); } + + public function load_details1() + { + + $id = $this->request->getPost('selectedValue'); + $where = ['isactive' => 1, 'customer_id' => (int)$id]; + $where['address_type'] = 1; + $data['customer_billing'] = $this->get_customer_address($where,[]); + $select = ["customer_address_id","CONCAT(address_1,' ',address_2) as address"]; + $where['address_type'] = 2; + $data['customer_shipping'] = $this->get_customer_address($where,$select); + return $this->response->setJSON(['data' => $data]); + } + + public function load_details2() + { + $customer_id = $this->request->getPost('customerValue'); + $address_id = $this->request->getPost('selectedValue'); + $where = ['isactive' => 1, 'customer_id' => (int)$customer_id,'address_type'=>2,'customer_address_id'=>(int)$address_id]; + $data['customer_shipping'] = $this->get_customer_address($where,[]); + return $this->response->setJSON(['data' => $data]); + } + + public function get_customer_address($where,$select){ + $model = new CustomerModel(); + $model->setTable('customer_addresses'); + if(!empty($select)){ + $address_details = $model->select($select)->where($where)->findAll(); + }else{ + $address_details = $model->where($where)->findAll(); + } + return $address_details; + } + + public function save_invoice(){ + + helper('session'); + $model = new InvoiceModel(); + // print_r($this->request->getPost()); + // echo "

"; + // Array ( [customer_name] => 1 [shipping_address] => 2 [event_next_id] => 134 [event_id] => 1 [invoice_number] => NBF2023-INV-00133 [order_number] => 12 [invoice_date] => 2023-09-07 [due_date] => 2023-09-07 [item_details] => Array ( [0] => 1 ) [quantity] => Array ( [0] => 2 [1] => 2 ) [rate] => Array ( [0] => 3 [1] => 3 ) [tax] => [amount] => Array ( [0] => 5 [1] => 5 ) [itemDetails] => Array ( [0] => 1 ) [subtotal] => [discount] => 9 [total] => [terms] => i don't like... ) + $duedate = $this->request->getVar('due_date'); + $invdate = $this->request->getVar('invoice_date'); + $data = [ + 'invoice_number' => $this->request->getPost('invoice_number'), + 'customer_id' => (int)$this->request->getPost('customer_name'), + 'billing_address_id' => (int)$this->request->getPost('billing_address_id'), + 'billing_address' => $this->request->getPost('billing_address'), + 'shipping_address_id' => (int)$this->request->getPost('shipping_address_id'), + 'shipping_address' => $this->request->getPost('shipping_address'), + 'invoice_date' => date("Y-m-d", strtotime($invdate)), + 'due_date' => date("Y-m-d", strtotime($duedate)), + 'subtotal' => (int)$this->request->getPost('sub_total'), + 'tax' => (int)$this->request->getPost('invoice_tax'), + 'discount'=> (int)$this->request->getPost('discount'), + 'total_amount'=> (int)$this->request->getPost('grand_total'), + 'order_number'=> $this->request->getPost('order_number'), + 'payment_method'=> 'Cash on Delivery',// "Credit Card," "Cash on Delivery," "PayPal","PayTm","Gpay" + 'payment_status'=> 'Pending',//"Paid," "Pending," "Failed," "Refunded," "Canceled," "Authorized," and "Completed." + 'event_id'=> (int)$this->request->getPost('event_id'), + 'business_id'=> (int)get_business_id(), + 'isactive'=> 1]; + $invoice_id = $this->request->getPost('invoice_id'); + + if (empty($invoice_id)) { + $data['created_by'] = (int)get_logged_user_id(); + $model->insert($data); + $IID = $model->insertID(); + // $IID = 1; + } else { + $data['updated_by'] = (int)get_logged_user_id(); + $model->update($invoice_id, $data); + $IID = $invoice_id; + // $IID = 1; + } + // print_r($data); + // echo "

"; + $requestData = $this->request->getPost(); + $update_events=['id'=>$this->request->getPost('event_id'), + 'next_id' => $this->request->getPost('event_next_id'), + 'business_id' => get_business_id(), + 'updated_by' => get_logged_user_id()]; + $this->update_events($update_events); + // print_r($update_events);echo "

"; + $this->save_invoice_item($IID,$requestData);//die(); + return redirect()->route('invoice_list'); + } + + public function update_events($update_events){ + // `id``event_name``business_id``updated_by``updated_on``next_id` + $model = new InvoiceModel(); + $model->setTable('events'); + $where = ['isactive' => 1, 'id' => (int)$update_events['id'],'business_id'=>(int)$update_events['business_id'],'next_id'=>$update_events['next_id']]; + $details = $model->where($where)->findAll(); + if(empty($details)){ + $update_where = ['id' => (int)$update_events['id'],'business_id'=>(int)$update_events['business_id']]; + $update_data = ['next_id'=>$update_events['next_id'],'updated_by'=>$update_events['updated_by']]; + $model->updateData('events', $update_data, $update_where); + } + + + } + public function save_invoice_item($id,$requestData){ + + // print_r($requestData['invoice_child_id']); + + $getInvoiceItemDetails = $this->get_invoice_item($id); + $itemid = $requestData['invoice_child_id']; + + $statement = ""; + $model = new InvoiceModel(); + + // IF Any Missing value Means that values are Inactive here.... + if(!empty($itemid)){ + $filteringInvoiceItemIds = []; + for ($y = 0; $y < count($getInvoiceItemDetails); $y++) { + $filteringInvoiceItemIds[$y] = $getInvoiceItemDetails[$y]['invoice_child_id']; + } + + if(!empty($filteringInvoiceItemIds)){ + $A = $filteringInvoiceItemIds; + $B = $itemid; + $missingValues = array_diff($A,$B); + + if(!empty($missingValues)){ + $where = ['isactive'=>1,'invoice_id'=>(int)$id]; + $model->inactiveMissingInvoiceItemDetails($where,$missingValues); + } + } + } + // echo "
...................."; + $count = count($itemid); + $invoiceitem_arr = []; + if($count > 0){ + for ($x = 0; $x < $count; $x++) { + $invoiceitem_arr[$x]['invoice_id'] = $id; + $invoiceitem_arr[$x]['product'] = (int)$requestData['item_details'][$x]; + $invoiceitem_arr[$x]['quantity'] = (int)$requestData['quantity'][$x]; + $invoiceitem_arr[$x]['tax'] = (int)$requestData['tax'][$x]; + $invoiceitem_arr[$x]['unit_price'] = (int)$requestData['rate'][$x]; + $invoiceitem_arr[$x]['subtotal'] = (int)$requestData['amount'][$x]; + $invoiceitem_arr[$x]['created_by'] = (int)get_logged_user_id(); + $invoiceitem_arr[$x]['updated_by'] = (int)get_logged_user_id(); + $invoiceitem_arr[$x]['isactive'] = 1; + $invoiceitem_arr[$x]['invoice_child_id'] = $itemid[$x]; + } + $statement = $model->saveInvoiceItemDetails($invoiceitem_arr); + } + return $statement; + } + + public function get_invoice_item($id){ + $model = new InvoiceModel(); + $model->setTable('invoiceitems'); + $where = ['isactive' => 1, 'invoice_id' => (int)$id]; + $details = $model->where($where)->findAll(); + return $details; + } + + public function delete_invoice($id){ + + helper('session'); + $model = new InvoiceModel(); + $where = ['isactive' => 1, 'business_id' => (int)get_business_id(),'invoice_id' => (int)$id]; + $existed = $model->where($where)->findAll(); + + if ($existed) { + $data['isactive'] = 0; + $data['updated_by'] = get_logged_user_id(); + $model->update($id, $data); + $getInvoiceItemDetails = $this->get_invoice_item($id); + if ($getInvoiceItemDetails) { + $update_where = ['invoice_id' => (int)$id]; + $model->updateData('invoiceitems', $data, $update_where); + } + } + + return redirect()->route('invoice_list'); + + } } diff --git a/app/Models/EventModel.php b/app/Models/EventModel.php index fdeec050..d0bd5483 100644 --- a/app/Models/EventModel.php +++ b/app/Models/EventModel.php @@ -15,7 +15,6 @@ class EventModel extends Model public function getEventnamesByBusiness($business_id) { - $this->builder()->select('id,event_name'); $this->builder()->where('business_id ', $business_id); // Filter by business_id $query = $this->builder()->get(); // Use findAll() instead of get() return ($query->getResult()); diff --git a/app/Models/InvoiceModel.php b/app/Models/InvoiceModel.php index 79051c07..c9f4c3ae 100644 --- a/app/Models/InvoiceModel.php +++ b/app/Models/InvoiceModel.php @@ -7,8 +7,68 @@ class InvoiceModel extends Model { protected $table = 'invoice'; protected $primaryKey = 'invoice_id'; -protected $allowedFields = ['invoice_id','invoice_number','customer_id','invoice_date','event_id','business_id','created_on','business_id']; +// protected $allowedFields = ['invoice_id','invoice_number','customer_id','invoice_date','event_id','business_id','created_on','business_id']; +protected $allowedFields = ['invoice_id', 'invoice_number', 'customer_id', 'invoice_date', 'due_date', 'subtotal', 'tax', 'discount', 'total_amount', 'payment_status', 'order_number', 'payment_method', 'event_id', 'business_id', 'shipping_address_id', 'billing_address_id', 'created_on', 'created_by', 'updated_on', 'updated_by', 'isactive','billing_address','shipping_address']; +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{ + 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; +} + + +public function inactiveMissingInvoiceItemDetails($where,$missingValues){ + $dataToUpdate = ['isactive' => 0]; + $this->db->table('invoiceitems')->where($where)->whereIn('invoice_child_id',$missingValues)->update($dataToUpdate); +} + +public function updateData($table, $data, $where) +{ + $this->db->table($table)->update($data, $where); + $affected_rows = $this->db->affectedRows(); + return $affected_rows; +} + + public function getJoinedData($where) + { + + return $this->db->table($this->table.' as I' ) + ->join('customers as C', 'C.customer_id = I.customer_id', 'left') + ->join('events as E', 'E.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.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.payment_status, I.order_number, I.payment_method, 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') + ->where($where) + ->get() + ->getResult(); + + // I.shipping_address_id, I.billing_address_id, + } + + public function getData($table, $where = null) + { + $query = $this->db->table($table); + if ($where) { + $query->where($where); + } + return $query->get()->getResult(); + } diff --git a/app/Views/auth_signup.php b/app/Views/auth_signup.php deleted file mode 100755 index 74b12fa1..00000000 --- a/app/Views/auth_signup.php +++ /dev/null @@ -1,188 +0,0 @@ - - - - - Auth Pages | Create Account | Sign In 2 | Minton - Responsive Admin Dashboard Template - - - - - - - - - - - - - - - - - - - - - -
- -
-
-

Very elegant & impressive!

-

I've been using this theme for a while and I must say that whenever I am looking for a design - I refer to this theme for specifics & implementation. With wide arrays of components, designs, charts - I would highly recommend this theme for anyone using it for dashboard or project management usage.. -

-
- - Admin User -
-
-
- - - -
-
-
- - - - - -
-
-

Enter your email address and password to access admin panel.

- - -
-
- - -
-
- Forgot your password? - - -
-
-
- - -
-
-
- -
- -
-
Sign in with
- -
-
- -
-
-

Don't have an account? Create your own account, it takes less than a minute

- - -
-
- - -
-
- - -
-
- - -
-
-
- - -
-
-
- -
- -
-
Sign Up using
- -
-
- -
-
- - -
-

© Minton theme by Coderthemes

-
- -
-
-
- -
- - - - - - - - - - \ No newline at end of file diff --git a/app/Views/customer_form.php b/app/Views/customer_form.php index 31c223ab..775c8c8f 100644 --- a/app/Views/customer_form.php +++ b/app/Views/customer_form.php @@ -48,29 +48,29 @@
- +
Please provide.
- +
Please provide.
- +
Please provide.
- +
Please provide.
- +
Please provide.
@@ -90,7 +90,19 @@
-
Billing Address
+ +
+
+
Billing Address
+
+
+ + +
+
+ + +

@@ -158,17 +170,9 @@
Please provide.
-
-
- -
-
-
+ -
- + Add More Billing Address -

Shipping Address
@@ -213,14 +217,16 @@
-
+
+ + - Remove +
+ Add More Shipping Address
-
> @@ -243,40 +249,62 @@
\ No newline at end of file diff --git a/app/Views/invoice_form.php b/app/Views/invoice_form.php index 1585b542..da02a4f1 100644 --- a/app/Views/invoice_form.php +++ b/app/Views/invoice_form.php @@ -1,211 +1,180 @@ - - - - - - - - -
-
-
-
-

-

-
-
-
- -
- - -
- - -
Please provide.
-
- - -
- - -
-
-
- - - -
-
- - -
- - -
-
-
- - -
-
- - -
-
-
- - - - - - -
+
+
+
+
+

+

+ +
+
- - -
- -
- - -
- -
-
-
- - + + + -
Please select a customer.
+
+
+ +
- - - - - -
- - -
-
Item Details
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
Item DetailsQuantityRateTaxAmount Actions
- +
+
+ + + +
+
+ + +
-
- - - -
- -
+
+
+ + + +
Please select an events.
+
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+

Item Details

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Item DetailsQuantityRateTaxAmount Actions
+
+
+ + +
+
+
+

Calculation

- +
- - + +
+
- +
- - + +
+
+
+
+
+ + +
- - - - -
-
- - - + +
+ +
- -
-
- - - - -
+ +
- - - - -
- - - - + + \ No newline at end of file diff --git a/app/Views/invoice_list.php b/app/Views/invoice_list.php index 1916aaf6..995200b4 100644 --- a/app/Views/invoice_list.php +++ b/app/Views/invoice_list.php @@ -3,16 +3,13 @@

- - - @@ -23,10 +20,29 @@ - + - + + + + + + + + + + + + + + + + +
Invoice Number Invoice DateDiscount Tax Total ValueAction
invoice_number; ?>invoice_date; ?>customer_name; ?>discount; ?>tax; ?>total_amount; ?> + invoice_id; ?>" class="edit-button"> + invoice_id; ?>" class="delete-button"> +
diff --git a/app/Views/template/footer.php b/app/Views/template/footer.php index 5dd554c2..d9156580 100644 --- a/app/Views/template/footer.php +++ b/app/Views/template/footer.php @@ -436,14 +436,14 @@ - + - + diff --git a/app/Views/template/header.php b/app/Views/template/header.php index 6a00e85f..3bbab8c5 100644 --- a/app/Views/template/header.php +++ b/app/Views/template/header.php @@ -29,7 +29,7 @@ " rel="stylesheet" type="text/css" /> - +