Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2018
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
Cálculo costo promedio

Buenas Tardes

Estoy desarrollando un modulo de control de inventarios y el calculo del costo promedio es básico para este tipo de módulos, la idea es la siguiente :

Ingresos de mercaderia:
Los productos vienen con un precio y en una primera instancia ese es el costo del articulo, cuando hay mas ingresos del mismo producto, lo que se hace es dividir el importe total entre la cantidad total, me explico

Fecha Producto Cantidad Precio Promedio
01.02.2018 Producto x 100 2.50 2.50
06.02.2018 Producto x 300 2.10 2.20


por la siguiente razón:
Ingreso Precio Saldo Cantidad Ingreso Importe Saldo Importe Costo Promedio
100 2.5 100 250 250 2.5 (Se Divide 250 / 100)
300 2.1 400 630 880 2.2 (Se Divide 880 / 400)

y asi sucesivamente

Este proceso de calculo del costo, lo genero al momento del ingreso de los productos y hasta aqui todo esta perfecto.
En la salida de los productos (Venta), el costo promedio debe ser el ultimo calculado segun la fecha de ingreso


y como nada es perfecto en la vida.....que sucede...

en los inventarios a veces se pueden hacer modificaciones tanto en los ingresos como en las salidas y para darles un ejemplo
el primero ingreso se modifica la cantidad a 200, el costo quedaria de esta manera

Ingreso Precio Saldo Cantidad Ingreso Importe Saldo Importe Costo Promedio
200 2.5 200 500 500 2.5 (Se Divide 500 / 200)
300 2.1 500 630 1130 2.26 (Se Divide 1130 / 500)

una vez modificado tendria que re-calcular el costo promedio para los sucesivos ingresos y salidas posteriores a la fecha en que hice la modificacion.


la idea es re-calcular el costo promedio, en funcion a las fechas de ingreso, costo unitario y acumulado

tengo una tabla donde se guarda toda esa informacion, de acuerdo al mes, almacen y articulo

la idea que tengo es barrer esa tabla hacerle EDIT e ir re-calculando, pero temo que ese proceso demore muchisimo y tampoco creo que sea el mas apropiado

alguien tiene una idea de como optimizarlo?
alguien tiene alguna experiencia previa haciendo este tipo de calculos y re-calculos ?

espero haberme explicado bien.
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 02-10-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Existen distintas formas de calcular ese precio, los principales son el medio, el ponderado, lifo y fifo.
Tendrás que decidir qué método interesa más a esa empresa, pues no existe una forma fija y definitiva, depende de cada uno.
Echa un vistazo a esto, aunque puedes encontrar muchísima más información al respecto haciendo una búsqueda por la web.

Y por supuesto el lugar para hacer los cálculos es en la propia base de datos, mediante triggers que se disparan cuando cambian las existencias.
Responder Con Cita
  #3  
Antiguo 02-10-2018
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por oscarac Ver Mensaje
la idea que tengo es barrer esa tabla hacerle EDIT e ir re-calculando, pero temo que ese proceso demore muchisimo y tampoco creo que sea el mas apropiado
Según entiendo el problema no es calcular sino que pasa si se hace un cambio en el pasado.

Hablando puramente por rendimiento, un RDBMS debería hacer updates o deletes/insert rapidísimo mientras no hayan bloqueos sobre la tabla (ie: transacciones concurrentes que alteren la tabla).

No te preocupes por rendimiento a menos que hagas mediciones. .

---

Por el lado contable, no debería existir el "borrado" sino el "enmendado". En las tablas de tipo contable no se borra, se adicionan registros que indican que se esta enmendando un proceso pasado. A la hora de reportes, simplemente se suma todo. Algo asi:

Cita:
Fecha Producto Cantidad Precio Promedio Delta Evento
10/2018 Producto x 100 2.50 3.50 2.50 Insertado
11/2018 Producto x 100 2.50 2.50 -1.0 Corregido
Esto es una salvacion a la hora de auditar porque algo no funciona.

Y ademas hace los reportes precisos. El 10/2018 la cant registrada es 3.50 . No 2.50 si lo que hicieras fuera desaparecer la informacion.
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 02-10-2018
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
Entiendo,

en cuanto a la auditoria de la información, cualquier dato modificado se guarda en otras tablas que son invisibles para los usuarios en las cuales se puede verificar la información anterior
y tienes razon

el problema es el recalculo, no el calculo en si, por politica, se pueden realizar ventas sin stock y despues con el ingreso de la mercaderia vendida se regulariza, pero en cuestiones de costo los datos son incorrectos, es por eso necesario el recalculo.

lo que queria era ideas de como hacer el recalculo sin tener que "barrer" la data, pero veo que segun las caracteristicas que quiero implementar al modulo, esto tendra que ser asi (barrer)
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 02-10-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo tengo una tabla que tiene los datos básicos del documento y el cálculo del Precio Medio Ponderado.
A esto agrego una marca de validez.
Cuando hay una modificación/inserción o borrado, invalido los registros posteriores a la fecha.
De esta manera si encuentro un registro que es válido lo utilizo. Si es inválido llamo a una función que recalcula a partir de una fecha y me devuelve el registro que quiero.

Ejemplo:
  1. entra 10 a 100€
  2. Salen 5 a 90€
  3. Entran 7 a 90€
Código:
ID_ART, FECHA, ID_DOC_Y_LIN, UDS, PRECIO, STOCK, PMP,    LIFO,   FIFO,   VALIDO
1,      1/1/18, 1,           10,  100.00, 10,    100.00, 100.00, 100.00, 1
1,      4/1/18, 2,           -5,  100.00,  5,    100.00, 100.00, 100.00, 1
1,      9/1/18, 3,            7,   90.00, 12,     94.17,  90.00, 100.00, 1
...

Última edición por duilioisola fecha: 02-10-2018 a las 17:51:57.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Programa de promedio alenbebote Varios 34 22-05-2012 03:27:37
Promedio.. digitos primos .. luisito2011 Varios 3 07-05-2011 03:54:02
Promedio de fechas Pancholp1986 MySQL 6 23-03-2011 16:34:29
cálculo de promedio en delphi ??? Trident OOP 8 24-09-2010 21:18:40
promedio velezbunzl Varios 12 17-03-2009 01:07:32


La franja horaria es GMT +2. Ahora son las 22:56:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi