Suggest a feature
×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: Java
Posted by: Mulyadi Minami
Added: Sep 6, 2021 11:47 AM
Views: 269
Tags: no tags
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package com.df.dolphinpos.controllers;
  7.  
  8. import com.df.dolphinpos.dto.MasterDetailPembelianDTO;
  9. import com.df.dolphinpos.dto.ResponseResult;
  10. import com.df.dolphinpos.entities.BarangEntity;
  11. import com.df.dolphinpos.entities.PembelianDetailEntity;
  12. import com.df.dolphinpos.entities.PembelianMasterEntity;
  13. import com.df.dolphinpos.repositories.BarangRepository;
  14. import com.df.dolphinpos.repositories.PembelianDetailRepository;
  15. import com.df.dolphinpos.repositories.PembelianMasterRepository;
  16. import java.util.List;
  17. import java.util.Optional;
  18. import java.util.UUID;
  19. import javax.transaction.Transactional;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.data.domain.Page;
  22. import org.springframework.data.domain.Pageable;
  23. import org.springframework.web.bind.annotation.DeleteMapping;
  24. import org.springframework.web.bind.annotation.GetMapping;
  25. import org.springframework.web.bind.annotation.PathVariable;
  26. import org.springframework.web.bind.annotation.PostMapping;
  27. import org.springframework.web.bind.annotation.PutMapping;
  28. import org.springframework.web.bind.annotation.RequestBody;
  29. import org.springframework.web.bind.annotation.RequestMapping;
  30. import org.springframework.web.bind.annotation.RequestParam;
  31. import org.springframework.web.bind.annotation.RestController;
  32.  
  33. /**
  34.  *
  35.  * @author Minami
  36.  */
  37. @RestController
  38. @RequestMapping("/api/pembelian")
  39. public class PembelianController {
  40.  
  41.     @Autowired
  42.     PembelianMasterRepository pembelianmasterrepo;
  43.  
  44.     @Autowired
  45.     PembelianDetailRepository pembeliandetailrepo;
  46.  
  47.     @Autowired
  48.     BarangRepository barangrepo;
  49.  
  50.     @GetMapping("/getdata/{idOutlet}")
  51.     public Page<PembelianMasterEntity> getdata(Pageable pg, @PathVariable UUID idOutlet, @RequestParam String keyword) {
  52.         Page<PembelianMasterEntity> result = null;
  53.         if (keyword.equals("")) {
  54.             result = pembelianmasterrepo.findByIdOutlet(pg, idOutlet);
  55.         } else {
  56.             result = pembelianmasterrepo.findByIdOutletAndKodePembelianMasterContainingIgnoreCase(pg, idOutlet, keyword);
  57.         }
  58.         return result;
  59.     }
  60.  
  61.     @GetMapping("/getdatabyid/{idOutlet}/{id}")
  62.     public Optional<PembelianMasterEntity> getdatabyid(@PathVariable UUID idOutlet, @PathVariable UUID id) {
  63.         return pembelianmasterrepo.findByIdAndIdOutlet(idOutlet, id);
  64.     }
  65.  
  66.     @GetMapping("/getdatadetailbyidpembelian/{idOutlet}/{idPembelian}")
  67.     public List<PembelianDetailEntity> getDataDetailByIdPenjualan(@PathVariable UUID idOutlet, @PathVariable UUID idPembelian) {
  68.         return pembeliandetailrepo.findByIdPembelianMaster(idPembelian);
  69.     }
  70.  
  71.     @Transactional
  72.     @PostMapping("/adddata")
  73.     public ResponseResult adddata(@RequestBody MasterDetailPembelianDTO data) {
  74.         ResponseResult res = new ResponseResult();
  75.         PembelianMasterEntity entityMaster = pembelianmasterrepo.save(data.getMaster());
  76.         for (int i = 0; i < data.getDetail().size(); i++) {
  77.             data.getDetail().get(i).setIdPembelianMaster(entityMaster.getId());
  78.         }
  79.  
  80.         for (int i = 0; i < data.getDetail().size(); i++) {
  81.  
  82.             UUID uid = new UUID(0, 0);
  83.             if (data.getDetail().get(i).getIdBarang() != null) {
  84.                 uid = data.getDetail().get(i).getIdBarang();
  85.             }
  86.             boolean isExist = barangrepo.existsById(uid);
  87.             if (isExist) {
  88.                 BarangEntity barang = barangrepo.findById(data.getDetail().get(i).getIdBarang()).get();
  89.                 double jumlahbarangkurangi = barang.getJumlahBarang() + data.getDetail().get(i).getJumlahBeli();
  90.                 barang.setJumlahBarang(jumlahbarangkurangi);
  91.                 barangrepo.save(barang);
  92.             } else {
  93.                 BarangEntity barang = new BarangEntity();
  94.                 barang.setKodeBarang(data.getDetail().get(i).getKodeBarang());
  95.                 barang.setNamaBarang(data.getDetail().get(i).getNamaBarang());
  96.                 barang.setSatuanBarang(data.getDetail().get(i).getSatuanBarang());
  97.                 barang.setJumlahBarang(data.getDetail().get(i).getJumlahBeli());
  98.                 barang.setHargaBeli(data.getDetail().get(i).getHargaBeliBeli());
  99.                 barang.setHargaJual(data.getDetail().get(i).getHargaJualBeli());
  100.                 barang.setTipeBarang(data.getDetail().get(i).getTipeBarang());
  101.                 barang.setKodeBarang(data.getDetail().get(i).getKodeBarang());
  102.                 barang.setIdOutlet(data.getDetail().get(i).getIdOutlet());
  103.                 barang.setIdPengguna(data.getDetail().get(i).getIdPengguna());
  104.                 BarangEntity newbarang = barangrepo.save(barang);
  105.                 data.getDetail().get(i).setIdBarang(newbarang.getId());
  106.             }
  107.  
  108.         }
  109.  
  110.         List<PembelianDetailEntity> entityDetail = pembeliandetailrepo.saveAll(data.getDetail());
  111.  
  112.         MasterDetailPembelianDTO resraw = new MasterDetailPembelianDTO();
  113.         resraw.setMaster(entityMaster);
  114.         resraw.setDetail(entityDetail);
  115.  
  116.         res.setCode(0);
  117.         res.setStatus("success");
  118.         res.setMessage(entityMaster.getKodePembelianMaster() + " berhasil ditambah");
  119.         res.setContent(resraw);
  120.  
  121.         return res;
  122.     }
  123.  
  124.     @Transactional
  125.     @PostMapping("/updatedata/{id}")
  126.     public ResponseResult updatedatas(@RequestBody MasterDetailPembelianDTO data, @PathVariable UUID id) {
  127.         ResponseResult res = new ResponseResult();
  128.         PembelianMasterEntity pembelianmasterentity = pembelianmasterrepo.findById(id).get();
  129.         pembelianmasterentity.setTanggalPembelian(data.getMaster().getTanggalPembelian());
  130.         pembelianmasterentity.setKodePembelianMaster(data.getMaster().getKodePembelianMaster());
  131.         pembelianmasterentity.setIdAkunKeuangan(data.getMaster().getIdAkunKeuangan());
  132.         pembelianmasterentity.setIdAkunKeuanganDebit(data.getMaster().getIdAkunKeuanganDebit());
  133.         pembelianmasterentity.setIdKartuKontak(data.getMaster().getIdKartuKontak());
  134.         pembelianmasterentity.setDeskripsi(data.getMaster().getDeskripsi());
  135.         pembelianmasterentity.setIdPengguna(data.getMaster().getIdPengguna());
  136.         pembelianmasterentity.setStatus(2);
  137.         pembelianmasterentity.setTax(data.getMaster().getTax());
  138.         pembelianmasterentity.setDisc(data.getMaster().getDisc());
  139.         pembelianmasterentity.setTotalBelanja(data.getMaster().getTotalBelanja());
  140.         PembelianMasterEntity entityMaster = pembelianmasterrepo.save(pembelianmasterentity);
  141.  
  142.         List<PembelianDetailEntity> entityDetailSelect = pembeliandetailrepo.findByIdPembelianMaster(id);
  143.         for (int i = 0; i < entityDetailSelect.size(); i++) {
  144.             BarangEntity barang = barangrepo.findById(entityDetailSelect.get(i).getIdBarang()).get();
  145.             double jumlahbarangkurangi = barang.getJumlahBarang() - entityDetailSelect.get(i).getJumlahBeli();
  146.             barang.setJumlahBarang(jumlahbarangkurangi);
  147.             barangrepo.save(barang);
  148.         }
  149.  
  150.         for (int i = 0; i < data.getDetail().size(); i++) {
  151.             UUID uid = new UUID(0, 0);
  152.             if (data.getDetail().get(i).getIdBarang() != null) {
  153.                 uid = data.getDetail().get(i).getIdBarang();
  154.             }
  155.             boolean isExist = barangrepo.existsById(uid);
  156.             if (isExist) {
  157.                 BarangEntity barang = barangrepo.findById(data.getDetail().get(i).getIdBarang()).get();
  158.                 double jumlahbarangkurangi = barang.getJumlahBarang() + data.getDetail().get(i).getJumlahBeli();
  159.                 barang.setJumlahBarang(jumlahbarangkurangi);
  160.                 barangrepo.save(barang);
  161.             } else {
  162.                 BarangEntity barang = new BarangEntity();
  163.                 barang.setKodeBarang(data.getDetail().get(i).getKodeBarang());
  164.                 barang.setNamaBarang(data.getDetail().get(i).getNamaBarang());
  165.                 barang.setSatuanBarang(data.getDetail().get(i).getSatuanBarang());
  166.                 barang.setJumlahBarang(data.getDetail().get(i).getJumlahBeli());
  167.                 barang.setHargaBeli(data.getDetail().get(i).getHargaBeliBeli());
  168.                 barang.setHargaJual(data.getDetail().get(i).getHargaJualBeli());
  169.                 barang.setTipeBarang(data.getDetail().get(i).getTipeBarang());
  170.                 barang.setKodeBarang(data.getDetail().get(i).getKodeBarang());
  171.                 barang.setIdOutlet(data.getDetail().get(i).getIdOutlet());
  172.                 barang.setIdPengguna(data.getDetail().get(i).getIdPengguna());
  173.                 barangrepo.save(barang);
  174.             }
  175.  
  176.         }
  177.  
  178.         pembeliandetailrepo.deleteByIdPembelianMaster(id);
  179.         pembeliandetailrepo.flush();
  180.  
  181.         for (int i = 0; i < data.getDetail().size(); i++) {
  182.             data.getDetail().get(i).setIdPembelianMaster(id);
  183.         }
  184.  
  185.         List<PembelianDetailEntity> entityDetailUpdate = pembeliandetailrepo.saveAll(data.getDetail());
  186.  
  187.         MasterDetailPembelianDTO resraw = new MasterDetailPembelianDTO();
  188.         resraw.setMaster(entityMaster);
  189.         resraw.setDetail(entityDetailUpdate);
  190.  
  191.         res.setCode(0);
  192.         res.setStatus("success");
  193.         res.setMessage(entityMaster.getKodePembelianMaster() + " berhasil diperbaharui");
  194.         res.setContent(resraw);
  195.         return res;
  196.     }
  197.  
  198.     @Transactional
  199.     @DeleteMapping("/deletedata/{id}")
  200.     public ResponseResult deletedata(@PathVariable UUID id) {
  201.         ResponseResult res = new ResponseResult();
  202.         try {
  203.             List<PembelianDetailEntity> entityDetailSelect = pembeliandetailrepo.findByIdPembelianMaster(id);
  204.             for (int i = 0; i < entityDetailSelect.size(); i++) {
  205.                 BarangEntity barang = barangrepo.findById(entityDetailSelect.get(i).getIdBarang()).get();
  206.                 double jumlahbarangkurangi = barang.getJumlahBarang() - entityDetailSelect.get(i).getJumlahBeli();
  207.                 barang.setJumlahBarang(jumlahbarangkurangi);
  208.                 barangrepo.save(barang);
  209.             }
  210.             PembelianMasterEntity pembelianmasterentity = pembelianmasterrepo.findById(id).get();
  211.             pembelianmasterrepo.delete(pembelianmasterentity);
  212.             res.setCode(0);
  213.             res.setStatus("success");
  214.             res.setMessage(pembelianmasterentity.getKodePembelianMaster() + " berhasil dihapus");
  215.         } catch (Exception e) {
  216.             res.setCode(1);
  217.             res.setStatus("failed");
  218.             res.setMessage(e.getMessage());
  219.         }
  220.         return res;
  221.     }
  222.  
  223.     @Transactional
  224.     @PutMapping("/updatestatus/{id}/{status}")
  225.     public ResponseResult updatedata(@PathVariable UUID id, @PathVariable int status) {
  226.         ResponseResult res = new ResponseResult();
  227.         try {
  228.             PembelianMasterEntity pembelianmasterentity = pembelianmasterrepo.findById(id).get();
  229.             pembelianmasterentity.setStatus(status);
  230.             if (status == 0) {
  231.                 pembelianmasterentity.setStatusMessage("Pending");
  232.             } else if (status == 1) {
  233.                 pembelianmasterentity.setStatusMessage("Complete");
  234.             } else if (status == 2) {
  235.                 pembelianmasterentity.setStatusMessage("Edited to " + pembelianmasterentity.getKodePembelianMaster());
  236.             }
  237.  
  238.             PembelianMasterEntity entity = pembelianmasterrepo.save(pembelianmasterentity);
  239.             res.setCode(0);
  240.             res.setStatus("success");
  241.             res.setMessage(entity.getKodePembelianMaster() + " berhasil diperbaharui");
  242.             res.setContent(entity);
  243.         } catch (Exception e) {
  244.             res.setCode(1);
  245.             res.setStatus("failed");
  246.             res.setMessage(e.getMessage());
  247.         }
  248.         return res;
  249.     }
  250.  
  251. }
  252.