Ενημέρωση Stock σε eshop

369 views
Skip to first unread message

Konstantinos Giannopoulos

unread,
Jan 16, 2023, 7:24:58 AM1/16/23
to Softone Developers Network
Καλησπέρα στην ομάδα.
Θα ήθελα να ρωτήσω πως αντιμετωπίζετε το θέμα με την ενημέρωση stock σε eshop μέσω των webservices χωρίς να κάνετε κλήση σε όλα τα προϊόντα.
Μέχρι τώρα αυτό που κάνω εγώ είναι να κρατάω την τελευταία ημερομηνία που έκανα update το stock και να την συγκρίνω με την τελευταία ημερομηνία τροποποίησης ενός είδους.

Για παράδειγμα, αν στην γέφυρα μου έχω τελευταία ημερομηνία stock update την 2023-01-16 13:30:00 και τώρα η ώρα είναι 2023-01-16 13:45:00 τρέχω την παρακάτω κλήση και παίρνω μόνο τα προϊόντα που τροποποιήθηκαν μεταξύ των 2 ημερομηνιών.

{
"service": "getBrowserInfo",
"clientID": "xxxxxxx",
"appId": "1111",
"object": "ITEM",
"list": "xxxxxx",
"filters":"ITEM.WEBVIEW=1&ITEM.SotimeV41=2022-01-15 21:06:17&ITEM.SotimeV41_TO=2022-01-16 13:30:17"
}

Το πρόβλημα που αντιμετώπισα είναι ότι αν ο χρήστης περάσει ένα παραστατικό αγοράς με ημερομηνία προγενέστερη του τελευταίου συγχρονισμού τότε το stock του προϊόντος του συγκεκριμένου παραστατικου δεν θα συγχρονίσει ποτέ.

Υπάρχει κάποιο άλλο πεδίο που μπορούμε να κοιτάμε? ή γενικότερα υπάρχει μήπως κάποια άλλη λύση?

Ευχαριστώ

Liviu Buligan

unread,
Jan 16, 2023, 11:42:03 AM1/16/23
to so...@googlegroups.com
Personally I am updating Items and stock using 2 criterias:
1. Items updated at the current day 
2. Items with transactions in the current day
Of course, if there are too many items, to avoid traffic you can use timeframes as well  
As Key field I use MTR.UPDDATE. The same for item transactions, check the  FINDOC.UPDDATE as reference, time is available as well. In this way it does not matter when it was inserted, you can catch any updates on stock.
 

--
Softone Developers Network group.
To post to this group, send email to so...@googlegroups.com
---
Λάβατε αυτό το μήνυμα επειδή έχετε εγγραφεί στην ομάδα "Softone Developers Network" των Ομάδων Google.
Για να απεγγραφείτε απ' αυτή την ομάδα και να σταματήσετε να λαμβάνετε μηνύματα ηλεκτρονικού ταχυδρομείου απ' αυτή, στείλτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στη διεύθυνση soft1+un...@googlegroups.com.
Για να κάνετε προβολή αυτής της συζήτησης στον ιστό, επισκεφτείτε τη διεύθυνση https://groups.google.com/d/msgid/soft1/242bb314-0dd6-4f5b-b20a-ef03e7b33633n%40googlegroups.com.


--
Liviu Buligan

Konstantinos Giannopoulos

unread,
Jan 17, 2023, 5:20:31 AM1/17/23
to Softone Developers Network
Thanks Liviu!
I am searching for the best way!
I will be back with news :)

Message has been deleted

aegeanearth

unread,
Mar 30, 2026, 8:55:54 AM (7 days ago) Mar 30
to Softone Developers Network
Καλησπέρα και απο μένα!

Τελικά βρέθηκε μια φυσιολογική λύση πάνω σε αυτό το πρόβλημα;
Υπάρχει η λύση που ανέφερες αλλά κακά τα ψέμματα δεν γίνεται έτσι δουλεία. Τι άλλες επιλογές μπορεί να υπάρξουν; 

Σας ευχαριστώ εκ των προτέρων 

Liviu Buligan

unread,
Apr 1, 2026, 11:44:44 AM (5 days ago) Apr 1
to so...@googlegroups.com
I improved my way to do this. as follows:
Preparation:
1  Run your stock query  and save results to a "LastStock" table
2. Empty the  LastStock table

Running:
1  Run your stock query  and save results to a "CurrentStock" table
2. Compare results field by field with "LastStock" table
3 .Output the results for rows with differences
4 truncate the laststock table and update it with CurrentStock
5 truncate/delete the current stock

Your sql will be quite odd but it will capture exactly all the values changed (name, price, stock, etc)

The only problem may arise if the output was not properly send to the web, but you can consider to run steps 4 and 5 only if the site update was properly execute



Για να δείτε αυτή τη συζήτηση, επισκεφτείτε το https://groups.google.com/d/msgid/soft1/32b0ecf5-6e5a-47a2-89dd-0408c9d95894n%40googlegroups.com.


--
Liviu Buligan

Nikos Konstantakopoulos

unread,
Apr 1, 2026, 12:09:37 PM (5 days ago) Apr 1
to so...@googlegroups.com
Καλησπέρα, 

Μια επιλογή που ειναι αρκετά αποδοτική για e-commerce, ειδικά εφόσον θες να έχεις live απόθεμα, είναι να χρησιμοποιήσεις την ON_AFTERPOST παραστατικών σε καθε ενα απο τα 4 βασικά κυκλώματα που δύναται να αλλάξουν το απόθεμα (πωλήσεις, αγορές, λιανική,  αποθήκη) και να αντλήσεις τα πραγματικά αποθέματα μόνο των ειδών που περιλαμβάνονται στο current παραστατικό. 

Αν θες μπορείς να τραβάς και τα δεσμευμένα αποθέματα μαζι με τα πραγματικά για τα αντίστοιχα είδη στον ή στους αντίστοιχους ΑΧ. 

Έτσι η διαφορά τους θα είναι θα ειναι το διαθέσιμο απόθεμα και θα μπορείς είτε να το στέλνεις σε κάποιο web hook, είτε να το αποθηκεύεις σε δικούς σου πίνακες με timestamp και να το τραβάς εξωτερικά από το softone οπότε θες.

Νίκος Μάλιακκας

unread,
Apr 2, 2026, 1:02:19 PM (4 days ago) Apr 2
to Softone Developers Network
Δοκιμάζω το παρακάτω:

SELECT MT.MTRL, MT.WHOUSE, MIN(FD.QTY1) AS MTRLBALANCE,  MAX(F.UPDDATE) AS MAXDATE
FROM FINDOC F
JOIN MTRTRN MT ON F.FINDOC=MT.FINDOC
JOIN TPRMS TP ON MT.COMPANY=TP.COMPANY AND MT.SODTYPE=TP.SODTYPE AND MT.TPRMS=TP.TPRMS
JOIN MTRFINDATA FD ON FD.COMPANY=F.COMPANY AND FD.FISCPRD=YEAR(GETDATE()) AND FD.WHOUSE=MT.WHOUSE AND FD.MTRL=MT.MTRL
WHERE (TP.FLG01-TP.FLG04)<>0
AND F.COMPANY=1
AND MT.WHOUSE=1
AND F.TRNDATE>DATEADD(D,-80,GETDATE())
GROUP BY MT.MTRL, MT.WHOUSE

το οποίο φέρνει το υπόλοιπο σε έναν αποθηκευτικό χώρο και την τελευταία ημερομηνία/ωρα που άλλαξε, λαμβάνοντας υπόψη τα παραστατικά που επιρεάζουν την ποσότητα του είδους και έχουν ημερομηνία έως και πριν 80 ημέρες.

Σε εγκαταστάσεις με πάρα πολλές εγγραφές μπορεί να χρειαστεί να αλλάξουμε λίγο το πόσες ημέρες πίσω θα πηγαίνουμε.
Θεωρώντας πάντα ότι ο server έχει σωστή ημερομηνία και ότι δεν καθυστερούμε να περάσουμε τα παραστατικά πάνω από τις ημέρες που ορίσαμε ως "βάθος ελέγχου"

Αν βάλεις το maxdate ως παράμετρο, θα μπορούσες να το στείλεις στο ευρετήριο για να πάρεις το τρέχον υπόλοιπο.
Σε κάθε request, τραβάς από το μεγαλύτερο maxdate που πήρες και μετά.

Προσοχή, το παραπάνω θα φέρει μόνο τα είδη που έχει αλλάξει το υπόλοιπό τους από αυτή την ημερομηνία και μετά και όχι όλα τα υπόλοιπα των ειδών.

kko

unread,
Apr 4, 2026, 5:28:00 PM (2 days ago) Apr 4
to Softone Developers Network
Με την ίδια λογική θέλεις και μετά το DELETE μιας γραμμής ή μιας εγγραφής, όπως και το είδος που αντικαταστάθηκε αν μιλάμε για ήδη καταχωρημένο.-
Reply all
Reply to author
Forward
0 new messages