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.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import com.jasamedika.medifirst2000.helper.Caption;

import lombok.Getter;
import lombok.Setter;

/**
 * class StrukPelayananVO
 * 
 * @author Shakato
 */
@Getter
@Setter
public class StrukPelayananVO extends BaseTransactionVO {
	@Column(name = "AlamatEmailRekanan", nullable = true, length = 50)
	@Caption(value = "Alamat Email Rekanan")
	private String alamatemailrekanan;

	@Column(name = "AlamatEmailRekananSales", nullable = true, length = 50)
	@Caption(value = "Alamat Email Rekanan Sales")
	private String alamatemailrekanansales;

	@Column(name = "AlamatTempatTujuan", nullable = true, length = 150)
	@Caption(value = "Alamat Tempat Tujuan")
	private String alamattempattujuan;

	@Column(name = "isDelivered", nullable = true)
	@Caption(value = "Is Delivered")
	private Byte isdelivered;

	@Column(name = "isPickup", nullable = true)
	@Caption(value = "Is Pickup")
	private Byte ispickup;

	@ManyToOne
	@JoinColumn(name = "ObjectKamarLastFk")
	@Caption(value = "Object Kamar Last")
	private KamarVO kdkamarlast;

	@Column(name = "ObjectKamarLastFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectKamarLastId;

	@ManyToOne
	@JoinColumn(name = "ObjectKelasKamarLastFk")
	@Caption(value = "Object Kelas Kamar Last")
	private DetailKamarVO kdkelaskamarlast;

	@Column(name = "ObjectKelasKamarLastFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectKelasKamarLastId;

	@ManyToOne
	@JoinColumn(name = "ObjectKelasLastFk")
	@Caption(value = "Object Kelas Last")
	private DetailKamarVO kdkelaslast;

	@Column(name = "ObjectKelasLastFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectKelasLastId;

	@ManyToOne
	@JoinColumn(name = "ObjectKelompokTransaksiFk")
	@Caption(value = "Object Kelompok Transaksi")
	private KelompokTransaksiVO kdkelompoktransaksi;

	@Column(name = "ObjectKelompokTransaksiFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectKelompokTransaksiId;

	@ManyToOne
	@JoinColumn(name = "ObjectMetodeDeliveryFk")
	@Caption(value = "Object Metode Delivery")
	private MetodeDeliveryVO kdmetodedelivery;

	@Column(name = "ObjectMetodeDeliveryFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectMetodeDeliveryId;

	@ManyToOne
	@JoinColumn(name = "ObjectPegawaiPenerimaFk")
	@Caption(value = "Object Pegawai Penerima")
	private LoginUserVO kdpegawaipenerima;

	@Column(name = "ObjectPegawaiPenerimaFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectPegawaiPenerimaId;

	@ManyToOne
	@JoinColumn(name = "ObjectRekananFk")
	@Caption(value = "Object Rekanan")
	private RekananVO kdrekanan;

	@Column(name = "ObjectRekananFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectRekananId;

	@ManyToOne
	@JoinColumn(name = "ObjectRekananSalesFk")
	@Caption(value = "Object Rekanan Sales")
	private RekananVO kdrekanansales;

	@Column(name = "ObjectRekananSalesFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectRekananSalesId;

	@ManyToOne
	@JoinColumn(name = "ObjectRuanganFk")
	@Caption(value = "Object Ruangan")
	private RuanganVO kdruangan;

	@Column(name = "ObjectRuanganFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectRuanganId;

	@ManyToOne
	@JoinColumn(name = "ObjectRuanganAsalFk")
	@Caption(value = "Object Ruangan Asal")
	private RuanganVO kdruanganasal;

	@Column(name = "ObjectRuanganAsalFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectRuanganAsalId;

	@Caption(value = "Keterangan Lainnya")
	@Column(name = "KeteranganLainnya", nullable = true, length = 150)
	private String keteranganlainnya;

	@Caption(value = "Nama Kurir Pengirim")
	@Column(name = "NamaKurirPengirim", nullable = true, length = 40)
	private String namakurirpengirim;

	@Caption(value = "Nama Pasien Klien")
	@Column(name = "NamaPasien_Klien", nullable = true, length = 40)
	private String namapasien_klien;

	@Caption(value = "Nama Pegawai Penerima")
	@Column(name = "NamaPegawaiPenerima", nullable = true, length = 40)
	private String namapegawaipenerima;

	@Caption(value = "Nama Rekanan")
	@Column(name = "NamaRekanan", nullable = true, length = 50)
	private String namarekanan;

	@Caption(value = "Nama Rekanan Sales")
	@Column(name = "NamaRekananSales", nullable = true, length = 40)
	private String namarekanansales;

	@Caption(value = "Nama Tempat Tujuan")
	@Column(name = "NamaTempatTujuan", nullable = true, length = 75)
	private String namatempattujuan;

	@Caption(value = "Nama User Faktur")
	@Column(name = "NamaUserFaktur", nullable = true, length = 40)
	private String namauserfaktur;

	@Caption(value = "No Bed Last")
	@Column(name = "NoBedLast", nullable = true)
	private Byte nobedlast;

	@ManyToOne
	@JoinColumn(name = "NoClosingFk")
	@Caption(value = "No Closing")
	private StrukClosingVO noclosing;

	@Column(name = "NoClosingFk", insertable = false, updatable = false, nullable = true)
	private Integer NoClosingId;

	@ManyToOne
	@JoinColumn(name = "NoCMFk")
	@Caption(value = "No C M")
	private PasienVO nocm;

	@Column(name = "NoCMFk", insertable = false, updatable = false, nullable = true)
	private Integer NoCMId;

	@Caption(value = "No Faktur")
	@Column(name = "NoFaktur", nullable = true, length = 20)
	private String nofaktur;

	@ManyToOne
	@JoinColumn(name = "NoMasukFk")
	@Caption(value = "No Masuk")
	private RegistrasiPelayananPasienVO nomasuk;

	@Column(name = "NoMasukFk", insertable = false, updatable = false, nullable = true)
	private String NoMasukId;

	@ManyToOne
	@JoinColumn(name = "NoOrderFk")
	@Caption(value = "No Order")
	private StrukOrderVO noorder;

	@Column(name = "NoOrderFk", insertable = false, updatable = false, nullable = true)
	private String NoOrderId;

	@ManyToOne
	@JoinColumn(name = "NoPlanningFk")
	@Caption(value = "No Planning")
	private StrukPlanningVO noplanning;

	@Column(name = "NoPlanningFk", insertable = false, updatable = false, nullable = true)
	private String NoPlanningId;

	@ManyToOne
	@JoinColumn(name = "NoRegistrasiFk")
	@Caption(value = "No Registrasi")
	private PasienDaftarVO noregistrasi;

	@Column(name = "NoRegistrasiFk", insertable = false, updatable = false, nullable = true)
	private String NoRegistrasiId;

	@ManyToOne
	@JoinColumn(name = "NoSBKLastFk")
	@Caption(value = "No S B K Last")
	private StrukBuktiPengeluaranVO nosbklast;

	@Column(name = "NoSBKLastFk", insertable = false, updatable = false, nullable = true)
	private String NoSBKLastId;

	@ManyToOne
	@JoinColumn(name = "NoSBMLastFk")
	@Caption(value = "No S B M Last")
	private StrukBuktiPenerimaanVO nosbmlast;

	@Column(name = "NoSBMLastFk", insertable = false, updatable = false, nullable = true)
	private String NoSBMLastId;

	@Caption(value = "No Struk")
	@Column(name = "NoStruk", nullable = true, length = 10)
	private String nostruk;

	@Caption(value = "No Struk_ Intern")
	@Column(name = "NoStruk_Intern", nullable = true, length = 15)
	private String nostruk_intern;

	@Caption(value = "No Telepon Faks")
	@Column(name = "NoTeleponFaks", nullable = true, length = 30)
	private String noteleponfaks;

	@Caption(value = "No Telp Mobile Rekanan Sales")
	@Column(name = "NoTelpMobileRekananSales", nullable = true, length = 30)
	private String notelpmobilerekanansales;

	@Caption(value = "No Telp Mobile Tempat Tujuan")
	@Column(name = "NoTelpMobileTempatTujuan", nullable = true, length = 30)
	private String notelpmobiletempattujuan;

	@Caption(value = "No Urut Login")
	@Column(name = "NoUrutLogin", nullable = true, length = 10)
	private String nourutlogin;

	@Caption(value = "No Urut Ruangan")
	@Column(name = "NoUrutRuangan", nullable = true, length = 10)
	private String nourutruangan;

	@Caption(value = "Perusahaan Kurir")
	@Column(name = "PerusahaanKurir", nullable = true, length = 75)
	private String perusahaankurir;

	@Caption(value = "Qty Detail Jenis Produk")
	@Column(name = "QtyDetailJenisProduk", nullable = true)
	private Double qtydetailjenisproduk;

	@Caption(value = "Qty Orang Last")
	@Column(name = "QtyOrangLast", nullable = true)
	private Byte qtyoranglast;

	@Caption(value = "Qty Produk")
	@Column(name = "QtyProduk", nullable = true)
	private Double qtyproduk;

	@Caption(value = "Tanggal Faktur")
	@Column(name = "Tglfaktur", nullable = true)
	private Date tglfaktur;

	@Caption(value = "Tanggal Jatuh Tempo")
	@Column(name = "TglJatuhTempo", nullable = true)
	private Date tgljatuhtempo;

	@Caption(value = "Tanggal Struk")
	@Column(name = "TglStruk", nullable = true)
	private Date tglstruk;

	@Caption(value = "Tanggal Terima Kiriman")
	@Column(name = "TglTerimaKiriman", nullable = true)
	private Date tglterimakiriman;

	@Caption(value = "Total Bea Materai")
	@Column(name = "TotalBeaMaterai", nullable = true)
	private Double totalbeamaterai;

	@Caption(value = "Total Berat Kg")
	@Column(name = "TotalBeratKg", nullable = true)
	private Double totalberatkg;

	@Caption(value = "Total Biaya Kirim")
	@Column(name = "TotalBiayaKirim", nullable = true)
	private Double totalbiayakirim;

	@Caption(value = "Total Biaya Tambahan")
	@Column(name = "TotalBiayaTambahan", nullable = true)
	private Double totalbiayatambahan;

	@Caption(value = "Total Discount")
	@Column(name = "TotalDiscount", nullable = true)
	private Double totaldiscount;

	@Caption(value = "Total Discount Give")
	@Column(name = "TotalDiscountGive", nullable = true)
	private Double totaldiscountgive;

	@Caption(value = "Total Discount Save")
	@Column(name = "TotalDiscountSave", nullable = true)
	private Double totaldiscountsave;

	@Caption(value = "Total Harga Satuan")
	@Column(name = "TotalHargaSatuan", nullable = true)
	private Double totalhargasatuan;

	@Caption(value = "Total Harus Di Bayar")
	@Column(name = "TotalHarusDiBayar", nullable = true)
	private Double totalharusdibayar;

	@Caption(value = "Total P P H")
	@Column(name = "TotalPPH", nullable = true)
	private Double totalpph;

	@Caption(value = "Total P P N")
	@Column(name = "TotalPPN", nullable = true)
	private Double totalppn;

	@Caption(value = "Total P Profile")
	@Column(name = "TotalPProfile", nullable = true)
	private Double totalpprofile;

	@Caption(value = "Total P Rekanan")
	@Column(name = "TotalPRekanan", nullable = true)
	private Double totalprekanan;

	@ManyToOne
	@JoinColumn(name = "ObjectSatuanWaktuKeslingFk")
	@Caption(value = "Object Mata Uang")
	private SatuanWaktuKeslingVO satuanWaktuKesling;

	private Set<StrukPelayananDetailVO> strukPelayananDetail = new HashSet<StrukPelayananDetailVO>();

	@ManyToOne
	@Caption(value = "Jenis Limbah")
	private JenisLimbahB3MasukVO jenisLimbahB3Masuk;

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

	private Set<PelayananPasienVO> pelayananPasien = new HashSet<PelayananPasienVO>();

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "strukPelayanan")
	private Set<MappingKirimDokumenPasienVO> mapKirimDokumenPasien = new HashSet<MappingKirimDokumenPasienVO>();
}
