Hola Francisco buenos dias como esta,disculpa que apenas responda, tuve problemas con mi servicio de internet,ya la habia probado de esta manera como me indicas pero nada!, se pierde los headers y se me ocurrio poner la variable de arreglos desde principio y asi si funciona ,queda estable,
...
Y otra pregunta cual es el metodo para pintar todo de negro las cuentas acumulativas
ya sea nivel 1,nivel 2 nivel 3 y nivel 4 para que el usuario que son cuentas acumulativas en color negro las identifique como cuentas acumulativas y los que no son negro sean a detalle, adjunto pantallas y prg de nuevo.
Code: Select all | Expand
#Include "FiveWin.ch"
#Include "xBrowse.ch"
STATIC oDlg
Static S08, S10, S13 // Alias de base de datos
STATIC nTCarg,nTCred
STATIC lSelSeg,NivBal
STATIC SdoMesAnt,SdoIni,Cta1,Cta2,Cta3,Cta4,nReg,nCol,aSum, aTot // Reportes
STATIC nMA_Ini, nMA_Fin
MemVar oWnd, oMOpc, nNumEmp, cDescrEmp, Mes_Per, Ano_Per, nStation,EjeMAIn
//------------------------------------------------------------------------------
FUNCTION MOD_PBAS()
LOCAL oItem:=oMOpc
LOCAL oBrw1, oBrw2, aDatos1, aDatos2
local aGradBarSelFocus:= { { 1, RGB(252,232,171) , RGB(248,195, 34) } }
local aGradBarSel:= {{1, RGB(252,235, 184), RGB(251,222,88)}}
lSelSeg:= .F.
NivBal := 4
aTot := {{0,0,0,0}}
nReg := 0
aDatos1:= {{ "","","","","","" }}
aDatos2:= {{ "","","","","","","","" }}
DEFINE DIALOG oDlg RESOURCE "CONSBALANZ" TITLE 'Listado de Pólizas y Movimientos'
// Consulta Balanza cuentas acumulados \\
REDEFINE XBROWSE oBrw1 ID 101 OF oDlg ;
HEADERS 'Cuentas','Descripción','Sdo Ant','Cargo','Abono','Sdo Act' ;
COLSIZES 112,260,85,85,85,85 ;
PICTURES "@!" ,;
"@!" ,;
"999,999,999.99" ,;
"999,999,999.99" ,;
"999,999,999.99" ,;
"999,999,999.99" ;
ARRAY aDatos1 FOOTERS LINES CELL AUTOCOLS
WITH OBJECT oBrw1
**:nClrPane := {|| IIF((S08)->TIPONAT == "A",CLR_LIGHTGRAY ,CLR_WHITE)} // Como poner condicion color negrita y Fonts cuentas acumulativas
// pero no sale por ser arreglos...!...sigue pendiente
:nMarqueeStyle := MARQSTYLE_HIGHLROW //_HIGHLROWMS
:nColDividerStyle:= LINESTYLE_LIGHTGRAY
:nRowDividerStyle:= LINESTYLE_LIGHTGRAY
:bClrSel := {|| { nRGB( 0, 0,255), aGradBarSel } } // para barra de linea selecc cuando el control no tiene el foco
:bClrSelFocus := {|| { CLR_BLACK, aGradBarSelFocus } } // para barra de linea selecc cuando el control tiene el foco
:lKinetic := .f.
:lContrastClr := .f. //para que no cambie color de texto automaticamente segun intensidad del fondo
:bChange := {|| MovEdoCta(oBrw1,@aDatos2,oBrw2), oBrw2:Refresh() } // Aqui me persiste el problema de los Headers
END
// Consulta Estados de cuentas a detalle \\
REDEFINE XBROWSE oBrw2 ID 102 OF oDlg ;
HEADERS 'Tipo','Num','Fecha','Referencia','Concepto','Cargo','Abono','Sdo Act' ;
COLSIZES 28,30,50,80,180,85,85,85 ;
PICTURES "@!" ,;
"@9999" ,;
"@D" ,;
"@!" ,;
"@!" ,;
"999,999,999.99" ,;
"999,999,999.99" ,;
"999,999,999.99" ;
ARRAY aDatos2 FOOTERS CELL AUTOCOLS
WITH OBJECT oBrw2
:nMarqueeStyle := MARQSTYLE_HIGHLROW //_HIGHLROWMS
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
:bClrSel := {|| { nRGB( 0, 0,255), aGradBarSel } } // para barra de linea selecc cuando el control no tiene el foco
:bClrSelFocus := {|| { CLR_BLACK, aGradBarSelFocus } } // para barra de linea selecc cuando el control tiene el foco
:lKinetic := .f.
:lContrastClr := .f. //para que no cambie color de texto automaticamente segun intensidad del fondo
:nStretchCol := STRETCHCOL_LAST
END
CargaDatos(oBrw1,@aDatos1)
MovEdoCta(oBrw1,@aDatos2,oBrw2)
ACTIVATE DIALOG oDlg CENTERED // ON INIT Refresca(oBrw,oBrw2)
oItem:Enable() // Cerramos
RETURN NIL
//------------------------------------------------------------------------------
STATIC FUNCTION MovEdoCta(oBrw1,aDatos2,oBrw2)
LOCAL xEmp,S91,Ind1Tmp1,cCta,cCtaIni,PasaCta := .T.
cCta := oBrw1:aArrayData[oBrw1:nArrayAt,1]
aDatos2:= {{ "","","","","","","","" }} [b]// Aqui la variable arreglo desde principio funciona bien...pero deja una linea en blancoooo...
// Como eliminar la linea en blanco como primer elemento...[/b]
IF !cCta == Nil // * Condicion Nil que si encuentra separacion que es nil,no busque en el DbSeek por ser nulo
cCtaIni := SUBS(cCta,1,4)+SUBS(cCta,6,4)+SUBS(cCta,11,4)+SUBS(cCta,16,4)
*xEmp := nNumEmp
*S91 := "EMP"+TSTR(xEmp)+TRIM("\R_INTS"+nStation)+".DBF"
S91 := "EMP07\R_INTS7.DBF"
*Ind1Tmp1:= "R_INTS"+nStation
Ind1Tmp1:= "EMP07\R_INTS7"
USE (S91) ALIAS S91 EXCLUSIVE // NEW SHARED
S91->(DbSetIndex(Ind1Tmp1))
S91->(OrdSetFocus(1))
IF (S08)->( DbSeek(cCtaIni,.T.) ) .AND. (S08)->TIPONAT = 'D' // Aqui valida si es cuenta Detalle "D" en catalogo de cuentas que me busque en movimientos
IF S91->( DbSeek(cCtaIni) )
aSum := {{0,0,0,0,0,0,0}}
aTot := {{0,0,0,0,0,0,0}}
DO WHILE S91->(!EOF())
IF S91->CUENTAS > cCtaIni
EXIT
ENDIF
IF S91->SALDOS <> 0
/* Esto despues lo veo, me interesa mas que visualice bien los datos
aSum[1,1] := aSum[1,1] + S91->SALCARG // Suma Cargos
aSum[1,2] := aSum[1,2] + S91->SALCRED // Suma Abonos
aSum[1,3] := aSum[1,3] + S91->SALDOS // Suma Dif de saldos
aSum[1,4] += (S91->SALCARG - S91->SALCRED)
aTot[1,1] := aTot[1,1] + S91->SALCARG // Totaliza Cargos
aTot[1,2] := aTot[1,2] + S91->SALCRED // Totaliza Abonos
aTot[1,3] := aTot[1,3] + S91->SALDOS // Totaliza Dif Sdos
aTot[1,4] += (S91->SALCARG - S91->SALCRED)
*/
AADD( aDatos2, { S91->TIPO , ; //Llena datos a elementos
S91->NUMPOL , ;
S91->FHAMOV , ;
S91->REFERE , ;
S91->CONCEP , ;
S91->SALCARG , ;
S91->SALCRED , ;
S91->SALDOS } )
ENDIF
S91->(DbSkip())
ENDDO
ENDIF
ENDIF
ENDIF
oBrw2:SetArray(aDatos2)
RETURN NIL
** Funcion para colorear en negrita o Font cuentas acumulativas en niveles de cuentas, AUN NO SALE ...!
//------------------------------------------------------------------------------
STATIC FUNCTION FontNiv(oFont,oFont1,oFont2)
LOCAL cColor
DO CASE
CASE (S08)->NIVSUM = 1
IF (S08)->TIPONAT == "A"
cColor := CLR_BLACK // CLR_LIGHTGRAY ,CLR_WHITE
**cFont:= ...como seria la instruccion
ENDIF
CASE (S08)->NIVSUM = 2
IF (S08)->TIPONAT == "A"
cColor := CLR_BLACK // CLR_LIGHTGRAY ,CLR_WHITE
**cFont:= ...como seria la instruccion
ENDIF
CASE (S08)->NIVSUM = 3
IF (S08)->TIPONAT == "A"
cColor := CLR_BLACK // CLR_LIGHTGRAY ,CLR_WHITE
**cFont:= ...como seria la instruccion
ENDIF
CASE (S08)->NIVSUM = 4
IF (S08)->TIPONAT == "A"
cColor := CLR_BLACK // CLR_LIGHTGRAY ,CLR_WHITE
**cFont:= ...como seria la instruccion
ENDIF
ENDCASE
RETURN(cColor)
** Funcion para espaciar niveles de cuentas Ok salio como yo deseaba...!
//------------------------------------------------------------------------------
STATIC FUNCTION NivCol(nCol)
DO CASE
CASE (S08)->NIVSUM = 1
nCol := ""
CASE (S08)->NIVSUM = 2
nCol = " "
CASE (S08)->NIVSUM = 3
nCol = " "
CASE (S08)->NIVSUM = 4
nCol = " "
ENDCASE
RETURN(nCol)
* CARGA DATOS Y MOVIMIENTOS AUXILIARES TEMPORALES EXCEPTO LA FUNCION CargaDatos, que es una rutina para agregar AADD()*
//------------------------------------------------------------------------------
STATIC FUNCTION CargaDatos(oBrw1,aDatos1)
LOCAL cCtas
aDatos1:= {}
S08 := Abre_Dbf(8,8) // ABRE CATCTAxA.DBF // Catalogo de cuentas INDEX ON "CUENTAS"
*S08 := "EMP07\CATCTA14.DBF" // ABRE CATCTAxA.DBF // Catalogo de cuentas INDEX ON "CUENTAS"
*S08 := "EMP07\CATCTA14.CDX" // ABRE CATCTAxA.DBF // Catalogo de cuentas INDEX ON "CUENTAS"
S13 := Abre_Dbf(13,13) // Abre: MOVTxMxA.DBF // Movimientos INDEX ON "MV_NCTA+MV_REFE"
nTCarg := 0
nTCred := 0
(S08)->(DbGoTop())
SdoMesAnt:= ("SALD"+TSTR(Mes_Per - 1))
cCtas := SUBS((S08)->CUENTAS,1,4)
IF (S08)->( !BOF() )
DO WHILE (S08)->(!EOF())
IF cCtas <> SUBS((S08)->CUENTAS,1,4)
AADD( aDatos1, { Nil } )
ENDIF
(S08)->(DbSetOrder(1))
(S08)->(DbSeek((S08)->CUENTAS))
SdoIni := (S08)->(&SdoMesAnt)
(S13)->(DbSetOrder(3))
(S13)->(SetSeek((S08)->CUENTAS))
nCol:= NivCol(nCol)
aSum := {{0,0,0}}
DO WHILE FUNNIV(lSelSeg,S08,S10,S13,Cta1,Cta2,Cta3,Cta4) .AND. (S13)->(!EOF())
aSum[1,1] := aSum[1,1] + (S13)->MV_CARG // Suma CARGOS
aSum[1,2] := aSum[1,2] + (S13)->MV_ABON // Suma ABONOS
(S13)->(DbSkip())
ENDDO
aSum[1,3] := (SdoIni + aSum[1,1]) - aSum[1,2]
IF ( (S08)->TIPONAT = 'D' )
aTot[1,1] := aTot[1,1] + SdoIni // Total Saldos iniciales
aTot[1,2] := aTot[1,2] + aSum[1,1] // Total de Cargos
aTot[1,3] := aTot[1,3] + aSum[1,2] // Total DE Abonos
ENDIF
IF ( (S08)->NIVSUM <= NivBal )
IF SdoIni <> 0 .OR. aSum[1,1] <> 0 .OR. aSum[1,2] <> 0
AADD( aDatos1, { Ext_xNiv(LTRIM((S08)->CUENTAS)), ; // Llena datos de ARRAY
nCol+(S08)->DESCRIP , ;
SdoIni , ;
aSum[1,1] , ;
aSum[1,2] , ;
aSum[1,3] } )
ENDIF
ENDIF
cCtas := SUBS((S08)->CUENTAS,1,4)
(S08)->(DbSkip())
ENDDO
ELSE
aDatos1 := {{ "","","","","","" }}
ENDIF
oBrw1:SetArray(aDatos1)
* CargaMov() // Comentado para no volver a cargar datos,por mientras diseño nuevos browses
RETURN NIL
** Rutina para movimientos unicamente facturas pendientes a pagar como estado de cuenta,excluyendo facturas ya pagadas
//------------------------------------------------------------------------------
STATIC FUNCTION CargaMov()
Local S91, Ind1Tmp1, Ind1Tmp2, CreaDbf1,TitRp,CtaIni, CtaFin,PasaCta := .T.,;
cMA_Ini, cMA_Fin,cCtas,nSegNeg,cCtSN // oText
LOCAL cMes, cAno,xEMP,aCarg,aAbon
LOCAL S05, S08, S10, S13 // Alias de base de datos
xEmp := nNumEmp
cMes := TSTR(Mes_Per)
cAno := VAL(SUBS(STR(Ano_Per,4),3,2))
nMA_Ini := EjeMAIn
nMA_Fin := cMes+TSTR(cAno)
cMA_Ini := SUBS(nMA_Ini,3,2)+SUBS(nMA_Ini,1,2)
cMA_Fin := SUBS(nMA_Fin,3,2)+SUBS(nMA_Fin,1,2)
***********************************************************************************
*----- Traspasando cuentas integración de saldos general en archivo temporal -----*
***********************************************************************************
S91 := "EMP"+TSTR(xEMP)+TRIM("\R_INTS"+nStation)+".DBF"
Ind1Tmp1:= "R_INTS"+nStation
Ind1Tmp2:= "R_INTSN"
nReg := 1
IF FILE(S91)
*S91->(DbCloseArea())
FERASE(S91)
FERASE("EMP"+TSTR(nNumEmp)+"\"+Ind1Tmp1+".CDX")
ENDIF
FIELD CUENTAS, SEGNEG, REFERE
IF !FILE(S91)
CreaDbf1 := {{"TIPO " , "C" , 2 , 0 } ,; // 1
{"NUMPOL " , "N" , 5 , 0 } ,; // 2
{"FHAMOV " , "D" , 8 , 0 } ,; // 3
{"CUENTAS" , "C" , 16 , 0 } ,; // 4
{"SEGNEG" , "N" , 4 , 0 } ,; // 5
{"REFERE " , "C" , 10 , 0 } ,; // 6
{"CONCEP " , "C" , 60 , 0 } ,; // 7
{"SALCARG" , "N" , 12 , 2 } ,; // 8
{"SALCRED" , "N" , 12 , 2 } ,; // 9
{"SALDOS" , "N" , 12 , 2 } ,; //10 Sdo de factura a pagar
{"IMPBS1" , "N" , 12 , 2 } ,; //11 Base 1
{"TASA1" , "N" , 12 , 2 } ,; //12 Tasa 1
{"IVA_1" , "N" , 12 , 2 } ,; //13 IVA 10%
{"IMPBS2" , "N" , 12 , 2 } ,; //14 Base 2
{"TASA2" , "N" , 12 , 2 } ,; //15 Tasa 2
{"IVA_2" , "N" , 12 , 2 } ,; //16 IVA 15%
{"T_0" , "N" , 12 , 2 } ,; //17 Tasa 0
{"T_EXENT" , "N" , 12 , 2 } ,; //18 Exento
{"OTROS" , "N" , 12 , 2 } ,; //19 Otros
{"IMPBS3" , "N" , 12 , 2 } ,; //20 Otras tasas
{"T_Otras" , "N" , 12 , 2 } ,; //21 IVA x 0
{"RET_IVA" , "N" , 12 , 2 } ,; //22 Ret IVA
{"RET_ISR" , "N" , 12 , 2 } ,; //23 Ret ISR
{"TOTFAC" , "N" , 12 , 2 } ,; //24 Importe total por factura
{"REG " , "N" , 3 , 0 }} //25
DbCreate(S91,CreaDbf1)
USE (S91) ALIAS S91 EXCLUSIVE // NEW SHARED
INDEX ON CUENTAS+REFERE TAG (Ind1Tmp1) FOR !DELETED()
INDEX ON STR(SEGNEG,4)+CUENTAS+REFERE TAG (Ind1Tmp2) FOR !DELETED()
S91->(DbSetIndex(Ind1Tmp1))
S91->(OrdSetFocus(1))
ELSE
USE (S91) ALIAS S91 EXCLUSIVE // NEW SHARED
ZAP
INDEX ON CUENTAS+REFERE TAG (Ind1Tmp1) FOR !DELETED()
INDEX ON STR(SEGNEG,4)+CUENTAS+REFERE TAG (Ind1Tmp2) FOR !DELETED()
S91->(DbSetIndex(Ind1Tmp1))
S91->(OrdSetFocus(1))
ENDIF
aCarg:= {{0,0,0}}
aAbon:= {{0,0,0}}
S05 := Abre_Dbf(5,5) // ABRE MA_MOVTO.DBF
(S05)->(DbSEEK(cMA_Ini))
DO WHILE (S05)->ANOMES >= cMA_Ini .AND. (S05)->ANOMES <= cMA_Fin .AND. (S05)->(!EOF())
Mes_Per := VAL(SUBS((S05)->ANOMES,3,2))
Ano_Per := VAL(SUBS((S05)->ANOMES,1,2))
S13 := Abre_Dbf(13,13) // ABRE: MOVTxMxA.DBF
(S13)->(DbSetOrder(4)) // Mov con referencia
(S13)->(DbGoTop())
DO WHILE (S13)->(!EOF())
S91->(DbSeek((S13)->MV_NCTA+(S13)->MV_REFE))
IF S91->(!FOUND())
S91->(DbAppend())
REPLACE S91->TIPO WITH (S13)->MV_TIPO ,;
S91->NUMPOL WITH (S13)->MV_NUMP ,;
S91->FHAMOV WITH (S13)->MV_FHAM ,;
S91->CUENTAS WITH (S13)->MV_NCTA ,;
S91->SEGNEG WITH (S13)->SEGNEG ,;
S91->REFERE WITH (S13)->MV_REFE ,;
S91->CONCEP WITH (S13)->MV_CONC
ELSE
DO WHILE S91->(!RLOCK())
ENDDO
ENDIF
IF (S13)->TIPOMOV = "A"
aAbon[1,1] := (S13)->IMPBS1
aAbon[1,2] := (S13)->IMPBS2
aAbon[1,3] := (S13)->OTROS
ELSE
aCarg[1,1] := (S13)->IMPBS1
aCarg[1,2] := (S13)->IMPBS2
aCarg[1,3] := (S13)->OTROS
ENDIF
IF (S13)->MV_CARG <> 0
REPLACE S91->SALCARG WITH (S13)->MV_CARG + S91->SALCARG ,;
S91->REG WITH S91->REG - nReg
IF (S13)->MV_ABON <> 0 // Si existe en mismo renglon el saldo de abonos \\
REPLACE S91->SALCRED WITH (S13)->MV_ABON + S91->SALCRED ,;
S91->REG WITH S91->REG - nReg
ENDIF
ELSE
REPLACE S91->SALCRED WITH (S13)->MV_ABON + S91->SALCRED ,;
S91->REG WITH IF((S13)->MV_ABON >0,S91->REG + nReg,S91->REG - nReg)
ENDIF
IF (S13)->TIPOMOV = "A"
REPLACE S91->TASA1 WITH (S13)->TASA1 ,;
S91->TASA2 WITH (S13)->TASA2
ENDIF
REPLACE S91->SALDOS WITH S91->SALCARG - S91->SALCRED ,;
S91->IMPBS1 WITH (aAbon[1,1] - aCarg[1,1]) + S91->IMPBS1 ,;
S91->IVA_1 WITH ROUND(S91->IMPBS1 * S91->TASA1 / 100,2) ,;
S91->IMPBS2 WITH (aAbon[1,2] - aCarg[1,2]) + S91->IMPBS2 ,;
S91->TASA2 WITH IF((S13)->TIPOMOV = "A",(S13)->TASA2,0) ,;
S91->IVA_2 WITH ROUND(S91->IMPBS2 * S91->TASA2 / 100,2) ,;
S91->T_0 WITH (S13)->T_0 + S91->T_0 ,;
S91->T_EXENT WITH (S13)->T_EXENT + S91->T_EXENT ,;
S91->OTROS WITH (aAbon[1,3] - aCarg[1,3]) + S91->OTROS ,;
S91->TOTFAC WITH S91->IMPBS1+S91->IVA_1+S91->IMPBS2+ ;
S91->IVA_2+S91->T_0+S91->T_EXENT + ;
S91->OTROS
aCarg:= {{0,0,0}}
aAbon:= {{0,0,0}}
(S13)->(DbSkip())
ENDDO
(S05)->(DbSkip())
Close_Dbf(13,S13)
ENDDO
*Close_Dbf(8,S08)
*Close_Dbf(10,S10)
*S91->(DbCloseArea())
RETURN NIL
* FUNCION ADICIONAL...para que compilen, por el momento lo tengo comentado
/*
//------------------------------------------------------------------------------
FUNCTION FUNNIV(lSelSeg,S08,S10,S13,Cta1,Cta2,Cta3,Cta4)
Local NIVSU[4], NIVCT[4], NIVS, OpNiv
NIVSU[1] := 1
NIVSU[2] := 2
NIVSU[3] := 3
NIVSU[4] := 4
NIVS := IF(lSelSeg,NIVSU[(S10)->NIVSUM], NIVSU[(S08)->NIVSUM])
IF lSelSeg
Cta1 := SUBS((S10)->CUENTAS,1,4)
Cta2 := SUBS((S10)->CUENTAS,1,4)+SUBS((S10)->CUENTAS,5,4)
Cta3 := SUBS((S10)->CUENTAS,1,4)+SUBS((S10)->CUENTAS,5,4)+SUBS((S10)->CUENTAS,9,4)
Cta4 := SUBS((S10)->CUENTAS,1,4)+SUBS((S10)->CUENTAS,5,4)+SUBS((S10)->CUENTAS,9,4)+SUBS((S10)->CUENTAS,13,4)
NIVCT[1] := Cta1 = SUBS((S13)->MV_NCTA,1,4) .AND. (S10)->NIVSUM = NIVS
NIVCT[2] := Cta2 = SUBS((S13)->MV_NCTA,1,4)+SUBS((S13)->MV_NCTA,5,4) .AND. (S10)->NIVSUM = NIVS
NIVCT[3] := Cta3 = SUBS((S13)->MV_NCTA,1,4)+SUBS((S13)->MV_NCTA,5,4)+SUBS((S13)->MV_NCTA,9,4) .AND. (S10)->NIVSUM = NIVS
NIVCT[4] := Cta4 = SUBS((S13)->MV_NCTA,1,4)+SUBS((S13)->MV_NCTA,5,4)+SUBS((S13)->MV_NCTA,9,4)+SUBS((S13)->MV_NCTA,13,4) .AND. (S10)->NIVSUM = NIVS
ELSE
Cta1 := SUBS((S08)->CUENTAS,1,4)
Cta2 := SUBS((S08)->CUENTAS,1,4)+SUBS((S08)->CUENTAS,5,4)
Cta3 := SUBS((S08)->CUENTAS,1,4)+SUBS((S08)->CUENTAS,5,4)+SUBS((S08)->CUENTAS,9,4)
Cta4 := SUBS((S08)->CUENTAS,1,4)+SUBS((S08)->CUENTAS,5,4)+SUBS((S08)->CUENTAS,9,4)+SUBS((S08)->CUENTAS,13,4)
NIVCT[1] := Cta1 = SUBS((S13)->MV_NCTA,1,4) .AND. (S08)->NIVSUM = NIVS
NIVCT[2] := Cta2 = SUBS((S13)->MV_NCTA,1,4)+SUBS((S13)->MV_NCTA,5,4) .AND. (S08)->NIVSUM = NIVS
NIVCT[3] := Cta3 = SUBS((S13)->MV_NCTA,1,4)+SUBS((S13)->MV_NCTA,5,4)+SUBS((S13)->MV_NCTA,9,4) .AND. (S08)->NIVSUM = NIVS
NIVCT[4] := Cta4 = SUBS((S13)->MV_NCTA,1,4)+SUBS((S13)->MV_NCTA,5,4)+SUBS((S13)->MV_NCTA,9,4)+SUBS((S13)->MV_NCTA,13,4) .AND. (S08)->NIVSUM = NIVS
ENDIF
OpNiv := NIVCT[NIVS]
*alert(OpNiv)
RETURN (OpNiv)
//------------------------------------------------------------------------------
FUNCTION EXT_xNIV(cCta)
LOCAL cCta1, cCta2, cCta3, cCta4, subsCta
cCTA1 := SUBS(cCta, 1,4)
cCTA2 := SUBS(cCta, 5,4)
cCTA3 := SUBS(cCta, 9,4)
cCTA4 := SUBS(cCta,13,4)
SubsCta:= cCta1 + '-'+ cCta2 + '-' + cCta3 + '-' + cCta4
RETURN (SubsCta)
//------------------------------------------------------------------------------
FUNCTION TSTR(VARf)
RETURN (IF(VARf <=9, '0'+STR(VARf,1), STR(VARf,2)))
*/ * Fin comentario, lo pueden quitar....
Saludos y buen dia y gracias por ayudarme y por tu tiempo de migrar a TXBrowse .
Atte: Adrian C. C.