Skip to content

Internship Declaration (E3.5)

The E3.5 form (action code 57) is used to declare internship placements. It is a comprehensive form covering personal information, education, internship terms, weekly schedule, and certifier details.

Overview

PropertyValue
Document ClassInternship
Action Code57
Declaration ModelInternshipDeclaration
Use CaseInternship start or modification

Basic Usage

php
use OxygenSuite\OxygenErgani\Http\Documents\Internship\Internship;
use OxygenSuite\OxygenErgani\Models\Internship\InternshipDeclaration;

$declaration = InternshipDeclaration::make()
    // Branch
    ->setBranchCode(0)
    ->setLaborInspectionCode('12345')
    ->setDypaServiceCode('123456')
    ->setMainActivityCode('6201')
    ->setBranchActivityCode('6201')
    ->setMunicipalityCode('0101')

    // Personal
    ->setLastName('ΠΑΠΑΔΟΠΟΥΛΟΣ')
    ->setFirstName('ΝΙΚΟΛΑΟΣ')
    ->setFatherName('ΙΩΑΝΝΗΣ')
    ->setMotherName('ΜΑΡΙΑ')
    ->setBirthPlace('ΑΘΗΝΑ')
    ->setBirthDate('15/03/2003')
    ->setSex('1')
    ->setNationality('001')
    ->setIdType('ΑΤ')
    ->setIdNumber('ΑΒ123456')
    ->setAfm('123456789')
    ->setAmka('15030312345')

    // Education
    ->setEducationLevel('3')
    ->setInstituteNationality('001')
    ->setInstituteName('ΤΕΙ ΑΘΗΝΩΝ')
    ->setSchool('ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ')
    ->setDepartment('ΠΛΗΡΟΦΟΡΙΚΗΣ')

    // Internship terms
    ->setPlacementDate('01/02/2025')
    ->setPlacementTime('09:00')
    ->setWeeklyHours(30.0)
    ->setTotalHours(720.0)
    ->setSpecialtyCode('123456')
    ->setCompensation(600.00)
    ->setHourlyCompensation(5.00)
    ->setStartDate('01/02/2025')
    ->setEndDate('31/07/2025')

    // Schedule (Monday-Friday, 09:00-15:00)
    ->setSchedule(1, '09:00', '15:00')
    ->setSchedule(2, '09:00', '15:00')
    ->setSchedule(3, '09:00', '15:00')
    ->setSchedule(4, '09:00', '15:00')
    ->setSchedule(5, '09:00', '15:00')

    // Certifier
    ->setCertifierLastName('ΓΕΩΡΓΙΟΥ')
    ->setCertifierFirstName('ΔΗΜΗΤΡΙΟΣ')
    ->setCertifierCapacity('ΔΙΕΥΘΥΝΤΗΣ')
    ->setCertifierAddress('ΛΕΩΦ. ΑΛΕΞΑΝΔΡΑΣ 1')
    ->setCertifierAfm('987654321');

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

Via Ergani Facade

php
use OxygenSuite\OxygenErgani\Ergani;
use OxygenSuite\OxygenErgani\Models\Internship\InternshipDeclaration;

$ergani = new Ergani($accessToken);
$responses = $ergani->sendInternshipDeclaration($declaration);

Field Reference

Branch/Location

MethodAPI FieldTypeRequiredDescription
setBranchCode()f_aa_pararthmatosint|stringYesBranch sequence number
setRelatedProtocol()f_rel_protocolstringNoRelated submission protocol
setRelatedDate()f_rel_dateDateTime|stringNoRelated submission date
setLaborInspectionCode()f_ypiresia_sepestringYesSEPE service code
setDypaServiceCode()f_ypiresia_oaedstringYesDYPA/OAED service code
setEmployerOrganization()f_ergodotikh_organwshstringNoEmployer organization
setMainActivityCode()f_kad_kyriastringNoMain activity code (KAD)
setSecondaryActivityCode1()f_kad_deyt_1stringNoSecondary activity code 1
setSecondaryActivityCode2()f_kad_deyt_2stringNoSecondary activity code 2
setSecondaryActivityCode3()f_kad_deyt_3stringNoSecondary activity code 3
setSecondaryActivityCode4()f_kad_deyt_4stringNoSecondary activity code 4
setBranchActivityCode()f_kad_pararthmatosstringNoBranch activity code
setMunicipalityCode()f_kallikratis_pararthmatosstringNoMunicipality code

Personal Information

MethodAPI FieldTypeRequiredDescription
setLastName()f_eponymostringYesLast name
setFirstName()f_onomastringYesFirst name
setFatherName()f_onoma_patrosstringYesFather's name
setMotherName()f_onoma_mitrosstringNoMother's name
setBirthPlace()f_topos_gennhshsstringNoPlace of birth
setBirthDate()f_birthdateDateTime|stringYesBirth date (DD/MM/YYYY)
setSex()f_sexSex|string|intYesSex (0=Male, 1=Female)
setNationality()f_yphkoothtastringYesNationality code
setMaritalStatus()f_marital_statusMaritalStatus|string|intNoMarital status (0-3)
setNumberOfChildren()f_arithmos_teknonint|stringNoNumber of children

Identity Document

MethodAPI FieldTypeRequiredDescription
setIdType()f_typos_taytothtasstringYesID document type
setIdNumber()f_ar_taytothtasstringYesID document number
setIdIssuingAuthority()f_ekdousa_arxhstringNoIssuing authority
setIdIssueDate()f_date_ekdosisDateTime|stringNoIssue date
setIdExpiryDate()f_date_ekdosis_lixiDateTime|stringNoExpiry date

Residence Permit (Foreign Nationals)

MethodAPI FieldTypeRequiredDescription
setResidencePermit()f_res_permit_intstring|boolNoHas residence permit (0/1)
setResidencePermitType()f_res_permit_int_typestringNoPermit type
setResidencePermitNumber()f_res_permit_int_arstringNoPermit number
setResidencePermitExpiry()f_res_permit_int_lixiDateTime|stringNoPermit expiry date

Tax/Insurance

MethodAPI FieldTypeRequiredDescription
setAfm()f_afmstringYesTax ID (AFM)
setTaxOffice()f_doystringNoTax office code
setAmika()f_amikastringNoIKA number
setAmka()f_amkastringYesSocial security number
setMinorBookNumber()f_ar_vivliou_anilikoustringNoMinor work permit book
setPhone()f_tilstringNoPhone number
setEmail()f_emailstringNoEmail address

Education

MethodAPI FieldTypeRequiredDescription
setEducationLevel()f_epipedo_morfosisstringNoEducation level (0-5)
setInstituteNationality()f_educational_institute_nationalitystringNoInstitute country
setInstituteName()f_educational_institute_namestringNoInstitute name
setSchool()f_sxolhstringNoSchool/Faculty
setDepartment()f_departmentstringNoDepartment

Internship Details

MethodAPI FieldTypeRequiredDescription
setApprovalNumber()f_approval_numberstringNoApproval number
setPlacementDate()f_date_proslipsisDateTime|stringYesInternship placement date
setPlacementTime()f_date_time_proslipsisstringYesPlacement time (HH:MM)
setWeeklyHours()f_week_hoursfloatYesWeekly hours (Greek float:1)
setTotalHours()f_total_hoursfloatNoTotal internship hours (Greek float:1)
setSpecialtyCode()f_eidikothtastringYesSpecialty code
setCompensation()f_apodoxesfloatYesGross monthly compensation (Greek float)
setHourlyCompensation()f_hour_apodoxesfloatNoHourly compensation (Greek float)
setStartDate()f_orismenou_apoDateTime|stringYesInternship period start
setEndDate()f_orismenou_ewsDateTime|stringYesInternship period end
setDypaPlacement()f_topothetisioaedstring|boolNoDYPA placement (0/1)
setComments()f_commentsstringNoAdditional comments

Weekly Schedule

The internship form requires a weekly schedule with up to three time ranges per day (primary, split shift, and break).

Schedule Helper Methods

php
// Primary schedule: Monday (1) through Sunday (7)
$declaration->setSchedule(1, '09:00', '15:00');    // Monday
$declaration->setSchedule(2, '09:00', '15:00');    // Tuesday

// Split shift (second shift block)
$declaration->setSplitSchedule(1, '17:00', '20:00');

// Break times
$declaration->setBreakSchedule(1, '12:00', '12:30');

Each day (1-7) has six underlying API fields. The helper methods set them in pairs:

Helper MethodSets API Fields
setSchedule($day, $from, $to)f_time_from_{day}, f_time_to_{day}
setSplitSchedule($day, $from, $to)f_second_time_from_{day}, f_second_time_to_{day}
setBreakSchedule($day, $from, $to)f_break_time_from_{day}, f_break_time_to_{day}

Where {day} is the day number (1=Monday, 7=Sunday).

Certifier

MethodAPI FieldTypeRequiredDescription
setCertifierLastName()f_eponymo_idiotitasstringYesCertifier last name
setCertifierFirstName()f_onoma_idiotitasstringYesCertifier first name
setCertifierCapacity()f_idiotita_idiotitasstringYesCertifier role/capacity
setCertifierAddress()f_dieythinsi_idiotitasstringNoCertifier address
setCertifierAfm()f_afm_idiotitasstringYesCertifier tax ID

Files

MethodAPI FieldTypeDescription
setLegalRepresentativeAfm()f_afm_proswpoystringRepresentative's AFM
setFormFile()f_filestringMain document (Base64 PDF)
setForeignFile()f_foreign_filestringForeign national docs (Base64 PDF)
setMinorFile()f_young_filestringMinor worker docs (Base64 PDF)

Complete Example

php
use OxygenSuite\OxygenErgani\Models\Internship\InternshipDeclaration;

$declaration = InternshipDeclaration::make()
    // Branch
    ->setBranchCode(0)
    ->setLaborInspectionCode('12345')
    ->setDypaServiceCode('123456')
    ->setMainActivityCode('6201')
    ->setBranchActivityCode('6201')
    ->setMunicipalityCode('0101')

    // Personal info
    ->setLastName('ΑΝΤΩΝΙΟΥ')
    ->setFirstName('ΕΛΕΝΗ')
    ->setFatherName('ΔΗΜΗΤΡΙΟΣ')
    ->setMotherName('ΑΙΚΑΤΕΡΙΝΗ')
    ->setBirthPlace('ΘΕΣΣΑΛΟΝΙΚΗ')
    ->setBirthDate('22/08/2003')
    ->setSex('1')
    ->setNationality('001')
    ->setMaritalStatus('0')

    // Identity
    ->setIdType('ΑΤ')
    ->setIdNumber('ΘΗ789012')
    ->setIdIssuingAuthority('Α.Τ. ΘΕΣΣΑΛΟΝΙΚΗΣ')

    // Tax/Insurance
    ->setAfm('555666777')
    ->setTaxOffice('1234')
    ->setAmka('22080312345')
    ->setEmail('eleni@example.com')
    ->setPhone('6971234567')

    // Education
    ->setEducationLevel('3')
    ->setInstituteNationality('001')
    ->setInstituteName('ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ')
    ->setSchool('ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ')
    ->setDepartment('ΠΛΗΡΟΦΟΡΙΚΗΣ')

    // Internship
    ->setPlacementDate('01/03/2025')
    ->setPlacementTime('09:00')
    ->setWeeklyHours(30.0)
    ->setTotalHours(720.0)
    ->setSpecialtyCode('123456')
    ->setCompensation(600.00)
    ->setHourlyCompensation(5.00)
    ->setStartDate('01/03/2025')
    ->setEndDate('31/08/2025')
    ->setDypaPlacement(false)

    // Schedule: Mon-Fri 09:00-15:00 with 30min break
    ->setSchedule(1, '09:00', '15:00')
    ->setSchedule(2, '09:00', '15:00')
    ->setSchedule(3, '09:00', '15:00')
    ->setSchedule(4, '09:00', '15:00')
    ->setSchedule(5, '09:00', '15:00')
    ->setBreakSchedule(1, '12:00', '12:30')
    ->setBreakSchedule(2, '12:00', '12:30')
    ->setBreakSchedule(3, '12:00', '12:30')
    ->setBreakSchedule(4, '12:00', '12:30')
    ->setBreakSchedule(5, '12:00', '12:30')

    // Certifier
    ->setCertifierLastName('ΓΕΩΡΓΙΟΥ')
    ->setCertifierFirstName('ΚΩΝΣΤΑΝΤΙΝΟΣ')
    ->setCertifierCapacity('ΔΙΕΥΘΥΝΤΗΣ HR')
    ->setCertifierAddress('ΕΓΝΑΤΙΑ 45, ΘΕΣΣΑΛΟΝΙΚΗ')
    ->setCertifierAfm('987654321')

    ->setComments('Πρακτική άσκηση μέσω προγράμματος ΕΣΠΑ');

Response Handling

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

foreach ($response as $result) {
    echo $result->id;              // Unique submission ID
    echo $result->protocol;        // Protocol number
    echo $result->submissionDate->format('d/m/Y H:i:s');
}

Retrieve PDF

php
$pdfBase64 = (new Internship())->pdf(
    $response[0]->protocol,
    $response[0]->submissionDate
);

file_put_contents('internship.pdf', base64_decode($pdfBase64));

Best Practices

  1. Schedule Helpers: Use setSchedule(), setSplitSchedule(), and setBreakSchedule() instead of setting individual time fields via ->set().

  2. Weekly Hours: Ensure setWeeklyHours() matches the sum of scheduled hours across all days.

  3. Certifier: The certifier is the person signing on behalf of the employer — typically an HR manager or company director.

  4. Education Fields: Fill in the educational institution details as they appear on the internship agreement.

  5. DYPA Placement: Set setDypaPlacement(true) only if the intern was placed through DYPA/OAED.

Testing with Factories

php
use OxygenSuite\OxygenErgani\Models\Internship\InternshipDeclaration;

$declaration = InternshipDeclaration::factory()->make();

// With state methods
$declaration = InternshipDeclaration::factory()
    ->mainBranch()
    ->female()
    ->partTime(20.0)
    ->make();

// Foreign national
$declaration = InternshipDeclaration::factory()
    ->foreignNational('002', 'TYPE_A', 'PERM123', '31/12/2026')
    ->make();

// OAED placement
$declaration = InternshipDeclaration::factory()
    ->withOaedPlacement()
    ->make();

See Also

Released under the MIT License.