Skocz do zawartości

SQL - nieopłacone pobrania.

Polecane posty

Witam,

próbuję wyciągnąć wszystkie pobrania, dla których nie została jeszcze zarejestrowana wpłata.

 

Poniżej zapytanie:

Select cs_Nick from cs__Customer
JOIN tr__Transaction on tr_CustomerId = cs_Id
where tr_PayOnDelivery = '1' AND tr_Paid = '0'

 

Chodzi o to iż zapytanie zwraca błędny wynik, jakby nie uwzględniało transakcji zgrupowanych.

 

Dlaczego tak się dzieje?

Link to postu

Nie uwzględnia zgrupowanych ,czy raczej uwzględnia jako powielone ?

 

Sello tworzy kolejną transakcję przy zgrupowaniu, zostawiając stare transakcje jak były, jedynie ustawiając w nich "tr_Grouped" na 1.

 

Musisz pobrać najpierw transakcje z tr_Grouped=0

a potem zrobić unię z nowym zapytaniem z joinem transakcji i grup transakcji z tabeli tr_Group.

 

Trzeba też uwzględnić transakcje anulowane, tzn. nie pokazywać ich.

 

Link to postu

Dzięki jakoś to ogarnąłem.

 

Mam kolejny problem, co dokładnie się dzieje podczas rejestrowania pełnej wpłaty?

 

Ja zauważyłem, że zmienia się pole:

-wpłacona kwota

-wypełnia się data zarejestrowania wpłaty

-zaznacza się checkbox: "Transakcja opłacona"

-stan transakcji zmienia się na: "Zakończona"

 

No i robię dokładnie to samo po przez SQL UPDATE:

SET tr_RemittanceDate = GETDATE(), tr_Remittance = tr_Payment, tr_Paid = '1', tr_Complete = '2'

 

Wszystkie te opcje zmieniają się poprawnie jednak transakcja nie przenosi się z oczekujących na płatność, dlaczego?

Link to postu

Witam

Może poniższy kawałek Ci pomoże:

 

 sSQL = " UPDATE tr__Transaction \n" +
                 "SET tr__Transaction.tr_Paid= 1 , tr_Remittance=tr_Payment, tr_Complete=2, tr_RemittanceDate='"+ data +"'\n" +
                 "FROM  tr__Transaction\n" +
                 " JOIN pc__Package ON tr__Transaction.tr_Id = pc__Package.pc_TransId \n" +
                 "WHERE pc__Package.pc_Document= '" + nrlistu + "'\n";

Link to postu

Masz to zrobione dokładnie tak jak ja wyżej, sprawdziłem Twoją metodę i również transakcja nie znika z zakładki "oczekujące na płatność"

 

Czego może brakować?

 

EDIT:

 

Chyba jednak byłem zbyt niecierpliwy zauważyłem, że transakcja znika z zakładki jednak dopiero po jakimś czasie. Jak to działa? Sello co jakiś czas odświeża sobie ta listę?

Link to postu

Odświeża w momencie przechodzenia na zakładkę, oraz po edycji/dodaniu/usunięciu elementu jeśli uzna to za stosowne. A za stosowne uznaje, jeśli zostanie w programie zgłoszona przez jakąś funkcję potrzeba odświeżenia danych. Wykonując zmiany w samej bazie pomijany jest cały mechanizm odświeżania.

Dodatkowo miejcie na uwadze, że takie aktualizacje pomijają tonę albo i dwie tony innych aktualizacji jakie dokonuje transakcja przy zapisie. Ma to związek chociażby z paczkami. Dlatego zdecydowanie nie polecamy zmieniać w bazie statusów transakcji, bo wtedy coś może przestać działać prawidłowo.

Link to postu

 

Gawcio wydaje mi się, że będzie problemem aktualizowanie bazy z zewnątrz.

 

Po pierwsze Bartek musiałby przy każdej wersji Sello opisywać czy aby coś się nie zmieniło w mechanizmach Sello, abyś mógł to dopasować do swojego rozwiązania.

 

Po drugie obowiązuje tajemnica handlowa, a konkurencja tylko czyha aby poznać tajniki Sello i je skopiować :P

 

A po trzecie Bartek nie ma czasu na opisywanie każdego aspektu Sello na forum, bo ledwo starcza mu czasu na pilnowanie podległych programistów.  ;D

 

Poza tym zaraz ktoś zacznie pytać o coś innego .... ::)

 

Np. ja - co Sello robi, żeby zapisać nowe transakcje pobrane z Allegro  ;D ;D

Tylko dokładnie i z przykładami proszę.

 

Wyciąganie danych z bazy to jedno, ale w zapis bym się nie wpychał.

 

Link to postu

Myśleliśmy o API, ale analiza koniecznych zmian w kodzie aby stworzyć Sferę do Sello na wzór Sfery do Subiekta GT wykazała, że jest to zadanie bardzo złożone i po prostu nieopłacalne.

 

Pomyślimy o namiastce API, która umożliwiałaby dodawanie do Sello transakcji oraz podstawowe działanie na nich, jednak nie w najbliższym czasie.

 

Powiedz w takim razie co dokładnie się dzieje kiedy zaznaczam transakcję i naciskam ctrl+w

Odpowiem pół żartem, pół serio: Tego nikt nie wie :). Sello operuje na obiektach (w rozumieniu programowania obiektowego), aktualizacja i zapisywanie obiektów do bazy zapewnia framework używany w Sello. W międzyczasie aktualizowane są statusy wysłania paczki, podliczane są paczki, towary, przeliczana jest masa, weryfikowane są potrzeby zmian w dokumentach. Powoduje to, że przy różnych warunkach i różnych danych framework generuje różne zapytania do bazy danych więc nie sposób podać jednego.

 

Link to postu

Rozumiem, że są to złożone czynności jednak teraz weźmy moją sytuację czyli:

 

Przesyłka pobraniowa:

-dokumenty utworzone

-paczka już wysłana

-wagi, ilości towarów itd pozostają niezmienne

 

W grę wchodzi tylko oznaczenie jej jako opłacona, tak teraz wg Twojej opinii bo jesteś dużo bardziej doświadczony, czy takie oznaczenie jej po przez moje zapytanie może narobić problemów?

Link to postu

Moja opinia jest taka, że lepiej tak nie robić :).

Ale jeśli już musisz, to podejdź w ten sposób. Weź transakcję, zrób zrzut selecta całej transakcji do pliku, następnie wykonaj w Sello czynność, którą chcesz wykonać, zrób drugiego selecta i porównaj oba wyniki. Dodatkowo można podobnie zrobić z tabelkami z przedrostkiem tr_ bo te mają jakiś związek z tabelą główną czyli tr__Transaction (tabele główne mają dwa podkreślenia po prefiksie __).

Można również posłużyć się narzędziem do śledzenia zapytań - w SQL Server Management Studio jest takie narzędzie, nie wiem natomiast czy również w wersji express.

Nie ma gwarancji, że będzie to zawsze takie samo polecenie, dlatego nie polecam manipulacji stanami transakcji przez bazę. Może się również okazać, że będzie to ładnie działać. Nie robimy takich prób zatem trudno mi wskazać czy jest to właściwe rozwiązanie czy nie.

Link to postu

Całkiem trafna rada, zgodnie z nią porównałem tabelę główną oraz wszystkie podrzędne okazuje się, że wartości są identyczne w przypadku kiedy rejestruję wpłatę po przez Sello oraz jak rejestruję wpłatę poleceniem SQL.

 

Jedyną różnicą jest historia zmian w tabeli tr_History jednak jest mi to zbyteczne a wartości w tamtej tabeli nie są kluczowe.

 

Podejmę ryzyko ponieważ zaoszczędzi mi to sporo czasu a analiza bazy nie pokazuje większych zmian.

 

Dzięki za pomoc:)

Link to postu

Hehe nie ;)

 

Do TB przychodzi mail z banku o wpływie na konto, zawsze znajduje się w nim numer nadania więc TB zapisuje taki email na dysku. Aplikacja wczytuje wszystkie takie pliki, pobiera z nich numery nadań i automatycznie oznacza pobrania jako opłacone.

 

Nie ma możliwość pomyłki, a do tej pory było trochę zabawy z szukaniem na liście tej pobraniówki, często trzeba było przejść do paczek wyszukać po numerze nadania i dopiero oznaczyć jako zapłaconą, teraz jest automat :D

Link to postu

Sióedemka oraz DPD wysyła na maila pliki tekstowe/csv z nr przesyłek pobraniowych

Mój program pobiera nr nadania z tych plików i w bazie Sello odznacza jako opłacone.

 

Pracuję na wersji 15.1 i jedyną wadą z fiksowaniem bazy (nie wiem czy od powyższego) jest to, że nie zapisuje mi notatek w transakcjach, muszę wybierać notatkę "z szablonu"

 

Wyżej wymieniony kod to fragment tego programu.

 

Dzięki za pomysł, dorobię sobie jeszcze pobrania z poczty.

Link to postu

Jak robię w transakcji Notatki->Dodaj to się nie zapisuje.

Muszę z "dodaj z szablonu" i sobie wyedytować.

 

Te z allegro spływają, ale nie są widoczne na liście, tylko po wejściu w transakcję,

więc jak coś istotnego to muszę sobie przekopiować.

 

Ten błąd jest znany obsłudze Sello, nie tylko ja go mam,

prawdopodobnie występuje u osób, które korzystały ze SmartBL.

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ę...