diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
index 22463651b61e99d441dc2835b0fa1d5e4e2ef360..54916c3dad407d30a0621b9b6370f9710c20793b 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
@@ -23,6 +23,8 @@ import spring.tk.springtkapap.obat.model.ObatModel;
 import spring.tk.springtkapap.obat.service.ObatService;
 import spring.tk.springtkapap.resep.model.ResepModel;
 import spring.tk.springtkapap.resep.service.ResepService;
+import spring.tk.springtkapap.tagihan.TagihanModel;
+import spring.tk.springtkapap.tagihan.TagihanService;
 import spring.tk.springtkapap.user.model.ApotekerModel;
 
 @Controller
@@ -45,6 +47,9 @@ public class ResepController {
     @Autowired
     private ApotekerService apotekerService;
 
+    @Autowired
+    private TagihanService tagihanService;
+
     @GetMapping("/add/{kodeAppointment}")
     public String addResepForm(@PathVariable("kodeAppointment") String kodeApt, Model model){
         AppointmentModel appointment = appointmentService.getAppointment(kodeApt);
@@ -176,11 +181,13 @@ public class ResepController {
     @PostMapping("/update/{idResep}")
     public String updateResep(@PathVariable Long idResep, Model model){
         ResepModel resep = resepService.getResep(idResep);
+        AppointmentModel appointment = resep.getAppointment();
         resep.setIsDone(Boolean.TRUE);
         resepService.addResep(resep);
         model.addAttribute("resep", resep);
-
         List<JumlahModel> listJumlah = resep.getListJumlah();
+        tagihanService.addTagihan(appointment, listJumlah);
+
         model.addAttribute("listJumlah", listJumlah);
         model.addAttribute("resep", resep);
         model.addAttribute("dokter", resep.getAppointment().getDokter());
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java
index 37cd9fc784e2283eac0ee8a9b4c00a0c9b4ee7b0..35eb88312c4202481bd78297e1207bbc88277c71 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java
@@ -10,6 +10,7 @@ import spring.tk.springtkapap.appointment.model.AppointmentModel;
 import spring.tk.springtkapap.auth.model.RolesEnum;
 import spring.tk.springtkapap.auth.model.UserModel;
 import spring.tk.springtkapap.auth.service.UserService;
+import spring.tk.springtkapap.jumlah.model.JumlahModel;
 import spring.tk.springtkapap.resep.model.ResepModel;
 import spring.tk.springtkapap.tagihan.TagihanModel;
 import spring.tk.springtkapap.tagihan.TagihanService;
@@ -20,6 +21,7 @@ import spring.tk.springtkapap.user.service.DokterService;
 import spring.tk.springtkapap.user.service.PasienService;
 
 import java.security.Principal;
+import java.util.ArrayList;
 import java.util.List;
 
 @Controller
@@ -95,7 +97,9 @@ public class AppointmentController {
         appointment.setKode(kodeApt);
         appointmentService.updateAppointment(appointment);
         var tagihan = new TagihanModel();
-        tagihanService.addTagihan(tagihan, appointment);
+        appointment.getListResep();
+        List<JumlahModel> listJumlah = new ArrayList<>();
+        tagihanService.addTagihan(appointment, listJumlah);
         appointment.getListTagihan().add(tagihan);
         appointmentService.updateAppointment(appointment);
         model.addAttribute("resepStatus", Boolean.FALSE);
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
index 93d55bd239f294fed10c62804600f64499b66475..2d6fa6e46be3d9b6759b32fbf8f5eb7ba21cc631 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
@@ -55,6 +55,7 @@ public class WebSecurityConfig {
                     .antMatchers("/obat/update/**").hasAuthority(APOTEKER)
                     .antMatchers("/user/add/**").hasAuthority(ADMIN)
                     .antMatchers("/user/delete/**").hasAuthority(ADMIN)
+                    .antMatchers("/resep/update/**").hasAuthority(ADMIN)
                     .antMatchers("/appointment/viewall").hasAnyAuthority(ADMIN, DOKTER, PASIEN)
                     .antMatchers("/appointment/detail").hasAnyAuthority(ADMIN, DOKTER, PASIEN)
                     .antMatchers("/user/viewall/**").hasAuthority(ADMIN)
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java
index 70c3812dda0efe40987fda9b3264856b6a884630..09b63a23e0b171b176bc3b40fe96d457b8fe0cc5 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java
@@ -7,6 +7,7 @@ import java.util.List;
 
 public interface ObatService {
     void addObat(ObatDTO obat);
+    void updateObat(ObatModel obat);
     List<ObatModel> getListObat();
     ObatModel getObat(String idObat);
 }
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java
index c2ffea659e5bd18d901212c0dd091f4af276f46d..28b59081d8776df5f85afdbe3f473deba823f31b 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java
@@ -27,6 +27,12 @@ public class ObatServiceImpl implements ObatService{
         obatDb.save(newObat);
     }
 
+    @Override
+    public void updateObat(ObatModel obat) {
+        obatDb.save(obat);
+    }
+
+
     @Override
     public List<ObatModel> getListObat() {
         return obatDb.findAll();
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java
index 2f63a0abaabb62175396ff0e9f59d442b975aeb6..fec190e06cc16ff898fe9ab352f27dfbe26e7cbd 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java
@@ -1,10 +1,12 @@
 package spring.tk.springtkapap.tagihan;
 
 import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.jumlah.model.JumlahModel;
+
+import java.util.List;
 
 public interface TagihanService {
-    TagihanModel addTagihan(TagihanModel tagihan, AppointmentModel appointment);
+    TagihanModel addTagihan(AppointmentModel appointment, List<JumlahModel> listJumlah);
     TagihanModel findbyKode(String kode);
 
-
 }
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java
index 53526634be817265f1dbddacc66d7a77b6a700a6..45f1d91c9fe45dc34ea475536c36d7d4507a9530 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java
@@ -4,9 +4,14 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import spring.tk.springtkapap.appointment.AppointmentDB;
 import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.jumlah.model.JumlahModel;
+import spring.tk.springtkapap.obat.model.ObatModel;
+import spring.tk.springtkapap.obat.service.ObatService;
+
 import javax.transaction.Transactional;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Optional;
 
 @Service
@@ -19,10 +24,24 @@ public class TagihanServiceImpl implements TagihanService{
     @Autowired
     AppointmentDB appointmentDB;
 
+    @Autowired
+    ObatService obatService;
+
     @Override
-    public TagihanModel addTagihan(TagihanModel tagihan, AppointmentModel appointment) {
+    public TagihanModel addTagihan(AppointmentModel appointment, List<JumlahModel> listJumlah) {
+        Integer nominalTagihan = appointment.getDokter().getTarif();
+        if(!listJumlah.isEmpty()){
+            for(JumlahModel obatDibutuhkan : listJumlah){
+                nominalTagihan += (obatDibutuhkan.getObat().getHarga()*obatDibutuhkan.getKuantitas());
+                String idObat = obatDibutuhkan.getObat().getIdObat();
+                ObatModel obatUpdate = obatService.getObat(idObat);
+                obatUpdate.setStok(obatUpdate.getStok()-obatDibutuhkan.getKuantitas());
+                obatService.updateObat(obatUpdate);
+            }
+        }
+        TagihanModel tagihan = new TagihanModel();
         tagihan.setAppointment(appointment);
-        tagihan.setJumlahTagihan(appointment.getDokter().getTarif());
+        tagihan.setJumlahTagihan(nominalTagihan);
         tagihan.setIsPaid(Boolean.FALSE);
         tagihan.setTanggalBayar(null);
         tagihan.setTanggalTerbuat(LocalDateTime.now());
diff --git a/SpringTkApap/src/main/resources/templates/resep/view-resep.html b/SpringTkApap/src/main/resources/templates/resep/view-resep.html
index 4a0087274edcca312aaf8883497829544643c064..afe3e2c69d560286c765061b1d6712c71cc0a423 100644
--- a/SpringTkApap/src/main/resources/templates/resep/view-resep.html
+++ b/SpringTkApap/src/main/resources/templates/resep/view-resep.html
@@ -64,7 +64,7 @@
             </div>
             <br>
             <div th:if="${resep.isDone}">
-                <p>Resep telah dikonfirmasi!</p>
+                <p>Resep telah dikonfirmasi dan tagihan sudah keluar!</p>
             </div>
             <div th:unless="${resep.isDone}">
                 <form th:action="@{/resep/update/} + ${resep.id}" th:object="${resep}" method="POST">