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.