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