File: /var/www/vhost/disk-apps/comfama.sports-crowd.com/app/Http/Controllers/InventoryController.php
<?php
namespace App\Http\Controllers;
use App\Repositories\ERPRepository;
class InventoryController extends Controller
{
public $ERPRepository;
public function __construct(ERPRepository $ERPRepository = null)
{
if ($ERPRepository != null) {
$this->ERPRepository = $ERPRepository;
}
if ($this->ERPRepository == null) {
$defaultErp = config('erp.default');
$erp = config("erp.{$defaultErp}.class");
$this->ERPRepository = new $erp;
}
}
public function syncInventoryERP(
$priceList,
$storeMain = 'main',
$syncParent = false,
$parent = null,
$locationName,
$currency = null,
$barcode = null
) {
$response = $this->ERPRepository->getInventory($priceList, $locationName);
if (!$response['r']) {
return;
}
$products = $response['d']->detalle->Table;
if ($barcode) {
$products = array_filter($products, function ($productVariant) use ($barcode) {
return $productVariant->CodigoDeBarras == $barcode;
}, ARRAY_FILTER_USE_BOTH);
}
$productController = new ProductController;
foreach ($products as $item) {
sleep(2);
$reference = $item->Referencia;
$productAttributes = array_filter($products, function ($productVariant) use ($reference) {
return $productVariant->Referencia == $reference;
}, ARRAY_FILTER_USE_BOTH);
$item->productAmount = array_reduce($productAttributes, function ($carry, $item) {
return $carry + $item->Existencias;
});
$productController->saveProductFromSiesa($item, $storeMain);
if ($syncParent) {
$parent->syncProductByReference($item, $locationName, $currency);
}
}
return $products;
}
}