Documente Academic
Documente Profesional
Documente Cultură
12/122015
El siguiente informe es elaborado para dar a conocer el procedimiento que se realiz para crear el
motor de base de datos de un sistema contable.
Es importante mencionar que previo a realizar el proyecto se investig sobre la Contabilidad
empresarial y dicha informacin y trminos se detallaran en el informe.
Tambin se muestra la lgica que se utiliz, la creacin de las tablas donde se guardaran los datos, la
determinacin que se dio para la relacin entre las tablas, las llaves locales y forneas, las distintas
funciones que se realizaron para ingresar, modificar y realizar operaciones lgicas con los datos.
Tambin cuenta con un cuadro donde muestra el cdigo que pertenece a cada tipo de cuenta, muestra
imgenes desde el motor de base de datos con el resultado al momento de llamar una funcin, entre
otras cosas.
Espero que dicho informe sea de utilidad para todo aquella persona que dese saber no solo de cmo
crear un sistema contable si no tambin como crear bases de datos en el gestor PostgreSQL.
David Castro
Contenido
INTRODUCCION................................................................................................................. 2
Conceptos........................................................................................................................... 4
Contabilidad..................................................................................................................... 4
Trminos Contables............................................................................................................ 4
Sistema Contable................................................................................................................... 5
Elaboracin del Sistema Contable.............................................................................................. 6
Tabla Cuenta..................................................................................................................... 7
Tabla Tipo........................................................................................................................ 8
Tabla Nivel....................................................................................................................... 8
PARTIDA EMCABEZADO.................................................................................................. 9
Tabla Moneda.................................................................................................................. 10
PARTIDA DETALLE........................................................................................................ 10
Diagrama de Relacin....................................................................................................... 11
QUERY............................................................................................................................ 12
PL/PgSQL...................................................................................................................... 12
Tablas........................................................................................................................... 12
LLAVES FORANEAS....................................................................................................... 14
FUNCIONES.................................................................................................................. 14
Conclusin........................................................................................................................ 18
David Castro
Conceptos
Contabilidad
La contabilidad es una disciplina que se encarga de estudiar, medir y analizar en forma tericocientfica la realidad econmica, financiera, social y ambiental de una empresa u organizacin, con el
fin de interpretar las situaciones econmicas que se derivan de transacciones monetarias, facilitando
la toma de decisiones encaminadas hacia el mejoramiento de la productividad, gestin de la empresa
u organizacin, la responsabilidad con el impacto ambiental y el impacto de bienestar social en la
comunidad de la que se beneficia la entidad econmica en la obtencin de utilidad - ganancia,
presentando la informacin contable previamente registrada de manera sistemtica segn un modelo
contable determinado, est informacin es til para los distintos grupos de inters que rodean la
empresa u organizacin.
Trminos Contables
1) Activo: Cualquier cosa con valor comercial, de cambio poseda por un individuo o entidad.
2) Activo circulante o corriente: Activo de una empresa que razonablemente puede esperarse
que sean convertido en dinero vendidos o consumidos a lo largo del ciclo normal
3) de operaciones.
4) Activo fijo: El de ciclo largo destinado a la cantidad productiva mas que a la reventa. Incluye
la planta el equipo y el activo intangible.
5) Asiento de cierre: Asiento de diario realizado al final de un periodo contable para cerrar
todas las cuentas de ingresos, gastos y otras cuentas del periodo.
6) Acreditar: Registrar un crdito mediante un asiento de contabilidad.
7) Balance general: Estado de la situacin financiera de cualquier unidad econmica, que
8) muestren en un momento determinado el activo, al costo, al costo de preciado o a otro valor
indicado.
9) Capital: Activos netos de una empresa, sociedad o figura semejante, incluyendo
10) la inversin original y todas las ganancias y beneficios sobre la misma. Cantidad invertida en
la empresa.
11) Cuenta: Registro de todas las transacciones y de la fecha de cada una de ella que afecta una
fase particular de una empresa. Se expresa en forma de cargo y abonos evaluados en trminos
monetarios y mostrando en saldo actuar si existe.
12) Costo: Valor cedido por una entidad para la obtencin de bienes o servicios. Todos los gastos
son costos pero no todos los costos son gastos.
13) Crdito: Parte de un asiento registrado en el lado derecho del diario de la cuenta
14) mayor. Ventas o compras acompaadas de una promesa de pago posterior a la fecha en que se
realizan.
15) Estado financiero: Balance general, un estado de ingresos (o resultados); un estado de fondo
o cualquier estado auxiliar u otra presentacin de datos financieros derivados de
16) los registros de contabilidad.
17) Pasivo: Los fondos que debe un banco. El pasivo ms grande para un banco son los depsitos
de sus clientes.
18) Pasivo Circulante: Parte del pasivo que vence antes de un ao. Incluye proveedores,
19) hacienda pblica, seguridad social y acreedores bancarios o varios a cort plazo.
20) Pasivo fijo: Todas la deudas que no vencen dentro del periodos fiscal subsiguiente (por
ejemplo hipotecas, bono en circulacin)
21) Capital contable: total de las participaciones que aparece en el registro de contabilidad
representado en inters del propietario.
David Castro
Sistema Contable
Un sistema contable, son todos aquellos elementos de informacin contable y financiera que se
relacionan entre s, con el fin de apoyar la toma de decisiones gerenciales de una empresa, de
manera eficiente y oportuna; pero esta informacin debe ser analizada, clasificada, registrada
(Libros correspondientes: Diario, mayor, Auxiliares, etc.) y resumida (Estados financieros), para que
pueda llegar a un sin nmero de usuarios finales que se vinculan con el negocio, desde los
inversionistas o dueos del negocio, hasta los clientes y el gobierno.
Por lo tanto, el sistema contable, debe ajustarse plenamente a las necesidades de la empresa,
considerando, el giro del negocio y su estrategia competitiva, que permita estandarizar procesos,
definir estructuras de costos y por ende, presentar una informacin contable estandarizada que
facilite su interpretacin, una eficiente toma de decisiones y que pueda procesarse para realizar los
diferentes anlisis financieros del negocio.
David Castro
David Castro
Tabla Cuenta
Dentro de esta tabla se guarda todos los datos necesarios para documentar una cuenta, para saber el tipo de
una cuenta se crearon las tablas Tipo y Nivel con los datos siguientes:
CUENTAS
CODIGO
TIPO
CODIGO_NIVEL
1001
100
200
300
ACTIV
O
PASIV
O
CAPIT
AL
NIVEL
Circulante
1002
Fijo
1003
Cargos
diferidos
2001
Circulante
2002
Fijo
2003
Crditos
diferidos
3000
Capital
DESCRIPCION
Caja
Bancos
Clientes
Documentos por cobrar
Deudores Diversos
Almacn
Equipo de oficina
Edificios
Terrenos
Equipo de reparto
Patentes y marcas
Depsitos en garanta
Deudores hipotecarios
Acciones, bonos y valores
Papelera y artculos escritorio
Propaganda y publicidad
Primas de Seguros adelantados
Gastos de instalacin
Rentas anticipadas
Intereses pagados por
anticipado
Proveedores
Acreedores
Impuestos por pagar
Documentos por pagar
Documentos por pagar a largo
plazo
Acreedores hipotecarios
Rentas cobradas por adelantado
Intereses cobrados
anticipadamente
Ventas
Costo de ventas
Gastos de Ventas
Gastos de Administracin
Gastos y productos financieros
Otros gastos y productos
Impuesto sobre la renta
Prdidas y ganancias
Capital
David Castro
Tabla Tipo
Esta tabla solo contiene el cdigo del tipo de cuenta y la descripcin ya sea Activo, Pasivo o Capital
est relacionada con la tabla Cuenta mediante el campo codigo_tipo, esta relacin ayuda a determinar
de qu tipo de cuenta es la cuenta y si el monto es debe o haber:
Tabla Nivel
En esta tabla se detalla el nivel del monto ya circulante, fijo, cargos diferidos, fijo, crditos
diferidos, capital.
Est relacionada con la tabla Cuenta mediante el campo Codigo_nivel, en el campo de descripcin
esta detallado las diferentes transacciones para cada nombre.
David Castro
PARTIDA EMCABEZADO
Esta Tabla es una de las ms importantes del sistema ya que en ella se realizan las partidas diarias de la
contabilidad, en ella se guarda el nmero de partida que inicia desde 100 este campo se program mediante un
check, el cdigo de la cuenta con esto nos indica que est relacionada con la tabla Cuenta mediante este
campo, el cdigo de tipo cuenta dato proporcionado por la tabla cuenta, la fecha en que se est realizando la
partida, el concepto, el cdigo de moneda este est relacionado con la tabla moneda, el monto, la conversin
de la moneda, el debe, el haber y el saldo total.
Para realizar el ingreso de datos en esta cuenta se cre una funcin llamada actualizar_emcabezadoque
adems de ingresar datos, realiza la validacin del monto para determinar el debe y el haber y tambin realiza
la conversin de la moneda segn sea el tipo de la moneda dato guardado en la tabla moneda.
David Castro
Tabla Moneda
En esta tabla se detalla el tipo de moneda, se ingres solo cuatro tipo de monedas las ms utilizadas,
Lempira, Euro, Dlar y Peso, tambin cuenta con la tasa de cambio que ayuda a realizar la
conversin en la tabla Libro Diario, dicha relacin est hecha por el campo codigo_moneda
PARTIDA DETALLE
Junto a la tabla partida de encabezado esta tabla tambin es la ms importante ya que
aqu se realizan las operaciones de todo el sistema contable, se ingresan las partidas y
se cuadran, toda esta operacin se realiza solo con una funcin llamada
ingresar_detalle esta funcin como su nombre lo dice realiza el ingreso de cada partida
a cuadrar, el monto ya sea debe o haber y automticamente se obtiene el resultado y
se coloca en la celda saldo deudor o acreedor segn sea el caso:
David Castro
10
Diagrama de Relacin
David Castro
11
QUERY
Para poder realizar los Query en el motor de base de datos PostgreSQL se tuvo la necesidad de
investigar acerca del Lenguaje PL/PgSQL.
PL/PgSQL.
PL/pgSQL (Procedural Language/PostgreSQL Structured Query Language) es un lenguaje
imperativo provisto por el gestor de base de datos PostgreSQL. Permite ejecutar comandos
SQL mediante un lenguaje de sentencias imperativas y uso de funciones, dando mucho ms control
automtico que las sentencias SQL bsicas.
Desde PL/pgSQL se pueden realizar clculos complejos y crear nuevos tipos de datos de usuario.
Como un verdadero lenguaje de programacin, dispone de estructuras de control repetitivas y
condicionales, adems de la posibilidad de creacin de funciones que pueden ser llamadas en
sentencias SQL normales o ejecutadas en eventos de tipo disparador (trigger).
Una de las principales ventajas de ejecutar programacin en el servidor de base de datos es que las
consultas y el resultado no tienen que ser transportadas entre el cliente y el servidor, ya que los datos
residen en el propio servidor. Adems, el gestor de base de datos puede planificar optimizaciones en
la ejecucin de la bsqueda y actualizacin de datos.
Las funciones escritas en PL/pgSQL aceptan argumentos y pueden devolver valores de tipo bsico o
de tipo complejo (por ejemplo, registros, vectores, conjuntos o incluso tablas),
Permitindose tipificacin polimrfica para funciones abstractas o genricas (referencia a variables
de tipo objeto).
Los Query que se utilizaron para la creacin de tablas, llaves forneas, locales y funciones son los
siguientes:
Tablas
CUENTA
CREATE TABLE cuenta
(
codigo integer NOT NULL,
codigo_tipo integer NOT NULL,
codigo_nivel integer NOT NULL,
nombre character varying(500),
descripcion character varying(1000),
CONSTRAINT pk_codigo PRIMARY KEY (codigo),
CONSTRAINT fk_codigo_nivel FOREIGN KEY (codigo_nivel)
REFERENCES nivel (codigo_nivel) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_codigo_tipo FOREIGN KEY (codigo_tipo)
REFERENCES tipo (codigo_tipo) MATCH SIMPLE
David Castro
12
PARTIDA EMCABEZADO
CREATE TABLE partida_emcabezado
(
partida integer NOT NULL,
codigo_cuenta integer NOT NULL,
codigo_tipo integer,
fecha date,
concepto character varying(500),
codigo_moneda integer NOT NULL,
monto numeric(9,2),
cambio numeric(9,2),
debe numeric(9,2),
haber numeric(9,2),
CONSTRAINT pk_partida PRIMARY KEY (partida),
CONSTRAINT fk_codigo_cuenta FOREIGN KEY (codigo_cuenta)
REFERENCES cuenta (codigo) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_codigo_moneda FOREIGN KEY (codigo_moneda)
REFERENCES moneda (codigo_moneda) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT libro_diario_partida_check CHECK (partida > 100)
)
David Castro
13
Esta tabla guarda los diferentes tipos de monedas mayormente usados, se le asign un cdigo para
poder referenciarlo en la tabla de partida de encabezado y as poder realizar la conversin
LLAVES FORANEAS
PARTIDA EMCABEZADO
ALTER TABLE partida_emcabezado
ADD CONSTRAINT fk_codigo_moneda FOREIGN KEY (codigo_moneda)
REFERENCES moneda (codigo_moneda)
ALTER TABLE partida_emcabezado
ADD CONSTRAINT fk_codigo_cuenta FOREIGN KEY (codigo_cuenta)
REFERENCES cuenta (codigo)
TABLA CUENTAS:
ALTER TABLE cuenta
ADD CONSTRAINT fk_codigo_nivel FOREIGN KEY (codigo_nivel)
REFERENCES nivel (codigo_nivel) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE cuenta
ADD CONSTRAINT fk_codigo_tipo FOREIGN KEY (codigo_tipo)
REFERENCES tipo (codigo_tipo) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION;
FUNCIONES
MENU:
CREATE OR REPLACE FUNCTION opciones_tipo_cuenta()
RETURNS character varying AS
$BODY$
begin
return 'Caja o Bancos=TIPO 100 CIRCULANTE, Equipo de oficina=TIPO 200 FIJO NIVEL 1
ACTIVOS.
Proveedores o Acreedores=TIPO 300 CIRCULANTE,Acreedores hipotecarios es FIJO y
NIVEL 2 PASIVOS.
Gastos ventas de administracion e impuestos estan en NIVEL 3 CAPITAL';
end;
$BODY$
LANGUAGE plpgsql
EJECUCION: select * from Opciones_Tipo_Cuenta ()
David Castro
14
David Castro
15
En esta funcin ingresamos todos los valores necesarios para las partidas diarias, tambin realiza la
seleccin de los montos si son debe o haber y los manda a la casilla correcta y tambin la conversin
automtica de la moneda segn sea el caso.
INGRESAR DATOS A LA TABLA CUENTA
CREATE OR REPLACE FUNCTION ingresar_cuenta(codigo integer, codigo_t integer,
codigo_n integer, nombre character varying, descripcion character varying)
RETURNS void AS
$BODY$
BEGIN
INSERT INTO CUENTA
(CODIGO,CODIGO_TIPO,CODIGO_NIVEL,NOMBRE,DESCRIPCION)VALUES
(CODIGO,CODIGO_T,CODIGO_N,NOMBRE,DESCRIPCION);
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION ingresar_cuenta(integer, integer, integer, character varying, character
varying)
OWNER TO postgres;
David Castro
16
INGRESAR DETALLE:
CREATE OR REPLACE FUNCTION INGRESAR_DETALLE
(
CODIGO_D INT,
CODIGO_P1 INT,
CODIGO_P2 INT,
HABER NUMERIC (9,2),
DEBE NUMERIC (9,2),
OBSERVA VARCHAR (100)
)RETURNS VOID AS
$BODY$
DECLARE TOTAL NUMERIC (9,2);
DECLARE SALDO_D NUMERIC (9,2);
DECLARE SALDO_A NUMERIC (9,2);
BEGIN
IF DEBE = 0 THEN
SALDO_D = HABER;
INSERT INTO PARTIDA_DETALLE (codigo_detalle , codigo_partida1, codigo_partida2 , haber,debe ,
saldo_deudor ,saldo_acrerdor, observaciones )
VALUES (CODIGO_D ,CODIGO_P1,CODIGO_P2,HABER,DEBE ,SALDO_D,SALDO_A,OBSERVA );
return;
END IF;
IF HABER = 0 THEN
SALDO_A = DEBE;
INSERT INTO PARTIDA_DETALLE (codigo_detalle , codigo_partida1, codigo_partida2 , haber,debe ,
saldo_deudor ,saldo_acrerdor, observaciones )
VALUES (CODIGO_D ,CODIGO_P1,CODIGO_P2,HABER,DEBE ,SALDO_D,SALDO_A,OBSERVA );
return;
END IF;
IF HABER>DEBE THEN
TOTAL = HABER - DEBE;
IF TOTAL<HABER THEN
SALDO_D = TOTAL;
INSERT INTO PARTIDA_DETALLE (codigo_detalle , codigo_partida1, codigo_partida2 ,
haber,debe , saldo_deudor ,saldo_acrerdor, observaciones )
VALUES (CODIGO_D ,CODIGO_P1,CODIGO_P2,HABER,DEBE ,SALDO_D,SALDO_A,OBSERVA );
return;
END IF;
END IF;
TOTAL = DEBE-HABER;
SALDO_D = TOTAL;
David Castro
17
Esta funcin realiza las partidas contables dobles y cuadra las cuentas, ingresa el cdigo de la
partida, ingresa la partida uno y la partida do, el haber y el debe, tambin valida los saldos y los
coloca en sus campos ya sea deudor o acreedor.
Conclusin
Un sistema de contabilidad si se desea puede ser complejo ya que se requiere mucho conocimiento
del tema, se pueden agregar balance general libro diario ect, pero en este proyecto se realiz la
investigacin necesaria para poder completar operaciones bsicas de contabilidad.
Por el lado del motor de base de datos no se tuvieron mayores inconvenientes ya que es muy similar
al lenguaje estndar SQL, pero se tuvo que investigar la parte del lenguaje PL/PgSQL ya que no
existen los procedimientos en PosgreSQL como tal, solo funciones por lo dems se cumpli con el
objetivo.
Saludos
David Castro
18