=== ShopSync Bestand ===
Tags: woocommerce, lagerbestand, bestand, etsy
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
WC requires at least: 8.0
WC tested up to: 11.2
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Ändert den Lagerbestand auf Anfrage von ShopSync um eine Menge – in einem Schritt in der Datenbank, jede Änderung genau einmal.

== Description ==

ShopSync gleicht den Bestand eines WooCommerce-Shops mit Etsy ab. Ohne dieses Plugin kann ShopSync den Bestand über die REST-API von WooCommerce nur auf eine
Zahl setzen („jetzt 8“). Verkauft der Shop selbst genau in dem Moment zwischen dem letzten Lesen und dem Schreiben einen Artikel, würde dieser Verkauf
überschrieben. Mit dem Plugin ändert ShopSync den Bestand stattdessen um eine Menge („minus 2“): WooCommerce rechnet selbst, in einem Schritt in der Datenbank.

**Was das Plugin tut**

* Es stellt genau zwei Adressen der REST-API bereit, beide unter `/wp-json/shopsync-bestand/v1/`:
  * `GET status` – nennt die Version des Plugins und von WooCommerce, sonst nichts.
  * `POST bestand/aendern` – ändert den Bestand eines Produkts oder einer Variante um eine Menge (negativ = abziehen), mit der WooCommerce-Funktion
    `wc_update_product_stock()`. Dabei laufen die üblichen Abläufe von WooCommerce (Lagerstatus, Benachrichtigungen bei niedrigem Bestand, Webhooks).
* Jede Änderung trägt einen Schlüssel. Derselbe Schlüssel wirkt höchstens einmal: Eine Wiederholung bekommt das Ergebnis der ersten Änderung zurück, statt
  noch einmal abzuziehen. Optional nennt ShopSync den erwarteten Bestand; stimmt er nicht mehr, ändert das Plugin nichts.
* Das Plugin merkt sich die Änderungen in einer eigenen kleinen Tabelle (Schlüssel, Produktnummer, Menge, Bestand davor und danach, Zeitpunkt) und löscht
  Einträge nach 30 Tagen.
* Unter WooCommerce → ShopSync Bestand zeigt eine kleine Seite die Version und die letzte Änderung durch ShopSync. Einstellungen gibt es nicht.

**Wer darf**

* Nur Anfragen über HTTPS.
* Nur mit einem gültigen REST-Schlüssel von WooCommerce (Consumer Key und Consumer Secret, WooCommerce → Einstellungen → Erweitert → REST-API), dessen
  WordPress-Nutzer Produkte bearbeiten darf. Ändern nur mit einem Schlüssel mit der Berechtigung „Lesen/Schreiben“ (oder „Schreiben“), den Status lesen
  nur mit „Lesen“ oder „Lesen/Schreiben“.
* Nur Produkte und Varianten, für die WooCommerce einen Lagerbestand führt.

**Was das Plugin nicht tut**

* Es liest und speichert keine Kundendaten und keine Bestellungen.
* Es baut keine Verbindung nach außen auf und sendet nichts von sich aus.
* Es zeigt keine Werbung und keine Hinweise im Backend außer der eigenen Info-Seite.
* Es ändert keine Preise, Produkte oder Einstellungen – nur den Lagerbestand, und nur auf Anfrage.

== Installation ==

1. In WordPress unter Plugins → Installieren → „Plugin hochladen“ die Datei `shopsync-bestand.zip` auswählen und installieren.
2. Das Plugin aktivieren. WooCommerce muss installiert und aktiv sein.
3. In ShopSync erkennt der Selbsttest das Plugin („WooCommerce: Plugin ShopSync Bestand – erkannt“). Ab dann ändert ShopSync den Bestand um eine Menge.

Der REST-Schlüssel, den ShopSync schon benutzt, genügt – das Plugin braucht keinen eigenen.

== Frequently Asked Questions ==

= Braucht ShopSync das Plugin? =

Nein. Ohne Plugin setzt ShopSync den Bestand absolut und liest den Artikel unmittelbar vorher noch einmal. Es bleibt ein kleines Restrisiko: Ein Verkauf im
Shop genau zwischen diesem Lesen und dem Schreiben würde überschrieben. Mit dem Plugin gibt es dieses Fenster nicht.

= Was passiert beim Deaktivieren? =

ShopSync bemerkt es beim nächsten Schreiben (oder spätestens nach einer halben Stunde) und setzt den Bestand wieder absolut – ohne Unterbrechung des
Abgleichs. Die gemerkten Änderungen bleiben in der Tabelle, bis das Plugin gelöscht wird.

= Was passiert beim Löschen? =

Beim Löschen über die Plugin-Seite entfernt das Plugin seine Tabelle und seine einzige Einstellung (die Version der Tabelle). Am Lagerbestand ändert das
nichts.

= Funktioniert es mit den eigenen Bestelltabellen von WooCommerce (HPOS)? =

Ja. Das Plugin fasst Bestellungen nicht an und erklärt sich mit HPOS verträglich.

= Meine Anfragen werden mit 401 abgelehnt. =

Manche Server reichen die Kopfzeile „Authorization“ nicht an WordPress weiter. Dann erreicht der Schlüssel weder WooCommerce noch das Plugin; der
Selbsttest von ShopSync weist darauf hin. Bei Apache lässt sich die Weitergabe mit der Zeile `CGIPassAuth On` in der .htaccess einschalten.

== Changelog ==

= 1.0.0 =
* Erste Fassung: Status abfragen, Bestand um eine Menge ändern (mit Schlüssel und erwartetem Bestand), Info-Seite, Entfernen beim Löschen.
