<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Farmasipembelianperobat extends CI_Controller
{

     public function farpembelianobatall()
    {
        if (isset($_POST['TANGGAL_AWAL']) && isset($_POST['TANGGAL_AKHIR'])) {
            // Mengambil input tanggal dari form
            $tanggalawal = $_POST['TANGGAL_AWAL'];
            $tanggalakhir = $_POST['TANGGAL_AKHIR'];

            // Mengonversi format tanggal ke dd/mm/yyyy
            $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
            $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));

            // Mengambil data dari API
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => array(
                    'TANGGAL_AWAL' => $tanggal_awal,
                    'TANGGAL_AKHIR' => $tanggal_akhir
                ),
            ));

            $response = curl_exec($curl);
            curl_close($curl);

            // Mengembalikan respons API dalam format JSON
            if ($response) {
                // Jika response bukan JSON, kirimkan error
                json_decode($response);
                if (json_last_error() !== JSON_ERROR_NONE) {
                    echo json_encode(['error' => 'Data tidak valid.']);
                } else {
                    echo $response; // Kirimkan kembali data yang benar
                }
            } else {
                echo json_encode(['error' => 'Tidak ada data yang ditemukan atau terjadi kesalahan.']);
            }
        }
    }



    public function unduhdatafarpemblianall()
    {

        $nm_user = $this->session->userdata('nm_user');
        $kd_user = $this->session->userdata('kd_user');
        $tanggal_awal = $this->input->get('TANGGAL_AWAL');
        $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');

        // Ubah format tanggal jika diperlukan
        $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
        $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

        // Memanggil API menggunakan cURL
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array(
                'TANGGAL_AWAL' => $tanggal_awali,
                'TANGGAL_AKHIR' => $tanggal_akhiri
  
            ),
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        //log harian download
        $datai = [
            "NIP_PETUGAS" => $kd_user,
            "CATATAN" => "Akun " . $nm_user . " berhasil download data Farmasi Pembelian Obat All."

        ];
        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => $datai,
        ]);

        $responsee = curl_exec($curl);
        curl_close($curl);

        if ($response) {
            $data = json_decode($response, true)['response'];

            // Load library PhpSpreadsheet
            //require_once APPPATH . 'third_party/PhpSpreadsheet/src/Bootstrap.php';

            // Load library PhpSpreadsheet
            require_once APPPATH . '../vendor/autoload.php';

            $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();

            // Set header kolom
            $sheet->setCellValue('A1', 'Tanggal Beli');
            $sheet->setCellValue('B1', 'Nama Obat');
            $sheet->setCellValue('C1', 'Obat Fornas');
            $sheet->setCellValue('D1', 'Obat FOI');
            $sheet->setCellValue('E1', 'Obat RKO');
            $sheet->setCellValue('F1', 'Obat High Alert');
            $sheet->setCellValue('G1', 'Nama Pabrik');
            $sheet->setCellValue('H1', 'No Nota');
            $sheet->setCellValue('I1', 'Kode Produksi');
            $sheet->setCellValue('J1', 'Jumlah');
            $sheet->setCellValue('K1', 'Jumlah Vol Satuan');
            $sheet->setCellValue('L1', 'Harga Satuan');
            $sheet->setCellValue('M1', 'Sub Total');
            $sheet->setCellValue('N1', 'Nilai Disc');
            $sheet->setCellValue('O1', 'Persentase Disc');
            $sheet->setCellValue('P1', 'Total');
            $sheet->setCellValue('Q1', 'Harga Beli Terakhir');
            $sheet->setCellValue('R1', 'Harga Jual');
            $sheet->setCellValue('S1', 'Exp Date');
            $sheet->setCellValue('T1', 'Nama Alias Obat');
            $sheet->setCellValue('U1', 'Nama Suplier');
            $sheet->setCellValue('V1', 'Harga Faktur Terakhir');
            // Isi data
            $row = 2;
            foreach ($data as $item) {

                //Tambah Logika untuk obat Fornas 
                $obatfornas = '-';
                if (isset($item['is_obat_fornas'])) {
                    if ($item['is_obat_fornas'] == 'T') {
                        $obatfornas = 'Ya';
                    } elseif ($item['is_obat_fornas'] == 'F') {
                        $obatfornas = 'Tidak';
                    }
                }

                //Tambah Logika untuk obat FOI 
                $obatfoi = '-';
                if (isset($item['is_obat_foi'])) {
                    if ($item['is_obat_foi'] == 'T') {
                        $obatfoi = 'Ya';
                    } elseif ($item['is_obat_foi'] == 'F') {
                        $obatfoi = 'Tidak';
                    }
                }

                //Tambah Logika untuk obat RKO 
                $obatrko = '-';
                if (isset($item['is_obat_rko'])) {
                    if ($item['is_obat_rko'] == 'T') {
                        $obatrko = 'Ya';
                    } elseif ($item['is_obat_rko'] == 'F') {
                        $obatrko = 'Tidak';
                    }
                }

                
                //Tambah Logika untuk obat HIGH ALERT 
                $obahightalrt = '-';
                if (isset($item['is_high_alert'])) {
                    if ($item['is_high_alert'] == 'T') {
                        $obahightalrt = 'Ya';
                    } elseif ($item['is_high_alert'] == 'F') {
                        $obahightalrt = 'Tidak';
                    }
                }

                $sheet->setCellValue('A' . $row, $item['tgl_beli']);
                $sheet->setCellValue('B' . $row, $item['nama_obat']);
                $sheet->setCellValue('C' . $row, $obatfornas);
                $sheet->setCellValue('D' . $row, $obatfoi);
                $sheet->setCellValue('E' . $row, $obatrko);
                $sheet->setCellValue('F' . $row, $obahightalrt);
                $sheet->setCellValue('G' . $row, $item['nm_pabrik']);
                $sheet->setCellValue('H' . $row, $item['no_nota']);
                $sheet->setCellValue('I' . $row, $item['kode_produksi']);
                $sheet->setCellValue('J' . $row, $item['qty']);
                $sheet->setCellValue('K' . $row, $item['qty_vol_satuan']);
                $sheet->setCellValue('L' . $row, $item['harga_satuan']);
                $sheet->setCellValue('M' . $row, $item['sub_total']);
                $sheet->setCellValue('N' . $row, $item['nilai_disc']);
                $sheet->setCellValue('O' . $row, $item['prosen_disc']);
                $sheet->setCellValue('P' . $row, $item['total']);
                $sheet->setCellValue('Q' . $row, $item['harga_beli_terakhir']);
                $sheet->setCellValue('R' . $row, $item['harga_jual']);
                $sheet->setCellValue('S' . $row, $item['expired_date']);
                $sheet->setCellValue('T' . $row, $item['nama_obat_alias']);
                $sheet->setCellValue('U' . $row, $item['nm_suplier']);
                $sheet->setCellValue('V' . $row, $item['harga_faktur_terakhir']);
                $row++;
            }

            // Mengatur header untuk unduhan
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="Data_FarmasiPembelian.xlsx"');
            header('Cache-Control: max-age=0');

            // Output ke file
            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
            $writer->save('php://output');
            exit();
        } else {
            echo json_encode(['error' => 'Tidak ada data yang ditemukan.']);
        }
    }

     public function datafarmasipembelianperobat()
    {
        if (isset($_POST['TANGGAL_AWAL']) && isset($_POST['TANGGAL_AKHIR']) && isset($_POST['KD_OBAT'])) {
            // Mengambil input tanggal dari form
            $tanggalawal = $_POST['TANGGAL_AWAL'];
            $tanggalakhir = $_POST['TANGGAL_AKHIR'];
            $kdobat = $_POST['KD_OBAT'];

            // Mengonversi format tanggal ke dd/mm/yyyy
            $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
            $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));

            // Mengambil data dari API
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_perobat',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => array(
                    'TANGGAL_AWAL' => $tanggal_awal,
                    'TANGGAL_AKHIR' => $tanggal_akhir,
                    'KD_OBAT' => $kdobat
                ),
            ));

            $response = curl_exec($curl);
            curl_close($curl);

            // Mengembalikan respons API dalam format JSON
            if ($response) {
                // Jika response bukan JSON, kirimkan error
                json_decode($response);
                if (json_last_error() !== JSON_ERROR_NONE) {
                    echo json_encode(['error' => 'Data tidak valid.']);
                } else {
                    echo $response; // Kirimkan kembali data yang benar
                }
            } else {
                echo json_encode(['error' => 'Tidak ada data yang ditemukan atau terjadi kesalahan.']);
            }
        }
    }

    public function unduhdatapembelianperobat()
    {

        $nm_user = $this->session->userdata('nm_user');
        $kd_user = $this->session->userdata('kd_user');
        $tanggal_awal = $this->input->get('TANGGAL_AWAL');
        $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');
        $kdobat = $this->input->get('KD_OBAT');

        // Ubah format tanggal jika diperlukan
        $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
        $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

        // Memanggil API menggunakan cURL
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_perobat',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array(
                'TANGGAL_AWAL' => $tanggal_awali,
                'TANGGAL_AKHIR' => $tanggal_akhiri,
                'KD_OBAT' => $kdobat
            ),
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        //log harian download
        $datai = [
            "NIP_PETUGAS" => $kd_user,
            "CATATAN" => "Akun " . $nm_user . " berhasil download data Farmasi Pembelian Perobat."

        ];
        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => $datai,
        ]);

        $responsee = curl_exec($curl);
        curl_close($curl);

        if ($response) {
            $data = json_decode($response, true)['response'];

            // Load library PhpSpreadsheet
            //require_once APPPATH . 'third_party/PhpSpreadsheet/src/Bootstrap.php';

            // Load library PhpSpreadsheet
            require_once APPPATH . '../vendor/autoload.php';

            $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();

            // Set header kolom
            $sheet->setCellValue('A1', 'Tanggal Beli');
            $sheet->setCellValue('B1', 'Nama Obat');
            $sheet->setCellValue('C1', 'Obat Fornas');
            $sheet->setCellValue('D1', 'Obat FOI');
            $sheet->setCellValue('E1', 'Obat RKO');
            $sheet->setCellValue('F1', 'Obat High Alert');
            $sheet->setCellValue('G1', 'Nama Pabrik');
            $sheet->setCellValue('H1', 'No Nota');
            $sheet->setCellValue('I1', 'Kode Produksi');
            $sheet->setCellValue('J1', 'Jumlah');
            $sheet->setCellValue('K1', 'Jumlah Vol Satuan');
            $sheet->setCellValue('L1', 'Harga Satuan');
            $sheet->setCellValue('M1', 'Sub Total');
            $sheet->setCellValue('N1', 'Nilai Disc');
            $sheet->setCellValue('O1', 'Persentase Disc');
            $sheet->setCellValue('P1', 'Total');
            $sheet->setCellValue('Q1', 'Harga Beli Terakhir');
            $sheet->setCellValue('R1', 'Harga Jual');
            $sheet->setCellValue('S1', 'Exp Date');
            $sheet->setCellValue('T1', 'Nama Alias Obat');
            $sheet->setCellValue('U1', 'Nama Suplier');






            // Isi data
            $row = 2;
            foreach ($data as $item) {

                //Tambah Logika untuk obat Fornas 
                $obatfornas = '-';
                if (isset($item['is_obat_fornas'])) {
                    if ($item['is_obat_fornas'] == 'T') {
                        $obatfornas = 'Ya';
                    } elseif ($item['is_obat_fornas'] == 'F') {
                        $obatfornas = 'Tidak';
                    }
                }

                //Tambah Logika untuk obat FOI 
                $obatfoi = '-';
                if (isset($item['is_obat_foi'])) {
                    if ($item['is_obat_foi'] == 'T') {
                        $obatfoi = 'Ya';
                    } elseif ($item['is_obat_foi'] == 'F') {
                        $obatfoi = 'Tidak';
                    }
                }

                //Tambah Logika untuk obat RKO 
                $obatrko = '-';
                if (isset($item['is_obat_rko'])) {
                    if ($item['is_obat_rko'] == 'T') {
                        $obatrko = 'Ya';
                    } elseif ($item['is_obat_rko'] == 'F') {
                        $obatrko = 'Tidak';
                    }
                }

                
                //Tambah Logika untuk obat HIGH ALERT 
                $obahightalrt = '-';
                if (isset($item['is_high_alert'])) {
                    if ($item['is_high_alert'] == 'T') {
                        $obahightalrt = 'Ya';
                    } elseif ($item['is_high_alert'] == 'F') {
                        $obahightalrt = 'Tidak';
                    }
                }

                $sheet->setCellValue('A' . $row, $item['tgl_beli']);
                $sheet->setCellValue('B' . $row, $item['nama_obat']);
                $sheet->setCellValue('C' . $row, $obatfornas);
                $sheet->setCellValue('D' . $row, $obatfoi);
                $sheet->setCellValue('E' . $row, $obatrko);
                $sheet->setCellValue('F' . $row, $obahightalrt);
                $sheet->setCellValue('G' . $row, $item['nm_pabrik']);
                $sheet->setCellValue('H' . $row, $item['no_nota']);
                $sheet->setCellValue('I' . $row, $item['kode_produksi']);
                $sheet->setCellValue('J' . $row, $item['qty']);
                $sheet->setCellValue('K' . $row, $item['qty_vol_satuan']);
                $sheet->setCellValue('L' . $row, $item['harga_satuan']);
                $sheet->setCellValue('M' . $row, $item['sub_total']);
                $sheet->setCellValue('N' . $row, $item['nilai_disc']);
                $sheet->setCellValue('O' . $row, $item['prosen_disc']);
                $sheet->setCellValue('P' . $row, $item['total']);
                $sheet->setCellValue('Q' . $row, $item['harga_beli_terakhir']);
                $sheet->setCellValue('R' . $row, $item['harga_jual']);
                $sheet->setCellValue('S' . $row, $item['expired_date']);
                $sheet->setCellValue('T' . $row, $item['nama_obat_alias']);
                $sheet->setCellValue('U' . $row, $item['nm_suplier']);
                $row++;
            }

            // Mengatur header untuk unduhan
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="Data_FarmasiPembelian Per-Obat.xlsx"');
            header('Cache-Control: max-age=0');

            // Output ke file
            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
            $writer->save('php://output');
            exit();
        } else {
            echo json_encode(['error' => 'Tidak ada data yang ditemukan.']);
        }
    }

    
    public function referensipabrik()
    {
        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => 'http://103.255.241.146/api/service_rs/ref_master_pabrik',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0, // Waktu tunggu permintaan selama 30 detik
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            // Metode diatur ke POST sesuai kebutuhan API backend
            CURLOPT_CUSTOMREQUEST => 'POST',
            // Mengirim body kosong secara eksplisit menggunakan sintaks array() yang kompatibel
            CURLOPT_POSTFIELDS => array(),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl); // Menangkap error dari cURL jika ada

        curl_close($curl);

        // Selalu atur header Content-Type agar browser tahu ini adalah JSON
        header('Content-Type: application/json');

        if ($err) {
            // Jika terjadi error pada cURL (misal: tidak bisa terhubung ke API)
            echo json_encode(['error' => 'Gagal terhubung ke server API eksternal: ' . $err]);
        } elseif ($response) {
            // Cek apakah respons adalah JSON yang valid sebelum dikirim
            json_decode($response);
            if (json_last_error() !== JSON_ERROR_NONE) {
                echo json_encode(['error' => 'Respons dari API eksternal bukan JSON yang valid.']);
            } else {
                // Kirimkan kembali data JSON yang benar dari API
                echo $response;
            }
        } else {
            // Jika tidak ada respons sama sekali dari API
            echo json_encode(['error' => 'Tidak ada respons dari server API eksternal.']);
        }
    }

     public function datafarmasipembelianperpabrik()
    {
        if (isset($_POST['TANGGAL_AWAL']) && isset($_POST['TANGGAL_AKHIR']) && isset($_POST['KD_PABRIK'])) {
            // Mengambil input tanggal dari form
            $tanggalawal = $_POST['TANGGAL_AWAL'];
            $tanggalakhir = $_POST['TANGGAL_AKHIR'];
            $kdpabrik = $_POST['KD_PABRIK'];

            // Mengonversi format tanggal ke dd/mm/yyyy
            $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
            $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));

            // Mengambil data dari API
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_perpabrik',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => array(
                    'TANGGAL_AWAL' => $tanggal_awal,
                    'TANGGAL_AKHIR' => $tanggal_akhir,
                    'KD_PABRIK' => $kdpabrik
                ),
            ));

            $response = curl_exec($curl);
            curl_close($curl);

            // Mengembalikan respons API dalam format JSON
            if ($response) {
                // Jika response bukan JSON, kirimkan error
                json_decode($response);
                if (json_last_error() !== JSON_ERROR_NONE) {
                    echo json_encode(['error' => 'Data tidak valid.']);
                } else {
                    echo $response; // Kirimkan kembali data yang benar
                }
            } else {
                echo json_encode(['error' => 'Tidak ada data yang ditemukan atau terjadi kesalahan.']);
            }
        }
    }

    public function unduhdatapembelianperpabrik()
    {

        $nm_user = $this->session->userdata('nm_user');
        $kd_user = $this->session->userdata('kd_user');
        $tanggal_awal = $this->input->get('TANGGAL_AWAL');
        $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');
        $kdpabrik = $this->input->get('KD_PABRIK');

        // Ubah format tanggal jika diperlukan
        $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
        $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

        // Memanggil API menggunakan cURL
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_perpabrik',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array(
                'TANGGAL_AWAL' => $tanggal_awali,
                'TANGGAL_AKHIR' => $tanggal_akhiri,
                'KD_PABRIK' => $kdpabrik
            ),
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        //log harian download
        $datai = [
            "NIP_PETUGAS" => $kd_user,
            "CATATAN" => "Akun " . $nm_user . " berhasil download data Farmasi Pembelian Per-Pabrik."

        ];
        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => $datai,
        ]);

        $responsee = curl_exec($curl);
        curl_close($curl);

        if ($response) {
            $data = json_decode($response, true)['response'];

            // Load library PhpSpreadsheet
            //require_once APPPATH . 'third_party/PhpSpreadsheet/src/Bootstrap.php';

            // Load library PhpSpreadsheet
            require_once APPPATH . '../vendor/autoload.php';

            $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();

            // Set header kolom
            $sheet->setCellValue('A1', 'Tanggal Masuk');
            $sheet->setCellValue('B1', 'Nama Pabrik');
            $sheet->setCellValue('C1', 'Nama Supplier');
            $sheet->setCellValue('D1', 'Kode Produksi');
            $sheet->setCellValue('E1', 'No Nota');
            $sheet->setCellValue('F1', 'Nama Obat');
            $sheet->setCellValue('G1', 'Jumlah');
            $sheet->setCellValue('H1', 'Sub Total');
            $sheet->setCellValue('I1', 'Persentase Disc');
            $sheet->setCellValue('J1', 'Nilai Disc');
            $sheet->setCellValue('K1', 'Pajak');
            $sheet->setCellValue('L1', 'Total');

            // Isi data
            $row = 2;
            foreach ($data as $item) {

                $sheet->setCellValue('A' . $row, $item['tgl_masuk']);
                $sheet->setCellValue('B' . $row, $item['nm_pabrik']);
                $sheet->setCellValue('C' . $row, $item['nm_suplier']);
                $sheet->setCellValue('D' . $row, $item['kode_produksi']);
                $sheet->setCellValue('E' . $row, $item['no_nota']);
                $sheet->setCellValue('F' . $row, $item['nama_obat']);
                $sheet->setCellValue('G' . $row, $item['qty']);
                $sheet->setCellValue('H' . $row, $item['sub_total']);
                $sheet->setCellValue('I' . $row, $item['prosen_disc']);
                $sheet->setCellValue('J' . $row, $item['nilai_disc']);
                $sheet->setCellValue('K' . $row, $item['pajak']);
                $sheet->setCellValue('L' . $row, $item['total']);
                $row++;
            }

            // Mengatur header untuk unduhan
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="Data_FarmasiPembelian Per-Pabrik.xlsx"');
            header('Cache-Control: max-age=0');

            // Output ke file
            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
            $writer->save('php://output');
            exit();
        } else {
            echo json_encode(['error' => 'Tidak ada data yang ditemukan.']);
        }
    }

    public function rekappembelianpersuplier()
    {
        if (isset($_POST['TANGGAL_AWAL']) && isset($_POST['TANGGAL_AWAL'])) {
            // Mengambil input tanggal dari form
            $tanggalawal = $_POST['TANGGAL_AWAL'];
            $tanggalakhir = $_POST['TANGGAL_AKHIR'];

            // Mengonversi format tanggal ke dd/mm/yyyy
            $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
            $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));

            // Mengambil data dari API
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_rekap_suplier',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => array(
                    'TANGGAL_AWAL' => $tanggal_awal,
                    'TANGGAL_AKHIR' => $tanggal_akhir
                ),
            ));

            $response = curl_exec($curl);
            curl_close($curl);

            // Mengembalikan respons API dalam format JSON
            if ($response) {
                // Jika response bukan JSON, kirimkan error
                json_decode($response);
                if (json_last_error() !== JSON_ERROR_NONE) {
                    echo json_encode(['error' => 'Data tidak valid.']);
                } else {
                    echo $response; // Kirimkan kembali data yang benar
                }
            } else {
                echo json_encode(['error' => 'Tidak ada data yang ditemukan atau terjadi kesalahan.']);
            }
        }
    }

     public function unduhrekappersupplier()
    {
        ob_start();
        $nm_user = $this->session->userdata('nm_user');
        $kd_user = $this->session->userdata('kd_user');
        $tanggal_awal = $this->input->get('TANGGAL_AWAL');
        $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');
       

        // Ubah format tanggal jika diperlukan
        $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
        $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

        // Memanggil API menggunakan cURL
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_rekap_suplier',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array(
                'TANGGAL_AWAL' => $tanggal_awali,
                'TANGGAL_AKHIR' => $tanggal_akhiri
       

            ),
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        //log harian download
        $datai = [
            "NIP_PETUGAS" => $kd_user,
            "CATATAN" => "Akun " . $nm_user . " berhasil download Data Rekap Pembelian Supplier."

        ];
        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => $datai,
        ]);

        $responsee = curl_exec($curl);
        curl_close($curl);

        if ($response) {
            $data = json_decode($response, true)['response'];


            // Load library PhpSpreadsheet
            require_once APPPATH . '../vendor/autoload.php';

            $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();

            // Set header kolom
            $sheet->setCellValue('A1', 'Nama Supplier');
            $sheet->setCellValue('B1', 'Total Sub Total');
            $sheet->setCellValue('C1', 'Total Diskon');
            $sheet->setCellValue('D1', 'Total Pajak');
            $sheet->setCellValue('E1', 'Total Pemebelian');
            $sheet->setCellValue('F1', 'Ranking');
            $sheet->setCellValue('G1', 'Persentase');
            $sheet->setCellValue('H1', 'Urutan');


            // Isi data
            $row = 2;
            foreach ($data as $item) {
                $sheet->setCellValue('A' . $row, $item['nm_suplier']);
                $sheet->setCellValue('B' . $row, $item['total_sub_total']);
                $sheet->setCellValue('C' . $row, $item['total_diskon']);
                $sheet->setCellValue('D' . $row, $item['total_pajak']);
                $sheet->setCellValue('E' . $row, $item['total_pembelian']);
                $sheet->setCellValue('F' . $row, $item['ranking']);
                $sheet->setCellValue('G' . $row, $item['persentase']);
                $sheet->setCellValue('H' . $row, $item['urutan']);
                $row++;
            }

            $lastRow = $row - 1;

            $sheet->getStyle('C2:F' . $lastRow)
                ->getNumberFormat()
                ->setFormatCode('#,##0');

            // Opsional: Jika ingin format "Rp" spesifik (Accounting)
            $sheet->getStyle('C2:F' . $lastRow)->getNumberFormat()->setFormatCode('_("Rp"* #,##0_);_("Rp"* (#,##0);_("Rp"* "-"_);_(@_)');

            // Opsional: Rata Kanan untuk kolom angka agar rapi
            $sheet->getStyle('C2:F' . $lastRow)
            ->getAlignment()
            ->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT);

    
             // Hapus semua output yang mungkin sudah ada di buffer sebelum mengirim header
             ob_end_clean();

            // Mengatur header untuk unduhan
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="Data_Rekap_Pembelian_Supplier.xlsx"');
            header('Cache-Control: max-age=0');
            header('Expires: 0');
            header('Pragma: public');

            // Output ke file
            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
            $writer->save('php://output');
            exit();
        } else {
            ob_end_clean();
            echo json_encode(['error' => 'Tidak ada data yang ditemukan.']);
        }
    }

        public function rekappembelianperpabrik()
    {
        if (isset($_POST['TANGGAL_AWAL']) && isset($_POST['TANGGAL_AWAL'])) {
            // Mengambil input tanggal dari form
            $tanggalawal = $_POST['TANGGAL_AWAL'];
            $tanggalakhir = $_POST['TANGGAL_AKHIR'];

            // Mengonversi format tanggal ke dd/mm/yyyy
            $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
            $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));

            // Mengambil data dari API
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_rekap_pabrik',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => array(
                    'TANGGAL_AWAL' => $tanggal_awal,
                    'TANGGAL_AKHIR' => $tanggal_akhir
                ),
            ));

            $response = curl_exec($curl);
            curl_close($curl);

            // Mengembalikan respons API dalam format JSON
            if ($response) {
                // Jika response bukan JSON, kirimkan error
                json_decode($response);
                if (json_last_error() !== JSON_ERROR_NONE) {
                    echo json_encode(['error' => 'Data tidak valid.']);
                } else {
                    echo $response; // Kirimkan kembali data yang benar
                }
            } else {
                echo json_encode(['error' => 'Tidak ada data yang ditemukan atau terjadi kesalahan.']);
            }
        }
    }

     public function unduhrekapperpabrik()
    {
        ob_start();
        $nm_user = $this->session->userdata('nm_user');
        $kd_user = $this->session->userdata('kd_user');
        $tanggal_awal = $this->input->get('TANGGAL_AWAL');
        $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');
       

        // Ubah format tanggal jika diperlukan
        $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
        $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

        // Memanggil API menggunakan cURL
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_rekap_pabrik',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array(
                'TANGGAL_AWAL' => $tanggal_awali,
                'TANGGAL_AKHIR' => $tanggal_akhiri
       

            ),
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        //log harian download
        $datai = [
            "NIP_PETUGAS" => $kd_user,
            "CATATAN" => "Akun " . $nm_user . " berhasil download Data Rekap Pembelian Per-Pabrik."

        ];
        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => $datai,
        ]);

        $responsee = curl_exec($curl);
        curl_close($curl);

        if ($response) {
            $data = json_decode($response, true)['response'];


            // Load library PhpSpreadsheet
            require_once APPPATH . '../vendor/autoload.php';

            $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();

            // Set header kolom
            $sheet->setCellValue('A1', 'Nama Pabrik');
            $sheet->setCellValue('B1', 'Jumlah Suplier');
            $sheet->setCellValue('C1', 'Jumlah Total');
            $sheet->setCellValue('D1', 'Total Sub Total');
            $sheet->setCellValue('E1', 'Total Diskon');
            $sheet->setCellValue('F1', 'Total Pajak');
            $sheet->setCellValue('G1', 'Total Pembelian');
            $sheet->setCellValue('H1', 'Persentase');
            $sheet->setCellValue('I1', 'Urutan');
            $sheet->setCellValue('J1', 'Ranking');


            // Isi data
            $row = 2;
            foreach ($data as $item) {
                $sheet->setCellValue('A' . $row, $item['nm_pabrik']);
                $sheet->setCellValue('B' . $row, $item['jumlah_suplier']);
                $sheet->setCellValue('C' . $row, $item['total_qty']);
                $sheet->setCellValue('D' . $row, $item['total_sub_total']);
                $sheet->setCellValue('E' . $row, $item['total_diskon']);
                $sheet->setCellValue('F' . $row, $item['total_pajak']);
                $sheet->setCellValue('G' . $row, $item['total_pembelian']);
                $sheet->setCellValue('H' . $row, $item['persentase']);
                $sheet->setCellValue('I' . $row, $item['urutan']);
                $sheet->setCellValue('J' . $row, $item['ranking']);
                $row++;
            }

             // Hapus semua output yang mungkin sudah ada di buffer sebelum mengirim header
             ob_end_clean();

            // Mengatur header untuk unduhan
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="Data_Rekap_Pembelian_Per-Pabrik.xlsx"');
            header('Cache-Control: max-age=0');
            header('Expires: 0');
            header('Pragma: public');

            // Output ke file
            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
            $writer->save('php://output');
            exit();
        } else {
            ob_end_clean();
            echo json_encode(['error' => 'Tidak ada data yang ditemukan.']);
        }
    }

    public function referensisuplier()
    {
        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => 'http://103.255.241.146/api/service_rs/ref_master_suplier',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0, // Waktu tunggu permintaan selama 30 detik
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            // Metode diatur ke POST sesuai kebutuhan API backend
            CURLOPT_CUSTOMREQUEST => 'POST',
            // Mengirim body kosong secara eksplisit menggunakan sintaks array() yang kompatibel
            CURLOPT_POSTFIELDS => array(),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl); // Menangkap error dari cURL jika ada

        curl_close($curl);

        // Selalu atur header Content-Type agar browser tahu ini adalah JSON
        header('Content-Type: application/json');

        if ($err) {
            // Jika terjadi error pada cURL (misal: tidak bisa terhubung ke API)
            echo json_encode(['error' => 'Gagal terhubung ke server API eksternal: ' . $err]);
        } elseif ($response) {
            // Cek apakah respons adalah JSON yang valid sebelum dikirim
            json_decode($response);
            if (json_last_error() !== JSON_ERROR_NONE) {
                echo json_encode(['error' => 'Respons dari API eksternal bukan JSON yang valid.']);
            } else {
                // Kirimkan kembali data JSON yang benar dari API
                echo $response;
            }
        } else {
            // Jika tidak ada respons sama sekali dari API
            echo json_encode(['error' => 'Tidak ada respons dari server API eksternal.']);
        }
    }

     public function datafarmasipemblpersuplier()
    {
        if (isset($_POST['TANGGAL_AWAL']) && isset($_POST['TANGGAL_AKHIR']) && isset($_POST['KD_SUPLIER'])) {
            // Mengambil input tanggal dari form
            $tanggalawal = $_POST['TANGGAL_AWAL'];
            $tanggalakhir = $_POST['TANGGAL_AKHIR'];
            $kdsuplier = $_POST['KD_SUPLIER'];

            // Mengonversi format tanggal ke dd/mm/yyyy
            $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
            $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));

            // Mengambil data dari API
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_persuplier',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => array(
                    'TANGGAL_AWAL' => $tanggal_awal,
                    'TANGGAL_AKHIR' => $tanggal_akhir,
                    'KD_SUPLIER' => $kdsuplier
                ),
            ));

            $response = curl_exec($curl);
            curl_close($curl);

            // Mengembalikan respons API dalam format JSON
            if ($response) {
                // Jika response bukan JSON, kirimkan error
                json_decode($response);
                if (json_last_error() !== JSON_ERROR_NONE) {
                    echo json_encode(['error' => 'Data tidak valid.']);
                } else {
                    echo $response; // Kirimkan kembali data yang benar
                }
            } else {
                echo json_encode(['error' => 'Tidak ada data yang ditemukan atau terjadi kesalahan.']);
            }
        }
    }

    public function unduhdatapembelianpersuplier()
    {

        $nm_user = $this->session->userdata('nm_user');
        $kd_user = $this->session->userdata('kd_user');
        $tanggal_awal = $this->input->get('TANGGAL_AWAL');
        $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');
        $kdsuplier = $this->input->get('KD_SUPLIER');

        // Ubah format tanggal jika diperlukan
        $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
        $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

        // Memanggil API menggunakan cURL
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_persuplier',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array(
                'TANGGAL_AWAL' => $tanggal_awali,
                'TANGGAL_AKHIR' => $tanggal_akhiri,
                'KD_SUPLIER' => $kdsuplier
            ),
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        //log harian download
        $datai = [
            "NIP_PETUGAS" => $kd_user,
            "CATATAN" => "Akun " . $nm_user . " berhasil download data Farmasi Pembelian Per-Suplier."

        ];
        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => $datai,
        ]);

        $responsee = curl_exec($curl);
        curl_close($curl);

        if ($response) {
                $decoded = json_decode($response, true);
                $data = isset($decoded['response']) ? $decoded['response'] : [];

                if (empty($data)) {
                    die("Data tidak ditemukan untuk periode tersebut.");
                }

                require_once APPPATH . '../vendor/autoload.php';
                $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
                $sheet = $spreadsheet->getActiveSheet();

                // Set Header Kolom
                $headers = ['A1' => 'Tanggal Masuk', 'B1' => 'Nama Suplier', 'C1' => 'No Nota', 'D1' => 'Sub Total', 'E1' => 'Persentase Disc', 'F1' => 'Nilai Disc', 'G1' => 'Pajak', 'H1' => 'Total'];
                foreach ($headers as $cell => $val) {
                    $sheet->setCellValue($cell, $val);
                }

                // ISI DATA - PASTIKAN $row++ ADA DI DALAM FOREACH
                $row = 2;
                foreach ($data as $item) {
                    $sheet->setCellValue('A' . $row, $item['tgl_masuk']);
                    $sheet->setCellValue('B' . $row, $item['nm_suplier']);
                    $sheet->setCellValue('C' . $row, $item['no_nota']);
                    $sheet->setCellValue('D' . $row, $item['sub_total']);
                    $sheet->setCellValue('E' . $row, $item['prosen_disc']);
                    $sheet->setCellValue('F' . $row, $item['nilai_disc']);
                    $sheet->setCellValue('G' . $row, $item['pajak']);
                    $sheet->setCellValue('H' . $row, $item['total']);
                    $row++; // INI SANGAT PENTING: Harus bertambah setiap loop
                }

                // Bersihkan buffer untuk mencegah file rusak
                if (ob_get_contents()) ob_end_clean();

                header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
                header('Content-Disposition: attachment;filename="Data_Farmasi_Pembelian_Per_Suplier.xlsx"');
                header('Cache-Control: max-age=0');

                $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
                $writer->save('php://output');
                exit();
            } else {
                echo json_encode(['error' => 'Gagal mengambil data dari API.']);
            }
        }

    public function farmasipembeliansupldetail()
    {
        if (isset($_POST['TANGGAL_AWAL']) && isset($_POST['TANGGAL_AKHIR']) && isset($_POST['KD_SUPLIER'])&& isset($_POST['NO_NOTA'])) {
            // Mengambil input tanggal dari form
            $tanggalawal = $_POST['TANGGAL_AWAL'];
            $tanggalakhir = $_POST['TANGGAL_AKHIR'];
            $kdsuplier = $_POST['KD_SUPLIER'];
            $nota = $_POST['NO_NOTA'];

            // Mengonversi format tanggal ke dd/mm/yyyy
            $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
            $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));

            // Mengambil data dari API
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_persuplier_detail',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => array(
                    'TANGGAL_AWAL' => $tanggal_awal,
                    'TANGGAL_AKHIR' => $tanggal_akhir,
                    'KD_SUPLIER' => $kdsuplier,
                    'NO_NOTA' => $nota
                ),
            ));

            $response = curl_exec($curl);
            curl_close($curl);

            // Mengembalikan respons API dalam format JSON
            if ($response) {
                // Jika response bukan JSON, kirimkan error
                json_decode($response);
                if (json_last_error() !== JSON_ERROR_NONE) {
                    echo json_encode(['error' => 'Data tidak valid.']);
                } else {
                    echo $response; // Kirimkan kembali data yang benar
                }
            } else {
                echo json_encode(['error' => 'Tidak ada data yang ditemukan atau terjadi kesalahan.']);
            }
        }
    }


    public function unduhdatapemblpersuplierdetail()
    {

        $nm_user = $this->session->userdata('nm_user');
        $kd_user = $this->session->userdata('kd_user');
        $tanggal_awal = $this->input->get('TANGGAL_AWAL');
        $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');
        $kdsuplier = $this->input->get('KD_SUPLIER');
        $nota = $this->input->get('NO_NOTA');

        // Ubah format tanggal jika diperlukan
        $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
        $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

        // Memanggil API menggunakan cURL
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_persuplier_detail',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array(
                'TANGGAL_AWAL' => $tanggal_awali,
                'TANGGAL_AKHIR' => $tanggal_akhiri,
                'KD_SUPLIER' => $kdsuplier,
                'NO_NOTA' => $nota
            ),
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        

        //log harian download
        $datai = [
            "NIP_PETUGAS" => $kd_user,
            "CATATAN" => "Akun " . $nm_user . " berhasil download data Farmasi Pembelian Detail Pear-Suplier."

        ];
        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => $datai,
        ]);

        $responsee = curl_exec($curl);
        curl_close($curl);

        if ($response) {
            $res_array = json_decode($response, true);
            
            // Pastikan mengambil key 'response' dan pastikan itu array
            $data = isset($res_array['response']) ? $res_array['response'] : [];

            if (empty($data)) {
                die("Data kosong dari API.");
            }

            require_once APPPATH . '../vendor/autoload.php';
            $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();

            // Set header kolom (A1 - M1)
            $headers = [
                'A' => 'Tanggal Masuk', 'B' => 'Nama Suplier', 'C' => 'Kd Pabrik',
                'D' => 'Nama Pabrik', 'E' => 'Kd Produksi', 'F' => 'No Nota',
                'G' => 'Nama Obat', 'H' => 'Qty', 'I' => 'Sub Total',
                'J' => 'Persentase Disc', 'K' => 'Nilai Disc', 'L' => 'Pajak', 'M' => 'Total'
            ];

            foreach ($headers as $col => $val) {
                $sheet->setCellValue($col . '1', $val);
            }

            // ISI DATA
            $currentRow = 2; // Mulai dari baris 2
            foreach ($data as $item) {
                $sheet->setCellValue('A' . $currentRow, $item['tgl_masuk'] ?? '');
                $sheet->setCellValue('B' . $currentRow, $item['nm_suplier'] ?? '');
                $sheet->setCellValue('C' . $currentRow, $item['kd_pabrik'] ?? '');
                $sheet->setCellValue('D' . $currentRow, $item['nm_pabrik'] ?? '');
                $sheet->setCellValue('E' . $currentRow, $item['kode_produksi'] ?? '');
                $sheet->setCellValue('F' . $currentRow, $item['no_nota'] ?? '');
                $sheet->setCellValue('G' . $currentRow, $item['nama_obat'] ?? '');
                $sheet->setCellValue('H' . $currentRow, $item['qty'] ?? 0);
                $sheet->setCellValue('I' . $currentRow, $item['sub_total'] ?? 0);
                $sheet->setCellValue('J' . $currentRow, $item['prosen_disc'] ?? 0);
                $sheet->setCellValue('K' . $currentRow, $item['nilai_disc'] ?? 0);
                $sheet->setCellValue('L' . $currentRow, $item['pajak'] ?? 0);
                $sheet->setCellValue('M' . $currentRow, $item['total'] ?? 0);
                
                $currentRow++; // Memastikan baris bertambah untuk data berikutnya
            }

            // Tambahkan ini agar file tidak korup/kosong
            if (ob_get_contents()) ob_end_clean();

            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="Data_Farmasi_Pembelian_Detail.xlsx"');
            header('Cache-Control: max-age=0');

            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
            $writer->save('php://output');
            exit();
        } else {
            echo json_encode(['error' => 'Gagal mengambil data dari API.']);
        }
    }

    public function tampildtlpersuplier() // Pastikan nama fungsi sesuai dengan Routes Anda
    {
         // 1. Ambil Input (Gunakan $this->input->post agar lebih aman di CI3)
    $tanggalawal = $this->input->post('TANGGAL_AWAL');
    $tanggalakhir = $this->input->post('TANGGAL_AKHIR');
    $kdsuplier    = $this->input->post('KD_SUPLIER');
    $nota         = $this->input->post('NO_NOTA');

    // Validasi sederhana: Jika data penting kosong, stop.
    if (empty($kdsuplier) || empty($nota)) {
        echo "Data Supplier atau No Nota tidak valid.";
        return;
    }

    // Mengonversi format tanggal input (yyyy-mm-dd) ke format API (dd/mm/yyyy)
    $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
    $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));

    // 2. Ambil data dari API
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => '103.255.241.146/api/service_rs/farmasi_pembelian_persuplier_detail',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_POSTFIELDS => array(
            'TANGGAL_AWAL' => $tanggal_awal,
            'TANGGAL_AKHIR' => $tanggal_akhir,
            'KD_SUPLIER' => $kdsuplier,
            'NO_NOTA' => $nota
        ),
    ));

    $response = curl_exec($curl);
    curl_close($curl);

    // 3. Proses Data untuk dikirim ke View
   $data_api = json_decode($response, true);
    $data['detail_pembelian'] = isset($data_api['response']) ? $data_api['response'] : [];
    
    // --- TAMBAHAN PENTING: Oper data filter ke View ---
    $data['no_nota_title'] = $nota;
    $data['tgl_periode_title'] = $tanggal_awal . ' s/d ' . $tanggal_akhir;
    
    // Simpan nilai RAW (asli dari input post) untuk link download
    $data['filter_tgl_awal'] = $tanggalawal; 
    $data['filter_tgl_akhir'] = $tanggalakhir;
    $data['filter_kd_suplier'] = $kdsuplier;

    // 4. Load View HTML
    // Buat file view baru bernama 'view_detail_pembelian_supplier.php' 
    // untuk menampilkan tabelnya.
    $this->load->view('view_detail_persuplr_tab', $data);
    }

}