package com.jasamedika.medifirst2000.entities;

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

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.helper.Caption;

@Entity
@Table(name = "ProduksiNonSteril_T")
public class ProduksiNonSteril extends BaseTransaction{
	
	@Caption(value = "No Produksi")
	@Column(name = "NoProduksi", nullable = true)
	private String noProduksi;
	
	@ManyToOne(fetch= FetchType.LAZY)
	@JoinColumn(name = "ObjectProdukFk")
	@Caption(value = "Object Produk")
	private Produk produk;
	
	@Column(name = "ObjectProdukFk", insertable = false, updatable = false)
	private Integer produkId;
	
	@Caption(value = "Jumlah Produksi")
	@Column(name = "jumlahProduksi", nullable = true)
	private Integer jumlahProduksi;
	
	@Caption(value = "Satuan")
	@Column(name = "Satuan", nullable = true)
	private Integer satuan;
	
	@ManyToOne(fetch= FetchType.LAZY)
	@JoinColumn(name = "ObjectPegawaiYgMemintaFk")
	@Caption(value = "Object Pegawai Yang Meminta")
	private Pegawai pegawaiYgMeminta;
	
	@Column(name = "ObjectPegawaiYgMemintaFk", insertable = false, updatable = false)
	private Integer pegawaiYgMemintaId;
	
	@ManyToOne(fetch= FetchType.LAZY)
	@JoinColumn(name = "ObjectPegawaiYgMemberikanFk")
	@Caption(value = "Object Pegawai Yang Memberikan")
	private Pegawai pegawaiYgMemberikan;
	
	@Column(name = "ObjectPegawaiYgMemberikanFk", insertable = false, updatable = false)
	private Integer pegawaiYgMemberikanId;
	
	@ManyToOne(fetch= FetchType.LAZY)
	@JoinColumn(name = "ObjectPegawaiYgMengetahuiFk")
	@Caption(value = "Object Pegawai Yang Mengetahui")
	private Pegawai pegawaiYgMengetahui;
	
	@Column(name = "ObjectPegawaiYgMengetahuiFk", insertable = false, updatable = false)
	private Integer pegawaiYgMengetahuiId;
	
	@Caption(value = "Tanggal Produksi")
	@Column(name = "TglProduksi", nullable = true)
	private Date tglProduksi;
	
	@Caption(value = "Spesifikasi")
	@Column(name = "Spesifikasi", nullable = true)
	private String spesifikasi;
	
	@Caption(value = "Harga Satuan")
	@Column(name = "HargaSatuan", nullable = true)
	private Float hargaSatuan;
	
	@Caption(value = "Tanggal Expired")
	@Column(name = "TanggalExpired", nullable = true)
	private Date tglExpired;
	
	@Caption(value = "Unit Cost")
	@Column(name = "UnitCost", nullable = true)
	private Float unitCost;
	
	@JsonBackReference
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "produksiNonSteril")
	@Caption(value = "produksiDetailSet")
	private Set<ProduksiDetail> produksiDetailSet = new HashSet<ProduksiDetail>();
	
	public Set<ProduksiDetail> getProduksiDetailSet() {
		return produksiDetailSet;
	}

	public void setProduksiDetailSet(Set<ProduksiDetail> produksiDetailSet) {
		this.produksiDetailSet = produksiDetailSet;
	}

	public String getNoProduksi() {
		return noProduksi;
	}

	public void setNoProduksi(String noProduksi) {
		this.noProduksi = noProduksi;
	}

	public Produk getProduk() {
		return produk;
	}

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

	public Integer getJumlahProduksi() {
		return jumlahProduksi;
	}

	public void setJumlahProduksi(Integer jumlahProduksi) {
		this.jumlahProduksi = jumlahProduksi;
	}

	public Integer getSatuan() {
		return satuan;
	}

	public void setSatuan(Integer satuan) {
		this.satuan = satuan;
	}

	public Pegawai getPegawaiYgMeminta() {
		return pegawaiYgMeminta;
	}

	public void setPegawaiYgMeminta(Pegawai pegawaiYgMeminta) {
		this.pegawaiYgMeminta = pegawaiYgMeminta;
	}

	public Pegawai getPegawaiYgMemberikan() {
		return pegawaiYgMemberikan;
	}

	public void setPegawaiYgMemberikan(Pegawai pegawaiYgMemberikan) {
		this.pegawaiYgMemberikan = pegawaiYgMemberikan;
	}

	public Pegawai getPegawaiYgMengetahui() {
		return pegawaiYgMengetahui;
	}

	public void setPegawaiYgMengetahui(Pegawai pegawaiYgMengetahui) {
		this.pegawaiYgMengetahui = pegawaiYgMengetahui;
	}

	public Date getTglProduksi() {
		return tglProduksi;
	}

	public void setTglProduksi(Date tglProduksi) {
		this.tglProduksi = tglProduksi;
	}

	public String getSpesifikasi() {
		return spesifikasi;
	}

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

	public Float getHargaSatuan() {
		return hargaSatuan;
	}

	public void setHargaSatuan(Float hargaSatuan) {
		this.hargaSatuan = hargaSatuan;
	}

	public Date getTglExpired() {
		return tglExpired;
	}

	public void setTglExpired(Date tglExpired) {
		this.tglExpired = tglExpired;
	}

	public Float getUnitCost() {
		return unitCost;
	}

	public void setUnitCost(Float unitCost) {
		this.unitCost = unitCost;
	}
	
	
}
