@Override protected boolean beforeSave(boolean newRecord) { // Validación de campo Value duplicado: no se permiten organizaciones con el mismo código. if (sameColumnValueValidation( get_TableName(), "Value", "AD_Org_ID", getValue(), newRecord, true)) { return false; } // dREHER, agrego validaciones de control de padre/hijo // Pasar a org padre la org de login if (this.getAD_Org_ID() == Env.getAD_Org_ID(getCtx())) { if (this.isSummary()) { // log.warning("No se puede convertir a organizacion 'Padre' la organizacion de login!"); log.saveError( "SaveError", Msg.translate( Env.getCtx(), "No se puede convertir a organizacion 'Padre' la organizacion de login!")); return false; } } if (!newRecord && is_ValueChanged("IsSummary")) { // Pasar a org Padre una org con documentos asociados if (isSummary()) { List<String> documentTableNames = new ArrayList<String>(); documentTableNames.add(X_C_Order.Table_Name); documentTableNames.add(X_C_Invoice.Table_Name); documentTableNames.add(X_C_Payment.Table_Name); documentTableNames.add(X_M_InOut.Table_Name); documentTableNames.add(X_M_Warehouse.Table_Name); boolean poseeDocumentos = false; for (int i = 0; i < documentTableNames.size() && !poseeDocumentos; i++) { poseeDocumentos = PO.existRecordFor( getCtx(), documentTableNames.get(i), "ad_org_id = ?", new Object[] {getAD_Org_ID()}, get_TrxName()); } if (poseeDocumentos) { log.saveError( "SaveError", Msg.translate( Env.getCtx(), "No se puede convertir a organizacion 'Padre' una organizacion que contiene documentos asociados!")); return false; } } else { // Pasar a org hija una org padre que ya contiene hijas ArrayList<MOrg> hijas = this.getOrgsChilds(); if (hijas.size() > 0) { log.saveError( "SaveError", Msg.translate( Env.getCtx(), "No se puede convertir a organizacion 'Hija' una organizacion que ya contiene organizaciones 'hijas!'")); return false; } } } return true; }