private BPHutangModel Save(BPHutangModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } // validate pihak kedua; var pihakKedua = _pihakKeduaBL.GetData(model.PihakKeduaID); if (pihakKedua == null) { throw new ArgumentException("PihakKeduaID invalid"); } else { model.PihakKeduaName = pihakKedua.PihakKeduaName; } // update nilai total di header model.NilaiHutang = model.ListLunas.Sum(x => x.NilaiHutang); model.NilaiLunas = model.ListLunas.Sum(x => x.NilaiLunas); // nilai pelunasan tidak boleh lebih dari hutang if (model.NilaiLunas > model.NilaiHutang) { throw new ArgumentException("Nilai Pelunasan melebihi hutang"); } // update BPHutangID dan BPHutangDetilID di detil lunas int noUrut = 0; foreach (var item in model.ListLunas.OrderBy(x => x.Tgl.ToTglYMD() + x.Jam)) { noUrut++; item.BPHutangID = model.BPHutangID; item.BPHutangDetilID = model.BPHutangID + '-' + noUrut.ToString().PadLeft(2, '0'); } // delete data lama using (var trans = TransHelper.NewScope()) { _bpHutangDetilDal.Delete(model.BPHutangID); _bpHutangDal.Delete(model.BPHutangID); _bpHutangDal.Insert(model); foreach (var item in model.ListLunas) { _bpHutangDetilDal.Insert(item); } trans.Complete(); } return(model); }
public void DeleteTest() { using (var trans = TransHelper.NewScope()) { // arrange var expected = BPHutangDetilDataFactory(); _bpHutangDetilDal.Insert(expected); // act _bpHutangDetilDal.Delete("A1"); // assert } }