public void InsertTest()
        {
            using (var trans = TransHelper.NewScope())
            {
                //  arrang
                var expected = BPPurchaseDataFactory();

                //  act
                _purchaseDal.Insert(expected);

                //  assert
            }
        }
示例#2
0
        private BPPurchaseModel Save(BPPurchaseModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            //  validate supplier
            var supplier = _supplierDal.GetData(model.SupplierID);

            if (supplier == null)
            {
                throw new ArgumentException("SupplierID invalie");
            }
            else
            {
                model.SupplierName = supplier.SupplierName;
            }

            //  update nilai Total Harga dari detil
            model.TotHargaPurchase = model.ListBrg.Sum(x => x.QtyPurchase * (x.Harga - x.Diskon + x.Tax));
            model.TotHargaReceipt  = model.ListBrg.Sum(x => x.QtyReceipt * (x.Harga - x.Diskon + x.Tax));

            //  validasi; penerimaan tidak boleh melebihi purchasing
            if (model.TotHargaReceipt > model.TotHargaPurchase)
            {
                throw new ArgumentException("Penerimaan melebihi pembelian");
            }

            //  update subtotal di detil
            foreach (var item in model.ListBrg)
            {
                item.SubTotal =
                    (item.QtyPurchase - item.QtyReceipt) *
                    (item.Harga - item.Diskon + item.Tax);
            }

            //  update keterangan di detil
            foreach (var item in model.ListBrg)
            {
                var brg = _brgDal.GetData(item.BrgID);
                if (brg == null)
                {
                    throw new ArgumentException("BrgID invalid");
                }
                if (item.BPReceiptID.Trim() == "")
                {
                    item.Keterangan = string.Format("Purchase {0}", brg.BrgName);
                }
                else
                {
                    item.Keterangan = string.Format("    Received {0}", brg.BrgName);
                }
            }

            //  atur urutannya sedemikian rupa kelihatan history penerimaan barang
            var listData = model.ListBrg.OrderBy(x => x.BrgID + x.Tgl + x.Jam);
            int i        = 1;

            foreach (var item in listData)
            {
                item.NoUrut = i;
                i++;
            }
            model.ListBrg = listData.ToList();

            //  update kode Purchase di Detil harus sama dengan header
            foreach (var item in model.ListBrg)
            {
                item.BPPurchaseID = model.BPPurchaseID;
            }

            if (model.TotHargaPurchase == model.TotHargaReceipt)
            {
                model.IsClosed = true;
            }

            //  save
            using (var trans = TransHelper.NewScope())
            {
                //  hapus data lama
                _bpPurchaseReceiptDal.Delete(model.BPPurchaseID);
                _bpPurchaseDal.Delete(model.BPPurchaseID);

                //  insert data baru
                _bpPurchaseDal.Insert(model);
                foreach (var item in model.ListBrg)
                {
                    _bpPurchaseReceiptDal.Insert(item);
                }

                trans.Complete();
            }

            return(model);
        }