Skocz do zawartości

1.31 - aktualizacja formularzy nadpisuje cenę towaru

Polecane posty

Witam. 

 

Sprzedaję większość rzeczy w zestawach po kilka sztuk, tego samego towaru. 
Problem jest następujący:

1. Klient kupił zestaw 4 sztuk towaru za 400 zł (cała wartość transakcji to 400zł). 
2. Jak zwykle tworzy się transakcja z towarem 1szt za 400zł. 
3. Następnie (u mnie w sposób automatyczny) zmieniam zawartość transakcji na 4 sztuki po 100zł. Zamykamy transakcje, wszytko jest ok. 
4. Wymuszamy pobranie formularzy lub następuje ono samo co określony czas.

Efekt:

W transakcji następuję zmiana ceny ze 100zł na 400zł, przy czym ilość zostaje tak jak zmieniłem 4. Wartość transakcji rośnie x4.  

W poprzedniej wersji tego nie było. Dlaczego tutaj z każdym pobraniem formularzy następuję aktualizacja ceny towaru w transakcji? Dzieje się to dla wszystkich transakcji niezakończonych z ostatnich 45 dni. 
Czy ta aktualizacji musi się odbywać i czy musi wpływać na cenę? Wiem, że można zaznaczyć "nie przenoś danych automatycznie" ale jak dla mnie nie jest to rozwiązanie. 

Proszę o informację czy to błąd czy tak już zostanie i muszę szukać jakiegoś obejścia tego problemu. 

 

 

Link to postu
1 godzinę temu, Paweł ole napisał:

Wiem, że można zaznaczyć "nie przenoś danych automatycznie" ale jak dla mnie nie jest to rozwiązanie. 

 

 

 

To nie jest rozwiązanie. Wszystkie niezakończone transakcje z 45 dni, zostały po aktualizacji "zepsute".  

Nie wierzę, że celowo napisano aktualizację tych cen przy pobieraniu formularza. Mam nadzieję, że to błąd i zostanie naprawione. 

 

Jak dla mnie, najchętniej wróciłbym do poprzedniej wersji. Czy to że jutro Sello przestanie działać jest pewne na 100%? 

Link to postu

Cofnąłem się do 1.30.7 i tu problem również występuję. Wcześniej miałem 1.30. Podejrzewam, zatem że winna jest 1.30.2. i ta zmiana:

Transakcje

  • Dodano funkcję przenoszenia kosztów towarów uwzględniających rabaty i zmianę ceny w serwisie Allegro
  • W oknie formularzy dodano przycisk umożliwiający ręczne przenoszenie kwoty zakupionych przedmiotów z formularza do transakcji

 

 

Link to postu

Bez tej funkcji nie będą działać rabaty Allegro. Zastosowane rozwiązanie ze zmianą liczby sztuk jest po prostu niezgodne z intencją działania programu i trzeba to zmienić/rozwiązać inaczej. Nie planujemy wycofywać wspomnianych zmian, gdyż wtedy przestaną działać rabaty.

2 godziny temu, Paweł ole napisał:

. Czy to że jutro Sello przestanie działać jest pewne na 100%? 

Jeśli nie jutro to za kilka dni. To jest zależne od Allegro.

Link to postu

Ok, jak w takim razie funkcjonuje teraz zapis transakcji i aktualizacja formularzy?

Do tej pory miałem taki trigger:

USE ...
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[tr_ItemMojaZmianaKplParaNaSztuki] ON [dbo].[tr_Item] 

WITH ENCRYPTION --sp_setapprole

AFTER INSERT

AS

DECLARE @sztchar char
DECLARE @sztuki int

SET @sztchar = (SELECT LEFT (tr_Source,1) FROM tr__Transaction
WHERE tr_Id IN (SELECT DISTINCT tt_TransId FROM Inserted))

IF ISNUMERIC(@sztchar) = 1 
SET @sztuki = @sztchar
ELSE
SET @sztuki = 0


IF (@sztuki = 2 OR @sztuki = 4)
BEGIN
UPDATE tr_Item
SET tt_Quantity = tt_Quantity * @sztuki, tt_Price = tt_Price / @sztuki
WHERE tt_Id IN (SELECT DISTINCT tt_Id FROM Inserted)
END

 

Niestety przy kolejnym pobraniu formularzy zmienia cenę towaru na tą z formularza i przelicz wartość całej transakcji. 
Pozostaje zatem zaznaczać dla każdej transakcji, żeby nie przenosił formularza. 

Próbuje dodać:


UPDATE tr__Transaction SET tr__Transaction.tr_BuyerFormStatus = 3, tr__Transaction.tr_IgnoreDifferencesWithBuyerForm = 1, tr__Transaction.tr_DoNotAutoCopyDataFromForms = 1 FROM tr__Transaction JOIN inserted ON tr__Transaction.tr_Id = inserted.tt_Id           

Niestety bez efektu. Tak jak jakby po akcji na tr_Item było coś ponownie robione w tr__Transaction i nadpisywało moją zmianę. 

 

 

 

Link to postu

Niestety powyższa informacja nie wiele mi pomogła. 

Panie Bartoszu ma Pan jakieś inne sugestie co dodać do mojego trigerra, żeby osiągnąć zamierzony efekt? Najprościej będzie jednak oznaczać w transakcji, żeby nie przenosić danych automatycznie. Później będę kombinował czy jest jakieś inne rozwiązanie.  Nie rozumiem tylko dlaczego dopisanie wspomnianego wyżej UPDATE'A nie zmienia nic w bazie. 

 

Link to postu

Podpowiedź dobra, dziękuję. Spróbowałem się zabrać za temat od strony formularzy. 

Dodałam analogiczny wyzwalacz na tabeli z formularzami:

USE ATS_SEL
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[pbMojaZmianaKplParaNaSztukiUP] ON [dbo].[pb_PostBuyFormTransaction] 

WITH ENCRYPTION --sp_setapprole

AFTER INSERT

AS

DECLARE @sztchar char
DECLARE @sztuki int

SET @sztchar = (SELECT LEFT (tr_Source,1) FROM tr__Transaction
WHERE tr_Id IN (SELECT DISTINCT pt_TransactionId FROM Inserted))

IF ISNUMERIC(@sztchar) = 1 
SET @sztuki = @sztchar
ELSE
SET @sztuki = 0



IF (@sztuki = 2 OR @sztuki = 4)
BEGIN
UPDATE pb_PostBuyFormTransaction
SET pt_Quantity = pt_Quantity * @sztuki, pt_Amount = pt_Amount / @sztuki
WHERE pt_Id IN (SELECT DISTINCT pt_Id FROM Inserted)
END

Rozwiązanie wydawało się idealne, wszystko niby działa, ale nie do końca...

Co każde pobranie danych mam kilkanaście błędów zapisu do bazy danych (na żółto, z trójkątem). Nie wyczaiłem które transakcje to powodują. Nie ma żadnych szczegółów. Nie zauważyłem żadnego wpływu na bieżące czy starsze transakcje. Czy znajdę gdzieś jakieś dodatkowe logi?

Miałem transakcję sprzed 2 dni z formularzem, ale nieopłaconą. Dzisiaj Kupujący ponownie wybrał sposób dostawy i zapłacił. Niestety formularz nie pobrał się do Sello, dopóki nie wyłączyłem triggera.

Wiem, że zawracam głowę rzeczami niezwiązanymi z nową wersją i są to bardzo indywidualne problemy, ale potrzebowałbym jakiejś wskazówki. Czy kolejne formularze do tej samej transakcji weryfikują jakoś wcześniejszy formularz? 

 

Edytowane przez Paweł ole
Link to postu
1 godzinę temu, Paweł ole napisał:

dopóki nie wyłączyłem triggera

A na pewno nie jest to kwestia opóźnień i zbiegu okoliczności?

Istnieje możliwość, że kolejne formularze coś robią z formularzem poprzednim - trzeba by to przeanalizować bo akurat autor formularzy już z nami nie pracuje więc moja wiedza na temat ich działania nie jest tak dogłębna.

Link to postu

Ja mam sugestię w tym temacie, dobrym pomysłem byłoby aby można było sobie włączyć domyślne zaznaczanie "nie przenoś danych automatycznie" z formularza, jeśli nastąpiła ich ręczna edycja. Chodzi o sytuację, kiedy np. Klient chce coś zmienić, poprawiamy dane i zapomnimy o owym znaczniku. Dane nadpiszą się pierwotnymi i mamy problem. Z reguły jak już grzebiemy w danych transakcji to po coś to robimy, ów znacznik również mógłby się ustawiać, jeśli edycję wykonujemy na zakładce "podstawowe".

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...