http://www.subirimagenes.com/otros-pantaedocta-8884182.html
Aqui el codigo ...:
- Code: Select all Expand view RUN
- #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
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 "TAHOMA" SIZE 0,-10 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 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() }
*:bChange := { || MovEdoCta(oBrw1,@aDatos2,oBrw2), oBrw2:Refresh() }
END
// Consulta Estados de cuentas a detalle \\
REDEFINE XBROWSE oBrw2 ID 102 OF oDlg ; // Esta parte de aqui como controlar que no me agregue registro vacio si son niveles acumulativas
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
:lFooter := .T.
: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
: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[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
* oBrw1:SetFocus()
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(),.T.)
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) // Esta es la rutina del segundo browse que me inserta registro vacio...
LOCAL aDat[9],aSum[8], aSub[8], aTot[8]
cCta := oBrw1:aArrayData[oBrw1:nArrayAt,1]
AFill(aDat,"")
AFill(aSum,0)
AFill(aSub,0)
AFill(aTot,0)
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)
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
aDatos2:= {{ "","","","","","","","" }} // Aqui la variable arreglo desde principio funciona bien...pero deja una linea en blancoooo...
// Como eliminar la linea en blanco como primer elemento...
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
ENDIF
ENDIF
oBrw2:SetArray(aDatos2)
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()
ENDIF
RETURN NIL
Esperando contar con su amable apoyo ,les agradecere mucho .
Saludos y buen dia.!
Atte: Adrian C. C.
acc69@hotmail.com