W celu opisania modyfikacji wykorzystany zostanie raport Sprzedaż SKU. Modyfikacja dotyczyć będzie dodania nowej kolumny z kodem EAN w tabeli Towary.
W tym celu należy wyedytować definicję raportu o nazwie 1#SalesSKU#pol.xml znajdującą się w domyślnej lokalizacji C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Reports\.
W pliku należy wyedytować zapytanie SQL dla elementu o id = 3 dodając do niego pole zwracające kod EAN dla danego towaru w poleceniu select wraz z funkcją IFNULL, która w przypadku braku kodu EAN dla towaru zwróci pustą wartość w wierszu tabeli. Następnie należy do zapytania dołączyć tabelę ItemsBarcodes używając polecenia LEFT JOIN oraz odpowiednich aliasów. Dodane linijki zostały oznaczone kolorem żółtym.
<id>3</id> <typeId>1</typeId> <sql> <![CDATA[ Select Items.Name as '[l]Nazwa', IFNULL(bar.Barcode, '') AS EAN, (sum(DocumentsPositions.Quantity/DocumentsPositions.Denominator*DocumentsPositions.Nominator)) as '[d4]Ilość', DocumentsPositions.UnitName as JM, cast(ROUND(sum(DocumentsPositions.NetValueInSystemCurrency), 2) as Varchar) || ' ' || c.Symbol as 'Netto', cast(ROUND(sum(DocumentsPositions.GrossValueInSystemCurrency), 2) as varchar) || ' ' || c.Symbol as 'Brutto', sum(DocumentsPositions.Quantity) as '[d4]Ilość(podst.)', DocumentsPositions.BaseUnitName as 'JM(podst.)' from Documents d join DocumentsPositions on d.Id = DocumentsPositions.DocumentId AND d.DocumentIsLocal = DocumentsPositions.DocumentIsLocal and DocumentsPositions.IsItemsSetVirtualPosition = 0 and DocumentsPositions.RelatedItemsSetOrdinal is null join Items on Items.Id = DocumentsPositions.ItemId left JOIN ItemsBarcodes bar ON bar.ItemId = DocumentsPositions.ItemId join Currencies c ON c.e = 1 AND c.IsSystem = 1 where d.DocumentIsLocal = 1 AND NumeratorId IN (1,2,3,4,5) AND datetime(d.DocumentDate/1000, 'unixepoch','localtime') >datetime(date(@dataOd@/1000, 'unixepoch','localtime'),'start of day') and datetime(d.DocumentDate/1000, 'unixepoch','localtime') <datetime(date(@dataDo@/1000, 'unixepoch','localtime'),'start of day','+1 day', '-1 seconds') group by DocumentsPositions.ItemId,unitname order by items.name ]]> </sql>
Zmodyfikowany w ten sposób raport będzie prezentował się następująco: