/**
  * Salva a entrada do tipo mensalidade.
  * 
  * Este método é utilzado em conjunto com os métodos que salvam ou removem as mesalidades
  *  - MonthlyPaymentRepository::savePayments
  *  - MonthlyPaymentRepository::deletePayments
  * 
  * @see MonthlyPaymentRepository
  * 
  * @param Connection $conn
  * @param int $monthBalance
  * @param float $value
  */
 public static function insertMonthlyPayment(Connection $conn, $monthBalance, $value)
 {
     $date = date('Y-m-d');
     $description = $value > 0 ? self::MONTHLY_PAYMENT_DESCRIPTION_POSITIVE : self::MONTHLY_PAYMENT_DESCRIPTION_NEGATIVE;
     $conn->insert('cash_flow', ['monthly_balance_id' => $monthBalance, 'cash_flow_type' => CashFlowType::CASH_FLOW_TYPE_MONTHLY_PAYMENT, 'cash_flow_date' => $date, 'cash_flow_amount' => $value, 'cash_flow_description' => $description]);
     MonthlyBalanceRepository::updateMonthlyBalanceRevenue($conn, $monthBalance, $value);
 }
 /**
  * Remove as mesalidades recebidas.
  * 
  * @return JsonModel
  */
 public function deletePaymentsAction()
 {
     $request = $this->getRequest();
     if ($request->isPost()) {
         $payments = (array) $request->getPost()['payments'];
         if (empty($payments)) {
             return new JsonModel(['message' => 'Nenhum pagamento foi selecionado']);
         }
         try {
             $conn = $this->getDbalConnection();
             //busca o mês aberto
             $openedMonth = MonthlyBalanceRepository::getOpenedMonth($conn);
             if ($openedMonth === false) {
                 throw new Exception('Mensalidades são tratadas como receitas. ' . 'Para cadastrar receitas é necessário abrir um mês contábil.');
             }
             MonthlyPaymentRepository::deletePayments($conn, $payments, $openedMonth);
             return new JsonModel(['message' => 'Pagamentos removidos com sucesso', 'callback' => $payments]);
         } catch (Exception $ex) {
             return new JsonModel(['message' => 'Erro ao remover as mesalidades. Erro: ' . $ex->getMessage()]);
         }
     }
     return new JsonModel(['message' => 'Esta url só pode ser acessada via post']);
 }