Exemplo n.º 1
0
    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();
        }
    }
Exemplo n.º 2
0
    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;
    }