Ship Quantity Added And Then Deducted
This commit is contained in:
parent
9882ff9d92
commit
56504d9fb9
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace Webkul\Sales\Repositories;
|
||||
|
||||
use Illuminate\Container\Container as App;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Webkul\Core\Eloquent\Repository;
|
||||
use Webkul\Sales\Contracts\OrderItem;
|
||||
|
|
@ -11,16 +9,18 @@ use Webkul\Sales\Contracts\OrderItem;
|
|||
class OrderItemRepository extends Repository
|
||||
{
|
||||
/**
|
||||
* Specify Model class name
|
||||
* Specify model class name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function model()
|
||||
public function model()
|
||||
{
|
||||
return OrderItem::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \Webkul\Sales\Contracts\OrderItem
|
||||
*/
|
||||
|
|
@ -37,6 +37,8 @@ class OrderItemRepository extends Repository
|
|||
}
|
||||
|
||||
/**
|
||||
* Collect totals.
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\OrderItem $orderItem
|
||||
* @return \Webkul\Sales\Contracts\OrderItem
|
||||
*/
|
||||
|
|
@ -96,6 +98,8 @@ class OrderItemRepository extends Repository
|
|||
}
|
||||
|
||||
/**
|
||||
* Manage inventory.
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\OrderItem $orderItem
|
||||
* @return void
|
||||
*/
|
||||
|
|
@ -125,14 +129,14 @@ class OrderItemRepository extends Repository
|
|||
if (isset($item->qty_ordered)) {
|
||||
$qty = $item->qty_ordered;
|
||||
} else {
|
||||
Log::info('OrderItem has no qty_ordered', ['orderItem' => $item, 'product' => $item->product]);
|
||||
Log::info('OrderItem has no `qty_ordered`.', ['orderItem' => $item, 'product' => $item->product]);
|
||||
if (isset($item->parent->qty_ordered)) {
|
||||
$qty = $item->parent->qty_ordered;
|
||||
} else {
|
||||
Log::info('OrderItem has no parent with qty_ordered', [
|
||||
Log::info('OrderItem has no parent with `qty_ordered`', [
|
||||
'orderItem' => $item,
|
||||
'parent' => $item->parent,
|
||||
'product' => $item->product
|
||||
'parent' => $item->parent,
|
||||
'product' => $item->product,
|
||||
]);
|
||||
$qty = 1;
|
||||
}
|
||||
|
|
@ -154,26 +158,14 @@ class OrderItemRepository extends Repository
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns qty to product inventory after order cancelation
|
||||
* Returns qty to product inventory after order cancellation.
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\OrderItem $orderItem
|
||||
* @return void
|
||||
*/
|
||||
public function returnQtyToProductInventory($orderItem)
|
||||
{
|
||||
$orderedInventory = $orderItem->product->ordered_inventories()
|
||||
->where('channel_id', $orderItem->order->channel->id)
|
||||
->first();
|
||||
|
||||
if (! $orderedInventory) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (($qty = $orderedInventory->qty - ($orderItem->qty_ordered ? $orderItem->qty_to_cancel : $orderItem->parent->qty_ordered)) < 0) {
|
||||
$qty = 0;
|
||||
}
|
||||
|
||||
$orderedInventory->update(['qty' => $qty]);
|
||||
$this->updateProductOrderedInventories($orderItem);
|
||||
|
||||
if ($orderItem->getTypeInstance()->isStockable()) {
|
||||
$shipmentItems = $orderItem->parent ? $orderItem->parent->shipment_items : $orderItem->shipment_items;
|
||||
|
|
@ -182,20 +174,55 @@ class OrderItemRepository extends Repository
|
|||
foreach ($shipmentItems as $shipmentItem) {
|
||||
if ($orderItem->parent) {
|
||||
$shippedQty = $orderItem->qty_ordered
|
||||
? ($orderItem->qty_ordered / $orderItem->parent->qty_ordered) * $shipmentItem->qty
|
||||
: $orderItem->parent->qty_ordered;
|
||||
? ($orderItem->qty_ordered / $orderItem->parent->qty_ordered) * $shipmentItem->qty
|
||||
: $orderItem->parent->qty_ordered;
|
||||
} else {
|
||||
$shippedQty = $shipmentItem->qty;
|
||||
}
|
||||
|
||||
|
||||
$inventory = $orderItem->product->inventories()
|
||||
// ->where('vendor_id', $data['vendor_id'])
|
||||
->where('inventory_source_id', $shipmentItem->shipment->inventory_source_id)
|
||||
->first();
|
||||
|
||||
$inventory->update(['qty' => $inventory->qty + $shippedQty]);
|
||||
->where('inventory_source_id', $shipmentItem->shipment->inventory_source_id)
|
||||
->first();
|
||||
|
||||
$inventory->update(['qty' => $inventory->qty + $shippedQty]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update product ordered quantity.
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\OrderItem $orderItem
|
||||
* @return void
|
||||
*/
|
||||
public function updateProductOrderedInventories($orderItem)
|
||||
{
|
||||
$orderedInventory = $orderItem->product->ordered_inventories()
|
||||
->where('channel_id', $orderItem->order->channel->id)
|
||||
->first();
|
||||
|
||||
if (! $orderedInventory) {
|
||||
return;
|
||||
}
|
||||
|
||||
$qty = (
|
||||
$orderedInventory->qty +
|
||||
(
|
||||
isset($orderItem->qty_shipped)
|
||||
? $orderItem->qty_shipped
|
||||
: $orderItem->parent->qty_shipped
|
||||
)
|
||||
) - (
|
||||
isset($orderItem->qty_ordered)
|
||||
? $orderItem->qty_ordered
|
||||
: $orderItem->parent->qty_ordered
|
||||
);
|
||||
|
||||
if ($qty < 0) {
|
||||
$qty = 0;
|
||||
}
|
||||
|
||||
$orderedInventory->update(['qty' => $qty]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue