1. Import
This commit is contained in:
728
html/mobile/Beschreibung_Requests.xml
Normal file
728
html/mobile/Beschreibung_Requests.xml
Normal file
@@ -0,0 +1,728 @@
|
||||
// ********************************
|
||||
// **** [C] Operative Requests ****
|
||||
// ********************************
|
||||
|
||||
// **** Liste der Niederlassungen ****
|
||||
|
||||
<adsg_req>
|
||||
<id>getHeadquartersList</id>
|
||||
<session>29142dea6c4002cc7bf88714ca4238a0b9531281ac23820dcc509a6f</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>314282</usr_id>
|
||||
<payload>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
|
||||
// **** Kontaktliste auf Basis des Suchbegriffs ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getContactList</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<search>Suchbegriff</search>
|
||||
<category>1</category>
|
||||
<hq_id>Niederlassungs-ID</hq_id> // Muss gesetzt sein
|
||||
<obj_type>cs</obj_type> // cs = customer => (Alle) Kontakte mit einem Kundenbezug
|
||||
<obj_id>77</obj_d> // z.B. eine konkrete "cs_id" bei Typ "cs" => Kontakte nur dieses Kunden
|
||||
<prefix>yes</prefix> // Wenn nur eine Präfix-Suche initiert werden soll, dann "YES" oder "1"
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<contact_header>
|
||||
<label_1>Bezeichnung</label_1>
|
||||
<label_2>Bezeichnung</label_2>
|
||||
....
|
||||
</contact_header>
|
||||
<contact_list>
|
||||
<contact>
|
||||
<val_1>Wert</val_1>
|
||||
<val_2>Wert</val_2>
|
||||
....
|
||||
</contact>
|
||||
<contact>
|
||||
....
|
||||
</contact>
|
||||
....
|
||||
</contact_list>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Kundenliste auf Basis des Suchbegriffs ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getCustomerList</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<search>Suchbegriff</search>
|
||||
<hq_id>Niederlassungs-ID</hq_id>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<customer_list>
|
||||
<customer>
|
||||
<cs_id>ID des Datensatzes</cs_id>
|
||||
<cs_eid>Kundennummer</cs_eid>
|
||||
<cmp_type></cmp_type>
|
||||
<cmp_comp><![CDATA[Firma]]></cmp_comp>
|
||||
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
|
||||
<usr_name><![CDATA[Nachname]]></usr_name>
|
||||
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
|
||||
<usr_phone></usr_phone>
|
||||
<usr_phone2></usr_phone2>
|
||||
</customer>
|
||||
<customer>
|
||||
....
|
||||
</customer>
|
||||
....
|
||||
</customer_list>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Daten eines Kunden ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getCustomerSpecial</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<cs_id>ID des Kundendatensatzes</cs_id> // (Entweder <cs_id> oder <cs_eid> gesetzt)
|
||||
<cs_eid>Kundennummer (EID)</cs_eid>
|
||||
<hq_id>Niederlassungs-ID</hq_id>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<customer_special>
|
||||
<customer>
|
||||
<cs_id>ID des Datensatzes</cs_id>
|
||||
<cs_eid>Kundennummer</cs_eid>
|
||||
<cmp_type></cmp_type>
|
||||
<cmp_comp><![CDATA[Firma]]></cmp_comp>
|
||||
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
|
||||
<cmp_comp3><![CDATA[Firma3]]></cmp_comp3>
|
||||
<cmp_comp4><![CDATA[Firma4]]></cmp_comp4>
|
||||
<usr_name><![CDATA[Nachname]]></usr_name>
|
||||
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
|
||||
<usr_phone></usr_phone>
|
||||
<usr_phone2></usr_phone2>
|
||||
<ad_street><![CDATA[Straße]]></ad_street>
|
||||
<ad_houseno>Hausnummer<ad_houseno>
|
||||
<ad_zipcode>PLZ<ad_zipcode>
|
||||
<ad_city><![CDATA[Ort]]></ad_city>
|
||||
</customer>
|
||||
</customer_special>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Kostenstellen eines Kunden ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getCostcenterListOfCustomer</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<cs_id>ID des Kundendatensatzes</cs_id> // (Entweder <cs_id> oder <cs_eid> gesetzt)
|
||||
<cs_eid>Kundennummer (EID)</cs_eid>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<costcenter_list>
|
||||
<costcenter>
|
||||
<csc_id>Kostenstellen-ID des Datensatzes</csc_id>
|
||||
<cs_id>ID des zugehörigen Kunden</cs_id>
|
||||
<cs_eid>Kundennummer</cs_eid>
|
||||
<csc_name><![CDATA[Kostenstellenname]]></csc_name>
|
||||
<csc_pre_id>ID der übergeordneten Kostenstelle im Kostenstellenbaum</csc_pre_id>
|
||||
<hq_id>ID der Niederlassung</hq_id>
|
||||
</costcenter>
|
||||
<costcenter>
|
||||
....
|
||||
</costcenter>
|
||||
....
|
||||
</costcenter_list>
|
||||
</data>
|
||||
|
||||
// **** Kostenstellenadressen einer Kostenstelle ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getCostcenterAddressList</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<csc_id>ID der Kostenstelle</csc_id>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<costcenteraddress_list>
|
||||
<costcenteraddress>
|
||||
<csc_id>Kostenstellen-ID</csc_id>
|
||||
<cscad_comp>Firma</cscad_comp>
|
||||
<cscad_comp2>Firma2</cscad_comp2>
|
||||
<cscad_comp3>Firma3</cscad_comp3>
|
||||
<cscad_comp4>Firma4</cscad_comp4>
|
||||
// <ad_id>ID der Adresse</ad_id>
|
||||
<adt_id>ID des Adresstyps</adt_id> // 1 = Postanschrift, 2 = Rechnungsanschrift, 3 = Rechnungsversandanschrift, 4 = Abhol-/Lieferadresse
|
||||
<ad_street><![CDATA[Straße]]></ad_street>
|
||||
<cscad_hsno><![CDATA[Hausnummer]]></cscad_hsno>
|
||||
<ad_zipcode><![CDATA[PLZ]]></ad_zipcode>
|
||||
<ad_city><![CDATA[Ort]]></ad_city>
|
||||
<cscad_floor><![CDATA[Etage]]></cscad_floor>
|
||||
<cscad_remark><![CDATA[Bemerkung]]></cscad_remark>
|
||||
<cscad_person><![CDATA[Person]]></cscad_person>
|
||||
<cscad_phone><![CDATA[Telefon]]></cscad_phone>
|
||||
<cscad_email><![CDATA[Email-Adresse]]></cscad_email>
|
||||
</costcenteraddress>
|
||||
<costcenteraddress>
|
||||
....
|
||||
</costcenteraddress>
|
||||
....
|
||||
</costcenteraddress_list>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Transporteursliste auf Basis des Suchbegriffs ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getCourierList</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<search>Suchbegriff</search>
|
||||
<hq_id>Niederlassungs-ID</hq_id>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<courier_list>
|
||||
<courier>
|
||||
<cr_id>ID des Datensatzes</cr_id>
|
||||
<cr_eid>Kundennummer</cr_eid>
|
||||
<cmp_type></cmp_type>
|
||||
<cmp_comp><![CDATA[Firma]]></cmp_comp>
|
||||
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
|
||||
<usr_name><![CDATA[Nachname]]></usr_name>
|
||||
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
|
||||
<usr_phone></usr_phone>
|
||||
<usr_phone2></usr_phone2>
|
||||
</courier>
|
||||
<courier>
|
||||
....
|
||||
</courier>
|
||||
....
|
||||
</courier_list>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Daten eines Transporteurs ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getCourierSpecial</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<cr_id>ID des Kundendatensatzes</cr_id> // (Entweder <cr_id> oder <cr_eid> gesetzt)
|
||||
<cr_eid>Kundennummer (EID)</cr_eid>
|
||||
<hq_id>Niederlassungs-ID</hq_id>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<courier_special>
|
||||
<courier>
|
||||
<cs_id>ID des Datensatzes</cs_id>
|
||||
<cs_eid>Kundennummer</cs_eid>
|
||||
<cmp_type></cmp_type>
|
||||
<cmp_comp><![CDATA[Firma]]></cmp_comp>
|
||||
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
|
||||
<cmp_comp3><![CDATA[Firma3]]></cmp_comp3>
|
||||
<cmp_comp4><![CDATA[Firma4]]></cmp_comp4>
|
||||
<usr_name><![CDATA[Nachname]]></usr_name>
|
||||
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
|
||||
<usr_phone></usr_phone>
|
||||
<usr_phone2></usr_phone2>
|
||||
<ad_street><![CDATA[Straße]]></ad_street>
|
||||
<ad_houseno>Hausnummer<ad_houseno>
|
||||
<ad_zipcode>PLZ<ad_zipcode>
|
||||
<ad_city><![CDATA[Ort]]></ad_city>
|
||||
</courier>
|
||||
</courier_special>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Fahrzeugliste auf Basis des Suchbegriffs ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getVehicleList</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<search>Suchbegriff</search>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<vehicle_list>
|
||||
<vehicle>
|
||||
<crvh_id>(Interne) ID des Datensatzes</crvh_id>
|
||||
<crvh_sid>(Externe) Fahrzeugnummer</crvh_sid>
|
||||
<cr_id>(Interne) ID des Fahrers, dem das Fahrzeug zugeordnet ist</cr_id>
|
||||
<crvh_comm_no><![CDATA[Kommissionsnummer]]></crvh_comm_no>
|
||||
<crvh_vh_sign><![CDATA[Kennzeichen]]></crvh_vh_sign>
|
||||
<crvh_vh_name><![CDATA[Fahrzeugbezeichnung]]></crvh_vh_name>
|
||||
</vehicle>
|
||||
<vehicle>
|
||||
....
|
||||
</vehicle>
|
||||
....
|
||||
</vehicle_list>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Daten eines Fahrzeugs ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getVehicle</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<crvh_id>(Interne) ID des Fahrzeugdatensatzes</crvh_id>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<vehicle_special>
|
||||
<vehicle>
|
||||
<crvh_id>(Interne) ID des Datensatzes</crvh_id>
|
||||
<vht_id>Nummer des Fahrzeugtypes</vht_id> // Erfordert Mapping !!!!
|
||||
<crvh_sid>(Externe) Fahrzeugnummer</crvh_sid>
|
||||
<crvh_comm_no><![CDATA[Firma]]></crvh_comm_no>
|
||||
<crvh_vh_sign><![CDATA[Kommissionsnummer]]></crvh_vh_sign>
|
||||
<crvh_vh_name><![CDATA[Fahrzeugbezeichnung]]></crvh_vh_name>
|
||||
<crvh_licence_date><![CDATA[Datum]]></crvh_licence_date>
|
||||
<crvh_prov><![CDATA[Provision]]></crvh_prov>
|
||||
<crvh_payload><![CDATA[Nutzlast]]></crvh_payload>
|
||||
<crvh_totalweight><![CDATA[Gesamtgewicht]]></crvh_totalweight>
|
||||
<crvh_length><![CDATA[Länge]]></crvh_length>
|
||||
<crvh_width><![CDATA[Breite]]></crvh_width>
|
||||
<crvh_height><![CDATA[Höhe]]></crvh_height>
|
||||
<crvh_position><![CDATA[Stellplätze]]></crvh_position>
|
||||
<crvh_aperture_height_side><![CDATA[Ladebreite]]></crvh_aperture_height_side>
|
||||
<crvh_aperture_height_rear><![CDATA[Ladelänge]]></crvh_aperture_height_rear>
|
||||
</vehicle>
|
||||
<vehicle_special>
|
||||
</data>
|
||||
|
||||
|
||||
// *****************
|
||||
// **** Termine ****
|
||||
// *****************
|
||||
|
||||
// **** Initial folgend die Termin-Kategorien laden (!) ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getApEnvironment</id>
|
||||
<session>HASH</session>
|
||||
<service_context>groupware</service_context>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<payload>
|
||||
<hq_id>NL-ID</hq_id>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<apcat1_list>
|
||||
<apcat1 id="1">
|
||||
<name><![CDATA[geschäftlich]></name>
|
||||
</apcat1 id="1">
|
||||
<apcat1 id="2">
|
||||
<name><![CDATA[privat]></name>
|
||||
<apcat1 id="2">
|
||||
....
|
||||
</apcat1_list>
|
||||
<apcat2_list>
|
||||
<apcat2 id="1">
|
||||
<name><![CDATA[nur für Teilnehmer]></name>
|
||||
</apcat2 id="1">
|
||||
<apcat2 id="2">
|
||||
<name><![CDATA[nur für mich]></name>
|
||||
</apcat2 id="2">
|
||||
<apcat2 id="3">
|
||||
<name><![CDATA[für alle]></name>
|
||||
</apcat2 id="3">
|
||||
....
|
||||
</apcat2_list>
|
||||
<apcat3_list>
|
||||
<apcat3 id="1">
|
||||
<name><![CDATA[Verschiedenes]></name>
|
||||
</apcat3 id="1">
|
||||
<apcat3 id="2">
|
||||
<name><![CDATA[Abschluss]></name>
|
||||
</apcat3 id="2">
|
||||
<apcat3 id="3">
|
||||
<name><![CDATA[Angebotserstellung]></name>
|
||||
</apcat3 id="3">
|
||||
....
|
||||
</apcat3_list>
|
||||
<apcat4_list>
|
||||
<apcat4 id="1">
|
||||
<name><![CDATA[Keine Terminüberwachung]></name>
|
||||
</apcat4 id="1">
|
||||
<apcat4 id="2">
|
||||
<name><![CDATA[Terminüberwachung aktiviert]></name>
|
||||
</apcat4 id="2">
|
||||
....
|
||||
</apcat4_list>
|
||||
....
|
||||
<possible_participants_list>
|
||||
<possible_participant id="usr_id">
|
||||
<usr_firstname><![CDATA[Vorname]]></usr_firstname>
|
||||
<usr_name><![CDATA[Nachname]]></usr_name>
|
||||
</possible_participant>
|
||||
....
|
||||
</possible_participants_list>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Termine anfragen (eines Monats, einer Woche, eines Tages) ****
|
||||
|
||||
// Request (Monat)
|
||||
<adsg_req>
|
||||
<id>getAppointmentsOfOneMonth</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<service_context>groupware</service_context> // Statischer Text "groupware"
|
||||
<payload>
|
||||
<month>4</month>
|
||||
<year>2017</year>
|
||||
<hq_id>NL-ID</hq_id>
|
||||
<usr_id>23</usr_id>
|
||||
<cs_id>Kunden-ID</cs_id> // (Entweder beides leer (default) oder <cr_id> oder <cr_eid> gesetzt)
|
||||
<cs_eid>Kundennummer</cs_eid>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Request (Tag)
|
||||
<adsg_req>
|
||||
<id>getAppointmentsOfOneDay</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<service_context>groupware</service_context> // Statischer Text "groupware"
|
||||
<payload>
|
||||
<day>7</day>
|
||||
<month>4</month>
|
||||
<year>2017</year>
|
||||
.... siehe "getAppointmentsOfOneMonth" ....
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Request (KW)
|
||||
<adsg_req>
|
||||
<id>getAppointmentsOfOneWeek</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>100</mo_id>
|
||||
<usr_id>23</usr_id>
|
||||
<service_context>groupware</service_context> // Statischer Text "groupware"
|
||||
<payload>
|
||||
<week>15</week>
|
||||
<year>2017</year>
|
||||
.... siehe "getAppointmentsOfOneMonth" ....
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response (für alle Intervalle)
|
||||
<data>
|
||||
<appointment_list id=\"APL\">
|
||||
<yeardata>
|
||||
<year>2017</year>
|
||||
<monthdata>
|
||||
<month>04</month>
|
||||
<days>
|
||||
<daydata>
|
||||
<day>dd</day>
|
||||
<appointments>
|
||||
<appointment>
|
||||
<ap_id>ID des Termins</ap_id>
|
||||
<ap_text><![CDATA[Termintext]]></ap_text>
|
||||
<ap_execdate>Terminstart</ap_execdate>
|
||||
<cmp_id>(Company(!)-)ID des Kunden, der dem Termin zugeordnet ist</cmp_id>
|
||||
<cmp_comp><![CDATA[Firma]]></cmp_comp>
|
||||
<cmp_comp2><![CDATA[Firma2]]></cmp_comp2>
|
||||
<cs_eid>Kundennummer</cs_eid>
|
||||
<ap_enddate>Terminende</ap_enddate>
|
||||
<usr_id>ID des Erstellers</usr_id>
|
||||
<usr_firstname><![CDATA[Vorname des Erstellers]]></usr_firstname>
|
||||
<usr_name><![CDATA[Nachname des Erstellers]]></usr_name>
|
||||
<ap_participants>
|
||||
<ap_participant id=\"" . $tmpParticipantsArray[$j] . "\">
|
||||
<name><![CDATA[Nachname des Teilnehmers]]></name>
|
||||
<firstname><![CDATA[Vorname des Teilnehmers]]></firstname>
|
||||
</ap_participant>
|
||||
</ap_participants>
|
||||
<ap_confirmed>Termin bestätigt?</ap_confirmed>
|
||||
<cs_usr_name><![CDATA[Nachname Kunde]]></cs_usr_name>
|
||||
<cs_usr_firstname><![CDATA[Vorname Kunde]]></cs_usr_firstname>
|
||||
<cs_usr_phone>Telefon Kunde</cs_usr_phone>
|
||||
<cs_usr_phone2>Telefon Kunde</cs_usr_phone2>
|
||||
<ap_category_1>Zuordnung zur Kategorie 1</ap_category_1>
|
||||
<ap_category_2>Zuordnung zur Kategorie 2</ap_category_2>
|
||||
<ap_category_3>Zuordnung zur Kategorie 3</ap_category_3>
|
||||
<ap_category_4>Zuordnung zur Kategorie 4</ap_category_4>
|
||||
</appointment>
|
||||
....
|
||||
</appointments>
|
||||
</daydata>
|
||||
....
|
||||
</days>
|
||||
</monthdata>
|
||||
....
|
||||
</yeardata>
|
||||
</appointment_list>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Termin erzeugen (insert), ändern (update), entfernen (delete) ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>actionAppointment</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>DB</mo_id>
|
||||
<usr_id>USR_ID</usr_id>
|
||||
<payload>
|
||||
<action></action> // "insert"|"update"|"delete"
|
||||
<ap_id></ap_id> // ID Termin, erforderlich bei "update" und "delete"
|
||||
<execdatetime></execdatetime> // Startzeitpunkt des Termins
|
||||
<enddatetime></enddatetime> // Endezeitpunkt des Termins
|
||||
<ap_cat1></ap_cat1> // Wert für Terminkategorie 1 (=> "getApEnvironment")
|
||||
<ap_cat2></ap_cat2> // Wert für Terminkategorie 2 (=> "getApEnvironment")
|
||||
<ap_cat3></ap_cat3> // Wert für Terminkategorie 3 (=> "getApEnvironment")
|
||||
<ap_cat4></ap_cat4> // Wert für Terminkategorie 4 (=> "getApEnvironment")
|
||||
<hq_id></hq_id>
|
||||
<cs_id></cs_id> // Termin mit Kunden
|
||||
<participants></participants> // Teilnehmer (kommaseparierte Liste mit mit "usr_id")
|
||||
<ap_text><![CDATA[....]]></ap_text> // Berichtstext
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
|
||||
// **** Berichte (eines Kunden oder eines Transporteurs) für einen spezifizierten Zeitraum ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getReportList</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>DB</mo_id>
|
||||
<usr_id>USR_ID</usr_id>
|
||||
<service_context>groupware</service_context> // Statischer Text "groupware"
|
||||
<payload>
|
||||
<fromdaterange>JJJJ-MM-TT</fromdaterange>
|
||||
<todaterange>JJJJ-MM-TT</todaterange>
|
||||
<rp_obj_type>cs</rp_obj_type> // Statisch "cs" wenn Kundenberichte ODER "cr" wenn Transporteursberichte
|
||||
// => Vorerst Kunden
|
||||
<rp_obj_id>CS_ID</rp_obj_id> // Interne Kunden-ID (= "cs_id") ODER Interne Transporteurs-ID (= "cr_id")
|
||||
<rp_type></rp_type> // Optional aus vorher geladenen Termin-Kategorien per "getApEnvironment":
|
||||
// 1="Verschiedenes", 2="Abschluss", 3="Angebotserstellung", ... 10="Konferenz/Seminar/Urlaub", ...
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<report_list>
|
||||
<report>
|
||||
<id>Berichts-ID</id>
|
||||
<type>Berichtstyp (numerisch)</type>
|
||||
<text>Berichtstext</text>
|
||||
<confidential></confidential> // Wenn "1", dann "vertraulich"
|
||||
<usrid>Ersteller-ID</usrid> // DEPRICATED, "<usr_id></usr_id>" nutzen
|
||||
<usr_id>Ersteller-ID</usr_id>
|
||||
<name></name> // Name des Erstellers
|
||||
<firstname></firstname> // Vorname des Erstellers
|
||||
<phone></phone> // Telefonnr. des Erstellers
|
||||
<eid></eid> // EID des Kunden oder Transporteurs
|
||||
<comp></comp> // Firma des Kunden oder Transporteurs
|
||||
<comp2></comp2> // Firma2 des Kunden oder Transporteurs
|
||||
<hq_id></hq_id> // Niederlassungs-ID
|
||||
<hq_name></hq_name> // Name der Niederlassung
|
||||
</report>
|
||||
<report>
|
||||
....
|
||||
</report>
|
||||
</report_list>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Einzelner Bericht (eines Kunden oder eines Transporteurs) ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getReport</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>DB</mo_id>
|
||||
<usr_id>USR_ID</usr_id>
|
||||
<service_context>groupware</service_context> // Statischer Text "groupware"
|
||||
<payload>
|
||||
<rp_id>Berichts-ID</rp_id> // ID des Berichts (für den spezifizierten Objekttyp)
|
||||
<rp_obj_type>cs</rp_obj_type> // Statisch "cs" wenn Kundenberichte ODER "cr" wenn Transporteursberichte
|
||||
// => Vorerst Kunden
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<report>
|
||||
<id>Berichts-ID</id>
|
||||
<type>Berichtstyp (numerisch)</type>
|
||||
<text>Berichtstext</text>
|
||||
<confidential></confidential> // Wenn "1", dann "vertraulich"
|
||||
<usrid>Ersteller-ID</usrid> // DEPRICATED, "<usr_id></usr_id>" nutzen
|
||||
<usr_id>Ersteller-ID</usr_id>
|
||||
<name></name> // Name des Erstellers
|
||||
<firstname></firstname> // Vorname des Erstellers
|
||||
<phone></phone> // Telefonnr. des Erstellers
|
||||
<eid></eid> // EID des Kunden oder Transporteurs
|
||||
<comp></comp> // Firma des Kunden oder Transporteurs
|
||||
<comp2></comp2> // Firma2 des Kunden oder Transporteurs
|
||||
<hq_id></hq_id> // Niederlassungs-ID
|
||||
<hq_name></hq_name> // Name der Niederlassung
|
||||
</report>
|
||||
</data>
|
||||
|
||||
|
||||
// **** Bericht erzeugen (insert), ändern (update), entfernen (delete) ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>actionReport</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>DB</mo_id>
|
||||
<usr_id>USR_ID</usr_id>
|
||||
<payload>
|
||||
<action></action> // "insert"|"update"|"delete"
|
||||
<rp_id></rp_id> // ID Bericht, erforderlich bei "update" und "delete"
|
||||
<rp_type></rp_type> // Berichtstyp, erforderlich bei "insert", optional bei "update"
|
||||
<rp_obj_type></rp_obj_type> // "cs"|"cr" (Bericht für Kunde|Transporteur...)
|
||||
<rp_obj_id></rp_obj_id> // ID Kunde/Transporteur
|
||||
<rp_text><![CDATA[....]]></rp_text> // Berichtstext
|
||||
<rp_confidential></rp_confidential> // Kennzeichen für "vertraulich" (= "1")
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
BEISPIELE:
|
||||
- Bsp.: Bericht neu (insert)
|
||||
<adsg_req>
|
||||
<id>actionReport</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>DB</mo_id>
|
||||
<usr_id>USR_ID</usr_id>
|
||||
<payload>
|
||||
<action>insert</action>
|
||||
<rp_id></rp_id> // ID Bericht wird automatisch generiert
|
||||
<rp_type>8</rp_type> // Berichtstyp wird überschrieben (=> Typen wie bei Terminen)
|
||||
<rp_obj_type>cs</rp_obj_type> // hier Kunde
|
||||
<rp_obj_id>789</rp_obj_id> // ID Kunde (cs_id)
|
||||
<rp_text><![CDATA[Blah]]></rp_text> // Berichtstext
|
||||
<rp_confidential></rp_confidential> // leer, nicht "vertraulich"
|
||||
</payload>
|
||||
</adsg_req>
|
||||
- Bsp.: Bericht ändern (update)
|
||||
<adsg_req>
|
||||
<id>actionReport</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>DB</mo_id>
|
||||
<usr_id>USR_ID</usr_id>
|
||||
<payload>
|
||||
<action>update</action>
|
||||
<rp_id>12345</rp_id> // ID Bericht, erforderlich bei "update"
|
||||
<rp_type>4</rp_type> // Berichtstyp wird überschrieben (=> Typ wie bei Termin)
|
||||
<rp_obj_type></rp_obj_type> // leer
|
||||
<rp_obj_id></rp_obj_id> // leer
|
||||
<rp_text><![CDATA[Blah]]></rp_text> // Berichtstext
|
||||
<rp_confidential>1</rp_confidential> // hier "vertraulich"
|
||||
</payload>
|
||||
</adsg_req>
|
||||
- Bsp.: Bericht entfernen (delete)
|
||||
<adsg_req>
|
||||
<id>actionReport</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>DB</mo_id>
|
||||
<usr_id>USR_ID</usr_id>
|
||||
<payload>
|
||||
<action>delete</action>
|
||||
<rp_id>12345</rp_id> // ID Bericht, erforderlich bei "delete"
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<reports>
|
||||
<report>
|
||||
<action></action> // Angeforderte Aktion ("insert"|"update"|"delete")
|
||||
<rp_id></rp_id> // Angeforderte oder erzeugte Berichts-ID
|
||||
</report>\n";
|
||||
</reports>\n";
|
||||
</data>
|
||||
|
||||
|
||||
// **** Statistik eines Kunden für einen spezifizierten Zeitraum ****
|
||||
|
||||
// Request
|
||||
<adsg_req>
|
||||
<id>getCsStatistic</id>
|
||||
<session>HASH</session>
|
||||
<mo_id>DB</mo_id>
|
||||
<usr_id>USR_ID</usr_id>
|
||||
<payload>
|
||||
<cs_id>Kunden-ID</cs_id> // (Entweder beides leer (default) oder <cr_id> oder <cr_eid> gesetzt)
|
||||
<cs_eid>Kundennummer</cs_eid>
|
||||
<fromdaterange>JJJJ-MM-TT</fromdaterange>
|
||||
<todaterange>JJJJ-MM-TT</todaterange>
|
||||
</payload>
|
||||
</adsg_req>
|
||||
|
||||
// Response
|
||||
<data>
|
||||
<customer_statistic>
|
||||
<cs_id>CS_ID</cs_id>
|
||||
<cs_eid>CS_EID</cs_eid>
|
||||
<statistic_value>WERT</statistic_value>
|
||||
</customer_statistic>
|
||||
</data>
|
||||
3052
html/mobile/HTG/X73526839273628946/template.xml
Normal file
3052
html/mobile/HTG/X73526839273628946/template.xml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
html/mobile/HTG/va.apk
Normal file
BIN
html/mobile/HTG/va.apk
Normal file
Binary file not shown.
BIN
html/mobile/TT/tt.apk
Normal file
BIN
html/mobile/TT/tt.apk
Normal file
Binary file not shown.
3052
html/mobile/X73526839273628946/template.xml
Normal file
3052
html/mobile/X73526839273628946/template.xml
Normal file
File diff suppressed because it is too large
Load Diff
381
html/mobile/accessMobileXML.php
Normal file
381
html/mobile/accessMobileXML.php
Normal file
@@ -0,0 +1,381 @@
|
||||
<?php
|
||||
/*=======================================================================
|
||||
*
|
||||
* accessMobileXML.php
|
||||
*
|
||||
* Autor: Marc Vollmann
|
||||
*
|
||||
=======================================================================*/
|
||||
|
||||
include_once ("../include/mcglobal.inc.php");
|
||||
// include_once ("../include/auth.inc.php");
|
||||
// include_once ("../include/inc_calendar.inc.php");
|
||||
// include_once ("../groupware/calendar.php");
|
||||
// include_once ("../statistic/statistic_sql.inc.php");
|
||||
// include_once ("../include/email/htmlMimeMail.php");
|
||||
include_once ("../include/inc_parseXML.inc.php");
|
||||
include_once ("../include/inc_APP.inc.php");
|
||||
include_once ("../include/inc_WEB.inc.php");
|
||||
// include_once ("../include/inc_customer.inc.php");
|
||||
|
||||
getLanguage(__FILE__);
|
||||
|
||||
getCurrentScript(__FILE__);
|
||||
|
||||
|
||||
|
||||
// ***********************
|
||||
// *** Initialisations ***
|
||||
// ***********************
|
||||
|
||||
|
||||
|
||||
// $messageReqRawData = file_get_contents('php://input');
|
||||
getSecHttpVars("1", array("data"));
|
||||
$messageReq = $data;
|
||||
// $messageReq = mcDecode($messageReq);
|
||||
|
||||
$currentTime = getDateTime("0");
|
||||
$currentClientIP = trim($_SERVER['REMOTE_ADDR']);
|
||||
writeToFile("../log/mobile.log", $currentTime . " | " . $currentClientIP);
|
||||
// writeToFile("../log/mobile.log", $messageReqRawData);
|
||||
writeToFile("../log/mobile.log", $messageReq);
|
||||
writeToFile("../log/mobile.log", "-------------------------------------------------------------------------------------------");
|
||||
|
||||
// Check for POST raw data
|
||||
$functionName = getSingleTagContent($messageReq, "<id>", "</id>");
|
||||
$moId = getSingleTagContent($messageReq, "<moid>", "</moid>");
|
||||
$cmpComp = getSingleTagContent($messageReq, "<company>", "</company>");
|
||||
$userName = getSingleTagContent($messageReq, "<username>", "</username>");
|
||||
$userFirstname = getSingleTagContent($messageReq, "<userfirstname>", "</userfirstname>");
|
||||
$userEmail = getSingleTagContent($messageReq, "<useremail>", "</useremail>");
|
||||
$userMobile = getSingleTagContent($messageReq, "<usermobile>", "</usermobile>");
|
||||
$userAccount = getSingleTagContent($messageReq, "<account>", "</account>");
|
||||
$userPassword = getSingleTagContent($messageReq, "<password>", "</password>");
|
||||
$userSession = getSingleTagContent($messageReq, "<session>", "</session>");
|
||||
$appKey = getSingleTagContent($messageReq, "<app_key>", "</app_key>");
|
||||
$appId = getSingleTagContent($messageReq, "<app_id>", "</app_id>");
|
||||
$usrId = getSingleTagContent($messageReq, "<usrid>", "</usrid>");
|
||||
$hq_id = getSingleTagContent($messageReq, "<hqid>", "</hqid>");
|
||||
|
||||
// ---------------------------------------------
|
||||
// Proprietärer Kram !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
$ttEvent = getSingleTagContent($messageReq, "<tt_event>", "</tt_event>");
|
||||
$ttTimestamp = getSingleTagContent($messageReq, "<tt_timestamp>", "</tt_timestamp>");
|
||||
$gpsLong = getSingleTagContent($messageReq, "<gps_long>", "</gps_long>");
|
||||
$gpsLat = getSingleTagContent($messageReq, "<gps_lat>", "</gps_lat>");
|
||||
// ---------------------------------------------
|
||||
|
||||
// Decode
|
||||
$search = mcDecode($search);
|
||||
$userName = mcDecode($userName);
|
||||
$userPassword = mcDecode($userPassword);
|
||||
$appKey = mcDecode($appKey);
|
||||
|
||||
/*
|
||||
$functionName = "appRegister";
|
||||
$appKey = "AAAAAAAAAA";
|
||||
$appId = "1";
|
||||
*/
|
||||
/*
|
||||
$functionName = "login";
|
||||
$moId = "6";
|
||||
$usrId = "18086";
|
||||
$appKey = "AAAAAAAAAA";
|
||||
$appId = "1";
|
||||
*/
|
||||
|
||||
/*
|
||||
$functionName = "setTimekeepingEvent";
|
||||
$userSession = "495f2fdc997fe9da827107e64218434d";
|
||||
$moId = "6";
|
||||
$usrId = "18086";
|
||||
$ttEvent = "1";
|
||||
$ttTimestamp = "2014-01-01 10:00:00";
|
||||
$gpsLong = "53.000001";
|
||||
$gpsLat = "9.000001";
|
||||
*/
|
||||
|
||||
|
||||
// ---------------------------------------------
|
||||
// *****************
|
||||
// * TIME TRACKING *
|
||||
// *****************
|
||||
|
||||
function setTimetrackingEvent ($moId, $usrId, $ttEvent, $ttTimestamp, $gpsLong, $gpsLat, $description) {
|
||||
global $dbname, $dblogin, $dbpassword;
|
||||
|
||||
// Get operational IP and port from $moId
|
||||
if ($moId != "" && $usrId != "" && $ttEvent != "") :
|
||||
|
||||
// Get operational database instance via metaobject
|
||||
$moValue = getOperationalDatabase($moId);
|
||||
|
||||
if ($moValue != "") :
|
||||
if ($ttTimestamp == "") : $ttTimestamp = getDateTime("0"); endif;
|
||||
|
||||
// Set operational database and insert event
|
||||
$db_op_conn = getDbConnectionSpecial($moValue, $dbname, $dblogin, $dbpassword);
|
||||
|
||||
$sqlStmt = "INSERT INTO phoenix_group.timetracking (tt_datetime,tt_id,usr_id,tt_gps_long,tt_gps_lat,tt_description)" .
|
||||
" VALUES ('" . $ttTimestamp . "','" . $ttEvent . "','" . $usrId . "','" . $gpsLong . "','" . $gpsLat . "','" . $description . "')";
|
||||
|
||||
$res = $db_op_conn->query($sqlStmt);
|
||||
if (DB::isError($res)) : die ("$PHP_SELF: " . $res->getMessage()); endif;
|
||||
|
||||
$retArray = array("0");
|
||||
else:
|
||||
$retArray = array("802","<err_no>802</err_no>\n","<err_desc>" . getLngt("Operational database cannot be connected!") . "</err_desc>\n");
|
||||
endif;
|
||||
else:
|
||||
$retArray = array("801","<err_no>801</err_no>\n","<err_desc>" . getLngt("Request has emty items!") . "</err_desc>\n");
|
||||
endif;
|
||||
return $retArray;
|
||||
}
|
||||
|
||||
// For compatibility only
|
||||
function setTimekeepingEvent ($moId, $usrId, $ttEvent, $ttTimestamp, $gpsLong, $gpsLat, $description) {
|
||||
return setTimetrackingEvent ($moId, $usrId, $ttEvent, $ttTimestamp, $gpsLong, $gpsLat, $description);
|
||||
}
|
||||
|
||||
function getLastTimetrackingEvent ($moId, $usrId) {
|
||||
global $dbname, $dblogin, $dbpassword;
|
||||
|
||||
// Get operational IP and port from $moId
|
||||
if ($moId != "" && $usrId != "") :
|
||||
|
||||
// Get operational database instance via metaobject
|
||||
$moValue = getOperationalDatabase($moId);
|
||||
|
||||
if ($moValue != "") :
|
||||
|
||||
// Set operational database and insert event
|
||||
$db_op_conn = getDbConnectionSpecial($moValue, $dbname, $dblogin, $dbpassword);
|
||||
|
||||
$tmpSqlQuery = "SELECT tt_datetime, tt_id, tt_gps_long, tt_gps_lat, tt_description FROM phoenix_group.timetracking WHERE usr_id = '" . $usrId . "' ORDER BY tt_datetime DESC LIMIT 0,1";
|
||||
$result = $db_op_conn->query($tmpSqlQuery);
|
||||
while ($row = $result->fetch_assoc()):
|
||||
$retArray = array("0", $row["tt_datetime"], $row["tt_id"], $row["tt_gps_long"], $row["tt_gps_lat"], $row["tt_description"]);
|
||||
endwhile;
|
||||
$result->free();
|
||||
else:
|
||||
$retArray = array("802","<err_no>802</err_no>\n","<err_desc>" . getLngt("Operational database cannot be connected!") . "</err_desc>\n");
|
||||
endif;
|
||||
else:
|
||||
$retArray = array("801","<err_no>801</err_no>\n","<err_desc>" . getLngt("Request has emty items!") . "</err_desc>\n");
|
||||
endif;
|
||||
return $retArray;
|
||||
}
|
||||
// ---------------------------------------------
|
||||
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
// **************
|
||||
// * XML Output *
|
||||
// **************
|
||||
|
||||
$retVal = "";
|
||||
$xmlOut = "";
|
||||
$xmlNoErrOut .= "<err_no>0</err_no>\n<err_desc>OK</err_desc>\n";
|
||||
$xmlErrOut .= "<err_no>100</err_no>\n<err_desc>Currently not implemented.</err_desc>\n";
|
||||
|
||||
if ($functionName == "appRegister" || $functionName == "webRegister" || $functionName == "login" || checkAccess($userSession, $moId, $usrId)) :
|
||||
|
||||
if ($transactionHandle != "") :
|
||||
// $xmlOut .= "<transaction_no>" . $transaction_no . "</transaction_no>\n";
|
||||
endif;
|
||||
|
||||
$xmlOut .= "<data>\n";
|
||||
|
||||
if ($functionName != "") :
|
||||
if (function_exists($functionName)) :
|
||||
|
||||
if ($functionName == "appRegister") :
|
||||
$retVal = call_user_func_array($functionName, array($appKey, $appId)); // Register APP and get mo_id, usr_id and hq_id for response
|
||||
|
||||
if ($retVal[0] != "0") :
|
||||
$xmlOut .= $retVal[1] . $retVal[2];
|
||||
else :
|
||||
$xmlOut .= $xmlNoErrOut;
|
||||
$xmlOut .= "<moid>" . $retVal[2] . "</moid>\n";
|
||||
$xmlOut .= "<usrid>" . $retVal[1] . "</usrid>\n";
|
||||
endif;
|
||||
|
||||
elseif ($functionName == "webRegister") :
|
||||
$retVal = call_user_func_array($functionName, array($cmpComp, $userName, $userFirstname, $userEmail, $userMobile, $userAccount, $userPassword)); // Register WEB, generate mandator
|
||||
|
||||
if ($retVal[0] != "0") :
|
||||
$xmlOut .= $retVal[1] . $retVal[2];
|
||||
else :
|
||||
$xmlOut .= $xmlNoErrOut;
|
||||
$xmlOut .= "<moid>" . $retVal[2] . "</moid>\n";
|
||||
$xmlOut .= "<usrid>" . $retVal[1] . "</usrid>\n";
|
||||
endif;
|
||||
|
||||
elseif ($functionName == "login") :
|
||||
$retVal = call_user_func_array($functionName, array($moId, $usrId, $appKey, $appId)); // Check requested user and APP data
|
||||
|
||||
if ($retVal[0] != "0") :
|
||||
$xmlOut .= $retVal[1] . $retVal[2];
|
||||
else :
|
||||
$xmlOut .= $xmlNoErrOut;
|
||||
|
||||
$xmlOut .= "<session>" . $retVal[4] . "</session>\n";
|
||||
$xmlOut .= "<moid>" . $retVal[3] . "</moid>\n";
|
||||
$xmlOut .= "<hqid>" . $retVal[2] . "</hqid>\n";
|
||||
$xmlOut .= "<hqname><![CDATA[" . mcEncode($retVal[7]) . "]]></hqname>\n";
|
||||
$xmlOut .= "<hqmnemonic>" . $retVal[8] . "</hqmnemonic>\n";
|
||||
$xmlOut .= "<usrid>" . $retVal[1] . "</usrid>\n";
|
||||
$xmlOut .= "<usrrealname><![CDATA[" . mcEncode($retVal[5]) . "]]></usrrealname>\n";
|
||||
$xmlOut .= "<usrrealfirstname><![CDATA[" . mcEncode($retVal[6]) . "]]></usrrealfirstname>\n";
|
||||
endif;
|
||||
|
||||
|
||||
// -------------------------------------------
|
||||
// To be put in external script or so.... !!!!
|
||||
|
||||
elseif ($functionName == "setTimekeepingEvent" || $functionName == "setTimetrackingEvent") :
|
||||
$retVal = call_user_func_array($functionName, array($moId, $usrId, $ttEvent, $ttTimestamp, $gpsLong, $gpsLat, "")); // Set timetracking event
|
||||
|
||||
if ($retVal[0] != "0") :
|
||||
$xmlOut .= $retVal[1] . $retVal[2];
|
||||
else :
|
||||
$xmlOut .= $xmlNoErrOut;
|
||||
|
||||
// $xmlOut .= "<session>" . $retVal[4] . "</session>\n";
|
||||
endif;
|
||||
|
||||
elseif ($functionName == "getLastTimetrackingEvent") :
|
||||
$retVal = call_user_func_array($functionName, array($moId, $usrId)); // Get last timetracking event
|
||||
|
||||
if ($retVal[0] != "0") :
|
||||
$xmlOut .= $retVal[1] . $retVal[2];
|
||||
else :
|
||||
$xmlOut .= $xmlNoErrOut;
|
||||
|
||||
$xmlOut .= "<tt_datetime>" . $retVal[1] . "</tt_datetime>\n";
|
||||
$xmlOut .= "<tt_event>" . $retVal[2] . "</tt_event>\n";
|
||||
$xmlOut .= "<gps_long>" . $retVal[3] . "</gps_long>\n";
|
||||
$xmlOut .= "<gps_lat>" . $retVal[4] . "</gps_lat>\n";
|
||||
$xmlOut .= "<description><![CDATA[" . mcEncode($retVal[5]) . "]]></description>\n";
|
||||
endif;
|
||||
|
||||
else :
|
||||
// Call corresponding script according to the APP ID
|
||||
// ....
|
||||
|
||||
// $xmlOut .= "<err_no>103</err_no>\n";
|
||||
// $xmlOut .= "<err_desc>Function does not exist in API.</err_desc>\n";
|
||||
endif;
|
||||
else :
|
||||
$xmlOut .= "<err_no>102</err_no>\n";
|
||||
$xmlOut .= "<err_desc>Specified function does not exist.</err_desc>\n";
|
||||
endif;
|
||||
else :
|
||||
$xmlOut .= "<err_no>101</err_no>\n";
|
||||
$xmlOut .= "<err_desc>No function specified.</err_desc>\n";
|
||||
endif;
|
||||
|
||||
$xmlOut .= "</data>\n";
|
||||
else :
|
||||
$xmlOut .= $xmlErrOut;
|
||||
endif;
|
||||
|
||||
echo $xmlOut;
|
||||
|
||||
|
||||
/*
|
||||
https://212.79.60.73/htm/mobile/accessMobileXML.php
|
||||
|
||||
|
||||
|
||||
[A] Registrierung und Mandantenanlage über das WEB
|
||||
|
||||
....
|
||||
<id>webRegister</id>
|
||||
<company>Firma</company>
|
||||
<username>Nachname</username>
|
||||
<userfirstname>Vorname</userfirstname>
|
||||
<useremail>Mailadresse</useremail>
|
||||
<usermobile>Mobilnummer</usermobile>
|
||||
<account>Nachname</account>
|
||||
<password>Passwort</password>
|
||||
....
|
||||
|
||||
|
||||
|
||||
[B] Ablaufschritte für die Einzelregistrierung der APP:
|
||||
|
||||
|
||||
1. Schritt:
|
||||
Die Registrierungsanfrage der "frischen" oder manuell deaktivierten APP sendet den eingegebenen Registrierungscode an den Server.
|
||||
Die APP-ID ist für die Zeiterfassungs-APP immer "1".
|
||||
Das XML-Rahmenformat ist dasselbe wie bei der Vertriebs-APP.
|
||||
|
||||
Request-Bsp.
|
||||
....
|
||||
<id>appRegister</id>
|
||||
<app_key>Rc34rFghZ78tx</app_key> // Registrierungscode
|
||||
<app_id>1</app_id> // ID der APP
|
||||
....
|
||||
|
||||
Response-Bsp.
|
||||
....
|
||||
<err_no>0</err_no> // Verifikation Registrierungscode ok, wenn = "0"
|
||||
<moid>6</moid> // Interne Nummer der Datenbank-Instanz, auf die der Server zugreifen muss (z.B "8")
|
||||
<usrid>23</usrid> // Eindeutige ID des Benutzers der korrespondierenden DB-Instanz
|
||||
....
|
||||
|
||||
|
||||
2. Schritt:
|
||||
|
||||
Nach der erfolgreichen Registrierung erfolgt ein sich anschließender Login-Prozess.
|
||||
|
||||
Request-Bsp.
|
||||
....
|
||||
<id>login</id>
|
||||
<moid>6</moid> // Instanz der DB, auf die zugegriffen werden muss
|
||||
<usrid>23</usrid> // Benutzer-ID
|
||||
<app_key>Rc34rFghZ78tx</app_key> // Registrierungscode (wird auch wieder mitgegeben zum Abgleich ob serverseitig zurückgesetzt)
|
||||
<app_id>1</app_id> // ID der APP (wird mitgeführt wg. Check des Registrierungscodes)
|
||||
....
|
||||
|
||||
Response-Bsp.
|
||||
....
|
||||
<err_no>0</err_no> // Login ok, wenn = "0"
|
||||
<session>....hash....</session>
|
||||
<moid>6</moid>
|
||||
<hqid>....</hqid>
|
||||
<hqname><![CDATA[....]]></hqname>
|
||||
<hqmnemonic>....</hqmnemonic>
|
||||
<usrid>23</usrid>
|
||||
<usrrealname><![CDATA[....]]></usrrealname>
|
||||
<usrrealfirstname><![CDATA[....]]></usrrealfirstname>
|
||||
....
|
||||
|
||||
|
||||
3. Schritt:
|
||||
|
||||
Request für operative Daten. Senden des Events mit Koordinaten
|
||||
|
||||
Request-Bsp.
|
||||
....
|
||||
<id>setTimekeepingEvent</id>
|
||||
<session>....hash....</session>
|
||||
<moid>6</moid>
|
||||
<usrid>23</usrid>
|
||||
<tk_event>1</tk_event> // "1" = User fängt (wieder) zu arbeiten an | "2" = Pause oder Feierabend
|
||||
<gps_long>9.9876</gps_long> // Notation mit "."
|
||||
<gps_lat>53.123</gps_lat> // Notation mit "."
|
||||
....
|
||||
|
||||
Response-Bsp.
|
||||
....
|
||||
<err_no>0</err_no> // Operation ok, wenn = "0"
|
||||
....
|
||||
|
||||
*/
|
||||
?>
|
||||
1070
html/mobile/groupwareXML.php
Normal file
1070
html/mobile/groupwareXML.php
Normal file
File diff suppressed because it is too large
Load Diff
130
html/mobile/licenceXML.php
Normal file
130
html/mobile/licenceXML.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
/*=======================================================================
|
||||
*
|
||||
* licenceXML.php
|
||||
*
|
||||
* Autor: Marc Vollmann
|
||||
*
|
||||
=======================================================================*/
|
||||
|
||||
include_once ("../include/mcglobal.inc.php");
|
||||
// include_once ("../include/auth.inc.php");
|
||||
// include_once ('../include/email/htmlMimeMail.php');
|
||||
include_once ("../include/inc_APP.inc.php");
|
||||
include_once ("../include/inc_parseXML.inc.php");
|
||||
|
||||
|
||||
getLanguage(__FILE__);
|
||||
|
||||
getCurrentScript(__FILE__);
|
||||
|
||||
|
||||
|
||||
// ***********************
|
||||
// *** Initialisations ***
|
||||
// ***********************
|
||||
|
||||
|
||||
// $messageReqRawData = file_get_contents('php://input');
|
||||
getSecHttpVars("1", array("data"));
|
||||
$messageReq = $data;
|
||||
// $messageReq = mcDecode($messageReq);
|
||||
|
||||
$currentTime = getDateTime("0");
|
||||
$currentClientIP = trim($_SERVER['REMOTE_ADDR']);
|
||||
writeToFile("../log/mobile.log", $currentTime . " | " . $currentClientIP);
|
||||
// writeToFile("../log/mobile.log", $messageReqRawData);
|
||||
writeToFile("../log/mobile.log", $messageReq);
|
||||
writeToFile("../log/mobile.log", "-------------------------------------------------------------------------------------------");
|
||||
|
||||
|
||||
// Check for POST raw data
|
||||
$functionName = getSingleTagContent($messageReq, "<id>", "</id>");
|
||||
$licKey = getSingleTagContent($messageReq, "<licencekey>", "</licencekey>");
|
||||
|
||||
|
||||
// Decode
|
||||
$licKey = mcDecode($licKey);
|
||||
|
||||
|
||||
|
||||
// HARDCODED START ENVIRONMENT
|
||||
// $functionName = "getLicenceData";
|
||||
// $licKey = "L1000000001";
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
// **************
|
||||
// * XML Output *
|
||||
// **************
|
||||
|
||||
$retVal = "";
|
||||
$xmlOut = "";
|
||||
$xmlNoErrOut .= "<err_no>0</err_no>\n<err_desc>OK</err_desc>\n";
|
||||
$xmlErrOut .= "<err_no>100</err_no>\n<err_desc>Currently not implemented.</err_desc>\n";
|
||||
|
||||
if ($functionName == "getLicenceData") :
|
||||
|
||||
if ($transactionHandle != "") :
|
||||
// $xmlOut .= "<transaction_no>" . $transaction_no . "</transaction_no>\n";
|
||||
endif;
|
||||
|
||||
$xmlOut .= "<data>\n";
|
||||
|
||||
if ($functionName != "") :
|
||||
if (function_exists($functionName)) :
|
||||
|
||||
if ($functionName == "getLicenceData") :
|
||||
$retVal = call_user_func_array($functionName, array($licKey)); // Check licence data
|
||||
$retValLen = count($retVal);
|
||||
|
||||
if (!is_array($retVal[0]) && $retVal[0] != "0") :
|
||||
$xmlOut .= $retVal[1] . $retVal[2];
|
||||
else :
|
||||
// if ($retValLen > 0) :
|
||||
$xmlOut .= "<licapp_list>\n";
|
||||
for ($i = 0; $i < $retValLen; $i++) :
|
||||
$xmlOut .= "<licapp id=\"" . $retVal[$i][0] . "\">\n";
|
||||
$xmlOut .= " <name><![CDATA[" . mcEncode($retVal[$i][1]) . "]]></name>\n";
|
||||
$xmlOut .= " <authreq>" . $retVal[$i][2] . "</authreq>\n";
|
||||
$xmlOut .= " <appurl><![CDATA[" . mcEncode($retVal[$i][3]) . "]]></appurl>\n";
|
||||
$xmlOut .= " <templateurl><![CDATA[" . mcEncode($retVal[$i][4]) . "]]></templateurl>\n";
|
||||
$xmlOut .= " <licenceurl><![CDATA[" . mcEncode($retVal[$i][5]) . "]]></licenceurl>\n";
|
||||
$xmlOut .= "</licapp>\n";
|
||||
endfor;
|
||||
$xmlOut .= "</licapp_list>\n";
|
||||
// endif;
|
||||
endif;
|
||||
|
||||
// elseif ($functionName == "xxx") :
|
||||
/*
|
||||
$retVal = call_user_func_array($functionName, array($actionMode, $rpId, $rpType, $rpObjType, $rpObjId, $rpText, $rpConfidential, $hq_id, $usr_id)); // DB actions for a report
|
||||
$xmlOut .= "<reports>\n";
|
||||
$xmlOut .= "<report>\n";
|
||||
$xmlOut .= "<action>" . $actionMode . "</action>\n";
|
||||
$xmlOut .= "<rp_id>" . $rpId . "</rp_id>\n";
|
||||
$xmlOut .= "<state>" . $retVal . "</state>\n";
|
||||
$xmlOut .= "</report>\n";
|
||||
$xmlOut .= "</reports>\n";
|
||||
*/
|
||||
|
||||
else :
|
||||
$xmlOut .= "<err_no>103</err_no>\n";
|
||||
$xmlOut .= "<err_desc>Function does not exist in API.</err_desc>\n";
|
||||
endif;
|
||||
else :
|
||||
$xmlOut .= "<err_no>102</err_no>\n";
|
||||
$xmlOut .= "<err_desc>Specified function does not exist.</err_desc>\n";
|
||||
endif;
|
||||
else :
|
||||
$xmlOut .= "<err_no>101</err_no>\n";
|
||||
$xmlOut .= "<err_desc>No function specified.</err_desc>\n";
|
||||
endif;
|
||||
|
||||
$xmlOut .= "</data>\n";
|
||||
endif;
|
||||
|
||||
echo $xmlOut;
|
||||
?>
|
||||
BIN
html/mobile/sb/a.1.26.apk
Normal file
BIN
html/mobile/sb/a.1.26.apk
Normal file
Binary file not shown.
BIN
html/mobile/sb/a.apk
Normal file
BIN
html/mobile/sb/a.apk
Normal file
Binary file not shown.
5
html/mobile/sb/admin/login.php
Normal file
5
html/mobile/sb/admin/login.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
header("Location: ../index.html");
|
||||
|
||||
?>
|
||||
5
html/mobile/sb/admin/start.php
Normal file
5
html/mobile/sb/admin/start.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
header("Location: ../index.html");
|
||||
|
||||
?>
|
||||
1
html/mobile/sb/app_update.txt
Normal file
1
html/mobile/sb/app_update.txt
Normal file
@@ -0,0 +1 @@
|
||||
1.26,1360750,http://212.79.60.106/sb/a.1.26.apk
|
||||
18
html/mobile/sb/css/index.html
Normal file
18
html/mobile/sb/css/index.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="de">
|
||||
<head>
|
||||
<title></title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="description" content=""> <meta name="keywords" content="">
|
||||
<meta http-equiv="refresh" content="0; URL=../index.php">
|
||||
<link rel="stylesheet" type="text/css" href="css/phoenix.css">
|
||||
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFA" leftmargin="1" topmargin="1" marginwidth="0" marginheight="0" link="#990000" vlink="#990000" alink="#990000">
|
||||
<a href="../index.php">Bitte hier klicken, wenn Sie nicht automatisch weitergeleitet werden...</a>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
104
html/mobile/sb/css/phoenix.css
Normal file
104
html/mobile/sb/css/phoenix.css
Normal file
@@ -0,0 +1,104 @@
|
||||
/*=======================================================================
|
||||
*
|
||||
* phoenix.css
|
||||
*
|
||||
* Autor: Carsten Annacker, Marc Vollmann
|
||||
*
|
||||
=======================================================================*/
|
||||
|
||||
body
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; background-color: #CCCCCC; }
|
||||
table.pad
|
||||
{ border-style:none; padding:4 }
|
||||
td
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; }
|
||||
td.DDDDDD { background-color: #E6E6E6;}
|
||||
td.EEEEEE { background-color: #EEEEEE;}
|
||||
td.BBBBFF { background-color: #BBBBFF;}
|
||||
td.CCCCFF { background-color: #CCCCFF;}
|
||||
td.FFBBBB { background-color: #FFBBBB;}
|
||||
td.FFCCCC { background-color: #FFCCCC;}
|
||||
td.FF9999 { background-color: #FFB0B0;}
|
||||
td.FFAAAA { background-color: #FFC0C0;}
|
||||
i.red { color:red }
|
||||
|
||||
A:link
|
||||
{ text-decoration: none; color: #0000ff; }
|
||||
A:visited
|
||||
{ text-decoration: none; color: #0000ff; }
|
||||
A:hover
|
||||
{ text-decoration: underline; color: #FF0000; }
|
||||
.headline1
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14pt; font-weight: bold; padding: 5px}
|
||||
.headline2
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight: bold; padding: 3px}
|
||||
.headline2a
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11pt; font-weight: bold; padding: 2px}
|
||||
.headline3
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; font-weight: bold; padding: 1px}
|
||||
|
||||
/*form
|
||||
{ padding: 20px; border: 0px solid #DDDDDD; } */
|
||||
.input
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; color: #0000CC; margin: 1px}
|
||||
input.inputRed
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; color: #0000CC; margin: 1px; background-color: #FFAAAA; }
|
||||
input.smaller
|
||||
{ font-size:smaller }
|
||||
.hideBig
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight: bold; color: #000000;
|
||||
background-color: #CCCCCC; border: 0px solid #CCCCCC; padding: 0px; margin: 0px; }
|
||||
.hideBiga
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11pt; font-weight: bold; color: #000000;
|
||||
background-color: #CCCCCC; border: 0px solid #CCCCCC; padding: 0px; margin: 0px; }
|
||||
.hideSmall
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; font-style: italic; color: #000000;
|
||||
background-color: #CCCCCC; border: 1px solid #CCCCCC; padding: 0px; margin: 0px; }
|
||||
.hideSmallRed
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; font-style: italic; color: black;
|
||||
background-color: red; border: 1px solid #CCCCCC; padding: 0px; margin: 0px; }
|
||||
.hideRed
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; font-style: italic; color: red;
|
||||
background-color: #CCCCCC; border: 1px solid #CCCCCC; padding: 0px; margin: 0px; }
|
||||
.submit
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; color: #000000;
|
||||
background-color: #00FF00; }
|
||||
.hideVerySmall
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 4pt; font-style: italic; color: #000000;
|
||||
background-color: #CCCCCC; border: 0px solid #CCCCCC; padding: 0px; margin: 0px; }
|
||||
|
||||
|
||||
.menu_bgcol
|
||||
{background-color: #AAAAAA}
|
||||
|
||||
.f7np1
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 7pt; font-weight: normal; padding: 1px}
|
||||
.f8np1
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; font-weight: normal; padding: 1px}
|
||||
.f8np1_red
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; font-weight: normal; padding: 1px; color: #FF0000;}
|
||||
.f8np1_green
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; font-weight: normal; padding: 1px; color: #00FF00;}
|
||||
.f10np1
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; font-weight: normal; padding: 1px}
|
||||
.f10bp1
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; font-weight: bold; padding: 1px}
|
||||
.f10bp1_red
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; font-weight: bold; padding: 1px; color: #FF0000;}
|
||||
.f12np1
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight: normal; padding: 1px}
|
||||
.f12bp1
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight: bold; padding: 1px}
|
||||
.f12np1_red
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight: normal; padding: 1px; color: #FF0000;}
|
||||
.f12bp1_red
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight: bold; padding: 1px; color: #FF0000;}
|
||||
.f14bp1
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14pt; font-weight: bold; padding: 1px}
|
||||
.verysmall
|
||||
{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 2pt; font-weight: normal; padding: 0px}
|
||||
|
||||
.commission_no_disabled
|
||||
{ }
|
||||
.commission_no_enabled
|
||||
{ background-color: #FF6666; }
|
||||
BIN
html/mobile/sb/images/external/logo_stadtbote.jpg
vendored
Normal file
BIN
html/mobile/sb/images/external/logo_stadtbote.jpg
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
37
html/mobile/sb/index.html
Normal file
37
html/mobile/sb/index.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="de">
|
||||
<head>
|
||||
<title>Installation</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="description" content=""> <meta name="keywords" content="">
|
||||
<link rel="stylesheet" type="text/css" href="css/phoenix.css">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<table border=0 height=95% width=100% align=center cellspacing=0 cellpadding=0 vspace=0 hspace=0>
|
||||
<tr>
|
||||
<td align=center class="f14bp1">
|
||||
<img src="images/external/logo_stadtbote.jpg" alt="Stadtbote Logo"><br>
|
||||
<br>
|
||||
<br>
|
||||
Bitte folgenden Link anklicken, um den Installationssatz zu laden:<br>
|
||||
<br>
|
||||
<a href="a.1.26.apk">votian-Installation</a><br>
|
||||
<br>
|
||||
<br>
|
||||
<!--
|
||||
Bitte folgenden Link anklicken, um die Stadtbote-Klingeltöne zu installieren:<br>
|
||||
<br>
|
||||
<a href="../fw/sb_sounds.CAB">Klingeltöne</a><br>
|
||||
-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
</html>
|
||||
37
html/mobile/sb/index.org.html
Normal file
37
html/mobile/sb/index.org.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html lang="de">
|
||||
<head>
|
||||
<title>Installation</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="description" content=""> <meta name="keywords" content="">
|
||||
<link rel="stylesheet" type="text/css" href="css/phoenix.css">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<table border=0 height=95% width=100% align=center cellspacing=0 cellpadding=0 vspace=0 hspace=0>
|
||||
<tr>
|
||||
<td align=center class="f14bp1">
|
||||
<img src="images/external/logo_stadtbote.jpg" alt="Stadtbote Logo"><br>
|
||||
<br>
|
||||
<br>
|
||||
Bitte folgenden Link anklicken, um die Installation zu starten:<br>
|
||||
<br>
|
||||
<a href="a.apk">votian-Installation</a><br>
|
||||
<br>
|
||||
<br>
|
||||
<!--
|
||||
Bitte folgenden Link anklicken, um die Stadtbote-Klingeltöne zu installieren:<br>
|
||||
<br>
|
||||
<a href="../fw/sb_sounds.CAB">Klingeltöne</a><br>
|
||||
-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
</html>
|
||||
5
html/mobile/sb/index.php
Normal file
5
html/mobile/sb/index.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
header("Location: index.html");
|
||||
|
||||
?>
|
||||
2541
html/mobile/serviceXML.php
Normal file
2541
html/mobile/serviceXML.php
Normal file
File diff suppressed because it is too large
Load Diff
2847
html/mobile/template.xml
Normal file
2847
html/mobile/template.xml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
html/mobile/va.apk
Normal file
BIN
html/mobile/va.apk
Normal file
Binary file not shown.
Reference in New Issue
Block a user