detailer_new_changes

This commit is contained in:
2026-06-23 07:05:43 +05:30
parent 0d1e462563
commit de5f4f881f
21 changed files with 769 additions and 137 deletions
+1
View File
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="AppInsightsSettings"> <component name="AppInsightsSettings">
<option name="selectedTabId" value="Firebase Crashlytics" />
<option name="tabSettings"> <option name="tabSettings">
<map> <map>
<entry key="Android Vitals"> <entry key="Android Vitals">
+32
View File
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="WizardSettings">
<option name="children">
<map>
<entry key="vectorWizard">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="vectorAssetStep">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="assetSourceType" value="FILE" />
<entry key="outputName" value="social_media" />
<entry key="sourceFile" value="C:\Users\ravik\Downloads\social-media (1).svg" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</component>
</project>
@@ -11,7 +11,6 @@ import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
@@ -320,6 +319,7 @@ public class GSKOrangeDB extends SQLiteOpenHelper {
db.delete(CommonString.TABLE_IRPD, CommonString.KEY_STORE_ID + "='" + storeid + "'", null); db.delete(CommonString.TABLE_IRPD, CommonString.KEY_STORE_ID + "='" + storeid + "'", null);
db.delete(CommonString.TABLE_IRPD_POG, CommonString.KEY_STORE_ID + "='" + storeid + "'", null); db.delete(CommonString.TABLE_IRPD_POG, CommonString.KEY_STORE_ID + "='" + storeid + "'", null);
db.delete(CommonString.TABLE_IRPD_VISIBILITY, CommonString.KEY_STORE_ID + "='" + storeid + "'", null); db.delete(CommonString.TABLE_IRPD_VISIBILITY, CommonString.KEY_STORE_ID + "='" + storeid + "'", null);
db.delete(CommonString.TABLE_WEBVIEW_TIME_SPENT, CommonString.KEY_STORE_ID + "='" + storeid + "'", null);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@@ -367,6 +367,7 @@ public class GSKOrangeDB extends SQLiteOpenHelper {
db.delete(CommonString.TABLE_IRPD, null, null); db.delete(CommonString.TABLE_IRPD, null, null);
db.delete(CommonString.TABLE_IRPD_POG, null, null); db.delete(CommonString.TABLE_IRPD_POG, null, null);
db.delete(CommonString.TABLE_IRPD_VISIBILITY, null, null); db.delete(CommonString.TABLE_IRPD_VISIBILITY, null, null);
db.delete(CommonString.TABLE_WEBVIEW_TIME_SPENT, null, null);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@@ -926,6 +927,80 @@ public class GSKOrangeDB extends SQLiteOpenHelper {
return list; return list;
} }
public ArrayList<MasterDetailerGetterSetter> getUploadedDetailerData(String storeid) {
ArrayList<MasterDetailerGetterSetter> list = new ArrayList<>();
Cursor dbcursor = null;
try {
String query = "SELECT * FROM "
+ CommonString.TABLE_WEBVIEW_TIME_SPENT
+ " WHERE STORE_ID = ?";
dbcursor = db.rawQuery(query, new String[]{storeid});
if (dbcursor != null && dbcursor.moveToFirst()) {
do {
MasterDetailerGetterSetter sb = new MasterDetailerGetterSetter();
sb.setStoreId(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("STORE_ID")));
sb.setVisitdate(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("VISIT_DATE")));
sb.setStart_time(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("START_TIME")));
sb.setEnd_time(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("END_TIME")));
sb.setDuration(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("DURATION")));
sb.setDetailerId(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("DETAILER_ID")));
sb.setUserId(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("USER_ID")));
sb.setCATEGORY_ID(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("CATEGORY_ID")));
sb.setDT_LEVEL(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("DT_LEVEL")));
list.add(sb);
} while (dbcursor.moveToNext());
}
} catch (Exception e) {
Log.e("DB_ERROR", "getUploadedDetailerData : " + e.getMessage());
} finally {
if (dbcursor != null && !dbcursor.isClosed()) {
dbcursor.close();
}
}
return list;
}
//insert MAPPING_DISPLAY_CHECKLIST //insert MAPPING_DISPLAY_CHECKLIST
public void InsertMappingDisplayChecklist(MappingDisplayChecklistGetterSetter data) { public void InsertMappingDisplayChecklist(MappingDisplayChecklistGetterSetter data) {
db.delete("MAPPING_DISPLAY_CHECKLIST", null, null); db.delete("MAPPING_DISPLAY_CHECKLIST", null, null);
@@ -11839,23 +11914,45 @@ public class GSKOrangeDB extends SQLiteOpenHelper {
return list; return list;
} }
public long insertWebViewTimeSpent(String storeId, String visitDate, String startTime, String endTime, String duration, String noticeboardId, String userId, String categoryId) { public void insertWebViewTimeSpent(String storeId, String visitDate, String startTime, String endTime, String duration, String detailerId, String userId, String categoryId,String dt_level) {
db.delete(
CommonString.TABLE_WEBVIEW_TIME_SPENT,
"DETAILER_ID = ? AND VISIT_DATE = ? AND STORE_ID = ? AND CATEGORY_ID = ?",
new String[]{detailerId, visitDate, storeId, categoryId}
);
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
try {
values.put("STORE_ID", storeId); values.put("STORE_ID", storeId);
values.put("VISIT_DATE", visitDate); values.put("VISIT_DATE", visitDate);
values.put("START_TIME", startTime); values.put("START_TIME", startTime);
values.put("END_TIME", endTime); values.put("END_TIME", endTime);
values.put("DURATION", duration); values.put("DURATION", duration);
values.put("NOTICEBOARD_ID", noticeboardId); values.put("DETAILER_ID", detailerId);
values.put("USER_ID", userId); values.put("USER_ID", userId);
values.put("CATEGORY_ID", categoryId); values.put("CATEGORY_ID", categoryId);
return db.insert(CommonString.TABLE_WEBVIEW_TIME_SPENT, null, values); values.put("DT_LEVEL", dt_level);
db.insert(CommonString.TABLE_WEBVIEW_TIME_SPENT, null, values);
} catch (Exception ex) {
Log.d("Exception ", " in " + CommonString.TABLE_WEBVIEW_TIME_SPENT + ex.toString());
}
} }
public ArrayList<MasterDetailerGetterSetter> getMasterDetailerData(String tableName) {
public ArrayList<MasterDetailerGetterSetter> getMasterDetailerData(String tableName, @NotNull String storetype, String catId) {
ArrayList<MasterDetailerGetterSetter> list = new ArrayList<>(); ArrayList<MasterDetailerGetterSetter> list = new ArrayList<>();
try { try {
String query = "SELECT * FROM " + tableName; // String query = "SELECT * FROM " + tableName;
String query;
if ("STORE".equalsIgnoreCase(storetype)) {
query = "SELECT * FROM " + tableName + " WHERE CATEGORY_ID = '" + catId + "'";
} else if ("CATEGORY".equalsIgnoreCase(storetype)) {
query = "SELECT * FROM " + tableName + " WHERE CATEGORY_ID = '" + catId + "'";
} else {
query = "SELECT * FROM " + tableName;
}
try (Cursor cursor = db.rawQuery(query, null)) { try (Cursor cursor = db.rawQuery(query, null)) {
while (cursor != null && cursor.moveToNext()) { while (cursor != null && cursor.moveToNext()) {
MasterDetailerGetterSetter sb = new MasterDetailerGetterSetter(); MasterDetailerGetterSetter sb = new MasterDetailerGetterSetter();
@@ -153,12 +153,6 @@ public class MainActivity extends AppCompatActivity
}); });
viewPager.setClipToPadding(false); viewPager.setClipToPadding(false);
viewPager.setClipChildren(false); viewPager.setClipChildren(false);
// TabLayout tabLayout = findViewById(R.id.tabDots);
/*new TabLayoutMediator(tabLayout, viewPager,
(tab, position) -> {
// no title, just dots
}
).attach();*/
if (!url.isEmpty()) { if (!url.isEmpty()) {
webView.loadUrl(url); webView.loadUrl(url);
@@ -251,22 +245,13 @@ public class MainActivity extends AppCompatActivity
if (type == null) return; if (type == null) return;
// append store id and merchant id (NoticeBoardId) to the url as query params
String storeId = preferences.getString(CommonString.KEY_STORE_ID, "");
String merId = String.valueOf(item.getNoticeBoardId());
String finalUrl = appendStoreMerQuery(url, storeId, merId);
Log.d("finalurl", finalUrl);
// Log full URL in chunks to avoid logcat truncation or masking
switch (type.toLowerCase()) { switch (type.toLowerCase()) {
case "html-webview": case "html-webview":
Log.d("itemdata", String.valueOf(item.getFullPageTarget())); Log.d("itemdata", String.valueOf(item.getFullPageTarget()));
Intent webIntent = new Intent(this, WebViewActivity.class); Intent webIntent = new Intent(this, WebViewActivity.class);
webIntent.putExtra("url", finalUrl); webIntent.putExtra("url", url);
webIntent.putExtra("type", item.getFullPageTarget()); webIntent.putExtra("type", item.getFullPageTarget());
webIntent.putExtra("storeid", storeId); webIntent.putExtra("dt_level", "");
webIntent.putExtra("merid", merId);
startActivity(webIntent); startActivity(webIntent);
break; break;
@@ -276,25 +261,23 @@ public class MainActivity extends AppCompatActivity
case "video": case "video":
Intent videoIntent = new Intent(this, WebViewActivity.class); Intent videoIntent = new Intent(this, WebViewActivity.class);
videoIntent.putExtra("url", finalUrl); videoIntent.putExtra("url", url);
videoIntent.putExtra("type", item.getFullPageTarget()); videoIntent.putExtra("type", item.getFullPageTarget());
videoIntent.putExtra("storeid", storeId); videoIntent.putExtra("dt_level", "");
videoIntent.putExtra("merid", merId);
startActivity(videoIntent); startActivity(videoIntent);
break; break;
case "image": case "image":
Intent imageIntent = new Intent(this, WebViewActivity.class); Intent imageIntent = new Intent(this, WebViewActivity.class);
imageIntent.putExtra("url", finalUrl); imageIntent.putExtra("url", url);
imageIntent.putExtra("type", item.getFullPageTarget()); imageIntent.putExtra("type", item.getFullPageTarget());
imageIntent.putExtra("storeid", storeId); imageIntent.putExtra("dt_level", "");
imageIntent.putExtra("merid", merId);
startActivity(imageIntent); startActivity(imageIntent);
break; break;
case "deeplink": case "deeplink":
try { try {
Intent deepIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(finalUrl)); Intent deepIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(deepIntent); startActivity(deepIntent);
} catch (Exception e) { } catch (Exception e) {
Toast.makeText(this, "Invalid deeplink", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Invalid deeplink", Toast.LENGTH_SHORT).show();
@@ -1647,22 +1647,21 @@ public class CommonString {
+ TABLE_WEBVIEW_TIME_SPENT + TABLE_WEBVIEW_TIME_SPENT
+ " (" + " ("
+ "KEY_ID INTEGER PRIMARY KEY AUTOINCREMENT," + "KEY_ID INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "STORE_ID VARCHAR," + "STORE_ID INTEGER,"
+ "VISIT_DATE VARCHAR," + "VISIT_DATE VARCHAR,"
+ "START_TIME VARCHAR," + "START_TIME VARCHAR,"
+ "END_TIME VARCHAR," + "END_TIME VARCHAR,"
+ "DURATION VARCHAR," + "DURATION VARCHAR,"
+ "NOTICEBOARD_ID VARCHAR," + "DETAILER_ID INTEGER,"
+ "USER_ID VARCHAR," + "USER_ID VARCHAR,"
+ "CATEGORY_ID VARCHAR)"; + "DT_LEVEL VARCHAR,"
+ "CATEGORY_ID INTEGER)";
public static final String BACKUP_FOLDER_NAME = "HaleonMT_Backup"; public static final String BACKUP_FOLDER_NAME = "HaleonMT_Backup";
public static final String IMAGE_FOLDER_NAME = "HaleonMT_Images"; public static final String IMAGE_FOLDER_NAME = "HaleonMT_Images";
public static final String Download_IMAGE_FOLDER = "Downloaded_HaleonMT_Images"; public static final String Download_IMAGE_FOLDER = "Downloaded_HaleonMT_Images";
public static final String ApkFolder = "HaleonMT_ApkFolder"; public static final String ApkFolder = "HaleonMT_ApkFolder";
public static String getApkFolder(Context context) { public static String getApkFolder(Context context) {
return AppUtils.getInternalDirectory(context, ApkFolder).getAbsolutePath() + "/"; return AppUtils.getInternalDirectory(context, ApkFolder).getAbsolutePath() + "/";
} }
@@ -2,7 +2,6 @@ package cpm.com.gskmtorange.dailyentry
import android.content.Intent import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.preference.PreferenceManager import android.preference.PreferenceManager
import android.util.Log import android.util.Log
@@ -11,7 +10,8 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@@ -53,8 +53,17 @@ class BannerActivity : AppCompatActivity() {
db = GSKOrangeDB(this) db = GSKOrangeDB(this)
db.open() db.open()
val storetype = intent.getStringExtra("DT_LEVEL") ?: ""
val categoryId = intent.getStringExtra("CategoryId") ?: ""
bannerlistnew = db.getMasterDetailerData("MASTER_DETAILER",storetype,categoryId)
/*if(!categoryId.equals("0")){
bannerlistnew = db.getMasterDetailerData("MASTER_DETAILER",storetype,categoryId)
}
else{
bannerlistnew = db.getMasterDetailerData("MASTER_DETAILER",storetype,"0")
}*/
bannerlistnew = db.getMasterDetailerData("MASTER_DETAILER")
Log.d("bannerlistkotlin", bannerlistnew?.size.toString()) Log.d("bannerlistkotlin", bannerlistnew?.size.toString())
bannerlistnew?.let { bannerlistnew?.let {
@@ -64,6 +73,19 @@ class BannerActivity : AppCompatActivity() {
} }
} }
/* override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.banner_menu, menu)
return true
}*/
/* override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.action_social_media) {
// Handle social media icon click
return true
}
return super.onOptionsItemSelected(item)
}*/
private fun handleClick(item: MasterDetailerGetterSetter) { private fun handleClick(item: MasterDetailerGetterSetter) {
val url = if (item.dT_URL.isNotEmpty()) item.dT_URL[0] else "" val url = if (item.dT_URL.isNotEmpty()) item.dT_URL[0] else ""
val type = "html-webview" // Default type as not specified in MASTER_DETAILER metadata val type = "html-webview" // Default type as not specified in MASTER_DETAILER metadata
@@ -73,6 +95,7 @@ class BannerActivity : AppCompatActivity() {
val merId = if (item.dtid.isNotEmpty()) item.dtid[0] else "" val merId = if (item.dtid.isNotEmpty()) item.dtid[0] else ""
val categoryId = intent.getStringExtra("CategoryId") ?: "" val categoryId = intent.getStringExtra("CategoryId") ?: ""
val finalUrl = appendStoreMerQuery(url, storeId, merId) val finalUrl = appendStoreMerQuery(url, storeId, merId)
val storetype = intent.getStringExtra("DT_LEVEL") ?: ""
Log.d("finalurl", finalUrl) Log.d("finalurl", finalUrl)
val webIntent = Intent(this, WebViewActivity::class.java).apply { val webIntent = Intent(this, WebViewActivity::class.java).apply {
@@ -81,6 +104,7 @@ class BannerActivity : AppCompatActivity() {
putExtra("storeid", storeId) putExtra("storeid", storeId)
putExtra("merid", merId) putExtra("merid", merId)
putExtra("categoryId", categoryId) putExtra("categoryId", categoryId)
putExtra("dt_level", storetype)
} }
startActivity(webIntent) startActivity(webIntent)
} }
@@ -135,7 +159,6 @@ class BannerActivity : AppCompatActivity() {
holder.itemView.setOnClickListener { listener(item) } holder.itemView.setOnClickListener { listener(item) }
} }
override fun getItemCount(): Int = list.size override fun getItemCount(): Int = list.size
} }
} }
@@ -40,8 +40,9 @@ class WebViewActivity : AppCompatActivity() {
private lateinit var preferences: SharedPreferences private lateinit var preferences: SharedPreferences
private lateinit var db: GSKOrangeDB private lateinit var db: GSKOrangeDB
private var storeid: String = "" private var storeid: String = ""
private var merid: String = "" private var detailerId: String = ""
private var categoryId: String = "" private var categoryId: String = ""
private var dt_level: String = ""
@SuppressLint("SetJavaScriptEnabled") @SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@@ -56,14 +57,24 @@ class WebViewActivity : AppCompatActivity() {
val url = intent.getStringExtra("url") ?: "" val url = intent.getStringExtra("url") ?: ""
type = intent.getStringExtra("type") ?: "html-webview" type = intent.getStringExtra("type") ?: "html-webview"
storeid = intent.getStringExtra("storeid") ?: "" storeid = intent.getStringExtra("storeid") ?: ""
merid = intent.getStringExtra("merid") ?: "" detailerId = intent.getStringExtra("merid") ?: ""
categoryId = intent.getStringExtra("categoryId") ?: "" categoryId = intent.getStringExtra("categoryId") ?: ""
dt_level = intent.getStringExtra("dt_level") ?: ""
handleContent(type, url) handleContent(type, url)
binding.toolbar.setTitle("Banner Detail") binding.toolbar.setTitle("Banner Detail")
setSupportActionBar(binding.toolbar) setSupportActionBar(binding.toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayHomeAsUpEnabled(true)
if(dt_level.isNotEmpty()){
pageStartTime = System.currentTimeMillis()
val formattedTime = SimpleDateFormat(
"HH:mm:ss",
Locale.getDefault()
).format(Date(pageStartTime))
Log.d("WEBVIEW_START_TIME", "Start time is :$formattedTime ")
}
} }
private fun handleContent(type: String, url: String) { private fun handleContent(type: String, url: String) {
@@ -142,14 +153,13 @@ class WebViewActivity : AppCompatActivity() {
binding.webView.webViewClient = object : WebViewClient() { binding.webView.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: android.graphics.Bitmap?) { override fun onPageStarted(view: WebView?, url: String?, favicon: android.graphics.Bitmap?) {
pageStartTime = System.currentTimeMillis() /* pageStartTime = System.currentTimeMillis()
val formattedTime = SimpleDateFormat( val formattedTime = SimpleDateFormat(
"HH:mm:ss", "HH:mm:ss",
Locale.getDefault() Locale.getDefault()
).format(Date(pageStartTime)) ).format(Date(pageStartTime))*/
// println(formattedTime) // println(formattedTime)
Log.d("WEBVIEW_START_TIME", "Start time is :$formattedTime ")
injectJS(view) injectJS(view)
} }
@@ -429,31 +439,63 @@ class WebViewActivity : AppCompatActivity() {
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
player?.pause() player?.pause()
pageEndTime = System.currentTimeMillis()
val start_time = SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(Date(pageStartTime))
val end_time = SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(Date(pageEndTime))
val spent = (pageEndTime - pageStartTime) / 1000
val visit_date = preferences.getString(CommonString.KEY_DATE, "") ?: "" val visit_date = preferences.getString(CommonString.KEY_DATE, "") ?: ""
val user_id = preferences.getString(CommonString.KEY_USERNAME, "") ?: "" val user_id = preferences.getString(CommonString.KEY_USERNAME, "") ?: ""
if(dt_level.isNotEmpty()) {
pageEndTime = System.currentTimeMillis()
val start_time =
SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(Date(pageStartTime))
val end_time =
SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(Date(pageEndTime))
val spent = (pageEndTime - pageStartTime) / 1000
db.insertWebViewTimeSpent( db.insertWebViewTimeSpent(
storeid, storeid,
visit_date, visit_date,
start_time, start_time,
end_time, end_time,
spent.toString(), spent.toString(),
merid, detailerId,
user_id, user_id,
categoryId categoryId,
dt_level
) )
// Log.d("WEBVIEW_END_TIME", "End time is :$end_time and viewed for $spent sec ")
/* var detailer_xml = ""
var onXML = ""
val detailerList = db.getUploadedDetailerData(storeid)
Log.d("detailersize", detailerList.size.toString());
if (!detailerList.isEmpty()) {
for (j in detailerList.indices) {
onXML =
"[DETAILER_DATA]" +
"[MID]" + 0 + "[/MID]" +
"[USERID]" + user_id + "[/USERID]" +
"[STORE_ID]" + storeid + "[/STORE_ID]" +
"[VISIT_DATE]" + detailerList.get(j)!!
.getVisitdate() + "[/VISIT_DATE]" +
"[START_TIME]" + detailerList.get(j)!!
.getStart_time() + "[/START_TIME]" +
"[END_TIME]" + detailerList.get(j)!!.getEnd_time() + "[/END_TIME]" +
"[DURATION]" + detailerList.get(j)!!.getDuration() + "[/DURATION]" +
"[DETAILER_ID]" + detailerList.get(j)!!
.getDetailerId() + "[/DETAILER_ID]" +
"[CATEGORY_ID]" + detailerList.get(j)!!
.getCATEGORY_ID().get(0) + "[/CATEGORY_ID]" +
"[DT_LEVEL]" + detailerList.get(j)!!.getDT_LEVEL().get(0) + "[/DT_LEVEL]" +
"[/DETAILER_DATA]"
detailer_xml = detailer_xml + onXML
}
val sos_xml = "[DATA]" + detailer_xml + "[/DATA]"
Log.e("detailer_xml_data", sos_xml)
Log.d("WEBVIEW_END_TIME", "End time is :$end_time and viewed for $spent sec ") Log.d("WEBVIEW_END_TIME", "End time is :$end_time and viewed for $spent sec ")
}*/
}
} }
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
player?.release() player?.release()
player = null player = null
// pageStartTime = System.currentTimeMillis()
// Log.d("WEBVIEW_END_TIME", " viewed for $pageStartTime sec")
} }
} }
@@ -33,7 +33,6 @@ import java.util.Objects;
import cpm.com.gskmtorange.Database.GSKOrangeDB; import cpm.com.gskmtorange.Database.GSKOrangeDB;
import cpm.com.gskmtorange.GetterSetter.AddittionalGetterSetter; import cpm.com.gskmtorange.GetterSetter.AddittionalGetterSetter;
import cpm.com.gskmtorange.GetterSetter.CategoryPictureGetterSetter; import cpm.com.gskmtorange.GetterSetter.CategoryPictureGetterSetter;
import cpm.com.gskmtorange.MainActivity;
import cpm.com.gskmtorange.R; import cpm.com.gskmtorange.R;
import cpm.com.gskmtorange.constant.CommonFunctions; import cpm.com.gskmtorange.constant.CommonFunctions;
import cpm.com.gskmtorange.constant.CommonString; import cpm.com.gskmtorange.constant.CommonString;
@@ -87,7 +86,7 @@ public class CategoryListActivity extends AppCompatActivity {
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_category); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_category);
bannerdatacheck = db.getMasterDetailerData("MASTER_DETAILER"); bannerdatacheck = db.getMasterDetailerData("MASTER_DETAILER","", "0");
fab.setOnClickListener(view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show()); fab.setOnClickListener(view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show());
} }
@@ -111,15 +110,6 @@ public class CategoryListActivity extends AppCompatActivity {
// Add a manual KPI tile for "Detailer" (manual usage without a DB category id) // Add a manual KPI tile for "Detailer" (manual usage without a DB category id)
// This will appear as an extra item in the grid. The id used is a reserved key // This will appear as an extra item in the grid. The id used is a reserved key
// "detailer_manual" and its images are mapped in getImageRes(). // "detailer_manual" and its images are mapped in getImageRes().
try {
CategoryGetterSetter detailer = new CategoryGetterSetter();
detailer.setCategory("Detailer");
detailer.setCategory_id("detailer_manual");
categoryList.add(detailer);
} catch (Exception ignored) {
// If CategoryGetterSetter constructor/signatures differ, skip adding manually.
}
if (categoryList != null && !categoryList.isEmpty()) { if (categoryList != null && !categoryList.isEmpty()) {
for (int i = 0; i < categoryList.size(); i++) { for (int i = 0; i < categoryList.size(); i++) {
String category_id = categoryList.get(i).getCategory_id(); String category_id = categoryList.get(i).getCategory_id();
@@ -140,7 +130,6 @@ public class CategoryListActivity extends AppCompatActivity {
imageRes = switch (category_id) { imageRes = switch (category_id) {
case "1" -> R.mipmap.health_food_drink_tick; case "1" -> R.mipmap.health_food_drink_tick;
case "2" -> R.mipmap.oralcare_tick; case "2" -> R.mipmap.oralcare_tick;
case "detailer_manual" -> R.mipmap.oralcare_tick;
case "3" -> R.mipmap.wellness_tick; case "3" -> R.mipmap.wellness_tick;
case "4" -> R.mipmap.nutritionals_tick; case "4" -> R.mipmap.nutritionals_tick;
case "5" -> R.mipmap.gastro_n_indigestion_tick; case "5" -> R.mipmap.gastro_n_indigestion_tick;
@@ -153,7 +142,6 @@ public class CategoryListActivity extends AppCompatActivity {
imageRes = switch (category_id) { imageRes = switch (category_id) {
case "1" -> R.mipmap.health_food_drink; case "1" -> R.mipmap.health_food_drink;
case "2" -> R.mipmap.oral_care; case "2" -> R.mipmap.oral_care;
case "detailer_manual" -> R.mipmap.oral_care;
case "3" -> R.mipmap.wellness; case "3" -> R.mipmap.wellness;
case "4" -> R.mipmap.nutritionals; case "4" -> R.mipmap.nutritionals;
case "5" -> R.mipmap.gastro_n_indigestion; case "5" -> R.mipmap.gastro_n_indigestion;
@@ -244,12 +232,6 @@ public class CategoryListActivity extends AppCompatActivity {
return question_list; return question_list;
} }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
@@ -258,6 +240,15 @@ public class CategoryListActivity extends AppCompatActivity {
finish(); finish();
overridePendingTransition(R.anim.activity_back_in, R.anim.activity_back_out); overridePendingTransition(R.anim.activity_back_in, R.anim.activity_back_out);
} }
if (id == R.id.action_social_media) {
Intent intent = new Intent(CategoryListActivity.this, BannerActivity.class);
intent.putExtra("StoreId", store_id);
intent.putExtra("MerId",mer_Id);
intent.putExtra("CategoryId", "0");
intent.putExtra("DT_LEVEL","STORE");
startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
}
//noinspection SimplifiableIfStatement //noinspection SimplifiableIfStatement
if (id == R.id.action_settings) { if (id == R.id.action_settings) {
return true; return true;
@@ -297,19 +288,12 @@ public class CategoryListActivity extends AppCompatActivity {
Log.e("CatImg--", "" + categoryData.getCategory_img()); Log.e("CatImg--", "" + categoryData.getCategory_img());
holder.categoryIcon.setImageResource(categoryData.getCategory_img()); holder.categoryIcon.setImageResource(categoryData.getCategory_img());
holder.lay_menu.setOnClickListener(view -> { holder.lay_menu.setOnClickListener(view -> {
if(categoryData.getCategory().equalsIgnoreCase("Detailer")){
Intent intent = new Intent(CategoryListActivity.this, BannerActivity.class);
intent.putExtra("StoreId", store_id);
intent.putExtra("MerId",mer_Id);
startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
} else{
Intent intent = new Intent(CategoryListActivity.this, CategoryWisePerformanceActivity.class); Intent intent = new Intent(CategoryListActivity.this, CategoryWisePerformanceActivity.class);
intent.putExtra("categoryName", categoryData.getCategory()); intent.putExtra("categoryName", categoryData.getCategory());
intent.putExtra("categoryId", categoryData.getCategory_id()); intent.putExtra("categoryId", categoryData.getCategory_id());
startActivity(intent); startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out); overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
}
}); });
} }
@@ -711,4 +695,10 @@ public class CategoryListActivity extends AppCompatActivity {
} }
return flag; return flag;
} }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.banner_menu, menu);
return true;
}
} }
@@ -484,10 +484,10 @@ public class DailyDataMenuActivity extends AppCompatActivity {
} }
//Detailer //Detailer
data = new DailyDataMenuGetterSetter(); /* data = new DailyDataMenuGetterSetter();
data.setCategory_name("Detailer"); data.setCategory_name("Detailer");
data.setCategory_img(R.mipmap.oral_care); data.setCategory_img(R.mipmap.oral_care);
categoryList.add(data); categoryList.add(data);*/
if (categoryList.size() % 2 != 0) { if (categoryList.size() % 2 != 0) {
data = new DailyDataMenuGetterSetter(); data = new DailyDataMenuGetterSetter();
@@ -552,22 +552,29 @@ public class DailyDataMenuActivity extends AppCompatActivity {
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.banner_menu, menu);
//getMenuInflater().inflate(R.menu.main, menu);
return true; return true;
} }
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId(); int id = item.getItemId();
if (id == android.R.id.home) { if (id == android.R.id.home) {
finish(); finish();
} }
if (id == R.id.action_social_media) {
Intent intent = new Intent(DailyDataMenuActivity.this, BannerActivity.class);
String merId = preferences.getString(CommonString.KEY_MERCHANDISER_ID, "");
intent.putExtra("StoreId", store_id);
intent.putExtra("MerId", merId);
intent.putExtra("CategoryId", categoryId);
intent.putExtra("DT_LEVEL", "CATEGORY");
startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
}
//noinspection SimplifiableIfStatement //noinspection SimplifiableIfStatement
if (id == R.id.action_settings) { if (id == R.id.action_settings) {
return true; return true;
@@ -770,9 +777,9 @@ public class DailyDataMenuActivity extends AppCompatActivity {
holder.categoryName.setTextColor(isPdPogIRMapping() != null && !isPdPogIRMapping().isEmpty() && camera_allow.equals("1") holder.categoryName.setTextColor(isPdPogIRMapping() != null && !isPdPogIRMapping().isEmpty() && camera_allow.equals("1")
? ContextCompat.getColor(context, R.color.black) : ContextCompat.getColor(context, R.color.grey_background)); ? ContextCompat.getColor(context, R.color.black) : ContextCompat.getColor(context, R.color.grey_background));
}*/ }*/
else if (dailyData.getCategory_name().equalsIgnoreCase("Detailer")) { /* else if (dailyData.getCategory_name().equalsIgnoreCase("Detailer")) {
holder.categoryName.setTextColor(ContextCompat.getColor(context, R.color.black)); holder.categoryName.setTextColor(ContextCompat.getColor(context, R.color.black));
} }*/
else{ else{
holder.irview.setVisibility(View.GONE); holder.irview.setVisibility(View.GONE);
} }
@@ -843,15 +850,16 @@ public class DailyDataMenuActivity extends AppCompatActivity {
overridePendingTransition(R.anim.activity_in, R.anim.activity_out); overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
} }
} }
else if (dailyData.getCategory_name().equalsIgnoreCase("Detailer")) { /* else if (dailyData.getCategory_name().equalsIgnoreCase("Detailer")) {
Intent intent = new Intent(DailyDataMenuActivity.this, BannerActivity.class); Intent intent = new Intent(DailyDataMenuActivity.this, BannerActivity.class);
String merId = preferences.getString(CommonString.KEY_MERCHANDISER_ID, ""); String merId = preferences.getString(CommonString.KEY_MERCHANDISER_ID, "");
intent.putExtra("StoreId", store_id); intent.putExtra("StoreId", store_id);
intent.putExtra("MerId", merId); intent.putExtra("MerId", merId);
intent.putExtra("CategoryId", categoryId); intent.putExtra("CategoryId", categoryId);
intent.putExtra("DT_LEVEL", "CATEGORY");
startActivity(intent); startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out); overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
} }*/
else if (dailyData.getCategory_name().equalsIgnoreCase(getResources().getString(R.string.title_activity_ir_image))) { else if (dailyData.getCategory_name().equalsIgnoreCase(getResources().getString(R.string.title_activity_ir_image))) {
if (isPdIRMapping() != null && !isPdIRMapping().isEmpty() && camera_allow.equals("1")) { if (isPdIRMapping() != null && !isPdIRMapping().isEmpty() && camera_allow.equals("1")) {
Intent intent = new Intent(DailyDataMenuActivity.this, PDimageActivity.class); Intent intent = new Intent(DailyDataMenuActivity.this, PDimageActivity.class);
@@ -47,6 +47,7 @@ import cpm.com.gskmtorange.xmlGetterSetter.ImageGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.MSL_AvailabilityGetterSetter; import cpm.com.gskmtorange.xmlGetterSetter.MSL_AvailabilityGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.MSL_AvailabilityStockFacingGetterSetter; import cpm.com.gskmtorange.xmlGetterSetter.MSL_AvailabilityStockFacingGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.MappingPharmaQuestionGetterSetter; import cpm.com.gskmtorange.xmlGetterSetter.MappingPharmaQuestionGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.MasterDetailerGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.NoCameraDataGetterSetter; import cpm.com.gskmtorange.xmlGetterSetter.NoCameraDataGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.POGGetterSetter; import cpm.com.gskmtorange.xmlGetterSetter.POGGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.PharmaMSLInsertedGetterSetter; import cpm.com.gskmtorange.xmlGetterSetter.PharmaMSLInsertedGetterSetter;
@@ -1555,9 +1556,6 @@ public class UploadActivity extends AppCompatActivity {
data.name = getString(R.string.ir_data_upload); data.name = getString(R.string.ir_data_upload);
publishProgress(data); publishProgress(data);
////IRPDVisibility-Upload Data ////IRPDVisibility-Upload Data
/* String irPD_visi_xmlData = ""; /* String irPD_visi_xmlData = "";
onXML = ""; onXML = "";
@@ -1647,8 +1645,54 @@ public class UploadActivity extends AppCompatActivity {
data.value = 72; data.value = 72;
data.name = getString(R.string.visit_type_data_uploading); data.name = getString(R.string.visit_type_data_uploading);
publishProgress(data); publishProgress(data);
}
String detailer_xml = "";
onXML = "";
ArrayList<MasterDetailerGetterSetter> detailerList = db.getUploadedDetailerData(coverageList.get(i).getStoreId());
if (!detailerList.isEmpty()) {
for (int j = 0; j < detailerList.size(); j++) {
onXML =
"[DETAILER_DATA]" +
"[MID]" + mid + "[/MID]" +
"[USERID]" + userId + "[/USERID]" +
"[STORE_ID]" + coverageList.get(i).getStoreId() + "[/STORE_ID]" +
"[VISIT_DATE]" + detailerList.get(j).getVisitdate() + "[/VISIT_DATE]" +
"[START_TIME]" + detailerList.get(j).getStart_time() + "[/START_TIME]" +
"[END_TIME]" + detailerList.get(j).getEnd_time() + "[/END_TIME]" +
"[DURATION]" + detailerList.get(j).getDuration() + "[/DURATION]" +
"[DETAILER_ID]" + detailerList.get(j).getDetailerId() + "[/DETAILER_ID]" +
"[CATEGORY_ID]" + detailerList.get(j).getCATEGORY_ID().get(0) + "[/CATEGORY_ID]" +
"[DT_LEVEL]" + detailerList.get(j).getDT_LEVEL().get(0) + "[/DT_LEVEL]" +
"[/DETAILER_DATA]";
detailer_xml = detailer_xml + onXML;
}
final String sos_xml = "[DATA]" + detailer_xml + "[/DATA]";
Log.e("detailer_xml_data", sos_xml);
request = new SoapObject(CommonString.NAMESPACE, CommonString.METHOD_UPLOAD_STOCK_XML_DATA);
request.addProperty("XMLDATA", sos_xml);
request.addProperty("KEYS", "DETAILER_USAGE_TRACKER_XML");
request.addProperty("USERNAME", userId);
request.addProperty("MID", mid);
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
androidHttpTransport = new OkHttpTransportSE(CommonString.URL);
androidHttpTransport.call(CommonString.SOAP_ACTION + CommonString.METHOD_UPLOAD_STOCK_XML_DATA, envelope);
result = envelope.getResponse();
if (!result.toString().equalsIgnoreCase(CommonString.KEY_SUCCESS)) {
return CommonString.METHOD_UPLOAD_STOCK_XML_DATA;
}
}
data.value = 73;
data.name = getString(R.string.detailer_data_uploading);
publishProgress(data);
}
// SET COVERAGE STATUS // SET COVERAGE STATUS
String final_xml = ""; String final_xml = "";
@@ -67,4 +67,72 @@ public class MasterDetailerGetterSetter {
public void setDT_THUMBNAIL(String DT_THUMBNAIL) { public void setDT_THUMBNAIL(String DT_THUMBNAIL) {
this.DT_THUMBNAIL.add(DT_THUMBNAIL); this.DT_THUMBNAIL.add(DT_THUMBNAIL);
} }
public String getVisitdate() {
return visitdate;
}
public void setVisitdate(String visitdate) {
this.visitdate = visitdate;
}
public String getStart_time() {
return start_time;
}
public void setStart_time(String start_time) {
this.start_time = start_time;
}
public String getEnd_time() {
return end_time;
}
public void setEnd_time(String end_time) {
this.end_time = end_time;
}
public String getDuration() {
return duration;
}
public void setDuration(String duration) {
this.duration = duration;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getDetailerId() {
return detailerId;
}
public void setDetailerId(String detailerId) {
this.detailerId = detailerId;
}
public String getDt_level() {
return dt_level;
}
public void setDt_level(String dt_level) {
this.dt_level = dt_level;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
String visitdate,start_time,end_time,duration,storeId,detailerId,dt_level,userId;
} }
@@ -0,0 +1,151 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="512dp"
android:height="512dp"
android:viewportWidth="511.92"
android:viewportHeight="511.92">
<path
android:pathData="M195.33,356.65H20.18c-7,0 -12.68,-5.68 -12.68,-12.68V183.29c0,-7 5.68,-12.68 12.68,-12.68H195.33c7,0 12.68,5.68 12.68,12.68v160.68C208.01,350.97 202.33,356.65 195.33,356.65z"
android:fillColor="#FE93D3"/>
<path
android:pathData="M195.33,170.61h-47.74l13.44,109.88c0.69,5.67 -3.73,10.68 -9.45,10.68h-1.09c-18.12,0 -32.81,14.69 -32.81,32.81v32.68h77.66c7,0 12.68,-5.68 12.68,-12.68V183.29C208.01,176.29 202.33,170.61 195.33,170.61z"
android:fillColor="#FE73C5"/>
<path
android:pathData="M7.5,320.8v23.17c0,7 5.68,12.68 12.68,12.68H195.33c7,0 12.68,-5.68 12.68,-12.68V183.29c0,-7 -5.68,-12.68 -12.68,-12.68H20.18c-7,0 -12.68,5.68 -12.68,12.68v108.51"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M104.73,237.21c1.82,1.26 4.23,1.26 6.05,0c3.45,-2.38 9.77,-5.64 18.54,-5.64c12.77,0 21.56,9.87 21.56,21.35c0,12.97 -11.41,28.26 -40.87,41.7c-1.43,0.65 -3.08,0.65 -4.51,0c-29.46,-13.44 -40.87,-28.73 -40.87,-41.7c0,-11.49 8.8,-21.35 21.56,-21.35C94.96,231.57 101.28,234.83 104.73,237.21z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M104.73,237.21c1.82,1.26 4.23,1.26 6.05,0c3.45,-2.38 9.77,-5.64 18.54,-5.64c12.77,0 21.56,9.87 21.56,21.35c0,12.97 -11.41,28.26 -40.87,41.7c-1.43,0.65 -3.08,0.65 -4.51,0c-29.46,-13.44 -40.87,-28.73 -40.87,-41.7c0,-11.49 8.8,-21.35 21.56,-21.35C94.96,231.57 101.28,234.83 104.73,237.21z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M415.03,320.8l-216.92,26.52c-4.77,0.58 -9.11,-2.81 -9.7,-7.58L154.34,61.08c-0.58,-4.77 2.81,-9.11 7.58,-9.7l216.92,-26.52c4.77,-0.58 9.11,2.81 9.7,7.58l34.07,278.65C423.2,315.88 419.8,320.22 415.03,320.8z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M378.85,24.87l-28.34,3.46c4.77,-0.58 9.11,2.81 9.7,7.58l34.07,278.65c0.58,4.77 -2.81,9.11 -7.58,9.7l28.34,-3.46c4.77,-0.58 8.17,-4.92 7.58,-9.7L388.54,32.45C387.96,27.68 383.62,24.28 378.85,24.87z"
android:fillColor="#EFEDEF"/>
<path
android:pathData="M392.8,67.33l-4.26,-34.88c-0.58,-4.77 -4.92,-8.17 -9.7,-7.58L161.93,51.39c-4.77,0.58 -8.17,4.92 -7.58,9.7l34.07,278.65c0.58,4.77 4.92,8.17 9.7,7.58L415.03,320.8c4.77,-0.58 8.17,-4.92 7.58,-9.7L396.35,96.33"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M217.16,97.46L336.33,82.89"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M223.03,145.42L342.2,130.85"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M228.89,193.38L348.06,178.81"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M234.76,241.34L353.93,226.77"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M240.62,289.3L359.79,274.73"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M470.14,288.42l33.62,-92.69c2.07,-5.7 -0.88,-11.99 -6.57,-14.06l-157.66,-57.19c-5.7,-2.07 -11.99,0.88 -14.06,6.57l-30.97,85.38C403.75,199.2 386.75,280.08 470.14,288.42z"
android:fillColor="#C8EFFE"/>
<path
android:pathData="M497.18,181.67l-23.82,-8.64c5.7,2.07 8.64,8.36 6.57,14.06l-34.78,95.88c7.24,2.59 15.45,4.5 24.98,5.45l33.62,-92.69C505.83,190.03 502.88,183.74 497.18,181.67z"
android:fillColor="#B3DAFE"/>
<path
android:pathData="M470.14,288.42l33.62,-92.69c2.07,-5.7 -0.88,-11.99 -6.57,-14.06l-157.66,-57.19c-5.7,-2.07 -11.99,0.88 -14.06,6.57l-30.97,85.38C403.75,199.2 386.75,280.08 470.14,288.42z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M294.49,216.44l-32.32,89.11c-2.07,5.7 0.88,11.99 6.57,14.06l157.66,57.19c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C386.75,280.08 403.75,199.2 294.49,216.44z"
android:fillColor="#9BE69D"/>
<path
android:pathData="M445.16,282.97l-28.51,78.61c-2.07,5.7 -8.36,8.64 -14.06,6.57l23.82,8.64c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C460.61,287.47 452.4,285.56 445.16,282.97z"
android:fillColor="#6FD7A3"/>
<path
android:pathData="M294.49,216.44l-32.32,89.11c-2.07,5.7 0.88,11.99 6.57,14.06l157.66,57.19c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C386.75,280.08 403.75,199.2 294.49,216.44z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M446.25,211.59m-15.18,0a15.18,15.18 0,1 1,30.37 0a15.18,15.18 0,1 1,-30.37 0"
android:fillColor="#FFE177"/>
<path
android:pathData="M446.25,211.59m-15.18,0a15.18,15.18 0,1 1,30.37 0a15.18,15.18 0,1 1,-30.37 0"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M361.52,487.12H150.48c-7.07,0 -12.81,-5.73 -12.81,-12.81V323.97c0,-7.07 5.73,-12.81 12.81,-12.81h211.04c7.07,0 12.81,5.73 12.81,12.81v150.35C374.33,481.39 368.59,487.12 361.52,487.12z"
android:fillColor="#EB5569"/>
<path
android:pathData="M361.52,311.16h-24.26c7.07,0 12.81,5.73 12.81,12.81v150.35c0,7.07 -5.73,12.81 -12.81,12.81h24.26c7.07,0 12.81,-5.73 12.81,-12.81V323.97C374.33,316.89 368.59,311.16 361.52,311.16z"
android:fillColor="#E53950"/>
<path
android:pathData="M280.82,392.63l-40.82,-27.66c-5.22,-3.54 -12.28,0.2 -12.28,6.51v55.33c0,6.31 7.05,10.05 12.28,6.51l40.82,-27.66C285.42,402.53 285.42,395.75 280.82,392.63z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M280.82,392.63l-40.82,-27.66c-5.22,-3.54 -12.28,0.2 -12.28,6.51v55.33c0,6.31 7.05,10.05 12.28,6.51l40.82,-27.66C285.42,402.53 285.42,395.75 280.82,392.63z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M374.33,413.46v-89.5c0,-7.07 -5.73,-12.81 -12.81,-12.81H150.48c-7.07,0 -12.81,5.73 -12.81,12.81v150.35c0,7.07 5.73,12.81 12.81,12.81h211.04c7.07,0 12.81,-5.73 12.81,-12.81v-31.85"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
</vector>
@@ -0,0 +1,151 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="512dp"
android:height="512dp"
android:viewportWidth="511.92"
android:viewportHeight="511.92">
<path
android:pathData="M195.33,356.65H20.18c-7,0 -12.68,-5.68 -12.68,-12.68V183.29c0,-7 5.68,-12.68 12.68,-12.68H195.33c7,0 12.68,5.68 12.68,12.68v160.68C208.01,350.97 202.33,356.65 195.33,356.65z"
android:fillColor="#FE93D3"/>
<path
android:pathData="M195.33,170.61h-47.74l13.44,109.88c0.69,5.67 -3.73,10.68 -9.45,10.68h-1.09c-18.12,0 -32.81,14.69 -32.81,32.81v32.68h77.66c7,0 12.68,-5.68 12.68,-12.68V183.29C208.01,176.29 202.33,170.61 195.33,170.61z"
android:fillColor="#FE73C5"/>
<path
android:pathData="M7.5,320.8v23.17c0,7 5.68,12.68 12.68,12.68H195.33c7,0 12.68,-5.68 12.68,-12.68V183.29c0,-7 -5.68,-12.68 -12.68,-12.68H20.18c-7,0 -12.68,5.68 -12.68,12.68v108.51"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M104.73,237.21c1.82,1.26 4.23,1.26 6.05,0c3.45,-2.38 9.77,-5.64 18.54,-5.64c12.77,0 21.56,9.87 21.56,21.35c0,12.97 -11.41,28.26 -40.87,41.7c-1.43,0.65 -3.08,0.65 -4.51,0c-29.46,-13.44 -40.87,-28.73 -40.87,-41.7c0,-11.49 8.8,-21.35 21.56,-21.35C94.96,231.57 101.28,234.83 104.73,237.21z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M104.73,237.21c1.82,1.26 4.23,1.26 6.05,0c3.45,-2.38 9.77,-5.64 18.54,-5.64c12.77,0 21.56,9.87 21.56,21.35c0,12.97 -11.41,28.26 -40.87,41.7c-1.43,0.65 -3.08,0.65 -4.51,0c-29.46,-13.44 -40.87,-28.73 -40.87,-41.7c0,-11.49 8.8,-21.35 21.56,-21.35C94.96,231.57 101.28,234.83 104.73,237.21z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M415.03,320.8l-216.92,26.52c-4.77,0.58 -9.11,-2.81 -9.7,-7.58L154.34,61.08c-0.58,-4.77 2.81,-9.11 7.58,-9.7l216.92,-26.52c4.77,-0.58 9.11,2.81 9.7,7.58l34.07,278.65C423.2,315.88 419.8,320.22 415.03,320.8z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M378.85,24.87l-28.34,3.46c4.77,-0.58 9.11,2.81 9.7,7.58l34.07,278.65c0.58,4.77 -2.81,9.11 -7.58,9.7l28.34,-3.46c4.77,-0.58 8.17,-4.92 7.58,-9.7L388.54,32.45C387.96,27.68 383.62,24.28 378.85,24.87z"
android:fillColor="#EFEDEF"/>
<path
android:pathData="M392.8,67.33l-4.26,-34.88c-0.58,-4.77 -4.92,-8.17 -9.7,-7.58L161.93,51.39c-4.77,0.58 -8.17,4.92 -7.58,9.7l34.07,278.65c0.58,4.77 4.92,8.17 9.7,7.58L415.03,320.8c4.77,-0.58 8.17,-4.92 7.58,-9.7L396.35,96.33"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M217.16,97.46L336.33,82.89"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M223.03,145.42L342.2,130.85"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M228.89,193.38L348.06,178.81"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M234.76,241.34L353.93,226.77"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M240.62,289.3L359.79,274.73"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M470.14,288.42l33.62,-92.69c2.07,-5.7 -0.88,-11.99 -6.57,-14.06l-157.66,-57.19c-5.7,-2.07 -11.99,0.88 -14.06,6.57l-30.97,85.38C403.75,199.2 386.75,280.08 470.14,288.42z"
android:fillColor="#C8EFFE"/>
<path
android:pathData="M497.18,181.67l-23.82,-8.64c5.7,2.07 8.64,8.36 6.57,14.06l-34.78,95.88c7.24,2.59 15.45,4.5 24.98,5.45l33.62,-92.69C505.83,190.03 502.88,183.74 497.18,181.67z"
android:fillColor="#B3DAFE"/>
<path
android:pathData="M470.14,288.42l33.62,-92.69c2.07,-5.7 -0.88,-11.99 -6.57,-14.06l-157.66,-57.19c-5.7,-2.07 -11.99,0.88 -14.06,6.57l-30.97,85.38C403.75,199.2 386.75,280.08 470.14,288.42z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M294.49,216.44l-32.32,89.11c-2.07,5.7 0.88,11.99 6.57,14.06l157.66,57.19c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C386.75,280.08 403.75,199.2 294.49,216.44z"
android:fillColor="#9BE69D"/>
<path
android:pathData="M445.16,282.97l-28.51,78.61c-2.07,5.7 -8.36,8.64 -14.06,6.57l23.82,8.64c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C460.61,287.47 452.4,285.56 445.16,282.97z"
android:fillColor="#6FD7A3"/>
<path
android:pathData="M294.49,216.44l-32.32,89.11c-2.07,5.7 0.88,11.99 6.57,14.06l157.66,57.19c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C386.75,280.08 403.75,199.2 294.49,216.44z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M446.25,211.59m-15.18,0a15.18,15.18 0,1 1,30.37 0a15.18,15.18 0,1 1,-30.37 0"
android:fillColor="#FFE177"/>
<path
android:pathData="M446.25,211.59m-15.18,0a15.18,15.18 0,1 1,30.37 0a15.18,15.18 0,1 1,-30.37 0"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M361.52,487.12H150.48c-7.07,0 -12.81,-5.73 -12.81,-12.81V323.97c0,-7.07 5.73,-12.81 12.81,-12.81h211.04c7.07,0 12.81,5.73 12.81,12.81v150.35C374.33,481.39 368.59,487.12 361.52,487.12z"
android:fillColor="#EB5569"/>
<path
android:pathData="M361.52,311.16h-24.26c7.07,0 12.81,5.73 12.81,12.81v150.35c0,7.07 -5.73,12.81 -12.81,12.81h24.26c7.07,0 12.81,-5.73 12.81,-12.81V323.97C374.33,316.89 368.59,311.16 361.52,311.16z"
android:fillColor="#E53950"/>
<path
android:pathData="M280.82,392.63l-40.82,-27.66c-5.22,-3.54 -12.28,0.2 -12.28,6.51v55.33c0,6.31 7.05,10.05 12.28,6.51l40.82,-27.66C285.42,402.53 285.42,395.75 280.82,392.63z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M280.82,392.63l-40.82,-27.66c-5.22,-3.54 -12.28,0.2 -12.28,6.51v55.33c0,6.31 7.05,10.05 12.28,6.51l40.82,-27.66C285.42,402.53 285.42,395.75 280.82,392.63z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M374.33,413.46v-89.5c0,-7.07 -5.73,-12.81 -12.81,-12.81H150.48c-7.07,0 -12.81,5.73 -12.81,12.81v150.35c0,7.07 5.73,12.81 12.81,12.81h211.04c7.07,0 12.81,-5.73 12.81,-12.81v-31.85"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
</vector>
@@ -1,35 +1,68 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" <androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp" android:layout_margin="8dp"
app:cardCornerRadius="8dp" app:cardCornerRadius="12dp"
app:cardElevation="4dp"> app:cardElevation="4dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="110dp"
android:orientation="horizontal" android:orientation="horizontal">
android:padding="16dp"
android:gravity="center_vertical">
<ImageView <!-- Red Vertical Strip -->
android:id="@+id/imgThumbnail" <View
android:layout_width="60dp" android:layout_width="4dp"
android:layout_height="60dp" android:layout_height="match_parent"
android:scaleType="centerCrop" android:background="@color/colorPrimaryDark"/>
android:src="@mipmap/ic_launcher" />
<!-- Content Area -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:padding="12dp">
<TextView <TextView
android:id="@+id/tvName" android:id="@+id/tvName"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginTop="4dp"
android:text="Detailer Name" android:textSize="22sp"
android:textColor="@color/black" android:textStyle="bold"
android:textSize="16sp" android:textColor="#000000"/>
android:textStyle="bold" />
<TextView
android:id="@+id/tvViewDetail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/view_detailer"
android:fontFamily="sans-serif-medium"
android:textSize="12sp"
android:textColor="@color/colorPrimary"/>
</LinearLayout>
<!-- Right Icon Area -->
<LinearLayout
android:layout_width="80dp"
android:layout_height="match_parent"
android:background="#E8FBE3"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/imgThumbnail"
android:layout_width="70dp"
android:layout_height="90dp"
/>
</LinearLayout>
</LinearLayout> </LinearLayout>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_social_media"
android:icon="@drawable/social_media"
android:title="Social Media"
app:showAsAction="always" />
</menu>
@@ -220,6 +220,7 @@
<string name="order_taking_data_uploading">Order Taking Data Uploading</string> <string name="order_taking_data_uploading">Order Taking Data Uploading</string>
<string name="order_received_data_uploading">Order Received Data Uploading</string> <string name="order_received_data_uploading">Order Received Data Uploading</string>
<string name="visit_type_data_uploading">Visit Type Data Uploading</string> <string name="visit_type_data_uploading">Visit Type Data Uploading</string>
<string name="detailer_data_uploading">Detailer Data Uploading</string>
<string name="stock_data_uploading">Stock Data Uploading</string> <string name="stock_data_uploading">Stock Data Uploading</string>
<string name="t2p_data_uploading">T2P Data Uploading</string> <string name="t2p_data_uploading">T2P Data Uploading</string>
<string name="additional_data_uploading">Additional Visibility Data Uploading</string> <string name="additional_data_uploading">Additional Visibility Data Uploading</string>
@@ -469,6 +470,7 @@
<string name="please_enter_order_qty">Please enter order qty</string> <string name="please_enter_order_qty">Please enter order qty</string>
<string name="add_different_sku">This SKU has already been added. Please add a different SKU.</string> <string name="add_different_sku">This SKU has already been added. Please add a different SKU.</string>
<string name="order_details">Order Details</string> <string name="order_details">Order Details</string>
<string name="view_detailer">View Detailer →</string>
</resources> </resources>
@@ -1,6 +1,6 @@
#Thu May 14 13:16:57 IST 2026 #Thu Jun 18 11:00:06 IST 2026
com.androidbuts.multispinnerfilter.library-main-6\:/layout/activity_main.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\activity_main.xml com.androidbuts.multispinnerfilter.library-main-6\:/layout/activity_main.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\activity_main.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/alert_dialog_listview_search.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\alert_dialog_listview_search.xml com.androidbuts.multispinnerfilter.library-main-6\:/layout/alert_dialog_listview_search.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\alert_dialog_listview_search.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/item_listview_multiple.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\item_listview_multiple.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/item_listview_single.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\item_listview_single.xml com.androidbuts.multispinnerfilter.library-main-6\:/layout/item_listview_single.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\item_listview_single.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/textview_for_spinner.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\textview_for_spinner.xml com.androidbuts.multispinnerfilter.library-main-6\:/layout/textview_for_spinner.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\textview_for_spinner.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/item_listview_multiple.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\item_listview_multiple.xml
@@ -1,4 +1,4 @@
#Thu May 14 12:13:15 IST 2026 #Wed Jun 17 15:19:01 IST 2026
com.androidbuts.multispinnerfilter.library-main-5\:/layout/activity_main.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\release\\packageReleaseResources\\layout\\activity_main.xml com.androidbuts.multispinnerfilter.library-main-5\:/layout/activity_main.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\release\\packageReleaseResources\\layout\\activity_main.xml
com.androidbuts.multispinnerfilter.library-main-5\:/layout/alert_dialog_listview_search.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\release\\packageReleaseResources\\layout\\alert_dialog_listview_search.xml com.androidbuts.multispinnerfilter.library-main-5\:/layout/alert_dialog_listview_search.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\release\\packageReleaseResources\\layout\\alert_dialog_listview_search.xml
com.androidbuts.multispinnerfilter.library-main-5\:/layout/item_listview_multiple.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\release\\packageReleaseResources\\layout\\item_listview_multiple.xml com.androidbuts.multispinnerfilter.library-main-5\:/layout/item_listview_multiple.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\release\\packageReleaseResources\\layout\\item_listview_multiple.xml