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.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.JsonManagedReference;
import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import com.jasamedika.medifirst2000.helper.Caption;

public class RefackingVO extends BaseTransactionVO{
	
//	@Caption(value = "No Produksi")
//	@Column(name = "NoProduksi", nullable = true)
//	private String noProduksi;
	
	@ManyToOne(fetch= FetchType.LAZY)
	@JoinColumn(name = "ObjectProdukFk")
	@Caption(value = "Object Produk")
	private ProdukVO produk;
	
	@Caption(value = "Jumlah Produksi")
	@Column(name = "JumlahProduksi ", nullable = true)
	private Integer jumlahProduksi;
	
	@Caption(value = "Satuan")
	@Column(name = "Satuan", nullable = true)
	private String satuan;
	
	@ManyToOne(fetch= FetchType.LAZY)
	@JoinColumn(name = "ObjectPegawaiYgMemintaFk")
	@Caption(value = "Object Pegawai Yang Meminta")
	private PegawaiVO pegawaiYgMeminta;
	
	@ManyToOne(fetch= FetchType.LAZY)
	@JoinColumn(name = "ObjectPegawaiYgMemberikanFk")
	@Caption(value = "Object Pegawai Yang Memberikan")
	private PegawaiVO pegawaiYgMemberikan;
	
	@ManyToOne(fetch= FetchType.LAZY)
	@JoinColumn(name = "ObjectPegawaiYgMengetahuiFk")
	@Caption(value = "Object Pegawai Yang Mengetahui")
	private PegawaiVO pegawaiYgMengetahui;
	
	@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 Double hargaSatuan;
	
	@Caption(value = "Tanggal Expired")
	@Column(name = "TanggalExpired", nullable = true)
	private Date tglExpired;
	
	@Caption(value = "Unit Cost")
	@Column(name = "UnitCost", nullable = true)
	private String unitCost;
	
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "refacking")
	@Caption(value = "produksiDetailSet")
	private Set<ProduksiDetailVO> produksiDetailSet = new HashSet<ProduksiDetailVO>();

	/*
	public String getNoProduksi() {
		return noProduksi;
	}

	public void setNoProduksi(String noProduksi) {
		this.noProduksi = noProduksi;
	}
	*/
	public ProdukVO getProduk() {
		return produk;
	}

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

	public Integer getJumlahProduksi() {
		return jumlahProduksi;
	}

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

	public String getSatuan() {
		return satuan;
	}

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

	public PegawaiVO getPegawaiYgMeminta() {
		return pegawaiYgMeminta;
	}

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

	public PegawaiVO getPegawaiYgMemberikan() {
		return pegawaiYgMemberikan;
	}

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

	public PegawaiVO getPegawaiYgMengetahui() {
		return pegawaiYgMengetahui;
	}

	public void setPegawaiYgMengetahui(PegawaiVO 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 Double getHargaSatuan() {
		return hargaSatuan;
	}

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

	public Date getTglExpired() {
		return tglExpired;
	}

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

	public String getUnitCost() {
		return unitCost;
	}

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

	public Set<ProduksiDetailVO> getProduksiDetailSet() {
		return produksiDetailSet;
	}

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