Está en la página 1de 29

Universidad Abierta

Para Adultos
_______________________________________________

NOMBRES:

Ana Yamilka Díaz Comprés, Raivin Mercedes y Emmanuel Beltré

MATRICULA:

17-5024, 17-6521 Y 17-4219

ASIGNATURA:
Ingeniería del software 2

TEMA:

TAREA 1 DEL PROYECTO

FACILITADOR:

Rafaelina Pichardo Mejía

25 de junio del 2019


Santiago, República Dominicana
Tarea 2: Diseño del sistema y cada uno de sus componentes:( valor 20)

1. Diagramas de clase, caso de uso, entidad relaciones, etc.

DIAGRAMA DE CLASES
CASO DE USO

MODELO ENTIDAD RELACION


2. Diseño interfaz hombre-máquina (todas las pantallas)

Login

Interfaz Principal

Inicio de turno
Facturación

Creación de Factura
Registro de Facturas al Contado

Pagos de Factura a credito

Cobros de Factura Clientes


Movimiento Inventario

Ingreso de Articulos
Ingreso de Clientes

Ingreso de suplidores.

Reporte de Ventas
Reporte de Facturas

Reporte Facturas de Cuentas por Pagar


3. Modelo de datos (diseño de la BD con relaciones visibles)
4. Lista de tablas (nombre y propósito) y 5. Diccionario de datos (nombre del
atributo, descripción, tipo de datos, tamaño, observación (clave primaria, campo
requerido, etc.)).
Nombre archivo: PERSONA
Descripción: Tabla que contendrá los registros de toda las personas de la tienda
Clave Campo Tipo de datos tamaño Descripción
Pk codigo_persona int códgo de la personas
nombre_persona varchar 40 nombre de la persona
apellido1_persona varchar 40 apellido paterno de la persona
apellido2_persona varchar 40 apellido materno de la persona
identificacion_persona varchar 12 número identificacion de la persona
telefeno varchar 12 teléfono de pa persona
correo_persona varchar 40 correo de la persona
nacionalidad_persona varchar 18 nacionalidad de la persona
pasaporte_persona varchar 14 número de pasaporte de la persona
fecha_nacimiento date fecha de nacimiento de la persona
fecha_registro date fecha de registro de la persona
sexo varchar 1 sexo de la persona
estatus_persona varchar 10 estado civil de la persona

Nombre archivo: NIVEL_USUARIO


Descripción: Tabla que contendrá los registros de los niveles de usuario del sistema
Clave Campo Tipo de datos tamaño Descripción
PK codigo_nivel int código de nivel de usuario
descripcion varchar 50 descripción del nivel de usuario

Nombre archivo: USUARIO


Descripción: Tabla que contendrá los registros de los usuarios del sistema
Clave Campo Tipo de datos tamaño Descripción
Pk codigo_usuario int código de usuario
FK codigo_persona int código de la persona
FK codigo_nivel int código del nivel de usuario
login_usuario varchar 30 usurio para entrar al sistema
clave_usuario varchar 15 contraseña de usuario
fecha_registro date fecha de registro del usuario
fecha_ingreso date fecha de ingreso del usuario

Nombre archivo: CLIENTES


Descripción: Tabla que contendrá los registros de los clientes de la tienda
Clave Campo Tipo de datos tamaño Descripción
PK codigo_cliente int código del cliente
FK codigo_persona int código de la persona
limite_credito numeric 12,2 límite del crédito del cliente

Nombre archivo: SUPLIDOR


Descripción: Tabla que contendrá los registros de los suplidores de la tienda
Clave Campo Tipo de datos tamaño Descripción
PK codigo_suplidor int código del suplidor
FK codigo_persona int código de la persona

Nombre archivo: NACIONALIDAD_ARTICULO


Descripción: Tabla que contendrá los registros de la nacionalidad de los articulos
Clave Campo Tipo de datos tamaño Descripción
PK codigo_nacionalidad int código de la nacionalidad de articulos
descripcon_nacionalidad varchar 50 descripción de la nacionalidad
Nombre archivo: DEPARTAMENTOS
Descripción: Tabla que contendrá los registros de Los departamentos de la tienda
Clave Campo Tipo de datos tamaño Descripción
PK codigo_departamento int código del departamento
descripcion_departamento varchar 50 descripción del departamento
encargado_departamento varchar 50 encargado del departamento
fecha_registro date fecha de registro del departamento
estatus_departamento bit estado del departamento

Nombre archivo: DESCRIPCION_ARTICULO


Descripción: Tabla que contendrá los registros de las descripciones de los artículos
Clave Campo Tipo de datos tamaño Descripción
PK codigo_descripcion_articulo int código de la descripción de los artículos
descripcion_articulo varchar 50 descripción de los artículos
marca varchar 50 marca del artículo

Nombre archivo: CLASIFICACION_ITBIS


Descripción: Tabla que contendrá los registros de la clasificación de itbis
Clave Campo Tipo de datos tamaño Descripción
PK codigo_itbis int código de la clasificación de itbis
descripcion_itbis varchar 20 descripción de itbis
porciento_itbis numeric 12,2 porciento de itbis

Nombre archivo: ARTICULO


Descripción: Tabla que contendrá los registros de los artículos de la tienda
Clave Campo Tipo de datos tamaño Descripción
Pk codigo_articulo int código del artículo
FK codigo_descripcion _articulo int código de la descripción del artículo
FK codigo_itbis int código de la clasidicación de itbis
FK codigo_departamento int código del departamento
FK codigo_suplidor int código del suplidor
FK codigo_nacionalidad int código de la nacionalidad del artículo
estatus_articulo bit estado del artículo
cantidad_minima int cantidad mínima de artículo
cantidad_maxima int cantidad máxima del artículo

Nombre archivo: CODIGO_BARRA


Descripción: Tabla que contendrá los registros de los códigos de barra de cada artículo
Clave Campo Tipo de datos tamaño Descripción
PK codigo_barra int código de barras del artículo
Fk codigo_articulo int código del artículo
unidad_articulo varchar unidad del artículo

Nombre archivo: ALMACENERO


Descripción: Tabla que contendrá los registros de los almaceneros de la tienda
Clave Campo Tipo de datos tamaño Descripción
PK codigo_almacenero int código del almacenero
FK codigo_persona int código de la persona
nombre_almacenero varchar nombre del almacenero
Nombre archivo: ALMACEN
Descripción: Tabla que contendrá los registros del almacén de la tienda
Clave Campo Tipo de datos tamaño Descripción
PK codigo_almacen int código del almacén
FK codigo_almacenero int código del almacenero
nombre_almacen varchar 30 nombre del almacen
vender_existencia bit existencia en el almacen
fecha_registro date fecha de registro de almacen

Nombre archivo: EXISTENCIA_ARTICULO


Descripción: Tabla que contendrá los registros de la existencia de los artículos
Clave Campo Tipo de datos tamaño Descripción
FK codigo_articulo int código del artículo
FK codigo_almacen int código del almacen
cantidad_existencia numeric 20,0 cantidad en existencia de artículo
unidad_existencia varchar unidad de exiatencia

Nombre archivo: PRCIO_ARTICULO


Descripción: Tabla que contendrá los registros de Los precios de los artículos
Clave Campo Tipo de datos tamaño Descripción
FK codigo_articulo int código del artículo
unidad_articulo varchar 20 unidad de artículo
precio_articulo numeric 12,2 precio del artículo

Nombre archivo: FACTURA_VENTA


Descripción: Tabla que contendrá los registros de las ventas de los artículos
Clave Campo Tipo de datos tamaño Descripción
Pk numero_factura numeric 6,0 número de factura
PK tipo_factura varchar 1 tipo de factura
Fk codigo_cliente int código del cliente
fecha_venta date fecha de la venta
tipo_comprobante varchar 2 tipo de comprobante de la venta
comprobante_factura varchar 20 comprobante de la factura
rnc_cliente varchar 15 rnc del cliente
subtotal_cxp numeric 12,2 subtotal de la cuenta por pagar
total_itbis numeric 12,2 total de itbis
descuento_factura numeric 12,2 descuento de la venta
condicion_factura int condicion de la factura

Nombre archivo: UNIDADES_ARTICULOS


Descripción: Tabla que contendrá los registros de las unidades de los artículos
Clave Campo Tipo de datos tamaño Descripción
FK codigo_articulo int código del artículo
unidad_articulo varchar 25 unidad de articulos
factor_unidad numeric 6,2 factor de unidad de los artículos
Nombre archivo: DETALLE_FACTURA_VENTA
Descripción: Tabla que contendrá los registros de los detalles de las ventas
Clave Campo Tipo de datos tamaño Descripción
FK codigo_articulo int código del artículo
numero_factura numeric 6,0 número de la factura
tipo_factura varchar 1 tipo de factura
unidad_articulo varchar 25 unidad de artículo
itbis_articulo numeric 12,2 itbis del artículo
cantidad_articulo numeric 6,2 cantidad del artículo
precio_articulo numeric 12,2 precio del artículo
descuento_articulo numeric 12,2 descuento del artículo

Nombre archivo: cxc_FACTURA


Descripción: Tabla que contendrá los registros de las cuentas por cobrar de las ventas
Clave Campo Tipo de datos tamaño Descripción
PK numero_facturacxc numeric 6,0 numero de factura por cobrar
FK codigo_clientes int código de clientes
numero_factura numeric
tipo_factura varchar 1 tipo de factura
fecha_factura date fecha de la factura
fecha_vencimiento date fecha de vencimiento de la factura
monto_factura numeric 12,2 monto de la factura
status_factura varchar 1 estado de la factura

Nombre archivo: cxc_detalle_movimiento


Descripción: Tabla que contendrá los registros del detalle de los movimientos de las cuentas por cobrar
Clave Campo Tipo de datos tamaño Descripción
FK numero_facturacxc numeric 6,0 numero de factura
numero_movimiento numeric 6,0 numero del movimiento
total_pagado numeric 12,2 total pagado

Nombre archivo: tipo_movimiento_cxc


Descripción: Tabla que contendrá los registros del tipo de movimientos de las cuentas por cobrar
Clave Campo Tipo de datos tamaño Descripción
PK tipo_movimiento varchar 2 tipo movimiento de la cxc
descripcion_movimiento varchar 100 descripcion del tipo de movimiento
Nombre archivo: cxc_MOVIMIENTOS
Descripción: Tabla que contendrá los registros de los movimientos de las cuentas por cobrar
Clave Campo Tipo de datos tamaño Descripción
Pk numero_movimiento numeric 6,0 numero de movimiento
FK tipo_movimiento varchar 2 tipo de movimiento e la cuenta por cobrar
FK codigo_cliente int código del cliente
nombre_cliente varchar 40 nombre del cliente
fecha_movimiento date fecha del movimiento
detalle_movimiento varchar max detalle del movimiento
monto_total numeric 12,2 monto total del movimiento
status_movimiento varchar 1 estado del movimiento

Nombre archivo: COMPRAS_cxp


Descripción: Tabla que contendrá los registros de las compras
Clave Campo Tipo de datos tamaño Descripción
PK factura_cxp numeric 20,0 numero de factura
Fk codigo_suplido int código del suplidor
tipo_compra varchar 20 tipo de compra
fecha_registro date fecha de registro de la compra
fecha_llegada date fecha de llegada de la compra
comprobante_suplidor varchar 20 comprobante del suplidor
rnc_suplidor numeric 15,0 rnc del suplidor
subtotal_cxp numeric 12,2 subtotal de la compra
total_itbis numeric 12,2 total de itbis de la compra

Nombre archivo: DETALLE_COMPRAS_cxp


Descripción: Tabla que contendrá los registros de los detalles de las compras
Clave Campo Tipo de datos tamaño Descripción
FK factura_cxp numeric 20,0 número de factura de la compra
FK codigo_articulo int código del artículo
unidad_articulo varchar 25 unidad del artículo
cantidad_articulo numeric 6,2 cantidad de artículo
costo_unidad numeric 12,4 costo por unidad del artículo

Nombre archivo:cxp_FACTURA
Descripción: Tabla que contendrá los registros de las facturas de las compras
Clave Campo Tipo de datos tamaño Descripción
PK numero_facturacxp numeric 6,0 número de factura de la compra
FK codigo_suplidor int código del suplidor
FK codigo_almacen int código del alamcen
tipo_factura varchar 1 tipo de factura
nombre_suplidor varchar 40 nombre del suplidor
rnc_suplidor varchar 15 rnc del suplidor
fecha_compra date, fecha de la compra
comprobante_suplidor varchar 20 comprobante del suplidor
total_cxp numeric 12,2 total de la cuenta por pagar
subtotal_cxp numeric 12,2 subtotal de la cuenta por pagar
total_itbis numeric 12,2 total de itbis
descuento_factura numeric 12,2 descuento de la factura
condicion_factura int condición de la factura
status_factura varchar 1 estado de la factura

Nombre archivo:cxp_factura_pendiente
Descripción: Tabla que contendrá los registros de las facturas pendientes de las compras
Clave Campo Tipo de datos tamaño Descripción
FK codigo_suplidor int código del suplidor
numero_factura numeric 6,0 número de la factura
fecha_factura date fecha de la factura de cxp
fecha_vencimiento date fecha de vencimiento de la cxp
monto_factura numeric 12,2 monto de la cuenta por pagar
monto_pendiente numeric 12,2 monto pendiente
condicion_factura int condición de la factura
status_factura varchar 1 estado de la factura
Nombre archivo:cxp_detalle_factura
Descripción: Tabla que contendrá los registros de las facturas pendientes de las compras
Clave Campo Tipo de datos tamaño Descripción
FK codigo_articulo int código del artículo
numero_factura numeric 6,0 número de la factura
unidad_articulo varchar 25 unidad del articulo
itbis_articulo numeric 12,2 itbis del articulo
cantidad_articulo numeric 6,2 cantidad de artículo
costo_articulo numeric 12,2 costo del artículo

Nombre archivo:tipo_movimiento_cxp
Descripción: Tabla que contendrá los registros del tipon de movimineto de las cuentas por pagar
Clave Campo Tipo de datos tamaño Descripción
PK tipo_movimiento_cxp varchar 2 tipo de movimento de la cuenta por pagar
descripcion_movimiento varchar 100 descripción del tipo de movimiento

Nombre archivo:tipo_movimiento_cxp
Descripción: Tabla que contendrá los registros del tipon de movimineto de las cuentas por pagar
Clave Campo Tipo de datos tamaño Descripción
Pk numero_movimiento_cxp numeric 6,0 número demovimiento de la cuenta por pagar
FK tipo_movimiento varchar 2 tipo de movimiento
FK codigo_suplidor int código del suplidor
nombre_suplidor varchar 40 nombre del soplidor
fecha_movimiento date fecha del movimiento
detalle_movimiento varchar max detalle del movimiento
monto_total numeric 2,2 monto total del movimiento
status_movimiento varchar 1 estado del movimiento

6. Disparadores o procedimientos almacenados a utilizar dentro de la base de datos.


Precedimientos Almacenados
Procedimiento DatosFactura
ALTER proc [dbo].[datosfactura]
@tipo_factura varchar(1),
@codigo_cliente varchar(6),
@nombre_cliente varchar(50),
@tipo_combrobante varchar(2),
@comprobante varchar(20),
@rnc_cliente varchar(15),
@subtotal_cxp numeric (12,2),
@total_itbis numeric(12,2),
@descuento_factura numeric(12,2),
@telefono_cliente varchar(25),
@direccion_cliente varchar(250),
@condicion_factura int
as
set nocount on

declare @numero_factura int

select @numero_factura=MAX(numero_factura) from factura_venta


where tipo_factura=@tipo_factura
if @numero_factura is null set @numero_factura=0
set @numero_factura=@numero_factura+1

insert into
factura_venta(numero_factura,tipo_factura,codigo_cliente,nombre_cliente,fecha_ven
ta,tipo_comprobante,comprobante_factura,rnc_cliente,subtotal_cxp,total_ITBIS,desc
uento_factura,telefono_cliente,direccion_cliente,condicion_factura)
values
(@numero_factura,@tipo_factura,@codigo_cliente,@nombre_cliente,getdate(),@tipo_co
mbrobante,@comprobante,@rnc_cliente,@subtotal_cxp,@total_itbis,@descuento_factura
,@telefono_cliente,@direccion_cliente,@condicion_factura)

update comprobantes set


secuencia_actual=secuencia_actual+1,cantidad_disponible=cantidad_disponible-1
where tipo_comprobante=@tipo_combrobante

select * from factura_venta where numero_factura=@numero_factura and


tipo_factura=@tipo_factura

Procedimiento que muestra Detalle de Compra


ALTER proc [dbo].[detalleCompras]
@numero_factura numeric(6,0),
@codigo_artuculo varchar(6),
@unidad_articulo varchar(25),
@itbis_articulo numeric(12,2),
@cantidad_articulo numeric(6,2),
@costo_articulo numeric(12,2),
@codigo_almacen varchar(4)
as
set nocount on
if not exists (select * from cxp_detalle_factura where
numero_Factura=@numero_factura and codigo_articulo=@codigo_artuculo and
unidad_articulo=@unidad_articulo)
begin
insert into cxp_detalle_factura
(numero_factura,codigo_articulo,unidad_articulo,itbis_articulo,cantidad_articulo,
costo_articulo)
values ( @numero_factura
,@codigo_artuculo,@unidad_articulo,@itbis_articulo,@cantidad_articulo,@costo_arti
culo )
end
else
begin
update cxp_detalle_factura set itbis_articulo=@itbis_articulo,
cantidad_articulo=@cantidad_articulo, costo_articulo=@costo_articulo
where numero_Factura=@numero_factura and codigo_articulo=@codigo_artuculo and
unidad_articulo=@unidad_articulo
end

begin
declare @uni_min varchar(25)
declare @cantidad_unidad numeric(6,2)
select TOP 1 @uni_min=(unidad_articulo) from unidades_articulos where
codigo_articulo=@codigo_artuculo order by factor_unidad asc
if(@uni_min!=@unidad_articulo)
begin
select @cantidad_unidad=factor_unidad from unidades_articulos where
codigo_articulo=@codigo_artuculo and unidad_articulo=@unidad_articulo
set @cantidad_unidad=@cantidad_unidad*@cantidad_articulo
end
else
begin
set @cantidad_unidad=@cantidad_articulo
end

if not exists(select * from existencias_articulos where


codigo_articulo=@codigo_artuculo and codigo_almacen=@codigo_almacen and
unidad_existencia=@uni_min)
insert into existencias_articulos values
(@codigo_artuculo,@codigo_almacen,@cantidad_unidad,@uni_min)
else
update existencias_articulos set
cantidad_existencia=cantidad_existencia+@cantidad_unidad where
codigo_articulo=@codigo_artuculo and codigo_almacen=@codigo_almacen and
unidad_existencia=@uni_min

select * from existencias_articulos where codigo_articulo=@codigo_artuculo and


codigo_almacen=@codigo_almacen and unidad_existencia=@uni_min

end

Procedimiento para mostrar detalle de factura


ALTER proc [dbo].[detallefactura]
@numero_factura int,
@codigo_artuculo varchar(6),
@unidad_articulo varchar(25),
@itbis_articulo numeric(12,2),
@cantidad_articulo numeric(6,2),
@precio_articulo numeric(12,2)

as
set nocount on

insert into detalle_factura_venta


(numero_factura,codigo_articulo,unidad_articulo,itbis_articulo,cantidad_articulo,
precio_articulo)
values (@numero_factura
,@codigo_artuculo,@unidad_articulo,@itbis_articulo,@cantidad_articulo,@precio_art
iculo )

Procedimiento para guarder el codigo de barras


ALTER proc [dbo].[guardar_codigo_barra]
@codigo_articulo varchar(6),
@codigo_barra numeric(15),
@unidad_articulo varchar(25)
as
set nocount on
if not exists (select * from codigos_barra where
codigo_articulo=@codigo_articulo and codigo_barra=@codigo_barra)
insert into codigos_barra values
(@codigo_barra,@codigo_articulo,@unidad_articulo)
else
update codigos_barra set unidad_articulo=@unidad_articulo
where codigo_articulo=@codigo_articulo and codigo_barra=@codigo_barra

Procedimiento para guardar comprobantes


ALTER proc [dbo].[guardar_comprobantes]
@serie_comprobante varchar(1),
@tipo_comprobante varchar(2),
@secuencia_actual int,
@fecha_adquirido date,
@cantidad_disponible numeric(8),
@secuencia_inicial VARCHAR(8),
@secuencia_final varchar(8)

as
set nocount on

if not exists( select * from comprobantes where


tipo_comprobante=@tipo_comprobante)
insert into comprobantes
values(@serie_comprobante,'00','000','000',@tipo_comprobante,1,@fecha_adquirido,@
cantidad_disponible,@secuencia_inicial,@secuencia_final)

else
update comprobantes set
fecha_adquirido=@fecha_adquirido,
cantidad_disponible=cantidad_disponible+@cantidad_disponible,
secuencia_final=secuencia_final+@secuencia_final

select * from comprobantes where tipo_comprobante=@tipo_comprobante and


fecha_adquirido=@fecha_adquirido

Procedimiento para guardar costos


ALTER proc [dbo].[guardar_costos]
@codigo_articulo varchar(6),
@unidad_articulo varchar(25),
@costo_articulo numeric(12,2)
as
set nocount on
if not exists (select * from costos_articulos where
codigo_articulo=@codigo_articulo and unidad_articulo=@unidad_articulo)
insert into costos_articulos values
(@codigo_articulo,@unidad_articulo,@costo_articulo)
else
update costos_articulos set costo_articulo=@costo_articulo
where codigo_articulo=@codigo_articulo and unidad_articulo=@unidad_articulo

select * from costos_articulos where codigo_articulo=@codigo_articulo and


unidad_articulo=@unidad_articulo

Procedimiento para guardar cuadre caja


ALTER proc [dbo].[guardar_cuadre_caja]
@monto_tarjeta numeric(12,2),
@monto_efectivo numeric(12,2),
@monto_devolucion numeric(12,2),
@monto_total numeric(12,2),
@fecha_cuadre date,
@codigo_cajero int,
@codigo_turno int

as
set nocount on
declare @codigo_cuadre int
select @codigo_cuadre=max(codigo_cuadre) from facturacion_cuadre_caja where
codigo_cajero=@codigo_cajero and fecha_cuadre=@fecha_cuadre and
codigo_turno=@codigo_turno
if @codigo_cuadre is null set @codigo_cuadre=0
set @codigo_cuadre=@codigo_cuadre+1
if not exists (select * from facturacion_cuadre_caja where
codigo_cajero=@codigo_cajero and fecha_cuadre=@fecha_cuadre and
codigo_turno=@codigo_turno)
insert into facturacion_cuadre_caja values
(@codigo_cuadre,@monto_tarjeta,@monto_efectivo,@monto_devolucion,@monto_total,@fe
cha_cuadre,@codigo_cajero,@codigo_turno)

update facturacion_turnos_cajeros set status_turno=0 where


codigo_cajero=@codigo_cajero and fecha_turno=@fecha_cuadre and
codigo_turno=@codigo_turno
select * from facturacion_cuadre_caja where codigo_cajero=@codigo_cajero and
fecha_cuadre=@fecha_cuadre and codigo_turno=@codigo_turno

Procedimiento para guardar detalles de pago de las cuentas por cobrar


ALTER proc [dbo].[guardar_detalle_pago_cxc]
@numero_movimiento numeric(6,0),
@numero_factura numeric(6,0),
@total_pagado numeric(12,2)

as
set nocount on

--Insertando el detalle de las facturas


if not exists (select * from cxc_detalle_movimientos where
numero_movimiento=@numero_movimiento and numero_factura=@numero_factura)
insert into cxc_detalle_movimientos values
(@numero_movimiento,@numero_factura,@total_pagado)

--Actualizando el monto pendiente

declare @monto_pendiente numeric(6,2)


--Seleccionando la cantidad pendiente
select @monto_pendiente=monto_pendiente from cxc_facturas where
numero_factura=@numero_factura
if(@monto_pendiente=@total_pagado)
begin
update cxc_facturas set monto_pendiente=monto_pendiente-@total_pagado,
status_factura='P' where numero_factura=@numero_factura and
numero_facturacxc=@numero_factura
end
else
update cxc_facturas set monto_pendiente=monto_pendiente-@total_pagado where
numero_factura=@numero_factura and numero_facturacxc=@numero_factura

select * from cxc_detalle_movimientos where numero_movimiento=@numero_movimiento


select * from cxc_facturas where numero_factura=@numero_factura
Procedimiento para guardar el detalle de pago de las cuentas por pagar
ALTER proc [dbo].[guardar_detalle_pago_cxp]
@numero_movimiento numeric(6,0),
@numero_factura numeric(6,0),
@total_pagado numeric(12,2)

as
set nocount on

--Insertando el detalle de las facturas


if not exists (select * from cxp_detalle_movimientos where
numero_movimiento=@numero_movimiento and numero_factura=@numero_factura)
insert into cxp_detalle_movimientos values
(@numero_movimiento,@numero_factura,@total_pagado)

--Actualizando el monto pendiente

declare @monto_pendiente numeric(6,2)


--Seleccionando la cantidad pendiente
select @monto_pendiente=monto_pendiente from cxp_facturas_pendientes where
numero_factura=@numero_factura
if(@monto_pendiente=@total_pagado)
begin
update cxp_facturas_pendientes set monto_pendiente=monto_pendiente-@total_pagado,
status_factura='P' where numero_factura=@numero_factura
end
else
update cxp_facturas_pendientes set monto_pendiente=monto_pendiente-@total_pagado
where numero_factura=@numero_factura

select * from cxp_detalle_movimientos where numero_movimiento=@numero_movimiento


select * from cxp_facturas_pendientes where numero_factura=@numero_factura

Procedimiento para guardar facturar clients


ALTER proc [dbo].[guardar_factura_clientes]
@numero_facturacxc numeric (6,0),
@numero_factura numeric (6,0),
@fecha_vencimiento date,
@codigo_cliente varchar(6),
@monto_factura numeric(12,2),
@condicion_factura int

as
set nocount on

if not exists (select * from cxc_facturas where numero_factura=@numero_factura


and numero_facturacxc=@numero_facturacxc)
insert into cxc_facturas values
(@numero_facturacxc,@numero_factura,@codigo_cliente,GETDATE(),@fecha_vencimiento,
@monto_factura,@monto_factura,@condicion_factura,'A')

select * from cxc_facturas where numero_factura=@numero_factura and


numero_facturacxc=@numero_facturacxc
Procedimiento para guardar la facture del suplidor
ALTER proc [dbo].[guardar_factura_suplidor]
@numero_factura numeric (6,0),
@fecha_vencimiento date,
@codigo_suplidor varchar(6),
@monto_factura numeric(12,2),
@condicion_factura int

as
set nocount on

if not exists (select * from cxp_facturas_pendientes where


numero_factura=@numero_factura)
insert into cxp_facturas_pendientes values
(@numero_factura,@codigo_suplidor,GETDATE(),@fecha_vencimiento,@monto_factura,@mo
nto_factura,@condicion_factura,'A')

select * from cxp_facturas_pendientes where numero_factura=@numero_factura

Procedimiento para guardar movimientos del inventario


ALTER proc [dbo].[guardar_movimientos_inventario]
@tipo_movimiento varchar(2),
@descripcion_tipo varchar(50),
@accion_movimiento varchar(20),
@status_tipo varchar(1)
as
set nocount on

if not exists (select * from tipos_movimientos_inventario where


tipo_movimiento=@tipo_movimiento)
insert into tipos_movimientos_inventario values
(@tipo_movimiento,@descripcion_tipo,@accion_movimiento,'A')
else
update tipos_movimientos_inventario set descripcion_tipo=@descripcion_tipo,
accion_movimiento=@accion_movimiento, status_tipo=@status_tipo
where tipo_movimiento=@tipo_movimiento

select * from tipos_movimientos_inventario where tipo_movimiento=@tipo_movimiento

Procedimiento para guardar pagos de las cuentas por cobrar


ALTER proc [dbo].[guardar_pago_cxc]
@tipo_movimiento varchar(2),
@codigo_cliente varchar(6),
@nombre_cliente varchar(50),
@detalle_movimiento varchar(max),
@monto_total numeric(12,2)

as
set nocount on
--ReciboPago
declare @numero_movimiento numeric(6,0)

select @numero_movimiento=max(numero_movimiento) from cxc_movimientos


where tipo_movimiento=@tipo_movimiento
if @numero_movimiento is null set @numero_movimiento=0
set @numero_movimiento=@numero_movimiento+1

insert into cxc_movimientos values


(@numero_movimiento,@tipo_movimiento,@codigo_cliente,@nombre_cliente,getdate(),@d
etalle_movimiento,@monto_total,'A')

select * from cxc_movimientos where numero_movimiento=@numero_movimiento

Procedimiento para guardar pagos de las cuentas por pagar


ALTER proc [dbo].[guardar_pago_cxp]
@tipo_movimiento varchar(2),
@codigo_suplidor varchar(6),
@nombre_suplidor varchar(50),
@detalle_movimiento varchar(max),
@monto_total numeric(12,2)

as
set nocount on
--ReciboPago
declare @numero_movimiento numeric(6,0)

select @numero_movimiento=max(numero_movimiento) from cxp_movimientos


where tipo_movimiento=@tipo_movimiento
if @numero_movimiento is null set @numero_movimiento=0
set @numero_movimiento=@numero_movimiento+1

insert into cxp_movimientos values


(@numero_movimiento,@tipo_movimiento,@codigo_suplidor,@nombre_suplidor,getdate(),
@detalle_movimiento,@monto_total,'A')

select * from cxp_movimientos where numero_movimiento=@numero_movimiento

Procedimiento para guardar precios de los articulos por su categoria ya sea unidad,
paquete, six pack, etc.
ALTER proc [dbo].[guardar_precios]
@codigo_articulo varchar(6),
@unidad_articulo varchar(25),
@precio_articulo numeric(12,2)
as
set nocount on
if not exists (select * from precios_articulos where
codigo_articulo=@codigo_articulo and unidad_articulo=@unidad_articulo)
insert into precios_articulos values
(@codigo_articulo,@unidad_articulo,@precio_articulo)
else
update precios_articulos set precio_articulo=@precio_articulo
where codigo_articulo=@codigo_articulo and unidad_articulo=@unidad_articulo

Procedimiento para guardar terceros/personas que se registrarán en la BD


ALTER proc [dbo].[guardar_tercero]
@codigo_tercero varchar(6),
@nombre_tercero varchar(50),
@apellido_tercero varchar(50),
@direccion_tercero varchar(250),
@identificacion_tercero numeric(15,0),
@telefeno_tercero numeric(15,0),
@correo_tercero varchar(50),
@nacionalidad_tercero varchar(20),
@imagen_tercero image,
@fecha_nacimiento date,
@sexo_tercero varchar(15),
@status_tercero bit

as
set nocount on

if not exists (select codigo_tercero from tercero where


codigo_tercero=@codigo_tercero)
insert into tercero values (@codigo_tercero,
@nombre_tercero,@apellido_tercero,@direccion_tercero,@identificacion_tercero,@tel
efeno_tercero,@correo_tercero,@nacionalidad_tercero,@imagen_tercero,'NULL',
@fecha_nacimiento,getdate(),@sexo_tercero,'1')

else

update tercero
set
nombre_tercero=@nombre_tercero,apellido_tercero=@apellido_tercero,direccion_terce
ro=@direccion_tercero,identificacion_tercero=@identificacion_tercero,telefono_ter
cero=@telefeno_tercero,correo_tercero=@correo_tercero,nacionalidad_tercero=@nacio
nalidad_tercero,imagen_tercero=@imagen_tercero,fecha_nacimiento=@fecha_nacimiento
,sexo_tercero=@sexo_tercero, status_tercero=@status_tercero
where codigo_tercero=@codigo_tercero

select * from tercero where codigo_tercero=@codigo_tercero

Procedimiento para guardar tipos de comprobantes


ALTER proc [dbo].[guardar_tiposComprobantes]
@tipo_comprobantes varchar(2),
@descripcion_comprobante varchar(50)

as
set nocount on

if not exists(select * from tipos_comprobantes where


tipo_comprobante=@tipo_comprobantes)
insert into tipos_comprobantes values
(@tipo_comprobantes,@descripcion_comprobante)

else

update tipos_combrobantes set descripcion_comprobante=@descripcion_comprobante


where tipos_comprobante=@tipo_comprobantes

select * from tipos_comprobantes where tipo_comprobante=@tipo_comprobantes


Procedimiento que guarda los turnos del cajero
ALTER proc [dbo].[guardar_turno_cajero]
@codigo_turno int,
@codigo_cajero int,
@fecha_turno date,
@monto_turno float
as
set nocount on

if not exists (select * from facturacion_turnos_cajeros where


fecha_turno=@fecha_turno and status_turno=1 and codigo_turno=@codigo_turno and
codigo_cajero=@codigo_cajero)

insert into facturacion_turnos_cajeros values


(@codigo_turno,@codigo_cajero,@fecha_turno,@monto_turno,1)

else
update facturacion_turnos_cajeros set monto_turno=@monto_turno
where codigo_turno=@codigo_turno and fecha_turno=@fecha_turno and
codigo_cajero=@codigo_cajero
and status_turno=1

select * from facturacion_turnos_cajeros


where codigo_turno=@codigo_turno and fecha_turno=@fecha_turno and
codigo_cajero=@codigo_cajero

Procedimiento para guardar las unidades de los articulos


ALTER proc [dbo].[guardar_unidades_articulos]
@codigo_articulo varchar(6),
@unidad_articulo varchar(25),
@factor_unidad numeric(6,2)
as
set nocount on
if not exists (select * from unidades_articulos where
codigo_articulo=@codigo_articulo and unidad_articulo=@unidad_articulo)
insert into unidades_articulos values
(@unidad_articulo,@factor_unidad,@codigo_articulo)
else
update unidades_articulos set factor_unidad=@factor_unidad
where codigo_articulo=@codigo_articulo and unidad_articulo=@unidad_articulo

Procedimiento para imprimir facture


ALTER proc [dbo].[imprimirfactura]
@numero_factura int,
@tipo_factura varchar(1)
as
set nocount on
select f.*, df.codigo_articulo,
a.descripcion_articulo,df.precio_articulo,df.unidad_articulo,
df.cantidad_articulo,df.precio_articulo*df.cantidad_articulo+df.itbis_articulo as
importe,df.precio_articulo*df.cantidad_articulo as subtotal, nombre_cliente as
nombre,df.itbis_articulo as itbis, tf.descripcion
from factura_venta f inner join detalle_factura_venta df on
f.numero_factura=df.numero_factura
inner join articulos a on df.codigo_articulo=a.codigo_articulo
inner join tipos_facturas tf on tf.tipo_factura= f.tipo_factura
where f.numero_factura=@numero_factura and f.tipo_factura=@tipo_factura

Procedimiento para imprimir facturas de cuentas por cobrar


ALTER proc [dbo].[imprimirfacturacxc]
@numero_movimiento numeric(6,0),
@tipo_movimiento varchar(2)
as
set nocount on

select m.*, dm.numero_factura,dm.total_pagado


from cxc_movimientos m inner join cxc_detalle_movimientos dm
on m.numero_movimiento=dm.numero_movimiento
where m.numero_movimiento=@numero_movimiento and
m.tipo_movimiento=@tipo_movimiento

Procedimiento para guardar las facturas de cuentas por pagar


ALTER proc [dbo].[imprimirMovimientocxp]
@numero_movimiento numeric(6,0),
@tipo_movimiento varchar(2)
as
set nocount on

select m.* , dm.numero_factura, dm.total_pagado


from cxp_movimientos m inner join cxp_detalle_movimientos dm
on m.numero_movimiento=dm.numero_movimiento
where m.numero_movimiento=@numero_movimiento and
m.tipo_movimiento=@tipo_movimiento

Procedimiento para trabajar con el pago_factura_venta


ALTER proc [dbo].[pago_factura_venta]
@numero_factura numeric (6,0),
@monto_efectivo numeric(12,2),
@codigo_tarjeta int,
@monto_tarjeta numeric(12,2),
@numero_aprovacion varchar(20),
@numero_devolucion numeric(6,0),
@monto_devolucion numeric(12,2),
@codigo_turno int,
@codigo_cajero int
as
set nocount on

if not exists (select numero_factura from facturacion_formas_pagos where


numero_factura=@numero_factura)

insert into facturacion_formas_pagos values


(@numero_factura,@monto_efectivo,@codigo_tarjeta,@monto_tarjeta,@numero_aprovacio
n,@numero_devolucion,@monto_devolucion,@codigo_turno,@codigo_cajero,getdate(),1)

else
update facturacion_formas_pagos set
monto_efectivo=@monto_efectivo,codigo_tarjeta=@codigo_tarjeta,monto_tarjeta=@mont
o_tarjeta,numero_aprovacion=@numero_aprovacion,
numero_devolucion=@numero_devolucion,monto_devolucion=@monto_devolucion
where numero_factura=@numero_factura

select * from facturacion_formas_pagos where numero_factura=@numero_factura

Procedimiento para salvar compras


ALTER proc [dbo].[salvaCompras]
@numero_factura numeric(6,0),
@tipo_factura varchar(1),
@codigo_usuario varchar(6),
@codigo_suplidor varchar(6),
@nombre_suplidor varchar(50),
@rnc_suplidor varchar(15),
@fecha_compra date,
@comprobante_suplidor varchar(20),
@total_cxp numeric(12,2),
@subtotal_cxp numeric(12,2),
@total_itbis numeric(12,2),
@descuento_factura numeric(12,2),
@condicion_factura int,
@codigo_almacen varchar(4),
@status_factura varchar(1)
as
set nocount on

if not exists(select * from cxp_facturas where numero_factura=@numero_factura and


tipo_factura=@tipo_factura)
insert into
cxp_facturas(numero_factura,tipo_factura,codigo_usuario,codigo_suplidor,nombre_su
plidor,rnc_suplidor,fecha_compra,comprobante_suplidor,
total_cxp,subtotal_cxp,total_ITBIS,descuento_factura,
condicion_factura,codigo_almacen,status_factura)
values
(@numero_factura,@tipo_factura,@codigo_usuario,@codigo_suplidor,@nombre_suplidor,
@rnc_suplidor,@fecha_compra,@comprobante_suplidor,@total_cxp,@subtotal_cxp,@total
_itbis,@descuento_factura,@condicion_factura,@codigo_almacen,'A')
else
update cxp_facturas set codigo_usuario=@codigo_usuario,
codigo_suplidor=@codigo_suplidor, nombre_suplidor=@nombre_suplidor,
rnc_suplidor=@rnc_suplidor, comprobante_suplidor=@comprobante_suplidor,
total_cxp=@total_cxp, subtotal_cxp=@subtotal_cxp,
total_ITBIS=@total_itbis,descuento_factura=@descuento_factura,
condicion_factura=@condicion_factura,codigo_almacen=@codigo_almacen,
status_factura=@status_factura

select * from cxp_facturas where numero_factura=@numero_factura and


tipo_factura=@tipo_factura