// ***************************************************************************** // Computación en Acción, S.A. de C.V. (C) Copyright 2005 // Todos los Derechos Reservados. // // Sistema: ContpaqNG // // Título: Libreria de Cuentas. // // Descripción: Incluye las funciones comunes para el manejo de cuentas. // // Fecha: 3/Mayo/2005 // Autor: TODOS // // ***************************************************************************** // Historial de Revisiones: // Fecha ID-ND/NC Descripción // ***************************************************************************** // ***************************************************************************** // Definiciones y asumidos globales para la librería // ***************************************************************************** // ***************************************************************************** // Variables de ámbito global // ***************************************************************************** // ***************************************************************************** // Definicion de funciones para el reporte // ***************************************************************************** //****************************************************************************** // fBuscaIdCuenta() // Dado un código de cuenta regresa su identificador. // // Argumento - aCatalogo: Tabla del catálogo de cuentas. // Argumento - aCodigoCuenta: Código de la cuenta a buscar. // // Salida - Id de la cuenta en la tabla de Cuentas. //****************************************************************************** DefFunc fBuscaIdCuenta(aCatalogo:Tabla; aCodigoCuenta) aCatalogo.AgregaColumna ['Id'] aCatalogo.Agregacondicion [aCatalogo(Codigo) = aCodigoCuenta] aCatalogo.Procesa Si aCatalogo->Encontro retorna aCatalogo(Id) FinSi retorna 0 FinFunc //****************************************************************************** // fBuscaCodigoCuenta() // Dado un Id de cuenta regresa su Código // // Argumento - aCatalogo: Tabla del catálogo de cuentas. // Argumento - aIdCuenta: Id de la cuenta a buscar. // // Salida - Código de la cuenta en la tabla de Cuentas. //****************************************************************************** DefFunc fBuscaCodigoCuenta(aCatalogo:Tabla;aIdCuenta) aCatalogo.AgregaColumna['Codigo'] aCatalogo.AgregaCondicion[aCatalogo(Id)=aIdCuenta] aCatalogo.Procesa Si aCatalogo->Encontro retorna aCatalogo(Codigo) Finsi retorna '' FinFunc //****************************************************************************** // fBuscaDescripcionCuenta() // Dado un Id de cuenta regresa su Descripción en el idioma especificado // // Argumento - aCatalogo: Tabla del catálogo de cuentas. // Argumento - aIdCuenta: Id de la cuenta a buscar. // // Salida - Descripción de la cuenta en el idioma especificado //****************************************************************************** DefFunc fBuscaDescripcionCuenta(aCatalogo:Tabla;aIdCuenta;aIdioma) aCatalogo.AgregaColumna['Nombre'] aCatalogo.AgregaColumna['NomIdioma'] aCatalogo.AgregaCondicion[aCatalogo(Id)=aIdCuenta] aCatalogo.Procesa Si aCatalogo->Encontro Si aIdioma = 1 retorna aCatalogo(NomIdioma) Sino retorna aCatalogo(Nombre) Finsi Finsi retorna '' FinFunc //****************************************************************************** // fLeeSaldos() // Lee los saldos de la cuenta. // // Argumento - aSaldos: (Valor por referencia) Regresa el query // realizado en la tabla de Saldos. // Argumento - aIDCuenta: Id de la cuenta. // Argumento - aIDEjercicio: Id del ejercicio. // Argumento - aTipo: Tipo del saldo a buscar. //****************************************************************************** DefFunc fLeeSaldos(aSaldos:Tabla; aIDCuenta; aIDEjercicio; aTipo) aSaldos.AgregaColumna ['Tipo'] aSaldos.AgregaColumna ['SaldoIni'] aSaldos.AgregaColumna ['Importes1'] aSaldos.AgregaColumna ['Importes2'] aSaldos.AgregaColumna ['Importes3'] aSaldos.AgregaColumna ['Importes4'] aSaldos.AgregaColumna ['Importes5'] aSaldos.AgregaColumna ['Importes6'] aSaldos.AgregaColumna ['Importes7'] aSaldos.AgregaColumna ['Importes8'] aSaldos.AgregaColumna ['Importes9'] aSaldos.AgregaColumna ['Importes10'] aSaldos.AgregaColumna ['Importes11'] aSaldos.AgregaColumna ['Importes12'] aSaldos.AgregaColumna ['Importes13'] aSaldos.AgregaColumna ['Importes14'] aSaldos.Agregacondicion [aSaldos(IdCuenta) = aIDCuenta] aSaldos.Agregacondicion [aSaldos(Ejercicio) = aIDEjercicio] aSaldos.Agregacondicion [aSaldos(Tipo) = aTipo] aSaldos.Procesa FinFunc //****************************************************************** // fBuscaCaracter() // Busca la posición del caracter dentro del código. // // Argumento - aCodigo: Código en donde buscar. // Argumento - aCaracterABuscar: El caracter a buscar. // Argumento - aPosicion: La posición inicial de busqueda. // // Salida - La posición del caracter dentro del código. //****************************************************************** DefFunc fBuscaCaracter(aCodigo; aCaracterABuscar; aPosicion) Local lIndice, lCaracterIndividual, lLongitud lIndice = aPosicion lLongitud = @int(@Len(aCodigo)) Mientras lIndice < lLongitud lCaracterIndividual = @SubStr(aCodigo; lIndice; 1) Si aCaracterABuscar = lCaracterIndividual FinCiclo FinSi lIndice = lIndice + 1 FinMientras Retorna lIndice FinFunc //****************************************************************** // fFormateaCodigo() // Formatea el código de cuenta, segun la estructura de la cuenta // dada. // // Argumento - aCodigo: El código de cuenta. // Argumento - aEstCta: La estructura de el código. // // Salida - El código formateado segun la estructura dada. //****************************************************************** DefFunc fFormateaCodigo( aCodigo; aEstCta ) Local lSegmentoMascarilla, lCodigoConMascarilla, lPosicionSeparador, lApuntadorPosicionCodigo, lSegmentoCodigo Si @SubStr( aCodigo; 0; 1) = '_' Retorna aCodigo FinSi lCodigoConMascarilla = '' ApuntadorPosicionMascarilla = 0 lApuntadorPosicionCodigo = 0 lSegmentoMascarilla = 0 lSegmentoCodigo = 0 lPosicionSeparador = 0 Mientras ApuntadorPosicionMascarilla <= (@Len(aEstCta) - 1) lPosicionSeparador = fBuscaCaracter(aEstCta; '-'; ApuntadorPosicionMascarilla) lSegmentoMascarilla = @SubStr(aEstCta; ApuntadorPosicionMascarilla; @int(lPosicionSeparador-ApuntadorPosicionMascarilla)) Si lSegmentoMascarilla = ' ' FinCiclo FinSi ApuntadorPosicionMascarilla = lPosicionSeparador + 1 lSegmentoCodigo = @SubStr(aCodigo; lApuntadorPosicionCodigo; @int(lSegmentoMascarilla)) lApuntadorPosicionCodigo = lApuntadorPosicionCodigo + @int(lSegmentoMascarilla) Si lCodigoConMascarilla = '' lCodigoConMascarilla = lSegmentoCodigo SiNo lCodigoConMascarilla = lCodigoConMascarilla & '-' & lSegmentoCodigo FinSi FinMientras Retorna lCodigoConMascarilla FinFunc //****************************************************************** // fEjecutaReporteAuxiliar // Ejecuta el reporte auxiliar para la cuenta de cuadre al dar doble // sobre el mensaje de que dicha cuenta tiene movimientos. // // Argumento - aColumna: Código de la cuenta // Argumento - aFecha: Fecha del primer movimiento de cuadre //****************************************************************** // Código fallido para desplegar los mopvimientos a la cuenta de cuadre //DefFunc fEjecutaReporteAuxiliar(aColumna; aFecha) // Ejecuta 'MOVIMIENTOSAUXILIARESDELCATALOGO.RTW'; 1, '20070101', '20071231', 1, False, 9, '_CUADRE', '_CUADRE', False, CM_MONE_CODIGO_MONEDA_BASE, 1.0, True, @Hoy(); '_CUADRE' //FinFunc //****************************************************************** // fBuscaMovCuentaCuadre() // Busca si la cuenta de cuadre tiene movimientos. si los tiene // imprime una advertencia en el reporte. // // Argumento - aTCuentas: Tabla de Cuentas // Argumento - aTMovimientos: Tabla de Movimientos // Argumento - aIdioma: Idioma del reporte, 0 = Español, 1 = Inglés //****************************************************************** DefFunc fBuscaMovCuentaCuadre(aTCuentas: Tabla; aTMovimientos: Tabla; aIdioma) Local lIdCuentaCuadre // Para ejecutar el auxiliar de la cuenta de cuadre si se requiere // DefRegion fEjecutaReporteAuxiliar // Buscar el Id de la cuenta de cuadre lIdCuentaCuadre = fBuscaIdCuenta(aTCuentas; '_CUADRE') // Buscar los movimientos de la cuenta de cuadre aTMovimientos.AgregaColumna ['Fecha'] aTMovimientos.AgregaCondicion [aTMovimientos(IdCuenta) = lIdCuentaCuadre] aTMovimientos.Procesa // Si hay movimientos imprime la advertencia Si aTMovimientos->Encontro Columnas 11;0,0,0,0,0,0,0,0,0,0,19 Imprime 3 Color @RGB(255;0;0) Si aIdioma = 0 // [C10].RegionInfo aTMovimientos(Fecha) Texto C10;'Precaución: La cuenta de Cuadre tiene movimientos. ' Imprime // [C10].RegionInfo aTMovimientos(Fecha) Texto C10;'La información pudiera no ser correcta.' SiNo // [C10].RegionInfo aTMovimientos(Fecha) Texto C10;'Caution: The tally account has transactions. ' Imprime // [C10].RegionInfo aTMovimientos(Fecha) Texto C10;'Information could be wrong.' FinSi Imprime FinSi FinFunc