Skip to content

New Hire (E3N)

The E3N form is used for reporting new employee hirings to ERGANI. This is the standard form for employees starting fresh employment with your company.

Overview

PropertyValue
Document ClassHiringNew
Action CodeWebE3N
Declaration ModelNewDeclaration
Use CaseNew employee starting work

Basic Usage

php
use OxygenSuite\OxygenErgani\Http\Documents\Hiring\HiringNew;
use OxygenSuite\OxygenErgani\Models\Hiring\NewDeclaration;
use OxygenSuite\OxygenErgani\Enums\Sex;
use OxygenSuite\OxygenErgani\Enums\EmploymentType;
use OxygenSuite\OxygenErgani\Enums\EmploymentStatus;
use OxygenSuite\OxygenErgani\Enums\WorkerType;

$declaration = NewDeclaration::make()
    // Branch
    ->setBranchCode(0)
    ->setLaborInspectionServiceCode('12345')
    ->setDypaServiceCode('123456')

    // Personal Information
    ->setLastName('ΠΑΠΑΔΟΠΟΥΛΟΣ')
    ->setFirstName('ΙΩΑΝΝΗΣ')
    ->setFatherName('ΝΙΚΟΛΑΟΣ')
    ->setMotherName('ΜΑΡΙΑ')
    ->setBirthDate('15/03/1990')
    ->setSex(Sex::MALE)

    // Identity
    ->setNationality('001')  // Greek
    ->setIdType('ΑΤ')
    ->setIdNumber('ΑΒ123456')
    ->setIdIssuingAuthority('Α.Τ. ΑΘΗΝΩΝ')

    // Tax/Insurance
    ->setAfm('123456789')
    ->setTaxOffice('1234')
    ->setAmka('15039012345')

    // Employment Details
    ->setHiringDate('20/01/2025')
    ->setStartTime('09:00')
    ->setEndTime('17:00')
    ->setWeeklyHours(40.0)
    ->setSpecialtyCode('123456')
    ->setGrossSalary(1500.00)
    ->setEmploymentType(EmploymentType::INDEFINITE)
    ->setEmploymentStatus(EmploymentStatus::FULL)
    ->setWorkerType(WorkerType::EMPLOYEE)

    // Insurance
    ->setMainInsurance('101')

    // Acceptance (required for E3N)
    ->setBasicsAcceptance(true)
    ->setAcceptanceFile(base64_encode(file_get_contents('acceptance.pdf')));

$response = (new HiringNew())->handle($declaration);

E3N-Specific Fields

In addition to common fields, E3N includes:

Employment Type & Salary

MethodAPI FieldTypeRequiredDescription
setHiringDate()f_proslipsidatestringYesHiring date (DD/MM/YYYY)
setExperienceYears()f_proipiresiaintNoYears of experience
setGrossSalary()f_apodoxesfloatYesMonthly gross salary
setHourlyWage()f_hour_apodoxesfloatNoHourly wage
setEmploymentType()f_sxeshapasxolisisEmploymentTypeYesIndefinite/Fixed-term/Project
setFixedTermFrom()f_orismenou_apostringCond.Fixed-term start date
setFixedTermTo()f_orismenou_ewsstringCond.Fixed-term end date
setSpecialCase()f_special_caseSpecialCaseNoPublic sector special case

Trial Period

MethodAPI FieldTypeRequiredDescription
setTrialPeriod()f_trial_periodboolNoHas trial period
setTrialPeriodEndDate()f_trial_date_tostringCond.Trial end date (DD/MM/YYYY)

Insurance

MethodAPI FieldTypeRequiredDescription
setMainInsurance()f_kyria_asfalisistringYesMain insurance code
addSupplementaryInsurance()SupplementaryInsuranceSelectionsarrayNoSupplementary insurance
setAdditionalInsuranceBenefits()f_prosthetes_asfalistikesstringNoAdditional benefits

DYPA Programs

MethodAPI FieldTypeRequiredDescription
setDypaPlacement()f_topothetisioaedboolNoDYPA program placement
setDypaProgram()f_programaoaedstringCond.Program code
setReplacementProgram()f_replaceprogramaboolNoReplacing another employee
setReplacementAfm()f_replaceprograma_afmstringCond.Replaced employee's AFM
setReplacementAmka()f_replaceprograma_amkastringCond.Replaced employee's AMKA

Wage Payment

MethodAPI FieldTypeRequiredDescription
setWagePaymentTime()f_xronos_katavolis_apodoxonstringNoPayment schedule
setMandatoryTraining()f_ipoxreotiki_katartisiboolNoMandatory training required
setCollectiveAgreementApplicable()f_efarmoste_sillogiki_simbasiboolNoCollective agreement applies
setCollectiveAgreementComments()f_efarmoste_sillogiki_simbasi_commentsstringCond.Agreement details

Acceptance Files (Required)

MethodAPI FieldTypeRequiredDescription
setBasicsAcceptance()f_basics_acceptanceboolYesEssential terms accepted
setAcceptanceFile()f_filestringYesBase64 PDF of acceptance form
setContractFile()f_file_symbashstringNoBase64 PDF of employment contract

Complete Examples

Full-Time Indefinite Employee

php
use OxygenSuite\OxygenErgani\Http\Documents\Hiring\HiringNew;
use OxygenSuite\OxygenErgani\Models\Hiring\NewDeclaration;
use OxygenSuite\OxygenErgani\Enums\Sex;
use OxygenSuite\OxygenErgani\Enums\EmploymentType;
use OxygenSuite\OxygenErgani\Enums\EmploymentStatus;
use OxygenSuite\OxygenErgani\Enums\WorkerType;
use OxygenSuite\OxygenErgani\Enums\MaritalStatus;
use OxygenSuite\OxygenErgani\Enums\WeekDays;

$declaration = NewDeclaration::make()
    // Branch
    ->setBranchCode(0)
    ->setLaborInspectionServiceCode('12345')
    ->setDypaServiceCode('123456')
    ->setBranchActivityCode('4711')

    // Personal
    ->setLastName('ΠΑΠΑΔΟΠΟΥΛΟΣ')
    ->setFirstName('ΙΩΑΝΝΗΣ')
    ->setFatherName('ΝΙΚΟΛΑΟΣ')
    ->setMotherName('ΜΑΡΙΑ')
    ->setBirthDate('15/03/1990')
    ->setSex(Sex::MALE)
    ->setMaritalStatus(MaritalStatus::SINGLE)
    ->setNumberOfChildren(0)

    // Identity
    ->setNationality('001')
    ->setIdType('ΑΤ')
    ->setIdNumber('ΑΒ123456')
    ->setIdIssuingAuthority('Α.Τ. ΑΘΗΝΩΝ')
    ->setIdIssueDate('10/05/2015')

    // Tax/Insurance
    ->setAfm('123456789')
    ->setTaxOffice('1234')
    ->setAmka('15039012345')
    ->setEducationLevel('6')

    // Employment
    ->setHiringDate('20/01/2025')
    ->setStartTime('09:00')
    ->setEndTime('17:00')
    ->setWeeklyHours(40.0)
    ->setSpecialtyCode('123456')
    ->setSpecialtyDescription('ΥΠΑΛΛΗΛΟΣ ΓΡΑΦΕΙΟΥ')
    ->setExperienceYears(5)
    ->setGrossSalary(1500.00)
    ->setEmploymentType(EmploymentType::INDEFINITE)
    ->setEmploymentStatus(EmploymentStatus::FULL)
    ->setWorkerType(WorkerType::EMPLOYEE)

    // Work Organization
    ->setWorkingTimeDigitalOrganization(true)
    ->setFullEmploymentHours(40.0)
    ->setWeekDays(WeekDays::FIVE)
    ->setWorkingCard(true)
    ->setBreakMinutes(30)
    ->setBreakWithinSchedule(true)

    // Trial Period
    ->setTrialPeriod(true)
    ->setTrialPeriodEndDate('20/07/2025')

    // Insurance
    ->setMainInsurance('101')

    // Wage Payment
    ->setWagePaymentTime('Μηνιαία')
    ->setCollectiveAgreementApplicable(true)
    ->setCollectiveAgreementComments('ΕΓΣΣΕ')

    // Acceptance
    ->setBasicsAcceptance(true)
    ->setAcceptanceFile(base64_encode(file_get_contents('acceptance.pdf')));

$response = (new HiringNew())->handle($declaration);

Part-Time Fixed-Term Employee

php
$declaration = NewDeclaration::make()
    ->setBranchCode(0)
    ->setLaborInspectionServiceCode('12345')
    ->setDypaServiceCode('123456')

    ->setLastName('ΓΕΩΡΓΙΟΥ')
    ->setFirstName('ΕΛΕΝΗ')
    ->setFatherName('ΔΗΜΗΤΡΙΟΣ')
    ->setMotherName('ΑΙΚΑΤΕΡΙΝΗ')
    ->setBirthDate('22/08/1995')
    ->setSex(Sex::FEMALE)

    ->setNationality('001')
    ->setIdType('ΑΤ')
    ->setIdNumber('ΓΔ654321')

    ->setAfm('987654321')
    ->setAmka('22089512345')

    // Part-time employment
    ->setHiringDate('01/02/2025')
    ->setStartTime('09:00')
    ->setEndTime('13:00')
    ->setWeeklyHours(20.0)
    ->setSpecialtyCode('234567')
    ->setGrossSalary(750.00)
    ->setEmploymentStatus(EmploymentStatus::PARTIAL)
    ->setWorkerType(WorkerType::EMPLOYEE)

    // Fixed-term contract
    ->setEmploymentType(EmploymentType::FIXED_TERM)
    ->setFixedTermFrom('01/02/2025')
    ->setFixedTermTo('31/07/2025')

    ->setMainInsurance('101')
    ->setBasicsAcceptance(true)
    ->setAcceptanceFile(base64_encode(file_get_contents('acceptance.pdf')));

Foreign Worker

php
$declaration = NewDeclaration::make()
    ->setBranchCode(0)
    ->setLaborInspectionServiceCode('12345')
    ->setDypaServiceCode('123456')

    ->setLastName('SMITH')
    ->setFirstName('JOHN')
    ->setFatherName('WILLIAM')
    ->setMotherName('MARY')
    ->setBirthDate('10/06/1988')
    ->setSex(Sex::MALE)

    ->setNationality('003')  // Non-EU country

    // Direct labor market access permit
    ->setResPermitDirectAccess(true)
    ->setResPermitDirectAccessType('01')
    ->setResPermitDirectAccessNumber('RP123456')
    ->setResPermitDirectAccessExpiry('31/12/2026')

    // ... employment fields ...

    ->setMainInsurance('101')
    ->setBasicsAcceptance(true)
    ->setAcceptanceFile(base64_encode(file_get_contents('acceptance.pdf')))

    // Attach work authorization documents
    ->setForeignWorkerFile(base64_encode(file_get_contents('work_permit.pdf')));

Using Factory for Testing

php
use OxygenSuite\OxygenErgani\Models\Hiring\NewDeclaration;

// Create with random valid data
$declaration = NewDeclaration::factory()->make();

// With specific overrides
$declaration = NewDeclaration::factory()->make([
    'f_eponymo' => 'ΤΕΣΤ',
    'f_onoma' => 'ΧΡΗΣΤΗΣ',
]);

// Using state methods
$declaration = NewDeclaration::factory()
    ->fixedTerm('01/01/2025', '30/06/2025')
    ->partTime(20.0)
    ->female()
    ->withTrialPeriod('30/03/2025')
    ->make();

// Foreign national
$declaration = NewDeclaration::factory()
    ->foreignNationalDirectAccess('002')
    ->make();

Response Handling

php
$response = (new HiringNew())->handle($declaration);

foreach ($response as $result) {
    echo $result->id;              // Unique submission ID
    echo $result->protocol;        // Protocol number (e.g., 'Ε3Ν123')
    echo $result->submissionDate->format('d/m/Y H:i:s');
}

See Also

Released under the MIT License.