Beispiel #1
0
        private PihakKeduaModel _Save(PihakKeduaModel pihakKedua)
        {
            //  validasi
            if (string.IsNullOrWhiteSpace(pihakKedua.PihakKeduaID))
            {
                throw new ArgumentException("Pihak Kedua ID kosong");
            }

            if (string.IsNullOrWhiteSpace(pihakKedua.PihakKeduaName))
            {
                throw new ArgumentException("Pihak Kedua Name kosong");
            }

            //  save
            var dummyPihakKedua = _pihakKeduaDal.GetData(pihakKedua.PihakKeduaID);

            if (dummyPihakKedua == null)
            {
                _pihakKeduaDal.Insert(pihakKedua);
            }
            else
            {
                _pihakKeduaDal.Update(pihakKedua);
            }

            return(pihakKedua);
        }
Beispiel #2
0
        public LunasKasBonModel Save(LunasKasBonModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var kasBon = _kasBonDal.GetData(model.KasBonID);

            if (kasBon == null)
            {
                throw new ArgumentException("PiutangID invalid");
            }

            //  validate pihak kedua
            var pihakKedua = _pihakKeduaDal.GetData(model.PihakKeduaID);

            if (pihakKedua == null)
            {
                throw new ArgumentException("PihakKeduaID invalid");
            }
            else
            {
                model.PihakKeduaName = pihakKedua.PihakKeduaName;
            }

            if (kasBon.PihakKeduaID != model.PihakKeduaID)
            {
                throw new ArgumentException("PihakKeduaID tidak sama dengan data KasBon");
            }

            if (model.ListLunas == null)
            {
                throw new ArgumentException("Detil Pelunasan masih kosong");
            }

            //  update nilai total lunas
            model.NilaiTotLunas = model.ListLunas.Sum(x => x.NilaiLunas);

            if (model.NilaiSisaPiutang < model.NilaiTotLunas)
            {
                throw new ArgumentException("Nilai Pelunasan KasBon terlalu banyak");
            }

            foreach (var item in model.ListLunas)
            {
                var jenisLunas = _jenisLunasDal.GetData(item.JenisLunasID);
                if (jenisLunas == null)
                {
                    throw new ArgumentException("JenisLunasID invalid : " + item.JenisLunasID);
                }

                if (item.NilaiLunas <= 0)
                {
                    throw new ArgumentException("Pelunasan tidak boleh minus atau nol");
                }

                //  jika PelunasanID muncul, cek apakah NoPenjualan valid
                if (item.PenjualanID.Trim() != "")
                {
                    var penjualan = _penjualanDal.GetData(item.PenjualanID);
                    if (penjualan == null)
                    {
                        throw new ArgumentException("Penjualan ID invalid");
                    }

                    //  nomor referensi penjualan hanya boleh untuk jenis lunas biaya
                    var jenisBiaya = _jenisBiayaDal.GetData(jenisLunas.JenisBiayaID);
                    if (jenisBiaya == null)
                    {
                        throw new ArgumentException("Penjualan hanya diisi jika Biaya");
                    }
                }
            }

            using (var trans = TransHelper.NewScope())
            {
                //  generate id (jika baru)
                if (model.LunasKasBonID.Trim() == "")
                {
                    model.LunasKasBonID = GenNewID();
                }

                //  update id di detil;
                var noUrut = 1;
                foreach (var item in model.ListLunas)
                {
                    item.LunasKasBonID      = model.LunasKasBonID;
                    item.LunasKasBonDetilID = model.LunasKasBonID + '-' + noUrut.ToString().PadLeft(2, '0');
                    noUrut++;
                }

                //  hapus data lama
                _lunasKasBonDal.Delete(model.LunasKasBonID);
                _lunasKasBonDetilDal.Delete(model.LunasKasBonID);

                //  simpan data baru
                _lunasKasBonDal.Insert(model);
                foreach (var item in model.ListLunas)
                {
                    _lunasKasBonDetilDal.Insert(item);
                }

                //  commit changes
                trans.Complete();
            }
            return(model);
        }
Beispiel #3
0
        public void Save(LunasPiutangModel model)
        {
            if (model is null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            //  validasi customer
            var customer = _pihakKeduaDal.GetData(model.PihakKeduaID);

            if (customer == null)
            {
                throw new ArgumentException("CustomerID invalid");
            }
            model.PihakKeduaName = customer.PihakKeduaName;

            //  validasi jenisbayar
            var jenisBayar = _jenisBayarDal.GetData(model.JenisBayarID);

            if (jenisBayar == null)
            {
                throw new ArgumentException("JenisBayarID invalid");
            }
            model.JenisBayarName = jenisBayar.JenisBayarName;

            //  pelunasan piutang tidak boleh dengan piutang
            if (jenisBayar.TipeKas == TIPE_KAS_PIUTANG)
            {
                throw new ArgumentException("Pelunasan tidak boleh menggunakan Piutang");
            }

            //  cek list piutang apakah benar milik customer ini;
            //  serta validasi nilai piutang vs nilai bayar
            foreach (var item in model.ListPiutangBayar)
            {
                var bpPiutang = _bpPiutangBL.GetData(item.PiutangID);
                if (bpPiutang == null)
                {
                    throw new ArgumentException("PiutangID not found");
                }
                if (bpPiutang.PihakKeduaID != model.PihakKeduaID)
                {
                    throw new ArgumentException("PiutangID invalid Customer");
                }
                if (bpPiutang.NilaiPiutang - bpPiutang.NilaiLunas < item.NilaiBayar)
                {
                    throw new ArgumentException("Nilai Bayar melebihi piutang");
                }
            }

            using (var trans = TransHelper.NewScope())
            {
                if (model.LunasPiutangID.Trim() == "")
                {
                    model.LunasPiutangID = GenNewID();
                }

                var noUrut = 1;
                foreach (var item in model.ListPiutangBayar)
                {
                    item.LunasPiutangID = model.LunasPiutangID;
                    var id2 = string.Format("{0}-{1}",
                                            item.LunasPiutangID,
                                            noUrut.ToString().PadLeft(2, '0'));
                    item.LunasPiutangID2 = id2;
                    noUrut++;
                }

                //  hapus data lama
                _lunasPiutangDetilDal.Delete(model.LunasPiutangID);
                _lunasPiutangDal.Delete(model.LunasPiutangID);

                //  insert data baru
                _lunasPiutangDal.Insert(model);
                foreach (var item in model.ListPiutangBayar)
                {
                    _lunasPiutangDetilDal.Insert(item);
                }

                trans.Complete();
            }
        }