package com.jasamedika.medifirst2000.dao.custom;

import java.util.List;
import java.util.Map;

import com.jasamedika.medifirst2000.dao.custom.base.CoreDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.entities.StrukPelayananDetail;

/**
 * 
 * @author Roberto
 */
public interface StrukPelayananDetailDaoCustom extends CoreDao<StrukPelayananDetail> {

	List<Map<String, Object>> gridPenerimaanBarangList(int rowStart, int rowEnd, String sort, String dir,String tanggalTerimAwal, String tanggalTerimAhir, String nofaktur, Integer idProduk, Integer kdKelompokTransaksi, KelompokUser kelompokUser, Integer supplierId);

	int gridPenerimaanBarangCount(String tanggalTerimAwal, String tanggalTerimAhir, String nofaktur, Integer idProduk, Integer kdKelompokTransaksi, KelompokUser kelompokUser, Integer supplierId);

	Boolean CheckLogistikTerhadapPphp(String noRec);

	Boolean CheckPphpTerhadapSppb(String noRec);


	int listPenerimaanCount(String tanggalAwal, String tanggalAhir, String noTerima, Integer produkId, Integer integer, Integer kelompokTransaksiReturId);

	List<Map<String, Object>> listPenerimaan(int rowStart, int rowEnd, String sort, String dir, String tanggalAwal, String tanggalAhir,String noTerima, Integer produkId, Integer integer, Integer kelompokTransaksiReturId);

	Map<String,Object> findStrukKirimHeaderByNoRec(String noRec);

	List<Map<String, Object>> findStrukKirimDetailByNoRec(String noRec);

	/*int listPenerimaanCount(String tanggalAwal, String tanggalAhir, Ruangan ruangan);

	List<Map<String, Object>> listPenerimaan(int rowStart, int rowEnd, String sort, String dir, String tanggalAwal, String tanggalAhir,Ruangan ruangan);
*/

	int listPengirimanCount(String tanggalAwal, String tanggalAhir, Ruangan ruangan, Integer kelompokProdukId,
			Integer jenisProdukId, Integer produkId);

	List<Map<String, Object>> listPengiriman(int rowStart, int rowEnd, String sort, String dir, String tanggalAwal,
			String tanggalAhir, Ruangan ruangan, Integer kelompokProdukId, Integer jenisProdukId, Integer produkId);
	
	int listPenerimaanReturCount(String tanggalAwal, String tanggalAhir, Ruangan ruangan, Integer kelompokProdukId,
			Integer jenisProdukId, Integer produkId);

	List<Map<String, Object>> listPenerimaanRetur(int rowStart, int rowEnd, String sort, String dir, String tanggalAwal,
			String tanggalAhir, Ruangan ruangan, Integer kelompokProdukId, Integer jenisProdukId, Integer produkId);

	Map<String,Object> findReturHeader(String noRec);

	List<Map<String, Object>> findReturDetail(String noRec);


	List<Map<String, Object>> listPemakaianBarangHabisPakai(int rowStart, int rowEnd, String sort, String dir,
			String tanggalAwal, String tanggalAhir, Integer kelompokProdukId, Integer jenisProdukId, Integer produkId,
			Integer ruanganId, Integer kelompokTransaksiId);

	int listPemakaianBarangHabisPakaiCount(String tanggalAwal, String tanggalAhir, Integer kelompokProdukId,
			Integer jenisProdukId, Integer produkId, Integer ruanganId, Integer kelompokTransaksiId);

	List<Map<String, Object>> listPenerimaanSupplier(int rowStart, int rowEnd, String sort, String dir,
			String tanggalAwal, String tanggalAhir, Integer produkId, Integer ruanganId,
			Integer kelompokTransaksiReturId, Integer jenisProdukId, Integer kelompokProdukId, String noTerima);

	int listPenerimaanCountSupplier(String tanggalAwal, String tanggalAhir, Integer produkId, Integer ruanganId,
			Integer kelompokTransaksiReturId, Integer jenisProdukId, Integer kelompokProdukId, String noTerima);

	Map<String,Object> findPenerimaanHeaderByNoRec(String noRec);

	List<Map<String,Object>> findPenerimaanDetailByNoRec(String noRec);

	List<Map<String,Object>> listReturSupplierList(int rowStart, int rowEnd, String sort, String dir, String tanggalAwal,
			String tanggalAhir, Integer produkId, Integer jenisProdukId, Integer kelompokProdukId, Integer supplierId,Integer kelompokTransaksiId);

	int listReturSupplierCount(String tanggalAwal, String tanggalAhir, Integer produkId, Integer jenisProdukId,
			Integer kelompokProdukId, Integer supplierId,Integer kelompokTransaksiId);

	Double findSumRetur(String string);

	Map<String,Object> findStrukKirimHeaderByNoRecReport(String noRec);

	List<Map<String,Object>>  findStrukKirimDetailByNoRecReport(String noRec);

	Double totalPenerimaanSupplier(String noRec);

	Map<String,Object> reportMutasiBarangHeader(String noRec);

	List<Map<String,Object>>  reportMutasiBarangDetail(String noRec);

	Double totalMutasiBarang(String noRec);

	int gridPenerimaanCountSupplier(String tanggalAwal, String tanggalAhir, Integer produkId, Integer ruanganId,
			Integer kelompokTransaksiId, Integer jenisProdukId, Integer kelompokProdukId, String noTerima);

	List<Map<String,Object>> gridPenerimaanSupplier(int rowStart, int rowEnd, String sort, String dir, String tanggalAwal,
			String tanggalAhir, Integer produkId, Integer ruanganId, Integer kelompokTransaksiId, Integer jenisProdukId,
			Integer kelompokProdukId, String noTerima);


	List<Map<String, Object>> cetakQrCodePersediaan(String noRec);

	List<Map<String, Object>> cetakQrCodeAset(String noRec);

	List<Map<String,Object>> cetakListPemakaianBarangHabisPakai(String tanggalAwal, String tanggalAhir, Integer kelompokProdukId,
			Integer jenisProdukId, Integer produkId, Integer ruanganId, Integer kelompokTransaksiId);

	List<Map<String, Object>> cetakListPengiriman(String tanggalAwal, String tanggalAhir, Ruangan ruangan, Integer kelompokProdukId,
			Integer jenisProdukId, Integer produkId);

	List<Map<String, Object>> cetakListReturSupplierList(String tanggalAwal, String tanggalAhir, Integer produkId, Integer jenisProdukId,
			Integer kelompokProdukId, Integer supplierId, Integer kelompokTransaksi);

	int findAsetByRuanganCount(String periodeAwal, String periodeAhir, Integer ruanganId);

	List<Map<String, Object>> findAsetByRuanganList(int rowStart, int rowEnd, String sort, String dir, String periodeAwal,
			String periodeAhir, Integer ruanganId);


	List<Map<String, Object>> findSlowMoving(String tanggalAwal, String tanggalAhir, Integer kelompokProdukId,
			Integer jenisProdukId, Integer produkId, Integer ruanganId);

	List<Map<String, Object>> findFastMoving(String dateStart, String dateEnd, Integer kelompokProdukId, Integer jenisProdukId,
			Integer produkId, Integer ruanganId);


	List<Map<String, Object>> preAddPenerimaanReturList(int rowStart, int rowEnd, String sort, String dir,
			String tanggalAwal, String tanggalAhir, Ruangan ruangan);

	int preAddPenerimaanReturCount(String tanggalAwal, String tanggalAhir, Ruangan ruangan);


	
}
