Example #1
0
  public boolean voidIt() {
    String error = null;
    MBoletaDepositoLine[] lines = getLines();

    for (MBoletaDepositoLine line : lines) {
      // Se anulan el cheque Contra-Movimiento generado a partir
      // del Cheque original asociado a la línea.
      MPayment reversalCheck = line.getReversalPayment();
      // Se cambia el estado para que el engine permita Anular (si está en Closed no
      // permite la anulación)
      reversalCheck.setDocStatus(MPayment.STATUS_Completed);
      // Se anula el cheque.
      if (!reversalCheck.processIt(MPayment.ACTION_Void)) {
        error = reversalCheck.getProcessMsg();
      } else if (!reversalCheck.save()) {
        error = CLogger.retrieveErrorAsString();
      }
      // Si ocurrió algún error se cancela la operación
      if (error != null) {
        m_processMsg = "@ReversalCheckVoidError@ (" + reversalCheck.getDocumentNo() + "): " + error;
        return false;
      }
      // Si al completar la boleta se generó un cheque entrante a la cuenta
      // destino a partir del cheque original, entonces se anula también
      // este cheque generado.
      if (isDocumentForEachCheck() && line.getC_Depo_Payment_ID() > 0) {
        MPayment depoCheck = line.getDepoPayment();
        // Se cambia el estado para que el engine permita Anular (si está en Closed no
        // permite la anulación)
        depoCheck.setDocStatus(MPayment.DOCSTATUS_Completed);
        if (!depoCheck.processIt(MPayment.ACTION_Void)) {
          error = depoCheck.getProcessMsg();
        } else if (!depoCheck.save()) {
          error = CLogger.retrieveErrorAsString();
        }
        // Si ocurrió algún error se cancela la operación
        if (error != null) {
          m_processMsg =
              "@IncomeBoletaCheckVoidError@ (" + depoCheck.getDocumentNo() + "): " + error;
          return false;
        }
      }

      // Se libera el cheque original para que pueda ser depositado
      // en otra boleta.
      MPayment originalCheck = line.getPayment();
      originalCheck.setM_BoletaDeposito_ID(0);
      originalCheck.setDocStatus(MPayment.DOCSTATUS_Completed);
      originalCheck.setDocAction(MPayment.DOCACTION_Close);
      clearDepositedDescription(originalCheck);
      if (!originalCheck.save()) {
        error = CLogger.retrieveErrorAsString();
        m_processMsg = "@OriginalCheckFreeError@ (" + originalCheck.getDocumentNo() + "): " + error;
        return false;
      }
    }

    // Si la acción al completar fue crear un documento por el total de la boleta
    // entonces se anula también este documento.
    if (isDocumentForBoleta() && getC_Boleta_Payment_ID() > 0) {
      MPayment boletaPayment = getBoletaPayment();
      if (!boletaPayment.processIt(MPayment.ACTION_Void)) {
        error = boletaPayment.getProcessMsg();
      } else if (!boletaPayment.save()) {
        error = CLogger.retrieveErrorAsString();
      }
      // Si ocurrió algún error se cancela la operación
      if (error != null) {
        m_processMsg =
            "@DocumentForBoletaVoidError@ (" + boletaPayment.getDocumentNo() + "): " + error;
        return false;
      }
    }

    setDocAction(ACTION_None);
    return true;
  }