public void Insert(IPenyesuaianStokModel model) { var dataAccessStatus = new DataAccessStatus(); using (var context = new DbContext()) { context.BeginTransaction(); Insert(model, () => { var barang = context.Conn.Get <BarangModel>(model.barang_id); if (barang != null) { model.Barang = barang; } else { var ex = new DataAccessException(dataAccessStatus); SetDataAccessValues(ex, "Salah satu barang yang ingin ditambahkan ke dalam tabel penyesuaian stok tidak ditemukan."); throw ex; } if (barang.hpp == 0) { var ex = new DataAccessException(dataAccessStatus); SetDataAccessValues(ex, "Salah satu barang yang ingin dimasukan ke dalam tabel penyesuaian stok " + "belum memiliki hpp."); throw ex; } else { context.Conn.Insert((PenyesuaianStokModel)model, context.Transaction); var statusBarangModel = new StatusBarangModel(); var queryStr = "SELECT SUM(stok) FROM barang"; var stokAwal = context.Conn.ExecuteScalar <int>(queryStr); statusBarangModel.stok_awal = stokAwal; statusBarangModel.tanggal = model.tanggal; statusBarangModel.PenyesuaianStok = model; context.Conn.Insert(statusBarangModel, context.Transaction); CheckBarangStok(model, dataAccessStatus); context.Conn.Update((BarangModel)model.Barang, context.Transaction); context.Commit(); } }, dataAccessStatus, () => CheckAfterInsert(context, "SELECT COUNT(1) FROM penyesuaian_stok WHERE barang_id = @barang_id " + "AND id=(SELECT id FROM penyesuaian_stok ORDER BY ID DESC LIMIT 1)", new { model.barang_id })); } }
public void Insert(IPenjualanReturnModel model) { var dataAccessStatus = new DataAccessStatus(); using (var context = new DbContext()) { context.BeginTransaction(); model.no_nota = DbHelper.GetMaxID(context, context.Transaction, "penjualan_return", "no_nota"); model.tanggal = DateTime.Now; Insert(model, () => { var queryStr = "INSERT INTO penjualan_return (tanggal, no_nota, penjualan_id) " + "VALUES (@tanggal, @no_nota, @penjualan_id);" + "SELECT LAST_INSERT_ID();"; var insertedId = context.Conn.Query <uint>(queryStr, new { model.tanggal, model.no_nota, model.penjualan_id }, context.Transaction).Single(); if (insertedId > 0 && model.PenjualanReturnDetails.ToList().Count > 0) { model.id = insertedId; model.PenjualanReturnDetails = model.PenjualanReturnDetails.Map(p => p.penjualan_return_id = model.id).ToList(); model.PenjualanReturnDetails = model.PenjualanReturnDetails.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 return tidak ditemukan."); throw ex; } }); var prdRepo = new PenjualanReturnDetailRepository(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.PenjualanReturn = model; context.Conn.Insert(laporanStatusBarangModel, context.Transaction); queryStr = "SELECT * FROM penjualan_detail WHERE penjualan_id = @penjualan_id"; var listPenjualanDetails = context.Conn.Query <PenjualanDetailModel>(queryStr, new { model.penjualan_id }).ToList(); foreach (var pd in listPenjualanDetails) { foreach (var prd in model.PenjualanReturnDetails) { if (pd.barang_id == prd.barang_id) { pd.qty_return += prd.qty; } } context.Conn.Update(pd, context.Transaction); } if (listPenjualanDetails.Any(pd => pd.qty_return > pd.qty)) { var ex = new DataAccessException(dataAccessStatus); SetDataAccessValues(ex, "Salah satu qty return penjualan yang ingin disimpan melebihi qty yang terjual."); throw ex; } foreach (var prd in model.PenjualanReturnDetails) { prdRepo.Insert(prd, context.Transaction); prd.Barang.stok += prd.qty; context.Conn.Update((BarangModel)prd.Barang, context.Transaction); } context.Commit(); } }, dataAccessStatus, () => CheckAfterInsert(context, "SELECT COUNT(1) FROM penjualan_return WHERE no_nota = @no_nota " + "AND id = (SELECT id FROM penjualan_return ORDER BY ID DESC LIMIT 1)", new { model.no_nota })); } }
public void Insert(IPembelianModel model) { var dataAccessStatus = new DataAccessStatus(); using (var context = new DbContext()) { context.BeginTransaction(); model.no_nota = DbHelper.GetMaxID(context, context.Transaction, "pembelian", "no_nota"); model.tanggal = DateTime.Now; Insert(model, () => { var queryStr = "INSERT INTO pembelian (supplier_id, tanggal, no_nota, diskon) " + "VALUES (@supplier_id, @tanggal, @no_nota, @diskon);" + "SELECT LAST_INSERT_ID();"; var insertedId = context.Conn.Query <uint>(queryStr, new { model.supplier_id, model.tanggal, model.no_nota, model.diskon }, context.Transaction).Single(); if (insertedId > 0 && model.PembelianDetails.ToList().Count > 0) { model.id = insertedId; model.PembelianDetails = model.PembelianDetails.Map(p => p.pembelian_id = model.id).ToList(); model.PembelianDetails = model.PembelianDetails.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; pd.Barang.supplier_id = model.supplier_id; } else { var ex = new DataAccessException(dataAccessStatus); SetDataAccessValues(ex, "Salah satu barang yang ingin ditambahkan ke dalam tabel pembelian tidak ditemukan."); throw ex; } }); var pdRepo = new PembelianDetailRepository(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.Pembelian = model; context.Conn.Insert(laporanStatusBarangModel, context.Transaction); foreach (var pd in model.PembelianDetails) { pdRepo.Insert(pd, context.Transaction); pd.Barang.stok += pd.qty; if (pd.hpp > 0) { pd.Barang.hpp = pd.hpp; } context.Conn.Update((BarangModel)pd.Barang, context.Transaction); } context.Commit(); } }, dataAccessStatus, () => CheckAfterInsert(context, "SELECT COUNT(1) FROM pembelian WHERE no_nota=@no_nota " + "AND id=(SELECT id FROM pembelian ORDER BY ID DESC LIMIT 1)", new { model.no_nota })); } }
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 })); } }