Tolomh mas wis

mail@pastecode.io avatar
unknown
php
12 days ago
27 kB
4
Indexable
Never
public function saveJasaPelayananNewLoopKeuangan(Request $request)
    {
        //TODO : SAVE PAGU 
        DB::beginTransaction();
        $dataReq = $request->all();
        $noregistrasi =  $request['noregistrasi'];
        ini_set('max_execution_time', 500); //6 minutes

        $peg = \DB::table('jasapelayanan_t')
            ->where('noregistrasi',  $noregistrasi)
            ->get();

        foreach ($peg as $x) {
            return ("Data Sudah Pernah DI Verifikasi");
            # code...
        }

        try {
            //non bedah                       
            $data = DB::select(
                DB::raw(
                    "select golonganpajakpegawai_m.id,jasadokter.objectkelompokpasienlastfk,jasadokter.namaexternal,jasadokter.objectbahanprodukfk,jasadokter.objectjenispetugaspefk, jasadokter.objectruanganfk, jasadokter.norecpp,jasadokter.objectdetailjenisprodukfk,jasadokter.norecppd,jasadokter.tarifrs,jasadokter.objectpegawaifk, jasadokter.produkfk,jasadokter.objectpajakpegawai,jasadokter.nocm, jasadokter.namalengkap, jasadokter.namaproduk, jasadokter.noregistrasi, jasadokter.komponenharga,  
                  jasadokter.hargajual, jasadokter.jumlah, jasadokter.namaruangan, jasadokter.tglpelayanan, jasadokter.jenispetugaspe, jasadokter.namadepartemen, jasadokter.namarekanan, jasadokter.idkelas, jasadokter.namakelas, jasacito,
                  case when golonganpajakpegawai_m.nilaigolongan is null then 100 else golonganpajakpegawai_m.nilaigolongan end as nilaigolongan, golonganpajakpegawai_m.golonganpajakpegawai ,jasadokter.harganetto ,jasadokter.komponenhargafk , jasadokter.objectruanganfk, jasadokter.objectruanganasalfk FROM jasadokter LEFT OUTER JOIN
                  golonganpajakpegawai_m ON jasadokter.objectpajakpegawai = golonganpajakpegawai_m.id
                  WHERE (jasadokter.noregistrasi = '$noregistrasi')and jasadokter.tarifrs>0 and jasadokter.hargajual>0 and jasadokter.objectruanganfk not in (44,277)"
                )
            );
            $datax = DB::select(
                DB::raw(
                    "select pasiendaftar_t.nosbmlastfk, cast(strukbuktipenerimaan_t.tglsbm as datetime) as tglsbm FROM pasiendaftar_t INNER JOIN strukbuktipenerimaan_t ON pasiendaftar_t.nosbmlastfk = strukbuktipenerimaan_t.norec WHERE  pasiendaftar_t.noregistrasi = '$noregistrasi'"
                )
            );
            // $tglclosing = date('Y-m-d H:i:s');
            $tglclosing = $request['tglclosing'];
            $tglnk = $request['tglnk'];
            // if (!empty($datax)) {
            //     foreach ($datax as $itmx) {
            //         $tglclosing = $itmx->tglsbm;
            //     }
            // }
            $datax2 = DB::select(
                DB::raw(
                    "select isclosing from pasiendaftar_t WHERE  pasiendaftar_t.noregistrasi = '$noregistrasi'"
                )
            );
            if (!empty($datax2)) {
                if ($tglclosing != null) {
                    $SCSC = Pasiendaftar::where('noregistrasi', '=', $noregistrasi)
                        ->update([
                            'isclosing' => 1,
                            'tglclosing' => $tglclosing,
                            'tanggalnk' => $tglnk
                        ]);
                }
            }
            $berkasrs = false;
            $istrueberkasrs = NULL;
            $tampungcito = 0;
            if (count($data) > 0) {
                $tampungnorecpp = $data[0]->norecpp;
            }
            foreach ($data as $itm) {
                // harusnya ini buat sementara aja untuk dr yang naik golongan
                if ($itm->objectpegawaifk == 320261196) {
                    $itm->nilaigolongan = 15;
                    $itm->objectpegawaifk = 320261808;
                    $itm->objectpajakpegawai = 1;
                }
                if ($itm->objectpegawaifk == 25179) {
                    $itm->nilaigolongan = 15;
                    $itm->objectpegawaifk = 320261718;
                    $itm->objectpajakpegawai = 1;
                }
                if ($itm->objectpegawaifk == 320261233) {
                    $itm->nilaigolongan = 15;
                    $itm->objectpegawaifk = 320261713;
                    $itm->objectpajakpegawai = 1;
                }
                if ($itm->objectpegawaifk == 320261641) {
                    $itm->nilaigolongan = 15;
                    $itm->objectpegawaifk = 320261805;
                    $itm->objectpajakpegawai = 1;
                }
                if ($itm->objectpegawaifk == 25135) {
                    $itm->nilaigolongan = 15;
                    $itm->objectpegawaifk = 320261806;
                    $itm->objectpajakpegawai = 1;
                }
                if ($itm->objectpegawaifk == 25186) {
                    $itm->nilaigolongan = 15;
                    $itm->objectpegawaifk = 320261807;
                    $itm->objectpajakpegawai = 1;
                }
                $jasacito = 0;
                if ($itm->jasacito != null) {
                    $jasacito = round($itm->jasacito, 0);
                    $tampungcito = $tampungcito + $itm->jasacito;
                }
                $persenpph = 0;
                $persenpph = $itm->nilaigolongan;
                $bruto = $itm->jumlah * round($itm->hargajual, 0);
                if ($itm->objectdetailjenisprodukfk == '2016') {
                    // if($itm->produkfk == '4056952'){

                    $dataMapp = \DB::table('mapPelayananToJasa')
                        ->get();
                    foreach ($dataMapp  as $map) {
                        if ($map->produkfk == $itm->produkfk) {
                            $pengali = 0.8;
                        } else {
                            if ($itm->objectkelompokpasienlastfk == 2 || $itm->objectkelompokpasienlastfk == 3) {
                                if ($itm->id != 1) {
                                    $pengali = 0.8;
                                } else {
                                    $pengali = 0.9;
                                }
                            } else {
                                $pengali = 0.8;
                            }
                        }
                    }







                    if ($itm->komponenhargafk !== '98' || $itm->komponenhargafk !== '100' || $itm->komponenhargafk !== '25') {
                        if (stripos($itm->namaproduk, 'PEMERIKSAAN') !== false) {
                            if ($itm->komponenhargafk == 94) {
                                $itm->tarifrs = $bruto;
                                $bruto = ($itm->jumlah * $bruto) * $pengali;
                            } else {
                                $itm->tarifrs = $bruto;
                                $bruto = ($itm->jumlah * $bruto);
                            }
                        }

                        if (stripos($itm->namaproduk, 'KONSUL') !== false) {

                            // if($itm->komponenhargafk == 94 ){
                            //     $itm->tarifrs = $bruto;
                            //     $bruto = ($itm->jumlah * $bruto) * $pengali;
                            //     $istrueberkasrs = 1 ;

                            //     if($itm->objectbahanprodukfk == 1){
                            //         $berkasrs = true;
                            //         $kodetindakankonsul = $itm->produkfk;
                            //         $ruangankoknsul = $itm->objectruanganfk;
                            //         $itm->tarifrs =$itm->tarifrs ;
                            //         $bruto = $bruto;

                            //     }    
                            // }
                            // else{
                            //     $itm->tarifrs = $bruto;
                            //     $bruto = ($itm->jumlah * $bruto);
                            //     $istrueberkasrs = 1 ;
                            // }
                            if ($itm->komponenhargafk == 94) {
                                $itm->tarifrs = $bruto;
                                $bruto = ($itm->jumlah * $bruto) * $pengali;


                                if ($itm->objectbahanprodukfk == 1) {
                                    $berkasrs = true;
                                    $kodetindakankonsul = $itm->produkfk;
                                    $ruangankoknsul = $itm->objectruanganfk;
                                    if ($itm->objectpajakpegawai == 1) {
                                        $itm->tarifrs = 18000;
                                        $bruto = 18000;
                                    } else {
                                        $itm->tarifrs = 16000;
                                        $bruto = 16000;
                                    }
                                    $istrueberkasrs = 1;
                                }
                            } else {
                                $itm->tarifrs = $bruto;
                                $bruto = ($itm->jumlah * $bruto);
                                if ($itm->objectbahanprodukfk == 1) {
                                    $istrueberkasrs = 1;
                                }
                            }
                        }
                        if (stripos($itm->namaproduk, 'PENDAFTARAN') !== false) {
                            if ($itm->komponenhargafk == 94) {
                                $itm->tarifrs = $bruto;
                                $bruto = ($itm->jumlah * $bruto) * $pengali;
                            } else {
                                $itm->tarifrs = $bruto;
                                $bruto = $bruto;
                            }
                        }
                    }
                } elseif ($itm->objectdetailjenisprodukfk == '2143' || $itm->objectdetailjenisprodukfk == '2142' || $itm->objectdetailjenisprodukfk == '118') {
                    $bruto = $itm->jumlah * 50000;
                    //perhitungan bruto radiologi biasa
                } else if ($itm->objectdetailjenisprodukfk == '1497' && $itm->objectruanganfk == '576' && stripos($itm->namaproduk, 'USG') === false) {
                    $tarifrad = 0;
                    $tampungnorecpp2 = $itm->norecpp;
                    foreach ($data as $rad) {
                        if ($rad->komponenhargafk == 94) {
                            if ($tampungnorecpp2 == $rad->norecpp) {
                                $tarifrad = $tarifrad + $rad->harganetto + $rad->jasacito;
                            }
                        } else if ($rad->komponenhargafk == 6) {
                            if ($tampungnorecpp2 == $rad->norecpp) {
                                $tarifrad = $tarifrad + $rad->harganetto + $rad->jasacito;
                            }
                        }
                    }
                    $bruto = $tarifrad * 0.3;
                //perhitungan bruto radiologi mri
                } else if ($itm->objectdetailjenisprodukfk == '1426' && $itm->objectruanganfk == '576' && stripos($itm->namaproduk, 'USG') === false) {
                    $tarifrad = 0;
                    $tampungnorecpp2 = $itm->norecpp;
                    foreach ($data as $rad) {
                        if ($rad->komponenhargafk == 94) {
                            if ($tampungnorecpp2 == $rad->norecpp) {
                                $tarifrad = $tarifrad + $rad->harganetto + $rad->jasacito;
                            }
                        } else if ($rad->komponenhargafk == 6) {
                            if ($tampungnorecpp2 == $rad->norecpp) {
                                $tarifrad = $tarifrad + $rad->harganetto + $rad->jasacito;
                            }
                        }
                    }
                    $bruto = $tarifrad * 0.27;
                    //perhitungan bruto radiologi ct scan
                } else if ($itm->objectdetailjenisprodukfk == '1425' && $itm->objectruanganfk == '576' && stripos($itm->namaproduk, 'USG') === false) {
                    $tarifrad = 0;
                    $tampungnorecpp2 = $itm->norecpp;
                    foreach ($data as $rad) {
                        if ($rad->komponenhargafk == 94) {
                            if ($tampungnorecpp2 == $rad->norecpp) {
                                $tarifrad = $tarifrad + $rad->harganetto + $rad->jasacito;
                            }
                        } else if ($rad->komponenhargafk == 6) {
                            if ($tampungnorecpp2 == $rad->norecpp) {
                                $tarifrad = $tarifrad + $rad->harganetto + $rad->jasacito;
                            }
                        }
                    }
                    $bruto = $tarifrad * 0.27;
                    //perhitungan bruto radiologi usg
                } else if (stripos($itm->namaproduk, 'USG') !== false && $itm->objectruanganfk == '576') {
                    $tarifrad = 0;
                    $tampungnorecpp2 = $itm->norecpp;
                    foreach ($data as $rad) {
                        if ($rad->komponenhargafk == 94) {
                            if ($tampungnorecpp2 == $rad->norecpp) {
                                $tarifrad = $tarifrad + $rad->harganetto + $rad->jasacito;
                            }
                        } else if ($rad->komponenhargafk == 6) {
                            if ($tampungnorecpp2 == $rad->norecpp) {
                                $tarifrad = $tarifrad + $rad->harganetto + $rad->jasacito;
                            }
                        }
                    }
                    $bruto = $tarifrad * 0.40;
                    // perhitungan bruto lab all
                } else if ($itm->objectruanganfk == '575') {
                    $tariflab = 0;
                    $tampungnorecpp3 = $itm->norecpp;
                    foreach ($data as $lab) {
                        if ($tampungnorecpp3 == $lab->norecpp) {
                            $tariflab = $tariflab + $lab->harganetto + $lab->jasacito;
                        }
                    }
                    $bruto = $tariflab * 0.25;
                }
                
                // ini untuk n-cov inap bruto pph netto dipatok langsung
                if ($itm->produkfk == 4076909 || $itm->produkfk == 4074833) {
                    if ($itm->komponenhargafk == 25) {
                        $itm->tarifrs = 275000;
                        $bruto = 12500;
                    } else {
                        $itm->tarifrs = 275000;
                        $bruto = 37500;
                    }
                }
                // ini untuk n-cov biasa dan n-cov naso bruto pph netto dipatok langsung
                if ($itm->produkfk == 4076908 || $itm->produkfk == 4076911) {
                    $itm->tarifrs = 275000;
                    $bruto = 55000;
                }
                // cek kalo ada bruto yang 18000 diubah ke 18000.1 biar muncul di laporannya
                if ($bruto == 18000) {
                    $bruto = 18000.1;
                }
                if ($itm->objectruanganfk == '44') {

                    $itm->tarifrs = $itm->harganetto;
                    if (stripos($itm->namakelas, 'vip') !== false) {
                        $bruto = ($itm->jumlah * $itm->tarifrs) * 0.9;
                    } else {
                        $bruto = ($itm->jumlah *  $itm->tarifrs) * 0.8;
                    }
                    // return($bruto);
                    // die();
                }
                //persen pph disimpen disini karena tindakanya dilooping tiap dokter beda persen pphnya

                // $bruto = $itm->tarif * $persenbruto /100;
                if ($itm->namaexternal == "dl") {
                    $bruto = $itm->tarifrs * $itm->jumlah;
                }
                $pph = $bruto * $persenpph / 100;
                //pemeriksaan dokter untuk komponen billing dan rm itu pphnya 0
                if ($itm->objectdetailjenisprodukfk == '2016') {
                    if (stripos($itm->namaproduk, 'PEMERIKSAAN') !== false) {
                        if($itm->komponenhargafk == 99 || $itm->komponenhargafk == 100) {
                            $pph = 0;
                        }
                    }
                }
                $netto = $bruto - $pph;
                // n-cov dipatok
                if ($itm->produkfk == 4076909 || $itm->produkfk == 4074833) {
                    if ($itm->komponenhargafk == 25) {
                        $pph = 625;
                        $netto = 11875;
                    }
                }
                // n-cov dipatok
                // if ($itm->produkfk == 4076908 || $itm->produkfk == 4076911) {
                //     $pph = 8250;
                //     $netto = 46750;
                // }
                if ($tglclosing  == "") {
                    $tglclosing =  $itm->tglpelayanan;
                }
                $tarif = $itm->tarifrs * $itm->jumlah;
                if($tampungcito != 0) {
                    $tarif = ($itm->tarifrs * $itm->jumlah) + $tampungcito;
                }
                $jaspel = new JasaPelayananDokter();
                $norecjaspel = $jaspel->generateNewId();
                $jaspel->norec = $norecjaspel;
                $jaspel->idpetugas = $itm->objectpegawaifk;
                $jaspel->produkfk = $itm->produkfk;
                $jaspel->tarif = $itm->tarifrs * $itm->jumlah;
                $jaspel->jeniskomponen = $itm->komponenhargafk;
                $jaspel->bruto = $bruto;
                $jaspel->pph = $pph;
                $jaspel->netto = $netto;
                $jaspel->petugasverif = $request['pegawaiverif'];
                $jaspel->noregistrasi = $request['noregistrasi'];
                $jaspel->ruanganfk = $itm->objectruanganfk;
                $jaspel->tglpelayanan = $itm->tglpelayanan;
                // $jaspel->tglverif = $itm->tglpelayanan;
                $jaspel->tglverif =  $tglclosing;
                $jaspel->jumlah = (float)$itm->jumlah;
                $jaspel->kelasfk = $itm->idkelas;
                $jaspel->norecpp = $itm->norecpp;
                $jaspel->norecppd = $itm->norecppd;
                $jaspel->objectjenispetugaspefk = $itm->objectjenispetugaspefk;
                $jaspel->objectpajakfk = $itm->objectpajakpegawai;
                $jaspel->isberkasrs = $istrueberkasrs;
                $jaspel->save();

                $istrueberkasrs = NULL;

                if ($itm->objectruanganfk == '576' || $itm->objectruanganfk == '575') {
                    if ($tampungnorecpp == $itm->norecpp) {
                        if ($tampungcito != 0) {
                            $cito = JasaPelayananDokter::where('norecpp', $itm->norecpp)->update([
                                'tarif' => $tarif
                            ]);
                        }
                    } else {
                        $tampungnorecpp = $itm->norecpp;
                        if ($itm->jasacito != null) {
                            $tampungcito = $itm->jasacito;
                        } else {
                            $tampungcito = 0;
                        }
                    }
                }
            }
            //gara2 ini gak muncul si pemeriksaan dokter
            // if ($berkasrs == true) {
            //     $SCSC = JasaPelayananDokter::where('noregistrasi', $request['noregistrasi'])
            //         ->where('produkfk', '!=', $kodetindakankonsul)
            //         ->where('ruanganfk', $ruangankoknsul)
            //         ->delete();
            // }

            //bedah
            $data = DB::select(
                DB::raw(
                    "select jasadokterbedah.objectkelompokpasienlastfk,jasadokterbedah.namaexternal, jasadokterbedah.objectjenispetugaspefk, jasadokterbedah.objectruanganfk, jasadokterbedah.norecpp,jasadokterbedah.objectdetailjenisprodukfk,jasadokterbedah.norecppd,jasadokterbedah.tarifrs,jasadokterbedah.objectpegawaifk, jasadokterbedah.produkfk,jasadokterbedah.objectpajakpegawai,jasadokterbedah.nocm, jasadokterbedah.namalengkap, jasadokterbedah.namaproduk, jasadokterbedah.noregistrasi, jasadokterbedah.komponenharga,  
                  jasadokterbedah.hargajual, jasadokterbedah.jumlah, jasadokterbedah.namaruangan, jasadokterbedah.tglpelayanan, jasadokterbedah.jenispetugaspe, jasadokterbedah.namadepartemen, jasadokterbedah.namarekanan, jasadokterbedah.idkelas, jasadokterbedah.namakelas, 
                  case when golonganpajakpegawai_m.nilaigolongan is null then 100 else golonganpajakpegawai_m.nilaigolongan end as nilaigolongan, golonganpajakpegawai_m.golonganpajakpegawai ,jasadokterbedah.harganetto ,jasadokterbedah.komponenhargafk , jasadokterbedah.objectruanganfk FROM jasadokterbedah LEFT OUTER JOIN
                  golonganpajakpegawai_m ON jasadokterbedah.objectpajakpegawai = golonganpajakpegawai_m.id
                  WHERE (jasadokterbedah.noregistrasi = '$noregistrasi')and jasadokterbedah.tarifrs>0 and jasadokterbedah.objectruanganfk in  (44,277)"
                )
            );
            foreach ($data as $itm) {
                $persenpph = 0;
                $persenpph = $itm->nilaigolongan;
                $bruto = $itm->jumlah * round($itm->hargajual, 0);
                if ($itm->objectdetailjenisprodukfk == '2016') {

                    $dataMapp = \DB::table('mapPelayananToJasa')
                        ->get();
                    foreach ($dataMapp  as $map) {
                        if ($map->produkfk == $itm->produkfk) {
                            $pengali = 0.8;
                        } else {

                            if ($itm->objectkelompokpasienlastfk == 2 || $itm->objectkelompokpasienlastfk == 3) {
                                $pengali = 0.9;
                            } else {
                                $pengali = 0.8;
                            }
                        }
                    }
                    if ($itm->komponenhargafk !== '98' || $itm->komponenhargafk !== '100' || $itm->komponenhargafk !== '25') {
                        if (stripos($itm->namaproduk, 'PEMERIKSAAN') !== false) {
                            $itm->tarifrs = $bruto;
                            $bruto = ($itm->jumlah * $bruto) * $pengali;
                        }
                        if (stripos($itm->namaproduk, 'KONSUL') !== false) {
                            $itm->tarifrs = $bruto;
                            $bruto = ($itm->jumlah * $bruto) * $pengali;
                        } else {
                            $itm->tarifrs = $bruto;
                            $bruto = $bruto;
                        }
                        if (stripos($itm->namaproduk, 'PENDAFTARAN') !== false) {
                            $itm->tarifrs = $bruto;
                            $bruto = ($itm->jumlah * $bruto) * $pengali;
                        }
                    }
                } elseif ($itm->objectdetailjenisprodukfk == '2143' || $itm->objectdetailjenisprodukfk == '2142' || $itm->objectdetailjenisprodukfk == '118') {
                    $bruto = $itm->jumlah * 50000;
                }
                if ($itm->objectruanganfk == '44') {

                    $itm->tarifrs = $itm->harganetto;
                    if (stripos($itm->namakelas, 'vip') !== false) {
                        $bruto = ($itm->jumlah * $itm->tarifrs) * 0.9;
                    } else {
                        $bruto = ($itm->jumlah * $itm->tarifrs) * 0.8;
                    }
                    if ($itm->produkfk == 4077621 || $itm->produkfk == 4077623 || $itm->produkfk == 4077624 || $itm->produkfk == 4077625 || $itm->produkfk == 4077626 || $itm->produkfk == 4077627 || $itm->produkfk == 4077628 || $itm->produkfk == 4077629 || $itm->produkfk == 4077630 || $itm->produkfk == 4077631 || $itm->produkfk == 4077632 || $itm->produkfk == 4077633 || $itm->produkfk == 4077634 || $itm->produkfk == 4077635 || $itm->produkfk == 4077636) {
                        $bruto = ($itm->jumlah * $itm->tarifrs) * 0.8;
                    }
                    // return($bruto);
                    // die();
                }
                //persen pph disimpen disini karena tindakanya dilooping tiap dokter beda persen pphnya

                // $bruto = $itm->tarif * $persenbruto /100;
                if ($itm->namaexternal == "dl") {
                    $bruto = $itm->tarifrs * $itm->jumlah;
                }
                $pph = $bruto * $persenpph / 100;
                $netto = $bruto - $pph;
                if ($tglclosing  == "") {
                    $tglclosing =  $itm->tglpelayanan;
                }
                $jaspel = new JasaPelayananDokter();
                $norecjaspel = $jaspel->generateNewId();
                $jaspel->norec = $norecjaspel;
                $jaspel->idpetugas = $itm->objectpegawaifk;
                $jaspel->produkfk = $itm->produkfk;
                $jaspel->tarif = $itm->tarifrs * $itm->jumlah;
                $jaspel->jeniskomponen = $itm->komponenhargafk;
                $jaspel->bruto = $bruto;
                $jaspel->pph = $pph;
                $jaspel->netto = $netto;
                $jaspel->petugasverif = $request['pegawaiverif'];
                $jaspel->noregistrasi = $request['noregistrasi'];
                $jaspel->ruanganfk = $itm->objectruanganfk;
                $jaspel->tglpelayanan = $itm->tglpelayanan;
                // $jaspel->tglverif = $itm->tglpelayanan;
                $jaspel->tglverif =  $tglclosing;
                $jaspel->jumlah = (float)$itm->jumlah;
                $jaspel->kelasfk = $itm->idkelas;
                $jaspel->norecpp = $itm->norecpp;
                $jaspel->norecppd = $itm->norecppd;
                $jaspel->objectjenispetugaspefk = $itm->objectjenispetugaspefk;
                $jaspel->objectpajakfk = $itm->objectpajakpegawai;
                $jaspel->save();
            }


            $transStatus = 'true';
        } catch (\Exception $e) {
            $transStatus = 'false';
        }
        $transMessage = "Remunerasi";

        if ($transStatus == 'true') {
            $transMessage = $transMessage . " Berhasil";
            DB::commit();
            $result = array(
                "status" => 201,
                "by" => 'as@epic',
            );
        } else {
            $transMessage = $transMessage . " Gagal!!";
            DB::rollBack();
            $result = array(
                "status" => 400,
                "by" => 'as@epic',
            );
        }
        return $this->setStatusCode($result['status'])->respond($result, $transMessage);
    }
Leave a Comment