{{-- resources/views/talenta/sandbox/employees/edit.blade.php --}} @extends('layouts.app') @section('title','Sandbox – Employees') @section('page-title','Ubah Karyawan (Sandbox)') @section('content') @php use Illuminate\Support\Str; /** ========== Short helpers ========== **/ $p = (array) data_get($emp, 'personal', []); $e = (array) data_get($emp, 'employment', []); $uid = data_get($emp, 'user_id'); // old() with fallback $ov = function (string $key, $fallback = '') { $v = old($key); return isset($v) ? $v : $fallback; }; // normalize to Y-m-d (trim time) $ymd = function ($date) { $d = (string) $date; return Str::of($d)->substr(0, 10); }; // option selected helper (match by name or id string) $isSel = function ($current, $opt) { $cn = (string) $current; $name = (string) ($opt['name'] ?? ''); $id = (string) ($opt['id'] ?? ''); return strcasecmp($cn, $name) === 0 || $cn === $id; }; $formActionUser = $user ?? $uid; /** ========== PREFILL (Personal) ========== **/ $employee_id = trim($ov('employee_id', (string) data_get($e, 'employee_id', ''))); $first_name = $ov('first_name', (string) data_get($p, 'first_name', '')); $last_name = $ov('last_name', (string) data_get($p, 'last_name', '')); $email = $ov('email', (string) data_get($p, 'email', '')); // birthdate → fallback ke personal.birth_date jika date_of_birth kosong $date_of_birth = $ov('date_of_birth', $ymd(data_get($p, 'date_of_birth', data_get($p, 'birth_date', '')))); // gender: Talenta bisa kasih "1/2" atau "Male/Female" $genderRaw = data_get($p, 'gender'); $genderFromApi = is_numeric($genderRaw) ? ((int)$genderRaw === 1 ? 'Male' : ((int)$genderRaw === 2 ? 'Female' : '')) : ((string)($genderRaw ?? '')); $gender = $ov('gender', data_get($p, 'gender_text', $genderFromApi)); // marital & religion: gunakan label bila ada $marital_status = $ov('marital_status', (string) (data_get($p, 'marital_status_text') ?? data_get($p, 'marital_status') ?? '')); $religion = $ov('religion', (string) (data_get($p, 'religion_text') ?? data_get($p, 'religion') ?? '')); /** ========== PREFILL (Employment) ========== **/ $branch = $ov('branch', (string) data_get($e, 'branch', '')); $organization_name = $ov('organization_name', (string) data_get($e, 'organization_name', '')); $job_position = $ov('job_position', (string) data_get($e, 'job_position', '')); $job_level = $ov('job_level', (string) data_get($e, 'job_level', '')); $employment_status = (string) $ov('employment_status', (string) (data_get($e, 'employment_status_id') ?? data_get($e, 'employment_status') ?? '')); $join_date = $ov('join_date', $ymd(data_get($e, 'join_date', ''))); // end date → fallback ke employment.end_date $end_employment_date = $ov('end_employment_status_date', $ymd(data_get($e, 'end_employment_status_date', data_get($e, 'end_date', '')))); $schedule = $ov('schedule', (string) data_get($e, 'schedule', '')); /** ========== PREFILL (Comp & Tax) ========== **/ $basic_salary = $ov('basic_salary', (int) data_get($e, 'basic_salary', 0)); // PTKP: bisa ada di employment atau payroll_info $ptkp_status = (string) $ov('ptkp_status', (string) (data_get($e, 'ptkp_status_text') ?? data_get($e, 'ptkp_status') ?? data_get($emp, 'payroll_info.ptkp_status', 'TK/0'))); $npp_bpjs_ket = $ov('npp_bpjs_ketenagakerjaan', (string) (data_get($e, 'npp_bpjs_ketenagakerjaan', ''))); // Payroll flags (prefill default aman) $tax_configuration = (int) $ov('tax_configuration', (int) (data_get($e, 'tax_configuration', 1))); $type_salary = (int) $ov('type_salary', (int) (data_get($e, 'type_salary', 1))); $salary_configuration = (int) $ov('salary_configuration', (int) (data_get($e, 'salary_configuration', 1))); $jht_configuration = (int) $ov('jht_configuration', (int) (data_get($e, 'jht_configuration', 0))); $employee_tax_status = (int) $ov('employee_tax_status', (int) (data_get($e, 'employee_tax_status', 1))); $jp_configuration = (int) $ov('jp_configuration', (int) (data_get($e, 'jp_configuration', 0))); $overtime_status = (int) $ov('overtime_status', (int) (data_get($e, 'overtime_status', 2))); $bpjs_kesehatan_conf = (int) $ov('bpjs_kesehatan_config',(int) (data_get($e, 'bpjs_kesehatan_config', 1))); @endphp
{{-- Header --}}

Ubah Karyawan – Sandbox

Form auto-terisi dari data saat ini. * wajib diisi.

← Kembali
{{-- Errors list --}} @if($errors->any())
Form belum lengkap
@endif {{-- (Optional) Debug current payload --}}
Lihat raw data employee (debug)
{{ json_encode($emp ?? [], JSON_PRETTY_PRINT) }}
@csrf @method('PUT') {{-- ================= PERSONAL ================= --}}

Informasi Personal

Data dasar karyawan.

{{-- Employee ID (READ-ONLY) --}}
@error('employee_id')

{{ $message }}

@enderror

Nilai ini dikunci saat edit. Perubahan akan diabaikan oleh backend.

{{-- First Name --}}
@error('first_name')

{{ $message }}

@enderror
{{-- Last Name --}}
{{-- Email --}}
@error('email')

{{ $message }}

@enderror
{{-- Birthdate --}}
@error('date_of_birth')

{{ $message }}

@enderror
{{-- Gender --}}
@error('gender')

{{ $message }}

@enderror
{{-- Marital --}}
@error('marital_status')

{{ $message }}

@enderror
{{-- Religion --}}
@error('religion')

{{ $message }}

@enderror
{{-- ================= EMPLOYMENT ================= --}}

Informasi Employment

Pemetaan organisasi & status kerja.

{{-- Branch --}}
@error('branch')

{{ $message }}

@enderror

Contoh: “Pusat”.

{{-- Organization --}}
@error('organization_name')

{{ $message }}

@enderror
{{-- Job Position --}}
@error('job_position')

{{ $message }}

@enderror
{{-- Job Level --}}
@if(!empty($levels)) @else

Master Job Level kosong.

@endif @error('job_level')

{{ $message }}

@enderror
{{-- Employment Status --}}
@error('employment_status')

{{ $message }}

@enderror

Contract (ID=2) & Probation (ID=3) wajib isi End Employment Status Date.

{{-- End Employment Status Date --}}
@error('end_employment_status_date')

{{ $message }}

@enderror
{{-- Join Date --}}
@error('join_date')

{{ $message }}

@enderror
{{-- Schedule --}}
@error('schedule')

{{ $message }}

@enderror
{{-- ================= KOMPENSASI & PAJAK ================= --}}

Kompensasi & Pajak

Basic salary opsional saat edit. Kosongkan jika tidak ingin mengubah.

{{-- Basic Salary (OPSIONAL) --}}
@error('basic_salary')

{{ $message }}

@enderror

Boleh 0. Jika backend menolak 0, sistem akan mengakali dan mengembalikan ke 0.

{{-- PTKP (wajib) --}}
@error('ptkp_status')

{{ $message }}

@enderror
{{-- Payroll flags (opsional, default aman) --}}
{{-- NPP BPJS TK --}}
{{-- ================= ACTIONS ================= --}}

Simpan perubahan yang sudah dilakukan.

Batal
{{-- SweetAlert2 & dynamic rule (single source) --}} @endsection