Exemple #1
0
    public static void Update(DataClassesDatabaseDataContext db, TBVendor vendor, TBStokProduk stokProduk, decimal harga)
    {
        if (vendor != null)
        {
            TBHargaVendor hargaVendor = db.TBHargaVendors.FirstOrDefault(item => item.TBVendor == vendor && item.TBStokProduk == stokProduk);

            if (hargaVendor == null)
            {
                hargaVendor = new TBHargaVendor
                {
                    TBVendor     = vendor,
                    Tanggal      = DateTime.Now,
                    Harga        = harga,
                    TBStokProduk = stokProduk
                };

                db.TBHargaVendors.InsertOnSubmit(hargaVendor);
            }
            else
            {
                hargaVendor.Tanggal = DateTime.Now;
                hargaVendor.Harga   = harga;
            }
        }
    }
    private void CariHargaSupplierVendor()
    {
        TextBoxHargaVendor.Text         = "0";
        TextBoxJumlah.Text              = "1";
        TextBoxPotonganHargaVendor.Text = "0";

        using (DataClassesDatabaseDataContext db = new DataClassesDatabaseDataContext())
        {
            TBHargaVendor hargaVendor = db.TBHargaVendors.FirstOrDefault(item => item.IDVendor == DropDownListVendor.SelectedValue.ToInt() && item.IDStokProduk == DropDownListStokProduk.SelectedValue.ToInt());

            if (hargaVendor != null)
            {
                TextBoxHargaVendor.Text = hargaVendor.Harga.ToFormatHarga();
            }
        }
    }
    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;
            }
        }
    }