Siguenos en facebook
Web oficial de PSFGeneric

IMPORTANTE: "Nuevo post en PSFGeneric: Mensajes de error remitidos por usuarios"

PSFGeneric nace con el objetivo de unificar todos los procesos y gestiones de una empresa en una sola aplicación. Su arquitectura software permite la integración de sucesivos módulos de gestión y la interconexión entre todos ellos a modo de servicios internos, incluso puedes crear tu propias ampliaciones.

Objetivos



Mejoras destacadas de PSFGeneric 1.6.4
.- Añadido editores de texto con formato por toda la aplicación.
.- Gestor de ficheros distribuido, gestor documental, para compartir ficheros en la nube, ahora tambien soporta sFTP, protegidos por permisos de acceso.
.- Añadidos iconos a multitud de botones y menus.
.- Mejora notable del rendimiento.
.- Mejoras en el motor javascript que dan mas libertad de desarrollo y control sobre el power-up dinamico.
.- Desglose de impuestos en tickets.
.- Agregado procesador de textos.
.- Ahora se permite definir usuarios invitados con acceso limitado a opciones especificas, por ejemplo el gestor documental, y control mas estricto de la seguridad al cargar power-ups.
.- Añadido importador de contactos.

------------o----------------
PSFGeneric 1.6.4 CHANGELOG
------------o----------------
Nota:
.- Si cualquier evento devuelve "cancel"=true entre sus respuestas evitara que se ejecute cualquier
otro manejador del mismo evento.
.- El motor javascript de los power-ups dinamicos actua en contextos distintos dependiendo del momento,
en cada contexto las variables globales son distintas. Si tenemos dos formularios tendremos tres contextos
distintos, si tenemos una variable declarada en una libreria JS esta podra tener tres valores dependiendo
desde donde sea consultada. En el ejemplo tendriamos un contexto independiente para cada formulario y
otro mas para metodos de arranque, parada, instalacion y desinstalacion.

Mejoras:
.- Acceso a servidores sFTP y FTP.
.- Nuevo control y campo de texto con formato HTML.
.- Nuevo metodo para Indice de Registros para indicar la etiqueta de columna.
Para que se aplique no se debe usar la propiedad FormatString, si queremos ocultar una columna le
podemos poner un ancho 0.
.- Dos nuevos eventos para agregar paginas al imprimir presupuestos:
Eventmanager.before.print.budget{budget_id: Int, client:evoItem[cContactos], selldocumentdody_guid:String} <= pages:ArrayListpage_guid:String
Eventmanager.after.print.budget{budget_id: Int, client:evoItem[cContactos], selldocumentdody_guid:String} <= pages:ArrayListpage_guid:String
Parametros:
budget_id: Int -> ID del presupuesto en proceso de impresion
client:evoItemcContactos -> evoItem del cliente asociado o nothing (null) si no esta definido
selldocumentdody_guid:String -> GUID del listado de articulos asociados al presupuesto.
Respuesta:
pages:ArrayListpage_guid:String -> ArrayList de GUIDs de las páginas a agregar.
.- Lanzar eventos antes de empezar a generar un impreso con plantillas y despues, pero justo antes de
generar el PDF asociado. (solo para presupuestos/facturas proforma)
.- Todos los campos de notas de documentos de administracion admiten formato.
.- Descripcion de articulo con formato.
.- Listado de textos para anexos de presupuesto (Mediante eventos)
.- Dos nuevos metodos javascript que se ejecutan al inicializar y detener power-ups dinamicos:
Se encuentran definidos en PSFGeneric_api.js, este api se añade automaticamente a todos los proyectos.
/*
* Se ejecuta al cargar el power-up dinamico.
* PSFGeneric esta completamente cargado, asi como los power-up, pero los power-ups dinamicos puede que no esten todos cargados
*/
function appStarted() {}
/*
* Se ejecuta al parar el power-up dinamico.
*/
function appStopping() {}
.- Añadida funcion nativa en JavaScript para definir servicios de PSFGeneric. Ahora es posible comunicar
distintos power-ups dinamicos entre ellos o/y power-ups nativos.
AddOperation(), mas informacion en PSFGeneric_api.js que se crea en los nuevos proyectos de power-up dinamico.
.- El manejador de servicios ahora permite dar de baja servicios.
.- Nuevo metodo javascript para quitar servicios: RemoveOperation(server, operation)
.- Cuatro nuevos metodos Javascript para el control de eventos (Mas informacion en PSFGeneric_api.js)
Sub declareEvent(ByVal eventkey As String, ByVal params As String, ByVal ret As String)
Sub addListener(ByVal eventkey As String, ByVal Func As Delegate)
Sub delListener(ByVal eventkey As String, ByVal Func As Delegate)
Function doEvent(ByVal eventkey As String, ByVal params As Hashtable) As ArrayList
.- Nuevas vistas del panel de acceso rapido
.- Los iconos del panel de acessos rapidos pueden ocultarse, en la barra de herramientas sobre el listado aparece un llave para configurarlo.
.- Nuevo power-up explorador de clases EVO
.- Integracion EVO con javascript para permiter el acceso directo a datos (registros) y creacion de nuevas colecciones (tablas).
.- Metodos javascript para ejecutar al instalar y desinstalar un power-up dinamico.
/*
* Se ejecuta cuando el power-up dinamico esta siendo instalado
*/
function appInstall() {}
/*
* Se ejecuta cuando el power-up dinamico esta siendo desinstalado
*/
function appUninstall() {}
.- El editor de power-ups dinamicos permite abrir varias instancias.
.- Capacidad de abrir formularios del mismo proyecto desde otros contextos javascript con showForm(nombre).
Con la propiedad ShowIsTaskBar a true el metodo devuelve el objeto MyForm con los valores de campo al cerrar el formulario invocado,
si la propiedad es false se devuelve el objeto en el momento de la apertura, es decir, sin datos.
Si se ejecuta el formulario invocador en modo depuracion los formularios invocados se ejecutaran en modo ejecucion normal.
.- Mejoras en la generacion de tickets y su configuracion.
.- Mientras conectamos a servidor remoto, o cargamos monopuesto, se muestra una ventana de notificacion.
.- Nuevo servicio para obtener el nombre de un impuesto:
"catalog", "gettaxname", delegado, "id:int", "name:string"
.- Añadido desglose de impuestos a los tickets del TPV.
.- Desglose de impuestos en tickets, conforme normativa para "facturas simplificadas" en España.
.- Añadidas ventanas de espera durante la carga.
.- Metodos de instalacion, inicio, parada y desinstalacion como variables de tipo function para poder encadenarlas.
.- Nuevo control para power-ups dinamicos "Boton abrir formulario", permite abrir otro formulario con valores iniciales personalizados.
.- Añadida propiedad app_guid al DOM Environment con la ID del power-up dinamico.
.- El editor de power-ups dinamicos al pulsar abrir proyecto abre en el directorio de proyectos de ejemplo.
.- Nuevos mensajes de ayuda durante el arranque, asi como enlaces para buscar ayuda en internet.
.- Agregado gestor documental, dividido en espacios y sin limites de profundidad de directorios.
.- Agregados los servicios necesarios para dar soporte de gestion de documentos:
filemanager::gdgetspaces(void) = spaces:ArrayListevoItem:gdFolder
filemanager::gdisspace(path:String) = isspace:bool
filemanager::gdgetfolders(path:String) = folders:ArrayListevoItem:gdFolder
filemanager::gdgetfolder(path:String) = folder:evoItem:gdFolder
filemanager::gdissubfolder(path:String, name:String) = exist:bool
filemanager::gdaddfolder(path:String, name:String) = void
filemanager::gdisemptyfolder(path:String) = empty:bool
filemanager::gdremovefolder(path:String, recursive:bool=false) = void
filemanager::gduploadfile(path:String, file:String, autorename:bool=true) = ok:bool, newname:String
filemanager::gddownloadfile(path:String, localfile:String) = ok:bool, localfile:String
filemanager::gdgetfiles(path:String) = files:ArrayListevoItem:gdFile
filemanager::gdremovefile(path:String) = void
filemanager::gdgetfoldersize(path:String) = size:int
filemanager::gdmovefileto(filepath:String, path:String) = void
filemanager::gdmovefolderto(folderpath:String, path:String) = void
filemanager::gdchangefilename(path:String, name:String) = void
filemanager::gdchangefoldername(path:String, name:String) = void
filemanager::gdshowfolderbrowser(shownewfolder_button:bool, description:String, selectedpath:String, rootfolder:String) = path:String
filemanager::gdshowfilebrowser(multiselect:bool = true) = files:ArrayListString
"filemanager", "gdfileexist", delegado, "path:String", "exist:bool"
"filemanager", "gdfolderexist", delegado, "path:String", "exist:bool"
.- La ventana de enviar email permite adjuntar documentos del gestor documental.
.- Nuevo servicio para obtener el directorio de archivos temporales.
"psfgeneric", "tempfolder", delegado, "", "path:String"
.- Temporales centralizados en un mismo directorio para su borrado al salir de PSFGeneric.
.- Visor de documentos PDF generados permite subir los documentos al gestor documental
.- Editor HTML permite incrustar imagenes del gestor documental.
.- Imprimir listado de precios ahora puede exportar a PDF.
.- Cache de archivos remotos, se reinicia en cada sesion o al actualizar un archivo.
.- Nuevo servicio para ofrecer al usuario seleccionar una agenda mediante una ventana de dialogo:
"contacts", "selectagenda", delegado, "", "data:ievoUItem"
.- Mejoras de rendimiento en el visor de asientos economicos.
.- La carga de articulos del listado rapido del TPV ahora solo se produce una vez durante la carga.
.- Creada ventana de ordenar articulos visualmente, esta en el menú mantenimiento.
.- Es posible limitar el nº de articulos visibles en el acceso rapido del TPV, esta en la opciones del powerup.
.- Nuevos servicios de formato de HTML con imagenes del gestor documental:
"filemanager", "gdhtmlremotetolocal", delegado, "src:String", "src:String"
"filemanager", "gdhtmlremotetomailbody", delegado, "src:String", "src:String"
.- Nueva ventana de envio de Feedbacks sobre PSFGeneric.
.- Cache de conexiones FTP mediante rutas.
.- Agregado procesador de textos.
.- Opciones del menu principal con iconos.
.- Nuevo servicio: "contacts", "getclientby_user", delegado, "userid:integer", "data:ievoUItem"
.- Añadir permiso de acceso "Login como invitado" que solo permita acceder a ciertas acciones.
.- Permitir acceso a usuarios con permiso "Login como invitado".
.- Bloquear acceso a "imprimir movientos economicos" a invitados.
.- Bloquear acceso a "optimizar tablas" para usuarios sin "Superlogin"
.- Bloquear acceso a "cola de envio de mails" para usuarios sin "Superlogin"
.- Bloquear acceso a "Abrir archivo cuaderno 19" para usuarios sin "Facturar a clientes"
.- Hacer que todas las acciones exigan el permiso "Login" como minimo para garantizar la seguridad.
.- Para invitados no se aplica la configuracion "firstrun".
.- Los power-ups que se permiten cargar para invitados se configuran en la ventana de configuracion de power-ups.
.- Invitados no ven la consola abierta por defecto.
.- Mostrar nombre de empresa activa en titulo de la ventana.
.- Añadir modelo de permisos al gestor documental.
.- Limitar acceso al gestor documental de HTMLArea para invitados.
.- Añadir parámetro invitados a añadir menu.
.- Añadir propiedad invitados a accesos rapidos.
.- Si no tiene permiso login ocultar menu y acceso rapido, por defecto lo requiere.
.- Permitir entrar con permiso login invitado pero sin permiso login.
.- Para invitados añadir nombre de la empresa por defecto antes del título y versión en la ventana principal.
.- Añadir campo actividad a Contacto
.- Añadir campo usuario del sistema a Contacto
.- En configuracion de fileManager opcion de permitir descarga de archivos del gestor documental a partir de su ruta. (Por defecto: permitido)
.- Mostrar usuarios por nombre de contacto y usuario entre parentesis en ventana de permisos.
.- Poder crear permisos de acceso por defecto sin necesidad de mostrar la ventana de permisos (para configurador de empresa).
.- Cache de consulta en la capa EVO.
.- Cache de tablas de clases EVO.

------------o----------------
Correcciones:
.- Mejorada la velocidad de carga inicial.
.- En ficha de contacto el campo pasaporte pisa la caja de texto.
.- Autoscroll para ventana de presupuestos, albaranes y facturas de ventas.
.- Autoscroll para ventana de presupuestos y facturas de compra.
.- Mover el cursor en cualquier area de texto del editor de power-ups dinamicos genera errores.
.- El panel lateral izquierdo no recuerda si esta recogido o no de una ejecucion a otra, ahora lo
recuerda para cada usuario independientemente del terminal en el que inicie sesion.
.- Al instalar un power-up dinamico directamente de su archivo DPU no cambiarlo de nombre.
.- Si al guardar un proyecto de power-up dinamico el codigo javascript contiene "]]>" falla y destruye el archivo de proyecto.
.- Corregido error ortografico en el metodo 'getCLRObjet', se corrige a 'getCLRObject'.
(Ambos quedan disponibles por compatibilidad)
.- El metodo apiExistTable esta cacheando la consulta de tablas existentes dando falsos positivos.
Si un tipo EVO se crea, se destruye y se vuelve a crear sin reiniciar la aplicacion el tipo se crea
pero su tabla en la base de datos no. Corregido con un nuevo servicio en PSFGeneric para vaciar esa cache (Abusar relentiza todo PSFGeneric):
psfgeneric::cleartableexistcache(void) = void
.- Al cerrar PSFGeneric con la X no hace una parada limpia.
.- Si getCLRObject recibe null como parametro falla, corregido devolviendo null.
.- Al cargar en modo seguro se cargaban los power-ups dinamicos, ahora no.
.- En modo seguro no era posible desinstalar un power-up dinamico, ahora lo es pero no es una desinstalacion limpia.
.- Retoques esteticos al TPV.
.- Al imprimir ticket en el espacio de la mesa aparece el nombre del terminal.
.- Todos los campos BLOB se convierten a LONGTEXT para corregir el problema de la codificacion de caracteres en la base de datos,
ademas se cambia la codificacion de conexion a UTF-8. El cambio debe ser transparente para versiones anteriores a 1.6.4, pero podrian
almacenar datos erroneamente (Sin acentos y caracteres especiales).
.- Quitado Drupal 7 de la insstalacion.
.- Al borrar una imagen de articulo no desaparece hasta reiniciar PSFGeneric.
.- El ejemplo de DPU prueba simple no abre en una base de datos de PSFGeneric 1.4
.- El control buscar articulo no funciona en una base de datos de PSFGeneric 1.4.
.- El pedir el nombre de un articulo que no existe se produce un error de objeto nulo.
.- En situaciones de mucha carga de procesador con el TPV abierto, si se produce un cierre inesperado el TPV no es capaz de volver a abrir.
Ahora tambien tiene la capacidad de recuperar el estado de las cuentas abiertas.
.- Aumentado el limite de cache de la base de datos a 1000 peticiones.
.- Identificados productos en tickets por MD5 de su nombre. (Versiones anteriores de PSFGeneric no guardaban la ID de producto)
.- En los power-ups dinamicos con indice de registros al actualizar un registro sobreescribe el primero en lugar del correcto,
el fallo se debia a que al seleccionar un registro externo al control de navegacion no se guardaba el elemento solo su posicio
y al aplicar se aplicaba sobre el ultimo seleccionado por el navegador de registros no por el indice de registros.
.- Si se tiene permiso de invitado no mostrar ventana de licencia al buscar productos.
.- Carga por bloques al listar objetos EVO, antes se hacia 1 a 1.

------------o----------------
PSFGeneric 1.6.3 CHANGELOG
------------o----------------
Mejoras:
h3d - Buscar certificado
h3d - añadir campo nº serie en certificados
h3d - filtro cliente
h3d - filtro localidad
h3d - filtro nº certificado
h3d - filtro fecha prestacion
h3d - añadir stats
h3d - añadir avisos de mecenazgo
h3d - Si el nº d certificado va en mayusculas el buscador tambien debe ir en mayusculas.
h3d - dosis es campo de texto de 6 chr
h3d - plazo seguridad es campo numerico con una H
h3d - accion residual es campo de texto 100 chr
h3d - en tabla de productos poner todo en letra 8px, y materia activa con () y letra 6px.

.- Nuevos servicios del modulo de gestión de numeros de serie:
"serialnumberholder", "getserialofid", delegado, "id:integer", "serial:string"
"serialnumberholder", "getidofserial", delegado, "numserie:string", "id:integer"
.- Nuevo servicio de PSFGeneric: "psfgeneric", "evogetypes", delegado, "", "types:hashtable(name)string:(versions)arraylist"
.- Nuevo power-up para ampliar dinamicamente las propiedades asociadas a un Item EVO, independientemente de su versión.
.- Nuevo tipo EVO sin propiedades para usarse como base para añadirle cualquier nº de propiedades dinamicas. (Concepto de Item generico)
.- Nuevos servicios del power-up de extension de propiedades EVO
propext::propertytypegetlist(void) = list:arraylistPropertyType.ID
propext::propertytypeadd(type:string, multivalue:bool, description:string, label:string, meta:string/clase evo de contenido/) = id:integer
Valid PropertyType content types: varchar, Texto, blob, dateval, DateTime, Int, float, bool, file, evoitem
propext::propertytypedel(id:integer) = void
propext::propertytypeget(id:integer) = type:string, multivalue:bool, description:string, label:string, meta:string/clase evo de contenido/
propext::propertytypeedit(id:integer, type:string, multivalue:bool, description:string, label:string, meta:string/clase evo de contenido/) = void
propext::propertygroupgetlist(void) = list:arraylistPropertyGroup.ID
propext::propertygroupadd(description:string, label:string) = id:integer
propext::propertygroupdel(id:integer) = void
propext::propertygroupget(id:integer) = description:string, label:string
propext::propertygroupedit(id:integer, description:string, label:string) = void
propext::propertygroupaddproperty(groupid:integer, propertyid:integer) = void
propext::propertygroupdelproperty(groupid:integer, propertyid:integer) = void
propext::propertygroupgetproperties(id:integer) = list:arraylistPropertyType.ID
propext::propertyextensiongetlist(evobasetype:string, evobaseid:integer = 0) = list:arraylistPropertyType.ID
propext::propertyextensionadd(evobasetype:string, evobaseid:integer = 0, idpropertytype:integer) = id:integer
propext::propertyextensiondel(id:integer) = void
propext::propertyextensionget(id:integer) = evobasetype:string, evobaseid:integer, idpropertytype:integer
propext::propertyextensionedit(id:integer, evobasetype:string, evobaseid:integer = 0, idpropertytype:integer) = void
propext::propertyextensionvalueadd(extenderid: integer, value:string) = id:integer
propext::propertyextensionvaluedel(extenderid: integer, id:integer) = void
propext::propertyextensionvalueget(extenderid: integer) = value:string, list:arraylistPropertyValue.ID
propext::propertyextensionvalueset(extenderid: integer, id:integer, value:string) = void
propext::propertyextensionvaluegetbyid(id: integer) = value:string
propext::propertyextensionvaluesetbyid(id: integer, value:string) = void
.- Nuevo permiso "Administrar propiedades extendidas EVO" para administradores
.- Nuevo metodo para power-ups para ser ejecutado al terminar de cargar todos los power-ups.
.- Añadido controlador general de eventos a PSFGeneric para permitir comunicación entre power-ups (aun no disponible en power-ups dinamicos)
.- Definidos eventos para el seguimiento de elementos EVO:
Eventevo.item.add{item:evoItem} <= void
Eventevo.item.before.del{item:integer, class:string, version:string} <= void
Eventevo.item.before.save{item:evoItem} <= void
Eventevo.item.after.save{item:evoItem} <= void
.- Metodo refresh para actualizar el contenido desde la base de datos en un evoItem.
.- Añadir propiedad a formulario dinamico para poner acceso directo en enlaces rapidos.
.- Si hay un fallo a partir de la carga de power-ups dinamicos se informa y se continua aunque la interfaz no quede completa.
.- Nuevo servicio en PSFGeneric: "psfgeneric", "evogetfieldnames", delegado, "class:string, version:string", "fields:arrayliststring"
.- Añadido control de indice visual de registros para power-ups dinamicos.
.- Nuevo servicio: "propext", "propertygroupartongroup", delegado, "id:integer", "ongroup:bool"
.- Nuevo servicio web para actuar como proxy de Geolocalización de MapQuest Nominatim
.- Componentes de editor de power-ups dinamicos agrupados en distintas pestañas.
.- Nuevo control de filtro de campo de texto y de contacto de registros para power-ups dinamicos.
.- Nuevas funciones en JavaScript para controlar el registro actual de un formulario de power-up dinamico:
moveFirst: Selecciona el primer registro como activo.
moveLast: Selecciona el ultimo registro como activo.
movePrev: Selecciona el anterior registro como activo.
moveNext: Selecciona el siguiente registro como activo.
remove: Borra el registro activo.
count: Devuelve la cantidad de registros existentes.
.- Agregado directorio con archivos fuente de power-ups de ejemplo: <dir. instalacion>/docs/power-ups src/
.- Nuevo power-up dinamico para impresión de etiquetas de precios.

------------o----------------
Correcciones:
.- Al generar facturas con fecha en el ejercicio anterior la numeración es del año actual.
.- Todos los usuarios pueden crear power-ups dinamicos poniendo en riesgo la seguridad global de PSFGeneric, corregido con permiso de administrador "Crear nuevos power-ups dinámicos"
.- Hay dos maneras distintas de editar las propiedades de un articulo. Corregido dejando solo el servicio.
.- Validación de tipo EVO distingue entre mayusculas y minusculas.
.- Cuando un usuario carga power-ups dinamicos con controles de almacen y no hay almacenes definidos o no puede acceder a ellos la aplicación falla y no puede abrirse.
.- El formulario de gestion de empresas administrativas no se muestra completamente.
.- A veces PSFGeneric no cierra correctamente y queda en estado Zomby, se ha forzado su cierra matando el proceso.
.- Cambiada geolocalización de Google por MapQuest Nominatim.
.- La ventana de power-upds dinamicos se bloquea sin conexión a internet, ahora carga los DPU locales.
.- El power-up de copia de seguridad MySQL no puede importar tablas de power-ups dinamicos.
.- Errores cargando power-ups dinamicos al inicio no detiene la carga completamente.

------------o----------------

PSFGeneric 1.6.2 CHANGELOG


------------o----------------

Mejoras:
.- Nueva columna pagare en seguimiento de facturas: Si esta pendiente de cobro y contiene una fila de seguimiento
no cobrado con etiqueta pagare aparece se marca en el listado.
.- En propiedades de vehiculos/historico autoconsumo al hacer doble clic sobre una linea de cabecera se abre el albaran correspondiente.
.- En propiedades de vehiculos/historico autoconsumo boton para añadir nuevo albaran autoconsumo asociado al vehiculo.
.- Nuevo servicio interno: "manager", "getselldeliveryofnumber", delegado, "number:int", "id:int"
.- Al usar una tarjeta MQS para conectar solicita añadirla a la lista de servidores conocidos.
.- Nueva ventana de conexion a servidores, mejora la informacion sobre cada opcion y permite iniciar Apache2 en local
.- Preinstalación de la distribución de Drupal 7.23 (Usuario/clave: Admin / 1234)
.- Ayuda emergente, popup, desactivable en la configuracion general
.- Nuevo objeto javascript XmlHttpObject para la captura y envio de información a servidores web/restFull
Sigue el esquema expuesto en: http://es.wikipedia.org/wiki/XMLHttpRequest#Implementaci.C3.B3nyusodela_interfaz
Tiene algunas limitaciones con respecto a su homologo web, como imposibilidad de usar URL relativas,
ademas de no devolver estados de respuesta del servidor (200, 404, etc...).
Ejemplo de uso:
var conn = GetXmlHttpObject();
debug("Estado: " + conn.readyState);
conn.open("get", "www.psfgeneric.com", "", true);

conn.onload = function() {
debug(conn.responseText);
}
conn.onreadystatechange = function() {
debug("Estado: " + conn.readyState);
}
conn.onabort = function() {
debug("Petición cancelada");
}
conn.onloadstart = function() {
debug("Descarga iniciada");
}
conn.onprogress = function(percentage, TotalBytesToReceive, BytesReceived) {
debug("Descargado: " + percentage + ", " + TotalBytesToReceive + " bytes de " + BytesReceived + " bytes");
}
.- Añadir funciones setInterval(), setTimeout(), clearTimeout(timeoutVariable) y clearInterval(intervalVariable) en javascript
.- Al abrir agrupar facturas recordar si el check de enviar por mail estaba seleccionado o no.
.- Textbox para puerto en ventana de conexión a servidores.
.- Cierres de ejercicio de almacén
.- Cierres de ejercicio de gestor económico (Usar como base, requiere revisión manual)
.- Agregada libreria JSON in JavaScript de Douglas Crockford en el directorio \jsLibs\json

------------o----------------
Correcciones:
.- Historico factura menu contextual no va a ver factura.
.- En seguimiento de facturas al cambiar fechas mientras esta cargando se duplican facturas en el listado.
.- Ventana de facturas de venta no muestra facturas enlazadas de otros modulos debido a un fallo en el filtro de fechas.
.- Ventana de albaranes de venta no muestra albaranes enlazados de otros modulos debido a un fallo en el filtro de fechas.
.- No se permite multiseleccion en la lista de tareas (agenda).
.- Al iniciar en monopuesto a veces no espera a que el servidor local este iniciado y devuelve a la ventana de conexion.
.- En panel de servicios hacer calculo por días a partir de fecha del albaran de entrega.
.- Estudio economico en propiedades de nº de serie de vehiculos falla al calcular ingresos a partir de facturas. Ahora usa albaranes de venta.
.- Capa de conexión a datos ahora admite indicar el puerto de conexión a MySQL: 127.0.0.1:3306
.- Control area de texto no permite definir texto inicial en el editor de power-ups dinamicos.
.- Las propiedades status y statusText de XmlHttpObject ahora se cargan con valores de estado correctos.
.- XmlHttpObject mediante POST ahora devuelve cadena de caracteres de resultados.
.- XmlHttpObject ahora soporta metodos HTTP PUT, DELETE, etc...
.- Al abrir imprimir resumen de almacen sin tener una empresa creada da error. (error reportado automaticamente)

------------o----------------

PSFGeneric 1.6.1 CHANGELOG


------------o----------------

Pendientes: no se pueden reparar
.- #19140 - 27/07/2013: Si falta memoria RAM System.Drawing genera errores. -> Requiere actualizacion de windows (http://support.microsoft.com/kb/2650146/en-us - KB2650146)


------------o----------------
Mejoras:
.- Nuevo power-up dinámico: Ejemplo ACERCA DE
.- Nuevo servicio interno en PSFGeneric::CebraListView para colorear listados
.- Filtro por fechas en albaranes de venta o cobro
.- Índice de albaranes de venta
.- Añadida fecha de albarán de entrega en servicios. (Por defecto es la fecha del día actual, si estaba cerrado es la fecha de apertura)
.- Aplicado formato cebra para el listado de servicios y de tareas de servicio.
.- Jerarquía de clases base para archivos de cuadernos bancarios
.- Jerarquía de clases para interpretar o generar archivos bancarios Cuaderno 19 (según "serie normas y procedimientos bancarios 19/Mayo 2004"
.- Configuración de paneles de servicios pasa al menú mantenimiento
.- Nueva opción Abrir Cuaderno 19 en Mantenimiento, útil para revisar archivos de remesas de cobro ya generados.
.- Aplicado formato cebra a índice de facturas en la ventana de facturas.
.- Nuevo servicio en el núcleo de PSFGeneric para verificar un número de cuenta bancaria.
.- Generador de remesas de cobro Cuaderno 19 en menú/gestores/ventas/generar remesa de cobros
.- Numero de versión para la base de datos
.- Poder borrar tareas desde la interfaz de tareas.
.- Botón quitar foto de articulo.
.- Marcar en el mapa todos los contactos de una agenda en concreto.
.- Permitir iconos personalizables en marcadores de mapa
.- Marcas de contactos en mapas con iconos alusivos a su naturaleza
.- Marcas de números de serie en clientes en mapas con iconos alusivos a su naturaleza
.- Aplicado formato cebra a todas las listas
.- Acceso rápido al generador de remesas de cobro
.- Añadidas listas de municipios de Argentina, Colombia, Ecuador, México, Puerto Rico y Venezuela
.- Opción menú/mantenimiento/importar/catalogo de productos. Los archivos que puede usar son XML con la siguiente estructura:
<products>
<product>
<property name="categoria"><!CDATA[categoria]></property>
<property name="referencia"><!CDATA[referencia]></property>
<property name="nombre"><!CDATA[nombre]></property>
<property name="pvp"><!CDATA[precio]></property>
<property name="pvd"><!CDATA[precio de compra]></property>
<property name="barcode"><!CDATA[codigo de barras]></property>
<property name="descripcion"><!CDATA[descripcion]></property>
<property name="activo"><!CDATA[True]></property>
<property name="orden"><!CDATA[0]></property>
<property name="seriarizado"><!CDATA[false]></property>
<property name="serialtype"><!CDATA[simple]></property>
<property name="intangible"><!CDATA[false]></property>
</product>
</products>
.- Nueva etiqueta en la caja descripción de productos del explorador de productos.
.- En tareas recordar el usuario seleccionado del que mostrar tareas.
.- Mejorar tratamiento de menús para poder quitarlos
.- Añadido control de formularios de power-ups dinámicos mediante scripts JavaScript.
.- Desactivado servidor apache integrado para mejorar velocidad de inicio.
.- Añadidas dos funciones JavaScript para depuración: trace, debug
.- Añadida función alert a JavaScript
.- Nuevo objeto JavaScript para acceder a los campos del formulario: MyForm. Para mostrar su contenido durante el desarrollo usar trace(MyForm.ToString());
Para acceder a los campos se usa MyForm.Field('<nombre de campo>') y para las propiedades MyForm.Field('<campo>').Field('<propiedad>').Value;
Ejemplo de acceso a un campo: alert(MyForm.Field("TextBox1").Field("value").Value);
.- Nuevo objeto JavaScript para acceder a datos del entorno: Environment. Para mostrar su contenido durante el desarrollo usar trace(Environment.ToString());
Ejemplo: trace(Environment.Field("version").Value);
.- En motor JavaScript añadido limitador de ventanas emergentes.
.- En motor JavaScript añadido límite de tiempo de ejecución.
.- Añadida función close a JavaScript para cerrar el formulario.
.- Redirección de errores no capturados en todo PSFGeneric a la consola de depuración.
.- Incluidos archivos de símbolos de depuración en la instalación de PSFGeneric.
.- Añadido control Botón al editor de formularios con evento clic programable con JavaScript.
.- Añadido envió de errores no controlados a psfgeneric.com para su reparación. Solo se envía información de depuración sin enviar datos de la empresa.
.- Envió de errores opcional pudiendo desactivarlo en la configuración general.
.- Añadido listado de elementos en el diseñador de formularios de power-ups dinámicos
.- Los paneles del editor de power-ups dinámicos se recogen o despliegan automáticamente según el contexto
.- Límite de tiempo de ejecución de JavaScript configurable. Limite 0 para tiempo ilimitado.
.- Actualizar valores del objeto javascript MyForm.
.- Implementados objetos window y navigator en entorno JavaScript.
.- JavaScript cambiado a modo estricto. (Todas las variables deben declararse)
.- jQuery 1.2 funciona en su mayoría.
.- Mootools 1.4.5 funciona en su mayoría.
.- Implementar módulos JavaScript en proyectos de power-ups dinámicos.
.- Mejorada legibilidad de la consola de estado.
.- Al probar formularios en el editor las líneas de código se muestran numeradas en la consola.
.- Implementar tratamientos de todos los tipos de campos de MyForm de JavaScript.
.- Si un formulario de power-up dinámico no tiene navegador de registros no genera tabla en la base de datos.
.- Implementar componente SuperTree, incluyendo la seguridad de acceso.
.- Al agrupar facturas se muestra una ventana con todas las facturas creadas para enviarlas por mail o imprimirlas
.- Botón no usar hueco en la ventana de selección de estos.
.- Nueva pestaña histórico de albaranes autoconsumo en ficha de n/s con horómetro.
.- Nueva pestaña histórico de albaranes autoconsumo en ficha de n/s de vehículos.
.- Nuevo método Javascript getCLRObjet() para adaptar objetos internos a Javascript.
.- Nuevo método Javascript doOperation() para hacer uso de los servicios disponibles en PSFGeneric.
.- Al crear un nuevo proyecto de power-up dinámico se le añade la librería JavaScript de PSFGeneric.
.- Se permite cambiar de nombre las librerías JavaScript.
.- Editor de formularios: permitir instalar/desinstalar sin publicar
.- Editor de formularios: Borrar y mover controles con el teclado.
.- Descripción de power-ups dinámicos, en configuración, mostrar la información con formato HTML

------------o----------------
Correcciones:
.- Al crear nuevo albarán de cobro no siempre se muestra para edición.
.- Al crear nuevo pedido a proveedores no siempre se muestra para edición.
.- Al crear nuevo presupuesto no siempre se muestra para edición.
.- Al abrir ventana de albaranes de cobro siempre sale editable, igual pasa en facturas, presupuestos, etc...
.- Seguimientos de cobros a clientes y pagos a proveedores no se bloquea cuando no hay ninguna factura seleccionada.
.- Una vez reparado el fallo de coma flotante no volver a mostrar la ventana de reparación.
.- Si no se define cuenta de cobro por defecto al abrir el generador de remesas falla
.- A veces al seleccionar una tarea se le cambia la hora.
.- Limitado tamaño de imágenes de artículo a 640x480px como máximo.
.- Al abrir panel derecho del mapa no se redimensiona el contenido
.- Quitar refresco cada vez que se añade un marcador en el mapa
.- Al entrar a veces no muestra la ventana de multiservidor.
.- Al buscar en agendas de contactos el listado parpadea y es muy lento
.- Optimizada carga de todas las listas
.- Power-up municipios no aparece en la lista
.- Instalación de municipios considerablemente mas rápida
.- Al importar agenda de contactos de google no se ven los contactos
.- En la ventana de agendas se muestran las de google como google calendar
.- !!! Al aprobar presupuesto pone aproVado :_ (
.- El componente de selección de tarifa de precio no actualiza correctamente su ancho al redimensionarse
.- No es posible desinstalar un power-up dinámico
.- El administrador de power-ups dinámicos muestra la lista mal si no se definió la empresa
.- Administrador de power-ups dinámicos: Separar las opciones instalar, desinstalar y descargar
.- El instalador no copia correctamente las librerías de scintillaNET
.- No se quitan los handlers de formularios cerrados en el editor de power-ups dinámicos.
.- Quitar try {} catch {} del editor de power-ups dinámicos para que los errores sean enviados a psfgeneric.com
.- El límite de tiempo de ejecución del motor JavaScript podría saltarse haciendo llamadas a funciones de manera reiterada
.- Al pulsar el botón de prueba del editor de power-ups dinámicos si no hay un formulario abierto falla.
.- Al detener un JavaScript por exceso de tiempo no permite ejecutar ningún otro posterior.
.- La ventana propiedades del editor de power-ups dinámicos no se ve completa si no cabe en la pantalla
.- El navegador de registros de los power-ups dinámicos falla si se selecciona por programación un registro inexistente.
.- Al probar un formulario no se ejecuta la última modificación, sino la última vez que se guardo
.- Si hay un error en JINT el seguimiento de tiempo de ejecución no se para.
.- Al abrir un formulario de power-up dinámico con un solo control de navegación no se habilitan los botones al añadir registro.
.- El servicio de contactos "contacts::getagenda" permite recuperar cualquier nodo supertree
.- TaskBar muestra una ventana de error que impide que la aplicación sigua funcionando sin supervisión
.- Si se borra el archivo de un power-up dinámico instalado da error de archivo no encontrado al cargar.
.- Al cierre de un servicio si se genera automáticamente el último albarán de cobro se hace en blanco.
.- En algunos casos al seleccionar un nº de serie no sale su nombre extendido correctamente.
.- Al usar un hueco de contador de documentos si no se escogió ninguno usa cero.
.- Un n/s con ITV pasada anteriormente no puede pasar nuevas, la fecha no se cambia.
.- Notas de cobro no admite valores negativos.
.- Añadida puntuación de miles a la cadena de formato de moneda en toda la aplicación. (Gracias a Dani de Instant Buy por su aportación)

Funciones de PSFGeneric 1.6

PSFGeneric - Núcleo

Capacidad para trabajar tanto en red, multipuesto, como en un único ordenador, monopuesto.
Integra servidores necesarios para el funcionamiento monopuesto
Instalación automática en la base de datos, incluida su creación si fuera necesario, y en el servidor de ficheros
Acceso rápido a calculadora de Windows
Calculadora de letra de NIF español
Validador de cheques bancarios
Comprobación de números de cuentas bancarias
Navegador web integrado
Bloquear terminal para ausentarnos y proteger la información en pantalla con nuestro usuario y contraseña
Cada usuario puede cambiar su clave
Cola de envío de mails
Conexión directa con servidor de emails
Envío de emails con copia y copia oculta automática independiente, y oculta, de la configuración del mail enviado
Cola transparente distribuida de envió de mails, a mas usuarios mas envíos simultáneos (todos los usuarios envían mails de la cola aunque no tengan acceso a ella)
Gestión por parte del usuario de la cola de envío de mails
Plantillas de emails
Optimización de tablas en la base de datos
Consola de estado
Panel de opciones
Integración con conversores de HTML a PDF para documentos
Puede conectarse a múltiples servidores abriendo copias distintas
Mantiene listado de servidores a los que conectarse
Grupos de usuarios según áreas para permisos
Permisos de acceso para cada usuario mediante perfiles
Permisos de acceso para cada usuario por documento
Permiso de superadministrador para tener todos los demás permisos
Permiso de conexión para usuarios
Capacidad para instalar power-ups dinámicos, módulos creados por los usuarios
Mantenimiento de la conexión a la base de datos aunque el servidor tenga un tiempo máximo de conexión
Crear mail nuevo desde la cola de envío de mails
Interfaz dividida en paneles intercambiables y distribuibles en varios monitores o integrados en la interfaz principal
Panel de accesos rápidos a funciones
Panel de menú principal
Barra de tareas similar a Windows para acceso a los paneles abiertos
Navegación por pestañas para los paneles abiertos
Ampliación de funciones mediante programación NET Framework 3.5 o inferior

Configuración de empresas

Asistente de creación de empresas a gestionar
Empresas enlazadas a ficha general de contacto de empresa, control de stocks, catalogo de productos, agendas de contactos de clientes, proveedores y personal, plantillas de presupuestos, albaranes y facturas, cuentas económicas, impuesto por defecto y siete contadores para documentos, anuales o globales
Permisos por usuario de acceso a los datos de cada empresa

Administración

Paneles de servicios de cobro mensual
Servicios enlazables a control de stocks en almacén y control de números de serie
Paneles de servicios configurables en cuanto a exigencia de firma de documentos de entrega, contratos y devoluciones
Documentos impresos según plantillas configurables
Paneles de servicios puede configurarse para trabajar con un único número de serie por servicio
Paneles de servicio pueden cambiar la etiqueta de sus botones
Ventana de acceso rápido a distintos paneles de servicios, con opción de abrir varios al mismo tiempo
Servicios pueden estar abiertos, en ejecución o cerrados
Los servicios pueden ordenarse por fecha de apertura, por cliente o por número de documento
Ficha completa de cliente, con dirección de facturación y de trabajo, para servicios
Albarán de entrega, de devolución y contrato para cada servicio
Entregas a cuenta en servicios
Programador de avisos, mediante tareas, en cada servicio
Generador automático de albaranes de cobro con cálculo de días o por copia literal del albarán de entrega
Campo fecha de cierre estimada para cálculos automáticos y avisos de disponibilidad
Visor de archivos c19 de remesas de efectos bancarios (cobros)
Configuración de impuestos y recargos con impuesto por defecto configurable
Varias tarifas de precios, definidas por el usuario
Accesos directos a agendas de gestión con permisos superpuestos a los de la agenda que les da soporte y permisos especiales para crear o modificar contactos
Agendas de gestión con filtro de búsqueda de contactos
Todos los documentos de gestión etiquetables y con notas y observaciones
Acceso directo a agenda de proveedores con permiso independiente
Gestión de facturas de proveedores y seguimiento de pagos
Acceso directo a agenda de clientes con permisos independientes
Presupuestos a clientes etiquetables y con notas
Albaranes de ventas etiquetables y con notas
Facturas a clientes etiquetables y con notas, con seguimiento de pagos
Asistente para agrupación de albaranes de venta en facturas a clientes
Asistente de generación de remesas de cobro bancarios a clientes
Grafica anual comparativa de cobro a clientes y facturación
Panel de seguimiento de facturas cobradas, con totales de pendiente de cobro, cobrado y total facturado
Calculo del índice de morosidad por cliente o global por periodos seleccionables
Panel de histórico de facturas de a clientes relacionadas con números de serie
Panel de seguimiento de números de serie en paneles de servicios a clientes, enlazado a servicio de mapas para marcar la dispersión geográfica de las direcciones de trabajo

Listados de artículos para documentos tipo factura

Con desglose de impuestos y recargos
Enlazado a catalogo de productos y números de serie
Libertad para concepto libre
Comentarios
Referencias enlazables a números de serie para estadísticas
Incremento / decremento rápido de cantidades en líneas

Almacén - Control de stocks

Seguimiento de almacén según modelo de asientos de partida doble por artículo
El asistente de empresas crea tres almacenes por defecto, pero no hay límite en el número de ellos que el usuario puede crear
Paneles de existencias, números de serie en almacén e histórico de movimientos
Filtro de histórico de movimientos por nº de serie
Enlazado a propiedades de número de serie
Asientos de movimientos de almacén con etiquetas descriptivas y valor orientativo del producto en ese movimiento
Permite ajustes manuales de almacén
Filtros por fecha y ejercicio
Favoritos web con inicio de sesión automático
Enlaces web favoritos con configuración de formulario POST para login automático
Plantillas de login automático para webs Wordpress
Impresión de existencias en almacén
Permite guardar el listado de existencias en formato HTML o PDF
Envío de listado de existencias en PDF por mail

Catalogo de productos

Divisible en carpetas
Permite copiar, cortar y pegar uno o varios artículos
Referencia, nombre, precio por defecto, impuesto, recargo, código de barras, visibilidad en caja registradora, y tipo de artículo en propiedades de artículo
Tres tipos de artículos: intangibles que no se mueven en almacén, tangibles sin número de serie y tangibles con número de serie que si se mueven en almacén
Tres tipos de números de serie de artículo: sin propiedades especiales, vehículos automotrices en general, y vehículos automotrices con horómetro
Descripción por artículo
Precio distinto para cada tarifa de precios definida por el usuario
Foto de artículo

Gestor de archivos remotos

Gestión de plantillas definibles para todos los usuarios
Almacén de adjuntos de emails
Almacén de fotos de productos
Basado en servidores FTP
Soporte para abstracción a otros apartados del programa

Gestor económico básico

Multiempresa
Cuentas agrupadas a un nivel
Libertad para crear tantas cuentas como se requiera
Basado en partida doble para una única moneda
Filtros de fecha y ejercicio
Requiere cierre y apertura de ejercicios
Grafica de extracto de movimientos en el mismo listado de estos
Impresión de movimientos económicos por cuenta
Permite guardar los movimientos económicos en formato HTML o PDF
Envío de movimientos en PDF por mail

Google Data

Conectado a servicios de datos de Google
Conectado a agenda de contactos de Google

Imprimir catalogo

Impresión de artículos visibles en catálogos
Cabecera definible por el usuario
Columnas definidas por el usuario
Permite guardar el catalogo en formato HTML o PDF
Envío de catálogos PDF por mail

Servicios de mapas

Conectable a más de 20 servicios de mapas online
Posicionamiento por latitud / longitud indicada por el usuario
Posicionamiento por dirección indicada por el usuario
Interactividad con el ratón o táctil
Múltiples capas ocultables por el usuario

Copias de seguridad de bases de datos

Configuración de copias de seguridad automatizadas a múltiples servidores de datos MySQL
Copias de seguridad programables para copias diarias, semanales o por días de la semana, o mensuales o por día del mes, con hora de inicio
Permisos de acceso a configuración de copias de seguridad y de ejecución, el usuario que más tiempo pasa conectado podría hacer las copias sin poder programarlas o detenerlas

Agendas de contactos

Permisos de acceso global a agendas de contactos
Permisos de acceso específicos para cada agenda
Creación de tantas agendas como se requiera
Sin límite de contactos por agenda
Ayuda emergente en el visor de agendas
Filtro de agenda
Búsqueda en todas las agendas que puede ver el usuario
Fichas de contacto con nombre, apellidos, razón social, fecha de nacimiento, nif/cif, pasaporte, nº seguridad social, índice de minusvalía, enlazado a contacto presentador y contacto al que contactar, si aplicar recargo de equivalencia y notas
Sin límite en el numero de direcciones postales, teléfonos, cuentas bancarias o correos electrónicos asociadas a un contacto (Todos con valor por defecto definido por el usuario)
Envío directo de mail a un contacto
Envío de mail a todos los usuarios de una agenda (a modo de boletín informativo)

Controlador de números de serie

Panel de administración de números de serie conocidos por el sistema
Iconos distintos según el tipo de número de serie
Números de serie de tipo automóvil genérico con matricula, fecha de matriculación, marca, si es eléctrico, fecha de fabricación, color, modelo, actividad principal, notas, póliza de seguro, póliza de circulación, alertas de mantenimiento configurables (para aceite de motor, filtro de aceite, filtro de combustible, neumáticos, frenos, suspensiones, correa de distribución, bujías, dirección y refrigerante), seguimiento de kilómetros recorridos, enlazado a propietario y usuario habitual.
Números de serie de tipo automóvil con horómetro con matricula, fecha de matriculación, marca, si es eléctrico, fecha de fabricación, color, modelo, actividad principal, notas, póliza de seguro, póliza de circulación, alertas de mantenimiento configurables (para horas de motos, horas de hidráulico y horas de combustible), seguimiento de horas de trabajo, enlazado a propietario y usuario habitual.
Fichas de productos con pestaña de histórico de movimientos de almacén
Seguimiento de inspecciones técnicas de vehículos según tipo asociado (tipos de vehículos para ITV según los define VEIASA)
Estudio económico de rentabilidad de números de serie de tipo vehículo general o con horómetro
Alertas y prealertas por vencimiento de pólizas de seguros, inspecciones obligatorias y mantenimientos

Editor de Power-ups dinámicos

Creación de proyectos con varios formularios
Asociados a nombre, empresa y web del autor
Indicador de versiones con incrementos automáticos
Asociado a versión de PSFGeneric
18 tipos de campos básicos y controles de agrupación
20 tipos de campos complejos de empresa y controles de navegación
Formularios integrados en paneles de PSFGeneric o en forma de diálogos
Integración con menús definidos por el usuario
Permite guardar y cargar formularios de forma independiente para usarlos como plantillas
Integración de iconos e imágenes
Decenas de propiedades de campos y controles
Compilador de power-ups dinámicos y publicador para otros usuarios

Siglas de vías

Configuración de siglas de vía con asignación de código abreviado

Municipios

Múltiples países
Importación / exportación de países, provincias y municipios
Editor de municipios
!!Gestor de tareas
Alertas de tareas pendientes de completar
Tareas con fecha y hora de inicio y vencimiento, usuario responsable, prioridad primaria y secundaria, color, asunto, descripción y lista de asistentes
Vista grafica por días, semanas, semanas laborales, meses o años y periodos desde 5 a 60 minutos
Agenda de tareas en modo listado
Puede ver o asignarse tareas a otros usuarios del sistema

Configuración de tickets de caja

Permite definir varias cabeceras y pies por ticket, limitados por fechas y orden entre ellos
Los tickets usan plantillas con macros definidas con el controlador de impresora
Impresión de tickets de pruebas
Según modelo de impresora se permite: alineación de textos, impresión en negro o rojo, saltos de línea y separadores
Cuerpo de ticket configurable

Conectividad impresoras familia Epson TMU-220

TPV - Caja registradora

Editor de locales con barra, tres tipos de mesas y paredes
Local permite cambiar el nombre de todos los elementos
Cada elemento del local representa una cuenta distinta, salvo las paredes
Multicuenta simultanea, con recuperación ante reinicios inesperados
Códigos de barras
Lista rápida con fotografías de artículos
Búsqueda por categorías de artículos
Cobros por tarjeta, en metálico, o invitaciones
Apertura rápida del cajón portamonedas
Incremento / decremento rápido de cantidades en líneas de concepto
Función completa en terminales táctiles


Last edited Jan 13, 2015 at 3:12 PM by psf, version 43