Espero haberme explicado adjunto codigo y la imagen.
- Code: Select all Expand view
- #Include "FiveWin.ch"
#Include "xBrowse.ch"
STATIC oDlg,oBrw2
Static S08, S09, S10,S12, 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 aDato,aClrRowBack
MemVar oWnd, oMOpc, nNumEmp, cDescrEmp, Mes_Per, Ano_Per, nStation
//------------------------------------------------------------------------------
FUNCTION MOD_PBAS()
LOCAL oItem:=oMOpc,oBrw
lSelSeg:= .F.
NivBal := 4
aTot := {{0,0,0,0}}
nReg := 0
aDato := {}
aDato := CargaDatos()
DEFINE DIALOG oDlg RESOURCE "CONSBALANZ" TITLE 'Listado de Pólizas y Movimientos'
REDEFINE XBROWSE oBrw ID 101 ;
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";
OF oDlg ARRAY aDato FOOTERS AUTOCOLS LINES CELL
oBrw:lColDividerComplete := .F.
[b]oBrw:bChange := { || MovDet(oBrw) } // Cual es el equivalente pasar como referencia la cuenta y refrescar los datos 2010-0001-0001-0001
oBrw:bKeyDown := {| nKey| Val_nKey_C(nKey, oBrw) } // Cual es el equivalente pasar como referencia la cuenta y refrescar los datos
oBrw:bLDblClick := {|| CaptDatos(.F.,oBrw) } // Cual es el equivalente pasar como referencia la cuenta y refrescar los datos[/b]
ACTIVATE DIALOG oDlg CENTERED // ON INIT Refresca(oBrw,oBrw2)
oItem:Enable() // Cerramos
RETURN NIL
//------------------------------------------------------------------------------
STATIC FUNCTION CargaDatos()
LOCAL cCtas
S08 := Abre_Dbf(8,8) // ABRE CATCTAxA.DBF
S12 := Abre_Dbf(12,12) // Abre: POLZxMxA.DBF
S13 := Abre_Dbf(13,13) // Abre: MOVTxMxA.DBF
nTCarg := 0
nTCred := 0
(S08)->(DbGoTop())
SdoMesAnt:= ("SALD"+TSTR(Mes_Per - 1))
cCtas := SUBS((S08)->CUENTAS,1,4)
DO WHILE (S08)->(!EOF())
IF cCtas <> SUBS((S08)->CUENTAS,1,4)
*AADD( aDato, { "" } )
AADD( aDato, 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( aDato, { (Ext_xNiv(LTRIM((S08)->CUENTAS))),nCol+(S08)->DESCRIP, SdoIni,aSum[1,1],aSum[1,2],aSum[1,3] } )
ENDIF
ENDIF
cCtas := SUBS((S08)->CUENTAS,1,4)
(S08)->(DbSkip())
ENDDO
RETURN (aDato)
//------------------------------------------------------------------------------
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)
//------------------------------------------------------------------------------
[b]STATIC FUNCTION MovDet(oBrw)
MsgInfo( "aqui que muestre el paso de la referecia 1020-0001-0001-001,cada que seleccione las cuentas de detalle"+CRLF+;
" lo usare para buscar en un seek,para que muestre detalles de la cuenta seleccionada" +CRLF+;
"ya que tendre browse de multiseleccion,cual es el equivalente")
RETURN NIL[/b]
Saludos y buen dia.!