FoxPro/Visual FoxPro - Reemplazar valores de una tabla desde una fecha estimada hasta hoy

 
Vista:
Imágen de perfil de paulaltamiranom

Reemplazar valores de una tabla desde una fecha estimada hasta hoy

Publicado por paulaltamiranom (2 intervenciones) el 16/07/2017 14:21:50
Estimados todos,

Me encuentro con una incógnita que para muchos debe ser súper sencillo de resolver. El caso es que en mi país se realizó el cambio del IVA del 14% al 12%, y en los sistemas de las computadoras de mis clientes se había creado el código C14% para el tipo de compra, pero ahora deseo cambiarlo puesto que regresamos al 12%, así que debería llamarse C12%. Ese cambio sé como hacerlo fácilmente en la base de datos pero, no establcer que fue desde el 01/06/17 hasta 16/07/17 y los registros que vendrán.

Espero me puedan ayudar, en verdad sé muy poco de programación y gracias a estos foros he aprendido a solucionar algunos problemas.

Saludos Cordiales.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Reemplazar valores de una tabla desde una fecha estimada hasta hoy

Publicado por Fidel José (657 intervenciones) el 16/07/2017 15:24:37
Si en tu país acostumbran a cambiar las alícuotas a menudo, te conviene tener una tabla de alícuotas y vigencia con cuatro campos:
CodigoIMpuesto, FechaInicial,FechaFinal, Alícuota. Como la última es generalmente, indeterminada, le pones una fecha en la que seguramente estaremos todos muertos: 31/12/2200.
La búsqueda en esa tabla es sencilla

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
*<llamada>
lnAlicuota = Get_Alicuota(date(), lcCodiva)
*</llamada>
 
PROCEDURE Get_Alicuota
LPARAMETERS tdFecha,tcCodigoImpuesto
 
lnAlicuota = 0
USE TABLA_ALICUOTAS IN 0 AGAIN ALIAS TABLIMP SHARED
 
SELECT TABLIMP
SCAN FOR CodigoImpuesto == m.tcCodigoImpuesto ;
	AND BETWEEN(m.tdFecha,FechaInicial,FechaFinal)
	lnAlicuota = Tabla.Alicuota
ENDSCAN
USE IN TABLIMP
RETURN m.lnAlicuota
ENDPROC

Con un bucle similar puedes recorrer to tabla de compras y cambiar lo que necesites
1
2
3
4
5
6
7
8
lnAlicuota = 14
ldFechaInicial = DATE(2017,6,1)
ldFechaFinal = DATE(2017,6,16)
SELECT tabla_Compras
SCAN FOR BETWEEN(FECHA,ldFechaIncial,ldFechaFinal)
	replace alicuota WITH lnAlicuota
	* otros calculos
ENDSCAN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Paúl

Reemplazar valores de una tabla desde una fecha estimada hasta hoy

Publicado por Paúl (2 intervenciones) el 16/07/2017 15:47:05
Wow, no me esperaba una respuesta de tal magnitud. Lo poco que he aprendido de programación es sobre como usar el comando replace, filter to, y unos dos más, pero nunca he codificado nada así que se me dificulta crear todo esto. No es que se cambie a menudo la tarifa del IVA sino más bien muy poco, puesto que esta fue una solución del estado para generar más ingresos. Sin embargo, volviendo al tema, esto es lo que me sale en la base de datos compras.dbf:

fecfac____| tipocompra|
06/01/17 | C14%_________
06/02/17 | C14%_________
07/16/17 | C14%_________

El comando que usé en principio para cambiar de C12% a C14% fue el siguiente:

REPLACE tipocompra WITH C12% FOR tipocompra=c14% all

Pero evidentemente no fue lo más acertado puesto que los registros que llevaban C12% se cambiaron, y se suponía que la ley duraría solo un año, sin embargo nadie creía eso, todos pensábamos que íbamos a pagar para siempre el 14% de IVA. Pero el estado nos sorprendió y cambió la tasa al 1 de junio de este año.

Entonces quisiera saber si en vez de poner "all" al final, podría decir que quiero que se cambien las filas desde el 06/01/17 hasta hoy, y siga así en adelante.

Espero haber sido claro, por favor ayúdame Fidel!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar