aca el codigo
SALD->TT_NOTAS := ValToPrgExp(aInfo[CP_DETALLE]) //aca se guarda
cDetalle:=SALD->TT_NOTAS
IF !Empty(cDetalle)
aDetalle := &cDetalle
IF ISARRAY(aDetalle)
Code: Select all
PROCEDURE ReporteDeSaldo_Proceso(lDetalle)
LOCAL cId
LOCAL anInfo
LOCAL nCuotas
PRIVATE nContador
/*desabilita controles*/
oFecha:disable()
oBtnOk:disable()
oBtnExit:disable()
/*incializa contador*/
nContador := 0
/*solo contratos activos*/
IF empty( dFecha )
SET FILTER TO CONT->USSALDOI>0 .AND. CONT->USMONTO>10 .AND. !CANCELADO
ELSE
SET FILTER TO CONT->USSALDOI>0 .AND. CONT->USMONTO>10 .AND. CONT->FECHA <= DFECHA .AND. !CANCELADO
ENDIF
CONT->(DBGoTop())
/*cuenta registros*/
COUNT TO nContador
/*define margen de progress bar*/
oPBar:SetRange(1,nContador)
/*inicio de tabla de contratos*/
CONT->(DBGoTop())
/*procesa cada contrato hasta alcanzar el final del archivo*/
nContador := 0
WHILE !CONT->(Eof())
/*actualiza avanze en barra de progreso*/
oPBar:SetPos(++nContador)
oGet:SetText("Procesando contrato no. ["+RTrim(CONT->ID)+"]")
/*procesa llamadas de windows*/
SysRefresh()
/*recupera informacion de los pagos de este contrato*/
IF !lDetalle
aInfo:=ReporteDeSaldo_LoPagado()
ELSE
aInfo:=ReporteDeSaldo_LoPagado2()
ENDIF
/*inserta informacion de pagos de este contrato*/
SALD->(DBAppend())
SALD->TT_CONTA := nContador
SALD->TT_CONTR := CONT->ID
SALD->TT_SUSCR := CONT->NOMBRE
SALD->TT_FECHA := CONT->FECHA
SALD->TT_PAGAD := aInfo[CP_PAGADO ]
SALD->TT_CAPIT := aInfo[CP_CAPITAL]
SALD->TT_INTER := aInfo[CP_INTERES]
SALD->TT_SEGUR := aInfo[CP_SEGURO ]
SALD->TT_NUMPA := aInfo[CP_PAGOS ]
SALD->TT_NOTAS := ValToPrgExp(aInfo[CP_DETALLE]) //aca se guarda
cId:=CONT->ID
/*numero de cuotas*/
IF StrCharCount(cId,"-")>2
SALD->TT_NUMCU:=Val(StrToken(cId,3,"-"))*12
ENDIF
/*calculo del valor inicial del contrato*/
SALD->TT_VALOR:=ReporteDeSaldo_ValorContrato()
/*calculo del saldo*/
SALD->TT_SALDO:=SALD->TT_VALOR - SALD->TT_PAGAD
/*siguiente contrato*/
CONT->(DBSkip())
ENDDO
/*mensaje informativo*/
Msginfo("Fin de proceso, "+AllTrim(Transform(nContador,"99,999,999"))+" Contratos procesados")
/*reporte a excel*/
IF lDetalle
ReporteDeDetalle_ToExcel()
ELSE
ReporteDeSaldo_ToExcel()
ENDIF
/*habilita controles*/
oFecha:enable()
oBtnOk:enable()
oBtnExit:enable()
RETURN
PROCEDURE ReporteDeDetalle_ToExcel()
PRIVATE oExcel, oHoja, nRow, cRango, nSaldo1, nSaldo2, nSaldo3
PRIVATE cDetalle, aDetalle, nLenDetalle, x
PRIVATE nSaldoAnt, lInicio, dMes, dAno, dFinMes, nPagoAcu, dFecPag, dFecAnt
IF !MsgNoYes( "Exportar reporte a excel?" )
RETURN
ENDIF
TRY
oExcel := GetActiveObject( "Excel.Application" )
CATCH
TRY
oExcel := CreateObject( "Excel.Application" )
CATCH
MsgAlert( "ERROR! Excel no esta disponible. ", Ole2TxtError() )
RETURN
END
END
CursorWait()
SysRefresh()
oDlg:SetText( "Importando datos a excel!" )
oPBar:SetRange(1,nContador)
nRow:=0
oExcel:WorkBooks:Add()
oHoja := oExcel:Get( "ActiveSheet" )
oHoja:Cells:Font:Name := "Tahoma"
oHoja:Cells:Font:Size := 10
oHoja:Cells(++nRow,1):Value := "Jardines del Recuerdo, S.A."
oHoja:Cells(++nRow,1):Value := "Detalle de pagos de contratos"
IF !empty(dFecha)
oHoja:Cells(++nRow,1):Value := CMonth(dFecha) + " del año " + Str(Year(dFecha),4)
ENDIF
oHoja:Range( "A1:A2" ):Font:Name := "Times New Roman"
oHoja:Range( "A1:A2" ):Font:Size := 14
oHoja:Range( "A1:A2" ):Font:Bold := TRUE
oHoja:Range( "A1:A2" ):Font:Color := CLR_BLUE
oHoja:Range( "A3:A3" ):Font:Size := 12
oHoja:Range( "A3:A3" ):Font:Bold := TRUE
oHoja:Range( "A3:A3" ):Font:Color := CLR_RED
nRow += 2
oHoja:Cells( nRow, 1 ):Value := "No." //A - 1
oHoja:Cells( nRow, 2 ):Value := "ID Contrato" //B - 2
oHoja:Cells( nRow, 3 ):Value := "Suscriptor" //C - 3
oHoja:Cells( nRow, 4 ):Value := "Fecha Cont." //D - 4
oHoja:Cells( nRow, 5 ):Value := "Fecha UCP" //E - 4
oHoja:Cells( nRow, 6 ):Value := "Saldo Ant. U$" //F - 5
oHoja:Cells( nRow, 7 ):Value := "Debe U$" //G - 6
oHoja:Cells( nRow, 8 ):Value := "Haber U$" //H - 7
oHoja:Cells( nRow, 9 ):Value := "Saldo U$" //I - 8
oHoja:Rows( ltrim( str( nRow ) ) + ":" + ltrim( str( nRow ) ) ):RowHeight := 28
oHoja:Rows( ltrim( str( nRow ) ) + ":" + ltrim( str( nRow ) ) ):VerticalAlignment := xlCenter
cRango := "A" + LTrim( Str( nRow ) ) + ":I" + LTrim( Str( nRow ) )
oHoja:Range( cRango ):Font:Bold := TRUE
oHoja:Range( cRango ):Font:Color := CLR_YELLOW
oHoja:Range( cRango ):Interior:Color := CLR_CYAN
oHoja:Range( cRango ):Borders():LineStyle := 1
oHoja:Columns( 1 ):HorizontalAlignment := xlCenter
oHoja:Columns( 6 ):HorizontalAlignment := xlRight
oHoja:Columns( 7 ):HorizontalAlignment := xlRight
oHoja:Columns( 8 ):HorizontalAlignment := xlRight
oHoja:Columns( 9 ):HorizontalAlignment := xlRight
oHoja:Columns( 1 ):NumberFormat := "#,##0"
oHoja:Columns( 4 ):NumberFormat := "dd/mm/yyyy"
oHoja:Columns( 5 ):NumberFormat := "dd/mm/yyyy"
oHoja:Columns( 6 ):NumberFormat := "#,##0.00"
oHoja:Columns( 7 ):NumberFormat := "#,##0.00"
oHoja:Columns( 8 ):NumberFormat := "#,##0.00"
oHoja:Columns( 9 ):NumberFormat := "#,##0.00"
oHoja:Range( "A1:A3" ):HorizontalAlignment := xlLeft
oGet:SetText( "Exportando los datos a una hoja en EXCEL" )
nSaldo1 := nSaldo2 := nSaldo3 := nContador := 0
SALD->(DBGoTop())
++nRow
DO WHILE !SALD->(Eof())
IF nContador % 20 = 0
SysRefresh()
ENDIF
oHoja:Cells(nRow,1):Value := SALD->TT_CONTA
oHoja:Cells(nRow,2):Value := SALD->TT_CONTR
oHoja:Cells(nRow,3):Value := RTrim(SALD->TT_SUSCR)
cDetalle:=SALD->TT_NOTAS
IF !Empty(cDetalle)
aDetalle := &cDetalle //aca se convierte a array nuevamente
IF ISARRAY(aDetalle)
nLenDetalle := Len( aDetalle )
nPagoEnMes := 0
FOR x:=1 TO nLenDetalle
dFechaPago := aDetalle[x,1]
IF Beetwen(dFechaPago,bom(dFecha),eom(dFecha))
nPagoEnMes += aDetalle[x,3]
ENDIF
NEXT
oHoja:Cells( nRow, 4 ):Value := aDetalle[1,1]
oHoja:Cells( nRow, 5 ):Value := aDetalle[nLenDetalle,1]
oHoja:Cells( nRow, 6 ):Value := aDetalle[nLenDetalle,4]+nPagoEnMes
oHoja:Cells( nRow, 7 ):Value := 0
oHoja:Cells( nRow, 8 ):Value := nPagoEnMes
oHoja:Cells( nRow, 9 ):Value := aDetalle[nLenDetalle,4]
ENDIF
ELSE
oHoja:Cells( nRow, 4 ):Value := SALD->TT_FECHA//DFECHA
oHoja:Cells( nRow, 6 ):Value := 0
oHoja:Cells( nRow, 7 ):Value := SALD->TT_VALOR
oHoja:Cells( nRow, 8 ):Value := 0
oHoja:Cells( nRow, 9 ):Value := SALD->TT_VALOR
ENDIF
++nRow
SALD->(DBSkip())
oPBar:SetPos(++nContador)
ENDD
CursorArrow()
SysRefresh()
oHoja:Columns( 2 ):AutoFit()
oHoja:Columns( 3 ):AutoFit()
oHoja:Columns( 4 ):AutoFit()
oHoja:Columns( 5 ):AutoFit()
oHoja:Columns( 6 ):AutoFit()
oHoja:Columns( 7 ):AutoFit()
oHoja:Columns( 8 ):AutoFit()
oHoja:Columns( 9 ):AutoFit()
oHoja:SaveAs( "saldo"+DToS(Date())+".xls" )
oExcel:Visible := TRUE
oHoja := NIL
oExcel := NIL
RETURN