public int Save(PembayaranPiutangProduk obj, bool isSaveFromPenjualan)
        {
            var result = 0;

            try
            {
                IDbTransaction transaction = null;

                if (!isSaveFromPenjualan)
                {
                    _context.BeginTransaction();

                    transaction = _context.transaction;
                }

                obj.pembayaran_piutang_id = _context.GetGUID();

                if (obj.nota == null || obj.nota.Length == 0)
                {
                    obj.nota = this.GetLastNota();
                }

                // insert header
                _context.db.Insert <PembayaranPiutangProduk>(obj, transaction);

                // insert detil
                foreach (var item in obj.item_pembayaran_piutang.Where(f => f.JualProduk != null))
                {
                    if (item.jual_id.Length > 0)
                    {
                        item.item_pembayaran_piutang_id = _context.GetGUID();
                        item.pembayaran_piutang_id      = obj.pembayaran_piutang_id;

                        _context.db.Insert <ItemPembayaranPiutangProduk>(item, transaction);

                        // update entity state
                        item.entity_state = EntityState.Unchanged;
                    }
                }

                if (!isSaveFromPenjualan)
                {
                    _context.Commit();
                }

                LogicalThreadContext.Properties["NewValue"] = obj.ToJson();
                _log.Info("Tambah data");

                result = 1;
            }
            catch (Exception ex)
            {
                _log.Error("Error:", ex);
            }

            return(result);
        }
        public int Delete(PembayaranPiutangProduk obj)
        {
            var result = 0;

            try
            {
                result = _context.db.Delete <PembayaranPiutangProduk>(obj) ? 1 : 0;

                if (result > 0)
                {
                    LogicalThreadContext.Properties["OldValue"] = obj.ToJson();
                    _log.Info("Hapus data");
                }
            }
            catch (Exception ex)
            {
                _log.Error("Error:", ex);
            }

            return(result);
        }
        public int Update(PembayaranPiutangProduk obj, bool isUpdateFromPenjualan)
        {
            var result = 0;

            try
            {
                IDbTransaction transaction = null;

                if (!isUpdateFromPenjualan)
                {
                    _context.BeginTransaction();

                    transaction = _context.transaction;
                }

                // update header
                result = _context.db.Update <PembayaranPiutangProduk>(obj, transaction) ? 1 : 0;

                // delete detail
                foreach (var item in obj.item_pembayaran_piutang_deleted)
                {
                    result = _context.db.Delete <ItemPembayaranPiutangProduk>(item, transaction) ? 1 : 0;
                }

                // insert/update detail
                foreach (var item in obj.item_pembayaran_piutang.Where(f => f.JualProduk != null))
                {
                    item.pembayaran_piutang_id = obj.pembayaran_piutang_id;

                    if (item.entity_state == EntityState.Added)
                    {
                        if (item.item_pembayaran_piutang_id == null)
                        {
                            item.item_pembayaran_piutang_id = _context.GetGUID();
                        }

                        _context.db.Insert <ItemPembayaranPiutangProduk>(item, transaction);

                        result = 1;
                    }
                    else if (item.entity_state == EntityState.Modified)
                    {
                        result = _context.db.Update <ItemPembayaranPiutangProduk>(item, transaction) ? 1 : 0;
                    }

                    // update entity state
                    item.entity_state = EntityState.Unchanged;
                }

                if (!isUpdateFromPenjualan)
                {
                    _context.Commit();
                }

                LogicalThreadContext.Properties["NewValue"] = obj.ToJson();
                _log.Info("Update data");

                result = 1;
            }
            catch (Exception ex)
            {
                _log.Error("Error:", ex);
            }

            return(result);
        }