Skip to content

Cancel Submissions

The ERGANI system allows cancellation of certain submitted declarations. This is useful when corrections are needed or submissions were made in error.

Overview

PropertyValue
ClassCancelSubmittedDocument
EndpointDocuments/CancelSubmittedDocument
HTTP MethodPOST

Limited Scope

Cancellation is only available for specific document types. Currently, it is supported for:

  • Work Time Organization - Leaves (Οργάνωση Χρόνου Εργασίας – Άδειες)
  • Work Time Organization - Leaves Correction (Οργάνωση Χρόνου Εργασίας – Άδειες ΟΡΘΗ ΕΠΑΝΑΛΗΨΗ)

Other document types (E3, E5, E6, E7, MA, Work Cards) cannot be cancelled via this method.

Basic Usage

php
use OxygenSuite\OxygenErgani\Http\Documents\CancelSubmittedDocument;

$cancel = new CancelSubmittedDocument($accessToken, $environment);

$success = $cancel->handle(
    documentType: 'WTD',              // Document type code
    protocol: 'ΟΧΕ123456',            // Protocol number from submission
    submissionDate: '20250115'         // Date in yyyymmdd format
);

if ($success) {
    echo "Submission cancelled successfully";
} else {
    echo "Cancellation failed";
}

Parameters

ParameterTypeDescription
$documentTypestringThe document type code (action code from submission)
$protocolstringProtocol number received from original submission
$submissionDateDateTime|int|stringSubmission date in yyyymmdd format

Date Formats

The submissionDate parameter accepts multiple formats:

php
use DateTime;

// String format (recommended)
$cancel->handle('WTD', 'ΟΧΕ123456', '20250115');

// DateTime object (automatically formatted)
$date = new DateTime('2025-01-15');
$cancel->handle('WTD', 'ΟΧΕ123456', $date);

// Integer format
$cancel->handle('WTD', 'ΟΧΕ123456', 20250115);

Getting Submission Details

When you submit a document, the response includes the protocol and submission date needed for cancellation:

php
use OxygenSuite\OxygenErgani\Http\Documents\WorkTime\DailyWorkTime;
use OxygenSuite\OxygenErgani\Models\WorkTime\WorkTime;

// Original submission
$workTime = WorkTime::make()
    // ... set fields ...
;

$response = (new DailyWorkTime())->handle($workTime);

// Store these for potential cancellation
foreach ($response as $result) {
    $protocol = $result->protocol;           // e.g., 'ΟΧΕ123456'
    $submissionDate = $result->submissionDate; // DateTime object

    // Save to database for later reference
    saveSubmission([
        'document_type' => 'WTD',
        'protocol' => $protocol,
        'submission_date' => $submissionDate->format('Ymd'),
    ]);
}

Complete Example

php
use OxygenSuite\OxygenErgani\Http\Documents\CancelSubmittedDocument;
use OxygenSuite\OxygenErgani\Exceptions\ErganiException;

// Retrieve stored submission details
$submission = getSubmissionFromDatabase($id);

try {
    $cancel = new CancelSubmittedDocument($accessToken, $environment);

    $success = $cancel->handle(
        $submission['document_type'],
        $submission['protocol'],
        $submission['submission_date']
    );

    if ($success) {
        // Mark as cancelled in database
        markSubmissionCancelled($id);
        echo "Cancellation successful";
    } else {
        echo "Cancellation failed - may already be cancelled or past deadline";
    }
} catch (ErganiException $e) {
    echo "Error: " . $e->getMessage();
}

Using with Token Manager

php
use OxygenSuite\OxygenErgani\Storage\Token;
use OxygenSuite\OxygenErgani\Storage\FileToken;
use OxygenSuite\OxygenErgani\Enums\Environment;
use OxygenSuite\OxygenErgani\Http\Documents\CancelSubmittedDocument;

// Set up token manager
Token::setCurrentTokenManager(
    new FileToken('username', 'password'),
    Environment::PRODUCTION
);

// Cancel without explicitly passing token
$cancel = new CancelSubmittedDocument();
$success = $cancel->handle('WTD', 'ΟΧΕ123456', '20250115');

Error Handling

php
use OxygenSuite\OxygenErgani\Exceptions\ErganiException;
use OxygenSuite\OxygenErgani\Exceptions\AuthenticationException;

try {
    $success = $cancel->handle('WTD', 'ΟΧΕ123456', '20250115');
} catch (AuthenticationException $e) {
    // Token invalid or expired
    echo "Authentication error: " . $e->getMessage();
} catch (ErganiException $e) {
    // API error (invalid protocol, document type not cancellable, etc.)
    echo "Cancellation error: " . $e->getMessage();
}

Important Notes

  1. Document Type Support: Only specific document types support cancellation. Most hiring, termination, and dismissal forms cannot be cancelled via this endpoint.

  2. Time Limits: Cancellation may have time limits. Check ERGANI guidelines for the deadline after submission.

  3. Already Cancelled: Attempting to cancel an already-cancelled submission will fail.

  4. Protocol Format: Use the exact protocol number as returned from the original submission.

  5. Date Format: When using string format, use yyyymmdd (e.g., 20250115).

  6. Corrections: If cancellation isn't available for your document type, you may need to submit a correction/amendment form instead.

Alternatives to Cancellation

For document types that don't support cancellation:

E3 Hiring Forms

  • Submit a new E3 with corrections
  • Contact ERGANI support for manual corrections

E5/E6 Termination/Dismissal Forms

  • Submit correction forms if available
  • Contact ERGANI support

Work Cards

  • Cannot be cancelled
  • Submit late cards with delay reason codes

MA Employment Modifications

  • Submit a new modification form with corrections

See Also

Released under the MIT License.