vGestión - % de impuesto.


(ame) #1

Buenos días,

 

Una pregunta, tal como está diseñado el modelo de datos de vGestión, ¿cómo puedo obtener el porcentaje de impuesto de un determinado artículo como contenido inicial de un campo?

Por ejemplo, tengo una tabla LINEAS_TICKET donde cada registro representa una línea de un ticket. Por cada línea guardo el ticket al que pertenece (maestro), el artículo del que se trata (maestro), las unidades del artículo (numérico) y el precio (indirecto real). Pero este precio es sin IVA, y me gustaría saber cómo crear otro campo que tenga el % de impuesto partiendo de la información de la tabla ART de vGestión.

Lo he intentado con indirecto real también, pero no consigo dar con la resolución. Tampoco sé qué poner en contenido inicial... es que no sé como navegar a través de las tablas para conseguir lo que quiero.

A ver si me podéis echar una manita.

Un saludo.

 

José Luis.


([N2] overall) #2

Pues deberás utilizar el maestro del artículo para poder recoger el porcentaje: #ART.FIS.GR1_TP1_POP

Saludos


Overall

Luis Palomo

overall@massoicb.com

www.overall-bcn.com/v7


(ame) #3

Un segundo, Overall, ¿por qué coges por defecto la fiscalidad del tipo 1? ¿Cómo sabes si no pertenece a la del tipo 2 o 3? Ahí es donde tengo el problema.

 

Gracias y un saludo.


(ame) #4

Overall, se me está ocurriendo una cosa:

¿Qué te parece si en la tabla ART añado un campo que sea "porcentaje_impuesto" y como contenido inicial sea una fórmula "choose"?

Sería algo así como:

choose(#VTA_FIS_GR1_TIP = 1, #FIS.GR1_TP1_POP, choose(#VTA_FIS_GR1_TIP = 2, #FIS.GR1_TP2_POP, choose(.........)))

¿Cómo lo ves?

Además se podría ampliar para que contemplara las fechas de cambio de impuesto (aunque bueno ya en la fecha en la que estamos esto da igual...).

Saludos.


(ame) #5

Pues aquí está el chorizo:

 

choose(currentDate() < #FIS.GR1_FCH, choose(#VTA_FIS_GR1_TIP = 1, #FIS.GR1_TP1_POA, choose(#VTA_FIS_GR1_TIP = 2, #FIS.GR1_TP2_POA, choose(#VTA_FIS_GR1_TIP = 3, #FIS.GR1_TP3_POA, 0))), choose(#VTA_FIS_GR1_TIP = 1, #FIS.GR1_TP1_POP, choose(#VTA_FIS_GR1_TIP = 2, #FIS.GR1_TP2_POP, choose(#VTA_FIS_GR1_TIP = 3, #FIS.GR1_TP3_POP, 0))))

 

Por si a alguien le sirve.

 

Al final pensaba que se podía hacer mediante indirectos u otro tipo de enlaces, vamos, algo más sencillo y no tan enreversao como el "choose". Pero bueno... ahí queda eso.

 

Un saludo.


([N1] Velasco) #6

Buenas ame.

Sin haber visto vGestión , tan sólo una recomendación.

A mi, personalmente intento evitar poner en un contenido inicial una fórmula con choose. Menos esa tan grande como la tuya. Date cuenta que Velneo te va a evaluar toda la fórmula aunque cumpla la primera de las opciones.

También podrías crearte una función. En esa función comprobar todo lo que necesites y poner esa fórmula de contenido incial del campo.

Un saludo.

 

 


Jorge Velasco Fernández

jvelasco@theseedsc.com

www.theseedsc.com


(ame) #7

Hola Jorge,

 

Te refieres a esto:

[attachment=10863,1042]

Y así es cómo lo tenía, pero creo que es mucho más ineficiente realizar un "cargar lista", seleccionar la ficha, después evaluar las condiciones, retornar el dato, y, luego aparte, en el campo de la tabla poner como contenido inicial una llamada a una función creo que también degrada bastante el rendimiento del sistema que poner simplemente una orden "choose" aunque parezca muy compleja.

De todas formas desconozco las implementaciones internas de Velneo, sé que el lenguaje de programación que lleva de trasfondo es C++, y, siendo así, no entiendo por qué la orden "choose" sigue evaluando las demás expresiones aún cuando la primera es cierta. En C/C++, las estructuras selectivas como IF evalúan sus expresiones en lo que se conoce como "evaluación en cortocircuito", esto es, que en el momento en que se detecta que una expresión es verdadera, se deja de mirar el resto de expresiones.

 

Un saludo.

 


([N1] Velasco) #8

Buenas ame.

Asi me parece bien ;)

Esa función la pones como contenido incial del campo porcentaje y listo.

Un saludo.

 

 


Jorge Velasco Fernández

jvelasco@theseedsc.com

www.theseedsc.com


(ame) #9

Lo siento, edité el anterior post porque se me olvidó comentar algunas cosas.


([N2] overall) #10

Hola Jose Luis,

En la tabla Artículos tenemos el campo #VTA_FIS_GR1_TIP, que es el que nos define el tipo de IVA y dar con su porcentaje, éste es el valor que deberemos poner como contenido inicial en la tabla LINEAS_TICKET. La función que defines te servirá para poder sacar el porcentaje.

El planteamiento de la función lo veo correcto. También podrías coger el porcentaje de la cabecera de las LINEAS_TICKET, en este caso actuaría sobre el propio documento.

Saludos


Overall

Luis Palomo

overall@massoicb.com

www.overall-bcn.com/v7


(ame) #11

Sí, gracias Overall. Ya lo tengo funcionando todo O.K. Lo he probado usando tanto la función como la orden "choose" y ambas son válidas, aunque bueno, no estaría de más saber cuál era la más óptima desde el punto de vista del rendimiento. Pero es igual.

Lo que no te he entendido muy bien es en lo último que has puesto:

También podrías coger el porcentaje de la cabecera de las LINEAS_TICKET, en este caso actuaría sobre el propio documento.

¿Podrías extenderlo un poco más?

 

Saludos.


([N1] Velasco) #12

Buenas.

En cuanto a lo de la opción mas óptima debería ser, desde el momento en que el choose evalúa toda la función, la opción de llamar a una función que te devuelva el valor.

Un saludo.

 

 


Jorge Velasco Fernández

jvelasco@theseedsc.com

www.theseedsc.com


([N1] comercial) #13

Hola. Yo miraría esto, a ver que te parece: http://cagonmimantu.wordpress.com/2010/04/05/programar-es-prever/


([N2] overall) #14

Hola Jose Luis,

La tabla LINEAS_TICKET tendrá una cabecera de TICKETS, de la que podremos sacar los porcentajes (FIS_GR1_TP1_POR, FIS_GR1_TP2_POR, etc...) de esta manera y con la función que has creado apuntando a TICKETS te serviría igual, con la particularidad que podríamos personalizar el porcentaje de los tipos de impuestos de la cabecera.

Es solo una opinión más.

Saludos.


Overall

Luis Palomo

overall@massoicb.com

www.overall-bcn.com/v7