afaraldo / casa-de-las-pinturas

Proyecto de Ingenieria de Software 2 FIUNI
1 stars 1 forks source link

Definir la documentación para el feature Movimientos Genericos #38

Closed bordonwork closed 8 years ago

bordonwork commented 8 years ago

Se requiere definir la documentación necesaria en donde se especifique:

Descripción

En esta sección se deberá describir el feature, su utilidad para el negocio, los actores, las vistas necesarias (y su propósito), entre otro detalles que ayuden a comprender el objeto del feature.

Flujo

Para cada formulario del feature se requerirá especificar:

Nota: con respecto a los flujos y excepciones, éstos deben redactarse desde el punto de vista del formulario, no del proceso del negocio (por lo tanto se excluyen referencias como: el cliente llega y pide un producto).

Dependencias

Se debe especificar las dependencias con otros features, y explicar en qué consisten dichas dependencias.

Gemas necesarias

En esta sección se deberá incluir las gemas que se utilizarán para el feature. Se debe especificar para cada vista del feature que gemas se utilizan, la versión de la gema y para que se utiliza dicha gema.

Prioridad

La prioridad del feature dentro del proyecto en una escala del 1 al 10 (en donde 10 es la prioridad más alta). .

afaraldo commented 8 years ago

FEATURE MOVIMIENTO GENERICO

DESCRIPCIÓN El sistema realiza muchos tipos diferentes de movimientos que afectan a principalmente la disponibilidad de la caja, la cantidad de mercadería en stock y el saldo de los proveedores/clientes. Estos movimientos están representados por documentos (Como boleta de compra/venta) o acciones (como devolución de mercadería, cobros/pagos y movimientos de mercadería y caja agregados manualmente y con propósitos de ajustes específicos).

Todos estos movimientos deben ser registrados de una forma uniforme y clara de modo que permita al usuario visualizarlos y comprender fácilmente los orígenes que causaron que un saldo o cantidad tenga su valor actual.

Con el objetivo de lograr esta uniformidad en el manejo y presentación de tan variados movimientos del sistema, se busca generalizar y abstraer los mismos bajo la denominación de Movimiento Genérico.

Un movimiento genérico posee las siguientes características: • posee un id • posee un importe total • puede o no poseer detalles. • Posee un objeto Extracto.

Un Extracto posee las siguientes características: • posee un id • posee un objeto referenciado (que puede ser una persona, una mercadería, una caja)

Un Objeto referenciado posee las siguientes características comunes: • posee un id • posee un nombre • posee uno saldo o muchos saldo diferenciados por un único criterio. (Ej. Moneda) • posee una lista de detalles de periodos de saldos.

Entonces, se solicita implementar un modelo (de clases o librería de rutinas) que cumpla con los siguientes propósitos: • Debe poder extenderse a cualquiera de movimiento del sistema e identificar su tipo. • Debe contener la respuesta o callbacks a los eventos de crear, actualizar y borrar un movimiento genérico, al modificar un movimiento genérico este cambio se propaga actualizando el saldo de objeto referenciado en el movimiento y este a su vez debe cambiar su histórico de saldos • Debe proveer un formato intuitivo que permita el filtrado de los movimientos relacionados a su objeto referenciado. (Ejemplo: Filtrar los movimientos referentes a caja 1 entre fecha1 y fecha2, Filtrar los movimientos referentes a proveedor 2).

Métodos de resolución: • Puede crearse un modelo que centralice las características solicitadas y que sea extensible a otras clases. Obs.: Como el resultado provisto por un buen diseño e implementación de los movimientos genéricos influenciará la mantenimiento y performance del sistema, se deja a criterio del programador proponer otros métodos de resolución mejores.

ACTORES Son considerados actores las siguientes clases Boleta, Pagos, Movimientos mercaderías, Movimientos cajas por ser los que usaran la interfaz de movimientos genéricos.

VISTAS Ninguna

FLUJO No posee flujo. Es una modelo que se extiende a los movimientos del sistema y automatiza el saldo y las asociaciones entre movimiento, extracto, objeto_referenciado y perido_saldos.

DEPENDENCIAS Boleta, Pagos, Movimientos Caja, Movimiento Mercaderias, Devoluciones Compra y Venta

GEMAS NECESARIAS gem 'rails', '~> 4.2'

PRIORIDAD 10