package com.jasamedika.medifirst2000.entities;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.jasamedika.medifirst2000.base.BaseMaster;
import com.jasamedika.medifirst2000.helper.Caption;

/**
 * class KelompokProduk
 * 
 * @author Generator
 */
@Entity // @Audited
@Table(name = "KelompokProduk_M")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class KelompokProduk extends BaseMaster {
	@Caption(value = "Is Having Price")
	private Byte isHavingPrice;

	public void setIsHavingPrice(Byte isHavingPrice) {
		this.isHavingPrice = isHavingPrice;
	}

	@Column(name = "isHavingPrice", nullable = true)
	public Byte getIsHavingPrice() {
		return this.isHavingPrice;
	}

	@Caption(value = "Is Having Stok")
	private Byte isHavingStok;

	public void setIsHavingStok(Byte isHavingStok) {
		this.isHavingStok = isHavingStok;
	}

	@Column(name = "isHavingStok", nullable = true)
	public Byte getIsHavingStok() {
		return this.isHavingStok;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ObjectDepartemenFk")
	@NotNull(message = "Object Departemen Harus Diisi")
	@Caption(value = "Object Departemen")
	private Departemen departemen;

	public void setDepartemen(Departemen departemen) {
		this.departemen = departemen;
	}

	@NotNull(message = "Kd Departemen tidak boleh kosong")

	public Departemen getDepartemen() {
		return this.departemen;
	}

	@Column(name = "ObjectDepartemenFk", insertable = false, updatable = false)
	private Integer departemenId;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ObjectJenisTransaksiFk")
	@Caption(value = "Object Jenis Transaksi")
	private JenisTransaksi jenisTransaksi;

	public void setJenisTransaksi(JenisTransaksi jenisTransaksi) {
		this.jenisTransaksi = jenisTransaksi;
	}

	public JenisTransaksi getJenisTransaksi() {
		return this.jenisTransaksi;
	}

	@Column(name = "ObjectJenisTransaksiFk", insertable = false, updatable = false)
	private Integer jenisTransaksiId;

	@Caption(value = "Kode Kelompok Produk")
	private Byte kdKelompokProduk;

	public void setKdKelompokProduk(Byte kdKelompokProduk) {
		this.kdKelompokProduk = kdKelompokProduk;
	}

	@NotNull(message = "Kd Kelompok Produk tidak boleh kosong")
	@Column(name = "KdKelompokProduk", nullable = false)
	public Byte getKdKelompokProduk() {
		return this.kdKelompokProduk;
	}

	@Caption(value = "Kelompok Produk")
	private String kelompokProduk;

	public void setKelompokProduk(String kelompokProduk) {
		this.kelompokProduk = kelompokProduk;
	}

	@NotNull(message = "Kelompok Produk tidak boleh kosong")
	@Column(name = "KelompokProduk", nullable = false, length = 30)
	public String getKelompokProduk() {
		return this.kelompokProduk;
	}

	@Caption(value = "QKelompok Produk")
	private Byte qKelompokProduk;

	public void setqKelompokProduk(Byte qKelompokProduk) {
		this.qKelompokProduk = qKelompokProduk;
	}

	@NotNull(message = "QKelompok Produk tidak boleh kosong")
	@Column(name = "QKelompokProduk", nullable = false)
	public Byte getqKelompokProduk() {
		return this.qKelompokProduk;
	}

	/*
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kdkelompokproduk") private Set<BahanProduk> BahanProdukSet = new
	 * HashSet<BahanProduk>();
	 * 
	 * public Set<BahanProduk> getBahanProdukSet() { return BahanProdukSet; }
	 * 
	 * public void setBahanProdukSet(Set<BahanProduk> bahanProdukSet) {
	 * BahanProdukSet = bahanProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kdkelompokproduk") private Set<BentukProduk> BentukProdukSet = new
	 * HashSet<BentukProduk>();
	 * 
	 * public Set<BentukProduk> getBentukProdukSet() { return BentukProdukSet; }
	 * 
	 * public void setBentukProdukSet(Set<BentukProduk> bentukProdukSet) {
	 * BentukProdukSet = bentukProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kdkelompokproduk") private Set<DetailGolonganProduk>
	 * DetailGolonganProdukSet = new HashSet<DetailGolonganProduk>();
	 * 
	 * public Set<DetailGolonganProduk> getDetailGolonganProdukSet() { return
	 * DetailGolonganProdukSet; }
	 * 
	 * public void setDetailGolonganProdukSet(Set<DetailGolonganProduk>
	 * detailGolonganProdukSet) { DetailGolonganProdukSet =
	 * detailGolonganProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kdkelompokproduk") private Set<FungsiProduk> FungsiProdukSet = new
	 * HashSet<FungsiProduk>();
	 * 
	 * public Set<FungsiProduk> getFungsiProdukSet() { return FungsiProdukSet; }
	 * 
	 * public void setFungsiProdukSet(Set<FungsiProduk> fungsiProdukSet) {
	 * FungsiProdukSet = fungsiProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kdkelompokproduk") private Set<GolonganProduk> GolonganProdukSet = new
	 * HashSet<GolonganProduk>();
	 * 
	 * public Set<GolonganProduk> getGolonganProdukSet() { return
	 * GolonganProdukSet; }
	 * 
	 * public void setGolonganProdukSet(Set<GolonganProduk> golonganProdukSet) {
	 * GolonganProdukSet = golonganProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kdkelompokproduk") private Set<JenisDiet> JenisDietSet = new
	 * HashSet<JenisDiet>();
	 * 
	 * public Set<JenisDiet> getJenisDietSet() { return JenisDietSet; }
	 * 
	 * public void setJenisDietSet(Set<JenisDiet> jenisDietSet) { JenisDietSet =
	 * jenisDietSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kdkelompokproduk") private Set<JenisProduk> JenisProdukSet = new
	 * HashSet<JenisProduk>();
	 * 
	 * public Set<JenisProduk> getJenisProdukSet() { return JenisProdukSet; }
	 * 
	 * public void setJenisProdukSet(Set<JenisProduk> jenisProdukSet) {
	 * JenisProdukSet = jenisProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kdkelompokproduk") private Set<JenisWaktu> JenisWaktuSet = new
	 * HashSet<JenisWaktu>();
	 * 
	 * public Set<JenisWaktu> getJenisWaktuSet() { return JenisWaktuSet; }
	 * 
	 * public void setJenisWaktuSet(Set<JenisWaktu> jenisWaktuSet) {
	 * JenisWaktuSet = jenisWaktuSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kdkelompokproduk") private Set<KategoryDiet> KategoryDietSet = new
	 * HashSet<KategoryDiet>();
	 * 
	 * public Set<KategoryDiet> getKategoryDietSet() { return KategoryDietSet; }
	 * 
	 * public void setKategoryDietSet(Set<KategoryDiet> kategoryDietSet) {
	 * KategoryDietSet = kategoryDietSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL,
	 * mappedBy="kdkelompokproduk") private Set<KategoryProduk>
	 * KategoryProdukSet = new HashSet<KategoryProduk>();
	 * 
	 * public Set<KategoryProduk> getKategoryProdukSet() { return
	 * KategoryProdukSet; }
	 * 
	 * public void setKategoryProdukSet(Set<KategoryProduk> kategoryProdukSet) {
	 * KategoryProdukSet = kategoryProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL,
	 * mappedBy="kdkelompokproduk") private Set<KeteranganDiet>
	 * KeteranganDietSet = new HashSet<KeteranganDiet>();
	 * 
	 * public Set<KeteranganDiet> getKeteranganDietSet() { return
	 * KeteranganDietSet; }
	 * 
	 * public void setKeteranganDietSet(Set<KeteranganDiet> keteranganDietSet) {
	 * KeteranganDietSet = keteranganDietSet; }
	 */

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.kelompokproduk_m_id_seq")
	@javax.persistence.SequenceGenerator(name = "public.kelompokproduk_m_id_seq", sequenceName = "public.kelompokproduk_m_id_seq", allocationSize = 1)
	@Column(name = "id")
	protected Integer id;

	public Integer getId() {

		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
}