public void UpdateTest() { using (var trans = TransHelper.NewScope()) { // arrange var expected = BPStokDataFactory(); // act _bpStokDal.Update(expected); // assert } }
private IEnumerable <BPStokModel> RemoveStok(StokItem stokItem) { List <BPStokModel> result = null; // null check if (stokItem == null) { throw new ArgumentNullException(nameof(stokItem)); } // list semua buku stok barang ini yang masih ada sisa stok var listBPStok = ListData(stokItem.BrgID); if (listBPStok == null) { return(null); } // jika pengurangan stok untuk kasus tertentu // (sudah ditetepkan stok mana yg dikurangi) if (stokItem.BPStokID.Trim() != "") { listBPStok = listBPStok.Where(x => x.BPStokID == stokItem.BPStokID); } // hapus detil utk 'trs ini' dulu // (kasus simpan ulang) foreach (var item in listBPStok) { item.ListDetil = item.ListDetil.Where(x => x.ReffID != stokItem.ReffID).ToList(); } // proses pengurangan stok, biar mudah di-pluskan dulu var qtyPengurang = stokItem.QtyOut; // proses pengurangan foreach (var item in listBPStok) { decimal qtyOut = 0; if (item.QtySisa >= qtyPengurang) { qtyOut = qtyPengurang; } else { qtyOut = item.QtySisa; } // kurangi pengurangnya qtyPengurang -= qtyOut; // var noUrut = item.ListDetil.Count() + 1; // jika hargajual = 0, // maka ambil harga beli-nya if (stokItem.HargaJual == 0) { stokItem.HargaJual = item.NilaiHpp; } // bikin detil baru var bpStokDetil = new BPStokDetilModel { BPStokID = item.BPStokID, ReffID = stokItem.ReffID, Tgl = stokItem.Tgl, Jam = stokItem.Jam, QtyIn = 0, NilaiHpp = 0, QtyOut = qtyOut, HargaJual = stokItem.HargaJual, }; item.ListDetil.Add(bpStokDetil); item.QtySisa = item.QtyIn - item.ListDetil.Sum(x => x.QtyOut); // add ke result if (result == null) { result = new List <BPStokModel>(); } result.Add(item); // generate ulang nomor urut-nya int noUrut = 1; foreach (var item2 in item.ListDetil.OrderBy(x => x.Tgl + x.Jam)) { item2.NoUrut = noUrut; item2.BPStokDetilID = item.BPStokID + '-' + noUrut.ToString().PadLeft(3, '0'); noUrut++; } // update header _bpStokDal.Update(item); // delete detil _bpStokDetilDal.Delete(item.BPStokID); // insert baru foreach (var item2 in item.ListDetil) { _bpStokDetilDal.Insert(item2); } if (qtyPengurang == 0) { break; } } // jika masih belum selesai pengurangan stok-nya, // berarti stok ngga cukup. Throw error. if (qtyPengurang != 0) { var errMsg = string.Format("Stok tidak cukup : {0} - {1}", stokItem.BrgID, stokItem.BrgName); throw new ArgumentException(errMsg); } return(result); }