function add($id, $nombre, $copiarde = false)
 {
     $copiarde = setNoMenorQueCero($copiarde);
     $xP = new cCreditos_tipoconvenio();
     if ($copiarde > 0) {
         $xP->setData($xP->query()->initByID($copiarde));
     }
     $xP->idcreditos_tipoconvenio($id);
     $xP->tipo_convenio($id);
     $xP->descripcion_tipoconvenio($nombre);
     $xP->descripcion_completa($nombre);
     $id = $xP->query()->insert()->save();
     if ($id === false) {
         $this->mMessages .= "ERROR\tError al agregar el Producto {$id} con nombre {$nombre}, clonado de {$copiarde} \r\n";
     } else {
         $this->mMessages .= "OK\tAgregado el Producto {$id} con nombre {$nombre}, clonado de {$copiarde} \r\n";
     }
     return $id === false ? false : true;
 }
     $xFRM->OText("leyenda_docto_autorizacion", $xTabla->leyenda_docto_autorizacion()->v(), "TR.leyenda del Documento de autorizacion");
     break;
 case "codigo":
     $xFRM->OTextArea("code_valoracion_javascript", $xTabla->code_valoracion_javascript()->v(), "TR.code valoracion javascript");
     $xFRM->OTextArea("php_monto_maximo", $xTabla->php_monto_maximo()->v(), "TR.php monto maximo");
     $xFRM->OTextArea("valoracion_php", $xTabla->valoracion_php()->v(), "TR.valoracion php");
     $xFRM->OTextArea("pos_modificador_de_interes", $xTabla->pos_modificador_de_interes()->v(), "TR.pos modificador de interes");
     $xFRM->OTextArea("pre_modificador_de_autorizacion", $xTabla->pre_modificador_de_autorizacion()->v(), "TR.pre modificador de autorizacion");
     $xFRM->OTextArea("pre_modificador_de_interes", $xTabla->pre_modificador_de_interes()->v(), "TR.pre modificador de interes");
     $xFRM->OTextArea("pre_modificador_de_ministracion", $xTabla->pre_modificador_de_ministracion()->v(), "TR.pre modificador de ministracion");
     $xFRM->OTextArea("pre_modificador_de_solicitud", $xTabla->pre_modificador_de_solicitud()->v(), "TR.pre modificador de solicitud");
     $xFRM->OTextArea("pre_modificador_de_vencimiento", $xTabla->pre_modificador_de_vencimiento()->v(), "TR.pre modificador de vencimiento");
     break;
 default:
     $xFRM->OText("descripcion_tipoconvenio", $xTabla->descripcion_tipoconvenio()->v(), "TR.Nombre");
     $xFRM->OText("descripcion_completa", $xTabla->descripcion_completa()->v(), "TR.descripcion completa");
     $xFRM->OSelect("estatus", $xTabla->estatus()->v(), "TR.Estado Actual del Producto", array("baja" => "BAJA", "activo" => "ACTIVO"));
     $xFRM->OSelect("tipo_de_convenio", $xTabla->tipo_de_convenio()->v(), "TR.tipo de agrupacion", array("1" => "INDIVIDUAL", "3" => "GRUPAL"));
     $d2 = $ql->getArrayRecord("SELECT * FROM creditos_modalidades");
     $xFRM->OSelect("tipo_de_credito", $xTabla->tipo_de_credito()->v(), "TR.Clasificacion Legal", $d2);
     //$xFRM->OMoneda("tipo_de_credito", $xTabla->tipo_de_credito()->v(), "TR.Clasificacion Legal");
     $xFRM->OSelect("tipo_de_integracion", $xTabla->tipo_de_integracion()->v(), "TR.tipo de integracion", array("1" => "INDIVIDUAL", "3" => "GRUPAL"));
     $xFRM->OMoneda("tipo_de_interes", $xTabla->tipo_de_interes()->v(), "TR.tipo de interes");
     $xFRM->OMoneda("perfil_de_interes", $xTabla->perfil_de_interes()->v(), "TR.perfil de interes");
     $d5 = $ql->getArrayRecord("SELECT * FROM `creditos_periocidadpagos` ");
     $xFRM->OSelect("tipo_de_periocidad_preferente", $xTabla->tipo_de_periocidad_preferente()->v(), "TR.tipo de periocidad preferente", $d5);
     $f1 = array(CREDITO_PRODUCTO_NOMINA => "NOMINA", CREDITO_PRODUCTO_INDIVIDUAL => "INDIVIDUAL", CREDITO_PRODUCTO_GRUPOS => "GRUPO");
     $xFRM->OSelect("tipo_en_sistema", $xTabla->tipo_en_sistema()->v(), "TR.tipo en sistema", $f1);
     $xFRM->OText("clave_de_tipo_de_producto", $xTabla->clave_de_tipo_de_producto()->v(), "TR.clave de tipo de producto en SIC");
     $xFRM->OText("path_del_contrato", $xTabla->path_del_contrato()->v(), "TR.URl relativa del path contrato");
     $xFRM->OMoneda("codigo_de_contrato", $xTabla->codigo_de_contrato()->v(), "TR.Numero de formato en el sistema");