Dodanie nowej kolumny w tabeli

W celu opisania modyfikacji wykorzystany zostanie raport Sprzedaż SKU. Modyfikacja dotyczyć będzie dodania nowej kolumny z kodem EAN w tabeli Towary.

 

Standardowy raport Sprzedaż SKU

 

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\.

Wskazówka
Poprawność modyfikowanych zapytań SQL można zweryfikować wykonując je na bazie mobilnej (plik data.db na urządzeniu mobilnym) np. za pomocą narzędzia SQLite Studio.

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:

Raport Sprzedaż SKU z dodatkową kolumną EAN

Czy ten artykuł był pomocny?