CHANGE_INVOICE_ALIGNMENT_ADD_DESCRIPTION : AADHAVAN

This commit is contained in:
aadhavan valli 2024-05-02 12:01:31 +05:30
parent ad584d4fdc
commit c9669da6c1
31 changed files with 1124 additions and 250 deletions

View File

@ -134,6 +134,7 @@ $routes->get("delete_invoice/(:any)", "Invoice::delete_invoice/$1");
$routes->add('approve_invoice/(:num)', 'Invoice::approve_invoice/$1');
$routes->get('generate_invoice_pdf/(:num)', 'Invoice::generate_invoice_pdf/$1');
$routes->get('generate_invoice_pdf_preview/(:any)', 'Invoice::generate_invoice_pdf_preview/$1');
$routes->get('generate_invoice_print_preview/(:any)', 'Invoice::generate_invoice_print_preview/$1');
$routes->get('print_address/(:num)', 'Invoice::print_address/$1');
@ -173,6 +174,14 @@ $routes->get('subscription_inactive', 'Invoice::subscription_inactive');
# Api integration Routes
$routes->post('api/(:any)', 'ApiIntegration::api_integration/$1');
# Get Country List
$routes->get('get_country', 'Customer::get_country_list');
$routes->post('save_address_from_model', 'Customer::save_address_from_model');
// $routes->group("api", function ($routes) {
// // $routes->post("create_products/", "ApiIntegration::save_book_details");
// // $routes->match(['put', 'post', 'get', 'delete'], 'products', 'ApiIntegration::book_api_integration');

View File

@ -276,6 +276,13 @@ class Customer extends BaseController
$country_details = $model->orderBy('country_id', 'ASC')->findAll();
return $country_details;
}
public function get_country_list()
{
$model = new CustomerModel();
$model->setTable('countries');
$country_details = $model->orderBy('country_id', 'ASC')->findAll();
return json_encode($country_details);
}
public function get_state_details()
{
@ -548,81 +555,126 @@ class Customer extends BaseController
## For Ajax Call To Save Invoice Customer...
public function save_invoice_customer()
{
helper('session');
$session_bid = get_business_id();
$session_uid = get_logged_user_id();
$model = new CustomerModel();
{
helper('session');
$session_bid = get_business_id();
$session_uid = get_logged_user_id();
$model = new CustomerModel();
$data = [
'first_name' => $this->request->getPost('cus_first_name'),
'last_name' => $this->request->getPost('cus_last_name') ? $this->request->getPost('cus_last_name') : '',
'mobile_no' => $this->request->getPost('cus_mobile_no'),
'email' => $this->request->getPost('cus_email'),
'date_of_birth' => NULL,
'type' => "customer",
'mode' => "Offline",
'business_id' => $session_bid,
'isactive' => 1,
'created_by' => $session_uid
];
if ($model->insert($data)) {
$customerId = $model->insertID();
$this->logger->info("Invoice Customer : has been added successfully. Inserted ID = " . $customerId);
// Store both billing and shipping addresses
$billingAddress = [
'customer_id' => $customerId,
'first_name' => $this->request->getPost('cus_first_name'),
'last_name' => $this->request->getPost('cus_last_name') ? $this->request->getPost('cus_last_name') : '',
'address_type' => 1, // Billing address type
'billing_address1' => $this->request->getPost('baddress1'),
'billing_address2' => $this->request->getPost('baddress2'),
'billing_city' => $this->request->getPost('bcity'),
'billing_state' => $this->request->getPost('bstate'),
'billing_country' => $this->request->getPost('bcountry'),
'billing_pincode' => $this->request->getPost('bzip')
];
$shippingAddress = [
'customer_id' => $customerId,
$data = [
'first_name' => $this->request->getPost('cus_first_name'),
'last_name' => $this->request->getPost('cus_last_name') ? $this->request->getPost('cus_last_name') : '',
'address_type' => 2, // Shipping address type
'shipping_address1' => $this->request->getPost('saddress1'),
'shipping_address2' => $this->request->getPost('saddress2'),
'shipping_city' => $this->request->getPost('scity'),
'shipping_state' => $this->request->getPost('sstate'),
'shipping_country' => $this->request->getPost('scountry'),
'shipping_pincode' => $this->request->getPost('szip')
'mobile_no' => $this->request->getPost('cus_mobile_no'),
'email' => $this->request->getPost('cus_email'),
'date_of_birth' => NULL,
'type' => "customer",
'mode' => "Offline",
'business_id' => $session_bid,
'isactive' => 1,
'created_by' => $session_uid
];
// Call the method to store both addresses
$result = $model->storeCustomerAddresses($billingAddress, $shippingAddress);
if($customerId){
$cus_first_name = $this->request->getPost('cus_first_name');
$cus_last_name = $this->request->getPost('cus_last_name');
$name = $cus_first_name;
if ($cus_last_name !== null) {
$name .= ' ' . $cus_last_name;
if ($model->insert($data)) {
$customerId = $model->insertID();
$this->logger->info("Invoice Customer : has been added successfully. Inserted ID = " . $customerId);
// Store both billing and shipping addresses
$billingAddress = [
'customer_id' => $customerId,
'first_name' => $this->request->getPost('cus_first_name'),
'last_name' => $this->request->getPost('cus_last_name') ? $this->request->getPost('cus_last_name') : '',
'address_type' => 1, // Billing address type
'billing_address1' => $this->request->getPost('baddress1'),
'billing_address2' => $this->request->getPost('baddress2'),
'billing_city' => $this->request->getPost('bcity'),
'billing_state' => $this->request->getPost('bstate'),
'billing_country' => $this->request->getPost('bcountry'),
'billing_pincode' => $this->request->getPost('bzip')
];
$shippingAddress = [
'customer_id' => $customerId,
'first_name' => $this->request->getPost('cus_first_name'),
'last_name' => $this->request->getPost('cus_last_name') ? $this->request->getPost('cus_last_name') : '',
'address_type' => 2, // Shipping address type
'shipping_address1' => $this->request->getPost('saddress1'),
'shipping_address2' => $this->request->getPost('saddress2'),
'shipping_city' => $this->request->getPost('scity'),
'shipping_state' => $this->request->getPost('sstate'),
'shipping_country' => $this->request->getPost('scountry'),
'shipping_pincode' => $this->request->getPost('szip')
];
// Call the method to store both addresses
$result = $model->storeCustomerAddresses($billingAddress, $shippingAddress);
if($customerId){
$cus_first_name = $this->request->getPost('cus_first_name');
$cus_last_name = $this->request->getPost('cus_last_name');
$name = $cus_first_name;
if ($cus_last_name !== null) {
$name .= ' ' . $cus_last_name;
}
}
if ($customerId) {
// Success response
$results = ['status' => true, 'message' => 'Customer and addresses saved successfully', 'cus_id' => $customerId,'cus_name'=>$name,"billing_addr_id"=>$result['billing_addr_id'],"shipping_addr_id"=>$result['shipping_addr_id']];
} else {
// Error response
$results = ['status' => false, 'message' => 'Failed to save customer and addresses'];
}
} else {
$this->logger->error("Invoice Customer: Error could not be added. Please try again.");
$results = ['status' => false, 'message' => 'Customer could not be added'];
}
if ($customerId) {
// Success response
$results = ['status' => true, 'message' => 'Customer and addresses saved successfully', 'cus_id' => $customerId,'cus_name'=>$name,"billing_addr_id"=>$result['billing_addr_id'],"shipping_addr_id"=>$result['shipping_addr_id']];
} else {
// Error response
$results = ['status' => false, 'message' => 'Failed to save customer and addresses'];
}
} else {
$this->logger->error("Invoice Customer: Error could not be added. Please try again.");
$results = ['status' => false, 'message' => 'Customer could not be added'];
return $this->response->setJSON(['data' => $results]);
}
return $this->response->setJSON(['data' => $results]);
}
public function save_address_from_model(){
// print_r($this->request->getPost());die;
$requestDataBilling = $this->request->getPost('billing');
$requestDataShipping = $this->request->getPost('shipping');
$customer_id_for_addresses = $this->request->getPost('customer_id');
// $bill_addr = $this->save_customer_addresses_model($customer_id_for_addresses, $requestDataBilling, 'b');
// $ship_addr = $this->save_customer_addresses_model($customer_id_for_addresses, $requestDataBilling, 's');
$billingData = [
'first_name' => $this->request->getPost('first_name'),
'last_name' => $this->request->getPost('last_name'),
'address_1'=> $requestDataBilling['address'],
'address_2'=> '',
'country' => $requestDataBilling['country'],
'state' => $requestDataBilling['state'],
'city' => $requestDataBilling['state'],
'postal_code' => $requestDataBilling['postalCode'],
];
$shippingData = [
'first_name' => $this->request->getPost('first_name'),
'last_name' => $this->request->getPost('last_name'),
'address_1'=> $requestDataShipping['address'],
'address_2'=> '',
'country' => $requestDataShipping['country'],
'state' => $requestDataShipping['state'],
'city' => $requestDataShipping['state'],
'postal_code' => $requestDataShipping['postalCode'],
];
$model = new CustomerModel();
$insertedId = $model->updateAddress($customer_id_for_addresses, $billingData, 'b');
$insertedId = $model->updateAddress($customer_id_for_addresses, $shippingData, 's');
}
}

View File

@ -5,6 +5,7 @@ namespace App\Controllers;
use App\Models\EventModel;
use App\Models\CustomerModel;
use App\Models\InvoiceModel;
use App\Models\BusinessModel;
use App\Models\BooksModel;
use App\Helpers\NotificationHelper;
@ -252,7 +253,7 @@ class Invoice extends BaseController
'event_id' => (int)$this->request->getPost('event_id'),
'business_id' => (int)get_business_id(),
'status' => $invoice_status,
'isactive' => 1
'isactive' => 1,
];
## Based on the invoice ID, we designated Insert or Update on Details...
@ -426,6 +427,7 @@ class Invoice extends BaseController
if (!empty($requestData['item_details'][$x])) {
$invoiceitem_arr[$x]['invoice_id'] = $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];
@ -689,6 +691,7 @@ class Invoice extends BaseController
$invoice_type = $data[0]->invoice_type;
// Create an mPDF object
$mpdf = new Mpdf([
'mode' => '',
'format' => [148, 210], // Set custom width and height in millimeters
@ -732,11 +735,16 @@ class Invoice extends BaseController
$mpdf->showWatermarkText = true;
}
$BusinessModel = new BusinessModel();
$business = $BusinessModel->where('business_id',$data[0]->business_id)->first();
// Generate the PDF content (HTML) with data
$html = view('invoice_pdf_template', ['data' => $data, 'invoiceItems' => $invoiceItems, 'invoice_type' => $invoice_type, 'invoiceTerms' => $data]);
$html = view('invoice_pdf_template', ['data' => $data, 'invoiceItems' => $invoiceItems,'business' => $business, 'invoice_type' => $invoice_type, 'invoiceTerms' => $data]);
// echo $html;die;
// Load HTML into the mPDF instance
// print_r($html);die;
$mpdf->WriteHTML($html);
// Output the PDF to the browser for download
@ -748,7 +756,38 @@ class Invoice extends BaseController
{
// Load required model
$model = new InvoiceModel();
$BusinessModel = new BusinessModel();
$data = $model->getInvoiceData($id);
$business = $BusinessModel->where('business_id',$data[0]->business_id)->first();
$invoiceItems = $model->getInvoiceItems($id, 'groupby');
foreach ($invoiceItems as $index => $singleItem) {
$productImgs = $model->getProductImgs($singleItem->product);
$invoiceItems[$index]->imgs = $productImgs;
}
$invoice_type = $data[0]->invoice_type;
// Get status data
$status = $data[0]->status;
// Load view with data
$html = view('invoice_pdf_template', ['data' => $data, 'invoiceItems' => $invoiceItems, 'invoice_type' => $invoice_type,'business' => $business, 'invoiceTerms' => $data, 'status' => $status]);
// Return HTML content
echo $html;
}
public function generate_invoice_print_preview($id)
{
// Load required model
$model = new InvoiceModel();
$data = $model->getInvoiceData($id);
$BusinessModel = new BusinessModel();
$business = $BusinessModel->where('business_id',$data[0]->business_id)->first();
// print_r($data);die;
$invoiceItems = $model->getInvoiceItems($id, 'groupby');
@ -763,13 +802,12 @@ class Invoice extends BaseController
$status = $data[0]->status;
// Load view with data
$html = view('invoice_pdf_template', ['data' => $data, 'invoiceItems' => $invoiceItems, 'invoice_type' => $invoice_type, 'invoiceTerms' => $data, 'status' => $status]);
$html = view('invoice_print_preview_template', ['data' => $data, 'invoiceItems' => $invoiceItems,'business'=>$business, 'invoice_type' => $invoice_type, 'invoiceTerms' => $data, 'status' => $status]);
// Return HTML content
echo $html;
}
public function print_address($id)
{
// Fetch the invoice data based on $id

View File

@ -59,6 +59,45 @@ class CustomerModel extends Model
return $this->db->insertID(); // Return the last inserted ID
}
public function updateAddress($id, $addressData, $addressType) {
if ($addressType == 'b') {
$addressTypeValue = 1;
} else {
$addressTypeValue = 2;
}
$isActive = 1;
// Check if an active address of the specified type already exists for the customer
$existingAddress = $this->db->table('customer_addresses')
->where('customer_id', $id)
->where('isactive', $isActive)
->where('address_type', $addressTypeValue)
->get()
->getRow();
// If an active address of the specified type exists, update it
if ($existingAddress) {
$this->db->table('customer_addresses')
->where('customer_id', $id)
->where('address_type', $addressTypeValue)
->update($addressData);
return $id; // Return the customer ID
} else {
// If no active address of the specified type exists, insert a new one
$addressData['customer_id'] = $id;
$addressData['address_type'] = $addressTypeValue;
$addressData['isactive'] = $isActive;
$this->db->table('customer_addresses')->insert($addressData);
return $this->db->insertID(); // Return the last inserted ID
}
}
public function insertAddressBatch($addressesDataArray) {
$this->db->table('customer_addresses')->insertBatch($addressesDataArray);
return $this->db->insertID(); // Note: insertID() might not be applicable for batch inserts

View File

@ -18,6 +18,7 @@ public function saveInvoiceItemDetails($data){
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";
@ -254,7 +255,7 @@ public function getJoinedData($where, $orderby = [])
{
if ($stringflag == 'groupby') {
$select = 'invoiceitems.*, B.*, GROUP_CONCAT(C.name SEPARATOR \',\') as name';
$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';
@ -270,7 +271,6 @@ public function getJoinedData($where, $orderby = [])
->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)

View File

@ -6,6 +6,7 @@
.blueText {
color: blue !important;
}
</style>
<?php $flag_name = $invoice_type === '1' ? " Books" : " Scheme"; ?>
<div class="row">
@ -20,14 +21,21 @@
<div class="form-group col-md-6">
<?php if (isset($invoice_details['customer_id']) && $invoice_details['customer_id'] != "") {
$displayvalue = "";
$first_name ="";
$last_name ="";
foreach ($customers as $customer) {
if ($customer->customer_id === $invoice_details['customer_id']) {
$displayvalue = $customer->first_name . ' ' . $customer->last_name;
$last_name = $customer->last_name;
$first_name = $customer->first_name;
}
} ?>
<label for="customerName">Customer Name</label>
<input type="hidden" name="customer_name" value="<?= $invoice_details['customer_id']; ?>" />
<input type="hidden" name="customer_name" id="customer_name" value="<?= $invoice_details['customer_id']; ?>" />
<input type="text" class="form-control" value="<?= $displayvalue ?>" readonly />
<input type="hidden" class="form-control" id="last_name" value="<?= $last_name ?>" readonly />
<input type="hidden" class="form-control" id="first_name" value="<?= $first_name ?>" readonly />
<?php } else { ?>
<label for="customerName">Customer Name<span class="text-danger"> *</span></label>
<select class="form-control" id="customerName" name="customer_name" required data-toggle="select2" onchange="get_customer_billing_details(this.value); get_customer_membership_details(this.value)">
@ -118,9 +126,10 @@
<thead>
<tr>
<th>Item Details</th>
<th>Description</th>
<th>Qty</th>
<th>Rate</th>
<th>Tax</th>
<th style="display:none;">Tax</th>
<th>Amount </th>
<th style="text-align: center !important" colspan="2">Discount</th>
<th hidden></th>
@ -132,7 +141,7 @@
<?php if (!empty($invoice_item_details)) {
foreach ($invoice_item_details as $inx => $ii_details) : ?>
<tr>
<td><select class="form-control book-select" id="<?= "book" . $inx; ?>bookSelect" name="item_details[]" onchange="displayBookTag(this,<?= $inx; ?>)" required data-toggle="select2" style="width: 249px !important;">
<td style="width:20%"><select class="form-control book-select" id="<?= "book" . $inx; ?>bookSelect" name="item_details[]" onchange="displayBookTag(this,<?= $inx; ?>)" required data-toggle="select2" style="width: 249px !important;">
<option value="">Select a <?= $flag_name; ?></option>
<?php if ($invoice_type === '1') { ?>
@ -149,18 +158,19 @@
} ?></option>
<?php endforeach; ?>
</select></td>
<td style="width:10%;"><input type="number" class="form-control item-quantity" id="<?= "quantity" . $inx; ?>" name="quantity[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['quantity']) ? $ii_details['quantity'] : '' ?>" min="1" />
<td style="width:25%"><textarea name="description[]" id="<?= "description" . $inx; ?>" cols="30" rows="2" style="height: 37px;"><?= isset($ii_details['description']) ? $ii_details['description'] : '' ?></textarea></td>
<td style="width:7%;"><input type="number" class="form-control item-quantity" id="<?= "quantity" . $inx; ?>" name="quantity[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['quantity']) ? $ii_details['quantity'] : '' ?>" min="1" />
</td>
<td style="width:10%;"><input type="text" class="form-control item-rate" id="<?= "rate" . $inx; ?>" name="rate[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['unit_price']) ? $ii_details['unit_price'] : '' ?>" readonly />
<td style="width:9%;"><input type="text" class="form-control item-rate" id="<?= "rate" . $inx; ?>" name="rate[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['unit_price']) ? $ii_details['unit_price'] : '' ?>" readonly />
</td>
<td style="width:8%;"><input type="number" class="form-control item-tax" id="<?= "tax" . $inx; ?>" name="tax[]" value="<?= isset($ii_details['tax']) ? $ii_details['tax'] : '' ?>" readonly />
<td style="width:8%;display:none;"><input type="number" class="form-control item-tax" id="<?= "tax" . $inx; ?>" name="tax[]" value="<?= isset($ii_details['tax']) ? $ii_details['tax'] : '' ?>" readonly />
</td>
<td style="width:12%;"><input type="number" class="form-control item-amount" id="<?= "amount" . $inx; ?>" name="amount[]" value="<?= isset($ii_details['subtotal']) ? $ii_details['subtotal'] : '' ?>" readonly />
<td style="width:10%;"><input type="number" class="form-control item-amount" id="<?= "amount" . $inx; ?>" name="amount[]" value="<?= isset($ii_details['subtotal']) ? $ii_details['subtotal'] : '' ?>" readonly />
</td>
<td style="width:12%;"><input type="number" class="form-control item-discount-amount" id="<?= "item_discount_amount" . $inx; ?>" name="discount_amount[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['discount_amount']) ? $ii_details['discount_amount'] : '' ?>" min="0" step="0.01" />
<td style="width:7%;"><input type="number" class="form-control item-discount-amount" id="<?= "item_discount_amount" . $inx; ?>" name="discount_amount[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['discount_amount']) ? $ii_details['discount_amount'] : '' ?>" min="0" step="0.01" />
</td>
<td style="width:10%;">
<td style="width:8%;">
<select class="form-control item-discount-type" id="<?= "discount_type" . $inx; ?>" name="discount_type[]" oninput="calculateInvoice(this,<?= $inx; ?>)">
<option value="" <?php if (isset($ii_details['discount_type']) && $ii_details['discount_type'] === '₹') echo "selected"; ?>>
</option>
@ -170,7 +180,7 @@
</td>
<td hidden><input type="hidden" class="form-control" id="<?= "hiddenInvoiceChildId" . $inx; ?>" name="invoice_child_id[]" value="" placeholder="hidden for invoice child/item id" value="<?= isset($ii_details['invoice_child_id']) ? $ii_details['invoice_child_id'] : '' ?>" /></td>
<?php if ($invoice_type === '1') : ?>
<td>
<td style="width:10%">
<center><i class="fa fa-trash remove-item "></i></center>
</td>
<?php endif; ?>
@ -192,10 +202,11 @@
endforeach; ?>
</select>
</td>
<td style="width:25%"><textarea name="description[]" id="" cols="30" rows="2" style="height: 37px;"></textarea></td>
<td style="width:10%;"><input type="number" class="form-control item-quantity" id="quantity0" name="quantity[]" oninput="calculateInvoice(this,0)" min="1" />
</td>
<td style="width:10%;"><input type="text" class="form-control item-rate" id="rate0" name="rate[]" oninput="calculateInvoice(this,0)" /></td>
<td style="width:8%;"><input type="text" class="form-control item-tax" id="tax0" name="tax[]" /></td>
<td style="width:8%;display:none"><input type="text" class="form-control item-tax" id="tax0" name="tax[]" /></td>
<td style="width:12%;"><input type="text" class="form-control item-amount" id="amount0" name="amount[]" />
</td>
<td class="discount-cell" style="width:12%;"><input type="number" class="form-control item-discount-amount" id="item_discount_amount0" name="discount_amount[]" oninput="calculateInvoice(this,0)" min="0" step="0.01" />
@ -306,8 +317,10 @@
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label for="notes">Notes</label>
<textarea class="form-control" id="notes" name="notes" rows="2"><?= isset($invoice_details['notes']) ? $invoice_details['notes'] : '' ?></textarea>
<label for="notes">Bank Details</label>
<textarea readonly class="form-control" id="notes" name="notes" rows="3">Bank Name : State Bank Of India
IFSC code : SBIN00989
Account No : 89900787655</textarea>
</div>
</div>
</div>
@ -599,6 +612,99 @@
</div>
</div>
<div id="billing_shipping_addresses_modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content">
<div class="modal-body">
<div class="text-center mt-2 mb-4">
<h4 id="form_add_edit">Billing & Shipping Address</h4>
</div>
<h5 >Billing Address</h5>
<div class="row">
<div class="col-md-8">
<div class="form-group">
<label for="billingAddress"> Address</label>
<input class="form-control" type="text" id="billing_address" required="" placeholder="Billing Address....">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="billingCountry"> Country</label>
<select class="form-control" name="billing_country" id="billing_country">
<option >Select Country</option>
</select>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="billingAddress"> State</label>
<input class="form-control" type="text" id="billing_state" required="" placeholder="State">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="billingAddress"> City</label>
<input class="form-control" type="text" id="billing_city" required="" placeholder="City">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="billingAddress"> Postal Code</label>
<input class="form-control" type="text" id="billing_postal_code" required="" placeholder="Postal Code">
</div>
</div>
<div class="form-group col-md-12 text-right">
<input type="checkbox" id="addressCopiedAsShippingModel" >
<label for="addressCopiedAsShippingModel"> Is the above address same as the shipping address?</label>
</div>
</div>
<div class="text-center">
<hr class="center-line">
</div>
<h5 >Shipping Address</h5>
<div class="row">
<div class="col-md-8">
<div class="form-group">
<label for="shippingAddress"> Address</label>
<input class="form-control" type="text" id="shipping_address" required="" placeholder="Shipping Address">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="shippingCountry"> Country</label>
<select class="form-control" name="shipping_country" id="shipping_country">
<option >Select Country</option>
</select>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="shippingAddress"> State</label>
<input class="form-control" type="text" id="shipping_state" required="" placeholder="State">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="shippingAddress"> City</label>
<input class="form-control" type="text" id="shipping_city" required="" placeholder="City">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="shippingAddress"> Postal Code</label>
<input class="form-control" type="text" id="shipping_postal_code" required="" placeholder="Postal Code">
</div>
</div>
</div>
<div class="form-group text-center">
<button class="btn btn-rounded btn-primary" type="submit" onclick="submitAddress(this)">Submit</button>
</div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script>
@ -621,6 +727,7 @@
var cell6 = newRow.insertCell(5);
var cell7 = newRow.insertCell(6);
var cell8 = newRow.insertCell(7);
var cell9 = newRow.insertCell(8);
html = `<select class="form-control book-select" id="book${counter}" name="item_details[]" onchange="displayBookTag(this, ${counter})" data-toggle="select2" required>
<option value="">Select a <?= $flag_name ?></option>
@ -637,13 +744,14 @@
cell1.innerHTML = html;
// cell1.innerHTML = '<input type="text" class="form-control" name="item_details[]">';
cell2.innerHTML = '<input type="number" class="form-control item-quantity" id="quantity' + counter + '" name="quantity[]" oninput="calculateInvoice(this,' + counter + ')" min="1">';
cell3.innerHTML = '<input type="number" class="form-control item-rate" id="rate' + counter + '" name="rate[]" oninput="calculateInvoice(this,' + counter + ')" min="0" step="0.01">';
cell4.innerHTML = '<input type="number" class="form-control item-tax" id="tax' + counter + '" name="tax[]" min="0" step="0.01">';
cell5.innerHTML = '<input type="number" class="form-control item-amount" id="amount' + counter + '" name="amount[]" min="0" step="0.01">';
cell6.innerHTML = '<input type="number" class="form-control item-discount-amount" id="item_discount_amount' + counter + '" name="discount_amount[]" oninput="calculateInvoice(this,' + counter + ')" min="0" step="0.01">';
cell7.innerHTML = '<select class="form-control item-discount-type" style=""width:12%;" id="item_discount_type' + counter + '" name="discount_type[]" oninput="calculateInvoice(this,' + counter + ')"><option value="₹">₹</option><option value="%">%</option></select>';
cell8.innerHTML = '<input type="hidden" class="form-control" id="hiddenInvoiceChildId' + counter + '" placeholder="hidden for invoice child/item id" name="invoice_child_id[]" value=""><center><i class="fa fa-trash remove-item "></center>';
cell2.innerHTML = '<textarea name="description[]" id="description'+counter+'" cols="30" rows="2" style="height: 37px;"></textarea>';
cell3.innerHTML = '<input type="number" class="form-control item-quantity" id="quantity' + counter + '" name="quantity[]" oninput="calculateInvoice(this,' + counter + ')" min="1">';
cell4.innerHTML = '<input type="number" class="form-control item-rate" id="rate' + counter + '" name="rate[]" oninput="calculateInvoice(this,' + counter + ')" min="0" step="0.01">';
cell5.innerHTML = '<input type="number" class="form-control item-tax" id="tax' + counter + '" name="tax[]" min="0" step="0.01">';
cell6.innerHTML = '<input type="number" class="form-control item-amount" id="amount' + counter + '" name="amount[]" min="0" step="0.01">';
cell7.innerHTML = '<input type="number" class="form-control item-discount-amount" id="item_discount_amount' + counter + '" name="discount_amount[]" oninput="calculateInvoice(this,' + counter + ')" min="0" step="0.01">';
cell8.innerHTML = '<select class="form-control item-discount-type" style=""width:12%;" id="item_discount_type' + counter + '" name="discount_type[]" oninput="calculateInvoice(this,' + counter + ')"><option value="₹">₹</option><option value="%">%</option></select>';
cell9.innerHTML = '<input type="hidden" class="form-control" id="hiddenInvoiceChildId' + counter + '" placeholder="hidden for invoice child/item id" name="invoice_child_id[]" value=""><center><i class="fa fa-trash remove-item "></center>';
$(newRow.querySelector('.book-select')).select2();
localStorage.setItem('add_book_index', counter);
@ -889,6 +997,24 @@
if ($(this).is(":checked")) {
$("#storeBillingAddress").prop("readonly", false);
$('#hiddenBillingAddressId').val(0);
$('#billing_shipping_addresses_modal').modal('show');
$.ajax({
type: "GET",
url: "<?= base_url() . 'get_country' ?>",
success: function(response) {
var countries = JSON.parse(response);
// Loop through the countries array
$.each(countries, function(index, country) {
// Append an <option> element for each country
$('#billing_country').append('<option value="' + country.country_short_name + '">' + country.country_name + '</option>');
$('#shipping_country').append('<option value="' + country.country_short_name + '">' + country.country_name + '</option>');
}); },
error: function() {
alert("Error fetching address.");
}
});
} else {
$("#storeBillingAddress").prop("readonly", true);
if (global_billarr !== "") {
@ -1628,33 +1754,119 @@ function saveInvoiceCustomer() {
console.log('Save as Approved button clicked');
});
});
$("#addressCopiedAsShipping").on("change", function() {
$("#addressCopiedAsShipping").on("change", function() {
if ($(this).is(":checked")) {
var customerAddress1 = $("#baddress1").val();
var customerAddress2 = $("#baddress2").val();
var customerCountry = $("#bcountry").val();
var customerState = $("#bstate").val();
var customerCity = $("#bcity").val();
var customerPostalCode = $("#bpincode").val();
$("#saddress1").val(customerAddress1).prop("readonly", false);
$("#saddress2").val(customerAddress2).prop("readonly", false);
$("#scountry").val(customerCountry).prop("readonly", false);
$("#sstate").val(customerState).prop("readonly", false);
$("#scity").val(customerCity).prop("readonly", false);
$("#spincode").val(customerPostalCode).prop("readonly", false);
} else {
// Clear the billing address fields when the checkbox is unchecked
$("#saddress1").val("").prop("readonly", false);
$("#saddress2").val("").prop("readonly", false);
$("#scountry").val("").prop("readonly", false);
$("#sstate").val("").prop("readonly", false);
$("#scity").val("").prop("readonly", false);
$("#spincode").val("").prop("readonly", false);
}
});
$("#addressCopiedAsShippingModel").on("change", function() {
if ($(this).is(":checked")) {
var customerAddress1 = $("#billing_address").val();
var customerCountry = $("#billing_country").val();
var customerState = $("#billing_state").val();
var customerCity = $("#billing_city").val();
var customerPostalCode = $("#billing_postal_code").val();
$("#shipping_address").val(customerAddress1).prop("readonly", false);
$("#shipping_country").val(customerCountry).prop("readonly", false);
$("#shipping_state").val(customerState).prop("readonly", false);
$("#shipping_city").val(customerCity).prop("readonly", false);
$("#shipping_postal_code").val(customerPostalCode).prop("readonly", false);
} else {
// Clear the billing address fields when the checkbox is unchecked
$("#shipping_address").val("").prop("readonly", false);
$("#shipping_country").val("").prop("readonly", false);
$("#shipping_state").val("").prop("readonly", false);
$("#shipping_city").val("").prop("readonly", false);
$("#shipping_postal_code").val("").prop("readonly", false);
}
});
function submitAddress(params) {
var last_name = $("#last_name").val();
var first_name = $("#first_name").val();
var bAddress = $("#billing_address").val();
var bCountry = $("#billing_country").val();
var bState = $("#billing_state").val();
var bCity = $("#billing_city").val();
var bPostalCode = $("#billing_postal_code").val();
var sAddress = $("#shipping_address").val();
var sCountry = $("#shipping_country").val();
var sState = $("#shipping_state").val();
var sCity = $("#shipping_city").val();
var sPostalCode = $("#shipping_postal_code").val();
var formData = {
customer_id :$('#customer_name').val(),
last_name: last_name,
first_name: first_name,
billing: {
address: bAddress,
country: bCountry,
state: bState,
city: bCity,
postalCode: bPostalCode
},
shipping: {
address: sAddress,
country: sCountry,
state: sState,
city: sCity,
postalCode: sPostalCode
}
};
$.ajax({
type: "POST",
url: "<?php echo base_url('save_address_from_model'); ?>",
data: formData,
success: function(response) {
// Handle success response
// console.log(response);
$('#billing_shipping_addresses_modal').modal('hide');
var billing_Address = bAddress + ','+bCity + ',' + bCountry + '-' +bPostalCode + ',' + bState + '.' ;
var shipping_Address = sAddress + ','+sCity + ',' + sCountry + '-' +sPostalCode + ',' + sState + '.' ;
$('#storeBillingAddress').empty();
$('#storeBillingAddress').html(billing_Address);
$('#storeShippingAddress').empty();
$('#storeShippingAddress').html(shipping_Address);
$('#editAddressesCheckbox').prop('checked', false).trigger('change');
},
error: function() {
// Handle error
alert("Error saving address.");
}
});
}
if ($(this).is(":checked")) {
var customerAddress1 = $("#baddress1").val();
var customerAddress2 = $("#baddress2").val();
var customerCountry = $("#bcountry").val();
var customerState = $("#bstate").val();
var customerCity = $("#bcity").val();
var customerPostalCode = $("#bpincode").val();
$("#saddress1").val(customerAddress1).prop("readonly", false);
$("#saddress2").val(customerAddress2).prop("readonly", false);
$("#scountry").val(customerCountry).prop("readonly", false);
$("#sstate").val(customerState).prop("readonly", false);
$("#scity").val(customerCity).prop("readonly", false);
$("#spincode").val(customerPostalCode).prop("readonly", false);
} else {
// Clear the billing address fields when the checkbox is unchecked
$("#saddress1").val("").prop("readonly", false);
$("#saddress2").val("").prop("readonly", false);
$("#scountry").val("").prop("readonly", false);
$("#sstate").val("").prop("readonly", false);
$("#scity").val("").prop("readonly", false);
$("#spincode").val("").prop("readonly", false);
}
});
</script>

View File

@ -8,14 +8,21 @@
size: 148mm 210mm; /* Width Height */
}
/* Add your CSS styles here to format the invoice for mPDF */
td{
/* display: flex;
*/
/* align-items: flex-start; */
}
body {
font-family: 'Times New Roman', Times, sans-serif;
color : black !important;
font-size: 8pt;
/* Change this value to your desired font size */
}
/* Style for the main table with border */
table.main-table {
width: 100%;
@ -96,12 +103,13 @@
border: none;
/* Remove borders from all cells in the invoice items table */
padding: 8px;
text-align: center;
/* text-align: center; */
/* Center-align text in cells */
}
table.invoice-related-table th {
background-color: #f2f2f2;
/* background-color: #f2f2f2; */
background-color: #D0D0CD;
font-weight: bold;
}
@ -128,7 +136,7 @@
.subtotal-table td {
border: none;
/* Remove borders from cells inside the subtotal table */
padding: 8px;
padding: 3px;
text-align: right;
}
@ -154,6 +162,12 @@
margin-top: 0;
margin-bottom: 0rem;
}
.test-works p {
margin-left: 6px;
}
</style>
</head>
@ -170,13 +184,13 @@
</td>
</tr>
<tr>
<td>
<p><?= $value->company_address ?>,<br>
<td class="test-works">
<p> <?= $value->company_address ?>,<br>
<?= $value->company_city ?>,
<?= $value->company_state ?>
<?= $value->company_postal_code ? " - " . $value->company_postal_code : "" ?>.</p>
<p><?= $value->company_email ?></p>
<p><?= $value->company_mobile_no ?></p>
<p ><?= $value->company_mobile_no ?></p>
</td>
</tr>
<?php endforeach; ?>
@ -214,7 +228,7 @@
</tr>
</table>
<table class="addresses-table">
<table class="addresses-table" style="margin-left: 7px;">
<tr>
<th class="billing-address">Billing Address</th>
<th class="shipping-address">Shipping Address</th>
@ -252,10 +266,10 @@
</table>
<br> <br>
<table class="invoice-related-table">
<thead>
<thead >
<tr>
<th>S.no</th>
<th>Item Name</th>
<th style="text-align: left;">Item Name</th>
<th>Qty</th>
<th>Rate</th>
@ -266,17 +280,19 @@
<?php $serialNumber = 1; ?>
<?php foreach ($invoiceItems as $item) : ?>
<tr>
<td>
<td style="display:flex;algin-items:flex-start">
<?= $serialNumber++; ?>
</td>
<td><?= $item->title ?></td>
<td><?= $item->quantity ?></td>
<td><?= number_format($item->unit_price, 2, '.', ',') ?></td>
<td><span style="font-size:10pt"><?= $item->title ?></span><br>
<span ><?php if($item->description != ''){?><span style="font-size:6pt"><?php echo $item->description ?></span><?php }?></span>
</td>
<td style="align-content: flex-start;text-align: start;"><?= $item->quantity ?></td>
<td style="align-content: flex-start;text-align: start;"><?= number_format($item->unit_price, 2, '.', ',') ?></td>
<td><?= number_format($item->subtotal, 2, '.', ',') ?></td>
<td style="align-content: flex-start;"><?= number_format($item->subtotal, 2, '.', ',') ?></td>
</tr>
<?php endforeach; ?>
</tbody>
@ -327,8 +343,8 @@
</div>
<?php foreach ($data as $value) : ?>
<div class="terms">
<p>Thank you!</p>
<div class="terms">
<!-- <if(!empty($value->notes)){
<br><p style="text-align: left !important;"><b>Notes:</b> $value->notes; ?></p>
} ?> -->
@ -345,6 +361,14 @@
<?php }
endforeach; ?>
</div>
<br>
<div class="" style="margin-left: 9px;margin-top: -135px;">
<label>Bank Details</label><br>
<?php echo nl2br($business['terms']); ?>
</div>
<?php endforeach; ?>
<!-- ... (your existing HTML template) -->

View File

@ -0,0 +1,427 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
@page {
size: 148mm 210mm; /* Width Height */
}
/* Add your CSS styles here to format the invoice for mPDF */
body {
font-family: 'Times New Roman', Times, sans-serif;
font-size: 8pt;
/* Change this value to your desired font size */
}
.thank-you-line::before,
.thank-you-line::after {
content: '';
display: inline-block;
width: 20%;
border-top: 1px solid grey;
margin: 5px 5px;
}
/* Style for the main table with border */
table.main-table {
width: 100%;
margin-bottom: 1rem;
/* border-collapse: collapse; */
/* border: -0.5px solid black; */
/* Add a border around the entire invoice */
}
table.main-table th,
table.main-table td {
border: none;
/* Remove borders from all cells inside the main table */
/* padding: 8px; */
}
/* Style for the table containing business details */
table.business-details-table {
width: 100%;
}
table.business-details-table td {
text-align: left;
}
/* Style for the business logo and title */
.business-logo-container {
text-align: center;
}
img.business-logo {
max-width: 200px;
/* Adjust the size of the logo */
}
/* Style for the business name */
.business-name {
font-size: 16px;
font-weight: bold;
margin-top: 10px;
}
/* Style for the table containing invoice info */
table.invoice-info-table {
width: 100%;
border-collapse: collapse;
}
table.invoice-info-table th,
table.invoice-info-table td {
text-align: right;
padding: 8px;
}
/* Style for the addresses table */
table.addresses-table {
width: 100%;
}
table.addresses-table th {
text-align: left;
}
/* Style for the billing and shipping addresses */
.billing-address,
.shipping-address {
width: 50%;
}
/* Style for the invoice-related table */
table.invoice-related-table {
width: 100%;
border-collapse: collapse;
}
table.invoice-related-table th,
table.invoice-related-table td {
border: none;
/* Remove borders from all cells in the invoice items table */
padding: 8px;
text-align: center;
/* Center-align text in cells */
}
table.invoice-related-table th {
/* background-color: #f2f2f2; */
background-color: #D0D0CD;
font-weight: bold;
}
/* Style for the business stamp and terms */
.business-stamp,
.terms {
text-align: center;
margin-top: 20px;
}
.subtotal-table {
width: 100%;
margin-top: 20px;
}
.subtotal-table table {
width: 100%;
border-collapse: collapse;
border: 1px solid black;
/* Add a border around the subtotal table */
}
.subtotal-table th,
.subtotal-table td {
border: none;
/* Remove borders from cells inside the subtotal table */
padding: 8px;
text-align: right;
}
.subtotal-table th {
background-color: #f2f2f2;
font-weight: bold;
}
.subtotal-table td:last-child {
font-weight: bold;
/* Make the last column (total values) bold */
}
td.invoice-number {
font-size: 18px;
/* Increase font size to your desired value */
/* Highlight background color */
font-weight: bold;
/* Make the text bold */
}
p {
margin-top: 0;
margin-bottom: 0rem;
}
@media print {
/* Apply styles only for print preview */
body {
margin: 0; /* Reset body margin for print */
font-size: 10pt; /* Adjust font size for better readability in print */
}
table.main-table {
margin-bottom: 0; /* Remove bottom margin for better page break */
}
.business-logo-container {
margin-bottom: 10px; /* Reduce space below logo for print */
}
.subtotal-table {
margin-top: 10px; /* Reduce top margin for print */
}
.invoice-info-table{
/* margin-left:50px; */
font-size:20px;
margin-right:300px;
}
.quantity , .unit_price{
align-content: flex-start;
}
.description{
font-size:6pt;
}
.serialNumber{
display:flex;
algin-items:flex-start;
}
}
</style>
</head>
<body>
<table class="main-table">
<tr>
<td>
<table class="business-details-table">
<?php foreach ($data as $value) : ?>
<tr>
<td class="business-logo-container">
<img src="https://vijayabharathambooks.com/wp-content/uploads/2021/09/vijaya-bharatham-logo-8pt.png" alt="Business Logo" class="business-logo">
</td>
</tr>
<tr>
<td>
<p><?= $value->company_address ?>,<br>
<?= $value->company_city ?>,
<?= $value->company_state ?>
<?= $value->company_postal_code ? " - " . $value->company_postal_code : "" ?>.</p>
<p><?= $value->company_email ?></p>
<p><?= $value->company_mobile_no ?></p>
</td>
</tr>
<?php endforeach; ?>
</table>
</td>
<td style="padding: 8px!important">
<table class="invoice-info-table">
<?php foreach ($data as $value) : ?>
<tr>
<th><?php echo ($value->wp_api_order_id) ? 'Order # ' . $value->invoice_number : 'Invoice # ' . $value->invoice_number; ?></th>
</tr>
<tr>
<th>Invoice Date : <?= $value->formatted_invoice_date ?></th>
</tr>
<?php if ($value->due_date) : ?>
<tr>
<th>Due Date : <?= $value->formatted_due_date ?></th>
</tr>
<?php endif; ?>
<?php if ($invoice_type === '2') : ?>
<?php foreach ($invoiceItems as $item) : ?>
<tr>
<th>From Subscription : <?= date('d/m/y', strtotime($item->from_subscription)) ?></th>
</tr>
<tr>
<th>To Subscription : <?= date('d/m/y', strtotime($item->to_subscription)) ?></th>
</tr>
<?php endforeach; ?>
<?php endif; ?>
<?php endforeach; ?>
</table>
</td>
</tr>
</table>
<table class="addresses-table">
<tr>
<th class="billing-address">Billing Address</th>
<th class="shipping-address">Shipping Address</th>
</tr>
<tr>
<td class="billing-address">
<?php foreach ($data as $value) : ?>
<?= $value->customer_name ?><br>
<?php if($value->customer_bill_address && ($value->baddr_id !== null || $value->baddr_id !== '')){ ?>
<?= $value->customer_bill_address ? $value->customer_bill_address." ," : ""?><br>
<?= $value->customer_bill_city ? $value->customer_bill_city : "" ?>&nbsp;<?= $value->customer_bill_state ? $value->customer_bill_state : "" ?>
<?= $value->customer_bill_postal_code ? " - " . $value->customer_bill_postal_code : ""; ?>
<?= $value->customer_bill_country ? $value->customer_bill_country . "." : $value->bcountry ?><br>
<?php }else if ($value->baddr_id === null || $value->baddr_id === '') {
echo $value->billing_address ? '<p style="white-space: pre-line">'.$value->billing_address.'</p>' : '';
} ?>
<?= $value->mobile_no ? $value->mobile_no." ." : "" ?>
<?php endforeach; ?>
</td>
<td class="shipping-address">
<?php foreach ($data as $value) : ?>
<?= $value->customer_name ?><br>
<?php if($value->customer_ship_address && ($value->saddr_id !== null || $value->saddr_id !== '')){ ?>
<?= $value->customer_ship_address ? $value->customer_ship_address." ," : "" ?><br>
<?= $value->customer_ship_city ? $value->customer_ship_city : "" ?>&nbsp;<?= $value->customer_ship_state ? $value->customer_bill_state : "" ?>
<?= $value->customer_ship_postal_code ? " - " . $value->customer_ship_postal_code : ""; ?>
<?= $value->customer_ship_country ? $value->customer_ship_country . "." : $value->scountry ?><br>
<?php }else if ($value->saddr_id === null || $value->saddr_id === '') {
echo $value->shipping_address ? '<p style="white-space: pre-line">'.$value->shipping_address.'</p>' : '';
} ?>
<?= $value->mobile_no ? $value->mobile_no." ." : "" ?>
<?php endforeach; ?>
</td>
</tr>
</table>
<br> <br>
<table class="invoice-related-table">
<thead >
<tr>
<th>S.no</th>
<th style="text-align: left;">Item Name</th>
<th>Qty</th>
<th>Rate</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<?php $serialNumber = 1; ?>
<?php foreach ($invoiceItems as $item) : ?>
<tr>
<td class="serialNumber" style="display:flex;algin-items:flex-start">
<?= $serialNumber++; ?>
</td>
<td style="text-align: left;"><?= $item->title ?><br>
<span ><?php if($item->description != ''){?><span class="description" style="font-size:8pt"><?php echo $item->description ?></span><?php }?></span>
</td>
<td class="quantity" style="align-content: flex-start;"><?= $item->quantity ?></td>
<td class="unit_price" style="align-content: flex-start;"><?= number_format($item->unit_price, 2, '.', ',') ?></td>
<td style="align-content: flex-start;"><?= number_format($item->subtotal, 2, '.', ',') ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<table class="subtotal-table">
<?php foreach ($data as $value) : ?>
<tr>
<td colspan="5" align="right">Subtotal : &nbsp;&nbsp;<?= number_format($value->subtotal, 2, '.', ',') ?></td>
</tr>
<tr>
<td colspan="5" align="right">Discount : &nbsp;&nbsp;<?= $value->discount ? "(-)" . number_format($value->discount, 2, '.', ',') : number_format(0, 2, '.', ',') ?></td>
</tr>
<!-- -->
<?php if ($value->shipping_label != '') : ?>
<tr>
<td colspan="5" align="right"><?= $value->shipping_label ?> : &nbsp;&nbsp;₹<?= number_format($value->shipping_charge, 2, '.', ',') ?></td>
</tr>
<?php endif; ?>
<tr>
<?php
$sign = ($value->total_amount >= $value->exact_total_amount) ? '+' : '-';
$difference = abs($value->exact_total_amount - $value->total_amount);
?>
<td colspan="5" align="right"> Rounding : &nbsp;&nbsp;<?= $sign . number_format($difference, 2, '.', ',') ?></td>
</tr>
<tr>
<td colspan="5" align="right">Total : &nbsp;&nbsp;<?= number_format($value->total_amount, 2, '.', ',') ?></td>
</tr>
<?php if ($value->status === 'Draft') : ?>
<!-- Set Balance if status is draft and paid is 0 -->
<tr>
<td colspan="5" align="right">Balance : &nbsp;&nbsp;<?= number_format($value->total_amount, 2, '.', ',') ?></td>
</tr>
<?php endif; ?>
<?php if ($value->status === 'Approved') : ?>
<tr>
<td colspan="5" align="right">Paid : &nbsp;&nbsp;<?= number_format($value->total_amount, 2, '.', ',') ?></td>
</tr>
<?php endif; ?>
<?php endforeach; ?>
</table>
<div class="business-stamp">
</div>
<?php foreach ($data as $value) : ?>
<div class="terms">
<!-- <if(!empty($value->notes)){
<br><p style="text-align: left !important;"><b>Notes:</b> $value->notes; ?></p>
} ?> -->
<?php if (!empty($value->reason)) { ?>
<br>
<p style="text-align: left !important;"><b>Reason:</b> <?= $value->reason; ?></p>
<?php } ?>
<?php foreach ($invoiceTerms as $row) :
if (!empty($row->terms)) { ?>
<br>
<pre style="font-family: 'Times New Roman', Times, sans-serif; font-size: 12px; text-align: left;">
<?= $row->terms ?>
</pre>
<?php }
endforeach; ?>
</div>
<br>
<div class="" style="margin-left: 9px;margin-top: -140px;">
<h4>Bank Details</h4>
<?php echo nl2br($business['terms']); ?>
</div>
<?php endforeach; ?>
<!-- ... (your existing HTML template) -->
<!-- Add this to the end of your HTML template -->
<!-- <img src="https://cdn.pixabay.com/photo/2012/04/26/14/17/blue-42596_960_720.png" /> -->
<div>
<?php if ($data[0]->status === 'Draft') {
echo '<div class="watermark">Draft</div>';
}
if ($data[0]->status === 'Cancelled') {
echo '<div class="watermark">Cancelled</div>';
}
if ($data[0]->status === 'Void') {
echo '<div class="watermark">Void</div>';
}?>
</div>
</body>
</html>

View File

@ -32,6 +32,9 @@
.modal-lg, .modal-xl {
max-width: 678px;
}
.modal-body {
font-size: 1.3em !important;
}
</style>
<!-- /* CSS for modal content */
#pdfPreviewModal .modal-body {
@ -222,8 +225,10 @@
dataType: 'html',
success: function(response) {
// Display the PDF content in a modal or an iframe
// console.log(response);
$('#pdfPreviewModal .modal-body').html(response);
$('#downloadPdfButton').attr('href', '<?= base_url("generate_invoice_pdf/") ?>' + invoiceId);
$('#printPdfButton').val(invoiceId);
// Get the status text
var status = $('.preview-pdf[data-invoice-id="' + invoiceId + '"]').closest('tr').find('#status-column').text().trim();
@ -252,27 +257,32 @@
// JavaScript click event handler for printing PDF
$(document).ready(function() {
$(document).on('click', '#printPdfButton', function() {
// Get the modal body content
var printableContent = $('#pdfPreviewModal .modal-body').html();
var invoiceId = $(this).val();
$.ajax({
url: '<?= base_url('generate_invoice_print_preview/') ?>' + invoiceId,
type: 'GET',
dataType: 'html',
success: function(response) {
// Modify the font size of the content
var modifiedContent = '<html><head><title>Print Preview</title><style>body { font-size: 8px; }</style></head><body>' + printableContent + '</body></html>';
var modifiedContent = '<html><head><title>Print Preview</title><style>body { font-size: 8px; } .watermark { font-family:math; position: fixed;top:29%;left: 9%;transform: rotate(-50deg);font-size: 300px;opacity: 0.2;}</style></head><body>' + response + '</body></html>';
// Create a new window for printing
var printWindow = window.open('', '_blank');
var printWindow = window.open('', '_blank');
// Write the modified content to the new window
printWindow.document.open();
printWindow.document.write(modifiedContent);
printWindow.document.close();
printWindow.document.open();
printWindow.document.write(modifiedContent);
printWindow.document.close();
// Wait for content to load before printing
printWindow.onload = function() {
printWindow.focus(); // Focus the new window
printWindow.print(); // Print the content
printWindow.close(); // Close the window after printing
};
// Wait for content to load before printing
printWindow.onload = function() {
printWindow.focus(); // Focus the new window
printWindow.print(); // Print the content
printWindow.close(); // Close the window after printing
};
}
})
});
});
</script>

12
composer.lock generated
View File

@ -70,16 +70,16 @@
},
{
"name": "mpdf/mpdf",
"version": "v8.2.0",
"version": "v8.2.3",
"source": {
"type": "git",
"url": "https://github.com/mpdf/mpdf.git",
"reference": "170a236a588d177c2aa7447ce490a030ca68e6f4"
"reference": "6f723a96becf989a831e38caf758d28364a69939"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mpdf/mpdf/zipball/170a236a588d177c2aa7447ce490a030ca68e6f4",
"reference": "170a236a588d177c2aa7447ce490a030ca68e6f4",
"url": "https://api.github.com/repos/mpdf/mpdf/zipball/6f723a96becf989a831e38caf758d28364a69939",
"reference": "6f723a96becf989a831e38caf758d28364a69939",
"shasum": ""
},
"require": {
@ -89,7 +89,7 @@
"mpdf/psr-log-aware-trait": "^2.0 || ^3.0",
"myclabs/deep-copy": "^1.7",
"paragonie/random_compat": "^1.4|^2.0|^9.99.99",
"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0",
"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
"psr/http-message": "^1.0 || ^2.0",
"psr/log": "^1.0 || ^2.0 || ^3.0",
"setasign/fpdi": "^2.1"
@ -147,7 +147,7 @@
"type": "custom"
}
],
"time": "2023-09-01T11:44:52+00:00"
"time": "2024-03-11T12:55:53+00:00"
},
{
"name": "mpdf/psr-http-message-shim",

View File

@ -45,35 +45,34 @@ class ClassLoader
/** @var \Closure(string):void */
private static $includeFile;
/** @var ?string */
/** @var string|null */
private $vendorDir;
// PSR-4
/**
* @var array[]
* @psalm-var array<string, array<string, int>>
* @var array<string, array<string, int>>
*/
private $prefixLengthsPsr4 = array();
/**
* @var array[]
* @psalm-var array<string, array<int, string>>
* @var array<string, list<string>>
*/
private $prefixDirsPsr4 = array();
/**
* @var array[]
* @psalm-var array<string, string>
* @var list<string>
*/
private $fallbackDirsPsr4 = array();
// PSR-0
/**
* @var array[]
* @psalm-var array<string, array<string, string[]>>
* List of PSR-0 prefixes
*
* Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
*
* @var array<string, array<string, list<string>>>
*/
private $prefixesPsr0 = array();
/**
* @var array[]
* @psalm-var array<string, string>
* @var list<string>
*/
private $fallbackDirsPsr0 = array();
@ -81,8 +80,7 @@ class ClassLoader
private $useIncludePath = false;
/**
* @var string[]
* @psalm-var array<string, string>
* @var array<string, string>
*/
private $classMap = array();
@ -90,21 +88,20 @@ class ClassLoader
private $classMapAuthoritative = false;
/**
* @var bool[]
* @psalm-var array<string, bool>
* @var array<string, bool>
*/
private $missingClasses = array();
/** @var ?string */
/** @var string|null */
private $apcuPrefix;
/**
* @var self[]
* @var array<string, self>
*/
private static $registeredLoaders = array();
/**
* @param ?string $vendorDir
* @param string|null $vendorDir
*/
public function __construct($vendorDir = null)
{
@ -113,7 +110,7 @@ class ClassLoader
}
/**
* @return string[]
* @return array<string, list<string>>
*/
public function getPrefixes()
{
@ -125,8 +122,7 @@ class ClassLoader
}
/**
* @return array[]
* @psalm-return array<string, array<int, string>>
* @return array<string, list<string>>
*/
public function getPrefixesPsr4()
{
@ -134,8 +130,7 @@ class ClassLoader
}
/**
* @return array[]
* @psalm-return array<string, string>
* @return list<string>
*/
public function getFallbackDirs()
{
@ -143,8 +138,7 @@ class ClassLoader
}
/**
* @return array[]
* @psalm-return array<string, string>
* @return list<string>
*/
public function getFallbackDirsPsr4()
{
@ -152,8 +146,7 @@ class ClassLoader
}
/**
* @return string[] Array of classname => path
* @psalm-return array<string, string>
* @return array<string, string> Array of classname => path
*/
public function getClassMap()
{
@ -161,8 +154,7 @@ class ClassLoader
}
/**
* @param string[] $classMap Class to filename map
* @psalm-param array<string, string> $classMap
* @param array<string, string> $classMap Class to filename map
*
* @return void
*/
@ -179,24 +171,25 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
* @param string $prefix The prefix
* @param string[]|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
* @param string $prefix The prefix
* @param list<string>|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
*
* @return void
*/
public function add($prefix, $paths, $prepend = false)
{
$paths = (array) $paths;
if (!$prefix) {
if ($prepend) {
$this->fallbackDirsPsr0 = array_merge(
(array) $paths,
$paths,
$this->fallbackDirsPsr0
);
} else {
$this->fallbackDirsPsr0 = array_merge(
$this->fallbackDirsPsr0,
(array) $paths
$paths
);
}
@ -205,19 +198,19 @@ class ClassLoader
$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
$this->prefixesPsr0[$first][$prefix] = $paths;
return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
(array) $paths,
$paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
(array) $paths
$paths
);
}
}
@ -226,9 +219,9 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param string[]|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param list<string>|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
*
@ -236,17 +229,18 @@ class ClassLoader
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
$paths = (array) $paths;
if (!$prefix) {
// Register directories for the root namespace.
if ($prepend) {
$this->fallbackDirsPsr4 = array_merge(
(array) $paths,
$paths,
$this->fallbackDirsPsr4
);
} else {
$this->fallbackDirsPsr4 = array_merge(
$this->fallbackDirsPsr4,
(array) $paths
$paths
);
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
@ -256,18 +250,18 @@ class ClassLoader
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
$this->prefixDirsPsr4[$prefix] = $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
(array) $paths,
$paths,
$this->prefixDirsPsr4[$prefix]
);
} else {
// Append directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
$this->prefixDirsPsr4[$prefix],
(array) $paths
$paths
);
}
}
@ -276,8 +270,8 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
* @param string $prefix The prefix
* @param string[]|string $paths The PSR-0 base directories
* @param string $prefix The prefix
* @param list<string>|string $paths The PSR-0 base directories
*
* @return void
*/
@ -294,8 +288,8 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param string[]|string $paths The PSR-4 base directories
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param list<string>|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
*
@ -429,7 +423,8 @@ class ClassLoader
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
(self::$includeFile)($file);
$includeFile = self::$includeFile;
$includeFile($file);
return true;
}
@ -480,9 +475,9 @@ class ClassLoader
}
/**
* Returns the currently registered loaders indexed by their corresponding vendor directories.
* Returns the currently registered loaders keyed by their corresponding vendor directories.
*
* @return self[]
* @return array<string, self>
*/
public static function getRegisteredLoaders()
{
@ -560,7 +555,10 @@ class ClassLoader
return false;
}
private static function initializeIncludeClosure(): void
/**
* @return void
*/
private static function initializeIncludeClosure()
{
if (self::$includeFile !== null) {
return;
@ -574,8 +572,8 @@ class ClassLoader
* @param string $file
* @return void
*/
self::$includeFile = static function($file) {
self::$includeFile = \Closure::bind(static function($file) {
include $file;
};
}, null, null);
}
}

View File

@ -98,7 +98,7 @@ class InstalledVersions
{
foreach (self::getInstalled() as $installed) {
if (isset($installed['versions'][$packageName])) {
return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
}
}
@ -119,7 +119,7 @@ class InstalledVersions
*/
public static function satisfies(VersionParser $parser, $packageName, $constraint)
{
$constraint = $parser->parseConstraints($constraint);
$constraint = $parser->parseConstraints((string) $constraint);
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
return $provided->matches($constraint);
@ -328,7 +328,9 @@ class InstalledVersions
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
}
@ -340,12 +342,17 @@ class InstalledVersions
// only require the installed.php file if this file is loaded from its dumped location,
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
if (substr(__DIR__, -8, 1) !== 'C') {
self::$installed = require __DIR__ . '/installed.php';
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require __DIR__ . '/installed.php';
self::$installed = $required;
} else {
self::$installed = array();
}
}
$installed[] = self::$installed;
if (self::$installed !== array()) {
$installed[] = self::$installed;
}
return $installed;
}

View File

@ -7,6 +7,7 @@ $baseDir = dirname($vendorDir);
return array(
'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
'CodeIgniter\\API\\ResponseTrait' => $baseDir . '/system/API/ResponseTrait.php',
'CodeIgniter\\Autoloader\\Autoloader' => $baseDir . '/system/Autoloader/Autoloader.php',
'CodeIgniter\\Autoloader\\FileLocator' => $baseDir . '/system/Autoloader/FileLocator.php',
@ -1264,6 +1265,7 @@ return array(
'Nexus\\CsConfig\\Ruleset\\AbstractRuleset' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/AbstractRuleset.php',
'Nexus\\CsConfig\\Ruleset\\Nexus80' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/Nexus80.php',
'Nexus\\CsConfig\\Ruleset\\Nexus81' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/Nexus81.php',
'Nexus\\CsConfig\\Ruleset\\Nexus82' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/Nexus82.php',
'Nexus\\CsConfig\\Ruleset\\RulesetInterface' => $vendorDir . '/nexusphp/cs-config/src/Ruleset/RulesetInterface.php',
'Nexus\\CsConfig\\Test\\AbstractCustomFixerTestCase' => $vendorDir . '/nexusphp/cs-config/src/Test/AbstractCustomFixerTestCase.php',
'Nexus\\CsConfig\\Test\\AbstractRulesetTestCase' => $vendorDir . '/nexusphp/cs-config/src/Test/AbstractRulesetTestCase.php',
@ -1725,6 +1727,12 @@ return array(
'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php',
'PhpCsFixer\\Console\\ConfigurationResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php',
'PhpCsFixer\\Console\\Output\\ErrorOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php',
'PhpCsFixer\\Console\\Output\\OutputContext' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php',
'PhpCsFixer\\Console\\Output\\Progress\\DotsOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php',
'PhpCsFixer\\Console\\Output\\Progress\\NullOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php',
'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php',
'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php',
'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputType' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php',
'PhpCsFixer\\Console\\Report\\FixReport\\CheckstyleReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php',
'PhpCsFixer\\Console\\Report\\FixReport\\GitlabReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php',
'PhpCsFixer\\Console\\Report\\FixReport\\JsonReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php',
@ -1756,6 +1764,7 @@ return array(
'PhpCsFixer\\DocBlock\\Tag' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php',
'PhpCsFixer\\DocBlock\\TagComparator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php',
'PhpCsFixer\\DocBlock\\TypeExpression' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php',
'PhpCsFixer\\Doctrine\\Annotation\\DocLexer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php',
'PhpCsFixer\\Doctrine\\Annotation\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php',
'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php',
'PhpCsFixer\\Documentation\\DocumentationLocator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php',
@ -1810,8 +1819,10 @@ return array(
'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\ReturnToYieldFromFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php',
'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php',
'PhpCsFixer\\Fixer\\Basic\\CurlyBracesPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php',
'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php',
@ -1820,6 +1831,7 @@ return array(
'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php',
'PhpCsFixer\\Fixer\\Basic\\OctalNotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php',
'PhpCsFixer\\Fixer\\Basic\\PsrAutoloadingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php',
'PhpCsFixer\\Fixer\\Basic\\SingleLineEmptyBodyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php',
'PhpCsFixer\\Fixer\\Casing\\ClassReferenceNameCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php',
'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php',
'PhpCsFixer\\Fixer\\Casing\\IntegerLiteralCaseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php',
@ -1847,6 +1859,7 @@ return array(
'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTraitsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php',
@ -1934,9 +1947,12 @@ return array(
'PhpCsFixer\\Fixer\\LanguageConstruct\\GetClassToClassKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\NullableTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAfterConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAroundConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php',
'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\CleanNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php',
@ -2003,6 +2019,7 @@ return array(
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderByValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocParamOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php',
@ -2051,7 +2068,9 @@ return array(
'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\SpacesInsideParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\StatementIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php',
'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php',
'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php',
@ -2077,6 +2096,8 @@ return array(
'PhpCsFixer\\RuleSet\\RuleSetInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php',
'PhpCsFixer\\RuleSet\\RuleSets' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php',
'PhpCsFixer\\RuleSet\\Sets\\DoctrineAnnotationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php',
'PhpCsFixer\\RuleSet\\Sets\\PERRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PERSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHP54MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php',
@ -2092,6 +2113,7 @@ return array(
'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHPUnit100MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHPUnit30MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHPUnit32MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHPUnit35MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php',
@ -2125,6 +2147,7 @@ return array(
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AbstractControlCaseStructuresAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\CaseAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DataProviderAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DefaultAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\EnumAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\MatchAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php',
@ -2139,6 +2162,7 @@ return array(
'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php',
@ -2157,6 +2181,7 @@ return array(
'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\ConstructorPromotionTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\DisjunctiveNormalFormTypeParenthesisTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\FirstClassCallableTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\NameQualifiedTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php',
@ -2532,11 +2557,13 @@ return array(
'Predis\\Command\\Redis\\BloomFilter\\BFRESERVE' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFRESERVE.php',
'Predis\\Command\\Redis\\BloomFilter\\BFSCANDUMP' => $vendorDir . '/predis/predis/src/Command/Redis/BloomFilter/BFSCANDUMP.php',
'Predis\\Command\\Redis\\CLIENT' => $vendorDir . '/predis/predis/src/Command/Redis/CLIENT.php',
'Predis\\Command\\Redis\\CLUSTER' => $vendorDir . '/predis/predis/src/Command/Redis/CLUSTER.php',
'Predis\\Command\\Redis\\COMMAND' => $vendorDir . '/predis/predis/src/Command/Redis/COMMAND.php',
'Predis\\Command\\Redis\\CONFIG' => $vendorDir . '/predis/predis/src/Command/Redis/CONFIG.php',
'Predis\\Command\\Redis\\COPY' => $vendorDir . '/predis/predis/src/Command/Redis/COPY.php',
'Predis\\Command\\Redis\\Container\\ACL' => $vendorDir . '/predis/predis/src/Command/Redis/Container/ACL.php',
'Predis\\Command\\Redis\\Container\\AbstractContainer' => $vendorDir . '/predis/predis/src/Command/Redis/Container/AbstractContainer.php',
'Predis\\Command\\Redis\\Container\\CLUSTER' => $vendorDir . '/predis/predis/src/Command/Redis/Container/CLUSTER.php',
'Predis\\Command\\Redis\\Container\\ContainerFactory' => $vendorDir . '/predis/predis/src/Command/Redis/Container/ContainerFactory.php',
'Predis\\Command\\Redis\\Container\\ContainerInterface' => $vendorDir . '/predis/predis/src/Command/Redis/Container/ContainerInterface.php',
'Predis\\Command\\Redis\\Container\\FunctionContainer' => $vendorDir . '/predis/predis/src/Command/Redis/Container/FunctionContainer.php',
@ -3447,7 +3474,6 @@ return array(
'setasign\\Fpdi\\PdfParser\\Filter\\FlateException' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/FlateException.php',
'setasign\\Fpdi\\PdfParser\\Filter\\Lzw' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/Lzw.php',
'setasign\\Fpdi\\PdfParser\\Filter\\LzwException' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/LzwException.php',
'setasign\\Fpdi\\PdfParser\\PdfParser' => $vendorDir . '/setasign/fpdi/src/PdfParser/PdfParser.php',
'setasign\\Fpdi\\PdfParser\\PdfParserException' => $vendorDir . '/setasign/fpdi/src/PdfParser/PdfParserException.php',
'setasign\\Fpdi\\PdfParser\\StreamReader' => $vendorDir . '/setasign/fpdi/src/PdfParser/StreamReader.php',
'setasign\\Fpdi\\PdfParser\\Tokenizer' => $vendorDir . '/setasign/fpdi/src/PdfParser/Tokenizer.php',

View File

@ -34,15 +34,15 @@ class ComposerAutoloaderInitaf5d45949d7526726de1c031a6bdb085
$loader->register(true);
$filesToLoad = \Composer\Autoload\ComposerStaticInitaf5d45949d7526726de1c031a6bdb085::$files;
$requireFile = static function ($fileIdentifier, $file) {
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
require $file;
}
};
}, null, null);
foreach ($filesToLoad as $fileIdentifier => $file) {
($requireFile)($fileIdentifier, $file);
$requireFile($fileIdentifier, $file);
}
return $loader;

View File

@ -259,6 +259,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
public static $classMap = array (
'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
'CodeIgniter\\API\\ResponseTrait' => __DIR__ . '/../..' . '/system/API/ResponseTrait.php',
'CodeIgniter\\Autoloader\\Autoloader' => __DIR__ . '/../..' . '/system/Autoloader/Autoloader.php',
'CodeIgniter\\Autoloader\\FileLocator' => __DIR__ . '/../..' . '/system/Autoloader/FileLocator.php',
@ -1516,6 +1517,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'Nexus\\CsConfig\\Ruleset\\AbstractRuleset' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/AbstractRuleset.php',
'Nexus\\CsConfig\\Ruleset\\Nexus80' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/Nexus80.php',
'Nexus\\CsConfig\\Ruleset\\Nexus81' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/Nexus81.php',
'Nexus\\CsConfig\\Ruleset\\Nexus82' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/Nexus82.php',
'Nexus\\CsConfig\\Ruleset\\RulesetInterface' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Ruleset/RulesetInterface.php',
'Nexus\\CsConfig\\Test\\AbstractCustomFixerTestCase' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Test/AbstractCustomFixerTestCase.php',
'Nexus\\CsConfig\\Test\\AbstractRulesetTestCase' => __DIR__ . '/..' . '/nexusphp/cs-config/src/Test/AbstractRulesetTestCase.php',
@ -1977,6 +1979,12 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php',
'PhpCsFixer\\Console\\ConfigurationResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php',
'PhpCsFixer\\Console\\Output\\ErrorOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php',
'PhpCsFixer\\Console\\Output\\OutputContext' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php',
'PhpCsFixer\\Console\\Output\\Progress\\DotsOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php',
'PhpCsFixer\\Console\\Output\\Progress\\NullOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php',
'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php',
'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php',
'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputType' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php',
'PhpCsFixer\\Console\\Report\\FixReport\\CheckstyleReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php',
'PhpCsFixer\\Console\\Report\\FixReport\\GitlabReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php',
'PhpCsFixer\\Console\\Report\\FixReport\\JsonReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php',
@ -2008,6 +2016,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\DocBlock\\Tag' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php',
'PhpCsFixer\\DocBlock\\TagComparator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php',
'PhpCsFixer\\DocBlock\\TypeExpression' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php',
'PhpCsFixer\\Doctrine\\Annotation\\DocLexer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php',
'PhpCsFixer\\Doctrine\\Annotation\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php',
'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php',
'PhpCsFixer\\Documentation\\DocumentationLocator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php',
@ -2062,8 +2071,10 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\ReturnToYieldFromFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php',
'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php',
'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php',
'PhpCsFixer\\Fixer\\Basic\\CurlyBracesPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php',
'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php',
@ -2072,6 +2083,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php',
'PhpCsFixer\\Fixer\\Basic\\OctalNotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php',
'PhpCsFixer\\Fixer\\Basic\\PsrAutoloadingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php',
'PhpCsFixer\\Fixer\\Basic\\SingleLineEmptyBodyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php',
'PhpCsFixer\\Fixer\\Casing\\ClassReferenceNameCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php',
'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php',
'PhpCsFixer\\Fixer\\Casing\\IntegerLiteralCaseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php',
@ -2099,6 +2111,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTraitsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php',
'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php',
@ -2186,9 +2199,12 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Fixer\\LanguageConstruct\\GetClassToClassKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\NullableTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAfterConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php',
'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAroundConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php',
'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\CleanNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php',
'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php',
@ -2255,6 +2271,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderByValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocParamOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php',
'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php',
@ -2303,7 +2320,9 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\SpacesInsideParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\StatementIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php',
'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php',
'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php',
'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php',
@ -2329,6 +2348,8 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\RuleSet\\RuleSetInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php',
'PhpCsFixer\\RuleSet\\RuleSets' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php',
'PhpCsFixer\\RuleSet\\Sets\\DoctrineAnnotationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php',
'PhpCsFixer\\RuleSet\\Sets\\PERRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PERSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHP54MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php',
@ -2344,6 +2365,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHPUnit100MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHPUnit30MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHPUnit32MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php',
'PhpCsFixer\\RuleSet\\Sets\\PHPUnit35MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php',
@ -2377,6 +2399,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AbstractControlCaseStructuresAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\CaseAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DataProviderAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DefaultAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\EnumAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\MatchAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php',
@ -2391,6 +2414,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php',
'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php',
@ -2409,6 +2433,7 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\ConstructorPromotionTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\DisjunctiveNormalFormTypeParenthesisTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\FirstClassCallableTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php',
'PhpCsFixer\\Tokenizer\\Transformer\\NameQualifiedTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php',
@ -2784,11 +2809,13 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'Predis\\Command\\Redis\\BloomFilter\\BFRESERVE' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFRESERVE.php',
'Predis\\Command\\Redis\\BloomFilter\\BFSCANDUMP' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/BloomFilter/BFSCANDUMP.php',
'Predis\\Command\\Redis\\CLIENT' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CLIENT.php',
'Predis\\Command\\Redis\\CLUSTER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CLUSTER.php',
'Predis\\Command\\Redis\\COMMAND' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/COMMAND.php',
'Predis\\Command\\Redis\\CONFIG' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/CONFIG.php',
'Predis\\Command\\Redis\\COPY' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/COPY.php',
'Predis\\Command\\Redis\\Container\\ACL' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Container/ACL.php',
'Predis\\Command\\Redis\\Container\\AbstractContainer' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Container/AbstractContainer.php',
'Predis\\Command\\Redis\\Container\\CLUSTER' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Container/CLUSTER.php',
'Predis\\Command\\Redis\\Container\\ContainerFactory' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Container/ContainerFactory.php',
'Predis\\Command\\Redis\\Container\\ContainerInterface' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Container/ContainerInterface.php',
'Predis\\Command\\Redis\\Container\\FunctionContainer' => __DIR__ . '/..' . '/predis/predis/src/Command/Redis/Container/FunctionContainer.php',
@ -3699,7 +3726,6 @@ class ComposerStaticInitaf5d45949d7526726de1c031a6bdb085
'setasign\\Fpdi\\PdfParser\\Filter\\FlateException' => __DIR__ . '/..' . '/setasign/fpdi/src/PdfParser/Filter/FlateException.php',
'setasign\\Fpdi\\PdfParser\\Filter\\Lzw' => __DIR__ . '/..' . '/setasign/fpdi/src/PdfParser/Filter/Lzw.php',
'setasign\\Fpdi\\PdfParser\\Filter\\LzwException' => __DIR__ . '/..' . '/setasign/fpdi/src/PdfParser/Filter/LzwException.php',
'setasign\\Fpdi\\PdfParser\\PdfParser' => __DIR__ . '/..' . '/setasign/fpdi/src/PdfParser/PdfParser.php',
'setasign\\Fpdi\\PdfParser\\PdfParserException' => __DIR__ . '/..' . '/setasign/fpdi/src/PdfParser/PdfParserException.php',
'setasign\\Fpdi\\PdfParser\\StreamReader' => __DIR__ . '/..' . '/setasign/fpdi/src/PdfParser/StreamReader.php',
'setasign\\Fpdi\\PdfParser\\Tokenizer' => __DIR__ . '/..' . '/setasign/fpdi/src/PdfParser/Tokenizer.php',

View File

@ -713,17 +713,17 @@
},
{
"name": "mpdf/mpdf",
"version": "v8.2.0",
"version_normalized": "8.2.0.0",
"version": "v8.2.3",
"version_normalized": "8.2.3.0",
"source": {
"type": "git",
"url": "https://github.com/mpdf/mpdf.git",
"reference": "170a236a588d177c2aa7447ce490a030ca68e6f4"
"reference": "6f723a96becf989a831e38caf758d28364a69939"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mpdf/mpdf/zipball/170a236a588d177c2aa7447ce490a030ca68e6f4",
"reference": "170a236a588d177c2aa7447ce490a030ca68e6f4",
"url": "https://api.github.com/repos/mpdf/mpdf/zipball/6f723a96becf989a831e38caf758d28364a69939",
"reference": "6f723a96becf989a831e38caf758d28364a69939",
"shasum": ""
},
"require": {
@ -733,7 +733,7 @@
"mpdf/psr-log-aware-trait": "^2.0 || ^3.0",
"myclabs/deep-copy": "^1.7",
"paragonie/random_compat": "^1.4|^2.0|^9.99.99",
"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0",
"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
"psr/http-message": "^1.0 || ^2.0",
"psr/log": "^1.0 || ^2.0 || ^3.0",
"setasign/fpdi": "^2.1"
@ -750,7 +750,7 @@
"ext-xml": "Needed mainly for SVG manipulation",
"ext-zlib": "Needed for compression of embedded resources, such as fonts"
},
"time": "2023-09-01T11:44:52+00:00",
"time": "2024-03-11T12:55:53+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {

View File

@ -3,7 +3,7 @@
'name' => 'codeigniter4/framework',
'pretty_version' => 'dev-uat',
'version' => 'dev-uat',
'reference' => '32b69272aaf8c86b89bb6893fae5d885a379d060',
'reference' => 'ad584d4fdcf431008b5f96133e7a38072d91a972',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@ -22,7 +22,7 @@
'codeigniter4/framework' => array(
'pretty_version' => 'dev-uat',
'version' => 'dev-uat',
'reference' => '32b69272aaf8c86b89bb6893fae5d885a379d060',
'reference' => 'ad584d4fdcf431008b5f96133e7a38072d91a972',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@ -110,9 +110,9 @@
'dev_requirement' => true,
),
'mpdf/mpdf' => array(
'pretty_version' => 'v8.2.0',
'version' => '8.2.0.0',
'reference' => '170a236a588d177c2aa7447ce490a030ca68e6f4',
'pretty_version' => 'v8.2.3',
'version' => '8.2.3.0',
'reference' => '6f723a96becf989a831e38caf758d28364a69939',
'type' => 'library',
'install_path' => __DIR__ . '/../mpdf/mpdf',
'aliases' => array(),

View File

@ -7,7 +7,7 @@ body:
label: Guidelines
description: Please confirm this is a bug report and not general troubleshooting.
options:
- label: I understand that [if I fail to provide all required details, this issue may be closed without review](https://github.com/mpdf/mpdf/blob/development/.github/CONTRIBUTING.md).
- label: I understand that [if I fail to adhere to contribution guidelines and/or fail to provide all required details, this issue may be closed without review](https://github.com/mpdf/mpdf/blob/development/.github/CONTRIBUTING.md).
required: true
- type: textarea

View File

@ -2,5 +2,4 @@ How to disclose potential security issues
============
As mPDF does not have a domain or a dedicated contact apart from its Github repository, to prevent
disclosing maintainers' contacts publicly, please create an Issue about the security issue with means to contact you.
We will reach out to you as soon as possible.
disclosing maintainers' contacts publicly, please use [GitHub's Security Advisories system](https://github.com/mpdf/mpdf/security/advisories).

View File

@ -25,7 +25,7 @@ jobs:
steps:
- name: "Checkout"
uses: "actions/checkout@v3"
uses: "actions/checkout@v4"
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"

View File

@ -26,7 +26,7 @@ jobs:
steps:
- name: "Checkout"
uses: "actions/checkout@v3"
uses: "actions/checkout@v4"
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"

View File

@ -31,11 +31,12 @@ jobs:
- "8.0"
- "8.1"
- "8.2"
- "8.3"
operating-system: [ubuntu-latest, windows-latest]
steps:
- name: "Checkout"
uses: "actions/checkout@v3"
uses: "actions/checkout@v4"
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
@ -50,4 +51,4 @@ jobs:
run: "composer install --no-interaction --no-progress"
- name: "Tests"
run: composer test
run: composer test

View File

@ -4,6 +4,8 @@ mPDF 8.2.x
New features
------------
* Watermark text can now be colored using \Mpdf\Watermark DTO. \Mpdf\WatermarkImage DTO for images. (#1876)
* Added support for `psr/http-message` v2 without dropping v1. (@markdorison, @apotek, @greg-1-anderson, @NigelCunningham #1907)
* PHP 8.3 support in mPDF 8.2.1
mPDF 8.1.x
===========================
@ -17,7 +19,6 @@ New features
* Set font-size to `auto` in textarea and input in active forms to resize the font-size (@ChrisB9, #1721)
* PHP 8.2 support in mPDF 8.1.3
* Added support for `psr/log` v3 without dropping v2. (@markdorison, @apotek, @greg-1-anderson, #1857)
* Added support for `psr/http-message` v2 without dropping v1. (@markdorison, @apotek, @greg-1-anderson, @NigelCunningham #1907)
Bugfixes
--------

View File

@ -24,6 +24,7 @@ PHP versions and extensions
- `PHP 8.0` is supported since `mPDF v8.0.10`
- `PHP 8.1` is supported as of `mPDF v8.0.13`
- `PHP 8.2` is supported as of `mPDF v8.1.3`
- `PHP 8.3` is supported as of `mPDF v8.2.1`
PHP `mbstring` and `gd` extensions have to be loaded.

View File

@ -21,7 +21,7 @@
"docs": "http://mpdf.github.io"
},
"require": {
"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0",
"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
"ext-gd": "*",
"ext-mbstring": "*",
"mpdf/psr-http-message-shim": "^1.0 || ^2.0",

View File

@ -86,7 +86,7 @@ class AssetFetcher implements \Psr\Log\LoggerAwareInterface
/** @var \Mpdf\PsrHttpMessageShim\Response $response */
$response = $this->http->sendRequest(new Request('GET', $path));
if ($response->getStatusCode() !== 200) {
if (!str_starts_with((string) $response->getStatusCode(), '2')) {
$message = sprintf('Non-OK HTTP response "%s" on fetching remote content "%s" because of an error', $response->getStatusCode(), $path);
if ($this->mpdf->debug) {

View File

@ -193,9 +193,8 @@ class ColorConverter
} elseif (strpos($color, '#') === 0) { // case of #nnnnnn or #nnn
$c = $this->processHashColor($color);
} elseif (preg_match('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\((.*?)\)/', $color, $m)) {
// quickfix for color containing CSS variable
preg_match('/var\(--([a-z-_]+)\)/i', $m[0], $var);
if ($var) {
// ignore colors containing CSS variables
if (str_starts_with(mb_strtolower($m[2]), 'var(--')) {
$m[2] = '0, 0, 0, 100';
}
$c = $this->processModeColor($m[1], explode(',', $m[2]));

View File

@ -98,7 +98,7 @@ class CurlHttpClient implements \Mpdf\Http\ClientInterface, \Psr\Log\LoggerAware
}
$info = curl_getinfo($ch);
if (isset($info['http_code']) && $info['http_code'] !== 200) {
if (isset($info['http_code']) && !str_starts_with((string) $info['http_code'], '2')) {
$message = sprintf('HTTP error: %d', $info['http_code']);
$this->logger->error($message, ['context' => LogContext::REMOTE_CONTENT]);

View File

@ -32,7 +32,7 @@ class Mpdf implements \Psr\Log\LoggerAwareInterface
use FpdiTrait;
use MpdfPsrLogAwareTrait;
const VERSION = '8.2.0';
const VERSION = '8.2.3';
const SCALE = 72 / 25.4;
@ -13231,7 +13231,7 @@ class Mpdf implements \Psr\Log\LoggerAwareInterface
/* -- WATERMARK -- */
if (($this->watermarkText) && ($this->showWatermarkText)) {
$this->watermark($this->watermarkText, $this->watermarkAngle, 120, $this->watermarkTextAlpha); // Watermark text
$this->watermark($this->watermarkText, $this->watermarkAngle, is_int($this->watermark_size) ? $this->watermark_size : 120, $this->watermarkTextAlpha); // Watermark text
}
if (($this->watermarkImage) && ($this->showWatermarkImage)) {
$this->watermarkImg($this->watermarkImage, $this->watermarkImageAlpha); // Watermark image

View File

@ -1539,6 +1539,10 @@ class Otl
continue;
}
if (!isset($this->OTLdata[$ptr + 1])) {
continue;
}
$nextGlyph = $this->OTLdata[$ptr + 1]['hex'];
$nextGID = $this->OTLdata[$ptr + 1]['uni'];
if (isset($this->GSLuCoverage[$lu][$c][$nextGID])) {

View File

@ -27,7 +27,8 @@ class Option extends Tag
$attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mpdf->mb_enc, 'UTF-8');
}
}
$this->mpdf->selectoption['currentVAL'] = $attr['VALUE'];
$this->mpdf->selectoption['currentVAL'] = isset($attr['VALUE']) ? $attr['VALUE'] : $ahtml[$ihtml + 1];
}
public function close(&$ahtml, &$ihtml)