Question: Error During Checkout Seems No Stock

Error During Checkout Seems No Stock

I am getting "500 internal server error" when checkout or transfer. attached screenshot for your reference. log: production.ERROR: Attempt to read property "name" on null {"userId":1,"exc

N

Nishad

Asked
I am getting "500 internal server error" when checkout or transfer.

attached screenshot for your reference.

log:
production.ERROR: Attempt to read property "name" on null {"userId":1,"exception":"[object] (ErrorException(code: 0): Attempt to read property \"name\" on null at /var/www/html/mydomain.com/app/Helpers/CheckOverSelling.php:48)
  • MS

    Mian Saleem

    Answered
    Hello,

    Please use item unit or you can edit the file `pp/Helpers/CheckOverSelling.php` to replace `->name` with `?->name`

    Thank you
  • N

    Nishad

    Answered
    I have replaced ->name with ?->name but still showing stock 0 on checkout.


    class CheckOverSelling
    {
    public function check($order_items, $warehouse_id)
    {
    $error = [];
    $items = Item::whereIn('id', collect($order_items)->pluck('item_id'))->with(['unit.subunits', 'stock' => fn ($q) => $q->ofWarehouse($warehouse_id)])->get();
    foreach ($order_items as $key => $order_item) {
    $old_quantity = 0;
    $base_quantity = 0;
    $unit = null;
    $item = $items->where('id', $order_item['item_id'])->first();
    if (isset($order_item['selected']) && isset($order_item['selected']['variations']) && ! empty($order_item['selected']['variations'])) {
    foreach ($order_item['selected']['variations'] as $order_variation) {
    $quantity = $order_variation['quantity'] + 0;
    $old_quantity = isset($order_variation['old_quantity']) ? (float) $order_variation['old_quantity'] : 0;
    $quantity = $old_quantity ? $quantity - $old_quantity : $quantity;
    $variation = Variation::with(['stock' => fn ($q) => $q->ofWarehouse($warehouse_id)])->find($order_variation['variation_id']);
    $unit = $order_variation['unit_id'] ? $item->unit->subunits->where('id', $order_variation['unit_id'])->first() : null;
    $variationStock = $variation->stock->where('warehouse_id', $warehouse_id)->first();
    $base_quantity = $unit ? convert_to_base_quantity($quantity, $unit) : $quantity;
    $meta = [];
    foreach ($variation->meta as $variant => $option) {
    $meta[] = $variant . ': ' . $option;
    }
    if (! $variationStock) {
    $error["items.{$key}.quantity"] = __choice('{name} ({variant}) do not have {quantity} in stock, available quantity {available}.', ['name' => $order_item['name'], 'quantity' => $quantity . ' ' . ($unit ? $unit?->name : $item->unit?->name), 'available' => '0 ' . $item->unit?->name, 'variant' => implode(', ', $meta)]);
    } elseif ($base_quantity && $variationStock->quantity < $base_quantity) {
    $error["items.{$key}.quantity"] = __choice('{name} ({variant}) do not have {quantity} in stock, available quantity {available}.', ['name' => $order_item['name'], 'quantity' => $quantity . ' ' . ($unit ? $unit?->name : $item->unit?->name), 'available' => ((float) $variationStock->quantity) . ' ' . $item->unit?->name, 'variant' => implode(', ', $meta)]);
    }
    }
    } else {
    $quantity = $order_item['quantity'] + 0;
    $old_quantity = isset($order_item['old_quantity']) ? (float) $order_item['old_quantity'] : 0;
    $quantity = $old_quantity ? $quantity - $old_quantity : $quantity;
    $unit = $order_item['unit_id'] ? $item->unit->subunits->where('id', $order_item['unit_id'])->first() : null;
    $stock = $item->stock->where('warehouse_id', $warehouse_id)->first();
    $base_quantity = $unit ? convert_to_base_quantity($quantity, $unit) : $quantity;
    if (! $stock) {
    $error["items.{$key}.quantity"] = __choice('{name} do not have {quantity} in stock, available quantity {available}.', ['name' => $order_item['name'], 'quantity' => $quantity . ' ' . ($unit ? $unit?->name : $item->unit?->name), 'available' => '0 ' . $item->unit?->name]);
    } elseif ($base_quantity && $stock->quantity < $base_quantity) {
    $error["items.{$key}.quantity"] = __choice('{name} do not have {quantity} in stock, available quantity {available}.', ['name' => $order_item['name'], 'quantity' => $quantity . ' ' . ($unit ? $unit?->name : $item->unit?->name), 'available' => ((float) $stock->quantity) . ' ' . $item->unit?->name]);
    }
    }
    }

    return $error;
    }
    }
  • N

    Nishad

    Answered
    Hello dear any update?
  • MS

    Mian Saleem

    Answered
    Hello,

    Yes, you add stock by checkin. You can check the list items page for current stock. If the items page shows the 6 pc quantity and you can't add checkout. Please let me know your installation url with login details in private reply so that I can check.

    Thank you
  • N

    Nishad

    Answered
    Thanks. The stock has started showing up. but I have another question regarding the "Rack" field on the item page. usually, an item may be stored in different warehouses and kept in different Racks. in that case, I think the Rack number fields should be along with the warehouse field on the Check-In page.
  • MS

    Mian Saleem

    Answered
    Hello,

    In current version rack is for item and same rack used for warehouses. I will add option to set different rank for warehouses.

    Thank you
  • N

    Nishad

    Answered
    Thank you!
    NB: Adding a rack at the check-in page is good because when creating an item it does not physically keep the Item on the rack. usually, at check-in time only it decides where to store the item.
  • Login to Reply