public IPenjualanModel GetByNoNota(object noNota) { var dataAccessStatus = new DataAccessStatus(); using (var context = new DbContext()) { var queryStr = "SELECT * FROM penjualan WHERE no_nota = @noNota"; var model = context.Conn.Query <PenjualanModel>(queryStr, new { noNota }).FirstOrDefault(); if (model != null) { if (model.pelanggan_id != default(uint)) { var pelangganModel = context.Conn.Get <PelangganModel>(model.pelanggan_id); if (pelangganModel != null) { model.Pelanggan = pelangganModel; } } var pdRepo = new PenjualanDetailRepository(context); model.PenjualanDetails = pdRepo.GetAll(model); } return(model); } }
private IEnumerable <PenjualanModel> MappingObjects(DbContext context, IEnumerable <PenjualanModel> listObj) { if (listObj != null && listObj.ToList().Count > 0) { listObj = listObj.Map(p => { if (p.pelanggan_id != default(uint)) { p.Pelanggan = context.Conn.Get <PelangganModel>(p.pelanggan_id); } }); var pdRepo = new PenjualanDetailRepository(context); foreach (var p in listObj) { p.PenjualanDetails = pdRepo.GetAll(p); } } return(listObj); }
public void Insert(IPenjualanModel model) { var dataAccessStatus = new DataAccessStatus(); using (var context = new DbContext()) { context.BeginTransaction(); model.no_nota = DbHelper.GetMaxID(context, context.Transaction, "penjualan", "no_nota"); model.tanggal = DateTime.Now; Insert(model, () => { var queryStr = "INSERT INTO penjualan (no_nota, status_pembayaran, pelanggan_id, tanggal, diskon, jumlah_bayar) " + "VALUES (@no_nota, @status_pembayaran, @pelanggan_id, @tanggal, @diskon, @jumlah_bayar);" + "SELECT LAST_INSERT_ID();"; object pelanggan_id = DBNull.Value; if (model.pelanggan_id != default(uint)) { pelanggan_id = model.pelanggan_id; } var insertedId = context.Conn.Query <uint>(queryStr, new { model.no_nota, model.status_pembayaran, pelanggan_id, model.tanggal, model.diskon, model.jumlah_bayar }, context.Transaction).Single(); if (insertedId > 0 && model.PenjualanDetails.ToList().Count > 0) { model.id = insertedId; model.PenjualanDetails = model.PenjualanDetails.Map(p => p.penjualan_id = model.id).ToList(); model.PenjualanDetails = model.PenjualanDetails.Map(pd => { var barang = context.Conn.Get <BarangModel>(pd.barang_id); if (barang != null) { barang.Satuan = context.Conn.Get <SatuanModel>(barang.satuan_id); pd.Barang = barang; } else { var ex = new DataAccessException(dataAccessStatus); SetDataAccessValues(ex, "Salah satu barang yang ingin ditambahkan ke dalam tabel penjualan tidak ditemukan."); throw ex; } }); var barangNotPassed = model.PenjualanDetails.Any(pd => pd.Barang.harga_jual == 0); if (barangNotPassed) { var ex = new DataAccessException(dataAccessStatus); SetDataAccessValues(ex, "Salah satu barang yang ingin dimasukan ke dalam tabel penjualan " + "belum memiliki harga jual."); throw ex; } else { var pdRepo = new PenjualanDetailRepository(context); var laporanStatusBarangModel = new StatusBarangModel(); queryStr = "SELECT SUM(stok) FROM barang"; var stokAwal = context.Conn.ExecuteScalar <int>(queryStr); laporanStatusBarangModel.stok_awal = stokAwal; laporanStatusBarangModel.tanggal = model.tanggal; laporanStatusBarangModel.Penjualan = model; context.Conn.Insert(laporanStatusBarangModel, context.Transaction); foreach (var pd in model.PenjualanDetails) { pd.harga_jual = pd.Barang.harga_jual; pdRepo.Insert(pd, context.Transaction); pd.Barang.stok -= pd.qty; if (pd.Barang.minimal_stok > pd.Barang.stok) { var ex = new DataAccessException(dataAccessStatus); SetDataAccessValues(ex, "Salah satu qty barang yang ingin dimasukan ke dalam tabel penjualan " + "melebihi minimal stok dari barang tersebut."); throw ex; } context.Conn.Update((BarangModel)pd.Barang, context.Transaction); } context.Commit(); } } }, dataAccessStatus, () => CheckAfterInsert(context, "SELECT COUNT(1) FROM penjualan WHERE no_nota=@no_nota " + "AND id=(SELECT id FROM penjualan ORDER BY ID DESC LIMIT 1)", new { model.no_nota })); } }