Merge branch '4021-gestion_embalajes' into dev-embalajes

# Conflicts:
#	.idea/deploymentTargetDropDown.xml
#	.idea/workspace.xml
#	app/build.gradle
#	app/src/main/java/es/verdnatura/domain/SalixService.kt
#	app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt
#	app/src/main/java/es/verdnatura/presentation/common/UIExtensions.kt
#	app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/ObservFragment.kt
#	app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/PackagingCountFragment.kt
#	app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/PackagingSummaryFragment.kt
#	app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/PackagingViewModel/SupplierViewModel.kt
#	app/src/main/java/es/verdnatura/presentation/view/feature/packaging/fragment/SupplierFragment.kt
#	app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt
#	app/src/main/res/layout/fragment_packaging.xml
#	app/src/main/res/layout/fragment_packaging_obs.xml
#	app/src/main/res/layout/fragment_packaging_summary.xml
#	app/src/main/res/layout/item_image_row.xml
#	app/src/main/res/layout/item_itemsupplier_row.xml
#	app/src/main/res/values-es/strings.xml
#	app/src/main/res/values-fr/strings.xml
#	app/src/main/res/values-pt/strings.xml
#	app/src/main/res/values/strings.xml
This commit is contained in:
Sergio De la torre 2024-03-06 14:16:36 +01:00
commit 669b05826e
23 changed files with 942 additions and 584 deletions

View File

@ -50,19 +50,11 @@ import es.verdnatura.presentation.view.feature.paletizador.model.ItemScanVO
import es.verdnatura.presentation.view.feature.presacador.model.PreSacadorItemVO
import es.verdnatura.presentation.view.feature.reubication.model.Reubication
import es.verdnatura.presentation.view.feature.sacador.model.CollectionTicket
import es.verdnatura.presentation.view.feature.packaging.model.*
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
import es.verdnatura.presentation.view.feature.sacador.model.MistakeTypeVO
import es.verdnatura.presentation.view.feature.sacador.model.PlacementSupplyVO
import es.verdnatura.presentation.view.feature.sacador.model.TicketStateSalix
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO
import es.verdnatura.presentation.view.feature.workermistake.model.DepartmentMistake
import es.verdnatura.presentation.view.feature.workermistake.model.ExpeditionMistakeSalix
import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType
import es.verdnatura.presentation.view.feature.workermistake.model.SaleMistakeSalix
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerMistakeSalix
import okhttp3.MultipartBody
import org.json.JSONObject
import retrofit2.Call
import retrofit2.http.*
@ -694,7 +686,9 @@ interface SalixService {
@Path("id") id: Number,
@Query("item") item: Number,
@Query("printedStickers") printedStickers: Number
): Call<Any>
):
Call<EntrySalix>
@POST("tickets/{idTicket}/transferSales") //-->saleMove en Silex
fun transferSalesSalix(
@ -807,13 +801,44 @@ interface SalixService {
"\"scope\":{" +
"\"fields\":[\"email\"],\"order\":\"id DESC\",\"limit\":1," +
"\"where\":{ \"email\":{\"neq\":null } }}}]})"*/
//@Query("filter") filter:String? = """""\"order\":\"name DESC\""""
): Call<List<Supplier>>
/* fun getEntries(
//@Body params:JSONObject=JSONObject("""filter"={"fields":{"id":true,"name":true},"include":[{"relation":"contacts","scope":{"fields":["email"],"order":"id DESC","limit":1,"where":{"email":{"neq":null}}}}]}""")
*//* @Query("filter") filter:String="{\"fields\":{\"id\":true,\"name\":true},\"include\":[{\"relation\":\"contacts\"," +
"\"scope\":{" +
"\"fields\":[\"email\"],\"order\":\"id DESC\",\"limit\":1," +
"\"where\":{ \"email\":{\"neq\":null } }}}]})"*//*
):
Call<List<EntrySalix>>*/
@PUT("Entries")//REVISADA
fun Entries(
@Body entry: EntrySalix
): Call<EntrySalix>
@Body supplier: Any
):
Call<List<EntrySalix>>
@GET("Entries")//REVISADA
fun getEntries_fromSupplier(
@Query("filter") filter:String
):
Call<List<EntrySalix>>
@GET("Entries")//REVISADA
fun add_entry(
@Body entry:EntrySalix
):
Call<EntrySalix>
@PATCH("Entries/{entryId}")//REVISADA
fun entry_updateObserv(
@Path("entryId") entryId:Int,
@Body entry: obervationEntry
):
Call<EntrySalix>
@GET("Shelvings")
fun Shelvings(
@ -833,10 +858,17 @@ interface SalixService {
@POST("Entries/addFromPackaging")
fun addFromPackaging(
@Query("supplier") supplier: Int, @Query("isTravelReception") isTravelReception: Boolean
@Query("supplier") supplier: Number,
@Query("isTravelReception") isTravelReception: Boolean
): Call<EntrySalix>
@POST("notificationQueues")
fun notificationQueues(
@Body notificationQueue: notificationQueue
):
Call<Void>
@POST("Images/upload")
@Multipart
fun uploadImage(

View File

@ -92,7 +92,7 @@ interface OnGeneralItemRowClickListener {
}
interface OnImageTrashClickListener {
fun OnImageUpdateClickListener(item: Any)
fun OnImageTrashClickListener(item: Any)
}
interface OnEditSubQuantityListener {

View File

@ -1,6 +1,7 @@
package es.verdnatura.presentation.view.feature.packaging.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import androidx.recyclerview.widget.RecyclerView
@ -10,11 +11,10 @@ import es.verdnatura.presentation.view.feature.packaging.model.ItemSupplier
class ItemSupplierAdapter(
private val items: List<ItemSupplier>,
private val onImageUpdateClickListener: OnImageUpdateClickListener,
private val onImageTrashClickListener: OnImageTrashClickListener,
private val onEditSubQuantityListener: OnEditSubQuantityListener
// private val OnGeneralItemRowClickListener: OnGeneralItemRowClickListener,
// private var showDelete: Boolean = false
private val onImageUpdateClickListener: OnImageUpdateClickListener? ,
private val onImageTrashClickListener: OnImageTrashClickListener?,
private val onEditSubQuantityListener: OnEditSubQuantityListener?,
private var showItems: Boolean = true
) : RecyclerView.Adapter<ItemSupplierAdapter.ItemHolder>() {
@ -42,16 +42,20 @@ class ItemSupplierAdapter(
binding.apply {
this.item = item
itemImageUpdate.setOnClickListener {
onImageUpdateClickListener.OnImageUpdateClickListener(
if (!showItems){
itemAdd.visibility= View.GONE
itemRemove.visibility=View.GONE
}
itemAdd.setOnClickListener {
onImageUpdateClickListener!!.OnImageUpdateClickListener(
item
)
itemImageTrash.setOnClickListener {
onImageTrashClickListener.OnImageUpdateClickListener(item)
}
}
itemRemove.setOnClickListener {
onImageTrashClickListener!!.OnImageTrashClickListener(item)
}
itemSubquantity.setOnEditorActionListener { v, actionId, event ->
/* itemSubquantity.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0) {
onEditSubQuantityListener.OnEditSubQuantityListener(
@ -61,7 +65,7 @@ class ItemSupplierAdapter(
v.clearFocus()
}
return@setOnEditorActionListener false
}
}*/
}
}

View File

@ -41,7 +41,7 @@ class ListImageAdapter(
item
)
itemImageTrash.setOnClickListener {
onImageTrashClickListener.OnImageUpdateClickListener(item)
onImageTrashClickListener.OnImageTrashClickListener(item)
}
}
}

View File

@ -7,34 +7,27 @@ import android.os.Build
import android.util.Log.d
import android.view.View
import android.widget.ImageView
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import com.esafirm.imagepicker.features.ImagePickerConfig
import com.esafirm.imagepicker.features.registerImagePicker
import com.esafirm.imagepicker.model.Image
import es.verdnatura.R
import es.verdnatura.databinding.FragmentPackagingObsBinding
import es.verdnatura.domain.ConstAndValues.ENTRYNUMBERIMAGES
import es.verdnatura.domain.ConstAndValues.ENTRYOBSERVATIONS
import es.verdnatura.domain.ConstAndValues.ENTRYTYPE
import es.verdnatura.domain.ConstAndValues.SUPPLIERNAME
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.component.CustomDialogList
import es.verdnatura.presentation.view.feature.inventario.fragment.InventaryViewModel
import es.verdnatura.presentation.view.feature.packaging.adapter.ListImageAdapter
import es.verdnatura.presentation.view.feature.packaging.fragment.PackagingViewModel.PackagingViewModel
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
class ObservFragment(
var entryPoint: String = ""
) : BaseFragment<FragmentPackagingObsBinding, InventaryViewModel>(
InventaryViewModel::class
) : BaseFragment<FragmentPackagingObsBinding, PackagingViewModel>(
PackagingViewModel::class
) {
private var adapterListImage: ListImageAdapter? = null
@ -65,12 +58,7 @@ class ObservFragment(
private fun setToolBar() {
binding.mainToolbar.toolbarTitle.text =
runBlocking {
mobileApplication.dataStoreApp.readDataStoreKey<String>(ENTRYTYPE) + ":" + mobileApplication.dataStoreApp.readDataStoreKey<String>(
SUPPLIERNAME
)
}
binding.mainToolbar.toolbarTitle.text = getData("ENTRYTYPE") + ": " + getData("SUPPLIERNAME")
val listIcons: ArrayList<ImageView> = ArrayList()
val iconNext = ImageView(context)
@ -84,18 +72,15 @@ class ObservFragment(
override fun onOptionsItemSelected(item: Drawable) {
when (item) {
iconNext.drawable -> {
lifecycleScope.launch(Dispatchers.IO) {
mobileApplication.dataStoreApp.editDataStoreKey(
ENTRYNUMBERIMAGES, if (listImages.isNullOrEmpty()) 0 else {
listImages!!.size.toString()
}
)
saveData(
"ENTRYNUMBERIMAGES",
if (listImages.isNullOrEmpty()) "0" else {
listImages!!.size.toString()
}
)
saveData("ENTRYOBSERVATIONS",binding.observations.text.toString() )
mobileApplication.dataStoreApp.editDataStoreKey(
ENTRYOBSERVATIONS,
binding.observations.text.toString()
)
}
viewModel.entry_updateObserv(getDataInt("ENTRYID"),binding.observations.text.toString())
ma.onPasillerosItemClickListener(
PasillerosItemVO(title = getString(R.string.titlePackagingSummary)),
@ -103,8 +88,10 @@ class ObservFragment(
)
}
}
}
})
@ -114,18 +101,21 @@ class ObservFragment(
}
private fun setEvents() {
val launcher = registerImagePicker {
for (image in it) {
d("VERDNATURA::", "el nombre es " + image.name)
d("VERDNATURA::", "el nombre es " + image.uri)
//binding.imageView30.setImageURI(image.uri)
}
listImages?.clear()
listImages = it as MutableList<Image>
setAdapter(listImages!!)
}
binding.mainToolbar.backButton.setOnClickListener {
ma.onMyBackPressed()
requireActivity().onBackPressed()
}
binding.openPickerImages.setOnClickListener {
val config = ImagePickerConfig {
@ -155,6 +145,7 @@ class ObservFragment(
launcher.launch(config)
}
}
override fun observeViewModel() {
@ -167,11 +158,12 @@ class ObservFragment(
adapterListImage =
ListImageAdapter(list, object : OnImageUpdateClickListener {
override fun OnImageUpdateClickListener(item: Any) {
d("VERDNATURA::", "Seleccionado update" + (item as Image).name)
}
}, object : OnImageTrashClickListener {
override fun OnImageUpdateClickListener(item: Any) {
override fun OnImageTrashClickListener(item: Any) {
d("VERDNATURA::", "Seleccionado trash" + (item as Image).name)
list.remove(item)
adapterListImage!!.notifyDataSetChanged()

View File

@ -2,15 +2,12 @@ package es.verdnatura.presentation.view.feature.packaging.fragment
import android.graphics.drawable.Drawable
import android.os.Build
import android.os.Bundle
import android.util.Log.d
import android.text.InputType
import android.view.View
import android.widget.ImageView
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentPackagingCountBinding
import es.verdnatura.domain.ConstAndValues.ENTRYTYPE
import es.verdnatura.domain.ConstAndValues.SUPPLIERNAME
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
import es.verdnatura.presentation.view.component.CustomDialog
@ -20,6 +17,7 @@ import es.verdnatura.presentation.view.feature.packaging.fragment.PackagingViewM
import es.verdnatura.presentation.view.feature.packaging.model.ItemSupplier
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
class PackagingCountFragment(
var entryPoint: String = ""
@ -40,22 +38,12 @@ class PackagingCountFragment(
override fun getLayoutId(): Int = R.layout.fragment_packaging_count
override fun onCreate(savedInstanceState: Bundle?) {
/* viewModel.supplier_getItemsSalix(
2, 1
)*/
super.onCreate(savedInstanceState)
}
override fun init() {
binding.quantityPackaging.setOnClickListener {
ma.onPasillerosItemClickListener(
PasillerosItemVO(title = getString(R.string.titlePackagingObs)),
getString(R.string.titlePackagingObs)
)
}
binding.splashProgress.visibility = View.VISIBLE
viewModel.getItemsPackaging(
getDataInt("SUPPLIERID"), getDataInt("ENTRYID")
)
customDialogInput = CustomDialogInput(requireContext())
customDialog = CustomDialog(requireContext())
ma.hideBottomNavigation(View.GONE)
@ -67,9 +55,7 @@ class PackagingCountFragment(
private fun setToolBar() {
binding.mainToolbar.toolbarTitle.text =
mobileApplication.dataStoreApp.readDataStoreKey<String>(ENTRYTYPE) + ":" + mobileApplication.dataStoreApp.readDataStoreKey(
SUPPLIERNAME
)
"${getData("ENTRYTYPE")}: ${getData("SUPPLIERNAME")}"
val listIcons: ArrayList<ImageView> = ArrayList()
val iconNext = ImageView(context)
@ -102,33 +88,48 @@ class PackagingCountFragment(
private fun setEvents() {
binding.mainToolbar.backButton.setOnClickListener {
ma.onMyBackPressed()
requireActivity().onBackPressed()
}
}
override fun observeViewModel() {
with(viewModel) {
entryAdd.observe(viewLifecycleOwner) {
if (it.isError) {
binding.splashProgress.visibility = View.INVISIBLE
ma.messageWithSound(it.errorMessage, true, true)
} else {
ma.messageWithSound(it.errorMessage, false, true)
binding.splashProgress.visibility = View.VISIBLE
viewModel.getItemsPackaging(
getDataInt("SUPPLIERID"), getDataInt("ENTRYID")
)
}
}
itemSupplierList.observe(viewLifecycleOwner) {
binding.splashProgress.visibility = View.GONE
adapteritemsupplier =
ItemSupplierAdapter(it.list, object : OnImageUpdateClickListener {
override fun OnImageUpdateClickListener(item: Any) {
d("VERDNATURA::", "Seleccionado update" + (item as ItemSupplier).name)
showCustomDialog("quantity", item as ItemSupplier)
}
}, object : OnImageTrashClickListener {
override fun OnImageUpdateClickListener(item: Any) {
d("VERDNATURA::", "Seleccionado trash" + (item as ItemSupplier).name)
override fun OnImageTrashClickListener(item: Any) {
showCustomDialog("delete", item as ItemSupplier)
}
}, object : OnEditSubQuantityListener {
override fun OnEditSubQuantityListener(item: Any, text: String) {
d(
"VERDNATURA::",
"la subquantity es " + (item as ItemSupplier).name + "el valor es :" + text
)
hideKeyboard()
}
})
@ -143,5 +144,73 @@ class PackagingCountFragment(
}
}
private fun showCustomDialog(action: String, item: ItemSupplier) {
when (action) {
"quantity" -> {
customDialogInput.getEditText().setRawInputType(InputType.TYPE_CLASS_NUMBER)
customDialogInput.setTitle(getString(R.string.quantityReviewed))
.setDescription(getString(R.string.Indicanuevacantidad))
.setOkButton(getString(R.string.accept)) {
if (!customDialogInput.getValue().isEmpty()) {
requireActivity().hideKeyboard()
}
binding.splashProgress.visibility = View.VISIBLE
viewModel.entry_addFromBuy(
getDataInt("ENTRYID"), item = item.id!!.toInt(),
(if (getData("ENTRYTYPE") == "Rec") {
(item.printedStickers.plus(customDialogInput.getValue().toInt()))
} else {
item.printedStickers.plus(customDialogInput.getValue().toInt() * -1)
}) as Number
)
customDialog.cancel()
customDialogInput.dismiss()
customDialogInput.setValue("")
}.setKoButton(getString(R.string.cancel)) {
customDialog.cancel()
customDialogInput.dismiss()
}.setValue("")
.show()
customDialogInput.currentFocus
customDialogInput.setFocusText()
}
"delete" -> {
customDialog.setTitle(getString(R.string.deleteEntryReviewed))
.setDescription(getString(R.string.sure))
.setOkButton(
getString(
R.string.delete
)
) {
customDialog.cancel()
customDialog.dismiss()
binding.splashProgress.visibility = View.VISIBLE
viewModel.entry_addFromBuy(
getDataInt("ENTRYID"), item = item.id!!.toInt(),
0
)
}
.setKoButton(getString(R.string.cancel)) {
customDialog.cancel()
customDialog.dismiss()
}
.show()
}
}
}
}

View File

@ -7,51 +7,25 @@ import android.widget.ImageView
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentPackagingSummaryBinding
import es.verdnatura.domain.ConstAndValues.ENTRYNUMBERIMAGES
import es.verdnatura.domain.ConstAndValues.ENTRYOBSERVATIONS
import es.verdnatura.domain.ConstAndValues.ENTRYTYPE
import es.verdnatura.domain.ConstAndValues.SUPPLIERNAME
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.*
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.component.CustomDialogInput
import es.verdnatura.presentation.view.component.CustomDialogList
import es.verdnatura.presentation.view.feature.articulo.adapter.BarcodeAdapter
import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
import es.verdnatura.presentation.view.feature.inventario.fragment.InventaryViewModel
import es.verdnatura.presentation.view.feature.inventario.fragment.SearchDepartmentModel
import es.verdnatura.presentation.view.feature.workermistake.adapter.WorkermistakeAdapter
import es.verdnatura.presentation.view.feature.workermistake.model.DepartmentMistake
import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
import kotlinx.coroutines.runBlocking
import es.verdnatura.presentation.view.feature.packaging.adapter.ItemSupplierAdapter
import es.verdnatura.presentation.view.feature.packaging.fragment.PackagingViewModel.PackagingViewModel
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
class PackagingSummaryFragment(
var entryPoint: String = ""
) : BaseFragment<FragmentPackagingSummaryBinding, InventaryViewModel>(
InventaryViewModel::class
) : BaseFragment<FragmentPackagingSummaryBinding, PackagingViewModel>(
PackagingViewModel::class
) {
private var adapterworker: WorkermistakeAdapter? = null
private lateinit var customDialogInput: CustomDialogInput
private var listWorker: MutableList<WorkerFromMistake> = ArrayList()
private var listWorkerAuxiliary: MutableList<WorkerFromMistake> = ArrayList()
private var adapteritemsupplier: ItemSupplierAdapter? = null
private lateinit var customDialog: CustomDialog
private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
private var layoutManager: LinearLayoutManager? = null
private lateinit var customDialogList: CustomDialogList
private var listMistakes: ArrayList<BarcodeVO> = ArrayList()
private var listMistakesAdapter: BarcodeAdapter? = null
private var workerMistakeName: WorkerFromMistake? = null
private val departments = ArrayList<SearchDepartmentModel>()
private lateinit var departmentId: String
companion object {
fun newInstance(entryPoint: String) = PackagingSummaryFragment(entryPoint)
}
@ -59,20 +33,17 @@ class PackagingSummaryFragment(
override fun getLayoutId(): Int = R.layout.fragment_packaging_summary
override fun init() {
binding.totalImages.text = mobileApplication.dataStoreApp.readDataStoreKey(ENTRYNUMBERIMAGES)
binding.observations.text = mobileApplication.dataStoreApp.readDataStoreKey(ENTRYOBSERVATIONS)
customDialogList = CustomDialogList(requireContext())
/*
if (!departmentId.isEmpty()) {
viewModel.workerGetFromHasMistake(
getData(DEPARTMENTMISTAKEID).toInt()
)
}*/
customDialogInput = CustomDialogInput(requireContext())
customDialog = CustomDialog(requireContext())
binding.totalImages.text = getData("ENTRYNUMBERIMAGES")
binding.observations.text = getData("ENTRYOBSERVATIONS")
binding.splashProgress.visibility = View.VISIBLE
viewModel.getItemsPackaging(
getDataInt("SUPPLIERID"), getDataInt("ENTRYID")
)
ma.hideBottomNavigation(View.GONE)
binding.splashProgress.visibility = View.GONE
setToolBar()
setEvents()
super.init()
@ -80,11 +51,7 @@ class PackagingSummaryFragment(
private fun setToolBar() {
binding.mainToolbar.toolbarTitle.text = runBlocking {
mobileApplication.dataStoreApp.readDataStoreKey<String>(ENTRYTYPE) + ":" + mobileApplication.dataStoreApp.readDataStoreKey<String>(
SUPPLIERNAME
)
}
binding.mainToolbar.toolbarTitle.text = getData("ENTRYTYPE") + ": " + getData("SUPPLIERNAME")
val listIcons: ArrayList<ImageView> = ArrayList()
val iconConfirm = ImageView(context)
@ -99,7 +66,7 @@ class PackagingSummaryFragment(
override fun onOptionsItemSelected(item: Drawable) {
when (item) {
iconConfirm.drawable -> {
// TODO()
showWarning()
}
}
}
@ -112,148 +79,55 @@ class PackagingSummaryFragment(
private fun setEvents() {
binding.mainToolbar.backButton.setOnClickListener {
ma.onMyBackPressed()
requireActivity().onBackPressed()
}
}
override fun observeViewModel() {
with(viewModel) {
mistakeDepartmentList.observe(viewLifecycleOwner) {
createDepartmentList(it.list)
}
workerFromMistakeList.observe(viewLifecycleOwner) {
createWorkerList(it.list)
adapterworker =
WorkermistakeAdapter(listWorker, object : onMistakeWorkerClickListener {
override fun onMistakeWorkerClickListener(item: WorkerFromMistake) {
viewModel.workerMistakeTypeGet(
)
workerMistakeName =
WorkerFromMistake(
item.id,
item.firstName,
item.lastName,
true,
""
)
}
})
binding.workermistakeRecyclerview.adapter = adapterworker
itemSupplierList.observe(viewLifecycleOwner) {
binding.splashProgress.visibility = View.GONE
var mySummaryList = it.list.filter { it.quantity > 0 }
adapteritemsupplier =
ItemSupplierAdapter(mySummaryList, null, null, null, showItems = false)
binding.itemsupplierRecyclerview.adapter = adapteritemsupplier
layoutManager =
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
binding.workermistakeRecyclerview.layoutManager = layoutManager
binding.itemsupplierRecyclerview.layoutManager = layoutManager
}
mistakeWorkerList.observe(viewLifecycleOwner, {
showMistakeList(it.list)
//goBack = false
})
responseAddMistake.observe(viewLifecycleOwner, {
ma.messageWithSound(
if (it.isError) {
if (it.codeError == 403) {
getString(R.string.userNotPermission)
} else {
it.errorMessage
}
} else {
getString(R.string.errorCauseRegistered)
}, it.isError, true, isToasted = true
)
})
response.observe(viewLifecycleOwner, {
if (it.isError) {
ma.messageWithSound(it.errorMessage, true, false)
}
})
}
}
private fun showMistakeList(list: List<MistakeType>) {
listMistakes = ArrayList()
list.forEach {
listMistakes.add(BarcodeVO(code = it.description))
}
private fun showWarning() {
customDialog.setTitle(getString(R.string.sendEntry))
customDialog.setTitle(getString(R.string.warningEntry))
.setOkButton(
getString(
R.string.accept
)
) {
viewModel.notificationQueues("modified-entry",getDataInt(USERFK),"""{"url":"${getData("base_urlSalix")}/#!/entry/${getDataInt("ENTRYID")}/summary"}""")
customDialog.dismiss()
}
customDialogList.setTitle(getString(R.string.errorCause) + workerMistakeName!!.firstName)
.setKoButton(
getString(
R.string.cancel
)
) {
customDialogList.dismiss()
}.hideDialog().show()
customDialog.dismiss()
}.show()
listMistakesAdapter =
BarcodeAdapter(listMistakes, object : OnBarcodeRowClickListener {
override fun onBarcodeRowClickListener(item: BarcodeVO) {
list.forEach {
if (it.description == item.code) {
/* viewModel.workerMistake_Add(
vUserFk = workerMistakeName!!.id!!,
vTypeFk = it.code
)*/
// getString(R.string.errorRegistered).toast(requireContext())
customDialogList.dismiss()
}
}
}
}, showDelete = false)
customDialogList.getRecyclerView().adapter = listMistakesAdapter
customDialogList.getRecyclerView().layoutManager =
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
}
private fun createDepartmentList(list: List<DepartmentMistake>) {
departments.clear()
list.forEach { department ->
if (!department.isError) {
try {
departments.add(SearchDepartmentModel(department.name, department.id))
} catch (e: Exception) {
}
}
}
}
private fun createWorkerList(list: List<WorkerFromMistake>) {
listWorker.clear()
list.forEach { worker ->
if (!worker.isError) {
try {
listWorker.add(worker)
} catch (e: Exception) {
}
}
}
listWorker.add(WorkerFromMistake(0, "Añadir nuevo", "", false))
listWorkerAuxiliary.clear()
listWorkerAuxiliary.addAll(listWorker)
listWorkerAuxiliary.add(WorkerFromMistake(0, "Añadir nuevo", "", false))
}
}

View File

@ -3,16 +3,14 @@ package es.verdnatura.presentation.view.feature.packaging.fragment.PackagingView
import android.content.Context
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import es.verdnatura.domain.SalixCallback
import androidx.lifecycle.Transformations
import es.verdnatura.domain.SilexCallback
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.ResponseItemVO
import es.verdnatura.presentation.view.feature.packaging.model.EntrySalix
import es.verdnatura.presentation.view.feature.packaging.model.ItemSupplier
import es.verdnatura.presentation.view.feature.packaging.model.Supplier
import es.verdnatura.presentation.view.feature.packaging.model.SupplierList
import es.verdnatura.presentation.view.feature.packaging.model.itemSupplierList
import es.verdnatura.presentation.view.feature.packaging.model.*
import okhttp3.MultipartBody
import retrofit2.Response
@ -27,18 +25,32 @@ class PackagingViewModel(val context: Context) : BaseViewModel(context) {
val supplierList: LiveData<SupplierList>
get() = _supplierList
private val _entryList by lazy { MutableLiveData<EntryList>() }
val entryList: LiveData<EntryList>
get() = _entryList
private val _entry by lazy { MutableLiveData<EntrySalix>() }
val entry: LiveData<EntrySalix>
get() = _entry
private val _entryUpdate by lazy { MutableLiveData<EntrySalix>() }
val entryUpdate: LiveData<EntrySalix>
get() = _entryUpdate
private val _entryAdd by lazy { MutableLiveData<EntrySalix>() }
val entryAdd: LiveData<EntrySalix>
get() = _entryAdd
private val _response by lazy { MutableLiveData<ResponseItemVO>() }
val response: LiveData<ResponseItemVO>
get() = _response
val loadEntryAdd = Transformations.map(_entryAdd) { Event(it) }
fun getSuppliers() {
salix.getSuppliers()
.enqueue(object :
SalixCallback<List<Supplier>>(context) {
SilexCallback<List<Supplier>>(context) {
override fun onError(t: Throwable) {
val listError: ArrayList<Supplier> = ArrayList()
listError.add(
@ -75,10 +87,50 @@ class PackagingViewModel(val context: Context) : BaseViewModel(context) {
})
}
fun supplier_getItems(supplierFk: Int) {
fun getEntries_fromSupplier(supplier: Int) {
salix.getEntries_fromSupplier("""{"where": {"supplierFk": "$supplier"},"limit":5, "order":"created DESC"}""")
.enqueue(object :
SilexCallback<List<EntrySalix>>(context) {
override fun onError(t: Throwable) {
val listError: ArrayList<EntrySalix> = ArrayList()
listError.add(
EntrySalix(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
t.message!!
)
)
)
_entryList.value = EntryList(listError)
}
override fun onSuccess(response: Response<List<EntrySalix>>) {
if (response.body() != null) {
_entryList.value = response.body()?.let { EntryList(it) }
} else {
val listError: ArrayList<EntrySalix> = ArrayList()
listError.add(
EntrySalix(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
response.message()
)
)
)
_entryList.value = EntryList(listError)
}
}
})
}
fun supplier_getItems(supplierFk: Any) {
silex.supplier_getItems(supplierFk)
.enqueue(object : SalixCallback<List<ItemSupplier>>(context) {
.enqueue(object : SilexCallback<List<ItemSupplier>>(context) {
override fun onError(t: Throwable) {
val listError: ArrayList<ItemSupplier> = ArrayList()
listError.add(
@ -107,10 +159,10 @@ class PackagingViewModel(val context: Context) : BaseViewModel(context) {
})
}
fun entry_addSalix(entry: EntrySalix) {
salix.Entries(entry = entry)
fun entry_addSalix(entry: EntrySalix) {
salix.add_entry(entry)
.enqueue(object :
SalixCallback<EntrySalix> (context){
SilexCallback<EntrySalix>(context) {
override fun onError(t: Throwable) {
_entry.value = EntrySalix(
isError = true,
@ -138,13 +190,152 @@ class PackagingViewModel(val context: Context) : BaseViewModel(context) {
})
}
fun entry_updateObserv(entryId: Int, observation: String) {
salix.entry_updateObserv(entryId,obervationEntry(observation))
.enqueue(object :
SilexCallback<EntrySalix>(context) {
override fun onError(t: Throwable) {
_entryUpdate.value = EntrySalix(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
t.message!!
)
)
}
override fun onSuccess(response: Response<EntrySalix>) {
if (response.body() != null) {
_entryUpdate.value = response.body()
} else {
_entryUpdate.value = EntrySalix(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
response.message()
)
)
}
}
})
}
fun entry_uploadPhotoSalix(id: Number, warehouseId: Number, companyId: Number, dmsTypeId: Number, reference: String, description: String, hasFile: Boolean, file: MultipartBody.Part) {
salix.uploadEntryPhoto(id, warehouseId, companyId, dmsTypeId, reference, description, hasFile, file)
.enqueue(object : SalixCallback<Any>(context){})
.enqueue(object : SilexCallback<Any>(context){})
}
fun entry_addFromBuy(id: Number, item: Number, printedStickers: Number) {
salix.addFromBuy(id, item, printedStickers)
.enqueue(object : SalixCallback<Any>(context){})
.enqueue(object : SilexCallback<EntrySalix>(context){override fun onError(t: Throwable) {
_entryAdd.value = EntrySalix(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
t.message!!
)
)
}
override fun onSuccess(response: Response<EntrySalix>) {
if (response.body() != null) {
_entryAdd.value = response.body()
} else {
_entryAdd.value = EntrySalix(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
response.message()
)
)
}
}
})
}
fun notificationQueues(notification: String, workerfk: Int, bodyUrl: String) {
salix.notificationQueues(notificationQueue(notification,workerfk,bodyUrl))
.enqueue(object : SilexCallback<Void>(context){override fun onError(t: Throwable) {
_response.value = ResponseItemVO(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
t.message!!
)
)
}
override fun onSuccess(response: Response<Void>) {
_response.value = ResponseItemVO(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
response.message()
)
)
}
})
}
fun entry_addFromPackaging(supplier: Number,isPackaging: Boolean) {
salix.addFromPackaging(supplier, isPackaging)
.enqueue(object : SilexCallback<EntrySalix>(context) {
override fun onError(t: Throwable) {
_entryAdd.value = EntrySalix(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
t.message!!
)
)
}
override fun onSuccess(response: Response<EntrySalix>) {
if (response.body() != null) {
_entryAdd.value = response.body()
} else {
_entryAdd.value = EntrySalix(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
response.message()
)
)
}
}
})
}
fun getItemsPackaging(supplierId: Int,entryId: Int) {
salix.getItemsPackaging(supplierId, entryId)
.enqueue(object : SilexCallback<List<ItemSupplier>>(context){
override fun onError(t: Throwable) {
val listError: ArrayList<ItemSupplier> = ArrayList()
listError.add(
ItemSupplier(
isError = true,
errorMessage = getMessageFromAllResponse(
nameofFunction(this),
t.message!!
)
)
)
_itemSupplierList.value = itemSupplierList(listError)
}
override fun onSuccess(response: Response<List<ItemSupplier>>) {
if (response.body() != null) {
_itemSupplierList.value =
response.body()?.let { itemSupplierList(it) }
} else {
val listError: ArrayList<ItemSupplier> = ArrayList()
listError.add(ItemSupplier(null, null))
_itemSupplierList.value = itemSupplierList(listError)
}
}
})
}
}

View File

@ -6,22 +6,18 @@ import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentPackagingBinding
import es.verdnatura.domain.ConstAndValues.ENTRY
import es.verdnatura.domain.ConstAndValues.ENTRYTYPE
import es.verdnatura.domain.ConstAndValues.SUPPLIERID
import es.verdnatura.domain.ConstAndValues.SUPPLIERNAME
import es.verdnatura.domain.notNull
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
import es.verdnatura.presentation.common.convertToDateString
import es.verdnatura.presentation.view.component.CustomDialog
import es.verdnatura.presentation.view.feature.inventario.fragment.SearchSupplierModel
import es.verdnatura.presentation.view.feature.packaging.fragment.PackagingViewModel.PackagingViewModel
import es.verdnatura.presentation.view.feature.packaging.model.EntrySalix
import es.verdnatura.presentation.view.feature.packaging.model.Supplier
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
import ir.mirrajabi.searchdialog.SimpleSearchDialogCompat
import kotlinx.coroutines.runBlocking
import okhttp3.MediaType
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
class SupplierFragment(
@ -35,6 +31,10 @@ class SupplierFragment(
private var layoutManager: LinearLayoutManager? = null
private var onBack = false
private val suppliers = ArrayList<SearchSupplierModel>()
private val entries = ArrayList<SearchSupplierModel>()
private lateinit var customDialog: CustomDialog
companion object {
fun newInstance(entryPoint: String) = SupplierFragment(entryPoint)
@ -49,12 +49,12 @@ class SupplierFragment(
override fun onCreate(savedInstanceState: Bundle?) {
/* viewModel.getSuppliers(
)*/
viewModel.getSuppliers()
val drawableId: Int =
R.drawable.background_test // Reemplaza "mi_drawable" con el nombre de tu recurso Drawable
/* val uri: Uri = Uri.parse(
ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
context!!.resources.getResourcePackageName(drawableId) + '/' +
@ -64,8 +64,9 @@ class SupplierFragment(
val rutaAbsoluta: String = uri.toString()*/
val file =
File("/storage/emulated/0/Android/data/es.verdnatura.sfusion/files/Pictures/test.png")
/*
val file = File("/storage/emulated/0/Android/data/es.verdnatura.sfusion/files/Pictures/test.png")
val filePart = MultipartBody.Part.createFormData(
"file",
file.name,
@ -80,7 +81,7 @@ class SupplierFragment(
"Example description",
false,
file = filePart
)
)*/
// viewModel.entry_addFromBuy(8,1,100)
super.onCreate(savedInstanceState)
}
@ -93,6 +94,7 @@ class SupplierFragment(
override fun init() {
binding.splashProgress.visibility = View.VISIBLE
binding.filterSupplier.setOnClickListener {
SimpleSearchDialogCompat(
context,
@ -103,18 +105,13 @@ class SupplierFragment(
) { baseSearchDialogCompat, nombre, position ->
binding.filterSupplier.setText((nombre.getName()))
binding.radiobuttonTypePackaging.visibility = View.VISIBLE
runBlocking {
mobileApplication.dataStoreApp.editDataStoreKey(SUPPLIERNAME, nombre.getName())
mobileApplication.dataStoreApp.editDataStoreKey(
SUPPLIERID,
nombre.getId() as Int
)
}
saveData("SUPPLIERNAME", nombre.getName())
saveDataInt("SUPPLIERID", nombre.getId().toInt())
viewModel.getEntries_fromSupplier(nombre.getId().toInt())
baseSearchDialogCompat.dismiss()
}.show()
}
customDialog = CustomDialog(requireContext())
ma.hideBottomNavigation(View.GONE)
setToolBar()
setEvents()
@ -129,46 +126,64 @@ class SupplierFragment(
private fun setEvents() {
binding.mainToolbar.backButton.setOnClickListener {
ma.onMyBackPressed()
requireActivity().onBackPressed()
}
binding.radiobuttonTypePackaging.setOnCheckedChangeListener { buttonView, isChecked ->
when (isChecked) {
R.id.radioButtonRec -> {
runBlocking {
mobileApplication.dataStoreApp.editDataStoreKey(
ENTRYTYPE,
"Rec"
)
}
saveData("ENTRYTYPE", "Rec")
}
R.id.radioButtonDev -> {
runBlocking {
mobileApplication.dataStoreApp.editDataStoreKey(
ENTRYTYPE,
"Dev"
)
}
saveData("ENTRYTYPE", "Dev")
}
}
if (!onBack) {
//viewModel.addFromPackaging(getDataInt("SUPPLIERID"), getData("ENTRYTYPE")=="Rec")
}
onBack = false
binding.filterEntry.visibility = View.VISIBLE
}
}
private fun setEntryDialog() {
binding.filterEntry.setOnClickListener {
SimpleSearchDialogCompat(
context,
getString(R.string.Entrada),
getString(R.string.escribirparteNombre),
null,
entries
) { baseSearchDialogCompat, nombre, position ->
binding.filterEntry.setText((nombre.getName()))
binding.radiobuttonTypePackaging.visibility = View.VISIBLE
if (nombre.getName() == getString(R.string.newEntry)) {
addEntry()
} else {
saveDataInt("ENTRYID", nombre.getId().toInt())
ma.onPasillerosItemClickListener(
PasillerosItemVO(title = getString(R.string.titlePackagingCount)),
getString(R.string.titlePackagingCount)
)
}
baseSearchDialogCompat.dismiss()
}.show()
}
}
override fun observeViewModel() {
with(viewModel) {
supplierList.observe(viewLifecycleOwner) {
binding.splashProgress.visibility = View.GONE
createSupplierList(it.list)
}
entryList.observe(viewLifecycleOwner) {
binding.splashProgress.visibility = View.GONE
createEntryList(it.list)
}
response.observe(viewLifecycleOwner) {
if (it.isError) {
@ -176,13 +191,46 @@ class SupplierFragment(
}
}
entry.observe(viewLifecycleOwner) {
loadEntryAdd.observe(viewLifecycleOwner) { event ->
event.getContentIfNotHandled().notNull {
binding.splashProgress.visibility = View.INVISIBLE
if (it.isError) {
ma.messageWithSound(it.errorMessage, true, false)
} else {
saveDataInt("ENTRYID", it.id!!.toInt())
ma.onPasillerosItemClickListener(
PasillerosItemVO(title = getString(R.string.titlePackagingCount)),
it.id!!.toString()
)
}
}
}
/* entryAdd.observe(viewLifecycleOwner) {
if (it.isError) {
ma.messageWithSound(it.errorMessage, true, false)
} else {
runBlocking { mobileApplication.dataStoreApp.editDataStoreKey(ENTRY, it.id!!) }
saveDataInt("ENTRYID", it.id!!.toInt())
ma.onPasillerosItemClickListener(
PasillerosItemVO(title = getString(R.string.titlePackagingCount)),
it.id!!.toString()
)
}
}*/
entry.observe(viewLifecycleOwner) {
binding.splashProgress.visibility = View.GONE
if (it.isError) {
ma.messageWithSound(it.errorMessage, true, false)
} else {
saveDataInt("ENTRYID", it.id!!.toInt())
ma.onPasillerosItemClickListener(
PasillerosItemVO(title = getString(R.string.titlePackagingCount)),
getString(R.string.titlePackagingCount)
@ -192,6 +240,7 @@ class SupplierFragment(
}
}
private fun createSupplierList(list: List<Supplier>) {
suppliers.clear()
list.forEach { supplier ->
@ -204,5 +253,54 @@ class SupplierFragment(
}
}
private fun createEntryList(list: List<EntrySalix>) {
entries.clear()
list.forEach { entry ->
if (!entry.isError!!) {
try {
entries.add(
SearchSupplierModel(
entry.id.toString() + "->" + convertToDateString(entry.created),
id = entry.id.toString()
)
)
} catch (e: Exception) {
}
}
}
entries.add(SearchSupplierModel(getString(R.string.newEntry), ""))
setEntryDialog()
}
private fun addEntry() {
customDialog.setTitle(getString(R.string.createEntryDescrip))
.setDescription(getString(R.string.sure))
.setOkButton(
getString(
R.string.accept
)
) {
customDialog.cancel()
customDialog.dismiss()
binding.splashProgress.visibility = View.VISIBLE
viewModel.entry_addFromPackaging(
getDataInt("SUPPLIERID"),
getData("ENTRYTYPE") == "Rec"
)
}
.setKoButton(getString(R.string.cancel)) {
customDialog.cancel()
customDialog.dismiss()
}
.show()
}
}

View File

@ -1,10 +1,38 @@
package es.verdnatura.presentation.view.feature.packaging.model
import es.verdnatura.presentation.common.convertToDateString
class EntrySalix(
var id: Int? = null,
var supplierFk: String? = null,
var travelFk: String? = null,
var companyFk: String? = null,
var id: Number? = null,
var dated: String? = null,
var created: String? = null,
var supplierFk: Number? = null,
var travelFk: Number? = null,
var companyFk: Number? = null,
var isError: Boolean = false,
var errorMessage: String = ""
)
fun List<EntrySalix>.toDateFormat(): ArrayList<EntrySalix> {
val entries: ArrayList<EntrySalix> = ArrayList()
this.forEach {
entries.add(
EntrySalix(
dated = convertToDateString(it.dated),
created = convertToDateString(it.created)
)
)
}
return entries.sortedBy { it.dated } as ArrayList
}
data class obervationEntry(
val observation:String
)
data class notificationQueue(
val notificationFk:String,
val authorFk:Int,
val params: String
)

View File

@ -12,6 +12,10 @@ class SupplierList(
var list: List<Supplier> = listOf()
)
class EntryList(
var list: List<EntrySalix> = listOf()
)
class itemSupplierList(
var list: List<ItemSupplier> = listOf()
)
@ -19,8 +23,9 @@ class itemSupplierList(
data class ItemSupplier(
var id: Int? = null,
var name: String? = null,
var quantity: Int? = 0,
var quantityTotal: Int? = 0,
var quantity: Int = 0,
var quantityTotal: Int = 0,
var printedStickers: Int = 0,
var buy: Int? = null,
var isError: Boolean = false,
var errorMessage: String? = null

View File

@ -438,25 +438,25 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
)
)
//#tarea4021
/* _pasillerositem.add(
PasillerosItemVO(
6,
R.drawable.ic_packaging,
contextApp.getString(R.string.titlePackaging),
R.string.titlePackaging,
contextApp.getString(R.string.titlePackagingDescrip)
)
)*/
//Tarea 5322
_pasillerositem.add(
PasillerosItemVO(
6,
R.drawable.photo_camera,
contextApp.getString(R.string.titlePhotos),
R.string.titlePhotos,
contextApp.getString(R.string.titlePhotos)
)
*/
//#tarea4021
_pasillerositem.add(
PasillerosItemVO(
6,
R.drawable.ic_packaging_entries,
contextApp.getString(R.string.titlePackaging),
R.string.titlePackaging,
contextApp.getString(R.string.titlePackagingDescrip)
)
)
_pasillerositem.add(
PasillerosItemVO(
6,
R.drawable.photo_camera,
contextApp.getString(R.string.titlePhotos),
R.string.titlePhotos,
contextApp.getString(R.string.titlePhotos)
)
_pasillerositem.add(

View File

@ -46,4 +46,4 @@ private fun getCalendarFromDate(date: String, context: Context): Calendar {
val cal = Calendar.getInstance()
cal.time = sdf.parse(date)!!
return cal
}
}

View File

@ -35,7 +35,7 @@
android:layout_width="match_parent"
android:layout_weight="1.5"
android:backgroundTint="@android:color/white"
android:hint="@string/nameSurname"
android:hint="Nombre o apellido"
android:inputType="text"
android:lines="1"
android:maxLines="1"
@ -50,15 +50,16 @@
android:layout_width="match_parent"
android:layout_weight="1"
android:backgroundTint="@android:color/white"
android:drawableEnd="@drawable/ic_arrow_drop_down_black_24dp"
android:focusable="false"
android:hint="@string/suppliers"
android:hint="Proveedor"
android:inputType="text"
android:lines="1"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@color/verdnatura_pumpkin_orange"
android:textColorHint="@android:color/darker_gray"
android:visibility="visible"
app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp" />
android:visibility="visible" />
</LinearLayout>
@ -95,8 +96,44 @@
android:text="@string/comeback"
android:textColor="@color/verdnatura_white" />
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/filter_entry"
style="@style/InputLineTextSearch"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_marginTop="24dp"
android:backgroundTint="@android:color/white"
android:drawableEnd="@drawable/ic_arrow_drop_down_black_24dp"
android:focusable="false"
android:hint="@string/Entrada"
android:inputType="text"
android:lines="1"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@color/verdnatura_pumpkin_orange"
android:textColorHint="@android:color/darker_gray"
android:visibility="gone" />
<ImageView
android:id="@+id/addEntry"
style="@style/InputLineTextSearch"
android:layout_width="48dp"
android:layout_height="48dp"
android:focusable="false"
android:visibility="gone"
app:srcCompat="@drawable/ic_add_black_24dp" />
</LinearLayout>
</LinearLayout>
<include
@ -107,5 +144,30 @@
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/splash_progress"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/verdnatura_black_8_alpha_6"
android:gravity="center"
android:orientation="vertical"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.airbnb.lottie.LottieAnimationView
android:layout_width="wrap_content"
android:layout_height="@dimen/verdnatura_logo_large_height"
app:lottie_autoPlay="true"
app:lottie_loop="true"
app:lottie_rawRes="@raw/orange_loading"
app:lottie_speed="2" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@ -89,6 +89,7 @@
android:layout_weight="1"
android:gravity="center"
android:text="@string/Cantidad"
android:visibility="gone"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2" />
@ -102,6 +103,7 @@
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2" />
</LinearLayout>
</com.google.android.material.textfield.TextInputLayout>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@ -12,9 +12,9 @@
android:id="@+id/textObs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/observations"
android:text="Observaciones : "
android:textColor="#FFF"
android:textSize="18sp"
android:textSize="18dp"
app:layout_constraintStart_toEndOf="@+id/main_toolbar"
app:layout_constraintTop_toBottomOf="@+id/main_toolbar" />
@ -23,7 +23,7 @@
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:hint="@string/observations"
android:hint="Observaciones"
android:inputType="textCapSentences|textMultiLine"
android:textColor="@color/verdnatura_white"
android:textColorHint="@android:color/tertiary_text_light"
@ -32,46 +32,51 @@
app:layout_constraintTop_toBottomOf="@+id/textObs" />
<TextView
android:id="@+id/textImage"
android:id="@+id/openPickerImages"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/images"
android:text="Imágenes : "
android:textColor="#FFF"
android:textSize="18sp"
android:textSize="18dp"
android:drawableEnd="@drawable/ic_add_black_24dp"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@+id/observations"
app:layout_constraintTop_toBottomOf="@+id/observations" />
<LinearLayout
android:id="@+id/textImages"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="@dimen/layout_margin_min"
android:layout_marginBottom="@dimen/layout_margin_1"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_margin_min"
android:paddingEnd="@dimen/layout_margin_min"
app:layout_constraintStart_toEndOf="@+id/textImage"
app:layout_constraintTop_toBottomOf="@+id/textImage">
android:paddingLeft="@dimen/layout_margin_min"
android:paddingRight="@dimen/layout_margin_min"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@+id/openPickerImages" >
<TextView
android:id="@+id/openPickerImages"
android:layout_width="0dp"
<TextView
android:id="@+id/openPickerImagesOld"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/addNew"
android:text="Añadir nueva..."
android:visibility="visible"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2" />
</LinearLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/listImagesRecycler"
android:layout_width="match_parent"
android:layout_height="550dp"
android:visibility="visible"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@+id/textImages"
app:layout_constraintTop_toBottomOf="@+id/textImages"
tools:listitem="@layout/item_image_row" />
tools:listitem="@layout/item_image_row"
/>
<include
@ -81,5 +86,25 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/splash_progress"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/verdnatura_black_8_alpha_6"
android:gravity="center"
android:orientation="vertical"
android:visibility="invisible"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp">
<com.airbnb.lottie.LottieAnimationView
android:layout_width="wrap_content"
android:layout_height="@dimen/verdnatura_logo_large_height"
app:lottie_autoPlay="true"
app:lottie_loop="true"
app:lottie_rawRes="@raw/orange_loading"
app:lottie_speed="2" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@ -19,7 +19,7 @@
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textinputlayout_username"
android:id="@+id/textinputlayout_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@android:color/darker_gray">
@ -27,235 +27,143 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" />
android:orientation="horizontal">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filter_itemFk"
style="@style/InputLineTextSearch"
android:layout_width="match_parent"
android:layout_weight="1.5"
android:backgroundTint="@android:color/white"
android:hint="Nombre o apellido"
android:inputType="text"
android:lines="1"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@color/verdnatura_white"
android:textColorHint="@android:color/darker_gray"
android:visibility="gone" />
<TextView
android:id="@+id/filter_department"
style="@style/InputLineTextSearch"
android:layout_width="match_parent"
android:layout_weight="1"
android:backgroundTint="@android:color/white"
android:drawableEnd="@drawable/ic_arrow_drop_down_black_24dp"
android:focusable="false"
android:hint="Embalajes"
android:inputType="text"
android:lines="1"
android:maxLines="1"
android:textAlignment="center"
android:textColor="@color/verdnatura_pumpkin_orange"
android:textColorHint="@android:color/darker_gray"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="@dimen/layout_margin_min"
android:layout_marginBottom="@dimen/layout_margin_1"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_margin_min"
android:paddingEnd="@dimen/layout_margin_min">
android:paddingLeft="@dimen/layout_margin_min"
android:paddingRight="@dimen/layout_margin_min">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.25"
android:gravity="center"
android:text="@string/description"
android:layout_weight="0.75"
android:text="Descripción"
android:textAlignment="viewStart"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2" />
<TextView
android:id="@+id/quantityPackaging"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@string/total"
android:text="@string/Cantidad"
android:visibility="gone"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_margin_min"
android:layout_marginBottom="@dimen/layout_margin_1"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_margin_min"
android:paddingEnd="@dimen/layout_margin_min">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Total"
android:textAlignment="textStart"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
tools:text="CC ROJO"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
tools:text="220"/>
<ImageButton
android:layout_width="25dp"
android:layout_height="25dp"
android:background="@drawable/ic_delete_black_24dp"
android:contentDescription="@string/trash"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_margin_min"
android:layout_marginBottom="@dimen/layout_margin_1"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_margin_min"
android:paddingEnd="@dimen/layout_margin_min">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
tools:text="DC"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
tools:text="30"/>
<ImageButton
android:layout_width="25dp"
android:layout_height="25dp"
android:background="@drawable/ic_delete_black_24dp"
android:contentDescription="@string/trash"/>
</LinearLayout>
<LinearLayout
android:id="@+id/layout_total_images"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_margin_min"
android:layout_marginBottom="@dimen/layout_margin_1"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_margin_min"
android:paddingEnd="@dimen/layout_margin_min">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/imageToSend"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
android:textStyle="bold" />
<TextView
android:id="@+id/totalImages"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
android:textStyle="bold"
tools:text="0"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/observationsTxt"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/layout_observations"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_margin_min"
android:layout_marginBottom="@dimen/layout_margin_1"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_margin_min"
android:paddingEnd="@dimen/layout_margin_min">
<TextView
android:id="@+id/observations"
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:hint="@string/observations"
android:textColor="@color/verdnatura_white"
android:textColorHint="@android:color/tertiary_text_light"
android:visibility="visible"
app:layout_constraintStart_toEndOf="@+id/layout_total_images"
app:layout_constraintTop_toBottomOf="@+id/layout_total_images" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_margin_min"
android:layout_marginBottom="@dimen/layout_margin_1"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_margin_min"
android:paddingEnd="@dimen/layout_margin_min">
<TextView
android:id="@+id/sign"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:text="@string/signPackaging"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_margin_min"
android:layout_marginBottom="@dimen/layout_margin_1"
android:orientation="horizontal"
android:paddingStart="@dimen/layout_margin_min"
android:paddingEnd="@dimen/layout_margin_min">
<com.simplify.ink.InkView
android:id="@+id/ink"
android:layout_width="wrap_content"
android:layout_height="102dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@color/verdnatura_white"
app:inkFlags="interpolation|responsiveWeight"
app:layout_constraintBottom_toTopOf="@+id/textView36"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/sign"
app:layout_constraintTop_toBottomOf="@+id/sign"
app:layout_constraintVertical_bias="0.0" />
android:paddingStart="@dimen/layout_margin_3"
android:textSize="@dimen/body2" />
</LinearLayout>
</com.google.android.material.textfield.TextInputLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/workermistake_recyclerview"
android:id="@+id/itemsupplier_recyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:visibility="gone"
tools:listitem="@layout/item_general_row" />
android:visibility="visible"
tools:listitem="@layout/item_itemsupplier_row" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="@dimen/h5"
android:layout_marginTop="@dimen/h5">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/attachImage"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
android:textStyle="bold" />
<TextView
android:id="@+id/totalImages"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="@color/verdnatura_pumpkin_orange"
android:textSize="@dimen/body2"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/observa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/observations"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/body2"
android:textStyle="bold" />
<TextView
android:id="@+id/observations"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/observations"
android:textColor="@color/verdnatura_pumpkin_orange"
android:textSize="@dimen/body2"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
@ -267,5 +175,30 @@
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/splash_progress"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/verdnatura_black_8_alpha_6"
android:gravity="center"
android:orientation="vertical"
android:visibility="invisible"
android:textSize="@dimen/body2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.airbnb.lottie.LottieAnimationView
android:layout_width="wrap_content"
android:layout_height="@dimen/verdnatura_logo_large_height"
app:lottie_autoPlay="true"
app:lottie_loop="true"
app:lottie_rawRes="@raw/orange_loading"
app:lottie_speed="2" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
>
@ -26,8 +27,7 @@
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_weight="1"
tools:srcCompat="@tools:sample/avatars"
android:contentDescription="@string/images"/>
tools:srcCompat="@tools:sample/avatars" />
<TextView
android:id="@+id/item_name"
@ -35,7 +35,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:layout_marginEnd="48dp"
android:layout_marginRight="48dp"
android:gravity="center_vertical"
android:text="@{item.name}"
android:textColor="@color/verdnatura_white"
@ -45,20 +45,19 @@
<ImageView
android:layout_marginStart="@dimen/default_layout_margin"
android:id="@+id/item_image_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/default_layout_margin"
android:layout_weight="1"
android:gravity="center_vertical"
android:scaleType="centerCrop"
android:layout_gravity="center"
android:visibility="visible"
android:src="@drawable/ic_history_black_24dp"
android:contentDescription="@string/update"/>
android:visibility="gone" />
<ImageView
android:layout_marginStart="@dimen/default_layout_margin"
android:layout_marginLeft="@dimen/default_layout_margin"
android:id="@+id/item_image_trash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -67,8 +66,7 @@
android:scaleType="centerCrop"
android:layout_gravity="center"
android:visibility="visible"
android:src="@drawable/ic_delete_black_24dp"
android:contentDescription="@string/trash"/>
android:src="@drawable/ic_delete_black_24dp" />
</LinearLayout>

View File

@ -31,7 +31,7 @@
android:gravity="center_vertical"
android:visibility="gone"
android:layout_gravity="center"
android:layout_marginStart="@dimen/pasilleros_margin_main_menu"
android:layout_marginLeft="@dimen/pasilleros_margin_main_menu"
tools:text="1" />
<TextView
@ -49,29 +49,27 @@
<EditText
android:id="@+id/item_subquantity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.25"
android:text="@{Integer.toString(item.quantityTotal)}"
android:hint="@string/total"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/h8"
android:gravity="center_vertical"
android:visibility="visible"
android:visibility="gone"
android:imeOptions="actionDone"
android:singleLine="true"
android:layout_gravity="center"
android:autofillHints="phone"
android:inputType="number"
tools:text="20" />
<TextView
android:id="@+id/item_quantity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/pasilleros_margin_main_menu"
android:layout_marginLeft="@dimen/pasilleros_margin_main_menu"
android:layout_weight="1.25"
android:layout_gravity="center"
android:text="@{Integer.toString(item.quantity)}"
android:text="@{Integer.toString(item.printedStickers)}"
android:textColor="@color/verdnatura_white"
android:textSize="@dimen/h8"
android:visibility="visible"
@ -79,28 +77,26 @@
<ImageView
android:layout_marginStart="@dimen/default_layout_margin"
android:id="@+id/item_image_update"
android:layout_marginLeft="@dimen/default_layout_margin"
android:id="@+id/item_add"
android:layout_width="24dp"
android:gravity="center_vertical"
android:layout_height="24dp"
android:scaleType="centerCrop"
android:layout_gravity="center"
android:visibility="visible"
android:src="@drawable/ic_history_black_24dp"
android:contentDescription="@string/selectAction"/>
android:src="@drawable/ic_add_black_24dp" />
<ImageView
android:layout_marginStart="@dimen/default_layout_margin"
android:id="@+id/item_image_trash"
android:layout_marginLeft="@dimen/default_layout_margin"
android:id="@+id/item_remove"
android:layout_width="24dp"
android:gravity="center_vertical"
android:layout_height="24dp"
android:scaleType="centerCrop"
android:layout_gravity="center"
android:visibility="visible"
android:src="@drawable/ic_delete_black_24dp"
android:contentDescription="@string/trash"/>
android:src="@drawable/ic_delete_black_24dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gestor Almacén</string>
<string name="Fecha">Fecha</string>
<string name="Cliente">Cliente</string>
@ -740,5 +739,19 @@
<string name="addWorkForm">Añadir…</string>
<string name="itemOlderInfo">¿Estás seguro que quieres parkinear la matricula %1$s? Tienes material mas antiguo en otra ubicación.</string>
<string name="checkItemShelvingDescrip">Revisión del carro</string>
<string name="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Vas a borrar la cantidad de la compra de la entrada</string>
<string name="quantityToReview">Cantidad a revisar</string>
<string name="selectEntryToFill">Selecciona entrada</string>
<string name="entryCreate">Crear entrada</string>
<string name="entryNew">Añadir nueva</string>
<string name="newEntry">Añadir nueva</string>
<string name="createEntry">Crear entrada</string>
<string name="createEntryDescrip">Va a crear una entrada para el proveedor seleccionado.</string>
<string name="warningEntry">Va a notificar la entrada al dpto de Logística</string>
<string name="sendEntry">Enviar entrada embalajes</string>
<string name="attachImage">"Imágenes: "</string>
</resources>

View File

@ -739,5 +739,17 @@
<string name="addWorkForm">Añadir…</string>
<string name="itemOlderInfo">¿Estás seguro que quieres parkinear la matricula %1$s? Tienes material mas antiguo en otra ubicación.</string>
<string name="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Borrar entrada</string>
<string name="quantityToReview">Cantidad a revisar</string>
<string name="selectEntryToFill">Selecciona entrada</string>
<string name="entryCreate">Crear entrada</string>
<string name="entryNew">Añadir nueva</string>
<string name="newEntry">Añadir nueva</string>
<string name="createEntry">Crear entrada</string>
<string name="createEntryDescrip">Va a crear una entrada para el proveedor seleccionado.</string>
<string name="warningEntry">Va a notificar la entrada al dpto de Logística</string>
<string name="sendEntry">Enviar entrada embalajes</string>
<string name="attachImage">"Imágenes: "</string>
</resources>

View File

@ -738,5 +738,17 @@
<string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir...</string>
<string name="itemOlderInfo">¿Estás seguro que quieres parkinear la matricula %1$s? Tienes material mas antiguo en otra ubicación.</string>
<string name="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Borrar entrada</string>
<string name="quantityToReview">Cantidad a revisar</string>
<string name="selectEntryToFill">Selecciona entrada</string>
<string name="entryCreate">Crear entrada</string>
<string name="entryNew">Añadir nueva</string>
<string name="newEntry">Añadir nueva</string>
<string name="createEntry">Crear entrada</string>
<string name="createEntryDescrip">Va a crear una entrada para el proveedor seleccionado.</string>
<string name="warningEntry">Va a notificar la entrada al dpto de Logística</string>
<string name="sendEntry">Enviar entrada embalajes</string>
<string name="attachImage">"Imágenes: "</string>
</resources>

View File

@ -738,5 +738,17 @@
<string name="imageToSend">Imágenes adjuntas:</string>
<string name="addWorkForm">Añadir…</string>
<string name="itemOlderInfo">¿Estás seguro que quieres parkinear la matricula %1$s? Tienes material mas antiguo en otra ubicación.</string>
<string name="quantityReviewed">Cantidad revisada a sumar/restar del total</string>
<string name="deleteEntryReviewed">Borrar entrada</string>
<string name="quantityToReview">Cantidad a revisar</string>
<string name="selectEntryToFill">Selecciona entrada</string>
<string name="entryCreate">Crear entrada</string>
<string name="entryNew">Añadir nueva</string>
<string name="createEntry">Crear entrada</string>
<string name="newEntry">Añadir nueva</string>
<string name="createEntryDescrip">Va a crear una entrada para el proveedor seleccionado.</string>
<string name="warningEntry">Va a notificar la entrada al dpto de Logística</string>
<string name="sendEntry">Enviar entrada embalajes</string>
<string name="attachImage">Imágenes: </string>
</resources>