#Include "FiveWin.ch"
#Include "xBrowse.ch"
* Archivo temporal : S99
STATIC oDlg,oFont
Static S05,S08, S10, S13,S99,Ind1Tmp1,Ind1Tmp2 // Alias de base de datos
STATIC lSelSeg,NivBal
STATIC cCta,cCtaIni,cRefere,SdoMesAnt,SdoIni,Cta1,Cta2,Cta3,Cta4,nReg,nCol,aSum, aTot //
STATIC nMA_Ini, nMA_Fin, n
MemVar oWnd, oMOpc, nNumEmp, cDescrEmp, Mes_Per, Ano_Per, nStation,EjeMAIn
//------------------------------------------------------------------------------
FUNCTION C_PROVCLIE()
LOCAL oItem:=oMOpc,oWChld, nW, nH,xEmp
LOCAL aDatos1, aDatos2, oBrw1, oBrw2,lSalir
LOCAL aGradBarSelFocus:= { { 1, RGB(252,232,171) , RGB(248,195, 34) } }
LOCAL aGradBarSel:= {{1, RGB(252,235, 184), RGB(251,222,88)}}
xEmp := nNumEmp
S99 := "EMP"+TSTR(xEMP)+TRIM("\C_INTS"+nStation)+".DBF"
Ind1Tmp1:= "C_INTS"+nStation
Ind1Tmp2:= "C_INTSN"
lSelSeg:= .F.
NivBal := 4
aTot := {{ 0,0,0,0,0,0,0 }}
nReg := 0
aDatos1:= {{ "","","","","","" }}
aDatos2:= {{ "","","","","","","","" }}
CargDatos2()
*DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-10 ITALIC BOLD
DEFINE FONT oFont NAME "ARIAL" SIZE 0,-11 BOLD
DEFINE WINDOW oWChld MDIChild FROM 1,2 TO 2,2 OF oWnd TITLE 'Consulta estado de cuenta de CxP Proveedores ' NOZOOM // ICON oIcon
DEFINE DIALOG oDlg RESOURCE "C_CXPPROVE" FONT oWnd:oFont OF oWChld
// Consulta Balanza cuentas acumulados \\
REDEFINE XBROWSE oBrw1 ID 101 OF oDlg ;
HEADERS 'Cuentas','Descripción','Sdo Ant','Cargo','Abono','Sdo Act' ;
COLSIZES 115,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 AUTOCOLS
WITH OBJECT oBrw1
//ESTILOS DE LINEAS
:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
:lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
:nColDividerStyle := LINESTYLE_BLACK
: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() }
END
For n := 1 to len( oBrw1:aCols ) //Font segun lineas condicionadas // Como puedo leer el valor ...
oBrw1:aCols[n]:oDataFont := {|| IF( !EMPTY(oBrw1:aCols[2]:Value), IF( !substr(oBrw1:aCols[2]:Value,1,3) = " ", oFont, oWnd:oFont) ,) }
Next
// 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,52,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
//ESTILOS DE LINEAS
:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
:lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
:nColDividerStyle := LINESTYLE_BLACK
:lFooter := .T.
: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
:aCols[4]:nEdittype := EDIT_BUTTON
:aCols[4]:nBtnBmp := 1
*:aCols[4]:nWidth := 50
:aCols[4]:AddResource( "DETFACT" ) // tu ícono p/el boton
*:aCols[4]:bstrData := {|| S99->cuentas } // en tu caso
:aCols[4]:bEditBlock := {|| MovDetFac(oBrw1,oBrw2) } // llama a una funcion que abre un Dlg y muestra el Detalle
*:aCols[4]:bEditBlock := {|| IF( SUBS(oBrw1:aCols[2]:Value,1,3) = " ", MovDetFac(oBrw1,oBrw2),) } // llama a una funcion que abre un Dlg y muestra el Detalle
:aCols[6]:nFootStrAlign:= 1 // AL_LEFT - AL_RIGHT - AL_CENTER - 0 - 1 - 2
:aCols[6]:oFooterFont := oFont
:aCols[7]:nFootStrAlign:= 1 // AL_LEFT - AL_RIGHT - AL_CENTER - 0 - 1 - 2
:aCols[7]:oFooterFont := oFont
:aCols[8]:nFootStrAlign:= 1 // AL_LEFT - AL_RIGHT - AL_CENTER - 0 - 1 - 2
:aCols[8]:oFooterFont := oFont
END
oWChld:bGotFocus := {|| oBrw1:SetFocus() }
CargaDatos(oBrw1,@aDatos1)
MovEdoCta(oBrw1,@aDatos2,oBrw2)
nW:= IF(GetVersion()[1]>5,15, 8)
nH:= IF(IsWinNT(),33,25)
ACTIVATE DIALOG oDlg NOWAIT VALID ( oWChld:End() ) // IT HAS TO BE NONMODAL -->NOWAIT CLAUSE
ACTIVATE WINDOW oWChld ON INIT oDlg:Move(0,0) ON RESIZE oWChld:SetSize(oDlg:nWidth+nW,oDlg:nHeight+nH,.T.) ;
VALID Finaliza(oItem)
RETURN NIL
//------------------------------------------------------------------------------
STATIC FUNCTION MovEdoCta(oBrw1,aDatos2,oBrw2)
LOCAL aDat[9],aSum[8], aSub[8], aTot[8]
cCta := oBrw1:aArrayData[oBrw1:nArrayAt,1]
aDatos2:= {}
AFill(aDat,"")
AFill(aSum,0)
AFill(aSub,0)
AFill(aTot,0)
IF !cCta == "" // Condicion "" que si encuentra separacion que es "",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)
USE (S99) ALIAS S99 EXCLUSIVE // NEW SHARED
S99->(DbSetIndex(Ind1Tmp1))
S99->(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 S99->( DbSeek(cCtaIni) )
aDat[2]:= S99->REFERE // ID Principal de referencias folios o facturas
DO WHILE S99->(!EOF())
IF S99->REFERE <> aDat[2] // ID Referencia
IF ( ROUND(aSum[3],2) <> 0.00 )
aTot[1] += aSum[1] // Total Cargos
aTot[2] += aSum[2] // Total Abonos
aTot[3] += aSum[3] // Total Dif Sdos
*Adel(aDatos2,1,.t.)
AADD( aDatos2, { aDat[3] , ; // S99->TIPO
aDat[4] , ; // S99->NUMPOL
aDat[5] , ; // S99->FHAMOV
aDat[2] , ; // S99->REFERE
aDat[6] , ; // S99->CONCEP
aSum[1] , ;
aSum[2] , ;
aSum[3] } )
ENDIF
AFill(aSum,0)
ENDIF
IF S99->CUENTAS > cCtaIni
EXIT
ENDIF
aDat[1]:= S99->CUENTAS // ID Principal de cuentas contables
aDat[2]:= S99->REFERE // ID Principal de referencias folios o facturas
aDat[3]:= S99->TIPO
aDat[4]:= S99->NUMPOL
aDat[5]:= S99->FHAMOV
aDat[6]:= S99->CONCEP
aSum[1] += S99->SALCARG // Suma Cargos
aSum[2] += S99->SALCRED // Suma Abonos
aSum[3] := aSum[1] - aSum[2] // Suma Dif de saldos
S99->(DbSkip())
ENDDO
*ELSE
*aDatos2:= {{ "","","","","","","","" }}
ENDIF
*ELSE
*aDatos2:= {{ "","","","","","","","" }}
*ENDIF
ENDIF
*oBrw2:SetArray(aDatos2) // Este No funciona ...
oBrw2:aArrayData := aDatos2 // Este Si funciona ...
oBrw2:aCols[6]:nTotal= Trans( aTot[1],"999,999,999.99") // Total cargos
oBrw2:aCols[7]:nTotal= Trans( aTot[2],"999,999,999.99") // Total Abonos
oBrw2:aCols[8]:nTotal= Trans( aTot[3],"999,999,999.99") // Total Dif Sdos
oBrw2:Refresh()
RETURN NIL
//------------------------------------------------------------------------------
STATIC FUNCTION MovDetFac(oBrw1,oBrw2)
LOCAL oDlg2,oBrw
LOCAL aGradBarSelFocus:= { { 1, RGB(252,232,171) , RGB(248,195, 34) } }
LOCAL aGradBarSel:= {{1, RGB(252,235, 184), RGB(251,222,88)}}
LOCAL cAlias, oS_Obs := ARRAY(2),oFnt1, cObserva:=""
cCta := oBrw1:aArrayData[oBrw1:nArrayAt,1]
cCtaIni := SUBS(cCta,1,4)+SUBS(cCta,6,4)+SUBS(cCta,11,4)+SUBS(cCta,16,4)
cRefere := oBrw2:aArrayData[oBrw2:nArrayAt,4]
IF !EMPTY(cRefere) // Condicion Nil que la referencia esta vacia
*Refr_MovFact(cCtaIni,cRefere,oBrw)
S99->( OrdScope(0,cCtaIni+cRefere) )
S99->( OrdScope(1,cCtaIni+cRefere) )
S99->( DbGoTop() )
DEFINE FONT oFnt1 NAME "Arial" SIZE 0,-14 BOLD
DEFINE DIALOG oDlg RESOURCE "C_MOVDETFAC"
REDEFINE XBROWSE oBrw ID 101 OF oDlg ;
HEADERS 'Tipo','Num' ,'Fecha' ,'Referencia','Concepto','Cargo' ,'Abono' ,"Dif Sdo" ;
COLUMNS 'TIPO','NUMPOL','FHAMOV','REFERE' ,'CONCEP' ,'SALCARG','SALCRED','DIFSDO' ;
SIZES 28,30,52,80,180,85,85,85 ;
PICTURES "","","","","","999,999,999.99","999,999,999.99","999,999,999.99" ;
ALIAS S99->( ALIAS() ) FOOTERS LINES CELL
AEval( oBrw:aCols, { |o| o:nEditType := 0 ,; //No editables
o:nHeadStrAlign:= 2 } ) //texto encab/col centrado
Refr_MovFact(oBrw)
WITH OBJECT oBrw
:nMarqueeStyle := MARQSTYLE_HIGHLROW //_HIGHLROWMS
:nColDividerStyle:=LINESTYLE_LIGHTGRAY
:nRowDividerStyle:=LINESTYLE_LIGHTGRAY
//:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } } // colores para lineas normales
: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 := { || S_Observac(@oS_Obs,@cObserva) }
:aCols[6]:nFootStrAlign:= 1 // AL_LEFT - AL_RIGHT - AL_CENTER - 0 - 1 - 2
* :aCols[6]:oFooterFont := oFont
* oBrw:aCols[6]:nTotal= Trans( aSum[1],"999,999,999.99") // Total cargos
:aCols[7]:nFootStrAlign:= 1 // AL_LEFT - AL_RIGHT - AL_CENTER - 0 - 1 - 2
* :aCols[7]:oFooterFont := oFont
* oBrw:aCols[7]:nTotal= Trans( aSum[2],"999,999,999.99") // Total cargos
:aCols[8]:nFootStrAlign:= 1 // AL_LEFT - AL_RIGHT - AL_CENTER - 0 - 1 - 2
:aCols[8]:oFooterFont := oFont
END
REDEFINE SAY oS_Obs[01] PROMPT "Observación:" ID 151 OF oDlg COLOR CLR_BLACK Font oFnt1
REDEFINE SAY oS_Obs[02] PROMPT cObserva ID 152 OF oDlg COLOR CLR_BLUE Font oFnt1
ACTIVATE DIALOG oDlg CENTERED
ENDIF
S99->( OrdScope(0,Nil) )
S99->( OrdScope(1,Nil) )
S99->( DbSeek(cCtaIni) )
S99->( DbGoTop() )
RELEASE oBrw
RETURN NIL
//------------------------------------------------------------------------------
STATIC FUNCTION Refr_MovFact(oBrw)
LOCAL aSum[3]
AFILL(aSum,0)
S99->( DbSeek(cCtaIni+cRefere) )
S99->( DbGoTop() )
DO WHILE S99->CUENTAS = cCtaIni .AND. S99->REFERE = cRefere .AND. S99->( !EOF() )
aSum[1] += S99->SALCARG
aSum[2] += S99->SALCRED
aSum[3] := aSum[1] - aSum[2]
S99->( DbSkip() )
ENDDO
oBrw:aCols[6]:nTotal= Trans( aSum[1],"999,999,999.99") // Total cargos
oBrw:aCols[7]:nTotal= Trans( aSum[2],"999,999,999.99") // Total cargos
oBrw:aCols[8]:nTotal= Trans( aSum[3],"999,999,999.99") // Total cargos
oBrw:Refresh()
S99->( OrdScope(0,cCtaIni+cRefere) )
S99->( OrdScope(1,cCtaIni+cRefere) )
S99->( DbGoTop() )
RETURN NIL
//------------------------------------------------------------------------------
STATIC FUNCTION S_Observac(oS_Obs,cObserva)
cObserva:= S99->REFAMP // Referencia ampliada u observacion
oS_Obs[02]:Refresh()
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"
S13 := Abre_Dbf(13,13) // Abre: MOVTxMxA.DBF // Movimientos INDEX ON "MV_NCTA+MV_REFE"
(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, { "","","","","","","","" } )
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)
RETURN NIL
//------------------------------------------------------------------------------
STATIC FUNCTION CargDatos2(lDlg)
LOCAL oMeter, oDlgP
DEFINE DIALOG oDlgP RESOURCE "PROGRESS" TITLE "Mes_Per" FONT oWnd:oFont
*oDlgP:bStart := {|| CreaTemp(nMA_Ini,oMeter),oDlgP:End()}
oDlgP:bStart:= { || CargaMov(oMeter), oDlgP:End() }
oMeter := TProgress():Redefine(100, oDlgP)
ACTIVATE DIALOG oDlgP CENTERED
*oBrw2:Refresh()
RELEASE oMeter, oDlgP
RETURN (.T.)
** Rutina para movimientos unicamente facturas pendientes a pagar como estado de cuenta,excluyendo facturas ya pagadas
//------------------------------------------------------------------------------
STATIC FUNCTION CargaMov(oMeter)
LOCAL cMes,cAno,cMA_Ini,cMA_Fin,CreaDbf1,nConteo
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 -----*
***********************************************************************************
nReg := 1
nConteo := 1
IF FILE(S99)
*S99->(DbCloseArea())
FERASE(S99)
FERASE("EMP"+TSTR(nNumEmp)+"\"+Ind1Tmp1+".CDX")
ENDIF
FIELD CUENTAS, SEGNEG, REFERE
IF !FILE(S99)
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
{"REFAMP " , "C" ,160 , 0 } ,; // 7
{"CONCEP " , "C" , 60 , 0 } ,; // 8
{"SALCARG" , "N" , 12 , 2 } ,; // 9
{"SALCRED" , "N" , 12 , 2 } ,; //10
{"DIFSDO" , "N" , 12 , 2 } ,; //11
{"REG " , "N" , 3 , 0 }} //12
DbCreate(S99,CreaDbf1)
USE (S99) ALIAS S99 EXCLUSIVE // NEW SHARED
INDEX ON CUENTAS+REFERE TAG (Ind1Tmp1) FOR !DELETED()
S99->(DbSetIndex(Ind1Tmp1))
S99->(OrdSetFocus(1))
ELSE
USE (S99) ALIAS S99 EXCLUSIVE // NEW SHARED
*ZAP
INDEX ON CUENTAS+REFERE TAG (Ind1Tmp1) FOR !DELETED()
S99->(DbSetIndex(Ind1Tmp1))
S99->(OrdSetFocus(1))
ENDIF
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())
CursorWait()
Mes_Per := VAL(SUBS((S05)->ANOMES,3,2))
Ano_Per := VAL(SUBS((S05)->ANOMES,1,2))
S13 := Abre_Dbf(13,13) // ABRE: MOVTxMxA.DBF
oMeter:SetRange(1,(S13)->(Lastrec()))
oMeter:SetPos(0)
(S13)->( DbSetOrder(4) ) // Mov con referencia
(S13)->( DbGoTop() )
DO WHILE (S13)->( !EOF() )
S99->( DbSeek((S13)->MV_NCTA+(S13)->MV_REFE) )
S99->(DbAppend())
REPLACE S99->TIPO WITH (S13)->MV_TIPO ,;
S99->NUMPOL WITH (S13)->MV_NUMP ,;
S99->FHAMOV WITH (S13)->MV_FHAM ,;
S99->CUENTAS WITH (S13)->MV_NCTA ,;
S99->SEGNEG WITH (S13)->SEGNEG ,;
S99->REFERE WITH (S13)->MV_REFE ,;
S99->REFAMP WITH (S13)->OBSERVA ,;
S99->CONCEP WITH (S13)->MV_CONC
IF (S13)->MV_CARG <> 0
REPLACE S99->SALCARG WITH (S13)->MV_CARG + S99->SALCARG ,;
S99->REG WITH S99->REG - nReg
IF (S13)->MV_ABON <> 0 // Si existe en mismo renglon el saldo de abonos \\
REPLACE S99->SALCRED WITH (S13)->MV_ABON + S99->SALCRED ,;
S99->REG WITH S99->REG - nReg
ENDIF
ELSE
REPLACE S99->SALCRED WITH (S13)->MV_ABON + S99->SALCRED ,;
S99->REG WITH IF((S13)->MV_ABON >0,S99->REG + nReg,S99->REG - nReg)
ENDIF
nConteo++
(S13)->(DbSkip())
oMeter:SetPos(nConteo)
SysRefresh()
ENDDO
(S05)->(DbSkip())
Close_Dbf(13,S13)
ENDDO
RELEASE cMes,cAno,cMA_Ini,cMA_Fin,CreaDbf1,nConteo
RETURN NIL
//------------------------------------------------------------------------------
STATIC FUNCTION Finaliza(oItem)
LOCAL lRet := .F.
IF MsgNoYes("¿ Salir consulta estado de cuenta ?","Confirme")
Close_Dbf(5,S05)
Close_Dbf(8,S08)
Close_Dbf(10,S10)
Close_Dbf(13,S13)
S99->(DbCloseArea())
oFont:End()
oItem:Enable() // Cerramos
lRet:= .T.
ENDIF
Release lRet
RETURN (lRet)