Example #1
0
  @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;
  }