|
var CONTROL=true; |
|
var alertas = new Object; |
|
alertas.CBcheckBox = {cMsg: "No volver a mostrar este aviso",bAfterValue: false}; |
|
var mostrarAvisoCB = false; |
|
|
|
asistenteYmodelo(); |
|
actualizaContadores(); |
|
|
|
function actualizaContadores(){ |
|
if(this.getField("contador") != null){ |
|
this.getField("contador.campos_dato").value = indiceMax("dato" )+1; |
|
this.getField("contador.campos_nif" ).value = indiceMax("dato.nif")+1; |
|
var cuenta=false; |
|
var maxEnt=indiceMax("dato.entidad" ); |
|
var maxOfi=indiceMax("dato.sucursal"); |
|
var maxDC =indiceMax("dato.dc" ); |
|
var maxCod=indiceMax("dato.cuenta" ); |
|
if (maxCod != maxEnt || maxCod != maxOfi || maxCod != maxDC) |
|
app.alert("Falta algún campo en algún grupo de cuenta corriente.",1); |
|
else |
|
this.getField("contador.campos_ccc").value = maxCod + 1; |
|
var maxDia =indiceMax("dato.dia" ); |
|
var maxMes =indiceMax("dato.mes" ); |
|
var maxAnyo=indiceMax("dato.anyo" ); |
|
var maxBot =indiceMax("dato.fecha"); |
|
if (maxDia != maxMes || maxDia != maxAnyo || maxDia != maxBot) |
|
app.alert("Falta algún campo en algún grupo de fecha.",1); |
|
else |
|
this.getField("contador.campos_fecha").value = maxDia +1;} |
|
else |
|
elAsistente.creaContadores();} |
|
|
|
function indiceMax(nombreCampo){ |
|
var mayor = 0; |
|
if (this.getField(nombreCampo) != null){ |
|
var campos = this.getField(nombreCampo).getArray(); |
|
var listaIndices = ""; |
|
var elNombre, indice, lista; |
|
|
|
if(isNaN(campos)){ |
|
for (var a = 0; a<campos.length; a++){ |
|
elNombre = campos[a].name.split("."); |
|
indice = elNombre[elNombre.length-1]; |
|
listaIndices += isNaN(indice) ? "" : indice + "|";} |
|
lista = listaIndices.split("|"); |
|
for (a = 0; a<lista.length; a++) |
|
mayor = (mayor > Number(lista[a])) ? mayor : Number(lista[a]);} |
|
else{ |
|
elNombre = campos[a].name.split("."); |
|
mayor = Number(elNombre[elNombre.length-1])}} |
|
return mayor;} |
|
|
|
|
|
function coordenadasXY(){ |
|
var coord = new Array(4); |
|
var x0 = this.viewState.toSource().split(",")[7].substr(11); |
|
var y0 = this.viewState.toSource().split(",")[8].substr(11); |
|
var zoom = this.viewState.toSource().split(",")[9].substr(14); |
|
coord[0] = -x0/zoom + 295; |
|
coord[1] = -y0/zoom + 715; |
|
coord[2] = coord[0] + 90; //385 |
|
coord[3] = coord[1] - 15; //700 |
|
return coord;} |
|
|
|
function pintaCampoGenerico(){ |
|
try{ |
|
app.execMenuItem("AuthoringMenuItem"); |
|
var campos_dato = this.getField("contador.campos_dato").value; |
|
var nombre = "dato." + campos_dato; |
|
var nuevoCampo = this.addField(nombre,"text",this.pageNum,coordenadasXY()); |
|
estiloDatos(nombre); |
|
this.getField("contador.campos_dato").value = campos_dato + 1;} |
|
catch(elError){ |
|
elAsistente.escribeErrorConsola(" al pintar un campo de texto genérico en el documento:\n Página: " + this.pageNum + ".\n Nombre de campo: dato." + campos_dato, elError);}} |
|
|
|
function pintaCampoNIF(){ |
|
try{ |
|
app.execMenuItem("AuthoringMenuItem"); |
|
var campos_nif = this.getField("contador.campos_nif").value; |
|
var nombreCampo = "dato.nif." + campos_nif; |
|
var nuevoCampo = this.addField(nombreCampo,"text",this.pageNum,coordenadasXY()); |
|
nuevoCampo.setAction("OnBlur", "verificaNIF(event.target);"); |
|
estiloDatos(nombreCampo); |
|
this.getField("contador.campos_nif").value = campos_nif + 1;} |
|
catch(elError){ |
|
elAsistente.escribeErrorConsola(" al pintar un campo de NIF en el documento:\n Página: " + this.pageNum + ".\n Nombre de campo: " + nombreCampo, elError);}} |
|
|
|
function pintaCampoCCC(){ |
|
try{ |
|
app.execMenuItem("AuthoringMenuItem"); |
|
var y = this.viewState.toSource().split(",")[8].substr(11); |
|
var campos_ccc = this.getField("contador.campos_ccc").value; |
|
var coord = coordenadasXY(); |
|
var coordEnt = new Array(coord[0], coord[1], coord[2]-50, coord[3]); |
|
var coordOfi = new Array(coord[0]+42, coord[1], coord[2]-8 , coord[3]); |
|
var coordDC = new Array(coord[0]+84, coord[1], coord[2]+14, coord[3]); |
|
var coordCod = new Array(coord[0]+106, coord[1], coord[2]+124, coord[3]); |
|
var nombreCampoEnt = "dato.entidad." + campos_ccc; |
|
var nombreCampoOfi = "dato.sucursal." + campos_ccc; |
|
var nombreCampoDC = "dato.dc." + campos_ccc; |
|
var nombreCampoCod = "dato.cuenta." + campos_ccc; |
|
var nuevoCampoEnt = this.addField(nombreCampoEnt,"text",this.pageNum,coordEnt); |
|
var nuevoCampoOfi = this.addField(nombreCampoOfi,"text",this.pageNum,coordOfi); |
|
var nuevoCampoDC = this.addField(nombreCampoDC, "text",this.pageNum,coordDC); |
|
var nuevoCampoCod = this.addField(nombreCampoCod,"text",this.pageNum,coordCod); |
|
estiloDatos(nombreCampoEnt); |
|
nuevoCampoEnt.charLimit = 4; //Tamaño máximo para el campo Entidad |
|
estiloDatos(nombreCampoOfi); |
|
nuevoCampoOfi.charLimit = 4; //Tamaño máximo para el campo Oficina |
|
estiloDatos(nombreCampoDC); |
|
nuevoCampoDC.charLimit = 2; //Tamaño máximo para el campo DC |
|
estiloDatos(nombreCampoCod); |
|
nuevoCampoCod.charLimit = 10;//Tamaño máximo para el campo Código de cuenta |
|
nuevoCampoCod.setAction("OnBlur", "validaCCC(event.target);"); |
|
this.getField("contador.campos_ccc").value = campos_ccc + 1;} |
|
catch(elError){ |
|
elAsistente.escribeErrorConsola(" al pintar los campos correspondientes a una CCC en el documento:\n Página: " + this.pageNum + ".\n Nombres de campos: " + nombreCampoEnt + ", " + nombreCampoOfi + ", " + nombreCampoDC + ", " + nombreCampoCod, elError);} |
|
} |
|
|
|
function pintaCampoVer(){ |
|
try{ |
|
app.execMenuItem("AuthoringMenuItem"); |
|
var campos_verificacion = this.getField("contador.campos_dato").value; |
|
var coordVer = coordenadasXY(); |
|
coordVer[2]=coordVer[0]+15; |
|
coordVer[3]=coordVer[1]+15; |
|
var nuevoCampo = this.addField("dato." + campos_verificacion,"checkbox",this.pageNum,coordVer); |
|
nuevoCampo.delay = true; |
|
nuevoCampo.style = style.cr; |
|
nuevoCampo.textColor = color.blue; |
|
nuevoCampo.fillColor = color.white; |
|
nuevoCampo.delay = false; |
|
this.getField("contador.campos_dato").value = campos_verificacion + 1;} |
|
catch(elError){ |
|
elAsistente.escribeErrorConsola(" al pintar una casilla de verificación en el documento:\n Página: " + this.pageNum + ".\n Nombre de campo: dato." + campos_verificacion, elError);}} |
|
|
|
function pintaCampoCB(){ |
|
try{ |
|
app.execMenuItem("AuthoringMenuItem"); |
|
var nombrecod="CodBar.Cod"; |
|
var nombrenum="CodBar.Num"; |
|
var pintaCB=true; |
|
var poscod=new Array (334,783,485,755); |
|
var posnum=new Array (354,795,467,779); |
|
|
|
campo1=this.addField(nombrecod,"text",this.pageNum,poscod); |
|
campo1.delay=true; |
|
campo1.display=display.visible; |
|
campo1.readonly=true; |
|
campo1.textColor=color.black; |
|
if (!fuenteCB(campo1,"ArialATCB") && !fuenteCB(campo1,"ArialAT")){ |
|
pintaCB=false; |
|
if(!mostrarAvisoCB){ |
|
app.alert({ |
|
cMsg: "La fuente de Código de Barras de la AEAT no está instalada en\nel Sistema. No se puede crear un campo de Código de Barras sin\ndicha fuente. Por favor, cierre Acrobat, instale la fuente y\nreabra Acrobat.", |
|
nIcon: 1, |
|
cTitle: "Falta fuente de Código de Barras", |
|
oCheckbox: alertas.CBcheckBox}); |
|
mostrarAvisoCB = alertas.CBcheckBox.bAfterValue;}} |
|
campo1.alignment="center"; |
|
campo1.userName="Código de barras"; |
|
campo1.delay=false; |
|
if(!pintaCB) this.removeField(nombrecod); |
|
|
|
campo2=this.addField(nombrenum,"text",this.pageNum,posnum); |
|
campo2.delay=true; |
|
campo2.display=display.visible; |
|
campo2.readonly=true; |
|
campo2.textColor=color.black; |
|
campo2.textFont=font.Helv; |
|
campo2.alignment="center"; |
|
campo2.userName="Código de documento"; |
|
campo2.delay=false;} |
|
catch(elError){ |
|
elAsistente.escribeErrorConsola(" al pintar los campos de Código de Barras en el documento:\n Página: " + this.pageNum + ".\n Nombre de campo: CodBar.Cod y CodBar.Num", elError);}} |
|
|
|
function fuenteCB(campo,laFuente){ |
|
try{ |
|
campo.textFont=laFuente; |
|
return true; |
|
} catch(e){ |
|
if (e.name=="InvalidSetError") |
|
return false;}} |
|
|
|
function pintaFecha(){ |
|
try{ |
|
app.execMenuItem("AuthoringMenuItem"); |
|
var campos_fecha = this.getField("contador.campos_fecha").value; |
|
var meses = " ,enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre"; |
|
var coord = coordenadasXY(); |
|
var posDia = new Array(coord[0]-90, coord[1], coord[2]-135, coord[3]); |
|
var posMes = new Array(coord[0]-5, coord[1], coord[2]-15, coord[3]); |
|
var posAnyo = new Array(coord[0]+100, coord[1], coord[2]+55, coord[3]); |
|
var posBot = new Array(coord[0]+150, coord[1], coord[2]+120, coord[3]); |
|
var elDia = this.addField("dato.dia." + campos_fecha,"text",this.pageNum,posDia); |
|
var elMes = this.addField("dato.mes." + campos_fecha,"combobox",this.pageNum,posMes); |
|
var elAnyo = this.addField("dato.anyo." + campos_fecha,"text",this.pageNum,posAnyo); |
|
var elBot = this.addField("dato.fecha." + campos_fecha,"button",this.pageNum,posBot); |
|
estiloDatos(elDia.name); |
|
estiloDatos(elMes.name); |
|
estiloDatos(elAnyo.name); |
|
elMes.delay = true; |
|
elMes.setItems(meses.split(",")); |
|
elMes.editable = true; |
|
elMes.delay = false; |
|
elAnyo.setAction("OnBlur","compruebaFecha(event.target);"); |
|
|
|
elBot.delay = true; |
|
elBot.display = display.visible; |
|
elBot.buttonSetCaption("Fecha actual"); |
|
elBot.strokeColor = color.black; |
|
elBot.textColor = color.black; |
|
elBot.fillColor = ["RGB",.5,1,.5]; |
|
elBot.setAction("MouseUp","fecha(event.target);"); |
|
elBot.delay = false; |
|
this.getField("contador.campos_fecha").value = campos_fecha + 1;} |
|
catch(elError){ |
|
elAsistente.escribeErrorConsola(" al pintar los campos de Fecha en el documento:\n Página: " + this.pageNum + ".\n Nombre de campo: dato.dia." + campos_fecha + ", dato.mes." + campos_fecha + ", dato.anyo." + campos_fecha, elError);}} |
|
|
|
function estiloDatos(suNombre){ |
|
var elCampo = this.getField(suNombre); |
|
elCampo.delay = true; |
|
elCampo.textSize = 9; |
|
elCampo.textColor = color.blue; |
|
elCampo.textFont = font.Helv; |
|
elCampo.fillColor = color.white; |
|
elCampo.delay = false;} |
|
|
|
function numCamposModelo(){ |
|
var parte,cual,nPartes; |
|
var indiceError = 0; |
|
var elDialogo; |
|
var rechazados, nombreCampo, raiz, a, b, respuesta; |
|
|
|
var permitidos = new Array ("dato", "CodBar", "dato.nif", "dato.entidad", "dato.sucursal", "dato.dc", "dato.cuenta", "texto", "textofijo", "textoPie", "CodBar.Cod", "CodBar.Num","contador", "acc", "bot", "oculta", "inst"); |
|
|
|
var nTipos = permitidos.length; |
|
|
|
//Busco y cuento los campos normalizados y borro los no normalizados |
|
var laFamilia = familias(); |
|
for (a=0; a < laFamilia.length; a++){ |
|
// Detecto los campos no normalizados |
|
valido = false; |
|
for (b = 0; b < nTipos; b++) |
|
if (laFamilia[a] == permitidos[b]) |
|
valido = true; |
|
if (!valido){ |
|
elDialogo = { |
|
initialize: function(dialog){ |
|
// Se pone uno de los radiobutton activo y se le da un valor por defecto |
|
dialog.load({"rd01": true, |
|
"nCam": "dato." + laFamilia[a]}); |
|
dialog.enable({"nCam": false});}, |
|
commit: function(dialog){ |
|
// Cuando se presiona "Ok", se ejecuta primero esto |
|
var resultados = dialog.store(); |
|
//app.alert("Resultados: " + resultados); |
|
var cual = this.accionElegida(resultados); |
|
if (cual == 2) |
|
this.removeField(parte[0]); |
|
if (cual == 3) |
|
renombrarCampos(parte[0],resultados["nCam"]);}, |
|
accionElegida: function (resultados){ |
|
var campo; |
|
for ( var i=1; i<=6; i++) { |
|
if ( resultados["rd0" + i] ) { |
|
switch (i) { |
|
case 1: |
|
campo = 1; |
|
break; |
|
case 2: |
|
campo = 2; |
|
break; |
|
case 3: |
|
campo = 3;}}} |
|
return campo;}, |
|
ok: function(dialog) { |
|
// Esto lo hace tras presionar el botón Ok, después del "commit" |
|
}, |
|
cancel: function(dialog) { |
|
// Cuando presiona el botón Cancel |
|
return;}, |
|
rd01: function(dialog){ //Procesa rd01 |
|
dialog.enable({ "nCam" : false});}, |
|
rd02: function(dialog){ //Procesa rd02 |
|
dialog.enable({ "nCam" : false});}, |
|
rd03: function(dialog){ //Procesa rd03 |
|
dialog.enable({ "nCam" : true});}, |
|
|
|
// Descripción del diálogo |
|
description: |
|
{ |
|
name: "Campo no normalizado", |
|
elements:[ |
|
{ |
|
type: "view", |
|
align_children: "align_left", |
|
elements:[ |
|
{ |
|
type: "static_text", |
|
name: "Se ha encontrado una familia de campos no normalizada: \"" + laFamilia[a] + "\".", |
|
bold: true, |
|
font: "dialog", |
|
char_width: 40, |
|
height: 30 |
|
}, |
|
{ |
|
type: "cluster", |
|
name: "Acciones posibles:", |
|
align_children: "align_row", |
|
elements:[ |
|
{ |
|
type: "view", |
|
align_children: "align_left", |
|
elements:[ |
|
{ |
|
type: "radio", |
|
item_id: "rd01", |
|
group_id: "rado", |
|
name: "Ignorar", |
|
}, |
|
{ |
|
type: "radio", |
|
item_id: "rd02", |
|
group_id: "rado", |
|
name: "Eliminar familia \"" + laFamilia[a] + "\"", |
|
}, |
|
{ |
|
type: "view", |
|
align_children: "align_row", |
|
elements:[ |
|
{ |
|
type: "radio", |
|
item_id: "rd03", |
|
group_id: "rado", |
|
name: "Renombrar familia:" |
|
}, |
|
{ |
|
type: "edit_text", |
|
item_id: "nCam", |
|
char_width: 15 |
|
} |
|
] |
|
} |
|
] |
|
} |
|
] |
|
}, |
|
{ |
|
type: "ok_cancel", |
|
ok_name: "Aceptar", |
|
cancel_name: "Cancelar" |
|
} |
|
] |
|
} |
|
] |
|
} |
|
}; |
|
var retn = app.execDialog(elDialogo);}}} |
|
|
|
function familias(){ |
|
var a, b; |
|
var nueva; |
|
var estaFamilia,familias,lasFamilias; |
|
familias = ""; |
|
for (a=0; a < this.numFields; a++){ |
|
estaFamilia = this.getNthFieldName(a).split(".")[0]; |
|
if (familias == "") familias = estaFamilia + "|"; |
|
else { |
|
lasFamilias = familias.split("|"); |
|
nueva = true; |
|
for (b=0; b<lasFamilias.length-1; b++) |
|
if (estaFamilia == lasFamilias[b]) nueva = false; |
|
if (nueva) familias += estaFamilia + "|";}} |
|
return familias.substring(0,familias.length-1).split("|");} |
|
|
|
function renombra(){ |
|
var origen,destino,accion; |
|
origen = app.response({ |
|
cQuestion: "RENOMBRADO DE CAMPOS [Paso 1]\nTeclee la raiz de la familia de campos a renombrar.", |
|
cTitle: "Renombrar campos (Paso 1)", |
|
cLabel: "Raiz origen:", |
|
cDefault: this.getNthFieldName(0).split('.')[0] |
|
}).replace(/[^a-zA-Z0-9.]/g,''); |
|
if (origen == null || origen == ""){ |
|
if(app.alert("No ha indicado ninguna familia de campos <<origen>>.\n¿Desea cancelar esta acción?",2,2)==4) |
|
return; |
|
else |
|
renombra();} |
|
else{ |
|
destino = app.response({ |
|
cQuestion: "RENOMBRADO DE CAMPOS [Paso 2]\nTeclee la raiz de la familia que quiere dar a la familia " + origen + ".", |
|
cTitle: "Renombrar campos (Paso 2)", |
|
cLabel: "Raiz destino:", |
|
cDefault: origen |
|
}).replace(/[^a-zA-Z0-9.]/g,''); |
|
if(destino == null || destino == ""){ |
|
if (app.alert("No ha indicado ninguna familia de campos <<destino>>.\n¿Desea cancelar esta acción?",2,2)==4) |
|
return; |
|
else |
|
renombra();} |
|
else{ |
|
accion = app.alert("Se va a proceder a renombrar la familia\n\torigen \"" + origen + "\"\ncon la familia\n\tdestino \"" + destino + "\".",3,3); |
|
switch(accion){ |
|
case 4: //Sí |
|
renombrarCampos(origen,destino); |
|
break; |
|
case 3: //No |
|
renombra(); |
|
break; |
|
default: //Cancelar |
|
return;}}}} |
|
|
|
function insertaCopias(){ |
|
var origen,destino,accion; |
|
|
|
origen = this.pageNum; |
|
destino = (origen == this.numPages-1) ? "" : (origen+2) |
|
destino = app.response({ |
|
cQuestion: "INSERCIÓN DE CAMPOS COPIA\nTeclee los números de páginas (separadas por comas) donde quiera insertar los campos copia procedentes de esta página.", |
|
cTitle: "Inserción de campos copia", |
|
cLabel: "Página/s:", |
|
cDefault: destino |
|
}).replace(/[^0-9,]/g,''); |
|
if(destino == null || destino == ""){ |
|
if (app.alert("No ha indicado ninguna página donde insertar los campos.\n¿Desea cancelar esta acción?",2,2)==4) |
|
return; |
|
else |
|
insertaCopias();} |
|
else{ |
|
accion = app.alert("Se va a proceder a insertar los campos copia en la/s página/s " + destino + ".",3,3); |
|
switch(accion){ |
|
case 4: //Sí |
|
copiaCampos(origen,destino); |
|
break; |
|
case 3: //No |
|
insertaCopias(); |
|
break; |
|
default: //Cancelar |
|
return;}}} |
|
|
|
function listaCamposDato(){ |
|
var nombresCampos = ""; |
|
if (this.getField("dato")!=null){ |
|
var losCamposDato = this.getField("dato").getArray(); |
|
console.println("Hay " + losCamposDato.length + " campos DATO"); |
|
|
|
for (var a=0; a<losCamposDato.length; a++) |
|
nombresCampos += losCamposDato[a].name + ","; |
|
nombresCampos = nombresCampos.replace(/dato\.(?:a\.)?(?:\w*\.)\d+/gi,'').replace(/,+/g,',').replace(/^,/,'').replace(/,$/,'').split(','); |
|
console.println("Los campos encontrados son " + nombresCampos); |
|
losCamposDato = new Array (nombresCampos.length); |
|
for (a=0; a<nombresCampos.length; a++) |
|
losCamposDato[a] = this.getField(nombresCampos[a]); |
|
return losCamposDato;} |
|
else return null;} |
|
|
|
function renumerarCampos(nombreCampo,contador){ |
|
var losCampos; |
|
var cuantos, cuantosAhora; |
|
var elNuevo, losNuevos, losIndices, losNuevosIndices, a, b; |
|
|
|
if(this.getField(nombreCampo) != null){ |
|
if (nombreCampo == "dato") |
|
losCampos = listaCamposDato(); |
|
else |
|
losCampos = this.getField(nombreCampo + ".").getArray(); |
|
cuantos = losCampos.length; |
|
losIndices = new Array (cuantos); |
|
for (a = 0; a < cuantos; a++) |
|
losIndices[a] = indiceCampo(losCampos[a]); |
|
losIndices = quicksort(losIndices); |
|
console.println("Los índices son: " + losIndices); |
|
for (a = 0; a < cuantos; a++) |
|
if (losIndices[a] != (a+1)) |
|
copiaHijos(nombreCampo + "." + losIndices[a], nombreCampo + "." + (a+1)); |
|
losNuevos = this.getField(nombreCampo).getArray(); |
|
cuantosAhora = losNuevos.length; |
|
losNuevosIndices = new Array (cuantosAhora); |
|
|
|
this.getField("contador.campos_" + contador).value = cuantos+1; |
|
|
|
for (a = 0; a < cuantosAhora; a++) |
|
losNuevosIndices[a] = indiceCampo(losNuevos[a]); |
|
losNuevosIndices = quicksort(losNuevosIndices); |
|
|
|
for (a = cuantos; a < cuantosAhora; a++) |
|
this.removeField(nombreCampo + "." + losNuevosIndices[a]);}} |
|
|
|
function renumerarCamposCCC(){ |
|
var a, b, exReg, errores = ""; |
|
//Los campos implicados |
|
var campos = new Array("dato.entidad","dato.sucursal","dato.dc","dato.cuenta"); |
|
|
|
//Cargo las listas de campos de cada título en un array |
|
var CCC = new Array(4); |
|
for (a=0; a<4; a++) |
|
CCC[a] = this.getField(campos[a]).getArray(); |
|
|
|
//Guardo el número de campos de cada título en otro array |
|
var nCCC = new Array(4); |
|
for (a=0; a<4; a++) |
|
nCCC[a]=CCC[a].length; |
|
|
|
//Si no tiene el mismo número de elementos cada título, hay un error |
|
if (nCCC.toString().replace(/,/g,'').match(/\d{4}/) != null){ |
|
app.alert("Existen juegos de campos de Código de Cuenta Corriente incompletos\nPor favor, revise los juegos de campos de CCC.",0,0,"ERROR EN CAMPOS CCC"); |
|
app.execMenuItem("ShowHideFields"); //Abre la ventana de navegación de campos |
|
return;} |
|
else{ |
|
//Los cuatro títulos tienen el mismo número de campos. Aparentemente están bien. Ya veremos... |
|
//Extraigo los índices de cada título y los guardo en el array. Luego los ordeno. |
|
for (a=0; a<4; a++){ |
|
for (b=0; b<nCCC[a]; b++){ |
|
exReg = new RegExp(campos[a]+".","i"); |
|
CCC[a][b] = Number(CCC[a][b].name.replace(exReg,''));} |
|
quicksort(CCC[a]);} |
|
|
|
for (a=0; a<nCCC[0]; a++){ |
|
for(b=0; b<4; b++){ |
|
if (CCC[b][a] != CCC[4-b][a]){ |
|
app.alert("Error en el juego de campos de CCC nº " + CCC[b][a],0,0,"ERROR EN JUEGO DE CCC nº " + CCC[b][a]); |
|
errores += CCC[b][a] + ", ";}}} |
|
|
|
//Si hay errores, indico dónde y paro el renumerado |
|
if (errores != ""){ |
|
app.alert("Resumen de juegos de CCC erróneos.\nSe han detectado errores en los juegos de CCC número/s:\n" + errores.slice(0,-2),0,0 + ".","RESUMEN DE JUEGOS DE CCC ERRÓNEOS"); |
|
app.execMenuItem("ShowHideFields"); //Abre la ventana de navegación de campos |
|
return;} |
|
else{//Si no hay errores, indica que los índices son los mismos en todos los títulos: renumero campo por campo |
|
for(a=0; a<4; a++) |
|
renumerarCampos(campos[a],"ccc");}}} |
|
|
|
function renumerarCamposFecha(){ |
|
var a, b, exReg, errores = ""; |
|
//Los campos implicados |
|
var campos = new Array("dato.dia","dato.mes","dato.anyo","dato.fecha"); |
|
|
|
//Cargo las listas de campos de cada título en un array |
|
var fecha = new Array(4); |
|
for (a=0; a<4; a++) |
|
fecha[a] = this.getField(campos[a]).getArray(); |
|
|
|
//Guardo el número de campos de cada título en otro array |
|
var nFecha = new Array(4); |
|
for (a=0; a<4; a++) |
|
nFecha[a]=fecha[a].length; |
|
|
|
//Si no tiene el mismo número de elementos cada título, hay un error |
|
if (nFecha.toString().replace(/,/g,'').match(/\d{4}/) != null){ |
|
app.alert("Existen juegos de campos de Fecha incompletos\nPor favor, revise los juegos de campos de Fecha.",0,0,"ERROR EN CAMPOS FECHA"); |
|
app.execMenuItem("ShowHideFields"); //Abre la ventana de navegación de campos |
|
return;} |
|
else{ |
|
//Los cuatro títulos tienen el mismo número de campos. Aparentemente están bien. Ya veremos... |
|
//Extraigo los índices de cada título y los guardo en el array. Luego los ordeno. |
|
for (a=0; a<4; a++){ |
|
for (b=0; b<nFecha[a]; b++){ |
|
exReg = new RegExp(campos[a]+".","i"); |
|
fecha[a][b] = Number(fecha[a][b].name.replace(exReg,''));} |
|
quicksort(fecha[a]);} |
|
|
|
for (a=0; a<nFecha[0]; a++){ |
|
for(b=0; b<4; b++){ |
|
if (fecha[b][a] != fecha[4-b][a]){ |
|
app.alert("Error en el juego de campos de Fecha nº " + fecha[b][a],0,0,"ERROR EN JUEGO DE FECHA nº " + fecha[b][a]); |
|
errores += fecha[b][a] + ", ";}}} |
|
|
|
//Si hay errores, indico dónde y paro el renumerado |
|
if (errores != ""){ |
|
app.alert("Resumen de juegos de Fecha erróneos.\nSe han detectado errores en los juegos de Fecha número/s:\n" + errores.slice(0,-2),0,0 + ".","RESUMEN DE JUEGOS DE FECHA ERRÓNEOS"); |
|
app.execMenuItem("ShowHideFields"); //Abre la ventana de navegación de campos |
|
return;} |
|
else{//Si no hay errores, indica que los índices son los mismos en todos los títulos: renumero campo por campo |
|
for(a=0; a<4; a++) |
|
renumerarCampos(campos[a],"fecha");}}} |
|
|
|
function renombrarCampos(antiguo,nuevo){ |
|
var nombreAntiguo,nombreNuevo,cuantos; |
|
var original = this.getField(antiguo).getArray(); |
|
cuantos = original.length; |
|
for (var a = 0; a < cuantos; a++){ |
|
nombreAntiguo = original[a].name; |
|
nombreNuevo = nuevo + nombreAntiguo.split(antiguo)[1]; |
|
copiaHijos(nombreAntiguo,nombreNuevo);}} |
|
|
|
//////////////////////////////// |
|
//COPIA CAMPOS A OTRAS PÁGINAS// |
|
//////////////////////////////// |
|
function copiaCampos(origen,destino){ |
|
try{ |
|
var cuantosCampos = this.numFields; |
|
var elCampoOrigen,elCampoDestino,laPagina; |
|
var a,b,c,cual,donde,nombre; |
|
var paginaCorrecta,copiar; |
|
|
|
var tipos,raiz,permitidos,expresion,nombreValido,tipoValido; |
|
|
|
destino = destino.replace(/\s/,"").split(","); |
|
|
|
for (a = 0; a <cuantosCampos; a++){ |
|
cual = this.getNthFieldName(a); |
|
elCampoOrigen = this.getField(cual); |
|
donde = elCampoOrigen.page; |
|
|
|
paginaCorrecta = false; |
|
origen = Number(origen); |
|
|
|
if(isNaN(donde)){ |
|
for (b=0; b < donde.length; b++){ |
|
if(donde[b] == origen) |
|
paginaCorrecta = true;}} |
|
else if(donde == origen) |
|
paginaCorrecta = true; |
|
|
|
tipo = elCampoOrigen.type; |
|
tipos = "checkbox,text,combobox"; |
|
expr = new RegExp(tipo,"i"); |
|
tipoValido = (tipos.match(expr) != null); |
|
|
|
nombre = elCampoOrigen.name; |
|
raiz = nombre.split(".")[0]; |
|
permitidos = "dato,CodBar"; |
|
expr = new RegExp(raiz,"i"); |
|
nombreValido = (permitidos.match(expr) != null); |
|
|
|
if (tipoValido && nombreValido){ |
|
if (paginaCorrecta){ |
|
if (isNaN(destino)){ |
|
for (b=0; b < destino.length; b++){ |
|
copiar = true; |
|
if (isNaN(donde)){ |
|
for (c=0; c < donde.length; c++){ |
|
if (donde[c] != Number(destino[b]-1)){ |
|
elCampoDestino = this.addField(nombre,tipo,Number(destino[b]-1),elCampoOrigen.rect); |
|
copiaPropiedades(elCampoOrigen,elCampoDestino);}}} |
|
else{ |
|
if (donde != Number(destino[b]-1)){ |
|
elCampoDestino = this.addField(nombre,tipo,Number(destino[b]-1),elCampoOrigen.rect); |
|
copiaPropiedades(elCampoOrigen,elCampoDestino);}}}} |
|
else{ |
|
elCampoDestino = this.addField(nombre,tipo,Number(destino-1),elCampoOrigen.rect); |
|
copiaPropiedades(elCampoOrigen,elCampoDestino);}}}}} |
|
catch(e){ |
|
elAsistente.escribeErrorConsola(" copiando las propiedades de los campos.\nError: " + e);}} |
|
|
|
function copiaHijos(elCampoOrigen,elCampoDestino){ |
|
var b=0; |
|
var elNuevo, elAnterior; |
|
while(this.getField(elCampoOrigen + "." + b) != null){ |
|
elAnterior = this.getField(elCampoOrigen + "." + b); |
|
elNuevo = this.addField(elCampoDestino,elAnterior.type,elAnterior.page,elAnterior.rect); |
|
copiaPropiedades(elAnterior,elNuevo); |
|
b++;} |
|
this.removeField(elCampoOrigen);} |
|
|
|
function indiceCampo(elCampo){ |
|
if (elCampo != null){ |
|
var partes = elCampo.name.split("."); |
|
return Number(partes[partes.length-1]);} |
|
else return 0;} |
|
|
|
function copiaPropiedades(antiguo,nuevo){ |
|
try{ |
|
var losElementos,tipo; |
|
|
|
tipo = antiguo.type; |
|
|
|
if (tipo == "checkbox" || tipo == "text" || tipo == "combobox"){ |
|
nuevo.delay = true; |
|
if (antiguo.borderStyle != null && antiguo.borderStyle != "") |
|
nuevo.borderStyle = antiguo.borderStyle; |
|
if (antiguo.fillColor != null && antiguo.fillColor != "") |
|
nuevo.fillColor = antiguo.fillColor; |
|
if (antiguo.lineWidth != null && antiguo.lineWidth != "") |
|
nuevo.lineWidth = antiguo.lineWidth; |
|
if (antiguo.strokeColor != null && antiguo.strokeColor != "") |
|
nuevo.strokeColor = antiguo.strokeColor; |
|
if (antiguo.rotation != null && antiguo.rotation != "") |
|
nuevo.rotation = antiguo.rotation; |
|
if (antiguo.userName != null && antiguo.userName != "") |
|
nuevo.userName = antiguo.userName; |
|
if (antiguo.textColor != null && antiguo.textColor != "") |
|
nuevo.textColor = antiguo.textColor; |
|
nuevo.hidden = antiguo.hidden; |
|
|
|
if (tipo == "checkbox") |
|
nuevo.style = antiguo.style; |
|
else if (tipo == "text" || tipo == "combobox"){ |
|
if (antiguo.defaultValue != null && antiguo.defaultValue != "") |
|
nuevo.defaultValue = antiguo.defaultValue; |
|
if (antiguo.textFont != null && antiguo.textFont != "") |
|
nuevo.textFont = antiguo.textFont; |
|
nuevo.textSize = antiguo.textSize; |
|
if (tipo == "text") { |
|
if (!isNaN(antiguo.charLimit)) |
|
if (antiguo.charLimit > 0) |
|
nuevo.charLimit = antiguo.charLimit; |
|
if (antiguo.richText){ |
|
nuevo.richText = antiguo.richText; |
|
nuevo.richValue = antiguo.richValue;} |
|
else |
|
if (antiguo.value != null && antiguo.value != "") |
|
nuevo.value = antiguo.value; |
|
if (antiguo.alignment != null && antiguo.alignment != "") |
|
nuevo.alignment = antiguo.alignment; |
|
nuevo.alignment = antiguo.alignment; |
|
nuevo.multiline = antiguo.multiline;} |
|
|
|
else if (tipo == "combobox"){ |
|
nuevo.editable = antiguo.editable; |
|
losElementos = new Array(antiguo.numItems); |
|
for (var a=0; a<antiguo.numItems; a++){ |
|
losElementos[a] = antiguo.getItemAt(a); |
|
nuevo.setItems(losElementos);}}} |
|
nuevo.display = antiguo.display; |
|
nuevo.delay = false;}} |
|
catch(e){ |
|
elAsistente.escribeErrorConsola(" copiando las propiedades de los campos.\nError: " + e);}} |
|
|
|
function quicksort(nombres){ |
|
if (nombres.length == 0) |
|
return []; |
|
var izq = new Array(); |
|
var der = new Array(); |
|
var pivot = nombres[0]; |
|
for (var i = 1; i < nombres.length; i++) { |
|
if (nombres[i] < pivot) |
|
izq.push(nombres[i]); |
|
else |
|
der.push(nombres[i]);} |
|
return quicksort(izq).concat(pivot, quicksort(der));} |
|
|