// ***************************************************************************** // Computación en Acción, S.A. de C.V. (C) Copyright 2009 // Todos los Derechos Reservados. // // Sistema: CONTPAQ i BANCOS // // Título: Auditoría Bancos ContPAQi // // Imprime las pólizas de CTi y sus movimientos // // Fecha: 23/Noviembre/2009 // Autor: Violeta González // ***************************************************************************** // ***************************************************************************** // Historial de Revisiones: // Fecha ID-ND/NC Descripción // ***************************************************************************** Incluye BibliotecaFechas.rpt // ***************************************************************************** // TABLAS A UTILIZAR // ***************************************************************************** UsaEmpresa tEmpresa;'contpaqw1.00' //UsaTabla tDocumentoDe = tEmpresa['DocumentosDe'] UsaTabla tTiposPoliza = tEmpresa['TiposPolizas'] UsaTabla tDevIVA = tEmpresa['DevolucionesIVA'] UsaTabla tPersona = tEmpresa['Personas'] UsaTabla tCausacionIVA= tEmpresa['CausacionesIVA'] UsaTabla tPerCauIVA = tEmpresa['PeriodosCausacionIVA'] UsaTabla tConceptoIETU= tEmpresa['ConceptosIETU'] UsaTabla tMonedas = tEmpresa['Monedas'] // ***************************************************************************** // CONSULTAS SQL PARA PARÁMETROS // ***************************************************************************** Consulta tCuentasCheques = tEmpresa['SELECT Id, Codigo + \' - \' + Nombre AS Nombre FROM CuentasCheques ORDER BY Nombre ' ] // Consulta tParametros= tEmpresa['SELECT EjerActual, PerActual FROM Parametros ' ] Consulta tEjercicio = tEmpresa['SELECT FecIniPer' & tEmpresa->PeriodoActual & ' AS FecIni, ' & (tEmpresa->PeriodoActual = 14 ? 'FecFinEje' : 'FecIniPer' & (tEmpresa->PeriodoActual+1) & '-1') & ' AS FecFin FROM Ejercicios WHERE Id = ' & tEmpresa->IdEjercicioActual] Consulta tDocumentoDe = tEmpresa['SELECT id, nombre FROM documentosDe WHERE asocTabla = 4 and id != 33 ORDER BY nombre ASC' ] // ***************************************************************************** // PARÁMETROS DEL REPORTE // ***************************************************************************** //pIdioma = 0 // 0 Español, 1 Inglés Parametros Titulo 'titulo.1' Pagina 'pagina.1' //Rango de fechas Parametro pFechaIni = fFechaIniPerBANCOS(tEmpresa->UsaPeriodosContables; tEjercicio('FecIni'); tEmpresa->EjercicioVigenteBN; tEmpresa->PeriodoVigenteBN) Captura Titulo 'titulo.2' Ayuda 'ayuda.1' Control CtrlFecha CambiaAlSalir pFechaFin = pFechaIni // Valida <=; pFechaFin; 'valida.1' FinCaptura Parametro pFechaFin = fFechaFinPerBANCOS(tEmpresa->UsaPeriodosContables; tEjercicio('FecFin'); tEmpresa->EjercicioVigenteBN; tEmpresa->PeriodoVigenteBN) Captura Titulo 'titulo.3' Ayuda 'ayuda.2' Control CtrlFecha Valida >=; pFechaIni; 'valida.2' FinCaptura // Cuentas de cheques Parametro pListaCuentasCheques = '' Captura Titulo 'titulo.4' Ayuda 'ayuda.3' Control CtrlOpcion Datos Origen tCuentasCheques('Nombre');tCuentasCheques('Id') OrdenaPor tCuentasCheques('Nombre') FinDatos FinCaptura //vacio Parametro vacio = 0 Captura Control CtrlVacio FinCaptura //Rango de pólizas //Parametro pPolIni = 1 Captura // Titulo 'titulo.5' // Ayuda 'ayuda.4' // Control CtrlNumero // Rango 1,999999999 // CambiaAlSalir pPolFin = pPolIni //FinCaptura //Parametro pPolFin = 999999999 Captura // Titulo 'titulo.6' // Ayuda 'ayuda.5' // Control CtrlNumero // Valida >=; pPolIni; 'valida.3' //FinCaptura Parametro pDocumentoDe= 0 Captura Titulo 'titulo.7' Ayuda 'ayuda.6' Control CtrlLista Datos 'dato.1';0//;'dato.2';1;'dato.3';2;'dato.4';3;'dato.5';4;'dato.6';5 Origen tDocumentoDe('Nombre');tDocumentoDe('Id') OrdenaPor tDocumentoDe('Nombre') FinDatos FinCaptura // pFormato: 0 = detalle, 1 = sólo encabezado Parametro pFormato= 0 Captura Titulo 'titulo.8' Ayuda 'ayuda.7' Control CtrlLista Datos 'dato.7';0;'dato.8';1 FinDatos FinCaptura Parametro pTipoContabilizacion = True Captura Titulo 'titulo.9' Ayuda 'ayuda.8' Control CtrlCheckBox FinCaptura Parametro pDesgloseIVA = False Captura Titulo 'titulo.10' Ayuda 'ayuda.9' Control CtrlCheckBox FinCaptura FinPagina Pagina 'pagina.2' Parametro pImpFecha = True Captura Titulo 'titulo.11' Ayuda 'ayuda.10' Control CtrlCheckBox Dependencia False; pFechaReporte = False Dependencia True; pFechaReporte = True FinCaptura Parametro pFechaReporte = @Hoy( ) Captura Titulo 'titulo.12' Ayuda 'ayuda.11' Control CtrlFecha FinCaptura FinPagina FinParametros Si pListaCuentasCheques='' pListaCuentasCheques='0' Finsi Si pDocumentoDe=0 pDocumentoDe='1,2,3,4,5' FinSi // ***************************************************************************** // FUNCIONES DE LIBRERÍA // ***************************************************************************** Incluye BibliotecaCheques.rpt Incluye BibliotecaCatalogos.rpt Incluye BibliotecaCuentas.rpt Incluye BibliotecaIVA.rpt // ***************************************************************************** // DEFINICIONES Y ASUMIDOS GLOBALES DEL REPORTE // ***************************************************************************** // Configuración de la hoja Configuracion Orientacion Vertical Papel Carta Margen Superior; 1 Margen Inferior; 1 Margen Izquierdo; 1 Margen Derecho; 1 FinConfiguracion // Numero de columnas a usar en el reporte // Columnas 14;19.5,0 UsaLetra 'Dialog' Altura 8 // ***************************************************************************** // VARIABLES DE AMBITO GLOBAL // ***************************************************************************** // Contador de Pólizas gNumeroPol = 0 gRegPol='' gIdCtaBan=0 gMascarilla = tEmpresa->Estructura Si pIdioma = 0 gMeses = 'Ninguno,Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic' SiNo gMeses = 'None,Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec' FinSi // ***************************************************************************** // FUNCIONES DEL REPORTE // ***************************************************************************** ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //*** Función que se ejecuta cuando se da click a una región sensible DefFunc fEjecutaReporte(aColumna; aLista) lTipoDocumento = 1 Escoge @Escoge(aLista;2) Caso '04050' // Cheque lTipoDocumento = 1 FinCaso Caso '04040' // Egreso lTipoDocumento = 2 FinCaso Caso '04020' // Ingreso lTipoDocumento = 3 FinCaso Caso '04010' // Ingreso no depositado lTipoDocumento = 4 FinCaso Caso '04030' // Deposito lTipoDocumento = 5 FinCaso FinEscoge Ejecuta 'DetalleDeDocumentosBancarios.RTW'; @Escoge(aLista;0), @Escoge(aLista;0), False, False, @Escoge(aLista;1), lTipoDocumento, @Escoge(aLista;3), @Escoge(aLista;3), True, True, True, True, True, True , @HOY(); aLista FinFunc // ***************************************************************************** // Función imprimeEncabezadoMovtos() // imprime el encabezado de docto. bancario, póliza y movimientos póliza // ***************************************************************************** DefFunc imprimeEncabezadoMovtos() Si pFormato=0 // Si formato con detalle, imprime movimientos UsaLetra 'Dialog' Altura 8 Negritas true Columnas 1;8 Texto C0; ' M O V I M I E N T O S P Ó L I Z A ' Imprime //Columnas 14;1,1,0.2,2.5,0.2,2.8,0.2,3.5,0.2,1.5,0.2,2.8,0.2,2.8 Columnas 16;2,2,2,0.2,2.2,0.2,2.5,0.2,2,0.2,1,1,2.5,0.2,2.5,1.0 Si pIdioma=0 Texto C1; 'Número' Texto C2; 'Referencia' Texto C4; 'Cuenta' Texto C6; 'Nombre' Texto C8; 'Concepto' Texto C10; 'Diario' Si tEmpresa->UsaSegmentosDeNegocio = 1 // La empresa usa segmentos en movimientos Texto C11; 'Seg.' FinSi Texto C12; 'Cargo' Texto C14; 'Abono' Imprime Sino Texto C1; 'Number' Texto C2; 'Reference' Texto C4; 'Account' Texto C6; 'Name' Texto C8; 'Concept' Texto C10; 'Journal' Si tEmpresa->UsaSegmentosDeNegocio = 1 // La empresa usa segmentos en movimientos Texto C11; 'Dep.' FinSi Texto C12; 'Debits' Texto C14; 'Credits' Imprime Finsi //Subrayacol //Imprime //Negritas false FinSi//Si pformato=0 FinFunc // ***************************************************************************** // Función imprimeEncabezado() // imprime el encabezado de docto. bancario, póliza y movimientos póliza // ***************************************************************************** DefFunc fImprimeEncabezado(aTipo) Saltalin 1 Negritas True Si aTipo = 'I' Texto (pIdioma = 0 ? '+Ingresos' : '+Income') Imprime Sino Texto (pIdioma = 0 ? '-Egresos' : '-Expenses') Imprime Finsi Subrayacol Imprime UsaLetra 'Dialog' Altura 8 Negritas true Columnas 1;8 Texto C0; 'D O C U M E N T O B A N C A R I O ' Imprime Columnas 13;2,0.2,2.5,0.2,2.4,0.2,3,0.2,2,0.2,2.5,0.2,2.5 Si pIdioma=0 Texto C0; 'Fecha' Texto C2; 'Tipo' Texto C4; 'Num/Folio' Texto C6; 'Benef/Pag' Texto C8; 'Referencia' Texto C10; 'Estado' Texto C12; 'Importe' Sino Texto C0; 'Date' Texto C2; 'Type' Texto C4; 'Number' Texto C6; 'Payee/Payeer' Texto C8; 'Reference' Texto C10; 'Status' Texto C12; 'Total Amount' Finsi Imprime Columnas 1;4 Texto C0; ' P Ó L I Z A ' Imprime //Columnas 15;0.2,2,2.5,0.2,2.4,0.2,3,0.2,2,0.2,2,0.2,2.5,0.2,2.5 Columnas 16;2,2,2,0.2,2.2,0.2,2.5,0.2,2,0.2,1,1,2.5,0.2,2.5,1.0 Si pIdioma=0 Texto C1; 'Fecha' Texto C2; 'Tipo' Texto C4; 'Número' Texto C6; 'Concepto' Texto C8; 'Clase' Texto C10; 'Diario' Texto C12; 'Cargo' Texto C14; 'Abono' Sino Texto C0; 'Date' Texto C2; 'Type' Texto C4; 'Number' Texto C6; 'Concept' Texto C8; 'Class' Texto C10; 'Journal' Texto C12; 'Debits' Texto C14; 'Credits' Finsi Imprime imprimeEncabezadoMovtos() Subrayacol Imprime Negritas false FinFunc // ***************************************************************************** // Imprime los datos de una cuenta de cheques // // Argumento - aCuenta: Número de cuenta // Argumento - aNombre: Nombre de la cuenta // Argumento - aSaldoInicial: Saldo inicial // Argumento - aMoneda: Nombre de la moneda de la cuenta // ***************************************************************************** DefFunc fImprimeCuenta(aCuenta; aNombre; aMoneda) Local lImprime Saltalin 1 Negritas True Texto 0;aCuenta & ' - ' & aNombre & ' (' & aMoneda & ')' Imprime Negritas False FinFunc // ***************************************************************************** // Lee e imprime la póliza original de un documento cancelado o devuelto // // Argumento - aEjercicio: // Argumento - aPeriodo: // Argumento - aTipo: // Argumento - aFolio: // ***************************************************************************** DefFunc imprimePolizaOriginal(aEjercicio;aPeriodo;aTipo;aFolio) lConsultaDetalle = '' lConsultaTabla = '' Si pFormato = 0 lConsultaDetalle = ', m.NumMovto, c.Codigo as Cuenta, c.nombre as nombreCuenta, c.CtaEfectivo, m.TipoMovto, ' lConsultaDetalle = lConsultaDetalle & ' m.Importe, m.ImporteME, diariosMovto.codigo as DiarioMovto, m.referencia, m.concepto as ConceptoMov, m.IdSegNeg, sn.codigo as CodSegNeg ' lConsultaTabla = ' JOIN MovimientosPoliza m ON m.IdPoliza = p.Id ' lConsultaTabla = lConsultaTabla & ' JOIN Cuentas c ON c.Id = m.IdCuenta ' lConsultaTabla = lConsultaTabla & ' LEFT JOIN SegmentosNegocio sn ON (m.IdSegNeg = sn.id) ' lConsultaTabla = lConsultaTabla & ' LEFT JOIN DiariosEspeciales diariosMovto ON (m.IdDiario = diariosMovto.id) ' FinSi ConsultaPol= 'SELECT p.id as idPol, p.Fecha as pFecha, tp.Nombre as tipoPoliza, p.Folio as pFolio, p.Cargos, p.Abonos, p.concepto, p.Clase, p.tipoPol, diarios.codigo as Diario' ConsultaPol= ConsultaPol & lConsultaDetalle ConsultaPol= ConsultaPol & ' FROM polizas p ' ConsultaPol= ConsultaPol & ' INNER JOIN TiposPolizas tp ON (p.TipoPol = tp.Codigo)' ConsultaPol= ConsultaPol & ' LEFT JOIN DiariosEspeciales diarios ON (p.IdDiario = diarios.id)' ConsultaPol= ConsultaPol & lConsultaTabla ConsultaPol= ConsultaPol & ' WHERE p.Ejercicio = '& aEjercicio &' and p.Periodo = '& aPeriodo &' and p.TipoPol = '& aTipo &' and p.Folio = '& aFolio &' ' //Texto ConsultaPol //Imprime Consulta TPolizasOrigen=tEmpresa[ConsultaPol] lIdPolOrigen = 0 Mientras TPolizasOrigen->Encontro Si lIdPolOrigen != TPolizasOrigen('idPol') lIdPolOrigen = TPolizasOrigen('idPol') Saltalin 1 Negritas true Columnas 1;8 Texto C0; (pIdioma = 0 ? ' PÓLIZA ORIGINAL ' : ' ORIGINAL JOURNAL ENTRY ') Imprime Negritas false // Imprime: ENCABEZADO PÓLIZA // Columnas 14;2,2,2.5,0.2,2.4,0.2,3,0.2,2,0.2,2.5,0.2,2.5,6.0 Columnas 16;2,2,2,0.2,2.2,0.2,2.5,0.2,2,0.2,1,1,2.5,0.2,2.5,1.0 [C12].Color @RGB(0;0;0) [C14].Color @RGB(0;0;0) lImprimePolOrigen = '' [C0] lImprimePolOrigen = fEditaFecha(TPolizasOrigen('pFecha');pIdioma)[C1] lImprimePolOrigen = TPolizasOrigen('tipoPoliza')[C2] lImprimePolOrigen = '' [C3] lImprimePolOrigen = TPolizasOrigen('pFolio')[C4] lImprimePolOrigen = '' [C5] lImprimePolOrigen = fEliminaEnter(TPolizasOrigen('Concepto'))[C6] lImprimePolOrigen = '' [C7] Si TPolizasOrigen('Clase') = 1 lClass= '' Sino lClass= pIdioma = 0 ? 'Sin afectar' : 'Without affecting' FinSi lImprimePolOrigen= lClass [C8] lImprimePolOrigen = '' [C9] Si TPolizasOrigen('Diario') != 'NULL' lImprimePolOrigen = TPolizasOrigen('Diario')[C10] Sino lImprimePolOrigen = '' [C10] FinSi lImprimePolOrigen = '' [C11] lImprimePolOrigen = TPolizasOrigen('Cargos')[C12] lImprimePolOrigen = '' [C13] lImprimePolOrigen = TPolizasOrigen('Abonos')[C14] lImprimePolOrigen = '' [C15] Si TPolizasOrigen('Cargos') < 0 [C12].Color @RGB(255;0;0) FinSi Si TPolizasOrigen('Abonos') < 0 [C14].Color @RGB(255;0;0) FinSi Lista lImprimePolOrigen FinSi // si idPoliza es diferente // imprimir detalle Si pFormato = 0 // imprime: MOVIMIENTOS PÓLIZA Columnas 16;2,2,2,0.2,2.2,0.2,2.5,0.2,2,0.2,1,1,2.5,0.2,2.5,1.0 [C12..C14].Decimales fBuscaDecimalesMonedaSQL(CM_MONE_CODIGO_MONEDA_BASE) [C12].Color @RGB(0;0;0) [C14].Color @RGB(0;0;0) lImprimePolMovtosOrigen = '' [C0] lImprimePolMovtosOrigen = TPolizasOrigen('NumMovto')[C1] lImprimePolMovtosOrigen = TPolizasOrigen('Referencia')[C2] lImprimePolMovtosOrigen = '' [C3] lCodCuenta = TPolizasOrigen('Cuenta') lCodMask = fFormateaCodigo(lCodCuenta;gMascarilla) lImprimePolMovtosOrigen = lCodMask [C4] lImprimePolMovtosOrigen = '' [C5] lImprimePolMovtosOrigen = TPolizasOrigen('nombreCuenta')[C6] lImprimePolMovtosOrigen = '' [C7] Si TPolizasOrigen('ConceptoMov') != 'NULL' lImprimePolMovtosOrigen = fEliminaEnter(TPolizasOrigen('ConceptoMov')) [C8] Sino lImprimePolMovtosOrigen = '' [C8] FinSi lImprimePolMovtosOrigen = '' [C9] Si TPolizasOrigen('DiarioMovto') != 'NULL' lImprimePolMovtosOrigen = '^' & @Trim(1;TPolizasOrigen('DiarioMovto')) [C10] Sino lImprimePolMovtosOrigen = '' [C10] FinSi Si tEmpresa->UsaSegmentosDeNegocio = 1 // La empresa usa segmentos en movimientos Si TPolizasOrigen('CodSegNeg') != 'NULL' lImprimePolOrigen = '^' & TPolizasOrigen('CodSegNeg') [C11] Sino lImprimePolMovtosOrigen = '' [C11] FinSi Sino lImprimePolMovtosOrigen = '' [C11] FinSi Si !TPolizasOrigen('TipoMovto') lImprimePolMovtosOrigen = TPolizasOrigen('Importe')[C12] lImprimePolMovtosOrigen = '' [C13] lImprimePolMovtosOrigen = '' [C14] SiNo lImprimePolMovtosOrigen = '' [C12] lImprimePolMovtosOrigen = '' [C13] lImprimePolMovtosOrigen = TPolizasOrigen('Importe')[C14] FinSi Si TPolizasOrigen('Importe') < 0 [C12].Color @RGB(255;0;0) [C14].Color @RGB(255;0;0) FinSi lImprimePolMovtosOrigen = '' [C15] Lista lImprimePolMovtosOrigen FinSi TPolizasOrigen.Busca Siguiente FinMientras // Hay movimientos FinFunc // ***************************************************************************** // Lee e imprime los movimientos de una cuenta de cheques // // Argumento - aIdCtaCheques: Id de la cuenta // Argumento - aTipoSaldo: Tipo de movimientos: 'I' - Ingresos, 'E' - Egresos // // Retorna Suma de los movimientos // ***************************************************************************** DefFunc fImprimeMovtosCuenta(aIdCtaCheques; aTipo; aCodigoCuenta) Local lImprime, lAlMenosUno, lEncabezado, lTotal, lStrQuery, lCampos1, lCampos2, lTabla1, lTabla2, lEstadoDoc, lClase, lConsultaCamposFormatoIVA, lConsultaTablasFormatoIVA, lImprimeDoc, lImprimeIVA, lIdPoliza, lImprimeEncabezadoMovtos, lOperador Local lEjercicio, lPeriodo, lTipo, lFolio lTotal = 0.0 lImprimeDoc = 0 // nos ayuda a imprimir el docto una sóla vez, guarda el id del docto bancario, se imprime cuando es diferente lImprimeIVA = false // nos ayuda a imprimir el IVA una sóla vez lIdPoliza = 0 // almacena el id de póliza que se usará para buscar el IVA lImprimeEncabezadoMovtos = false // bandera que indica si se imprime o no el encabezado de movtos. lOperador = '' // guarda el operador que se usara en los JOIN's de la aplicación lEjercicio = 0 lPeriodo = 0 lTipo = 0 lFolio = 0 // Bandera de que al menos hay un movimiento por imprimir apagada lAlMenosUno = 0 // Apaga la bandera de que el encabezado no ha sido impreso lEncabezado = 0 Si aTipo = 'I' // Imprimir ingresos // Consulta de pólizas lCampos1 = 'SELECT dd.Codigo as CodigoDocumentoDe, d.id as idDocto, d.NumPol, d.Fecha as FechaDocto, d.FechaAplicacion,d.TipoDocumento, t.Nombre, d.Folio, d.beneficiarioPagador as nombreBePa, d.Referencia, d.Total, d.EsProyectado, d.EsConciliado, ' lCampos2 = 'SELECT dd.Codigo as CodigoDocumentoDe, d.id as idDocto, d.NumPol, d.Fecha as FechaDocto, d.FechaAplicacion,d.TipoDocumento, t.Nombre, d.Folio, \'\' as nombreBePa, d.Referencia, d.Total, \'FALSE\' AS EsProyectado, d.EsConciliado, ' lTabla1 = 'Ingresos' lTabla2 = 'Depositos' lEsCheque = false SiNo lCampos1= 'SELECT dd.Codigo as CodigoDocumentoDe, d.id as idDocto, d.NumPol, d.Fecha as FechaDocto, d.FechaAplicacion, d.TipoDocumento, t.Nombre, d.Folio, d.BeneficiarioPagador as nombreBePa, d.Referencia, d.Total, d.EsProyectado, d.EsCancelado, d.EsDevuelto, d.EsImpreso, d.EsConciliado, d.EjercicioPolOrigen, d.PeriodoPolOrigen, d.TipoPolOrigen, d.NumPolOrigen,' lCampos2 = 'SELECT dd.Codigo as CodigoDocumentoDe, d.id as idDocto, d.NumPol, d.Fecha as FechaDocto, d.FechaAplicacion,d.TipoDocumento, t.Nombre, d.Folio, d.BeneficiarioPagador as nombreBePa, d.Referencia, d.Total, d.EsProyectado, \'FALSE\' AS EsCancelado, \'FALSE\' AS EsDevuelto, \'FALSE\' AS EsImpreso, d.EsConciliado, 0 AS EjercicioPolOrigen, 0 AS PeriodoPolOrigen, 0 AS TipoPolOrigen, 0 AS NumPolOrigen,' lTabla1 = 'Cheques' lTabla2 = 'Egresos' lEsCheque = true FinSi Si pTipoContabilizacion lOperador = 'LEFT' FinSi //Consulta con formato // ---------------------------------------------------------------------------------------------- lConsultaCamposFormatoIVA = '' lConsultaTablasFormatoIVA = '' Si pFormato = 0 // si tiene movimientos, inicia con , porque es continuación de la 1er. consulta lConsultaCamposFormatoIVA = lConsultaCamposFormatoIVA & ', m.NumMovto, c.Codigo as Cuenta, c.nombre as nombreCuenta, m.TipoMovto, ' lConsultaCamposFormatoIVA = lConsultaCamposFormatoIVA & ' m.Importe, m.ImporteME, diariosMovto.Codigo as DiarioMovto, m.referencia as RefMovto, m.concepto as ConceptoMov, m.IdSegNeg, sn.Codigo as CodSegNeg ' lConsultaTablasFormatoIVA = lConsultaTablasFormatoIVA & lOperador & ' JOIN MovimientosPoliza m ON m.IdPoliza = p.Id ' lConsultaTablasFormatoIVA = lConsultaTablasFormatoIVA & lOperador & ' JOIN Cuentas c ON c.Id = m.IdCuenta ' lConsultaTablasFormatoIVA = lConsultaTablasFormatoIVA & ' LEFT JOIN SegmentosNegocio sn ON (m.IdSegNeg = sn.id) ' lConsultaTablasFormatoIVA = lConsultaTablasFormatoIVA & ' LEFT JOIN DiariosEspeciales diariosMovto ON (m.IdDiario = diariosMovto.id) ' FinSi pDesgloseIVA2 = false // TODO eliminar, cuando ya defina como pongo el IVA Si pDesgloseIVA2 = true // si imprime causación IVA lConsultaCamposFormatoIVA= lConsultaCamposFormatoIVA & ',ci.TotTasa15, ci.BaseTasa15, ci.IVATasa15, ci.IVATasa15NoAcred, ' lConsultaCamposFormatoIVA= lConsultaCamposFormatoIVA & ' ci.TotTasa10, ci.BaseTasa10, ci.IVATasa10, ci.IVATasa10NoAcred,' lConsultaCamposFormatoIVA= lConsultaCamposFormatoIVA & ' ci.TotTasa8, ci.BaseTasa8, ci.IVATasa8, ci.IVATasa8NoAcred,' lConsultaCamposFormatoIVA= lConsultaCamposFormatoIVA & ' ci.TotTasa0, ci.BaseTasa0, ci.TotTasaExento, ci.BaseTasaExento, ' lConsultaCamposFormatoIVA= lConsultaCamposFormatoIVA & ' ci.TotOtraTasa, ci.BaseOtraTasa, ci.IVAOtraTasa, ' lConsultaCamposFormatoIVA= lConsultaCamposFormatoIVA & ' ci.ISRRetenido, ci.TotOtros, ci.IVARetenido, ci.NoCausar, ' lConsultaCamposFormatoIVA= lConsultaCamposFormatoIVA & ' ci.IETU, cietu.Nombre as conceptoIETU, pciva.EjercicioAsignado, pciva.PeriodoAsignado ' lConsultaTablasFormatoIVA= lConsultaTablasFormatoIVA & ' LEFT JOIN CausacionesIVA ci ON (p.id = ci.idPoliza) ' lConsultaTablasFormatoIVA= lConsultaTablasFormatoIVA & ' LEFT JOIN ConceptosIETU cietu ON (ci.idCOnceptoIETU = cietu.id) ' lConsultaTablasFormatoIVA= lConsultaTablasFormatoIVA & ' LEFT JOIN PeriodosCausacionIVA pciva ON (ci.idPoliza = pciva.idPoliza) ' // TODO falta incluir control de IVA FinSi //----------------------------------------------------------------------------------------------- // consulta solo encabezados CadenaConsulta= lCampos1 CadenaConsulta= CadenaConsulta & ' p.id as idPol, p.Fecha as pFecha, tp.Nombre as tipoPoliza, p.Folio as pFolio, p.Cargos, p.Abonos, p.concepto, p.Clase, p.tipoPol, diarios.codigo as Diario' CadenaConsulta= CadenaConsulta & lConsultaCamposFormatoIVA CadenaConsulta= CadenaConsulta & ' FROM '& lTabla1 & ' d ' CadenaConsulta= CadenaConsulta & ' INNER JOIN TiposDocumentos t ON t.Codigo = TipoDocumento ' CadenaConsulta= CadenaConsulta & ' INNER JOIN DocumentosDe dd ON dd.id = d.IdDocumentoDe ' CadenaConsulta= CadenaConsulta & ' LEFT JOIN polizas p ON (p.Ejercicio = d.EjercicioPol and p.Periodo = d.PeriodoPol and p.TipoPol = d.TipoPol and p.Folio = d.NumPol)' CadenaConsulta= CadenaConsulta & ' LEFT JOIN TiposPolizas tp ON (p.TipoPol = tp.Codigo)' CadenaConsulta= CadenaConsulta & ' LEFT JOIN DiariosEspeciales diarios ON (p.IdDiario = diarios.id)' CadenaConsulta= CadenaConsulta & lConsultaTablasFormatoIVA CadenaConsulta= CadenaConsulta & ' WHERE d.IdCuentaCheques = ' & aIdCtaCheques & ' ' Si pDocumentoDe != 0 CadenaConsulta= CadenaConsulta & ' AND d.IdDocumentoDe IN ('& pDocumentoDe & ') ' FinSi CadenaConsulta= CadenaConsulta & ' AND d.Fecha BETWEEN \''& pFechaIni &'\' AND \''& pFechaFin &'\' ' CadenaConsulta= CadenaConsulta & ' UNION ' CadenaConsulta= CadenaConsulta & lCampos2 CadenaConsulta= CadenaConsulta & ' p.id as idPol, p.Fecha as pFecha, tp.Nombre as tipoPoliza, p.Folio as pFolio, p.Cargos, p.Abonos, p.concepto, p.Clase, p.tipoPol, diarios.codigo as Diario' CadenaConsulta= CadenaConsulta & lConsultaCamposFormatoIVA CadenaConsulta= CadenaConsulta & ' FROM '& lTabla2 & ' d ' CadenaConsulta= CadenaConsulta & ' INNER JOIN TiposDocumentos t ON t.Codigo = TipoDocumento ' CadenaConsulta= CadenaConsulta & ' INNER JOIN DocumentosDe dd ON dd.id = d.IdDocumentoDe ' CadenaConsulta= CadenaConsulta & ' LEFT JOIN polizas p ON (p.Ejercicio = d.EjercicioPol and p.Periodo = d.PeriodoPol and p.TipoPol = d.TipoPol and p.Folio = d.NumPol)' CadenaConsulta= CadenaConsulta & ' LEFT JOIN TiposPolizas tp ON (p.TipoPol = tp.Codigo)' CadenaConsulta= CadenaConsulta & ' LEFT JOIN DiariosEspeciales diarios ON (p.IdDiario = diarios.id)' CadenaConsulta= CadenaConsulta & lConsultaTablasFormatoIVA CadenaConsulta= CadenaConsulta & ' WHERE d.IdCuentaCheques = ' & aIdCtaCheques & ' ' Si pDocumentoDe != 0 CadenaConsulta= CadenaConsulta & ' AND d.IdDocumentoDe IN ('& pDocumentoDe & ') ' FinSi CadenaConsulta= CadenaConsulta & ' AND d.Fecha BETWEEN \''& pFechaIni &'\' AND \''& pFechaFin &'\' ' //CadenaConsulta= CadenaConsulta & ' AND d.Folio BETWEEN ' & pPolIni & ' AND ' & pPolFin & ' ' CadenaConsulta= CadenaConsulta & ' ORDER BY d.Fecha ASC, d.TipoDocumento ASC, d.folio ASC ' //Texto CadenaConsulta //Imprime lCancelDev = false Consulta TPolizas=tEmpresa[CadenaConsulta] Mientras TPolizas->Encontro Si !lEncabezado fImprimeEncabezado(aTipo) lEncabezado = 1 lSaltaLinea = 0 FinSi Si TPolizas('NumPol') = '0' y pTipoContabilizacion // se debe mostrar despues de imprimir movtos poliza Si pDesgloseIVA = true Si lImprimeIVA = true imprimeIVA16(lIdPoliza) // imprime el dato de la póliza anterior lImprimeIVA = false FinSi FinSi // Si fue el último con póliza - Si esta cancelado o devuelto y tiene póliza original, imprime la póliza origen Si lCancelDev y lFolio != 0 imprimePolizaOriginal(lEjercicio;lPeriodo;lTipo;lFolio) lCancelDev = false gNumeroPol = gNumeroPol + 1 FinSi Si aTipo = 'E' lEjercicio = TPolizas('EjercicioPolOrigen') lPeriodo = TPolizas('PeriodoPolOrigen') lTipo = TPolizas('TipoPolOrigen') lFolio = TPolizas('NumPolOrigen') Sino lEjercicio = 0 lPeriodo = 0 lTipo = 0 lFolio = 0 FinSi Si lImprimeDoc != 0 Subrayacol Imprime FinSi Saltalin lSaltaLinea lSaltaLinea = 2 lImprimeDoc = TPolizas('idDocto') // lImprimeIVA = true lIdPoliza = TPolizas('idPol') // lImprimeEncabezadoMovtos = true // Imprime: DOCUMENTO BANCARIO Columnas 14;2,0.2,2.5,0.2,2.4,0.2,3,0.2,2,0.2,2,0.2,2.5,2.5 [C12].Color @RGB(0;0;0) lImprime = fEditaFecha(TPolizas('FechaDocto');pIdioma)[C0] lImprime = '' [C1] //lImprime = fEditaFecha(TPolizas('FechaAplicacion');pIdioma)[C1] lImprime = TPolizas('Nombre')[C2] lImprime = '' [C3] lImprime = @TRIM(3;TPolizas('Folio'))[C4] lImprime = '' [C5] lImprime = TPolizas('nombreBePa')[C6] lImprime = '' [C7] lImprime = TPolizas('Referencia')[C8] lImprime = '' [C9] lEstadoDoc = '' Si TPolizas('EsProyectado') = true lEstadoDoc = pIdioma = 0 ? 'Proyectado' : 'Projected' SiNo Si TPolizas('EsConciliado') = true lEstadoDoc = pIdioma = 0 ? 'Conciliado' : 'Conciliated' SiNo Si lEsCheque = false lEstadoDoc = pIdioma = 0 ? 'Emitido' : 'Emmited' SiNo Si TPolizas('EsCancelado') = true lEstadoDoc = pIdioma = 0 ? 'Cancelado' : 'Cancelled' [C12].Color @RGB(255;0;0) lCancelDev = true SiNo Si TPolizas('EsDevuelto') = true lEstadoDoc = pIdioma = 0 ? 'Devuelto' : 'Returned' [C12].Color @RGB(255;0;0) lCancelDev = true SiNo Si TPolizas('EsImpreso') = true lEstadoDoc = pIdioma = 0 ? 'Impreso' : 'Printed' SiNo lEstadoDoc = pIdioma = 0 ? 'Autorizado' : 'Authorized' FinSi //impreso FinSi // esDevuelto FinSi // es cancelado FinSi // esCheque FinSi // conciliado FinSi // proyectado lImprime = lEstadoDoc [C10] lImprime = '' [C11] lImprime = TPolizas('Total')[C12] lImprime = pIdioma = 0 ? ' No contabilizado' : ' Not contabilized' [C13] [C13].Color @RGB(0;0;0) Si TPolizas('Total') < 0 [C12].Color @RGB(255;0;0) FinSi lTotal = lTotal + 1 [C4].RegionInfo ''&TPolizas('FechaDocto')&','&@TRIM(3;aCodigoCuenta)&','&@TRIM(3;TPolizas('CodigoDocumentoDe'))&','&@VAL(TPolizas('Folio')) Lista lImprime Sino // imprime con todo y póliza Si lIdPoliza != TPolizas('idPol') // se debe mostrar despues de imprimir movtos poliza Si pDesgloseIVA = true Si lImprimeIVA = true imprimeIVA16(lIdPoliza) // imprime el dato de la póliza anterior lImprimeIVA = false FinSi FinSi // Si esta cancelado o devuelto y tiene póliza original, imprime la póliza origen Si lCancelDev y lFolio != 0 imprimePolizaOriginal(lEjercicio;lPeriodo;lTipo;lFolio) lCancelDev = false gNumeroPol = gNumeroPol + 1 FinSi Si lImprimeDoc != 0 Subrayacol Imprime FinSi Saltalin lSaltaLinea lSaltaLinea = 2 lImprimeDoc = TPolizas('idDocto') lImprimeIVA = true lIdPoliza = TPolizas('idPol') lImprimeEncabezadoMovtos = true Si aTipo = 'E' lEjercicio = TPolizas('EjercicioPolOrigen') lPeriodo = TPolizas('PeriodoPolOrigen') lTipo = TPolizas('TipoPolOrigen') lFolio = TPolizas('NumPolOrigen') Sino lEjercicio = 0 lPeriodo = 0 lTipo = 0 lFolio = 0 FinSi // Imprime: DOCUMENTO BANCARIO Columnas 13;2,0.2,2.5,0.2,2.4,0.2,3,0.2,2,0.2,2,0.2,2.5 [C12].Color @RGB(0;0;0) lImprime = fEditaFecha(TPolizas('FechaDocto');pIdioma)[C0] lImprime = '' [C1] //lImprime = fEditaFecha(TPolizas('FechaAplicacion');pIdioma)[C1] lImprime = TPolizas('Nombre')[C2] lImprime = '' [C3] lImprime = @TRIM(3;TPolizas('Folio'))[C4] lImprime = '' [C5] lImprime = TPolizas('nombreBePa')[C6] lImprime = '' [C7] lImprime = TPolizas('Referencia')[C8] lImprime = '' [C9] lEstadoDoc = '' Si TPolizas('EsProyectado') = true lEstadoDoc = pIdioma = 0 ? 'Proyectado' : 'Projected' SiNo Si TPolizas('EsConciliado') = true lEstadoDoc = pIdioma = 0 ? 'Conciliado' : 'Conciliated' SiNo Si lEsCheque = false lEstadoDoc = pIdioma = 0 ? 'Emitido' : 'Emmited' SiNo Si TPolizas('EsCancelado') = true lEstadoDoc = pIdioma = 0 ? 'Cancelado' : 'Cancelled' [C12].Color @RGB(255;0;0) lCancelDev = true SiNo Si TPolizas('EsDevuelto') = true lEstadoDoc = pIdioma = 0 ? 'Devuelto' : 'Returned' [C12].Color @RGB(255;0;0) lCancelDev = true SiNo Si TPolizas('EsImpreso') = true lEstadoDoc = pIdioma = 0 ? 'Impreso' : 'Printed' SiNo lEstadoDoc = pIdioma = 0 ? 'Autorizado' : 'Authorized' FinSi //impreso FinSi // esDevuelto FinSi // es cancelado FinSi // esCheque FinSi // conciliado FinSi // proyectado lImprime = lEstadoDoc [C10] lImprime = '' [C11] lImprime = TPolizas('Total')[C12] Si TPolizas('Total') < 0 [C12].Color @RGB(255;0;0) FinSi lTotal = lTotal + 1 [C4].RegionInfo ''&TPolizas('FechaDocto')&','&@TRIM(3;aCodigoCuenta)&','&@TRIM(3;TPolizas('CodigoDocumentoDe'))&','&@VAL(TPolizas('Folio')) Lista lImprime // Imprime: ENCABEZADO PÓLIZA Columnas 16;2,2,2,0.2,2.2,0.2,2.5,0.2,2,0.2,1,1,2.5,0.2,2.5,1.0 [C12..C14].Decimales fBuscaDecimalesMonedaSQL(CM_MONE_CODIGO_MONEDA_BASE) [C12].Color @RGB(0;0;0) [C14].Color @RGB(0;0;0) lImprimePol = '' [C0] lImprimePol = fEditaFecha(TPolizas('pFecha');pIdioma)[C1] lImprimePol = TPolizas('tipoPoliza')[C2] lImprimePol = '' [C3] lImprimePol = TPolizas('pFolio')[C4] lImprimePol = '' [C5] lImprimePol = fEliminaEnter(TPolizas('Concepto'))[C6] lImprimePol = '' [C7] Si TPolizas('Clase') = 1 lClase= '' Sino lClase= pIdioma = 0 ? 'Sin afectar' : 'Not counting' FinSi lImprimePol= lClase [C8] lImprimePol = '' [C9] Si TPolizas('Diario') != 'NULL' lImprimePol = TPolizas('Diario')[C10] Sino lImprimePol = '' [C10] FinSi lImprimePol = '' [C11] lImprimePol = TPolizas('Cargos')[C12] lImprimePol = '' [C13] lImprimePol = TPolizas('Abonos')[C14] lImprimePol = '' [C15] Si TPolizas('Cargos') < 0 [C12].Color @RGB(255;0;0) FinSi Si TPolizas('Abonos') < 0 [C14].Color @RGB(255;0;0) FinSi Lista lImprimePol PolImpresa=1 gNumeroPol = gNumeroPol + 1 FinSi // imprime 1 vez docto y encabezado póliza // imprimir detalle Si pFormato = 0 y TPolizas('idPol') != 0 // imprime: MOVIMIENTOS PÓLIZA Columnas 16;2,2,2,0.2,2.2,0.2,2.5,0.2,2,0.2,1,1,2.5,0.2,2.5,1.0 [C12].Color @RGB(0;0;0) [C14].Color @RGB(0;0;0) lImprimePolMovtos = '' [C0] lImprimePolMovtos = TPolizas('NumMovto')[C1] Si TPolizas('RefMovto') != 'NULL' lImprimePolMovtos = TPolizas('RefMovto')[C2] Sino lImprimePolMovtos = '' [C2] FinSi lImprimePolMovtos = '' [C3] lCodCuenta = TPolizas('Cuenta') lCodMask = fFormateaCodigo(lCodCuenta;gMascarilla) lImprimePolMovtos = lCodMask [C4] lImprimePolMovtos = '' [C5] lImprimePolMovtos = TPolizas('nombreCuenta')[C6] lImprimePolMovtos = '' [C7] Si TPolizas('ConceptoMov') != 'NULL' lImprimePolMovtos = fEliminaEnter(TPolizas('ConceptoMov')) [C8] Sino lImprimePolMovtos = '' [C8] FinSi lImprimePolMovtos = '' [C9] Si TPolizas('DiarioMovto') != 'NULL' lImprimePolMovtos = '^' & @Trim(1;TPolizas('DiarioMovto'))[C10] Sino lImprimePolMovtos = '' [C10] FinSi lImprimePolMovtos = '' [C11] Si tEmpresa->UsaSegmentosDeNegocio = 1 // La empresa usa segmentos en movimientos Si TPolizas('CodSegNeg') != 'NULL' lImprimePolMovtos = '^' & TPolizas('CodSegNeg') [C11] Sino lImprimePolMovtos = '' [C11] FinSi Sino lImprimePolMovtos = '' [C11] FinSi Si !TPolizas('TipoMovto') lImprimePolMovtos = TPolizas('Importe')[C12] lImprimePolMovtos = '' [C13] lImprimePolMovtos = '' [C14] SiNo lImprimePolMovtos = '' [C12] lImprimePolMovtos = '' [C13] lImprimePolMovtos = TPolizas('Importe')[C14] FinSi Si TPolizas('Importe') < 0 [C12].Color @RGB(255;0;0) [C14].Color @RGB(255;0;0) FinSi lImprimePolMovtos = '' [C15] Lista lImprimePolMovtos FinSi FinSi // fin si tiene póliza TPolizas.Busca Siguiente FinMientras // Hay movimientos // se debe mostrar despues de imprimir movtos poliza Si pDesgloseIVA = true Si lImprimeIVA = true imprimeIVA16(lIdPoliza) // imprime el dato de la póliza anterior lImprimeIVA = false FinSi FinSi // Si fue el último-- Si esta cancelado o devuelto y tiene póliza original, imprime la póliza origen Si lCancelDev y lFolio != 0 imprimePolizaOriginal(lEjercicio;lPeriodo;lTipo;lFolio) lCancelDev = false gNumeroPol = gNumeroPol + 1 FinSi // Saltalin Retorna lTotal FinFunc // ***************************************************************************** // Función para formatear la lista recibida en los parámetros para usarla en la // sentencia "IN" de SQL // ***************************************************************************** Deffunc FormateaListaSQL(lListaSinF) Local i ListaFSQL ='' i=0[C0] Mientras @escoge(@str(lListaSinF;0);@col(i;0))!='' ListaFSQL = ListaFSQL & '\'' & @escoge(@str(lListaSinF;0);i) & '\'' i=@col(i;0)+1[C0] Si @escoge(@str(lListaSinF;0);@col(i;0))!='' ListaFSQL = ListaFSQL & ',' FinSi FinMientras Retorna ListaFSQL FinFunc // ***************************************************************************** // ENCABEZADO DEL REPORTE // ***************************************************************************** Encab fEscribeEncabCheques(tEmpresa->Nombre) Si pIdioma = 0 psFechaDe = fEditaFecha(pFechaIni;0) psFechaA = fEditaFecha(pFechaFin;0) Texto '^Listado de documentos bancarios con detalle contable' Si pImpFecha = True Texto '"Fecha: ' & fEditaFecha(pFechaReporte; 0) FinSi Imprime Texto '^Documentos del '& psFechaDe & ' al ' & psFechaA Imprime Altura 9 SiNo psFechaDe = fEditaFecha(pFechaIni;1) psFechaA = fEditaFecha(pFechaFin;1) Texto '^List of bank documents with detail accounting' Si pImpFecha = True Texto '"Date: ' & fEditaFecha(pFechaReporte; 0) FinSi Imprime Texto '^Journal Entries from ' & psFechaDe & ' to ' & psFechaA Imprime Altura 9 FinSi Saltalin 1 FinEncab // ********************************************************************************************** // CUERPO PRINCIPAL DEL REPORTE // ********************************************************************************************** DefRegion fEjecutaReporte [C12..C14].Decimales fBuscaDecimalesMonedaSQL(CM_MONE_CODIGO_MONEDA_BASE) gStrQuery = 'SELECT c.Id, c.Codigo, c.Nombre, m.Nombre AS Moneda, m.Decimales FROM CuentasCheques c ' gStrQuery = gStrQuery & 'INNER JOIN Monedas m ON m.Codigo = c.CodigoMoneda ' gStrQuery = gStrQuery & 'WHERE c.Id IN (' & pListaCuentasCheques & ') ORDER BY c.Codigo' Consulta tCuentaBan = tEmpresa[gStrQuery] Mientras tCuentaBan->Encontro [C12].Decimales tCuentaBan('Decimales') fImprimeCuenta(tCuentaBan('Codigo'); tCuentaBan('Nombre'); tCuentaBan('Moneda')) gIngresos= fImprimeMovtosCuenta(tCuentaBan('Id'); 'I'; tCuentaBan('Codigo')) // Ingresos gEgresos = fImprimeMovtosCuenta(tCuentaBan('Id'); 'E'; tCuentaBan('Codigo')) // Egresos gDoctosBancarios = gIngresos + gEgresos Columnas 2;3,0.6 Si pIdioma = 0 Saltalin 2 [C0..C1].Subrayacol Imprime Texto 'Total de documentos bancarios: '& gDoctosBancarios Imprime Texto 'Total de pólizas impresas: '& gNumeroPol Imprime SiNo Saltalin 2 [C0..C1].Subrayacol Imprime Texto 'Total bank documents: '& gDoctosBancarios Imprime Texto 'Total printed policies: '& gNumeroPol FinSi gNumeroPol = 0 tCuentaBan.Busca Siguiente Si tCuentaBan->Encontro Saltahoj FinSi FinMientras // Hay cuentas Lista ' ' // Fin Reporte