Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }