package com.jasamedika.medifirst2000.vo;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.*;
import java.util.Date;
import org.hibernate.validator.constraints.NotEmpty;

import com.jasamedika.medifirst2000.base.vo.BaseMasterVO;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.internal.util.logging.Messages;

import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.jasamedika.medifirst2000.base.vo.BaseMasterVO;
import com.jasamedika.medifirst2000.helper.Caption;

/**
 * class ChartOfAccount
 * 
 * @author Generator
 */
//@Entity
//@Table(name = "ChartOfAccount_M")
public class ChartOfAccountVO extends BaseMasterVO {
	@Caption(value = "Kode Account")
	private Integer kdAccount;

	public void setKdAccount(Integer kdAccount) {
		this.kdAccount = kdAccount;
	}

	@Column(name = "KdAccount", nullable = false)
	public Integer getKdAccount() {
		return this.kdAccount;
	}

	@Caption(value = "Kode Account Effect Add")
	private Integer kdAccountEffectAdd;

	public void setKdAccountEffectAdd(Integer kdAccountEffectAdd) {
		this.kdAccountEffectAdd = kdAccountEffectAdd;
	}

	@Column(name = "KdAccountEffectAdd", nullable = true)
	public Integer getKdAccountEffectAdd() {
		return this.kdAccountEffectAdd;
	}

	@Caption(value = "Kode Account Effect Min")
	private Integer kdAccountEffectMin;

	public void setKdAccountEffectMin(Integer kdAccountEffectMin) {
		this.kdAccountEffectMin = kdAccountEffectMin;
	}

	@Column(name = "KdAccountEffectMin", nullable = true)
	public Integer getKdAccountEffectMin() {
		return this.kdAccountEffectMin;
	}

	@ManyToOne
	@JoinColumn(name = "ObjectAccountHeadFk")
	@Caption(value = "Object Account Head")
	private ChartOfAccountVO accountHead;

	public void setAccountHead(ChartOfAccountVO accountHead) {
		this.accountHead = accountHead;
	}

	@Column(name = "KdAccountHead", nullable = true)
	public ChartOfAccountVO getAccountHead() {
		return this.accountHead;
	}

	@Column(name = "ObjectAccountHeadFk", insertable = false, updatable = false)
	private Integer accountHeadId;

	@ManyToOne
	@JoinColumn(name = "ObjectJenisAccountFk")
	@NotNull(message = "Object Jenis Account Harus Diisi")
	@Caption(value = "Object Jenis Account")
	private JenisAccountVO jenisAccount;

	public void setJenisAccount(JenisAccountVO jenisAccount) {
		this.jenisAccount = jenisAccount;
	}

	@Column(name = "KdJenisAccount", nullable = false)
	public JenisAccountVO getJenisAccount() {
		return this.jenisAccount;
	}

	@Column(name = "ObjectJenisAccountFk", insertable = false, updatable = false)
	private Integer jenisAccountId;

	@ManyToOne
	@JoinColumn(name = "ObjectKategoryAccountFk")
	@NotNull(message = "Object Kategory Account Harus Diisi")
	@Caption(value = "Object Kategory Account")
	private KategoryAccountVO kategoryAccount;

	public void setKategoryAccount(KategoryAccountVO kategoryAccount) {
		this.kategoryAccount = kategoryAccount;
	}

	@Column(name = "KdKategoryAccount", nullable = false)
	public KategoryAccountVO getKategoryAccount() {
		return this.kategoryAccount;
	}

	@Column(name = "ObjectKategoryAccountFk", insertable = false, updatable = false)
	private Integer kategoryAccountId;

	@ManyToOne
	@JoinColumn(name = "ObjectStatusAccountFk")
	@NotNull(message = "Object Status Account Harus Diisi")
	@Caption(value = "Object Status Account")
	private StatusAccountVO statusAccount;

	public void setStatusAccount(StatusAccountVO statusAccount) {
		this.statusAccount = statusAccount;
	}

	@Column(name = "KdStatusAccount", nullable = false)
	public StatusAccountVO getStatusAccount() {
		return this.statusAccount;
	}

	@Column(name = "ObjectStatusAccountFk", insertable = false, updatable = false)
	private Integer statusAccountId;

	@ManyToOne
	@JoinColumn(name = "ObjectStrukturAccountFk")
	@NotNull(message = "Object Struktur Account Harus Diisi")
	@Caption(value = "Object Struktur Account")
	private StrukturAccountVO strukturAccount;

	public void setStrukturAccount(StrukturAccountVO strukturAccount) {
		this.strukturAccount = strukturAccount;
	}

	@Column(name = "KdStrukturAccount", nullable = false)
	public StrukturAccountVO getStrukturAccount() {
		return this.strukturAccount;
	}

	@Column(name = "ObjectStrukturAccountFk", insertable = false, updatable = false)
	private Integer strukturAccountId;

	@Caption(value = "Nama Account")
	private String namaAccount;

	public void setNamaAccount(String namaAccount) {
		this.namaAccount = namaAccount;
	}

	@Column(name = "NamaAccount", nullable = false, length = 300)
	public String getNamaAccount() {
		return this.namaAccount;
	}

	@Caption(value = "No Account")
	private String noAccount;

	public void setNoAccount(String noAccount) {
		this.noAccount = noAccount;
	}

	@Column(name = "NoAccount", nullable = false, length = 50)
	public String getNoAccount() {
		return this.noAccount;
	}

	@Caption(value = "QAccount")
	private Integer qAccount;

	public void setqAccount(Integer qAccount) {
		this.qAccount = qAccount;
	}

	@Column(name = "QAccount", nullable = false)
	public Integer getqAccount() {
		return this.qAccount;
	}

	@Caption(value = "Saldo Akhir D Tahun Berjalan")
	private Double saldoAkhirDTahunBerjalan;

	public void setSaldoAkhirDTahunBerjalan(Double saldoAkhirDTahunBerjalan) {
		this.saldoAkhirDTahunBerjalan = saldoAkhirDTahunBerjalan;
	}

	@Column(name = "SaldoAkhirDTahunBerjalan", nullable = false)
	public Double getSaldoAkhirDTahunBerjalan() {
		return this.saldoAkhirDTahunBerjalan;
	}

	@Caption(value = "Saldo Akhir K Tahun Berjalan")
	private Double saldoAkhirKTahunBerjalan;

	public void setSaldoAkhirKTahunBerjalan(Double saldoAkhirKTahunBerjalan) {
		this.saldoAkhirKTahunBerjalan = saldoAkhirKTahunBerjalan;
	}

	@Column(name = "SaldoAkhirKTahunBerjalan", nullable = false)
	public Double getSaldoAkhirKTahunBerjalan() {
		return this.saldoAkhirKTahunBerjalan;
	}

	@Caption(value = "Saldo Awal D Tahun Berjalan")
	private Double saldoAwalDTahunBerjalan;

	public void setSaldoAwalDTahunBerjalan(Double saldoAwalDTahunBerjalan) {
		this.saldoAwalDTahunBerjalan = saldoAwalDTahunBerjalan;
	}

	@Column(name = "SaldoAwalDTahunBerjalan", nullable = false)
	public Double getSaldoAwalDTahunBerjalan() {
		return this.saldoAwalDTahunBerjalan;
	}

	@Caption(value = "Saldo Awal K Tahun Berjalan")
	private Double saldoAwalKTahunBerjalan;

	public void setSaldoAwalKTahunBerjalan(Double saldoAwalKTahunBerjalan) {
		this.saldoAwalKTahunBerjalan = saldoAwalKTahunBerjalan;
	}

	@Column(name = "SaldoAwalKTahunBerjalan", nullable = false)
	public Double getSaldoAwalKTahunBerjalan() {
		return this.saldoAwalKTahunBerjalan;
	}

	@Caption(value = "Saldo Normal Add")
	private String saldoNormalAdd;

	public void setSaldoNormalAdd(String saldoNormalAdd) {
		this.saldoNormalAdd = saldoNormalAdd;
	}

	@Column(name = "SaldoNormalAdd", nullable = false, length = 1)
	public String getSaldoNormalAdd() {
		return this.saldoNormalAdd;
	}

	@Caption(value = "Saldo Normal Effect Add")
	private String saldoNormalEffectAdd;

	public void setSaldoNormalEffectAdd(String saldoNormalEffectAdd) {
		this.saldoNormalEffectAdd = saldoNormalEffectAdd;
	}

	@Column(name = "SaldoNormalEffectAdd", nullable = true, length = 1)
	public String getSaldoNormalEffectAdd() {
		return this.saldoNormalEffectAdd;
	}

	@Caption(value = "Saldo Normal Effect Min")
	private String saldoNormalEffectMin;

	public void setSaldoNormalEffectMin(String saldoNormalEffectMin) {
		this.saldoNormalEffectMin = saldoNormalEffectMin;
	}

	@Column(name = "SaldoNormalEffectMin", nullable = true, length = 1)
	public String getSaldoNormalEffectMin() {
		return this.saldoNormalEffectMin;
	}

	@Caption(value = "Saldo Normal Min")
	private String saldoNormalMin;

	public void setSaldoNormalMin(String saldoNormalMin) {
		this.saldoNormalMin = saldoNormalMin;
	}

	@Column(name = "SaldoNormalMin", nullable = false, length = 1)
	public String getSaldoNormalMin() {
		return this.saldoNormalMin;
	}

	/*//
	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "kdaccounthead")
	private Set<ChartOfAccount> ChartOfAccountSet = new HashSet<ChartOfAccount>();

	public Set<ChartOfAccount> getChartOfAccountSet() {
		return ChartOfAccountSet;
	}

	public void setChartOfAccountSet(Set<ChartOfAccount> chartOfAccountSet) {
		ChartOfAccountSet = chartOfAccountSet;
	}

	//
	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "kdaccount")
	private Set<DetailJenisProduk> DetailJenisProdukSet = new HashSet<DetailJenisProduk>();

	public Set<DetailJenisProduk> getDetailJenisProdukSet() {
		return DetailJenisProdukSet;
	}

	public void setDetailJenisProdukSet(Set<DetailJenisProduk> detailJenisProdukSet) {
		DetailJenisProdukSet = detailJenisProdukSet;
	}

	//
	@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "kdaccount")
	private Set<JenisAset> JenisAsetSet = new HashSet<JenisAset>();

	public Set<JenisAset> getJenisAsetSet() {
		return JenisAsetSet;
	}

	public void setJenisAsetSet(Set<JenisAset> jenisAsetSet) {
		JenisAsetSet = jenisAsetSet;
	}
	
	//
	@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="kdaccount")
	private Set<JenisProduk> JenisProdukSet = new HashSet<JenisProduk>();

	public Set<JenisProduk> getJenisProdukSet() {
		return JenisProdukSet;
	}

	public void setJenisProdukSet(Set<JenisProduk> jenisProdukSet) {
		JenisProdukSet = jenisProdukSet;
	}

	//
	@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="kdaccount")
	private Set<KelompokAset> KelompokAsetSet = new HashSet<KelompokAset>();

	public Set<KelompokAset> getKelompokAsetSet() {
		return KelompokAsetSet;
	}

	public void setKelompokAsetSet(Set<KelompokAset> kelompokAsetSet) {
		KelompokAsetSet = kelompokAsetSet;
	}*/

}
