Como calcular los descuentos sucesivos

2,542 views
Skip to first unread message

ZeRoberto

unread,
Feb 18, 2013, 7:38:03 PM2/18/13
to publicesvfoxpro
Alguien sabe como se calcula los descuentos sucesivos?

10%+5%+2%+n%

Encontré en dos formas pero no se cual es la correcta

Clear

*/-- SubTotal
lnSubTotal = 16.5

*/-- Tipo 1
Dimension laDscto(3)
laDscto(1) = 10
laDscto(2) =  5
laDscto(3) =  2

lnSaldo = 100
For lnItem = 1 To 3
    lnSaldo = lnSaldo - (lnSaldo * (laDscto(lnItem) / 100))
EndFor
lnDscto = 100 - lnSaldo
lnDsctoT1 = Round((lnSubTotal * lnDscto) / 100, 2)

*/-- Tipo 2
lnDsctoT2 = (lnSubTotal * laDscto(1)) / 100
If laDscto(2) > 0
   lnDsctoT2 = lnDsctoT2 + (lnSubTotal * laDscto(2)) / 100
EndIf
If laDscto(3) > 0
   lnDsctoT2 = lnDsctoT2 + (lnSubTotal * laDscto(3)) / 100
EndIf

*/-- Resultados
? "SubTotal:", lnSubTotal
? "Dscto1  :", laDscto(1)
? "Dscto2  :", laDscto(2)
? "Dscto3  :", laDscto(3)
? "Tipo 1 =>", lnDsctoT1
? "Tipo 2 =>", lnDsctoT2

Arnaldo Toledano

unread,
Feb 18, 2013, 9:17:28 PM2/18/13
to publice...@googlegroups.com
Yo lo tengo de la siguiente manera.

Tengo un PRECIO DE LISTA
Y después tengo N texbox con descuentos como lo planteas vos.
En el VALID de cada texbox de DESCUENTO tengo
Thisform.............ArtPreCos=CalculaCosto(PrecioLista,DtoNro1,DtoNro2,...,DtoNron)
Obviamente hago referencia al TEXBOX para precioLista,DtoNro1, etc.

Como "previamente" cada descuento le he asignado un  VALUE=00.00, no tengo problemas.
Y la función CalculaCosto es así.


*---------------------------------------------------------------------
                        FUNCTION CalculaCosto
                       
*Obj.:Calcular el Costo de un articulo a partir de un precio del
*      proveedor mas n descuentos acumulaticos
*--------------------------------------------------------------------                       
PARAMETERS PreLi, Dto_1,Dto_2,Dto_3,Dto_4,Dto_5,...,Dto_n


Costo = PreLi - (Dto_1 * PreLi / 100 )
Costo = Costo - (Dto_2 * Costo / 100 )
Costo = Costo - (Dto_3 * Costo / 100 )
Costo = Costo - (Dto_4 * Costo / 100 )
Costo = Costo - (Dto_5 * Costo / 100 )
. . .
Costo = Costo - (Dto_n * Costo / 100)
RETURN Costo
ENDFUNC
--
Arnaldo Toledano Tesys Informática Córdoba Argentina

Carlos Miguel FARIAS

unread,
Feb 19, 2013, 6:01:51 AM2/19/13
to publice...@googlegroups.com
La formular varia si descontas la suma de los porcentajes o el productorio de los porcentajes.
Si a 100 le restas 10% y luego otro 10% sobre lo que te quedo
100 - 10% = 90 y 90 - 10% = 81
En cambio si
100 - 20% = 80 (aca sumo los descuentos, y los resto en un paso).
Esa es una regla de negocio.
Saludos: Miguel, Santa Rosa, LP

Norberto

unread,
Feb 19, 2013, 10:25:23 AM2/19/13
to publice...@googlegroups.com
lnSubTotal=100
lnDtoTotal= 0
DIMENSION laDto[3]
laDto[1] = 10
laDto[2] =  5
laDto[3] =  2
FOR i=1 TO ALEN(laDto)
lnDtoTotal = lnDtoTotal + (lnSubTotal - lnDtoTotal) * (laDto[i]/100)
ENDFOR
?lnSubTotal
?lnDtoTotal
?lnSubTotal - lnDtoTotal

Bryan

unread,
Feb 19, 2013, 10:28:14 AM2/19/13
to publice...@googlegroups.com

HernanCano

unread,
Feb 19, 2013, 10:30:59 AM2/19/13
to publice...@googlegroups.com
Roberto:
Ambos métodos son correctos. El cliente es quien dice cuál está usando, o cuál se ajusta más a sus procedimientos actuales.
Si ellos tampoco saben, es porque tú no les estás preguntando en la forma correcta: pídeles que lo hagan a mano y luego comparas los resultados (varios ejemplos). Alguno de los dos métodos coincidirá.
Si --eventualmente-- tampoco concuerda, sistematiza en que ellos hagan: entiende lo que hacen y lo programas.

Tesys:
Tu método es el mismo que el uno de Roberto:
Roberto obtiene el valor del descuento; tú obtienes el valor del neto.
.

Daniel Sánchez

unread,
Feb 19, 2013, 8:22:05 PM2/19/13
to Comunidad de Visual Foxpro en Español
Yo utilizo este método para obtener descuentos consecutivos o múltiples es decir 20+10 o 20+10+5 o cualquier otra combinación

NDF1 = (100-THISFORM.NDESCUENTO1.VALUE)/100
NDF2 = (100-THISFORM.NDESCUENTO2.VALUE)/100
NDF3 = (100-THISFORM.NDESCUENTO3.VALUE)/100
THISFORM.NTOTALDESCUENTO.VALUE = ABS(((NDF1*NDF2*NDF3)-1)*100)

para lo cual tengo un form con 3 text donde coloco el valor de los descuentos a aplicar en este caso trabajo con 3 descuentos sucesivos y el resultado lo muestro en un text  ntotaldescuento.

Saludos

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

Ricardo

unread,
Feb 20, 2013, 9:29:08 PM2/20/13
to publice...@googlegroups.com
Que tal Roberto

Hace un tiempo desarrolle esta funcion. La misma te calcula el coeficiente de la suma y/o resta de varios porcentajes (hasta 10) devolviendote el porcentaje equivalente

FUNCTION CoeficientePorcentaje(nValor1, nValor2, nValor3, nValor4, nValor5, nValor6, nValor7, nValor8, nValor9, nValor10)
    LOCAL I, nValor, nMatValor, nCalculo, nMatValor
   
    DIMENSION nMatValor(10)
    FOR I=1 TO 10
        nValor = "nValor" + ALLTRIM(STR(I))
        IF VARTYPE(EVALUATE(nValor)) = "L"
            EXIT
        ENDIF
         nMatValor(I) = EVALUATE(nValor)
    ENDFOR        
    DIMENSION nMatValor(I-1)
    nCalculo = 100 + (100*nMatValor(1)/100)
    FOR I=2 TO ALEN(nMatValor)
        nCalculo = nCalculo + (nCalculo*nMatValor(I)/100)
    ENDFOR
    RETURN (nCalculo-100)
ENDFUNC


Ejemplo:
CoeficientePorcentaje(5,15,-3,20)

= 40,553

precio * 40,553/100

Espero te sea de utilidad

Saludos
Ricardo

ZeRoberto

unread,
Feb 22, 2013, 9:16:21 PM2/22/13
to publice...@googlegroups.com
Excelente gracias a todos, voy a revisar los ejemplos

Saludos
Reply all
Reply to author
Forward
0 new messages