package com.jasamedika.medifirst2000.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.springframework.web.client.HttpServerErrorException;

import com.jasamedika.medifirst2000.entities.StrukPelayanan;
import com.jasamedika.medifirst2000.entities.StrukPelayananDNoBatch;
import com.jasamedika.medifirst2000.entities.StrukPelayananDetail;
import com.jasamedika.medifirst2000.entities.StrukPelayananPenjamin;
import com.jasamedika.medifirst2000.vo.HasilTriaseVO;
import com.jasamedika.medifirst2000.vo.InputKantongDarahVO;
import com.jasamedika.medifirst2000.vo.InputNoBatchVO;
import com.jasamedika.medifirst2000.vo.KirimPesananBarangVO;
import com.jasamedika.medifirst2000.vo.PemakaianBarangHabisPakaiVO;
import com.jasamedika.medifirst2000.vo.PenerimaanBarangVO;
import com.jasamedika.medifirst2000.vo.ReturSupplierVO;
import com.jasamedika.medifirst2000.vo.StrukPelayananDNoBatchVO;
import com.jasamedika.medifirst2000.vo.StrukPelayananDetailVO;
import com.jasamedika.medifirst2000.vo.StrukPelayananVO;
import com.jasamedika.medifirst2000.vo.UploadExcelVO;

/**
 * @author Shakato
 */
public interface StrukPelayananService <T> extends BaseVoService<StrukPelayanan, StrukPelayananVO, String> {
	
	StrukPelayanan saveStrukPelayananService(StrukPelayananVO vo);
	
	StrukPelayanan updateStrukPelayananService(StrukPelayananVO vo);
	
	void deleteStrukPelayananService(String  noRec);
	
	StrukPelayananDNoBatch saveStrukPelayananDetailService(StrukPelayananDNoBatchVO vo, StrukPelayanan strukPelayanan);
	
	StrukPelayananDetail saveStrukPelayananDetailKesling(StrukPelayananDetailVO vo, StrukPelayanan strukPelayanan) throws IllegalAccessException;
	
	Map<String, Object> findAllStrukPelayananLimbahMasuk();

	Map<String, Object> savePenerimaanBarang(PenerimaanBarangVO vo);

	Map<String, Object> saveKirimPesananBarang(KirimPesananBarangVO vo);

	Map<String, Object> saveNoBatch(InputNoBatchVO vo);

	Map<String, Object> savePemakaianBarangHabisPakai(PemakaianBarangHabisPakaiVO vo);

	Map<String, Object> listPemakaian(Integer page, Integer limit, String sort, String dir, String tanggalAwal,
			String tanggalAhir, Integer kelompokProdukId, Integer jenisProdukId, Integer produkId);

	Map<String, Object> listPenerimaanBarang(Integer page, Integer limit, String sort, String dir, String tanggalAwal,
			String tanggalAhir, Integer produkId, Integer jenisProdukId, Integer kelompokProdukId, String noTerima);

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

	Map<String, Object> saveReturSupplier(ReturSupplierVO vo);

	Map<String, Object> listReturSupplier(Integer page, Integer limit, String sort, String dir, String tanggalAwal,
			String tanggalAhir, Integer produkId, Integer jenisProdukId, Integer kelompokProdukId, Integer supplierId);

	Map<String, Object> uploadExel(UploadExcelVO vo) throws IOException;

	Map<String, Object> cetakListPemakaian(String tanggalAwal, String tanggalAhir, Integer kelompokProdukId,
			Integer jenisProdukId, Integer produkId);

	Map<String, Object> cetakListReturSupplier(String tanggalAwal, String tanggalAhir, Integer produkId,
			Integer jenisProdukId, Integer kelompokProdukId, Integer supplierId);
	
}



