public void saleTicket(Ticket ticket) {
    if (ticket == null) {
      throw new CashOfficeManipulationException("Cannot sale NULL ticket");
    }
    if (ticket.getStatus() == TicketStatus.NOT_FOR_SALE || ticket.getStatus() == TicketStatus.SOLD) {
      throw new CashOfficeManipulationException("Cannot sale ticket with status 'NOT FOR SALE' or 'SOLD'");
    }
    ticket.changeStatus(TicketStatus.SOLD);
    if ( !exists(ticket)) {
      addTicket(ticket);
    }

  }