Elementy składowe

Definicja raportu składa się z danych sekcji xml. Główną sekcją raportu jest sekcja reportW niej zaś zawarte są następujące:

  • reportHeader
  • reportType
  • orderOnList
  • onListVisibillity
  • arguments
  • elements

W celu opisania elementów składowych raportów jako przykład wykorzystany zostanie standardowy raport dostępny w aplikacji Comarch Mobile – Podsumowanie dnia, którego definicja znajduje się w pliku 2#SummaryOfTheDay#pol.xml.

 

Nagłówek

Nagłówek raportu opisany jest sekcją reportHeader, w niej zaś znajdują się poniższe:

Nazwa name
Opis Nazwa raportu.
Parametry
  • wartość tekstowa

 

Nazwa description
Opis Opis raportu.
Parametry
  • wartość tekstowa
Przykład
<reportHeader>
<name>Podsumowanie dnia</name>
<description>Podsumowanie wykonanych w dniu operacji. Sprzedaż wg grup. Udział grup w sprzedaży dnia.</description>
</reportHeader>

 

Widok raportu w kaflu Raporty

 

Typ raportu

Sekcja oznaczająca typ raportu: reportType. Musi zawierać następującą sekcję:

Nazwa value
Opis Wartość typu raportu. Np. jeżeli użytkownik nie posiada praw do dokumentów zakupowych, to nie wykona raportu o typie 2.
Parametry
  • 0 – wszystkie typy
  • 1 – raport sprzedażowy
  • 2 – raport zakupowy
  • 3 – raport serwisowy
Przykład
<reportType>
<value>0</value>
</reportType>

 

Kolejność raportów

Sekcja oznaczająca priorytet raportu: orderOnList. Musi zawierać następującą sekcję:

Nazwa value
Opis Priorytet wyświetlania raportu na liście raportów w kaflu Stan.
Parametry
  • brak sekcji – raport wyświetlany pod elementami zawierającymi tą sekcję
  • wartość liczbowa
Przykład
<orderOnList>
<value>1</value>
</orderOnList>

 

Widoczność raportu

Sekcja onListVisibillity określa miejsca w aplikacji mobilnej poza kaflem Raporty, z których dostępny jest raport. Musi zawierać następującą sekcję:

Nazwa value
Opis Wartość występowania raportu. Możliwe wartości łączone np. 129 = 128+1 – raport widoczny zarówno na liście kontrahentów jak i karcie kontrahenta.
Parametry
  • 0 – tylko lista raportów
  • – lista kontrahentów
  • – lista towarów
  • – element wizyty „Inny”
  • 8 – listy pozycji dokumentów
  • 16 – duża kalkulacja podczas dodawania pozycji na dokument
  • 32 – pasek po rozpoczęciu wizyty handlowej
  • 64 – karta towaru
  • 128 – karta kontrahenta
  • suma wybranych wartości
Przykład
<onListVisibillity>
<value>8</value>
</onListVisibillity>

 

Dostępność raportu z poziomu dodawania pozycji na dokumencie

 

Argumenty

Raport może wykorzystywać podane przez użytkownika aplikacji po kliknięciu w ikonę ołówka argumenty (parametry). Argumenty znajdują się w sekcji arguments definicji raportu, zaś poszczególne argumenty opatrzone są sekcją argument według następującego przykładu:

Przykład
<arguments>
<argument>

</argument>
</arguments>

 

Parametry raportu Podsumowanie dnia

 

Wskazówka
Aby wstawiane polecenia SQL działały poprawnie należy umieścić je w znaczniku <![CDATA[ polecenieSQL ]>  w celu wyłączenia spod analizy deserializatora XML.

 

Argument może zawierać następujące sekcje:

Nazwa id
Opis Identyfikator argumentu.
Parametry
  • wartość liczbowa

 

Nazwa typeId
Opis Typ argumentu.
Parametry
  • 0 – wybór daty
  • 1 – pole tekstowe
  • 2 – lista z parametrami zdefiniowanymi w sekcji posibleSQL
  • 3 – pole liczbowe
  • 4 – wybór kontrahenta
  • 5 – wybór towaru
  • – wybór typu check
Wskazówka
Jeżeli typ argumentu został wybrany jako 0 (wybór daty), to element defaultSQL należy ustawić jako:

<![CDATA[select date(’now’,’localtime’)]]>

zaś posibleSQL zostawić puste wstawiając:

<![CDATA[]]>

Przykład
Przykład argumentu wybranego jako typ (typ check) w raporcie Prezentacja partii towaru (45#ItemLots#pol.xml) dostępnym przy współpracy z systemem ERP Altum:

<argument>
<id>3</id>
<typeId>6</typeId>
<name>mag</name>
<visibleName>Magazyn</visibleName>
<defaultSQL><![CDATA[
SELECT '(’ || group_concat(id, ’,’) || ’)’ AS Conc, 'Wszystkie’ AS Value
FROM Warehouses
WHERE IsActive = 1 AND Id > 0
GROUP BY Value ]]>
</defaultSQL>
<posibleSQL><![CDATA[
SELECT id || ’ [’ || code || ’] ’ , name FROM Warehouses WHERE IsActive = 1 AND Id > 0 ]]>
</posibleSQL>
</argument>

 

Widok wyboru parametru o typie check

 

Nazwa name
Opis Nazwa argumentu używana w poleceniach SQL.
Parametry
  • wartość tekstowa

 

Nazwa visibleName
Opis Nazwa argumentu widoczna w aplikacji.
Parametry
  • wartość tekstowa

 

Nazwa defaultSQL
Opis Wartość parametru ustawiana domyślnie. Jeżeli wartość pozostanie pusta (ustawiona na <![CDATA[]]>) to wartość parametru w aplikacji ustawi się na 'Wybierz wartość’ i konieczny będzie wybór tego parametru przed otwarciem raportu.
Parametry
  • polecenie SQL

 

Nazwa posibleSQL
Opis Wartości parametru możliwe do wyboru.
Parametry
  • polecenie SQL

 

Nazwa isErpSQL
Opis Znacznik decydujący czy polecenie SQL ma być wykonywane na bazie systemu ERP. Używany w raportach online.
Parametry
  • brak sekcji – polecenie wykonywane na bazie mobilnej
  • – polecenie wykonywane na bazie mobilnej
  • – polecenie wykonywane na bazie systemu ERP

 

Nazwa validationRule
Opis Znacznik definiujący sposób walidacji argumentu (tylko dla typu data).
Parametry
  • Trzy cyfry oddzielone kropkami np. 2.0.1:
    • Pierwsza cyfra:
      0 – brak walidacji
      1 – sprawdzenie, czy data jest przyszła
      2 – sprawdzenie, która data jest późniejsza
    • Druga cyfra – określa pary argumentów (np. argument dataOd 2.1.1 a dataDo 2.1.2)
    • Trzecia cyfra – określa która data ma być wcześniejszą (wartość 1), a która późniejszą (wartość 2)

 

Przykład
<argument>
<id>2</id>
<typeId>2</typeId>
<name>grupowanie</name>
<visibleName>Sposób grupowania</visibleName>
<defaultSQL><![CDATA[select 0,’Brak’]]></defaultSQL>
<posibleSQL><![CDATA[select 0,’Brak’ union all select 1,’Kategoria’ union all select 2,’Marka’ union all select 3,’Producent’ union all select 4,’Grupa’]]></posibleSQL>
</argument>

 

Zdefiniowany w powyższym przykładzie argument widoczny jest w aplikacji w następujący sposób:

Parametr Sposób grupowania

 

Elementy

Elementy raportu składają się na jego wygląd w aplikacji mobilnej. Poszczególne elementy raportu znajdują się w sekcji elements definicji raportu, zaś każda z poniżej opisanych sekcji może znajdować się w sekcji elementktóra jest definicją jednego elementu.

Przykład
<elements>
<element>

</element>
</elements>

 

Nazwa id
Opis Identyfikator elementu.
Parametry
  • wartość liczbowa

 

Nazwa typeId
Opis Typ elementu.
Parametry
  • 0 – nagłówek raportu, który w aplikacji widoczny jest w raporcie na zielonej belce.
  • 1 – tabela1
  • 2 – tabela2
  • 3 – wykres słupkowy
  • 4 – wykres kołowy
  • 5 – wykres liniowy
  • 6 – wartość tekstowa

 

Nazwa sql
Opis Polecenie SQL wykonywane na bazie SQL, które tworzy tabelę wynikową. Podanie argumentu odbywa się poprzez umieszczenie jego nazwy w znakach @ np. @grupowanie@.
Parametry
  • polecenie SQL/polecenie wywołujące procedurę

 

Nazwa header
Opis Nagłówek elementu.
Parametry
  • wartość tekstowa/polecenie SQL

 

Nazwa headerType
Opis Typ nagłówka raportu.
Parametry
  • 0 – tekst
  • 1 – polecenie SQL

 

Nazwa isSummary 
Opis Znacznik czy element zawiera podsumowanie zwartości tabeli. W przypadku jego użycia w sekcji sql należy umieścić polecenia sumujące wybrane kolumny tabeli.
Parametry
  • brak sekcji – brak podsumowania
  • 0 – brak podsumowania
  • 1 – podsumowanie
  • polecenie SQL zwracające jedną z powyższych wartości

 

Nazwa isSummaryType
Opis Typ znacznika podsumowania.
Parametry
  • brak sekcji – wartość liczbowa
  • 0 – wartość liczbowa
  • 1 – polecenie SQL

 

Nazwa isErpSQL
Opis Znacznik czy polecenie ma być wykonane na bazie systemu ERP. Używany w raportach online.
Parametry
  • brak sekcji – polecenie wykonywane na bazie mobilnej
  • 0 – polecenie wykonywane na bazie mobilnej
  • 1 – polecenie wykonywane na bazie systemu ERP

 

Nazwa reportTypeVisibility
Opis Widoczność elementu w zależności od rodzaju raportu.
Parametry
  • 0 – wszystkie typy
  • 1 – raport sprzedażowy
  • 2 – raport zakupowy
  • 3 – raport serwisowy

 

Nazwa showNumberOfRows
Opis Wyświetla liczbę zwróconych rekordów w tabeli jako ostatni wiersz tabeli. Używane tylko gdy sekcja isSummary przyjmuje wartość 1.
Parametry
  • brak sekcji – nie wyświetlaj
  • 0 – nie wyświetlaj
  • 1 – wyświetl

 

Nazwa isExecute
Opis Znacznik czy wykonać dany element.
Parametry
  • 0 – brak wykonania
  • 1 – wykonanie
  • polecenie SQL zwracające jedną z powyższych wartości

 

Nazwa isExecuteType
Opis Typ znacznika wykonania elementu.
Parametry
  • brak sekcji – wartość liczbowa
  • – wartość liczbowa
  • 1 – polecenie SQL
Przykład
<element>
<id>8</id>
<typeId>3</typeId>
<sql>
<![CDATA[

select
coalesce(categories.name, 'Brak kategorii') as Kategoria,
sum(DocumentsPositions.GrossValueInSystemCurrency) as NetValue
from documents
join documentspositions
on documentspositions.documentid = documents.id
AND DocumentsPositions.DocumentIsLocal = Documents.DocumentIsLocal
and DocumentsPositions.IsItemsSetVirtualPosition = 0
and DocumentsPositions.RelatedItemsSetOrdinal is null
join items on items.id = documentspositions.itemid
left join categories on items.categoryid = categories.id
where Documents.DocumentIsLocal = 1 AND documents.NumeratorId IN (16,17) AND datetime(DocumentDate/1000, 'unixepoch','localtime') >datetime(date(@data@/1000, 'unixepoch', 'localtime'),'start of day') and  datetime(DocumentDate/1000, 'unixepoch','localtime') <datetime(date(@data@/1000, 'unixepoch','localtime'),'start of day','+1 day', '-1 seconds')  and 1 = @grupowanie@ group by categories.name

union all

select
coalesce(brands.name, 'brak marki') as Marka,
sum(DocumentsPositions.GrossValueInSystemCurrency) as NetValue
from documents
join documentspositions
 on documentspositions.documentid = documents.id
 AND DocumentsPositions.DocumentIsLocal = Documents.DocumentIsLocal
 and DocumentsPositions.IsItemsSetVirtualPosition = 0
 and DocumentsPositions.RelatedItemsSetOrdinal is null
join items on items.id = documentspositions.itemid
left join brands on items.brandid = brands.id
where Documents.DocumentIsLocal = 1 AND documents.NumeratorId IN (16,17) AND datetime(DocumentDate/1000, 'unixepoch','localtime') >datetime(date(@data@/1000, 'unixepoch', 'localtime'),'start of day') and  datetime(DocumentDate/1000, 'unixepoch','localtime') <datetime(date(@data@/1000, 'unixepoch','localtime'),'start of day','+1 day', '-1 seconds')  and 2 = @grupowanie@ group by brands.name

union all

select
coalesce(Producers.name, 'brak producenta') as Grouping,
sum(DocumentsPositions.GrossValueInSystemCurrency) as NetValue
from documents
join documentspositions
 on documentspositions.documentid = documents.id
AND DocumentsPositions.DocumentIsLocal = Documents.DocumentIsLocal
and DocumentsPositions.IsItemsSetVirtualPosition = 0
and DocumentsPositions.RelatedItemsSetOrdinal is null
join items on items.id = documentspositions.itemid
left join Producers on items.producerid = Producers.id
where Documents.DocumentIsLocal = 1 AND documents.NumeratorId IN (16,17) AND datetime(DocumentDate/1000, 'unixepoch','localtime') >datetime(date(@data@/1000, 'unixepoch', 'localtime'),'start of day') and  datetime(DocumentDate/1000, 'unixepoch') <datetime(date(@data@/1000, 'unixepoch','localtime'),'start of day','+1 day', '-1 seconds') and 3 = @grupowanie@ group by Producers.name

union all

select
coalesce(ig.name  , 'brak grupy towaru') as Grupa ,
sum(DocumentsPositions.GrossValueInSystemCurrency) as GrossValue
from documents
join documentspositions
on documentspositions.documentid = documents.id
AND DocumentsPositions.DocumentIsLocal = Documents.DocumentIsLocal
and DocumentsPositions.IsItemsSetVirtualPosition = 0
and DocumentsPositions.RelatedItemsSetOrdinal is null
join items on items.id = documentspositions.itemid
join itemsgroupslinks igl on items.id = igl.itemid
join itemsgroups ig on groupid = ig.id
where Documents.DocumentIsLocal = 1 AND documents.NumeratorId IN (16,17) AND (select count(*) from itemsgroups join itemsgroupslinks on itemsgroupslinks.itemid = igl.itemid and itemsgroups.id = itemsgroupslinks.groupid where parentid = ig.id) = 0 and datetime(DocumentDate/1000, 'unixepoch','localtime') >datetime(date(@data@/1000, 'unixepoch', 'localtime'),'start of day') and  datetime(DocumentDate/1000, 'unixepoch','localtime') <datetime(date(@data@/1000, 'unixepoch','localtime'),'start of day','+1 day', '-1 seconds') and @grupowanie@=4 group by ig.name]]>
</sql>
<header>Wykres zakupu wg grupowania</header>
<isSummary>0</isSummary>
<reportTypeVisibility>2</reportTypeVisibility>
</element>

 

Widok standardowego raportu Podsumowanie dnia

Czy ten artykuł był pomocny?