예제 #1
0
    protected void RepeaterDataPO_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "Hapus")
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                TBPOProduksiProduk poProduksiProduk = db.TBPOProduksiProduks.FirstOrDefault(item => item.IDPOProduksiProduk == e.CommandArgument.ToString());

                if (poProduksiProduk.IDProyeksi != null)
                {
                    foreach (var item in db.TBProyeksiDetails.Where(item => item.IDProyeksi == poProduksiProduk.IDProyeksi).OrderBy(data => data.TBKombinasiProduk.Nama).ToArray())
                    {
                        TBPOProduksiProdukDetail poProduksiProdukDetail = poProduksiProduk.TBPOProduksiProdukDetails.FirstOrDefault(data => data.IDKombinasiProduk == item.IDKombinasiProduk);
                        if (poProduksiProdukDetail != null)
                        {
                            item.Sisa = item.Sisa + poProduksiProdukDetail.Jumlah;
                        }
                    }
                }

                db.TBPOProduksiProdukBiayaTambahans.DeleteAllOnSubmit(poProduksiProduk.TBPOProduksiProdukBiayaTambahans);
                db.TBPOProduksiProdukKomposisis.DeleteAllOnSubmit(poProduksiProduk.TBPOProduksiProdukKomposisis);
                db.TBPOProduksiProdukDetails.DeleteAllOnSubmit(poProduksiProduk.TBPOProduksiProdukDetails);
                db.TBPOProduksiProduks.DeleteOnSubmit(poProduksiProduk);
                db.SubmitChanges();

                LoadDataPO(db);
            }
        }
    }
예제 #2
0
    protected void ButtonSimpan_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            peringatan.Visible = false;
            PenggunaLogin pengguna = (PenggunaLogin)Session["PenggunaLogin"];

            List <POProduksiDetail_Model> ViewStateListDetail = (List <POProduksiDetail_Model>)ViewState["ViewStateListDetail"];

            if (ViewStateListDetail.Count > 0)
            {
                string             IDPOProduksiProduk = string.Empty;
                TBPOProduksiProduk produksiProduk     = null;

                bool statusBerhasil = false;

                try
                {
                    using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
                    {
                        if (!string.IsNullOrEmpty(Request.QueryString["edit"]))
                        {
                            produksiProduk = db.TBPOProduksiProduks.FirstOrDefault(item => item.IDPOProduksiProduk == Request.QueryString["edit"]);

                            if (produksiProduk.IDProyeksi != null)
                            {
                                foreach (var item in db.TBProyeksiDetails.Where(item => item.IDProyeksi == produksiProduk.IDProyeksi).OrderBy(data => data.TBKombinasiProduk.Nama).ToArray())
                                {
                                    TBPOProduksiProdukDetail poProduksiProdukDetail = produksiProduk.TBPOProduksiProdukDetails.FirstOrDefault(data => data.IDKombinasiProduk == item.IDKombinasiProduk);
                                    if (poProduksiProdukDetail != null)
                                    {
                                        item.Sisa = item.Sisa + poProduksiProdukDetail.Jumlah;
                                    }
                                }
                            }

                            db.TBPOProduksiProdukDetails.DeleteAllOnSubmit(produksiProduk.TBPOProduksiProdukDetails);
                            produksiProduk.TBPOProduksiProdukDetails.Clear();

                            produksiProduk.IDTempat          = pengguna.IDTempat;
                            produksiProduk.IDPengguna        = pengguna.IDPengguna;
                            produksiProduk.EnumJenisProduksi = (int)PilihanEnumJenisProduksi.PurchaseOrder;
                            produksiProduk.Tanggal           = TextBoxTanggal.Text.ToDateTime().AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute);
                        }
                        else
                        {
                            db.Proc_InsertPOProduksiProduk(ref IDPOProduksiProduk, pengguna.IDTempat, pengguna.IDPengguna, (int)PilihanEnumJenisProduksi.PurchaseOrder, TextBoxTanggal.Text.ToDateTime().AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute));

                            produksiProduk = db.TBPOProduksiProduks.FirstOrDefault(item => item.IDPOProduksiProduk == IDPOProduksiProduk);
                        }

                        produksiProduk.IDProyeksi         = TextBoxIDProyeksi.Text != string.Empty ? TextBoxIDProyeksi.Text : null;
                        produksiProduk.IDVendor           = DropDownListVendor.SelectedValue.ToInt();
                        produksiProduk.IDPenggunaPIC      = DropDownListPenggunaPIC.SelectedValue.ToInt();
                        produksiProduk.IDPenggunaDP       = null;
                        produksiProduk.IDJenisPOProduksi  = null;
                        produksiProduk.IDJenisPembayaran  = null;
                        produksiProduk.TanggalDownPayment = null;
                        produksiProduk.TanggalJatuhTempo  = TextBoxTanggalJatuhTempo.Text.ToDateTime();
                        produksiProduk.TanggalPengiriman  = TextBoxTanggalPengiriman.Text.ToDateTime();
                        produksiProduk.TBPOProduksiProdukDetails.AddRange(ViewStateListDetail.OrderBy(item => item.KombinasiProduk).Select(item => new TBPOProduksiProdukDetail
                        {
                            IDKombinasiProduk   = item.IDKombinasiProduk,
                            HargaPokokKomposisi = item.HargaPokokKomposisi,
                            BiayaTambahan       = item.BiayaTambahan,
                            TotalHPP            = item.TotalHPP,
                            HargaVendor         = item.Harga,
                            PotonganHargaVendor = item.PotonganHarga,
                            TotalHargaVendor    = item.TotalHarga,
                            Jumlah = (int)item.Jumlah,
                            Sisa   = (int)item.Sisa
                        }));

                        produksiProduk.TotalJumlah              = produksiProduk.TBPOProduksiProdukDetails.Sum(item => item.Jumlah);
                        produksiProduk.EnumJenisHPP             = (int)PilihanEnumJenisHPP.HargaSupplierVendor;
                        produksiProduk.SubtotalBiayaTambahan    = produksiProduk.TBPOProduksiProdukDetails.Sum(item => (item.Jumlah * item.BiayaTambahan));
                        produksiProduk.SubtotalTotalHPP         = produksiProduk.TBPOProduksiProdukDetails.Sum(item => (item.Jumlah * item.TotalHPP));
                        produksiProduk.SubtotalTotalHargaVendor = Math.Round(produksiProduk.TBPOProduksiProdukDetails.Sum(item => (item.Jumlah * item.TotalHargaVendor)), 2, MidpointRounding.AwayFromZero);
                        produksiProduk.PotonganPOProduksiProduk = TextBoxPotonganPO.Text.ToDecimal();
                        produksiProduk.BiayaLainLain            = TextBoxBiayaLainLain.Text.ToDecimal();
                        produksiProduk.PersentaseTax            = HiddenFieldTax.Value.ToInt();

                        decimal subtotal = produksiProduk.SubtotalTotalHargaVendor.Value + produksiProduk.BiayaLainLain.Value - produksiProduk.PotonganPOProduksiProduk.Value;
                        produksiProduk.Tax         = Math.Round((subtotal * produksiProduk.PersentaseTax.Value), 2, MidpointRounding.AwayFromZero);
                        produksiProduk.Grandtotal  = subtotal + produksiProduk.Tax;
                        produksiProduk.DownPayment = 0;
                        produksiProduk.Keterangan  = TextBoxKeterangan.Text;

                        if (produksiProduk.IDProyeksi != null)
                        {
                            foreach (var item in db.TBProyeksiDetails.Where(item => item.IDProyeksi == produksiProduk.IDProyeksi).OrderBy(data => data.TBKombinasiProduk.Nama).ToArray())
                            {
                                TBPOProduksiProdukDetail poProduksiProdukDetail = produksiProduk.TBPOProduksiProdukDetails.FirstOrDefault(data => data.IDKombinasiProduk == item.IDKombinasiProduk);
                                if (poProduksiProdukDetail != null)
                                {
                                    item.Sisa = item.Sisa - poProduksiProdukDetail.Jumlah;
                                }
                            }
                        }

                        TBHargaVendor[] daftarHargaVendor = db.TBHargaVendors.Where(item => item.IDVendor == produksiProduk.IDVendor).ToArray();

                        foreach (var item in ViewStateListDetail)
                        {
                            TBHargaVendor hargaVendor = daftarHargaVendor.FirstOrDefault(data => data.IDStokProduk == item.IDStokProduk);

                            if (hargaVendor == null)
                            {
                                db.TBHargaVendors.InsertOnSubmit(new TBHargaVendor()
                                {
                                    IDStokProduk = item.IDStokProduk, IDVendor = produksiProduk.IDVendor, Tanggal = produksiProduk.Tanggal, Harga = item.Harga
                                });
                            }

                            else
                            {
                                hargaVendor.Tanggal = produksiProduk.Tanggal;
                                hargaVendor.Harga   = item.Harga;
                            }
                        }

                        db.SubmitChanges();

                        statusBerhasil = true;
                    }
                }
                catch (Exception ex)
                {
                    if (statusBerhasil != true && string.IsNullOrEmpty(Request.QueryString["edit"]))
                    {
                        using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
                        {
                            produksiProduk = db.TBPOProduksiProduks.FirstOrDefault(item => item.IDPOProduksiProduk == IDPOProduksiProduk);
                            if (produksiProduk != null)
                            {
                                db.TBPOProduksiProdukDetails.DeleteAllOnSubmit(produksiProduk.TBPOProduksiProdukDetails);
                                db.TBPOProduksiProduks.DeleteOnSubmit(produksiProduk);
                                db.SubmitChanges();

                                IDPOProduksiProduk = string.Empty;
                            }
                        }
                    }
                    LogError_Class LogError = new LogError_Class(ex, "Purchase Order Produk (ButtonSimpan_Click by : " + pengguna.NamaLengkap + ")");
                    LabelPeringatan.Text = "Terjadi kesalahan, silahkan cek kembali data yang diinputkan";
                    peringatan.Visible   = true;
                }
                finally
                {
                    if (statusBerhasil == true)
                    {
                        if (!string.IsNullOrEmpty(Request.QueryString["edit"]))
                        {
                            Response.Redirect("Detail.aspx?id=" + produksiProduk.IDPOProduksiProduk);
                        }
                        else
                        {
                            Response.Redirect("Default.aspx");
                        }
                    }
                }
            }
            else
            {
                LabelPeringatan.Text = "Tidak ada Produk yang dipilih";
                peringatan.Visible   = true;
            }
        }
    }
예제 #3
0
    protected void ButtonTerima_Click(object sender, EventArgs e)
    {
        peringatan.Visible = false;
        bool          statusBerhasil = false;
        PenggunaLogin Pengguna       = (PenggunaLogin)Session["PenggunaLogin"];
        string        IDPenerimaanPOProduksiProduk = string.Empty;
        string        IDTransferProduk             = string.Empty;
        TBPenerimaanPOProduksiProduk penerimaan    = null;

        try
        {
            using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
            {
                TBPOProduksiProduk poProduksiProduk = db.TBPOProduksiProduks.FirstOrDefault(item => item.IDPOProduksiProduk == DropDownListIDPOProduksi.SelectedValue);

                bool penerimaanSesuai = true;

                EntitySet <TBPenerimaanPOProduksiProdukDetail> daftarDetail = new EntitySet <TBPenerimaanPOProduksiProdukDetail>();

                int baris = 0;

                foreach (RepeaterItem item in RepeaterDetail.Items)
                {
                    baris++;

                    Label   LabelIDKombinasiProduk     = (Label)item.FindControl("LabelIDKombinasiProduk");
                    TextBox TextBoxSisaPesanan         = (TextBox)item.FindControl("TextBoxSisaPesanan");
                    TextBox TextBoxJumlahDatang        = (TextBox)item.FindControl("TextBoxJumlahDatang");
                    TextBox TextBoxJumlahTerima        = (TextBox)item.FindControl("TextBoxJumlahTerima");
                    TextBox TextBoxJumlahTolakKeVendor = (TextBox)item.FindControl("TextBoxJumlahTolakKeVendor");

                    if (TextBoxJumlahDatang.Text.ToDecimal().ToInt() > 0)
                    {
                        if (TextBoxJumlahDatang.Text.ToDecimal().ToInt() >= TextBoxJumlahTerima.Text.ToDecimal().ToInt())
                        {
                            TBPOProduksiProdukDetail poProduksiProdukDetail = poProduksiProduk.TBPOProduksiProdukDetails.FirstOrDefault(data => data.IDKombinasiProduk == LabelIDKombinasiProduk.Text.ToInt());

                            daftarDetail.Add(new TBPenerimaanPOProduksiProdukDetail()
                            {
                                IDKombinasiProduk   = poProduksiProdukDetail.IDKombinasiProduk,
                                BiayaTambahan       = poProduksiProdukDetail.BiayaTambahan,
                                HargaPokokKomposisi = poProduksiProdukDetail.HargaPokokKomposisi,
                                TotalHPP            = poProduksiProdukDetail.TotalHPP,
                                HargaVendor         = poProduksiProdukDetail.HargaVendor,
                                PotonganHargaVendor = poProduksiProdukDetail.PotonganHargaVendor,
                                TotalHargaVendor    = poProduksiProdukDetail.TotalHargaVendor,
                                Datang        = TextBoxJumlahDatang.Text.ToDecimal().ToInt(),
                                Diterima      = TextBoxJumlahTerima.Text.ToDecimal().ToInt(),
                                TolakKeVendor = TextBoxJumlahTolakKeVendor.Text.ToDecimal().ToInt(),
                                Sisa          = TextBoxJumlahTerima.Text.ToDecimal().ToInt() <= TextBoxSisaPesanan.Text.ToDecimal().ToInt() ? TextBoxSisaPesanan.Text.ToDecimal().ToInt() - TextBoxJumlahTerima.Text.ToDecimal().ToInt() : 0
                            });
                        }
                        else
                        {
                            LabelPeringatan.Text = "Jumlah diterima lebih besar dari jumlah datang, baris ke-" + baris.ToString();
                            peringatan.Visible   = true;
                            penerimaanSesuai     = false;
                            break;
                        }
                    }
                }

                if (penerimaanSesuai == true)
                {
                    StokProduk_Class StokProduk_Class = new StokProduk_Class(db);
                    TBStokProduk[]   daftarStokProduk = db.TBStokProduks.Where(item => item.IDTempat == Pengguna.IDTempat).ToArray();

                    db.Proc_InsertPenerimaanPOProduksiProduk(ref IDPenerimaanPOProduksiProduk, poProduksiProduk.IDPOProduksiProduk, poProduksiProduk.IDVendor, Pengguna.IDTempat, Pengguna.IDPengguna, TextBoxTanggalPenerimaan.Text.ToDateTime().AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute));

                    penerimaan = db.TBPenerimaanPOProduksiProduks.FirstOrDefault(item => item.IDPenerimaanPOProduksiProduk == IDPenerimaanPOProduksiProduk);

                    penerimaan.IDPenggunaTerima = penerimaan.IDPenggunaDatang;
                    penerimaan.TanggalTerima    = penerimaan.TanggalDatang;
                    penerimaan.TBPenerimaanPOProduksiProdukDetails = daftarDetail;
                    penerimaan.TotalDatang              = penerimaan.TBPenerimaanPOProduksiProdukDetails.Sum(item => item.Datang);
                    penerimaan.TotalDiterima            = penerimaan.TBPenerimaanPOProduksiProdukDetails.Sum(item => item.Diterima);
                    penerimaan.TotalTolakKeVendor       = penerimaan.TBPenerimaanPOProduksiProdukDetails.Sum(item => item.TolakKeVendor);
                    penerimaan.TotalSisa                = penerimaan.TBPenerimaanPOProduksiProdukDetails.Sum(item => item.Sisa);
                    penerimaan.SubtotalBiayaTambahan    = penerimaan.TBPenerimaanPOProduksiProdukDetails.Sum(item => item.BiayaTambahan * item.Diterima);
                    penerimaan.SubtotalTotalHPP         = penerimaan.TBPenerimaanPOProduksiProdukDetails.Sum(item => item.TotalHPP * item.Diterima);
                    penerimaan.SubtotalTotalHargaVendor = penerimaan.TBPenerimaanPOProduksiProdukDetails.Sum(item => item.TotalHargaVendor * item.Diterima);
                    penerimaan.Grandtotal               = penerimaan.SubtotalTotalHPP + penerimaan.SubtotalTotalHargaVendor;
                    penerimaan.EnumStatusPenerimaan     = (int)PilihanEnumStatusPenerimaanPO.Terima;
                    penerimaan.Keterangan               = TextBoxKeterangan.Text;

                    foreach (var item in penerimaan.TBPenerimaanPOProduksiProdukDetails)
                    {
                        var POProduksiProdukDetail = poProduksiProduk.TBPOProduksiProdukDetails.FirstOrDefault(data => data.IDKombinasiProduk == item.IDKombinasiProduk);
                        POProduksiProdukDetail.Sisa = item.Sisa;

                        TBStokProduk StokProduk = daftarStokProduk.FirstOrDefault(data => data.IDTempat == Pengguna.IDTempat && data.IDKombinasiProduk == item.IDKombinasiProduk);

                        StokProduk_Class.PengaturanJumlahStokPenerimaanPOProduk(penerimaan.TanggalTerima.Value, Pengguna.IDPengguna, Pengguna.IDTempat, StokProduk, item.TotalHargaVendor, item.Datang, item.TolakKeVendor, item.TBPenerimaanPOProduksiProduk.TBPOProduksiProduk.IDPOProduksiProduk + " - #" + item.TBPenerimaanPOProduksiProduk.IDPenerimaanPOProduksiProduk);
                    }

                    poProduksiProduk.TBPenerimaanPOProduksiProduks.Add(penerimaan);

                    #region arie - INPUT JURNAL
                    ////////////var KonfigurasiAkun = db.TBKonfigurasiAkuns.Where(item => item.IDTempat == 1);

                    ////////////if (KonfigurasiAkun != null)
                    ////////////{
                    ////////////    #region Pembuatan Jurnal Penerimaan PO YG Belum Bayar
                    ////////////    TBJurnal Jurnal = new TBJurnal
                    ////////////    {
                    ////////////        IDTempat = Pengguna.IDTempat,
                    ////////////        Tanggal = penerimaan.TanggalTerima,
                    ////////////        Keterangan = penerimaan.Keterangan,
                    ////////////        IDPengguna = penerimaan.IDPenggunaTerima,
                    ////////////        Referensi = penerimaan.IDPenerimaanPOProduksiProduk
                    ////////////    };

                    ////////////    #region JOURNAL ENTRY
                    ////////////    //DEBIT     : PERSEDIAAN
                    ////////////    //KREDIT    : HUTANG DAGANG

                    ////////////    //PERSEDIAAN
                    ////////////    Jurnal.TBJurnalDetails.Add(new TBJurnalDetail
                    ////////////    {
                    ////////////        IDAkun = KonfigurasiAkun.FirstOrDefault(item => item.Nama == "PERSEDIAAN").IDAkun,
                    ////////////        Debit = penerimaan.Grandtotal,
                    ////////////        Kredit = 0
                    ////////////    });

                    ////////////    //HUTANG DAGANG
                    ////////////    Jurnal.TBJurnalDetails.Add(new TBJurnalDetail
                    ////////////    {
                    ////////////        IDAkun = KonfigurasiAkun.FirstOrDefault(item => item.Nama == "HUTANG DAGANG").IDAkun,
                    ////////////        Debit = 0,
                    ////////////        Kredit = penerimaan.Grandtotal
                    ////////////    });
                    ////////////    #endregion

                    ////////////    db.TBJurnals.InsertOnSubmit(Jurnal);
                    ////////////    #endregion
                    ////////////}
                    #endregion

                    db.SubmitChanges();

                    statusBerhasil = true;
                }
                else
                {
                    peringatan.Visible = true;
                }
            }
        }
        catch (Exception ex)
        {
            if (statusBerhasil != true)
            {
                using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
                {
                    penerimaan = db.TBPenerimaanPOProduksiProduks.FirstOrDefault(item => item.IDPenerimaanPOProduksiProduk == IDPenerimaanPOProduksiProduk);
                    if (penerimaan != null)
                    {
                        db.TBPenerimaanPOProduksiProdukDetails.DeleteAllOnSubmit(penerimaan.TBPenerimaanPOProduksiProdukDetails);
                        db.TBPenerimaanPOProduksiProduks.DeleteOnSubmit(penerimaan);
                        db.SubmitChanges();

                        IDPenerimaanPOProduksiProduk = string.Empty;
                    }
                }
            }

            LogError_Class LogError = new LogError_Class(ex, "Penerimaan Produksi Ke Supplier (ButtonSimpan_Click by : " + Pengguna.NamaLengkap + ")");
            LabelPeringatan.Text = "Terjadi kesalahan, silahkan cek kembali data yang diinputkan";
            peringatan.Visible   = true;
        }
        finally
        {
            if (statusBerhasil == true)
            {
                Response.Redirect("Default.aspx");
            }
        }
    }
예제 #4
0
    protected void ButtonSimpan_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            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"];

            if (ViewStateListDetail.Count > 0)
            {
                string             IDPOProduksiProduk = string.Empty;
                TBPOProduksiProduk produksiProduk     = null;
                bool statusBerhasil = false;

                try
                {
                    using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
                    {
                        peringatan.Visible = false;

                        if (!string.IsNullOrEmpty(Request.QueryString["edit"]))
                        {
                            produksiProduk = db.TBPOProduksiProduks.FirstOrDefault(item => item.IDPOProduksiProduk == Request.QueryString["edit"]);

                            if (produksiProduk.IDProyeksi != null)
                            {
                                foreach (var item in db.TBProyeksiDetails.Where(item => item.IDProyeksi == produksiProduk.IDProyeksi).OrderBy(data => data.TBKombinasiProduk.Nama).ToArray())
                                {
                                    TBPOProduksiProdukDetail poProduksiProdukDetail = produksiProduk.TBPOProduksiProdukDetails.FirstOrDefault(data => data.IDKombinasiProduk == item.IDKombinasiProduk);
                                    if (poProduksiProdukDetail != null)
                                    {
                                        item.Sisa = item.Sisa + poProduksiProdukDetail.Jumlah;
                                    }
                                }
                            }

                            db.TBPOProduksiProdukDetails.DeleteAllOnSubmit(produksiProduk.TBPOProduksiProdukDetails);
                            db.TBPOProduksiProdukKomposisis.DeleteAllOnSubmit(produksiProduk.TBPOProduksiProdukKomposisis);
                            db.TBPOProduksiProdukBiayaTambahans.DeleteAllOnSubmit(produksiProduk.TBPOProduksiProdukBiayaTambahans);
                            produksiProduk.TBPOProduksiProdukDetails.Clear();
                            produksiProduk.TBPOProduksiProdukKomposisis.Clear();
                            produksiProduk.TBPOProduksiProdukBiayaTambahans.Clear();

                            produksiProduk.IDTempat          = pengguna.IDTempat;
                            produksiProduk.IDPengguna        = pengguna.IDPengguna;
                            produksiProduk.EnumJenisProduksi = (int)PilihanEnumJenisProduksi.ProduksiSendiri;
                            produksiProduk.Tanggal           = TextBoxTanggal.Text.ToDateTime().AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute);
                        }
                        else
                        {
                            db.Proc_InsertPOProduksiProduk(ref IDPOProduksiProduk, pengguna.IDTempat, pengguna.IDPengguna, (int)PilihanEnumJenisProduksi.ProduksiSendiri, TextBoxTanggal.Text.ToDateTime().AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute));

                            produksiProduk = db.TBPOProduksiProduks.FirstOrDefault(item => item.IDPOProduksiProduk == IDPOProduksiProduk);
                        }

                        produksiProduk.IDProyeksi         = TextBoxIDProyeksi.Text != string.Empty ? TextBoxIDProyeksi.Text : null;
                        produksiProduk.IDVendor           = null;
                        produksiProduk.IDPenggunaPIC      = DropDownListPenggunaPIC.SelectedValue.ToInt();
                        produksiProduk.IDPenggunaDP       = null;
                        produksiProduk.IDJenisPOProduksi  = null;
                        produksiProduk.IDJenisPembayaran  = null;
                        produksiProduk.TanggalDownPayment = null;
                        produksiProduk.TanggalJatuhTempo  = null;
                        produksiProduk.TanggalPengiriman  = TextBoxTanggalPengiriman.Text.ToDateTime();
                        produksiProduk.TBPOProduksiProdukDetails.AddRange(ViewStateListDetail.Select(item => new TBPOProduksiProdukDetail
                        {
                            IDKombinasiProduk   = item.IDKombinasiProduk,
                            HargaPokokKomposisi = item.HargaPokokKomposisi,
                            BiayaTambahan       = item.BiayaTambahan,
                            TotalHPP            = item.TotalHPP,
                            HargaVendor         = item.Harga,
                            PotonganHargaVendor = item.PotonganHarga,
                            TotalHargaVendor    = item.TotalHarga,
                            Jumlah = (int)item.Jumlah,
                            Sisa   = (int)item.Sisa
                        }));

                        produksiProduk.TotalJumlah              = produksiProduk.TBPOProduksiProdukDetails.Sum(item => item.Jumlah);
                        produksiProduk.EnumJenisHPP             = RadioButtonListStatusHPP.SelectedValue.ToInt();
                        produksiProduk.SubtotalBiayaTambahan    = produksiProduk.TBPOProduksiProdukDetails.Sum(item => (item.Jumlah * item.BiayaTambahan));
                        produksiProduk.SubtotalTotalHPP         = produksiProduk.TBPOProduksiProdukDetails.Sum(item => (item.Jumlah * item.TotalHPP));
                        produksiProduk.SubtotalTotalHargaVendor = produksiProduk.TBPOProduksiProdukDetails.Sum(item => (item.Jumlah * item.TotalHargaVendor));
                        produksiProduk.PotonganPOProduksiProduk = 0;
                        produksiProduk.BiayaLainLain            = 0;
                        produksiProduk.PersentaseTax            = 0;
                        produksiProduk.Tax         = 0;
                        produksiProduk.Grandtotal  = produksiProduk.SubtotalTotalHPP;
                        produksiProduk.DownPayment = 0;
                        produksiProduk.Keterangan  = TextBoxKeterangan.Text;

                        produksiProduk.TBPOProduksiProdukKomposisis.AddRange(ViewStateListKomposisi.OrderBy(item => item.BahanBaku).GroupBy(item => new
                        {
                            item.IDBahanBaku,
                            item.IDSatuan,
                            item.HargaBeli
                        })
                                                                             .Select(item => new TBPOProduksiProdukKomposisi
                        {
                            IDBahanBaku = item.Key.IDBahanBaku,
                            IDSatuan    = item.Key.IDSatuan,
                            HargaBeli   = item.Key.HargaBeli,
                            Kebutuhan   = item.Sum(x => x.JumlahKebutuhan),
                            Kirim       = 0,
                            Sisa        = item.Sum(x => x.JumlahKebutuhan)
                        }));

                        produksiProduk.TBPOProduksiProdukBiayaTambahans.AddRange(ViewStateListBiayaTambahan.OrderBy(item => item.Nama).GroupBy(item => new
                        {
                            item.IDJenisBiayaProduksi
                        })
                                                                                 .Select(item => new TBPOProduksiProdukBiayaTambahan
                        {
                            IDJenisBiayaProduksi = item.Key.IDJenisBiayaProduksi,
                            Nominal = item.Sum(x => x.SubtotalBiaya)
                        }));

                        if (produksiProduk.IDProyeksi != null)
                        {
                            foreach (var item in db.TBProyeksiDetails.Where(item => item.IDProyeksi == produksiProduk.IDProyeksi).OrderBy(data => data.TBKombinasiProduk.Nama).ToArray())
                            {
                                TBPOProduksiProdukDetail poProduksiProdukDetail = produksiProduk.TBPOProduksiProdukDetails.FirstOrDefault(data => data.IDKombinasiProduk == item.IDKombinasiProduk);
                                if (poProduksiProdukDetail != null)
                                {
                                    item.Sisa = item.Sisa - poProduksiProdukDetail.Jumlah;
                                }
                            }
                        }

                        db.SubmitChanges();

                        statusBerhasil = true;
                    }
                }
                catch (Exception ex)
                {
                    if (statusBerhasil != true && string.IsNullOrEmpty(Request.QueryString["edit"]))
                    {
                        using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
                        {
                            produksiProduk = db.TBPOProduksiProduks.FirstOrDefault(item => item.IDPOProduksiProduk == IDPOProduksiProduk);
                            if (produksiProduk != null)
                            {
                                db.TBPOProduksiProdukDetails.DeleteAllOnSubmit(produksiProduk.TBPOProduksiProdukDetails);
                                db.TBPOProduksiProdukKomposisis.DeleteAllOnSubmit(produksiProduk.TBPOProduksiProdukKomposisis);
                                db.TBPOProduksiProdukBiayaTambahans.DeleteAllOnSubmit(produksiProduk.TBPOProduksiProdukBiayaTambahans);
                                db.TBPOProduksiProduks.DeleteOnSubmit(produksiProduk);
                                db.SubmitChanges();

                                IDPOProduksiProduk = string.Empty;
                            }
                        }
                    }
                    LogError_Class LogError = new LogError_Class(ex, "Produksi Produk Sendiri (ButtonSimpan_Click by : " + pengguna.NamaLengkap + ")");
                    LabelPeringatan.Text = "Terjadi kesalahan, silahkan cek kembali data yang diinputkan";
                    peringatan.Visible   = true;
                }
                finally
                {
                    if (statusBerhasil == true)
                    {
                        if (!string.IsNullOrEmpty(Request.QueryString["edit"]))
                        {
                            Response.Redirect("Detail.aspx?id=" + produksiProduk.IDPOProduksiProduk);
                        }
                        else
                        {
                            Response.Redirect("Default.aspx");
                        }
                    }
                }
            }
            else
            {
                LabelPeringatan.Text = "Tidak ada Produk yang dipilih";
                peringatan.Visible   = true;
            }
        }
    }