mirror of https://github.com/itflow-org/itflow
Fix dupe ticket numbering when being created in parallel Atomically update and get the next ticket number in one SQL query.
This commit is contained in:
parent
c486e3fe62
commit
f09d8ffe05
|
|
@ -50,9 +50,16 @@ if (isset($_POST['add_ticket'])) {
|
||||||
$contact = intval($row['contact_id']);
|
$contact = intval($row['contact_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Get the next Ticket Number and add 1 for the new ticket number
|
// Atomically increment and get the new ticket number
|
||||||
$ticket_number = $config_ticket_next_number;
|
mysqli_query($mysqli, "
|
||||||
$new_config_ticket_next_number = $config_ticket_next_number + 1;
|
UPDATE settings
|
||||||
|
SET
|
||||||
|
config_ticket_next_number = LAST_INSERT_ID(config_ticket_next_number),
|
||||||
|
config_ticket_next_number = config_ticket_next_number + 1
|
||||||
|
WHERE company_id = 1
|
||||||
|
");
|
||||||
|
|
||||||
|
$ticket_number = mysqli_insert_id($mysqli);
|
||||||
|
|
||||||
// Sanitize Config Vars from get_settings.php and Session Vars from check_login.php
|
// Sanitize Config Vars from get_settings.php and Session Vars from check_login.php
|
||||||
$config_ticket_prefix = sanitizeInput($config_ticket_prefix);
|
$config_ticket_prefix = sanitizeInput($config_ticket_prefix);
|
||||||
|
|
@ -63,8 +70,6 @@ if (isset($_POST['add_ticket'])) {
|
||||||
//Generate a unique URL key for clients to access
|
//Generate a unique URL key for clients to access
|
||||||
$url_key = randomString(156);
|
$url_key = randomString(156);
|
||||||
|
|
||||||
mysqli_query($mysqli, "UPDATE settings SET config_ticket_next_number = $new_config_ticket_next_number WHERE company_id = 1");
|
|
||||||
|
|
||||||
mysqli_query($mysqli, "INSERT INTO tickets SET ticket_prefix = '$config_ticket_prefix', ticket_number = $ticket_number, ticket_source = 'Agent', ticket_category = $category_id, ticket_subject = '$subject', ticket_details = '$details', ticket_priority = '$priority', ticket_billable = '$billable', ticket_status = '$ticket_status', ticket_vendor_ticket_number = '$vendor_ticket_number', ticket_vendor_id = $vendor_id, ticket_location_id = $location_id, ticket_asset_id = $asset_id, ticket_created_by = $session_user_id, ticket_assigned_to = $assigned_to, ticket_contact_id = $contact, ticket_url_key = '$url_key', ticket_due_at = $due, ticket_client_id = $client_id, ticket_invoice_id = 0, ticket_project_id = $project_id");
|
mysqli_query($mysqli, "INSERT INTO tickets SET ticket_prefix = '$config_ticket_prefix', ticket_number = $ticket_number, ticket_source = 'Agent', ticket_category = $category_id, ticket_subject = '$subject', ticket_details = '$details', ticket_priority = '$priority', ticket_billable = '$billable', ticket_status = '$ticket_status', ticket_vendor_ticket_number = '$vendor_ticket_number', ticket_vendor_id = $vendor_id, ticket_location_id = $location_id, ticket_asset_id = $asset_id, ticket_created_by = $session_user_id, ticket_assigned_to = $assigned_to, ticket_contact_id = $contact, ticket_url_key = '$url_key', ticket_due_at = $due, ticket_client_id = $client_id, ticket_invoice_id = 0, ticket_project_id = $project_id");
|
||||||
|
|
||||||
$ticket_id = mysqli_insert_id($mysqli);
|
$ticket_id = mysqli_insert_id($mysqli);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue