DescripcionFragment.kt
7.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package com.focasoftware.deboinventariov20.ui.descripcionFragment
import android.content.Context
import android.content.SharedPreferences
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.input.input
import com.focasoftware.deboinventariov20.DB.DataBase.AppDb
import com.focasoftware.deboinventariov20.Model.Articles
import com.focasoftware.deboinventariov20.Model.InvBody
import com.focasoftware.deboinventariov20.R
import com.focasoftware.deboinventariov20.ui.inventario.InventarioFragment
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class DescripcionFragment : Fragment() {
private var artAcargar2: List<Articles>? = null
private var listArticulos2: List<Articles>? = null
lateinit var viewAdapter2: RecyclerView.Adapter<*>
private lateinit var viewManager2: RecyclerView.LayoutManager
private lateinit var rcDescripcion: RecyclerView
private var swipeBackground: ColorDrawable = ColorDrawable(Color.YELLOW)
private var cantidad = 0F
private var numeroInventario = 0
lateinit var navController: NavController
lateinit var sharedPreferences: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE)
arguments.apply {
artAcargar2 = requireArguments().getSerializable("ArrayDesc") as List<Articles>
numeroInventario = requireArguments().getInt("numeroInv")
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
navController = Navigation.findNavController(view)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
val v = inflater.inflate(R.layout.fragment_descripcion, container, false)
rcDescripcion = v.findViewById(R.id.rcDescripcion)
val btnSalir = v.findViewById<Button>(R.id.btnSalir)
IngresarRecicler(artAcargar2)
btnSalir.setOnClickListener {
VolverAinventario()
}
return v
}
fun IngresarRecicler(articulos: List<Articles>?) {
viewAdapter2 = DescripcionListAdapter(articulos)
viewManager2 = LinearLayoutManager(requireContext())
rcDescripcion.apply {
adapter = viewAdapter2
layoutManager = viewManager2
}
val itemTouchHelperCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {
override fun onMove(p0: RecyclerView, p1: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, position: Int) {
MaterialDialog(requireContext()).show {
title(R.string.sTitulo)
message(R.string.sMensajeEncontrado)
input { materialDialog, charSequence ->
cantidad = 0F
cantidad = charSequence.toString().toFloat()
}
// .input("Cantidad",1,,1,0,InputType.TYPE_CLASS_NUMBER,0,waitForPositiveButton = true,false,positiveButton ())
positiveButton(R.string.btnOk) {
dismiss()
var indice = 0
indice=viewHolder.layoutPosition
val body = InvBody(numeroInventario,
(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.sector,
// TODO PREPARO PARA MANDAR A CARGAR EN LA BD
(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codigo,
(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.descripcion,
cantidad.toString(),
(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codBar,
(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codOrigen,
(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.precio,
(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.precio,
(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.balanza,
(viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.depSn,
InventarioFragment().ObtenerFechaActual(),
InventarioFragment().ObtenerFechaActual())
InsertarArtEnDB(body)// TODO: MANDO A CARGAR A LA BASE DE DATOS
VolverAinventario()
}
}.cancelOnTouchOutside(false).cornerRadius(10F)
}
override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
val itemView = viewHolder.itemView
c.clipRect(0f, itemView.top.toFloat(), dX, itemView.bottom.toFloat())
if (dX > 0) {
c.drawColor(Color.RED)
} else if (dX < 0) {
// swipeBackground.setBounds(itemView.right+dX.toInt(),itemView.top,itemView.right,itemView.bottom)
c.drawColor(Color.YELLOW)
}
swipeBackground.draw(c)
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
}
}
val itemTouchHelper2 = ItemTouchHelper(itemTouchHelperCallback)
itemTouchHelper2.attachToRecyclerView(rcDescripcion)
}
fun InsertarArtEnDB(cuarpoInventario: InvBody) {
lifecycleScope.launch {
withContext(Dispatchers.IO) {
AppDb.getAppDb(requireActivity())!!.InvBodyDAO()!!.insertInvBody(cuarpoInventario)
}
}
}
fun VolverAinventario(){
val editor = sharedPreferences.edit()
editor?.putString("Inventario", numeroInventario.toString())
editor?.apply()
editor.commit()
navController.navigate(R.id.action_descripcionFragment_to_inventarioFragment)
}
}