doom-software.com

Avaliação do site doom-software.com

Facturacion Web

 Gerado a 06 de Abril de 2026 08:36 AM

Estatísticas desatualizadas? ATUALIZE !

O resultado é de 28/100

Conteúdo SEO

Título

Facturacion Web

Cumprimento : 15

Perfeito, o Título contém entre 10 e 70 caracteres.

Descrição

Cumprimento : 0

Mau. Não encontrámos nenhuma Descrição META na sua página.

Palavras-chave

Mau. Não detetámos palavras-chave META na sua página.

Propriedades Og Meta

Esta página não tira vantagens das propriedades Og.

Cabeçalhos

H1 H2 H3 H4 H5 H6
0 10 28 48 6 0
  • [H2] Ooops. !!!! Algo fué mal.
  • [H2] Ooops. !!!! Algo tardo demasiado
  • [H2] Ooops. !!!! Algo fué mal.
  • [H2] Ooops. !!!! Algo fué mal.
  • [H2] Fields
  • [H2] Fields
  • [H2] Fields
  • [H2] Ooops. !!!! Algo tardo demasiado
  • [H2] Ooops. !!!! Algo fué mal.
  • [H2] Ooops. !!!! Algo fué mal.
  • [H3] ' + settings.title + '
  • [H3] Files in folder ( " + data.foldername + " )
  • [H3] '+ ' Files
  • [H3] " + vTitol + "
  • [H3] No Preview avialable
  • [H3] Un error no controlado ha ocurrido.
  • [H3] ${self.options.title}
  • [H3] Un error no controlado ha ocurrido.
  • [H3] Un error no controlado ha ocurrido.
  • [H3] ' + element.value + '
  • [H3] ' + element.value + '
  • [H3] ' + vElement.title + '
  • [H3]
  • [H3] " + data.General.title + "
  • [H3] " + vTitol + "
  • [H3] ' + element.value + '
  • [H3] " + data.General.title + "
  • [H3] " + vTitol + "
  • [H3] " + vTitol + "
  • [H3] ' + settings.print.title + '
  • [H3] ' + settings.print.title + '
  • [H3] ",{class:"box-title",text:op.GroupTitle})) var hBoxTools = $("",{class:"box-tools"}).appendTo(hDivTitle); var hMin = $("",{class:"btn btn-box-tool","data-widget":"collapse"}).appendTo(hBoxTools).append("") .click(function(){ self.DivList.toggle(500); }); var hdivMenus = $("",{style:"display:block",class:"box-body no-padding"}).appendTo(self.DivList); self.DivList = hdivMenus; }// GROUP title // MAIN BUTTON if (self.options.elements.button){ self.MainButton = $.appendE(self.options.elements.button).appendTo(hDiv); }else{ self.MainButton = $("",{class:self.options.ButtonClass,"data-toggle":"dropdown","type":"button","aria-expanded":true}).appendTo(hDiv); } if (self.options.ButtonStyle) {self.MainButton.attr("style",self.options.ButtonStyle)} var BtnTitle = null; if (self.options.title) {BtnTitle = self.options.title + ' '} var hUL = $("",{class:self.options.UlClass}); self.UL = hUL; if (self.options.ulstyle) { hUL.attr("style",self.options.ulstyle) } $.each(this.recordset,function(i,obj){ // console.log(obj) if (obj.icon == "nav-divider"){ // hUL.appendE({tagName:"",class:obj.icon}) var hLi = $.appendE({tagName:"",class:obj.icon}).appendTo(hUL).append(""); }else{ var hLi = $('',{class:self.options.LiClass,role:"presentation",style:self.options.LiStyle}).appendTo(hUL); if (obj.rowData) {hLi.attr("rowData", obj.rowData)}; if (obj.addLIclass) { hLi.attr("class" , hLi.attr("class") + ' ' + obj.addLIclass ) } obj.LI = hLi; var hA = $("",{text: ' ' + obj.title, role:"menuitem"}).appendTo(hLi); if (obj.titlestyle) {hA.attr("style", obj.titlestyle)} if (obj.icon){ var iAttributes = {class:obj.icon}; if (obj.iconstyle) {iAttributes.style = obj.iconstyle} hA.prepend($("",iAttributes)); } // icon if (obj.badge) { if (!obj.badgestyle) {obj.badgestyle = ""} $("",{class:'badge',text:obj.badge,style:"float:right;" + obj.badgestyle}).appendTo(hA) }// badge hLi.click({item:hLi.index(),obj:obj},function(e){ var obj = e.data.obj; var DataSend = self.recordset[e.data.item]; if (self.options.DataAdd) {DataSend.DataAdd =self.options.DataAdd } if (obj.onclick) { if (self.options.ClickContext){ obj.onclick.call(self.options.ClickContext,DataSend) }else{ obj.onclick(DataSend) } } if (self.options.onclick){ if (self.options.ClickContext){ self.options.onclick.call(self.options.ClickContext,DataSend) }else{ self.options.onclick(DataSend) } } if (self.options.selected){ self.DivList.find("li.active").removeClass("active"); $(this).addClass("active"); } if (self.options.showCheck) { var hli = self.UL.find("li.check"); hli.removeClass("check"); hli.find("a").find("i.fa-check").remove(); $(this).find("a").prepend(''); $(this).addClass("check"); } // Change the default. if (self.options.default){ self.MainButton.html(obj.title + ' ') if (self.options.icon) { self.MainButton.prepend(" ")} self.MainButton.append('') }// default }) // DEFAULT if ( (self.options.default) && (self.options.default== obj.id) ) { if (self.options.showCheck) { hLi.addClass("check"); hA.prepend(''); } if (self.options.selected){ hLi.addClass("active"); } BtnTitle = obj.title + ' '; }; // default }// No divider }) // each // BUTTON TITLE if (BtnTitle) {self.MainButton.html(BtnTitle)} if (self.options.icon) { self.MainButton.prepend(" ")} self.MainButton.append('') self.DivList.append(hUL); }, // end ShowElements } // --------------------------------------------------------- // DECLARED JQUERY FUNCTIONS // ------------------------------------------------------------ $.fn.jMenu = function(options){ // RETURN FOR EACH ELEMENT CHAINING MANTEINING return this.each(function(){ // this is now jquery object this.html(''); var my = Object.create(jMenu); my.init(options, this); // INSTANCIATE MYCOMPONENT // access to my component from outside like $('#mydiv').data('mycomponent') if (options.idName){ $.data(this,options.idName,my) }else{ $.data(this,'jMenu',my) } }); // end return FOR EACH ELEMENT CHAINING MANTEINING } // --------------------------------------------------------- // OPTIONS // ------------------------------------------------------------ $.fn.jMenu.Options = { TagButton: "", MainDivSytle: "", MainDivClass: "dropdown inline", ButtonClass:"btn btn-default dropdown-toggle" , UlClass:"dropdown-menu" , LiClass:"",LiStyle:"cursor:pointer" , ButtonClass:"btn btn-default dropdown-toggle", SpanClass:"label label-default pull-right", selected: false,showCheck:false, GrupTitleClass: "box-header with-border", elements:{ // button:{tagName:"",class:"btn btn-default dropdown-toggle",style:"","data-toggle":"dropdown","type":"button","aria-expanded":true}, } }; // end options // APPEND ELEMENT *appendE jQuery.fn.appendE = function(element){ return this.each(function(){ // YOUR CODE FOR EACH ELEMENT HERE // EXAMPLE : $(this).css('color',settings.color); var tagName = element.tagName; delete element.tagName; // console.log("append element:" + tagName + " - " ); console.log(element); $(this).append($(tagName,element)); }); // end return }// appendE jQuery.appendE = function(element){ var tagName = element.tagName; delete element.tagName; return $(tagName,element) } // appendE })(jQuery, window, document); // END SCOPE jMenu // jKubyData component var jKubyData = { // default values *defaults defaults : { name: 'Default Name', DBtoken:null , xmlConf:null, }, // end defaults // SERVER CONNECTION *server *options serverOptions: { // hostname : "api.kubysoft.com" , url : "/node/app", // "/app" kubyapikey: "kubyapitoken00014xs", appServer: "KubyData.Api" // change app server for your app server. }, // CALL SERVER *server *call CallServer: function(Myparams, fnNext){ // console.log("fn CallServer") var self = this; // INI VARS. var settings = {CallType:"GET",timeout:9000}; if (!fnNext) {fnNext = function(){}} if (!Myparams) { Myparams = {}} // PREPARE CALL Myparams.DBToken = self.options.DBtoken; var hostName = window.location.hostname; if ( this.serverOptions.hostname ) { hostName = this.serverOptions.hostname } var Protocol = window.location.protocol; if (!Protocol){Protocol = "http:"} var url= Protocol + '//'+ hostName + self.serverOptions.url + '/?app=' + self.serverOptions.appServer; console.log("KUDABY CALL SERVER: " + url);console.log("Settings:") ; console.dir(settings); console.log("Myparams:"); console.dir(Myparams); // NodeAjaxTime = new Date().getTime(); var MydataReturn = null; $.ajax({ // headers: {'kubyapikey': self.serverOptions.kubyapikey}, type: settings.CallType, url: url, contentType: 'application/json', timeout: settings.timeout, data: Myparams , success: function(data) { if (fnNext) { if (data.error){ self.showError(data.error, data.errorDescription) }else{ fnNext.call(self,data); } }// success. }, // success error: function(jqXHR, textStatus, errorThrown) { self.showError("Error Call server", errorThrown) } // error })// end ajax. },// end call server, // SERVER CALL ServerCallExample: function(){ var self = this; // call server var MyParams = {option:"exceltime",value:42854}; self.CallServer(MyParams, fnResponse); function fnResponse(data){ var self = this; console.log("After server"); console.dir(self);console.log(data); } }, // ServerCallExample // *CREATE A INSTANCE *new *instance create: function(options){ var instance = Object.create(this); Object.keys(options).forEach(function(key){ instance[key] = options[key]; }) return instance; }, // end create // INIT *init componentn init: function(options, elem){ // INI OBJECTS var self = this; // reference to mycomponent . self.MainDiv = $(elem); // jquery version of actual element // INI OPTIONS self.options = $.extend({}, self.defaults, options); // KUDABY INI if (!self.options.DBtoken) {self.options.DBtoken = KubyData.DBtoken} self.kubyDB = new KuDaBy({DB:self.options.DBtoken,xmlConf:self.options.xmlConf}); // UPDATE SCHEMA var jForms = jKudabyForms.create({}) jForms.SchemaUpdate({xml:"KubyData.Schema"},function(){ }); // INI VARS. self.Data = {} self.Data.user = KubyData.usuario; self.Data.operacionList = [{value:'1',title:'Igual =',db:'='},{value:'2',title:'Diferente ',db:''}, {value:'3',title:'Contiene (like)',db:'like'}, {value:'4',title:'Empiez por',db:'like'},{value:'5',title:'Mayor que >',db:'>'}, {value:'6',title:'Menor que
  • [H3] Añadir nuevo criterio
  • [H3] Añadir nuevo campo
  • [H3] '+ ' Files
  • [H3] Un error no controlado ha ocurrido.
  • [H3] Un error no controlado ha ocurrido.
  • [H3] " + vTitulo + "
  • [H4] ' + settings.title + '
  • [H4] Alert!
  • [H4] '); hMain.append(hText ); if (settings.type =='danger') { hText.append(''); }else if (settings.type =='warning') { hText.append(''); }else if (settings.type =='info') { hText.append(''); }else if (settings.type =='success') { hText.append(''); }; // end icon hText.append(' '+ settings.title +''); // DESCRIPCIOT hMain.append(''); hMain.append('' + settings.description + '
  • [H4] Warning!
  • [H4] Do you wanna delete the file ?
  • [H4] ' + Err + '
  • [H4] Nueva Carpeta
  • [H4] Puede volver a cargar la aplicación. Si el problema persiste envie un ticket para que revisemos el problema.
  • [H4] ' + Err + '
  • [H4] Editar Html
  • [H4] Puede que hayas perdido intermitentemente la conexión, prueba de volver a intentarlo.
  • [H4] Puedes volver a cargar la aplicación.
  • [H4] Se ha generado automáticamente el ticket num ${numTicket} y en seguida revisaremos el problema para que puedas seguir trabajando.
  • [H4] Puedes volver a cargar la aplicación y probar la actuación de nuevo, si el problema persiste abre un ticket indicando en qué actuación te aparece este error.
  • [H4] IMPORTING ERRORS
  • [H4] IMPORTING ERRORS
  • [H4] ' + data.ErrorImport + '
  • [H4] IMPORTING DATA
  • [H4] IMPORTING DATA
  • [H4] IMPORTING ERRORS
  • [H4] ' + Err + '
  • [H4] Warning!
  • [H4] Are you sure to delete this record ?
  • [H4] Warning!
  • [H4] Deleting in " + CountDownDelete + "
  • [H4] ' + Err + '
  • [H4] Añadir nuevo cliente
  • [H4] Añadir nuevo cliente
  • [H4] ' + Err + '
  • [H4] {{title}}
  • [H4] ' + Err + '
  • [H4] ' + Err + '
  • [H4] Warning!
  • [H4] Do you wanna delete the file ?
  • [H4] Puede que hayas perdido intermitentemente la conexión, prueba de volver a intentarlo.
  • [H4] Puedes volver a cargar la aplicación.
  • [H4] Se ha generado automáticamente el ticket num ${numTicket} y en seguida revisaremos el problema para que puedas seguir trabajando.
  • [H4] Puedes volver a cargar la aplicación y probar la actuación de nuevo, si el problema persiste abre un ticket indicando en qué actuación te aparece este error.
  • [H4] ' + Err + '
  • [H4] Atención!
  • [H4] Esta seguro que quiere borrar este registro ?
  • [H4] Alerta!
  • [H4] Borrado en " + self.CountDownDelete + "
  • [H4] Atención!
  • [H4] Esta seguro que quiere borrar este registro ?
  • [H4] Warning!
  • [H4] Deleting in " + self.CountDownDelete + "
  • [H4] ' + Err + '
  • [H5] TOTAL
  • [H5] TOTAL
  • [H5] TOTAL
  • [H5] No data
  • [H5] "+ '' + Title + "
  • [H5] ",{class:"description-text",text:"TOTAL"})) .append($("",{class:"description-header",text:total.toFixed(vdecimals)})) if (self.options.showTotal == "Left" ){ FootLeft.append(hDivTotals) }else if (self.options.showTotal = "Right"){ FootRight.append(hDivTotals) } } } // divider footer. }, // HtmlIni // DATA PREPARE *DATA *PREPARE DataPrepare: function(){ var self = this, op = self.options; self.DataFields(); console.log("fn DataPrepare"); console.log(op); // INI DATA // self.Data.Recordset = self.options.recordset; // INI VARS var swPrepareData = true; // CAMBIAR CAMP DATA PER DATE if ( (op.FieldGrup.toLowerCase() == 'fecha') || (op.FieldGrup.toLowerCase() == 'data') || (op.FieldGrup.toLowerCase() == 'date') ) { op.SwFecha = true ; op.FieldGrupOriginal = op.FieldGrup; // GET PART OF DAYS var con, mindate=null,maxdate=null, row; if (self.Data.Recordset.length > 0){ for (i = 0; i < self.Data.Recordset.length; i++){ row = self.Data.Recordset[i]; var dateAact = row[op.FieldGrup]; var dateArr = dateAact.split('/'); var year = parseInt(dateArr[2]); var month = parseInt(dateArr[1]); var monthstr= month; if (month < 10){monthstr='0'+month}else{ } var day = parseInt(dateArr[0]); if (day < 10){var daystr='0' + day} var strDate = month + "/" + day + "/"+ year; var CurrDate = new Date(strDate); // month if (month < 10){var mes='0'+month+'/'+year;} else{var mes=month+'/'+year;}; row.Month = mes; row.MonthNum= month; // day var DoY = getDOY(CurrDate); row.Day = DoY row.DayM = daystr + '/' + monthstr; row.DayY = daystr + '/' + monthstr + '/' + year; // week var week = getWeekNumber(CurrDate); row.Week = week; // year row.Year = year; row[op.FieldGrup] = CurrDate; //row.push(DoY);row.push(week); row.push(month); row.push(mes); row.push(year);row.pusch // MIN MAX DATE if ( (mindate== null ) || ( CurrDate < mindate) ) { mindate = CurrDate } if ( (maxdate== null ) || ( CurrDate > maxdate) ) { maxdate = CurrDate } }; // Difference var timeDiff = Math.abs(mindate.getTime() - maxdate.getTime()); var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); op.DaysDiff = diffDays; // console.log("After prepare data "); console.dir(self.Data.Recordset); self.Data.DataArray = self.record2Array(self.Data.Recordset); self.Data.keys = self.Data.DataArray[0]; } }else{ op.SwFecha = false self.Data.DataArray = self.record2Array(self.Data.Recordset); self.Data.keys = self.Data.DataArray[0]; } // if fecha // OCULTA CAMBIO DE FECHAS. if (!op.SwFecha){ self.DivTimeView.html(''); } // IF CharType IS PIECHART DELETE NEGATIVE VALUES. if (op.CharType == "PieChart"){ var colValue = self.Data.keys.indexOf(op.FieldValor) for (var i = 1; i < self.Data.DataArray.length; i++) { if (self.Data.DataArray[i][colValue] < 0 ) { self.Data.DataArray.splice(i, 1);} } }// if // PREPARE DATAGRAPH GRUP DATA /* if (false){ var DataG = google.visualization.arrayToDataTable(self.Data.DataArray); self.Data.DataGraph = google.visualization.data.group(DataG,[self.Data.keys.indexOf(op.FieldGrup)], [{'column': self.Data.keys.indexOf(op.FieldValor), 'aggregation': google.visualization.data.sum, 'type': 'number'}] ); } // prepare */ self.dataChangeView(); self.showMultiView(); },// DataPrepare //DataFields *data *fields DataFields : function(){ var self = this, op = self.options; console.log(self.Data.Recordset); console.log("Fields"); console.log(op.Fields); self.Fields = []; var savedFields = []; var fieldElement = {}; //loop the field options if (self.options.Fields.length>0){ for (var i = 0;i

Imagens

Encontrámos 74 imagens nesta página.

72 atributos ALT estão vazios ou em falta. É recomendado adicionar texto alternativo de modo a que os motores de busca identifiquem melhor o conteúdo das suas imagens.

Rácio Texto/HTML

Rácio : 0%

O rácio de texto para código HTML desta página é menor que 15 porcento, o que significa que provavelmente é necessário de adicionar mais conteúdos em forma de texto.

Flash

Perfeito, não foi encontrado conteúdo Flash nesta página.

Iframe

Oh, não, esta página tem Iframes na página, o que significa que o conteúdo destas não pode ser indexado.

Reescrita de URL

Perfeito. As ligações aparentam ser limpas!

Underscores (traços inferiores) nas URLs

Detetámos 'underscores' (traços inferiores) nas suas URLs. O uso hífens é mais eficiente em termos de otimização SEO.

Ligações para a própria página

Encontrámos um total de 8 ligações incluindo 3 ligações a ficheiros

Âncoras Tipo Sumo
view » Internas Passa sumo
"+ vOneFile.name + " Internas Passa sumo
Action Internas Passa sumo
"+Myfile.descripcio+" Internas Passa sumo
"+name+" Internas Passa sumo
General Internas Passa sumo
'+obj.title+' Internas Passa sumo
Created by doom-software.com Internas Passa sumo

Palavras-chave SEO

Núvem de palavras-chave

los inicio copyright productos iniciar sessión  todos software derechos  doom

Consistência das Palavras-chave

Palavra-chave Conteúdo Título Palavras-chave Descrição Cabeçalhos
inicio 1
productos 1
iniciar 1
sessión 1
copyright 1

Usabilidade

Url

Domínio : doom-software.com

Cumprimento : 17

Favicon

Ótimo, o site tem um favicon.

Facilidade de Impressão

Não encontrámos CSS apropriado para impressão.

Língua

Otimo! A língua declarada deste site é sp.

Dublin Core

Esta página não tira vantagens do Dublin Core.

Documento

Tipo de Documento

O tipo de documento está em falta

Codificação

Perfeito. O conjunto de caracteres ISO-8859-15 está declarado.

Validação W3C

Erros : 0

Avisos : 0

Privacidade do Email

Aviso! No mínimo, foi encontrado um endereço de email sob a forma de texto. Isto é um convite para que spammers entupam a caixa de correio deste endereço.

HTML obsoleto

Fantástico! Não detetámos etiquetas HTML obsoletas.

Dicas de Velocidade

Atenção! Existem tabelas dentro de outras tabelas em HTML.
Oh não, o site usa estilos CSS nas etiquetas HTML.
Oh, não! O site utiliza demasiados ficheiros CSS (mais que 4).
Oh, não! O site utiliza demasiados ficheiros JavaScript (mais que 6).
Atenção, o site não tira vantagem da compressão gzip.

Dispositivos Móveis

Otimização para dispositivos móveis

Icon Apple
Meta Viewport Tag
Conteúdo Flash

Otimização

XML Sitemap

Em falta

O site não tem um mapa XML do site (sitemap) - isto pode ser problemático.

Um mapa do site identifica todas as URLs que estão disponíveis para rastreio, incluindo informação acerca de atualizações, frequência de alterações ou a importancia de cada URL. Isto contribui para uma maior inteligência e eficiência do rastreio.

Robots.txt

https://doom-software.com/robots.txt

Perfeito, o seu site tem um ficheiro robots.txt.

Analytics

Em falta

Não detetámos nenhuma ferramenta analítica de análise de atividade.

Este tipo de ferramentas (como por exemplo o Google Analytics) permite perceber o comportamento dos visitantes e o tipo de atividade que fazem. No mínimo, uma ferramenta deve estar instalada, sendo que em algumas situações mais do que uma pode ser útil.

PageSpeed Insights


Dispositivo
Categorias

Free SEO Testing Tool

Free SEO Testing Tool é uma ferramenta gratuita que o ajuda a avaliar o seu site