client->listRecords($this->table(), [ 'order' => 'code.desc.nullslast', 'limit' => 1, 'select' => 'code', ])[0]['code'] ?? null; preg_match('/(\d+)$/', (string) $last, $matches); return sprintf('BERAS-%03d', ((int) ($matches[1] ?? 0)) + 1); } /** @return array id => "CODE — Nama" */ public function optionsForSelect(): array { return collect($this->client->listRecords($this->table(), [ 'select' => 'id,code,name', 'is_active' => 'eq.true', 'order' => 'code.asc', 'limit' => 200, ])) ->mapWithKeys(fn (array $row): array => [$row['id'] => trim(($row['code'] ?? '').' — '.($row['name'] ?? ''), ' —')]) ->all(); } /** @return array */ public function codeMap(): array { return collect($this->client->listRecords($this->table(), [ 'select' => 'id,code', 'limit' => 200, ]))->mapWithKeys(fn (array $row): array => [$row['id'] => $row['code']])->all(); } /** @return array */ public function costMap(): array { return collect($this->client->listRecords($this->table(), [ 'select' => 'id,cost_price', 'limit' => 200, ]))->mapWithKeys(fn (array $row): array => [$row['id'] => (int) ($row['cost_price'] ?? 0)])->all(); } }