UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias Matemáticas...
Transcript of UNIVERSIDAD DE GUAYAQUIL Facultad de Ciencias Matemáticas...
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas
Computacionales
“Mòdulo Contable para el control empresarial orientado al
mercado PYMES aplicando Tecnologìa RIA”
PROYECTO DE GRADO
CURSO DE GRADUACIÓN
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
GLADYS MARLENE JURADO CAMPOVERDE
WILLIAM ENRIQUE MORENO HERBAS
GUAYAQUIL-ECUADOR
Año: 2010
II
AGRADECIMIENTO
En primer lugar agradezco a Dios que con su
infinita bondad me ha guiado a lo largo de mis
estudios; en segundo lugar a mi amado ESPOSO
Ing. Alberto Macancela Chedraui por siempre
darme su apoyo y amor incondicional, a mi
PADRE Carlos Jurado, mi MADRE Gladys
Campoverde, mis HIJOS Andrés Alberto y Adrián
Eduardo, mi SUEGRA Lía Chedraui, mis
hermanos; por siempre haberme dado su fuerza
que me han llevado hasta donde estoy ahora. A
mis PROFESORES me han impartido sus
conocimientos, especialmente al Ing. Xavier
Loaiza, Ing. Victor Pazmiño, Eco. Antonio Cires
Ing. Abel Alarcón; quienes nos ayudaron en todo
momento, a mis compañeros de tesis porque en
esta armonía grupal lo hemos logrado y
finalmente un eterno agradecimiento a esta
prestigiosa UNIVERSIDAD la cual nos prepara
para un futuro competitivo.
Gladys Marlene Jurado Campoverde
III
AGRADECIMIENTO
Agradezco a Jehová mi Dios por siempre estar
conmigo y haberme dado la sabiduría para poder
terminar exitosamente mi tesis, tanto como todas
sus bendiciones presentes desde mucho tiempo
atrás, el éxito total te lo debo a ti Dios mío para
que la gloria, la honra y el poder sea tuyo por
siempre y hasta siempre, a mi padre William
Moreno Encalada, a mi madre Alicia Herbas de
Moreno, mi hermana Alicia Moreno Herbas por
siempre brindarme su cariño, apoyo, tanto moral,
como económico, también por la fortaleza física
como de espíritu presente en ellos los cuales los
manifiesto en mi persona con mucha pasión y
perspicacia. A mis amados abuelitos José Herbas
y Olga de Herbas por darme siempre su amor,
parte de su dignidad y coraje de seguir a pesar de
la adversidad, las cuales han influido mucho en mi
personalidad ganadora y en el logro alcanzado.
William Enrique Moreno Herbas
IV
DEDICATORIA
Dedico este trabajo a Jehová mi Dios por estar
siempre de parte mía en todo momento, a mis
padres, a mis abuelitos, a mi hermana, a mis tíos y
tías, porque siempre han creído en mí y me han
brindado en todo tiempo su apoyo y amor.
Este gran logro va por todos ustedes !!!
William Enrique Moreno Herbas
V
DEDICATORIA
Dedico este trabajo especialmente a Dios por
estar siempre a mi lado en todo momento; a mi
amado esposo quien me ha dado todo su amor,
respaldo y apoyo; a mis padres, a mis hijos, a mi
suegra, a mis hermanos que siempre han
depositado toda su confianza en mí y por último a
mis amigos que me han brindado en todo este
tiempo su valiosa amistad..
Gladys Marlene Jurado Campoverde
VI
TRIBUNAL DE GRADUACIÓN
Presidente del Tribunal Primer Vocal Segundo Vocal Secretario
VII
DECLARACIÓN EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente a los suscritos,
perteneciendo a la Universidad de Guayaquil los derechos que generen la
aplicación de la misma”
(Reglamento de Graduación de la Carrera de Ingeniería en sistemas
Computacionales, Art. 26)
Gladys Marlene Jurado Campoverde William Enrique Moreno Herbas
VIII
ÍNDICE GENERAL
Pág.
AGRADECIMIENTO II
DEDICATORIA IV
TRIBUNAL DE GRADUACIÓN VI
DECLARACIÓN EXPRESA VII
ÍNDICE GENERAL VIII
ÍNDICE DE FIGURAS XII
ÍNDICE DE TABLAS XIV
CAPÍTULO 1
INTRODUCCION
1.1 Antecedentes 1
1.2 Problemática 2
1.3 Solución 3
1.4 Visión 3
1.5 Misión 3
1.6 Objetivos Generales 4
1.7 Objetivos Específicos 4
1.8 Alcances 5
1.8.1Módulo de Contabilidad 6
1.8.1.1 Mantenimiento 6
1.8.1.2 Ciclo Contable 7
IX
1.8.1.3 Reportes 7
1.8.1.4 Procesos Contables 9
1.9 Metodología 10
1.10 Arquitectura 11
1.10.1 Distribución lógica por Capas 11
1.10.2 Ventajas de la Arquitectura 13
1.10.3 Herramientas 14
1.10.3.1 Servidor WEB Apache 14
1.10.3.2 PHP 14
1.10.3.3 Mysql 14
1.10.4 Distribución Física por Niveles 15
1.11 Recursos 15
1.11.1 Recursos Físicos para Servidor 16
1.11.2 Recursos Físicos para Desarrollo 17
1.11.3 Recursos Software 18
1.11.4 Recursos Humanos 18
1.11.5 Recursos Financieros 18
1.12 Flujo de Caja 19
1.12.1 Inversión Total 19
1.12.2 Presupuesto de Ventas 20
1.12.3 Flujo de Efectivo/Cash Flow 21
1.13 Estudio de Mercado 22
1.14 Cronograma 26
1.15 F.O.D.A. 27
X
CAPÍTULO 2
ANALISIS 29
2.1 Diagramas de Casos de Uso 29
2.2 Diagrama de Escenarios y Subescenarios 36
2.3 Diagrama de Clases 42
2.3 Diagrama del Sitio 43
CAPÍTULO 3
DISEÑO 47
3.1 Introducción 47
3.2 Diagrama de Entidad Relación 47
3.3 Diccionario de Datos 49
3.4 Diagrama de Flujo de Datos 62
3.4.1 Diagrama de Flujo de Dato Home 62
3.4.2 Diagrama de Flujo de Dato Período Contable 63
3.4.3 Diagrama de Flujo de Dato Personalización de Documentos 64
3.4.4 Diagrama de Flujo de Dato Personalización Cuentas Contables 65
3.4.5 Diagrama de Flujo de Dato Asientos de Diario 66
3.4.6 Diagrama de Flujo de Dato Mayorización - Balances 67
3.4.70 Diagrama de Flujo de Dato Reportes 68
3.5 Diagrama de Secuencia 69
3.6 Diseño a nivel de Componentes 75
3.6.1 Diagrama de Componentes de Capas 75
3.6.2 Diagrama de Componentes 76
3.7 Diseño de Interfaz 79
XI
CAPÍTULO 4
CODIFICACIÒN 86
4.1 Modelo Utilizado para el desarrollo del Módulo 86
4.2 Tecnología utilizada 87
4.3 Herramientas utilizadas 88
4.3.1 Servidor de Aplicaciones: Web Apache 88
4.3.2 Servidor de Datos: Mysql 89
4.3.3 Lenguajes de Programación del lado del Servidor: PHP/JSP 89
4.3.4 Lenguajes de Programaciòn del lado del Cliente: Javascript 90
4.4 Estandares 91
4.4.1Base de datos 92
4.4.2 Codificación 92
4.4.3 Interfaces 92
4.4.4 Estilo
CAPÍTULO 5
PRUEBAS 94
5.1 Pruebas de Validación 94
5.1.1 Muestreo de las pruebas de validación 94
5.2 Prueba Unitaria 94
5.3 Prueba de Integración 95
5.4 Pruebas de Calidad 95
CONCLUSIONES 96
RECOMENDACIONES 98
GLOSARIO DE TERMINOS TECNICOS 99
BIBLIOGRAFÌA 100
XII
INDICE DE FIGURAS
Pág.
FIGURA 1 Distribución lógica por Capas 12
FIGURA 2 Distribución Física por Niveles 15
FIGURA 3 Inversión total 19
FIGURA 4 Presupuesto de Venta 20
FIGURA 5 Flujo de Efectivo/Cash Flow 21
FIGURA 6 Cronograma de Trabajo 26
FIGURA 7 Caso de Uso 1: Plan de Cuentas 30
FIGURA 8 Caso de Uso 2: Asientos de Diario 31
FIGURA 9 Caso de Uso 3: Mayorización 32
FIGURA 10 Caso de Uso 4: Balance General 33
FIGURA 11 Caso de Uso 5: Estado de Pérdidas y Ganancias 34
FIGURA 12 Caso de Uso 6: Balance de Sumas y Saldos 35
FIGURA 13 Diagrama de Clases 42
FIGURA 14 Diagrama del Sitio 43
FIGURA 15 Diagrama de Entidad Relación 48
FIGURA 16 Diagrama Flujo de Dato Home 62
FIGURA 17 Diagrama Flujo de Dato Periodo Contable 63
FIGURA 18 Diagrama Flujo de Dato Personalizacion de Documentos 64
FIGURA 19 Diagrama Flujo de Dato Personalizacion Cuentas Contab, 65
FIGURA 20 Diagrama Flujo de Dato Asientos de Diario 66
FIGURA 21 Diagrama Flujo de Dato Mayorizacion – Balances 67
XIII
FIGURA 22 Diagrama Flujo de Dato Reportes 68
FIGURA 23 Diagrama de Secuencia 69
FIGURA 24 Diagrama de Secuencia 70
FIGURA 25 Diagrama de Secuencia 71
FIGURA 26 Diagrama de Secuencia 72
FIGURA 27 Diagrama de Secuencia 73
FIGURA 28 Diagrama de Secuencia 74
FIGURA 29 Diagrama de Componentes de Capas 75
FIGURA 30 Diagrama de Componentes 76
FIGURA 31 Diseño de Interfaz 80
FIGURA 32 Diseño de Interfaz 80
FIGURA 33 Diseño de Interfaz 81
FIGURA 34 Diseño de Interfaz 81
FIGURA 35 Diseño de Interfaz 82
FIGURA 36 Diseño de Interfaz 82
FIGURA 37 Diseño de Interfaz 83
FIGURA 38 Diseño de Interfaz 83
FIGURA 39 Modelo Vista Controlador 87
XIV
INDICE DE TABLAS
Pág.
TABLA 1 Recursos Físicos para Servidor 16
TABLA 2 Recursos Físicos para Desarrollo 17
TABLA 3 Caso de Uso 1: Plan de Cuentas 30
TABLA 4 Caso de Uso 2: Asientos de Diario 31
TABLA 5 Caso de Uso 3: Mayorización 32
TABLA 6 Caso de Uso 4: Balance General 33
TABLA 7 Caso de Uso 5: Estado de Pérdidas y Ganancias 34
TABLA 8 Caso de Uso 6: Balance de Sumas y Saldos 35
TABLA 9 Diagrama de Escenarios y Subescenarios 36
TABLA 10 Diccionario de Datos 49
CAPÍTULO 1
1. INTRODUCCION
1.1 Antecedentes
Los sistemas ERP (Planeación de Recursos Empresariales) son una
solución robusta para aquellas empresas que buscan una solución a la
centralización de su información, con el fin de elaborar la planeación de
los recursos y así mismo la toma de decisiones. En nuestro país todavía
los ERP están en sus comienzos, con esta oportunidad existente en
nuestro medio, la Universidad de Guayaquil siempre buscando ir a la
vanguardia con la tecnología, en su Seminario de Graduación se propone
desarrollar como tesis un ERP comercial competitivo para las pequeñas y
grandes empresas el cual va a tener varios módulos pertenecientes a los
distintos ámbitos de una empresa PYMES.
El ERP es un sistema integral de gestión empresarial que está diseñado
para modelar y automatizar la mayoría de procesos en la empresa (área
de finanzas, contable, compras, recursos humanos, producción, etc.). Su
misión es facilitar la planificación de todos los recursos de la empresa.
2
Nuestra aportación a la tesis en su ERP, se centrará en el Área
Financiera Contable, siendo nuestro campo de acción a desarrollar el
Área Contable.
1.2 Problemática
El constante cambio tecnológico a obligado a las PYMES ha incursionar
en el ámbito del Internet puesto que la sucursales tienen que estar
actualizadas en la información. Actualmente las empresas cuentan con
un sistema automatizado que les sirve para trabajar en una red de área
local, el problema radica cuando estas empresas tienen sucursales, ellas
no pueden tener su información actualizada por el alto costo de las
comunicaciones.
También se identifica que para actualizar la información las empresas
deben respaldar su información y enviarla al servidor de la matriz lo cual
se lo hace una vez a la semana en lo mejor de los casos una vez al día y
con esto realizar el proceso de actualización. Esto acarrea que la
información no esté en línea ni actualizada y hace que haya pérdida de
tiempo en la entrega de información consolidada, entre otros problemas
identificados tenemos los siguientes:
1) Información no confiable.
2) No se dispone de información oportuna para la toma de decisiones.
3) Datos redundantes e innecesarios
3
1.3 Solución
La perspectiva es tener un sistema integrado con un centro de datos
compartido, accesible, seguro y escalable para todas las sucursales que
tiene la empresa publicando servicios a través de la plataforma internet
por medio del cual los usuarios pueden acceder a los procesos de la
empresa que este necesite usar, reduciendo los costos que conlleva
implementar una infraestructura especializada en las comunicaciones
con un enlace dedicado. Nuestro modulo a desarrollar es un sistema
contable en cual se pueda obtener los estados financieros de forma
inmediata, veraz, oportuna con eficiencia y eficacia. Adicionalmente
proveer estructuras y servicios web para la integración de los módulos
descritos a continuación.
1.4 Misión
Automatizar y agilitar los procesos contables comúnmente aceptados de
una forma eficiente, disminuyendo los trabajos manuales para obtener un
mayor control y seguimiento de los procesos transaccionales para
obtener los estados financieros que reflejan la realidad de la empresa
para la toma de decisiones.
1.5 Visión
Ser líder en el mercado para administrar eficientemente el desempeño
del área Contable, reduciendo los costos de operación y manejo
departamental de las PYMES y de esta forma realizar su trabajo más
fácil y dinámico.
4
1.6 Objetivos Generales
Desarrollar un Sistema Contable Integrado para ser utilizado en un
ambiente Web, que permita contabilizar los asientos de diario y obtener
el Libro Diario, el Libro Mayor y los Estados Financieros para las
pequeñas y medianas empresas. El cual es un módulo del ERP
Business Gestor bajo WEB, utilizando Tecnología RIA.
1.7 Objetivos Específicos
1) El objetivo de este proyecto es desarrollar un sistema que realice los
procesos anteriores y permita la elaboración de los estados financieros.
2) Crear las estructuras de base de datos contables.
3) Registrar todas las transacciones que se generen en el día, sean estos
diarios.
4) Efectuar el pase de asientos correspondientes a las cuentas de mayor.
5) Tener un buen manejo de volumen de información.
6) Flexibilidad al crecimiento de sucursales creadas.
7) Desarrollar sistema personalizado por medio de parámetros.
8) Registro de asientos de ajustes en el diario.
9) Preparar los asientos de cierre en el diario y a pasar las cuentas
correspondientes al mayor.
5
10) Reporte de Diario General.
11) Reporte de Mayor por cuenta o en general por filtros.
12) Balance de Comprobación de Sumas y Saldos.
13) Balance de Comprobación de Sumas y Saldos Consolidado
14) Reporte del Balance General.
15) Reporte del Balance General Consolidado
16) Reporte del Estado de Pérdidas y Ganancias
17) Reporte del Estado de Pérdidas y Ganancias Consolidado
1.8 Alcances
1) Modulo contable y tener un buen manejo de volumen de información.
2) Flexibilidad al crecimiento de sucursales creadas.
3) Se tendrá absoluto control que constituye el plan de cuentas cuyo
objetivo es facilitar el trabajo contable para cuando se consolide los
diferentes módulos.
4) Crear las estructuras de base de datos contables.
6
1.8.1 Módulo de Contabilidad
1.8.1.1 Mantenimiento
1) Plan de Cuentas, se ingresará el plan de cuentas por niveles de
acuerdo al tipo de empresa la clasificación de las cuentas
contables.
2) Períodos mensuales, para ingreso de los periodos mensuales y
el estado que como medida de control interno cerrar los meses ya
procesados, con el propósito que no se pueda ninguna modificación
al mes cerrado. Su estado puede ser: Activo, Inactivo, Verificado,
Pendiente Verificación, Cerrado.
3) Periodo contable, para ingreso de los periodos contables y
actualización de estado vigente. Su estado puede ser: Activo,
Inactivo, Verificado, Pendiente Verificación, Cerrado.
4) Documentos, Esta tabla servirá como catálogo de todos tipos de
documentos que se utilicen dentro de una transacción contable.
CH Cheque
ND Nota de Débito
NC Nota de Crédito
DI Diario
7
1.8.1.2 Ciclo Contable
1) Ingreso de Registro de diarios de asientos ajustes y
regularizaciones.
2) Permite registrar los asientos de ajustes, las cuentas deben
presentar su saldo real, por cuanto estos valores servirán de base
para preparar estados financieros. Cuando los saldos de las
cuentas no son reales es necesario aumentarlos, disminuirlos o
corregirlos mediante un asiento contable llamado asiento de ajuste
que se necesite para el respectivo cuadre de los Estados
Financieros o regularizaciones de cuentas.
3) Preparar los asientos de cierre en el diario y a pasar las cuentas
correspondientes al mayor.
4) El asiento de cierre se realizará saldando todas las cuentas
abiertas, de modo, que se cargarán las cuentas que tengan un
saldo deudor, mientras que se abonarán las que tengan saldo
acreedor.
1.8.1.3 Reportes
Todos los Reportes pueden ser convertidos a formato en Excel o
en formato de texto csv.
1) Libro Diario General, permite visualizar el Diario General por
fechas, por número de Diario.
8
2) Libro Mayor, es el Libro de cuentas que proporciona detalles que
respaldan los saldos individuales, el total de los cuales aparece en
una cuenta en el Mayor general. El total de las cuentas de un mayor
auxiliar es igual al saldo de la cuenta de control respectiva del
mayor general o Libro Mayor Puede ser impreso por Cuenta.
3) Balance de Comprobación sumas y saldos, permite imprimir o
visualizar el Balance de Comprobación a una fecha de corte
4) Balance de Comprobación sumas y saldos Consolidado, permite
imprimir o visualizar el Balance de Comprobación a una fecha de
corte de la suma de todas las sucursales.
5) Balance General, permite imprimir o visualizar el Balance
General a una fecha de corte.
6) Balance General Consolidado, permite imprimir o visualizar el
Balance General a una fecha de corte, de la suma de todas las
sucursales.
7) Estado de Pérdidas y Ganancias, permite imprimir o visualizar el
Estado de Pérdidas y Ganancias a una fecha de corte.
8) Estado de Pérdidas y Ganancias Consolidado, permite imprimir o
visualizar el Estado de Pérdidas y Ganancias con el total de la
suma de todas las sucursales.
9
1.8.1.4 Procesos Contables
1) Mayorización, este proceso calcula los saldos de todas las
cuentas pertenecientes al plan de cuentas tomando base el libro
diario donde se encuentran todas las transacciones o asientos
de cada una de las cuentas.
2) Pérdidas y Ganancias Mensual, este proceso nos permite
calcular automáticamente los valores correspondientes a las
cuentas del PYG del mes por cada Sucursal.
3) Pérdidas y Ganancias Acumulado, este proceso nos permite
calcular automáticamente los valores correspondientes a las
cuentas del PYG acumulado por cada Sucursal para su posterior
revisión y aprobación.
4) Balance General, este proceso calcula y organiza todos los
saldos de las cuentas y genera el reporte de Balance General
para su posterior revisión y aprobación.
5) Cierre Mensual, señalar el mes que se desea cerrar, el cual
realiza los respectivos procesos de cierre mensual y migración
de los datos y reportes a los históricos.
6) Cierre anual, señalar el año que se desea cerrar, el cual realiza
los respectivos procesos de cierre anual y migración de los
datos y reportes a los históricos.
10
1.9 Metodología
Vamos a utilizar una metodología evolutiva en espiral, en el cual tenemos
contempladas las etapas de: Requerimiento, Análisis, Diseño,
Implementación y Pruebas. Descripción de lo que se va ha realizar en
las distintas etapas.
Requerimiento Recolección de requisitos que necesita el módulo contable Web,
comunicación con los clientes sobre lo que se desea que haga el
módulo. Recopilación de Información, Documentos y Reportes de
respaldo del Registro Contable..
Análisis
Estudio del riesgo, ver lo dificultoso que se nos puede hacer desarrollar
las distintas opciones que va a tener la página.
Análisis de los procesos contables que se realizan en el departamento de
contabilidad.
Análisis de los Documentos que se utilizan.
Análisis del tiempo que nos puede tomar la elaboración de alguna
opción. Esta puede variar en el desarrollo del mismo)
Diseño
Modelos de Diseño y Modelo de Componentes, entre otros se
elaborarán: Diseño de Interfaces, Diseño de Entidad Relación, Diseño
de Clases, Diseño de Flujo de Datos, Diagrama de Componentes,
Diagrama del Sitio.
11
Implementación
Desarrollo del código, Interface gráfica de usuario, pruebas y
retroalimentación.
Pruebas
Se desarrollarán un conjunto de pruebas como de Caja Negra.
1.10 Arquitectura
1.10.1 Distribución lógica por Capas.
El desarrollo del proyecto estará dado según la arquitectura 3 capas
que consta de las siguientes:
1) Capa Cliente.
2) Capa de Negocio.
3) Capa de Datos.
El objetivo de llevar el desarrollo de nuestro proyecto en varias
capas es previendo que sobrevenga algún cambio, en esta caso
solo se afectaría directamente a la requerida sin tener que revisar
un código mezclado y extenso.
También permite distribuir el trabajo de creación de nuestro
proyecto por niveles y permitiendo el diseño de las capas de
manera escalable de modo que pueda ampliarse con facilidad en
caso de que las necesidades aumenten.
12
FIGURA 1 Distribución lógica por Capas
Capa Cliente, esta capa estará implementada en PHP con HTML y
será la interfaz con el usuario interno de la empresa, es esta capa la
que se comunica directamente con la capa de Negocio.
Capa de Datos, es aquí donde van a residir los datos y es la
encargada de acceder a los mismos. El gestor de Base de Datos es
MySQL el cual se va a encargar de atender todas las solicitudes de
la capa anterior (Capa de Negocio) para el almacenamiento o
recuperación de la información.
13
1.10.2 Ventajas de la Arquitectura
1) El desarrollo se puede llevar a cabo en varios niveles.
2) Desarrollos paralelos en cada capa.
3) Aplicaciones más robustas debido al encapsulamiento.
4) En caso de que sobrevenga algún cambio, sólo se ataca al nivel
requerido sin tener que revisar entre código mezclado.
5) Mantenimiento y soporte más sencillo; puesto que es más
sencillo cambiar un componente que modificar una aplicación
monolítica.
6) Mayor flexibilidad porque se pueden añadir nuevos módulos para
dotar al sistema de nueva funcionalidad.
7) Alta escalabilidad puede manejar muchas peticiones con el
mismo rendimiento simplemente añadiendo más hardware.
8) El crecimiento es casi lineal y no es necesario añadir más código
para conseguir esta escalabilidad.
14
1.10.3 Herramientas
1.10.3.1 Servidor Web Apache
Trabajaremos con el servidor HTTP Apache ya que es un
software libre de código abierto para plataformas GNU/Linux,
Windows, Macintosh y otras. Además corre en una multitud
de sistemas operativos, lo que lo hace prácticamente
universal y trabaja con varios lenguajes de script en uno de
ellos el PHP.
1.10.3.2 PHP
Trabajaremos con este lenguaje de programación para la
creación de contenido para el sitio Web, con los cuales
vamos a programar las paginas HTML y los códigos fuente.
1.10.3.3 MYSQL
Es un sistema de gestión de base de datos relacional,
multihilo y multiusuario con más de seis millones de
instalaciones. MySQL AB desarrolla MySQL como software
libre en un esquema de licenciamiento dual. Por un lado lo
ofrece bajo la GNU GPL, pero, empresas que quieran
incorporarlo en productos privativos pueden comprar a la
empresa una licencia que les permita ese uso.
15
1.10.4 Distribución Física por Niveles
FIGURA 2 Distribución Física por Niveles
Cabe indicar que las Capas de Negocio y Datos van a residir en un
solo servidor, pero en el caso futuro de crecimiento de la base de
datos se podrá separar la capa de Datos en otro servidor la cual
recibirá las peticiones del servidor que contenga la Capa de
Negocio; pero por el momento el proyecto básicamente será de 3
Capas y 1 Nivel de distribución física.
1.11 Recursos
Recursos Tecnológicos a utilizar para el desarrollo del sistema. Los
Recursos Tecnológicos que utilizaremos en el desarrollo del proyecto se
detallan a continuación:
16
1.11.1 Recursos Físicos para Servidor
SERVIDOR DESCRIPCIÓN
Modelo Servidor DL380G5 (Meddle)
Procesador
QUAD-CORE Intel Xeon 5430 (2,66 GHZ, 1333FSB)GB (2GB RAM) /Rack 2U
Memoria Cache
12MB (2X6MB ) de Caché Nivel 2
Controladora de Discos
Array Controladora E400 con 256MB
Raid 0/1/1+0/5
Tarjeta de Red incorporada 2 Red Gigabit NC373i
Almacenamiento
HP 146GB 3G SAS 10K SFF SP HDD Hot-Plug
Fuente de Poder HP Fuente de poder RPS 350/370/380 G5 US Kit
Memoria
HP memoria 1 GB PC2-5300
DVD Slimline DVD writer
Puertos
1 puerto serial, 2 puertos USB, 1 puerto para teclado, 1 puerto para mouse, 1 para monitor
TABLA 1 Recursos Físicos para Servidor
17
1.11.2 Recursos Físicos para Desarrollo
DESARROLLO
DESCRIPCIÓN
Modelo HP
Procesador
Tecnología procesador Pentium IV Velocidad del reloj 3.7 Ghz
Memoria Cache
Caché de transferencia de datos avanzada L2 de 1 MB integrada al procesador
Tarjeta de Red incorporada
PCI 10/100/1000 con conector RJ45
Almacenamiento
Capacidad 250 GB, Velocidad de Acceso I/O SATA 7200 RPM
Memoria instalada 1 GB MB DDR
DVD Slimline DVD writer
Puertos
Serial, Paralelo, USB, SVGA
Monitor Tamaño 17"
Teclado 101/102 teclas con 12 para función
Mouse
Mouse inteligente PS2 –USB
TABLA 2 Recursos Físicos para Desarrollo
18
1.11.3 Recursos Software:
Los Recursos de Software que utilizaremos en el desarrollo de
nuestro proyecto son Open Source que a continuación
detallaremos:
Base de Datos MySQL
Lenguaje de Programación PHP
Dream Weaver CS4
Lenguaje HTML
Servidor Apache para el uso de multiplataforma.
Navegador Moxilla 3.5
Navegador Internet Explorer 7.0
Microsoft Windows XP, Vista, 2003 server.
Microsoft Visio.
1.11.4 Recursos Humanos: Se requiere de tres personas con conocimientos en:
Base de Datos MySQL
Lenguaje de Programación PHP
HTML, Dream Weaver CS4
1.11.5 Recursos Financieros: Los Recursos Financieros que utilizaremos son aportaciones de cada uno de nosotros los integrantes del modulo contable.
19
1.12 Flujo de Caja
1.12.1 Inversión total
FIGURA 3 Inversión total
20
1.12.2 Presupuesto de Venta
FIGURA 4 Presupuesto de Venta
21
1.12.3 Flujo de Efectivo/Cash Flow
FIGURA 5 Flujo de Efectivo/Cash Flow
22
1.13 Estudio de Mercado
Definición del Producto
El producto que se quiere desarrollar e incorporarlo al mercado de
software que sustituirá el Sistema tradicional.
Módulo de Contabilidad, incorpora Seguridad, Eficiencia, Exactitud,
Veracidad, Fácil de usar, y que los asientos contables sean
generados por otros módulos integrados.
Análisis del entorno
Las pequeñas y medianas empresas en el área contable están
sujetas a Leyes, Reglamentos, Registros Oficiales, y actualmente
casi todas las empresas disponen de una infraestructura tecnológica
accesible a las empresas tanto por su precio como por el
conocimiento. Las leyes obligan a las empresas a presentar los
Estados Financieros y cumplir con obligaciones tributarias.
Análisis de la Demanda
En la actualidad las empresas requieren llevar un control más
exhaustivo de su personal para poder aprovechar sus habilidades al
máximo.
23
Existe un crecimiento las empresas actualmente disponen de un
sistema de Contabilidad pero que no está integrado a sus otras
oficinas, o dentro de la misma empresa. Se requiere de un Sistema
que se tenga actualizado siempre y en todo momento de información
actualizada e integrada y poder disponer de Estados Financieros
reales.
Análisis de Precio
Realizado un análisis de Precio por el costo del Proyecto que es de
US$10,161.92 y se espera el retorno de la inversión en seis meses
más una ganancia presupuestada de US$1,306.35 por cada venta,
el precio de venta es de US$3,000.oo
Período de Recuperación del Proyecto.
La productividad mejorará, se percibirán mayores ingresos debido a
la segura y plena satisfacción de los clientes con los servicios del
sistema.
Se espera el retorno de la inversión en 6 meses y en cada mes
también se considera una ganancia mensual de 40% por mes y al
cabo del tiempo presupuestado y así mismo de lo que se ha
presupuestado en ventas , se considera que al cabo de seis meses el
total de la Inversión haya sido recuperada.
24
Canales de Comercialización
La comercialización y distribución de nuestro producto se realizará a
través de la Internet - Web y visitas de presentación del sistema a
empresas y medios de comunicación personal contable de
empresas.
Análisis de la Oferta
La participación en el mercado de este tipo de software es bastante
elevada, debido al bajo presupuesto que tienen las empresas y
empiezan a adquirir pequeños módulos que satisfacen determinados
requerimientos. Sin duda la calidad, presentación y funcionabilidad
de producto con estas características solo soluciona el requerimiento
del cliente, y no hay un compromiso de crecimiento de la institución.
Entre la competencia tenemos a Lincoln Group,, dispone de un ERP
que utiliza tecnología Java J2EE y WEB Enable, utiliza el internet
como plataforma, con tecnología Visual punto net, Oracle, Java.
ERP Integrado PAC, apoyada por la empresa Proveedatos del
Ecuador S.A.
El sistema de información contable Produce estados financieros
(ventas, pedidos, costos, cuentas por pagar y flujos de efectivo)
25
Penetración de mercado.
En el mercado ecuatoriano no se dispone mayormente de ERP, por
ser un campo que está casi sin explorar, y más aún si este es en
Internet.
Pronósticos de ventas
Las ventas anual del primer año se pronostican por US$72,000
26
1.14 Cronograma de Trabajo
FIGURA 6 Cronograma de Trabajo
27
1.15 F. O. D. A.
Fortaleza
Interfaz web amigable de fácil manejo para el usuario.
Optimización de los procesos empresariales.
Acceso a toda la información de forma confiable, precisa y oportuna
Compartir información entre todos los componentes de la
organización.
Eliminación de datos y operaciones redundantes.
Esquematizar para que los distintos módulos puedan integrarse y
consumir de nuestras estructuras de datos.
Sistema totalmente integrado.
Misión, Visión, Objetivos y Alcance bien definidos.
Generación de Asientos de Diario.
Oportunidades
Apertura a las nuevas tecnologías.
Aprovechar la infraestructura del internet.
Organización con gran apertura a distintos mercados
Conocimiento del negocio por los potenciales clientes.
Es un campo que es incipiente.
28
Debilidades
Problema en cuanto a las actividades y tareas que se realizan en
cada departamento.
Uso de recursos financieros de manera desorganizada y arbitraria.
Personas en altos mandos con resistencia y miedo al cambio.
Amenazas
Piratería por parte de ciertos usuarios.
Competencia de productos similares.
Inestabilidad del Gobierno.
Personal con resistencia a los cambios tecnológicos.
Falta de inversión de las medianas empresas en Sistemas
Contables Integrados.
29
CAPÍTULO 2
2. ANALISIS
2.1 Diagramas de Casos de Uso
En los siguientes diagramas de casos de uso se mostrará la relación
entre actores y los casos de uso del sistema, además representa la
funcionalidad del sistema, explicara los procesos que realizara cada ente
involucrado en el Proceso del Módulo Contable, teniendo como objetivo
principal la comprensión global del módulo.
30
Caso de Uso 1: Plan de Cuentas
FIGURA 7 Caso de Uso 1: Plan de Cuentas
Nombre: Plan de Cuentas
Definición Crear Plan de Cuentas
Actores:
Jefe del Departamento de Contabilidad /Contador
Función:
Crear el Plan de Cuentas de la empresa y mantenerlo actualizada las cuentas.
Ingresar y modificar las cuentas en el Plan de Cuentas de la empresa
Referencias: Plan de Cuentas de la empresa
TABLA 3 Caso de Uso 1: Plan de Cuentas
31
Caso de Uso 2: Asientos de Diario
FIGURA 8 Caso de Uso 2: Asientos de Diario
Nombre: Asientos de Diario
Definición:
Asientos de Ajustes de regularización, de cierre y de apertura.
Actores: Contador
Función:
Realizar los asientos inicial, normal, ajustes, regularización y cierre
El Contador se encargará de ingresar los ajustes por regularización y por cierre. El sistema debe validar lo siguiente: 1.- El contador verificará el asiento generado por los otros módulos del ERP y en caso de haber diferencias o inconsistencia realizará el respectivo asiento de de ajuste por regularización. 2.- El contador realizará los asientos por cierre al final del mes y a finales del años.
Referencias: Libro Diario, Documentos requeridos por el asiento.
TABLA 4 Caso de Uso 2: Asientos de Diario
32
Caso de Uso 3: Mayorización
GenerarMayorización
Mayorización
Contador
Jefe de Contabilidad
FIGURA 9 Caso de Uso 3: Mayorización
Nombre: Mayorización
Definición: Generar el Libro Mayor
Actores: Jefe de Contabilidad/Contador
Función: Generar el Libro Mayor
El Jefe de Contabilidad o el Contador se encargará de generar el Libro Mayor, el cual mantendrá actualizado los saldos de las cuentas con los asientos de diario ingresados.
Referencias:
TABLA 5 Caso de Uso 3: Mayorización
33
Caso de Uso 4: Balance General
Generar BalaneGeneral
Balance General
Contador
Jefe de Contabilidad
FIGURA 10 Caso de Uso 4: Balance General
Nombre: Balance General
Definición: Generar el Balance General
Actores: Jefe de Contabilidad/Contador
Función: Generar el Balance General
El Jefe de Contabilidad o el Contador se encargará de generar el Balance General en cualquier momento que lo requiera.
Referencias: Asientos de Diario ingresados
TABLA 6 Caso de Uso 4: Balance General
34
Caso de Uso 5: Estado de Pérdidas y Ganancias
Generar Estado dePérdidas y Ganancias
Estado de Pérdidas y
Ganancias
Contador
Jefe de Contabilidad
FIGURA 11 Caso de Uso 5: Estado de Pérdidas y Ganancias
Nombre: Estado de Pérdidas y Ganancias
Descripción: Elabora el Estado de Pérdidas y Ganancias
Actores: Jefe de Contabilidad/Contador
Función: Generar el Estado de Pérdidas y Ganancias
El actor dispondrá de una opción para generar el Estado de Pérdidas y Ganancias dada una fecha de corte.
Referencias: Asientos de Diario
TABLA 7 Caso de Uso 5: Estado de Pérdidas y Ganancias
35
Caso de Uso 6: Balance de Sumas y Saldos
Generar Balance deSumas y Saldos
Balance de Sumas Y Saldos
Contador
Jefe de Contabilidad
FIGURA 12 Caso de Uso 6: Balance de Sumas y Saldos
Nombre: Balance de Sumas Y Saldos
Descripción: Elaborar el Balance de Sumas y Saldos
Actores: Jefe de Contabilidad/Contador
F unción: Generar el Balance de Sumas y Saldos
Generará el Estado de Pérdidas u Ganancias en base a una fecha de corte.
Referencias: Asientos de Diario
TABLA 8 Caso de Uso 6: Balance de Sumas y Saldos
36
2.2 Diagrama de Escenarios y Subescenarios
Escenario 1:
Plan de Cuentas
Escenario: 1.1
Nombre:
INGRESO DE PLAN DE CUENTAS
Precondiciones:
La cuenta no debe estar ingresada
Postcondiciones:
Todos los datos que son obligatorios deben estar ingresados. El número del id del Plan de Cuentas se incrementa automáticamente de uno en uno.
Excepciones:
Un asistente del contador no puede realizar esta operación.
Iniciado por:
Contador
Finalizado por:
Contador
Detalle operaciones:
Se realiza al inicio de vida de toda empresa por parte del Contador quien define el Plan de Cuentas a utilizar.
Escenario: 1.2
Nombre:
Modificación del Plan de Cuentas
Precondiciones:
La cuenta ya debe existir
Postcondiciones:
Todos los datos que son obligatorios deben estar ingresados.
Excepciones:
Un asistente del contador no puede realizar esta operación.
Iniciado por:
Contador
Finalizado por:
Contador
37
Escenario 2:
Asientos de Diario
Escenario: 2.1
Ingreso de Asiento de Diario
Nombre:
El asiento será manual o automático
Precondiciones:
El asiento será manual o automático
Postcondiciones:
El asiento debe estar balanceado, las sumatorias deben ser iguales tanto en el debe como el haber.
Excepciones:
Un asistente del contador no puede realizar esta operación.
Iniciado por:
Contador
Finalizado por:
Contador
Detalle operaciones:
Cuando el asiento es manual, quien lo realiza debe verificar que este balanceado o sino el sistema no permitirá su ingreso, si es automático el sistema al momento de generarlo verifica que este correcto.
Escenario 2:
Asientos de Diario
Escenario: 2.1
Ingreso de Asiento de Diario
Nombre:
Inicial
Precondiciones:
Asiento Inicial con que comienza las operaciones en el periodo anual.
Postcondiciones:
Excepciones:
Un asistente del contador no puede realizar esta operación.
Iniciado por:
Contador
Finalizado por:
Contador
38
Escenario 2:
Asientos de Diario
Escenario: 2.1
Ingreso de Asiento de Diario
Nombre:
Ajuste de Regularización
Precondiciones:
Exista un error en un asiento de diario
Postcondiciones:
Excepciones:
Un asistente del contador no puede realizar esta operación.
Iniciado por:
Contador
Finalizado por:
Contador
Detalle operaciones:
Se escoge el Asiento de Diario de acuerdo a un número de asiento, para poder reversar el asiento, lo que está en el Debe pase al Haber y viceversa.
Escenario 2:
Asientos de Diario
Escenario: 2.1
Ingreso de Asiento de Diario
Nombre:
Cierre
Precondiciones:
Para contabilizar el cierre de las cuentas.
Postcondiciones:
Excepciones:
Un asistente del contador no puede realizar esta operación.
Iniciado por:
Contador
Finalizado por:
Contador
39
Escenario: 2.1.2
Nombre:
Ajuste de Cierre
Precondiciones:
Se debe estar seguro de ya no registrara mas asientos de diario en ese periodo
Postcondiciones:
Excepciones:
Iniciado por:
Contador
Finalizado por:
Contador
Detalle operaciones:
Se realiza el Ajuste de Cierre del periodo mensual siempre y cuando se este seguro de que ya se registraran mas asientos.
Escenario 3:
Mayorización
Escenario: 3.1
Nombre:
Generar Mayorización
Precondiciones:
Deben existir Asientos de diario para poder generar
Postcondiciones:
Excepciones:
Iniciado por:
Jefe del Departamento de Contabilidad/ Contador/ Asistente de Contador
Finalizado por:
Jefe del Departamento de Contabilidad/ Contador/ Asistente de Contador
Detalle operaciones:
Se escoge el periodo a mayorizar sea este pendiente de verificación o activo.
40
Escenario 4:
Balance General
Escenario: 4.1
Nombre:
Generar Balance General
Precondiciones:
Proceso de Pérdidas y Ganancias
Postcondiciones:
Excepciones:
Iniciado por:
Jefe del Departamento de Contabilidad/ Contador
Finalizado por:
Jefe del Departamento de Contabilidad/ Contador
Detalle operaciones:
Se hacen las sumas de las cuentas que intervienen en el Balance General para que estas estén mayorizadas y se pueda generar el informe
Escenario 5:
Estado de Pérdidas y Ganancias
Escenario: 5.1
Nombre:
Generar Estado de Pérdidas y Ganancias
Precondiciones:
Realizado los asientos de ajustes , regularización y de cierre
Postcondiciones:
Excepciones:
Iniciado por:
Jefe del Departamento de Contabilidad/ Contador
Finalizado por:
Jefe del Departamento de Contabilidad/ Contador
Detalle operaciones:
Se hacen las sumas de las cuentas que intervienen en el Estado de Pérdidas y Ganancias para que estas estén mayorizadas.
41
Escenario 6:
Balance de Sumas y Saldos
Escenario: 6.1
Nombre:
Generar Balance de Sumas y Saldos
Precondiciones:
Haber generado la Mayorización del periodo.
Postcondiciones:
Excepciones:
Iniciado por:
Jefe del Departamento de Contabilidad/ Contador
Finalizado por:
Jefe del Departamento de Contabilidad/ Contador
Detalle operaciones:
Se hacen las sumas de las cuentas que intervienen en el Balance de Sumas y Saldos, para que se pueda generar el informe.
TABLA 9 Diagrama de Escenarios y Subescenarios
42
2.3 Diagrama de Clases
FIGURA 13 Diagrama de Clases
43
2.4 Diagrama del Sitio
FIGURA 14 Diagrama del Sitio
44
Usuario Log in
El usuario administrativo se certifica el acceso al ERP en la pantalla que
se encuentra en el modulo de Servicio al Cliente.
Mantenimiento
Personalización Documentos
En esta pantalla el contador ingresará todos los distintos tipos de
documentos que se van a utilizar en la vida de la institución.
Personalización de Cuentas Contables
La pantalla permitirá el ingreso del plan de cuentas jerárquico y por
grupos de cuentas, en el cual se asignarán los grupos y las cuentas
contables pertenecientes a los mismos.
Los códigos pertenecientes a cada cuenta contable se generarán
automáticamente y permitiendo los niveles que la institución vea
necesarios en su plan de cuenta.
Periodo Anual
En esta opción el contador ingresará, modificará, activará, y cerrará
los periodos anuales o contables en los que la empresa llevará sus
actividades.
Periodo Mensual
En esta opción el contador ingresará, modificará, activará, y cerrará
los periodos mensuales en los que la empresa llevará sus actividades.
45
Ciclo Contable
Asientos de Diario
Esta pantalla permitirá al contador ingresar todos los asientos de
diarios correspondientes a la empresa y relacionado con las cuentas
contables que se definieron anteriormente.
La pantalla le permitirá identificar si corresponde a una asiento normal,
un asiento de ajuste, asiento de cierre, asiento inicial.
Procesos Contables
Mayorización
Permitirá realizar el proceso de Mayorización y cálculo de saldos para
todas las cuentas contables, y a su vez actualizar los registros para la
obtención de reportes.
Pérdidas y Ganancias Mensual
Permitirá realizar el proceso de Pérdidas y Ganancias mensual de la
empresa por sucursal, y a su vez actualizar los registros para la
obtención de reportes.
Pérdidas y Ganancias Acumulado
Permitirá realizar el proceso de Pérdidas y Ganancias con los saldos
acumulados de los periodos anteriores de la empresa por sucursal, y a
su vez actualizar los registros para la obtención de reportes.
46
Balance General
Permitirá realizar el proceso de Balance General de la empresa por
sucursal, y a su vez actualizar los registros para la obtención de reportes.
Reportes
Esta pantalla permitirá al contador ingresar el periodo y la fecha de corte
para obtener los reportes de:
1) Libro Diario.
2) Libro Mayor.
3) Balance de Sumas y Saldos.
4) Balance Inicial.
5) Estado de Pérdidas y Ganancias.
6) Balance General.
7) Balance de Sumas y Saldos Consolidado
8) Balance Inicial Consolidado
9) Estado de Pérdidas y Ganancias Consolidado
10) Balance General Consolidado
47
CAPÍTULO 3
3. DISEÑO
3.1 Introducción
El módulo cumplirá con las necesidades del usuario. Para conseguir
este objetivo se levantó información del proceso de contabilización en un
medio en el que se iban a integrar todos los módulos que componen el
ERP los cuales van a contabilizar los asientos directamente a las bases
de datos.
Se utilizaron técnicas como Diagramas de Flujo y Diagramas de Entidad
Relación porque son entendibles por el usuario. En este análisis se
confirmaron las necesidades tanto de datos como de procesos
48
3.2 Diagrama de Entidad Relación
FIGURA 15 Diagrama de Entidad Relación
49
3.3. Diccionario de Datos
TABLA 10 Diccionario de Datos
con_balance_general
Campo Tipo Null Key Descripción
cod_balance_general int(11) NO PRI Codigo Balance General
cod_bg_plt int(11) NO FK Foranea al Cod.Balance General plantilla
clasificacion varchar(6) NO a que grupo pertenece AC=Activo corriente
descripcion varchar(60) NO Descripcion
clase char(1) NO C=Cuenta G= Grupo
codigo_cuenta varchar(15) YES Codigo de cuenta
valor decimal(10,2) YES Valor
estado char(1) NO Estado
periodoa char(4) NO Periodo Anual
periodom int(11) NO Periodo Mensual
cod_sucursal int(11) NO Codigo Sucursal
fecha_gen datetime NO Fecha Generacion
con_balance_general_cons
Campo Tipo Null Key Descripción
cod_balance_general int(11) NO PRI Codigo Balance General
cod_bg_plt int(11) NO FK Foranea al Cod.Balance General plantilla
clasificacion varchar(6) NO a que grupo pertenece AC=Activo corriente
descripcion varchar(60) NO Descripcion
clase char(1) NO C=Cuenta G= Grupo
codigo_cuenta varchar(15) YES Codigo de cuenta
valor decimal(10,2) YES Valor
estado char(1) NO Estado
periodoa char(4) NO Periodo Anual
periodom int(11) NO Periodo Mensual
fecha_gen datetime NO Fecha Generacion
50
con_balance_general_cons_his
Campo Tipo Null Key Descripción
cod_balance_general int(11) NO PRI Codigo Balance General
cod_bg_plt int(11) NO FK Foranea al Cod.Balance General plantilla
clasificacion varchar(6) NO a que grupo pertenece AC=Activo corriente
descripcion varchar(60) NO Descripcion
Clase char(1) NO C=Cuenta G= Grupo
codigo_cuenta varchar(15) YES Codigo de cuenta
Valor decimal(10,2) YES Valor
estado char(1) NO Estado
periodoa char(4) NO Periodo Anual
periodom int(11) NO Periodo Mensual
fecha_gen datetime NO Fecha Generacion
con_balance_general_his
Campo Tipo Null Key Descripción
cod_balance_general int(11) NO PRI Codigo Balance General
cod_bg_plt int(11) NO FK Foranea al Cod.Balance General plantilla
clasificacion varchar(6) NO a que grupo pertenece AC=Activo corriente
descripcion varchar(60) NO Descripcion
clase char(1) NO C=Cuenta G= Grupo
codigo_cuenta varchar(15) YES Codigo de cuenta
valor decimal(10,2) YES Valor
estado char(1) NO Estado
periodoa char(4) NO Periodo Anual
periodom int(11) NO Periodo Mensual
cod_sucursal int(11) NO Codigo Sucursal
fecha_gen datetime NO Fecha Generacion
con_balance_general_plt
51
Campo Tipo Null Key Descripción
cod_bg_plt int(11) NO PRI Codigo Plantilla del Balance General
clasificacion varchar(6) NO Clasif; AC=Activo Corriente...
descripcion varchar(60) NO Descripcion
clase char(1) NO C=Cuenta T=Totalizadora
codigo_cuenta varchar(15) YES Codigo del plan de cuentas
estado char(1) NO Estado
fecha_gen datetime NO Fecha de generacion
con_balance_inicial_plt
Campo Tipo Null Key Descripción
cod_bg_plt int(11) NO PRI Codigo Plantilla del Balance General
clasificacion varchar(6) NO Clasif; AC=Activo Corriente...
descripcion varchar(60) NO Descripcion
Clase char(1) NO C=Cuenta T=Totalizadora
codigo_cuenta varchar(15) YES Codigo del plan de cuentas
estado char(1) NO Estado
fecha_gen datetime NO Fecha de generacion
con_balancei_temp
Campo Tipo Null Key Descripción
cod_bg_plt int(11) NO PRI Foranea al Cod.Balance General plantilla
clasificacion varchar(6) NO a que grupo pertenece AC=Activo corriente
descripcion varchar(60) NO Descripcion
Clase char(1) NO C=Cuenta G= Grupo
codigo_cuenta varchar(15) YES Codigo de cuenta
Valor decimal(10,2) YES Valor
estado char(1) NO Estado
periodoa char(4) NO Periodo Anual
periodom int(11) NO Periodo Mensual
cod_sucursal int(11) NO Codigo Sucursal
fecha_gen datetime NO Fecha Generacion
con_cab_asiento
52
Campo Tipo Null Key Descripción
cod_cab_asiento int(11) NO PRI Codigo de cabecera del asiento
cod_sucursal int(11) YES FK codigo de la sucursal
cod_modulo_erp tinyint(4) YES FK Codigo del Modulo ERP de donde proviene el asiento
cod_tipo_doc tinyint(4) YES FK Codigo de Tipo de Documento
num_asiento int(11) YES Numero de Asiento por Sucursal
num_formulario int(11) YES Numero de Asiento la Sucursal
fecha datetime YES Fecha deL Asiento
valor_total decimal(10,2) YES Valor Total del asiento
concepto varchar(500) YES Concepto o Glosa del asiento
cuadrado varchar(1) YES Asiento Cuadrado S=Si N= No
fec_crea datetime YES Fecha de creacón del asiento
user_crea varchar(15) YES Usuario de creación del asiento
fec_mod datetime YES Fecha de modificac. del asiento
user_mod varchar(15) YES Usuario que modificó el asiento
estado varchar(1) YES Estado
periodoa varchar(4) YES Numero de Periodo contable
periodom int(11) YES Numero de Periodo mensual
mayoriza char(1) NO Mayoriza S=Si N= No
con_det_asiento Campo Tipo Null Key Descripción
cod_det_asiento int(11) NO PRI Codigo de Detalle del Asiento
cod_cab_asiento int(11) NO MUL Codigo de la cabecera de este asiento
cod_plan_cuentas int(11) YES MUL Foránea al Plan de Cuentas
movimiento varchar(1) YES D=Debe H=haber
cod_modulo_erp tinyint(4) YES MUL Foránea al módulo ERP
valor_det decimal(10,2) NO Valor de este detalle
observacion varchar(2555) YES Glosa del detalle
indicador_pto varchar(1) YES Indicador presupuestario
modulo varchar(45) YES Modulo del ERP
estado varchar(1) YES Estado del detalle del asiento
periodoa varchar(4) NO Periodo Contable
periodom int(11) NO Foránea a Periodo Mensual
cod_sucursal int(11) NO Codigo de Sucursal
fecha_crea date NO Fecha de creación
mayoriza char(1) NO S=Si N= No I= Inicial
53
con_estado_periodo Campo Tipo Null Key Descripción
cod_est_prd tinyint(4) NO PRI Codigo del Estado de Periodo
codigo_estado varchar(1) YES Codigo de estado
descripcion varchar(50) YES Descripcion
fech_crea datetime YES Fecha de creacion
user_crea varchar(15) YES Usuario de creación
fech_mod datetime YES Fecha de modificación
user_mod varchar(15) YES Usuario de modificación
estado varchar(1) YES Estado A=Activo I = Inactivo
con_estadopyg
Campo Tipo Null Key Descripción
cod_epg int(11) NO PRI Codigo de Estado de Perdidas y Ganancias
cod_epg_plt int(11) NO FK Codigo de plantilla de Estado de P y G
descripcion varchar(60) NO Descripcion
clase char(1) NO Clase C=Cuenta T= Totalizadora
valor decimal(10,2) NO Valor
codigo_cuenta varchar(15) NO Codigo del plan de cuenta
periodoa char(4) NO Periodo anual
periodom int(11) NO Periodo mensual
fecha_gen datetime YES Fecha generacion del estado
cod_sucursal int(11) NO FK Foránea a Sucursal
grupo varchar(5) YES OI=Otros Ingresos, OE= Otros Egresos para imprimir el E. PyG
54
con_estadopyg_cons
Campo Tipo Null Key Descripción
cod_epg int(11) NO PRI Codigo de Estado de Perdidas y Ganancias
cod_epg_plt int(11) NO FK Codigo de plantilla de Estado de P y G
descripcion varchar(60) NO Descripcion
clase char(1) NO Clase C=Cuenta T= Totalizadora
valor decimal(10,2) NO Valor
codigo_cuenta varchar(15) NO Codigo del plan de cuenta
periodoa char(4) NO Periodo anual
periodom int(11) NO Periodo mensual
fecha_gen datetime YES Fecha generacion del estado
grupo varchar(5) YES
OI=Otros Ingresos, OE= Otros Egresos para imprimir el E. PyG
con_estadopyg_cons_his
Campo Tipo Null Key Descripción
cod_epg int(11) NO PRI Codigo de Estado de Perdidas y Ganancias
cod_epg_plt int(11) NO FK Codigo de plantilla de Estado de P y G
descripcion varchar(60) NO Descripcion
Clase char(1) NO Clase C=Cuenta T= Totalizadora
Valor decimal(10,2) NO Valor
codigo_cuenta varchar(15) NO Codigo del plan de cuenta
periodoa char(4) NO Periodo anual
periodom int(11) NO Periodo mensual
fecha_gen datetime YES Fecha generacion del estado
grupo varchar(5) YES OI=Otros Ingresos, OE= Otros Egresos para imprimir el E. PyG
55
con_estadopyg_his
Campo Tipo Null Key Descripción
cod_epg int(11) NO PRI Codigo Estado Perdidas y Ganancias
cod_epg_plt int(11) NO FK Codigo de la plantilla
descripcion varchar(60) NO Descripcion
clase char(1) NO Clase
valor decimal(10,2) NO Valor
codigo_cuenta varchar(15) NO Código Cuenta
periodoa char(4) NO Periodo Anual
periodom int(11) NO Periodo Mensual
fecha_gen datetime YES Fecha generación
cod_sucursal int(11) NO Codigo de Sucursal
grupo varchar(5) YES Grupo OI=Otros Ingresos, OE= Otros Egresos
con_estadopyg_mes
Campo Tipo Null Key Descripción
cod_epg int(11) NO PRI Codigo Estado Perdidas y Ganancias
cod_epg_plt int(11) NO FK Codigo de la plantilla
descripcion varchar(60) NO Descripcion
clase char(1) NO Clase
valor decimal(10,2) NO Valor
codigo_cuenta varchar(15) NO Código Cuenta
periodoa char(4) NO Periodo Anual
periodom int(11) NO Periodo Mensual
fecha_gen datetime YES Fecha generación
cod_sucursal int(11) NO Codigo de Sucursal
grupo varchar(5) YES Grupo OI=Otros Ingresos, OE= Otros Egresos
56
con_estadopyg_mes_his
Campo Tipo Null Key Descripción
cod_epg int(11) NO PRI Codigo de Estado de Perdidas y Ganancias
cod_epg_plt int(11) NO FK Codigo de plantilla de Estado de P y G
descripcion varchar(60) NO Descripcion
Clase char(1) NO Clase C=Cuenta T= Totalizadora
Valor decimal(10,2) NO Valor
codigo_cuenta varchar(15) NO Codigo del plan de cuenta
periodoa char(4) NO Periodo anual
periodom int(11) NO Periodo mensual
fecha_gen datetime YES Fecha generacion del estado
cod_sucursal int(11) NO Foránea a Sucursal
grupo varchar(5) YES OI=Otros Ingresos, OE= Otros Egresos para imprimir el E. PyG
con_estadopyg_plt
Campo Tipo Null Key Descripción
cod_epg_plt int(11) NO PRI Codigo Estado Perdidas y Ganancias
descripcion varchar(60) NO FK Descripcion
Clase char(1) NO C=Cuenta G = Grupo
codigo_cuenta varchar(15) YES Codigo Cuenta Contable
estado char(1) NO Estado
fecha_gen datetime NO Fecha generacion
grupo varchar(5) YES Grupo
57
con_mayor_cons_his
Campo Tipo Null Key Descripción
cod_mayor int(11) NO PRI Codigo Mayor
cod_plan_cuentas int(11) NO PRI Codigo Plan de Cuentas
cuenta_fisica varchar(15) NO Codigo Contable
nombre_cuenta varchar(60) NO Nombre Cuenta
debe_mes decimal(10,2) NO Valor Debe mes
haber_mes decimal(10,2) NO Valor Haber mes
debe_ant decimal(10,2) NO Valor Debe mes anterior
haber_ant decimal(10,2) NO Valor Haber mes anterior
debe_actual decimal(10,2) NO Saldo del Debe
haber_actual decimal(10,2) NO Saldo del Haber
cod_padre_cuentas int(11) NO FK Padre de esta cuenta
padre_nmn varchar(10) YES Padre nemonico
periodoa varchar(4) NO Periodo anual
periodom int(11) NO Periodo mensual
fecha_genera datetime NO Fecha generación
user_gen varchar(15) NO Usuario Generacion
con_mayor_his
Campo Tipo Null Key Descripción
cod_mayor int(11) NO PRI Codigo Mayor
cod_sucursal int(11) NO PRI Codigo Sucursal
cod_plan_cuentas int(11) NO Codigo Plan de Cuentas
cuenta_fisica varchar(15) NO Codigo Contable
nombre_cuenta varchar(60) NO Nombre Cuenta
debe_mes decimal(10,2) NO Valor Debe mes
haber_mes decimal(10,2) NO Valor Haber mes
debe_ant decimal(10,2) NO Valor Debe mes anterior
haber_ant decimal(10,2) NO Valor Haber mes anterior
debe_actual decimal(10,2) NO Saldo del Debe
haber_actual decimal(10,2) NO Saldo del Haber
cod_padre_cuentas int(11) NO FK Padre de esta cuenta
padre_nmn varchar(10) YES Padre nemonico
periodoa varchar(4) NO Periodo anual
58
periodom int(11) NO Periodo mensual
fecha_genera datetime NO Fecha generacion
user_gen varchar(15) NO Usuario Generacion
con_mayor_rpt
Campo Tipo Null Key Descripción
cod_mayor int(11) NO PK Codigo Mayor
cod_sucursal int(11) NO PK Codigo Sucursal
cod_plan_cuentas int(11) NO PK Codigo Plan de Cuentas
cuenta_fisica varchar(15) NO Codigo Contable
nombre_cuenta varchar(60) NO Nombre Cuenta
debe_mes decimal(10,2) NO Valor Debe mes
haber_mes decimal(10,2) NO Valor Haber mes
debe_ant decimal(10,2) NO Valor Debe mes anterior
haber_ant decimal(10,2) NO Valor Haber mes anterior
debe_actual decimal(10,2) NO Saldo del Debe
haber_actual decimal(10,2) NO Saldo del Haber
cod_padre_cuentas int(11) NO FK Padre de esta cuenta
padre_nmn varchar(10) YES Padre nemonico
periodoa varchar(4) NO Periodo anual
periodom int(11) NO Periodo mensual
fecha_genera datetime NO Fecha generacion
user_gen varchar(15) NO Usuario Generacion
con_mayor_rpt_cons
Campo Tipo Null Key Descripción
cod_mayor int(11) NO PK Codigo Mayor
cod_plan_cuentas int(11) NO PK Codigo Plan de Cuentas
cuenta_fisica varchar(15) NO Codigo Contable
nombre_cuenta varchar(60) NO Nombre Cuenta
debe_mes decimal(10,2) NO Valor Debe mes
haber_mes decimal(10,2) NO Valor Haber mes
debe_ant decimal(10,2) NO Valor Debe mes anterior
haber_ant decimal(10,2) NO Valor Haber mes anterior
debe_actual decimal(10,2) NO Saldo del Debe
59
haber_actual decimal(10,2) NO Saldo del Haber
cod_padre_cuentas int(11) NO Padre de esta cuenta
padre_nmn varchar(10) YES FK Padre nemonico
periodoa varchar(4) NO Periodo anual
periodom int(11) NO Periodo mensual
fecha_genera datetime NO Fecha generacion
user_gen varchar(15) NO Usuario Generacion
con_movimientos_gen
Campo Tipo Null Key Descripción
cod_mov_gen int(11) NO PK Codigo Movimientos generales
cod_participante int(11) YES FK Codigo Participante
cod_cab_asiento int(11) NO MUL Codigo Cabecera de asiento
cod_modulo_erp tinyint(4) NO MUL Codigo de Modulo ERP
cod_plan_cuentas int(11) NO MUL Codigo Plan de Cuentas
cuenta_bancaria varchar(20) YES Cuenta Bancaria
signo char(1) NO Debe o Haber
valor decimal(10,2) NO Valor de la transaccion
con_periodo_contable
Campo Tipo Null Key Descripción
cod_prd_contable int(4) NO PRI Codigo Periodo Contable
anio varchar(4) NO Anio
referencia varchar(50) YES Descripcion del periodo
fech_crea datetime YES Fecha de creacion
user_crea varchar(20) YES Usuario Creacion
fech_mod datetime YES Fecha de modificacion
user_mod varchar(20) YES Usuario de modificacion
cod_est_prd char(1) NO Estado de Periodo
60
con_periodo_mensual
Campo Tipo Null Key Descripción
cod_prd_mensual smallint(6) NO PRI Codigo Periodo Mensual
cod_prd_contable int(4) YES MUL Foranea al Periodo Contable
num_mes int(4) NO Mes en numero
descripcion varchar(50) YES Descripcion
fech_inicio datetime YES Fecha de inicio del mes
fech_fin datetime YES Fecha de fin del mes
fech_crea datetime YES Fecha de creacion
user_crea varchar(15) YES Usuario de creacion
cod_est_prd char(1) NO Estado del periodo
con_plan_cuentas
Campo Tipo Null Key Descripción
cod_plan_cuentas int(11) NO PRI Codigo Plan de Cuentas
cod_padre_cuentas int(11) YES FK Recursiva a esta tabla
nivel tinyint(4) NO Niveles por grupo
codigo_cuenta varchar(15) NO Codigo Fisico Plan de Cuentas
nombre varchar(60) YES Nombre de Cuenta
descripcion varchar(200) YES Descripcion de Cuenta
clase varchar(1) NO C=Cuenta G=Grupo
afecta_pto varchar(1) NO Afecta presupuesto
fech_crea datetime YES Fecha de creacion
user_crea varchar(15) YES Usuario de Creacion
fech_mod datetime YES Fecha de modificacion
user_mod varchar(15) YES Usuario de modificacion
estado varchar(1) NO Estado
nmn varchar(10) YES Nemonico
61
con_procesos
Campo Tipo Null Key Descripción
cod_sucursal int(11) NO PK Codigo Sucursal
cod_procesos int(11) NO FK Codigo Procesos
proceso varchar(100) YES Descripcion del Proceso
semaforo smallint(6) YES 1= Proceso Realizado o = no Realizadoceso
periodom int(11) NO Periodo Mensual
periodoa char(4) NO Periodo Anual
con_tipo_doc
Campo Tipo Null Key Descripción
cod_tipo_doc tinyint(4) NO PK Codigo Tipo de Documento
siglas varchar(2) NO Siglas
descripcion varchar(45) NO Descripcion del documento
ind_transaccional tinyint(1) YES El documento es transaccional ??
ind_presupuesto tinyint(1) YES El documento es presupuestario??
fech_crea datetime YES Fecha de creacion
user_crea varchar(15) YES Usuario de creacion
fec_mod datetime YES Fecha de modificacion
user_mod varchar(15) YES Usuario de modificacion
estado varchar(1) YES Estado
62
3.4 Diagrama de Flujo de Datos
3.4.1 Diagrama de Flujo de Dato Home
FIGURA 16 Diagrama de Flujo de Dato Home
63
3.4.2 Diagrama de Flujo de Dato Periodo Contable
FIGURA 17 Diagrama de Flujo de Dato Periodo Contable
64
3.4.3 Diagrama de Flujo de Dato Personalizacion de Documentos
FIGURA 18 Diagrama de Flujo de Dato Personalizacion de
Documentos
65
3.4.4 Diagrama de Flujo de Dato Personalizacion Cuentas Contables
FIGURA 19 Diagrama de Flujo de Dato Personalizacion Cuentas
Contables
66
3.4.5 Diagrama de Flujo de Dato Asientos de Diario
FIGURA 20 Diagrama de Flujo de Dato Asientos de Diario
67
3.4.6 Diagrama de Flujo de Dato Mayorizacion - Balances
FIGURA 21 Diagrama de Flujo de Dato Mayorizacion - Balances
68
3.4.7 Diagrama de Flujo de Dato Reportes
FIGURA 22 Diagrama de Flujo de Dato Reportes
69
3.5 Diagrama de Secuencia
FIGURA 23 Diagrama de Secuencia
70
FIGURA 24 Diagrama de Secuencia
71
FIGURA 25 Diagrama de Secuencia
72
FIGURA 26 Diagrama de Secuencia
73
FIGURA 27 Diagrama de Secuencia
74
FIGURA 28 Diagrama de Secuencia
75
3.6 Diseño a nivel de Componentes
3.6.1 Diagrama de Componentes de Capas
FIGURA 29 Diagrama de Componentes de Capas
76
3.6.2 Diagrama de Componentes
77
78
FIGURA 30 Diagrama de Componentes
79
3.7 Diseño de Interfaz
Entorno de escritorio, es una solución completa de interfaz gráfica de
usuario, que facilita la lectura de la pagina web y que provee al usuario
elementos tales como íconos, barras de herramientas, aplicaciones e
integración entre aplicaciones con posibilidades de realizar acciones
como arrastrar y soltar. Lo que proporciona un manejo amigable y fácil
del sistema.
Ventanas, son áreas visuales, normalmente de forma rectangular, que
contienen algún tipo de interfaz de usuario, mostrando la salida y
permitiendo la entrada de datos para realizar determinados procesos.
Esta interfaz está diseñada de tal manera que el usuario no se confunda
y al mismo tiempo este pueda cometer errores sin que el sistema sufra
algún tipo de modificación o daño irreparable.
Es así que al momento de diseñar la entrada de datos correspondiente a
nuestro sistema de contabilidad, necesitamos asegurar que el usuario
pueda con toda confianza trabajar en el programa. Para lograr que las
formas sean fáciles de llenar y satisfagan el objetivo para el que fueron
diseñadas. Formas que aseguren el llenado preciso. Y que se
mantengan atractivas. A continuación se muestran algunas pantallas,
comenzando desde el fondo del sitio de la página web.
80
FIGURA 31 Diseño de Interfaz
FIGURA 32 Diseño de Interfaz
81
FIGURA 33 Diseño de Interfaz
FIGURA 34 Diseño de Interfaz
82
FIGURA 35 Diseño de Interfaz
FIGURA 36 Diseño de Interfaz
83
FIGURA 37 Diseño de Interfaz
FIGURA 38 Diseño de Interfaz
84
Plan de Cuentas
Se visualiza en forma de árbol mejora la búsqueda y agrupación de
cuentas permitiendo desplazarse rápidamente entre diferentes grupos de
cuentas, mientras mantiene visible la estructura global de su plan de
cuentas. La codificación que se usa, el número de niveles depende del
usuario; ajustándose el sistema a sus gustos o necesidades.
Tipos de documentos
Ingreso de diferentes tipos de comprobantes de diario como son:
Asientos, Ingresos, Egresos, Notas de Debito, Notas de Credito, Notas
de Transferencia
Asientos de Diario
La mayoría de los asientos son creados automáticamente a través de los
módulos integrados el ERP como son las compras, ventas, cuentas por
cobrar y pagar, retenciones, roles de pago, activos fijos, etc.
Mayorización
Permitirá realizar el proceso de Mayorización y cálculo de saldos para
todas las cuentas contables, y a su vez actualizar los registros para la
obtención de reportes.
85
Reportes
Balance General
Generará el Balance General dependiendo del periodo contable
escogido.
Estados Financieros
Estas pantallas permitirán al contador ingresar el periodo y la fecha de
corte para obtener los reportes de:
Estado de Perdidas y Ganancia.
Estado de Perdidas y Ganancia Consolidado
Balance de Sumas y Saldos.
Balance de Sumas y Saldos Consolidado
Balance General Consolidado
86
CAPÍTULO 4
4. CODIFICACIÒN
4.1 Modelo Utilizado para el desarrollo del Módulo
Uno de los modelos de diseño de aplicaciones Web es el Modelo-Vista-
Control (MVC). Este patrón propone la separación en distintos
componentes de la interfaz de usuario (vistas), el modelo de negocio y la
lógica de control. Una vista es una “fotografía” del modelo (o una parte
del mismo) en un determinado momento. Un control recibe un evento
disparado por el usuario a través de la interfaz, accede al modelo de
manera adecuada a la acción realizada, y presenta en una nueva vista el
resultado de dicha acción. Por su parte, el modelo consiste en el conjunto
de objetos que modelan los procesos de negocio que se realizan a través
del sistema.
En una aplicación Web, las vistas serían las páginas HTML que el
usuario visualiza en el navegador. A través de estas páginas el usuario
interactúa con la aplicación, enviando eventos al servidor a través de
peticiones HTTP. En el servidor se encuentra el código de control para
estos eventos, que en función del evento concreto actúa sobre el modelo
87
convenientemente. Los resultados de la acción se devuelven al usuario
en forma de página HTML mediante la respuesta HTTP.
FIGURA 39 Modelo Vista Controlador
La clave está en la separación entre vista y modelo. El modelo suele ser
más estable a lo largo del tiempo y menos sujeto a variaciones mientras
que las vistas puede cambiar con frecuencia, ya sea por cambio del
medio de presentación (por ejemplo HTML a WAP o a PDF) o por
necesidades de usabilidad de la interfaz o simple renovación de la
estética de la aplicación. Con esta clara separación las vistas pueden
cambiar sin afectar al modelo y viceversa. Los controladores son los
encargados de hacer de puente entre ambos, determinando el flujo de
salida de la aplicación.
4.2 Tecnología utilizada
En el desarrollo de nuestro Módulo Contable se utilizó tecnología RIA
(Rich internet Applications). En donde las aplicaciones se ejecutan en el
cliente, es decir en el navegador de cada una de las maquinas de los
usuarios que utilizan el sistema, en tanto en cuanto se mantenga la
88
comunicación asíncrona con el servidor en segundo plano, es decir el
usuario podrá utilizar cualquier punto de la pantalla, sin que se vea
afectada la ejecución de otro vínculo o proceso que se este realizando.
Las siguientes ideas y tecnologías son, si no todas, las mas importantes
y utilizadas en las paginas web actualmente que la Tecnologìa RIA
comprende:. Applet, Adobe Flash, Java WebStart , DHTML, AJAX .
DHTML = HTML + Javascript + DOM + CSS
Se utiliza para crear aplicaciones interactivas y más rápidas.
AJAX = DHTML + XMLHttpRequest
Es un refinamiento del DHTML, utiliza todas sus herramientas,
sumándole el objeto XMLHttpRequest para obtener información
asíncronamente y refrescar solo la parte necesaria de la página sin
perder nada del contexto, se terminaron los problemas del DHTML. No
necesitamos descargar plug-in.
4.3 Herramientas utilizadas
4.3.1 Servidor de Aplicaciones: Web Apache
Trabajaremos con el servidor HTTP Apache ya que es un software
libre de código abierto para plataformas GNU/Linux, Windows,
Macintosh y otras. Además corre en una multitud de sistemas
operativos, lo que lo hace prácticamente universal y trabaja con
varios lenguajes de script en uno de ellos el PHP.
89
4.3.2 Servidor de Datos: Mysql
MySQL es un sistema de gestión y administración de base de datos
relacional, multihilo y multiusuario, es un software libre en un
esquema de licenciamiento dual. MySQL es un sistema de
administración de bases de datos. Una base de datos es una
colección estructurada de tablas que contienen datos. Es ideal para
almacenar datos que se ingresan por medio de la web.
4.3.3 Lenguajes de Programación del lado del Servidor: PHP/JSP
PHP, Hypertext Pre-processor. Considerada la licencia como
software libre. Trabajaremos con este lenguaje de programación
para la creación de contenido para el sitio Web, con los cuales
vamos a programar las paginas HTML y los códigos fuente.
PHP es un lenguaje de programación multiplataforma interpretado,
diseñado originalmente para la creación de páginas web. El código
fuente escrito en PHP es invisible al navegador y al cliente ya que es
el servidor el que se encarga de ejecutar el código y enviar su
resultado HTML al navegador. Esto hace que la programación en
PHP sea segura y confiable. Permite aplicar técnicas de
programación orientada a objetos. Php es completamente orientado
al desarrollo de aplicaciones web dinámicas con acceso a
información almacenada en una Base de Datos.
A veces necesitamos enviar información al servidor y que éste la
procese y nos responda. Para este procesamiento se utilizan los
lenguajes de servidor PHP, JSP.
90
JSP, Java Server Pages. Las páginas JSP están compuestas de
código HTML/XML mezclado con etiquetas especiales para
programas scripts de servidor en sintaxis Java. Por lo tanto las JSP
podremos escribirlas con nuestro editores HTML/XML.
El motor de las páginas JSP está basado en servlets de Java,
destinadas a ejecutarse en el servidor.
JSP se compila a un programa en Java la primera vez que se invoca
y del programa en Java se crea una clase que se empieza a ejecutar
en el servidor como un servlets. Lenguajes de Cliente, (Javascript
principalmente).
Cuando el usuario ve una página web en su navegador, ésta puede
tener, aparte del código HTML o XHTML, código escrito en un
lenguaje de script que se utiliza normalmente para dotar de
dinamismo a las páginas y obtener DHTML. El principal lenguaje
utilizado hoy día es Javascript.
4.3.4 Lenguajes de Programaciòn del lado del Cliente: Javascript
Cuando el usuario ve una página web en su navegador, ésta puede
tener, aparte del código HTML o XHTML, código escrito en un
lenguaje de script que se utiliza normalmente para dotar de
dinamismo a las páginas y obtener DHTML. El principal lenguaje
utilizado hoy día es Javascript; nació con Netscape 2.0 y la versión
actual es la 1.5 que implementan Netscape 6 y Mozilla Firefox.
91
DOM (Document Object Model). Cuando se carga una página Web
en nuestro navegador, éste crea asociado a la página una serie de
objetos en forma jerárquica, de manera que mediante un lenguaje
utilizable en la parte del navegador, como Javascript, pueden
modificarse las características de esos objetos y con ello la página en
sí. Ya que la página se actualiza inmediatamente si realizamos algún
cambio con Javascript mientras ésta está siendo visualizada, se
habla de HTML dinámico: DHTML (Dynamic HTML).
Tendremos un usuario que carga en su navegador una página
compuesta por XHTML y Javascript cuyo estilo está en un archivo
CSS si lo separamos; el navegador crea el DOM asociado a la
página y el Javascript lo modifica para conseguir dinamismo.
Tenemos en el servidor páginas hechas con JSP, cuando el usuario
pide una de estas páginas, el servidor la ejecuta y devuelve el
resultado al usuario ya sea una página XHTML u otro tipo
información.
4.4 Estandares
Para el desarrollo del sistema se utiliza estándares, para que sea
entendible la programación e integración de los mòdulos del sistema.
Para nuestro caso se definieron estandares, atributos, reglas del negocio,
entre otros. Donde los principales procesos de nuestro mòdulo refleje la
correcta lógica del negocio.
92
4.4.1Base de datos.
La Base de Datos utilizada para el desarrollo del mòdulo es MYSQL
con WAMPSERVER. Como servidor de aplicaciones utilizamos
Apache. Los nombres de la tablas comienza con las tres primeras
letras del modulo, subguiòn y la descripción de la tabla, ejemplo:
con_plan_cuentas
4.4.2 Codificación
En la codificación se definió estandares de utilizar tres letras del
objeto que se utiliza mas el nombre descriptivo de la variable a usar.
4.4.3 Interfaces
Se definió un estándar por el grupo de integración del Sistema ERP
en conjunto y todos los mòdulos integrados utilizan la misma
interface, incluye los colores de los objetos, los estilos css, los
iconos, barra de herramienta, de botones, de menú.
4.4.4 Estilo
CSS (Cascade Style Sheets), En los primeros tiempos de las
páginas web, teníamos en un mismo documento “.html” tanto los
párrafos de texto e imágenes como su estilo, e indicábamos el tipo
de atributos del texto dentro de las etiquetas HTML.
93
Ahora que tenemos las CSS, asignamos a las etiquetas una clase
dentro del documento “.html”, y a esa clase contenida en otro
documento le especificamos el formato, de esta forma tenemos dos
documentos: uno con los datos y otro que dice cómo deben
representarse. Si quisiéramos hacer un cambio en la representación
de una web compuesta por 100 páginas y las 100 leen el mismo
CSS, con un solo cambio en el “.css” habríamos cambiado toda la
representación automáticamente.
94
CAPÍTULO 5
5. PRUEBAS
5.1 Pruebas de Validación
Las pruebas de validación son el proceso de revisión que el sistema de
software producido cumple con las especificaciones de lo que el usuario
de las pequeñas y medianas empresas requieren.
5.1.1 Muestreo de las pruebas de validación
Se comprobó los estándares de interface (menú, botones, iconos,
formato, posición de los botones) utilizado en todo el módulo.
Se realizó pruebas de ingreso de Diario.
5.2 Prueba Unitaria
Se revisò cada una de las opciones del Sistema que funcione y que todo
cuadre como debe cuadrar. Y se realizó así mismo la prueba del módulo
por separado del Sistema ERP y el funcionamiento de los procesos
contable.
95
Se comprobó el Libro Mayor.
Se generó el Balance de comprobación y se lo chequeó que cuadre.
Se revisó el Estado de Pérdidas y Ganancias.
Se revisó el Balance General Clasificado.
Se revisaron todos los Estados Financieros Consolidados.
5.3 Prueba de Integración
Se realizó pruebas de integración de todos los módulos que componen el
Sistema ERP, es decir que toda la información este fluyendo entre los
diversos módulos, así mismo que los otros módulos generen los asientos
respectivos cuando tengan que ser generados los asientos contables de
una transacción.
5.4 Pruebas de Calidad
Es el grado con el que un sistema componente o proceso cumple los
requisitos especificados y las necesidades. Dentro de los atributos de
calidad que aportan en nuestro sistema son:
Confiable: Después de las pruebas realizadas a nuestro sistema
podemos dar fe de que la información que resulta del sistema es
confiable.
Amigable: Cada una de las pantallas son parecidas unas a otras y los
diferentes iconos están ubicados en una sola posición y los iconos son
fácilmente detectable.
Parametrizable: El Plan de Cuentas esta parametrizado, así como los
tipos de documentos.
96
CONCLUSIONES
Se concluye que la mayoría de los sistemas funcionan en plataformas no
actuales. Aparte de ello, son sistemas que le presentan muchas
limitaciones al usuario, el cual, está obligado a depender directamente
del programador.
Este hecho, que es casi un patrón común, a pesar de ser molesto, ha
sido aceptado y sobrellevado por las instituciones.
De esto surge el deseo de elaborar un software que represente una
solución basado en el análisis de requerimientos y especificaciones
estudiados y mencionados en este documento.
La motivación para el desarrollo del software viene de la necesidad de
las empresas de contar con una herramienta que cubra todos los
aspectos de aquella y que este totalmente integrado.
El Sistema Modulo Contable fue desarrollado para cumplir con las
expectativas y necesidades de las pequeñas y medianas empresas
comerciales, tanto desde el ingreso de una transacción como para la
emisión de Estados Financieros Consolidados, de una manera ágil, fácil
y rápida sin pérdidas de tiempo, utilizando herramientas como el Internet
97
Explorer y aprovechando estas redes para unir diferentes sucursales en
diferentes sitios en un solo repositorio de datos y con el menos gasto de
comunicaciones.
La integración del proyecto en cuestión nos preparó y capacitó para tener
la facilidad de comprensión ante situaciones adversas, complejidad de
procesos, análisis de factibilidad de proyectos, establecer
comunicaciones interpersonales y tecnológicas.
El desarrollo de este producto nos ha servido de mucho para el
aprendizaje de herramientas nuevas como PHP, MYSQL, Javascript,
JSP, Ajax, Tecnologìa RIA, DHTML, DHTMLX, Wampserver, así como
aprender a trabajar en equipos de trabajo pequeños y grandes, con esto
decimos que estamos preparados para un futuro competitivo en el
mundo de la informática y de las nuevas herramientas de uso como el
internet.
98
RECOMENDACIONES
Para el uso de este software se recomienda que el enlace contratado de
internet tenga un gran ancho de banda, para que las comunicaciones fluyan
más rápido y que las personas incluidas en esta red con acceso a internet se
les bloquee accesos a paginas como www.youtube.com, así mismo se
bloquee o se restrinja el acceso para bajar archivos desde el internet y se
bloquee también paginas de escuchar música. Cuando se instale el sistema
en el servidor de aplicaciones y de datos se recomienda que se lea el
manual de diseño.
99
GLOSARIO DE TERMINOS TECNICOS
ERP Enterprise Resource Planning .
Planeación de Recursos Empresariales.
PYME Pequeña y Mediana Empresa.
Ejemplo: Ferreterías, Comerciales, Farmacias, etc.
PHP Preprocessed Hypertext Pages
Procesador de Paginas Hipertexto
HTML Hyper Text Markup Language
Lenguaje de Marcas de Hipertexto
MySQL Structured Query Language
Lenguaje Estructurado
100
BIBLIOGRAFÌA
Libros
Contabilidad General, octava edición, por Mercedes Bravo Valdiviezo
Contabilidad tomo 6, por Ing. Alejandro Zuñiga
Sitios de Páginas Web
www.monografia.com
www.manualdephp.com
www.desarrolloweb.com
www.mysql.com
www.javascript,com
www.php.com
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas
Computacionales
“Mòdulo Contable para el control empresarial orientado al
mercado PYMES aplicando Tecnologìa RIA”
PROYECTO DE GRADO
CURSO DE GRADUACIÓN
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
WILLIAM ENRIQUE MORENO HERBAS
GLADYS MARLENE JURADO CAMPOVERDE
GUAYAQUIL-ECUADOR
Año: 2010
II
AGRADECIMIENTO
Agradezco a Jehová mi Dios por siempre estar
conmigo y haberme dado la sabiduría para poder
terminar exitosamente mi tesis, tanto como todas
sus bendiciones presentes desde mucho tiempo
atrás, el éxito total te lo debo a ti Dios mío para
que la gloria, la honra y el poder sea tuyo por
siempre y hasta siempre, a mi padre William
Moreno Encalada, a mi madre Alicia Herbas de
Moreno, mi hermana Alicia Moreno Herbas por
siempre brindarme su cariño, apoyo, tanto moral,
como económico, también por la fortaleza física
como de espíritu presente en ellos los cuales los
manifiesto en mi persona con mucha pasión y
perspicacia. A mis amados abuelitos José Herbas
y Olga de Herbas por darme siempre su amor,
parte de su dignidad y coraje de seguir a pesar de
la adversidad, las cuales han influido mucho en mi
personalidad ganadora y en el logro alcanzado.
William Enrique Moreno Herbas
III
AGRADECIMIENTO
En primer lugar agradezco a Dios que con su
infinita bondad me ha guiado a lo largo de mis
estudios; en segundo lugar a mi amado ESPOSO
Ing. Alberto Macancela Chedraui por siempre
darme su apoyo y amor incondicional, a mi
PADRE Carlos Jurado, mi MADRE Gladys
Campoverde, mis HIJOS Andrés Alberto y Adrián
Eduardo, mi SUEGRA Lía Chedraui, mis
hermanos; por siempre haberme dado su fuerza
que me han llevado hasta donde estoy ahora. A
mis PROFESORES me han impartido sus
conocimientos, especialmente al Ing. Xavier
Loaiza, Ing. Victor Pazmiño, Eco. Antonio Cires
Ing. Abel Alarcón; quienes nos ayudaron en todo
momento, a mis compañeros de tesis porque en
esta armonía grupal lo hemos logrado y
finalmente un eterno agradecimiento a esta
prestigiosa UNIVERSIDAD la cual nos prepara
para un futuro competitivo.
Gladys Marlene Jurado Campoverde
IV
DEDICATORIA
Dedico este trabajo a Jehová mi Dios por estar
siempre de parte mía en todo momento, a mis
padres, a mis abuelitos, a mi hermana, a mis tíos y
tías, porque siempre han creído en mí y me han
brindado en todo tiempo su apoyo y amor.
Este gran logro va por todos ustedes !!!
William Enrique Moreno Herbas
V
DEDICATORIA
Dedico este trabajo especialmente a Dios por
estar siempre a mi lado en todo momento; a mi
amado esposo quien me ha dado todo su amor,
respaldo y apoyo; a mis padres, a mis hijos, a mi
suegra, a mis hermanos que siempre han
depositado toda su confianza en mí y por último a
mis amigos que me han brindado en todo este
tiempo su valiosa amistad.
Gladys Marlene Jurado Campoverde
VI
TRIBUNAL DE GRADUACIÓN
Presidente del Tribunal Primer Vocal Segundo Vocal Secretario
VII
DECLARACIÓN EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente a los suscritos,
perteneciendo a la Universidad de Guayaquil los derechos que generen la
aplicación de la misma”
(Reglamento de Graduación de la Carrera de Ingeniería en sistemas
Computacionales, Art. 26)
Gladys Marlene Jurado Campoverde William Enrique Moreno Herbas
VIII
ÍNDICE GENERAL
Pág.
AGRADECIMIENTO III
DEDICATORIA IV
TRIBUNAL DE GRADUACIÓN VI
DECLARACIÓN EXPRESA VII
ÍNDICE GENERAL VIII
ÍNDICE DE FIGURAS XIII
CAPÍTULO 1
MANUAL TECNICO DEL SISTEMA
1.1 Base de Datos 1
1.1.1 Creación de Estructuras 1
con_balance_general 1
con_balance_general_cons 2
con_balance_general_cons_his 2
con_balance_general_his 3
con_balance_general_plt 3
con_balance_inicial_plt 3
con_balancei_temp 4
con_cab_asiento 4
IX
con_det_asiento 5
con_estado_periodo 5
con_estadopyg 6
con_estadopyg_cons 6
con_estadopyg_cons_his 7
con_estadopyg_his 7
con_estadopyg_mes 7
con_estadopyg_mes_his 8
con_estadopyg_plt 8
con_mayor_con_his 8
con_mayor_his 9
con_mayor_rpt 9
con_mayor_rpt_cons 10
con_movimientos_gen 10
con_periodo_contable 11
con_periodo_mensua 11
con_plan_cuentas 11
con_procesos 12
con_tipo_doc 12
1.1.2 Creación de Procedimientos. 13
sp_ingresa_permes 13
sp_ingresa_peranual 21
sp_ingresa_plancta 27
sp_modifica_plancta 29
sp_ingresa_cab_asiento 30
sp_ingresa_det_asiento 33
sp_mayorizacion 37
sp_estadopyg_proc_cons 45
sp_bgeneral_gen_cons 56
X
1.2 Configuración del Sitio 62
con_tipo_doc.htm 63
con_modifica_tipo.php 65
con_plan_cuentas.php 70
con_modifica_plan_cuentas.php 72
con_periodo_mensual.php 74
con_activa_pmes.php 77
con_cambio_pmes.php 80
con_cierre_pmes.php 83
con_ingreso_panual.php 86
con_asiento.php 88
con_detalle_diario.php 95
con_detalle_mayor.php 99
con_detalle_sumasysaldos.php 103
con_proceso_mayoriza.php 107
con_proceso_pyg.php 110
Conexsql.php 113
Conexsqli.php 113
Activaperanual.php 114
Acivapermes.php 115
Cambiapermes.php 116
Cambioperanual.php 117
con_ver_detalle_diario.php 118
con_ver_detalle_diario_csv.php 121
Consulta-balance-general-cons.php 123
exporta-diario-exel.php 133
exporta-mayor-exel.php 141
ProcesoMayoriza.php 148
graba-tipo.php 149
asiento.js 150
XI
det-balance.js 153
det-pyg.js 162
diario.js 162
periodos-mes.js 168
periodos.js 178
plan_cuenta.js 186
procesos.js 194
tipo-doc.js 197
tipo-docm.js 199
Util.js 200
carga.js 202
CAPÍTULO 2
MANUAL DE USUARIO DEL SISTEMA
2.1 Ingreso al Módulo Contable 203
2.2 Mantenimiento 205
2.2.1 Documentos 205
Crea Documentos 205
Modifica Documento 207
2.2.2 Plan de Cuentas 209
Ingreso Plan de Cuentas 209
Modificar Plan de Cuentas 210
2.2.3 Periodo Contable 211
Ingreso Periodo Contable 211
Activar Periodo Contable 212
Cambio de Estado Contable 213
Cierre Periodo Contable 215
2.2.4 Periodo Mensual 216
XII
Ingreso Periodo Mensual 216
Activar Periodo Mensual 218
Cambio Estado Periodo Mensual 220
Cierre Periodo Mensual 221
2.3 Ciclo Contable 223
Asientos de Diario 223
2.4 Reportes 229
2.4.1 Libros 229
Libro Diario General 229
Comprobante de Diario 234
Libro Mayor 235
2.4.2 Estados Financieros 238
Balance Comprobación Sumas y saldos 238
Balance General 240
Estado de Pérdidas y Ganancias Acumulado 242
Estado de Pérdidas y Ganancias Mensual 243
Balance de Situación Inicial 246
Balance Comprobación Sumas y saldos Consolidado 246
Estado de Pérdidas y Ganancias Consolidado 248
Balance General Consolidado 250
2.5 Procesos Contables 251
Mayorización 251
Pérdidas y Ganancias Mensual 252
Pérdidas y Ganancias Acumulado 253
Balance General 254
GLOSARIO DE TERMINOS 255
BIBLIOGRAFÌA 257
XIII
INDICE DE FIGURAS
Pág.
FIGURA 1 Ingreso al Módulo Contable 203
FIGURA 2 Pantalla inicial Modulo Contable 204
FIGURA 3 Menu del Sistema 205
FIGURA 4 Crea Documento 206
FIGURA 5 ALERTA 206
FIGURA 6 Modifica Documento 207
FIGURA 7 Modifica Documento 208
FIGURA 8 Plan de Cuentas 210
FIGURA 9 Plan de Cuentas 210
FIGURA 10 Ingreso Periodo Contable 211
FIGURA 11 Activar Periodo Contable 212
FIGURA 12 Activar Periodo Contable 213
FIGURA 13 Activar Periodo Contable 213
FIGURA 14 Cambio de Estado Contable 214
FIGURA 15 Cambio de Estado Contable 215
FIGURA 16 Cambio de Estado Contable 215
FIGURA 17 Ingreso Periodo Mensual 216
FIGURA 18 Ingreso Periodo Mensual 217
FIGURA 19 Ingreso Periodo Mensual 217
FIGURA 20 Ingreso Periodo Mensual 218
FIGURA 21 Ingreso Periodo Mensual 218
XIV
FIGURA 22 Activar Periodo Mensual 219
FIGURA 23 Cambio Estado Periodo Mensual 220
FIGURA 24 Cierre Periodo Mensual 221
FIGURA 25 Cierre Periodo Mensual 222
FIGURA 26 Cierre Periodo Mensual 222
FIGURA 27 Asientos de Diario 223
FIGURA 28 Asientos de Diario 224
FIGURA 29 Asientos de Diario 224
FIGURA 30 Asientos de Diario 225
FIGURA 31 Asientos de Diario 226
FIGURA 32 Asientos de Diario 226
FIGURA 33 Asientos de Diario 227
FIGURA 34 Asientos de Diario 228
FIGURA 35 Asientos de Diario 228
FIGURA 36 Libro Diario General 229
FIGURA 37 Libro Diario General 230
FIGURA 38 Libro Diario General 230
FIGURA 39 Libro Diario General 231
FIGURA 40 Libro Diario General 231
FIGURA 41 Libro Diario General 232
FIGURA 42 Libro Diario General 232
FIGURA 43 Libro Diario General 233
FIGURA 44 Libro Diario General 233
FIGURA 45 Libro Diario General 234
FIGURA 46 Libro Mayor 235
FIGURA 47 Libro Mayor 236
FIGURA 48 Libro Mayor 237
FIGURA 49 Balance Comprobación Sumas y saldos 238
FIGURA 50 Balance Comprobación Sumas y saldos 239
FIGURA 51 Balance Comprobación Sumas y saldos 240
XV
FIGURA 52 Balance Comprobación Sumas y saldos 241
FIGURA 53 Estado de Pérdidas y Ganancias Acumulado 242
FIGURA 54 Estado de Pérdidas y Ganancias Acumulado 243
FIGURA 55 Estado de Pérdidas y Ganancias Mensual 244
FIGURA 56 Estado de Pérdidas y Ganancias Mensual 245
FIGURA 57 Balance Comprobación Sumas y saldos Consolidado 246
FIGURA 58 Balance Comprobación Sumas y saldos Consolidado 247
FIGURA 59 Estado de Pérdidas y Ganancias Consolidado 248
FIGURA 60 Estado de Pérdidas y Ganancias Consolidado 249
FIGURA 61 Balance General Consolidado 250
FIGURA 62 Mayorización 251
FIGURA 63 Pérdidas y Ganancias Mensual 252
FIGURA 64 Proceso de Estado de Pérdidas y Ganancias Acumulado 253
FIGURA 65 Balance General 254
XVI
CAPÍTULO 1
1. MANUAL TECNICO DEL SISTEMA
1.2 Base de Datos
La Base de Datos esta creada en Mysql versión 5.0.45. Se optó por el
uso de la misma ya que es de tipo Open Source, como todo el resto del
proyecto.
1.1.1 Creación de Estructuras
/*Table structure for table `con_balance_general` */ CREATE TABLE `con_balance_general` ( `cod_balance_general` int(11) NOT NULL auto_increment, `cod_bg_plt` int(11) NOT NULL, `clasificacion` varchar(6) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `codigo_cuenta` varchar(15) default NULL, `valor` decimal(10,2) default NULL, `estado` char(1) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `cod_sucursal` int(11) NOT NULL, `fecha_gen` datetime NOT NULL,
2
PRIMARY KEY (`cod_balance_general`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_balance_general_cons` */ CREATE TABLE `con_balance_general_cons` ( `cod_balance_general` int(11) NOT NULL auto_increment, `cod_bg_plt` int(11) NOT NULL, `clasificacion` varchar(6) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `codigo_cuenta` varchar(15) default NULL, `valor` decimal(10,2) default NULL, `estado` char(1) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_gen` datetime NOT NULL, PRIMARY KEY (`cod_balance_general`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_balance_general_cons_his` */ CREATE TABLE `con_balance_general_cons_his` ( `cod_balance_general` int(11) NOT NULL auto_increment, `cod_bg_plt` int(11) NOT NULL, `clasificacion` varchar(6) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `codigo_cuenta` varchar(15) default NULL, `valor` decimal(10,2) default NULL, `estado` char(1) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_gen` datetime NOT NULL, PRIMARY KEY (`cod_balance_general`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
3
/*Table structure for table `con_balance_general_his` */ CREATE TABLE `con_balance_general_his` ( `cod_balance_general` int(11) NOT NULL auto_increment, `cod_bg_plt` int(11) NOT NULL, `clasificacion` varchar(6) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `codigo_cuenta` varchar(15) default NULL, `valor` decimal(10,2) default NULL, `estado` char(1) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `cod_sucursal` int(11) NOT NULL, `fecha_gen` datetime NOT NULL, PRIMARY KEY (`cod_balance_general`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_balance_general_plt` */ CREATE TABLE `con_balance_general_plt` ( `cod_bg_plt` int(11) NOT NULL auto_increment, `clasificacion` varchar(6) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `codigo_cuenta` varchar(15) default NULL, `estado` char(1) NOT NULL, `fecha_gen` datetime NOT NULL, PRIMARY KEY (`cod_bg_plt`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_balance_inicial_plt` */ CREATE TABLE `con_balance_inicial_plt` ( `cod_bg_plt` int(11) NOT NULL auto_increment, `clasificacion` varchar(6) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `codigo_cuenta` varchar(15) default NULL, `estado` char(1) NOT NULL, `fecha_gen` datetime NOT NULL, PRIMARY KEY (`cod_bg_plt`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
4
/*Table structure for table `con_balancei_temp` */ CREATE TABLE `con_balancei_temp` ( `cod_bg_plt` int(11) NOT NULL auto_increment, `clasificacion` varchar(6) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `codigo_cuenta` varchar(15) default NULL, `valor` decimal(10,2) default NULL, `estado` char(1) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `cod_sucursal` int(11) NOT NULL, `fecha_gen` datetime NOT NULL, PRIMARY KEY (`cod_bg_plt`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_cab_asiento` */ CREATE TABLE `con_cab_asiento` ( `cod_cab_asiento` int(11) NOT NULL auto_increment, `cod_sucursal` int(11) default NULL, `cod_modulo_erp` tinyint(4) default NULL, `cod_tipo_doc` tinyint(4) default NULL, `num_asiento` int(11) default NULL, `num_formulario` int(11) default NULL, `fecha` datetime default NULL, `valor_total` decimal(10,2) default NULL, `concepto` varchar(500) collate utf8_unicode_ci default NULL, `cuadrado` varchar(1) collate utf8_unicode_ci default NULL, `fec_crea` datetime default NULL, `user_crea` varchar(15) collate utf8_unicode_ci default NULL, `fec_mod` datetime default NULL, `user_mod` varchar(15) collate utf8_unicode_ci default NULL, `estado` varchar(1) collate utf8_unicode_ci default NULL, `periodoa` varchar(4) collate utf8_unicode_ci default NULL, `periodom` int(11) default NULL, `mayoriza` char(1) collate utf8_unicode_ci NOT NULL default 'S', PRIMARY KEY (`cod_cab_asiento`), KEY `fk_con_cab_asiento_gen_modulo_erp` (`cod_modulo_erp`), KEY `fk_con_cab_asiento_con_tipo_doc` (`cod_tipo_doc`), KEY `fk_con_cab_asiento_sucursal` (`cod_sucursal`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
5
/*Table structure for table `con_det_asiento` */ CREATE TABLE `con_det_asiento` ( `cod_det_asiento` int(11) NOT NULL auto_increment, `cod_cab_asiento` int(11) NOT NULL, `cod_plan_cuentas` int(11) default NULL, `movimiento` varchar(1) collate utf8_unicode_ci default NULL, `cod_modulo_erp` tinyint(4) default NULL, `valor_det` decimal(10,2) NOT NULL, `observacion` varchar(2555) collate utf8_unicode_ci default NULL, `indicador_pto` varchar(1) collate utf8_unicode_ci default NULL, `modulo` varchar(45) collate utf8_unicode_ci default NULL, `estado` varchar(1) collate utf8_unicode_ci default NULL, `periodoa` varchar(4) collate utf8_unicode_ci default NULL, `periodom` int(11) default NULL, `cod_sucursal` int(11) NOT NULL, `fecha_crea` date NOT NULL, `mayoriza` char(1) collate utf8_unicode_ci NOT NULL default 'S', PRIMARY KEY (`cod_det_asiento`), KEY `fk_CON_DET_ASIENTO_MODULO_ERP` (`cod_modulo_erp`), KEY `fk_con_det_asiento_con_plan_cuentas` (`cod_plan_cuentas`), KEY `FK_con_det_asiento` (`cod_cab_asiento`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*Table structure for table `con_estado_periodo` */ CREATE TABLE `con_estado_periodo` ( `cod_est_prd` tinyint(4) NOT NULL auto_increment, `codigo_estado` varchar(1) character set utf8 collate utf8_romanian_ci default NULL, `descripcion` varchar(50) collate utf8_unicode_ci default NULL, `fech_crea` datetime default NULL, `user_crea` varchar(15) character set utf8 collate utf8_romanian_ci default NULL, `fech_mod` datetime default NULL, `user_mod` varchar(15) character set utf8 collate utf8_romanian_ci default NULL, `estado` varchar(1) character set utf8 collate utf8_romanian_ci default NULL, PRIMARY KEY (`cod_est_prd`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
6
/*Table structure for table `con_estadopyg` */ CREATE TABLE `con_estadopyg` ( `cod_epg` int(11) NOT NULL auto_increment, `cod_epg_plt` int(11) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `valor` decimal(10,2) NOT NULL, `codigo_cuenta` varchar(15) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_gen` datetime default NULL, `cod_sucursal` int(11) NOT NULL, `grupo` varchar(5) default NULL, PRIMARY KEY (`cod_epg`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_estadopyg_cons` */ CREATE TABLE `con_estadopyg_cons` ( `cod_epg` int(11) NOT NULL auto_increment, `cod_epg_plt` int(11) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `valor` decimal(10,2) NOT NULL, `codigo_cuenta` varchar(15) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_gen` datetime default NULL, `grupo` varchar(5) default NULL, PRIMARY KEY (`cod_epg`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
7
/*Table structure for table `con_estadopyg_cons_his` */ CREATE TABLE `con_estadopyg_cons_his` ( `cod_epg` int(11) NOT NULL auto_increment, `cod_epg_plt` int(11) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `valor` decimal(10,2) NOT NULL, `codigo_cuenta` varchar(15) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_gen` datetime default NULL, `grupo` varchar(5) default NULL, PRIMARY KEY (`cod_epg`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_estadopyg_his` */ CREATE TABLE `con_estadopyg_his` ( `cod_epg` int(11) NOT NULL auto_increment, `cod_epg_plt` int(11) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `valor` decimal(10,2) NOT NULL, `codigo_cuenta` varchar(15) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_gen` datetime default NULL, `cod_sucursal` int(11) NOT NULL, `grupo` varchar(5) default NULL, PRIMARY KEY (`cod_epg`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_estadopyg_mes` */ CREATE TABLE `con_estadopyg_mes` ( `cod_epg` int(11) NOT NULL auto_increment, `cod_epg_plt` int(11) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `valor` decimal(10,2) NOT NULL, `codigo_cuenta` varchar(15) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_gen` datetime default NULL, `cod_sucursal` int(11) NOT NULL,
8
`grupo` varchar(5) default NULL, PRIMARY KEY (`cod_epg`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_estadopyg_mes_his` */ CREATE TABLE `con_estadopyg_mes_his` ( `cod_epg` int(11) NOT NULL auto_increment, `cod_epg_plt` int(11) NOT NULL, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `valor` decimal(10,2) NOT NULL, `codigo_cuenta` varchar(15) NOT NULL, `periodoa` char(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_gen` datetime default NULL, `cod_sucursal` int(11) NOT NULL, `grupo` varchar(5) default NULL, PRIMARY KEY (`cod_epg`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_estadopyg_plt` */ CREATE TABLE `con_estadopyg_plt` ( `cod_epg_plt` int(11) NOT NULL auto_increment, `descripcion` varchar(60) NOT NULL, `clase` char(1) NOT NULL, `codigo_cuenta` varchar(15) default NULL, `estado` char(1) NOT NULL, `fecha_gen` datetime NOT NULL, `grupo` varchar(5) default NULL, PRIMARY KEY (`cod_epg_plt`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_mayor_cons_his` */ CREATE TABLE `con_mayor_cons_his` ( `cod_mayor` int(11) NOT NULL auto_increment, `cod_plan_cuentas` int(11) NOT NULL, `cuenta_fisica` varchar(15) NOT NULL, `nombre_cuenta` varchar(60) NOT NULL default '', `debe_mes` decimal(10,2) NOT NULL, `haber_mes` decimal(10,2) NOT NULL, `debe_ant` decimal(10,2) NOT NULL, `haber_ant` decimal(10,2) NOT NULL,
9
`debe_actual` decimal(10,2) NOT NULL, `haber_actual` decimal(10,2) NOT NULL, `cod_padre_cuentas` int(11) NOT NULL, `padre_nmn` varchar(10) default NULL, `periodoa` varchar(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_genera` datetime NOT NULL, `user_gen` varchar(15) NOT NULL, PRIMARY KEY (`cod_mayor`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_mayor_his` */ CREATE TABLE `con_mayor_his` ( `cod_mayor` int(11) NOT NULL auto_increment, `cod_sucursal` int(11) NOT NULL, `cod_plan_cuentas` int(11) NOT NULL, `cuenta_fisica` varchar(15) NOT NULL, `nombre_cuenta` varchar(60) NOT NULL default '', `debe_mes` decimal(10,2) NOT NULL, `haber_mes` decimal(10,2) NOT NULL, `debe_ant` decimal(10,2) NOT NULL, `haber_ant` decimal(10,2) NOT NULL, `debe_actual` decimal(10,2) NOT NULL, `haber_actual` decimal(10,2) NOT NULL, `cod_padre_cuentas` int(11) NOT NULL, `padre_nmn` varchar(10) default NULL, `periodoa` varchar(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_genera` datetime NOT NULL, `user_gen` varchar(15) NOT NULL, PRIMARY KEY (`cod_mayor`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_mayor_rpt` */ CREATE TABLE `con_mayor_rpt` ( `cod_mayor` int(11) NOT NULL auto_increment, `cod_sucursal` int(11) NOT NULL, `cod_plan_cuentas` int(11) NOT NULL, `cuenta_fisica` varchar(15) NOT NULL, `nombre_cuenta` varchar(60) NOT NULL default '', `debe_mes` decimal(10,2) NOT NULL, `haber_mes` decimal(10,2) NOT NULL, `debe_ant` decimal(10,2) NOT NULL, `haber_ant` decimal(10,2) NOT NULL,
10
`debe_actual` decimal(10,2) NOT NULL, `haber_actual` decimal(10,2) NOT NULL, `cod_padre_cuentas` int(11) NOT NULL, `padre_nmn` varchar(10) default NULL, `periodoa` varchar(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_genera` datetime NOT NULL, `user_gen` varchar(15) NOT NULL, PRIMARY KEY (`cod_mayor`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_mayor_rpt_cons` */ CREATE TABLE `con_mayor_rpt_cons` ( `cod_mayor` int(11) NOT NULL auto_increment, `cod_plan_cuentas` int(11) NOT NULL, `cuenta_fisica` varchar(15) NOT NULL, `nombre_cuenta` varchar(60) NOT NULL default '', `debe_mes` decimal(10,2) NOT NULL, `haber_mes` decimal(10,2) NOT NULL, `debe_ant` decimal(10,2) NOT NULL, `haber_ant` decimal(10,2) NOT NULL, `debe_actual` decimal(10,2) NOT NULL, `haber_actual` decimal(10,2) NOT NULL, `cod_padre_cuentas` int(11) NOT NULL, `padre_nmn` varchar(10) default NULL, `periodoa` varchar(4) NOT NULL, `periodom` int(11) NOT NULL, `fecha_genera` datetime NOT NULL, `user_gen` varchar(15) NOT NULL, PRIMARY KEY (`cod_mayor`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_movimientos_gen` */ CREATE TABLE `con_movimientos_gen` ( `cod_mov_gen` int(11) NOT NULL auto_increment, `cod_participante` int(11) default NULL, `cod_cab_asiento` int(11) NOT NULL, `cod_modulo_erp` tinyint(4) NOT NULL, `cod_plan_cuentas` int(11) NOT NULL, `cuenta_bancaria` varchar(20) default NULL, `signo` char(1) NOT NULL, `valor` decimal(10,2) NOT NULL, PRIMARY KEY (`cod_mov_gen`),
11
KEY `FK_con_movimientos_gen` (`cod_cab_asiento`), KEY `FK_con_movimientos_gen_mod_erp` (`cod_modulo_erp`), KEY `FK_con_movimientos_gen_plan_cuentas` (`cod_plan_cuentas`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_periodo_contable` */ CREATE TABLE `con_periodo_contable` ( `cod_prd_contable` int(4) NOT NULL auto_increment, `anio` varchar(4) collate utf8_unicode_ci NOT NULL, `referencia` varchar(50) collate utf8_unicode_ci default NULL, `fech_crea` datetime default NULL, `user_crea` varchar(20) collate utf8_unicode_ci default NULL, `fech_mod` datetime default NULL, `user_mod` varchar(20) collate utf8_unicode_ci default NULL, `cod_est_prd` char(1) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`cod_prd_contable`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*Table structure for table `con_periodo_mensual` */ CREATE TABLE `con_periodo_mensual` ( `cod_prd_mensual` smallint(6) NOT NULL auto_increment, `cod_prd_contable` int(4) default NULL, `num_mes` int(4) NOT NULL, `descripcion` varchar(50) collate utf8_unicode_ci default NULL, `fech_inicio` datetime default NULL, `fech_fin` datetime default NULL, `fech_crea` datetime default NULL, `user_crea` varchar(15) collate utf8_unicode_ci default NULL, `cod_est_prd` char(1) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`cod_prd_mensual`), KEY `fk_CON_PERIODO_MENSUAL_CON_PERIODO_CONTABLE` (`cod_prd_contable`), CONSTRAINT `fk_CON_PERIODO_MENSUAL_CON_PERIODO_CONTABLE` FOREIGN KEY (`cod_prd_contable`) REFERENCES `con_periodo_contable` (`cod_prd_contable`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*Table structure for table `con_plan_cuentas` */ CREATE TABLE `con_plan_cuentas` ( `cod_plan_cuentas` int(11) NOT NULL auto_increment,
12
`cod_padre_cuentas` int(11) default NULL, `nivel` tinyint(4) NOT NULL, `codigo_cuenta` varchar(15) collate utf8_unicode_ci NOT NULL, `nombre` varchar(60) collate utf8_unicode_ci default NULL, `descripcion` varchar(200) collate utf8_unicode_ci default NULL, `clase` varchar(1) collate utf8_unicode_ci NOT NULL, `afecta_pto` varchar(1) collate utf8_unicode_ci NOT NULL, `fech_crea` datetime default NULL, `user_crea` varchar(15) collate utf8_unicode_ci default NULL, `fech_mod` datetime default NULL, `user_mod` varchar(15) collate utf8_unicode_ci default NULL, `estado` varchar(1) collate utf8_unicode_ci NOT NULL default 'A', `nmn` varchar(10) collate utf8_unicode_ci default NULL, PRIMARY KEY (`cod_plan_cuentas`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*Table structure for table `con_procesos` */ CREATE TABLE `con_procesos` ( `cod_sucursal` int(11) NOT NULL, `cod_procesos` int(11) NOT NULL, `proceso` varchar(100) character set latin1 collate latin1_spanish_ci default NULL, `semaforo` smallint(6) default NULL, `periodom` int(11) NOT NULL, `periodoa` char(4) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*Table structure for table `con_tipo_doc` */ CREATE TABLE `con_tipo_doc` ( `cod_tipo_doc` tinyint(4) NOT NULL auto_increment, `siglas` varchar(2) collate utf8_unicode_ci NOT NULL, `descripcion` varchar(45) collate utf8_unicode_ci NOT NULL, `ind_transaccional` tinyint(1) default NULL, `ind_presupuesto` tinyint(1) default NULL, `fech_crea` datetime default NULL, `user_crea` varchar(15) collate utf8_unicode_ci default NULL, `fec_mod` datetime default NULL, `user_mod` varchar(15) collate utf8_unicode_ci default NULL, `estado` varchar(1) collate utf8_unicode_ci default NULL, PRIMARY KEY (`cod_tipo_doc`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
13
1.1.2 Creación de Procedimientos.
Los procedimientos almacenados contienen toda la lógica de negocio
del sistema contable, siendo un sistema altamente tranasaccional se
vio oportuno implementar la lógica de negocio en la base de datos
para mejorar el rendimiento en los procesos contables como en los
tiempos de respuesta desde y hacia el cliente, sean estos reportes o
confirmación de procesos contables.
sp_ingresa_permes
Este procedimiento realiza los distintos cambios de estados que puede tener el periodo mensual validando para cada caso los filtros necesarios para el cambio de estado de un periodo mensual. Entre ellos Ingreso, Activación, Pendiente, Verificación, Cierre.
DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_ingresa_permes`$$ CREATE PROCEDURE `sp_ingresa_permes`( IN iopcion CHAR(1), IN anioc VARCHAR(5), IN mes TINYINT, IN descrip VARCHAR(50), IN feini VARCHAR(10), IN fefin VARCHAR(10), IN iuser VARCHAR(15) ) BEGIN DECLARE codp INT; DECLARE codpm INT; DECLARE cproc INT; DECLARE contador INT DEFAULT 0; DECLARE cerror INT DEFAULT 0; DECLARE insert_error INTEGER DEFAULT 0; DECLARE Csuc INT; DECLARE Cnombre VARCHAR(50); DECLARE done INT DEFAULT 0;
14
DECLARE Cursuc CURSOR FOR SELECT cod_sucursal, nombre FROM gen_sucursal WHERE estado = "A"; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET insert_error=1; END; ##SET @codp = 0; SET @cerror = 0; Controlador:BEGIN IF (iopcion = "I") THEN SELECT cod_prd_contable INTO @codp FROM con_periodo_contable WHERE anio = anioc; ##AND cod_est_prd = "A"; IF (@codp IS NULL) THEN SET @cerror = 1; SELECT @cerror, "ERROR PERIODO ANUAL NO EXISTE"; LEAVE Controlador; END IF; SELECT 1 INTO @codpm FROM con_periodo_mensual WHERE cod_prd_contable = @codp AND num_mes = mes; IF (@codpm = 1) THEN SET @cerror = 2; SELECT @cerror, "ERROR PERIODO MENSUAL YA EXISTE"; LEAVE Controlador; END IF; START TRANSACTION; INSERT INTO con_periodo_mensual(cod_prd_contable, num_mes, descripcion, fech_inicio, fech_fin, fech_crea, user_crea, cod_est_prd) VALUES (@codp, mes,
15
descrip, feini, fefin, NOW(), iuser, "I"); IF insert_error THEN SET @cerror = 3; SELECT @cerror, "ERROR EN PERIODO MENSUAL"; ROLLBACK; LEAVE Controlador; END IF; SET done = 0; OPEN Cursuc; REPEAT FETCH cursuc INTO Csuc, Cnombre; IF NOT done THEN INSERT INTO con_procesos(cod_sucursal, cod_procesos, proceso, semaforo, periodom, periodoa) VALUES (Csuc, 1, "PROCESO MAYORIZACION", 0, mes, anioc), (Csuc, 2, "PROCESO PYG", 0, mes,anioc), (Csuc, 3, "APRUEBA PYG", 0, mes,anioc), (Csuc, 4, "MAYORIZACION AJUSTADA", 0, mes,anioc), (Csuc, 5, "PROCESO BALANCE GENERAL", 0, mes,anioc), (Csuc, 6, "APRUEBA BALANCE GENERAL", 0, mes,anioc); IF insert_error THEN SET @cerror = 4; SELECT @cerror, "ERROR EN SEMAFORO"; ROLLBACK; LEAVE Controlador; END IF; END IF; UNTIL done END REPEAT; CLOSE Cursuc; COMMIT;
16
ELSE IF (iopcion = "A") THEN START TRANSACTION; SELECT IFNULL(COUNT(*),0) INTO @contador FROM con_periodo_mensual WHERE cod_est_prd = "A"; IF (@contador > 0) THEN SET @cerror = 4; SELECT @cerror, "ERROR YA EXISTE OTRO PERIODO ACTIVO"; ROLLBACK; LEAVE Controlador; END IF; SELECT cod_prd_mensual INTO @codp FROM con_periodo_mensual WHERE num_mes = mes AND cod_est_prd = "I"; IF (@codp IS NULL) THEN SET @cerror = 5; SELECT @cerror, "ERROR PERIODO MENSUAL NO DISPONIBLE"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_periodo_mensual SET cod_est_prd = "A" WHERE cod_prd_mensual = @codp; IF insert_error THEN SET @cerror = 6; SELECT @cerror, "ERROR ALTA PERIODO MENSUAL"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; ELSE IF (iopcion = "C") THEN START TRANSACTION; SELECT cod_prd_contable INTO @codpa FROM con_periodo_contable WHERE anio = anioc;
17
SELECT cod_prd_mensual INTO @codp FROM con_periodo_mensual WHERE num_mes = mes AND cod_prd_contable = @codpa AND cod_est_prd = "V"; IF (@codp IS NULL) THEN SET @cerror = 7; SELECT @cerror, "ERROR PERIODO MENSUAL NO ESTA VERIFICADO"; ROLLBACK; LEAVE Controlador; END IF; SELECT IFNULL(COUNT(*),0) INTO @cproc FROM con_procesos WHERE cod_procesos = 6 AND periodom = mes AND periodoa = anioc AND semaforo = 0; IF (@cproc > 0) THEN SET @cerror = 8; SELECT @cerror, "ERROR EXISTEN SUCURSALES CON PROCESOS NO APROBADOS"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_periodo_mensual SET cod_est_prd = "C" WHERE cod_prd_mensual = @codp; IF insert_error THEN SET @cerror = 9; SELECT @cerror, "ERROR CERRAR PERIODO MENSUAL"; ROLLBACK; LEAVE Controlador; END IF; CALL sp_migra_mayor(anioc, mes, iuser); CALL sp_migra_pyg(anioc, mes, iuser); CALL sp_migra_pyg_mes(anioc, mes, iuser); CALL sp_migra_bg(anioc, mes, iuser); CALL sp_migra_mayor_cons(anioc, mes, iuser); CALL sp_migra_pyg_cons(anioc, mes, iuser);
18
CALL sp_migra_bg_cons(anioc, mes, iuser); IF insert_error THEN SET @cerror = 10; SELECT @cerror, "ERROR CERRAR PERIODO MENSUAL MIGRA"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; ELSE IF (iopcion = "V") THEN START TRANSACTION; SELECT cod_prd_contable INTO @codpa FROM con_periodo_contable WHERE anio = anioc; SELECT cod_prd_mensual INTO @codp FROM con_periodo_mensual WHERE num_mes = mes AND cod_prd_contable = @codpa AND cod_est_prd IN ("A", "P"); IF (@codp IS NULL) THEN SET @cerror = 11; SELECT @cerror, "ERROR PERIODO MENSUAL NO ESTA ACTIVO O PENDIENTE"; ROLLBACK; LEAVE Controlador; END IF; SELECT IFNULL(COUNT(*),0) INTO @cproc FROM con_procesos WHERE cod_procesos = 6 AND periodom = mes AND periodoa = anioc AND semaforo = 0; IF (@cproc > 0) THEN SET @cerror = 12; SELECT @cerror, "ERROR EXISTEN SUCURSALES CON PROCESOS NO APROBADOS"; ROLLBACK; LEAVE Controlador; END IF;
19
UPDATE con_periodo_mensual SET cod_est_prd = "V" WHERE cod_prd_mensual = @codp; IF insert_error THEN SET @cerror = 13; SELECT @cerror, "ERROR VERIFICAR PERIODO MENSUAL"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; ELSE IF (iopcion = "P") THEN START TRANSACTION; SELECT cod_prd_contable INTO @codpa FROM con_periodo_contable WHERE anio = anioc; SELECT cod_prd_mensual INTO @codp FROM con_periodo_mensual WHERE num_mes = mes AND cod_prd_contable = @codpa AND cod_est_prd IN ("A", "P"); IF (@codp IS NULL) THEN SET @cerror = 14; SELECT @cerror, "ERROR PERIODO MENSUAL NO ESTA ACTIVO O PENDIENTE"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_periodo_mensual SET cod_est_prd = "P" WHERE cod_prd_mensual = @codp;
20
IF insert_error THEN SET @cerror = 15; SELECT @cerror, "ERROR POSTERGAR PERIODO MENSUAL"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; END IF; END IF; END IF; END IF; END IF; SELECT @cerror; END; ##Controlador:BEGIN END$$ DELIMITER ;
21
sp_ingresa_peranual
Este procedimiento realiza los distintos cambios de estados que puede tener el periodo contable o anual validando para cada caso los filtros necesarios para el cambio de estado de un periodo contable en conjunto del periodo mensual. Entre ellos Ingreso, Activación, Pendiente, Verificación, Cierre.
DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_ingresa_peranual`$$ CREATE PROCEDURE `sp_ingresa_peranual`( IN iopcion CHAR(1), IN ianioc VARCHAR(5), IN iref VARCHAR(50), IN iuser VARCHAR(15) ) BEGIN DECLARE codp INT; DECLARE contador INT DEFAULT 0; DECLARE cerror INT DEFAULT 0; DECLARE insert_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET insert_error=1; END; SET @cerror = 0; Controlador:BEGIN IF (iopcion = "I") THEN START TRANSACTION; SELECT cod_prd_contable INTO @codp FROM con_periodo_contable WHERE anio = ianioc; IF (@codp IS NULL || @codp = 0) THEN INSERT INTO con_periodo_contable(anio, referencia, fech_crea, user_crea, cod_est_prd) VALUES (ianioc, iref, NOW(), iuser, "I");
22
IF insert_error THEN SET @cerror = 1; SELECT @cerror, "ERROR EN PERIODO ANUAL"; ROLLBACK; LEAVE Controlador; END IF; ELSE SET @cerror = 2; SELECT @cerror, "ERROR PERIODO ANUAL YA EXISTE"; LEAVE Controlador; END IF; COMMIT; ELSE IF (iopcion = "A") THEN START TRANSACTION; SELECT IFNULL(COUNT(*),0) INTO @contador FROM con_periodo_contable WHERE cod_est_prd = "A"; IF (@contador > 0) THEN SET @cerror = 3; SELECT @cerror, "ERROR YA EXISTE OTRO PERIODO ACTIVO"; ROLLBACK; LEAVE Controlador; END IF; SELECT cod_prd_contable INTO @codp FROM con_periodo_contable WHERE anio = ianioc AND cod_est_prd = "I"; IF (@codp IS NULL) THEN SET @cerror = 4; SELECT @cerror, "ERROR PERIODO ANUAL NO DISPONIBLE"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_periodo_contable SET cod_est_prd = "A" WHERE cod_prd_contable = @codp;
23
IF insert_error THEN SET @cerror = 5; SELECT @cerror, "ERROR ALTA PERIODO"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; ELSE IF (iopcion = "C") THEN START TRANSACTION; SELECT cod_prd_contable INTO @codp FROM con_periodo_contable WHERE anio = ianioc AND cod_est_prd = "V"; IF (@codp IS NULL) THEN SET @cerror = 6; SELECT @cerror, "ERROR PERIODO ANUAL NO ESTA VERIFICADO"; ROLLBACK; LEAVE Controlador; END IF; SELECT IFNULL(COUNT(*),0) INTO @contador FROM con_periodo_mensual WHERE cod_prd_contable = @codp AND cod_est_prd <> "C"; IF (@contador > 0) THEN SET @cerror = 7; SELECT @cerror, "ERROR EXISTE PERIODOS MENSUALES PENDIENTES DE CIERRE"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_periodo_contable SET cod_est_prd = "C", user_mod = iuser, fech_mod = NOW() WHERE cod_prd_contable = @codp; IF insert_error THEN SET @cerror = 8; SELECT @cerror, "ERROR CERRAR PERIODO";
24
ROLLBACK; LEAVE Controlador; END IF; COMMIT; ELSE IF (iopcion = "V") THEN START TRANSACTION; SELECT cod_prd_contable INTO @codp FROM con_periodo_contable WHERE anio = ianioc AND cod_est_prd IN ("A", "P"); IF (@codp IS NULL) THEN SET @cerror = 9; SELECT @cerror, "ERROR PERIODO ANUAL NO ESTA ACTIVO O PENDIENTE"; ROLLBACK; LEAVE Controlador; END IF; SELECT IFNULL(COUNT(*),0) INTO @contador FROM con_periodo_mensual WHERE cod_prd_contable = @codp AND cod_est_prd <> "C"; IF (@contador > 0) THEN SET @cerror = 10; SELECT @cerror, "ERROR EXISTE PERIODOS MENSUALES PENDIENTES DE CIERRE"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_periodo_contable SET cod_est_prd = "V", user_mod = iuser, fech_mod = NOW() WHERE cod_prd_contable = @codp; IF insert_error THEN SET @cerror = 11; SELECT @cerror, "ERROR VERIFICAR PERIODO ANUAL"; ROLLBACK; LEAVE Controlador; END IF;
25
COMMIT; ELSE IF (iopcion = "P") THEN START TRANSACTION; SELECT cod_prd_contable INTO @codp FROM con_periodo_contable WHERE anio = ianioc AND cod_est_prd IN ("A", "P"); IF (@codp IS NULL) THEN SET @cerror = 12; SELECT @cerror, "ERROR PERIODO ANUAL NO ESTA ACTIVO O PENDIENTE"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_periodo_contable SET cod_est_prd = "P", user_mod = iuser, fech_mod = NOW() WHERE cod_prd_contable = @codp; IF insert_error THEN SET @cerror = 13; SELECT @cerror, "ERROR POSTERGAR PERIODO ANUAL"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; END IF; END IF; END IF; END IF; END IF; SELECT @cerror;
26
END; ##Controlador:BEGIN END$$ DELIMITER ;
27
sp_ingresa_plancta
Este procedimiento ingresa a la estructura del plan de cuentas todas y cada una de las cuentas requeridas por el usuario, calculando automáticamente el nuevo código contable que va a tener dicha cuenta ingresada, como también el nivel al que pertenece. DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_ingresa_plancta`$$ CREATE PROCEDURE `sp_ingresa_plancta`( IN cta_padre VARCHAR(15), IN clase CHAR(1), IN nombre VARCHAR(60), IN presupuesto CHAR(1), IN descripcion VARCHAR(200), IN nemonico VARCHAR(10), IN iuser VARCHAR(15) ) BEGIN DECLARE id_padre INT; DECLARE nhijos INT; DECLARE codcta VARCHAR(15); DECLARE panio VARCHAR(4); DECLARE nivel INT; DECLARE insert_error INTEGER DEFAULT 0; DECLARE codp INT; DECLARE cerror INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET insert_error=1; END; SET @cerror = 0; Controlador:BEGIN START TRANSACTION; SELECT cod_plan_cuentas INTO @id_padre FROM con_plan_cuentas WHERE TRIM(codigo_cuenta) = cta_padre; SELECT (COUNT(*) + 1) INTO @nhijos FROM con_plan_cuentas WHERE cod_padre_cuentas = @id_padre; SELECT (CONCAT(cta_padre, ".", @nhijos)) INTO @codcta;
28
SELECT (ROUND(LENGTH(@codcta)/2)) INTO @nivel; ##SELECT @id_padre, @nhijos, @nivel, @codcta; INSERT INTO con_plan_cuentas (cod_padre_cuentas, nivel, codigo_cuenta, nombre, descripcion, clase, afecta_pto, nmn, fech_crea, user_crea, fech_mod, user_mod, estado) VALUES (@id_padre, @nivel, @codcta, nombre, descripcion, clase, presupuesto, nemonico, NOW(), iuser, NOW(), iuser, "A"); IF insert_error THEN SET @cerror = 1; SELECT @cerror, "ERROR EN CREACION DE CUENTA"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; SELECT @cerror; END; ##Controlador:BEGIN END$$ DELIMITER ;
29
sp_modifica_plancta
Este procedimiento modifica los datos de la cuenta contable requerida por el usuario, permaneciendo inalterable su código contable. DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_modifica_plancta`$$ CREATE PROCEDURE `sp_modifica_plancta`( IN i_codigo_cuenta VARCHAR(15), IN i_nombre VARCHAR(60), IN i_clase CHAR(1), IN i_nemonico VARCHAR(10), IN i_descripcion VARCHAR(200), IN i_presupuesto CHAR(1), IN i_iuser VARCHAR(15) ) BEGIN DECLARE insert_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET insert_error=1; END; SET @cerror = 0; Controlador:BEGIN START TRANSACTION; UPDATE con_plan_cuentas SET nombre=i_nombre, clase=i_clase, nmn=i_nemonico, descripcion=i_descripcion, afecta_pto=i_presupuesto, user_mod=i_iuser WHERE codigo_cuenta=i_codigo_cuenta; IF insert_error THEN SET @cerror = 1; SELECT @cerror, "ERROR EN ACTUALIZAR LA CUENTA"; ROLLBACK; LEAVE Controlador;
30
END IF; COMMIT; SELECT @cerror; END; ##Controlador:BEGIN END$$ DELIMITER ;
sp_ingresa_cab_asiento
Procedimiento que ingresa la cabecera del asiento contable, verificando el periodo activo para su ingreso exitoso y retornando el código de cabecera para la posterior inserción del detalle del asiento contable. DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_ingresa_cab_asiento`$$ CREATE PROCEDURE `sp_ingresa_cab_asiento`( IN isucursal INT, IN imodulo_erp TINYINT, IN itipo_doc TINYINT, IN ivtotal DECIMAL(10,2), IN iconcepto VARCHAR(50), IN iuser VARCHAR(15) ) BEGIN DECLARE numero INT; DECLARE num_form INT; DECLARE ccon INT; DECLARE panio VARCHAR(4); DECLARE pmes VARCHAR(4); DECLARE cerror INT DEFAULT 0; DECLARE insert_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET insert_error=1; END; SET @cerror = 0; Controlador:BEGIN
31
START TRANSACTION; SELECT anio INTO @panio FROM con_periodo_contable WHERE cod_est_prd = "A"; IF (@panio IS NULL) THEN SET @cerror = 1; SELECT @cerror, "ERROR PERIODO ANUAL NO ACTIVO"; LEAVE Controlador; END IF; SELECT cod_prd_contable INTO @ccon FROM con_periodo_contable WHERE cod_est_prd = "A"; IF (@ccon IS NULL) THEN SET @cerror = 1; SELECT @cerror, "ERROR PERIODO ANUAL NO ACTIVO"; LEAVE Controlador; END IF; SELECT num_mes INTO @pmes FROM con_periodo_mensual WHERE cod_prd_contable = @ccon AND cod_est_prd = "A"; IF (@pmes IS NULL) THEN SET @cerror = 2;
32
SELECT @cerror, "ERROR PERIODO MENSUAL NO ACTIVO"; LEAVE Controlador; END IF; SELECT IFNULL(MAX(num_formulario) + 1,1) INTO @num_form FROM con_cab_asiento WHERE cod_sucursal = isucursal ##cod_modulo_erp = imodulo_erp AND periodoa = @panio; SELECT IFNULL(MAX(num_asiento) + 1,1) INTO @numero FROM con_cab_asiento WHERE periodoa = @panio; #WHERE YEAR(fecha) = YEAR(CURDATE()); INSERT INTO con_cab_asiento(cod_sucursal, cod_modulo_erp, cod_tipo_doc, num_asiento, num_formulario, fecha, valor_total, concepto, cuadrado, fec_crea, user_crea, fec_mod, user_mod, periodoa, periodom, estado) VALUES( isucursal, imodulo_erp, itipo_doc, @numero, @num_form, NOW(), ivtotal, iconcepto, "N", CURDATE(), iuser, "", "", @panio, @pmes, "P"); IF insert_error THEN SET @cerror = 3; SELECT @cerror, "ERROR EN CABECERA ASIENTO"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; SELECT @cerror, LAST_INSERT_ID(); END; ##Controlador:BEGIN END$$ DELIMITER ;
33
sp_ingresa_det_asiento
Este procedimiento recibe el codigo de cada una de las cuentas contables que intervienen en el asiento y tambien el codigo de la cabecera del asiento validando el cuadre del respective asiento para poder dar de alta al asiento contable tanto su cabecera como su detalle para poder ser contemplado en los siguiente procesos contables. DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_ingresa_det_asiento`$$ CREATE PROCEDURE `sp_ingresa_det_asiento`( IN icodcab INT, IN icodcta VARCHAR(15), IN imov CHAR(1), IN icoderp TINYINT, IN ivaldet DECIMAL(10,4), IN ivtotal DECIMAL(10,2), IN iobserva VARCHAR(150), IN ipres CHAR(1), IN isucursal INT ) BEGIN DECLARE modulo_des VARCHAR(30); DECLARE codplan INTEGER; DECLARE totdebe DECIMAL(10,4); DECLARE tothaber DECIMAL(10,4); DECLARE cerror INT DEFAULT 0; DECLARE ccon INT; DECLARE panio VARCHAR(4); DECLARE pmes VARCHAR(4); DECLARE insert_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET insert_error=1; END; SET @cerror = 0; Controlador:BEGIN SELECT anio INTO @panio FROM con_periodo_contable WHERE cod_est_prd = "A";
34
IF (@panio IS NULL) THEN SET @cerror = 1; SELECT @cerror, "ERROR PERIODO ANUAL NO ACTIVO"; LEAVE Controlador; END IF; SELECT cod_prd_contable INTO @ccon FROM con_periodo_contable WHERE cod_est_prd = "A"; IF (@ccon IS NULL) THEN SET @cerror = 1; SELECT @cerror, "ERROR PERIODO ANUAL NO ACTIVO"; LEAVE Controlador; END IF; SELECT num_mes INTO @pmes FROM con_periodo_mensual WHERE cod_prd_contable = @ccon AND cod_est_prd = "A"; IF (@pmes IS NULL) THEN SET @cerror = 2; SELECT @cerror, "ERROR PERIODO MENSUAL NO ACTIVO"; LEAVE Controlador; END IF; SELECT descripcion INTO @modulo_des FROM gen_modulo_erp WHERE cod_modulo_erp = icoderp; IF (@modulo_des IS NULL) THEN SET @cerror = 3; SELECT @cerror, "ERROR MODULO NO DEFINIDO"; LEAVE Controlador; END IF; SELECT cod_plan_cuentas INTO @codplan FROM con_plan_cuentas WHERE codigo_cuenta = icodcta AND clase = "C"; IF (@codplan IS NULL) THEN SET @cerror = 4; SELECT @cerror, "ERROR CUENTA CONTABLE NO EXISTE"; LEAVE Controlador; END IF; START TRANSACTION; INSERT INTO con_det_asiento(cod_cab_asiento, cod_plan_cuentas,
35
movimiento, cod_modulo_erp, valor_det, observacion, indicador_pto, modulo, estado, periodoa, periodom, cod_sucursal, fecha_crea) VALUES( icodcab, @codplan, imov, icoderp, ivaldet, iobserva, ipres, @modulo_des, "P", @panio, @pmes, isucursal, CURDATE()); IF insert_error THEN SET @cerror = 5; SELECT @cerror, "ERROR EN DETALLE ASIENTO"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; SELECT IFNULL(SUM(valor_det),0) INTO @totdebe FROM con_det_asiento WHERE cod_cab_asiento = icodcab AND movimiento = "D"; SELECT IFNULL(SUM(valor_det),0) INTO @tothaber FROM con_det_asiento WHERE cod_cab_asiento = icodcab AND movimiento = "H"; IF ((@totdebe = @tothaber) && (ivtotal = @tothaber)) THEN START TRANSACTION; UPDATE con_cab_asiento SET cuadrado = "S", estado = "A" WHERE cod_cab_asiento = icodcab; IF insert_error THEN SET @cerror = 8; SELECT @cerror, "ERROR ACTUALIZACION CUADRE ASIENTO"; ROLLBACK; LEAVE Controlador;
36
END IF; UPDATE con_det_asiento SET estado = "A" WHERE cod_cab_asiento = icodcab; IF insert_error THEN SET @cerror = 9; SELECT @cerror, "ERROR ACTUALIZACION CUADRE ASIENTO DETALLE"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; END IF; SELECT @cerror; END; ##Controlador:BEGIN END$$ DELIMITER ;
37
sp_mayorizacion
Este procedimiento realiza el proceso de mayorizacion de las cuentas contables extraidas de la estructura del plan de cuentas que intervienen en el ejercicio dependiendo del periodo mensual y anual al que pertenece, sacando los saldos de todas las cuentas contables para los siguientes procesos contables y contemplando los saldos de los periodos anteriores. DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_mayorizacion`$$ CREATE PROCEDURE sp_mayorizacion( IN ianio CHAR(4), IN imes INT, IN isuc INT, IN iuser VARCHAR(15) ) BEGIN DECLARE d_me DECIMAL(10,2); DECLARE h_me DECIMAL(10,2); DECLARE d_an DECIMAL(10,2); DECLARE h_an DECIMAL(10,2); DECLARE d_ac DECIMAL(10,2); DECLARE h_ac DECIMAL(10,2); DECLARE Cplan INT; DECLARE Ccod_cta VARCHAR(15); DECLARE Cclase CHAR(1); DECLARE Cnombre VARCHAR(60); DECLARE Cnmn VARCHAR(10); DECLARE Cpadre INT; DECLARE panio VARCHAR(4); DECLARE cerror INT DEFAULT 0; DECLARE insert_error INTEGER DEFAULT 0; DECLARE ccon INT; DECLARE pmes VARCHAR(4); DECLARE mesa INT; DECLARE anioa INT; DECLARE codp INT; DECLARE done INT DEFAULT 0;
38
DECLARE Curplan CURSOR FOR SELECT cod_plan_cuentas, codigo_cuenta, clase, nombre, nmn, cod_padre_cuentas FROM con_plan_cuentas WHERE clase = "G" AND nivel >= 3; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET insert_error=1; END; SET @cerror = 0; Controlador:BEGIN SELECT cod_prd_contable INTO @ccon FROM con_periodo_contable WHERE anio = ianio AND cod_est_prd NOT IN("I", "C", "V"); IF (@ccon IS NULL) THEN SET @cerror = 1; SELECT @cerror, "ERROR ESTADO PERIODO ANUAL INACTIVO CERRADO O VERIFICADO"; LEAVE Controlador; END IF; SELECT num_mes INTO @pmes FROM con_periodo_mensual WHERE cod_prd_contable = @ccon AND num_mes = imes AND cod_est_prd NOT IN("I", "C", "V"); IF (@pmes IS NULL) THEN SET @cerror = 2; SELECT @cerror, "ERROR PERIODO MENSUAL INACTIVO CERRADO O VERIFICADO"; LEAVE Controlador; END IF; IF (imes = 1) THEN SET @mesa = 12; SET @anioa = ianio -1; ELSE SET @mesa = imes - 1; SET @anioa = ianio; END IF; START TRANSACTION; DELETE FROM con_mayor_rpt WHERE cod_sucursal = isuc AND periodoa = ianio AND periodom = imes;
39
IF insert_error THEN SET @cerror = 3; SELECT @cerror, "ERROR INICIANDO MAYORIZACION"; ROLLBACK; LEAVE Controlador; END IF; IF (imes > 1) THEN INSERT INTO con_mayor_rpt ( cod_sucursal, cod_plan_cuentas, cuenta_fisica, nombre_cuenta, debe_mes, haber_mes, debe_ant, haber_ant, cod_padre_cuentas, padre_nmn, periodoa, periodom, fecha_genera, user_gen ) SELECT isuc, A.cod_plan_cuentas, A.codigo_cuenta, A.nombre, IFNULL((SELECT SUM(valor_det) FROM con_det_asiento WHERE cod_plan_cuentas = A.cod_plan_cuentas AND estado = "A" AND movimiento = "D" AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc AND mayoriza IN ("S","I")), "0.00") AS DEBE, IFNULL((SELECT SUM(valor_det) FROM con_det_asiento WHERE cod_plan_cuentas = A.cod_plan_cuentas AND estado = "A" AND movimiento = "H" AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc
40
AND mayoriza IN ("S","I")), "0.00") AS HABER, IFNULL((SELECT debe_actual FROM con_mayor_his WHERE cod_plan_cuentas = A.cod_plan_cuentas AND periodoa = @anioa AND periodom = @mesa AND cod_sucursal = isuc), "0.00") AS debeA, IFNULL((SELECT haber_actual FROM con_mayor_his WHERE cod_plan_cuentas = A.cod_plan_cuentas AND periodoa = @anioa AND periodom = @mesa ##imes - 1 AND cod_sucursal = isuc), "0.00") AS debeA, A.cod_padre_cuentas, A.nmn, ianio, imes, NOW(), iuser FROM con_plan_cuentas AS A WHERE clase = "C"; IF insert_error THEN SET @cerror = 4; SELECT @cerror, "ERROR EN MAYORIZACION DE CUENTAS MENSUAL"; ROLLBACK; LEAVE Controlador; END IF; ELSE INSERT INTO con_mayor_rpt ( cod_sucursal, cod_plan_cuentas, cuenta_fisica, nombre_cuenta, debe_mes, haber_mes, debe_ant, haber_ant, cod_padre_cuentas, padre_nmn, periodoa, periodom, fecha_genera,
41
user_gen ) SELECT isuc, A.cod_plan_cuentas, A.codigo_cuenta, A.nombre, IFNULL((SELECT SUM(valor_det) FROM con_det_asiento WHERE cod_plan_cuentas = A.cod_plan_cuentas AND estado = "A" AND movimiento = "D" AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc AND mayoriza IN ("S","I")), "0.00") AS DEBE, IFNULL((SELECT SUM(valor_det) FROM con_det_asiento WHERE cod_plan_cuentas = A.cod_plan_cuentas AND estado = "A" AND movimiento = "H" AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc AND mayoriza IN ("S","I")), "0.00") AS HABER, "0.00", "0.00", A.cod_padre_cuentas, A.nmn, ianio, imes, NOW(), iuser FROM con_plan_cuentas AS A WHERE clase = "C"; IF insert_error THEN SET @cerror = 5; SELECT @cerror, "ERROR EN MAYORIZACION DE CUENTAS MENSUAL"; ROLLBACK; LEAVE Controlador; END IF; END IF; UPDATE con_mayor_rpt SET debe_actual = debe_mes + debe_ant,
42
haber_actual = haber_mes + haber_ant; IF insert_error THEN SET @cerror = 6; SELECT @cerror, "ERROR EN MAYORIZACION DE CUENTAS ANUAL"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_procesos SET semaforo = 1 WHERE cod_sucursal = isuc AND cod_procesos IN (1) AND periodom = imes AND periodoa = ianio; IF insert_error THEN SET @cerror = 7; SELECT @cerror, "ERROR ACTUALIZAR SEMAFORO PROCESOS 1"; ROLLBACK; LEAVE Controlador; END IF; COMMIT; SET done = 0; OPEN Curplan; REPEAT FETCH Curplan INTO Cplan, Ccod_cta, Cclase, Cnombre, Cnmn, Cpadre; IF NOT done THEN SELECT SUM(debe_mes) INTO @d_me FROM con_mayor_rpt WHERE cod_padre_cuentas = Cplan AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc; SELECT SUM(haber_mes) INTO @h_me FROM con_mayor_rpt WHERE cod_padre_cuentas = Cplan AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc; SELECT SUM(debe_ant) INTO @d_an
43
FROM con_mayor_rpt WHERE cod_padre_cuentas = Cplan AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc; SELECT SUM(haber_ant) INTO @h_an FROM con_mayor_rpt WHERE cod_padre_cuentas = Cplan AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc; SELECT SUM(debe_actual) INTO @d_ac FROM con_mayor_rpt WHERE cod_padre_cuentas = Cplan AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc; SELECT SUM(haber_actual) INTO @h_ac FROM con_mayor_rpt WHERE cod_padre_cuentas = Cplan AND periodoa = ianio AND periodom = imes AND cod_sucursal = isuc; INSERT INTO con_mayor_rpt( cod_sucursal, cod_plan_cuentas, cuenta_fisica, nombre_cuenta, debe_mes, haber_mes, debe_ant, haber_ant, debe_actual, haber_actual, cod_padre_cuentas, padre_nmn, periodoa, periodom, fecha_genera, user_gen ) VALUES( isuc, Cplan, Ccod_cta, Cnombre, @d_me, @h_me, @d_an, @h_an, @d_ac, @h_ac, Cpadre, Cnmn, ianio, imes,
44
NOW(), iuser ); IF insert_error THEN SET @cerror = 8; SELECT @cerror, "ERROR MAYORIZACION GRUPAL"; ROLLBACK; LEAVE Controlador; END IF; END IF; UNTIL done END REPEAT; CLOSE Curplan; SELECT @cerror; END; ##Controlador:BEGIN END$$ DELIMITER ;
45
sp_estadopyg_proc_cons
Procedimiento que genera el estado de perdidas y ganancias consolidado de todas las sucursales validando el periodo activo partiendo de los movimientos contables y también del mayor consolidado. DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_estadopyg_proc_cons`$$ CREATE PROCEDURE sp_estadopyg_proc_cons( IN ianio CHAR(4), IN imes INT, IN iuser VARCHAR(15) ) BEGIN DECLARE ccon INT; DECLARE panio VARCHAR(4); DECLARE vtasnetas DECIMAL(10,2); DECLARE compnetas DECIMAL(10,2); DECLARE mercdisp DECIMAL(10,2); DECLARE costvta DECIMAL(10,2); DECLARE utibvta DECIMAL(10,2); DECLARE otroing DECIMAL(10,2); DECLARE utilemptrab DECIMAL(10,2); DECLARE imprenta DECIMAL(10,2); DECLARE reslegal DECIMAL(10,2); DECLARE valmercd DECIMAL(10,2); DECLARE valmerch DECIMAL(10,2); DECLARE insert_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET insert_error=1; END; SET @cerror = 0; Controlador:BEGIN SELECT cod_prd_contable INTO @ccon FROM con_periodo_contable WHERE anio = ianio
46
AND cod_est_prd NOT IN("I", "C", "V"); IF (@ccon IS NULL) THEN ##SET @cerror = 1; ##SELECT @cerror, "ERROR ESTADO PERIODO ANUAL INACTIVO CERRADO O VERIFICADO"; ##ROLLBACK; SELECT @cerror; LEAVE Controlador; END IF; SELECT num_mes INTO @pmes FROM con_periodo_mensual WHERE cod_prd_contable = @ccon AND num_mes = imes AND cod_est_prd NOT IN("I", "C", "V"); IF (@pmes IS NULL) THEN ##SET @cerror = 2; ##SELECT @cerror, "ERROR PERIODO MENSUAL INACTIVO CERRADO O VERIFICADO"; ##ROLLBACK; SELECT @cerror; LEAVE Controlador; END IF; START TRANSACTION; TRUNCATE TABLE con_estadopyg_cons; IF insert_error THEN SET @cerror = 3; SELECT @cerror, "ERROR INICIANDO PROCESO PYG"; ROLLBACK; LEAVE Controlador; END IF; SELECT SUM(valor_det) INTO @valmercd FROM con_det_asiento WHERE cod_plan_cuentas = 32 ## CUENTA MERCADERIAS AND estado = "A" AND movimiento = "D" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; SELECT SUM(valor_det) INTO @valmerch FROM con_det_asiento WHERE cod_plan_cuentas = 32 ## CUENTA MERCADERIAS AND estado = "A" AND movimiento = "H" AND periodoa = ianio AND periodom = imes;
47
##AND cod_sucursal = isuc; UPDATE con_mayor_rpt_cons SET debe_mes = @valmercd, haber_mes = @valmerch, debe_actual = @valmercd + debe_ant, haber_actual = @valmerch + haber_ant WHERE cuenta_fisica = "1.1.16.1" ## CUENTA MERCADERIAS AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; IF insert_error THEN SET @cerror = 2; SELECT @cerror, "ERROR ACTUALIZACION CUENTA MERCADERIAS INICIAL"; ROLLBACK; LEAVE Controlador; END IF; INSERT INTO con_estadopyg_cons(cod_epg_plt, descripcion, clase, valor, codigo_cuenta, periodoa, periodom, fecha_gen, grupo) SELECT cod_epg_plt, descripcion, clase, (SELECT (debe_actual - haber_actual) FROM con_mayor_rpt_cons WHERE cuenta_fisica = codigo_cuenta ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) AS valores, codigo_cuenta, ianio, imes, NOW(), ##isuc, grupo FROM con_estadopyg_plt AS A; IF insert_error THEN SET @cerror = 3; SELECT @cerror, "ERROR ESTADO PYG"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_estadopyg_cons SET valor = (SELECT SUM(valor_det) FROM con_det_asiento WHERE mayoriza = "I" ##cod_cab_asiento = 1 AND periodoa = ianio ##AND cod_sucursal = isuc
48
AND cod_plan_cuentas = 32 ) ## CUENTA MERCADERIAS WHERE codigo_cuenta = "1.1.16.1" ## CUENTA MERCADERIAS AND cod_epg_plt = 7 AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; IF insert_error THEN SET @cerror = 4; SELECT @cerror, "ERROR ACTUALIZACION CUENTA MERCADERIAS FINAL"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_estadopyg_cons SET valor = (-1 * valor) WHERE valor < 0; IF insert_error THEN SET @cerror = 5; SELECT @cerror, "ERROR POSITIVOS"; ROLLBACK; LEAVE Controlador; END IF; ## VENTAS NETAS SELECT (SELECT valor FROM con_estadopyg_cons WHERE cod_epg_plt = 1 ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) - (SELECT SUM(valor) FROM con_estadopyg_cons WHERE cod_epg_plt IN (2,3,4) ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) INTO @vtasnetas; UPDATE con_estadopyg_cons SET valor = @vtasnetas WHERE cod_epg_plt = 5 AND periodoa = ianio AND periodom = imes; #AND cod_sucursal = isuc; IF insert_error THEN SET @cerror = 6;
49
SELECT @cerror, "ERROR VENTAS NETAS"; ROLLBACK; LEAVE Controlador; END IF; ## --VENTAS NETAS ## COMPRAS NETAS SELECT (SELECT valor FROM con_estadopyg_cons WHERE cod_epg_plt IN (8) ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) - (SELECT SUM(valor) FROM con_estadopyg_cons WHERE cod_epg_plt IN (9,10) ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) + (SELECT valor FROM con_estadopyg_cons WHERE cod_epg_plt IN (11) ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) INTO @compnetas; UPDATE con_estadopyg_cons SET valor = @compnetas WHERE cod_epg_plt = 12 AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; IF insert_error THEN SET @cerror = 7; SELECT @cerror, "ERROR COMPRAS NETAS"; ROLLBACK; LEAVE Controlador; END IF; ## -- COMPRAS NETAS ## MERCADERIA DISPONIBLE SELECT (SELECT SUM(valor) FROM con_estadopyg_cons WHERE cod_epg_plt IN (7,12)
50
##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) INTO @mercdisp; UPDATE con_estadopyg_cons SET valor = @mercdisp WHERE cod_epg_plt = 13 AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; IF insert_error THEN SET @cerror = 8; SELECT @cerror, "ERROR MERCADERIA DISPONIBLE"; ROLLBACK; LEAVE Controlador; END IF; ## -- MERCADERIA DISPONIBLE ## COSTO DE VENTAS SELECT (SELECT SUM(valor) FROM con_estadopyg_cons WHERE cod_epg_plt IN (7,12) ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) - (SELECT valor FROM con_estadopyg_cons WHERE cod_epg_plt IN (14) ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) INTO @costvta; UPDATE con_estadopyg_cons SET valor = @costvta WHERE cod_epg_plt = 6 ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes; IF insert_error THEN SET @cerror = 9; SELECT @cerror, "ERROR COSTO DE VENTAS"; ROLLBACK; LEAVE Controlador; END IF; ## -- COSTO DE VENTAS
51
## UTIL. B VENTAS SELECT (SELECT SUM(valor) FROM con_estadopyg_cons WHERE cod_epg_plt IN (5) ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) - (SELECT valor FROM con_estadopyg_cons WHERE cod_epg_plt IN (6) ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) INTO @utibvta; UPDATE con_estadopyg_cons SET valor = @utibvta WHERE cod_epg_plt = 15 ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes; IF insert_error THEN SET @cerror = 10; SELECT @cerror, "ERROR UTIL. B VENTAS"; ROLLBACK; LEAVE Controlador; END IF; ## -- UTIL. B VENTAS ## OTROS INGRESOS SELECT SUM(valor) INTO @otroing FROM con_estadopyg_cons WHERE grupo = "OI" AND clase = "C" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; UPDATE con_estadopyg_cons SET valor = @otroing WHERE grupo = "OI" AND clase = "T" ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes;
52
IF insert_error THEN SET @cerror = 11; SELECT @cerror, "ERROR OTROS INGRESOS"; ROLLBACK; LEAVE Controlador; END IF; ## -- OTROS INGRESOS ## OTROS EGRESOS SELECT SUM(valor) INTO @otroegre FROM con_estadopyg_cons WHERE grupo = "OE" AND clase = "C" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; UPDATE con_estadopyg_cons SET valor = @otroegre WHERE grupo = "OE" AND clase = "T" ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes; IF insert_error THEN SET @cerror = 12; SELECT @cerror, "ERROR OTROS EGRESOS"; ROLLBACK; LEAVE Controlador; END IF; ## -- OTROS EGRESOS ## UTILIDAD ANTES DE PARTICIPACION E IMPUESTO UPDATE con_estadopyg_cons SET valor = (@utibvta + @otroing - @otroegre) WHERE grupo = "UAP" ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes; IF insert_error THEN SET @cerror = 13; SELECT @cerror, "ERROR UTILIDAD ANTES DE PARTICIPACION E IMPUESTO"; ROLLBACK; LEAVE Controlador; END IF;
53
## -- UTILIDAD ANTES DE PARTICIPACION E IMPUESTO ## 15% UTILIDAD A EMPLEADOS Y TRABAJADORES UPDATE con_estadopyg_cons SET valor = ((@utibvta + @otroing - @otroegre)*0.15) WHERE grupo = "UET" ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes; IF insert_error THEN SET @cerror = 14; SELECT @cerror, "ERROR 15% UTILIDAD A EMPLEADOS Y TRABAJADORES"; ROLLBACK; LEAVE Controlador; END IF; ## -- 15% UTILIDAD A EMPLEADOS Y TRABAJADORES ## 25% IMPUESTO A LA RENTA SELECT valor INTO @utilemptrab FROM con_estadopyg_cons WHERE grupo = "UET" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; UPDATE con_estadopyg_cons SET valor = (((@utibvta + @otroing - @otroegre) - @utilemptrab) * 0.25) WHERE grupo = "IR" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; IF insert_error THEN SET @cerror = 15; SELECT @cerror, "ERROR 25% IMPUESTO A LA RENTA"; ROLLBACK; LEAVE Controlador; END IF; ## -- 25% IMPUESTO A LA RENTA ## UTILIDAD NETA DEL EJERCICIO SELECT valor INTO @imprenta FROM con_estadopyg_cons
54
WHERE grupo = "IR" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; UPDATE con_estadopyg_cons SET valor = ((@utibvta + @otroing - @otroegre) - @utilemptrab - @imprenta) WHERE grupo = "UE" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; IF insert_error THEN SET @cerror = 16; SELECT @cerror, "ERROR UTILIDAD NETA DEL EJERCICIO"; ROLLBACK; LEAVE Controlador; END IF; ## -- UTILIDAD NETA DEL EJERCICIO ## 10% RESERVA LEGAL SELECT valor INTO @imprenta FROM con_estadopyg_cons WHERE grupo = "IR" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; UPDATE con_estadopyg_cons SET valor = (((@utibvta + @otroing - @otroegre) - @utilemptrab - @imprenta) * 0.05) WHERE grupo = "RL" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; IF insert_error THEN SET @cerror = 17; SELECT @cerror, "ERROR 10% RESERVA LEGAL"; ROLLBACK; LEAVE Controlador; END IF; ## -- 10% RESERVA LEGAL ## UTIL. NETA PARA ACCIONISTAS SELECT valor INTO @reslegal FROM con_estadopyg_cons WHERE grupo = "RL"
55
AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; UPDATE con_estadopyg_cons SET valor = ((@utibvta + @otroing - @otroegre) - @utilemptrab - @imprenta - @reslegal) WHERE grupo = "UNA" AND periodoa = ianio AND periodom = imes; ##AND cod_sucursal = isuc; IF insert_error THEN SET @cerror = 18; SELECT @cerror, "ERROR UTIL. NETA PARA ACCIONISTAS"; ROLLBACK; LEAVE Controlador; END IF; ## -- UTIL. NETA PARA ACCIONISTAS COMMIT; SELECT @cerror; END; ##Controlador:BEGIN END$$ DELIMITER ;
56
sp_bgeneral_gen_cons
Procedimiento que genera el balance general consolidado de todas las sucursales partiendo del period activo consultado la table de mayores y generando la plantilla para su presentación en el reporte consolidado. DELIMITER $$ DROP PROCEDURE IF EXISTS `sp_bgeneral_gen_cons`$$ CREATE PROCEDURE sp_bgeneral_gen_cons( IN ianio CHAR(4), IN imes INT, IN iuser VARCHAR(15) ) BEGIN DECLARE tac DECIMAL(10,2); DECLARE tacd DECIMAL(10,2); DECLARE tace DECIMAL(10,2); DECLARE tacr DECIMAL(10,2); DECLARE tandft DECIMAL(10,2); DECLARE tandi DECIMAL(10,2); DECLARE tpce DECIMAL(10,2); DECLARE tpnc DECIMAL(10,2); DECLARE tpt DECIMAL(10,2); DECLARE panio VARCHAR(4); DECLARE cerror INT DEFAULT 0; DECLARE insert_error INTEGER DEFAULT 0; DECLARE ccon INT; DECLARE pmes VARCHAR(4); DECLARE mesa INT; DECLARE anioa INT; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET insert_error=1; END; SET @cerror = 0; Controlador:BEGIN SELECT cod_prd_contable INTO @ccon FROM con_periodo_contable WHERE anio = ianio AND cod_est_prd NOT IN("I", "C", "V");
57
IF (@ccon IS NULL) THEN SELECT @cerror; LEAVE Controlador; END IF; SELECT num_mes INTO @pmes FROM con_periodo_mensual WHERE cod_prd_contable = @ccon AND num_mes = imes AND cod_est_prd NOT IN("I", "C", "V"); IF (@pmes IS NULL) THEN SELECT @cerror; LEAVE Controlador; END IF; START TRANSACTION; TRUNCATE TABLE con_balance_general_cons; IF insert_error THEN SET @cerror = 3; SELECT @cerror, "ERROR INICIANDO PROCESO BALANCE GENERAL"; ROLLBACK; LEAVE Controlador; END IF; INSERT INTO con_balance_general_cons(cod_bg_plt, clasificacion, descripcion, clase, codigo_cuenta, valor, estado, periodoa, periodom, fecha_gen) SELECT cod_bg_plt, clasificacion, descripcion, clase, codigo_cuenta, (SELECT (debe_actual - haber_actual) FROM con_mayor_rpt_cons WHERE cuenta_fisica = codigo_cuenta ##AND cod_sucursal = isuc AND periodoa = ianio AND periodom = imes) AS Valor, estado, ianio, imes, NOW() FROM con_balance_general_plt; IF insert_error THEN SET @cerror = 4;
58
SELECT @cerror, "ERROR BALANCE GENERAL"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_balance_general_cons SET valor = (-1 * valor) WHERE codigo_cuenta LIKE "2%" AND periodoa = ianio AND periodom = imes; IF insert_error THEN SET @cerror = 5; SELECT @cerror, "ERROR BALANCE GENERAL PASIVOS"; ROLLBACK; LEAVE Controlador; END IF; UPDATE con_balance_general_cons SET valor = (-1 * valor) WHERE codigo_cuenta LIKE "3%" AND periodoa = ianio AND periodom = imes; IF insert_error THEN SET @cerror = 6; SELECT @cerror, "ERROR BALANCE GENERAL PATRIMONIO"; ROLLBACK; LEAVE Controlador; END IF; SELECT SUM(valor) INTO @tacd FROM con_balance_general_cons WHERE clasificacion = "ACD" AND clase = "C" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = @tacd WHERE clasificacion = "ACD" AND clase = "G" AND periodoa = ianio AND periodom = imes; SELECT SUM(valor) INTO @tace FROM con_balance_general_cons WHERE clasificacion = "ACE" AND clase = "C" AND periodoa = ianio AND periodom = imes;
59
UPDATE con_balance_general_cons SET valor = @tace WHERE clasificacion = "ACE" AND clase = "G" AND periodoa = ianio AND periodom = imes; SELECT SUM(valor) INTO @tacr FROM con_balance_general_cons WHERE clasificacion = "ACR" AND clase = "C" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = @tacr WHERE clasificacion = "ACR" AND clase = "G" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = (@tacd + @tace + @tacr) WHERE clasificacion = "AC" AND clase = "T" AND periodoa = ianio AND periodom = imes; SELECT SUM(valor) INTO @tandft FROM con_balance_general_cons WHERE clasificacion = "ANDFT" AND clase = "C" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = @tandft WHERE clasificacion = "ANDFT" AND clase = "G" AND periodoa = ianio AND periodom = imes; SELECT SUM(valor) INTO @tandi FROM con_balance_general_cons WHERE clasificacion = "ANDI" AND clase = "C" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = @tandi WHERE clasificacion = "ANDI"
60
AND clase = "G" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = (@tandft + @tandi) WHERE clasificacion = "AN" AND clase = "T" AND periodoa = ianio AND periodom = imes; SELECT SUM(valor) INTO @tpce FROM con_balance_general_cons WHERE clasificacion = "PCE" AND clase = "C" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = @tpce WHERE clasificacion = "PCE" AND clase = "G" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = @tpce WHERE clasificacion = "PC" AND clase = "T" AND periodoa = ianio AND periodom = imes; SELECT SUM(valor) INTO @tpnc FROM con_balance_general_cons WHERE clasificacion = "PNC" AND clase = "C" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = @tpnc WHERE clasificacion = "PNC" AND clase = "G" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = (@tpce + @tpnc) WHERE clasificacion = "P" AND clase = "T" AND periodoa = ianio AND periodom = imes;
61
SELECT SUM(valor) INTO @tpt FROM con_balance_general_cons WHERE clasificacion = "PT" AND clase = "C" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = @tpt WHERE clasificacion = "PT" AND clase = "T" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = (@tacd + @tace + @tacr + @tandft + @tandi) WHERE clasificacion = "AT" AND clase = "T" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = (@tpt + @tpce + @tpnc) WHERE clasificacion = "TPP" AND clase = "T" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = 9999999999 WHERE clasificacion = "A" AND clase = "T" AND periodoa = ianio AND periodom = imes; UPDATE con_balance_general_cons SET valor = 9999999999 WHERE clasificacion = "P" AND clase = "T" AND periodoa = ianio AND periodom = imes; COMMIT; SELECT @cerror; END; ##Controlador:BEGIN END$$ DELIMITER ;
62
1.2 Configuracion del Sitio
Dentro de la carpeta BusinessGestor se procederá a descomprimir el
modulo de contabilidad el cual creará y ubicará todos los componentes
del modulo contable.
En si la estructura principal de proyecto está dado:
CONTA\
Aquí se encontraran las páginas principales del proyecto.
CONTA\PHP\CONEXION
Aquí se encontrarán los componentes de conexión hacia la base de
datos.
CONTA\PHP\
Aquí se encontrarán todos los componentes y parte de la lógica de
negocio.
CONTA\JS\
Aquí se encontrarán todos los componentes de javascript para la
interaccion via AJAX.
A continuación se detallan los componentes según la ubicación de las
carpetas expuestas anteriormente.
63
CONTA\
con_tipo_doc.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <script type="text/javascript" src="js/tipo-doc.js"></script> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var txt_siglas; var txt_descripcion; var opt_ind_transaccional; var opt_ind_presupuesto; txt_siglas = document.getElementById("txt_siglas").value; txt_descripcion = document.getElementById("txt_descripcion").value; opt_ind_transaccional = document.getElementById("opt_ind_transaccional").selectedIndex; opt_ind_presupuesto = document.getElementById("opt_ind_presupuesto").selectedIndex; if (txt_siglas.length==0) { DivMensaje.innerHTML = "Por favor seleccione las siglas"; document.getElementById("txt_siglas").focus(); return 0; } else if (txt_descripcion.length==0) { DivMensaje.innerHTML = "Por favor ingresar descripcion"; document.getElementById("txt_descripcion").focus(); return 0; } else if (opt_ind_transaccional==0) { DivMensaje.innerHTML = "Por favor ingrese indicador transaccional"; document.getElementById("opt_ind_transaccional").focus(); return 0; } else if (opt_ind_presupuesto=='') { DivMensaje.innerHTML = "Por favor ingresar indicador de presupuesto"; document.getElementById("opt_ind_presupuesto").focus(); return 0;
64
} else{ // alert("Documento guardado con exito"); DivMensaje.innerHTML = ""; grabatipo(document.form1.txt_siglas.value,document.form1.txt_descripcion.value,document.form1.opt_ind_transaccional.value,document.form1.opt_ind_presupuesto.value,'admin'); //limpia document.getElementById("txt_siglas").value=""; document.getElementById("txt_descripcion").value=""; document.getElementById("opt_ind_transaccional").selectedIndex="0"; document.getElementById("opt_ind_presupuesto").selectedIndex="0"; document.getElementById("txt_siglas").focus(); } } </script> </head> <body> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td> <form id="form1" name="form1" method="post"> <fieldset> <legend class="titulo3">Tipo de Documento</legend> <table width="580" border="0" cellpadding="2" cellspacing="1"> <tr> <td width="124" valign="top" nowrap="nowrap" class="titulo_tabla"><div align="right"><strong>Siglas:</strong></div></td> <td width="144" class="titulo2"><input type="text" name="txt_siglas" id="txt_siglas" style="width:150px" onkeyup="javascript:this.value=this.value.toUpperCase();" /></td> <td width="182" class="titulo_tabla"><div align="right"><strong>Descripción:</strong></div></td> <td width="109"><input type="text" name="txt_descripcion" id="txt_descripcion" style="width:150px" onkeyup="javascript:this.value=this.value.toUpperCase();"/></td> </tr> <tr> <td valign="top" nowrap="nowrap" class="titulo_tabla"><div align="right"><strong>Indicador Transaccional:</strong></div></td> <td><select name="opt_ind_transaccional" id="opt_ind_transaccional" style="width:155px"> <option value="0">Seleccionar</option> <option value="1">Normal</option> <option value="2">Corriente</option> </select></td> <td class="titulo_tabla"><div align="right"><strong>Indicador Presupuesto:</strong></div></td> <td><select name="opt_ind_presupuesto" id="opt_ind_presupuesto" style="width:155px"> <option selected="selected">Seleccionar</option> <option value="1">Si</option>
65
<option value="0">No</option> </select></td> </tr> <tr> <td valign="top" nowrap="nowrap" class="titulo_tabla"> </td> <td colspan="3"> <input name="btn_grabar" type="button" class="boton" id="btn_grabar" onclick="validaCampos()" value="Guardar"> <div id="mensaje" class="Alertas"></div> </td> </tr> </table> </fieldset> </form> </td> </tr> </table> </body> </html>
con_modifica_tipo.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>MODIFICA DOCUMENTO</title> <script src="js/jquery-1.3.2.js"></script> <link rel="stylesheet" type="text/css" href="codebase/dhtmlxwindows.css"> <link rel="stylesheet" type="text/css" href="codebase/skins/dhtmlxwindows_dhx_skyblue.css"> <script src="codebase/dhtmlxcommon.js"></script> <script src="codebase/dhtmlxwindows.js"></script> <script src="codebase/dhtmlxcontainer.js"></script> <script src="js/tipo-docm.js"></script> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var txt_siglas; var txt_descripcion; var opt_ind_transaccional; var opt_ind_presupuesto; var estado; txt_siglas = document.getElementById("txt_siglas").value; txt_descripcion = document.getElementById("txt_descripcion").value; opt_ind_transaccional = document.getElementById("opt_ind_transaccional").selectedIndex;
66
opt_ind_presupuesto = document.getElementById("opt_ind_presupuesto").selectedIndex; estado = document.getElementById("estado").selectedIndex; if (txt_siglas.length==0) { DivMensaje.innerHTML = "Por favor seleccione las siglas"; document.getElementById("txt_siglas").focus(); return 0; } else if (txt_descripcion.length==0) { DivMensaje.innerHTML = "Por favor ingresar descripcion"; document.getElementById("txt_descripcion").focus(); return 0; } else if (opt_ind_transaccional==0) { DivMensaje.innerHTML = "Por favor ingrese indicador transaccional"; document.getElementById("opt_ind_transaccional").focus(); return 0; } else if (opt_ind_presupuesto=='') { DivMensaje.innerHTML = "Por favor ingresar indicador de presupuesto"; document.getElementById("opt_ind_presupuesto").focus(); return 0; } else if (estado==0) { DivMensaje.innerHTML = "Por favor ingresar estado"; document.getElementById("estado").focus(); return 0; } else{ //alert("Documento editado con exito"); DivMensaje.innerHTML = ""; modificatipos(document.getElementById("txt_siglas").value, document.getElementById("txt_descripcion").value, document.getElementById("opt_ind_transaccional").value, document.getElementById("opt_ind_presupuesto").value, document.getElementById("estado").value,'admin'); //limpia document.getElementById("txt_siglas").value=""; document.getElementById("txt_descripcion").value=""; document.getElementById("opt_ind_transaccional").selectedIndex="0"; document.getElementById("opt_ind_presupuesto").selectedIndex="0"; document.getElementById("estado").selectedIndex="0"; document.getElementById("txt_siglas").focus(); } } </script>
67
<script> function consultarSucursal () { $.post('php/Consultatipo.php',{ nombre:$('#txt_siglas').val() }, function (datos) { $('#detalleSucursales').html(datos); } ); } function SacaCodigo(id,id2,id3,id4,id5,id6) { $('#txt_siglas').val(id); $('#txt_descripcion').val(id2); $('#opt_ind_transaccional').val(id3); $('#opt_ind_presupuesto').val(id4); $('#estado').val(id5); $('#user').val(id6); dhxWins.window('ventana').setModal(false); dhxWins.window("ventana").hide(); // close a windo } var dhxWins; function cargarVentanaSucursales() {consultarSucursal(); dhxWins = new dhtmlXWindows(); dhxWins.enableAutoViewport(true); dhxWins.attachViewportTo("contenedor"); dhxWins.setImagePath("../../codebase/imgs/"); ventana= dhxWins.createWindow("ventana", 0, 0, 420, 300); ventana.setText("Seleccione documento"); ventana.attachObject('cabSucursales'); dhxWins.window('ventana').setModal(true); dhxWins.window('ventana').button("close").hide() dhxWins.window('ventana').center(); } </script> </head> <body onload="carga()"> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td> <div id="contenedor_consultas" > <form id="form1" action="" method="post" > <fieldset> <legend class="titulo3">Modifica documentos</legend> <table width="646" height="159" border="0" cellpadding="2" cellspacing="1"> <tr>
68
<td width="114" height="28"class="titulo_tabla" ><div align="right"><strong>Siglas:</strong></div></td> <td><input name="txt_siglas" type="text" disabled="disabled" id="txt_siglas" readonly="readonly" style="width:150px"/> <img src="img/iconos/busca.gif" width="20" height="20" style=" cursor:pointer" onclick="cargarVentanaSucursales()" /></td> <td class="titulo_tabla"><div align="right"><strong>Descripcion</strong>:</div></td> <td width="245"><input name="txt_descripcion" type="text" id="txt_descripcion" style="width:150px" onkeyup="javascript:this.value=this.value.toUpperCase();"/></td> </tr> <tr> <td height="42" valign="middle" class="titulo_tabla"><div align="right"><strong>Indicador transaccional:</strong></div></td> <td width="186" height="42" valign="top"><select name="opt_ind_transaccional" id="opt_ind_transaccional" style="width:150px"> <option value="0">Seleccionar</option> <option value="1">Normal</option> <option value="2">Corriente</option> </select></td> <td width="80" height="42" valign="middle" class="titulo_tabla"><div align="right"><strong>Indicador Presupuesto:</strong></div></td> <td height="42"><span class="texto12"> <select name="opt_ind_presupuesto" id="opt_ind_presupuesto" style="width:150px"> <option selected="selected">Seleccionar</option> <option value="1">Si</option> <option value="0">No</option> </select> </span></td> </tr> <tr> <td class="titulo_tabla"><div align="right"><strong>Estado:</strong></div></td> <td><select name="estado" id="estado"> <option value="0">Seleccionar</option> <option value="A">Activo</option> <option value="I">Inactivo</option> </select></td> <td height="42" colspan="2"> </td> </tr> <tr> <td class="titulo_tabla"> </td> <td height="42" colspan="3"> <input name="btnactivar" type="button" class="boton" id="btnactivar" onclick="validaCampos()" value="Modificar" /> <div id="mensaje" class="Alertas"></div> </td> </tr> </table> </fieldset>
69
</form> </div></td> </tr> </table> <div id='cabSucursales' align="center" style="height:250px; display:none; overflow:scroll; overflow:auto;"> <fieldset class="titulo"> <legend>Resultados</legend> <div id="detalleSucursales"></div> </fieldset> </div> </fieldset> </div> <script> function carga() {} </script> </body> </html>
70
con_plan_cuentas.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript" src="js/plan_cuenta.js"></script> <link rel="stylesheet" type="text/css" href="css/estilos.css" /> <link href="css/PlanCuentas.css" rel="stylesheet" type="text/css" /> <title>:: Plan de Cuentas ::</title> </head> <body> <table width="700" border="0" cellpadding="0" cellspacing="10"> <tr> <td width="350" valign="top"><form id="form1" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Nueva cuenta</legend> <table width="350" border="0" align="center" cellpadding="2" cellspacing="1"> <tr> <td width="150" rowspan="2" align="left" valign="top" class="titulo_tabla"><div align="right"><strong>Cuenta Padre:</strong></div></td> <td width="200" align="left" valign="middle"><input name="cuenta" type="text" id="cuenta" onblur="conscuenta('cuenta', 'cta_desc', '0');" onkeypress="return validaCta(event)"/></td> </tr> <tr> <td align="left" valign="middle"><input name="cta_desc" type="text" readonly="readonly" id="cta_desc"/></td> </tr> <tr> <td width="150" align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Clase:</strong></div></td> <td width="200" align="left" valign="middle"><select name="clase" size="1" id="clase"> <option value="G" selected="selected">GRUPO CONTABLE</option> <option value="C">CUENTA CONTABLE</option> </select></td> </tr> <tr> <td width="150" align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Nombre:</strong></div></td> <td width="200" align="left" valign="middle"><input name="nombre" type="text" id="nombre" maxlength="60" onkeyup="javascript:this.value=this.value.toUpperCase();" /></td> </tr> <tr> <td width="150" align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Nemonico:</strong></div></td>
71
<td width="200" align="left" valign="middle"><input name="nemo" type="text" id="nemo" onkeyup="javascript:this.value=this.value.toUpperCase();" onblur="consnmn('nemo','cuenta','N');" maxlength="10"/></td> </tr> <tr> <td width="150" align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Descripción:</strong></div></td> <td width="200" align="left" valign="middle"><textarea name="descrip" rows="3" id="descrip" onkeyup="javascript:this.value=this.value.toUpperCase();"></textarea></td> </tr> <tr> <td width="150" align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Naturaleza:</strong></div></td> <td width="200" align="left" valign="middle"><select name="presup" id="presup"> <option value="S" selected="selected">Deudora</option> <option value="N">Acreedora</option> </select></td> </tr> <tr> <td align="left" valign="middle" class="titulo_tabla"> </td> <td align="left" valign="middle"> <input name="guardar" type="button" class="boton" id="guardar" onclick="ValidaDatos('N'); return false; " value="Guardar" /><div class="Alertas" id="mensaje"></div> </td> </tr> </table> </fieldset> </form></td> <td width="350" valign="top"> <fieldset> <legend class="titulo3">Plan de cuentas</legend> <table width="350" border="0" align="center" cellpadding="2" cellspacing="1"> <tr> <td align="left" valign="top"><div id="Menu"> <? $f = 'N'; include ("php/MenuPlanCuentas.php"); ?> </div></td> </tr> </table> </fieldset> </td> </tr> </table> </body> </html>
72
con_modifica_plan_cuentas.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript" src="js/plan_cuenta.js"></script> <link href="css/PlanCuentas.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" type="text/css" href="css/estilos.css" /> <title>:: Modificar- Plan de Cuentas ::</title></head> <body> <table width="700" border="0" cellpadding="0" cellspacing="10"> <tr> <td width="350" valign="top"> <form id="form1" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Nueva cuenta</legend> <table width="350" border="0" cellpadding="2" cellspacing="1"> <tr> <td width="150" align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Cuenta Padre</strong></div></td> <td width="200" align="left" valign="middle"><input name="cuenta" type="text" id="cuenta" readonly="readonly" /></td> </tr> <tr> <td align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Nombre</strong></div></td> <td align="left" valign="middle"><input name="nombre" type="text" id="nombre" onkeyup="javascript:this.value=this.value.toUpperCase();"/></td> </tr> <tr> <td width="150" align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Clase</strong></div></td> <td width="200" align="left" valign="middle"><select name="clase" size="1" id="clase"> <option value="G" selected="selected">GRUPO CONTABLE</option> <option value="C">CUENTA CONTABLE</option> </select></td> </tr> <tr> <td width="150" align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Nemonico</strong></div></td> <td width="200" align="left" valign="middle"><input name="nemo" type="text" id="nemo" onkeyup="javascript:this.value=this.value.toUpperCase();" onblur="consnmn('nemo','cuenta','M');" maxlength="10"/></td> </tr> <tr> <td width="150" align="left" valign="top" class="titulo_tabla"><div align="right"><strong>Descripción</strong></div></td>
73
<td width="200" align="left" valign="middle"><textarea name="descrip" rows="3" id="descrip" onkeyup="javascript:this.value=this.value.toUpperCase();"></textarea></td> </tr> <tr> <td width="150" align="left" valign="middle" class="titulo_tabla"><div align="right"><strong>Naturaleza</strong></div></td> <td width="200" align="left" valign="middle"><select name="presup" size="1" id="presup"> <option value="S" selected="selected">Deudora</option> <option value="N">Acreedora</option> </select></td> </tr> <tr> <td align="left" valign="middle" class="titulo_tabla"> </td> <td align="left" valign="middle"> <input name="guardar" type="button" class="boton" id="guardar" onclick="ValidaDatos('M'); return false" value="Actualizar" /><div class="Alertas" id="mensaje"></div> </td> </tr> </table> </fieldset> </form> </td> <td width="350" valign="top"> <fieldset> <legend class="titulo3">Plan de cuentas</legend> <table width="350" border="0" align="center" cellpadding="2" cellspacing="1"> <tr> <td align="left" valign="top"> <div id="Menu"> <? $f = 'M'; include ("php/MenuPlanCuentas.php"); ?> </div></td> </tr> </table> </fieldset> </td> </tr> </table> </body> </html>
74
con_periodo_mensual.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <link rel="stylesheet" type="text/css" href="codebase/dhtmlxwindows.css"> <link rel="stylesheet" type="text/css" href="codebase/skins/dhtmlxwindows_dhx_skyblue.css"> <link rel="stylesheet" type="text/css" href="calendar/calendar.css"/></link> <script type="text/javascript" src="calendar/calendar_db.js"></script> <script src="../js/jquery-1.3.2.js"></script> <script src="codebase/dhtmlxcommon.js"></script> <script src="codebase/dhtmlxwindows.js"></script> <script src="codebase/dhtmlxcontainer.js"></script> <script language="javascript" id="ABC" src="js/periodos-mes.js"></script> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var txtperiodo; var mes; txtperiodo = document.getElementById("txtperiodo").value; mes = document.getElementById("mes").selectedIndex; if (txtperiodo.length==0) { DivMensaje.innerHTML = "Por favor ingresar el año"; document.getElementById("txtperiodo").focus(); return 0; } else if (mes==0) { DivMensaje.innerHTML = "Por favor ingresar el mes del periodo"; document.getElementById("mes").focus(); return 0; } else{ // alert("Periodo mensual ingresado con exito"); DivMensaje.innerHTML = ""; Creapermes('txtperiodo', 'mes', 'admin'); //limpia document.getElementById("txtperiodo").value=""; document.getElementById("mes").value.selectedIndex="0"; document.getElementById("txtperiodo").focus(); } }
75
</script> <script> function consultarSucursal () { $.get('php/Consultapera.php?flag=AI',{ nombre:$('#txt_consultaSucursal').val() }, function (datos) { $('#detalleSucursales').html(datos); } ); } function SacaCodigo(id,id2) { $('#txtperiodo').val(id); $('#user').val(id2); dhxWins.window('ventana').setModal(false); dhxWins.window("ventana").hide(); // close a windo } var dhxWins; function cargarVentanaSucursales() { consultarSucursal(); dhxWins = new dhtmlXWindows(); dhxWins.enableAutoViewport(true); dhxWins.attachViewportTo("contenedor"); dhxWins.setImagePath("../../codebase/imgs/"); ventana= dhxWins.createWindow("ventana", 0, 0, 420, 300); ventana.setText("Seleccione documento"); ventana.attachObject('cabSucursales'); dhxWins.window('ventana').setModal(true); dhxWins.window('ventana').button("close").hide() dhxWins.window('ventana').center(); } </script> </head> <body onload="carga()"> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td> <form id="cabecera" name="cabecera" method="post" action=""> <fieldset> <legend class="titulo3">Ingresar Periodo mensual</legend> <table width="397" border="0" cellpadding="2" cellspacing="1"> <tr> <td class="titulo_tabla">PERIODO</td> <td valign="middle"><input name="txtperiodo" type="text" id="txtperiodo" disabled="disabled" maxlength="4" style="width:134px"/> <img src="img/iconos/busca.gif" width="20" height="20" style=" cursor:pointer" onclick="cargarVentanaSucursales()" /> </td> </tr>
76
<tr> <td class="titulo_tabla">MES</td> <td><select name="mes" id="mes"> <option value="0" selected="selected">Seleccionar</option> <option value="01">Enero</option> <option value="02">Febrero</option> <option value="03">Marzo</option> <option value="04">Abril</option> <option value="05">Mayo</option> <option value="06">Junio</option> <option value="07">Julio</option> <option value="08">Agosto</option> <option value="09">Septiembre</option> <option value="10">Octubre</option> <option value="11">Noviembre</option> <option value="12">Diciembre</option> </select></td> </tr> <tr> <td class="titulo_tabla"> </td> <td> <input name="btnactivar" type="button" class="boton" id="btnactivar" onclick="validaCampos();" value="Ingresar"/><div id="mensaje" class="Alertas"></div> </td> </tr> </table> </fieldset> </form> </td> </tr> </table> <div id='cabSucursales' align="center" style="height:250px; display:none; overflow:scroll; overflow:auto;"> <fieldset class="titulo"> <legend>Resultados</legend> <div id="detalleSucursales"></div> </fieldset> </div> </fieldset> </div> <script> function carga() { window.onload = cargarVentanaSucursales(); } </script> </body> </html>
77
con_activa_pmes.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Documento sin título</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <link rel="stylesheet" type="text/css" href="codebase/dhtmlxwindows.css"> <link rel="stylesheet" type="text/css" href="codebase/skins/dhtmlxwindows_dhx_skyblue.css"> <script src="../js/jquery-1.3.2.js"></script> <script src="codebase/dhtmlxcommon.js"></script> <script src="codebase/dhtmlxwindows.js"></script> <script src="codebase/dhtmlxcontainer.js"></script> <script language="javascript" id="ABC" src="js/periodos-mes.js"></script> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var txtanio; var txtmes; var txtdescrip; txtanio = document.getElementById("txtanio").value; txtmes = document.getElementById("txtmes").value; txtdescrip = document.getElementById("txtdescrip").value; if (txtanio.length==0) { DivMensaje.innerHTML = "Por favor ingresar el año"; document.getElementById("txtanio").focus(); return 0; } else if (txtmes.length==0) { DivMensaje.innerHTML = "Por favor ingresar el mes"; document.getElementById("txtmes").focus(); return 0; } else if (txtdescrip.length==0) { DivMensaje.innerHTML = "Por favor ingresar la descripcion"; document.getElementById("txtdescrip").focus(); return 0; } else{ // alert("Periodo mensual activado con exito"); DivMensaje.innerHTML = ""; activarPerm('txtanio', 'txtmes','admin');
78
//limpia document.getElementById("txtanio").value=""; document.getElementById("txtmes").value=""; document.getElementById("txtdescrip").value=""; document.getElementById("txtanio").focus(); } } </script> <script> function consultarSucursal () { $.get('php/Consultaperm.php?flag=A',{ nombre:$('#txt_consultaSucursal').val() }, function (datos) { $('#detalleSucursales').html(datos); } ); } function SacaCodigo(id,id2,id3,id4) { $('#txtanio').val(id); $('#txtmes').val(id2); $('#txtdescrip').val(id3); $('#user').val(id4); dhxWins.window('ventana').setModal(false); dhxWins.window("ventana").hide(); // close a windo } var dhxWins; function cargarVentanaSucursales() { consultarSucursal(); dhxWins = new dhtmlXWindows(); dhxWins.enableAutoViewport(true); dhxWins.attachViewportTo("contenedor"); dhxWins.setImagePath("../../codebase/imgs/"); ventana= dhxWins.createWindow("ventana", 0, 0, 420, 300); ventana.setText("Seleccione documento"); ventana.attachObject('cabSucursales'); dhxWins.window('ventana').setModal(true); dhxWins.window('ventana').button("close").hide() dhxWins.window('ventana').center(); } </script> </head> <body onload="carga()"> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td> <form id="form1" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Activa periodo mensual</legend>
79
<table width="580" border="0" cellpadding="2" cellspacing="1"> <tr> <td width="98" class="titulo_tabla"><div align="right"><strong>Periodo anual:</strong></div></td> <td width="471"><label> <input name="txtanio" type="text" id="txtanio" readonly="true" maxlength="4" style="width:130px"/> <img src="img/iconos/busca.gif" width="20" height="20" style=" cursor:pointer" onclick="cargarVentanaSucursales()" /></label></td> </tr> <tr> <td class="titulo_tabla"><div align="right"><strong>Periodo mensual:</strong></div></td> <td><label> <input name="txtmes" type="text" id="txtmes" readonly="true" style="width:155px"/> </label></td> </tr> <tr> <td valign="top" class="titulo_tabla"><div align="right"><strong>Descripcion:</strong></div></td> <td><textarea name="txtdescrip" rows="3" id="txtdescrip" readonly="true" style="width:155px"></textarea></td> </tr> <tr> <td valign="top" class="titulo_tabla"> </td> <td> <input name="btnactivar" type="button" class="boton" id="btnactivar" onclick="validaCampos()" value="Activar" /><div id="mensaje" class="Alertas"></div> </td> </tr> </table> </fieldset> </form> </td> </tr> </table> <div id='cabSucursales' align="center" style="height:250px; display:none; overflow:scroll; overflow:auto;"> <fieldset class="titulo"> <legend>Resultados</legend> <div id="detalleSucursales"></div> </fieldset> </div> </fieldset> </div> <script> function carga() { window.onload = cargarVentanaSucursales(); }</script></body></html>
80
con_cambio_pmes.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Documento sin título</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <link rel="stylesheet" type="text/css" href="codebase/dhtmlxwindows.css"> <link rel="stylesheet" type="text/css" href="codebase/skins/dhtmlxwindows_dhx_skyblue.css"> <script src="../js/jquery-1.3.2.js"></script> <script src="codebase/dhtmlxcommon.js"></script> <script src="codebase/dhtmlxwindows.js"></script> <script src="codebase/dhtmlxcontainer.js"></script> <script language="javascript" id="ABC" src="js/periodos-mes.js"></script> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var txtanio; var txtmes; var txtdescrip; txtanio = document.getElementById("txtanio").value; txtmes = document.getElementById("txtmes").value; // txtdescrip = document.getElementById("cboestado").value; if (txtanio.length==0) { DivMensaje.innerHTML = "Por favor ingresar el año"; document.getElementById("txtanio").focus(); return 0; } else if (txtmes.length==0) { DivMensaje.innerHTML = "Por favor ingresar el mes"; document.getElementById("txtmes").focus(); return 0; } else{ // alert("Periodo mensual activado con exito"); DivMensaje.innerHTML = ""; CambioPerm('txtanio', 'txtmes', 'cboestado', 'admin'); //limpia document.getElementById("txtanio").value=""; document.getElementById("txtmes").value=""; document.getElementById("cboestado").value=""; document.getElementById("txtanio").focus(); }
81
} </script> <script> function consultarSucursal () { $.get('php/Consultaperm.php?flag=X',{ nombre:$('#txt_consultaSucursal').val() }, function (datos) { $('#detalleSucursales').html(datos); } ); } function SacaCodigo(id,id2,id3,id4) { $('#txtanio').val(id); $('#txtmes').val(id2); $('#txtdescrip').val(id3); $('#user').val(id4); dhxWins.window('ventana').setModal(false); dhxWins.window("ventana").hide(); // close a windo } var dhxWins; function cargarVentanaSucursales() { consultarSucursal(); dhxWins = new dhtmlXWindows(); dhxWins.enableAutoViewport(true); dhxWins.attachViewportTo("contenedor"); dhxWins.setImagePath("../../codebase/imgs/"); ventana= dhxWins.createWindow("ventana", 0, 0, 420, 300); ventana.setText("Seleccione documento"); ventana.attachObject('cabSucursales'); dhxWins.window('ventana').setModal(true); dhxWins.window('ventana').button("close").hide() dhxWins.window('ventana').center(); } </script> </head> <body onload="carga()"> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td> <form id="form1" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Cambio Estado Mensual</legend> <table width="580" border="0" cellpadding="2" cellspacing="1"> <tr> <td width="98" class="titulo_tabla"><div align="right"><strong>Periodo anual:</strong></div></td> <td width="471"><label>
82
<input name="txtanio" type="text" id="txtanio" readonly="true" maxlength="4" style="width:130px"/> <img src="img/iconos/busca.gif" width="20" height="20" style=" cursor:pointer" onclick="cargarVentanaSucursales()" /></label></td> </tr> <tr> <td class="titulo_tabla"><div align="right"><strong>Periodo mensual:</strong></div></td> <td><label> <input name="txtmes" type="text" id="txtmes" readonly="true" style="width:155px"/> </label></td> </tr> <tr> <td height="47" valign="top" class="titulo_tabla"><div align="right"> <p><br /> <strong>Estado:</strong></p> </div></td> <td><select name="cboestado" id="cboestado"> <option value="P">POSTERGAR</option> <option value="V">VERIFICAR</option> </select> </td> </tr> <tr> <td valign="top" class="titulo_tabla"> </td> <td> <input name="btnactivar" type="button" class="boton" id="btnactivar" onclick="validaCampos()" value="Cambiar" /> <div id="mensaje" class="Alertas"></div> </td> </tr> </table> </fieldset> </form> </td> </tr> </table> <div id='cabSucursales' align="center" style="height:250px; display:none; overflow:scroll; overflow:auto;"> <fieldset class="titulo"> <legend>Resultados</legend> <div id="detalleSucursales"></div> </fieldset> </div> </fieldset> </div> <script> function carga() {window.onload = cargarVentanaSucursales(); }</script></body></html>
83
con_cierre_pmes.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Documento sin título</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" type="text/css" href="codebase/dhtmlxwindows.css"> <link rel="stylesheet" type="text/css" href="codebase/skins/dhtmlxwindows_dhx_skyblue.css"> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <script src="../js/jquery-1.3.2.js"></script> <script src="codebase/dhtmlxcommon.js"></script> <script src="codebase/dhtmlxwindows.js"></script> <script src="codebase/dhtmlxcontainer.js"></script> <script language="javascript" id="ABC" src="js/periodos-mes.js"></script> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var txtanio; var txtpmes; var txtdescrip; txtanio = document.getElementById("txtanio").value; txtpmes = document.getElementById("txtpmes").value; txtdescrip = document.getElementById("txtdescrip").value; if (txtanio.length==0) { DivMensaje.innerHTML = "Por favor ingresar el año"; document.getElementById("txtanio").focus(); return 0; } else if (txtpmes.length==0) { DivMensaje.innerHTML = "Por favor ingresar el mes"; document.getElementById("txtpmes").focus(); return 0; } else if (txtdescrip.length==0) { DivMensaje.innerHTML = "Por favor ingresar la descripcion"; document.getElementById("txtdescrip").focus(); return 0; } else{ // alert("Periodo mensual cerrado con exito"); DivMensaje.innerHTML = ""; cierraPerm('txtanio', 'txtpmes', 'admin');
84
//limpia document.getElementById("txtanio").value=""; document.getElementById("txtpmes").value=""; document.getElementById("txtdescrip").value=""; document.getElementById("txtanio").focus(); } } </script> <script> function consultarSucursal() { $.get('php/Consultaperm.php?flag=C',{ nombre:$('#txt_consultaSucursal').val() }, function (datos) { $('#detalleSucursales').html(datos); } ); } function SacaCodigo(id,id2,id3,id4) { $('#txtanio').val(id); $('#txtpmes').val(id2); $('#txtdescrip').val(id3); $('#user').val(id4); dhxWins.window('ventana').setModal(false); dhxWins.window("ventana").hide(); // close a windo } var dhxWins; function cargarVentanaSucursales() { consultarSucursal(); dhxWins = new dhtmlXWindows(); dhxWins.enableAutoViewport(true); dhxWins.attachViewportTo("contenedor"); dhxWins.setImagePath("../../codebase/imgs/"); ventana= dhxWins.createWindow("ventana", 0, 0, 420, 300); ventana.setText("Seleccione documento"); ventana.attachObject('cabSucursales'); dhxWins.window('ventana').setModal(true); dhxWins.window('ventana').button("close").hide() dhxWins.window('ventana').center(); } </script> </head> <body onload="carga()"> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td> <form id="form1" name="form1" method="post" action=""> <fieldset>
85
<legend class="titulo3">Cierre de periodo mensual</legend> <table width="580" border="0" cellpadding="2" cellspacing="1"> <tr> <td width="111" class="titulo_tabla"><div align="right"><strong>Periodo anual:</strong></div></td> <td width="458"><label> <input name="txtanio" type="text" id="txtanio" readonly="true" maxlength="4" style="width:135px"/> <img src="img/iconos/busca.gif" width="20" height="20" style=" cursor:pointer" onclick="cargarVentanaSucursales()" /></label></td> </tr> <tr> <td class="titulo_tabla"><div align="right"><strong>Periodo mensual:</strong></div></td> <td><label> <input name="txtpmes" type="text" id="txtpmes" readonly="true" style="width:155px"/> </label></td> </tr> <tr> <td valign="top" class="titulo_tabla"><div align="right"><strong>Descripcion:</strong></div></td> <td><textarea name="txtdescrip" rows="3" id="txtdescrip" readonly="true" style="width:155px"></textarea></td> </tr> <tr> <td valign="top" class="titulo_tabla"> </td> <td><input name="btnactivar" type="button" class="boton" id="btnactivar" onclick="validaCampos()" value="Cerrar" /><div id="mensaje" class="Alertas"></div></td> </tr> </table> </fieldset> </form> </td> </tr> </table> <div id='cabSucursales' align="center" style="height:250px; display:none; overflow:scroll; overflow:auto;"> <fieldset class="titulo"> <legend>Resultados</legend> <div id="detalleSucursales"></div> </fieldset> </div> </fieldset> </div> <script> function carga() { window.onload = cargarVentanaSucursales(); }</script></body></html>
86
con_ingreso_panual.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript" src="js/periodos.js"></script> <script language="javascript"> function validaN(e) { var keynum var keychar var numcheck var dotcheck var tf = false if(e.which) // Netscape/Firefox/Opera keynum = e.which else keynum = e.keyCode // IE keychar = String.fromCharCode(keynum) numcheck = /[0-9]/ if (numcheck.test(keychar) || (keynum==8) || (keynum==9) ) tf = true; return tf } function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var txtanio; var descrip; txtanio = document.getElementById("txtanio").value; descrip = document.getElementById("descrip").value; if (txtanio.length==0) { DivMensaje.innerHTML = "Por favor ingresar el año"; document.getElementById("txtanio").focus(); return 0; } else if (descrip.length==0) { DivMensaje.innerHTML = "Por favor ingresar descripcion"; document.getElementById("descrip").focus();
87
return 0; } else{ // alert("Periodo anual guardado con exito"); DivMensaje.innerHTML = ""; Creaperanual('txtanio','descrip','admin'); // Creaperanual(document.form1.txtanio,document.form1.descrip,'admin'); //limpia document.getElementById("txtanio").value=""; document.getElementById("descrip").value=""; document.getElementById("txtanio").focus(); } } </script> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <title>Documento sin título</title> </head> <body> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td> <form id="form1" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Periodo contable</legend> <table width="580" border="0" cellpadding="2" cellspacing="1"> <tr> <td width="154" class="titulo_tabla"><div align="right"><strong>Año:</strong></div></td> <td width="428"><input name="txtanio" type="text" id="txtanio" maxlength="4" onkeypress="return validaN(event)" onblur="Consultanio('txtanio');"/></td> </tr> <tr> <td valign="top" class="titulo_tabla"><div align="right"><strong>Descripcion:</strong></div></td> <td><textarea name="descrip" rows="2" id="descrip" onkeyup="javascript:this.value=this.value.toUpperCase();"></textarea></td> </tr> <tr> <td valign="top" class="titulo_tabla"> </td> <td> <input name="Guardar" type="button" class="boton" id="Guardar" onclick="validaCampos();" value="Guardar" /><div id="mensaje" class="Alertas"></div> </td> </tr> </table> </fieldset> </form> </td> </tr> </table> </body></html>
88
con_asiento.php <?php // inicio sesion session_start(); // llamo a conexion include("php/Conexion/Conexsql.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> <link rel="stylesheet" type="text/css" href="css/estilos.css"> <link href="css/PlanCuentas.css" rel="stylesheet" type="text/css" /> <link href="grid/css/fuentes.css" rel="stylesheet" type="text/css" /> <link href="grid/css/formulario.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" type="text/css" href="calendar/calendar.css"/></link> <link rel="stylesheet" type="text/css" href="codebase/dhtmlxwindows.css"> <link rel="stylesheet" type="text/css" href="codebase/skins/dhtmlxwindows_dhx_skyblue.css"> <script src="js/jquery-1.3.2.js"></script> <script src="codebase/dhtmlxcommon.js"></script> <script src="codebase/dhtmlxwindows.js"></script> <script src="codebase/dhtmlxcontainer.js"></script> <script type="text/javascript" src="js/plan_cuenta.js"></script> <script type="text/javascript" src="js/Util.js"></script> <script type="text/javascript" src="js/con_asiento.js"></script> <script type="text/javascript" src="js/asiento.js"></script> <script type="text/javascript" src="js/mascara.js"></script> <script language="javascript" id="ABC" src="grid/js/tablaDinamica.js"></script> <script type="text/javascript" src="calendar/calendar_db.js"></script> <script language="javascript"> function validaAsiento() { var DivMensaje = document.getElementById("mensaje"); var txt_select; var firstinput; var cobsuc; var cbotdoc; var txtcta; var cobafect; var txtvalor; var cobafecta; var txtconcepto; txt_select = document.getElementById("select").selectedIndex; firstinput = document.getElementById("firstinput").value; cobsuc = document.getElementById("cobsuc").value; cbotdoc = document.getElementById("cbotdoc").value;
89
txtcta = document.getElementById("txtcta").value; cboafect = document.getElementById("cboafect").selectedIndex; txtvalor = document.getElementById("txtvalor").value; cobafecta = document.getElementById("cobafecta").selectedIndex; txtconcepto = document.getElementById("txtconcepto").value; if (txt_select==0) { DivMensaje.innerHTML = "Por favor seleccione tipo de asiento"; document.getElementById("select").focus(); return 0; } else if (firstinput.length==0) { DivMensaje.innerHTML = "Por favor ingresar la fecha"; document.getElementById("firstinput").focus(); return 0; } else if (cobsuc==0) { DivMensaje.innerHTML = "Por favor ingrese la sucursal"; document.getElementById("cobsuc").focus(); return 0; } else if (cbotdoc==0) { DivMensaje.innerHTML = "Por favor ingresar el tipo de documento"; document.getElementById("cbotdoc").focus(); return 0; } else if (txtcta.length==0) { DivMensaje.innerHTML = "Por favor ingresar cuenta"; document.getElementById("txtcta").focus(); return 0; } else if (cboafect==0) { DivMensaje.innerHTML = "Por favor ingrese si va al debe o haber"; document.getElementById("cboafect").focus(); return 0; } else if (txtvalor=="0.00") { DivMensaje.innerHTML = "Por favor ingrese el valor del asiento"; document.getElementById("txtvalor").focus(); return 0; } else if (cobafecta==0) { DivMensaje.innerHTML = "Por favor ingrese el campo de afectacion presupuestaria"; document.getElementById("cobafecta").focus();
90
} else if (txtconcepto.length==0) { DivMensaje.innerHTML = "Por favor ingrese la glosa"; document.getElementById("txtconcepto").focus(); } else{ // DivMensaje.innerHTML = "AGREGADO"; var arreglo = new Array (document.form1.txtcta.value, document.form1.cta_desc.value, document.form1.cboafect.value, document.form1.txtvalor.value, document.form1.cobafecta.value); crearfila('tablaDetalle',arreglo); totaliza('tablaDetalle', 'txtdebe', 'txthaber'); validaCuadre(); //limpia document.getElementById("cta_desc").value=""; document.getElementById("cboafect").selectedIndex="0"; document.getElementById("txtvalor").value="0.00"; document.getElementById("cobafecta").selectedIndex="0"; // document.getElementById("txtconcepto").value=""; document.getElementById("txtcta").value=""; document.getElementById("txtcta").focus(); } } //valor decimal /* String.prototype.reverse=function(){return this.split('').reverse().join('');}; function numberblog(e){ function f(){ this.value=this.value.reverse().replace(/[^0-9.]/g,'').replace(/\.(?=\d*[.]\d*)/g,'').reverse(); } e.onkeyup=f e.onkeydown=f e.onkeypress=f e.onmousedown=f e.onmouseup=f e.onclick=f e.onchange=f e.onblur=f }*/ // </script> <script> function consultarSucursal () { $.get('php/MenuPlanCuentasA.php',{ nombre:$('#txt_consultaSucursal').val() }, function (datos) { $('#detalleSucursales').html(datos); } );
91
} var dhxWins; function cargarVentanaSucursales() { consultarSucursal(); dhxWins = new dhtmlXWindows(); dhxWins.enableAutoViewport(true); dhxWins.attachViewportTo("contenedor"); dhxWins.setImagePath("../../codebase/imgs/"); ventana= dhxWins.createWindow("ventana", 0, 0, 420, 300); ventana.setText("Seleccione documento"); ventana.attachObject('cabSucursales'); dhxWins.window('ventana').setModal(true); dhxWins.window('ventana').button("close").hide() dhxWins.window('ventana').center(); } </script> <script type="text/javascript" > (function($){ $(function(){ $('input:text').setMask(); // $('#firstinput').setMask(); } ); })(jQuery); </script> </head> <body onload="carga()"> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td> <form id="cabecera" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Ingresar asiento</legend> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td> <table width="100%" border="0" cellpadding="2" cellspacing="1"> <tr> <td class="titulo_tabla"><div align="right">Tipo de asiento</div></td> <td> <select name="select" id="select" style="width:150px"> <option value="0" selected="selected">seleccionar</option> <option value="I">Inicial</option> <option value="N">Normal</option> <option value="A">Ajuste</option> <option value="R">Regulacion</option> <option value="C">Cierre</option> </select>
92
</td> <td width="122" class="titulo_tabla"><div align="right">Fecha:</div></td> <td> <input type="text" id="firstinput" name="firstinput" style="width:120px" readonly="true"/> <script language="JavaScript" type="text/javascript"> new tcal ({ 'formname': 'cabecera', 'controlname': 'firstinput' }); </script> </td> </tr> <tr> <td width="123" class="titulo_tabla"><div align="right">Sucursal:</div></td> <td><select name="cobsuc" class="titulo2" id="cobsuc" style="width:150px"> <option value="0" selected="selected">seleccionar</option> <? $querysu = mysql_query("SELECT * FROM gen_sucursal WHERE estado!='I' ORDER BY cod_sucursal ASC"); while($rowsu = mysql_fetch_array($querysu,$liconexion)){ $cod_sucursal = $rowsu["cod_sucursal"]; $nombre_sucursal = $rowsu["nombre"]; ?> <option value="<? echo $cod_sucursal;?>"><? echo $nombre_sucursal;?></option> <? }?> </select></td> <td width="122" class="titulo_tabla"><div align="right">Tipo de documento:</div></td> <td width="693"><select name="cbotdoc" id="cbotdoc" style="width:150px"> <option value="0">seleccionar</option> <? $querymo = mysql_query("SELECT * FROM con_tipo_doc ORDER BY cod_tipo_doc ASC"); while($rowmo = mysql_fetch_array($querymo,$liconexion)){ $cod_tipo_doc = $rowmo["cod_tipo_doc"]; $descripcion_tipo_doc = $rowmo["descripcion"]; ?> <option value="<? echo $cod_tipo_doc;?>"><? echo $descripcion_tipo_doc;?></option> <? }?> </select></td> </tr> <tr> <td class="titulo_tabla"><div align="right">Cuenta:</div></td> <td width="144"><input style="width:110px" name="txtcta" type="text" id="txtcta" onkeypress="return validaCta(event)" onblur="conscuenta2('txtcta', 'cta_desc', '1');"/> <img src="img/iconos/busca.gif" alt="" width="20" height="20" style=" cursor:pointer" onclick="cargarVentanaSucursales()" /></td> <td colspan="2"><input name="cta_desc" type="text" id="cta_desc" readonly="true" disabled="disabled" style="width:253px"/></td>
93
</tr> <tr> <td class="titulo_tabla"><div align="right">Afectacion:</div></td> <td><select name="cboafect" id="cboafect" style="width:150px"> <option value="0" selected="selected">Seleccionar</option> <option value="D">DEBE</option> <option value="H">HABER</option> </select></td> <td class="titulo_tabla"><div align="right">Valor:</div></td> <td> <input name="txtvalor" type="text" id="txtvalor" size="12" alt="decimalec" style="width:144px; text-align:right"/> </td> </tr> <tr> <td valign="top" class="titulo_tabla"><div align="right">Afectacion Presupuestaria:</div></td> <td colspan="3"><select name="cobafecta" id="cobafecta" style="width:150px"> <option value="0">Seleccionar</option> <option value="S">Si</option> <option value="N">No</option> </select></td> </tr> <tr> <td valign="top" class="titulo_tabla"><div align="right">Glosa:</div></td> <td colspan="3"><textarea name="txtconcepto" cols="40" rows="3" id="txtconcepto" style="width:410px"></textarea></td> </tr> <tr> <td class="titulo_tabla"> </td> <td><input name="txtglosa" type="hidden" id="txtglosa" value="DESCRIPCION" /> <input name="btnagregar" type="button" class="boton" id="btnagregar" onclick="validaAsiento()" value="Adicionar"/></td> <td colspan="2"><div id="mensaje" class="Alertas"></div></td> </tr> </table> <table width="100%" border="0" align="left" cellpadding="0" cellspacing="0"> <tr> <td width="761" height="300"><table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <div style="height:209px;overflow:scroll; overflow:auto;"> <table width="100%" border="0" cellpadding="3" cellspacing="2" class="punteado" id="tablaDetalle" > <tr class="titulo_tabla" > <td width="7%"><div align="center">ELIMINAR</div></td> <td width="27%"><div align="center">CODIGO</div></td> <td width="16%"><div align="center">CUENTA</div></td> <td width="10%"><div align="center">TIPO</div></td> <td width="13%"><div align="center">VALOR</div></td> <td width="27%"><div align="center">PRESUPUESTO</div></td>
94
</tr> </table></div></td> </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="205" height="32"><span class="colMonto">DEBE</span> <input name="txtdebe" type="text" id="txtdebe" readonly="true" disabled="disabled"/></td> <td width="206"><span class="colMonto">HABER</span> <input name="txthaber" type="text" id="txthaber" readonly="true" disabled="disabled"/></td> <td width="102"> <div align="right"><span class="Estilo1">CUADRADO</span></div></td> <td width="37"><IMG SRC="img/ico_eliminar.gif" NAME="pic" width="32" height="32" BORDER=0 ></td> </tr> </table> </td> </tr> </table> <input name="btnguardar" type="button" id="btnguardar" value="Guardar" class="boton" disabled="disabled" onclick="CreaAsiento('tablaDetalle', 'cobsuc', '2', 'cbotdoc', 'txtdebe', 'txtconcepto', 'admin', 'select', 'firstinput')" /> </td> </tr> </table> </fieldset> </form> </td> </tr> </table><div id='cabSucursales' align="center" style=" display:none"> <fieldset class="titulo"> <legend>Resultados</legend> <div id="detalleSucursales" style="height:200px; overflow:auto;" align="left"></div> </fieldset> </div> </fieldset> </div> <script> function carga() {} </script> </body> </html>
95
con_detalle_diario.php <?php // inicio sesion session_start(); // llamo a conexion include("php/Conexion/Conexsql.php"); //include("conectar_session.php"); //Sesion(); $user = $_SESSION['username']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> <script type="text/javascript" src="js/diario.js"></script> <script type="text/javascript" src="js/carga.js"></script> <script type="text/javascript" src="calendar/calendar_db.js"></script> <link rel="stylesheet" type="text/css" href="calendar/calendar.css"/></link> <link rel="stylesheet" type="text/css" href="css/estilos.css"/></link> <link rel="stylesheet" type="text/css" href="codebase/dhtmlxwindows.css"> <link rel="stylesheet" type="text/css" href="codebase/skins/dhtmlxwindows_dhx_skyblue.css"> <script src="../js/jquery-1.3.2.js"></script> <script src="codebase/dhtmlxcommon.js"></script> <script src="codebase/dhtmlxwindows.js"></script> <script src="codebase/dhtmlxcontainer.js"></script> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var sucursales; var firstinput; var secondinput; var con = document.getElementById("con"); sucursales = document.getElementById("sucursales").selectedIndex; firstinput = document.getElementById("firstinput").value; secondinput = document.getElementById("secondinput").value; if (sucursales==0) { DivMensaje.innerHTML = "Por favor ingresar la sucursal"; document.getElementById("sucursales").focus(); return 0; } else if (firstinput.length==0) {
96
DivMensaje.innerHTML = "Por favor ingresar fecha de inicio de consulta"; document.getElementById("firstinput").focus(); return 0; } else if (secondinput.length==0) { DivMensaje.innerHTML = "Por favor ingresar fecha de final de consulta"; document.getElementById("secondinput").focus(); return 0; } else{ DivMensaje.innerHTML = ""; con.innerHTML =""; cargaDatos(); ConsultaDetalle(document.form1.firstinput.value,document.form1.secondinput.value,document.form1.sucursales.value,document.form1.modulo.value); setTimeout("terminaDatos()", 1000); //limpia /*document.getElementById("modulo").selectedIndex="0"; document.getElementById("sucursales").selectedIndex="0"; document.getElementById("firstinput").value=""; document.getElementById("secondinput").value=""; document.getElementById("modulo").focus();*/ } } </script> </head> <body> <div id="winVP" style="width:auto; height:auto;"> <table width="100%" border="0" cellspacing="0" cellpadding="10"> <tr> <td><form id="cabecera" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Consulta Libro diario</legend> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td><table width="100%" border="0" cellpadding="1" cellspacing="1"> <tr> <td width="7%" class="titulo_tabla"><strong>Modulo:</strong></td> <td width="20%"><select name="modulo" id="modulo" style="width:120px" class="combos"> <option value="0">Escoger modulo</option> <? $querymo = mysql_query("SELECT * FROM gen_modulo_erp ORDER BY cod_modulo_erp ASC"); while($rowmo = mysql_fetch_array($querymo,$liconexion)){ $cod_modulo_erp = $rowmo["cod_modulo_erp"]; $descripcion_modulo_erp = $rowmo["descripcion"]; ?>
97
<option value="<? echo $cod_modulo_erp;?>"><? echo $descripcion_modulo_erp;?></option> <? }?> </select></td> <td width="5%" class="titulo_tabla"><strong>Sucursal:</strong></td> <td width="66%"><select name="sucursales" id="sucursales" style="width:120px"> <option value="0">Escoger sucursal</option> <? $querysu = mysql_query("SELECT * FROM gen_sucursal ORDER BY cod_sucursal ASC"); while($rowsu = mysql_fetch_array($querysu,$liconexion)){ $cod_sucursal = $rowsu["cod_sucursal"]; $nombre_sucursal = $rowsu["nombre"]; ?> <option value="<? echo $cod_sucursal;?>"><? echo $nombre_sucursal;?></option> <? }?> </select> </td> </tr> <tr> <td class="titulo_tabla"><strong>Desde:</strong></td> <td><input type="text" id="firstinput" name="firstinput"/> <script language="JavaScript" type="text/javascript"> new tcal ({ 'formname': 'cabecera', 'controlname': 'firstinput' }); </script></td> <td class="titulo_tabla"><strong>Hasta:</strong></td> <td><input type="text" id="secondinput" name="secondinput" /> <script language="JavaScript" type="text/javascript"> new tcal ({ 'formname': 'cabecera', 'controlname': 'secondinput' }); </script></td> </tr> <tr> <td class="titulo_tabla"> </td> <td><input type="button" class="boton" name="Consulta" id="btnconsulta" value="Consulta" onclick="validaCampos()"/> <div id="mensaje" class="Alertas"></div></td> <td> </td> <td> </td> </tr> </table></td> </tr> </table>
98
</fieldset> <div id="con"></div> </form></td> </tr> </table> <div id="procesando" align="center" style="margin:0 auto; padding-top:40px; padding-bottom:100px; width:400px; display:none;"> <img src="img/iconos/dhxlayout_progress_global.gif" alt="Procesando" width="243" height="51" /></div> </div> </body> </html>
99
con_detalle_mayor.php <?php // inicio sesion session_start(); // llamo a conexion include("php/Conexion/Conexsql.php"); //include("conectar_session.php"); //Sesion(); $admin = $_SESSION['username']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" type="text/css" href="css/estilos.css"/></link> <link rel="stylesheet" type="text/css" href="codebase/dhtmlxwindows.css"> <link rel="stylesheet" type="text/css" href="codebase/skins/dhtmlxwindows_dhx_skyblue.css"> <script src="js/jquery-1.3.2.js"></script> <script src="codebase/dhtmlxcommon.js"></script> <script src="codebase/dhtmlxwindows.js"></script> <script src="codebase/dhtmlxcontainer.js"></script> <script type="text/javascript" src="js/plan_cuenta.js"></script> <script type="text/javascript" src="js/Util.js"></script> <script type="text/javascript" src="js/det-mayor.js"></script> <script type="text/javascript" src="js/mascara.js"></script> <script type="text/javascript" src="js/carga.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var periodoa; var periodom; var sucursal; var con = document.getElementById("con"); periodoa = document.getElementById("periodoa").selectedIndex; periodom = document.getElementById("periodom").selectedIndex; sucursal = document.getElementById("sucursal").selectedIndex; if (periodoa==0) { DivMensaje.innerHTML = "Por favor ingresar periodo anual"; document.getElementById("periodoa").focus(); return 0; } else if (periodom==0) {
100
DivMensaje.innerHTML = "Por favor ingresar periodo mensual"; document.getElementById("periodom").focus(); return 0; } else if (sucursal==0) { DivMensaje.innerHTML = "Por favor ingresar sucursal"; document.getElementById("sucursal").focus(); return 0; } else{ DivMensaje.innerHTML = ""; con.innerHTML =""; cargaDatos(); ConsultaDetalle(document.form1.periodoa.value,document.form1.periodom.value,document.form1.sucursal.value,document.form1.txtcta.value); setTimeout("terminaDatos()", 1000); //limpia /*document.getElementById("periodoa").selectedIndex="0"; document.getElementById("periodom").selectedIndex="0"; document.getElementById("sucursal").selectedIndex="0"; document.getElementById("periodoa").focus();*/ } } </script> <script> function consultarSucursal () { $.get('php/MenuPlanCuentasA.php',{ nombre:$('#txt_consultaSucursal').val() }, function (datos) { $('#detalleSucursales').html(datos); } ); } var dhxWins; function cargarVentanaSucursales() { consultarSucursal(); dhxWins = new dhtmlXWindows(); dhxWins.enableAutoViewport(true); dhxWins.attachViewportTo("contenedor"); dhxWins.setImagePath("../../codebase/imgs/"); ventana= dhxWins.createWindow("ventana", 200, 100, 420, 300); ventana.setText("Seleccione documento"); ventana.attachObject('cabSucursales'); dhxWins.window('ventana').setModal(true); dhxWins.window('ventana').button("close").show() } </script>
101
<script type="text/javascript" > (function($){ $(function(){ $('input:text').setMask(); // $('#firstinput').setMask(); } ); })(jQuery); </script> </head> <body onload="carga()"> <table width="100%" border="0" cellspacing="0" cellpadding="10"> <tr> <td><form id="form1" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Consulta Libro Mayor</legend> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td><table width="100%" border="0" cellspacing="1" cellpadding="1"> <tr> <td width="4%"class="titulo_tabla"><strong>Año:</strong></td> <td width="15%"><select name="periodoa" class="titulo2" id="periodoa" style="width:120px"> <option value="0">Seleccionar</option> <? $querya = mysql_query("SELECT * FROM con_periodo_contable WHERE cod_est_prd!='I' ORDER BY anio ASC"); while($rowa = mysql_fetch_array($querya,$liconexion)){ $cod_prd_contable = $rowa["cod_prd_contable"]; $anio = $rowa["anio"]; ?> <option value="<? echo $anio;?>"><? echo $anio;?></option> <? }?> </select></td> <td width="4%" class="titulo_tabla"><strong>Mes:</strong></td> <td width="77%"><select name="periodom" id="periodom" style="width:120px"> <option value="0" selected="selected">Seleccionar</option> <option value="1">ENERO</option> <option value="2">FEBRERO</option> <option value="3">MARZO</option> <option value="4">ABRIL</option> <option value="5">MAYO</option> <option value="6">JUNIO</option> <option value="7">JULIO</option> <option value="8">AGOSTO</option> <option value="9">SEPTIEMBRE</option> <option value="10">OCTUBRE</option> <option value="11">NOVIEMBRE</option> <option value="12">DICIEMBRE</option> </select></td> </tr>
102
<tr> <td valign="middle" class="titulo_tabla"><strong>Sucursal:</strong></td> <td><select name="sucursal" class="titulo2" id="sucursal" style="width:120px"> <option value="0" selected="selected">Seleccionar</option> <? $querysu = mysql_query("SELECT * FROM gen_sucursal WHERE estado!='I' ORDER BY cod_sucursal ASC"); while($rowsu = mysql_fetch_array($querysu,$liconexion)){ $cod_sucursal = $rowsu["cod_sucursal"]; $nombre_sucursal = $rowsu["nombre"]; ?> <option value="<? echo $cod_sucursal;?>"><? echo $nombre_sucursal;?></option> <? }?> </select></td> <td class="titulo_tabla"><strong>Cuenta:</strong> </td> <td><input style="width:110px" name="txtcta" type="text" id="txtcta" onkeypress="return validaCta(event)" onblur="conscuenta2('txtcta', 'cta_desc', '1');"/> <img src="img/iconos/busca.gif" alt="" width="20" height="20" style=" cursor:pointer" onclick="cargarVentanaSucursales()" /></td> </tr> <tr> <td valign="middle" class="titulo_tabla"> </td> <td> <input name="Consulta" type="button" class="boton" id="btnconsulta" onclick="validaCampos();" value="Consulta"/> <div id="mensaje" class="Alertas"></div> </td> <td colspan="2" valign="top"><input name="cta_desc" type="text" id="cta_desc" readonly="true" disabled="disabled" style="width:253px"/></td> </tr> </table></td> </tr> </table> </fieldset> <div id="con"></div> </form></td> </tr> </table> <div id='cabSucursales' align="center" style=" display:none"> <fieldset class="titulo"> <legend>Resultados</legend> <div id="detalleSucursales" style="height:200px; overflow:auto;" align="left"></div> </fieldset> </div> </fieldset> </div> <script> function carga()
103
{} </script> <div id="procesando" align="center" style="margin:0 auto; padding-top:40px; padding-bottom:100px; width:400px; display:none;"> <img src="img/iconos/dhxlayout_progress_global.gif" alt="Procesando" width="243" height="51" /></div> </div> </body> </html>
con_detalle_sumasysaldos.php <?php // inicio sesion session_start(); // llamo a conexion include("php/Conexion/Conexsql.php"); //include("conectar_session.php"); //Sesion(); $admin = $_SESSION['username']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript" src="js/det-mayor.js"></script> <script type="text/javascript" src="js/carga.js"></script> <link rel="stylesheet" type="text/css" href="css/estilos.css"/></link> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var periodoa; var periodom; var sucursal; var con = document.getElementById("con"); periodoa = document.getElementById("periodoa").selectedIndex; periodom = document.getElementById("periodom").selectedIndex; sucursal = document.getElementById("sucursal").selectedIndex; if (periodoa==0) { DivMensaje.innerHTML = "Por favor ingresar periodo anual"; document.getElementById("periodoa").focus(); return 0;
104
} else if (periodom==0) { DivMensaje.innerHTML = "Por favor ingresar periodo mensual"; document.getElementById("periodom").focus(); return 0; } else if (sucursal==0) { DivMensaje.innerHTML = "Por favor ingresar sucursal"; document.getElementById("sucursal").focus(); return 0; } else{ DivMensaje.innerHTML = ""; con.innerHTML =""; cargaDatos(); ConsultaSumas(document.form1.periodoa.value,document.form1.periodom.value,document.form1.sucursal.value); setTimeout("terminaDatos()", 1000); //limpia /*document.getElementById("periodoa").selectedIndex="0"; document.getElementById("periodom").selectedIndex="0"; document.getElementById("sucursal").selectedIndex="0"; document.getElementById("periodoa").focus();*/ } } </script> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="10"> <tr> <td><form id="form1" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Consulta Sumas y saldos</legend> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td><table width="100%" border="0" cellspacing="1" cellpadding="1"> <tr> <td width="4%"class="titulo_tabla"><strong>Año:</strong></td> <td width="14%"><select name="periodoa" class="titulo2" id="periodoa" style="width:120px"> <option value="0" selected="selected">Seleccionar</option> <? $querya = mysql_query("SELECT * FROM con_periodo_contable WHERE cod_est_prd!='I' ORDER BY anio ASC"); while($rowa = mysql_fetch_array($querya,$liconexion)){ $cod_prd_contable = $rowa["cod_prd_contable"]; $anio = $rowa["anio"]; ?> <option value="<? echo $anio;?>"><? echo $anio;?></option> <? }?>
105
</select></td> <td width="4%" class="titulo_tabla"><strong>Mes:</strong></td> <td width="78%"><select name="periodom" id="periodom" style="width:120px"> <option value="0" selected="selected">Seleccionar</option> <option value="1">ENERO</option> <option value="2">FEBRERO</option> <option value="3">MARZO</option> <option value="4">ABRIL</option> <option value="5">MAYO</option> <option value="6">JUNIO</option> <option value="7">JULIO</option> <option value="8">AGOSTO</option> <option value="9">SEPTIEMBRE</option> <option value="10">OCTUBRE</option> <option value="11">NOVIEMBRE</option> <option value="12">DICIEMBRE</option> </select></td> </tr> <tr> <td valign="middle" class="titulo_tabla"><strong>Sucursal:</strong></td> <td colspan="3"><select name="sucursal" class="titulo2" id="sucursal" style="width:120px"> <option value="0" selected="selected">Seleccionar</option> <? $querysu = mysql_query("SELECT * FROM gen_sucursal WHERE estado!='I' ORDER BY cod_sucursal ASC"); while($rowsu = mysql_fetch_array($querysu,$liconexion)){ $cod_sucursal = $rowsu["cod_sucursal"]; $nombre_sucursal = $rowsu["nombre"]; ?> <option value="<? echo $cod_sucursal;?>"><? echo $nombre_sucursal;?></option> <? }?> </select></td> </tr> <tr> <td valign="middle" class="titulo_tabla"> </td> <td colspan="3"> <input type="button" class="boton" name="Consulta" id="btnconsulta" value="Consulta" onclick="validaCampos();"/> <div id="mensaje" class="Alertas"></div> </td> </tr> </table></td> </tr> </table> </fieldset> <div id="con"></div> </form></td> </tr> </table>
106
<div id="procesando" align="center" style="margin:0 auto; padding-top:40px; padding-bottom:100px; width:400px; display:none;"> <img src="img/iconos/dhxlayout_progress_global.gif" alt="Procesando" width="243" height="51" /></div> </div> </body> </html>
107
con_proceso_mayoriza.php <?php // inicio sesion session_start(); // llamo a conexion include("php/Conexion/Conexsql.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript" src="js/procesos.js"></script> <script type="text/javascript" src="js/carga.js"></script> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var periodoa; var periodom; var sucursal; var con = document.getElementById("con"); periodoa = document.getElementById("periodoa").selectedIndex; periodom = document.getElementById("periodom").selectedIndex; sucursal = document.getElementById("sucursal").selectedIndex; if (periodoa==0) { DivMensaje.innerHTML = "Por favor ingresar periodo anual"; document.getElementById("periodoa").focus(); return 0; } else if (periodom==0) { DivMensaje.innerHTML = "Por favor ingresar periodo mensual"; document.getElementById("periodom").focus(); return 0; } else if (sucursal==0) { DivMensaje.innerHTML = "Por favor ingresar sucursal"; document.getElementById("sucursal").focus(); return 0; } else{ DivMensaje.innerHTML = ""; con.innerHTML =""; cargaDatos(); setTimeout("terminaDatos()", 200);
108
procesoMayoriza(document.form1.periodoa.value,document.form1.periodom.value,document.form1.sucursal.value, 'admin'); //limpia /*document.getElementById("periodoa").selectedIndex="0"; document.getElementById("periodom").selectedIndex="0"; document.getElementById("sucursal").selectedIndex="0"; document.getElementById("periodoa").focus();*/ } } </script> <link rel="stylesheet" type="text/css" href="css/estilos.css"/></link> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="10"> <tr> <td><form id="form1" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Proceso Mayorizacion</legend> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td><table width="100%" border="0" cellspacing="1" cellpadding="1"> <tr> <td width="4%"class="titulo_tabla"><strong>Año:</strong></td> <td width="13%"><select name="periodoa" class="titulo2" id="periodoa" style="width:120px"> <option value="0">SELECIONAR</option> <? $querya = mysql_query("SELECT * FROM con_periodo_contable WHERE cod_est_prd in ('A', 'P')"); while($rowa = mysql_fetch_array($querya,$liconexion)){ $cod_prd_contable = $rowa["cod_prd_contable"]; $anio = $rowa["anio"]; ?> <option value="<? echo $anio;?>"><? echo $anio;?></option> <? }?> </select></td> <td width="78%"> </td> </tr> <tr> <td valign="middle" class="titulo_tabla"><strong>Mes:</strong></td> <td colspan="3"><select name="periodom" id="periodom" style="width:120px"> <option value="0" selected="selected">SELECCIONAR</option> <? $querym = mysql_query("SELECT * FROM con_periodo_mensual WHERE cod_est_prd in ('A', 'P')"); while($rowm = mysql_fetch_array($querym,$liconexion)){
109
$num_mes = $rowm["num_mes"]; $mes = $rowm["descripcion"]; ?> <option value="<? echo $num_mes;?>"><? echo $mes;?></option> <? }?> </select></td> </tr> <tr> <td valign="middle" class="titulo_tabla"><strong>Sucursal:</strong></td> <td colspan="3"><select name="sucursal" class="titulo2" id="sucursal" style="width:120px"> <option value="0" selected="selected">SELECCIONAR</option> <? $querysu = mysql_query("SELECT * FROM gen_sucursal WHERE estado!='I' ORDER BY cod_sucursal ASC"); while($rowsu = mysql_fetch_array($querysu,$liconexion)){ $cod_sucursal = $rowsu["cod_sucursal"]; $nombre_sucursal = $rowsu["nombre"]; ?> <option value="<? echo $cod_sucursal;?>"><? echo $nombre_sucursal;?></option> <? }?> </select></td> </tr> <tr> <td valign="middle" class="titulo_tabla"> </td> <td colspan="3"> <input name="iniciar" type="button" class="boton" id="iniciar" onclick="validaCampos();" value="Iniciar Proceso"/> <div id="mensaje" class="Alertas"></div> </td> </tr> </table></td> </tr> </table> </fieldset> <div id="con"></div> </form></td> </tr> </table> <div id="procesando" align="center" style="margin:0 auto; padding-top:40px; padding-bottom:100px; width:400px; display:none;"> <img src="img/iconos/dhxlayout_progress_global.gif" alt="Procesando" width="243" height="51" /></div> </div> </body> </html>
110
con_proceso_pyg.php <?php // inicio sesion session_start(); // llamo a conexion include("php/Conexion/Conexsql.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript" src="js/procesos.js"></script> <script type="text/javascript" src="js/carga.js"></script> <script language="javascript"> function validaCampos() { var DivMensaje = document.getElementById("mensaje"); var periodoa; var periodom; var sucursal; var con = document.getElementById("con"); periodoa = document.getElementById("periodoa").selectedIndex; periodom = document.getElementById("periodom").selectedIndex; sucursal = document.getElementById("sucursal").selectedIndex; if (periodoa==0) { DivMensaje.innerHTML = "Por favor ingresar periodo anual"; document.getElementById("periodoa").focus(); return 0; } else if (periodom==0) { DivMensaje.innerHTML = "Por favor ingresar periodo mensual"; document.getElementById("periodom").focus(); return 0; } else if (sucursal==0) { DivMensaje.innerHTML = "Por favor ingresar sucursal"; document.getElementById("sucursal").focus(); return 0; } else{ DivMensaje.innerHTML = ""; con.innerHTML =""; cargaDatos(); setTimeout("terminaDatos()", 200);
111
procesoPYG(document.form1.periodoa.value,document.form1.periodom.value, document.form1.sucursal.value, 'admin') //limpia /*document.getElementById("periodoa").selectedIndex="0"; document.getElementById("periodom").selectedIndex="0"; document.getElementById("sucursal").selectedIndex="0"; document.getElementById("periodoa").focus();*/ } } </script> <link rel="stylesheet" type="text/css" href="css/estilos.css"/></link> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="10"> <tr> <td><form id="form1" name="form1" method="post" action=""> <fieldset> <legend class="titulo3">Proceso Perdidas y Ganancias Acumulado</legend> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td><table width="100%" border="0" cellspacing="1" cellpadding="1"> <tr> <td width="4%"class="titulo_tabla"><strong>Año:</strong></td> <td width="13%"><select name="periodoa" class="titulo2" id="periodoa" style="width:120px"> <option value="0">SELECIONAR</option> <? $querya = mysql_query("SELECT * FROM con_periodo_contable WHERE cod_est_prd in ('A', 'P')"); while($rowa = mysql_fetch_array($querya,$liconexion)){ $cod_prd_contable = $rowa["cod_prd_contable"]; $anio = $rowa["anio"]; ?> <option value="<? echo $anio;?>"><? echo $anio;?></option> <? }?> </select></td> <td width="78%"> </td> </tr> <tr> <td valign="middle" class="titulo_tabla"><strong>Mes:</strong></td> <td colspan="3"><select name="periodom" id="periodom" style="width:120px"> <option value="0" selected="selected">SELECCIONAR</option> <? $querym = mysql_query("SELECT * FROM con_periodo_mensual WHERE cod_est_prd in ('A', 'P')");
112
while($rowm = mysql_fetch_array($querym,$liconexion)){ $num_mes = $rowm["num_mes"]; $mes = $rowm["descripcion"]; ?> <option value="<? echo $num_mes;?>"><? echo $mes;?></option> <? }?> </select></td> </tr> <tr> <td valign="middle" class="titulo_tabla"><strong>Sucursal:</strong></td> <td colspan="3"><select name="sucursal" class="titulo2" id="sucursal" style="width:120px"> <option value="0" selected="selected">SELECCIONAR</option> <? $querysu = mysql_query("SELECT * FROM gen_sucursal WHERE estado!='I' ORDER BY cod_sucursal ASC"); while($rowsu = mysql_fetch_array($querysu,$liconexion)){ $cod_sucursal = $rowsu["cod_sucursal"]; $nombre_sucursal = $rowsu["nombre"]; ?> <option value="<? echo $cod_sucursal;?>"><? echo $nombre_sucursal;?></option> <? }?> </select></td> </tr> <tr> <td valign="middle" class="titulo_tabla"> </td> <td colspan="3"> <input name="iniciar" type="button" class="boton" id="iniciar" onclick="validaCampos();" value="Iniciar Proceso"/> <div id="mensaje" class="Alertas"></div> </td> </tr> </table></td> </tr> </table> </fieldset> <div id="con"></div> </form></td> </tr> </table> <div id="procesando" align="center" style="margin:0 auto; padding-top:40px; padding-bottom:100px; width:400px; display:none;"> <img src="img/iconos/dhxlayout_progress_global.gif" alt="Procesando" width="243" height="51" /></div> </div> </body> </html>
113
CONTA\PHP\CONEXION
Conexsql.php
<? $localhost = "localhost"; $usuario = "root"; $clave = ""; $base = "business_bg"; $liconexion = mysql_pconnect($localhost,$usuario,$clave) or trigger_error(mysql_errno()." : ".mysql_error(),E_USER_ERROR); $liconexbd = mysql_select_db($base,$liconexion) or trigger_error(mysql_errno()." : ".mysql_error(),E_USER_ERROR); ?>
Conexsqli.php
<? $link = mysqli_connect('localhost','root', '', 'business_bg'); if (!$link) { printf("ERROR CONEXION MySQL Server. Errorcode: %s\n", mysqli_connect_error()); exit; } ?>
114
CONTA\PHP\
Activaperanual.php
<?php //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); $anioc= $_POST["anio"]; $ref= $_POST["descrip"]; $user= $_POST["user"]; // llamo a conexion include("Conexion/Conexsqli.php"); if ($result = mysqli_query($link, "call sp_ingresa_peranual('A', '$anioc', '$ref', '$user')")) { while ($row = mysqli_fetch_array($result)) { printf($row[0]."|".$row[1]); } mysqli_free_result($result); } else { die ("ERROR ACTIVAR PERIODO ANUAL"); } mysqli_close($link); ?>
115
Activapermes.php <?php //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); $anio = $_POST["anioc"]; $mes = $_POST["mes"]; $user = $_POST["user"]; // llamo a conexion include("Conexion/Conexsqli.php"); if ($result = mysqli_query($link, "call sp_ingresa_permes('A', '$anio', '$mes', 'descrip', '01/01/2000', '01/01/2000', '$user')")) { while ($row = mysqli_fetch_array($result)) { printf($row[0]."|".$row[1]); } mysqli_free_result($result); } else { die ("ERROR ACTIVAR PERIODO MENSUAL"); } mysqli_close($link); ?>
116
Cambiapermes.php <?php //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); $anio = $_POST["anioc"]; $mes = $_POST["mes"]; $cambio = $_POST["cambio"]; $user = $_POST["user"]; // llamo a conexion include("Conexion/Conexsqli.php"); if ($result = mysqli_query($link, "call sp_ingresa_permes('$cambio', '$anio', '$mes', 'descrip', '01/01/2000', '01/01/2000', '$user')")) { while ($row = mysqli_fetch_array($result)) { printf($row[0]."|".$row[1]); } mysqli_free_result($result); } else { die ("ERROR CAMBIO ESTADO MENSUAL"); } mysqli_close($link); ?>
117
Cambioperanual.php <?php //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); $anioc= $_POST["anio"]; $ref= $_POST["descrip"]; $cambio = $_POST["cambio"]; $user= $_POST["user"]; // llamo a conexion include("Conexion/Conexsqli.php"); if ($result = mysqli_query($link, "call sp_ingresa_peranual('$cambio', '$anioc', '$ref', '$user')")) { while ($row = mysqli_fetch_array($result)) { printf($row[0]."|".$row[1]); } mysqli_free_result($result); } else { die ("ERROR ACTIVAR PERIODO ANUAL"); } mysqli_close($link); ?>
118
con_ver_detalle_diario.php <?php // inicio sesion session_start(); // llamo a conexion include("Conexion/Conexsql.php"); $cod_asiento = $_GET["codAsiento"]; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> <link rel="stylesheet" type="text/css" href="../css/estilos.css"/></link> <title>Documento sin título</title> </head> <body> <div id="tool"> <div id="tool0"></div> <div id="tool1"> <table width="300" border="0" cellspacing="0" cellpadding="0"> <tr> <td><table width="100" height="27" border="0" cellspacing="0" cellpadding="0" class="cabecera_tabla"> <tr> <td width="100" valign="middle" class="fila_impar"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="29%"><div align="center"><a href="exporta-detalle-exel.php?codAsiento=<? echo $cod_asiento;?>" target="_blank"><img src="../img/iconos/excel.gif" alt="Crear Excel" width="20" height="19" border="0" /></a></div></td> <td width="71%"> CREA EXCEL</td> </tr> </table></td> </tr> </table></td> <td><table width="70" height="27" border="0" cellspacing="0" cellpadding="0" class="cabecera_tabla"> <tr> <td width="100" valign="middle" class="fila_impar"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="39%"><div align="center"><a href="con_ver_detalle_diario_csv.php?codAsiento=<? echo $cod_asiento;?>" target="_blank"> <img src="../img/iconos/excel.gif" alt="Crear Excel" width="20" height="19" border="0" /></a></div></td> <td width="61%"> CSV</td> </tr>
119
</table></td> </tr> </table></td> </tr> </table> </div> <div id="tool2"></div> </div> <div id="toolclear"></div> <fieldset> <legend class="titulo3">Consulta Libro diario</legend> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#F2F2F2"> <table width="100%" border="0" cellspacing="2" cellpadding="5"> <tr> <td bgcolor="#0099FF" class="titulo_tabla">PARTICIPANTE</td> <td bgcolor="#0099FF" class="titulo_tabla">MODULO</td> <td bgcolor="#0099FF" class="titulo_tabla">CUENTA</td> <td bgcolor="#0099FF" class="titulo_tabla">CTA. BANCARIA</td> <td bgcolor="#0099FF" class="titulo_tabla">DEBE</td> <td bgcolor="#0099FF" class="titulo_tabla">HABER</td> </tr> <?php $query = mysql_query("SELECT (SELECT nombre from gen_participantes where cod_participante = A.cod_participante) as 'PARTICIPANTE', cod_cab_asiento, (select descripcion from gen_modulo_erp where cod_modulo_erp = A.cod_modulo_erp) as 'MODULO', (select nombre from con_plan_cuentas where cod_plan_cuentas = A.cod_plan_cuentas) as 'CUENTA' , cuenta_bancaria ,signo ,valor FROM con_movimientos_gen as A where cod_cab_asiento = '$cod_asiento' ORDER BY signo ASC"); while($row = mysql_fetch_array($query,$liconexion)){ $participante = $row["PARTICIPANTE"]; $modulo = $row["MODULO"]; $cuenta = $row["CUENTA"]; $cod_cab = $row["cod_cab_participante"]; $signo = $row["signo"]; $cuentabancaria = $row["cuenta_bancaria"]; $valor = $row["valor"]; if($signo=="D"){ $dh ='<td bgcolor="#FFFFFF"><div align="right"><span class="titulo2">$ '.number_format($valor,2).'</span></div></td> <td bgcolor="#FFFFFF"><div align="right"><span class="titulo2"></span></div></td>'; }else{ $dh = '<td bgcolor="#FFFFFF"><div align="right"><span class="titulo2"></span></div></td> <td bgcolor="#FFFFFF"><div align="right"><span class="titulo2">$ '.number_format($valor,2).'</span></div></td>'; } ?> <tr>
120
<td bgcolor="#FFFFFF"><span class="titulo2"><? echo $participante;?></span></td> <td bgcolor="#FFFFFF"><span class="titulo2"><? echo $modulo;?></span></td> <td bgcolor="#FFFFFF"><span class="titulo2"><? echo $cuenta;?></span></td> <td bgcolor="#FFFFFF"><span class="titulo2"><? echo $cuentabancaria;?></span></td> <? echo $dh;?> </tr> <? }?> <tr> <td colspan="4" bgcolor="#FFFFFF"><div align="right"><span class="detalle">TOTAL</span></div></td> <td width="10%" bgcolor="#FFFFFF"><div align="right"><span class="detalle"> <? $querys= mysql_query("SELECT SUM(valor) FROM con_movimientos_gen WHERE cod_cab_asiento = '$cod_asiento' AND signo='D' GROUP BY signo"); $rows=mysql_fetch_array($querys); echo '$ '.$rows['0']; ?> </span></div></td> <td bgcolor="#FFFFFF"><div align="right"><span class="detalle"> <? $querys= mysql_query("SELECT SUM(valor) FROM con_movimientos_gen WHERE cod_cab_asiento = '$cod_asiento' AND signo='H' GROUP BY signo"); $rows=mysql_fetch_array($querys); echo '$ '.$rows['0']; ?> </span></div></td> </tr> </table> </td> </tr> </table> </fieldset> </body> </html>
121
con_ver_detalle_diario_csv.php <?php // inicio sesion session_start(); // llamo a conexion include("Conexion/Conexsql.php"); //include("conectar_session.php"); //Sesion(); $user = $_SESSION['username']; $cod_asiento = $_GET["codAsiento"]; header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download");; header("Content-Disposition: attachment;filename=detalle-diario-asiento-".$cod_asiento.".csv "); header("Content-Transfer-Encoding: binary"); $querye = mysql_query("SELECT * FROM gen_empresa WHERE cod_empresa ORDER BY cod_empresa ASC"); while($rowe = mysql_fetch_array($querye,$liconexion)){ $empresa = $rowe["razon_social"]; $csv = "Empresa comercial ".$empresa."\n"; } $csv.= "Detalle de libro diario\n"; $csv.= "FECHA: "; $queryf =mysql_query("SELECT * FROM con_cab_asiento WHERE cod_cab_asiento='$cod_asiento'"); $rowf=mysql_fetch_array($queryf); $dia = substr($rowf["fecha"],8,2); $periodom_cab = $rowf["periodom"]; $cod = $rowf["cod_cab_asiento"]; if($periodom_cab==01){ $mesx="Enero"; }else if($periodom_cab==02){ $mesx="Febrero"; }else if($periodom_cab==03){ $mesx="Marzo"; }else if($periodom_cab==04){ $mesx="Abril"; }else if($periodom_cab==05){ $mesx="Mayo"; }else if($periodom_cab==06){ $mesx="Junio"; }else if($periodom_cab==07){ $mesx="Julio"; }else if($periodom_cab==08){ $mesx="Agosto";
122
}else if($periodom_cab==09){ $mesx="Septiembre"; }else if($periodom_cab==10){ $mesx="Octubre"; }else if($periodom_cab==11){ $mesx="Noviembre"; }else if($periodom_cab==12){ $mesx="Diciembre"; } $csv.= $mesx." ".$dia."\n"; $csv.="No. asiento: ".$cod."\n"; $csv.="PARTICIPANTE;MODULO;CUENTA;CTA. BANCARIA;DEBE;HABER;\n"; $cod_asiento = $_GET["codAsiento"]; $query = mysql_query("SELECT (SELECT nombre from gen_participantes where cod_participante = A.cod_participante) as 'PARTICIPANTE', cod_cab_asiento, (select descripcion from gen_modulo_erp where cod_modulo_erp = A.cod_modulo_erp) as 'MODULO', (select nombre from con_plan_cuentas where cod_plan_cuentas = A.cod_plan_cuentas) as 'CUENTA' , cuenta_bancaria ,signo ,valor FROM con_movimientos_gen as A where cod_cab_asiento = '$cod_asiento' ORDER BY signo ASC"); while($row = mysql_fetch_array($query,$liconexion)){ $participante = $row["PARTICIPANTE"]; $modulo = $row["MODULO"]; $cuenta = $row["CUENTA"]; $cod_cab = $row["cod_cab_participante"]; $signo = $row["signo"]; $cuentabancaria = $row["cuenta_bancaria"]; $valor = $row["valor"]; if($signo=="D"){ $csv.= $participante.';'.$modulo.';'.$cuenta.';'.$cuentabancaria.';'.number_format($valor,2).";;\n"; }else{ $csv.= $participante.';'.$modulo.';'.$cuenta.';'.$cuentabancaria.';;'.number_format($valor,2).";\n"; } } $csv.= ";;;TOTAL;"; $querys= mysql_query("SELECT SUM(valor) FROM con_movimientos_gen WHERE cod_cab_asiento = '$cod_asiento' AND signo='D' GROUP BY signo"); $rows=mysql_fetch_array($querys); $csv.= $rows['0'].';'; $querys= mysql_query("SELECT SUM(valor) FROM con_movimientos_gen WHERE cod_cab_asiento = '$cod_asiento' AND signo='H' GROUP BY signo"); $rows=mysql_fetch_array($querys); $csv.= $rows['0'].';'; echo $csvs = $csv; ?>
123
Consulta-balance-general-cons.php <?php // inicio sesion session_start(); // llamo a conexion include("Conexion/Conexsql.php"); //include("conectar_session.php"); //Sesion(); $user = $_SESSION['username']; ?> <? $periodoa = $_POST["periodoa"]; $periodom = $_POST["periodom"]; if(($periodoa==0)or($periodom==0)){ echo "DATOS ERRONEOS"; }else{ ?> <div id="tool"> <div id="tool0"></div> <div id="tool1"> <table width="250" border="0" cellspacing="0" cellpadding="0"> <tr> <td><table width="100" height="27" border="0" cellspacing="0" cellpadding="0" class="cabecera_tabla"> <tr> <td width="100" valign="middle" class="fila_impar"><table width="100" height="27" border="0" cellspacing="0" cellpadding="0" class="cabecera_tabla"> <tr> <td width="100" valign="middle" class="fila_impar"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="29%"><div align="center"><a href="php/exporta-balance-general-cons.php?periodoa=<? echo $periodoa;?>&periodom=<? echo $periodom;?>" target="_blank"><img src="../conta/img/iconos/excel.gif" alt="Crear Excel" width="20" height="19" border="0" /></a></div></td> <td width="71%"> CREA EXCEL</td> </tr> </table></td> </tr> </table></td> </tr> </table></td> <td><table width="70" height="27" border="0" cellspacing="0" cellpadding="0" class="cabecera_tabla"> <tr> <td width="100" valign="middle" class="fila_impar"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="33%"><div align="center"><a href="php/exporta-balance-general-cons-csv.php?periodoa=<? echo $periodoa;?>&periodom=<? echo
124
$periodom;?>" target="_blank"><img src="../conta/img/iconos/excel.gif" alt="Crear Excel" width="20" height="19" border="0"/></a></div></td> <td width="67%"> CSV</td> </tr> </table></td> </tr> </table></td> </tr> </table> </div> <div id="tool2"></div> </div> <div id="toolclear"></div> <fieldset> <legend class="titulo3">Resultados de la consulta</legend> <table width="100%" border="0" cellspacing="10" cellpadding="0"> <tr> <td bgcolor="#F2F2F2"> <table width="100%" border="0" cellspacing="2" cellpadding="1" bgcolor="#FFFFFF"> <? $ba = 0; /* $qy1 = mysql_query("SELECT cod_est_prd FROM con_periodo_contable WHERE anio='$periodoa'"); $rwqy1 = mysql_fetch_array($qy1,$liconexion); $qy2 = mysql_query("SELECT cod_est_prd FROM con_periodo_mensual WHERE num_mes='$periodom'"); $rwqy2 = mysql_fetch_array($qy2,$liconexion); if(($rwqy1[0]=='A')or($rwqy1[0]=='P')){ if(($rwqy2[0]=='A')or($rwqy2[0]=='P')){ $qy3 = mysql_query("SELECT semaforo FROM con_procesos WHERE cod_sucursal = $sucursal and cod_procesos = 5 and periodom = '$periodom' and periodoa = '$periodoa'"); $rwqy3 = mysql_fetch_array($qy3,$liconexion); } } */ ?> <? $fl = "0"; $resultpa = mysql_query("select cod_prd_contable from con_periodo_contable where anio = '$periodoa'", $liconexion);
125
if ($canio = mysql_fetch_array($resultpa)){ $codpa = $canio["cod_prd_contable"]; $rp = mysql_query("SELECT 1 as band FROM con_periodo_mensual as A WHERE num_mes = '$periodom' and cod_prd_contable = '$codpa' and cod_est_prd in ('A','P')", $liconexion); if ($result = mysql_fetch_array($rp)){ $band = $result["band"]; if ($band == "1") $fl = $band; } } if ($fl == "0"){ $tabla = "con_balance_general_cons_his"; }else{ $tabla = "con_balance_general_cons"; } /* $querypa = mysql_query("SELECT (select anio from con_periodo_contable where cod_prd_contable = A.cod_prd_contable)as anio, num_mes FROM con_periodo_mensual as A WHERE cod_est_prd='A'"); $rowpa = mysql_fetch_array($querypa,$liconexion); if(($rowpa[0]==$periodoa)and($rowpa[1]==$periodom)) $tabla = "con_balance_general"; else $tabla = "con_balance_general_his"; */ $query= mysql_query("SELECT * FROM ".$tabla." WHERE periodoa='$periodoa' AND periodom='$periodom' AND valor!='0.00' ORDER BY clasificacion,codigo_cuenta"); ?> <?php while($row = mysql_fetch_array($query,$liconexion)) { /* if ($rwqy3[0] == 1) $ba = 1; else $ba = 0;*/ $descripcion = $row["descripcion"]; $clasificacion = $row["clasificacion"]; $cod_bg_plt = $row['cod_bg_plt']; $clase = $row["clase"]; $cc = $row["codigo_cuenta"]; $valor = $row["valor"]; $periodoa = $row["periodoa"];
126
$periodom = $row["periodom"]; $fecha_gen = $row["fecha_gen"]; if(($clasificacion=='A')and($clase=='T')) { //ACTIVO $td ='<tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if(($clasificacion=='AC')and($clase=='T')) { //corriente $td ='<tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" align="right" class="detalle">'.$valor.'</td> </tr>'; }else if(($clasificacion=='ACD')and($clase=='G')) { //disponible $td ='<tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="18%"> </td> </tr>'; }else if($clasificacion=='ACD') { //caja - bancos $td ='<tr> <td width="45%" class="dia">'.$descripcion.'</td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if(($clasificacion=='ACE')and($clase=='G')) { //Exigible $td ='<tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr> <tr> <td width="45%" class="detalle">'.$descripcion.'</td>
127
<td width="17%"> </td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="18%"> </td> </tr>'; }else if($clasificacion=='ACE') { //acciones - bonos - more $td ='<tr> <td width="45%" class="dia">'.$descripcion.'</td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if(($clasificacion=='ACR')and($clase=='G')) { //Realizable $td ='<tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr><tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="18%"> </td> </tr>'; }else if($clasificacion=='ACR') { //acciones - bonos - more $td ='<tr> <td width="45%" class="dia">'.$descripcion.'</td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if(($clasificacion=='AN')and($clase=='T')) { //NO CORRIENTE $td ='<tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr><tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td>
128
<td width="18%" align="right" class="detalle">'.$valor.'</td> </tr>'; }else if(($clasificacion=='ANDFT')and($clase=='G')) { //Fijo contable $td ='<tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="18%"> </td> </tr>'; }else if($clasificacion=='ANDFT') { //vehiculos - muebles -etc $td ='<tr> <td width="45%" class="dia">'.$descripcion.'</td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if(($clasificacion=='ANDI')and($clase=='G')) { //ACTIVO DIFERIDO $td ='<tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr><tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="18%"> </td> </tr>'; }else if($clasificacion=='ANDI') { //vehiculos - muebles -etc $td ='<tr> <td width="45%" class="dia">'.$descripcion.'</td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if(($clasificacion=='AT')and($clase=='T')) { //TOTAL DE ACTIVO $td ='<tr> <td width="45%"> </td>
129
<td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr><tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" style="border-top:solid; border-top-color:#CCC; border-top-width:1px; border-bottom:solid; border-bottom-color:#CCC; border-bottom-width:1px;" align="right" class="detalle">'.$valor.'</td> </tr> <tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr>'; }else if(($clasificacion=='P')and($clase=='T')) { //PASIVO $td ='<tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%"> </td> </tr><tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr>'; }else if(($clasificacion=='PC')and($clase=='T')) { //pasivo corriente $td ='<tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" align="right" class="detalle">'.$valor.'</td> </tr>'; }else if(($clasificacion=='PCE')and($clase=='G')) { //pasivo exigible $td ='<tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="18%"> </td> </tr>'; }else if($clasificacion=='PCE') {
130
//cuentas por pagar-documento x pagar etc $td ='<tr> <td width="45%" class="dia">'.$descripcion.'</td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if(($clasificacion=='PNC')and($clase=='T')) { //PASIVO NO CORRIENTE $td ='<tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr><tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" align="right" class="detalle">'.$valor.'</td> </tr>'; }else if($clasificacion=='PNC') { //DOCUMENTOS POR PAGAR LARGO PLAZO etc $td ='<tr> <td width="45%" class="dia">'.$descripcion.'</td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if(($clasificacion=='PNC')and($clase=='G')) { //PASIVO DIFERIDO $td ='<tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr><tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%"> align="right" class="dia">'.$valor.'</td> </tr>'; }else if($clasificacion=='PNC') { //ARRIENDOS PRECOBRADOS etc $td ='<tr> <td width="45%" class="detalle">'.$descripcion.'</td>
131
<td width="17%" align="right" class="dia">'.$valor.'</td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if(($clasificacion=='PT')and($clase=='T')) { //PATRIMONIO $td ='<tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr><tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" align="right" class="dia">'.$valor.'</td> </tr>'; }else if($clasificacion=='PT') { //ARRIENDOS PRECOBRADOS etc $td ='<tr> <td width="45%" class="dia">'.$descripcion.'</td> <td width="17%" align="right" class="dia">'.$valor.'</td> <td width="17%"> </td> <td width="18%"> </td> </tr>'; }else if($clasificacion=='TPP') { //TOTAL DEL PASIVO Y PATRIMONIO $td ='<tr> <td width="45%"> </td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" ></td> </tr><tr> <td width="45%" class="detalle">'.$descripcion.'</td> <td width="17%"> </td> <td width="17%"> </td> <td width="18%" style="border-top:solid; border-top-color:#CCC; border-top-width:1px; border-bottom:solid; border-bottom-color:#CCC; border-bottom-width:1px;" align="right" class="detalle">'.$valor.'</td> </tr>'; } ?> <? echo $td;?> <? }}?> </table> </td>
132
</tr> </table> </fieldset> <? echo $ba;?>
133
exporta-diario-exel.php <?php // inicio sesion session_start(); // llamo a conexion include("Conexion/Conexsql.php"); ?> <?php $desde = $_GET["desde"];//.' 00:00:00'; $hasta = $_GET["hasta"];//.' 23:59:59'; $desde1 = substr($desde,0,10); $hasta1 = substr($hasta,0,10); $sucursales = $_GET["sucursales"]; $modulo = $_GET["modulo"]; header("Content-Type: application/vnd.ms-excel"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("content-disposition: attachment;filename=reporte-diario-".$desde1."-".$hasta1.".xls"); ?> <HTML LANG="es"> <title>consulta bd</title> <TITLE>Eliminación de areas</TITLE> <style type="text/css"> <!-- .encabezado { font-family: Arial; text-align: center; color: #069; font-size: 24px; font-weight: bold; } .libro { font-family: Arial; font-size: 16px; font-weight: bold; } .cabeza { font-family: Arial; font-size: 12px; font-weight: bold; } .cabezadet { font-family: Arial; font-size: 12px; } .detalle { font-family: Arial, Helvetica, sans-serif;
134
font-size: 12px; font-weight: bold; } .dia { font-family: Arial, Helvetica, sans-serif; font-size: 12px; } .titulo { font-family: Arial, Helvetica, sans-serif; font-size: 12px; } .titulo2{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; } body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; } --> </style> </head> <body> <table width="580" border="1" cellspacing="0" cellpadding="5"> <tr class="titulo"> <? $querye = mysql_query("SELECT * FROM gen_empresa WHERE cod_empresa ORDER BY cod_empresa ASC"); while($rowe = mysql_fetch_array($querye,$liconexion)){ $empresa = $rowe["razon_social"]; ?> <td height="40px" colspan="7" bgcolor="#FFFFFF" class="encabezado">Empresa comercial "<? echo $empresa;?>"</td> <? }?> </tr> <tr> <td colspan="7" bgcolor="#FFFFFF"><div align="center"><span class="libro">Libro diario</span></div></td> </tr> <tr> <td colspan="7" bgcolor="#F7F7F7"><span class="cabeza">FECHA DE INICIO Y CORTE</span></td> </tr> <tr class="titulo"> <td colspan="2" bgcolor="#F7F7F7"><span class="cabeza">DESDE:</span></td> <td width="28%" bgcolor="#F7F7F7"><span class="cabezadet"><? echo $desde1;?></span></td> <td colspan="2" bgcolor="#F7F7F7"><span class="cabeza"> <? if($modulo!=0){ ?> <? $querymo = mysql_query("SELECT descripcion FROM gen_modulo_erp WHERE cod_modulo_erp='$modulo' ORDER BY cod_modulo_erp ASC");
135
$rowmo=mysql_fetch_array($querymo); $descripcion_modulo_erp = $rowmo["descripcion"]; ?> MODULO: <span class="cabezadet"><? echo $descripcion_modulo_erp;?></span> <? }?> </span></td> <td bgcolor="#F7F7F7"> </td> <td bgcolor="#F7F7F7"> </td> </tr> <tr> <td colspan="2" bgcolor="#F7F7F7"><span class="cabeza">HASTA:</span></td> <td bgcolor="#F7F7F7"><span class="cabezadet"><? echo $hasta1;?></span></td> <td colspan="2" bgcolor="#F7F7F7"><span class="cabeza"> <? if($sucursales!=0){ ?> <? $querysu = mysql_query("SELECT nombre FROM gen_sucursal WHERE cod_sucursal='$sucursales' ORDER BY cod_sucursal ASC"); $rowsu=mysql_fetch_array($querysu); $nombre_sucursal = $rowsu["nombre"]; ?> SUCURSAL: <span class="cabezadet"><? echo $nombre_sucursal;?></span> <? }?> </span></td> <td bgcolor="#F7F7F7"> </td> <td bgcolor="#F7F7F7"> </td> </tr> <tr class="titulo"> <td colspan="2" bgcolor="#0099FF"><strong>FECHA</strong></td> <td colspan="2" bgcolor="#0099FF"><strong>DETALLE</strong></td> <td width="10%" bgcolor="#0099FF"><strong>PARCIAL</strong></td> <td width="8%" bgcolor="#0099FF"><strong>DEBE</strong></td> <td width="9%" bgcolor="#0099FF"><strong>HABER</strong></td> </tr> <?php if(($sucursales==0)&&($modulo==0)){ $query = mysql_query("SELECT * FROM con_cab_asiento WHERE fecha BETWEEN '$desde' AND '$hasta' AND estado='A' ORDER BY num_asiento ASC"); } if(($sucursales!=0)&&($modulo==0)){ $query = mysql_query("SELECT * FROM con_cab_asiento WHERE fecha BETWEEN '$desde' AND '$hasta' AND cod_sucursal='$sucursales' AND estado='A' ORDER BY num_asiento ASC"); } if(($sucursales!=0)&&($modulo!=0)){ $query = mysql_query("SELECT * FROM con_cab_asiento WHERE fecha BETWEEN '$desde' AND '$hasta' AND cod_sucursal='$sucursales' AND cod_modulo_erp='$modulo' AND estado='A' ORDER BY num_asiento ASC"); } if(($sucursales==0)&&($modulo!=0)){ $query = mysql_query("SELECT * FROM con_cab_asiento WHERE fecha BETWEEN '$desde' AND '$hasta' AND cod_modulo_erp='$modulo' AND estado='A' ORDER BY num_asiento ASC");
136
} while($row = mysql_fetch_array($query,$liconexion)){ $dia = substr($row["fecha"],8,2); $cod_cab = $row["cod_cab_asiento"]; $concepto_cab = $row["concepto"]; $periodom_cab = $row["periodom"]; $num_form = $row["num_formulario"]; if($periodom_cab==01){ $mesx="Ene."; }else if($periodom_cab==02){ $mesx="Feb."; }else if($periodom_cab==03){ $mesx="Mar."; }else if($periodom_cab==04){ $mesx="Abr."; }else if($periodom_cab==05){ $mesx="May."; }else if($periodom_cab==06){ $mesx="Jun."; }else if($periodom_cab==07){ $mesx="Jul."; }else if($periodom_cab==08){ $mesx="Ago."; }else if($periodom_cab==09){ $mesx="Sep."; }else if($periodom_cab==10){ $mesx="Oct."; }else if($periodom_cab==11){ $mesx="Nov."; }else if($periodom_cab==12){ $mesx="Dic."; } ?> <tr> <td width="5%" bgcolor="#FFFFFF"><div align="center" class="detalle"><? echo $mesx;?></div></td> <td width="10%" bgcolor="#FFFFFF"><div align="center" class="dia"><? echo $dia;?></div></td> <td colspan="2" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr> <td><div align="center" class="detalle">- <? echo $num_form; ?> -</div></td> </tr> <tr> <td><table width="100%" border="0" cellspacing="2" cellpadding="0"> <? $queryd = mysql_query("SELECT * FROM con_det_asiento,con_plan_cuentas WHERE con_det_asiento.cod_cab_asiento=".$cod_cab." AND con_plan_cuentas.cod_plan_cuentas=con_det_asiento.cod_plan_cuentas ORDER BY con_det_asiento.movimiento ASC"); while($rowd = mysql_fetch_array($queryd,$liconexion)){ $cod_det_asiento= $rowd["cod_det_asiento"];
137
$cod_plan_cuentas= $rowd["cod_plan_cuentas"]; $asiento_movimiento = $rowd["movimiento"]; $asiento_valor= $rowd["valor_det"]; $nombre_cuentas =$rowd["nombre"]; ///////////////////////////// if($asiento_movimiento=="D"){ echo '<tr><td width="50%"><span class="titulo2">'.$nombre_cuentas.'</span></td> <td width="50%"></td></tr>'; }else{ echo '<tr><td width="50%"></td> <td width="50%"><span class="titulo2">'.$nombre_cuentas.'</span></td></tr>'; } } ?> </table></td> </tr> <? if($concepto_cab!=""){?> <tr> <td bgcolor="#F7F7F7"><div align="left"><span class="dia"> <? echo $concepto_cab;?></span></div></td> </tr> <? }?> </table></td> <td bgcolor="#FFFFFF"> </td> <td valign="top" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr> <td><div align="center" class="detalle"> </div></td> </tr> <tr> <td><table width="100%" border="0" cellspacing="2" cellpadding="0"> <? $queryd = mysql_query("SELECT * FROM con_det_asiento,con_plan_cuentas WHERE con_det_asiento.cod_cab_asiento=".$cod_cab." AND con_plan_cuentas.cod_plan_cuentas=con_det_asiento.cod_plan_cuentas ORDER BY con_det_asiento.movimiento ASC"); while($rowd = mysql_fetch_array($queryd,$liconexion)){ $cod_det_asiento= $rowd["cod_det_asiento"]; $cod_plan_cuentas= $rowd["cod_plan_cuentas"]; $asiento_movimiento = $rowd["movimiento"]; $asiento_valor= $rowd["valor_det"]; $nombre_cuentas =$rowd["nombre"]; ///////////////////////////// if($asiento_movimiento=="D"){ echo '<tr><td width="50%"><div align="right"><span class="titulo2">$ '.$asiento_valor.'</span></div></td></tr>'; }else{ echo '<tr><td width="50%"><div align="right"><span class="titulo2"></span></div></td></tr>'; }} ?>
138
</table></td> </tr> <? if($concepto_cab!=""){?> <tr> <td class="detalle"><span class="dia"> </span></td> </tr> <? }?> </table></td> <td valign="bottom" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr> <td><div align="center" class="detalle"> </div></td> </tr> <tr> <td><table width="100%" border="0" cellspacing="2" cellpadding="0"> <? $queryd = mysql_query("SELECT * FROM con_det_asiento,con_plan_cuentas WHERE con_det_asiento.cod_cab_asiento=".$cod_cab." AND con_plan_cuentas.cod_plan_cuentas=con_det_asiento.cod_plan_cuentas ORDER BY con_det_asiento.movimiento ASC"); while($rowd = mysql_fetch_array($queryd,$liconexion)){ $cod_det_asiento= $rowd["cod_det_asiento"]; $cod_plan_cuentas= $rowd["cod_plan_cuentas"]; $asiento_movimiento = $rowd["movimiento"]; $asiento_valor= $rowd["valor_det"]; $nombre_cuentas =$rowd["nombre"]; ///////////////////////////// if($asiento_movimiento=="D"){ echo '<tr><td width="50%"><div align="right"><span class="titulo2"></span></div></td></tr>'; }else{ echo '<tr><td width="50%"><div align="right"><span class="titulo2">$ '.$asiento_valor.'</span></div></td></tr>'; }} ?> </table></td> </tr> <? if($concepto_cab!=""){?> <tr> <td class="dia"> </td> </tr> <? }?> </table></td> </tr> <? }?> <tr> <td bgcolor="#FFFFFF"> </td> <td bgcolor="#FFFFFF"> </td> <td colspan="2" bgcolor="#FFFFFF" class="detalle"><div align="right">TOTAL</div></td> <td bgcolor="#FFFFFF"> </td> <td bgcolor="#FFFFFF"><div align="right"><span class="detalle">$ <?php
139
if(($sucursales==0)&&($modulo==0)){ $queryd = mysql_query("SELECT sum(valor_det) debe FROM con_det_asiento d, con_cab_asiento a WHERE ((d.cod_cab_asiento = a.cod_cab_asiento and (movimiento = 'D' ) and a.fecha >='$desde' and a.fecha <='$hasta'))"); } if(($sucursales!=0)&&($modulo==0)){ $queryd = mysql_query("SELECT sum(valor_det) debe FROM con_det_asiento d, con_cab_asiento a WHERE ((d.cod_cab_asiento = a.cod_cab_asiento and (movimiento = 'D' ) and a.fecha >='$desde' and a.fecha <='$hasta')) and (a.cod_sucursal='$sucursales')"); } if(($sucursales!=0)&&($modulo!=0)){ $queryd = mysql_query("SELECT sum(valor_det) debe FROM con_det_asiento d, con_cab_asiento a WHERE ((d.cod_cab_asiento = a.cod_cab_asiento and (movimiento = 'D' ) and a.fecha >='$desde' and a.fecha <='$hasta')) and (a.cod_sucursal= '$sucursales') and (d.cod_modulo_erp='$modulo')"); } if(($sucursales==0)&&($modulo!=0)){ $queryd = mysql_query("SELECT sum(valor_det) debe FROM con_det_asiento d, con_cab_asiento a WHERE ((d.cod_cab_asiento = a.cod_cab_asiento and (movimiento = 'D' ) and a.fecha >='$desde' and a.fecha <='$hasta')) and (d.cod_modulo_erp='$modulo')"); } $rowd=mysql_fetch_array($queryd); echo $rowd["debe"]; ?> </span></div></td> <td bgcolor="#FFFFFF"> <div align="right"><span class="detalle">$ <?php if(($sucursales==0)&&($modulo==0)){ $queryd = mysql_query("SELECT sum(valor_det) haber FROM con_det_asiento d, con_cab_asiento a WHERE ((d.cod_cab_asiento = a.cod_cab_asiento and (movimiento = 'H' ) and a.fecha >='$desde' and a.fecha <='$hasta'))"); } if(($sucursales!=0)&&($modulo==0)){ $queryd = mysql_query("SELECT sum(valor_det) haber FROM con_det_asiento d, con_cab_asiento a WHERE ((d.cod_cab_asiento = a.cod_cab_asiento and (movimiento = 'H' ) and a.fecha >='$desde' and a.fecha <='$hasta')) and (a.cod_sucursal='$sucursales')"); } if(($sucursales!=0)&&($modulo!=0)){ $queryd = mysql_query("SELECT sum(valor_det) haber FROM con_det_asiento d, con_cab_asiento a WHERE ((d.cod_cab_asiento = a.cod_cab_asiento and (movimiento = 'H' ) and a.fecha >='$desde' and a.fecha <='$hasta')) and (a.cod_sucursal= '$sucursales') and (d.cod_modulo_erp='$modulo')"); }
140
if(($sucursales==0)&&($modulo!=0)){ $queryd = mysql_query("SELECT sum(valor_det) haber FROM con_det_asiento d, con_cab_asiento a WHERE ((d.cod_cab_asiento = a.cod_cab_asiento and (movimiento = 'H' ) and a.fecha >='$desde' and a.fecha <='$hasta')) and (d.cod_modulo_erp='$modulo')"); } $rowd=mysql_fetch_array($queryd); echo $rowd["haber"]; ?> </span></div> </td> </tr> </table> </body> </html>
141
exporta-mayor-exel.php
<?php // inicio sesion session_start(); // llamo a conexion include("Conexion/Conexsql.php"); ?> <?php $periodoa = $_GET["periodoa"]; $periodom = $_GET["periodom"]; $sucursal = $_GET["sucursal"]; $cuentanum = $_GET["cuenta"]; header("Content-Type: application/vnd.ms-excel"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("content-disposition: attachment;filename=reporte-mayor-".$periodoa."-".$periodom."-".$sucursal.".xls"); ?> <HTML LANG="es"> <title>consulta bd</title> <TITLE>Eliminación de areas</TITLE> <style type="text/css"> <!-- .encabezado { font-family: Arial; text-align: center; color: #069; font-size: 24px; font-weight: bold; } .libro { font-family: Arial; font-size: 16px; font-weight: bold; } .cabeza { font-family: Arial; font-size: 12px; font-weight: bold; } .cabezadet { font-family: Arial; font-size: 12px; } .detalle { font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; } .dia { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
142
} .titulo { font-family: Arial, Helvetica, sans-serif; font-size: 12px; } .titulo2{ font-family: Arial, Helvetica, sans-serif; font-size: 12px; } body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; } --> </style> </head> <body> <table width="580" border="0" cellpadding="5" cellspacing="0"> <tr> <? $querye = mysql_query("SELECT * FROM gen_empresa WHERE cod_empresa ORDER BY cod_empresa ASC"); while($rowe = mysql_fetch_array($querye,$liconexion)){ $empresa = $rowe["razon_social"]; ?> <td colspan="6" bgcolor="#FFFFFF"><div align="center"><span class="encabezado">Empresa comercial "<? echo $empresa;?>"</span></div></td> <? }?> </tr> <tr> <td colspan="6" bgcolor="#FFFFFF"><div align="center"><span class="libro">Libro Mayor</span></div></td> </tr> <tr> <? $querysu = mysql_query("SELECT nombre FROM gen_sucursal WHERE cod_sucursal='$sucursal'"); $rowsu=mysql_fetch_array($querysu); $sucursal_n = $rowsu["nombre"]; ?> <td colspan="6" bgcolor="#FFFFFF"><div align="center"><span class="libro"><strong>SUCURSAL: </strong></span><span class="libro"><? echo $sucursal_n;?></span></div></td> </tr> </table> <? if($cuentanum!=""){ $querycu = mysql_query("SELECT cod_plan_cuentas, codigo_cuenta, nombre FROM con_plan_cuentas WHERE codigo_cuenta='$cuentanum' AND clase = 'C' ORDER BY codigo_cuenta ASC");
143
}else{ $querycu = mysql_query("SELECT cod_plan_cuentas, codigo_cuenta, nombre FROM con_plan_cuentas where clase = 'C' ORDER BY codigo_cuenta ASC"); } while($rowcu = mysql_fetch_array($querycu,$liconexion)){ $cod_plan_cuentas = $rowcu["cod_plan_cuentas"]; $codigo_cuenta = $rowcu["codigo_cuenta"]; $nombre_cuenta = $rowcu["nombre"]; /*if(($periodoa!=0)&&($periodom==0)){ $query = mysql_query("SELECT fecha_crea, cod_cab_asiento, (SELECT concepto FROM con_cab_asiento WHERE cod_cab_asiento = A.cod_cab_asiento ) as 'Concepto', movimiento, valor_det FROM con_det_asiento as A WHERE cod_plan_cuentas = '$cod_plan_cuentas' and periodoa= '$periodoa' and periodom=13 and cod_sucursal ='$sucursal' and estado = 'A'"); } if(($periodoa!=0)&&($periodom!=0)){*/ $query = mysql_query("SELECT fecha_crea, cod_cab_asiento, (SELECT concepto FROM con_cab_asiento WHERE cod_cab_asiento = A.cod_cab_asiento ) as 'Concepto', movimiento, valor_det FROM con_det_asiento as A WHERE cod_plan_cuentas = '$cod_plan_cuentas' and periodoa= '$periodoa' and periodom= '$periodom' and cod_sucursal ='$sucursal' and estado = 'A'"); $rownum = mysql_num_rows($query); $periodom_ant = $periodom-1; $querysa= mysql_query("SELECT IFNULL(debe_actual,'0.00'), IFNULL(haber_actual,'0.00') FROM con_mayor_his WHERE cod_plan_cuentas='$cod_plan_cuentas' AND cod_sucursal='$sucursal' AND periodoa='$periodoa' AND periodom='$periodom_ant'"); $rowsa = mysql_fetch_array($querysa,$liconexion); if((($rowsa[0]!='0.00' and $rowsa[0]!='')or($rowsa[1]!='0.00' and $rowsa[1]!=''))or $rownum!=0 ){ // if($rownum!=0 ){ ?> <table width="580" border="1" cellspacing="0" cellpadding="5"> <tr> <td colspan="6" bgcolor="#FFFFFF"><span class="titulo"><strong>CUENTA:</strong></span> <span class="titulo2"><? echo $nombre_cuenta;?></span></td> </tr> <tr> <td colspan="6" bgcolor="#FFFFFF"><span class="titulo"><strong>CODIGO:</strong></span> <span class="titulo2"><? echo $codigo_cuenta;?></span></td> </tr> <tr class="titulo"> <td width="11%" bgcolor="#0099FF"><strong>FECHA</strong></td> <td width="6%" bgcolor="#0099FF"><strong>REF</strong></td> <td width="43%" bgcolor="#0099FF"><strong>CONCEPTO</strong></td> <td width="14%" bgcolor="#0099FF"><strong>DEBE</strong></td> <td width="13%" bgcolor="#0099FF"><strong>HABER</strong></td>
144
<td width="13%" bgcolor="#0099FF"><strong>SALDO</strong></td> </tr> <?php /*if(($periodoa!=0)&&($periodom==0)){ $query = mysql_query("SELECT fecha_crea, cod_cab_asiento, (SELECT concepto FROM con_cab_asiento WHERE cod_cab_asiento = A.cod_cab_asiento ) as 'Concepto', movimiento, valor_det FROM con_det_asiento as A WHERE cod_plan_cuentas = '$cod_plan_cuentas' and periodoa= '$periodoa' and periodom=13 and cod_sucursal ='$sucursal' and estado = 'A'"); } if(($periodoa!=0)&&($periodom!=0)){*/ $query = mysql_query("SELECT fecha_crea, cod_cab_asiento, (SELECT concepto FROM con_cab_asiento WHERE cod_cab_asiento = A.cod_cab_asiento ) as 'Concepto', movimiento, valor_det FROM con_det_asiento as A WHERE cod_plan_cuentas = '$cod_plan_cuentas' and periodoa= '$periodoa' and periodom= '$periodom' and cod_sucursal ='$sucursal' and estado = 'A'"); if($periodom!=1){ $periodom_ant = $periodom-1; $querysa= mysql_query("SELECT IFNULL(debe_actual,'0.00'), IFNULL(haber_actual,'0.00') FROM con_mayor_his WHERE cod_plan_cuentas='$cod_plan_cuentas' AND cod_sucursal='$sucursal' AND periodoa='$periodoa' AND periodom='$periodom_ant'"); $rowsa = mysql_fetch_array($querysa,$liconexion); $debe_ant = $rowsa[0]; if($debe_ant=='') $haber_ant = $rowsa[1]; if($haber_ant=='') //$saldo_ant = $debe_ant - $haber_ant; $cc = substr($codigo_cuenta,0,1); if(($cc==1)or($cc==5)) $saldo_ant = $debe_ant - $haber_ant; else $saldo_ant = $haber_ant- $debe_ant; echo $dh1 =' <td width="8%" valign="top" bgcolor="#FFFFFF"><div align="center" class="detalle">'.$periodoa.' / '.$periodom_ant.'</div></td> <td width="4%" valign="top" bgcolor="#FFFFFF"><div align="center" class="dia"> </div></td> <td valign="top" bgcolor="#FFFFFF"><span class="detalle">SALDO PERIODO ANTERIOR</span></td> <td bgcolor="#FFFFFF"><div align="right"><span class="titulo2">$ '.number_format($debe_ant,2).'</span></div></td> <td bgcolor="#FFFFFF"><div align="right"><span class="titulo2">$ '.number_format($haber_ant,2).'</span></div></td> <td valign="top" bgcolor="#FFFFFF"><div align="right"><span class="titulo2">$ '.number_format($saldo_ant,2).'</span></div></td>'; $saldo = $saldo_ant;
145
} while($row = mysql_fetch_array($query,$liconexion)){ $fecha = $row["fecha_crea"]; $cod_cab_asiento = $row["cod_cab_asiento"]; $concepto_cab = $row["Concepto"]; $movimiento = $row["movimiento"]; $valor_det = $row["valor_det"]; if($movimiento=="D"){ $saldo = $saldo + $valor_det; $valortd = $valortd + $valor_det; $dh =' <td width="8%" valign="top" bgcolor="#FFFFFF"><div align="center" class="detalle">'.$fecha.'</div></td> <td width="4%" valign="top" bgcolor="#FFFFFF"><div align="center" class="dia">'.$cod_cab_asiento.'</div></td> <td valign="top" bgcolor="#FFFFFF"><span class="detalle">'.$concepto_cab.'</span></td> <td bgcolor="#FFFFFF"><div align="right"><span class="titulo2">$ '.number_format($valor_det,2).'</span></div></td> <td bgcolor="#FFFFFF"><div align="right"><span class="titulo2"> </span></div></td> <td valign="top" bgcolor="#FFFFFF"><div align="right"><span class="titulo2">$ '.number_format($saldo,2).'</span></div></td>'; }else{ $saldo = $saldo - $valor_det; $valorth = $valorth + $valor_det; $dh = ' <td width="8%" valign="top" bgcolor="#FFFFFF"><div align="center" class="detalle">'.$fecha.'</div></td> <td width="4%" valign="top" bgcolor="#FFFFFF"><div align="center" class="dia">'.$cod_cab_asiento.'</div></td> <td valign="top" bgcolor="#FFFFFF"><span class="detalle">'.$concepto_cab.'</span></td> <td bgcolor="#FFFFFF"><div align="right"><span class="titulo2"> </span></div></td> <td bgcolor="#FFFFFF"><div align="right"><span class="titulo2">$ '.number_format($valor_det,2).'</span></div></td> <td valign="top" bgcolor="#FFFFFF"><div align="right"><span class="titulo2">$ '.number_format($saldo,2).'</span></div></td>'; } ?> <tr> <? echo $dh;?></tr> <? } $valortd = $valortd + $debe_ant; $valorth = $valorth + $haber_ant; $valorts = $valortd - $valorth; $cc = substr($codigo_cuenta,0,1);
146
if(($cc==1)or($cc==5)) $valorts = $valortd - $valorth; else $valorts = $valorth - $valortd; /*if($valorts<0){ $valorts2 = $valorts * -1; }else{ $valorts2 = $valorts; }*/ $valortd2 = number_format($valortd,2); $valorth2 = number_format($valorth,2); $valorts2 = number_format($valorts,2); ?> <tr> <td colspan="3" bgcolor="#FFFFFF"><div align="right"><span class="detalle">TOTAL</span></div></td> <td bgcolor="#FFFFFF"><div align="right"><span class="titulo2"><? echo '$ '.$valortd2;?></span></div></td> <td valign="top" bgcolor="#FFFFFF"><div align="right"><span class="titulo2"><? echo '$ '.$valorth2;?></span></div></td> <td valign="top" bgcolor="#FFFFFF"><div align="right"><span class="titulo2"><? echo '$ '.$valorts2;?></span></div></td> </tr> </table><p></p><p></p> <? unset($valorth); unset($valortd); unset($saldo); }//if verifica campos }//if cuentas ?> </body> </html>
147
ProcesoBgeneral.php <?php //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); $anio= $_POST["anio"]; $mes= $_POST["mes"]; $suc= $_POST["suc"]; $user= $_POST["user"]; // llamo a conexion include("Conexion/Conexsqli.php"); if ($result = mysqli_query($link, "call sp_bgeneral_gen('$anio', '$mes', '$suc', '$user')")) { while ($row = mysqli_fetch_array($result)) { printf($row[0]."|".$row[1]); } mysqli_free_result($result); } else { die ("ERROR PROCESO BALANCE GENERAL"); } mysqli_close($link); ?>
148
ProcesoMayoriza.php <?php //esto es para decirle al cache de procesos del navegador que se desactive header("Cache-Control: no-store, no-cache, must-revalidate"); $anio= $_POST["anio"]; $mes= $_POST["mes"]; $suc= $_POST["suc"]; $user= $_POST["user"]; // llamo a conexion include("Conexion/Conexsqli.php"); if ($result = mysqli_query($link, "call sp_mayorizacion('$anio', '$mes', '$suc', '$user')")) { while ($row = mysqli_fetch_array($result)) { printf($row[0]."|".$row[1]); } mysqli_free_result($result); } else { die ("ERROR PROCESO MAYORIZACION"); } mysqli_close($link); ?>
149
graba-tipo.php <?php // inicio sesion session_start(); // llamo a conexion include("Conexion/Conexsql.php"); ?> <?php $siglas = $_POST["txt_siglas"]; $descripcion = $_POST["txt_descripcion"]; $transaccional = $_POST["opt_ind_transaccional"]; $presupuesto = $_POST["opt_ind_presupuesto"]; $user = $_POST["user"]; // $query= "select cod_tipo_doc from con_tipo_doc where siglas = '$siglas' and estado = 'A'"; $result= mysql_query($query,$liconexion); if (mysql_num_rows($result)>0){ printf ("ERROR DOCUMENTO YA EXISTE"); }else{ mysql_query("INSERT INTO con_tipo_doc(siglas,descripcion,ind_transaccional,ind_presupuesto,fech_crea,user_crea,estado)VALUES('$siglas', '$descripcion', '$transaccional', '$presupuesto', NOW(), '$user', 'A')",$liconexion); printf ("DOCUMENTO INGRESADO CON EXITO"); mysql_close($liconexion); } ?>
150
CONTA\JS\
asiento.js
ruta="php/"; // se utiliza para paginas individuales //ruta = "conta/php/"; //se utiliza con el contenedor raiz function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function CreaAsiento(idGrid, id1, id2, id3, id4, id5, id6, id7, id8){ var ajax=nuevoAjax(); var cadena; var cadena2; var error; var errorD="0"; ajax.open("POST", ruta+"IngresasientoCC.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("sucursal="+document.getElementById(id1).value+"&modulo_erp="+id2+"&tipo_doc="+document.getElementById(id3).value+ "&vtotal="+document.getElementById(id4).value+"&concepto="+document.getElementById(id5).value+"&user="+id6+"&ita="+document.getElementById(id7).value+"&fecha="+document.getElementById(id8).value); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar //document.getElementById("cta_desc").value = ajax.responseText; cadena = ajax.responseText; for(i=0; i<cadena.length; i++) {
151
if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } if(cadena == "0"){ //LLAMADO AL SP DE DETALLE DEL ASIENTO errorD = CreaAsientoDet(idGrid, cadena2, id2, document.getElementById(id4).value, document.getElementById(id1).value, document.getElementById(id7).value, document.getElementById(id8).value); if ( errorD != "0"){ alert ("PROCESO ABORTADO" + errorD); }else{ alert("ASIENTO EXITOSO"); document.form1.btnguardar.disabled = true; document.form1.btnagregar.disabled = true; } }else{ error = "ERROR:" + cadena + "MENSAJE:" + cadena2; alert(error); } } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } function CreaAsientoDet(idGrid, codcab, modulo, vtot, csuc, tas, fec){ var error; var cadena; var cadena2; var tabla = document.getElementById(idGrid); var filas = tabla.rows; if (filas.length > 1) { for(var i=1; i<filas.length; i++) {
152
var ajax=nuevoAjax(); var fila = filas[i]; var columnas = fila.cells; ajax.open("POST", ruta+"IngresasientoDC.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("ccab="+codcab+"&codcta="+columnas[1].innerHTML+"&mov="+columnas[3].innerHTML+ "&coderp="+modulo+"&valdet="+columnas[4].innerHTML+"&vtotal="+vtot+"&observa=observa"+"&pres="+columnas[5].innerHTML+"&sucursal="+csuc+"&ita="+tas+"&fecha="+fec); ajax.onreadystatechange=function() { if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar cadena = ajax.responseText; for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } if(cadena != "0"){ error = "ERROR:" + cadena + "MENSAJE:" + cadena2; return error; } } } } } return "0"; }
153
det-balance.js ruta="php/"; // se utiliza para paginas individuales //ruta = "conta/php/"; //se utiliza con el contenedor raiz function trim(cadena) { for(i=0; i<cadena.length; ) { if(cadena.charAt(i)==" ") cadena=cadena.substring(i+1, cadena.length); else break; } for(i=cadena.length-1; i>=0; i=cadena.length-1) { if(cadena.charAt(i)==" ") cadena=cadena.substring(0,i); else break; } return cadena; } function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function ConsultaBalance( id1, id2, id3){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-balance-general.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // var aaaa = "firstinput="+id1+"&secondinput="+id2+"&sucursales="+id3+ "&modulo="+id4; ajax.send("periodoa="+id1+"&periodom="+id2+"&sucursal="+id3);
154
ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar // document.getElementById("con").innerHTML = ajax.responseText; str = ajax.responseText; document.getElementById("con").innerHTML = str.substring(0, str.length-1); if (str != "" && str.substring(str.length-1, str.length) == "1") document.form1.Aprobar.disabled = false; //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } // function ConsultaBalancec( id1, id2){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-balance-general-cons.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("periodoa="+id1+"&periodom="+id2); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar // document.getElementById("con").innerHTML = ajax.responseText; str = ajax.responseText; document.getElementById("con").innerHTML = str.substring(0, str.length-1); /* if (str != "" && str.substring(str.length-1, str.length) == "1") document.form1.Aprobar.disabled = false;*/ //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; }
155
// if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } // function ApruebaBG( id1, id2, id3){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Apruebabgeneral.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("periodoa="+id1+"&periodom="+id2+"&sucursal="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar if (ajax.responseText == "0"){ document.form1.Aprobar.disabled= true; alert("BALANCE GENERAL APROBADO"); }else alert("ERROR APROBACION BALANCE GENERAL"); } } } function procesoBinicial(id1, id2){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"ProcesoBinicial.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&suc="+id2); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = ajax.responseText; if (trim(ajax.responseText) == "0|") ConsultaBalanceI(id1, id2); //alert("PROCESO BALANCE GENERAL EXITOSO"); else{ for(i=0; i<cadena.length; i++)
156
{ if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } } function ConsultaBalanceI(id1, id2){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-balance-inicial.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("periodoa="+id1+"&sucursal="+id2); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar document.getElementById("con").innerHTML = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } function procesoMayorizaAjcons(id1, id2, id3){ var ajax=nuevoAjax(); var cadena; var cadena2; var Cerror; var error; ajax.open("POST", ruta+"ProcesoMayorizaAj_cons.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
157
ajax.send("anio="+id1+"&mes="+id2+"&user="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = ajax.responseText; if (trim(ajax.responseText) == "0|"){ procesoBGCons(id1, id2); // ConsultaBalancec(id1, id2); }else{ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } } function procesoBGCons(id1, id2){ var ajax=nuevoAjax(); var cadena; var cadena2; var id3 = 'xxxx'; ajax.open("POST", ruta+"ProcesoBgeneral_cons.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&mes="+id2+"&user="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = ajax.responseText; if (trim(ajax.responseText) == "0|") ConsultaBalancec(id1, id2); else{ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") {
158
cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } }
det-mayor.js ruta="php/"; // se utiliza para paginas individuales //ruta = "conta/php/"; //se utiliza con el contenedor raiz function trim(cadena) { for(i=0; i<cadena.length; ) { if(cadena.charAt(i)==" ") cadena=cadena.substring(i+1, cadena.length); else break; } for(i=cadena.length-1; i>=0; i=cadena.length-1) { if(cadena.charAt(i)==" ") cadena=cadena.substring(0,i); else break; } return cadena; } function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){
159
if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function ConsultaDetalle( id1, id2, id3,id4){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-detalle-mayor.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // var aaaa = "firstinput="+id1+"&secondinput="+id2+"&sucursales="+id3+ "&modulo="+id4; ajax.send("periodoa="+id1+"&periodom="+id2+"&sucursal="+id3+"&cuenta="+id4); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar document.getElementById("con").innerHTML = ajax.responseText; //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } // function ConsultaSumas( id1, id2, id3){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-detalle-sumas-saldos.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // var aaaa = "firstinput="+id1+"&secondinput="+id2+"&sucursales="+id3+ "&modulo="+id4; ajax.send("periodoa="+id1+"&periodom="+id2+"&sucursal="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar document.getElementById("con").innerHTML = ajax.responseText; //document.getElementById('con').innerHTML = "PRUEBA";
160
//cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } function ConsultaSumasCons( id1, id2){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-detalle-sumas-saldos-cons.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // var aaaa = "firstinput="+id1+"&secondinput="+id2+"&sucursales="+id3+ "&modulo="+id4; ajax.send("periodoa="+id1+"&periodom="+id2); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar document.getElementById("con").innerHTML = ajax.responseText; //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } function procesoMayorCons(id1, id2){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"ProcesoMayoriza_cons.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&mes="+id2); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = ajax.responseText; if (trim(ajax.responseText) == "0|")
161
ConsultaSumasCons(id1, id2); else{ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } }
162
det-pyg.js ruta="php/"; // se utiliza para paginas individuales //ruta = "conta/php/"; //se utiliza con el contenedor raiz function trim(cadena) { for(i=0; i<cadena.length; ) { if(cadena.charAt(i)==" ") cadena=cadena.substring(i+1, cadena.length); else break; } for(i=cadena.length-1; i>=0; i=cadena.length-1) { if(cadena.charAt(i)==" ") cadena=cadena.substring(0,i); else break; } return cadena; } function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function Consultapyg( id1, id2, id3){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-perdidas-ganancias.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // var aaaa = "firstinput="+id1+"&secondinput="+id2+"&sucursales="+id3+ "&modulo="+id4; ajax.send("periodoa="+id1+"&periodom="+id2+"&sucursal="+id3);
163
ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar str = ajax.responseText; document.getElementById("con").innerHTML = str.substring(0, str.length-1); if (str != "" && str.substring(str.length-1, str.length) == "1") document.form1.Aprobar.disabled = false; //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } /// function Consultapygmes(id1, id2, id3){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-perdidas-ganancias-mes.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // var aaaa = "firstinput="+id1+"&secondinput="+id2+"&sucursales="+id3+ "&modulo="+id4; ajax.send("periodoa="+id1+"&periodom="+id2+"&sucursal="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar document.getElementById("con").innerHTML = ajax.responseText; //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } }
164
//// function Consultapygc( id1, id2){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-perdidas-ganancias_cons.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("periodoa="+id1+"&periodom="+id2); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar str = ajax.responseText; document.getElementById("con").innerHTML = str.substring(0, str.length-1); /* if (str != "" && str.substring(str.length-1, str.length) == "1") document.form1.Aprobar.disabled = false;*/ //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } /// function procesoMayorizaAj(id1, id2, id3, id4){ var ajax=nuevoAjax(); var cadena; var cadena2; var Cerror; var error; ajax.open("POST", ruta+"ProcesoMayorizaAj.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&mes="+id2+"&suc="+id3+"&user="+id4); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = ajax.responseText; if (trim(ajax.responseText) == "0|"){ document.form1.Aprobar.disabled = true;
165
alert ("PERDIDAS Y GANANCIAS APROBADO"); //ActuactaPYG(id1, id2, id3, id4); }else{ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } } function ActuactaPYG(id1, id2, id3, id4){ var ajax=nuevoAjax(); var cadena; var cadena2; var error =0; ajax.open("POST", ruta+"ActuactaPYG.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&mes="+id2+"&suc="+id3+"&user="+id4); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = ajax.responseText; if (trim(ajax.responseText) == "0|"){ alert ("PERDIDAS Y GANANCIAS APROBADO"); }else{ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; }
166
} error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } } function procesoPYGCons(id1, id2){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"ProcesoPYG_cons.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&mes="+id2); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = ajax.responseText; if (trim(ajax.responseText) == "0|") Consultapygc(id1, id2); else{ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } }
167
diario.js ruta="php/"; // se utiliza para paginas individuales //ruta = "conta/php/"; //se utiliza con el contenedor raiz function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function ConsultaDetalle( id1, id2, id3, id4){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-detalle-diario.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // var aaaa = "firstinput="+id1+"&secondinput="+id2+"&sucursales="+id3+ "&modulo="+id4; ajax.send("firstinput="+id1+"&secondinput="+id2+"&sucursales="+id3+ "&modulo="+id4); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar document.getElementById("con").innerHTML = ajax.responseText; //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } }
168
periodos-mes.js ruta=""; // se utiliza para paginas individuales //ruta="conta/"; // se utiliza con el contenedor function trim(cadena) { for(i=0; i<cadena.length; ) { if(cadena.charAt(i)==" ") cadena=cadena.substring(i+1, cadena.length); else break; } for(i=cadena.length-1; i>=0; i=cadena.length-1) { if(cadena.charAt(i)==" ") cadena=cadena.substring(0,i); else break; } return cadena; } function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function Consultames(id1){ var ajax=nuevoAjax(); var cadena; ajax.open("POST", ruta+"php/Consultames.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+document.getElementById(id1).value); ajax.onreadystatechange=function(){
169
if (ajax.readyState==4){ if (trim(ajax.responseText) != "0"){ alert("PERIODO MENSUAL YA EXISTENTE"); document.getElementById(id1).focus(); } } } } function Creapermes(id1, id2,id3){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Ingresapermes.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anioc="+document.getElementById(id1).value+"&mes="+document.getElementById(id2).value+"&user="+id3); //ajax.send("anioc="+document.getElementById(id1).value+"&ini="+document.getElementById(id2).value+"&fin="+document.getElementById(id3).value+"&mes="+document.getElementById(id4).value+"&desc="+document.getElementById(id5).value+"&user="+id6); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar //document.getElementById("cta_desc").value = ajax.responseText; cadena = trim(ajax.responseText); if(cadena != "0|"){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); }else alert("INGRESO PERIODO MENSUAL EXITOSO"); }
170
} } function crearfila(id,arreglo) { var accion = "insert"; if (accion=="insert") { var escoge = document.createElement('IMG'); escoge.setAttribute('src', ruta+'grid/img/b_new.png'); escoge.onclick = function() { escogeRow(id, escoge) } var tabla= document.getElementById(id); var tbody = tabla.tBodies[0]; tabla.setAttribute("border","0") tabla.setAttribute("cellpadding","0") tabla.setAttribute("cellspacing","0") var row = document.createElement("TR") row.setAttribute("class","fontTabla") row.onmouseover = function () { this.bgColor='#D5F1FF'; this.style.cursor="hand"; } row.onmouseout = function () { this.bgColor='#FFFFFF'; this.style.cursor="hand"; } var td1 = document.createElement("TD") td1.appendChild(escoge) //pego el check a la celda td1.setAttribute("class","celda2") row.appendChild(td1); //pego la celda a la fina //aqui creo las filas con los datos recordando que cada posicion del arrelo es en realidad una referencia a //un objeto html var td2 = document.createElement("TD") td2.setAttribute("class","celda2") var td3 = document.createElement("TD")
171
td3.setAttribute("class","celda2") td2.innerHTML= arreglo[0] td3.innerHTML= arreglo[1] row.appendChild(td2); row.appendChild(td3); tbody.appendChild(row); } } function crearfila2(id,arreglo) { var accion = "insert"; if (accion=="insert") { var escoge = document.createElement('IMG'); escoge.setAttribute('src', ruta+'grid/img/b_new.png'); escoge.onclick = function() { escogeRow2(id, escoge) } var tabla= document.getElementById(id); var tbody = tabla.tBodies[0]; tabla.setAttribute("border","0") tabla.setAttribute("cellpadding","0") tabla.setAttribute("cellspacing","0") var row = document.createElement("TR") row.setAttribute("class","fontTabla") row.onmouseover = function () { this.bgColor='#D5F1FF'; this.style.cursor="hand"; } row.onmouseout = function () { this.bgColor='#FFFFFF'; this.style.cursor="hand"; } var td1 = document.createElement("TD") td1.appendChild(escoge) //pego el check a la celda td1.setAttribute("class","celda2") row.appendChild(td1); //pego la celda a la fina
172
//aqui creo las filas con los datos recordando que cada posicion del arrelo es en realidad una referencia a //un objeto html var td2 = document.createElement("TD") td2.setAttribute("class","celda2") var td3 = document.createElement("TD") td3.setAttribute("class","celda2") var td4 = document.createElement("TD") td4.setAttribute("class","celda2") td2.innerHTML= arreglo[0] td3.innerHTML= arreglo[1] td4.innerHTML= arreglo[2] row.appendChild(td2); row.appendChild(td3); row.appendChild(td4); tbody.appendChild(row); } } function escogeRow(id, imagen){ var tbody = document.getElementById(id).tBodies[0]; var tdPadre = imagen.parentNode; rowPadre = tdPadre.parentNode; // document.getElementById('txtperiodo').value = rowPadre.cells[1].textContent; // document.getElementById('txtdescrip').value = rowPadre.cells[2].textContent; document.getElementById('txtperiodo').value = rowPadre.cells[1].innerHTML; // document.getElementById('txtdescrip').value = rowPadre.cells[2].innerHTML; } function escogeRow2(id, imagen){ var tbody = document.getElementById(id).tBodies[0]; var tdPadre = imagen.parentNode; rowPadre = tdPadre.parentNode; // document.getElementById('txtperiodo').value = rowPadre.cells[1].textContent; // document.getElementById('txtdescrip').value = rowPadre.cells[2].textContent; document.getElementById('txtanio').value = rowPadre.cells[1].innerHTML; document.getElementById('txtmes').value = rowPadre.cells[2].innerHTML;
173
document.getElementById('txtdescrip').value = rowPadre.cells[3].innerHTML; } function cargarPera(band){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Consultapera.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("flag="+band); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = trim(ajax.responseText); if(cadena != ""){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)==";") { var corte = cadena.substring(0, i); var corte2; for(j=0; j<corte.length; j++) { if(corte.charAt(j)=="|") { corte2= corte.substring(j+1, corte.length); corte=corte.substring(0, j); var arreglo = new Array (corte, corte2); crearfila('tablaDetalle',arreglo); break; } } cadena = cadena.substring(i+1, cadena.length); i= 0; } } } } } }
174
function cargarPerm(band){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Consultaperm.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("flag="+band); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = trim(ajax.responseText); if(cadena != ""){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)==";") { var corte = cadena.substring(0, i); var FragTexto = corte.split('|'); var arreglo = new Array (FragTexto[0], FragTexto[1], FragTexto[2]); crearfila2('tablaDetalle',arreglo); cadena = cadena.substring(i+1, cadena.length); i= 0; } } } } } } function activarPerm(id1, id2, id3){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Activapermes.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anioc="+document.getElementById(id1).value+"&mes="+document.getElementById(id2).value+"&user="+id3); ajax.onreadystatechange=function(){
175
if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar //document.getElementById("cta_desc").value = ajax.responseText; cadena = trim(ajax.responseText); if(cadena != "0|"){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); }else alert("ACTIVACION PERIODO MENSUAL EXITOSO"); } } } function cargarPerm2(band, id1, id2, id3){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Consultaperm.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("flag="+band); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = trim(ajax.responseText); if(cadena != "") { var FragTexto = cadena.split('|'); document.getElementById(id1).value = FragTexto[0]; document.getElementById(id2).value = FragTexto[1];
176
document.getElementById(id3).value = FragTexto[2].substring(0, FragTexto[2].length-1); }else{ document.form1.btnactivar.disabled = true; alert("NO EXISTE PERIODO ACTIVO"); } } } } function cierraPerm(id1, id2, id3) { var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Cierrapermes.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+document.getElementById(id1).value+"&mes="+document.getElementById(id2).value+"&user="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = trim(ajax.responseText); if(cadena != "0|"){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); }else alert("CIERRE DE PERIODO MENSUAL EXITOSO"); } } } function CambioPerm(id1, id2, id3, id4){
177
var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Cambiapermes.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anioc="+document.getElementById(id1).value+"&mes="+document.getElementById(id2).value+"&cambio="+document.getElementById(id3).value+"&user="+id4); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar //document.getElementById("cta_desc").value = ajax.responseText; cadena = trim(ajax.responseText); if(cadena != "0|"){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); }else alert("CAMBIO ESTADO MENSUAL EXITOSO"); } } }
178
periodos.js ruta=""; // se utiliza para paginas individuales //ruta="conta/"; // se utiliza con el contenedor function trim(cadena) { for(i=0; i<cadena.length; ) { if(cadena.charAt(i)==" ") cadena=cadena.substring(i+1, cadena.length); else break; } for(i=cadena.length-1; i>=0; i=cadena.length-1) { if(cadena.charAt(i)==" ") cadena=cadena.substring(0,i); else break; } return cadena; } function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function Consultanio(id1){ var ajax=nuevoAjax(); var cadena; ajax.open("POST", ruta+"php/Consultanio.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+document.getElementById(id1).value); ajax.onreadystatechange=function(){ if (ajax.readyState==4){
179
if (trim(ajax.responseText) != "0"){ alert("PERIODO YA EXISTENTE"); document.getElementById(id1).focus(); } } } } function Creaperanual(id1, id2, id3){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Ingresaperanual.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anioc="+document.getElementById(id1).value+"&ref="+document.getElementById(id2).value+"&user="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar //document.getElementById("cta_desc").value = ajax.responseText; cadena = trim(ajax.responseText); if(cadena != "0|"){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); }else alert("INGRESO DE PERIODO EXITOSO"); } } } function crearfila(id,arreglo)
180
{ var accion = "insert"; if (accion=="insert") { var escoge = document.createElement('IMG'); escoge.setAttribute('src', ruta+'grid/img/b_new.png'); escoge.onclick = function() { escogeRow(id, escoge) } var tabla= document.getElementById(id); var tbody = tabla.tBodies[0]; tabla.setAttribute("border","0") tabla.setAttribute("cellpadding","0") tabla.setAttribute("cellspacing","0") var row = document.createElement("TR") row.setAttribute("class","fontTabla") row.onmouseover = function () { this.bgColor='#D5F1FF'; this.style.cursor="hand"; } row.onmouseout = function () { this.bgColor='#FFFFFF'; this.style.cursor="hand"; } var td1 = document.createElement("TD") td1.appendChild(escoge) //pego el check a la celda td1.setAttribute("class","celda2") row.appendChild(td1); //pego la celda a la fina //aqui creo las filas con los datos recordando que cada posicion del arrelo es en realidad una referencia a //un objeto html var td2 = document.createElement("TD") td2.setAttribute("class","celda2") var td3 = document.createElement("TD") td3.setAttribute("class","celda2") td2.innerHTML= arreglo[0] td3.innerHTML= arreglo[1]
181
row.appendChild(td2); row.appendChild(td3); tbody.appendChild(row); } } function escogeRow(id, imagen){ var tbody = document.getElementById(id).tBodies[0]; var tdPadre = imagen.parentNode; rowPadre = tdPadre.parentNode; // document.getElementById('txtperiodo').value = rowPadre.cells[1].textContent; // document.getElementById('txtdescrip').value = rowPadre.cells[2].textContent; document.getElementById('txtperiodo').value = rowPadre.cells[1].innerHTML; document.getElementById('txtdescrip').value = rowPadre.cells[2].innerHTML; } function cargarPera(band){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Consultapera.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("flag="+band); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = trim(ajax.responseText); if(cadena != ""){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)==";") { var corte = cadena.substring(0, i); var corte2; for(j=0; j<corte.length; j++) { if(corte.charAt(j)=="|") {
182
corte2= corte.substring(j+1, corte.length); corte=corte.substring(0, j); var arreglo = new Array (corte, corte2); crearfila('tablaDetalle',arreglo); break; } } cadena = cadena.substring(i+1, cadena.length); i= 0; } } } } } } function cargarPera2(band, id1, id2){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Consultapera.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("flag="+band); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = trim(ajax.responseText); if(cadena != "") { for(j=0; j<cadena.length; j++) { if(cadena.charAt(j)=="|") { corte2= cadena.substring(j+1, cadena.length-1); cadena=cadena.substring(0, j); document.getElementById(id1).value = cadena; document.getElementById(id2).value = corte2; break; }
183
} }else{ document.form1.btnactivar.disabled = true; alert("NO EXISTE PERIODO VERIFICADO"); } } } } function activarPera(id1, id2, id3) { var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Activaperanual.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+document.getElementById(id1).value+"&descrip="+document.getElementById(id2).value+"&user="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = trim(ajax.responseText); if(cadena != "0|"){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); }else alert("ACTIVACION PERIODO EXITOSO"); } } } function cierraPera(id1, id2, id3) { var ajax=nuevoAjax();
184
var cadena; var cadena2; ajax.open("POST", ruta+"php/Cierraperanual.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+document.getElementById(id1).value+"&descrip="+document.getElementById(id2).value+"&user="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ cadena = trim(ajax.responseText); if(cadena != "0|"){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); }else alert("CIERRE DE PERIODO EXITOSO"); } } } function CambioPera(id1, id2, id3, id4) { var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/Cambioperanual.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+document.getElementById(id1).value+"&descrip="+document.getElementById(id2).value+"&cambio="+document.getElementById(id3).value+"&user="+id4); ajax.onreadystatechange=function(){ if (ajax.readyState==4){
185
cadena = trim(ajax.responseText); if(cadena != "0|"){ for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); }else alert("CAMBIO ESTADO CONTABLE EXITOSO"); } } }
186
plan_cuenta.js ruta="php/"; // se utiliza para paginas individuales //ruta = "conta/php/"; //se utiliza con el contenedor raiz function trim(cadena) { for(i=0; i<cadena.length; ) { if(cadena.charAt(i)==" ") cadena=cadena.substring(i+1, cadena.length); else break; } for(i=cadena.length-1; i>=0; i=cadena.length-1) { if(cadena.charAt(i)==" ") cadena=cadena.substring(0,i); else break; } return cadena; } function validaCta(e) { var keynum var keychar var numcheck var dotcheck var tf = false if(e.which) // Netscape/Firefox/Opera keynum = e.which else keynum = e.keyCode // IE keychar = String.fromCharCode(keynum) numcheck = /[0-9]/ dotcheck = /./ if (numcheck.test(keychar) || (keychar==".") || (keynum==8) || (keynum==9) ) tf = true; return tf } function nuevoAjax(){
187
var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function conscuenta(id1, id2, flag){ var ajax=nuevoAjax(); if (document.getElementById(id1).value != ""){ ajax.open("POST", ruta+"Consultacta.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("codcta="+document.getElementById(id1).value+"&flag="+flag); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar if (trim(ajax.responseText) == "NN"){ document.getElementById(id2).value = ""; alert("NO EXISTE CUENTA CONTABLE"); document.getElementById(id1).focus(); }else document.getElementById("cta_desc").value = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } }else document.getElementById(id2).value = ""; } function consnmn(id1,IdCta,IdOper){ var ajax=nuevoAjax(); if (document.getElementById(id1).value != ""){ ajax.open("POST", ruta+"Consultanmn.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
188
ajax.send("nemonico="+document.getElementById(id1).value+"&IdCta="+document.getElementById(IdCta).value+"&IdOper="+IdOper); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar if (trim(ajax.responseText) != "NN"){ document.getElementById("nemo").value = ""; alert("NEMONICO YA EXISTENTE UTILIZE OTRO"); document.getElementById(id1).focus(); } } } } } function Creaplan(id1, id2, id3, id4, id5, id6){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Ingresacta.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("codcta="+document.getElementById(id1).value+"&clasecta="+document.getElementById(id2).value+"&nombre="+document.getElementById(id3).value+ "&presup="+document.getElementById(id4).value+"&descrip="+document.getElementById(id5).value+"&nemonico="+document.getElementById(id6).value); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar if (ajax.responseText !=" ") alert(ajax.responseText); else //alert("REGISTRO EXITOSO"); javascript:location.reload(true); } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } } //nuevo function MenuCuentas(id) { var theimage;
189
var imageid; var e = document.getElementById(id); imageid = "img"+id; theimage = document.getElementById(imageid); if (e.style.display == '') { e.style.display = 'none'; theimage.src ='img/mx.png'; } else { e.style.display = ''; theimage.src = 'img/mi.png'; } } function ModificaPlan(id1, id2, id3, id4, id5, id6){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Modificacta.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("IdCta="+document.getElementById(id1).value+"&Nombre="+document.getElementById(id2).value+"&Clase="+document.getElementById(id3).value+ "&Nemo="+document.getElementById(id4).value+"&Descripcion="+document.getElementById(id5).value+"&Presupuesto="+document.getElementById(id6).value); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar if (ajax.responseText !=" ") alert(ajax.responseText); else javascript:location.reload(true); // alert("ACTUALIZACION CON EXITO"); } } } function ValidaIdCuenta(IdCuenta,IdFlag) { var BusAjax = nuevoAjax(); BusAjax.open("POST",ruta+"ConsultaId.php",true); BusAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); BusAjax.send("IdCuenta="+IdCuenta+"&IdFlag="+IdFlag); BusAjax.onreadystatechange=function() { if (BusAjax.readyState==4) { if (BusAjax.status==200) {
190
registro = BusAjax.responseText; if (registro=="") { alert("Ha ocurrido un Error en la consulta del IdCuenta"); } else { if (IdFlag=="N") { // crea la cuenta document.getElementById("cuenta").value = registro; conscuenta('cuenta', 'cta_desc', '0'); document.getElementById("clase").focus(); } else { // modifica la cuenta FragTexto = registro.split('|'); document.getElementById("cuenta").value = FragTexto[0]; document.getElementById("nombre").value = FragTexto[1]; if (FragTexto[2]=="G") { document.getElementById("clase").selectedIndex="0"; } else { document.getElementById("clase").selectedIndex="1"; } document.getElementById("nemo").value = FragTexto[3]; if (FragTexto[4]=="S") { document.getElementById("presup").selectedIndex="0"; } else { document.getElementById("presup").selectedIndex="1"; } document.getElementById("descrip").value = FragTexto[5]; } }
191
} } } } function ValidaDatos(IdValida) { var DivMensaje = document.getElementById("mensaje"); var txtcuenta; var txtnombre; var txtnemo; var txtdescri; txtcuenta = VerEspBla(document.getElementById("cuenta").value); txtnombre = VerEspBla(document.getElementById("nombre").value); txtnemo = VerEspBla(document.getElementById("nemo").value); txtdescri = VerEspBla(document.getElementById("descrip").value); if (txtcuenta.length==0) { DivMensaje.innerHTML = "Ingrese el Código de la Cuenta Padre"; return 0; } else if (txtnombre.length==0) { DivMensaje.innerHTML = "Ingrese el Nombre de la Nueva Cuenta"; return 0; } else if (txtnemo.length==0) { DivMensaje.innerHTML = "Ingrese el Nemonico de la Nueva Cuenta"; return 0; } else if (txtdescri.length==0) { DivMensaje.innerHTML = "Ingrese una descripción de la Nueva Cuenta"; return 0; } else { DivMensaje.innerHTML = ""; if (IdValida=="N") { // Crear Creaplan('cuenta','clase','nombre','presup','descrip','nemo'); Limpiar(); } else {
192
ModificaPlan('cuenta','nombre','clase','nemo','descrip','presup'); //Actualizar } } } function VerEspBla (cadena) { cadena = cadena.replace(/(^\s*)|(\s*$)/g,""); return cadena; } function Limpiar() { document.getElementById("clase").selectedIndex="0"; document.getElementById("presup").selectedIndex="0"; document.getElementById("cuenta").value=""; document.getElementById("cta_desc").value=""; document.getElementById("nombre").value=""; document.getElementById("nemo").value=""; document.getElementById("descrip").value=""; } function ValidaIdCuenta1(IdCuenta) { var BusAjax = nuevoAjax(); BusAjax.open("POST",ruta+"ConsultaIdA.php",true); BusAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); BusAjax.send("IdCuenta="+IdCuenta); BusAjax.onreadystatechange=function() { if (BusAjax.readyState==4) { if (BusAjax.status==200) { registro = BusAjax.responseText; if (registro=="") { alert("Ha ocurrido un Error en la consulta del IdCuenta"); } else { // modifica la cuenta FragTexto = registro.split('|'); document.getElementById("txtcta").value = FragTexto[0];
193
dhxWins.window('ventana').setModal(false); dhxWins.window("ventana").hide(); // close a window document.getElementById("txtcta").focus(); } } } } } function conscuenta2(id1, id2, flag){ var ajax=nuevoAjax(); if (document.getElementById(id1).value != ""){ ajax.open("POST", ruta+"Consultacta.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("codcta="+document.getElementById(id1).value+"&flag="+flag); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar if (trim(ajax.responseText) == "NN"){ document.getElementById(id2).value = ""; alert("ESTA NO ES UNA CUENTA CONTABLE"); document.getElementById(id1).focus(); document.getElementById("txtcta").value=""; }else document.getElementById("cta_desc").value = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor // document.getElementById("cta_desc").value="Procesando..."; // } } }else document.getElementById(id2).value = ""; }
194
procesos.js ruta=""; // se utiliza para paginas individuales //ruta="conta/"; // se utiliza con el contenedor function trim(cadena) { for(i=0; i<cadena.length; ) { if(cadena.charAt(i)==" ") cadena=cadena.substring(i+1, cadena.length); else break; } for(i=cadena.length-1; i>=0; i=cadena.length-1) { if(cadena.charAt(i)==" ") cadena=cadena.substring(0,i); else break; } return cadena; } function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function procesoMayoriza(id1, id2, id3, id4){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/ProcesoMayoriza.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&mes="+id2+"&suc="+id3+"&user="+id4);
195
ajax.onreadystatechange=function(){ if (ajax.readyState==4){ if (trim(ajax.responseText) == "0|") alert("PROCESO MAYORIZACION EXITOSO"); else{ cadena = ajax.responseText; for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } } function procesoPYG(id1, id2, id3, id4){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/ProcesoPYG.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&mes="+id2+"&suc="+id3+"&user="+id4); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ if (trim(ajax.responseText) == "0|") alert("PROCESO PERDIDAS Y GANANCIAS EXITOSO"); else{ cadena = ajax.responseText; for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } }
196
error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } } function procesoPYGmes(id1, id2, id3, id4){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/ProcesoPYGmes.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&mes="+id2+"&suc="+id3+"&user="+id4); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ if (trim(ajax.responseText) == "0|") alert("PROCESO PERDIDAS Y GANANCIAS MENSUAL EXITOSO"); else{ cadena = ajax.responseText; for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } } function procesoBgeneral(id1, id2, id3, id4){ var ajax=nuevoAjax(); var cadena; var cadena2; ajax.open("POST", ruta+"php/ProcesoBgeneral.php", true);
197
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("anio="+id1+"&mes="+id2+"&suc="+id3+"&user="+id4); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ if (trim(ajax.responseText) == "0|") alert("PROCESO BALANCE GENERAL EXITOSO"); else{ cadena = ajax.responseText; for(i=0; i<cadena.length; i++) { if(cadena.charAt(i)=="|") { cadena2= cadena.substring(i+1, cadena.length); cadena=cadena.substring(0, i); break; } } error = "ERROR: " + cadena + " MENSAJE: " + cadena2; alert(error); } } } }
tipo-doc.js ruta="php/"; // se utiliza para paginas individuales //ruta = "conta/php/"; //se utiliza con el contenedor raiz function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp;
198
} function grabatipo( id1, id2, id3, id4, id5){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"graba-tipo.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("txt_siglas="+id1+"&txt_descripcion="+id2+"&opt_ind_transaccional="+id3+"&opt_ind_presupuesto="+id4+"&user="+id5); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar alert(ajax.responseText); // document.getElementById("con").innerHTML = ajax.responseText; } } } // function ConsultaSumas( id1, id2, id3){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"Consulta-detalle-sumas-saldos.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // var aaaa = "firstinput="+id1+"&secondinput="+id2+"&sucursales="+id3+ "&modulo="+id4; ajax.send("periodoa="+id1+"&periodom="+id2+"&sucursal="+id3); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar document.getElementById("con").innerHTML = ajax.responseText; //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } }
199
tipo-docm.js ruta="php/"; // se utiliza para paginas individuales //ruta = "conta/php/"; //se utiliza con el contenedor raiz function nuevoAjax(){ var xmlhttp=false; try{ // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest(); } } return xmlhttp; } function escogedoc(id, id1, id2, id3, id4){ window.opener.document.getElementById('txt_siglas').value = id; document.getElementById('txt_descripcion').value = id1; document.getElementById('opt_ind_transaccional').value = id2; document.getElementById('opt_ind_presupuesto').value = id3; document.getElementById('estado').value = id4; } function modificatipos( id1, id2, id3, id4, id5, id6){ var ajax=nuevoAjax(); ajax.open("POST", ruta+"modifica-tipo.php", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("txt_siglas="+id1+"&txt_descripcion="+id2+"&opt_ind_transaccional="+id3+"&opt_ind_presupuesto="+id4+"&estado="+id5+"&user="+id6); ajax.onreadystatechange=function(){ if (ajax.readyState==4){ //si es 4 es xq el servidor termino de procesar //document.getElementById("con").innerHTML = ajax.responseText; alert(ajax.responseText); //document.getElementById('con').innerHTML = "PRUEBA"; //cadena = ajax.responseText; //form1.con.innerhtml = ajax.responseText; } // if (ajax.readyState==2){ //si es 2 es xq aun esta procesando el servidor
200
// document.getElementById("cta_desc").value="Procesando..."; // } } }
Util.js function validaNum(id1) { var num; var numcheck; numcheck = /^[0-9]+(,[0-9]+)*$/; num = document.getElementById(id1).value; // numcheck.test(keychar) if (document.getElementById(id1).value != ""){ if (!numcheck.test(num)){ alert("CANTIDAD NO VALIDA"); setTimeout('document.form1.txtvalor.focus()',75); // document.getElementById('txtvalor').focus(); return 1; } } } function Visible(id){ document.getElementById(id).style.visibility = "visible"; } function Invisible(id){ document.getElementById(id).style.visibility = "hidden"; } function trim(cadena) { for(i=0; i<cadena.length; ) { if(cadena.charAt(i)==" ") cadena=cadena.substring(i+1, cadena.length); else
201
break; } for(i=cadena.length-1; i>=0; i=cadena.length-1) { if(cadena.charAt(i)==" ") cadena=cadena.substring(0,i); else break; } return cadena; } function extrae(cadena) { for(i=0; i<cadena.length; ) { if(cadena.charAt(i)=="|") { cadena=cadena.substring(0, i-1); break; } } } function formatCurrency(num) { num = num.toString().replace(/\$|\,/g,''); if(isNaN(num)) num = "0"; sign = (num == (num = Math.abs(num))); num = Math.floor(num*100+0.50000000001); cents = num%100; num = Math.floor(num/100).toString(); if(cents<10) cents = "0" + cents; for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) num = num.substring(0,num.length-(4*i+3))+ num.substring(num.length-(4*i+3)); return (((sign)?'':'-') + num + '.' + cents); }
202
carga.js function cargaDatos(){ div = document.getElementById("procesando"); div.style.display = ''; }
function terminaDatos(){ div = document.getElementById("procesando"); div.style.display='none'; }
203
CAPITULO 2
2.1 MANUAL DE USUARIO DEL SISTEMA
2.1 Ingreso al Módulo Contable
Para ingresar al Módulo Contable lo hacemos desde cualquier
Navegador, entre ellos tenemos: Internet Explorer o Mozilla Firefox,
Opera.
FIGURA 1 Ingreso al Módulo Contable
En la barra de direcciones del Navegador escriba la siguiente
dirección:
http://localhost/business_gestor
http://127.0.0.1/business_gestor
Si el Sistema está ubicado en otro computador tendrá que escribir la ip
del servidor donde está la aplicación, siguiendo el siguiente modelo:
http://NombredelServidor/business_gestor
204
Pantalla inicial Modulo Contable
Manejo del Menú
FIGURA 2 Pantalla inicial Modulo Contable
Opciones principales del menú del Módulo de Contabilidad.
Este icono representa que hay dentro de esta opción más
opciones
Este icono es el que tiene la opción con la cual se va a trabajar.
205
FIGURA 3 Menu del Sistema
2.2 Mantenimiento
Opción donde se podrá ingresar, modificar según sea el caso de
mantenimiento a los Documentos, Periodos Contables, Periodos
Mensuales y Plan de Cuentas.
2.2.1 Documentos
Los documentos con los que trabaja la empresa, sean estos
Comprobantes de Egreso, Comprobantes de Ingreso, Diario,
etc, se podrán hacer las siguientes transacciones:
Crea Documento
Para el ingreso de un nuevo Documento. en el campo Tipo se
ingresara dos letras que corresponde a las siglas del
Documento, a continuación digitará en el casillero Descripción
206
el nombre del Documento, en Indicador Transaccional podrá
seleccionar si es Transaccional Normal el Documento o es
Corriente (documento no transaccional) más bien es referencial.
En Indicador Presupuestario, si el Documento afecta o no al
Presupuesto.
FIGURA 4 Crea Documento
Dar click en el botón Guardar si se va a guardar el nuevo
documento, y saldrá un mensaje como el que sigue:
FIGURA 5 ALERTA
207
Modifica Documento
Para modificar un Documento
Se le mostrará la siguiente pantalla, donde podrá seleccionar
que Documento es el que va a modificar, dándole click con el
mouse en la estrellita amarilla.
FIGURA 6 Modifica Documento
Se harán las modificaciones que les sea permitida y luego dar
click con el mouse en el botón Modificar y quedarán grabados
las modificaciones
208
FIGURA 7 Modifica Documento
209
2.2.2 Plan de Cuentas
Permite ingresar Cuentas dentro de grupos mayores a los que
llamaremos padre, permite ingresar grupos a los que
llamaremos grupos.
Ingreso Plan de Cuentas
Permite ingresar todo el Plan de Cuentas con los niveles que
requiera el Contador o la empresa, permitirá a grupos de
cuentas tener hijos cuentas las que se necesiten.
Para el ingreso del Plan de Cuentas se le mostrará al costado
derecho un cuadro conteniendo un árbol, de donde podrá
seleccionar el padre de la cuenta o grupo que quiera crear, al
seleccionar la cuenta padre el código de la cuenta padre
seleccionado se pone automáticamente en el casillero Cuenta
Padre, y abajo se describe el nombre de la cuenta Padre, a
continuación en el casillero Clase seleccionara si la cuenta es
una cuenta o un grupo de cuentas, se escribirá el casillero
nombre con el nombre de la cuenta, se escribe el campo
nemonico, el cual es una combinación de letras, las cuales no
deben estar repetidas, esto lo controlará el mismo sistema, se
llenará el campo descripción, y su Naturaleza podrá seleccionar
entre Deudora y Acreedora.
Terminar dándole doble click con el mouse en el botón Guardar.
210
FIGURA 8 Plan de Cuentas
Modificar Plan de Cuentas
Podrá modificar solo los campos permitidos, y luego presionar
el botón Actualizar para grabar la modificación.
FIGURA 9 Plan de Cuentas
211
2.2.3 Periodo Contable
Ingreso Periodo Contable
Ingrese el nuevo año y la descripción del Periodo Contable
como por ejemlo PERIODO CONTABLE 2010 y por último
presionar el botón Guardar.
FIGURA 10 Ingreso Periodo Contable
212
Activar Periodo Contable
Para activar un Período Contable, se le mostrará la siguiente
pantalla de donde seleccionará el periodo contable que va a
activar dándole doble click con el mouse en la estrellita
amarilla, y la información automáticamente pasa a los casilleros
de año y descripción y se activa la pantalla que se muestra al
fondo, para luego presionar el botón Activar y quedará grabada
Activo el Período.
FIGURA 11 Activar Periodo Contable
213
FIGURA 12 Activar Periodo Contable
Si es que el Periodo Mensual anterior estuviera en estado
Postergado, primero tendrá que ser cerrado para poder Activar
el Periodo Contable del siguiente año.
FIGURA 13 Activar Periodo Contable
Cambio de Estado Contable
Para cambiar el Estado a Postergado o Verificado, un Estado se
cambia a postergado cuando se quiere trabajar con el siguiente
periodo mensual sin haber cerrado el anterior.
El Estado es Verificado, cuando ya se va a proceder con el
Cierre del Periodo. Solamente podrá cambiar de estado al
periodo Activo.
214
Para cambiar el Estado se le mostrará la siguiente pantalla, de
donde seleccionará con el mouse en el icono de la estrellita
amarilla, y esta información automáticamente activa la pantalla
de al fondo y la información es pasada a los casilleros
respectivos y se seleccionará el Estado a cambiar.
FIGURA 14 Cambio de Estado Contable
215
Y dar click en el botón Cambiar, y se le mostrará el siguiente
mensaje.
FIGURA 15 Cambio de Estado Contable
Cierre Periodo Contable
Un periodo contable se cierra cuando ya no se va a ingresar, ni
se va a cambiar mas nada en ese periodo, porque una vez
cerrado ya no podrá realizar ningún cambio, ni aumento de
diarios.
Para cerrar el Periodo Contable, debe de estar cerrado todos
los meses del año que se quiere cerrar, para luego proceder a
seleccionar el icono de la estrellita amarilla y continuamente
presionar el botón Cerrar.
FIGURA 16 Cierre Periodo Contable
216
2.2.4 Periodo Mensual
Son los meses del año que corresponden a un Periodo
Contable
.
Ingreso Periodo Mensual
Para ingresar un periodo mensual, debe de haber creado
primero el Periodo Anual al que le va a ingresar el periodo
mensual. Le saldrá la siguiente pantalla, en donde seleccionará
en el icono de la estrellita amarilla el Periodo Contable al cual le
va a ingresar el periodo mensual.
FIGURA 17 Ingreso Periodo Mensual
217
Si el periodo mensual a crear ya existiera, saldrá el siguiente
mensaje de error:
FIGURA 18 Ingreso Periodo Mensual
Deberá Ingresar a continuación la descripción del Periodo
Mensual que se va a crear y dar click en el botón Ingresar.
FIGURA 19 Ingreso Periodo Mensual
218
Si el periodo mensual a crear ya existe, entonces le saldrá la
siguiente pantalla:
FIGURA 20 Ingreso Periodo Mensual
Caso contrario saldrá el siguiente mensaje:
FIGURA 21 Ingreso Periodo Mensual
Activar Periodo Mensual
Para activar un Período Mensual, se le mostrará la siguiente
pantalla de donde seleccionará el periodo mensual que va a
activar dándole doble click con el mouse en la estrellita
amarilla, y la información automáticamente pasa a los casilleros
de año y descripción y se activa la pantalla que se ve al fondo,
para luego presionar el botón Activar y quedará grabada Activo
el Período.
219
FIGURA 22 Activar Periodo Mensual
220
Cambio Estado Periodo Mensual
Un Estado se cambia a postergado cuando se quiere trabajar
con el siguiente periodo mensual sin haber cerrado el anterior.
El Estado es Verificado, cuando ya se va a proceder con el
Cierre del Periodo. Solamente podrá cambiar de estado al
periodo Activo.
Para cambiar el Estado se le mostrará la siguiente pantalla, de
donde seleccionará con el mouse en el icono de la estrellita
amarilla, y esta información automáticamente activa la pantalla
de al fondo y la información es pasada a los casilleros
respectivos y se seleccionará el Estado a cambiar.
FIGURA 23 Cambio Estado Periodo Mensual
221
Cierre Periodo Mensual
Un periodo mensual se cierra cuando ya no se va a ingresar, ni
se va a cambiar mas nada en ese periodo, porque una vez
cerrado ya no podrá realizar ningún cambio, ni aumento de
diarios en ese periodo.
Para cerrar seleccione el periodo dándole doble click en el icono
de la estrellita amarilla, se le activará la pantalla que se muestra
al fondo y continuamente presionar el botón Cerrar.
FIGURA 24 Cierre Periodo Mensual
222
FIGURA 25 Cierre Periodo Mensual
No puede volver a cerrar un mes porque al cerrar el mes, uno
de los procesos que se realiza es pasar toda la información a
una tabla histórica, entonces le saldrá el siguiente mensaje de
error:
FIGURA 26 Cierre Periodo Mensual
223
2.3 Ciclo Contable
Asientos de Diario
Aquí ingresará los asientos de Diario Normales, Asientos Iniciales, de
Cierre y de Regularización, si es que el Sistema ha sido adquirido con
todos los módulos, estos asientos son generados por cada uno de los
módulos que genera la transacción. Fr lo contrario los podrá ingresar
mediante esta opción.
FIGURA 27 Asientos de Diario
A continuación se dará una explicación detallada de cada campo a
ingresar en esta pantalla:
Seleccione el Tipo de Asiento que se va a registrar entre los
mencionados anteriormente y seleccione la Sucursal:
224
FIGURA 28 Asientos de Diario
Luego ingresamos la fecha, para esto contamos con un pequeño
calendario que se muestra al lado, Si al ingresar la fecha se presenta
un mensaje de fecha no corresponde a periodos activos, es porque la
fecha no corresponde a periodos (meses) activos, por ejemplo si el
periodo contable es 2010, nos va a dar error si es que ingresamos la
fecha 25/01/2009, o si el periodo de febrero ya está cerrado e
ingresamos la fecha 14/02/2019.
Si existe el caso del que nos da el error y la fecha corresponde a un
periodo (mes ) dentro del periodo contable(anual) actual, verificar en la
opción de Periodo Mensuales, el Estado del Periodo que el mes este
activo.
FIGURA 29 Asientos de Diario
225
Seleccionamos el Tipo de Documento que se va a ingresar:
FIGURA 30 Asientos de Diario
Digitamos la cuenta contable al último nivel disponible que es la
cuenta, por ejemplo 1.2.2.2
De lo contrario podrá dar click en el icono de la lupa y se le mostrará el
Plan de Cuentas en forma de árbol. Se puede buscar la cuenta
dandole click al grupo de donde pertenece la cuenta, bajando de
niveles hasta llegar al ultimo nivel disponible de la cuenta que se
busca, una vez encontrado seleccionamos con el mouse dandole
doble click y automáticamente el nombre de la cuenta y su código
aparecerá en la pantalla para su contabilización.
226
FIGURA 31 Asientos de Diario
A continuación se ingresa la afectación de la transacción, si es al Debe
o al Haber.
FIGURA 32 Asientos de Diario
En el campo Afectación Presupuestaria se debe ingresar si el detalle
tiene o no afectación presupuestaria, esto es para la integración con
el Módulo Presupuestarios, si es que lo tuviera .
En el campo de valor ingresar el monto de la transacción.
227
En el campo Glosa se debe ingresar el detalle de la transacción
FIGURA 33 Asientos de Diario
Y presionar el botón Adicionar:
Al presionar este botón la información ingresada se adiciona a la tabla
de abajo en forma horizontal y se continuará ahí mismo con el ingreso
del siguiente registro, se volverá a hacer con los mismos pasos visto.
Se podrá adicionar los registros que necesite al debe o al haber, lo
que importa es que la suma del debe deberá ser igual a la suma del
haber, esto significará que está cuadrado y se le mostrará un visto al
lado de la palabra CUADRADO y podrá ser guardado.
Para ingresar un asiento el periodo al que se le va a ingresar debe de
estar en estado Activo, caso contrario saldrá el siguiente mensaje de
error y no le permitirá grabar.
228
FIGURA 34 Asientos de Diario
Si todo estuvo bien, entonces le sale el siguiente mensaje:
FIGURA 35 Asientos de Diario
229
2.4 Reportes
2.4.1 Libros
Libro Diario General
FIGURA 36 Libro Diario General
230
Si desea saber mas información de la transacción puede darle
doble click al icono de la lupa, y podrá visualizar el asiento en
mas detalle, por ejemplo le damos click en la lupa del asiento 3,
nos mostrará la siguiente pantalla:
FIGURA 37 Libro Diario General
Si desea originar un archivo de esta consulta lo puede hacer en
formato de Excel y formato de csv, para conseguir esto dele
click en el icono de Excel y se le abrirá la pantalla de dialogo en
el cual podrá tomas cualquiera de las dos alternativas: La una
de abrir el archivo directamente en Excel o la otra de guardar el
archivo en Excel para ser revisado posteriormente.
FIGURA 38 Libro Diario General
231
Si elige abrir con Excel le saldrá el siguiente mensaje a lo cual
presionará el botón Si.
FIGURA 39 Libro Diario General
Y se le abrirá el archivo generado en Excel como sigue:
FIGURA 40 Libro Diario General
232
De esta manera saldrá si el archivo se lo genera en formato csv:
FIGURA 41 Libro Diario General
De la misma manera como se generó el archivo en Excel y el
formato csv, se lo hará en donde usted vea estas opciones.
A continuación hemos pedido generar el reporte de todo el mes
en un archivo en Excel:
FIGURA 42 Libro Diario General
233
Presione el botón Si.
FIGURA 43 Libro Diario General
El Libro Diario en formato Excel:
FIGURA 44 Libro Diario General
234
Comprobante de Diario
Para imprimir el Comprobante de Diario, tenemos esta barra de
herramiento en la opción de Reportes – Libros - Asientos de
Diario, se ingresa los parámetros como lo vimos anteriormente y
al presionar el botón consultar le saldrá esta barra de
herramientas de donde usted presionará el icono que dice en
Excel COMPROBANTE DE DIARIO.
De esta manera nos saldrá el Comprobante de Diario:
FIGURA 45 Libro Diario General
235
Libro Mayor
Para imprimir el Libro Mayor debe de ingresar año, el mes,
Sucursal y Cuenta Contable a requerida y luego presionar
evisualizar el Mayor si es que lo desea especifico por cuenta, de
lo contrario no ponga nada en este casillero.
FIGURA 46 Libro Mayor
236
Como todos los reportes usted lo podrá generar en Excel o en
formato csv, de la misma manera ya indicada.
FIGURA 47 Libro Mayor
Presione el botón Si para abrir el archivo.
237
Si la consulta del mayor no fue por una sola cuenta, entonces
visualizará todos los mayores y de todas manera siempre
recuerde que cuenta con las herramientas propias del
navegador.
FIGURA 48 Libro Mayor
238
2.4.2 Estados Financieros
Balance Comprobación Sumas y saldos
Para consultar el Balance de Comprobación de Sumas y Saldos
deberá ingresar el año, el mes y la Sucursal requerida y luego
presionar el botón Consulta, el cual mostrará el Reporte
solicitado.
FIGURA 49 Balance Comprobación Sumas y saldos
239
Visualización del Balance de Comprobación de Sumas y
Saldos:
FIGURA 50 Balance Comprobación Sumas y saldos
240
Balance General
Para consultar el Balance General, deberá ingresar el año, el
mes y la Sucursal requerida y luego presionar el botón
Consulta, el cual mostrará el Reporte solicitado.
FIGURA 51 Balance Comprobación Sumas y saldos
241
Visualización del Balance General Clasificado:
FIGURA 52 Balance Comprobación Sumas y saldos
242
Estado de Pérdidas y Ganancias Acumulado
Para imprimir el Estado de Pérdidas y Ganancias Acumulado
debe de ingresar el año, el mes y la Sucursal requerida y luego
presionar el botón Consulta, el cual mostrará el Reporte
solicitado.
FIGURA 53 Estado de Pérdidas y Ganancias Acumulado
243
Estado de Pérdidas y Ganancias Mensual
Para imprimir el Estado de Pérdidas y Ganancias Mensual debe
de ingresar el año, el mes y la Sucursal requerida y luego
presionar el botón Consulta, el cual mostrará el Reporte
solicitado.
FIGURA 54 Estado de Pérdidas y Ganancias Mensual
244
Si desea originar un archivo lo puede hacer en formato de Excel
y formato de csv, para conseguir esto dele click en el icono de
Excel y se le abrirá la pantalla de dialogo en el cual podrá tomas
cualquiera de las dos alternativas:
La una de abrir el archivo directamente en Excel o la otra de
guardar el archivo en Excel para ser revisado posteriormente.
FIGURA 55 Estado de Pérdidas y Ganancias Mensual
Siempre que vea esta pantalla presione el botón Si.
245
Visualización del archivo en formato de Excel del Estado de
Pérdidas y Ganancias Mensual.
FIGURA 56 Estado de Pérdidas y Ganancias Mensual
246
Balance de Situación Inicial
Balance Comprobación Sumas y saldos Consolidado
Para imprimir el Balance General Consolidado debe de ingresar
el año y el mes requerido.
FIGURA 57 Balance Comprobación Sumas y saldos
Consolidado
247
Se imprimirá en pantalla el Reporte, el cual como todos los
demás Reportes puede generarse a Excel o a formato csv.
FIGURA 58 Balance Comprobación Sumas y saldos
Consolidado
248
Estado de Pérdidas y Ganancias Consolidado
Para imprimir el Estado de Pérdidas y Ganancias Consolidado
debe de ingresar el año y el mes requerido.
FIGURA 59 Estado de Pérdidas y Ganancias Consolidado
249
Se imprimirá en pantalla el Reporte, el cual como todos los
demás Reportes puede generarse a Excel o a formato csv.
FIGURA 60 Estado de Pérdidas y Ganancias Consolidado
250
Balance General Consolidado
Para imprimir el Balance General Consolidado debe de ingresar
el año y el mes requerido.
Se imprimirá en pantalla el Reporte, el cual como todos los
demás Reportes puede generarse a Excel o a formato csv.
FIGURA 61 Balance General Consolidado
251
2.5 Procesos Contables
Mayorización
Este proceso actualizará los Saldos del Libro Mayor. Debe ingresar el
año, el mes y la Sucursal
FIGURA 62 Mayorización
252
Pérdidas y Ganancias Mensual
Este proceso actualizará los Saldos del Estado de Pérdidas y
Ganancias Mensual. Debe ingresar el año, el mes y la Sucursal
FIGURA 63 Pérdidas y Ganancias Mensual
253
Proceso de Estado de Pérdidas y Ganancias Acumulado
Este proceso actualizará los Saldos del Estado de Pérdidas y
Ganancias Acumulado hasta el año y mes que desee. Debe ingresar
el año, el mes y la Sucursal a generar el Estado de Pérdidas y
Ganancias Acumulado.
Mensajes de error
FIGURA 64 Proceso de Estado de Pérdidas y Ganancias
Acumulado
254
Balance General
Este proceso actualizará los Saldos del Balance General. Debe
ingresar el año, el mes y la Sucursal a generar el Balance General.
FIGURA 65 Balance General
255
GLOSARIO DE TÈRMINOS
ACTIVO.- Es el conjunto de segmento, cuantificable, de los beneficios
económicos futuros fundamentalmente esperados y controlados por
una entidad, representados por efectivos, derechos. Bienes o servicio
como consecuencia de transacciones pasadas o de otros eventos
ocurridos.
AJUSTE.- Apunte contable necesario para conseguir el correcto
registro contable de una operación que previamente adolecia de
errores, cualquiera que fuera su naturaleza.
AJUSTAR.- Corregir mediante un Diario las distintas cuentas que
intervienen en el ajuste.
ASIENTO.- Registro de transacciones en cuentas deudoras y en
cuentas acreedoras.
DEBE.- En el debe se registran todos los valores que se reciben,
ingresan o entran a cada una de las cuentas,
HABER.- En el haber se registran todos los valores que entregan,
egresan o salen de cada una de las cuentas.
256
PASIVO.- Es el conjunto de segmento, cuantificable, de las
obligaciones presentes de una entidad particular, virtualmente
ineludibles, de transferir efectivo, bienes o servicio en el futuro a otras
entidades, como consecuencia de transacciones o eventos pasados.
REGISTRO CONTABLE.- Cada una de las anotaciones de las que se
vale para reflejar las operaciones asociadas al desempeño de una
actividad mercantil.
CAPITAL.- Es el rubro que representa a la inversión o al aporte de los
socios o empresarios, al margen de otros valores patrimoniales, sobre
los cuales puedan tener derecho, como las Reservas legales y las
utilidades no distribuidas.
257
BIBLIOGRAFÌA
Libros
Contabilidad General, octava edición, por Mercedes Bravo Valdiviezo
Contabilidad tomo 6, por Ing. Alejandro Zuñiga
Sitios de Páginas Web
www.monografia.com
www.manualdephp.com
www.desarrolloweb.com
www.mysql.com
www.javascript,com
www.php.com