diff --git a/.idea/misc.xml b/.idea/misc.xml index 8236be1e..83b8cb7d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -98,6 +98,7 @@ + @@ -128,6 +129,7 @@ + @@ -157,7 +159,7 @@ - + @@ -176,7 +178,7 @@ - + @@ -196,6 +198,7 @@ + @@ -242,6 +245,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index 7cdc2a3a..4163f6e4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,9 +13,12 @@ android { applicationId "es.verdnatura" minSdkVersion 21 //21 targetSdkVersion 30 - versionCode 128 - versionName = "8.8Beta" + versionCode 130 + versionName = "9Beta" + //versionName = "8.9Beta" versionCode 129 + //versionName = "8.8Beta" versioncode 128 //versionName = "8.7Beta" versionCode 127 + //versionName = "8.8Beta" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 1e078ff4..73259592 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,8 +11,8 @@ "type": "SINGLE", "filters": [], "attributes": [], - "versionCode": 128, - "versionName": "8.8Beta", + "versionCode": 130, + "versionName": "9Beta", "outputFile": "app-release.apk" } ], diff --git a/app/release/vn-pickingBeta.apk b/app/release/vn-pickingBeta.apk index 774552c4..ac10086c 100644 Binary files a/app/release/vn-pickingBeta.apk and b/app/release/vn-pickingBeta.apk differ diff --git a/app/src/main/java/es/verdnatura/di/viewModelModule.kt b/app/src/main/java/es/verdnatura/di/viewModelModule.kt index bd43ef02..2f1c63ee 100644 --- a/app/src/main/java/es/verdnatura/di/viewModelModule.kt +++ b/app/src/main/java/es/verdnatura/di/viewModelModule.kt @@ -197,4 +197,8 @@ val viewModelModule = module { ClaimViewModel(androidContext()) } + viewModel { + PalletScanViewModel(androidContext()) + } + } \ No newline at end of file diff --git a/app/src/main/java/es/verdnatura/domain/GetLoginUserCase.kt b/app/src/main/java/es/verdnatura/domain/GetLoginUserCase.kt index a18826c3..cb6ab34e 100644 --- a/app/src/main/java/es/verdnatura/domain/GetLoginUserCase.kt +++ b/app/src/main/java/es/verdnatura/domain/GetLoginUserCase.kt @@ -118,6 +118,16 @@ return restClient!!.getVersion("json", "1", usuario, password, "application/json return restClient!!.worker_getSector("json", "1", usuario, password, "application/json") } + fun operator_getNumberOfWagons(usuario: String, password: String): Call { + + return restClient!!.operator_getNumberOfWagons("json", "1", usuario, password, "application/json") + } + + fun operator_add(usuario: String, password: String): Call { + + return restClient!!.operator_add("json", "1", usuario, password, "application/json") + } + fun worker_getPrinter(usuario: String, password: String): Call> { return restClient!!.worker_getPrinter("json", "1", usuario, password, "application/json") diff --git a/app/src/main/java/es/verdnatura/domain/GetPaletizadoresUserCase.kt b/app/src/main/java/es/verdnatura/domain/GetPaletizadoresUserCase.kt index f3cf4336..fd8cd0f8 100644 --- a/app/src/main/java/es/verdnatura/domain/GetPaletizadoresUserCase.kt +++ b/app/src/main/java/es/verdnatura/domain/GetPaletizadoresUserCase.kt @@ -275,6 +275,27 @@ class GetPaletizadoresUserCase(context: Context) : RestClient(context) { ) } + fun expeditionPallet_get( + usuario: String, + password: String, + vPalletFk: String + + + + ): Call { + val params: ArrayList = ArrayList() + params.add(vPalletFk) + + return restClient!!.expeditionPallet_get( + "json", + "1", + usuario, + password, + "application/json", + params + ) + } + fun expeditionState_addByPallet( usuario: String, password: String, @@ -296,8 +317,6 @@ class GetPaletizadoresUserCase(context: Context) : RestClient(context) { params ) } - - fun expeditionLoading_add( usuario: String, password: String, diff --git a/app/src/main/java/es/verdnatura/domain/GetSacadorControladorUserCase.kt b/app/src/main/java/es/verdnatura/domain/GetSacadorControladorUserCase.kt index 8f1bacb3..6ad92672 100644 --- a/app/src/main/java/es/verdnatura/domain/GetSacadorControladorUserCase.kt +++ b/app/src/main/java/es/verdnatura/domain/GetSacadorControladorUserCase.kt @@ -170,7 +170,7 @@ class GetSacadorControladorUserCase(context: Context) : RestClient(context) { vStateFk: String, vIsChecked: String, vBuyFk: String - ): Call { + ): Call { val params: ArrayList = ArrayList() params.add(saleFk) params.add(vOriginalQuantity) @@ -451,6 +451,25 @@ class GetSacadorControladorUserCase(context: Context) : RestClient(context) { params ) } + fun debug_add( + usuario: String, + password: String, + buyFk: String, + message: String + ): Call { + val params: ArrayList = ArrayList() + params.add(buyFk) + params.add(message) + return restClient!!.debug_add( + "json", + "1", + usuario, + password, + "application/json", + params + ) + + } fun getIdFromCode(usuario: String, password: String, code: String): Call { diff --git a/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt b/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt index 4768792e..0f4e0981 100644 --- a/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt +++ b/app/src/main/java/es/verdnatura/domain/VerdnaturaService.kt @@ -170,6 +170,26 @@ interface VerdnaturaService { ): Call + @POST("almacennew/operator_getNumberOfWagons")//NO SALIX + fun operator_getNumberOfWagons( + @Header("aplicacion") aplicacion: String, + @Header("version") version: String, + @Header("user") user: String, + @Header("pass") pass: String, + @Header("Content-Type") content_type: String + ): + Call + + @POST("almacennew/operator_add")//NO SALIX + fun operator_add( + @Header("aplicacion") aplicacion: String, + @Header("version") version: String, + @Header("user") user: String, + @Header("pass") pass: String, + @Header("Content-Type") content_type: String + ): + Call + //PRESACADORES ========================================================================> @POST("almacennew/ticketToPrePrepare")//NO SALIX @@ -369,7 +389,7 @@ interface VerdnaturaService { @Header("Content-Type") content_type: String, @Body params: List ): - Call + Call /* @POST("almacennew/saleTracking_update")//REVISADA fun saleTracking_update( @@ -539,6 +559,17 @@ interface VerdnaturaService { Call + @POST("almacennew/debug_add")//REVISADA + fun debug_add( + @Header("aplicacion") aplicacion: String, + @Header("version") version: String, + @Header("user") user: String, + @Header("pass") pass: String, + @Header("Content-Type") content_type: String, + @Body params: List + ): + Call + @POST("almacennew/get_salesModifiedFromTicket")//REVISADA fun get_salesModifiedFromTicket( @Header("aplicacion") aplicacion: String, @@ -1353,6 +1384,16 @@ interface VerdnaturaService { ): Call + @POST("almacennew/expeditionPallet_get")//REVISADA + fun expeditionPallet_get( + @Header("aplicacion") aplicacion: String, + @Header("version") version: String, + @Header("user") user: String, + @Header("pass") pass: String, + @Header("Content-Type") content_type: String, + @Body params: List + ): + Call @POST("almacennew/expeditionLoading_add")//REVISADA fun expeditionLoading_add( diff --git a/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt b/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt index 4ea546f1..7a87b02f 100644 --- a/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt @@ -52,6 +52,7 @@ abstract class BaseFragment(viewModelCla protected val TOKEN = "token" protected val SECTORDESCRIP = "sectordescrip" protected val SECTORFK = "sectorFk" + protected val NUMBEROFWAGONS="operatorNumberOfWagons" protected val PRINTERNAME= "printername" protected val PRINTERFK = "printerFk" protected val WAREHOUSEFK = "warehouseFk" @@ -537,6 +538,7 @@ override fun onViewCreated(view: View, savedInstanceState: Bundle?) DEPARTMENTMISTAKEID->prefs.getString(name,"").toString() PRINTERFK->prefs.getInt(name,0).toString() PRINTERNAME->prefs.getString(name,getString(R.string.noprinter)).toString() + NUMBEROFWAGONS->prefs.getInt(name,1).toString() "base_url"->{ val preferences = PreferenceManager.getDefaultSharedPreferences(context) diff --git a/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt b/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt index 459fe0a8..d14a9074 100644 --- a/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt +++ b/app/src/main/java/es/verdnatura/presentation/common/ResponseItemVO.kt @@ -7,6 +7,13 @@ class ResponseItemVO( var codeError:Int=0 ) +class ResponseItemNumber( + var response: Int? = null, + var isError: Boolean = false, + var errorMessage: String = "", + var codeError:Int=0 +) + class ResponseItemMachineControl( var response: String = "", var isError: Boolean = false, diff --git a/app/src/main/java/es/verdnatura/presentation/testing/testPrint.kt b/app/src/main/java/es/verdnatura/presentation/testing/testPrint.kt new file mode 100644 index 00000000..8f894078 --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/testing/testPrint.kt @@ -0,0 +1,503 @@ +package es.verdnatura.presentation.testing + +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.pdf.PdfRenderer +import android.net.Uri +import android.os.Bundle +import android.os.Parcel +import android.os.ParcelFileDescriptor +import android.os.ResultReceiver +import android.util.Log +import android.view.View +import android.view.inputmethod.EditorInfo +import android.widget.Toast +import androidx.lifecycle.Observer +import es.verdnatura.R +import es.verdnatura.databinding.FragmentTestingPrintBinding +import es.verdnatura.presentation.base.BaseFragment +import es.verdnatura.presentation.view.component.CustomDialog +import es.verdnatura.presentation.view.feature.qr.QrFragmentViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import java.io.File +import java.io.IOException +import java.io.UnsupportedEncodingException + + +@Suppress("UNUSED_ANONYMOUS_PARAMETER") +class testPrint( + var entryPoint: String = "" +) : BaseFragment(QrFragmentViewModel::class) { + + private var goBack: Boolean = false + override fun getLayoutId(): Int = R.layout.fragment_testing_print + private lateinit var customDialog: CustomDialog + private var itemscaned = "" + + companion object { + fun newInstance(entryPoint: String) = testPrint(entryPoint) + } + + + override fun init() { + + binding.splashProgress.visibility = View.GONE + customDialog = CustomDialog(requireContext()) + + setToolbar() + setEvents() + super.init() + } + + private fun setToolbar() { + + binding.mainToolbar.toolbarTitle.text = entryPoint + } + + override fun onPause() { + goBack = true + super.onPause() + } + + + private fun setEvents() { + + binding.mainToolbar.backButton.setOnClickListener { + requireActivity().onBackPressed() + } + + binding.buttonPrintTemplate.setOnClickListener { + + printTemplate() + } + + binding.buttonPrintAll.setOnClickListener { + + printAllData() + } + binding.buttonPrintZpl.setOnClickListener { + + printZPL() + } + binding.buttonPrintStatus.setOnClickListener { + printStatus() + } + + binding.buttonPrintDisconnect.setOnClickListener { + printDisconnect() + } + + binding.buttonImgToPdf.setOnClickListener { + convertImg() + } + + binding.scanInput.requestFocus() + binding.scanInput.setOnEditorActionListener { v, actionId, event -> + + if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) { + + + goBack = false + if (!binding.scanInput.text.isNullOrEmpty()) { + binding.splashProgress.visibility = View.VISIBLE + viewModel.qr_getCall( + getData(USER), + getData(PASSWORD), + binding.scanInput.text.toString() + ) + itemscaned = binding.scanInput.text.toString() + } + + } + binding.scanInput.setText("") + ma.hideKeyboard(binding.scanInput) + return@setOnEditorActionListener true + } + // false + + } + @Throws(IOException::class) + fun getFileFromAssets(context: Context, fileName: String): File = File(context.cacheDir, fileName) + .also { + if (!it.exists()) { + it.outputStream().use { cache -> + context.assets.open(fileName).use { inputStream -> + inputStream.copyTo(cache) + } + } + } + } + + private fun convertImg() { + + val path: Uri = Uri.parse("file://android_asset/raw/test.pdf") + + //val newPath: String = path.toString() + val filePath = getFileFromAssets(requireContext(), "test.pdf").absolutePath + val input = ParcelFileDescriptor.open(File(filePath), ParcelFileDescriptor.MODE_READ_ONLY) + val renderer = PdfRenderer(input) + + + val page = renderer.openPage(0) + val bitmap = Bitmap.createBitmap( + 200, (200.toFloat() / page.width * page.height).toInt(), Bitmap.Config.ARGB_8888 + ) + page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY) + + + + page.close() + renderer.close() + + +// do something with the bitmap, like putting it on an ImageView + binding.imageView.setImageBitmap(bitmap) + page.close() + renderer.close() + } + + suspend fun renderSinglePage(filePath: String, width: Int) = withContext(Dispatchers.IO) { + PdfRenderer( + ParcelFileDescriptor.open( + File(filePath), + ParcelFileDescriptor.MODE_READ_ONLY + ) + ).use { renderer -> + renderer.openPage(0).renderAndClose(width) + } + } + + fun PdfRenderer.Page.renderAndClose(width: Int) = use { + val bitmap = createBitmap(width) + render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY) + bitmap + } + + private fun PdfRenderer.Page.createBitmap(bitmapWidth: Int): Bitmap { + val bitmap = Bitmap.createBitmap( + bitmapWidth, (bitmapWidth.toFloat() / width * height).toInt(), Bitmap.Config.ARGB_8888 + ) + + val canvas = Canvas(bitmap) + canvas.drawColor(Color.WHITE) + canvas.drawBitmap(bitmap, 0f, 0f, null) + + return bitmap + } + + + private fun printZPL() { + var variableData = HashMap() + variableData.put("%PRODUCT_NAME%", "Apples") + variableData.put("%MSRP%", "$1.00") + variableData.put("%PCT%", "50") + variableData.put("%FINAL%", "$0.50") + variableData.put("%UPC_CODE%", "12345678") + val passthroughData = """ + CT~~CD,~CC^~CT~ + ^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR4,4~SD10^JUS^LRN^CI0^XZ + ^XA + ^MMT + ^PW591 + ^LL0203 + ^LS0 + ^FT171,82^A0N,27,26^FH\^FDBananas^FS + ^FT222,107^A0N,17,16^FH\^FD$0.99^FS + ^FT424,163^A0N,23,24^FB82,1,0,R^FH\^FD10^FS + ^FT314,167^A0N,28,28^FH\^FD$0.89^FS + ^FT367,107^A0N,17,16^FH\^FD8424245^FS + ^FT471,138^A0N,14,14^FH\^FDYou saved:^FS + ^FO451,119^GB103,54,2^FS + ^FT171,20^A0N,17,16^FH\^FDPrintConnect Template Print Example^FS + ^FT171,167^A0N,28,28^FH\^FDFinal Price:^FS + ^FT171,51^A0N,17,16^FH\^FDProduct:^FS + ^FT171,107^A0N,17,16^FH\^FDMSRP:^FS + ^FT508,163^A0N,23,24^FH\^FD%^FS + ^FT328,107^A0N,17,16^FH\^FDUPC:^FS + ^FO171,119^GB259,0,2^FS + ^PQ1,0,1,Y^XZ + + """.trimIndent() + + var passthroughDataBytes: ByteArray? = null + + try { +// Convert template ZPL string to a UTF-8 encoded byte array, which will be sent as an extra with the intent + //templateBytes = templateData.getBytes("UTF-8"); + passthroughDataBytes = passthroughData.toByteArray() + } catch (e: UnsupportedEncodingException) { + // Handle exception + } + val intent = Intent() + intent.component = ComponentName( + "com.zebra.printconnect", + "com.zebra.printconnect.print.PassthroughService" + ) + + intent.putExtra( + "com.zebra.printconnect.PrintService.PASSTHROUGH_DATA", + passthroughDataBytes + ) + intent.putExtra( + "com.zebra.printconnect.PrintService.RESULT_RECEIVER", + buildIPCSafeReceiver(object : ResultReceiver(null) { + + override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { + super.onReceiveResult(resultCode, resultData) + + if (resultCode == 0) { + // Result code 0 indicates success + } else { + // Handle unsuccessful print +// Error message (null on successful print) + val errorMessage = + resultData?.getString("com.zebra.printconnect.PrintService.ERROR_MESSAGE") + Toast.makeText(context, errorMessage, Toast.LENGTH_LONG).show() + } + } + + }) + ) + + requireContext().startService(intent) + } + + private fun printAllData() { + + var variableData = HashMap() + variableData.put("%PRODUCT_NAME%", "Apples") + variableData.put("%MSRP%", "$1.00") + variableData.put("%PCT%", "50") + variableData.put("%FINAL%", "$0.50") + variableData.put("%UPC_CODE%", "12345678") + + val templateData = """ + CT~~CD,~CC^~CT~ + ^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR4,4~SD10^JUS^LRN^CI0^XZ + ^XA + ^MMT + ^PW591 + ^LL0203 + ^LS0 + ^FT171,82^A0N,27,26^FH\^FD%PRODUCT_NAME%^FS + ^FT222,107^A0N,17,16^FH\^FD%MSRP%^FS + ^FT424,163^A0N,23,24^FB82,1,0,R^FH\^FD%PCT%^FS + ^FT314,167^A0N,28,28^FH\^FD%FINAL%^FS + ^FT367,107^A0N,17,16^FH\^FD%UPC_CODE%^FS + ^FT471,138^A0N,14,14^FH\^FDYou saved:^FS + ^FO451,119^GB103,54,2^FS + ^FT171,20^A0N,17,16^FH\^FDPrintConnect Template Print Example^FS + ^FT171,167^A0N,28,28^FH\^FDFinal Price:^FS + ^FT171,51^A0N,17,16^FH\^FDProduct:^FS + ^FT171,107^A0N,17,16^FH\^FDMSRP:^FS + ^FT508,163^A0N,23,24^FH\^FD%^FS + ^FT328,107^A0N,17,16^FH\^FDUPC:^FS + ^FO171,119^GB259,0,2^FS + ^PQ1,0,1,Y^XZ + + """.trimIndent() + + + var templateBytes: ByteArray? = null + + try { +// Convert template ZPL string to a UTF-8 encoded byte array, which will be sent as an extra with the intent + //templateBytes = templateData.getBytes("UTF-8"); + templateBytes = templateData.toByteArray() + } catch (e: UnsupportedEncodingException) { + // Handle exception + Log.d("VERDNATURA::","Error"+e.message) + } + val intent = Intent() + intent.component = ComponentName( + "com.zebra.printconnect", + "com.zebra.printconnect.print.TemplatePrintWithContentService" + ) + + intent.putExtra( + "com.zebra.printconnect.PrintService.TEMPLATE_DATA", + templateBytes + ) + intent.putExtra("com.zebra.printconnect.PrintService.VARIABLE_DATA", variableData) + intent.putExtra( + "com.zebra.printconnect.PrintService.RESULT_RECEIVER", + buildIPCSafeReceiver(object : ResultReceiver(null) { + + override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { + super.onReceiveResult(resultCode, resultData) + + if (resultCode == 0) { + // Result code 0 indicates success + } else { + // Handle unsuccessful print +// Error message (null on successful print) + val errorMessage = + resultData?.getString("com.zebra.printconnect.PrintService.ERROR_MESSAGE") + Toast.makeText(context, errorMessage, Toast.LENGTH_LONG).show() + } + } + + }) + ) + + requireContext().startService(intent) + } + + private fun printTemplate() { + // Define a hash map of variable data + // Strings used for keys will be replaced by their corresponding values in your template file's ZPL + var variableData = HashMap() + variableData.put("%PRODUCT_NAME%", "Bananas") + variableData.put("%MSRP%", "$1.00") + variableData.put("%PCT%", "50") + variableData.put("%FINAL%", "$0.50") + variableData.put("%UPC_CODE%", "12345678") + val intent = Intent() + intent.component = ComponentName( + "com.zebra.printconnect", + "com.zebra.printconnect.print.TemplatePrintService" + ) + + intent.putExtra( + "com.zebra.printconnect.PrintService.TEMPLATE_FILE_NAME", + "PriceTagTemplate.zpl" + ) + intent.putExtra("com.zebra.printconnect.PrintService.VARIABLE_DATA", variableData) + intent.putExtra( + "com.zebra.printconnect.PrintService.RESULT_RECEIVER", + buildIPCSafeReceiver(object : ResultReceiver(null) { + + override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { + super.onReceiveResult(resultCode, resultData) + + if (resultCode == 0) { + // Result code 0 indicates success + } else { + // Handle unsuccessful print + // Error message (null on successful print) + val errorMessage = + resultData?.getString("com.zebra.printconnect.PrintService.ERROR_MESSAGE") + Toast.makeText(context, errorMessage, Toast.LENGTH_LONG).show() + } + } + + }) + ) + + requireContext().startService(intent) + } + + private fun printStatus() { + val intent = Intent() + intent.component = ComponentName( + "com.zebra.printconnect", + "com.zebra.printconnect.print.GetPrinterStatusService" + ) + Log.d("VERDNATURA::","Entrando en prinStatus") + intent.putExtra( + "com.zebra.printconnect.PrintService.RESULT_RECEIVER", + buildIPCSafeReceiver(object : ResultReceiver(null) { + + override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { + super.onReceiveResult(resultCode, resultData) + + if (resultCode == 0) { + Log.d("VERDNATURA::","Result 0") + // Result code 0 indicates success + val printerStatusMap = + resultData!!.getSerializable("PrinterStatusMap") as HashMap? + Toast.makeText(context, printerStatusMap.toString(), Toast.LENGTH_LONG).show() + } else { + // Handle unsuccessful print + // Error message (null on successful print) + Log.d("VERDNATURA::","Result <>0") + val errorMessage = + resultData?.getString("com.zebra.printconnect.PrintService.ERROR_MESSAGE") + Toast.makeText(context, errorMessage, Toast.LENGTH_LONG).show() + } + } + + }) + ) + + requireContext().startService(intent) +} + private fun printDisconnect() { + val intent = Intent() + intent.component = ComponentName( + "com.zebra.printconnect", + "com.zebra.printconnect.print.UnselectPrinterService" + ) + + intent.putExtra( + "com.zebra.printconnect.PrintService.RESULT_RECEIVER", + buildIPCSafeReceiver(object : ResultReceiver(null) { + + override fun onReceiveResult(resultCode: Int, resultData: Bundle?) { + super.onReceiveResult(resultCode, resultData) + + if (resultCode == 0) { + // Result code 0 indicates success + val printerStatusMap = + resultData!!.getSerializable("PrinterStatusMap") as HashMap? + Toast.makeText(context, printerStatusMap.toString(), Toast.LENGTH_LONG).show() + } else { + // Handle unsuccessful print + // Error message (null on successful print) + val errorMessage = + resultData?.getString("com.zebra.printconnect.PrintService.ERROR_MESSAGE") + Toast.makeText(context, errorMessage, Toast.LENGTH_LONG).show() + } + } + + }) + ) + + requireContext().startService(intent) + } + private fun buildIPCSafeReceiver(resultReceiver: ResultReceiver): ResultReceiver? { + val parcel = Parcel.obtain() + resultReceiver.writeToParcel(parcel, 0) + parcel.setDataPosition(0) + val receiverForSending = ResultReceiver.CREATOR.createFromParcel(parcel) + parcel.recycle() + return receiverForSending + } + + override fun observeViewModel() { + + with(viewModel) { + qrresponse.observe(viewLifecycleOwner, Observer { + binding.splashProgress.visibility = View.GONE + if (it.isError) { + + ma.messageWithSound(it.errorMessage + " " + itemscaned, true, false) + + } else { + + customDialog.setTitle(getString(R.string.info)) + .setDescription( + getString(R.string.operation) + itemscaned + "." + getString( + R.string.answer + ) + it.response + ) + .setOkButton(getString(R.string.accept)) { + customDialog.dismiss() + binding.mainToolbar.backButton.performClick() + }.show() + + } + + }) + } + + } + + +} + diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt index 022dd2f8..53ee8a47 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesFragment.kt @@ -20,7 +20,6 @@ import es.verdnatura.presentation.view.feature.ajustes.model.AjustesItemVO import es.verdnatura.presentation.view.feature.ajustes.model.Printers import es.verdnatura.presentation.view.feature.ajustes.model.SectorItemVO import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO -import timber.log.Timber.d class AjustesFragment : BaseFragment(AjustesViewModel::class) { @@ -45,25 +44,34 @@ class AjustesFragment : override fun onCreate(savedInstanceState: Bundle?) { prefs = requireActivity().getSharedPreferences(PREFS_USER, 0) customDialog = CustomDialog(requireContext()) - viewModel.inititializeDefaultAjusts( - getData(SECTORDESCRIP), - getData(SECTORFK).toInt(), - getData(WAREHOUSEFK).toInt(), - getData(WAGON), - getData(TAGSTYPE), - getData(PRINTERFK).toInt(), - getData(PRINTERNAME), + + //Tarea 4351 quitar if y dejar viewModel.operator solamente ( ya se encarga el viewmodel de hacer el initializeDefault y el WAGON POR NUMBEROFWAGONS) - ) + viewModel.operator_getNumberOfWagons(getData(USER), getData(PASSWORD)) + // }else{ + /* viewModel.inititializeDefaultAjusts( + getData(SECTORDESCRIP), + getData(SECTORFK).toInt(), + getData(WAREHOUSEFK).toInt(), + getData(NUMBEROFWAGONS), + getData(TAGSTYPE), + getData(PRINTERFK).toInt(), + getData(PRINTERNAME), + + + )*/ + //} super.onCreate(savedInstanceState) + } override fun init() { - binding.mainToolbar.toolbarTitle.text=getString(R.string.settings) + binding.mainToolbar.toolbarTitle.text = getString(R.string.settings) + // binding.splashProgress.visibility=View.VISIBLE hideBackButton(binding.mainToolbar) @@ -98,38 +106,34 @@ class AjustesFragment : override fun onAjustesItemClickListener(item: AjustesItemVO) { if (item.id == 0) { binding.splashProgress.visibility = View.VISIBLE - // viewModel.getSectors(getData(USER),getData(PASSWORD)) + // viewModel.getSectors(getData(USER),getData(PASSWORD)) viewModel.getSectorsSalix(getData(TOKEN)) } else if (item.id == 5) { requireActivity().onBackPressed() } else if (item.id == 1) { - val listCarros: ArrayList = ArrayList() - listCarros.add("1") - listCarros.add("2") - listCarros.add("3") - listCarros.add("4") - listCarros.add("5") - listCarros.add("6") - wagonList = listCarros + //Tarea 4351 quitar parte de mostrar los carros y quitar del layout el ">" del final - val array = arrayOfNulls(listCarros.size) + ma.messageWithSound("El número de carros ahora solo se puede modificar por los encargados", true, true,"Información",false) + /* val listCarros: ArrayList = ArrayList() + listCarros.add("1") + listCarros.add("2") + listCarros.add("3") + listCarros.add("4") + listCarros.add("5") + listCarros.add("6") + wagonList = listCarros - showDialogCarros(array = listCarros.toArray(array)) + val array = arrayOfNulls(listCarros.size) + showDialogCarros(array = listCarros.toArray(array))*/ } else if (item.id == 2) { - viewModel.printer_get(getData(USER),getData(PASSWORD)) - /* val listVoz: ArrayList = ArrayList() - listVoz.add("NO") - listVoz.add("YES") - vozList = listVoz - val array = arrayOfNulls(listVoz.size) - showDialogVoz(array = listVoz.toArray(array))*/ + viewModel.printer_get(getData(USER), getData(PASSWORD)) } else if (item.id == 3) { val listTagsType: ArrayList = ArrayList() listTagsType.add(getString(R.string.stickers)) - // listTagsType.add(getString(R.string.smarttags)) + // listTagsType.add(getString(R.string.smarttags)) tagsList = listTagsType val array = arrayOfNulls(listTagsType.size) showItemPickerType(array = listTagsType.toArray(array)) @@ -144,16 +148,36 @@ class AjustesFragment : } }) - workerupdateSector.observe(viewLifecycleOwner, { + operatorGetNumberOfWagons.observe(viewLifecycleOwner) { binding.splashProgress.visibility = View.GONE - ma.messageWithSound(if (it.isError) it.errorMessage else{getString(R.string.sectorUpdated)},it.isError,false) + if (it.isError) { + ma.messageWithSound(it.errorMessage, it.isError, true) + setSettings() + } else { + saveDataInt(NUMBEROFWAGONS, it.response!!) + setSettings() + } + + } + workerupdateSector.observe(viewLifecycleOwner, { + binding.splashProgress.visibility = View.GONE + + ma.messageWithSound( + if (it.isError) it.errorMessage else { + getString(R.string.sectorUpdated) + }, it.isError, false + ) }) - workerupdatePrinter.observe(viewLifecycleOwner, { + workerupdatePrinter.observe(viewLifecycleOwner, { binding.splashProgress.visibility = View.GONE - ma.messageWithSound(if (it.isError) it.errorMessage else{getString(R.string.printerUpdated)},it.isError,false) + ma.messageWithSound( + if (it.isError) it.errorMessage else { + getString(R.string.printerUpdated) + }, it.isError, false + ) }) binding.ajustessItems.adapter = ajustesAdapter @@ -164,7 +188,8 @@ class AjustesFragment : event.getContentIfNotHandled().notNull { binding.splashProgress.visibility = View.INVISIBLE if (it.list.isNotEmpty() && it.list.get(0).isError) { - customDialog.setTitle(getString(R.string.error)).setDescription(it.list.get(0).errorMessage) + customDialog.setTitle(getString(R.string.error)) + .setDescription(it.list.get(0).errorMessage) .setOkButton(getString(R.string.Close)) { customDialog.dismiss() }.show() @@ -194,7 +219,8 @@ class AjustesFragment : event.getContentIfNotHandled().notNull { binding.splashProgress.visibility = View.INVISIBLE if (it.list.isNotEmpty() && it.list.get(0).isError) { - customDialog.setTitle(getString(R.string.error)).setDescription(it.list.get(0).errorMessage) + customDialog.setTitle(getString(R.string.error)) + .setDescription(it.list.get(0).errorMessage) .setOkButton(getString(R.string.Close)) { customDialog.dismiss() }.show() @@ -206,7 +232,7 @@ class AjustesFragment : listPrinters.add(it.name) } val array = arrayOfNulls(listPrinters.size) - printersList= it.list + printersList = it.list showDialogPrinters(listPrinters.toArray(array)) } else { @@ -224,6 +250,21 @@ class AjustesFragment : super.observeViewModel() } + private fun setSettings() { + + //Tarea 4351 modificar el WAGON por NUMBEROFWAGONS + viewModel.inititializeDefaultAjusts( + getData(SECTORDESCRIP), + getData(SECTORFK).toInt(), + getData(WAREHOUSEFK).toInt(), + getData(NUMBEROFWAGONS), + getData(TAGSTYPE), + getData(PRINTERFK).toInt(), + getData(PRINTERNAME), + + + ) + } private fun showDialogPrinters(array: Array) { val builder = AlertDialog.Builder(this.context) @@ -240,7 +281,11 @@ class AjustesFragment : editor.apply() viewModel.ajustesitem.get(2).selected = it.name - viewModel.worker_updatePrinter(getData(USER),getData(PASSWORD),it.id.toString()) + viewModel.worker_updatePrinter( + getData(USER), + getData(PASSWORD), + it.id.toString() + ) ajustesAdapter!!.notifyDataSetChanged() return@forEach @@ -270,7 +315,11 @@ class AjustesFragment : viewModel.ajustesitem.get(0).sectorFk = it.id viewModel.ajustesitem.get(0).warehouse = it.warehouseFk viewModel.ajustesitem.get(0).selected = it.description - viewModel.worker_updateSector(getData(USER),getData(PASSWORD),it.id.toString()) + viewModel.worker_updateSector( + getData(USER), + getData(PASSWORD), + it.id.toString() + ) ajustesAdapter!!.notifyDataSetChanged() return@forEach @@ -282,34 +331,34 @@ class AjustesFragment : dialog.show() } - /* private fun showDialogVoz(array: Array) { - val builder = AlertDialog.Builder(this.context) + /* private fun showDialogVoz(array: Array) { + val builder = AlertDialog.Builder(this.context) - builder.setTitle(getString(R.string.Seleccionaunsector)) - builder.setItems(array) { _, which -> - val selected = array[which] - vozList.forEach { - if (it.equals(selected)) { - val editor = prefs!!.edit() - editor.putString(VOZ, it) - editor.apply() + builder.setTitle(getString(R.string.Seleccionaunsector)) + builder.setItems(array) { _, which -> + val selected = array[which] + vozList.forEach { + if (it.equals(selected)) { + val editor = prefs!!.edit() + editor.putString(VOZ, it) + editor.apply() - viewModel.ajustesitem.get(2).selected = it + viewModel.ajustesitem.get(2).selected = it - ajustesAdapter!!.notifyDataSetChanged() + ajustesAdapter!!.notifyDataSetChanged() - return@forEach - } - } + return@forEach + } + } - } + } - val dialog = builder.create() - dialog.show() - }*/ + val dialog = builder.create() + dialog.show() + }*/ private fun showDialogCarros(array: Array) { val builder = AlertDialog.Builder(this.context) @@ -364,17 +413,17 @@ class AjustesFragment : } - /* fun setDefaults(key: String?, value: String?, context: Context?) { - val preferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) - val editor = preferences.edit() - editor.putString(key, value) - editor.commit() - }*/ + /* fun setDefaults(key: String?, value: String?, context: Context?) { + val preferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) + val editor = preferences.edit() + editor.putString(key, value) + editor.commit() + }*/ - /* private fun getDefaults(key: String?, context: Context?): String? { - val preferences = PreferenceManager.getDefaultSharedPreferences(context) - return preferences.getString(key, null) - }*/ + /* private fun getDefaults(key: String?, context: Context?): String? { + val preferences = PreferenceManager.getDefaultSharedPreferences(context) + return preferences.getString(key, null) + }*/ private fun copyanddrag(string: String): Boolean { diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesViewModel.kt index 6d872102..53aa75bf 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/ajustes/fragment/AjustesViewModel.kt @@ -7,10 +7,12 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Transformations import es.verdnatura.R import es.verdnatura.domain.GetAjustesUserCase +import es.verdnatura.domain.GetLoginUserCase import es.verdnatura.presentation.base.BaseViewModel import es.verdnatura.presentation.base.getMessageFromAllResponse import es.verdnatura.presentation.base.nameofFunction import es.verdnatura.presentation.common.Event +import es.verdnatura.presentation.common.ResponseItemNumber import es.verdnatura.presentation.common.ResponseItemVO import es.verdnatura.presentation.view.feature.ajustes.model.* import retrofit2.Call @@ -24,6 +26,8 @@ class AjustesViewModel(context: Context) : BaseViewModel() { private val contextApp=context private val getAjustesUserCase: GetAjustesUserCase = GetAjustesUserCase(context) + private val getLoginUserCase: GetLoginUserCase = GetLoginUserCase(context) + val version: String = "5.0.0" private val _ajustesitem by lazy { ArrayList() } @@ -47,6 +51,10 @@ class AjustesViewModel(context: Context) : BaseViewModel() { get () = _printerList + private val _operatorGetNumberOfWagons by lazy { MutableLiveData() } + val operatorGetNumberOfWagons: LiveData + get() = _operatorGetNumberOfWagons + val loadSectorList = Transformations.map(_sectorList) { Event(it) } val loadprintersList = Transformations.map(_printerList) { Event(it) } @@ -257,13 +265,47 @@ class AjustesViewModel(context: Context) : BaseViewModel() { ) } - /*if (response.body() != null){ - _sectorList.value = response.body()?.let { SectorListVO(it) } - }else{ - val listError:ArrayList = ArrayList() - listError.add(SectorItemVO(0,"",0,true,"Error en la llamada sector_get")) - _sectorList.value = SectorListVO(listError) - }*/ + + } + + }) + } + + fun operator_getNumberOfWagons(user: String, password: String) { + + getLoginUserCase.operator_getNumberOfWagons(user, password) + .enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { + + _operatorGetNumberOfWagons.value = ResponseItemNumber( + null, + isError = true, + errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) + ) + } + + override fun onResponse( + call: Call, + response: Response + ) { + + if (!response.isSuccessful) { + _operatorGetNumberOfWagons.value = ResponseItemNumber( + null, true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) + } else { + + if (response.body() != null) + _operatorGetNumberOfWagons.value = + ResponseItemNumber(response.body(), isError = false) + + + } + } }) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt index b146808c..09cc2e0e 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionFragment.kt @@ -85,6 +85,9 @@ class CollectionFragment( private lateinit var ticketToParking: String private lateinit var ticketScanTxt: String + private var itemShelvingSaleSupplyAddCall = -1 + private var saleTrackingCall = -1 + //private var myKM: KeyguardManager? = null private var positionUnmarked = -1 @@ -540,9 +543,24 @@ class CollectionFragment( mpok?.start() onQuantityOfShelvingSelected(itemShelvingFkStored) } else { + var value = customDialogList.getValueTwo() customDialogList.setValueTwo("") - //showErrorMessage("El resultado del procedimiento barcodeToItem de la etiqueta escaneada es: " +it.response) - showErrorMessage(getString(R.string.lineNotExist)) + + if (it.response.isEmpty()) { + showErrorMessage("Código artículo no existe. Por favor remite foto del artículo al dpto informática para comprobar si el código buyFk ha sido borrado") + viewModel.debug_add( + getData(USER), + getData(PASSWORD), + "buy_deletedFromApp", + value + "-" + sales[storedPosition].itemFk + "-" + getData( + USERFK + ) + ) + } else { + showErrorMessage(getString(R.string.lineNotExist)) + } + + if (mperror != null) mperror?.start() } } @@ -699,7 +717,6 @@ class CollectionFragment( }) responseDel.observe(viewLifecycleOwner, Observer { - if (it.isError) { binding.splashProgress.visibility = GONE if (!goBack) { @@ -721,6 +738,9 @@ class CollectionFragment( } }) + + + responseItemShelvingUpdate.observe(viewLifecycleOwner, Observer { if (it.isError) { @@ -742,6 +762,51 @@ class CollectionFragment( goBack = false } }) + + responseSaleReplace.observe(viewLifecycleOwner, Observer { + + if (it.isError) { + + if (!goBack) { + + ma.messageWithSound(it.errorMessage, it.isError, true) + + } + + + } else { + /* viewModel.saleTrackingDel( + getData(USER), + getData(PASSWORD), + saleFk = sales[positionUnmarked].saleFk + )*/ + + goBack = false + } + }) + responseItemShelvingSaleSupplyAdd.observe(viewLifecycleOwner, Observer { + + if (it.isError) { + + if (!goBack) { + + ma.messageWithSound(it.errorMessage, it.isError, true) + + } + + + } else { + /* viewModel.saleTrackingDel( + getData(USER), + getData(PASSWORD), + saleFk = sales[positionUnmarked].saleFk + )*/ + + goBack = false + } + }) + + responseSalixMessage.observe(viewLifecycleOwner, Observer { @@ -884,12 +949,12 @@ class CollectionFragment( //sales = salesList.sortedWith(compareBy({it.placements.get(0).placement})) // SalesSorter() - for (s in sales) { - Log.d( - "VERDNATURA::", - "La sale es ${s.saleFk} El item es ${s.itemFk} y su picked ${s.picked} y saleorder ${s.saleOrder}" - ) - } + /* for (s in sales) { + Log.d( + "VERDNATURA::", + "La sale es ${s.saleFk} El item es ${s.itemFk} y su picked ${s.picked} y saleorder ${s.saleOrder}" + ) + }*/ saleAdapter = SaleAdapter(sales, pasillerosItemClickListener!!, object : OnQuantityClickListener { @@ -1079,8 +1144,12 @@ class CollectionFragment( } } else if (type == CONTROLADOR || type == PRECHECKER) { - //////Log.i("VERDNATURA:","El tipo es controlador") + + // checkSaleGroup() + for (saleVO in sales) { + //0-Salegroup + if (saleVO.isControlled == "0") { //1- Por itemFk if (txtscan == saleVO.itemFk) { @@ -1098,6 +1167,7 @@ class CollectionFragment( isBreak = true } } + if (isBreak) break } index += 1 @@ -1106,7 +1176,7 @@ class CollectionFragment( if (!isOk) { if (txtscan.contains("-")) { - Log.d("VERDNATURA::", "VAMOS A PARKING DESDE PANTALLA CONTROLADOR") + // Log.d("VERDNATURA::", "VAMOS A PARKING DESDE PANTALLA CONTROLADOR") if (tickets.size > 0) { @@ -1119,7 +1189,7 @@ class CollectionFragment( collectionFk = tickets[0] ) - Log.d("VERDNATURA::", "LA COLECTION ES ${tickets[0]}") + // Log.d("VERDNATURA::", "LA COLECTION ES ${tickets[0]}") /* viewModel.parking( getData(USER), @@ -1163,6 +1233,16 @@ class CollectionFragment( } + /*private fun checkSaleGroup(txtscan: String) { + + for (i in sales.indices) { + if (sales[i].saleGroupFk == txtscan) { + markLine(i, type) + } + + } + }*/ + private fun findSale(txtscan: String, position: Int) { var isOk = false if (type == SACADOR) { @@ -1423,10 +1503,9 @@ class CollectionFragment( binding.splashProgress.visibility = VISIBLE - /* var working_in_test = true // sergio: en proves app - if (working_in_test) {*/ + viewModel.getIdFromCodeSalix( - token = getData(USER), + token = getData(TOKEN), code = customDialogList.getValueTwo(), ) /* } else { @@ -1504,8 +1583,7 @@ class CollectionFragment( itemShelvingFkStored = itemShelvingFk binding.splashProgress.visibility = View.VISIBLE - /* var working_in_test = true //sergio: en proves app - if (working_in_test) {*/ + viewModel.getIdFromCodeSalix( getData(TOKEN), code = customDialogList.getValueTwo() @@ -1919,9 +1997,11 @@ class CollectionFragment( if (type.equals("CHECKER") && (isMarking && (getData(SECTORDESCRIP).uppercase() != getString( - R.string.sectorALGEMESI) && getData(SECTORDESCRIP).uppercase() != getString( - R.string.sectorALGEMESINEW) - ) ) + R.string.sectorALGEMESI + ) && getData(SECTORDESCRIP).uppercase() != getString( + R.string.sectorALGEMESINEW + ) + )) ) { @@ -2544,6 +2624,8 @@ class CollectionFragment( vUserFk = mistakeSale?.workerFk!!, vTypeFk = it.id ) + + getString(R.string.errorRegistered).toast(requireContext()) customDialogList.dismiss() } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt index 608f323a..52de4652 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/collection/fragment/CollectionViewModel.kt @@ -48,6 +48,15 @@ class CollectionViewModel(context: Context) : BaseViewModel() { val response: LiveData get() = _response + private val _responseItemShelvingSaleSupplyAdd by lazy { MutableLiveData() } + val responseItemShelvingSaleSupplyAdd: LiveData + get() = _responseItemShelvingSaleSupplyAdd + + private val _responseSaleReplace by lazy { MutableLiveData() } + val responseSaleReplace: LiveData + get() = _responseSaleReplace + + private val _responseParking by lazy { MutableLiveData() } val responseParking: LiveData get() = _responseParking @@ -187,17 +196,17 @@ class CollectionViewModel(context: Context) : BaseViewModel() { vStateFk, vIsChecked, vBuyFk - ).enqueue(object : Callback { - override fun onFailure(call: Call, t: Throwable) { - _response.value = ResponseItemVO( + ).enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { + _responseSaleReplace.value = ResponseItemVO( isError = true, errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) ) } - override fun onResponse(call: Call, response: Response) { + override fun onResponse(call: Call, response: Response) { if (!response.isSuccessful) { - _response.value = ResponseItemVO( + _responseSaleReplace.value = ResponseItemVO( isError = true, errorMessage = getMessageFromAllResponse( nameofFunction(this), @@ -205,7 +214,7 @@ class CollectionViewModel(context: Context) : BaseViewModel() { ) ) } else { - _response.value = ResponseItemVO(isError = false, response = response.body()!!) + _responseSaleReplace.value = ResponseItemVO(isError = false, response = "") } } }) @@ -275,7 +284,7 @@ class CollectionViewModel(context: Context) : BaseViewModel() { quantity ).enqueue(object : Callback { override fun onFailure(call: Call, t: Throwable) { - _response.value = ResponseItemVO( + _responseItemShelvingSaleSupplyAdd.value = ResponseItemVO( isError = true, errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) ) @@ -283,7 +292,7 @@ class CollectionViewModel(context: Context) : BaseViewModel() { override fun onResponse(call: Call, response: Response) { if (!response.isSuccessful) { - _response.value = ResponseItemVO( + _responseItemShelvingSaleSupplyAdd.value = ResponseItemVO( isError = true, errorMessage = getMessageFromAllResponse( nameofFunction(this), @@ -291,7 +300,7 @@ class CollectionViewModel(context: Context) : BaseViewModel() { ) ) } else { - _response.value = ResponseItemVO(isError = false, response = response.message()) + _responseItemShelvingSaleSupplyAdd.value = ResponseItemVO(isError = false, response = response.message()) } } }) @@ -735,6 +744,37 @@ class CollectionViewModel(context: Context) : BaseViewModel() { }) } + fun debug_add( + usuario: String, + password: String, + buyFk: String, + message: String + ) { + getSacadorControladorUserCase.debug_add(usuario, password, buyFk, message) + .enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { + _response.value = ResponseItemVO( + isError = true, + errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) + ) + } + + override fun onResponse(call: Call, response: Response) { + if (!response.isSuccessful) { + _response.value = ResponseItemVO( + isError = true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) + } else { + _response.value = + ResponseItemVO(isError = false, response = "") + } + } + }) + } fun getIdFromCode(usuario: String, password: String, code: String) { @@ -786,7 +826,7 @@ class CollectionViewModel(context: Context) : BaseViewModel() { ) } else { _responseCode.value = - ResponseItemVO(isError = false, response = response.body()!!) + ResponseItemVO(isError = false, response = if (response.body()==null) "" else {response.body()!!}) } } }) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt index f82e603f..3834731a 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt @@ -34,8 +34,9 @@ class InventaryFragment : private var listInvetoryAux: ArrayList = ArrayList() private lateinit var customDialog: CustomDialog private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null - // private var reload = false - // private var hideLoad = true + + // private var reload = false + // private var hideLoad = true private var layoutManager: LinearLayoutManager? = null private var firstVisiblePosition = 0 private var secondVisiblePosition = 1 @@ -165,7 +166,10 @@ class InventaryFragment : it.itemFk.contains( binding.filterItemFk.text.toString(), true - ) || it.producer.contains(binding.filterItemFk.text.toString(), true) + ) || it.producer.contains( + binding.filterItemFk.text.toString(), + true + ) || it.longName.contains(binding.filterItemFk.text.toString(),ignoreCase = true) }) } @@ -228,8 +232,8 @@ class InventaryFragment : customDialog.dismiss() }.setKoButton(getString(R.string.cancel)) { - customDialog.dismiss() - }.show() + customDialog.dismiss() + }.show() } }, onPasillerosItemClickListener = pasillerosItemClickListener!!) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt index 883622fb..683df6d6 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt @@ -66,27 +66,35 @@ class LoginFragment : BaseFragment(LoginVi "base_url", binding.edittextServer.text.toString() ) - if (binding.edittextServer.text!!.contains("test-app.verdnatura.es")) { + val working_in_test = false + if (working_in_test) { saveData( "base_urlSalix", - "https://test-salix.verdnatura.es/api/" - // "https://test-salix.verdnatura.es/" //localhost desde emulador 10.0.2.2:3000 - // "http://localhost:3000/api/" - //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000 - ) + "http://localhost:3000/api/" + ) } else { - saveData( - "base_urlSalix", - "https://salix.verdnatura.es/api/" - /*working_in_test*/ - // "http://localhost:3000/api/" - //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000 - ) + if (binding.edittextServer.text!!.contains("test-app.verdnatura.es")) { + saveData( + "base_urlSalix", + "https://test-salix.verdnatura.es/api/" + // "https://test-salix.verdnatura.es/" //localhost desde emulador 10.0.2.2:3000 + // "http://localhost:3000/api/" + //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000 + ) + } else { + saveData( + "base_urlSalix", + "https://salix.verdnatura.es/api/" + /*working_in_test*/ + // "http://localhost:3000/api/" + //"http://10.0.2.2:3000/api/" //-> desde emulador 10.0.2.2:3000 + ) + + } } - "${getString(R.string.serverSalix)}${getData("base_urlSalix")})".toast( requireContext() ) @@ -209,6 +217,13 @@ class LoginFragment : BaseFragment(LoginVi binding.edittextUsername.text.toString(), binding.edittextPassword.text.toString() ) + + + /* viewModel.operator_getNumberOfWagons( + binding.edittextUsername.text.toString(), + binding.edittextPassword.text.toString() + )*/ + viewModel.worker_getPrinter( binding.edittextUsername.text.toString(), binding.edittextPassword.text.toString() @@ -274,7 +289,37 @@ class LoginFragment : BaseFragment(LoginVi } + operatorAdd.observe(viewLifecycleOwner) { + if (it.isError) { + customDialog.setTitle(getString(R.string.info)) + .setDescription(it.errorMessage) + .setOkButton(getString(R.string.close)) { + customDialog.dismiss() + }.show() + } + viewModel.operator_getNumberOfWagons(getData(USER),getData(PASSWORD)) + + viewModel.device_checkLogin( + binding.edittextUsername.text.toString(), + binding.edittextPassword.text.toString(), + getData(ANDROID_ID) + ) + } + + operatorGetNumberOfWagons.observe(viewLifecycleOwner) { + + if (!it.isError) { + saveDataInt(NUMBEROFWAGONS, it.response!!) + } else { + customDialog.setTitle(getString(R.string.error)).setDescription(it.errorMessage) + .setOkButton(getString(R.string.close)) { + customDialog.dismiss() + }.show() + } + + + } devicelogresponse.observe(viewLifecycleOwner) { @@ -336,7 +381,13 @@ class LoginFragment : BaseFragment(LoginVi saveTokenPref("") customDialog.setTitle(getString(R.string.error)) - .setDescription(if (it.errorMessage.contains("Unauthorized")){getString(R.string.messageUserError)}else{it.errorMessage}) + .setDescription( + if (it.errorMessage.contains("Unauthorized")) { + getString(R.string.messageUserError) + } else { + it.errorMessage + } + ) .setOkButton( getString(R.string.accept) ) { @@ -345,11 +396,15 @@ class LoginFragment : BaseFragment(LoginVi }.show() } else { saveTokenPref(it.token) - viewModel.device_checkLogin( + + //Tarea 4351 quitar el if y poner e device_checkLogin a continuación del response de operator_add + viewModel.operator_add(getData(USER),getData(PASSWORD)) + + /* viewModel.device_checkLogin( binding.edittextUsername.text.toString(), binding.edittextPassword.text.toString(), getData(ANDROID_ID) - ) + )*/ } } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt index a39963d5..46c3829f 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt @@ -1,26 +1,23 @@ package es.verdnatura.presentation.view.feature.login.fragment import android.content.Context -import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Transformations import com.google.gson.Gson import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken -import es.verdnatura.domain.GetAjustesUserCase import es.verdnatura.domain.GetLoginUserCase import es.verdnatura.domain.NodeJsService import es.verdnatura.presentation.base.BaseViewModel import es.verdnatura.presentation.base.getMessageFromAllResponse import es.verdnatura.presentation.base.nameofFunction import es.verdnatura.presentation.common.Event +import es.verdnatura.presentation.common.ResponseItemNumber import es.verdnatura.presentation.common.ResponseItemVO import es.verdnatura.presentation.view.feature.ajustes.model.Printers import es.verdnatura.presentation.view.feature.ajustes.model.SectorItemVO import es.verdnatura.presentation.view.feature.ajustes.model.WorkerPrintersList -import es.verdnatura.presentation.view.feature.historicovehiculo.model.ItemHistoricoVehiculo -import es.verdnatura.presentation.view.feature.historicovehiculo.model.ItemHistoricoVehiculoList import es.verdnatura.presentation.view.feature.login.model.LoginDevice import es.verdnatura.presentation.view.feature.login.model.LoginSalixVO import es.verdnatura.presentation.view.feature.login.model.versionApp @@ -29,11 +26,8 @@ import es.verdnatura.presentation.view.feature.paletizador.model.itemsExpedition import retrofit2.Call import retrofit2.Callback import retrofit2.Response -import timber.log.Timber -import timber.log.Timber.d -class LoginViewModel(context: Context) : BaseViewModel() -{ +class LoginViewModel(context: Context) : BaseViewModel() { private val getLoginUserCase: GetLoginUserCase = GetLoginUserCase(context) @@ -46,6 +40,10 @@ class LoginViewModel(context: Context) : BaseViewModel() val devicelogresponse: LiveData get() = _devicelogresponse + private val _operatorAdd by lazy { MutableLiveData() } + val operatorAdd: LiveData + get() = _operatorAdd + private val _versionappitem by lazy { MutableLiveData() } val versionappitem: LiveData get() = _versionappitem @@ -71,21 +69,21 @@ class LoginViewModel(context: Context) : BaseViewModel() val workergetPrinter: LiveData get() = _workergetPrinter + private val _operatorGetNumberOfWagons by lazy { MutableLiveData() } + val operatorGetNumberOfWagons: LiveData + get() = _operatorGetNumberOfWagons + private val _workerPrintList by lazy { MutableLiveData() } val loadWorkerPrintList = Transformations.map(_workerPrintList) { Event(it) } - fun loginSalix(user: String, password: String) - { - getLoginUserCase.salixLogin(user, password).enqueue(object : Callback - { - override fun onResponse(call: Call, response: Response) - { + fun loginSalix(user: String, password: String) { + getLoginUserCase.salixLogin(user, password).enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { val loginSalixVO: LoginSalixVO? - if (response.body() != null) - { + if (response.body() != null) { loginSalixVO = response.body()?.token?.let { LoginSalixVO( @@ -94,17 +92,18 @@ class LoginViewModel(context: Context) : BaseViewModel() it, isError = false, errorMessage = "" - ) + ) } - } else - { + } else { loginSalixVO = LoginSalixVO( user, password, isError = true, - errorMessage = getMessageFromAllResponse(nameofFunction(this),response.message() - )) + errorMessage = getMessageFromAllResponse( + nameofFunction(this), response.message() + ) + ) } @@ -112,44 +111,41 @@ class LoginViewModel(context: Context) : BaseViewModel() _loginsalixitem.value = loginSalixVO } - override fun onFailure(call: Call, t: Throwable) - { + override fun onFailure(call: Call, t: Throwable) { val loginSalixVO = LoginSalixVO( user, password, "", isError = true, - errorMessage = getMessageFromAllResponse(nameofFunction(this),t.message!!) - ) + errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) + ) _loginsalixitem.value = loginSalixVO } }) } - fun device_checkLogin(user: String, password: String, android_id: String) - { + fun device_checkLogin(user: String, password: String, android_id: String) { getLoginUserCase.device_checkLogin(user, password, android_id) - .enqueue(object : Callback - { - override fun onResponse(call: Call, response: Response) - { + .enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { val loginDevice: LoginDevice? - if (!response.isSuccessful) - { - loginDevice = LoginDevice( - isError = true, - errorMessage = getMessageFromAllResponse(nameofFunction(this),response.message())) + if (!response.isSuccessful) { + loginDevice = LoginDevice( + isError = true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) - } else - { - if (response.body() != null) - { + } else { + if (response.body() != null) { loginDevice = response.body()?.let { @@ -157,76 +153,79 @@ class LoginViewModel(context: Context) : BaseViewModel() it.vMessage, it.vIsAuthorized, isError = false, errorMessage = "" - ) + ) } - } else - { + } else { loginDevice = LoginDevice( isError = true, - errorMessage = getMessageFromAllResponse(nameofFunction(this),response.message()) - ) + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) } } _logindevice.value = loginDevice } - override fun onFailure(call: Call, t: Throwable) - { + override fun onFailure(call: Call, t: Throwable) { val loginDevice = LoginDevice( "", "", isError = true, - errorMessage = getMessageFromAllResponse(nameofFunction(this),t.message!!) - ) + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + t.message!! + ) + ) _logindevice.value = loginDevice } }) } - - fun worker_getId(user: String, password: String) - { + fun worker_getId(user: String, password: String) { getLoginUserCase.worker_getId(user, password) - .enqueue(object : Callback - { - override fun onResponse(call: Call, response: Response) - { + .enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { val workerId: workerId? - if (response.body() != null) - { + if (response.body() != null) { workerId = workerId( response.body().toString(), isError = false, errorMessage = "" - ) + ) - } else - { + } else { workerId = workerId( isError = true, - errorMessage = getMessageFromAllResponse(nameofFunction(this),response.message()) - ) + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) } _workerId.value = workerId } - override fun onFailure(call: Call, t: Throwable) - { + override fun onFailure(call: Call, t: Throwable) { val workerId = workerId( isError = true, - errorMessage = getMessageFromAllResponse(nameofFunction(this),t.message!!) - ) + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + t.message!! + ) + ) _workerId.value = workerId } @@ -234,57 +233,46 @@ class LoginViewModel(context: Context) : BaseViewModel() } - fun deviceLog_add( user: String, password: String, app: String, versionApp: String, android_id: String - ) - { + ) { getLoginUserCase.deviceLog_add(user, password, app, versionApp, android_id) - .enqueue(object : Callback - { - override fun onResponse(call: Call, response: Response) - { + .enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { - if (!response.isSuccessful) - { + if (!response.isSuccessful) { - messageError(nameofFunction(this),response.message()) + messageError(nameofFunction(this), response.message()) } } - override fun onFailure(call: Call, t: Throwable) - { + override fun onFailure(call: Call, t: Throwable) { - messageError(nameofFunction(this),t.message!!) + messageError(nameofFunction(this), t.message!!) } }) } - fun messageError(callFunction:String,message: String) - { + fun messageError(callFunction: String, message: String) { _devicelogresponse.value = ResponseItemVO( isError = true, - errorMessage = getMessageFromAllResponse(callFunction,message) - ) + errorMessage = getMessageFromAllResponse(callFunction, message) + ) } - fun checkVersion(user: String, password: String, nameApp: String) - { + fun checkVersion(user: String, password: String, nameApp: String) { getLoginUserCase.checkVersion(user, password, nameApp) - .enqueue(object : Callback - { - override fun onResponse(call: Call, response: Response) - { + .enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { //var versionApp: versionApp? - if (response.body() != null) - { + if (response.body() != null) { - _versionappitem.value = response.body()?.let { + _versionappitem.value = response.body()?.let { versionApp( it.appname, @@ -293,53 +281,57 @@ class LoginViewModel(context: Context) : BaseViewModel() it.url, isError = false, errorMessage = "" - ) + ) } - } else - { + } else { _versionappitem.value = versionApp( user, password, isError = true, - errorMessage = getMessageFromAllResponse(nameofFunction(this),response.message()) - ) + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) } - // _versionappitem.value = versionApp + // _versionappitem.value = versionApp } - override fun onFailure(call: Call, t: Throwable) - { + override fun onFailure(call: Call, t: Throwable) { _versionappitem.value = versionApp( nameApp, "", isError = true, - errorMessage =getMessageFromAllResponse(nameofFunction(this), t.message!!) - ) + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + t.message!! + ) + ) //_versionappitem.value = versionApp } }) } - /* fun nodeJsTest(smarttag: String, wagon: String, shelving: String) - { - getLoginUserCase.nodeJsTest(smarttag, wagon, shelving) - .enqueue(object : Callback - { - override fun onResponse( - call: Call, - response: Response - ) - { + /* fun nodeJsTest(smarttag: String, wagon: String, shelving: String) + { + getLoginUserCase.nodeJsTest(smarttag, wagon, shelving) + .enqueue(object : Callback + { + override fun onResponse( + call: Call, + response: Response + ) + { - val workerId: NodeJsService.SmartTagNode? + val workerId: NodeJsService.SmartTagNode? - *//* if (response.isSuccessful()){ + *//* if (response.isSuccessful()){ //Log.i("VERDNATURA::","OK") } @@ -380,16 +372,14 @@ class LoginViewModel(context: Context) : BaseViewModel() }) }*/ - fun getListFromJSON(json: JsonObject): MutableList - { + fun getListFromJSON(json: JsonObject): MutableList { val gson = Gson() var list = mutableListOf() // val mapType = object : TypeToken>() {}.type var expeditionState: Map = - gson.fromJson(json, object : TypeToken>() - {}.type) + gson.fromJson(json, object : TypeToken>() {}.type) expeditionState.forEach { list.add(itemsExpeditionDynamics(key = it.key, value = it.value.toString())) @@ -397,12 +387,19 @@ class LoginViewModel(context: Context) : BaseViewModel() } return list } - fun worker_getSector(user:String,password:String){ - getLoginUserCase.worker_getSector(user,password).enqueue(object : Callback{ + fun worker_getSector(user: String, password: String) { + + getLoginUserCase.worker_getSector(user, password).enqueue(object : Callback { override fun onFailure(call: Call, t: Throwable) { - _workergetSector.value = SectorItemVO(0,"",0,isError = true, errorMessage = getMessageFromAllResponse(nameofFunction(this),t.message!!)) + _workergetSector.value = SectorItemVO( + 0, + "", + 0, + isError = true, + errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) + ) } override fun onResponse( @@ -410,14 +407,25 @@ class LoginViewModel(context: Context) : BaseViewModel() response: Response ) { - if (!response.isSuccessful){ - _workergetSector.value= SectorItemVO(0,"",0, + if (!response.isSuccessful) { + _workergetSector.value = SectorItemVO( + 0, "", 0, isError = true, - errorMessage = getMessageFromAllResponse(nameofFunction(this),response.message()) + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) ) - }else{ + } else { - _workergetSector.value = response.body()?.let { SectorItemVO(it.id,it.description,it.warehouseFk,isError = false) } + _workergetSector.value = response.body()?.let { + SectorItemVO( + it.id, + it.description, + it.warehouseFk, + isError = false + ) + } } @@ -427,34 +435,127 @@ class LoginViewModel(context: Context) : BaseViewModel() }) } - fun worker_getPrinter(user:String,password:String){ + fun operator_getNumberOfWagons(user: String, password: String) { - getLoginUserCase.worker_getPrinter(user,password).enqueue(object : Callback>{ - override fun onFailure(call: Call>, t: Throwable) { - val listError:ArrayList = ArrayList() - listError.add(Printers(isError = true,errorMessage = getMessageFromAllResponse(nameofFunction(this),t.message!!))) - _workerPrintList.value = WorkerPrintersList(listError) + getLoginUserCase.operator_getNumberOfWagons(user, password) + .enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { + _operatorGetNumberOfWagons.value = ResponseItemNumber( + null, + isError = true, + errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) + ) + } + + override fun onResponse( + call: Call, + response: Response + ) { + + if (!response.isSuccessful) { + _operatorGetNumberOfWagons.value = ResponseItemNumber( + null, true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) + } else { + + if (response.body() != null) + _operatorGetNumberOfWagons.value = + ResponseItemNumber(response.body(), isError = false) + + + } + + } + + }) + } + + fun operator_add(user: String, password: String) { + + getLoginUserCase.operator_add(user, password).enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { + _operatorAdd.value = ResponseItemVO( + isError = true, + errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) + ) } override fun onResponse( - call: Call>, - response: Response> + call: Call, + response: Response ) { - if (response.body() != null){ - _workerPrintList.value = response.body()?.let { WorkerPrintersList(it) - } - }else{ - val listError:ArrayList = ArrayList() - listError.add(Printers(isError = true,errorMessage = getMessageFromAllResponse(nameofFunction(this),response.message()))) + if (!response.isSuccessful) { + _operatorAdd.value = ResponseItemVO( + "", true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) + + + } else { + + _operatorAdd.value = ResponseItemVO("", false) + } + + } + + }) + } + + fun worker_getPrinter(user: String, password: String) { + + getLoginUserCase.worker_getPrinter(user, password) + .enqueue(object : Callback> { + override fun onFailure(call: Call>, t: Throwable) { + val listError: ArrayList = ArrayList() + listError.add( + Printers( + isError = true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + t.message!! + ) + ) + ) _workerPrintList.value = WorkerPrintersList(listError) } + override fun onResponse( + call: Call>, + response: Response> + ) { + if (response.body() != null) { + _workerPrintList.value = response.body()?.let { + WorkerPrintersList(it) + } - } + } else { + val listError: ArrayList = ArrayList() + listError.add( + Printers( + isError = true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) + ) + _workerPrintList.value = WorkerPrintersList(listError) - }) + } + + + } + + }) } } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt index 4d91c24d..adf58172 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt @@ -18,6 +18,7 @@ import es.verdnatura.domain.ConstAndValues.PREITEMPICKER import es.verdnatura.domain.toast import es.verdnatura.presentation.base.BaseActivity import es.verdnatura.presentation.common.* +import es.verdnatura.presentation.testing.testPrint import es.verdnatura.presentation.view.component.CustomDialogMainActivity import es.verdnatura.presentation.view.feature.ajustes.fragment.AjustesFragment import es.verdnatura.presentation.view.feature.articulo.fragment.ItemCardFragment @@ -385,9 +386,9 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL addFragmentOnTop(ControlVehiculoUsuarioFragment.newInstance(entryPoint)) } - /* getString(R.string.titlePrePicker) -> { - addFragmentOnTop(PreSacadorFragment.newInstance()) - }*/ + /* getString(R.string.titlePrePicker) -> { + addFragmentOnTop(PreSacadorFragment.newInstance()) + }*/ getString(R.string.titleDayOfSale) -> { addFragmentOnTop(DayOfSaleFragment(item.title)) } @@ -508,6 +509,19 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL getString(R.string.titleCMRState) -> { addFragmentOnTop(CmrExpeditionPalletFragment.newInstance(item.title)) } + + getString(R.string.scanPlatform) -> { + addFragmentOnTop(PalletScanFragment.newInstance(item.title, "receive")) + } + + + getString(R.string.titleScanPalletizar) -> { + addFragmentOnTop(PalletScanFragment.newInstance(item.title, "get")) + } + + getString(R.string.testing) -> { + addFragmentOnTop(testPrint.newInstance(item.title)) + } } } @@ -523,162 +537,193 @@ class MainActivity : BaseActivity(), OnPasillerosItemClickL override fun onBackPressed() { - try { - fm.executePendingTransactions() - } catch (e: Exception) { + var index = supportFragmentManager.backStackEntryCount - 1 + var backEntry ="" + if (index >= 0) { + backEntry = supportFragmentManager.getBackStackEntryAt(index).name.toString() + //Log.d("VERDNATURA::", "El fragment es " + backEntry) } - if (fm.backStackEntryCount > 0) { - - fm.popBackStackImmediate() - - } else { - customDialog.setTitle(getString(R.string.closeSession)) - .setDescription(getString(R.string.sureCloseSession)) - .setOkButton(getString(R.string.exit)) { - customDialog.dismiss() - finish() - - }.setKoButton(getString(R.string.cancel)) { - customDialog.dismiss() - }.show() - - } - } - - override fun onTruckClickListener(item: ItemExpeditionTruckVO, entryPoint: String) { - addFragmentOnTop(ExpeditionPalletFragment.newInstance(item)) - - } - - override fun onPalletClickListener(itemTruck: ItemExpeditionTruckVO, itemPallet: ItemPalletVO) { - //Tarea #4125 - //Log.d("VERDNATURA::","Entrando en pallet2") - addFragmentOnTop(ExpeditionScanFragment.newInstance(itemTruck, itemPallet)) - - } - override fun onComprobarPalletViewClickListener( - itemTruck: ItemExpeditionTruckVO, - itemPallet: ItemPalletVO - ) { - - addFragmentOnTop(ExpeditionPalletDetailFragment.newInstance(itemTruck, itemPallet)) - - } - - - /* fun onParkingSaleSelected(sales: SaleVO) { - addFragmentOnTop(ParkingSaleFragment.newInstance(SaleVO = sales)) - }*/ - - - override fun onCollectionSelected(collection: CollectionVO, type: String) { - - when (type) { - PREITEMPICKER -> { - - addFragmentOnTop(EndSacadorFragment.newInstance(collection, type)) - } - "SHOWTICKET" -> { - addFragmentOnTop(CollectionShowTicketFragment.newInstance(collection, type)) + try { + fm.executePendingTransactions() + } catch (e: Exception) { } - else -> { - addFragmentOnTop(CollectionFragment.newInstance(collection, type)) - } - } + if (fm.backStackEntryCount > 0) { + fm.popBackStackImmediate() - } - - override fun onBuyerSelected(userFk: String) { - addFragmentOnTop(QaualityFragment.newInstance(userFk)) - } - - - //sergio:se llama al pulsar sobre el coche IN desde Sacador - fun onVehicleSelected(tag: String) { - fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) - - // se pone a true en la pila para que cuando se vuelva atrás permanezca ya que se borran todos los fragmentos desde otras opciones - addFragment( - ControlVehiculoFragment.newInstance(tag), - R.id.main_frame_layout, - ControlVehiculoFragment.TAG, - true - ) - //sergio: de esta manera la llamada del fragment no se vuelve a repetir. - // addFragmentOnTop(ControlVehiculoFragment.newInstance(tag)) - } - - fun openFragmentPickers(delete: Boolean) { - //delete_Fragments() - fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) - if (delete) { - delete_Fragments() - } - addFragment( - SacadorFragment.newInstance(), - R.id.main_frame_layout, - SacadorFragment.TAG, - true - - - ) - //addFragmentOnTop(SacadorFragment.newInstance()) - - } - - fun openFragmentExpeditionState() { - //delete_Fragments() - // fm.popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE) - // addFragment(ExpeditionStateFragment.newInstance("main"),R.id.main_frame_layout, ExpeditionStateFragment.TAG,false) - - addFragmentOnTop(ExpeditionStateFragment.newInstance(getString(R.string.titleExpeditionState))) - - } - - fun openFragmentReubications(list: MutableList, shelving:String) { - - addFragmentOnTop(ReubicationCollectionFragment.newInstance(list,shelving)) - - } - - fun hideBottomNavigation(visible: Int) { - binding.mainBottomNavigation.visibility = visible - } - - - fun messageWithSound( - message: String, - isError: Boolean, - isPlayed: Boolean?, - titleWithError: String = getString(R.string.error), - isToasted: Boolean? = true - ) { - - if (!isError) { - - if (isPlayed == true) (mpok?.start()) - if (isToasted!!) message.toast(this, Toast.LENGTH_SHORT) - } else { - - if (isPlayed == true) (mperror?.start()) - - if (isToasted == true) { - message.toast(this, Toast.LENGTH_SHORT) + if (!backEntry.isNullOrBlank()) + if (backEntry!!.contains("fragment.ExpeditionPalletDetailFragment.Companion")) { + addFragmentOnTop(ExpeditionTruckListFragment.newInstance()) + } } else { - customDialog.setTitle(titleWithError).setDescription(message) - .setOkButton(getString(R.string.accept)) { + customDialog.setTitle(getString(R.string.closeSession)) + .setDescription(getString(R.string.sureCloseSession)) + .setOkButton(getString(R.string.exit)) { + customDialog.dismiss() + finish() + + }.setKoButton(getString(R.string.cancel)) { customDialog.dismiss() }.show() + + } + } + + override fun onTruckClickListener(item: ItemExpeditionTruckVO, entryPoint: String) { + //Log.d("VERDNATURA","Pulsdo item"+item.truckFk) + addFragmentOnTop(ExpeditionPalletFragment.newInstance(item)) + + } + + override fun onPalletClickListener( + itemTruck: ItemExpeditionTruckVO, + itemPallet: ItemPalletVO + ) { + //Tarea #4125 + //Log.d("VERDNATURA::","Entrando en pallet2") + addFragmentOnTop(ExpeditionScanFragment.newInstance(itemTruck, itemPallet)) + + } + + + override fun onComprobarPalletViewClickListener( + itemTruck: ItemExpeditionTruckVO, + itemPallet: ItemPalletVO + ) { + + addFragmentOnTop(ExpeditionPalletDetailFragment.newInstance(itemTruck, itemPallet)) + + } + + fun onComprobarPalletFromPalletScan( + itemTruck: ItemExpeditionTruckVO, + itemPallet: ItemPalletVO + ) { + fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) + + addFragment( + ExpeditionPalletDetailFragment.newInstance(itemTruck, itemPallet), + R.id.main_frame_layout, + ExpeditionPalletDetailFragment.TAG, + true + ) + + } + + /* fun onParkingSaleSelected(sales: SaleVO) { + addFragmentOnTop(ParkingSaleFragment.newInstance(SaleVO = sales)) + }*/ + + + override fun onCollectionSelected(collection: CollectionVO, type: String) { + + when (type) { + PREITEMPICKER -> { + + addFragmentOnTop(EndSacadorFragment.newInstance(collection, type)) + } + "SHOWTICKET" -> { + addFragmentOnTop(CollectionShowTicketFragment.newInstance(collection, type)) + } + + else -> { + addFragmentOnTop(CollectionFragment.newInstance(collection, type)) + } } } + override fun onBuyerSelected(userFk: String) { + addFragmentOnTop(QaualityFragment.newInstance(userFk)) + } + + //sergio:se llama al pulsar sobre el coche IN desde Sacador + fun onVehicleSelected(tag: String) { + fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) + + // se pone a true en la pila para que cuando se vuelva atrás permanezca ya que se borran todos los fragmentos desde otras opciones + addFragment( + ControlVehiculoFragment.newInstance(tag), + R.id.main_frame_layout, + ControlVehiculoFragment.TAG, + true + ) + //sergio: de esta manera la llamada del fragment no se vuelve a repetir. + // addFragmentOnTop(ControlVehiculoFragment.newInstance(tag)) + } + + fun openFragmentPickers(delete: Boolean) { + //delete_Fragments() + fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) + if (delete) { + delete_Fragments() + } + addFragment( + SacadorFragment.newInstance(), + R.id.main_frame_layout, + SacadorFragment.TAG, + true + + + ) + //addFragmentOnTop(SacadorFragment.newInstance()) + + } + + fun openFragmentExpeditionState() { + //delete_Fragments() + // fm.popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE) + // addFragment(ExpeditionStateFragment.newInstance("main"),R.id.main_frame_layout, ExpeditionStateFragment.TAG,false) + + addFragmentOnTop(ExpeditionStateFragment.newInstance(getString(R.string.titleExpeditionState))) + + } + + fun openFragmentReubications(list: MutableList, shelving: String) { + + addFragmentOnTop(ReubicationCollectionFragment.newInstance(list, shelving)) + + } + + fun hideBottomNavigation(visible: Int) { + binding.mainBottomNavigation.visibility = visible + } + + + fun messageWithSound( + message: String, + isError: Boolean, + isPlayed: Boolean?, + titleWithError: String = getString(R.string.error), + isToasted: Boolean? = true + ) { + + if (!isError) { + + if (isPlayed == true) (mpok?.start()) + if (isToasted!!) message.toast(this, Toast.LENGTH_SHORT) + } else { + + if (isPlayed == true) (mperror?.start()) + + if (isToasted == true) { + message.toast(this, Toast.LENGTH_SHORT) + } else { + customDialog.setTitle(titleWithError).setDescription(message) + .setOkButton(getString(R.string.accept)) { + customDialog.dismiss() + }.show() + } + + + } + + + } } -} diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt index b9ea2f05..d3e297c8 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletDetailFragment.kt @@ -51,11 +51,17 @@ class ExpeditionPalletDetailFragment( override fun init() { customDialog = CustomDialog(requireContext()) - binding.expeditionPalletDetailPallet.text = getString(R.string.pallet) + itemPallet!!.Pallet + binding.expeditionPalletDetailPallet.text = + getString(R.string.pallet) + " " + itemPallet!!.Pallet binding.splashProgress.visibility = View.VISIBLE ma.hideBottomNavigation(View.GONE) binding.mainToolbar.toolbarTitle.text = - getCURDATE(itemExpeditionTruckVO!!.ETD) + " " + itemExpeditionTruckVO!!.Destino + getCURDATE(itemExpeditionTruckVO!!.ETD) + " " + if (itemExpeditionTruckVO!!.Destino.isNullOrEmpty()) { + + itemExpeditionTruckVO!!.description + }else{ + itemExpeditionTruckVO!!.Destino + } setToolBar() setEvents() @@ -73,10 +79,7 @@ class ExpeditionPalletDetailFragment( binding.buttonOk.setOnClickListener { requireActivity().onBackPressed() - // sergio: en caso de que hay problemas habrá que cambiar aquí la llamada - // MainActivity.addFragmentOnTop(ExpeditionPalletDetailFragment.newInstance(itemTruck,itemPallet)) - // que llame diractamente al fragment para que no se repita la ultima accion - ////Log.i("VERDNATURA:", "pulsamos boton OK en detail fragment") + } } @@ -109,11 +112,22 @@ class ExpeditionPalletDetailFragment( itemPallet!! ) } else if (item == iconBorrar) { - binding.splashProgress.visibility = View.VISIBLE - viewModel.expeditionPalletDel( - getData(USER), - getData(PASSWORD), itemPallet!!.Pallet - ) + + customDialog.setTitle(getString(R.string.info)) + customDialog.setDescription(getString(R.string.messageConfirm)) + customDialog.setOkButton(getString(R.string.delete)) { + binding.splashProgress.visibility = View.VISIBLE + viewModel.expeditionPalletDel( + getData(USER), + getData(PASSWORD), itemPallet!!.Pallet + ) + customDialog.dismiss() + } + customDialog.setKoButton(getString(R.string.cancel)) { + customDialog.dismiss() + } + customDialog.show() + } else if (item == iconPrint) { binding.splashProgress.visibility = View.VISIBLE diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt index 94adb13d..cde3cdd1 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPalletFragment.kt @@ -30,21 +30,21 @@ import es.verdnatura.presentation.view.feature.paletizador.model.ItemPalletVO import es.verdnatura.presentation.view.feature.paletizador.model.ItemScanList import java.text.SimpleDateFormat import java.util.* -import kotlin.collections.ArrayList @Suppress("UNUSED_ANONYMOUS_PARAMETER") class ExpeditionPalletFragment( var itemExpeditionTruckVO: ItemExpeditionTruckVO? = null ) : BaseFragment( - ExpeditionPalletViewModel::class) { + ExpeditionPalletViewModel::class +) { - private var adapter : ExpeditionPalletAdapter? = null + private var adapter: ExpeditionPalletAdapter? = null private var onPalletClickListener: OnPalletClickListener? = null - private var onComprobarPalletViewClickListener:OnComprobarPalletViewClickListener? = null + private var onComprobarPalletViewClickListener: OnComprobarPalletViewClickListener? = null private lateinit var customDialogList: CustomDialogList - private var listExpeditions:ArrayList = ArrayList() - private var expeditionAdapter : BarcodeAdapter? = null + private var listExpeditions: ArrayList = ArrayList() + private var expeditionAdapter: BarcodeAdapter? = null private lateinit var customDialog: CustomDialog var mperror: MediaPlayer? = null var mpok: MediaPlayer? = null @@ -57,15 +57,16 @@ class ExpeditionPalletFragment( override fun onAttach(context: Context) { if (context is OnPalletClickListener) onPalletClickListener = context - if (context is OnComprobarPalletViewClickListener) onComprobarPalletViewClickListener = context + if (context is OnComprobarPalletViewClickListener) onComprobarPalletViewClickListener = + context super.onAttach(context) } override fun getLayoutId(): Int = R.layout.fragment_expedition_pallet override fun onCreate(savedInstanceState: Bundle?) { - mperror = MediaPlayer.create((activity as MainActivity),R.raw.error) - mpok = MediaPlayer.create((activity as MainActivity),R.raw.ok) + mperror = MediaPlayer.create((activity as MainActivity), R.raw.error) + mpok = MediaPlayer.create((activity as MainActivity), R.raw.ok) super.onCreate(savedInstanceState) } @@ -74,43 +75,57 @@ class ExpeditionPalletFragment( customDialogList = CustomDialogList(requireContext()) binding.splashProgress.visibility = View.VISIBLE ma.hideBottomNavigation(View.GONE) - binding.mainToolbar.toolbarTitle.text = getCURDATE(itemExpeditionTruckVO!!.ETD) + " " + itemExpeditionTruckVO!!.Destino + binding.mainToolbar.toolbarTitle.text = + getCURDATE(itemExpeditionTruckVO!!.ETD) + " " + if (itemExpeditionTruckVO!!.Destino.isNullOrBlank()) { + itemExpeditionTruckVO!!.description + + }else{ + itemExpeditionTruckVO!!.Destino + } setToolBar() setEvents() - viewModel.expeditionPallet_List(getData(USER), - getData(PASSWORD),itemExpeditionTruckVO!!.truckFk) - + viewModel.expeditionPallet_List( + getData(USER), + getData(PASSWORD), itemExpeditionTruckVO!!.truckFk + ) + super.init() } - private fun setEvents(){ + private fun setEvents() { binding.mainToolbar.backButton.setOnClickListener { requireActivity().onBackPressed() } } - private fun setToolBar(){ - val listIcons:ArrayList = ArrayList() - val iconReload : Drawable = resources.getDrawable(R.drawable.ic_autorenew_black_24dp,resources.newTheme()) - val iconPlus : Drawable = resources.getDrawable(R.drawable.ic_add_black_24dp,resources.newTheme()) + private fun setToolBar() { + val listIcons: ArrayList = ArrayList() + val iconReload: Drawable = + resources.getDrawable(R.drawable.ic_autorenew_black_24dp, resources.newTheme()) + val iconPlus: Drawable = + resources.getDrawable(R.drawable.ic_add_black_24dp, resources.newTheme()) listIcons.add(iconReload) listIcons.add(iconPlus) - binding.mainToolbar.toolbarIcons.adapter = ToolBarAdapter(listIcons,object: OnOptionsSelectedListener { - override fun onOptionsItemSelected(item: Drawable) { - if (item == iconReload){ - binding.splashProgress.visibility = View.VISIBLE - viewModel.expeditionPallet_List(getData(USER), - getData(PASSWORD),itemExpeditionTruckVO!!.truckFk) - }else if(item == iconPlus){ - expeditionScanAdd() + binding.mainToolbar.toolbarIcons.adapter = + ToolBarAdapter(listIcons, object : OnOptionsSelectedListener { + override fun onOptionsItemSelected(item: Drawable) { + if (item == iconReload) { + binding.splashProgress.visibility = View.VISIBLE + viewModel.expeditionPallet_List( + getData(USER), + getData(PASSWORD), itemExpeditionTruckVO!!.truckFk + ) + } else if (item == iconPlus) { + expeditionScanAdd() + } } - } - }) - binding.mainToolbar.toolbarIcons.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) + }) + binding.mainToolbar.toolbarIcons.layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) } - private fun getCURDATE(date:String):String{ + private fun getCURDATE(date: String): String { val c = Calendar.getInstance() val df = SimpleDateFormat(getString(R.string.dateCompleteFormat)) val df2 = SimpleDateFormat(getString(R.string.timeFormat)) @@ -119,97 +134,113 @@ class ExpeditionPalletFragment( } override fun observeViewModel() { - with(viewModel){ + with(viewModel) { loadExpeditionPalletList.observe(viewLifecycleOwner, Observer { event -> - event.getContentIfNotHandled().notNull {printExpeditionList(it) } + event.getContentIfNotHandled().notNull { printExpeditionList(it) } }) loadScanList.observe(viewLifecycleOwner, Observer { event -> - event.getContentIfNotHandled().notNull {showScanExpeditions(it) } + event.getContentIfNotHandled().notNull { showScanExpeditions(it) } }) response.observe(viewLifecycleOwner, Observer { - if (it.isError){ - ma.messageWithSound(it.errorMessage,true,false) + if (it.isError) { + ma.messageWithSound(it.errorMessage, true, false) } }) - responseCheckexpeditionScanPut.observe(viewLifecycleOwner, Observer { - if (it.isError){ - ma.messageWithSound(it.errorMessage,true,false) - /* customDialog.setTitle(getString(R.string.error)).setDescription(it.errorMessage).setOkButton(getString(R.string.close)){ - customDialog.dismiss() - }.show()*/ - }else{ + responseCheckexpeditionScanPut.observe(viewLifecycleOwner, Observer { + if (it.isError) { + ma.messageWithSound(it.errorMessage, true, false) - if (it.response=="0") { + } else { - //"Rutas iguales ${it.response}".toast(requireActivity()) - ////Log.i("VERDNATURA:","Rutas iguales") + if (it.response == "0") { + + //"Rutas iguales ${it.response}".toast(requireActivity()) + ////Log.i("VERDNATURA:","Rutas iguales") + } + if (it.response == "1") { + mperror?.start() + // "Resultado llamada $it.response".toast(requireActivity()) + ////Log.i("VERDNATURA:","Rutas distintas") + + } } - if (it.response=="1"){ - mperror?.start() - // "Resultado llamada $it.response".toast(requireActivity()) - ////Log.i("VERDNATURA:","Rutas distintas") - - }} - }) + }) } } - private fun printExpeditionList(it: ItemPalletListVO){ + private fun printExpeditionList(it: ItemPalletListVO) { binding.splashProgress.visibility = View.GONE val lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) - adapter = ExpeditionPalletAdapter(it.list,onPalletClickListener!!,onComprobarPalletViewClickListener!!,itemExpeditionTruckVO!!) + adapter = ExpeditionPalletAdapter( + it.list, + onPalletClickListener!!, + onComprobarPalletViewClickListener!!, + itemExpeditionTruckVO!! + ) binding.expeditionPalletRecyclerview.adapter = adapter binding.expeditionPalletRecyclerview.layoutManager = lm } - private fun expeditionScanAdd(){ + private fun expeditionScanAdd() { binding.splashProgress.visibility = View.VISIBLE - viewModel.expeditionScanAdd(getData(USER), - getData(PASSWORD),vPalletFk = "0",vTruckFk = itemExpeditionTruckVO!!.truckFk) + viewModel.expeditionScanAdd( + getData(USER), + getData(PASSWORD), vPalletFk = "0", vTruckFk = itemExpeditionTruckVO!!.truckFk + ) } - private fun showScanExpeditions(it:ItemScanList){ + private fun showScanExpeditions(it: ItemScanList) { binding.splashProgress.visibility = View.GONE listExpeditions = ArrayList() it.list.forEach { - if(it.expeditionFk != "0") + if (it.expeditionFk != "0") listExpeditions.add(BarcodeVO(code = it.expeditionFk)) } - customDialogList.setTitle(getString(R.string.expeditionP)+binding.mainToolbar.toolbarTitle.text+")").setOkButton(getString( - R.string.test)){ - ma.hideKeyboard(customDialogList.getEditText()) + customDialogList.setTitle(getString(R.string.expeditionP) + binding.mainToolbar.toolbarTitle.text + ")") + .setOkButton( + getString( + R.string.test + ) + ) { + ma.hideKeyboard(customDialogList.getEditText()) - if (listExpeditions.size > 0){ - onComprobarPalletViewClickListener!!.onComprobarPalletViewClickListener(itemExpeditionTruckVO!!, - ItemPalletVO(Pallet = it.list.get(0).palletFk)) - }else{ - customDialog.setTitle(getString(R.string.info)).setDescription(getString(R.string.expeditionsError)).setOkButton(getString(R.string.accept)){ - customDialog.dismiss() - }.show() - } + if (listExpeditions.size > 0) { + onComprobarPalletViewClickListener!!.onComprobarPalletViewClickListener( + itemExpeditionTruckVO!!, + ItemPalletVO(Pallet = it.list.get(0).palletFk) + ) + } else { + customDialog.setTitle(getString(R.string.info)) + .setDescription(getString(R.string.expeditionsError)) + .setOkButton(getString(R.string.accept)) { + customDialog.dismiss() + }.show() + } - customDialogList.dismiss() + customDialogList.dismiss() - }.setKoButton(getString(R.string.close)){ + }.setKoButton(getString(R.string.close)) { ma.hideKeyboard(customDialogList.getEditText()) binding.splashProgress.visibility = View.VISIBLE - viewModel.expeditionPallet_List(getData(USER), - getData(PASSWORD),itemExpeditionTruckVO!!.truckFk) + viewModel.expeditionPallet_List( + getData(USER), + getData(PASSWORD), itemExpeditionTruckVO!!.truckFk + ) listExpeditions = ArrayList() customDialogList.dismiss() }.setValue("").show() @@ -219,23 +250,31 @@ class ExpeditionPalletFragment( customDialogList.getEditText().setOnEditorActionListener { v, actionId, event -> if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) { - if (!customDialogList.getValue().isNullOrEmpty()){ - try{ - // val numExpedition = customDialogList.getValue().toDouble() - if(customDialogList.getValue().length >= 7){ - listExpeditions.add(0,BarcodeVO(code = customDialogList.getValue())) - customDialogList.setDescription(getString(R.string.total)+listExpeditions.size) - viewModel.expeditionScanPut(getData(USER), - getData(PASSWORD),it.list.get(0).palletFk,customDialogList.getValue()) - ////Log.i("VERDNATURA:"," palletizando ${it.list.get(0).palletFk} expedi: ${customDialogList.getValue()}") - viewModel.checkRouteExpeditionScanPut(getData(USER), - getData(PASSWORD),it.list.get(0).palletFk,customDialogList.getValue()) - }else{ - if (mperror != null) mperror!!.start() - } - }catch (e:Exception){ + if (!customDialogList.getValue().isNullOrEmpty()) { + try { + // val numExpedition = customDialogList.getValue().toDouble() + if (customDialogList.getValue().length >= 7) { + listExpeditions.add(0, BarcodeVO(code = customDialogList.getValue())) + customDialogList.setDescription(getString(R.string.total) + listExpeditions.size) + viewModel.expeditionScanPut( + getData(USER), + getData(PASSWORD), + it.list.get(0).palletFk, + customDialogList.getValue() + ) + ////Log.i("VERDNATURA:"," palletizando ${it.list.get(0).palletFk} expedi: ${customDialogList.getValue()}") + viewModel.checkRouteExpeditionScanPut( + getData(USER), + getData(PASSWORD), + it.list.get(0).palletFk, + customDialogList.getValue() + ) + } else { if (mperror != null) mperror!!.start() } + } catch (e: Exception) { + if (mperror != null) mperror!!.start() + } expeditionAdapter!!.notifyDataSetChanged() @@ -247,14 +286,15 @@ class ExpeditionPalletFragment( false } - expeditionAdapter = BarcodeAdapter(listExpeditions,object: OnBarcodeRowClickListener { + expeditionAdapter = BarcodeAdapter(listExpeditions, object : OnBarcodeRowClickListener { override fun onBarcodeRowClickListener(item: BarcodeVO) { } - },showDelete = false) + }, showDelete = false) customDialogList.getRecyclerView().adapter = expeditionAdapter - customDialogList.getRecyclerView().layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) + customDialogList.getRecyclerView().layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanFragment.kt index f3ae231c..5de59ea8 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionScanFragment.kt @@ -67,10 +67,15 @@ class ExpeditionScanFragment ( customDialog = CustomDialog(requireContext()) customDialogList = CustomDialogList(requireContext()) customDialogTwoButtons = CustomDialogTwoButtons(requireContext()) - binding.expeditionScanDetailPallet.text = getString(R.string.pallet) + itemPalletVO!!.Pallet + binding.expeditionScanDetailPallet.text = getString(R.string.pallet) + " " + itemPalletVO!!.Pallet binding.splashProgress.visibility = View.VISIBLE ma.hideBottomNavigation(View.GONE) - binding.mainToolbar.toolbarTitle.text = getCURDATE(itemExpeditionTruckVO!!.ETD) + " " + itemExpeditionTruckVO!!.Destino + binding.mainToolbar.toolbarTitle.text = getCURDATE(itemExpeditionTruckVO!!.ETD) + " " + if (itemExpeditionTruckVO!!.Destino.isNullOrBlank()) { + itemExpeditionTruckVO!!.description + }else{ + + itemExpeditionTruckVO!!.Destino + } setToolBar() setEvents() @@ -198,7 +203,7 @@ class ExpeditionScanFragment ( if(it.expeditionFk != "0") listExpeditions.add(BarcodeVO(code = it.expeditionFk)) } - customDialogList.setTitle(getString(R.string.pallet) + itemPalletVO!!.Pallet+" ("+binding.mainToolbar.toolbarTitle.text+")").setOkButton(getString(R.string.test)){ + customDialogList.setTitle(getString(R.string.pallet) +" "+ itemPalletVO!!.Pallet+" \n("+binding.mainToolbar.toolbarTitle.text+")").setOkButton(getString(R.string.test)){ ma.hideKeyboard(customDialogList.getEditText()) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionTruckListFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionTruckListFragment.kt index 6434b07d..cfd1c8a6 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionTruckListFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionTruckListFragment.kt @@ -108,6 +108,12 @@ class ExpeditionTruckListFragment : BaseFragment( + PalletScanViewModel::class +) { + + override fun getLayoutId(): Int = R.layout.fragment_general_black + private lateinit var customDialogList: CustomDialogInput + private var itemScaned: String = "" + private var isShowed = false + + + companion object { + fun newInstance(title: String, action: String) = PalletScanFragment(title, action) + } + + override fun init() { + + customDialogList = CustomDialogInput(requireContext()) + ma.hideBottomNavigation(View.GONE) + binding.splashProgress.visibility = View.GONE + setEvents() + setToolBar() + showPalletScan() + super.init() + } + + private fun setToolBar() { + binding.mainToolbar.toolbarTitle.text = title + } + + private fun expeditionState_addByPallet(vPalletId: String) { + + customDialogList.dismiss() + binding.splashProgress.visibility = View.VISIBLE + + viewModel.expeditionState_addByPallet( + getData(USER), + getData(PASSWORD), + vPalletId, + "STORED" + ) + + } + + private fun expeditionPallet_get(vPalletId: String) { + + binding.splashProgress.visibility = View.VISIBLE + customDialogList.dismiss() + + viewModel.expeditionPallet_get( + getData(USER), + getData(PASSWORD), + vPalletId, + ) + + } + + + private fun setEvents() { + + binding.mainToolbar.backButton.setOnClickListener { + requireActivity().onBackPressed() + + } + customDialogList.setOnDismissListener { + if (!binding.splashProgress.isVisible) + requireActivity().onBackPressed() + } + } + + override fun observeViewModel() { + + + with(viewModel) { + binding.splashProgress.visibility = View.GONE + responseScan.observe(viewLifecycleOwner) { + + if (it.isError) { + + ma.messageWithSound( + it.errorMessage, + true, + true, + isToasted = true + ) + showPalletScan() + + } else { + binding.splashProgress.visibility = View.GONE + ma.messageWithSound(getString(R.string.palletScanned) + itemScaned, false, true) + showPalletScan() + + } + } + responsePalletGet.observe(viewLifecycleOwner) { + binding.splashProgress.visibility = View.GONE + if (it.isError) { + + ma.messageWithSound( + it.errorMessage, + true, + true, + isToasted = true + ) + showPalletScan() + + } else { + binding.splashProgress.visibility = View.GONE + ma.messageWithSound(getString(R.string.palletScanned) + itemScaned, false, true) + + ma.onComprobarPalletFromPalletScan(it, ItemPalletVO(Pallet = itemScaned)) + + } + } + } + + } + + private fun showPalletScan() { + + //customDialogList.setCancelable(false) + + when (action) { + "receive" -> { + customDialogList.setTitle(getString(R.string.palletScan)) + + } + "get" -> { + customDialogList.setTitle(getString(R.string.palletScanAdd)) + } + else -> {} + } + + + customDialogList.setOkButton(getString(R.string.end)) { + + ma.hideKeyboard(customDialogList.getEditText()) + customDialogList.dismiss() + + + }.setValue("").show() + + + + + customDialogList.setFocusText() + ma.hideKeyboard(customDialogList.getEditText()) + + customDialogList.getEditText().setOnEditorActionListener { _, actionId, _ -> + if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5 || actionId == 6) { + + if (customDialogList.getValue().isNotEmpty() + ) { + itemScaned = customDialogList.getValue() + ma.hideKeyboard(customDialogList.getEditText()) + + when (action) { + "receive" -> expeditionState_addByPallet( + customDialogList.getValue() + ) + "get" -> expeditionPallet_get(customDialogList.getValue()) + } + customDialogList.setValue("") + } + + return@setOnEditorActionListener true + } + false + } + } + +} + diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/PalletScanViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/PalletScanViewModel.kt new file mode 100644 index 00000000..1bbc6188 --- /dev/null +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/PalletScanViewModel.kt @@ -0,0 +1,106 @@ +package es.verdnatura.presentation.view.feature.paletizador.fragment + +import android.content.Context +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import es.verdnatura.domain.GetPaletizadoresUserCase +import es.verdnatura.presentation.base.BaseViewModel +import es.verdnatura.presentation.base.getMessageFromAllResponse +import es.verdnatura.presentation.base.nameofFunction +import es.verdnatura.presentation.common.ResponseItemVO +import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionTruckVO +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response + + +class PalletScanViewModel(context: Context) : BaseViewModel() { + + private val GetPaletizadoresUserCase: GetPaletizadoresUserCase = + GetPaletizadoresUserCase(context) + + private val _responseScan by lazy { MutableLiveData() } + val responseScan: LiveData + get() = _responseScan + + private val _responsePalletGet by lazy { MutableLiveData() } + val responsePalletGet: LiveData + get() = _responsePalletGet + + + fun expeditionState_addByPallet( + usuario: String, + password: String, + vPalletId: String, + vStatePallet: String + ) { + GetPaletizadoresUserCase.expeditionState_addByPallet( + usuario, + password, + vPalletId, + vStatePallet + ) + .enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { + + _responseScan.value = ResponseItemVO( + isError = true, + errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) + ) + } + + override fun onResponse(call: Call, response: Response) { + + if (!response.isSuccessful) { + _responseScan.value = ResponseItemVO( + isError = true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) + } else { + _responseScan.value = + ResponseItemVO(isError = false, response = response.message()!!) + } + + } + + }) + } + + fun expeditionPallet_get(usuario: String, password: String, vPalletId: String) { + GetPaletizadoresUserCase.expeditionPallet_get(usuario, password, vPalletId) + .enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { + + _responsePalletGet.value = ItemExpeditionTruckVO( + isError = true, + errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) + ) + } + + override fun onResponse( + call: Call, + response: Response + ) { + + if (!response.isSuccessful) { + _responsePalletGet.value = ItemExpeditionTruckVO( + isError = true, + errorMessage = getMessageFromAllResponse( + nameofFunction(this), + response.message() + ) + ) + } else { + _responsePalletGet.value = + response.body()!! + } + + } + + }) + } + +} \ No newline at end of file diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemExpeditionTruckVO.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemExpeditionTruckVO.kt index 52f081fa..0eaa1e05 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemExpeditionTruckVO.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/model/ItemExpeditionTruckVO.kt @@ -2,12 +2,13 @@ package es.verdnatura.presentation.view.feature.paletizador.model import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO -class ItemExpeditionTruckVO ( - var truckFk:String = "", - var ETD:String = "", - var Destino:String = "", - var isError:Boolean = false, - var errorMessage:String = "" +class ItemExpeditionTruckVO( + var truckFk: String = "", + var ETD: String = "", + var Destino: String = "", + var description: String = "", + var isError: Boolean = false, + var errorMessage: String = "" ) @@ -16,10 +17,10 @@ class ItemExpeditionTruckList( ) class itemExpedetionState( - var isError:Boolean = false, - var errorMessage:String = "", - var list:MutableList - + var isError: Boolean = false, + var errorMessage: String = "", + var list: MutableList + ) class itemsExpeditionDynamics( @@ -27,10 +28,10 @@ class itemsExpeditionDynamics( var value: String? = null ) -class ItemExpeditionStateRow ( - var title:String? = "", - var value:String? = "", - var isEditable:Boolean = true, - var action:String = "", +class ItemExpeditionStateRow( + var title: String? = "", + var value: String? = "", + var isEditable: Boolean = true, + var action: String = "", var barcodes: List = listOf() ) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt index c19e0435..f09c12af 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroFragment.kt @@ -2,6 +2,7 @@ package es.verdnatura.presentation.view.feature.pasillero.fragment import android.content.Context import android.os.Bundle +import android.util.Log import android.view.View import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager @@ -75,6 +76,7 @@ class PasilleroFragment( } + super.onCreate(savedInstanceState) } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt index ffdca4cc..4d23a3cd 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt @@ -264,6 +264,31 @@ class PasilleroViewModel(context: Context) : BaseViewModel() { ) ) ) + + _pasillerositem.add( + PasillerosItemVO( + 30, + R.drawable.ic_pallet_scan_expedition, + contextApp.getString(R.string.titleScanPalletizar), + R.string.titleScanPalletizar, + contextApp.getString( + R.string.titleScanPalletDescrip + ) + ) + ) + + _pasillerositem.add( + PasillerosItemVO( + 30, + R.drawable.lift, + contextApp.getString(R.string.scanPlatform), + R.string.scanPlatform, + contextApp.getString( + R.string.titleScanPlatform + ) + ) + ) + _pasillerositem.add( PasillerosItemVO( 50, @@ -459,6 +484,19 @@ class PasilleroViewModel(context: Context) : BaseViewModel() { ) ) + + val working_in_test=false + + if (working_in_test){ + _pasillerositem.add( + PasillerosItemVO( + 6, + R.drawable.ic_star_ko, + contextApp.getString(R.string.testing), + R.string.testing, + contextApp.getString(R.string.testing) + ) + )} } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorFragment.kt index ca46fbf8..fd2273ae 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorFragment.kt @@ -264,7 +264,7 @@ class PreSacadorFragment : } else { customDialogList.setValueTwo("") //showErrorMessage("El resultado del procedimiento barcodeToItem de la etiqueta escaneada es: " +it.response) - showErrorMessage("La línea de compra de la etiqueta escaneada no existe.") + showErrorMessage(getString(R.string.lineNotExists)) if (mperror != null) { mperror?.start() } diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorViewModel.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorViewModel.kt index f5babe7e..310f201d 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorViewModel.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/presacador/fragment/PreSacadorViewModel.kt @@ -340,15 +340,15 @@ class PreSacadorViewModel(context: Context) : BaseViewModel() { vStateFk, vIsChecked, vBuyFk - ).enqueue(object : Callback { - override fun onFailure(call: Call, t: Throwable) { + ).enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { _response.value = ResponseItemVO( isError = true, errorMessage = getMessageFromAllResponse(nameofFunction(this), t.message!!) ) } - override fun onResponse(call: Call, response: Response) { + override fun onResponse(call: Call, response: Response) { if (!response.isSuccessful) { _response.value = ResponseItemVO( isError = true, @@ -358,7 +358,7 @@ class PreSacadorViewModel(context: Context) : BaseViewModel() { ) ) } else { - _response.value = ResponseItemVO(isError = false, response = response.body()!!) + _response.value = ResponseItemVO(isError = false, response = "") } } }) diff --git a/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragment.kt b/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragment.kt index eb44bba9..ce6e84f5 100644 --- a/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragment.kt +++ b/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragment.kt @@ -65,7 +65,7 @@ class SacadorFragment : ) } else { - var working_in_test = false //sergio: Ok en app + val working_in_test = false //sergio: Ok en app if (!working_in_test) { viewModel.collectionGetSalix(token = getData(TOKEN)) } else { @@ -138,11 +138,12 @@ class SacadorFragment : iconAdd.drawable -> { binding.splashProgress.visibility = View.VISIBLE // checkTagsMode() + //Tarea 4351 cambiar getData(WAGON) por getData(NUMBEROFWAGONS) viewModel.collectionNew( getData(USER), getData(PASSWORD), getData(SECTORFK), - getData(WAGON) + getData(NUMBEROFWAGONS) ) } iconVehicleIn.drawable -> ma.onVehicleSelected(SacadorFragment.TAG) @@ -169,12 +170,13 @@ class SacadorFragment : private fun checkTagsMode() { //sergio:codigo smarttags + //Tarea 4351 cambiar getData(WAGON por NUMBEROFWAGONS) if (getData(TAGSTYPE).equals(getString(R.string.stickers))) { viewModel.collectionNew( getData(USER), getData(PASSWORD), getData(SECTORFK), - getData(WAGON) + getData(NUMBEROFWAGONS) ) } else if (getCollections) { diff --git a/app/src/main/res/drawable/.idea/misc.xml b/app/src/main/res/drawable/.idea/misc.xml new file mode 100644 index 00000000..639900d1 --- /dev/null +++ b/app/src/main/res/drawable/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/.idea/modules.xml b/app/src/main/res/drawable/.idea/modules.xml new file mode 100644 index 00000000..1b046284 --- /dev/null +++ b/app/src/main/res/drawable/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/.idea/vcs.xml b/app/src/main/res/drawable/.idea/vcs.xml new file mode 100644 index 00000000..bc599707 --- /dev/null +++ b/app/src/main/res/drawable/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/.idea/workspace.xml b/app/src/main/res/drawable/.idea/workspace.xml new file mode 100644 index 00000000..b7f5454d --- /dev/null +++ b/app/src/main/res/drawable/.idea/workspace.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1660117924027 + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_pallet_scan_expedition.xml b/app/src/main/res/drawable/ic_pallet_scan_expedition.xml new file mode 100644 index 00000000..1c0e2f3a --- /dev/null +++ b/app/src/main/res/drawable/ic_pallet_scan_expedition.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/lift.xml b/app/src/main/res/drawable/lift.xml new file mode 100644 index 00000000..2d6f7481 --- /dev/null +++ b/app/src/main/res/drawable/lift.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_inventary.xml b/app/src/main/res/layout/fragment_inventary.xml index 8e9751e9..12a28097 100644 --- a/app/src/main/res/layout/fragment_inventary.xml +++ b/app/src/main/res/layout/fragment_inventary.xml @@ -36,7 +36,7 @@ android:layout_width="wrap_content" android:layout_weight="1.5" android:backgroundTint="@android:color/white" - android:hint="@string/Filtro" + android:hint="@string/itemFilter" android:inputType="text" android:lines="1" android:maxLines="1" diff --git a/app/src/main/res/layout/fragment_testing_print.xml b/app/src/main/res/layout/fragment_testing_print.xml new file mode 100644 index 00000000..df3e723f --- /dev/null +++ b/app/src/main/res/layout/fragment_testing_print.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + +