Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Error en recepción de productos orden de compra

Si cree que ha encontrado un error en una versión estable, siéntase libre de comunicarlo aquí, indicando la versión.
ramiroques
Novato
Mensajes: 40
Registrado: Jue, 13/12/2012, 14:13
Ubicación: Bolivia

Error en recepción de productos orden de compra

Mensaje por ramiroques »

Buenos días.
Tengo instalado un ambiente de producción con la versión 10.0.1
Caso 1) Cuando se realiza la recepción de una orden de compra, donde todos los items son productos registrados (registrado en la base de datos como productos), la recepción se da sin problemas.
Caso 2) Cuando se realiza la recepción de una orden de compra, donde existen productos registrados y servicios (servicio libre) y cuando ese servicio libre se registra al final de la lista, la recepción SI da problemas.

Revisando el código reception/card.php
cuando se recorre cada uno de las lineas; se tiene (DESDE LA LINEA 301 de card.php:
$lineToTest = '';
foreach ($objectsrc->lines as $linesrc) {
if ($linesrc->id == GETPOST($idl, 'int')) $lineToTest = $linesrc;
En esta linea $lineToTest es la linea a revisar, pero nunca se utiliza
}
$linesrc llega al final de los lineas

$qty = "qtyl".$i;

Para el caso 2 siempre estara en la linea donde es un servicio libre con cantidad $qty > 0

$comment = "comment".$i;
$eatby = "dlc".$i;
$sellby = "dluo".$i;
$batch = "batch".$i;

$timeFormat = '%d/%m/%Y';

if (GETPOST($qty, 'int') > 0 || (GETPOST($qty, 'int') == 0 && $conf->global->RECEPTION_GETS_ALL_ORDER_PRODUCTS))
{
$ent = "entl".$i;

$idl = "idl".$i;

$entrepot_id = is_numeric(GETPOST($ent, 'int')) ? GETPOST($ent, 'int') : GETPOST('entrepot_id', 'int');

if ($entrepot_id < 0)
$entrepot_id = '';
if (!($linesrc->fk_product > 0) && empty($conf->global->STOCK_SUPPORTS_SERVICES))
$entrepot_id = 0;

En esta validación la variable $linesrc->fk_product siempre estará en 0 ya que se movió hasta el final de los items(item servicio de la orden de compra), motivo por el cual en el caso 2, siempre me da error y para todos las items a recepcionar.
Adjuntos
Captura de pantalla de 2020-10-14 11-33-51.png
Captura de pantalla de 2020-10-14 11-33-51.png (33.75 KiB) Visto 2007 veces

ramiroques
Novato
Mensajes: 40
Registrado: Jue, 13/12/2012, 14:13
Ubicación: Bolivia

Mensaje por ramiroques »

para dar solución a la misma realice este cambio

ORIGINAL
if (!($linesrc->fk_product > 0) && empty($conf->global->STOCK_SUPPORTS_SERVICES))
$entrepot_id = 0;

MODIFICADO
if (!($lineToTest->fk_product > 0) && empty($conf->global->STOCK_SUPPORTS_SERVICES))
$entrepot_id = 0;