Spis treści:
W przypadku podpisanej umowy na przesyłki Inpost dostajemy dwa razy w miesiącu fakturę ze specyfikacją nadanych paczek. Ręczna weryfikacja czy Inpost naliczył prawidłowo koszty przesyłek, byłaby zmorą i katorgą, szczególnie w przypadku dużej ilości paczek. Na ratunek przychodzi Excel i kod w Visual Basic, który zrobi za nas całą robotę. Skrypt jest w stanie automatycznie porównać i sprawdzić, czy koszty przesyłek zostały naliczone prawidłowo przez InPost, oszczędzając tym samym mnóstwo czasu oraz minimalizując ryzyko błędów ludzkich.
Mini TIP: Dla Klientów weryfikuję raz miesięcznie (Inpost wysyła dwa razy fakturę + specyfikację).
Co potrzeba, żeby zweryfikować poprawność kosztów przesyłek?
- Specyfikacja zaimportowana do pliku Excel (arkusz: 'specyfikacja’) z obsługą makr według instrukcji z maila od Inpost.
- Do tego samego pliku co pkt.1 zaimportować dane z zamówień (arkusz: 'dane’), które umożliwią powiązanie danych ze specyfikacji. Można to zrobić na podstawie numeru zamówienia lub numeru nadania.
- Kod VBA dodany do pliku pkt. 1, który sparuje dane z obu arkuszy i wyświetli tylko wiersze (arkusz: 'weryfikacja’), dla których występują niezgodności w cenie przesyłki.
Przykład weryfikacji cen Inpost
- Specyfikacja Inpost zaimportowana do pliku Excel (arkusz: specyfikacja) z obsługą makr.
- Dane z zamówień (arkusz: 'dane’) z kolumnami: Numer zamówienia i Cena za przesyłkę. W tym celu stworzyłem nowy eksport danych w Baselinker (Zamówienia -> Wydruki i eksporty).Zamówienia do weryfikacji filtruję w baselinkerze i następnie pobieram stworzony wcześniej eksport danych:
- Kod VBA, który sprawdza dane na podstawie numeru zamówienia, który występuje w arkuszu: 'dane’ oraz w specyfikacji arkusz: 'specyfikacja’, kolumna N = Uwagi. Pole uwagi (integracje -> inpost -> opis zawartości = ID zamówienia) jest uzupełniane podczas generowania etykiet w programie baselinker.
Sub SkopiujNiezgodneWierszeDoWeryfikacji() Dim wsSpecyfikacja As Worksheet, wsDane As Worksheet, wsWeryfikacja As Worksheet Dim lrSpecyfikacja As Long, lrDane As Long, r As Long, d As Long, nrWeryfikacja As Long Dim znaleziono As Boolean Dim numerZamowienia As String, cenaBrutto As Double, cenaPrzesylki As Double ' Ustaw arkusze Set wsSpecyfikacja = ThisWorkbook.Sheets("specyfikacja") Set wsDane = ThisWorkbook.Sheets("dane") On Error Resume Next Set wsWeryfikacja = ThisWorkbook.Sheets("weryfikacja") If wsWeryfikacja Is Nothing Then Set wsWeryfikacja = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) wsWeryfikacja.Name = "weryfikacja" Else wsWeryfikacja.Cells.Clear End If On Error GoTo 0 wsWeryfikacja.Cells(1, 1).value = "Niepasujące wiersze z 'specyfikacja'" ' Znajdź ostatni wiersz lrSpecyfikacja = wsSpecyfikacja.Cells(Rows.Count, "N").End(xlUp).Row lrDane = wsDane.Cells(Rows.Count, "A").End(xlUp).Row nrWeryfikacja = 2 ' Główna pętla porównująca For r = 2 To lrSpecyfikacja ' Usuń dodatkowy tekst po pierwszej spacji w numerze zamówienia numerZamowienia = Split(wsSpecyfikacja.Cells(r, "N").value, " ")(0) cenaBrutto = KonwertujCeny(wsSpecyfikacja.Cells(r, "I").value) znaleziono = False For d = 2 To lrDane If wsDane.Cells(d, "A").value = numerZamowienia Then cenaPrzesylki = KonwertujCeny(wsDane.Cells(d, "B").value) If Round(cenaBrutto, 2) <> Round(cenaPrzesylki, 2) Then wsSpecyfikacja.Rows(r).Copy Destination:=wsWeryfikacja.Rows(nrWeryfikacja) nrWeryfikacja = nrWeryfikacja + 1 End If znaleziono = True Exit For End If Next d If Not znaleziono Then Debug.Print "Nie znaleziono numeru zamówienia: " & numerZamowienia End If Next r ' Komunikat końcowy MsgBox "Weryfikacja zakończona. Znaleziono " & nrWeryfikacja - 2 & " niezgodnych wierszy." End Sub Function KonwertujCeny(value As Variant) As Double If VarType(value) = vbString Then KonwertujCeny = CDbl(Replace(value, ",", ".")) Else KonwertujCeny = value End If End Function
Gotowiec do weryfikacji nieprawidłowości w rozliczeniu przesyłek Inpost
Na przykładach człowiek uczy się najbardziej, więc gotowy plik z obsługą makr można pobrać tutaj i sobie dowolnie potestować. Danych z arkusza 'weryfikacja’ nie trzeba usuwać, gdyż przed uruchomieniem skryptu są najpierw czyszczone. Skrypt odpalamy, przechodząc do zakładki: Developer -> Visual Basic i klikamy F5 lub przycisk run.
Jeden komentarz
Dzięki za pomoc :) pozdro