Přepočty indexů a Hromadná aktualizace indexů

Přepočty indexů

Připomeňme si:

POLE

KATEGORIZUJE KONTAKT

Obrat podle velikosti obratu vůči naší firmě
Loajalita podle stálosti obratu vůči naší firmě
Platební morálka podle včasných úhrad dokladů
Kategorie cen podle cenové politiky

 

Vyplňování těchto polí je možno automatizovat pomocí Adresáře. V menu agendy spusťte dialog Přepočty indexů... ve kterém se evidují metodiky přepočtu indexů. Pro každý index lze definovat různé metodiky přepočtu. Tak je například možné rozlišit kategorizaci obratu běžného odběratele a velkoodběratele. Kategorie lze pak hromadně přepočítat pomocí průvodce Hromadná aktualizace indexů...

 

Přepočty indexů umožňují definovat automatizaci pro aktualizaci indexů kontaktů. Indexy kontaktů jsou určeny pro segmentaci kontaktů podle nejrůznějších kritérií a pomáhají tak získat rychlou informaci o daném kontaktu. Přepočet se skládá z definice období, dotazu SQL, definice názvů indexů a definice podmínek pro konkrétní názvy indexů. Princip spočívá v tom, že se vyhodnotí SQL dotaz přepočtu, kterému se předají parametry období. Dotaz spočítá určité výsledné hodnoty libovolně pojmenované. Tyto hodnoty jsou následně zpracovávány v sekci podmínek, které náleží jednotlivým názvům indexů. Pokud jsou splněny všechny podmínky konkrétního názvu indexu, je konkrétnímu kontaktu daný index přiřazen.

 

Rozdělení indexů

Přepočty indexů se rozdělují podle toho, který index aktualizují na:

Přepočet indexu obratu Zpracovává data z jednoho období.
Přepočet indexu loajality Zpracovává data ze dvou po sobě jdoucích období.
Přepočet indexu platební morálky Zpracovává data z jednoho období.
Přepočet kategorie cen Zpracovává data z jednoho období.

 

Definice období

Období určuje časové rozmezí, za které se spočítá SQL dotaz. Délka období se určuje hodnotou a typem období. Například pro délku období tří let je třeba zapsat do pole Délka období přepočtu hodnotu 3 a vybrat typ období Rok. Tím je definována délka. Nyní je ještě potřeba stanovit od kdy se má dané období počítat. Pokud je v sekci kdy skončilo poslední období vybráno aktuální den, období je spočítáno zpětně od dnešního dne. Tudíž dnes – 3 roky. Pokud je v sekci kdy skončilo poslední období vybráno poslední kalendářní (Typ období), výsledné období je spočítáno zpětně od data, kdy skončil daný Typ období. Pokud by bylo tedy vybráno poslední kalendářní (Rok), výsledné období by bylo 31. 12. loňského roku (Datum kdy skončilo období rok) – 3 roky.

U indexu loajality se počítají dvě po sobě jdoucí období. V tomto případě se spočítá první období a druhé období se spočítá tak, aby bylo stejně dlouhé, ale aby předcházelo prvnímu období.

 

Předání hodnot období do dotazu

Do dotazu se data předávají takto:

Všechny indexy kromě Indexu loajality

parDatumOd1 = Datum kdy začalo dané období
parDatumDo1 = Datum kdy skončilo dané období

Dotaz SQL musí začínat PARAMETERS parDatumOd1 DateTime, parDatumDo1 DateTime;

V dotazu se na hodnoty odkazuje takto: [parDatumOd1], [parDatumDo1]

Index loajality

parDatumOd1 = Datum kdy začalo starší období
parDatumDo1 = Datum kdy skončilo starší období
parDatumOd2 = Datum kdy začalo novější období
parDatumDo2 = Datum kdy skončilo novější období

Dotaz SQL musí začínat PARAMETERS parDatumOd1 DateTime, parDatumDo1 DateTime, parDatumOd2 DateTime, parDatumDo2 DateTime;

V dotazu se na hodnoty odkazuje takto: [parDatumOd1], [parDatumDo1], [parDatumOd2], [parDatumDo2]

 

Definice dotazu SQL

Dotaz SQL musí být navržen tak, aby přebíral parametry období a vracel nějaká výsledná pojmenovaná pole.

Dotaz musí mít také svojí PASSTHROUGH variantu, protože na SQL serveru by byl velice pomalý.

 

Příklad pro přepočet indexu obratu:

V příkladu je uveden dotaz, který je určen pro přepočet indexu obratu kontaktů začínajících písmenem "A". U indexu obratu je důležité spočítat obrat kontaktu za nějaké období. Je tedy potřebovat definovat data, které určují dané období. Toto se udělá v sekci Parameters dotazu SQL. Dále je třeba, aby daný dotaz vracel nějakou výslednou hodnotu. V tomto případě hodnotu H1, která určuje částku obratu za dané období. Podle této hodnoty se budou dále definovat názvy indexů.

PARAMETERS parDatumOd1 DateTime, parDatumDo1 DateTime;
SELECT Firmy.Firma, nz([PH1],0) as H1
FROM Firmy LEFT JOIN (SELECT Doklady.Firma, Sum([Doklady].[Celkem]*[Doklady].[pv]) AS PH1
FROM Doklady
WHERE (((Doklady.Typ_dokladu)="FV" Or (Doklady.Typ_dokladu)="DV") AND ((Doklady.Datum) Between [parDatumOd1] And [parDatumDo1]))
GROUP BY Doklady.Firma
) AS PDA ON Firmy.Firma = PDA.Firma
WHERE (((Firmy.Firma) Like "a*"))

 

Příklad pro přepočet indexu loajality:

V příkladu je uveden dotaz, který je určen pro přepočet indexu loajality kontaktů začínajících písmenem "A". U indexu loajality je důležité spočítat obrat kontaktu za nějaké dvě po sobě jdoucí období. Je tedy potřeba definovat data, které určují daná období. Toto se udělá v sekci Parameters dotazu SQL. Dále je třeba aby daný dotaz vracel nějaké výsledné hodnoty. V tomto případě hodnoty H1, která určuje částku obratu za starší období a H2, která určuje částku obratu za novější období. Podle těchto hodnot se budou dále definovat názvy indexů.

PARAMETERS parDatumOd1 DateTime, parDatumDo1 DateTime, parDatumOd2 DateTime, parDatumDo2 DateTime;
SELECT Firmy.Firma, Firmy.Index_loajality, nz([PH1],0) AS H1, nz([PH2],0) AS H2
FROM (Firmy LEFT JOIN (SELECT Doklady.Firma, Sum([Doklady].[Celkem]*[Doklady].[pv]) AS PH1
FROM Doklady
WHERE (((Doklady.Typ_dokladu)="FV" Or (Doklady.Typ_dokladu)="DV") AND ((Doklady.Datum) Between [parDatumOd1] And [parDatumDo1]))
GROUP BY Doklady.Firma) AS PD1 ON Firmy.Firma = PD1.Firma) LEFT JOIN (SELECT Doklady.Firma,Sum([Doklady].[Celkem]*[Doklady].[pv]) AS PH2
FROM Doklady
WHERE (((Doklady.Typ_dokladu)="FV" Or (Doklady.Typ_dokladu)="DV") AND ((Doklady.Datum) Between [parDatumOd2] And [parDatumDo2]))
GROUP BY Doklady.Firma) AS PD2 ON Firmy.Firma = PD2.Firma
WHERE (((Firmy.Firma) Like "a*"))

 

Příklad pro přepočet indexu platební morálky:

V příkladu je uveden dotaz, který je určen pro přepočet indexu platební morálky odběratelů. U indexu platební morálky je důležité spočítat průměrnou dobu splatnosti za nějaké konkrétní období. Je tedy nutné definovat data, které určují dané období. Toto se udělá v sekci Parameters dotazu SQL. Dále je třeba aby daný dotaz vracel nějaké výsledné hodnoty. V tomto případě hodnotu PrumerDniSplatnosti. Podle této hodnoty se budou dále definovat názvy indexů.

PARAMETERS parDatumOd1 DateTime, parDatumDo1 DateTime;
SELECT Firmy.Firma, Firmy.Odberatel, CInt(nz([PrumerDni],0)) AS PrumerDniSplatnosti, CInt(nz([SoucetDniPo]/CInt(nz([PocetDokladu],1)),0)) AS PrumerDniPoSplatnosti, D_02.PocetDokladu, D_02.SoucetDniPo
FROM (Firmy LEFT JOIN (SELECT Doklady.Firma, Avg(Souvisejici_doklady.Dni) AS PrumerDni
FROM Souvisejici_doklady INNER JOIN Doklady ON Souvisejici_doklady.Cislo_dokladu = Doklady.Cislo_dokladu
WHERE (((Souvisejici_doklady.Typ_souvislosti)="PU") AND ((Doklady.Firma) Is Not Null) AND ((Doklady.Datum) Between [parDatumOd1] And [parDatumDo1]))
GROUP BY Doklady.Firma) AS D_01 ON Firmy.Firma = D_01.Firma) LEFT JOIN (SELECT Doklady.Firma, Count(Doklady.Cislo_dokladu) AS PocetDokladu, Sum(DateDiff("d",[Datum_splatnosti],Date())) AS SoucetDniPo
FROM Doklady
WHERE (((Doklady.Datum_splatnosti)<Date()) AND ((Doklady.Zbyva_uhradit)>0) AND ((Doklady.Typ_dokladu)="FV") AND ((Doklady.Datum) Between [parDatumOd1] And [parDatumDo1]))
GROUP BY Doklady.Firma) AS D_02 ON Firmy.Firma = D_02.Firma
WHERE (((Firmy.Odberatel)=True))
ORDER BY Firmy.Firma

 

Definice názvů indexů a podmínek pro jejich použití

Definice indexů umožňuje definovat názvy jednotlivých indexů. Tyto názvy pak budou vkládány přímo do příslušných polí u kontaktu. Každý název indexu umožňuje nadefinovat podmínky, které musí platit, aby byl daný název indexu vložen do kontaktu. Podmínky se definují do řádků tak, že každý řádek symbolizuje vazbu AND. Pokud jsou dvě podmínky na jednom řádku, symbolizují vazbu OR.

 

Příklad pro přepočet indexu obratu:

V příkladu jsou definovány názvy indexů takto: 0 - 1999, 2000 - 2999, 3000 - x

Podmínky pro jednotlivé indexy jsou definovány takto: 0 - 1999 (H1 > 0 AND H1 < 2000), 2000 - 2999 (H1 >= 2000 AND H1 < 3000), 3000 - x (H1 >= 3000)

H1 je částka obratu za konkrétní období, kterou vrací dotaz SQL.

 

Dialog Metoda přepočtu - Index obratu

 

Příklad pro přepočet indexu loajality:

Na příkladu je vidět, že pokud bude hodnota H1 (částka obratu za starší období) rovna nule, hodnota H2 (částka obratu za novější období) větší než nula a aktuální index loajality null, tak se do kontaktu vloží index NOVÝ.

 

Dialog Metoda přepočtu - Index loajality

 

Aktualizace indexů

Indexy se u kontaktů aktualizují hromadně nebo jednotlivě.

Při jednotlivé aktualizaci je třeba otevřít detail záznamu a vybrat metodu přepočtu v dialogu, který se zobrazí po stisku tlačítka Tři tečky za polem indexu. Po stisku tlačítka OK se aktualizuje index a zapíše se datum aktuálního indexu.

Při hromadné aktualizaci je třeba spustit dialog Hromadná aktualizace indexů. V sekci Aktualizovat je možno vybrat indexy, které se mají přepočítat. Pokud je zaškrtnuto Vybrat metody přepočtu indexů, je možno vybrat i jednotlivé metody, které se mají pro aktualizaci indexů použít. Pokud nebude tato volba zaškrtnuta, použijí se všechny metody přepočtu pro vybrané indexy.

 

Hromadná aktualizace indexů

 

V Možnostech Vario pro agendu Adresář lze nastavit oprávnění k přepočtu indexů.

 

Nastavení oprávnění k přepočtu indexů v agendě Adresář

 

Související dokumenty