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; }