HermesSQL

  1. Strona główna
  2. Docs
  3. HermesSQL
  4. Sprzedaż
  5. Funkcja – Skąd się wzięła cena

Funkcja – Skąd się wzięła cena

Wydrukuj dokument
  1. Wprowadzenie

Poniższy opis przedstawia sposób i kolejność w jakiej system wylicza cenę sprzedaży dla pozycji dokumentów.

2 . Wyliczanie ceny sprzedaży – funkcja skąd się wzięła cena w Hermesie:

  • Sprzedaż w cenie zakupu

Dokument w cenie zakupu – w ogóle nie zajmujemy się ceną, wynika ona z wartości w cenie zakupu uzyskiwanej w momencie rozchodowania.

  • Sprzedaż w cenie netto

Szukana jest cena (netto lub brutto) w tabeli artykułów dla poziomu podstawowego lub z tabeli ART_CENY dla wybranego poziomu cen i artykułu. Znaleziona cena jest ceną nominalną. Jednocześnie szukana jest cena minimalna.

Szukana jest cena dla artykułu w aktualnie obowiązującym cenniku kontrahenta. Jeżeli w cenniku znajduje się cena dla aktualnej dostawy, zostanie pobrana w pierwszej kolejności, a program zmieni ew. sposób rozchodowania pozycji na wskazywanie dostaw, oraz ilość w zależności od ilości dostępnej w magazynie dla tej dostawy.

Jeżeli nie – zostanie znaleziona cena dla kontrahenta i odbiorcy. Jeżeli nie istnieje cena dla kontrahenta i odbiorcy, program poszuka ceny dla kontrahenta. Jeżeli znajdzie pozycję w cenniku, w pierwszej kolejności spróbuje znaleźć cenę dla zakresu, w którym mieści się ilość z pozycji. Jeżeli cena nie zostanie znaleziona, program pobierze cenę z pierwszej zakładki cennika.

 

Uwaga!!!

Jeżeli znaleziona zostanie cena w cenniku kontrahenta, cena ta zostanie użyta w dokumencie. Poszukiwanie ceny się kończy.

  • Gazetki i promocje

W następnej kolejności przeszukiwane są promocje systemowe albo gazetki promocyjne, w zależności od ustawienia Promocje w rejestrze dokumentów.

  Gazetki promocyjne

Program szuka pozycji gazetki  dla artykułu w aktualnie obowiązujących gazetkach. Jeżeli znajdzie i będzie to cena, zmienia wartość ceny nominalnej na cenę obowiązującą w gazetce (rabat systemowy zerowy).

 

Jeżeli znajdzie i będzie to rabat,  rabat systemowy przyjmuje wartość rabatu z gazetki. Po znalezieniu pozycji w gazetce program kończy poszukiwanie ceny. Ceny w gazetce promocyjnej są PLN i zostaną przeliczone na walutę dokumentu.

Promocje systemowe

Program szuka promocji obowiązujących dla daty wystawienia dokumentu, w magazynie, w którym wystawiany jest dokument dla kontrahenta i grup, do których należy kontrahent. W drzewie kontrahenta przeszukiwane są promocje dotyczące grupy, do której przypisano kontrahenta oraz, cofając się po drzewie, promocje wszystkich rodziców tej grupy, do korzenia włącznie. W znalezionych promocjach program szuka pozycji, która da najkorzystniejszą cenę dla klienta (z pewnymi ograniczeniami, opisanymi dalej). Przed rozpoczęciem przeszukiwania promocji, program ustawia rabat na -9999.99 a cenę na 9999999999.99
Dla każdej znalezionej promocji program szuka kolejno:

  • Pozycji promocji dla konkretnego symbolu artykułu (tu może być promocja na konkretną dostawę, program ew. zmieni metodę rozchodowania pozycji i ilość w zależności od ilości dostępnej w magazynie dla tej dostawy).
  • Pozycji promocji dla artykułów o symbolu pasującym do wzorca. Program przerywa szukanie po znalezieniu pozycji najlepiej pasującej do symbolu artykułu.
  • Pozycji promocji dla grupy artykułów. Program szuka pozycji promocji dla wszystkich drzew, do których należy artykuł, w ramach jednego drzewa przerywa szukanie po znalezieniu grupy najlepiej pasującej do grupy przypisanej do artykułu.
  • Pozycji promocji ze względu na wartość pola w tabeli artykułów.
  • Pozycji promocji obowiązującej dla wszystkich artykułów.

Ponieważ pozycje promocji mają własne terminy obowiązywania, przeszukiwanie pozycji promocji również uwzględnia ich okres obowiązywania. Po znalezieniu pozycji promocji program porównuje cenę lub rabat z ustawionymi wcześniej wartościami.

  • Jeżeli znaleziono cenę i cena ta jest mniejsza od ustawionej, cena ustawiona zastępowana jest znalezioną wartością.
  • Jeżeli znaleziono rabat i jest większy od ustawionego wcześniej, rabat ustawiony zastępowany jest znalezioną wartością.

Znalezienie pozycji promocji w jednej z tych grup przerywa szukanie kolejnych pozycji promocji w innych grupach w ramach tej samej promocji. Nie przerywa przeszukiwania innych promocji.

 

 

UWAGA!

Ograniczenia wyboru najlepszej ceny.

Gdy nie mieliśmy cennika kontrahenta, konkretne ceny podane w promocjach miały pierwszeństwo przed cenami uzyskanymi w wyniku zastosowania rabatu procentowego – uzyskiwaliśmy w ten sposób efekt podobny do cennika kontrahenta. Obecnie promocje działają domyślnie nadal w ten sam sposób – jeżeli w wyniku promocji wybrana została konkretna, najniższa cena, program nie sprawdza, czy w wyniku zastosowania znalezionego również rabatu nie uzyskalibyśmy niższej ceny. Zmienia to parametr BEST_PRICE w tabeli HMCONFIG bazy HERMES. Wartość 1 powoduje, że program sprawdzi, czy w wyniku zastosowania rabatu nie uzyskamy niższej ceny i wybierze zawsze cenę faktycznie najkorzystniejszą dla klienta.

Promocja może zmienić ceny bazowe (czyli podmienić cenę nominalną artykułu na konkretnie podaną lub zmienioną o podany procent) albo zmienić warunki płatności, czyli będzie to faktycznie rabat procentowy od ceny nominalnej.
Jeżeli wybrana pozycja promocji nie ma zaznaczonego znacznika Uwzględnij rabaty kontrahenta, program zakończy na tym wyszukiwanie ceny.

Rabaty

Jeżeli nie znaleziono promocji, lub pozycja promocji ma zaznaczony znacznik Uwzględnij rabaty kontrahenta, program będzie szukał ceny lub rabatu w zestawach rabatowych. Wyszukiwanie zestawów rabatowych odbywa się analogicznie do wyszukiwania promocji – szukane są aktualnie obowiązujące (dla daty wystawienia dokumentu) zestawy rabatowe dla kontrahenta i grup, do których należy. Przed rozpoczęciem przeszukiwania zestawów rabatów, program ustawia rabat na -9999.99 a cenę na 9999999999.99

Dla każdego znalezionego zestawu rabatów program szuka kolejno:

  • Pozycji zestawu rabatów dla konkretnego symbolu artykułu.
  • Pozycji zestawu rabatów dla artykułów o symbolu pasującym do wzorca. Program przerywa szukanie po znalezieniu pozycji najlepiej pasującej do symbolu artykułu.
  • Pozycji zestawu rabatów dla grupy artykułów. Program szuka pozycji zestawu rabatów dla wszystkich drzew, do których należy artykuł, w ramach jednego drzewa przerywa szukanie po znalezieniu grupy najlepiej pasującej do grupy przypisanej do artykułu.
  • Pozycji zestawu rabatów ze względu na wartość pola w tabeli artykułów.
  • Pozycji zestawu rabatów obowiązującej dla wszystkich artykułów.

Ponieważ pozycje zestawu rabatów mają własne terminy obowiązywania, przeszukiwanie pozycji zestawu rabatów również uwzględnia ich okres obowiązywania. Po znalezieniu pozycji zestawu rabatów:

  • Jeżeli jest to pozycja z podaną ceną, program porównuje ją ustawioną wcześniej. Jeżeli znaleziona cena jest mniejsza, ustawiona wcześniej cena zastępowana jest znalezioną wartością i jeżeli pozycja rabatów dotyczy artykułu o konkretnym symbolu, ustawiana jest flaga znaleziono cenę dla artykułu.
  • Jeżeli jest to pozycja bez podanej ceny:
    • Dla MiniCoraxa lub gdy w tabeli HMCONFIG w bazie HERMES parametr RABAT_IW został ustawiony na 1 program pobiera wartość rabatu z pozycji.
  • W pozostałych przypadkach program przeszukuje najpierw tabelę rabatów od ilości, starając się znaleźć pozycję odpowiadające ilości artykułu w jednostce magazynowej, a potem od wartości starając się znaleźć pozycję odpowiadającą wartości pozycji dokumentu liczonej w cenie nominalnej. Przeszukiwane są obie tabele bez względu na to, czy w jednej z nich został znaleziony rabat, czy nie. Dla każdej znalezionej pozycji program porównuje rabat z wcześniej ustawionym. Jeżeli znaleziony rabat jest większy, ustawiony rabat zastępowany jest znalezioną wartością.

Po znalezieniu pozycji zestawu rabatów, program przerywa wyszukiwanie dla pozostałych grup (czyli np. znalezienie rabatu dla pasującego symbolu spowoduje, że nie będzie szukany rabat dla grupy, ze względu na wartość pola i dla wszystkich artykułów) i przechodzi do następnego zestawu rabatów.

Po przeszukaniu wszystkich znalezionych zestawów rabatów:

  • Jeżeli ustawiono flagę znaleziono cenę dla artykułu lub znaleziono jakąś cenę i jednocześnie cena nominalna jest zerowa, program przyjmie tę cenę jako wynik przeszukiwania zestawów rabatów.
  • W przeciwnym wypadku jeżeli program znalazł rabat, obliczy cenę na podstawie ceny nominalnej i znalezionego rabatu.
    • Jeżeli znaleziono również konkretną cenę, program porówna wynik z tą ceną. Jeżeli znaleziona cena jest mniejsza od obliczonej, wynikiem przeszukiwania zestawów rabatów będzie ta cena. Jeżeli cena jest większa lub równa, wynikiem będzie znaleziony rabat.
    • Jeżeli nie znaleziono żadnej ceny, wynikiem przeszukiwania zestawu rabatów będzie znaleziony rabat.
  • Jeżeli program nie znajdzie żadnej ceny, ani rabatu, wynikiem przeszukiwania zestawu rabatów będzie rabat 0%.
  • Kolejność

Teraz program przystępuje do ustalania ceny:

  • Jeżeli został użyty cennik kontrahenta, cena na pozycji dokumentu jest cena z cennika.
  • Jeżeli została użyta gazetka promocyjna, cena lub rabat na pozycji dokumentu są ceną/rabatem z gazetki. Jeżeli był to rabat, stanie się on rabatem systemowym.
  • Jeżeli została użyta promocja bez uwzględnienia rabatów kontrahenta lub promocja z uwzględnieniem rabatów kontrahenta, ale nie znaleziono żadnej pozycji zestawu rabatów, cena lub rabat na pozycji dokumentu są ceną/rabatem z promocji. Jeżeli był to rabat, stanie się on rabatem systemowym. Jeżeli promocja dotyczyła zmiany ceny bazowej, cena nominalna będzie ceną z promocji.
  • Jeżeli została użyta promocja z uwzględnieniem rabatów kontrahenta i znaleziona została pozycja w zestawach rabatowych:
    • Jeżeli w zestawach rabatów znaleziono konkretną cenę, ta cena będzie ceną dla pozycji dokumentu. Jeżeli pozycja promocji zmieniała cenę bazową, cena nominalna będzie ceną z promocji.
    • Jeżeli w zestawie rabatów znaleziono rabat, to:
      • Jeżeli promocja dotyczyła zmiany ceny bazowej, cena nominalna pozycji stanie się ceną z promocji i od niej zostanie naliczony rabat znaleziony w zestawach rabatów (rabat ten będzie rabatem systemowym).
      • Jeżeli promocja dotyczyła udzielenia rabatu, to rabat z promocji zostanie zsumowany lub złożony – w zależności od wybranego ustawienia w programie – i ten rabat będzie naliczony dla ceny nominalnej.
    • Jeżeli nie została użyta promocja ani gazetka i znaleziona została pozycja w zestawach rabatowych, cena lub rabat na pozycji dokumentu są ceną/rabatem z zestawu rabatowego.
    • Jeżeli nie została użyta promocja ani gazetka i nie znaleziona została pozycja w zestawach rabatowych, cena na pozycji dokumentu jest cena nominalną.

Rabaty

Rabat operatora lub od całego dokumentu

Może zostać również użyty rabat operatora, rabat końcowy i rabat od formy płatności. Podanie rabatu operatora powoduje, że jest sumowany lub składany, w zależności od ustawienia w programie, z rabatem systemowym a następnie obliczana jest cena (cena po rabacie). Program przechowuje tak obliczoną cenę niezależnie od ceny końcowej, uwzględniającej rabat końcowy i od formy płatności.

 

Jeśli cena nie zgadza się z ceną zaproponowaną przez program, wyświetlony zostanie czerwony tekst Operator zmienił cenę.

Rabaty końcowy i od formy płatności są ze sobą sumowane lub składane i przez tak obliczony rabat przeliczana jest cena po rabacie, dając w efekcie cenę końcową. Na formularzu dokumentu pokazywana jest cena po rabacie, do obliczania wszystkich wartości używana jest cena końcowa.

 

Waluty i jednostki miary

Znaleziona cena jest ceną w walucie określonej wg. definicji z miejsca, w którym została znaleziona. Może być to waluta artykułu, poziomu cen, cennika kontrahenta lub zestawu rabatowego. Ceny w gazetkach promocyjnych i promocjach podaje się zawsze w PLN. Jest to również cena w jednostce magazynowej (podstawowej) artykułu, zdefiniowanej na formularzu artykułu. Jeżeli waluta dokumentu różni się od waluty ceny, zostanie ona przeliczona przez kurs pobrany z tabeli kursów podanej dla dokumentu lub, w przypadku jej braku, przez kurs znaleziony w domyślnej tabeli kursów dla sprzedaży złotówkowej. Wyjątkiem są tu dokumenty ZO, ZS i OF, w których waluta pozycji dokumentu może się różnić od waluty dokumentu. Jest to uzależnione od parametru Domyślna waluta pozycji w definicji dokumentu. Wybór ustawienia Waluta pozycji z nagłówka, niepoprawialna powoduje przeliczenie ceny przez kurs. Kurs jest zawsze kursem waluty pozycji do waluty dokumentu.

Uwaga!!!

Obliczając cenę program zawsze mnoży przez kurs. Ma to znaczenie, ponieważ kurs posiada dokładność 6 miejsc po przecinku. Jeżeli kurs waluty A do B wynosi 3.000000, to kurs waluty B do A wynosi 0.333333. Klienci czasem sprawdzając program i obliczając cenę po prostu dzielą przez 3.000000 otrzymując inną cenę niż obliczoną przez program.

Tak obliczona cena zostanie zaokrąglona do dwóch miejsc po przecinku chyba, że zostanie to zmienione przez użycie parametru CNDECIMAL w tabeli HMCONFIG bazy HERMES. To jest w dalszym ciągu cena w jednostce magazynowej. Jeżeli na pozycji dokumentu użyta zostanie inna jednostka miary niż magazynowa, nastąpi przeliczenie ceny przez przelicznik zdefiniowany dla wybranej jednostki miary w tabeli artykułów a wynik zostanie zaokrąglony do dwóch miejsc po przecinku lub zgodnie z wartością parametru CNDECIMAL.