}w!"#$%&'()+,-./012345<ya

Similar documents
Copyright 2016 by Martin Krug. All rights reserved.

Registrácia účtu Hik-Connect

Obsah. SOA REST REST princípy REST výhody prest. Otázky

Aplikačný dizajn manuál

Databázové systémy. SQL Window functions

Riešenia a technológie pre jednotnú správu používateľov

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Manuál k programu FileZilla

Spôsoby zistenia ID KEP

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca

kucharka exportu pro 9FFFIMU

1 Komplexný príklad využitia OOP

Mesačná kontrolná správa

1. ELASTIX inštalácia 2 2. Elastix konfigurácia Nastavenie užívateľských kont Pridanie nových užívateľských kont 10 2.

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára

Mesačná kontrolná správa

Crestron Mercury. Univerzálny Videokonferenčný a Kolaboračný systém

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP

Overené riešenia.

Databázy (1) Prednáška 11. Alexander Šimko

VYLEPŠOVANIE KONCEPTU TRIEDY

Microsoft Azure platforma pre Cloud Computing. Juraj Šitina, Microsoft Slovakia

Košice. Riešenia pre malé a stredné podniky

}w!"#$%&'()+,-./012345<ya

Vzory, rámce a webové aplikácie

Android App Development. Muhammad Sharjeel COMSATS Institute of Information Technology, Lahore

}w!"#$%&'()+,-./012345<ya

MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY

D.Signer prostriedok pre vytváranie zaručeného elektronického podpisu. Inštalačná príručka

LL LED svietidlá na osvetlenie športovísk. MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám.

Nové komunikačné trendy v dátových centrách

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15

Ochrana koncových staníc pomocou Cisco Security Agent 6.0. Ľubomír Varga.

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals...

}w!"#$%&'()+,-./012345<ya

SIP v malých telekomunikačných systémoch. Convergence. A matter of lifestyle.

Klasický WordPress modul Coding standards I18n Post types, taxonomies, meta, options Transients a WP cache Nepoužívajte "super" triedy/objekty

Podporované grantom z Islandu, Lichtenštajnska a Nórska prostredníctvom Finančného mechanizmu EHP a Nórskeho finančného mechanizmu

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE MATERIÁLOVOTECHNOLOGICKÁ FAKULTA V TRNAVE

Informačný portál Národnej rady Slovenskej republiky

Problém Big Data a ako ho riešiť pomocou NoSQL. Ján Zázrivec Softec

prest framework pre webové aplikácie a služby

}w!"#$%&'()+,-./012345<ya

Nový Office. Pre stredné a veľké podniky. Služba. Ovládanie dotykom. zariadenie

BGP - duálne prepojenie AS. (primary + backup spoj), s IBGP, cez virtuální L2 linky

VIRTUALIZÁCIA DÁTOVÝCH ÚLOŽÍSK. Karol Schütz, S&T Slovakia

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit.

JAVA. Sieťové programovanie

Ceny kurzov a školení

Xamarin písanie Android a ios aplikácií v C#

Coordinates ordering in parallel coordinates views

OLYMP na MS SQL OBSAH 1 AKO POSTUPOVAŤ. 2 INŠTALÁCIA Microsoft SQL Servera 2008 R2 3 PREVOD DATABÁZY OLYMPU NA SQL

JEDNODUCHÝ IS PRO MOBILNÍ TELEFONY PRO EVIDENCI HOVORŮ SIMPLE MOBILE PHONE IS FOR CALL EVIDENCE

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna

Tvorba informačných systémov. 4. prednáška: Návrh IS

Databázové systémy. 10. prednáška. NoSQL databázy Viktor Škultéty, ESTEN s.r.o.

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

IBM Tivoli Directory Server Verzia 5.2 Client Readme

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Návod na odstránenie certifikátov so zrušenou platnosťou

Server pre systém na detekciu indikátorov kompromitácie

NIKY a NIKY S. JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV

Informačný systém pre webhostingovú spoločnosť

Absolvování individuální odborné praxe Individual Professional Practice in the Company

Kamera. Sieťová klenbová kamera. Rýchla používateľská príručka---po slovensky. Táto rýchla príručka sa vzťahuje na: DS-2CD2112-(I),

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona

UNIVERZITA KONŠTANTÍNA FILOZOFA V NITRE

REALIZÁCIA VIRTUÁLNEHO LABORATÓRIA S VYUŽITÍM XPC TARGET-u

VZDÁLENÝ PŘÍSTUP K MOBILNÍM ZAŘÍZENÍM REMOTE ACCESS TO MOBILE DEVICES

PODPORNÉ PROSTRIEDKY PRE VERZIOVANIE: VHODNÝ VÝBER PRE NÁŠ TÍM?

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY FYZIKY A INFORMATIKY. Moderné trendy pri tvorbe webových aplikácií

Použitie MS Exchange 2010 v prostredí malej a strednej firmy

Android Overview. Francesco Mercaldo, PhD

Why Android? Why Android? Android Overview. Why Mobile App Development? 20-Nov-18

Introduction To Android

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami)

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

Jednoradové ložiská s kosouhlým stykom - katalóg Single-Row Angular Contact Ball Bearings - Catalogue

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU.

Aplikácia k určovaniu rastlín pre platformu ios

INFORMAČNÉ SYSTÉMY V MARKETINGU

Tvorba webových interaktívnych aplikácií pomocou nástroja Silverlight Interactive web applications using the Silverlight

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová

Metody optimalizace činností firemních struktur. Filip Stránsky

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna

Poradové a agregačné window funkcie. ROLLUP a CUBE

Prvky inovácie nových jazykov HTML5 a CSS3

Komunikácia medzi rôznymi Java (i nejava) aplikáciami

OPERAČNÝ SYSTÉM WINDOWS NT

Servisne orientované architektúry (SOA)

Aplikácia na prezentovanie multimediálneho obsahu na TV

Government Cloud. Stratégia využitia Cloud Computing-u vo Verejnej správe SR. Peter Kišša

MS Exchange 2010 Prechod Ing. Peter Záhradník

SYSTÉM NA EVIDENCIU A KATEGORIZÁCIU

Urobte viac. Nighthawk X10 Inteligentný smerovač WiFi AD7200. Model R9000

PORTÁLOVÉ ŘEŠENÍ PRO MALOU FIRMU PORTAL SOLUTION FOR SMALL COMPANY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Katedra počítačov a informatiky Fakulta elektrotechniky a informatiky Technická univerzita Košice. Informačné technológie Branislav Sobota

Zavedenie produktu do portfólia IT spoločnosti

Transcription:

MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY }w!"#$%&'()+,-./012345<ya Mobilná aplikácia pre CRM-ERP systém OpenERP DIPLOMOVÁ PRÁCA Miroslav Sliacky Brno, 2013

Prehlásenie Prehlasujem, že táto diplomová práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Miroslav Sliacky Vedúci práce: doc. RNDr. Vlastislav Dohnal, Ph.D. ii

Pod akovanie Chcel by som pod akovat svojej rodine a priatel ke ktorí ma podporujú v štúdiu. Ďakujem vedúcemu tejto práce doc. RNDr. Vlastislavovi Dohnalovi, Ph.D. za odborné vedenie a cenné rady. Ďakujem aj firme Cloud Technologies s.r.o a jej zamestnacom. iii

Zhrnutie Táto práca sa zaoberá návrhom a následnou implementáciou mobilného klienta pre open source CRM-ERP systém OpenERP na platforme Android. Vytvorená aplikácia poskytuje užívatel om OpenERP mobilný prístup k systému a správe produktov, zákazníkov a ich objednávok. iv

Kl účové slová Customer Relationship Management, Enterprise Resource Planning, CRM-ERP, OpenERP, OpenERP klient, Android, Java, OpenSource v

Obsah 1 Úvod................................ 1 2 Základné pojmy......................... 3 2.1 CRM............................. 3 2.2 ERP systém......................... 4 2.3 Open source......................... 5 2.4 XML............................. 6 3 CRM-ERP systémy........................ 7 3.1 Komerčné riešenia..................... 7 3.1.1 SAP ERP....................... 7 3.1.2 Microsoft Dynamics................ 8 3.1.3 Oracle E-Business Suite.............. 8 3.1.4 NetSuite ERP.................... 9 3.2 Open source riešenia.................... 9 3.2.1 xtouple ERP..................... 9 3.2.2 Compiere...................... 10 3.2.3 Openbravo..................... 10 3.2.4 Tryton........................ 11 4 OpenERP.............................. 12 4.1 Architektúra......................... 13 4.1.1 Databázový server................. 13 4.1.2 Aplikačný server.................. 13 4.1.3 Web server...................... 14 4.2 Analýza systému...................... 14 5 XML-RPC............................. 15 5.1 RPC.............................. 15 5.2 XML-RPC a Java....................... 16 6 Android.............................. 17 6.1 Charakteristika....................... 17 6.2 História............................ 17 6.3 Verzie a ich zastúpenie................... 18 6.4 Architektúra......................... 19 6.4.1 Linux kernel..................... 19 6.4.2 Knižnice....................... 21 6.4.3 Android Java a Dalvik............... 21 6.4.4 Aplikačný framework............... 22 vi

6.4.5 Aplikácie....................... 22 6.5 Vývoj aplikácií........................ 22 7 Analýza a návrh.......................... 25 7.1 OpenERP 6.1......................... 25 7.1.1 Zákazníci...................... 26 7.1.2 Produkty....................... 27 7.1.3 Predaje........................ 29 7.2 Android OpenERP Client................. 30 7.2.1 Prihlásenie...................... 31 7.2.2 Zákazníci...................... 32 7.2.3 Produkty....................... 34 7.2.4 Predaje........................ 35 7.2.5 Vyhl adávanie.................... 37 7.3 Diagramy prípadov užitia a tried............. 37 8 Implementácia.......................... 40 8.1 Použité knižnice....................... 40 8.1.1 Android-xmlrpc.................. 40 8.1.2 Android-openerp.................. 41 8.1.3 ZXing........................ 42 8.2 Implementačné detaily aplikácie............. 42 8.2.1 AsyncTask...................... 43 8.2.2 Zobrazenie dát................... 44 8.2.3 Rotácia zariadenia................. 44 8.2.4 Lokalizácia..................... 46 8.2.5 Aktivity a fragmenty................ 47 9 Záver................................ 48 A Príloha CD............................ 50 vii

1 Úvod Pre úspech v konkurenčnom boji vynakladajú firmy nemalé úsilie. Snažia sa tak získat výhodu oproti ostatným spoločnostiam na trhu. K najdôležitejším aspektom, ktorým sa firmy venujú patria podnikové procesy a komunikácia so zákazníkmi. Bez ohl adu na to, či sa jedná o výrobu, nákup, predaj, logistiku, účtovníctvo alebo iné činnosti, je dôležité, aby procesy vo všetkých oblastiach boli správne a efektívne plánované a riadené. K tomuto účelu sa využívajú ERP systémy (Enterprise Resource Planning), ktoré mnohé z týchto činností automatizujú a starajú sa tak o jednoduchost a efektívost procesov. CRM systémy (Customer Relationship Management) slúžia firmám pre riadenie komunikácie so zákazníkmi. Používanie CRM-ERP systémov dávalo firmám výhodu v boji s konkurenciou. Dnes už sa však stali prakticky nevyhnutnou súčast ou väčšiny podnikov a je potrebné d alší náskok hl adat inde. Neustávajúci rast popularity zaznamenávajú mobilné technológie. Využívanie smartfónov a tabletov neustále rastie a je preto prirodzené zamerat sa na túto oblast a pokúsit sa využit prepojenie CRM-ERP systémov s mobilnými platformami. V spolupráci s Cloud Technologies s.r.o. sme sa preto rozhodli vytvorit aplikáciu pre operačný systém Android, ktorá bude slúžit ako klient pre open source CRM-ERP systém OpenERP. Komunikácia medzi jednotlivými komponentami bude prebiehat pomocou protokolu XML-RPC. Aplikáciu budú využívat predovšetkým obchodníci bežne pracujúci s OpenERP, ktorým umožní mat kedykol vek k dispozícii správu produktov, zákazníkov a ich objednávok. Napríklad pri stretnutiach s novými potenciálnymi zákazníkmi budú schopní okamžite ich pridat do systému a následne im môžu hned vytvorit novú objednávku. Aplikácia tak prinesie väčšiu flexibilitu pre obchodníkov a odstráni nutnost mat prístup k počítaču pri vytváraní nových objednávok. Obsah práce je rozdelený do jedenástich kapitol. Prvá kapitola je venovaná úvodnému oboznámeniu sa s témou práce. V druhej kapitole sa oboznámime so základnými pojmami ako napríklad CRM, 1

1. ÚVOD ERP a open source. Nasledujúce dve kapitoly sú venované definovaniu CRM-ERP systémov a popisu konkrétnych riešení, ktoré sú rozdelené podl a otvorenosti kódu. Podrobne sa práca venuje hlavne systému, nad ktorým je aplikácia vyvíjaná, OpenERP. Na komunikáciu s ním sa používa protokol XML-RPC, ktorému je taktiež venovaná samostatná kapitola. Ďalšie kapitoly sa venujú samotnému vývoju aplikácie. Najskôr je predstavený operačný systém Android a všetky použité technológie. Nasleduje analýza, návrh a popis implementácie aplikácie. V poslednej kapitole sú zhrnuté výsledky práce. 2

2 Základné pojmy Pre lepšiu orientáciu v problematike CRM-ERP systémov a vývoja mobilných open source aplikácií, ktoré s týmito systémami spolupracujú, si na úvod definujeme niekol ko základných pojmov s ktorými sa môžeme v práci stretnút. 2.1 CRM Skratka CRM pochádza z anglického slovného spojenia Customer Relationship Management riadenie vzt ahov so zákazníkmi. Toto spojenie vzniklo v polovici devät desiatych rokov a do širšieho povedomia sa dostalo koncom desat ročia [9]. Je však zložité nájst jednotnú a jednoduchú definíciu, pretože CRM sa neustále, rýchlo vyvíja a pre rôzne firmy má rozdielny význam. Pre porovnanie si uvedieme niekol ko definícií CRM: Integruje l udí, procesy a technológie s ciel om maximalizovat vzt ahy so všetkými zákazníkmi. CRM je komplexný prístup, ktorý umožňuje bezproblémovú koordináciu medzi všetkými, na zákazníka orientovanými, funkciami. CRM čoraz viac využíva internet (2003). [8] Infraštruktúra, ktorá umožňuje vymedzenie a zvyšovanie hodnoty pre zákazníka a poskytuje správne prostriedky, ktorými cenných zákazníkov motivuje aby zostali lojálni samozrejme, aby znovu nakupovali (2004). [4] Taký dynamický proces riadenia vzt ahu medzi spoločnost ou a zákazníkom, že zákazníci chcú nad alej pokračovat vo vzájomne výhodných obchodných transakciách a naopak sú odrádzaní od transakcií, ktoré sú pre spoločnost stratové. [1] Ako je možné vidiet CRM má za ciel nastavit firemné procesy smerom k zákazníkom a budovat s nimi dlhodobý a vzájomne prospešný vzt ah. Úspešne implementované CRM ponúka množstvo výhod, ako sú napríklad lepšie informácie pre predaj a marketing, zvýšená produktivita alebo kvalitnejší zákaznícky servis [9]. 3

2. ZÁKLADNÉ POJMY Aby však bola implementácia CRM úspešná, je dôležité, aby firma pri nasadzovaní upravila všetky aspekty podl a vlastných potrieb. Neexistuje jedno univerzálne riešenie, ktoré by sa dalo nasadit v každej spoločnosti. 2.2 ERP systém Z anglického Enterprise Resource Planning (plánovanie podnikových zdrojov) pochádza pomenovanie ERP systém, napriek tomu, že o plánovanie sa tieto systémy primárne nestarajú. Ich hlavnou funkciou je prepojenie všetkých oddelení v spoločnosti do jediného informačného systému tak, aby plnil špecifické potreby jednotlivých oddelení. Je náročné vybudovat jeden program vyhovujúci potrebám zamestnancov v oddelení l udských zdrojov a zároveň zamestnancov v sklade. Bežne majú každé z týchto oddelení vlastný systém, optimalizovaný presne pre ich potreby a spôsob práce. ERP systém však práve tieto jednotlivé systémy spája do samostatného celku, do jedného integrovaného informačného systému, ktorý pracuje nad jedinou spoločnou databázou. Napomáha tak jednoduchému zdiel aniu informácií a lepšej komunikácii medzi rôznymi oddeleniami [20]. Rovnako ako pri CRM aj ERP systémy sú vysoko špecifické a pre každú firmu je potrebné navrhnút a implementovat systém na mieru. Nie je možné jednoducho nainštalovat systém, ktorý funguje úspešne v inej spoločnosti. Ak sa však podarí úspešne systém zaviest, môže byt pre firmu vel kým prínosom v mnohých oblastiach [20]: Zjednotenie finančných informácií Pri kontrole financií a stavu firmy majú vedúci pracovníci všetky informácie na jednom mieste. Nemusia riešit nekonzistentnosti, ktoré môžu vzniknút používaním viacerých systémov. Zjednotenie informácií o objednávkach zákazníkov ERP systém sa stáva miestom, kde prebieha celý životný cyklus objednávky, od prijatia až po vyexpedovanie a fakturáciu. Je preto jednoduchšie sledovat objednávky a koordinovat výrobu. Štandardizovanie a urýchlenie výrobných procesov Výrobné spoločnosti, hlavne tie s viacerými výrobnými miestami, často 4

2. ZÁKLADNÉ POJMY vyrábajú produkty rôznymi procesmi s použitím rôznych informačných systémov. ERP automatizuje niektoré kroky výrobného procesu. Ich štandardizácia, používanie jedného systému, tak môže šetrit čas, zvyšit produktivitu a znižit počet potrebných zamestnancov. Štandardizovanie informácií o l udských zdrojoch Najmä vo vel kých podnikoch s viacerými obchodnými jednotkami, môže byt zložité sledovat pracovnú dobu zamestnancov a komunikovat s nimi o výhodách a službách. ERP môže tento nedostatok napravit. 2.3 Open source Pri vývoji softvéru naň autorovi vznikajú zo zákona exkluzívne práva. Medzi ne patria napríklad právo na kopírovanie, distribúciu a vytváranie odvodeného softvéru. Autor sa môže rozhodnút niektoré z týchto práv preniest na ostatných prostredníctvom licenčnej zmluvy. Väčšina komerčných zmlúv sa snaží čo najviac obmedzit používanie softvéru. Open source licencie dávajú užívatel om naopak omnoho viac práv. Najpopulárnejšia open source licencia GNU General Public License napríklad poskytuje právo kopírovat licencovaný softvér, vytvárat z neho odvodené produkty a distribuovat originálnu verziu ako aj jej deriváty [14]. Medzi d alšie obl úbené a často používané licencie patria napríklad: GNU Library alebo Lesser General Public License (LGPL) Apache License 2.0 The MIT License BSD 2-Clause License Simplified alebo FreeBSD GNU Affero General Public License 3.0 GNU AGPL-3.0 Pod licenciou GNU AGPL-3.0 bude uvol nený aj zdrojový kód našej aplikácie, podobne ako je šírené aj OpenERP. 5

2. ZÁKLADNÉ POJMY Viac informácií je možné nájst na internetových stránkach Open Source Initiative. 2.4 XML Extensible Markup Language rozšíritel ný značkovací jazyk je štandard, ktorý bol schválený konzorciom W3C (World Wide Web Consortium). Definuje všeobecnú syntax pre označenie dát pomocou jednoduchých, pre l udí čitatel ných značiek. Poskytuje tým štandardný formát dát, ktorý je natol ko flexibilný, že môže byt upravený pre domény tak rozdielne, ako sú internetové stránky, vektorová grafika, volanie vzdialených procedúr a mnoho d alších [10]. Príklad XML kódu použitého v OpenERP: 1 <?xml version="1.0"?> 2 <openerp> 3 <data> 4 <record id="view_servers_form" model="ir.ui.view"> 5 <field name="name">x_server.form</field> 6 <field name="model">x_server</field> 7 <field name="type">form</field> 8 <field name="arch" type="xml"> 9 <form string="servers"> 10 <group> 11 <field name="url"/> 12 <field name="ip"/> 13 <field name="server"/> 14 <field name="note"/> 15 </group> 16 <notebook> 17 <page string="partners"> 18 <field name="partners" 19 widget="one2many_list"/> 20 </page> 21 </notebook> 22 </form> 23 </field> 24 </record> 25 </data> 26 </openerp> 6

3 CRM-ERP systémy V predchádzajúcej kapitole sme sa oboznámili s významom CRM a ERP systémov a zistili sme aké výhody prinášajú. Pre väčšie a stredné podniky je prakticky nevyhnutné implementovat niektoré z na trhu dostupných riešení. Je však dôležité, aby vybraný systém dokonale spĺňal všetky požiadavky kladené danou firmou. Musí preto byt priamo vytvorený na zákazku alebo dostatočne upravený. Aby CRM-ERP systémy mohli byt jednoducho upravované a splnit tak všetky nároky, ktoré sú na ne kladené, sú väčšinou vytvárané modulárne. Zavedenie vo firme je následne jednoduchšie. Pri každej implementácii sa použijú a upravia len potrebné moduly. CRM-ERP systémy môžeme rozdelit do dvoch kategórií podl a otvorenosti ich zdrojového kódu. Komerčné riešenia s uzavretým zdrojovým kódom a open source riešenia, ktoré sú vydávané pod rôznymi open source licenciami. V nasledujúcej časti si predstavíme niekol ko zástupcov z obidvoch skupín a pozrieme sa aj na to, či ponúkajú svojim zákazníkom aj prístup pomocou mobilných klientov. 3.1 Komerčné riešenia 3.1.1 SAP ERP SAP ERP je systém vyvinutý nemeckou medzinárodnou spoločnost ou SAP AG Systems, Applications, and Products in Data Processing, založenou v roku 1972. V minulosti sa označoval ako SAP R/3. Dnes však SAP ponúka množstvo produktov a modulov, ktorých centrálnym komponentom je práve SAP ERP [11]. SAP ponúka aj širokú škálu mobilných aplikácií pre smartfóny aj tablety na všetkých platformách ios, Android, Blackberry a Windows. Nie však v rovnakej miere. Najviac aplikácií ponúka pre ios takmer 160, na druhom mieste je Android s polovičným počtom a najmenej aplikácií poskytuje pre Blackberry a Windows do 25. Domovská stránka: http://www.sap.com 7

3. CRM-ERP SYSTÉMY 3.1.2 Microsoft Dynamics Ked sa Microsoft rozhodol vstúpit na trh s ERP riešeniami v roku 2000, začal tým, že odkúpil popredné firmy v tomto odbore v Spojených štátoch amerických a v Európe. Získal tak štyri ERP riešenia: Microsoft Dynamics GP Great Plains Microsoft Dynamics SL Solomon Microsoft Dynamics AX Axapta Microsoft Dynamics NAV Navision Ich výhodou je výška investícií, ktoré Microsoft venuje na výskum a vývoj svojich produktov, integrácia s ostatnými produktami, ako napríklad Microsoft Office a v neposlednom rade aj množstvo informácií, ktoré Microsoft o svojich produktoch poskytuje, vrátane dlhodobých plánov [12]. Mobilných klientov pre Microsoft Dynamics CRM poskytuje niekol ko spoločností a to na všetkých významných platformách. Patrí medzi ne BFI Mobile GmbH & Co. KG ale napríklad aj slovenská firma Resco spol. s.r.o. [BFI, Resco] Domovská stránka: www.microsoft.com/dynamics 3.1.3 Oracle E-Business Suite Oracle ponúka svojim zákazníkom vlastné riešenie s názvom Oracle E-Business Suite. Jedná sa o balík niekol kých aplikácií rozdelených do rôznych kategórií ako napríklad: CRM správa služieb správa financií pokročilé verejné obstarávanie a iné Oracle ponúka v oblasti mobilných klientov iba niekol ko aplikácií pre iphone a ipad. Sú to napríklad Oracle Business Approvals for 8

3. CRM-ERP SYSTÉMY Managers, Oracle Mobile Sales Assistant alebo Oracle Mobile Sales Forecast. Domovská stránka: http://www.oracle.com/us/products/ applications/ebusiness 3.1.4 NetSuite ERP NetSuite je jedným z popredných poskytovatel ov cloud ERP riešení (SaaS softvér ako služba). Cloudové riešenia šetria náklady spoločností spojené so zavedením a udržovaním infraštruktúry potrebnej na prevádzku. NetSuite ERP je postavené modulárne a je jednoducho upravitel né potrebám jednotlivých zákazníkov. Všetky úpravy sú následne zachovávané aj pri automatických prechodoch na novšie verzie systému. NetSuite ponúka zo spomínaných systémov najmenej čo sa týka mobilných klientov pre svoje CRM-ERP systémy. Dve z riešení sú primárne zamerané na Blackberry a starší Windows Mobile Mobile Edge, Explore Mobile. Tretí SuiteDroid je vyvýjaný pre OS Android. Domovská stránka: http://www.netsuite.com/ 3.2 Open source riešenia 3.2.1 xtouple ERP Spoločnost xtouple ponúka svoje open source riešenie v štyroch edíciách: PostBooks Standard Manufacturing Enterprise Ako už samotné názvy napovedajú, počet funkcií obsiahnutých v systéme postupne stúpa a s nimi aj zameranie na vel kost firmy. xtouple neponúka mobilného klienta v pravom slova zmysle. Ich riešenie sa nazýva xtouple Mobile Web. Ide o aplikáciu založenú na 9

3. CRM-ERP SYSTÉMY HTML5, napísanú v JavaScripte. Dá sa preto spustit v prehliadači v každom smartfóne, tablete či stolnom počítači. Domovská stránka: https://www.xtuple.com/ 3.2.2 Compiere Compiere pôvodne začínal ako open source projekt poskytovaný pod licenciou GNU GPL. Na Sourceforge patril medzi top 10 produktov medzi rokmi 2002 až 2006. Následne, po príchode investora sa rozhodli autori svoj produkt ponúkat komerčne a vznikli tak dve verzie ich systému [16]: Community edition Open source verzia, podporovaná a spravovaná komunitou. Enterprise edition Komerčná verzia systému s priamou podporou výrobcu. Pre Compiere je jediným dostupným mobilným klientom Compiere Mobile vyvíjaný firmou Astidian Systems. Funkčne ide skôr o prehliadač, čím sa má zabezpečit použitel nost na rôznych platformách. GUI je ladené do štýlu ios, aby bolo jeho používanie prívetivé pre užívatel ov [19]. Domovská stránka: http://www.compiere.com/products/ 3.2.3 Openbravo Openbravo bol prvýkrát vydaný v roku 2006. Je navrhnutý tak, aby v čo najväčšej miere podporoval možnosti úprav systému a nezameriava sa preto na špecifický druh priemyslu. Pristupuje sa k nemu cez internetový prehliadač. Spoločnostiam so vzdialenými pobočkami a pracovníkmi, ktorí musia cestovat tak ponúka jednoduché riešenie [6]. Openbravo má k dispozícii niekol ko aplikácií. Jednu z nich môžu využívat zamestnanci na samotnom mieste predaja, napríklad v reštauráciách. Ďalšia Openbravo Analytics ponúka analýzu dát z inštancie Openbravo priamo v smartfóne. Domovská stránka: http://www.openbravo.com/ 10

3. CRM-ERP SYSTÉMY 3.2.4 Tryton Tryton je systém, ktorého vývoj sa začal koncom roku 2008 ako komunitná verzia systému OpenERP. Napísaný je v jazyku Python a používa databázu PostgreSQL. Skladá sa z troch komponent: Klient Server Moduly Tryton je dostupný pod licenciou GPLv3 a to pre Linux, Windows a Mac OS X. Tryton Android, ako je z názvu zrejmé je klient pre Tryton ERP na platforme Android. Je to všeobecný klient a mal by byt kompatibilný so všetkými modulmi. Umožňuje prístup k účtovníctvu, faktúram, výrobe, skladu atd. Domovská stránka: http://www.tryton.org/ 11

4 OpenERP V predchádzajúcej kapitole sme sa oboznámili s rôznymi CRM-ERP systémami, ktoré sme rozdelili do dvoch skupín podl a otvorenosti ich kódu. Do skupiny open source riešení patrí aj OpenERP, ktoré je publikované pod licenciou AGPL. OpenERP S.A. ponúka svoj produkt v troch variantách: OpenERP Enterprise Verzia pre podniky pripravená priamo na produkčné nasadenie a použitie. Ide však o spoplatnenú verziu. V cene je zahrnutá plná podpora zo strany OpenERP, neobmedzené migrácie na nové verzie systému, záruka na o- pravy chýb a bezpečnostné upozornenia. Zároveň je poskytnutá možnost pre zákazníkov vytvárat si vlastné, súkromné moduly rozšírením licencie na AGPL + Private Use. Firmy tak môžu používat open source softvér a zároveň si strážit svoje citlivé dáta. OpenERP Community Plná verzia systému so všetkými jeho súčast ami, ale nie je zahrnutá akákol vek priama podpora zo strany OpenERP, ani migrácie na novšie verzie a nie je možné ani používat súkromné moduly. To znamená, že všetky novo vytvorené moduly musia byt zverejnené aj so zdrojovými kódmi komunite. S touto verziou OpenERP pracujeme aj my. OpenERP Online Online verzia ponúka zákazníkom cloudovú alternatívu voči ostatným produktom. Taktiež ako pri verzii enterprise ide o spoplatnenú verziu, avšak lacnejšiu. Systém je v tomto prípade umiestnený na serveroch OpenERP a je nimi preto aj spravovaný. V cene sú taktiež zahrnuté zálohy a migrácie, nie je však možné používat súkromné moduly ani moduly vytvorené komunitou, iba oficiálne. Vývoj OpenERP začal v roku 2005, pôvodne pod názvom Tiny ERP. V roku 2008 pri verzii 4.2.X bol následne premenovaný tento systém na dnešné OpenERP a dostupný je už vo verzii 7.0. Napriek tomu, že vývoj našej aplikácie prebiehal ešte pre staršiu verziu 6.1, úpravy potrebné pre fungovanie s najnovšou verziou by v prípade potreby nemali byt zásadné. [15] 12

4.1 Architektúra 4. OPENERP Systém OpenERP sa skladá z troch komponent databázový server, aplikačný server a web server (v tomto kontexte chápaný ako klient pre aplikačný server) [15]. 4.1.1 Databázový server Databázový server tvorí dátovú vrstvu architektúry OpenERP. Ako relačný a objektový databázový systém je používaný PostgreSQL. Je to vol ne šíritel ný, vysoko výkonný open source systém, ktorý je dostupný pre všetky operačné systémy od Unix/Linux cez Windows až po Mac OS X, Solaris, SunOS a BSD. Na databázovom serveri sú ukladané databázy jednotlivých inštancií OpenERP, v ktorých sú ukladané dáta spolu s väčšinou nastavení. Napriek tomu, že SQL dotazy môžu byt vykonávané priamo z OpenERP modulov, väčšina prístupov do relačných databáz je vykonávaných cez objektovo-relačné mapovanie (ORM [13]). ORM je charakteristickým prvkom systému. Dátové modely sú zadefinované v jazyku Python a OpenERP vytvára tabul ky v samotnej databáze. Jej výhody ako sú napríklad relačná integrita, obmedzenia unikátnosti, efektívne dotazy a iné sa tak spájajú s flexibilitou Pythonu. 4.1.2 Aplikačný server O všetku vnútornú logiku systému a o to, aby fungoval optimálne sa stará aplikačný server, tvoriaci logickú vrstvu architektúry. Je navrhnutý a napísaný ako jadro, ku ktorému môžu byt následne doinštalované d alšie moduly a vytvorí sa tak špecifická konfigurácia OpenERP. Jadro i moduly sú písané v Pythone. Na aplikačnom serveri môžu byt vytvorené špecifické biznis aplikácie a obsahuje taktiež kompletný vývojový framework, poskytujúci rozsah funkcií pre ich vytváranie ORM, MVC, rozšíritel né dátové modely a pohl ady a iné. 13

4. OPENERP 4.1.3 Web server Web server je samostatná aplikácia s názvom Open Object client-web, ktorá umožňuje užívatel om pripojit sa k OpenERP pomocou štandardného prehliadača. Na komunikáciu s aplikačným serverom využíva protokol NET-RPC. Spolu s GTK klientom je súčast ou prezentačnej vrstvy architektúry OpenERP. Je možné všimnút si v pomenovaní istú nekonzistentnost. Jedná sa teda o server alebo klienta? Pre vysvetlenie je potrebné uviest, že sa na tento komponent môžeme pozerat z dvoch uhlov pohl adu. Pre internetový prehliadač sa javí ako web server, ale naopak z pohl adu aplikačného servera sa správa ako klient. Záleží teda na kontexte. 4.2 Analýza systému Z pohl adu vývoja klienta pre OpenERP je pre nás najdôležitejší aplikačný server, s ktorým bude aplikácia priamo spolupracovat. Pre komunikáciu medzi klientmi a serverom sa využíva niektorý z protokolov XML-RPC, NET-RPC alebo JSON-RPC. Posledný menovaný bol pridaný až vo verzii 6.1. My budeme využívat prvý z nich XML-RPC, ktorý si popíšeme bližšie v nasledujúcej kapitole. Jedným z hlavných rysov OpenERP je jeho modulárnost, vd aka ktorej sa dá jednoducho prispôsobit potrebám takmer každej spoločnosti. Pre našu aplikáciu sme sa rozhodli pracovat s čo najzákladnejšou verziou s čo najmenším počtom modulov, aby bola jednoducho nasaditel ná do väčšiny inštancií. Je možné ju preto spustit aj nad čistou, novou inštanciou, ale v takom prípade bude dostupná len správa zákazníkov. Pre plnú funkčnost aplikácie správa užívatel ov, produktov a objednávok je potrebné mat nainštalovaný modul riadenia predaja (Sales Management). 14

5 XML-RPC Webová služba je sadou nástrojov umožňujúcou vývoj aplikácií nad existujúcou webovou infraštruktúrou. Tieto aplikácie využívajú internet ako akúsi transportnú vrstvu, ale neponúkajú priame l udské rozhranie cez prehliadač. XML-RPC patrí medzi najjednoduchšie, ale zároveň najspol ahlivejšie riešenia webových služieb a zjednodušuje volania procedúr na vzdialených počítačoch. Využíva infraštruktúru, ktorá bola pôvodne vytvorená pre komunikáciu medzi l udmi, na komunikáciu medzi počítačovými programami. XML poskytuje slovník pre popis vzdialených volaní procedúr RPC (Remote Procedure Call), ktoré sú následne prenesené medzi počítačmi pomocou HTTP (HyperText Transfer Protocol). [18] 5.1 RPC Volanie vzdialených procedúr je podstatne staršia technológia ako internet. Samotný koncept je v podstate tak starý ako siete, napriek tomu sa Sun Microsystems považuje za tvorcu všeobecného formálneho mechanismu na volanie procedúr a návrat výsledkov pomocou sietí. Napriek tomu, že RPC pri svojom fungovaní produkuje naviac isté režijné náklady, s knižnicami na obidvoch stranách pripojenia vytvára a spracováva správy a zároveň môže vzniknút aj oneskorenie spôsobené siet ou, poskytuje možnost ako distribuovane spracovávat a zdiel at informácie. Jeho koncepcia ul ahčuje prácu programátorom, pretože sa vd aka RPC nemusia podrobne zaoberat štruktúrou siete, siet ovými protokolmi ani inými implementačnými detailami. Aj programy napísané pre rôzne platformy tak môžu spolu komunikovat ak majú spoločnú siet. RPC tak dáva vývojárom možnost vytvárat rozhrania, ktoré môžu byt volané po sieti, či už ide o jednoduché rozhrania o vel kosti rádovo jednotiek funkcií alebo komplexné API. [18] 15

5.2 XML-RPC a Java 5. XML-RPC Java má vlastný mechanizmus pre vzdialenú komunikáciu a koordináciu objektov RMI (Remote Method Invocation), ktorý je na dostatočne pokročilej úrovni oproti konkurencii. XML-RPC má napriek tomu niekol ko výhod [18]: Odl ahčenost, jednoduchost odosiela iba parametre miesto celých objektov. Jednoduchá konektivita s l ubovol ným systémom, ktorý podporuje XML-RPC nemusí sa obmedzovat iba na Java systémy využívajúce RMI ani na komplexných CORBA sprostredkovatel ov komunikácie. XML-RPC využíva len malú čast HTTP Java aplikácie sa tak môžu vyhnút nadbytočnej réžii spracovania plného protokolu HTTP a fungovat efektívnejšie. 16

6 Android V tejto kapitole si predstavíme operačný systém Android. Oboznámime sa s jeho históriou, ale hlavne sa naň pozrieme z pohl adu vývoja mobilných aplikácií. 6.1 Charakteristika Android je komplexná open source platforma navrhnutá pre mobilné zariadenia. Vlastní ho Open Handset Alliance (OHA), nezisková skupina zložená z kl účových mobilných operátorov, výrobcov hardvéru, vývojárov a d alších spoločností, ako napríklad Google, HTC, Intel, Dell, Motorola, LG Electronics, Samsung Electronics, Nvidia atd. Úlohou tejto širokej aliancie je urýchlit vývoj a inovácie v mobilných technológiách a ponúknut zákazníkom bohatší a lacnejší zážitok z mobilných technológií. Je však stále ešte relatívne mladá a niektorí členovia sa ešte len učia navzájom spolupracovat. Momentálne na Androide najviac pracuje samotný Google [7] [5]. 6.2 História Kl účové momenty v histórii systému Android [7]: V roku 2005 Google kúpil Android, Inc. Verejnost sa domnieva, že príde na trh s vlastným smartfónom gphone Následne, po dlhšej odmlke, až v roku 2007 vzniká Open Handset Alliance a Android oficiálne otvára svoj zdrojový kód a stáva sa open source platformou. V roku 2008 je vydaný Android SDK 1.0.Tesne na to prichádza na trh telefón G1 od HTC. Nasledujúci rok sa zvyšuje počet zariadení založených na Androide je ich viac ako 20. Vychádzajú nové verzie operačného systému: Cupcake (1.5), Donut(1.6) a Eclair (2.0 a 2.1). 17

6. ANDROID Android je za Blackberry druhou najlepšie sa predávajúcou platformou pre smartfóny v roku 2010. Vychádza Froyo (Android 2.2) a využíva ho viac ako 60 zariadení. V tom istom roku začal Google vydávat sériu zariadení Nexus vlajkové lode vyrábané jeho partnermi, ktoré majú prezentovat najnovšie vlastnosti systému. Aktuálna verzia operačného systému je 4.2.x Jelly Bean 6.3 Verzie a ich zastúpenie Ako každý softvér aj Android je neustále vyvíjaný a vylepšovaný, pribúda nová funkcionalita a prejavuje sa to na čísle verzie systému. Prehl ad všetkých verzií ukazuje nasledujúca tabul ka 6.1. Verzia API level Kódové meno Distribúcia Android 1.0 1 <0.1% Android 1.1 2 <0.1% Android 1.5 3 Cupcake <0.1% Android 1.6 4 Donut 0.1% Android 2.0 5 Eclair <0.1% Android 2.01 6 Eclair <0.1% Android 2.1 7 Eclair 1.7% Android 2.2 8 Froyo 3.7% Android 2.3 9 Gingerbread 0.1% Android 2.3.3 10 Gingerbread 38.4% Android 3.0 11 Honeycomb <0.1% Android 3.1 12 Honeycomb <0.1% Android 3.2 13 Honeycomb 0.1% Android 4.0 14 Ice Cream Sandwich <0.1% Android 4.0.3 15 Ice Cream Sandwich 27.5% Android 4.1 16 Jelly Bean 26.1% Android 4.2 17 Jelly Bean 2.3% Tabul ka 6.1: Verzie OS Android a ich zastúpenie k 1. 5. 2013 [7][2]. 18

6. ANDROID Obr. 6.1: Relatívne zastúpenie verzií systému Android k 1. 5. 2013 [2]. Dáta k prehl adu verzií operačného systému Android boli získané z prístupov do Google Play Store počas dvojtýždňového obdobia, končiaceho 1. 5. 2013. 6.4 Architektúra V tejto podkapitole sa pozrieme podrobne na operačný systém Android, konkrétne na jeho architektúru. Jej porozumenie nám pomôže pri programovaní pochopit čo všetko dokáže. Skladá sa zo štyroch vrstiev (vid. 6.2) [7]: Linuxové jadro (Linux kernel) Knižnice (Libraries, Android runtime) Aplikačný framework (Aplication framework) Aplikácie (Applications) 6.4.1 Linux kernel Android je vystavaný nad jadrom operačného systému Linux. Ide o kvalitný systém, ktorý je jedným z hlavných zástupcov open source. Medzi hlavné dôvody pre jeho výber patrí jeho portabilita, bezpečnost a iné funkcie. [7] 19

6. ANDROID Obr. 6.2: Vrstvy OS Android [2]. Portabilita Linux je prenosná platforma, ktorá sa dá pomerne jednoducho skompilovat na rôznych druhoch zariadení. Tento stupeň abstrakcie hardvéru prináša aj pre Android. Nie je preto potrebné obávat sa o hardvér na ktorom pobeží. Bezpečnost Linux je zároveň vel mi bezpečný systém, testovaný drsnými podmienkami počas desat ročí. Android sa výrazne spolieha na jeho bezpečnost tým, že všetky aplikácie bežia ako oddelené Linuxové procesy s oprávneniami nastavenými práve Linuxom, ktorý beží pod ním. 20

6. ANDROID Funkcie Súčast ou Linuxu je aj množstvo d alších užitočných funkcií, ktoré Android využíva. Patria sem napríklad podpora správy pamäte, správa napájania, správa sietí a iné. 6.4.2 Knižnice Sú to C/C++ knižnice prevažne z open source komunity, ktoré poskytujú potrebné služby aplikačnej vrstve. Okrem iných sú to napríklad [7]: Webkit Rýchly engine na zobrazovanie webu, používaný Safari, Chrome a inými prehliadačmi. SQLite Plnohodnotná SQL databáza. Apache Harmony open source implementácia Javy OpenGL Knižnica pre 3D grafiku OpenSSL Open source implementácia protokolu SSL Bionic Prepísaná verzia štandardnej knižnice C z licenčných a technologických dôvodov. 6.4.3 Android Java a Dalvik V Jave je zdrojový kód kompilovaný na Java bitový kód, ktorý sa následne vykonáva v Java VM. Java VM však nie je vol ne dostupný, preto Dan Bornstein a jeho tím v Google vyvinuli virtuálny stroj, špeciálne navrhnutý pre Android Dalvik. Aby ten vedel príkazy spracovat, musí byt Java bitový kód skompilovaný do Dalvik bitového kódu. Android Java nie je súborom tried štandardnej Javy. Najbližšie má k Java SE. Hlavný rozdiel je v tom, že knižnice užívatel ského rozhrania (AWT a Swing) boli nahradené knižnicami špecifickými pre Android. Naviac pridáva aj d alšie funkcie, no zachováva väčšinu tých pôvodných. 21

6. ANDROID 6.4.4 Aplikačný framework Aplikačný framework je funkčne bohaté prostredie, ktoré poskytuje služby vývojárom pri vykonávaní ich práce. Je to najlepšie zdokumetovaná čast systému, pretože dáva programátorom nástroje pre vývoj kvalitných, kreatívnych aplikácií. Patrí medzi ne množstvo Java knižníc špeciálne vytvorených pre Android, ale aj služieb a manažérov sprostredkujúcich využívanie schopností telefónu Wifi, senzory, lokáciu zariadenia a iné. 6.4.5 Aplikácie Poslednou vrstvou je vrstva samotných aplikácií, medzi ktoré patrí aj náš klient pre OpenERP. Sú to práve aplikácie, ktoré si mnohí užívatelia najviac cenia na Androide. Aplikáciu tvorí jeden balík APK súbor, ktorý sa skladá z troch hlavných častí: Dalvik spustitel ný súbor Zdrojový kód skompilovaný pre Dalvik VM, na základe ktorého aplikácia beží. Zdroje Sem patrí všetko, čo nie je kód. Aplikácie môžu obsahovat okrem kódu aj obrázky, videá, XML súbory popisujúce rozvrhnutie obrazoviek aplikácie, jazykové balíky a pod. Natívne knižnice V niektorých prípadoch môžu aplikácie obsahovat aj natívny kód ako napríklad C/C++ knižnice, ktoré môžu byt zabalené spolu v APK súbore. 6.5 Vývoj aplikácií Ako sme si ukázali v podkapitole 6.3, na trhu sú dostupné zariadenia s rôznymi verziami systému Android. Túto skutočnost musia zohl adnit aj vývojári pri návrhu a implementácii svojich aplikácií výberom minimálnej a ciel ovej verzie. Ciel ová verzia určuje typ systému Android, na ktorom sa aplikácia plánuje používat. Minimálna väčšinou korešponduje s ciel ovou 22

6. ANDROID verziou, ale ak sa aplikácia nespolieha na najnovšie API alebo dokáže pracovat aj so staršími, tak môže byt nastavená nižšia verzia ako je ciel ová [7]. V našej aplikácii sme sa rozhodli pre minimálnu verziu API 11 Android 3.0 Honeycomb. Obsahuje množstvo noviniek, ktoré sme využili aj pri implementácii a niektoré z nich si popíšeme. Podpora viacjadrových architektúr procesorov Android 3.0 je prvou verziou systému, ktorá bol navrhnutá aby fungovala na jedno aj viacjadrových architektúrach procesorov. Bolo potrebné vykonat pre to množstvo zmien vo virtuálnom stroji Dalvik, knižnici Bionic a inde. Z týchto úprav profitujú všetky aplikácie, vrátane jednovláknových. Ak jednovláknovú aplikáciu spustíme na zariadení s viacerými jadrami, systém automaticky zariadi, aby na druhom jadre bol spustený napr. garbage collector a zrýchli tak čiastočne beh aplikácie [3]. Aktivity a fragmenty Aktivitou sa obyčajne nazýva jedna obrazovka, ktorú v danom čase vidí užívatel na zariadení. Aplikácia sa skladá z niekol kých aktivít, medzi ktorými sa užívatel môže pohybovat [7]. Od API verzie 11 (Obr. 6.1) ponúka Android naviac fragmenty. Ide o akési podaktivity, ktoré musia byt umiestnené v aktivitách. Môžu však byt použité modulárne na viacerých miestach v aplikácii. Ich využitie nájdeme napríklad v aplikáciách, ktoré podporujú aj zobrazenie na tabletoch. Kedže tablety majú väčšiu obrazovku, aplikácie, ktoré na ňom bežia môžu často zobrazovat viac fragmentov naraz. Naopak ak je tá istá aplikácia spustená na menšom smartfóne, je možné to detekovat a zobrazit každý fragment v samostatnej aktivite. Action Bar Novinkou je tiež takzvaný Action Bar ovládacia lišta v hornej časti obrazovky. V aplikácii môže byt využitý pre rýchly prístup užívatel ov ku kontextovému menu (nahrádza tým tlačítko Menu na starších 23

6. ANDROID zariadeniach), rôznym nástrojom, navigácii a d alším ovládacím prvkom. Vývojári tak sprostredkúvajú viacero funkcií na jednom mieste a zjednocujú tak ich používanie naprieč aplikáciou [3]. Spätná kompatibilita Z pohl adu vývoja aplikácií je dôležité aby staršie aplikácie bez problémov fungovali na nových zariadeniach. Android 3.0 napriek množstvu noviniek, ktoré boli zavedené, je plne spätne kompatibilný s aplikáciami vyvinutými pre staršie verzie systému [3]. 24

7 Analýza a návrh V tejto kapitole sa budeme venovat analýze systému OpenERP. Oboznámime sa s jeho webovým rozhraním a zameriame sa na to, akým spôsobom je používaný obchodníkom pri vykonávaní svojej práce. Zo získaných poznatkov následne zanalyzujeme akú funkcionalitu by mala naša aplikácia ponúknut a v akej forme tak, aby ostala intuitívna pre užívatel ov štandardného webového klienta. Výstupom tejto analýzy a návrhu budú diagramy prípadov užitia a tried, nachádzajúce sa v záverečnej časti kapitoly. 7.1 OpenERP 6.1 Obrazovka, ktorá sa zobrazí užívatel ovi po prihlásení do systému sa dá každému osobitne nastavit. Implicitne sa však zobrazí ponuka dostupných častí systému Predaj, Sklad, Účtovníctvo, Nastavenia a d alšie (vid. 7.1). K presunu do inej časti systému môžu byt využité vel ké ikony v strede obrazovky, menšie ikony, ktoré sa nachádzajú nad nimi v navigačnom paneli alebo užívatel ské skratky nad panelom. Obr. 7.1: Úvodná obrazovka OpenERP [17] 25

7. ANALÝZA A NÁVRH 7.1.1 Zákazníci Pri zobrazovaní záznamov v OpenERP sa využívajú prevažne dva druhy pohl adov tzv. stromový (Obr. 7.2) a formulár (Obr. 7.3). Stromový pohl ad zobrazuje všetky záznamy v prehl adnej tabul - ke. V našom prípade je to tabul ka so zákazníkmi, ktorej stĺpce zobrazujú najdôležitejšie údaje meno, telefón, e-mail, mesto, krajinu a priradeného obchodníka. Obr. 7.2: OpenERP Zákazníci [17] Formulár naopak zobrazuje bližšie informácie o jednom konkrétnom zázname zákazníkovi. V tomto pohl ade už nájdeme v poliach všetky o ňom dostupné informácie. Modrým podfarbením sú označené tie, ktoré sú povinné. Tento formulár sa používa pri vytváraní nových zákazníkov, ale aj pri zobrazovaní a úprave tých existujúcich. Pre užívatel a je teda dôležitý prehl adný zoznam zákazníkov s najdôležitejšími údajmi. A následne po výbere konkrétneho zákazníka zobrazenie jeho bližších, podrobnejších informácií. Pri pridávaní nového zákazníka do systému užívatel jednoducho vyplní všetky povinné a l ubovol né nepovinné polia a klikne na tlačítko Uložit, ktoré je umiestnené v l avom hornom rohu (Obr. 7.3). 26

7. ANALÝZA A NÁVRH Obr. 7.3: OpenERP Zákazníci, editovací formulár [17] 7.1.2 Produkty Ďalšou čast ou systému, s ktorou prichádza obchodník do styku pri svojej práci, je správa produktov. V stĺpcoch tabul ky všetkých produktov sú zobrazené: referencia (odkaz), názov, merná jednotka, typ výrobku, množstvo na sklade, dostupné množstvo, verejná cena, výrobná cena a stav produktu (Obr. 7.4). Pri upravovaní parametrov produktu alebo pri vytváraní nového, je štandardne využitý editovací formulár (Obr. 7.5). Je možné si všimnút, že povinných polí je pri produktoch viac. Pre užívatel a to však nie je nijak zásadná komplikácia, pretože okrem mena majú všetky polia nastavené implicitné hodnoty. Obchodník túto čast systému využíva väčšinou v prípadoch kedy potrebuje do OpenERP pridat nový produkt alebo upravit parametre niektorého z už existujúcich. Pri vytváraní objednávok pristupuje k produktom nepriamo cez previazané pole vo formulári objednávky. 27

7. ANALÝZA A NÁVRH Obr. 7.4: OpenERP Produkty [17] Obr. 7.5: OpenERP Produkty, editovací formulár [17] 28

7. ANALÝZA A NÁVRH 7.1.3 Predaje Predaje sú pre obchodníka najdôležitejšou čast ou systému. Tu si vytvára, spravuje predajné objednávky a sleduje ich životný cyklus od návrhu až po úspešné dokončenie alebo zrušenie. Stav objednávky je zobrazený aj pri stromovom pohl ade zároveň s d alšími základnými informáciami ako sú kód ojednávky, dátum, zákazník, zodpovedný obchodník, suma bez dane, celková suma a informácie o tom či je objednávka vyfaktúrovaná a objednané produkty pripravené k odberu (Obr. 7.6). Pri vytváraní novej predajnej objednávky sa obchodníkovi zobrazí obdobný formulár ako v predchádzajúcich prípadoch (Obr. 7.7). Niektoré z polí sú predvyplnené implicitnými alebo vygenerovanými hodnotami. Je potrebné doplnit zákazníka a samotné riadky objednávky. Zákazník sa vyberá pomocou pol a previazaného s doménou zákazníkov. Táto väzba užívatel ovi poskytuje funkcie automatického doplnenia, vyhl adania alebo vytvorenia zákazníka. Obr. 7.6: OpenERP Predaje [17] Riadky objednávky sa pridávajú tlačítkom vytvorit (Obr. 7.7). V okne, ktoré sa následne zobrazí, sa podobne ako zákazník vybe- 29

7. ANALÝZA A NÁVRH rie tentokrát produkt a zvyšné údaje, ako napríklad cena, sa doplnia automaticky (je však možné ich ešte upravovat ). Zadá sa už len požadované množstvo. Hotovú objednávku je následne možné potvrdit zmení sa tým jej stav. Obr. 7.7: OpenERP Predaje, editovací formulár [17] Zákazníkov a produkty je možné kedykol vek upravovat. U objednávok je to trochu zložitejšie. Upravovat je možné len tie predajné objednávky, ktoré sú v stave Návrh (Draft). V prípade, že je nutné upravit schválenú objednávku, musí sa najprv zrušit a následne previest spät na Návrh. 7.2 Android OpenERP Client Ako je možné vidiet na snímkach z webového rozhrania, OpenERP je komplexný a pomerne zložitý CRM-ERP systém. Pre jeho pohodlné a prehl adné používanie obchodníkom aj na mobilných zariadeniach je preto potrebné, aby bol počet informácií zredukovaný na tie najdôležitejšie údaje danej časti systému. Podobne ako v prehliadači, ani v našej aplikácii sa dáta nebudú lokálne ukladat a všetky operácie budú vykonávané online, priamo na serveri prostredníctvom XML-RPC protokolu. 30

7. ANALÝZA A NÁVRH 7.2.1 Prihlásenie Po spustení aplikácie, rovnako ako vo webovom rozhraní, sa užívatel najprv prihlási (Obr. 7.8). Okrem štandardných údajov ako sú užívatel ské meno a heslo, vyplní informácie o pripojení URL adresu servera, na ktorom beží OpenERP a názov databázy, do ktorej sa pripája. Neustále vyplňovanie všetkých údajov pri každom prihlásení by bolo užívatel sky výrazne neprívetivé. Preto aplikácia ponúkne možnost ich zapamätania. Obr. 7.8: Klient Uvítacia obrazovka, prihlásenie Po prihlásení do systému sa užívatel ovi naskytne podobný pohl ad ako pri využití webového klienta. Hlavné menu zobrazí ikony zodpovedajúce dostupným častiam systému Predaje, Zákazníci, Produkty (Obr. 7.9). 31

7. ANALÝZA A NÁVRH Obr. 7.9: Klient Hlavné menu 7.2.2 Zákazníci Zoznam zákazníkov, ktorý sa zobrazí v tabul ke pri vstupe do tejto časti systému bude slúžit ako obdoba stromového pohl adu vo webovom klientovi (Obr. 7.10). Pre jednoduchost a prehl adnost bude potrebné zmenšit počet vypísaných údajov. Zobrazené budú nakoniec meno zákazníka a jeho kontakty telefón a e-mail, aby boli pri používaní jednoducho dostupné. Z webového klienta budú prevzaté aj umiestnenia tlačítok pre vytvorenie nového zákazníka vl avo hore a úpravu zákazníka vl avo pri každom zázname. Rovnako štandardne má fungovat aj zobrazenie detailu zákazníka kliknutím na jeho riadok v tabul ke. V tomto zobrazení bude dostupných viac informácií, nie však všetky, aby bola zachovaná prehl adnost. Pri úprave údajov a vytváraní zákazníka bude použité rovnaké rozloženie ako pri zobrazení jeho detailov, polia však budú editova- 32

7. A NALÝZA A NÁVRH Obr. 7.10: Klient Zákazníci Obr. 7.11: Klient Úprava zákazníka a kontaktu 33

7. ANALÝZA A NÁVRH tel né (Obr. 7.11). Pribudne len tlačítko na pridanie nového kontaktu, po stlačení ktorého sa zobrazí zadávací formulár. Pre editáciu existujúceho kontaktu na zobrazenom kontakte užívatel dlhšie podrží prst. V tomto prípade sa zobrazí rovnaký formulár, ale s predvyplnenými údajmi. 7.2.3 Produkty Sekcia produktov bude z pohl adu používania podobná predchádzajúcej časti. V úvodnej tabul ke sa zobrazí meno produktu, dostupné množstvo a jeho cena informácie najpotrebnejšie pre obchodníka pri svojej práci (Obr. 7.12). Pri zobrazení konkrétneho produktu potom pribudnú d alšie údaje ako množstvo na sklade, základná merná jednotka alebo kód Ean13. Obr. 7.12: Klient Produkty Úprava existujúceho a vytváranie nového produktu bude prebiehat na obrazovke podobnej zobrazeniu jeho detailu (Obr. 7.13). Naviac tam bude pridané tlačítko, pomocou ktorého sa spustí aplikácia 34

7. ANALÝZA A NÁVRH Obr. 7.13: Klient Úprava produktu pre naskenovanie Ean kódu. Naopak, vynechané budú polia s množstvom dostupného produktu, pretože sa nedajú upravit priamo. 7.2.4 Predaje Poslednou čast ou aplikácie, s ktorou budú užívatelia pracovat je sekcia predaja. V zozname predajných objednávok budú zobrazené základné údaje číslo objednávky, zákazník, dátum a celková suma (Obr. 7.14). Pri tomto zobrazení bude môct užívatel jednoducho rozlíšit rôzne stavy objednávok podl a sfarbenia ich čísla. Vytváranie objednávok má kopírovat správanie webového klienta. Bude stačit preto zadat partnera a pridat riadky objednávky, ktoré bude možné pridat dvoma spôsobmi. Bud výberom zo zoznamu (Obr. 7.15), alebo naskenovaním čiarového kódu produktu. 35

7. ANALÝZA A NÁVRH Obr. 7.14: Klient Predajné objednávky Obr. 7.15: Klient Úprava objednávky a pridávanie produktov 36

7. ANALÝZA A NÁVRH 7.2.5 Vyhl adávanie Môžeme si všimnút, že pri každom stromovom pohl ade vo webovom rozhraní je aj čast pre vyhl adávanie v danom zobrazení. Je to dôležitá a často využívaná čast systému, preto by táto funkcionalita nemala chýbat v našej aplikácii. V hornej časti zobrazení produktov, zákazníkov a predajných objednávok sa bude nachádzat zadávacie pole s tlačítkom pre vyhl adanie. Po jeho stlačení sa v tabul ke následne zobrazia zodpovedajúce výsledky (Obr. 7.16). Obr. 7.16: Klient Vyhl adanie produktov 7.3 Diagramy prípadov užitia a tried Z analýzy využívania systému OpenERP obchodníkom sme vytvorili Use Case diagram digram prípadov užitia (Obr. 7.17). Názorne nám zobrazuje komunikáciu užívatel a, obchodníka so systémom. 37

7. ANALÝZA A NÁVRH Počas následného návrhu našej aplikácie vznikli diagramy tried, rozdelené podl a jednotlivých častí aplikácie produkty (Obr. 7.18), zákazníci (Obr. 7.19) a predaje (Obr. 7.20). Zobrazujú budúcu štruktúru systému a vzt ahy medzi jednotlivými triedami. Obr. 7.17: Diagram prípadov užitia Obr. 7.18: Diagram tried produkty 38

7. ANALÝZA A NÁVRH Obr. 7.19: Diagram tried zákazníci Obr. 7.20: Diagram tried predaje 39

8 Implementácia Naša aplikácia bola implementovaná inkrementálne po jednotlivých častiach zákazníci, produkty a predaje. Diagramy tried k jednotlivým častiam je možné nájst v predchádzajúcej kapitole Obr. 7.19, 7.18 a 7.20. Počas vývoja bola testovaná na virtuálnych zariadeniach, ktoré poskytuje emulátor vývojového prostredia Android SDK [7] ale aj na fyzických, konkrétne na HTC Desire X a Sony Ericsson Xperia Neo MT15i. 8.1 Použité knižnice Pri implementácii našej aplikácie boli použité aj tri externé knižnice. Dve z nich zabezpečujú komunikáciu s OpenERP serverom pomocou protokolu XML-RPC a tretia slúži na sprostredkovanie aplikácie na skenovanie kódov Ean13. 8.1.1 Android-xmlrpc Komponent, ktorý zabezpečuje komunikáciu s OpenERP serverom cez protokol XML-RPC je jednoduchá, ale kompletná knižnica pre platformu Android android-xmlrpc. 1 Jej použitie je pomerne jednoduché. Najskôr si nainicializujeme klienta a následne na ňom zavoláme metódu call s parametrami, ktoré obsahujú názov procedúry a jej parametre. 1 XMLRPCClient client = new XMLRPCClient("http://your.url.com"); 2 3 int intresult = (Integer) client. call ("testfunction1", 1, 3) ; 4 boolean boolresult = (Boolean) client. call ("testfunction2", param1, 4, 10); 5 String strresult = (String) client. call ("testfunction3", " test string") ; 1. Knižnica android-xmlrpc je dostupná na stránke http://code.google. com/p/android-xmlrpc/ 40

8. IMPLEMENTÁCIA 8.1.2 Android-openerp Android-xmlrpc využíva knižnica android-openerp v triede Open- ErpConnect, ktorá slúži ako konektor k OpenERP serveru pre zariadenia Android. 2 Je dostupná ako open source pod licenciou GNU GPL. Niektoré z funkcií, ktoré poskytuje android-openerp: Prihlásenie Zabezpečuje ho funkcia connect. Pri jej zavolaní sa vytvorí spojenie, ktoré sa následne používa počas behu aplikácie. 1 OpenErpConnect.connect( 2 mserver, 3 mport, 4 mdatabase, 5 musername, 6 mpassword ); Vyhl adávanie Pre zobrazenie prvkov systému, napr. produktov, je potrebné najprv ich vyhl adat. Funkcia search nájde zoznam ID zodpovedajúcich záznamov. 1 connection.search( 2 mmodel, 3 mcount, 4 moffset, 5 mlimit, 6 morder, 7 mreverseorder, 8 mconditions ); Čítanie Po získaní zoznamu ID záznamov môžeme zavolat funkciu read pre načítanie hodnôt ich polí (názov produktu a pod.). 1 connection.read( 2 mmodel, 3 mids, 4 mfields ); 2. https://github.com/zikzakmedia/android-openerp 41

8. IMPLEMENTÁCIA Všeobecné volanie Používa sa ak je potrebné zavolat metódu v systéme, ktorú nepokrýva žiadna z ponúkaných funkcií. 1 connection.call ( 2 mmodel, 3 mmethod, 4 mparams); 8.1.3 ZXing ZXing (Zebra Crossing) je open source knižnica napísaná v Jave, ktorá slúži na spracovanie čiarových kódov v rôznych formátoch (1D aj 2D). Jej účelom je za využitia vstavanej kamery zariadenia naskenovat kód a následne ho dekódovat bez nutnosti komunikácie so serverom. Medzi podporované formáty patria napríklad EAN-8, EAN- 13, UPC-A, UPC-B, QR Code, Code 39 a d alšie. 3 V našej aplikácii využívame komponentu android-integration, ktorá slúži na prepojenie s aplikáciou na čítanie kódov Barcode Scanner vyvinutou taktiež tímom ZXing. 8.2 Implementačné detaily aplikácie Zdrojový kód aplikácie je rozdelený do niekol kých balíkov podl a funkcionality. Tri balíky, ktoré obsahujú externé knižnice, popísané v predchádzajúcej časti: com.google.zxing.integration.android org.xmlrpc.android cz.cloudtech.openerpclient.connection Ďalšie tri balíky obsahujú triedy rozdelené podl a jednotlivých modulov: cz.cloudtech.openerpclient.customers cz.cloudtech.openerpclient.products cz.cloudtech.openerpclient.sales 3. Kompletný zoznam podporovaných kódov a viac informácii o ZXing je možné nájst na http://code.google.com/p/zxing/ 42

8. IMPLEMENTÁCIA Balík obsahujúci triedy zodpovedné za úvodnú a prihlasovaciu obrazovku: cz.cloudtech.openerpclient V poslednom balíku sú umiestnené triedy, ktoré zabezpečujú komunikáciu so serverom. Ich funkciu si bližšie popíšeme v nasledujúcej časti. cz.cloudtech.openerpclient.async 8.2.1 AsyncTask Komunikácia so serverom býva často časovo náročná. Ak by prebiehala na hlavnom vlákne aplikácie, na ktorom beží aj správa grafického rozhrania, malo by to za následok mrznutie aplikácie. Android má proti nereagujúcim aplikáciám ochranu a po určitom čase zobrazí varovný dialóg. Aby sme sa takémuto správaniu vyhli, využívame v našej aplikácii triedu AsyncTask. Časovo náročné operácie sme implementovali v jej metóde doinbackground(). Pre následné spustenie vykonávania v samostatnom vlákne treba vytvorit inštanciu triedy, ktorá rozširuje AsyncTask a zavolat na nej metódu execute(). 1 AsyncTask atask = new AsyncCustomerSearchRead( 2 params).execute(); Počas jej behu je potrebné aby sme nejakým spôsobom oznámili užívatel ovi, že aplikácia nezamrzla a stále pracuje. Využívame na to funkcionalitu, ktorú nám poskytuje ActionBar neurčitý indikátor priebehu (Indeterminate Progress Bar). 1 requestwindowfeature(window.feature_indeterminate_progress); 2 setprogressbarindeterminatevisibility(true) ; Ked doinbackground() ukončí svoje vykonávanie, tak sa spustí metóda onpostexecute(), v ktorej môže prebiehat následné spracovanie výsledkov a môže pracovat aj s užívatel ským rozhraním. Na tomto mieste taktiež vypneme indikátor priebehu nastavením viditel nosti na false. 43

8. IMPLEMENTÁCIA 8.2.2 Zobrazenie dát Dáta získané zo servera pomocou asynchrónnych volaní následne potrebujeme zobrazit užívatel ovi. V rôznych častiach systému ich zobrazujeme pomocou rozličných tried API. Pri zobrazení detailov záznamu používame jednoduché textové polia TextView. V prípadoch, kedy potrebujeme záznam upravovat používame editovatel né polia EditText, zaškrtávacie políčka CheckBox a rolovacie ponuky Spinner. Pri zobrazovaní kontaktov zákazníka využívame viacstránkové zobrazenie ViewFlipper, ktorého reakcie na gestá sú definované v metóde onfling() v triede CustomerDetail. Pomocou nich sa medzi záznamami užívatel pohybuje. 8.2.3 Rotácia zariadenia Pri otáčaní mobilného zariadenia zo zvislej do vodorovnej polohy alebo naopak sa mení rozloženie obrazovky. Môže nastat situácia, že niektoré prvky zobrazenia nie sú v obidvoch rozvrhnutiach rovnako dobre dostupné. Preto Android ponúka možnost ako mat pre každú z pozícií vlastné rozloženie. Obr. 8.1: Zákazníci Pôvodné rozloženie 44

8. IMPLEMENTÁCIA Obr. 8.2: Zákazníci Upravené rozloženie Bežne sa XML súbory definujúce rozloženie jednotlivých obrazoviek ukladajú do adresára res/layout/. Ak však chceme aby sa pre zobrazenie vo vodorovnej polohe použil iný súbor umiestnime ho do adresára res/layout-land/ s rovnakým názvom. Výsledok si môžeme porovnat na obrázkoch 8.1 a 8.2. Problémy s rotáciou Pri implementácii sa nám vyskytli aj isté problémy s rotáciou zariadenia. Konkrétne išlo napríklad o prípad, ked sa pri zobrazení dialógu pre výber produktu do objednávky zariadenie otočilo a aplikácia následne havarovala. Bolo to spôsobené tým, že sme sa triede DialogFragment snažili predat parametre pret ažením konštruktora. Android však pri rotácii DialogFragment zničí a znovu obnoví. Volá pri tom bezparametrový konštruktor a k predaným parametrom sa už nemá ako dostat. Riešením bolo zmenit spôsob vytvárania dialógu. Bežne sa vytvára v metóde oncreatedialog triedy rozširujúcej DialogFragment. V aplikácii sa následne po inicializácii zobrazí pomocou metódy show(). Pre zobrazenie dilógu bez predávania parametrov tento spôsob funguje správne. 45

8. IMPLEMENTÁCIA 1 NoProductFoundDialog productnotfound = new NoProductFoundDialog(); 2 productnotfound.show(getfragmentmanager(), "no_product_found"); Ak však chceme využit aj parametre musíme tento postup upravit pridaním statickej metódy newinstance(), ktorá dialóg nainicializuje, parametre uloží do statickej premennej a vráti. Na vrátenom dialógu už môžeme zavolat metódu show() ako v predchádzajúcom prípade. 1 private static Object[] mparams; 2 public static SalesOrderProductDialog newinstance(object[] params) { 3 SalesOrderProductDialog d = new SalesOrderProductDialog(); 4 mparams = params; 5 6 return d; 7 } 1 SalesOrderProductDialog productdialog = SalesOrderProductDialog.newInstance(); 2 productdialog.show(getfragmentmanager(), "find_product"); 8.2.4 Lokalizácia Lokalizácia je vyriešená obdobným spôsobom ako rozloženia aktivít. Aplikácii je poskytnutý implicitný súbor s textovými ret azcami umiestnený v adresári res/values/strings.xml. Tento súbor je použitý ak je vyžadovaný jazyk, ktorý aplikácia nepodporuje. Súbory pre d alšie jazyky sú uložené v priečinkoch označených daným kódom jazyka ako napríklad res/values-en/strings.xml, alebo res/values-cs/strings.xml a d alšie. V súboroch strings.xml sa nachádzajú záznamy v tvare <string name= id >Retazec</string>. V kóde sa potom na miestach, kde by sa bežne použil textový ret azec, použije odkaz R.string.id. Použitý jazyk sa vyberá na základe nastavenia telefónu. 46

8. IMPLEMENTÁCIA 8.2.5 Aktivity a fragmenty Naša aplikácia nebola primárne navrhovaná pre podporu tabletov, napriek tomu čast systému, ktorá je venovaná zákazníkom využíva túto technológiu. Výsledok je možné vidiet na nasledujúcom obrázku (8.3), kde je oproti smartfónu naraz zobrazený zoznam zákazníkov aj detail jedného z nich. Obr. 8.3: Zákazníci Zobrazenie na tablete 47