Jump to content

Lagerverwaltung von Variantenartikel mit WaWi


Recommended Posts

Hallo zusammen, 

ich baue mir zur Zeit einen OnlineShop, da wir Coronabedingt im Offlinegeschäft nicht tätig sein dürfen. Als WaWi nutzen wir Orgamax ein. Bisher hat auch alles soweit funktioniert oder ich konnte Lösungen in diversen Beiträgen finden. Für mein aktuelles Problem finde ich allerdings nichts aktuelles und hoffe hier auf eure Hilfe.

Installierte PS-Version: 1.7.7

Problem: Der Lagerbestand bei Artikel mit Varianten kann nicht durch die Wawi verwaltet werden. Einzelne Artikel ohne Varianten ist das kein Problem. Ich habe gelesen das hier ein ähnlichen Fehler hatten. Allerdings handelte es sich bei den PS-Versionen um die 1.6 und man konnte Abhilfe mit der erweiterten Lagerverwaltung einstellen. In 1.7 ist es so anscheinend nicht mehr möglich. 

Gibt es in 1.7 was womit ich das Problem abhacken kann?

LG

 

Link to comment
Share on other sites

Natürlich kann Presta 1.7.7 die Bestände auf Variantenebene verwalten. Zumindest im Backoffice. Wenn das nicht klappt wird es wohl an der Integration der Orgamax WaWi liegen. Leider hast du uns nicht genau mitgeteilt was nicht funktioniert, Fehlermeldungen, Screenshots o.ä.

Link to comment
Share on other sites

3 hours ago, JBW said:

Natürlich kann Presta 1.7.7 die Bestände auf Variantenebene verwalten. Zumindest im Backoffice. Wenn das nicht klappt wird es wohl an der Integration der Orgamax WaWi liegen. Leider hast du uns nicht genau mitgeteilt was nicht funktioniert, Fehlermeldungen, Screenshots o.ä.

Ja im Backoffice funktioniert die Verwaltung. Jedoch funktioniert der Bestandsabgleich mit der WaWi nicht. Das heißt wenn Orgamax die Artikelliste von Prestashop abruft um zu Prüfen ob die Artikel bereits im Shop gelistet sind, beachtet Orgamax nicht die Artikelnummern aus den Varianten und gibt aus das die entsprechenden Artikel nicht im Shop gelistet sind. Somit ist ein Bestandsabgleich auch nicht möglich. Ich habe mir gestern noch die Schnittstelle von Orgamx angesehen, hier werden die Varianten anscheinend wohl berücksichtig aber ich denke das hier ein Fehler in der Schnittstelle ist.

Hier mal die entsprechenden CODE Teile aus der Shopschnittstelle, vielleicht sieht ja schon jemand hier einen Fehler. Morgen kontaktiere ich mal den Support bei Orgamax evtl. wurde die Schnittstelle ja für PS 1.7.7 noch nicht aktualisiert.

	// Variantenartikelnummer generieren
	if ($GLOBALS['attributes_import'])
	{
		if ($row['attributeId'] > 0)
		{
			$row['ArtikelnummerShop'] = generiereVariantenNummer($row['attributeId']);
		}
	}

	return $row;
}

/*
	Artikeldaten OMX -> Webshop
*/
function artikeldaten_orgamax_zu_shop() {
	$articleFile = file_get_contents('php://input');
	if($articleFile != null && strlen($articleFile) > 0) {
	
		$articles = simplexml_load_string(($articleFile));
		
		$amount_successfully_created = 0;
		$amount_articles = count($articles);
		
		foreach($articles as $article)
		{
			// Prüfen, ob Artikel im Webshop schon vorhanden ist
			$query = '
				SELECT
					id_product
				FROM
					`' . _DB_PREFIX_ . 'product`
				WHERE
					reference = "' . mysqli_real_escape_string($GLOBALS['sql_con'], $article->ArtikelnummerWebshop) . '"
			';
			$result = mysqli_query($GLOBALS['sql_con'], $query);
			$amount = mysqli_num_rows($result);
			if ($amount > 0) {
				continue;
			}
/*
	Lagerbestände aktualisieren
*/
function setze_lagerbestand_im_shop() {
	// InputStream für Datei mit Artikeln und neuen Lagerbeständen öffnen
	$articleFile = file_get_contents('php://input');

	// Anzahl Artikel und erfolgreich ersteller Artikel bereitstellen
	$amount_successfully_created = 0;
	$amount_articles = 0;
	
	// Prüfen ob Datei mit Artikeln erfolgreich bzw. überhaupt etwas übermittelt wurde
	if($articleFile != null && strlen($articleFile) > 0) {
		
		$articles = simplexml_load_string(($articleFile));
		
		$amount_articles = count($articles);

		// Wenn Artikelvarianten genutzt werden, die Pseudo-Artikelnummer vorher für alle einmal generieren
		$articleVariants = array();
		if($GLOBALS['attributes_import'])
		{
			$variantQuery = '
				SELECT
					id_product_attribute, id_product
				FROM
					' . _DB_PREFIX_ . 'product_attribute
			';

			$result = mysqli_query($GLOBALS['sql_con'], $variantQuery);
			while($data = mysqli_fetch_assoc($result))
			{
				$variant = array();
				$variant['productId'] = $data['id_product'];
				$variant['attributeId'] = $data['id_product_attribute'];
				$variant['reference'] = generiereVariantenNummer($variant['attributeId']);

				$articleVariants[] = $variant;
			}
		}
		
		foreach($articles as $article)
		{
			$articleNr =  $article->ArtikelnummerWebshop;
            $attributeID = 0;
			$product_id = -1;

            if ($GLOBALS['attributes_import'])
            {
				// id_product_attribute ermitteln
				$find_query = '
				SELECT
					id_product_attribute AS attributeId,
					' . _DB_PREFIX_ . 'product_attribute.id_product AS productId
				FROM
					' . _DB_PREFIX_ . 'product_attribute
				WHERE
					reference = "' . mysqli_real_escape_string($GLOBALS['sql_con'], $articleNr) . '"
				';

				$result = mysqli_query($GLOBALS['sql_con'], $find_query);

				if($result && mysqli_num_rows($result) == 1)
				{
					$result = mysqli_fetch_assoc($result);
					$product_id = $result['productId'];
					$attributeID = $result['attributeId'];
				}
				else
				{
					foreach($articleVariants as $variant)
					{
						if($variant['reference'] == $articleNr)
						{
							$product_id = $variant['productId'];
							$attributeID = $variant['attributeId'];
							break;
						}
					}
				}

            }

			if($product_id == -1)
            {
				$find_query = '
					SELECT
						id_product
					FROM
						`' . _DB_PREFIX_ . 'product`
					WHERE
						reference = "' . mysqli_real_escape_string($GLOBALS['sql_con'], $articleNr) . '"
				';
				$result_id = mysqli_query($GLOBALS['sql_con'], $find_query);
				$result_id = mysqli_fetch_assoc($result_id);
				$product_id = $result_id['id_product'];
            }

			if ($product_id > -1)
			{
				// ArtikelMenge einfügen oder aktualisieren
				$find_query = '
				SELECT
					id_product
				FROM
					`' . _DB_PREFIX_ . 'stock_available`
				WHERE
					id_product = ' . $product_id . '
				';

				$result_count = mysqli_query($GLOBALS['sql_con'], $find_query);

				if (mysqli_num_rows($result_count) > 0)
				{
					$query = '
                    UPDATE
                        `' . _DB_PREFIX_ . 'stock_available`
                    SET
                        quantity = "' . str_replace(',', '.', $article->LagerBestandAktuell) . '"
                    WHERE
                        id_product = "' . $product_id . '"
                        AND id_product_attribute = ' . $attributeID . '
                    ';
				}
				else
				{
					$query = '
                    INSERT INTO
                        `' . _DB_PREFIX_ . 'stock_available` (id_product, id_product_attribute, id_shop, id_shop_group, quantity, depends_on_stock, out_of_stock)
                    VALUES
                        (' . $product_id .', ' . $attributeID . ', 1, 0, ' . str_replace(',', '.', $article->LagerBestandAktuell) . ', 0, 2)
                    ';
				}

				$result = mysqli_query($GLOBALS['sql_con'], $query);

				if($result)
				{
					$amount_successfully_created++;
				}
			}
		}
		
	}
	WriteXMLResult($amount_articles, $amount_successfully_created);

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...