public static void ProduksiByTransaksiBatal(int IDPenggunaTransaksi, int IDTempat, string IDTransaksi) { using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext()) { List <POProduksiKomposisi_Model> daftarProduksiKomposisi = new List <POProduksiKomposisi_Model>(); var hasil = db.TBTransaksis.FirstOrDefault(item => item.IDTransaksi == IDTransaksi).TBTransaksiDetails.GroupBy(item => item.TBKombinasiProduk).Select(item => new { KombinasiProduk = item.Key, Quantity = item.Sum(item2 => item2.Quantity) }); foreach (var itemKombinasiProduk in hasil) { foreach (var itemKomposisi in itemKombinasiProduk.KombinasiProduk.TBKomposisiKombinasiProduks) { POProduksiKomposisi_Model komposisi = daftarProduksiKomposisi.FirstOrDefault(item => item.IDBahanBaku == itemKomposisi.IDBahanBaku); if (komposisi == null) { komposisi = new POProduksiKomposisi_Model() { IDBahanBaku = itemKomposisi.IDBahanBaku, JumlahKurang = itemKomposisi.Jumlah.Value * itemKombinasiProduk.Quantity }; daftarProduksiKomposisi.Add(komposisi); } else { komposisi.JumlahKurang += itemKomposisi.Jumlah.Value * itemKombinasiProduk.Quantity; } } } foreach (var itemBahanBaku in daftarProduksiKomposisi) { //KURANGI STOK BAHAN BAKU TBStokBahanBaku cariStokBahanBaku = db.TBStokBahanBakus.FirstOrDefault(item => item.IDTempat == IDTempat && item.IDBahanBaku == itemBahanBaku.IDBahanBaku); UpdateBertambahBerkurang(db, DateTime.Now, IDPenggunaTransaksi, cariStokBahanBaku, itemBahanBaku.JumlahKurang, cariStokBahanBaku.HargaBeli.Value, false, EnumJenisPerpindahanStok.TransaksiBatal, "Produksi Produk POS #" + IDTransaksi); } db.SubmitChanges(); } }
private void PengaturanHPPKomposisi(DataClassesDatabaseDataContext db) { PenggunaLogin pengguna = (PenggunaLogin)Session["PenggunaLogin"]; List <POProduksiDetail_Model> ViewStateListDetail = (List <POProduksiDetail_Model>)ViewState["ViewStateListDetail"]; List <POProduksiKomposisi_Model> ViewStateListKomposisi = (List <POProduksiKomposisi_Model>)ViewState["ViewStateListKomposisi"]; List <POProduksiBiayaTambahan_Model> ViewStateListBiayaTambahan = (List <POProduksiBiayaTambahan_Model>)ViewState["ViewStateListBiayaTambahan"]; ViewStateListKomposisi.Clear(); ViewStateListBiayaTambahan.Clear(); TBBahanBaku[] daftarBahanBaku = db.TBBahanBakus.ToArray(); foreach (var detail in ViewStateListDetail) { decimal hargaPokokKomposisi = 0; foreach (var item in daftarBahanBaku.FirstOrDefault(data => data.IDBahanBaku == detail.IDBahanBaku).TBKomposisiBahanBakus) { POProduksiKomposisi_Model komposisi = new POProduksiKomposisi_Model() { IDBahanBakuProduksi = item.IDBahanBakuProduksi, IDBahanBaku = item.IDBahanBaku, IDSatuan = item.TBBahanBaku1.IDSatuan, BahanBaku = item.TBBahanBaku1.Nama, Satuan = item.TBBahanBaku1.TBSatuan.Nama, HargaBeli = item.TBBahanBaku1.TBStokBahanBakus.FirstOrDefault(data => data.IDTempat == pengguna.IDTempat).HargaBeli.Value, JumlahProduksi = detail.Jumlah, JumlahKomposisi = item.Jumlah.Value, JumlahKebutuhan = detail.Jumlah * item.Jumlah.Value, JumlahSisa = 0, JumlahKurang = 0 }; ViewStateListKomposisi.Add(komposisi); hargaPokokKomposisi += komposisi.SubtotalKomposisi; } decimal biayaTambahan = 0; foreach (var item in daftarBahanBaku.FirstOrDefault(data => data.IDBahanBaku == detail.IDBahanBaku).TBRelasiJenisBiayaProduksiBahanBakus) { POProduksiBiayaTambahan_Model biaya = new POProduksiBiayaTambahan_Model() { IDBahanBakuProduksi = item.IDBahanBaku, IDJenisBiayaProduksi = item.IDJenisBiayaProduksi, Nama = item.TBJenisBiayaProduksi.Nama, JumlahProduksi = detail.Jumlah, Jenis = item.EnumBiayaProduksi == 1 ? (item.Persentase * 100).ToFormatHarga() + "% dari Komposisi Produk" : "Nominal", EnumBiayaProduksi = item.EnumBiayaProduksi.Value, Persentase = item.Persentase.Value, Nominal = item.Nominal.Value, Biaya = item.EnumBiayaProduksi.Value == 1 ? (item.Persentase.Value * ViewStateListKomposisi.Where(data => data.IDBahanBakuProduksi == item.IDBahanBaku).Sum(data => data.SubtotalKomposisi)) : item.Nominal.Value }; ViewStateListBiayaTambahan.Add(biaya); biayaTambahan += biaya.Biaya; } detail.HargaPokokKomposisi = hargaPokokKomposisi; detail.BiayaTambahan = biayaTambahan; detail.TotalHPP = detail.BiayaTambahan + detail.HargaPokokKomposisi; } ViewState["ViewStateListDetail"] = ViewStateListDetail; ViewState["ViewStateListKomposisi"] = ViewStateListKomposisi; ViewState["ViewStateListBiayaTambahan"] = ViewStateListBiayaTambahan; }