/// <summary>
        /// Method khusus untuk menyimpan pembayaran hutang pembelian tunai
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private int SavePembayaranHutang(BeliProduk obj)
        {
            PembayaranHutangProduk            pembayaranHutang;
            ItemPembayaranHutangProduk        itemPembayaranHutang;
            IPembayaranHutangProdukRepository pembayaranHutangRepo = new PembayaranHutangProdukRepository(_context, _log);

            var result = 0;

            // set detail
            itemPembayaranHutang = pembayaranHutangRepo.GetByBeliID(obj.beli_produk_id);
            if (itemPembayaranHutang != null) // sudah ada pelunasan
            {
                itemPembayaranHutang.nominal    = obj.grand_total;
                itemPembayaranHutang.BeliProduk = new BeliProduk {
                    beli_produk_id = itemPembayaranHutang.beli_produk_id
                };
                itemPembayaranHutang.entity_state = EntityState.Modified;

                // set header by detail
                pembayaranHutang          = itemPembayaranHutang.PembayaranHutangProduk;
                pembayaranHutang.is_tunai = obj.is_tunai;

                // set item pembayaran
                pembayaranHutang.item_pembayaran_hutang.Add(itemPembayaranHutang);

                result = pembayaranHutangRepo.Update(pembayaranHutang, true);
            }
            else // belum ada pelunasan hutang
            {
                pembayaranHutang = new PembayaranHutangProduk();

                // set header
                pembayaranHutang.supplier_id = obj.supplier_id;
                pembayaranHutang.pengguna_id = obj.pengguna_id;
                pembayaranHutang.tanggal     = obj.tanggal;
                pembayaranHutang.keterangan  = "Pembelian tunai produk";
                pembayaranHutang.is_tunai    = obj.is_tunai;

                // set item
                itemPembayaranHutang = new ItemPembayaranHutangProduk();
                itemPembayaranHutang.beli_produk_id = obj.beli_produk_id;
                itemPembayaranHutang.BeliProduk     = obj;
                itemPembayaranHutang.nominal        = obj.grand_total; // GetTotalNotaSetelahDiskonDanPPN(obj);
                itemPembayaranHutang.keterangan     = string.Empty;

                // set item pembayaran
                pembayaranHutang.item_pembayaran_hutang.Add(itemPembayaranHutang);

                // simpan item pembayaran
                result = pembayaranHutangRepo.Save(pembayaranHutang, true);
            }

            return(result);
        }
        /// <summary>
        /// Method untuk menghapus pembayaran hutang jika terjadi perubahan status nota dari tunai ke kredit
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private int HapusPembayaranHutang(BeliProduk obj)
        {
            PembayaranHutangProduk            pembayaranHutang;
            ItemPembayaranHutangProduk        itemPembayaranHutang;
            IPembayaranHutangProdukRepository pembayaranHutangRepo = new PembayaranHutangProdukRepository(_context, _log);

            var result = 0;

            // set detail
            itemPembayaranHutang = pembayaranHutangRepo.GetByBeliID(obj.beli_produk_id);
            if (itemPembayaranHutang != null)
            {
                pembayaranHutang = itemPembayaranHutang.PembayaranHutangProduk;
                result           = pembayaranHutangRepo.Delete(pembayaranHutang);
            }

            return(result);
        }