Rebajar Precio Costo del producto

Quería pedirles de su ayuda, ya que tengo un dilema como poder realizar el rebaje de los precios de costo del producto ingresado.

Tengo un formulario "Cabecera Facturas de Compra" con un subformulario "Lineas Facturas de Compra" y al cargar los productos en cada linea al final tengo un campo llamado "Actualizar", en este campo tengo una instrucción SQL para actualizar el "Stock", "Ultimo Precio Compra", "Precio Medio Compra" y "PVP 1" (que es el precio por cobrar al público).

Private Sub ACTUALIZAR_LostFocus()
DoCmd.RunSQL "Update ARTICULOS set STOCK=NZ(STOCK_FINAL,0), [Ultimo Precio Compra]=('" & Nz(Me.PrecioCD, 0) & "'*'" & Nz(Me.CANTIDAD_FC, 0) & "')/('" & Nz(Me.CANTIDAD_FC, 0) & "'), [Precio Medio Compra]=((NZ(Stock,0)*NZ([Precio Medio Compra]))+('" & Nz(Me.PrecioCD) & "'*'" & Nz(Me.CANTIDAD_FC) & "'))/('" & Nz(Me.STOCK_FINAL, 0) & "'), [PVP 1]=(((NZ(Stock)*NZ([Precio Medio Compra]))+('" & Nz(Me.PrecioCD) & "'*'" & Nz(Me.CANTIDAD_FC) & "'))/('" & Nz(Me.STOCK_FINAL, 0) & "')*NZ([Beneficio PVP 1]))/(100)+ ((NZ(Stock)*NZ([Precio Medio Compra]))+('" & Nz(Me.PrecioCD) & "'*'" & Nz(Me.CANTIDAD_FC) & "'))/('" & Nz(Me.STOCK_FINAL, 0) & "') where Referencia='" & Me.CODIGO_ARTICULO_FC & "'"
Beep
If MsgBox("DESEAS ACTUALIZAR LA LINEA INGRESADA", vbYesNo + vbQuestion, "ESTAS A PUNTO DE ACTUALIZAR LA LINEA INGRESADA") = vbYes Then
Exit Sub
ElseIf vbNo Then
DoCmd.CancelEvent
End If
End Sub

Este código me funciona bien para todos los campos que les mencione al agregar productos, pero cuando elimino una linea solo me rebaja el stock y me gustaría que también me rebajara los precios y lo he intentado de varias formas, pero no me resulta, yo pensé que, si le agregaba el mismo código solo cambiando el símbolo + por - funcionaria, pero me sale error. Este es el código que tengo cuando elimino una linea.

Private Sub Form_Delete(Cancel As Integer)
DoCmd.RunSQL "Update Articulos set STOCK=NZ(STOCK,0) - " & Nz(Me.CANTIDAD_FC, 0) & "where Referencia='" & Me.CODIGO_ARTICULO_FC & "'"
Beep
If MsgBox("DESEAS ELIMINAR LA LINEA SELECCIONADA", vbYesNo + vbQuestion, "ESTAS A PUNTO DE ELIMINAR LA LINEA SELECCIONADA") = vbYes Then
Exit Sub
ElseIf vbNo Then
DoCmd.CancelEvent
End If
End Sub

1 Respuesta

Respuesta
2

Hector, te juro que me he perdido con la fórmula, pero por si te puede dar una idea, tengo la tabla Productos (fíjate en el primero)

Tengo unas existencias de 90 unidades al precio cada una de 10 €.

Tengo también un formulario de Compras de productos con un subformulario DetalleCompra

En cuanto selecciono el producto en Antes me dice que en ese momento( antes de comprar) tengo 90 unidades. Anoto el precio al que compro las nuevas unidades y la cantidad que compro

Con lo que la tabla Productos me queda

Ahora tengo 100 unidades a 9,8€ ( en este caso hago una media ponderada (90*10€+10*8€)/100

Si ahora pulso el botón de eliminar ese registro, me deja la tabla productos como estaba

El código del botón es( sólo para restaurar la tabla Productos)

Private Sub Comando28_Click()
DoCmd.RunSQL "update productos set precio=((precio*existencias)-subtotal)/(existencias-cantidad),existencias=Antes where producto='" & Me.Producto & "'"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas