[pyar] [OT] Consulta implementacion de un grafo de categorias

Rafael E. Ferrero rafael.ferrero en gmail.com
Mar Ago 6 11:20:11 ART 2013


El 6 de agosto de 2013 11:17, Rafael E. Ferrero
<rafael.ferrero en gmail.com>escribió:

> El 6 de agosto de 2013 10:22, Pablo Ziliani <pablo en kultroom.com> escribió:
>
>  Hola Rafael,
>>
>> Evidentemente ya tuviste una respuesta satisfactoria. Igual no te escribo
>> con una solución sino para plantearte la siguiente duda: ¿por qué
>> categoría? empleador y proveedor no me parecen buenos ejemplos de categoría
>> (mucho menos de tag), más bien lo que parece describir es una relación, con
>> la empresa o al menos con la entrada en el directorio de contactos. Esa
>> relación podría (o no) establecerse a través de terceras entidades, pagos,
>> altas, facturas, remitos, ...
>>
>> En mi cabeza un contacto puede ser Médico, Farmacia, o Clínica pero si es
>> proveedor, empleado o cliente no lo determina el mismo mecanismo que
>> establece que algo es "rojo", "azul" o "verde" o si es "importante", de
>> "trabajo", "personal", etc. Las posibles relaciones son un conjunto cerrado
>> determinado de antemano (a diferencia de los tags o las categorías que
>> pueden ser creados y borrados sin afectar demasiado al sistema).
>>
>> En fin, más que una duda terminó siendo una opinión de alguien
>> probablemente poco calificado para emitirla :)
>>
>> Saludos,
>> Pablo
>>
>>
>> On 08/05/2013 10:17 AM, Rafael E. Ferrero wrote:
>>
>>  Buenas !!... Se me planteó hacer que a ciertas entidades de un modelo
>> se le puedan asignar categorías. En principio serían categorías de la clase
>> Contactos (de la empresa), planteamos que toda persona relacionada de una u
>> otra manera por la empresa la cargamos como contacto (ya sea empleado,
>> proveedor o cliente) a su vez algunos de estos contactos requieren
>> información específica por lo que extendemos la clase contacto a por
>> ejemplo Médico, Farmacia, entre otros.
>>  Volviendo al tema de las categorías se me planteo que sobre un contacto
>> se le puedan asignar categorias si es un proveedor se le asigne esa
>> categoria, si es médico tambien se le asigne dicha categoria... el problema
>> que surge es que entre las categorias hay ciertas restricciones, por
>> ejemplo un contacto con la categoria de empleado no se le debe poder
>> asignar la categoría de proveedor.
>>  Se me ocurrió hacer un árbol NO binario donde un nodo puede tener más
>> de un padre y más de un hijo pero no se me ocurre como aplicar estas
>> restricciones de forma elegante.
>>  Alguien tiene una punta por donde pueda investigar? o alguien ya lidió
>> con esto y sabe de alguna librería donde obtener el algoritmo? (es para un
>> sistema en Free Pascal pero ya me lo recorri a todo google y no encontré
>> mucho... lo tendré que hacer yo)
>>
>> Gracias por el tiempo de antemano.
>>
>>  Saludos
>>
>>
>>
>>   --
>> Rafael E. Ferrero
>> Claro: (03562) 15514856
>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.arhttp://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
> Hola Pablo, si bien las respuestas anteriores me ayudaron en algo, la
> implementación obviamente la termine ideando yo de acuerdo a mis
> necesidades... networkx excede en muchísimo mis requerimientos y encima
> tengo que implementarlo en Freepascal.
>
> Por otro lado el hecho de que a un contacto de la empresa (y repito, no
> solo los contactos sino, también, los documentos, etc) sean tratados como
> categarías en un principio viene de acuerdo a los requerimientos que nos
> fueron planteados.
>
> Si bien, como decís vos, un cliente o un proveedor puede ser tal de
> acuerdo a si le hice o me hizo una factura.
>
> A ver si me explico mejor, tengo la clase madre de todas las personas
> (fisicas y/o juridicas de la empresa) y la llamamos contactos  de la cual
> heredan luego el resto de las clases y de la cual cada una cuenta con más
> información:
>
> Contactos
> |||||_ Medicos
> |||    ||_Especialistas
> |||    |_Socios
> |||__Empresas
> |||__Farmacias
> ||__Clinicas
> |___Titulares
>        |_Adherentes
>
> Así nomás podes ver que los medicos tienen todos los datos comunes de un
> contacto, pero tambien tienen todos los datos de medicos, si es socio
> tambien tendrá más información y si es especialista otra serie más.
> Cómo médico debe ser unicamente proveedor, pero nada le impide ser cliente
> (o sea titular de un plan)
>
> Cada clase puede tener muchas categorias (por ejemplo los adherentes
> pueden tener N categorias asociadas, que hoy hay algunas establecidas pero
> tal vez mañana tengan otras por la misma dinamica de la ley quen nos regula
> (y esto es solo la punta del iceberg), también es (sobre todo en los
> adherentes) que si tienen X categoría no se le puede asignar la categoria Y.
>
> Para simplificar la emisión de resúmenes que son muchos y variables,
> decidimos que era más facil esforzarnos mas en tener una agrupacion de
> categorias (o llamalo como quieras) para clasificar las entidades y luego
> poder filtrar por ahí... si queres un listado o resumen de todas las
> facturas emitidas a clientes empresas o clientes titulares o toda las
> deudas con Proveedores Medicos o listar todas las deudas con Proveedores
> Medicos que son a su vez Clientes Titulares y en base a ello obtener las
> diferencias a favor o encontra, etc, etc, etc...
>
> Por el momento me parece que puedo hacer así:
>
>
> restricciones_categorias
>                                                                     *
>         *
>                                                                     |
>         |
>                                                                     |
>         |
>
> 1        1
> Contactos 1------* categorias_contacto *------1 categorias 1------*
> agrupaciones_categorias *------1 restriccion_intergrupos
>                                                                     1
>
> 1
> 1     1
>                                                                     |
>         |
>
> |      |
>                                                                     |
>
> |
> |      |
>                                                                     *
>
> *
> *     *
>
> relaciones_categorias
> restricciones_entregrupos
>
>
> En restricciones_categorias tomo dos categorias, categoria1 es la que se
> desea agregar, la categoria2 es la que debe o no debe estar entre las
> categorias ya elegidas para la entidad, es decir si deseo agregar la
> categoria titular, la categoria cliente debe estar en la lista de
> categorias o bien si elijo la categoria empresa no debe tener la categoria
> consumidor final.
>
> En relacioens_Categorias solo tengo la relacion entre una categoria hija y
> sus padres.
>
> Las categorias pretendo poder agruparlas en conjuntos y que entre dicho
> conjunto se cumplan condiciones logicas, es decir si pongo en un conjunto
> las categorias de iva, las mismas tendran una condicion logica XOR ya que
> no puede haber más de una de esas categorias elegidas.
> A su vez un conjunto puede ser subconjunto de uno mayor y la relacion
> entre estos conjuntos también tendrían una condicion logica, el ejemplo
> seria un conjunto que tenga a la categoria consumidor final y al
> subconjunto condiciones de iva, en este caso la IVA Responsable Inscripto
> estará en dos grupos, en este caso la condicion de categorias dentro de
> cada grupo sería XOR y entre los grupos seria OR ...
>
> Es medio complicado explicarlo aca, pero espero que se entienda aunque sea
> un poco, asi si estoy mal alguien me corrija, y si estoy bien tal vez a
> alguien le sirve.
>
> Saludos a todos que son unos GROSOS !! (no se imaginan todo lo que aprendí
> leyendo mails por acá y en el chat)
>
> --
> Rafael E. Ferrero
> Claro: (03562) 15514856
>

Capaz que el DER salio medio mal :P ... si les interesa se los paso en .png

-- 
Rafael E. Ferrero
Claro: (03562) 15514856
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130806/16e2ab9a/attachment-0001.html>


More information about the pyar mailing list