package com.jasamedika.medifirst2000.vo;

import com.jasamedika.medifirst2000.entities.SatuanStandar;
import com.jasamedika.medifirst2000.helper.Caption;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

@Getter
@Setter
public class PelayananPasienTidakTerklaimVO extends MedicalRecordTransactionVO {
	@ManyToOne
	@Caption(value = "Generik")
	private GenerikVO generik;

	@Caption(value = "statusOrder")
	private Byte statusOrder;

	@Caption(value = "Jasa Farmasi")
	private Double jasa;

	@ManyToOne
	@Caption(value = "Produk")
	private KelasVO kelas;

	@Caption(value = "Is Pasien")
	private Boolean isPasien;

	@Caption(value = "Is Pasien")
	private Boolean isObat;

	@Caption(value = "Is Pasien")
	private Boolean isDosis;

	@Caption(value = "Is Pasien")
	private Boolean isRoute;

	@Caption(value = "Is Pasien")
	private Boolean isDokumentasi;

	@Caption(value = "Is Pasien")
	private Boolean isWaktu;

	@Caption(value = "Is Pasien")
	private Boolean isInformasi;

	@Caption(value = "Is Benar")
	private Boolean isBenar;

	@ManyToOne(fetch = FetchType.LAZY)
	private StrukPelayananVO strukPelayanan;

	@Caption(value = "Status")
	private String status;

	@Caption(value = "Tanggal Pelayanan")
	private Date tglPelayanan;

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

	@Caption(value = "Harga Jual")
	private Double hargaJual;

	@Caption(value = "Nilai Normal")
	private Byte nilaiNormal;

	@Caption(value = "Piutang Penjamin")
	private Double piutangPenjamin;

	@Caption(value = "Piutang Rumah Sakit")
	private Double piutangRumahSakit;

	@ManyToOne
	@Caption(value = "Struk Order")
	private StrukPelayananDNoBatchVO noBatch;

	@ManyToOne(fetch = FetchType.LAZY)
	@Caption(value = "Struk Order")
	private StrukOrderVO strukOrder;

	@ManyToOne
	@JoinColumn(name = "JenisObatFk")
	@Caption(value = "Jenis Obat")
	private JenisObatVO jenisObat;

	@ManyToOne
	@NotNull(message = "Produk Harus Diisi")
	@Caption(value = "Produk")
	private ProdukVO produk;

	@Caption(value = "Stock")
	private Double stock;

	@Caption(value = "Jumlah")
	private Double jumlah;

	@Caption(value = "AturanPakai")
	private String aturanPakai;

	@ManyToOne
	@Caption(value = "Route")
	private RouteFarmasiVO route;

	@ManyToOne
	@Caption(value = "Keterangan Pakai")
	private StigmaVO keteranganPakai;

	@Caption(value = "KeteranganPakai2")
	private String keteranganPakai2;

	@ManyToOne
	@Caption(value = "Kelompok Transaksi")
	private KelompokTransaksiVO kelompokTransaksi;

	@Caption(value = "KeteranganLain")
	private String keteranganLain;

	@Caption(value = "Harga Discount")
	private Double hargaDiscount;

	@Caption(value = "hargaNetto")
	private Double hargaNetto;

	@Caption(value = "NoRecTriger")
	private String noRecTriger;

	@Column(name = "qty", nullable = false, length = 100)
	@Caption(value = "qty")
	private Double qty;

	@Caption(value = "totalHarga")
	private Double totalHarga;

	@Caption(value = "resepKe")
	private Integer resepKe;

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pelayananPasien")
	private Set<PelayananPasienPetugasVO> pelayananPasienPetugasSet = new HashSet<>();

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pelayananPasien")
	private Set<RacikanDetailVO> racikan = new HashSet<>();

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pelayananPasien")
	private Set<PelayananPasienDetailVO> pelayananPasienDetailSet = new HashSet<>();

	@Caption(value = "petugas")
	private Set<PelayananPasienPetugasVO> petugas = new HashSet<>();

	private SatuanStandar satuanView;

	private Integer satuanViewId;

	@Caption(value = "Pelayanan Pasien")
	private PelayananPasienVO pelayananPasien;

	private String pelayananPasienId;

	private String noMasuk;
}