Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

[Magento2] Eigen order status 'voor' complete.

Pagina: 1
Acties:

Vraag


  • xces
  • Registratie: juli 2001
  • Laatst online: 22-06 22:03

xces

To got or not to got..

Topicstarter
Ik zit erover te denken om, na een experiment met Magento 1 (vele jaren geleden) waarna ik mijn eigen webshop heb gebouwd die nog niet mobiel vriendelijk is maar verder erg gecustomized is, terug over te stappen op Magento (2).

echter als het dan gaat om order management, begrijp ik dat Magento2 de status naar Complete zal veranderen zodra er een invoice en een shipment is. Klopt dat?

Indien ja; dat wil ik niet, "Order shipped" moet de laatste status zijn, totdat mijn vervoerder teruggekoppeld heeft dat de zending ook echt afgeleverd is. Dan kan ik programmatisch de order naar complete zetten. Kan dat?

Beste antwoord (via xces op 14-11-2018 08:40)


  • danslo
  • Registratie: januari 2003
  • Laatst online: 18:44
xces schreef op dinsdag 13 november 2018 @ 15:42:

echter als het dan gaat om order management, begrijp ik dat Magento2 de status naar Complete zal veranderen zodra er een invoice en een shipment is. Klopt dat?
Dat klopt.

edit: Vrij zeker dat dit in M1 ook het geval is.
Indien ja; dat wil ik niet, "Order shipped" moet de laatste status zijn, totdat mijn vervoerder teruggekoppeld heeft dat de zending ook echt afgeleverd is. Dan kan ik programmatisch de order naar complete zetten. Kan dat?

[Afbeelding]
Alles kan ;-)

De state wordt in deze class op complete gezet (als hij niet meer geinvoiced/shipped kan worden). Je zou daar nog een extra check kunnen toevoegen.

Dat gaat in Magento 2 met Plugins/Interceptors.

Alle reacties


Acties:
  • Beste antwoord
  • +1Henk 'm!

  • danslo
  • Registratie: januari 2003
  • Laatst online: 18:44
xces schreef op dinsdag 13 november 2018 @ 15:42:

echter als het dan gaat om order management, begrijp ik dat Magento2 de status naar Complete zal veranderen zodra er een invoice en een shipment is. Klopt dat?
Dat klopt.

edit: Vrij zeker dat dit in M1 ook het geval is.
Indien ja; dat wil ik niet, "Order shipped" moet de laatste status zijn, totdat mijn vervoerder teruggekoppeld heeft dat de zending ook echt afgeleverd is. Dan kan ik programmatisch de order naar complete zetten. Kan dat?

[Afbeelding]
Alles kan ;-)

De state wordt in deze class op complete gezet (als hij niet meer geinvoiced/shipped kan worden). Je zou daar nog een extra check kunnen toevoegen.

Dat gaat in Magento 2 met Plugins/Interceptors.

  • xces
  • Registratie: juli 2001
  • Laatst online: 22-06 22:03

xces

To got or not to got..

Topicstarter
Thanx! Ik zal nu even mijn huidige flow in een diagram zetten en wat meer informatie over wat je zegt op internet gaan opzoeken, en hoop dat er straks nog iemand commentaar op kan geven als ik met een theoretische implementatie kom.

p.s. klopt het dat je als een order complete is, geen refund meer kan doen? Hoe ga je dan om met de use-case; gebruiker ontvangt producten, ziet dat het kapot is maar wil het toch houden en een gedeeltelijke refund?

[Voor 10% gewijzigd door xces op 14-11-2018 08:43]


  • danslo
  • Registratie: januari 2003
  • Laatst online: 18:44
xces schreef op woensdag 14 november 2018 @ 08:43:

p.s. klopt het dat je als een order complete is, geen refund meer kan doen? Hoe ga je dan om met de use-case; gebruiker ontvangt producten, ziet dat het kapot is maar wil het toch houden en een gedeeltelijke refund?
Hiervoor zou je een creditmemo / kredietnota aanmaken op de order, kan ook gewoon voor completed orders. Daar kan je gewoon refunds voor 1 (of meerdere) product(en) maken. Overigens wel deels afhankelijk van je PSP of daar ondersteuning voor is of dat je het handmatig moet afhandelen.

  • xces
  • Registratie: juli 2001
  • Laatst online: 22-06 22:03

xces

To got or not to got..

Topicstarter
@danslo ik heb de order flow van Magento in Draw.io gezet en mijn commentaar erbij gezet hoe ik het graag zou willen zien.



Blok 1: De user komt dan op een pagina 'bedankt voor je order' en in de achtergrond loop ik alle orders die deze status hebben met een cron-job waarbij de order status minimaal 5 minuten geleden geupdate is naar payment received. Ik kan dan de invoice programmatisch aanmaken waardoor (naar mijn weten) de order automatisch op order invoiced komt te staan.

Blok 2: De plugin die ik schrijf op basis van de order-invoiced roept de API van de externe shipping partner aan. In deze state wil ik al wel het tracking nummer toevoegen aan de order, maar nog niet de order naar 'Order shipped' zetten. Dit wil ik pas doen zodra de order ook echt 'trackable' is via de PostNL site. Ik hoop hier dat deze site me wat kan helpen. In plaats daarvan gaat de state naar 'ready-to-collect'. Dit is echter een custom state, en ik heb geen idee hoe ik een order naar een bepaalde custom state kan verzetten.

Blok 3: De plugin die ik schrijf zal het shipping label en de invoice naar de printer op de zaak sturen.

Blok 4: De cron-job zoekt vervolgens op alle orders in deze state (ready-to-collect) en zal de order doorzetten naar shipped als de API van PostNL aangeeft dat het trackable is voor de gebruiker. Gaat dat dmv "$shipment->getOrder()->setIsInProcess(true);" ?

Blok 5: Uit je opmerking maak ik op als er een invoice is en een shipment dat de order automatisch naar complete gaat. Ik wil eigenlijk zo lang de order onderweg is (dat kunnen meerdere tracking nummers zijn) dat de order nog extra info zoals tracking updates van PostNL kan krijgen. Pas als ik zeker weet dat een order afgeleverd is zal ik hem naar 'delivered' zetten (of na 'x' dagen naar delivered-unknown).

Kan iemand mij een beetje op weg helpen met mijn vragen?

  • bakakaizoku
  • Registratie: januari 2002
  • Laatst online: 16:06
Je wil zo te zien meerdere order statusen gebruiken, zie https://www.mageplaza.com...der-status-magento-2.html om daar wat meer over te vinden.

In vendor/magento/module-sales/Model/ResourceModel/Order/Handler/State.php vind je de functionaliteit die de order status updated op basis van voorwaarden (function check(Order $order)). Deze zal je moeten overriden in je eigen module/class en hier je eigen logica in moeten definieren om orders een specfieke status te kunnen geven.

PSN: bakakaizoku - WoW: Thiccblonde (GM of Phoenix Ascension) @ Twisting-Nether


  • danslo
  • Registratie: januari 2003
  • Laatst online: 18:44
xces schreef op woensdag 14 november 2018 @ 14:29:
@danslo ik heb de order flow van Magento in Draw.io gezet en mijn commentaar erbij gezet hoe ik het graag zou willen zien.

[Afbeelding]

Blok 1: De user komt dan op een pagina 'bedankt voor je order' en in de achtergrond loop ik alle orders die deze status hebben met een cron-job waarbij de order status minimaal 5 minuten geleden geupdate is naar payment received. Ik kan dan de invoice programmatisch aanmaken waardoor (naar mijn weten) de order automatisch op order invoiced komt te staan.
Ook dit is afhankelijk van je payment module, de meeste modules maken zelf al invoices aan gebaseerd op terugkoppeling van de PSP. Voorbeeldje Mollie.
Blok 2: De plugin die ik schrijf op basis van de order-invoiced roept de API van de externe shipping partner aan. In deze state wil ik al wel het tracking nummer toevoegen aan de order, maar nog niet de order naar 'Order shipped' zetten. Dit wil ik pas doen zodra de order ook echt 'trackable' is via de PostNL site. Ik hoop hier dat deze site me wat kan helpen. In plaats daarvan gaat de state naar 'ready-to-collect'. Dit is echter een custom state, en ik heb geen idee hoe ik een order naar een bepaalde custom state kan verzetten.
Tracking hang je aan een shipment, niet aan een order. Dus ik zou bij jouw plugin alsnog een shipment aanmaken, daar een tracking nummer aan hangen, en vervolgens met de aanpak in m'n eerste bericht er voor zorgen dat je order niet op complete gaat maar in plaats daarvan nog steeds op state: processing en status: ready-to-collect. Die statussen kan je overigens gewoon in de backend aanmaken.
Blok 3: De plugin die ik schrijf zal het shipping label en de invoice naar de printer op de zaak sturen.

Blok 4: De cron-job zoekt vervolgens op alle orders in deze state (ready-to-collect) en zal de order doorzetten naar shipped als de API van PostNL aangeeft dat het trackable is voor de gebruiker. Gaat dat dmv "$shipment->getOrder()->setIsInProcess(true);" ?
Kan ik je uit m'n hoofd niet zo vertellen, uitzoekwerk. Overigens is er gewoon een PostNL module, scheelt je weer zelf prutsen met een API/labels/etc.
Blok 5: Uit je opmerking maak ik op als er een invoice is en een shipment dat de order automatisch naar complete gaat. Ik wil eigenlijk zo lang de order onderweg is (dat kunnen meerdere tracking nummers zijn) dat de order nog extra info zoals tracking updates van PostNL kan krijgen. Pas als ik zeker weet dat een order afgeleverd is zal ik hem naar 'delivered' zetten (of na 'x' dagen naar delivered-unknown).
Zie eerdere berichten, een order gaat inderdaad naar complete als alle producten 'shipped' zijn (kunnen dus meerdere shipments zijn) en geinvoiced is. Maar dat gedrag kan je met een plugin aanpassen.

  • xces
  • Registratie: juli 2001
  • Laatst online: 22-06 22:03

xces

To got or not to got..

Topicstarter
Ik ga gebruik maken van mollie en MyParcel module dus ik zal die code eens bekijken, een test-shop installeren en gewoon gaan debuggen, denk dat dit het makkelijkst is. Bedankt voor jullie bijdrages, zal andere mensen ook wat uitzoekwerk schelen gok ik.

  • Nila
  • Registratie: juli 2005
  • Laatst online: 11:54

Nila

Idiot!

In mijn huidige M2 Webshop heb ik het bestel geautomatiseerd.
  • Orders komen binnen in Magento en worden om het half uur geëxporteerd naar een CSV die via ftp naar een locatie gezet wordt.
  • Klant krijgt order bevestiging en factuur per mail.
  • CSV bestand wordt opgepakt door het warehouse en hun software.
  • Order wordt verzameld en ingepakt.
  • Order wordt gereed gemaakt voor verzending, krijgt hierbij een verzendlabel en tracking nr.
  • Warehouse exporteert de orders die gereed zijn naar een CSV wat het ordernummer en trackingnummer staat.
  • Magento importeert deze CSV, koppelt de tracking nr's aan de orders en zend automatisch de shipping mails naar de klant met PostNL tracking link.
  • Order komt op een custom status (shipped).
  • Pakketten worden bij het warehouse opgehaald door PostNL.
  • Met een cronjob wordt in de gaten gehouden of de orders zijn afgeleverd (PostNL api).
  • Als deze zijn bevestigd als bezorgd dan zet Magento de orders op Completed.
Zo zijn er nog andere zaken die geautomatiseerd zijn die het leven als webshop houder makkelijker maakt.

Tevens Succes met je migratie van Magento 1 naar 2.... ;)

You're not completely useless, you can always serve as a bad example!


  • xces
  • Registratie: juli 2001
  • Laatst online: 22-06 22:03

xces

To got or not to got..

Topicstarter
Nila schreef op woensdag 14 november 2018 @ 15:49:
  • Magento importeert deze CSV, koppelt de tracking nr's aan de orders en zend automatisch de shipping mails naar de klant met PostNL tracking link.
  • Order komt op een custom status (shipped).
  • Pakketten worden bij het warehouse opgehaald door PostNL.
  • Met een cronjob wordt in de gaten gehouden of de orders zijn afgeleverd (PostNL api).
  • Als deze zijn bevestigd als bezorgd dan zet Magento de orders op Completed.
Dat lijkt op ongeveer hetzelfde als wat ik gedaan wil hebben, maar in mijn openingspost vroeg ik:
xces schreef op dinsdag 13 november 2018 @ 15:42:
echter als het dan gaat om order management, begrijp ik dat Magento2 de status naar Complete zal veranderen zodra er een invoice en een shipment is. Klopt dat?
En dat bleek te kloppen volgens reageerders. Aangezien een tracking nummer aan een shipment hangt, moet ik dus eerst een shipment aan een order hangen voordat ik aan die shipment 1 of meerdere tracking nummers kan hangen. Maar hoe zorg ik dat dat hij niet naar 'shipped' gaat maar naar de custom state? of wel naar shipped maar in een dergelijke status dat ik nog wat kan aanpassen... Jij zegt namelijk dat je zelf (of Magento?) de order naar je custom state 'shipped' zet. Ik ben voornemens om de MyParcel extensie te gebruiken.

Verderop, als de klant het pakketje ontvangen heeft; gebruik je de API van PostNL en zet je de state naar Completed (denk ik?). Sla je dan de interne 'shipped' state over?

Kun je misschien een snippet delen van hoe een order op te zoeken op basis van een trackingnummer? Ik vond wel deze; https://magento.stackexch...tracking-number-magento-2 maar ben benieuwd hoe dat dan vanuit een cron-job te doen.

[Voor 13% gewijzigd door xces op 16-11-2018 14:03]


  • Nila
  • Registratie: juli 2005
  • Laatst online: 11:54

Nila

Idiot!

xces schreef op vrijdag 16 november 2018 @ 12:53:

En dat bleek te kloppen volgens reageerders. Aangezien een tracking nummer aan een shipment hangt, moet ik dus eerst een shipment aan een order hangen voordat ik aan die shipment 1 of meerdere tracking nummers kan hangen. Maar hoe zorg ik dat dat hij niet naar 'shipped' gaat maar naar de custom state? of wel naar shipped maar in een dergelijke status dat ik nog wat kan aanpassen... Jij zegt namelijk dat je zelf (of Magento?) de order naar je custom state 'shipped' zet. Ik ben voornemens om de MyParcel extensie te gebruiken.
Ik denk dat het met MyParcel module niet gaat wat ik hierboven beschrijf omdat simpel weg MyParcel in zal haken op het bestande bestel proces en wij veel geld hebben geïnvesteerd om het proces aan te passen aan onze behoeftes.
Verderop, als de klant het pakketje ontvangen heeft; gebruik je de API van PostNL en zet je de state naar Completed (denk ik?). Sla je dan de interne 'shipped' state over?
Ja hiervoor gebruiken we de API van PostNL. We slaan deze niet over, maar hebben deze aangepast met een stapje ertussen. Visueel krijgen we een Shipped status en dat wil zeggen dat de order nu status Shipped (Label: Shipped, Status: Processing) krijgt. Na feedback van PostNL krijgt de order status Completed.

Misschien kan je is kijken naar custom state?
Kun je misschien een snippet delen van hoe een order op te zoeken op basis van een trackingnummer? Ik vond wel deze; https://magento.stackexch...tracking-number-magento-2 maar ben benieuwd hoe dat dan vanuit een cron-job te doen.
Cronjob doet niet veel meer dan periodiek checken of er nieuwe bestanden zijn om in te lezen. Zodra er een nieuw CSV zal deze worden opgehaald en uitgelezen en de module koppelt door middel van het ID het tracking nr.

CVS bestaat uit 2 columns: OrderID en TrackingNR. Aan de hand van deze 2 weet hij aan welke order hij welke trackingnr moet hangen.

Ik kan wel een stukje code delen, maar deze is zo complex dat je hier opzicht niet veel aan hebt. Er zijn wel standaard trackingnr import modules te koop. Maar ik vermoed dat MyParcel dit al verzorgd?

You're not completely useless, you can always serve as a bad example!

Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True