FoxPro/Visual FoxPro - Para Alberto

 
Vista:

Para Alberto

Publicado por Luis (1 intervención) el 01/09/2009 16:56:38
Hola amigo tengo solo un problemita con el contador de cuotas que no me cuenta me tira 0 en todos los meses lo ideal seria que sea 12345...... asi sucesibamente pero no me sale. Podrias ayudarme por favor ..... abajo te envio el codigo como esta

TxtFec_venta= DATE()+30
nCuota = 1
nMeses = thisform.txtnumcuota.value &&M.numcuota &&Los meses que quieres desplegar

*- Separo por bloques la fecha
nMes = MONTH(txtFec_venta)
nDia = DAY(txtFec_venta)
nAno = YEAR(txtFec_venta)
nDiaf = DAY(txtFec_venta)

DO WHILE NMeses >= nCuota


*-Armo la fecha
fec_cuo = ctod(PADL(nDia,2,"0")+"/"+PADL(nMes,2,"0")+"/"+PADL(nAno,4,"0"))
?fec_cuo

select cuotatemporal
append blank
rlock()
*!* replace importe with totalapagar
*!* replace numpagare with npagare
replace vto with fec_cuo
replace ncuota with ncuota
replace numpagare with npagare
replace importe with totalapagar
replace fec_venta with fecventa
replace numorden with nfactura
flush
unlock all
select ctacte

nCuota = nCuota + 1
if nMes = 12
nMes = 1
else
nMes = MONTH(fec_cuo) + 1
endif

** Calcula ultimo dia del Mes ** flush
unlock all
select ctacte

Tufecha = ctod("01"+"/"+PADL(nMes,2,"0")+"/"+PADL(nAno,4,"0"))

nDiaf = DAY(txtFec_venta)

do case
case nDiaf > 28 and nMes = 2
nDia = 28
case nDiaf > 30 and nMes <> 2
nDia = DAY(gomonth(TuFecha - DAY(TuFecha) + 1, 1 )-1) &&Ultimo Dia
otherwise
nDia = nDiaf
endcase
*- Sumo si fuera otro año
nAno = YEAR(fec_cuo)
nAno = iif(nMes=1,nAno + 1,nAno)
ENDDO
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

RE:Para Alberto

Publicado por alberto (404 intervenciones) el 01/09/2009 20:04:52
prueba de poner debajo de
?fec_cuo
?? ncuota
wait""
para corroborar que funciona el contador , a simple vista esta todo bien
pruebalo y me avisas
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

RE:Para Alberto

Publicado por luis (1 intervención) el 01/09/2009 20:46:57
funciona el contador pero no me tira en la tabla alberto que podemos hacer
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

RE:Para Alberto

Publicado por alberto (404 intervenciones) el 01/09/2009 23:20:49
el valor del contador lo debes grabar en la tabla especifica cuando asignas cada ciclo do while
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

RE:Para Alberto

Publicado por jose camilo (805 intervenciones) el 06/10/2017 04:35:19
tengo un cursor para las cuotas y este codigo lo utilizo en mi proyecto. funcionando en mas de 50 tiendas que venden a credito
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
SELECT JobCxc
DELETE ALL
IF EMPTY(Thisform.Container1.TxTCValor.Value)
   MESSAGEBOX("No ha digitado nada en valor",0+48,"JJ-System")
   RETURN .F.
ENDIF
 
IF EMPTY(Thisform.Container1.Spinner1.Value)
   Thisform.Container1.Spinner1.BackColor = RGB(65,90,190)
   Thisform.Container1.Spinner1.SetFocus
   RETURN .F.
ENDIF
IF EMPTY(Thisform.Container1.Spinner2.Value)
   Thisform.Container1.Spinner2.BackColor = RGB(65,90,190)
   Thisform.Container1.Spinner2.SetFocus
   RETURN .F.
ENDIF
 
IF Thisform.Container1.Spinner1.Value > 48
   Thisform.Container1.Spinner1.BackColor = RGB(65,90,190)
   Thisform.Container1.Spinner1.SetFocus
   RETURN .F.
EndIf
IF Thisform.Container1.Spinner2.Value > 48
   Thisform.Container1.Spinner2.BackColor = RGB(65,90,190)
   Thisform.Container1.Spinner2.SetFocus
   RETURN .F.
EndIf
 
Thisform.Container1.TxTVpagare.Value = INT(Thisform.Container1.TxTCValor.Value/((Thisform.Container1.Spinner2.Value-Thisform.Container1.Spinner1.Value)+1))
Thisform.Container1.TxTAdicional.Value = Thisform.Container1.TxTCValor.Value - (Thisform.Container1.TxTVpagare.Value * ((Thisform.Container1.Spinner2.Value-Thisform.Container1.Spinner1.Value)+1))
 
Wcont1 = ((Thisform.Container1.Spinner2.Value-Thisform.Container1.Spinner1.Value)+1)
Wcont2 = Thisform.Container1.Spinner1.Value
 
SELECT JobCxc
IF !EMPTY(Thisform.container1.Spinner3.Value)
   Wf = Thisform.container1.TxTCFecha.Value + Thisform.container1.Spinner3.Value
   FOR Wcont = 1  TO Wcont1
       Wpa = ALLTRIM(STR(Wcont2))+'-'+ALLTRIM(STR(Thisform.Container1.Spinner2.Value))
       APPEND BLANK
       Replace Pagare  WITH Wpa
       Replace Debito  WITH Thisform.Container1.TxTVpagare.Value+Thisform.Container1.TxTAdicional.Value
       Replace FechaP  WITH WF
       Thisform.Container1.TxTAdicional.Value= 0.00
       Wf = wf + Thisform.container1.Spinner3.Value
       Wcont2 = Wcont2 + 1
   Next
ELSE
   Wf = Thisform.container1.TxTCFecha.Value + 30
   For Wcont = 1  TO Wcont1
       Wpa = ALLTRIM(STR(Wcont2))+'-'+ALLTRIM(STR(Thisform.Container1.Spinner2.Value))
       APPEND BLANK
       Replace Pagare  WITH Wpa
       Replace Debito  WITH Thisform.Container1.TxTVpagare.Value+Thisform.Container1.TxTAdicional.Value
       Replace FechaP  WITH WF
       Thisform.Container1.TxTAdicional.Value= 0.00
       Wf = wf + Thisform.container1.Spinner3.Value
       Wcont2 = Wcont2 + 1
       If DAY(WF) < 29
          Do Case
             Case INLIST(Month(Wf),1,3,5,7,8,10,12)
                  Wf = Wf + 31
             Case Month(Wf) = 2
                  Wf = Wf + Iif(Mod(Year(Wf),4)>0,28,29)
             Case INLIST(Month(Wf),4,6,9,11)
                  Wf = Wf + 30
          EndCase
       ELSE
          Do Case
             Case Month(Wf) = 1
                  Wf = Wf + 5
                  if Mod(Year(Wf),4)>0
                     Wf = Ctod('28'+SubStr(Dtoc(Wf),3,10))
                  Else
                     Wf = Ctod('29'+SubStr(Dtoc(Wf),3,10)) 
                  EndIf
             Case INLIST(Month(Wf),3,5,8,10)
                  If Day(Wf) <= 30
                     Wf = Wf + 31
                  ELSE
                     Wf = Wf + 5
                     Wf = Ctod('30'+SubStr(Dtoc(Wf),3,10)) 
                  EndIf
             Case INLIST(Month(Wf),2,4,6,7,9,11,12)
                  If Day(Wf) <= 30
                     Wf = Wf + 31
                  ELSE
                     Wf = Wf + 5
                     Wf = Ctod('31'+SubStr(Dtoc(Wf),3,10)) 
                  EndIf
          EndCase
       EndIf
   NEXT
ENDIF
Thisform.Totaldrcr
GO top
thisform.Grid1.Refresh
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