FoxPro/Visual FoxPro - foxpro/visual foxpro

   
Vista:

foxpro/visual foxpro

Publicado por Ramón sistamer@hotmail.com (8 intervenciones) el 24/11/2013 05:30:15
buenas noches amigos alguien podria ayudarme con lo siguiente: necesito que me ayuden estoy haciendo un programita el cual tengo que imprimir cobros de tickets estos se cobran cada dos semanas si lo hago contando normalmente ejemplo 01-01-13 + 7 + 7 seria 15-01-13 + 7 +7 29-01-13, alli voy quiero es que me diga 15-01-13 y luego 30-01-13 para el sigiente mes igual 15-02-13 y 29 o 28 osea lo que necesito es que me coloque 15 y 30 osea dos tickets mensual pero con 15 y 30 me podria alguien ayudar en el adjunto se ve mejor estan de abajo hacia arriba osea el primer ticket tendria la fecha de 01-01-14 el segundo 15-01-14 el tercero 30-01-14 el cuarto 15-02-14 y asi sucesivamente osea necesitaria una rutina prg para foxprow 2.6 para windows por favor ayudaaa...
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

foxpro/visual foxpro

Publicado por Carlos cchaparro2009@hotmail.com (5 intervenciones) el 27/11/2013 20:34:06
si, amigo necesitarias una rutina, con el primer ticket, no habria problema, siempre seria el primero de mes, para el segundo ticket debes determinar si el mes es de 30 o 31 dias, sabiendo que abril, junio, septiembre, noviembre tienen 30 dias y que febrero tiene 29 si es bisiesto o por defecto 28, enero, marzo, julio, agosto, octubre y diciembre tienen 31 dias.
primero debes determinar el mes en curso que se logra con MONTH(DATE())
una vez que tengas el mes debes seleccionar el ultimo dia, de acuerdo a lo expuesto anteriormente.
espero te ayude en algo
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

foxpro/visual foxpro

Publicado por Pablo R.G. (3 intervenciones) el 09/12/2013 23:01:47
Solo tienes que hacer esto para saber la quincena....

1
2
3
4
5
6
7
8
9
10
11
12
dia=day(date())
mes=month(date())
if between(dia,16,31)
    nume_quin = 2
else
    nume_quin = 1
endif
if mes = 1
     quincena = nume_quin
else
      quincena = ((mes-1)*2+nume_quin)
endif

Es algo rebuscado, pero funciona.

Nota: Sustituye DATE(), por tu variable.
Saludos
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

foxpro/visual foxpro

Publicado por santiago (376 intervenciones) el 02/12/2013 04:09:56
Hola, hace mucho tiempo resolví este tema de la siguiente manera:

1.- Olvidate del tema de que es cada 2 semanas, tus fechas son quincena y fin de mes, siendo siempre el 15 un día fijo y el fin de mes variable (pues puede ser 28, 29, 30 ó 31)

2.- Para la quincena no me molesto en calcularlo porque tu puedes hacerlo (ya que siempre va a ser 15).

3.- Para el fin de mes simplemente sumas los siguientes valores:
13 (para el caso de 28)
14 (para el caso de 29)
15 (para el caso de 30)
16 (para el caso de 31)

stor ctod(' / / ') to b, b13, b14, b15, b16
a = 15/01/2013
b13 = a+13
b14 = a+14
b15 = a+15
b16 = a+16

4.- Entonces empiezas a preguntar si el mes es el mismo que el del 15.

ejemplo: supongamos que es marzo (31 dias)
a = 15/03/2013
do case
case month(a)=month(b16) && verdadero, month(a)=marzo y month(b16)=marzo , pues b16 = 31/03/2013
b = b16
case month(a)=month(b15) && verdadero, month(a)=marzo y month(b15)=marzo , pues b15 = 30/03/2013
b = b15
case month(a)=month(b14) && verdadero, month(a)=marzo y month(b14)=marzo , pues b14 = 29/03/2013
b = b14
case month(a)=month(b13) && verdadero, month(a)=marzo y month(b13)=marzo , pues b13 = 28/03/2013
b = b13
endcase
&& el valor de b = b16 (31/03/2013) , o sea el primer case

ejemplo: supongamos que es noviembre (30 dias)
a = 15/11/2013
do case
case month(a)=month(b16) && falso, month(a)=nov y month(b16)=dic , pues b16 = 01/12/2013
b = b16
case month(a)=month(b15) && verdadero, month(a)=nov y month(b15)=nov , pues b15 = 30/11/2013
b = b15
case month(a)=month(b14) && verdadero, month(a)=nov y month(b14)=nov , pues b14 = 29/11/2013
b = b14
case month(a)=month(b13) && verdadero, month(a)=nov y month(b13)=nov , pues b13 = 28/11/2013
b = b13
endcase
&& el valor de b = b15 (30/11/2013) , o sea el segundo case

ejemplo: supongamos que es febrero (28 dias)
a = 15/02/2013
do case
case month(a)=month(b16) && falso, month(a)=feb y month(b16)=marzo , pues b16 = 03/03/2013
b = b16
case month(a)=month(b15) && falso, month(a)=feb y month(b15)=marzo , pues b15 = 02/03/2013
b = b15
case month(a)=month(b14) && falso, month(a)=feb y month(b14)=marzo , pues b14 = 01/03/2013
b = b14
case month(a)=month(b13) && verdadero, month(a)=feb y month(b13)=feb , pues b13 = 28/02/2013
b = b13
endcase
&& el valor de b = b13 (28/02/2013) , o sea el cuarto case

ejemplo: supongamos que es febrero (29 dias) año bisiesto
a = 15/02/2013
do case
case month(a)=month(b16) && falso, month(a)=feb y month(b16)=marzo , pues b16 = 02/03/2013
b = b16
case month(a)=month(b15) && falso, month(a)=feb y month(b15)=marzo , pues b15 = 01/03/2013
b = b15
case month(a)=month(b14) && verdadero, month(a)=feb y month(b14)=feb , pues b14 = 29/02/2013
b = b14
case month(a)=month(b13) && verdadero, month(a)=feb y month(b13)=feb , pues b13 = 28/02/2013
b = b13
endcase
&& el valor de b = b14 (29/02/2013) , o sea el tercer case


Suerte.
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