Istnieje możliwość modyfikacji standardowego wyglądu oraz działania aplikacji poprzez integracje z zewnętrzną aplikacją.
Możliwości, jakie daje funkcjonalność to:
rozszerzanie górnego paska aplikacji (ActionBara) w głównym oknie listy kontrahentów o nowe elementy, rozszerzanie ActionBara w oknie dokumentu, pozycji dokumentu, raportu, terminarza, zlecenia serwisowego, czynności serwisowych o nowe elementy,
rozszerzanie dużej kalkulacji pozycji na dokumentach (ukrywanie kontrolek, dodawanie nowych,
modyfikacja istniejących np. poprzez zmianę tekstu lub koloru),
rozszerzanie karty kontrahenta (ukrywanie kontrolek, dodawanie nowych oraz modyfikacja istniejących).
Oprócz zmiana interfejsowych możliwe jest także rozszerzanie procesu synchronizacji o nowe elementy, w celu prze synchronizowania dodatkowych tabel/obiektów z systemu ERP.
Więcej informacji i rozszerzalności aplikacji znajduje się TUTAJ.
Ukrywanie i zmiana kolejności elementów w aplikacji
Istnieje możliwość ukrywania oraz zmiany kolejności elementów aplikacji.
Poszczególne elementy można ukrywać dokonując zmian w pliku ListPositions, znajdującym się w katalogu: C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\ViewsConfiguration.
Poszczególne sekcje w pliku odpowiadają za ukrywanie:
Aby ukryć element menu głównego Dzień należy zmienić wpis “VISIBLE” na “INVISIBLE”, np:
<position name="DAY" visibility="INVISIBLE" />
Jeżeli natomiast chodzi o zmianę kolejności elementów w aplikacji, to należy zmienić kolejność wierszy w pliku ListPositions. Po wykonaniu synchronizacji elementy w aplikacji powinny wyświetlić się w nowej kolejności.
Istnieje także możliwość przypisania konkretnego widoku aplikacji dla konkretnego użytkownika. W tym celu należy w katalogu ViewsConfiguration utworzyć nowy folder o nazwie danego użytkownika i wkleić zmodyfikowany plik ListPositions.xml.
Przyklad
Uproszczenie menu głównego do takiego jakie było w pierwszej wersji aplikacji Comarch Mobile Sprzedaż (widoczne elementy: Kontrahenci i Terminarz)
Ukrywanie elementów w menu głównym (z prawej strony: okno menu głównego przed zmianami, z lewej: okno menu głównego po zmianach)Fragment pliku ListPosition po zmianach:<activity name="com.comarch.mobile.vendor.core.activities.MainActivity"> <position name="DAY" visibility="INVISIBLE" /> <position name="CALENDAR" visibility="VISIBLE" /> <position name="CONTRACTORS" visibility="VISIBLE" /> <position name="MESSAGES" visibility="INVISIBLE" /> <position name="SERVICE" visibility="INVISIBLE" /> <position name="DOCUMENTS" visibility="INVISIBLE" /> <position name="ITEMS" visibility="INVISIBLE" /> <position name="CASH" visibility="INVISIBLE" /> <position name="REPORTS" visibility="INVISIBLE" /> <position name="SYNC" visibility="VISIBLE" /> <position name="SYNCSTATE" visibility="VISIBLE" />
Dodawanie niestandardowego filtra do listy
Dodawanie filtra
W celu dodania niestandardowego filtra do listy towarów lub kontrahentów należy przygotować odpowiedni plik xml i umieścić go na serwerze synchronizacji.
Wskazówka
Definicje filtrów znajdują się domyślnie w katalogu: C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\CustomFilters.
Usuwanie filtra
Aby usunąć dodany filtr należy zmienić jego ID na ujemne, następnie zmienić datę modyfikacji (np. poprzez ponowne zapisanie pliku z filtrem) i wykonać synchronizację.
Nazwa usuwanej definicji filtra
Elementy składowe filtra
Każda definicja filtra składa się z klauzuli wstępnej języka xml: <?xml version="1.0" encoding="UTF-8"?>, po której w sekcji customFilter z parametrem objectType o odpowiedniej wartości: contractorsList (filtr pojawi się na liście kontrahentów) lub itemsList (filtr pojawi się na liście towarów) następują wymienione poniżej sekcje:
joinClause (np. JOIN Visits ON Contractors.Id = Visits.ContractorId)
whereClause (np. Visits.PlannedStartDate < @@CUSTOM_FILTER_VALUE@@)
groupByClause (np. Visits.ContractorId)
havingClause
inputType (możliwe wartości: text, date)
Sekcje te (oprócz inputType) są częścią zapytania wykonywanego przez aplikację mobilną w celu wyświetlenia elementów listy towarów bądź listy kontrahentów (np. SELECT * FROM Contractors [joinClause] [whereClause] [groupByClause] [havingClause]).
Wartość parametru inputType podawana przez użytkownika aplikacji po wyborze filtra pobierana jest do zapytania SQL za pomocą parametru @@CUSTOM_FILTER_VALUE@@.
Uwaga
Podczas synchronizacji definicji filtrów na urządzenie brana jest pod uwagę data modyfikacji pliku. W celu wymuszenia synchronizacji filtra należy wykonać dowolną modyfikację i zapisać ponownie plik z definicją.
Przykład
Poniższa definicja filtra pozwala na wyświetlanie na liście kontrahentów tylko tych, na których zostały wystawione dokumenty z datą realizacji późniejszą niż wskazana w parametrze filtra.
Tak zdefiniowany filtr zapisany w katalogu CustomFilters pod nazwą 2#Data realizacjipo.xml, po synchronizacji w aplikacji mobilnej prezentuje się w następujący sposób:
Widok utworzonego filtra w aplikacji
Kontrahenci
Ustawienie domyślnej waluty na karcie kontrahenta
W aplikacji Comarch Mobile Zakupy istnieje możliwość ustawienia domyślnej waluty, która będzie wyświetlana na karcie kontrahenta. Walutę ustawia się w zakładce [Handlowe], w sekcji [Domyślne warunki handlowe].
Informacja o domyślnej walucie na karcie kontrahenta w systemie Comarch ERP Altum
Operator, który ma uprawnienia do edycji karty kontrahenta może również zmieniać rodzaj waluty na tej karcie. Uprawnienie to nadaje się w systemie Comarch ERP Altum na grupie operatorów, w zakładce [Obiekty- Kontrahent: Modyfikacja].
Jako Właściciela załącznika mają ustawioną opcję [Wszyscy] lub [Firmę], do której przypięte jest centrum mobilne,
Mają ustawioną dostępność w Mobile.
Ustawienie dostępności załącznika
Uwaga
Aby zdjęcia mogły się poprawnie wyświetlać na urządzeniu i nie powodowały przepełnienia pamięci, w czasie synchronizacji są automatycznie zmniejszane do rozmiarów x na 1024 pikseli. Niektóre urządzenia umożliwiają jednak bezproblemową obsługę większych zdjęć. Aby zmienić wielkość synchronizowanych zdjęć należy w katalogu [Methods] w folderze serwera Comarch Mobile Zakupy odnaleźć plik [articlesphotos] i wyedytować go w notatniku, podając długość dłuższej krawędzi zdjęcia.
W aplikacji Comarch Mobile została jest możliwość dodawania załączników z poziomu aplikacji. Opcja ta dotyczy następujących obiektów:
Karty kontrahenta,
Karty towaru,
Nagłówka następujących dokumentów: ZZ, OZ
Pozycji następujących dokumentów: ZZ, OZ
W celu usprawnienia synchronizacji zostały dodane ustawienia umożliwiające ręczne sterowanie takimi parametrami synchronizacji załączników jak automatyczna zmiana rozmiaru zdjęć czy ich kompresja.
W pliku articlesphotos.configuration znajdującym się w folderze (…)\Comarch Mobile\Serwer synchronizacji\Methods\articlesphotos dostępne są następujące parametry:
Size – maksymalny rozmiar boku zdjęcia (w pikselach) w przypadku włączonej opcji automatycznej zmiany rozmiaru załącznika
DoResize – czy ma być wykonana automatyczna zmiana wielkości załączników. Wartość domyślna – True. Wyłączenie opcji w znacznym stopniu przyśpiesza tworzenie pliku wymiany. Jeżeli jednak na bazie systemu ERP znajduje się duża liczba załączników w wysokiej rozdzielczości, zmiana parametru może skutkować znacznym zwiększeniem rozmiaru paczki do pobrania w synchronizacji.
DoCompression – czy ma być wykonana automatyczna kompresja załączników. Wartość domyślna – True. Wyłączenie opcji w znacznym stopniu przyśpiesza tworzenie pliku wymiany. Jeżeli jednak na bazie systemu ERP znajduje się duża liczba nieskompresowanych załączników, zmiana parametru może skutkować znacznym zwiększeniem rozmiaru paczki do pobrania w synchronizacji.
MultiThreading – wielowątkowe tworzenie pliku wymiany z załącznikami. Wartość domyślna – False. Włączenie opcji w znacznym stopniu przyśpiesza tworzenie pliku wymiany. Użycie trybu może skutkować wzrostem obciążenia CPU, szczególnie w momencie wykonywania pierwszej synchronizacji załączników jednocześnie przez kilku operatorów.
Uwaga
Przed zmianą parametrów synchronizacji na środowisku produkcyjnym zaleca się zbadanie ich wpływu na środowisku testowym, w celu dobrania optymalnych wartości dla danej bazy danych
Ukrywanie kwoty przyznanego i wykorzystanego limitu kredytowego kontrahenta
W aplikacji Comarch Mobile Zakupy istnieje możliwość ukrywania niektórych informacji dotyczących limitu kredytowego, takich jak:
Wartość bieżącego limitu kredytowego,
Wykorzystana kwota limitu kredytowego,
Dozwolona ilość po przekroczeniu terminu,
Kwota następnego limitu kredytowego,
Dozwolona wielkość po przekroczeniu terminu dla następnego limitu kredytowego.
Umożliwiono również pobieranie limitów kredytowych w walutach obcych. Jeżeli limit kredytowy dla danego kontrahenta został zdefiniowany w systemie w innej walucie i na karcie Kontrahenta waluta obca ustawiona jest jako domyślna wówczas limit kredytowy na karcie Kontrahenta w aplikacji wyświetla się w walucie obcej.
Ustawienie limitu kredytowego na kontrahencieUstawienie domyślnej waluty na karcie kontrahenta
W plikach konfiguracyjnych znajdujących się w katalogu Comarch Mobile\Serwer synchronizacji\Methods znajduje się parametr [IsContractorsCreditLimitsValueVisible], odpowiedzialny za ukrywanie/odkrywanie informacji o przyznanej oraz wykorzystanej kwocie limitu. Dzięki tej funkcjonalności przedstawiciel handlowy będzie miał dostęp tylko do kwoty limitu pozostającej do wykorzystania przez kontrahenta oraz kwot dozwolonych po terminie i przeterminowanych.
Domyślna wartość tego parametru jest wartość „1”. Więcej informacji nt. tego parametru znajduje się TUTAJ.
W aplikacji Comarch Mobile Zakupy jest możliwość obsługi programów lojalnościowych. Umożliwiono pobieranie z systemu ERP punktów lojalnościowych zgromadzonych na kontach określonych kontrahentów za zakup poszczególnych towarów. Zebrane punkty mogą zostać wykorzystane w aplikacji mobilnej do nadania rabatów. Aby umożliwić rozliczanie punktów lojalnościowych z poziomu aplikacji Comarch Mobile Zakupy, należy:
stworzyć definicję programu lojalnościowego zgodnego ze swoimi założeniami oraz wymaganiami opisanymi w dalszej części dokumentu,
obsłużyć synchronizację punktów lojalnościowych kontrahentów,
włączyć obsługę programu lojalnościowego w pliku configuration.*.statement, poprzez zmianę wartości klucza [IsLoyaltyEnabled] na 1.
Struktura definicji programu lojalnościowego
Przygotowane definicje programów lojalnościowych należy umieścić w pliku z rozszerzeniem XML w katalogu [LoyaltyProgramsDefinitions] katalogu głównego serwera synchronizacji Mobile. Nazwa pliku musi składać się z
<IdProgramuLojalnosciowego>#<NazwaProgramuLojalnosciowego>.xml
Przyklad
12#NaszaLojalnosc.xml
Synchronizacja definicji do urządzeń mobilnych odbywa się po każdej modyfikacji w plikach definicji. Aby usunąć już zsynchronizowaną definicję z urządzeń mobilnych należy zmienić id programu na wartość ujemną. Taka definicja zostanie usunięta przy następnej synchronizacji.
SettleDocumentsValue – flaga bitowa określająca, na jakich dokumentach bierze udział program lojalnościowy. Poszczególne typy dokumentów będą miały przyporządkowane wartości:
1 – OS
2 – ZS
4 – FS
8 – PA
16 – WZ
32 – WM
Wskazówka
Wartość pola 5 oznaczać będzie, że rozliczenie punktów dostępne będzie na dokumentach OS i FS (1+4).
CheckContractorStatusQuery – Zapytanie sprawdzające czy dany kontrahent bierze udział w programie lojalnościowym oraz zwraca liczbę punktów dostępnych dla kontrahenta. Zwrócenie wiersza oznacza, że kontrahent bierze udział w programie lojalnościowym.
Parametry wejściowe:
@DocumentType – typ dokumentu. Wartość zgodna z wartościami z punktu drugiego.
@ContractorId – identyfikator kontrahenta
@LoyaltyProgramId – identyfikator programu lojalnościowego
@EditedDocumentId – identyfikator dokumentu, który jest teraz aktualnie reedytowany (został tylko zapisany wcześniej, został cofnięty do bufora)
Kolumny wyjściowe:
Liczba punktów dostępnych do zużycia przez kontrahenta
CheckArticleStatusQuery – Zapytanie sprawdzające czy dany towar jest dostępny w danym programie lojalnościowym oraz zwraca liczbę punktów do rozliczenia na pozycji.
Parametry wejściowe
@ArticleId – identyfikator towaru na który wystawiana jest pozycja
@StartGrossPrice – początkowa cena brutto
@StartNetPrice – początkowa cena netto
@Quantity – ilość w jednostce bazowej
@AvailablePoints – liczba dostępnych punktów kontrahenta
@DocumentType – typ dokumentu. Wartość zgodna z wartościami z punktu drugiego.
@ContractorId – identyfikator kontrahenta
@LoyaltyProgramId – identyfikator programu lojalnościowego
@EditedDocumentId – identyfikator dokumentu, który jest teraz aktualnie reedytowany (został tylko zapisany wcześniej, został cofnięty do bufora)
Kolumny wyjściowe
InitialMessageText – komunikat powitalny. Może zawierać proste tagi html’owe w celu sformatowania tekstu. (np. Dodanie nowej linii <br />, Zmiana koloru fragmentu tekstu <font color=”#FF0000″></font>, itd.)
AfterRemovePositionLoyaltyProgramQuery – Zapytanie wykonywane po usunięciu rozliczenia programu lojalnościowego na pozycji. Służy do wycofania zmian wykonanych w AfterAddPositionLoyaltyProgramQuery.
Parametry wejściowe
@LoyaltyProgramId – identyfikator programu lojalnościowego
@ProgramName – nazwa programu lojalnościowego
@AttributeObjectType – typ atrybutów dla pozycji
@ObjectId – identyfikator dokumentu
@ObjectIsLocal – identyfikator dokumentu
@ObjectSubId – identyfikator pozycji
@ObjectSubIsLocal – identyfikator pozycji
Obsługiwane jest wiele zapytań w ramach tej samej definicji. Separator skryptów „;GO;”
AfterAddPositionLoyaltyProgramQuery – Zapytanie wykonywane po zapisie dokumentu – dla każdej pozycji, która zostaje rozliczona za pomocą programu lojalnościowego.
Parametry wejściowe
@LoyaltyProgramId
@ProgramName
@SettledPoints
@AttributeObjectType
@ObjectId
@ObjectIsLocal
@ObjectSubId
@ObjectSubIsLocal
@StartGrossPrice – cena początkowa brutto
@StartNetPrice – cena początkowa netto
@StartGrossValue – wartość brutto
@StartNetValue – wartość netto
Obsługiwane jest wiele zapytań w ramach tej samej definicji. Separator skryptów „;GO;”
AfterRemoveDocumentLoyaltyProgramQuery – Zapytanie wykonywane po usunięciu rozliczenia programu lojalnościowego z dokumentu. Służy do wycofywania zmian wykonanych w
Parametry wejściowe
@LoyaltyProgramId
@ProgramName
@SettledPoints
@AttributeObjectType
@ObjectId
@ObjectIsLocal
@ObjectSubId
@ObjectSubIsLocal
Obsługiwane jest wiele zapytań w ramach tej samej definicji. Separator skryptów „;GO;”
AfterAddDocumentLoyaltyProgramQuery – Zapytanie wykonywane po zapisie dokumentu z rozliczeniem programu lojalnościowego.
Parametry wejściowe
LoyaltyProgramId
ProgramName
SettledPoints
AttributeObjectType
ObjectId
ObjectIsLocal
ObjectSubId
ObjectSubIsLocal
Obsługiwane jest wiele zapytań w ramach tej samej definicji. Separator skryptów „;GO;”
Synchronizacja punktów lojalnościowych kontrahentów
Aby umożliwić synchronizację punktów lojalnościowych kontrahentów należy zaimplementować metody synchronizacji obiektu [contractorsloyaltypoints]:
*.statement – zapytanie pobierające aktualne stany punktów kontrahentów. Zwracane kolumny:
OperationType – typ operacji (dodawanie, usuwanie, edycja),
OperationTS – timestamp synchronizacji,
LoyaltyProgramId – identyfikator programu lojalnościowego,
ContractorId – identyfikator kontrahenta,
Points – liczba dostępnych punktów do rozliczenia przez kontrahenta,
LockedPoints – liczba punktów dostępnych lecz zablokowanych do rozliczenia. Obecnie parametr ten nie jest jeszcze obsługiwany, dlatego zawsze kolumna ta powinna zwracać wartość 0.
contractorsloyaltypoints*.xml – definicja metody synchronizacji, triggery aktualizujące timestampy wierszy
Rozliczanie punktów w systemie Comarch ERP Altum
Rozliczanie punktów należy obsłużyć po stronie systemu Comarch ERP Altum za pomocą triggera wdrożeniowego aktywowanego np. potwierdzeniem dokumentu. Dokładny sposób rozliczenia jest zależny od mechanizmów zaimplementowanych w programie lojalnościowym po stronie systemu Comarch ERP Altum.
Program lojalnościowy może zostać oparty poprzez atrybuty zdefiniowane w systemie Comarch ERP Altum. W takiej obsłudze będą brani pod uwagę Kontrahenci, którzy posiadają zdefiniowany atrybut ze wskazaniem programu lojalnościowego (np. Nasza Lojalność), a przedstawiciel będzie mógł nadać rabat tylko na pozycjach towarów oznaczonych też odpowiednim atrybutem.
Dodanie atrybuty na karcie towaru i karcie kontrahenta
Obecne implementacje do przesyłania informacji o liczbie rozliczonych punktów, korzystają z atrybutów (klasa atrybutu tylko do odczytu) ustawianych na pozycjach dokumentów (za pomocą AfterAddPositionLoyaltyProgramQuery) z wartością rozliczonych na pozycji punktów. Podczas synchronizacji do systemu ERP dokumentów, w momencie ich potwierdzenia, w triggerze sprawdzone powinno zostać istnienie atrybutu rozliczającego punkty na pozycjach. Wartość rozliczonych punktów powinna zostać odjęta z puli punktowej kontrahenta. Dodatkowo rozliczenie takie powinno spowodować podbicie odpowiednich timestampów w [contractorsloyaltypoints] w celu wymuszenia synchronizacji aktualnego stanu punktów kontrahenta.
Blokada realizacji działań handlowych dla nowo utworzonego kontrahenta
Aplikacja Comarch Mobile umożliwia blokowanie realizacji działań handlowych dla nowo utworzonego kontrahenta do czasu jego synchronizacji do systemu ERP. Kontrahent dodany w aplikacji Comarch Mobile jest oznaczony ikonką .
Zablokowana zostanie możliwość wystawiania dokumentów handlowych, dokumentów ZSR oraz tworzenia działań CRM we wszystkich miejscach w aplikacji. Aby mieć możliwość wystawiania poszczególnych działań handlowych dla nowo utworzonego kontrahenta konieczne jest wykonanie synchronizacji z systemem ERP.
Uwaga
Za konfigurację tej funkcjonalności odpowiada parametr CanBlockActionsForNewContractorBeforeSynchronization. Wartość parametru należy zmienić w pliku contractors.xl.statement w lokalizacji C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Methods\configuration. Więcej informacji na temat konfiguracji znajduje się TUTAJ.
Po włączeniu parametru CanBlockActionsForNewContractorBeforeSynchronization i utworzeniu nowego kontrahenta w aplikacji Comarch Mobile:
po kliknięciu w sekcję Działania, Serwis oraz Handlowe na karcie kontrahenta zostanie wyświetlony komunikat: "Brak możliwości wykonywania działań handlowych. Dokonaj synchronizacji nowego kontrahenta."
Widok okna informującego o konieczności synchronizacji
po kliknięciu na liście kontrahentów w menu kontekstowym nowego kontrahenta nie jest widoczna opcja "Dodaj dokument"
podczas wystawiania dokumentów w kaflu Dokumenty, Serwis i Kasa lub działania CRM w kaflu Terminarz i Dzień w momencie wyboru kontrahenta, który nie został jeszcze zsynchronizowany z systemem ERP, pojawi się komunikat: "Należy dokonać synchronizacji nowego kontrahenta."
Widok okna informującego o konieczności synchronizacji
w przypadku kafla Dokumenty, Dzień, Serwis i Terminarz ukryta jest ikonka odpowiedzialna za dodanie nowego kontrahenta
Dokumenty
Pobieranie dokumentów historycznych
Aby określony dokument mógł być widoczny w innej firmie, w innym centrum, na definicji dokumentu na zakładce [Widoczność] należy dołączyć odpowiednie centra ze struktury firmy.
Przy włączonej obsłudze transakcji historycznych, dokumenty wystawione w innych firmach będą pobierane do Comarch Mobile, o ile centrum mobile zostało dołączone na definicji dokumentu.
Aby umożliwić w aplikacji mobilnej pobieranie dokumentów historycznych FS, PAR, WZ, RLS wystawionych w innych centrach niż centrum mobilne, należy na definicji dokumentu na zakładce [Widoczność] wskazać centrum mobilne. Należy wykonać to w kontekście tego centrum, z którego dokumenty chcemy widzieć w aplikacji. Informacje dot. tego, jak włączyć pobieranie dokumentów historycznych w aplikacji znajdują się TUTAJ.
Ustawianie widoczności w centrum mobilnym, dokumentów wystawionych w centrum IT Company PL
Także dokumenty wystawiane bezpośrednio w Comarch Mobile i synchronizowane do systemu mogą być widoczne w innych firmach, jeżeli na centrum mobilnym odpowiednio ustawiono udostępnianie innym firmom swoich dokumentów.
Podczas przypisywania magazynu odległego musi on być pusty, aby przy synchronizacji stany magazynu się zgadzały w aplikacji i ERP.
Uwaga
Na definicji dokumentu ZZ magazynem domyślnym powinien być magazyn lokalny (firmy). W przeciwnym razie nie będzie możliwości wystawienia dokumentu ZZ z poziomu aplikacji mobilnej.
Wystawianie dokumentów ZZ, OZ na kilka magazynów
Aby umożliwić Przedstawicielowi Handlowemu wystawianie dokumentów ZZ (Zamówienie Zakupu) oraz OZ (Oferta Zakupu) na kilka magazynów należy w Comarch ERP Altum zaznaczyć check [Preferuj magazyn domyślny]. Zaznaczenie checku spowoduje możliwość zmiany magazynu podczas wystawiania dokumentu zarówno na nagłówku jak i na samym elemencie.
Konfiguracja systemu Comarch ERP Altum w celu możliwości edycji magazynu podczas wystawiania dokumentów
Odznaczenie wszystkich checków będzie skutkowało tym, że w aplikacji mobilnej nie będzie podpowiadał się na nagłówku dokumentu magazyn domyślny zdefiniowany w systemie Comarch ERP Altum. Po zaznaczenie checku [Operacje na jednym magazynie] będzie skutkować tym, że zmiana magazynu będzie dostępna do momentu aż do koszyka zostanie dodany towar. Dokumenty ZZ, OZ można wystawiać wyłącznie na magazyn lokalny, aplikacja nie kontroluje stanów magazynowych.
Więcej informacji o funkcjonalności można znaleźć w dokumencie TUTAJ.
Zmiana kontrahenta podczas wystawiania dokumentu
Dostępna jest funkcja zmiany kontrahenta podczas wystawiania dokumentu.
Za tę funkcjonalność odpowiada parametr [CanChangeContractorOnDocument], znajdujący się w pliku konfiguracyjnym w katalogu: C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Methods.
W zależności od wartości tego parametru, przedstawiciel handlowy będzie miał możliwość zmiany kontrahenta w trakcie wystawiania dokumentu, korzystając z ikony ołówka przy kontrahencie na nagłówku dokumentu.
Po kliknięciu w ikonę ołówka, wyświetlona zostanie lista kontrahentów.
Wystawianie dokumentów zamówienia zakupu i oferty zakupu w innej walucie
W aplikacji Comarch Mobile Zakupy umożliwiono wystawianie zamówień i ofert sprzedaży w walucie obcej. Podczas wystawiania dokumentów OZ i ZZ na nagłówku dokumentu ustawiana jest waluta domyślna z karty kontrahenta. Aby zmienić walutę domyślną na karcie kontrahenta należy na zakładce [Główne] przejść do katalogu kontrahenci, zakładka [Handlowe] - [Domyślne warunki handlowe].
Dodatkowo operator ma możliwość zmiany waluty oraz jej kursy w zależności od nadanych mu uprawnień. W zależności od wartości parametru [CanChangeCurrency] operator ma możliwość lub blokadę zmiany:
Samej waluty
Samego kursu waluty
Zarówno waluty i kursu waluty
Parametr [CanChangeCurrency] może przyjmować trzy wartości:
1 – zmiana waluty na nagłówku dokumentu możliwa, zmiana kursu waluty niemożliwa – wartość domyślna,
2 – zmiana waluty na nagłówku dokumentu możliwa, zmiana kursu waluty możliwa,
0 – zmiana waluty na nagłówku dokumentu niemożliwa, zmiana kursu waluty na nagłówku dokumentu niemożliwa, wystawienie dokumentu możliwe tylko w walucie zdefiniowanej na karcie kontrahenta.
Wartość parametru należy edytować w pliku configuration.altumx.statement znajdujący się w folderze C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Methods.
Uwaga
Edycję waluty lub kursu waluty można wykonać jedynie wtedy, gdy w koszyku nie ma jeszcze dodanych towarów.
Obsługa eksportowych stawek VAT
W aplikacji Comarch Mobile umożliwiono dodatkowo oprócz transakcji krajowych z krajowymi stawkami VAT również obsługę eksportowych stawek VAT podczas wystawiania dokumentów ZZ i OZ. Dane dotyczące eksportowych stawek VAT pobierane są z systemu Comarch ERP Altum.
Konfiguracja stawek VAT w Altum
Dużym udogodnieniem jest także to, że typ transakcji na nagłówku dokumentu ustawiany jest zgodnie z typem kontrahenta, dla którego transakcja jest realizowana. Dla kontrahenta Krajowego domyślnie ustawi się zatem transakcja krajowa, dla kontrahenta Unijnego transakcja Wewnątrzwspólnotowa, a dla kontrahenta Pozaunijnego transakcja Inna zagraniczna. Typ Kontrahenta ustawiany w Comarch ERP Altum na karcie kontrahenta w zakładce [Ogólne].
Ustawienie typu kontrahenta
Obsługa odwrotnego obciążenia
W aplikacji Comarch Mobile Zakupy wprowadzona została obsługa odwrotnego obciążenia, czyli procedury odwrotnego naliczania VAT przez nabywcę a nie odbiorcę.
Do poprawnego działania odwrotnego obciążenia VAT w aplikacji Comarch Mobile Zakupy wymagane jest ustawienie w Comarch ERP Altum następujących elementów:
Konfiguracja odwrotnego obciążenia w Comarch ERP Altum
Stawka VAT wskazana w polu [Stawka VAT dla odwrotnego obciążenia] – menu [Konfiguracja], sekcja [Ogólne/ Stawki VAT]
Konfiguracja stawki VAT dla odwrotnego obciążenia
Wartość słownika [Klasyfikacja odwrotnego obciążenia] – menu [Konfiguracja], sekcja: [Ogólne/Słowniki uniwersalne/Ogólne]
Konfiguracja wartości klasyfikacji odwrotnego obciążenia
Parametr [Odwrotne obciążenie] – karta kontrahenta, zakładka [Ogólne]
Parametr Odwrotne obciążenie – do zaznaczenia na karcie kontrahenta
Przypisanie wartości klasyfikacji odwrotnego obciążenia – karta artykułu, zakładka [Ogólne]
Karta artykułu – parametr i wartość klasyfikacji odwrotnego obciążenia
Obsługa odwrotnego obciążenia w aplikacji jest opisana TUTAJ.
Obsługa edycji sposobu dostawy
W aplikacji Comarch Mobile Zakupy jest możliwość przypisania sposoby dostawy dla kontrahenta.
W pierwszej kolejności należy dodać rodzaj dostawy w sposobie dostawy, na liście słowników, zgodnie z rysunkiem poniżej.
Dodanie sposobu dostawy na liście słowników
Następnie należy wejść w szczegóły grupy kontrahentów, jeżeli chcemy przypisać jednakowy sposób dostawy dla wszystkich kontrahentów z danej grupy lub wejść w szczegóły kontrahenta, gdy chcemy przypisać sposób dostawy dla konkretnego kontrahenta. Następnie w zakładce [Handlowe] należy wybrać odpowiednią dostawę.
Wybór dostawy
Edycja płatnika na nagłówku dokumentu
Możliwość zmiany płatnika na nagłówku dokumentu została wprowadzona dla dokumentów:
Zamówienie Zakupu (ZZ)
Oferta Zakupu (OZ)
Standardowo w aplikacji wyświetlane są informacje o płatniku ustawione dokumencie w zakładce [Płatności] w systemie Comarch ERP Altum.
Zmiana Płatnika na nagłówku dokumentu Comarch Mobile raz wyświetlanie informacji o płatniku na dokumencie zsynchronizowanym do systemu Comarch ERP Altum
Jeżeli w parametrze [ChangingContractorOnDocumentPermission] została dodana wartość 2, wówczas podczas wystawiania dokumentu, na nagłówku w polu [Kontrahent] pojawia się ikona ołówka oznaczająca możliwość edycji wartości dla Kontrahenta głównego. Więcej informacji nt. tego parametru znajduje się TUTAJ.
Edycja kontrahenta docelowego i głównego na nagłówku dokumentu
Możliwość zmiany kontrahenta docelowego i głównego na nagłówku dokumentu została wprowadzona dla dokumentów:
Zamówienie Zakupu (ZZ)
Oferta Zakupu (OZ)
Za możliwość zmiany kontrahenta głównego i docelowego odpowiada parametr [ChangingContractorOnDocumentPermission] (domyślna lokalizacja: C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Methods\configuration). Więcej informacji nt. tego parametru znajduje się TUTAJ.ekcji [Docelowy] wyświetlany jest Kontrahent Główny[/alert]
Agregacja VAT na definicji dokumentów oraz stan realizacji zamówień
Aplikacja Comarch Mobile Zakupy obsługuje agregacje VAT od sumy wartości, dlatego w typie dokumentów, w strukturze praw na centrum mobilnym należy zaznaczyć w sposobie naliczania VAT (zakładka [Ogólne]) [Agregacje VAT od sumy wartości].Sposób naliczania VAT
Pobieranie informacji o stanie realizacji zamówień z Comarch ERP Altum
Po odpowiedniej konfiguracji istnieje możliwość pobierania informacji o stanie realizacji zamówień z systemu Comarch ERP Altum do Comarch Mobile Zakupy. Przesyłane są informacje: o stanie zamówienia z Comarch ERP Altum, procencie realizacji dokumentu i zmianach jakie zostały naniesione na dokument zamówienia. Konfiguracji należy dokonać na odpowiednim centrum mobilnym: Struktura firmy/Struktura praw/odpowiednie centrum mobilne/ Zakładka [Dokumenty]/ZZ/Zakładka [Ogólne]/Sekcja [Parametry].
W wybranej sekcji należy zaznaczyć opcję [Synchronizuj] informacje o stanie realizacji zamówień.
Parametr synchronizacji informacji o stanie realizacji zamówień
Dodatkowo w aplikacji Comarch Mobile Zakupy powinna zostać włączona opcja pobierania dokumentów z systemu.
Możliwość zatwierdzania dokumentu bez podpisu
W aplikacji istnieje możliwość pominięcia podpisu podczas wystawienia dokumentu. Funkcjonalność ta wymaga zmodyfikowanie pliku documentsnumerators.altum, (Serwer synchronizacji/Methods/documentsnumerators) . Należy dodać warunek dotyczący konkretnego dokumentu na którym chcemy pominąć krok "Podpis”. Poniżej przedstawiono przykład jak skonfigurować funkcjonalność pominięcia kroku z podpisem na dokumencie Zamówienie (ZZ). Przy wystawianiu pozostałych dokumentów podpis będzie wymagany.
WHEN NamespaceEntry = 'Comarch.B2.Sales.Documents.SalesOrderManager' THEN 0 /*ZZ*/ ELSE 1 END AS IsSignatureRequired
Jako Właściciela załącznika mają ustawioną opcję [Wszyscy] lub [Firmę], do której przypięte jest centrum mobilne,
Mają ustawioną dostępność w Mobile.
Ustawienie dostępności załącznika
Uwaga
Aby zdjęcia mogły się poprawnie wyświetlać na urządzeniu i nie powodowały przepełnienia pamięci, w czasie synchronizacji są automatycznie zmniejszane do rozmiarów x na 1024 pikseli. Niektóre urządzenia umożliwiają jednak bezproblemową obsługę większych zdjęć. Aby zmienić wielkość synchronizowanych zdjęć należy w katalogu [Methods] w folderze serwera Comarch Mobile Zakupy odnaleźć plik [articlesphotos] i wyedytować go w notatniku, podając długość dłuższej krawędzi zdjęcia.
W aplikacji Comarch Mobile została jest możliwość dodawania załączników z poziomu aplikacji. Opcja ta dotyczy następujących obiektów:
Karty kontrahenta,
Karty towaru,
Nagłówka następujących dokumentów: ZZ, OZ
Pozycji następujących dokumentów: ZZ, OZ
W celu usprawnienia synchronizacji zostały dodane ustawienia umożliwiające ręczne sterowanie takimi parametrami synchronizacji załączników jak automatyczna zmiana rozmiaru zdjęć czy ich kompresja.
W pliku articlesphotos.configuration znajdującym się w folderze (…)\Comarch Mobile\Serwer synchronizacji\Methods\articlesphotos dostępne są następujące parametry:
Size – maksymalny rozmiar boku zdjęcia (w pikselach) w przypadku włączonej opcji automatycznej zmiany rozmiaru załącznika
DoResize – czy ma być wykonana automatyczna zmiana wielkości załączników. Wartość domyślna – True. Wyłączenie opcji w znacznym stopniu przyśpiesza tworzenie pliku wymiany. Jeżeli jednak na bazie systemu ERP znajduje się duża liczba załączników w wysokiej rozdzielczości, zmiana parametru może skutkować znacznym zwiększeniem rozmiaru paczki do pobrania w synchronizacji.
DoCompression – czy ma być wykonana automatyczna kompresja załączników. Wartość domyślna – True. Wyłączenie opcji w znacznym stopniu przyśpiesza tworzenie pliku wymiany. Jeżeli jednak na bazie systemu ERP znajduje się duża liczba nieskompresowanych załączników, zmiana parametru może skutkować znacznym zwiększeniem rozmiaru paczki do pobrania w synchronizacji.
MultiThreading – wielowątkowe tworzenie pliku wymiany z załącznikami. Wartość domyślna – False. Włączenie opcji w znacznym stopniu przyśpiesza tworzenie pliku wymiany. Użycie trybu może skutkować wzrostem obciążenia CPU, szczególnie w momencie wykonywania pierwszej synchronizacji załączników jednocześnie przez kilku operatorów.
Uwaga
Przed zmianą parametrów synchronizacji na środowisku produkcyjnym zaleca się zbadanie ich wpływu na środowisku testowym, w celu dobrania optymalnych wartości dla danej bazy danych
Wyświetlanie ceny i ilości zarówno w jednostce podstawowej jak i domyślnej jednostce pomocniczej podczas wystawiania dokumentów
W aplikacji istnieje możliwość podejrzenia ilości i ceny w jednostce pomocniczej podczas wystawiania dokumentów już z poziomu listy towarów, bez konieczności podnoszenia kalkulacji dla tej pozycji. Funkcjonalność ta jest dostępna podczas wystawiania dokumentów:
Oferta zakupu (OZ)
Zamówienie zakupu (ZZ)
Za tę funkcjonalność odpowiada parametr [IsBaseUnitVisible], który może przyjmować dwie wartości:
1 – wartość domyślna; oznacza widoczność dodatkowej ceny (w jednostce podstawowej) tylko po dodaniu towarów do Koszyka – jeżeli użytkownik zmieni na pozycji z jednostki domyślnej np. szt. na karton.
0 – ilość wyświetlana jest tylko w jednostce domyślnej – na liście pozycji wyświetlana jest ilość na magazynie oraz ilość dodaną na dokument tylko w tej jednej – domyślnej lub wybranej podczas dodawania do Koszyka jednostce.
Więcej informacji nt. tego parametru znajduje się TUTAJ.
Jako Właściciela załącznika mają ustawioną opcję [Wszyscy] lub [Firmę], do której przypięte jest centrum mobilne,
Mają ustawioną dostępność w Mobile.
Ustawienie dostępności załącznika
Uwaga
Aby zdjęcia mogły się poprawnie wyświetlać na urządzeniu i nie powodowały przepełnienia pamięci, w czasie synchronizacji są automatycznie zmniejszane do rozmiarów x na 1024 pikseli. Niektóre urządzenia umożliwiają jednak bezproblemową obsługę większych zdjęć. Aby zmienić wielkość synchronizowanych zdjęć należy w katalogu [Methods] w folderze serwera Comarch Mobile Zakupy odnaleźć plik [articlesphotos] i wyedytować go w notatniku, podając długość dłuższej krawędzi zdjęcia.
W aplikacji Comarch Mobile została jest możliwość dodawania załączników z poziomu aplikacji. Opcja ta dotyczy następujących obiektów:
Karty kontrahenta,
Karty towaru,
Nagłówka następujących dokumentów: ZZ, OZ
Pozycji następujących dokumentów: ZZ, OZ
W celu usprawnienia synchronizacji zostały dodane ustawienia umożliwiające ręczne sterowanie takimi parametrami synchronizacji załączników jak automatyczna zmiana rozmiaru zdjęć czy ich kompresja.
W pliku articlesphotos.configuration znajdującym się w folderze (…)\Comarch Mobile\Serwer synchronizacji\Methods\articlesphotos dostępne są następujące parametry:
Size – maksymalny rozmiar boku zdjęcia (w pikselach) w przypadku włączonej opcji automatycznej zmiany rozmiaru załącznika
DoResize – czy ma być wykonana automatyczna zmiana wielkości załączników. Wartość domyślna – True. Wyłączenie opcji w znacznym stopniu przyśpiesza tworzenie pliku wymiany. Jeżeli jednak na bazie systemu ERP znajduje się duża liczba załączników w wysokiej rozdzielczości, zmiana parametru może skutkować znacznym zwiększeniem rozmiaru paczki do pobrania w synchronizacji.
DoCompression – czy ma być wykonana automatyczna kompresja załączników. Wartość domyślna – True. Wyłączenie opcji w znacznym stopniu przyśpiesza tworzenie pliku wymiany. Jeżeli jednak na bazie systemu ERP znajduje się duża liczba nieskompresowanych załączników, zmiana parametru może skutkować znacznym zwiększeniem rozmiaru paczki do pobrania w synchronizacji.
MultiThreading – wielowątkowe tworzenie pliku wymiany z załącznikami. Wartość domyślna – False. Włączenie opcji w znacznym stopniu przyśpiesza tworzenie pliku wymiany. Użycie trybu może skutkować wzrostem obciążenia CPU, szczególnie w momencie wykonywania pierwszej synchronizacji załączników jednocześnie przez kilku operatorów.
Uwaga
Przed zmianą parametrów synchronizacji na środowisku produkcyjnym zaleca się zbadanie ich wpływu na środowisku testowym, w celu dobrania optymalnych wartości dla danej bazy danych
Precyzja cen w aplikacji mobilnej
W aplikacji Comarch Mobile Zakupy istnieje możliwość wyboru precyzji ceny na typie ceny oraz na definicji dokumentu, tak aby można było wykorzystywać ceny towarów określane z czterema, trzema lub jednym miejscu po przecinku oraz sprzedawać je w dużych ilościach, np. (100szt. x 1,3333zł = 133,33zł, a 100szt. x 1,33zł= 133,00zł).
Aby w aplikacji Comarch Mobile Zakupy we współpracy z Comarch ERP Altum istniała możliwość prezentacji towaru na karcie towaru z precyzją do jednej, dwóch, trzech lub do czterech miejsc po przecinku. W systemie Comarch ERP Altum należy zaznaczyć precyzję na typie ceny [Sprzedaż/Cenniki/Typy cen].Przypisanie precyzji cen wyświetlanych w aplikacji Comarch Mobile Zakupy na kartotece towaru
Zaznaczenie liczby w polu [Pozycja] spowoduje z cen z dokładnością jednej, dwóch, trzech lub czterech miejsc po przecinku (zgodnie z tym jaka cyfra została wpisana).
Prezentacja ceny na karcie towary z precyzją a) do jednego miejsca po przecinku, b) do dwóch miejsc po przecinku, c) do trzech miejsc po przecinku, d) do czterech miejsc po przecinku
Dodatkowo istnieje możliwość ustawienia precyzji ceny na definicji dokumentu na centrum operatora [Konfiguracja/ Struktura firmy/Struktura praw/Centrum operatora]. Następnie w zakładce [Dokumenty] należy wybrać odpowiedni dokument do konfiguracji.
Przypisanie precyzji cen wyświetlanych w aplikacji Comarch Mobile Zakupy podczas wystawiania dokumentów
Zaznaczenie opcji 1, 2, 3 lub 4 spowoduje wyświetlanie cen z dokładnością do takiej liczby miejsc po przecinku.
Prezentacja ceny podczas wystawiania dokumentu z precyzją a) do jednego miejsca po przecinku, b) do dwóch miejsc po przecinku, c) do trzech miejsc po przecinku, d) do czterech miejsc po przecinku
Cena z wybraną precyzją widoczna jest na liście towaru podczas wystawiania dokumentu, na małej kalkulacji oraz w zakładce Koszyk.
Konfiguracja kompletu
W aplikacji Comarch Mobile Zakupy jest dostępny komplet czyli zestaw dwóch lub więcej artykułów sprzedawanych klientowi jako jeden produkt.
Na karcie danego artykułu o typie [Komplet], w zakładce [Ogólne] dostępny jest parametr [Pobieraj składniki na dokument].
Odznaczenie parametru spowoduje, że podczas wystawiania dokumentu artykuł będący kompletem dodawany jest jako jedna pozycja. Istnieje wówczas także możliwość określenia marży minimalnej oraz wskazania, że komplet podlega odwrotnemu obciążeniu.
Jeżeli parametr zostanie zaznaczony, to na dokumencie będą pokazywały się poszczególne składniki kompletu, a nie jedna pozycja w postaci całego kompletu.
Przy zaznaczonym parametrze [Pobieraj składniki na dokument] pojawi się dodatkowe okno dotyczące kolejnego parametru [Modyfikacja pojedynczego elementu na dokumentach]. Jeżeli dla dokumentów rozchodowych wartość tego parametru ustawiona będzie na [Blokuj] wówczas podczas wystawiania dokumentów w aplikacji mobilnej możliwe będzie dodawanie tylko pełnych kompletów. Edycja ilości dla pojedynczego elementu (składnika kompletu) nie będzie możliwa. Dotyczy to wszystkich dokumentów możliwych do wystawiania w aplikacji mobilnej przy współpracy z Comarch ERP Altum.
Parametr [Pobieraj składniki na dokument] na karcie kompletu w zakładce [Ogólne]Zaznaczenie parametru [Pobieraj składniki na dokument]
Wyświetlanie/ukrywanie informacji o stanach magazynowych
W Comarch Mobile Zakupy istnieje możliwość wyboru wyświetlenia\ukrycia informacji o stanach magazynowych.
W folderze [Methods], w pliku konfiguracyjnym [configuration.optima.xml] znajduje się parametr odpowiedzialny za tę funkcjonalność: [IsHeadquarterStocksVisible].
Domyślna wartość parametru to „1”, pozwalająca na podgląd informacji o stanach magazynowych na urządzeniu mobilnym. Więcej informacji nt. tego parametru znajduje się TUTAJ.
Oprócz magazynów przypisanych do centrum mobilnego w Comarch ERP Altum, do aplikacji mobilnej można także synchronizować magazyny innej firmy (wraz z zasobami towarów dostępnych w Mobile). Aby takie magazyny były widoczne w Comarch Mobile Zakupy należy na karcie magazynu w zakładce widoczność stanów udostępnić centrum mobilne.
Konfiguracja magazynu w Comarch ERP Altum – udostępnienie widoczności stanów centrum mobilnemu.
Wyświetlanie stanów magazynowych z podziałem na partie (wielocechowość)
Istnieje możliwość sprawdzania w aplikacji mobilnej stanów towarów z podziałem na poszczególne partie (w zależności od cechy). Cechy te można również wskazać podczas generowania dokumentu w Comarch Mobile Zakupy.
Określenie czy dana cecha ma mieć wpływ na partię jest z poziomu karty towaru w systemie ERP Altum (zakładka [Parametry]):
Określenie wpływu cechy na partie towaru
W systemie Comarch ERP Altum informacje o cechach dostępne są również z poziomu zakładki [Zasoby i partie], również na karcie towaru:
Informacje o zasobach towaru z podziałem na partie
Raporty
Edycja raportów
W aplikacji umożliwiono usuwanie, dodawanie oraz edycję raportów z poziomu serwera synchronizacji. Definicje raportów znajdują się w katalogu: C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji/Reports.
Aby dodać nowy raport należy utworzyć jego definicję, a następnie zapisać go w formacie xml.
Uwaga
W przypadku zapisu definicji raportu w Notatniku należy wybrać kodowanie UTF-8.
Aby usunąć istniejący raport należy zmienić jego ID na ujemne, następnie zmienić datę modyfikacji (np. wystarczy zapisać ponownie plik z raportem) i wykonać synchronizację.
Uwaga
Podczas synchronizacji definicji raportów na urządzenie brana jest pod uwagę data modyfikacji pliku. W celu wymuszenia synchronizacji raportu należy wykonać dowolną modyfikację.
Zmiana ID raportu na ujemne
Istnieje możliwość zmiany języka raportu.
Przyklad
W przypadku, gdy w wersji polskojęzycznej chcemy mieć raport w języku niemieckim, to należy zmodyfikować ostatni człon nazwy z deu na pol, następnie należy zmienić datę modyfikacji.
Przykład modyfikacji raportu
W celu opisania przykładowej modyfikacji raportu wykorzystany zostanie Raport dobowy przedstawiciela. Do tegoż raportu zostanie dodany argument za pomocą którego możliwe będzie wybranie dnia, z którego dany raport zostanie zaprezentowany.
W tym celu należy wyedytować definicję raportu o nazwie 53#DailyReport#pol.xml znajdującą się w domyślnej lokalizacji C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Reports\ i katalogu odpowiednim dla systemu ERP. W pliku tym należy przed sekcją elements dodać sekcję zawierającą argumenty raportu oraz argument o typie daty (typeId = 0) według następującego przykładu:
Kolejnym krokiem dla lepszej czytelności raportu będzie usunięcie godziny z nagłówka raportu znajdującego się na zielonej belce. Dla pierwszego elementu raportu (id = 1) należy wyedytować sekcję sql w pozostawiając następujące polecenie:
Następnie w całym pliku należy wyszukać wszystkie fragmenty kodu odnoszące się do aktualnej daty i zamienić je na odnoszące się do wcześniej zdefiniowanego argumentu. Wobec tego należy fragmenty:
date('now','localtime')
Zamienić na następujące:
date(@data@/1000, 'unixepoch', 'localtime')
Po wykonaniu tych kroków zmodyfikowany raport będzie wymagał wyboru daty:
Widok okna z wyborem parametru
I będzie prezentował dane o stanach magazynów mobilnych oraz wystawionych dokumentach, zapisach kasowych i obrotu kaucjami z wybranego dnia.
Widok raportu z różnymi danymi
Elementy składowe
Definicja raportu składa się z danych sekcji xml. Główną sekcją raportu jest sekcja report. W niej zaś zawarte są następujące:
reportHeader
reportType
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
Przyklad
<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 1 oraz 0.
Parametry
0 - wszystkie typy
1 - raport sprzedażowy
2 - raport zakupowy
3 - raport serwisowy
Przyklad
<reportType>
<value>0</value>
</reportType>
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
1 - lista kontrahentów
2 - lista towarów
4 - element wizyty "Inny"
8 - listy pozycji dokumentów
16 - duża kalkulacja podczas dodawania pozycji na dokument
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ą argumentwedług następującego przykładu:
Przyklad
<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
6 - 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[]]>
Przyklad
Przykład argumentu wybranego jako typ 6 (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 ValueFROM WarehousesWHERE IsActive = 1 AND Id > 0GROUP 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
0 - polecenie wykonywane na bazie mobilnej
1 - 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)
Przyklad
<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 element, która jest definicją jednego elementu.
Przyklad
<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
0 - wartość liczbowa
1 - polecenie SQL
Przyklad
<element>
<id>8</id><typeId>3</typeId><sql><![CDATA[selectcoalesce(categories.name, 'Brak kategorii') as Kategoria,sum(DocumentsPositions.GrossValueInSystemCurrency) as NetValuefrom documentsjoin documentspositionson documentspositions.documentid = documents.idAND DocumentsPositions.DocumentIsLocal = Documents.DocumentIsLocaland DocumentsPositions.IsItemsSetVirtualPosition = 0and DocumentsPositions.RelatedItemsSetOrdinal is nulljoin items on items.id = documentspositions.itemidleft join categories on items.categoryid = categories.idwhere 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.nameunion allselectcoalesce(brands.name, 'brak marki') as Marka,sum(DocumentsPositions.GrossValueInSystemCurrency) as NetValuefrom documentsjoin documentspositions on documentspositions.documentid = documents.id AND DocumentsPositions.DocumentIsLocal = Documents.DocumentIsLocal and DocumentsPositions.IsItemsSetVirtualPosition = 0 and DocumentsPositions.RelatedItemsSetOrdinal is nulljoin items on items.id = documentspositions.itemidleft join brands on items.brandid = brands.idwhere 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.nameunion allselectcoalesce(Producers.name, 'brak producenta') as Grouping,sum(DocumentsPositions.GrossValueInSystemCurrency) as NetValuefrom documentsjoin documentspositions on documentspositions.documentid = documents.idAND DocumentsPositions.DocumentIsLocal = Documents.DocumentIsLocaland DocumentsPositions.IsItemsSetVirtualPosition = 0and DocumentsPositions.RelatedItemsSetOrdinal is nulljoin items on items.id = documentspositions.itemidleft join Producers on items.producerid = Producers.idwhere 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.nameunion allselectcoalesce(ig.name , 'brak grupy towaru') as Grupa ,sum(DocumentsPositions.GrossValueInSystemCurrency) as GrossValuefrom documentsjoin documentspositionson documentspositions.documentid = documents.idAND DocumentsPositions.DocumentIsLocal = Documents.DocumentIsLocaland DocumentsPositions.IsItemsSetVirtualPosition = 0and DocumentsPositions.RelatedItemsSetOrdinal is nulljoin items on items.id = documentspositions.itemidjoin itemsgroupslinks igl on items.id = igl.itemidjoin itemsgroups ig on groupid = ig.idwhere 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
Przykłady modyfikacji raportów
Dodanie argumentu
W celu opisania przykładowej modyfikacji raportu wykorzystany zostanie Raport dobowy przedstawiciela. Do raportu zostanie dodany argument za pomocą którego możliwe będzie wybranie dnia, z którego dany raport zostanie zaprezentowany.
W tym celu należy wyedytować definicję raportu o nazwie 53#DailyReport#pol.xml znajdującą się w domyślnej lokalizacji C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Reports\ i katalogu odpowiednim dla systemu ERP. W pliku tym należy przed sekcją elements dodać sekcję zawierającą argumenty raportu oraz argument o typie daty (typeId = 0) według następującego przykładu:
Kolejnym krokiem dla lepszej czytelności raportu będzie usunięcie godziny z nagłówka raportu znajdującego się na zielonej belce. Dla pierwszego elementu raportu (id = 1) należy wyedytować sekcję sql w pozostawiając następujące polecenie:
Następnie w całym pliku należy wyszukać wszystkie fragmenty kodu odnoszące się do aktualnej daty i zamienić je na odnoszące się do wcześniej zdefiniowanego argumentu. Wobec tego należy fragmenty:
date('now','localtime')
Zamienić na następujące:
date(@data@/1000, 'unixepoch', 'localtime')
Po wykonaniu tych kroków zmodyfikowany raport będzie wymagał wyboru daty:
Widok okna z wyborem parametru
I będzie prezentował dane o stanach magazynów mobilnych oraz wystawionych dokumentach, zapisach kasowych i obrotu kaucjami z wybranego dnia.
Widok raportu z różnymi danymi
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
Usunięcie kolumny z tabeli
W celu opisania modyfikacji wykorzystany zostanie raport Ranking kontrahentów kupujących towar, w którym to usunięte zostaną dwie kolumny z tabeli: Marża (kwotowo) i Marża (procentowo).
Standardowy raport: Ranking kontrahentów kupujących towar
W tym celu należy wyedytować definicję raportu o nazwie 38#CustomersPurchasingItems#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.
Z pliku należy usunąć część zapytania SQL dla elementu o id = 2, która odpowiada za zwrócenie wartości danych kolumn Marża (kwotowo) i Marża (procentowo). Będzie to poniższy fragment, który dla tego elementu występuje dwa razy:
CASE
WHEN SUBSTR(ROUND(SUM(Case when d.IsVatFromNetValue == 1 THEN dp.MarginValueInSystemCurrency ELSE dp.MarginValueInSystemCurrency*100/(100+dp.VatRateValue) END), 2), LENGTH(ROUND(SUM(Case when d.IsVatFromNetValue == 1 THEN dp.MarginValueInSystemCurrency ELSE dp.MarginValueInSystemCurrency*100/(100+dp.VatRateValue) END), 2))-1,1) = "."
THEN ROUND(SUM(Case when d.IsVatFromNetValue == 1 THEN dp.MarginValueInSystemCurrency ELSE dp.MarginValueInSystemCurrency*100/(100+dp.VatRateValue) END), 2) || "0" || "<br/>" || (Select Value From Configuration Where Key == 'Currency')
ELSE ROUND(SUM(Case when d.IsVatFromNetValue == 1 THEN dp.MarginValueInSystemCurrency ELSE dp.MarginValueInSystemCurrency*100/(100+dp.VatRateValue) END), 2) || "<br/>" || (Select Value From Configuration Where Key == 'Currency')
END AS '[c]Marża<br/>(kwotowo)',
CASE
WHEN (Select Value From Configuration Where Key == 'MarginCountType') == 1
THEN IFNULL(ROUND(ROUND(SUM(Case when d.IsVatFromNetValue == 1 THEN dp.MarginValueInSystemCurrency ELSE dp.MarginValueInSystemCurrency*100/(100+dp.VatRateValue) END), 2)/SUM(dp.EndNetPriceInSystemCurrency * dp.Quantity)*100, 2), 0.00) || " %"
ELSE IFNULL(ROUND(ROUND(SUM(Case when d.IsVatFromNetValue == 1 THEN dp.MarginValueInSystemCurrency ELSE dp.MarginValueInSystemCurrency*100/(100+dp.VatRateValue) END), 2)/SUM(dp.BaseNetPriceInSystemCurrency * dp.Quantity)*100, 2), 0.00) || " %"
END AS '[c]Marża<br/>(procentowo)'
Dodatkowo należy usunąć możliwość wyboru sortowania danych po usuniętych kolumnach. W tym celu dla argumentu o id = 4 z sekcji posibleSQL należy usunąć następujące wartości:
UNION ALL
SELECT 3, 'Marża(kwotowo)'
UNION ALL
SELECT 4, 'Marża(procentowo)'
Po wykonaniu powyższych kroków raport powinien wyglądać następująco:
Raport: Ranking kontrahentów kupujących towar po modyfikacji
Wydruki
Definicje wydruków
W aplikacji zostały przygotowane przykładowe wydruki, które można dowolnie modyfikować i dostosowywać do wymagań Klienta.
Wskazówka
Definicje wydruków dokumentów znajdują się domyślnie w katalogu: C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Printouts.
Wskazówka
Definicje wydruków raportów znajdują się domyślnie w katalogu: C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Printouts i podkatalogu odpowiednim dla systemu ERP, np. xl11.
Każdy wydruk składa się z trzech części:
Data – zapytania wyciągające dane wykorzystywane na wydruku,
Layout – układ wydruku,
Style – styl wydruku (czcionki, kolory itp.).
Uwaga
Podczas synchronizacji definicji wydruków na urządzenie brana jest pod uwagę data modyfikacji pliku. W celu wymuszenia synchronizacji wydruku należy wykonać dowolną modyfikację.
Dodanie nowej definicji wydruku dokumentu
Aby dodać nowy wydruk należy utworzyć jego definicję tworząc pliki Data, Layout i Style, następnie zapisać je w formacie xml.
Istnieje możliwość dodania kilku definicji dla jednego dokumentu. Przykładowo dla dokumentu Zamówienie Sprzedaży istnieje standardowa definicja składająca się z plików:
1#SalesOrder#data#Wydruk_domyślny.xml
1#SalesOrder#layout#Wydruk_domyślny.xml
1#SalesOrder#style#Wydruk_domyślny.xml
Należy dodać nową zmodyfikowaną definicję zmieniając w nazwie plików liczbę 1 na taką, która wśród definicji nie istnieje oraz frazę Wydruk_domyślny na wybraną przez siebie nazwę definicji, np:
45#SalesOrder#data#Mój_wydruk.xml
45#SalesOrder#layout#Mój_wydruk.xml
45#SalesOrder#style#Mój_wydruk.xml
Po tych czynnościach podczas wydruku dokumentu mamy możliwość wyboru definicji wydruku:
Wybór definicji wydruku
Uwaga
W przypadku zapisu definicji wydruku w Notatniku należy wybrać kodowanie UTF-8.
Dodanie nowej definicji wydruku raportu
W celu dodania definicji wydruku raportu w katalogu Printouts i podkatalogu odpowiednim dla systemu ERP należy utworzyć pliki Data, Layout i Style zawierając w nazwie Id raportu z katalogu Reports serwera synchronizacji. Przykładowo, aby utworzyć definicję wydruku dla raportu Sprzedaż w okresach należy raport ten odszukać w katalogu Reports, nosi on nazwę 3#SalesInPeriods#pol.xml. Kolejno w katalogu Printouts i odpowienim podkatalogu utworzyć jego definicję tworząc pliki data, layout i style zawierając w nazwie jego Id:
46#Report#data#3#Moj_wydruk.xml
46#Report#layout#3#Moj_wydruk.xml
46#Report#style#3#Moj_wydruk.xml
Po tych czynnościach w aplikacji pojawi się możliwość wydruku raportu Sprzedaż w okresach.
Usunięcie definicji wydruku
Aby usunąć istniejący wydruk, należy zmienić ID wszystkich jego elementów na ujemne, następnie zmienić datę modyfikacji i wykonać synchronizację.
Zmiana ID wydruku na ujemne
Licznik wydruków
Funkcjonalność licznika wydruków PDF umożliwia ewidencjonowanie wydrukowanych dokumentów danego typu. Dzięki niej będzie można sprawdzić na bazie mobilnej, które dokumenty zostały wydrukowane i ewentualnie według potrzeby będzie można zablokować możliwość edycji już wydrukowanych dokumentów. Dla potrzeb funkcjonalności na bazie mobilnej została dodana tabela RealizedPrintout, w której można odszukać dokładną datę i godzinę wydruku, rodzaj obiektu, liczbę kopii itp.
Informację o liczbie wydruków będzie można wykorzystać w raportach, np. ilość wydrukowanych dokumentów ZS danego dnia.
Dodatkowe informacje na wydrukach
Na wszystkich wydrukach dostępnych z poziomu aplikacji wprowadzone są dodatkowe informacje, które dotyczą:
numeru wydruku,
identyfikatora określającego, że wydruk został stworzony w aplikacji mobilnej,
liczby kopii wydruku,
identyfikatora operatora.
Dodatkowe dane pozwalają na dokładniejszą weryfikację wydruków wykonanych z poziomu aplikacji przez przedstawicieli.
Źródło danych
Wydruk do pdf
Źródło danych dla wydruku musi zostać umieszczone w pliku o nazwie Data.xml. Głównym elementem w pliku jest sekcja datawewnątrz której musi się znaleźć dokładnie jeden element setf. Wewnątrz elementu setf musi się znaleźć jeden lub więcej elementów set. Każdy element set reprezentuje jeden zbiór danych (wynik jednego zapytania SQL). Musi on zawierać dwa elementy podrzędne: name– który określa nazwę zbioru oraz query, które definiuje zapytanie SQL wykonywane na mobilnej bazie danych aplikacji Comarch Mobile.
Uwaga
Prezentowane zapytania SQL mogą różnić się w zależności od wersji aplikacji Comarch Mobile.
Przykład standardowego pliku data.xml występującego w definicji wydruku dokumentu Zamówienie Sprzedaży (1#SalesOrder#data#Wydruk_domyślny.xml):
Przyklad
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE data PUBLIC "//UNKNOWN/" "unknown.dtd">
<data>
<setf><set><name>Header</name><query>...</query></set><set><name>DocumentsPositions</name><query>...</query></set><set><name>VatAggregation</name><query>...</query></set><set><name>Logo</name><query>SELECT Data FROM PrintoutsImages WHERE Name='logo.png'</query></set><set><name>FooterAppVersionNumber</name><query>SELECT MajorVersion AS MajorVersion, MinorVersion AS MinorVersion, BuildVersion AS BuildVersionFROM Packages</query></set><set><name>FooterOperatorCode</name><query>SELECT Name AS OperatorCodeFROM Users</query></set><set><name>FooterCopyNumber</name><query>SELECT CASE WHEN COUNT(Number) = 0 THEN 1 ELSE COUNT(Number) + 1 END AS NumbersFROM Documents INNER JOIN RealizedPrintouts rp ON(Documents.Number = rp.DocumentNumber) WHERE Documents.Id=@Id@ </query></set></setf>
</data>
Wydruk termiczny
Jedyną różnicą w definicji pliku data.xml dla wydruków termicznych względem definicji wydruku do pdf jest brak elementu setf. Przykład takiego wydruku (11#SalesOrder#data#Thermal#Vline112#Wydruk_domyślny.xml) wygląda nastepująco:
Przyklad
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE data PUBLIC "//UNKNOWN/" "unknown.dtd">
<data>
<set><name>Header</name><query>...</query></set><set><name>DocumentsPositions</name><query>...</query></set><set><name>VatAggregation</name><query>...</query></set><set><name>FooterAppVersionNumber</name><query>SELECT MajorVersion AS MajorVersion, MinorVersion AS MinorVersion, BuildVersion AS BuildVersionFROM Packages</query></set><set><name>FooterOperatorCode</name><query>SELECT Name AS OperatorCodeFROM Users</query></set><set><name>FooterCopyNumber</name><query>SELECT CASE WHEN COUNT(Number) = 0 THEN 1 ELSE COUNT(Number) + 1 END AS NumbersFROM Documents INNER JOIN RealizedPrintouts rp ON(Documents.Number = rp.DocumentNumber) WHERE Documents.Id=@Id@ </query></set>
</data>
Układ wydruku
Zawartość oraz układ wydruku definiowany jest w pliku Layout.xml. Głównym elementem w pliku jest document. Musi zawierać on element body, który zawiera główną część wydruku. Zawartość elementów body czy też footermoże zostać skomponowana z innych elementów opisanych poniżej. Elementy te mogą być zagnieżdżane. Parametr class odwołuje się do klasy stylu zdefiniowanej w pliku Styles.xml dla danego elementu stylującego.
Wszystkie dostępne elementy, które mogą zostać zastosowane podczas tworzenia układu wydruku zostały opisane poniżej. Opis każdego elementu zawiera następujące sekcje:
Parametry – opisuje wszystkie dostępne atrybuty jakie można dodać do elementu i co oznaczają.
Elementy stylujące – zawiera listę selektorów, które dopasowują dany element w pliku Styles.xml
Elementy podrzędne – opcjonalna sekcja opisująca elementy, które mogą wystąpić tylko wewnątrz danego elementu. Dla każdego elementu podrzędnego zachowany jest układ opisu taki sam jak dla głównego elementu.
Przykład – zawiera fragment kodu z przykładowym wykorzystanie opisywanego elementu.
Wszystkie dostępne elementy, które mogą zostać zastosowane podczas tworzenia układu wydruku zostały opisane poniżej.
Element testowy pozwalający na układ wydruku zależny od dowolnych warunków
Parametry
Brak
Elementy stylujące
Brak
Elementy podrzędne
Test
True
False
Nazwa
If: Test
Opis
Element zawierający warunek decydujący o tym czy do wydruku zostaną dodane elementy z sekcji true czy false . Warunek może mieć postać: eq - równy, lt - mniej niż, gt - więcej niż.
Parametry
Brak
Elementy stylujące
Brak
Nazwa
If: True
Opis
Element zawierający elementy, które zostaną w przypadku kiedy warunek z sekcji test zostanie spełniony.
Parametry
Brak
Elementy stylujące
Brak
Nazwa
If: False
Opis
Element zawierający elementy, które zostaną w przypadku kiedy warunek z sekcji test nie zostanie spełniony.
split - określa czy tabela może zostać podzielona na kilka stron. Parametr może przyjmować wartość true lub false.
set - nazwa zestawu danych.
Elementy stylujące
Table
Elementy podrzędne
Column
TableData
Nazwa
Table: Column
Opis
Element definiujący kolumnę tabeli.
Zawartość
Dowolne elementy tekstowe
Parametry
description - nagłówek kolumny.
weight - waga szerokości kolumny. Wartość domyślna 1
Elementy stylujące
DataCell
HeadCell
Nazwa
Table: TableData
Opis
Element zwracający wartość tekstową ze zbioru danych bazującą na zbiorze danych tabeli,
kolumnie podanej w parametrze var oraz aktualnym wierszu tabeli.
Poniższy dokument składa się z opisu trzech części składających się na wygląd wydruku:
Atrybuty zawężające
Selektory
Reguły
Dostosowanie wygląd wydruku możliwe jest poprzez pliki #style#.xml, np. standardowym plikiem definiującym wygląd Faktury Sprzedaży jest plik 7#SalesInvoice#style#Wydruk_domyślny.xml. Głównym elementem tego pliku jest style, który zawiera elementy określające wygląd poszczególnych elementów wydruku zdefiniowanych w pliku layout.
Jednym z elementów podrzędnych elementu style jest element fonts, który określa wszystkie czcionki, które zostaną wykorzystane w wydruku. Może on zawierać, jeden lub więcej elementów font, który definiuje krój, wielkość, wygląd oraz styl fontu.
name - określa nazwę fontu, przez którą możemy się do niego odwołać
face - nazwa kroju fontu
size - rozmiar w punktach
color - kolor
style - style fontu. Może zawierać jedną (lub więcej wartości oddzielonych znakiem spacji) z wartości bold, italic, underline.
Wewnątrz elementu fonts powinien znaleźć się także jeden element font z pominiętym atrybutem name. Font ten będzie stosowany jako font domyślny dla wydruku.
Oprócz elementu fonts w pliku Styles.xml mogą znajdować się elementy w schemacie:
<selektor>
<reguła/><reguła/>[...]
</selektor>
Gdzie selektor decyduje o tym, czy podległe mu reguły zostaną zastosowane dla danego elementu. Większość selektorów ma taką samą nazwę jak element, który stylują. Np. w celu ostylowania paragrafu (element p w pliku Layout.xml ) należy zastosować selektor p.
Przyklad
<p>
<margin top="5"/>
</p>
Powyższy przykład wszystkim paragrafom wydruku ustawi margines górny na 5 punktów. Selektor może wybrać do ostylowania tylko wybrane elementy danego typu. W tym celu do elementu w pliku Layout.xml oraz selektora w pliku Styles.xml należy dodać atrybut class. Selektor wybierze wtedy tylko te elementy, które mają identyczną wartość atrybutu class.
Powyższy przykład ustawi font wszystkich paragrafów na normal ale te, których atrybut class to title zostanie ustawiony font title. Dokładny opis innych atrybutów selektorów oraz spis reguł stylujących znajduje się w sekcji Wygląd. Lista selektorów oraz reguł, które można zastosować dla danego elementu znajduje się w opisie poszczególnych elementów w sekcji Układ. Reguły z pliku style stosowane są od góry do dołu tzn. jeżeli dwa selektory dopasują ten sam element i zawierają one takie same reguły z innymi wartościami to zostanie zastosowana wartość występująca później.
Atrybuty zawężające
Opis każdego selektora zawiera listę elementów, które styluje oraz listę reguł, jakie można w nim umieścić. Opis każdej reguły zawiera listę atrybutów jakie można w niej zastosować.
Każdy selektor może zostać zawężony poprzez atrybut class. Dodatkowo selektory elementów związane z tabelami mogą zostać zawężone poprzez atrybut index, który może zawierać liczbę całkowitą lub wyrażenie postaci An+B, gdzie A oraz B to liczby całkowite. Selektor taki dopasuje element, jeżeli zgadza się on z indeksem wiersza tabeli (wiersze tabeli numerowane są od 0 z góry na dół).
Przykłady:
index="0" - dopasuje pierwszy wiersz w tabeli
index="first" - dopasuje pierwszy wiersz w tabeli
index="last" - dopasuje ostatni wiersz w tabeli
index="5" - dopasuje szósty wiersz w tabeli
index="2n" - dopasuje parzyste wiersze tabeli tzn. z indeksem równym 0,2,4... czyli wiersze pierwszy, trzeci, piąty...
index="3n+1" - dopasuje wiersze z indeksem 1, 4, 7...
index="3n+2" - dopasuje wiersze z indeksem 2, 5, 8...
color - kolor tła elementu. Może on być w formacie #RRGGBB lub 0xRRGGBB lub
0xAARRGGBB
Nazwa
Border
Opis
Reguła określająca obramowanie elementu
Atrybuty
left - szerokość lewego obramowania.
right - szerokość prawego obramowania.
top - szerokość górnego obramowania.
bottom - szerokość dolnego obramowania.
color - kolor obramowania elementu. Może on być w formacie #RRGGBB lub
0xRRGGBB lub 0xAARRGGBB
borderStyle - styl obramowania. Może przyjmować jedną z wartości:
o dashdot
o dashdotdot
o dashlargegap
o dashsmallgap
o dot
o none
o single
Uwagi
Szerokość obramowania może być podana w różnych jednostkach m.in.: cm, in, mm, pt. Domyślną jednostką są punkty.
Nazwa
borderLeft,borderRight,borderTop,borderBottom
Opis
Reguły określające poszczególne części obramowania elementu
Atrybuty
width - szerokość obramowania
color - kolor obramowania
borderStyle - styl obramowania
Nazwa
Fit
Opis
Reguła określająca rozmiar elementu
Atrybuty
width - szerokość elementu
height - wysokość elementu
Uwagi
Szerokość i wysokość może być podana w różnych jednostkach m.in.: cm, in, mm, pt. Stylowany
element zachowa swoje proporcje przyjmując mniejszy z podanych wymiarów.
Nazwa
Margin
Opis
Reguła określająca marginesy elementu
Atrybuty
left - lewy margines
right - prawy margines
top - górny margines
bottom - dolny margines
Uwagi
Szerokość marginesu może być podana w różnych jednostkach m.in.: cm, in, mm, pt.
Nazwa
Text
Opis
Reguła określająca styl tekstu
Atrybuty
align - wyrównanie tekstu. Przyjmuje jedną z wartości:
o right - wyrównanie do prawej
o left - wyrównanie do lewej
o justify - wyjustowanie tekstu
o center - wyśrodkowanie tekstu
indent - wcięcie pierwszej linii tekstu.
leftIndent - wcięcie tekstu z lewej.
rightIndent - wcięcie tekstu z prawej.
font - nazwa fontu zdefiniowana wcześniej w sekcji fonts .
color - kolor tekstu. Może on być w formacie #RRGGBB lub 0xRRGGBB lub
0xAARRGGBB
Nazwa
Width
Opis
Reguła określająca szerokość elementu
Atrybuty
percentage - procentowa szerokość elementu bazująca na szerokości elementu-rodzica
Przykłady wydruków fiskalnych
W aplikacji Comarch Mobile Sprzedaż nie ma możliwości modyfikacji wydruków z drukarki fiskalnej. Poniżej prezentowane są przykładowe wydruki paragonu oraz faktury na drukarce fiskalnej. W przypadku faktury drukowana jest również kopia dokumentu.
Przykład wydruku faktury na drukarce fiskalnejPrzykład wydruku paragonu na drukarce fiskalnej
Przykłady wydruków termicznych
W aplikacji Comarch Mobile możliwy jest wydruk dokumentów na drukarce termicznej. Wygląd wydruków można dowolnie modyfikować zgodnie z instrukcją dostępną TUTAJ. Poniżej znajduje się przykład standardowego wydruku termicznego dokumentu Zamówienia Sprzedaży.
Przykład wydruku Zamówienia Sprzedaży na drukarce fiskalnej
Przykłady modyfikacji wydruków do pdf
Dodawanie kolumny
Do omówienia tej modyfikacji, wykorzystany zostanie przykład dodania kolumny zawierającej informację o rabacie.
W celu dodania nowej kolumny należy wyedytować plik #data#. Należy odszukać zapytanie wydobywające dane związane z pozycjami dokumentu. Aby wykorzystać te dane w definicji dokumentu konieczne jest stworzenie aliasu tej kolumny np. Discount. Po dokonaniu zmian zapisujemy dokument.
Dodanie aliasu kolumny odpowiedzialnej za wyświetlanie rabatu
Aby dane te pokazywały się na dokumencie, konieczne jest odpowiednie zmodyfikowanie pliku #layout#, w którym w odpowiedniej sekcji należy dodać kolumnę o nazwie „Rabat”.
W description należy wpisać nazwę kolumny, class - określenie klasy, w tym przypadku jest to numer, var - odniesienie do aliasu kolumny określonej w pliku data tj. Discount. Aby poza wartością rabatu wyświetlany był również symbol procentów, należy dodać na końcu linii znak „%”. Ponieważ rabat powinien być wyświetlany zarówno na dokumencie tworzonym od wartości brutto jak i netto, należy skopiować definicje kolumny do poniższej sekcji. Na koniec zapisujemy zmiany.
Dodanie kolumny Rabat w pliku layout
Zmiana kolorystyki
W celu zmiany kolorystyki wydruku należy wyedytować plik #style#, zmieniając kod koloru dla poszczególnych elementów definicji wydruku w sekcji <fonts>. Kolory podawane są w zapisie heksadecymalnym.
Wskazówka
Zalecanym programem do tej modyfikacji jest Notepad++.
Definicje kolorów w zapisie heksadecymalnym dostępne są w Internecie.
Zmiana koloru w pliku style
Dodawanie/usuwanie/zmiana logo
Aby logo było dodane na wydruku, należy wybraną grafikę zapisać pod nazwą logo.png w folderze
wydruków Printouts. Zmiana logo na inne możliwa jest poprzez zmianę nazwy poprzedniej grafiki oraz dodanie nowej, jako plik o nazwie logo.png o nowszej dacie modyfikacji od poprzedniego, tak jak zostało to zaprezentowane na poniższym rysunku:
Zmiana logo na wydruku
W celu usunięcia logo z wydruku dokumentu, należy usunąć zapytania zwracające logo tj.
W pliku Data:
<set>
<name>Logo</name>
<query>SELECT Data FROM PrintoutsImages WHERE Name='logo.png'</query>
</set>
W pliku Layout:
<image set="Logo" var="Data" />
Dodanie nowych danych na wydruk
Jeżeli istnieje potrzeba pokazania na wydruku niestandardowych danych można to zrealizować w następujący sposób:
przesynchronizować potrzebne dane do tabeli Configuration bazy mobilnej
umieścić nowe dane na wydruku
Poniżej przedstawiony jest przykład dodania na wydruk dokumentu danych pracownika, który wystawił dokument: Zamówienie Sprzedaży przy współpracy z Comarch ERP XL 2018.2.1. W sposób opisany poniżej można synchronizować dowolne dane z systemu ERP i prezentować je na wydruku.
Uwaga
Zapytania SQL wykorzystywane w tym przykładzie mogą różnić się w zależności od systemu ERP oraz jego wersji.
W pierwszej kolejności należy w odpowiednim dla wersji systemu ERP pliku konfiguracyjnym znajdującym się w katalogu Methods serwera synchronizacji (ścieżka domyślna: C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Methods\configuration) dodać następujące zapytanie:
UNION ALL
select
1,0,'ImieNazwisko',cast ((Prc_Imie1 +' '+ Prc_Nazwisko) as varchar)from cdn.opekarty opekarjoin cdn.PRCKarty pckar on opekar.Ope_PrcNumer=pckar.Prc_GIDNumerwhere Ope_GIDTyp =128 and Ope_GIDNumer=@UserId
UNION ALL
select
1,0,'telefon',cast (Prc_Telefon3 as varchar)from cdn.opekarty opekarjoin cdn.PRCKarty pckar on opekar.Ope_PrcNumer=pckar.Prc_GIDNumerwhere Ope_GIDTyp =128 and Ope_GIDNumer=@UserId
UNION ALL
select
1,0,'email',cast (Prc_EMail as varchar)from cdn.opekarty opekarjoin cdn.PRCKarty pckar on opekar.Ope_PrcNumer=pckar.Prc_GIDNumerwhere Ope_GIDTyp =128 and Ope_GIDNumer=@UserId
Powyższe zapytania pobierają z bazy systemu ERP dane dotyczące pracownika: imię i nazwisko, telefon, e-mail. Dodanie zapytań do pliku spowoduje, że konkretne dane zostaną przesynchronizowane do tabeli Configuration na bazie mobilnej.
Kolejnym krokiem jest modyfikacja pliku wydruku 1#SalesOrder#data#Wydruk_domyślny.xml znajdującego się w katalogu Printouts serwera synchronizacji. Należy dodać zapytania pobierające zsynchronizowane wcześniej dane do tabeli Configuration. Nowo dodane fragmenty zostały oznaczone kolorem żółtym:
...
<set>
<name>Logo</name><query>SELECT Data FROM PrintoutsImages WHERE Name='logo.png'</query>
</set>
<set><name>Wystawil</name><query>SELECT Value FROM Configuration WHERE key like 'ImieNazwisko'</query></set><set><name>Wystawiltel</name><query>SELECT Value FROM Configuration WHERE key like 'telefon'</query></set><set><name>Wystawilemail</name><query>SELECT Value FROM Configuration WHERE key like 'email'</query></set>
...
Ostatnim krokiem jest modyfikacja pliku wydruku 1#SalesOrder#layout#Wydruk_domyślny.xml, która polega na dodaniu wpisów odpowiedzialnych za wyświetlanie danych, które zostały zwrócone w zapytaniach w pliku 1#Order#data#Wydruk_domyślny.xml:
Po wykonaniu powyższych modyfikacji należy wykonać synchronizację z urządzenia mobilnego. Po modyfikacji wydruk powinien wglądać następująco:
Zamówienie Sprzedaży z danymi osoby wystawiającej
Przykłady modyfikacji wydruków termicznych
Usunięcie tabeli i przesunięcie tekstu
Opis modyfikacji będzie dotyczył standardowej definicji wydruku termicznego dokumentu Faktura sprzedaży. Opisane zostanie usunięcie tabeli zawierającej informacje o VAT oraz przesunięcie informacji o zapłacie na prawą stronę wydruku.
Standardowy wydruk termiczny dokumentu Faktura Sprzedaży
Należy zmodyfikować plik: 17#SalesInvoice#layout#Thermal#Vline112#Wydruk_domyślny.xml. W pliku tym należy usunąć lub zakomentować linijki dotyczące tabeli zawierającej informacje o VAT jak poniżej:
oraz dla części zawierającej informacje o zapłacie zmodyfikować wartości offset z 0 na 40 (cały wydruk ma szerokość 80) poszczególnych danych jak w przykładzie poniżej zaznaczono kolorem czerwonym:
Po wprowadzeniu tej modyfikacji wydruk termiczny Faktury sprzedaży powinien wyglądać następująco:
Wydruk dokumentu Faktura Sprzedaży po modyfikacji
Dodanie nowych danych na wydruk
Jeżeli istnieje potrzeba pokazania na wydruku niestandardowych danych można to zrealizować w następujący sposób:
przesynchronizować potrzebne dane do tabeli Configuration bazy mobilnej
umieścić nowe dane na wydruku
Standardowy wydruk termiczny dokumentu Faktura Sprzedaży
Poniżej przedstawiony jest przykład dodania na wydruk dokumentu danych pracownika, który wystawił dokument: Faktura Sprzedaży przy współpracy z Comarch ERP XL 2018.2.1. W sposób opisany poniżej można synchronizować dowolne dane z systemu ERP i prezentować je na wydruku.
Uwaga
Zapytania SQL wykorzystywane w tym przykładzie mogą różnić się w zależności od systemu ERP oraz jego wersji.
W pierwszej kolejności należy w odpowiednim dla wersji systemu ERP pliku konfiguracyjnym znajdującym się w katalogu Methods serwera synchronizacji (ścieżka domyślna: C:\Program Files (x86)\Comarch Mobile\Serwer synchronizacji\Methods\configuration) dodać następujące zapytanie:
UNION ALL
select
1,0,'ImieNazwisko',cast ((Prc_Imie1 +' '+ Prc_Nazwisko) as varchar)from cdn.opekarty opekarjoin cdn.PRCKarty pckar on opekar.Ope_PrcNumer=pckar.Prc_GIDNumerwhere Ope_GIDTyp =128 and Ope_GIDNumer=@UserId
UNION ALL
select
1,0,'telefon',cast (Prc_Telefon3 as varchar)from cdn.opekarty opekarjoin cdn.PRCKarty pckar on opekar.Ope_PrcNumer=pckar.Prc_GIDNumerwhere Ope_GIDTyp =128 and Ope_GIDNumer=@UserId
UNION ALL
select
1,0,'email',cast (Prc_EMail as varchar)from cdn.opekarty opekarjoin cdn.PRCKarty pckar on opekar.Ope_PrcNumer=pckar.Prc_GIDNumerwhere Ope_GIDTyp =128 and Ope_GIDNumer=@UserId
Powyższe zapytania pobierają z bazy systemu ERP dane dotyczące pracownika: imię i nazwisko, telefon, e-mail. Dodanie zapytań do pliku spowoduje, że konkretne dane zostaną przesynchronizowane do tabeli Configuration na bazie mobilnej.
Kolejnym krokiem jest modyfikacja pliku wydruku 11#SalesOrder#data#Thermal#Vline112#Wydruk_domyślny.xml znajdującego się w katalogu Printouts serwera synchronizacji. Należy dodać zapytania pobierające zsynchronizowane wcześniej dane do tabeli Configuration. Nowo dodane fragmenty zostały oznaczone kolorem żółtym:
...
<set>
<name>Logo</name><query>SELECT Data FROM PrintoutsImages WHERE Name='logo.png'</query>
</set>
<set><name>Wystawil</name><query>SELECT Value FROM Configuration WHERE key like 'ImieNazwisko'</query></set><set><name>Wystawiltel</name><query>SELECT Value FROM Configuration WHERE key like 'telefon'</query></set><set><name>Wystawilemail</name><query>SELECT Value FROM Configuration WHERE key like 'email'</query></set>
...
Ostatnim krokiem jest modyfikacja pliku wydruku 11#SalesOrder#layout#Thermal#Vline112#Wydruk_domyślny.xml, która polega na dodaniu wpisów odpowiedzialnych za wyświetlanie danych, które zostały zwrócone w zapytaniach w pliku 11#SalesOrder#data#Thermal#Vline112#Wydruk_domyślny.xml w miejsce nad linię z informacją o osobach uprawnionych i dacie odbioru:
Po wykonaniu powyższych modyfikacji należy wykonać synchronizację z urządzenia mobilnego. Po modyfikacji wydruk termiczny powinien wglądać następująco:
Wydruk dokumentu Faktura Sprzedaży z dodatkowymi danymi
Społeczność Comarch
Dzięki społeczności Comarch ERP rozwiązujemy problemy, dzielimy się pomysłami oraz informujemy o różnych nowościach.