Saltar al contenido

Control de stock en excel con access


Enigma25

Recommended Posts

publicado

Hola @[uSER=171672]cibecito[/uSER]

Para ello habria que ampliar las columnas de la tabla "TablaProductos" de acuerdo a los nuevos datos que necesitas incluir. Pero igual habria que modificar el formulario de registro de materiales y modificacion.

Como verás, el aporte es unico para ser usado por varias personas pero su fin como tal es que lo vean, analicen, aprendan usen si todo lo que tiene es lo que necesitan,etc. Hacer una modificacion para una sola persona le restaria mucho al original.

Pero, siempre se puede hacer lo posible para ayudarlos a todos.

Si puedes, por favor dame un archivo en excel con la forma como esperas a que esté armado tu base de productos. tambien algunos ejemplos y porque lo usas de ese modo y que esperas obtener con el tipo de registro...

Saludos.

  • Respuestas 251
  • Created
  • Última respuesta
publicado

donde está JoaoM?

Me gustaria saber si aun mantiene lo de los codigos y si lo quiere como lo mencionó alguna vez!!!

publicado

si algún usuario podría ayudarnos con el programa de enigma, lo que necesito es que al momento de jalar el producto, el precio de todos los ingresos se promedie y que no sea manual la casilla tendria que ser bloqueada, se tendria un stock valorizado real, gracias

publicado

Hola

Espero poder hacerlo pero si me permites, me tomará un tiempito para ver como lo puedo hacer y/o preguntar en el foro.

publicado

Hola

Dime una cosa....

Porque tomarias el promedio y no el valor mas alto? de hecho seria excelente si me dieras el porque se hace de ese modo. Asi tendria mas logica el funcionamiento del mismo.

Saludos.

publicado

Bueno, le explico en mi caso, al ingresar varios materiales a mi stock de mi almacén, ejemplo trapo industrial 03 compras del mes 1era compra precio $5.00 el kg, 2da compra $4.50 y tercera compra $4.00 kg, y yo quisiera hacer una salida tendría que ser del precio promedio de todas la ventas realizadas así tener un precio promedio $4.50 de todas las compras, así sucesivamente asi al hacer el cierre de mes tendría un valor mas real que sacando el precio mas alto, igual sucede en los stock valorado de todas las compras se tendría que hacer con un valor promedio de todas las compras tanto unidades compradas/precio del producto

publicado

Entiendo...

Dejame leer sobre la informacion y te aviso. Creo que esto se puede hacer haciendo una relacion en el tipo de consulta. Es decir; Relacionar dos tablas: La de los productos y la de los registros y que de acuerdo a la informacion registrada, esta traiga consigo el precio promedio.

Lee tambien sobre precio promedio ponderado. Quizas ayuda a ampliar la informacion que tenemos. de todos modos seria de gran ayuda que alguien que tenga conocimiento del mismo pudira dar su valiosa opinion al respecto. Ya que me parece interesante el tema y si este aplica en un controld e inventario.

Mis respetos.

publicado

Hola

Una pregunta mas.... el promedio se calcularia tomando en cuenta las compras? Es decir; que si el precio de compra varia de uno a otro entonces cuando se hace la consulta del producto este deberia mostrar el promedio pero solo de las compras...?

publicado

Hola enigma, en un almacen cuando se crea un material no es necesario el precio, pero si su stock de seguridad, puesto que el precio tiene que ser cuando se ingresa el material al almacén al tener ingresos varios y de diferentes precio, en una consulta de tu stock valorado se tendría que promediar los precios de todas las compras de un material para que tengas un valor real de tu stock valorado, igual al dar salida se necesita un precio promedio de todos los ingresos de un material especifico, asi cuando tengas una consulta te de el valor promedio, si te das cuenta en stock de productos (reportes) sale el precio del ingrso del producto y no el promedio de todas las compras que se efectuó.

publicado

hummmm..... el precio se promedia de acuerdo a los ingresos...

Igualmente se promedia la salida de acuerdo a los precios de ingresos?

publicado

Voy a preguntarte mucho sobre el tema y espero puedas orientarme mas. Asi estoy seuro que podria mejorar el archivo gracias a la colaboracion de la gente.

Esto que me dices es muy importante ya que es obvio que no lo habia contemplado pero de verdad tiene logica.

De hecho creo que ya resolví la consulta:


Sub DetalleCodigo()
Set Rs = New ADODB.Recordset
Dato = UCase(Trim(CmbCodigo.Text))


Sql = "Select Productos.Codigo, Productos.Detalle, Productos.UM, Productos.PT" & _
", Avg(Registros.Precio) As Prom" & _
" From Productos INNER JOIN Registros ON Registros.Codigo=Productos.Codigo" & _
" Where Productos.Codigo= '" & Dato & "'" & _
"Group By Productos.Codigo, Productos.Detalle, Productos.UM, Registros.Precio, Productos.PT"

With Rs
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open Sql, Cnn, , , adCmdText
End With
If Rs.RecordCount > 0 Then
LblDetalle.Caption = UCase(Rs.Fields("Detalle"))
lblUnidad.Caption = UCase(Rs.Fields("UM"))
TxtValor = Format(Rs.Fields("Prom"), "#,##0.000")
lblStock.Caption = Format(Rs.Fields("PT"), "#,##0")
Else
LblDetalle.Caption = ""
lblUnidad.Caption = ""
TxtValor = ""
lblStock.Caption = ""
End If
Rs.Close
Set Rs = Nothing
End Sub
[CODE/][/CODE]

Que tiene de especial este codigo? Pues ; hace una consulta relacionando dos tablas: La de los productos y la de los registros y promediando el precio de acuerdo a los movimientos de Entradas. Este seria la consulta que tendriamos que emplear en dicho formulario.

Ahora bien, si esto es asi, algunos de los productos que se muestren en dicho formulario tendran valor 0 o vacio ya que si no tienen registros, no tienen con que promediarse la consulta.

publicado

Ok pero mi pregunta seria esta; si se promedia, Habria que promediar igualmente en los formularios de Entradas verdad?

Las salidas, igualmente se promediarian. Si el promedio se aplica en los formularios de Salidas Y/o Entradas, tambien deberia serlo en el reporte de Stock Productos que en si es valorizado.

Corrigeme si me equivoco...

De hecho dejame modificar varias cosas para que pueda; Dar de altas a los productos sin el precio, tambien en la modificacion. y lo demas que tenga que modificar.

publicado

...Incluiré una modificacion de la base de datos "Access" con una ampliacion de las columnas en las cuales definí cuatros almacenes mas. Estos serian.....

.PT: Producto Terminado

.MP: Materia Prima

.DV: Devoluciones

.CC: Control de Calidad

.BQ: Bloqueado

Tendran la opcion de realizar traspasos entre almacenes Con un nuevo formulario para tal fin para que manejen la mercancia segun lo necesario. Esto veremos si tiene la aceptacion y si tiene errores lo corregimos sobre la marcha.

publicado

Hola

Trabajo en el código automático. Espero hacer las pruebas pero creo que va por buen camino. el Formcodigos es el que muestra los items que podras mostrar dandole doble click al combobox1 del formulario Entrada y/o Salida. Cuando quieras mostrar un codigo al darle doble click se muestra el form donde podras consultar de acuerdo a las letras que vayas poniendo. es una manera mas amena de consultar en caso que no recuerdes el codigo.

publicado

Hola @[uSER=171524]ferbonilla74[/uSER]

Tengo problemas con el tipo de consulta en la que se muestra el promedio del precio. Debo buscar la manera de solucionarlo y hasta tanto no podré hacer mas por los momentos.

Luego te aviso.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.