Plugin: facturacion_base
Igual estoy haciendo algo mal....casi seguro, vaya...pero si tengo 3 unidades en stock de un artículo y en ventas/pedidos intento hacer un pedido de 4 unidades...no debería decirme que no puede ser o algo así?
Tengo la opción "Permitir ventas sin stock" puesta en NO, pero parece que solo funciona si el stock es igual a cero.

hace más de un año   dilmix2_f74d39
He puesto el ejemplo de ventas/pedidos, pero pasa lo mismo en albaranes y facturas.
hace más de un año   NeoRazorX   [admin]
Todavía no hay una comprobación "estricta" del stock. Mientras haya una unidad te permite vender las que quieras.
Se avanzará en ese área cuando se revise toda la gestión de stock.
Saludos.
hace más de un año   dilmix2_f74d39
Bueno, de momento he conseguido evitar que se incluya en un albarán cualquier cantidad de un artículo mayor que la del stock disponible.
Peeeeero...el precio total no se guarda correctamente en la bdd y salta el error de que "el total difiere entre la vista y el controlador", posterior eliminación del albarán.
Hasta aquí he llegado con mis conocimientos/tiempo disponible.
Pongo el código por si alguien quiere echarme un cable. Aviso, es una chapuza y lo sé.

plugins/facturacion_base/controller/nueva_venta.php empezando en la línea 732
[code]

//buscamos el stock real del artículo
$select=$this->db->select("SELECT stockfis FROM articulos WHERE referencia='".$linea->referencia."'");
$stockreal=$select[0]['stockfis'];

//si es menor que la cantidad seleccionada lanzamos mensaje con el/los artículos que no tienen suficiente stock y marcamos la variable $lineastock=FALSE
if($linea->cantidad > $stockreal){
$this->new_error_msg("¡No hay suficiente stock del artículo: ".$linea->referencia);
$lineastock = FALSE;
}


//ponemos un if que evita actualizar el albarán con los artículos sin stock suficiente
if($lineastock)
{
//a partir de aquí todo queda igual y cerramos el if
if($linea->save() )
{
if( $articulo AND isset($_POST['stock']) )
{
/// descontamos del stock
$articulo->sum_stock($albaran->codalmacen, 0 - $linea->cantidad);
}

$albaran->neto += $linea->pvptotal;
$albaran->totaliva += ($linea->pvptotal * $linea->iva/100);
$albaran->totalirpf += ($linea->pvptotal * $linea->irpf/100);
$albaran->totalrecargo += ($linea->pvptotal * $linea->recargo/100);

if($linea->irpf > $albaran->irpf)
{
$albaran->irpf = $linea->irpf;
}
}
else
{
$this->new_error_msg("¡Imposible guardar la linea con referencia: ".$linea->referencia);
$continuar = FALSE;
}
}

[code]
hace más de un año   dilmix2_f74d39
Se me olvidó cerrar el [/code] del final :(
hace más de un año   dilmix2_f74d39
Solucionado, aunque no de la mejor manera.
De esta forma, la función nuevo_albaran_cliente() de facturacion_base/controller/nueva_venta.php (se puede hacer lo mismo con nueva_factura_cliente() ) realmente controla si hay suficiente stock de cada artículo añadido y en caso contrario, añade al albarán únicamente la cantidad disponible del artículo/s en cuestión. Además lanza un mensaje indicando el artículo/s sin stock suficiente.
Empezando en la línea 730:
  //dilmix->buscamos el stock físico del artículo actual
                   $select=$this->db->select("SELECT stockfis FROM articulos WHERE referencia='".$linea->referencia."'");
                   $stockreal=$select[0]['stockfis'];

                   //dilmix->si es menor que la cantidad seleccionada recalculamos con la cantidad disponible y lanzamos mensaje de error
                   if($linea->cantidad > $stockreal){
                       $linea->cantidad=$stockreal;
                       $linea->pvpsindto = ($linea->pvpunitario * $linea->cantidad);
                       $linea->pvptotal = $linea->pvpsindto -( $linea->pvpsindto * $linea->dtopor/100);
                       $this->new_error_msg("¡No hay suficiente stock del artículo: ".$linea->referencia);
                   }


Lo que no me gusta es que un poco más abajo tengo que comentar éste if para que no controle si hay diferencias entre la vista y el controlador (las va a haber porque estamos cambiando lo pedido en el formulario):
               /*if comentado
               if( abs(floatval($_POST['atotal']) - $albaran->total) >= .02 )
               {
                  $this->new_error_msg("El total difiere entre la vista y el controlador (".$_POST['atotal'].
                          " frente a ".$albaran->total."). Debes informar del error.");
                  $albaran->delete();
               //}
               /*else*/ if( $albaran->save() )-->a partit de éste if todo continúa igual


La pregunta es la siguiente:
Qué posibles errores se intentan evitar controlando la diferencia entre vista y controlador? Qué puede ocurrirr al dejar de controlarlo?
hace más de un año   NeoRazorX   [admin]
Con esa comprobación se intentar detectar casos en los que el cálculo de la vista sea distinto al del controlador. De vez en cuando avisan de que falla, pero nunca dan más datos. Eso está ahí para detectar errores de programación, más que nada.
hace más de un año   dilmix2_f74d39
Ok, entonces lo doy por bueno de momento. Por lo menos hasta que se revise la gestión del stock en próximas actualizaciones.
Gracias y felicidades por el trabajo. Si puedo ayudar en algo (dentro de mis limitaciones) por aquí estaré.
hace más de un año   NeoRazorX   [admin]
Puedes enviar plugins que hagas y quieras compartir: https://www.facturascripts.com/comm3/index.php?page=community_enviar_plugin
Saludos.
hace más de un año   dilmix2_f74d39
No se si vale la pena hacer un plugin basado en esta modificación, ya que es una cambio bastante pequeño.
Si creeis que la vale, me pongo a ello en cuanto tenga un momento (o dos).
hace 10 meses   -   [cron]
[[Cerrado por inactividad]]
No se pueden hacer más comentarios. Mejor escribe una nueva pregunta

Financiación extra

15 patrocinadores

Este mes se han realizado un total de 15 aportaciones económicas para acelerar el desarrollo del proyecto.

35% Complete

175 € este mes. Puedes aumentar estas cifras ;-)

+5 € +4 votos

+25 € +20 votos




Soporte

FacturaScripts es software libre y gratuito, pero si lo que busca es asesoramiento y soporte profesional, use la sección soporte. Encontrará el partner apropiado para el trabajo apropiado.

  Soporte

O síganos en las redes sociales.





© 2013-2017 FacturaScripts