package com.jasamedika.medifirst2000.vo;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Transient;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import com.jasamedika.medifirst2000.helper.Caption;

public class DetailSpekAnggaranVO extends BaseTransactionVO{
	
	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value="detail Anggaran")
	private DetailAnggaranVO detailAnggaran;
	
	@ManyToOne
	@Caption(value="Produk")
	private ProdukVO produk;
	
	@Caption(value = "Volume Barang")
	private float volumeBarang;

	@Caption(value = "Harga Satuan Barang")
	private Double hargaSatuanBarang;

	@Caption(value = "Total Harga Barang")
	private Double totalHargaBarang;
	
	@Caption(value = "Status Code")
	private Integer statusCode;
	
	public String isVerifikasi;
	
	public Boolean isActive;
	
	@ManyToOne
	@Caption(value = "Ruangan")
	private RuanganVO ruangan;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Jenis Belanja")
	private JenisBelanjaVO jenisBelanja;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Jenis Pengadaan")
	private JenisPengadaanVO jenisPengadaan;
	
	@Caption(value = "Periode Awal")
	private Date periodeAwal;
	
	@Caption(value = "Periode Ahir")
	private Date periodeAhir;
	
	@Caption(value="Keterangan")
	private String keterangan;
	
	@ManyToOne
	@Caption(value = "Object Pengendali")
	private PengendaliVO pengendali;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Detail Spek ANggaran")
	private DetailSpekAnggaranVO detailSpekAnggaran;
	
	@Caption(value="Spesifikasi")
	private String spesifikasi;
	
	@Column(name = "Tipe", nullable = true)
	@Caption(value="Tipe")
	private String tipe;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Satuan Standar")
	private SatuanStandarVO satuanStandar;
	
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "detailSpekAnggaran")
	private Set<DetailSpekAnggaranVO> detailSpekAnggaranSet = new HashSet<>();
	
	
	
	public SatuanStandarVO getSatuanStandar() {
		return satuanStandar;
	}

	public void setSatuanStandar(SatuanStandarVO satuanStandar) {
		this.satuanStandar = satuanStandar;
	}

	@Transient
	private Date pelaksanaanPemilihanAwal;
	
	@Transient
	private Date pelaksanaanPemilihanAhir;
	
	@Transient
	private Date pelaksanaanPekerjaanAwal;
	
	@Transient
	private Date pelaksanaanPekerjaanAhir;
	
	@Transient
	private String keteranganRup;

	public DetailAnggaranVO getDetailAnggaran() {
		return detailAnggaran;
	}

	public void setDetailAnggaran(DetailAnggaranVO detailAnggaran) {
		this.detailAnggaran = detailAnggaran;
	}

	public ProdukVO getProduk() {
		return produk;
	}

	public void setProduk(ProdukVO produk) {
		this.produk = produk;
	}

	public float getVolumeBarang() {
		return volumeBarang;
	}

	public void setVolumeBarang(float volumeBarang) {
		this.volumeBarang = volumeBarang;
	}

	public Double getHargaSatuanBarang() {
		return hargaSatuanBarang;
	}

	public void setHargaSatuanBarang(Double hargaSatuanBarang) {
		this.hargaSatuanBarang = hargaSatuanBarang;
	}

	public Double getTotalHargaBarang() {
		return totalHargaBarang;
	}

	public void setTotalHargaBarang(Double totalHargaBarang) {
		this.totalHargaBarang = totalHargaBarang;
	}

	public Integer getStatusCode() {
		return statusCode;
	}

	public void setStatusCode(Integer statusCode) {
		this.statusCode = statusCode;
	}

	

	public Boolean getIsActive() {
		return isActive;
	}

	public void setIsActive(Boolean isActive) {
		this.isActive = isActive;
	}

	public RuanganVO getRuangan() {
		return ruangan;
	}

	public void setRuangan(RuanganVO ruangan) {
		this.ruangan = ruangan;
	}

	public JenisBelanjaVO getJenisBelanja() {
		return jenisBelanja;
	}

	public void setJenisBelanja(JenisBelanjaVO jenisBelanja) {
		this.jenisBelanja = jenisBelanja;
	}

	public JenisPengadaanVO getJenisPengadaan() {
		return jenisPengadaan;
	}

	public void setJenisPengadaan(JenisPengadaanVO jenisPengadaan) {
		this.jenisPengadaan = jenisPengadaan;
	}

	public Date getPeriodeAwal() {
		return periodeAwal;
	}

	public void setPeriodeAwal(Date periodeAwal) {
		this.periodeAwal = periodeAwal;
	}

	public Date getPeriodeAhir() {
		return periodeAhir;
	}

	public void setPeriodeAhir(Date periodeAhir) {
		this.periodeAhir = periodeAhir;
	}

	public String getKeterangan() {
		return keterangan;
	}

	public void setKeterangan(String keterangan) {
		this.keterangan = keterangan;
	}

	public PengendaliVO getPengendali() {
		return pengendali;
	}

	public void setPengendali(PengendaliVO pengendali) {
		this.pengendali = pengendali;
	}

	public DetailSpekAnggaranVO getDetailSpekAnggaran() {
		return detailSpekAnggaran;
	}

	public void setDetailSpekAnggaran(DetailSpekAnggaranVO detailSpekAnggaran) {
		this.detailSpekAnggaran = detailSpekAnggaran;
	}

	public String getSpesifikasi() {
		return spesifikasi;
	}

	public void setSpesifikasi(String spesifikasi) {
		this.spesifikasi = spesifikasi;
	}

	public Set<DetailSpekAnggaranVO> getDetailSpekAnggaranSet() {
		return detailSpekAnggaranSet;
	}
	
	public void setDetailSpekAnggaranSet(Set<DetailSpekAnggaranVO> detailSpekAnggaranSet) {
		this.detailSpekAnggaranSet = detailSpekAnggaranSet;
	}

	public Date getPelaksanaanPemilihanAwal() {
		return pelaksanaanPemilihanAwal;
	}

	public void setPelaksanaanPemilihanAwal(Date pelaksanaanPemilihanAwal) {
		this.pelaksanaanPemilihanAwal = pelaksanaanPemilihanAwal;
	}

	public Date getPelaksanaanPemilihanAhir() {
		return pelaksanaanPemilihanAhir;
	}

	public void setPelaksanaanPemilihanAhir(Date pelaksanaanPemilihanAhir) {
		this.pelaksanaanPemilihanAhir = pelaksanaanPemilihanAhir;
	}

	public Date getPelaksanaanPekerjaanAwal() {
		return pelaksanaanPekerjaanAwal;
	}

	public void setPelaksanaanPekerjaanAwal(Date pelaksanaanPekerjaanAwal) {
		this.pelaksanaanPekerjaanAwal = pelaksanaanPekerjaanAwal;
	}

	public Date getPelaksanaanPekerjaanAhir() {
		return pelaksanaanPekerjaanAhir;
	}

	public void setPelaksanaanPekerjaanAhir(Date pelaksanaanPekerjaanAhir) {
		this.pelaksanaanPekerjaanAhir = pelaksanaanPekerjaanAhir;
	}

	public String getKeteranganRup() {
		return keteranganRup;
	}

	public void setKeteranganRup(String keteranganRup) {
		this.keteranganRup = keteranganRup;
	}

	public String getTipe() {
		return tipe;
	}

	public void setTipe(String tipe) {
		this.tipe = tipe;
	}

	public String getIsVerifikasi() {
		return isVerifikasi;
	}

	public void setIsVerifikasi(String isVerifikasi) {
		this.isVerifikasi = isVerifikasi;
	}
	
	
	
}
