/// <summary> /// Add a new entry to the TicketRefund table /// </summary> public static TicketRefund Add(YearId ticketPrimaryKey, int employeeId, int registerDrawerId, double amount, TicketRefundType refundType) { TicketRefund result = null; DateTime refundTime = DateTime.Now; SqlConnection cn = GetConnection(); string cmd = "AddTicketRefund"; using (SqlCommand sqlCmd = new SqlCommand(cmd, cn)) { sqlCmd.CommandType = CommandType.StoredProcedure; BuildSqlParameter(sqlCmd, "@TicketRefundYear", SqlDbType.SmallInt, ticketPrimaryKey.Year); BuildSqlParameter(sqlCmd, "@TicketRefundEmployeeId", SqlDbType.Int, employeeId); BuildSqlParameter(sqlCmd, "@TicketRefundTicketId", SqlDbType.Int, ticketPrimaryKey.Id); BuildSqlParameter(sqlCmd, "@TicketRefundRegisterDrawerId", SqlDbType.Int, registerDrawerId); BuildSqlParameter(sqlCmd, "@TicketRefundDate", SqlDbType.DateTime, refundTime); BuildSqlParameter(sqlCmd, "@TicketRefundAmount", SqlDbType.Float, amount); BuildSqlParameter(sqlCmd, "@TicketRefundStatus", SqlDbType.TinyInt, refundType); BuildSqlParameter(sqlCmd, "@TicketRefundId", SqlDbType.Int, ParameterDirection.ReturnValue); if (sqlCmd.ExecuteNonQuery() > 0) { result = new TicketRefund( new YearId(ticketPrimaryKey.Year, Convert.ToInt32(sqlCmd.Parameters["@TicketRefundId"].Value)), employeeId, ticketPrimaryKey.Id, registerDrawerId, refundTime, amount, refundType); } } FinishedWithConnection(cn); return(result); }
private TicketRefund(YearId primaryKey, int employeeId, int ticketId, int registerDrawerId, DateTime when, double amount, TicketRefundType refundType) { PrimaryKey = primaryKey; EmployeeId = employeeId; TicketId = ticketId; RegisterDrawerId = registerDrawerId; When = when; Amount = amount; Type = refundType; }
private static double RefundTicket(Ticket selectedTicket, TicketRefundType refundType) { double sumOfPayments = TicketPayment.GetAll(selectedTicket.PrimaryKey) .Sum(payment => payment.Amount); // Don't refund money for items that were already returned sumOfPayments = TicketItemReturn.GetAllForTicket(selectedTicket.PrimaryKey) .Aggregate(sumOfPayments, (current, ticketItemReturn) => current - ticketItemReturn.Amount); RegisterManager.ActiveRegisterDrawer.RemoveFromCurrentAmount(sumOfPayments); TicketPayment.DeleteAll(selectedTicket.PrimaryKey); TicketRefund.Add(selectedTicket.PrimaryKey, SessionManager.ActiveEmployee.Id, RegisterManager.ActiveRegisterDrawer.Id, sumOfPayments, refundType); return(sumOfPayments); }
public static double RefundTicketCommand(Ticket selectedTicket, TicketRefundType refundType) { double refundAmount = RefundTicket(selectedTicket, refundType); if (refundType == TicketRefundType.Reopened) { selectedTicket.SetCloseTime(null); selectedTicket.Update(); } else if (refundType == TicketRefundType.CancelMade) { CancelTicket(selectedTicket, true); } else if (refundType == TicketRefundType.CancelUnmade) { CancelTicket(selectedTicket, false); } else if (refundType == TicketRefundType.Void) { VoidTicket(selectedTicket); } return(refundAmount); }