Commit c8fab9ae774769deecb37266b87776de9f9e5058
0 parents
Exists in
master
first commit
Showing
109 changed files
with
5780 additions
and
0 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 109 files displayed.
.gitignore
File was created | 1 | *.iml | |
2 | .gradle | ||
3 | /local.properties | ||
4 | /.idea/caches | ||
5 | /.idea/libraries | ||
6 | /.idea/modules.xml | ||
7 | /.idea/workspace.xml | ||
8 | /.idea/navEditor.xml | ||
9 | /.idea/assetWizardSettings.xml | ||
10 | .DS_Store | ||
11 | /build | ||
12 | /captures | ||
13 | .externalNativeBuild | ||
14 | .cxx | ||
15 |
.idea/.name
File was created | 1 | DeboInventarioV2020 |
.idea/codeStyles/Project.xml
File was created | 1 | <component name="ProjectCodeStyleConfiguration"> | |
2 | <code_scheme name="Project" version="173"> | ||
3 | <JetCodeStyleSettings> | ||
4 | <option name="PACKAGES_TO_USE_STAR_IMPORTS"> | ||
5 | <value> | ||
6 | <package name="java.util" alias="false" withSubpackages="false" /> | ||
7 | <package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" /> | ||
8 | <package name="io.ktor" alias="false" withSubpackages="true" /> | ||
9 | </value> | ||
10 | </option> | ||
11 | <option name="PACKAGES_IMPORT_LAYOUT"> | ||
12 | <value> | ||
13 | <package name="" alias="false" withSubpackages="true" /> | ||
14 | <package name="java" alias="false" withSubpackages="true" /> | ||
15 | <package name="javax" alias="false" withSubpackages="true" /> | ||
16 | <package name="kotlin" alias="false" withSubpackages="true" /> | ||
17 | <package name="" alias="true" withSubpackages="true" /> | ||
18 | </value> | ||
19 | </option> | ||
20 | <option name="IF_RPAREN_ON_NEW_LINE" value="false" /> | ||
21 | <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> | ||
22 | </JetCodeStyleSettings> | ||
23 | <codeStyleSettings language="XML"> | ||
24 | <indentOptions> | ||
25 | <option name="CONTINUATION_INDENT_SIZE" value="4" /> | ||
26 | </indentOptions> | ||
27 | <arrangement> | ||
28 | <rules> | ||
29 | <section> | ||
30 | <rule> | ||
31 | <match> | ||
32 | <AND> | ||
33 | <NAME>xmlns:android</NAME> | ||
34 | <XML_ATTRIBUTE /> | ||
35 | <XML_NAMESPACE>^$</XML_NAMESPACE> | ||
36 | </AND> | ||
37 | </match> | ||
38 | </rule> | ||
39 | </section> | ||
40 | <section> | ||
41 | <rule> | ||
42 | <match> | ||
43 | <AND> | ||
44 | <NAME>xmlns:.*</NAME> | ||
45 | <XML_ATTRIBUTE /> | ||
46 | <XML_NAMESPACE>^$</XML_NAMESPACE> | ||
47 | </AND> | ||
48 | </match> | ||
49 | <order>BY_NAME</order> | ||
50 | </rule> | ||
51 | </section> | ||
52 | <section> | ||
53 | <rule> | ||
54 | <match> | ||
55 | <AND> | ||
56 | <NAME>.*:id</NAME> | ||
57 | <XML_ATTRIBUTE /> | ||
58 | <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> | ||
59 | </AND> | ||
60 | </match> | ||
61 | </rule> | ||
62 | </section> | ||
63 | <section> | ||
64 | <rule> | ||
65 | <match> | ||
66 | <AND> | ||
67 | <NAME>.*:name</NAME> | ||
68 | <XML_ATTRIBUTE /> | ||
69 | <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> | ||
70 | </AND> | ||
71 | </match> | ||
72 | </rule> | ||
73 | </section> | ||
74 | <section> | ||
75 | <rule> | ||
76 | <match> | ||
77 | <AND> | ||
78 | <NAME>name</NAME> | ||
79 | <XML_ATTRIBUTE /> | ||
80 | <XML_NAMESPACE>^$</XML_NAMESPACE> | ||
81 | </AND> | ||
82 | </match> | ||
83 | </rule> | ||
84 | </section> | ||
85 | <section> | ||
86 | <rule> | ||
87 | <match> | ||
88 | <AND> | ||
89 | <NAME>style</NAME> | ||
90 | <XML_ATTRIBUTE /> | ||
91 | <XML_NAMESPACE>^$</XML_NAMESPACE> | ||
92 | </AND> | ||
93 | </match> | ||
94 | </rule> | ||
95 | </section> | ||
96 | <section> | ||
97 | <rule> | ||
98 | <match> | ||
99 | <AND> | ||
100 | <NAME>.*</NAME> | ||
101 | <XML_ATTRIBUTE /> | ||
102 | <XML_NAMESPACE>^$</XML_NAMESPACE> | ||
103 | </AND> | ||
104 | </match> | ||
105 | <order>BY_NAME</order> | ||
106 | </rule> | ||
107 | </section> | ||
108 | <section> | ||
109 | <rule> | ||
110 | <match> | ||
111 | <AND> | ||
112 | <NAME>.*</NAME> | ||
113 | <XML_ATTRIBUTE /> | ||
114 | <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> | ||
115 | </AND> | ||
116 | </match> | ||
117 | <order>ANDROID_ATTRIBUTE_ORDER</order> | ||
118 | </rule> | ||
119 | </section> | ||
120 | <section> | ||
121 | <rule> | ||
122 | <match> | ||
123 | <AND> | ||
124 | <NAME>.*</NAME> | ||
125 | <XML_ATTRIBUTE /> | ||
126 | <XML_NAMESPACE>.*</XML_NAMESPACE> | ||
127 | </AND> | ||
128 | </match> | ||
129 | <order>BY_NAME</order> | ||
130 | </rule> | ||
131 | </section> | ||
132 | </rules> | ||
133 | </arrangement> | ||
134 | </codeStyleSettings> | ||
135 | <codeStyleSettings language="kotlin"> | ||
136 | <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> | ||
137 | <option name="RIGHT_MARGIN" value="200" /> | ||
138 | <option name="KEEP_LINE_BREAKS" value="false" /> | ||
139 | <option name="ALIGN_MULTILINE_PARAMETERS" value="false" /> | ||
140 | <option name="CALL_PARAMETERS_LPAREN_ON_NEXT_LINE" value="false" /> | ||
141 | <option name="CALL_PARAMETERS_RPAREN_ON_NEXT_LINE" value="false" /> | ||
142 | <option name="METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE" value="false" /> | ||
143 | <option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="false" /> | ||
144 | <option name="WRAP_ON_TYPING" value="1" /> | ||
145 | </codeStyleSettings> | ||
146 | </code_scheme> | ||
147 | </component> |
.idea/codeStyles/codeStyleConfig.xml
File was created | 1 | <component name="ProjectCodeStyleConfiguration"> | |
2 | <state> | ||
3 | <option name="USE_PER_PROJECT_SETTINGS" value="true" /> | ||
4 | </state> | ||
5 | </component> |
.idea/gradle.xml
File was created | 1 | <?xml version="1.0" encoding="UTF-8"?> | |
2 | <project version="4"> | ||
3 | <component name="GradleMigrationSettings" migrationVersion="1" /> | ||
4 | <component name="GradleSettings"> | ||
5 | <option name="linkedExternalProjectsSettings"> | ||
6 | <GradleProjectSettings> | ||
7 | <option name="testRunner" value="PLATFORM" /> | ||
8 | <option name="distributionType" value="DEFAULT_WRAPPED" /> | ||
9 | <option name="externalProjectPath" value="$PROJECT_DIR$" /> | ||
10 | <option name="gradleHome" value="C:/Gradle" /> | ||
11 | <option name="gradleJvm" value="11" /> | ||
12 | <option name="modules"> | ||
13 | <set> | ||
14 | <option value="$PROJECT_DIR$" /> | ||
15 | <option value="$PROJECT_DIR$/app" /> | ||
16 | </set> | ||
17 | </option> | ||
18 | <option name="resolveModulePerSourceSet" value="false" /> | ||
19 | </GradleProjectSettings> | ||
20 | </option> | ||
21 | </component> | ||
22 | </project> |
.idea/inspectionProfiles/Project_Default.xml
File was created | 1 | <component name="InspectionProjectProfileManager"> | |
2 | <profile version="1.0"> | ||
3 | <option name="myName" value="Project Default" /> | ||
4 | <inspection_tool class="AndroidUnresolvedRoomSqlReference" enabled="false" level="ERROR" enabled_by_default="false" /> | ||
5 | </profile> | ||
6 | </component> |
.idea/jarRepositories.xml
File was created | 1 | <?xml version="1.0" encoding="UTF-8"?> | |
2 | <project version="4"> | ||
3 | <component name="RemoteRepositoriesConfiguration"> | ||
4 | <remote-repository> | ||
5 | <option name="id" value="central" /> | ||
6 | <option name="name" value="Maven Central repository" /> | ||
7 | <option name="url" value="https://repo1.maven.org/maven2" /> | ||
8 | </remote-repository> | ||
9 | <remote-repository> | ||
10 | <option name="id" value="jboss.community" /> | ||
11 | <option name="name" value="JBoss Community repository" /> | ||
12 | <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> | ||
13 | </remote-repository> | ||
14 | <remote-repository> | ||
15 | <option name="id" value="BintrayJCenter" /> | ||
16 | <option name="name" value="BintrayJCenter" /> | ||
17 | <option name="url" value="https://jcenter.bintray.com/" /> | ||
18 | </remote-repository> | ||
19 | <remote-repository> | ||
20 | <option name="id" value="Google" /> | ||
21 | <option name="name" value="Google" /> | ||
22 | <option name="url" value="https://dl.google.com/dl/android/maven2/" /> | ||
23 | </remote-repository> | ||
24 | </component> | ||
25 | </project> |
.idea/misc.xml
File was created | 1 | <?xml version="1.0" encoding="UTF-8"?> | |
2 | <project version="4"> | ||
3 | <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="11" project-jdk-type="JavaSDK"> | ||
4 | <output url="file://$PROJECT_DIR$/build/classes" /> | ||
5 | </component> | ||
6 | <component name="ProjectType"> | ||
7 | <option name="id" value="Android" /> | ||
8 | </component> | ||
9 | </project> |
.idea/runConfigurations.xml
File was created | 1 | <?xml version="1.0" encoding="UTF-8"?> | |
2 | <project version="4"> | ||
3 | <component name="RunConfigurationProducerService"> | ||
4 | <option name="ignoredProducers"> | ||
5 | <set> | ||
6 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> | ||
7 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> | ||
8 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> | ||
9 | </set> | ||
10 | </option> | ||
11 | </component> | ||
12 | </project> |
Logica carga articulos con CB.docx
No preview for this file type
app/.gitignore
File was created | 1 | /build |
app/build.gradle
File was created | 1 | apply plugin: 'com.android.application' | |
2 | apply plugin: 'kotlin-android' | ||
3 | apply plugin: 'kotlin-android-extensions' | ||
4 | apply plugin: 'kotlin-kapt' | ||
5 | |||
6 | android { | ||
7 | compileSdkVersion 30 | ||
8 | buildToolsVersion "29.0.3" | ||
9 | |||
10 | defaultConfig { | ||
11 | applicationId "com.focasoftware.deboinventariov20" | ||
12 | minSdkVersion 26 | ||
13 | targetSdkVersion 30 | ||
14 | versionCode 1 | ||
15 | versionName "1.0" | ||
16 | |||
17 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | ||
18 | } | ||
19 | |||
20 | buildTypes { | ||
21 | release { | ||
22 | minifyEnabled false | ||
23 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | ||
24 | } | ||
25 | } | ||
26 | compileOptions { | ||
27 | sourceCompatibility JavaVersion.VERSION_1_8 | ||
28 | targetCompatibility JavaVersion.VERSION_1_8 | ||
29 | } | ||
30 | kotlinOptions { | ||
31 | jvmTarget = '1.8' | ||
32 | } | ||
33 | } | ||
34 | |||
35 | dependencies { | ||
36 | implementation fileTree(dir: "libs", include: ["*.jar"]) | ||
37 | implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" | ||
38 | implementation 'androidx.core:core-ktx:1.3.1' | ||
39 | implementation 'androidx.appcompat:appcompat:1.2.0' | ||
40 | implementation 'androidx.legacy:legacy-support-v4:1.0.0' | ||
41 | implementation 'com.google.android.material:material:1.2.0' | ||
42 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' | ||
43 | implementation 'androidx.navigation:navigation-fragment:2.3.0' | ||
44 | implementation 'androidx.navigation:navigation-ui:2.3.0' | ||
45 | implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' | ||
46 | implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0' | ||
47 | implementation 'androidx.navigation:navigation-ui-ktx:2.3.0' | ||
48 | implementation 'androidx.recyclerview:recyclerview:1.1.0' | ||
49 | testImplementation 'junit:junit:4.13' | ||
50 | androidTestImplementation 'androidx.test.ext:junit:1.1.1' | ||
51 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' | ||
52 | |||
53 | |||
54 | //Room | ||
55 | implementation 'androidx.room:room-ktx:2.2.5' | ||
56 | implementation "androidx.room:room-runtime:2.2.5" | ||
57 | kapt "androidx.room:room-compiler:2.2.5" | ||
58 | |||
59 | //Retrofit | ||
60 | implementation 'com.squareup.retrofit2:retrofit:2.9.0' | ||
61 | implementation 'com.google.code.gson:gson:2.8.6' | ||
62 | implementation 'com.squareup.retrofit2:converter-gson:2.9.0' | ||
63 | implementation 'com.squareup.okhttp3:logging-interceptor:4.8.1' | ||
64 | |||
65 | //Gson library | ||
66 | implementation "com.google.code.gson:gson:2.8.6" | ||
67 | annotationProcessor 'androidx.room:room-compiler:2.2.5' | ||
68 | |||
69 | |||
70 | |||
71 | implementation 'com.afollestad.material-dialogs:core:3.3.0' | ||
72 | implementation 'com.afollestad.material-dialogs:input:3.3.0' | ||
73 | } |
app/proguard-rules.pro
File was created | 1 | # Add project specific ProGuard rules here. | |
2 | # You can control the set of applied configuration files using the | ||
3 | # proguardFiles setting in build.gradle. | ||
4 | # | ||
5 | # For more details, see | ||
6 | # http://developer.android.com/guide/developing/tools/proguard.html | ||
7 | |||
8 | # If your project uses WebView with JS, uncomment the following | ||
9 | # and specify the fully qualified class name to the JavaScript interface | ||
10 | # class: | ||
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
12 | # public *; | ||
13 | #} | ||
14 | |||
15 | # Uncomment this to preserve the line number information for | ||
16 | # debugging stack traces. | ||
17 | #-keepattributes SourceFile,LineNumberTable | ||
18 | |||
19 | # If you keep the line number information, uncomment this to | ||
20 | # hide the original source file name. | ||
21 | #-renamesourcefileattribute SourceFile |
app/src/androidTest/java/com/focasoftware/deboinventariov20/ExampleInstrumentedTest.kt
File was created | 1 | package com.focasoftware.deboinventariov20 | |
2 | |||
3 | import androidx.test.platform.app.InstrumentationRegistry | ||
4 | import androidx.test.ext.junit.runners.AndroidJUnit4 | ||
5 | |||
6 | import org.junit.Test | ||
7 | import org.junit.runner.RunWith | ||
8 | |||
9 | import org.junit.Assert.* | ||
10 | |||
11 | /** | ||
12 | * Instrumented test, which will execute on an Android device. | ||
13 | * | ||
14 | * See [testing documentation](http://d.android.com/tools/testing). | ||
15 | */ | ||
16 | @RunWith(AndroidJUnit4::class) | ||
17 | class ExampleInstrumentedTest { | ||
18 | @Test | ||
19 | fun useAppContext() { | ||
20 | // Context of the app under test. | ||
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext | ||
22 | assertEquals("com.focasoftware.deboinventariov20", appContext.packageName) | ||
23 | } | ||
24 | } |
app/src/main/AndroidManifest.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | package="com.focasoftware.deboinventariov20"> | ||
4 | |||
5 | <uses-permission android:name="android.permission.VIBRATE" /> | ||
6 | <uses-permission android:name="android.permission.INTERNET" /> | ||
7 | |||
8 | <application | ||
9 | android:allowBackup="true" | ||
10 | android:icon="@mipmap/ic_launcher" | ||
11 | android:label="@string/app_name" | ||
12 | android:roundIcon="@mipmap/ic_launcher_round" | ||
13 | android:supportsRtl="true" | ||
14 | android:theme="@style/AppTheme" | ||
15 | android:usesCleartextTraffic="true"> | ||
16 | <activity | ||
17 | android:name=".MainActivity" | ||
18 | android:label="@string/app_name" | ||
19 | android:theme="@style/AppTheme.NoActionBar"> | ||
20 | <intent-filter> | ||
21 | <action android:name="android.intent.action.MAIN" /> | ||
22 | |||
23 | <category android:name="android.intent.category.LAUNCHER" /> | ||
24 | </intent-filter> | ||
25 | </activity> | ||
26 | </application> | ||
27 | |||
28 | </manifest> |
app/src/main/java/com/focasoftware/deboinventariov20/DB/Constans/Constans.kt
File was created | 1 | package com.focasoftware.deboinventario.ui.actualizacionMaestros | |
2 | |||
3 | class Constans { | ||
4 | |||
5 | companion object { | ||
6 | const val DB_NAME="DebInv" | ||
7 | const val TABLA_ART="Articles" | ||
8 | const val TABLA_INV_H="InvHead" | ||
9 | const val TABLA_INV_B="InvBody" | ||
10 | const val TABLA_SERV_INV="ServeInv" | ||
11 | } | ||
12 | |||
13 | } |
app/src/main/java/com/focasoftware/deboinventariov20/DB/DAO/ArticulosDAO.kt
File was created | 1 | package com.focasoftware.deboinventariov20.DB.DAO | |
2 | |||
3 | import androidx.room.* | ||
4 | import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans.Companion.TABLA_ART | ||
5 | import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans.Companion.TABLA_INV_B | ||
6 | import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans.Companion.TABLA_INV_H | ||
7 | import com.focasoftware.deboinventariov20.Model.* | ||
8 | |||
9 | @Dao | ||
10 | interface ArticulosDAO { | ||
11 | |||
12 | // TABLA ARTICULOS | ||
13 | @Insert(onConflict = OnConflictStrategy.REPLACE) | ||
14 | suspend fun insertArticulos(articulos: Articles?) | ||
15 | |||
16 | @Query("SELECT * FROM $TABLA_ART ORDER BY DES DESC") | ||
17 | suspend fun findAllArticulos(): List<Articles> | ||
18 | |||
19 | @Query("SELECT * FROM $TABLA_ART WHERE DEPSN=:dep AND DES LIKE '%' || :description || '%'") | ||
20 | suspend fun findArticuloByDesc(description: String?, dep: Int): List<Articles> | ||
21 | |||
22 | @Query("SELECT * FROM $TABLA_ART WHERE DEPSN=:dep AND CB LIKE :codBarra") | ||
23 | suspend fun findArticuloByCodBar(codBarra: String?, dep: Int): Articles? | ||
24 | |||
25 | @Query("DELETE FROM $TABLA_ART") | ||
26 | suspend fun deleteAllArticulos() | ||
27 | } | ||
28 | |||
29 | @Dao | ||
30 | interface InvHeadDAO { | ||
31 | @Insert() | ||
32 | suspend fun insertInvHead(invHead: InvHead?) | ||
33 | |||
34 | @Query("SELECT INV_NUM FROM $TABLA_INV_H ORDER BY INV_NUM DESC") | ||
35 | suspend fun findLastInv(): Int | ||
36 | |||
37 | @Query("DELETE FROM $TABLA_INV_H") | ||
38 | suspend fun deleteAllArticulos() | ||
39 | |||
40 | @Query("DELETE FROM $TABLA_INV_H WHERE INV_NUM=:inven") | ||
41 | suspend fun deleteinvHead(inven: Int) | ||
42 | |||
43 | @Query("SELECT * FROM $TABLA_INV_H ORDER BY INV_FEI") | ||
44 | suspend fun fetchAllInvHead(): List<InvHead> | ||
45 | } | ||
46 | |||
47 | @Dao | ||
48 | interface InvBodyDAO { | ||
49 | @Insert() | ||
50 | suspend fun insertInvBody(invBody: InvBody?) | ||
51 | |||
52 | @Query("DELETE FROM $TABLA_INV_B") | ||
53 | suspend fun deleteAllInvBody() | ||
54 | |||
55 | @Query("DELETE FROM $TABLA_INV_B WHERE INV_NUM =:inven") | ||
56 | suspend fun deleteInvBody(inven: Int) | ||
57 | |||
58 | @Query("UPDATE $TABLA_INV_B SET CANT=:cant WHERE SEC=:sec AND COD=:cod") | ||
59 | suspend fun UpdateInvBody(cant: Float, sec: String, cod: String) | ||
60 | |||
61 | @Query("SELECT * FROM $TABLA_INV_B WHERE INV_NUM =:inven ORDER BY INV_FEI DESC") | ||
62 | suspend fun fetchAllInvBody(inven:Int): List<InvBody> | ||
63 | } | ||
64 | @Dao | ||
65 | interface ServeInvDao { | ||
66 | @Insert(onConflict = OnConflictStrategy.REPLACE) | ||
67 | fun insertServer(servidor: ServeInv) | ||
68 | |||
69 | @Query("SELECT SER_NUM,SER_DESC, SER_DIR FROM ServeInv") | ||
70 | suspend fun findAllServers(): List<ServeInv> | ||
71 | } |
app/src/main/java/com/focasoftware/deboinventariov20/DB/DataBase/AppDb.kt
File was created | 1 | package com.focasoftware.deboinventariov20.DB.DataBase | |
2 | |||
3 | import android.content.Context | ||
4 | import androidx.room.Database | ||
5 | import androidx.room.Room | ||
6 | import androidx.room.RoomDatabase | ||
7 | import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans | ||
8 | import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans.Companion.TABLA_ART | ||
9 | import com.focasoftware.deboinventariov20.DB.DAO.* | ||
10 | import com.focasoftware.deboinventariov20.Model.Articles | ||
11 | import com.focasoftware.deboinventariov20.Model.InvBody | ||
12 | import com.focasoftware.deboinventariov20.Model.InvHead | ||
13 | import com.focasoftware.deboinventariov20.Model.ServeInv | ||
14 | |||
15 | |||
16 | @Database(entities = [Articles::class, InvHead::class, InvBody::class, ServeInv::class], version = 1, exportSchema = false) | ||
17 | abstract class AppDb : RoomDatabase() { | ||
18 | abstract fun ArticulosDAO(): ArticulosDAO? | ||
19 | abstract fun InvHeadDAO(): InvHeadDAO? | ||
20 | abstract fun InvBodyDAO(): InvBodyDAO? | ||
21 | abstract fun ServeInvDao(): ServeInvDao? | ||
22 | |||
23 | companion object { | ||
24 | private var INSTANCE: AppDb? = null | ||
25 | fun getAppDb(context: Context): AppDb? { | ||
26 | if (INSTANCE == null) { | ||
27 | INSTANCE = Room.databaseBuilder( | ||
28 | context.applicationContext, | ||
29 | AppDb::class.java, | ||
30 | Constans.DB_NAME | ||
31 | ) | ||
32 | .allowMainThreadQueries() | ||
33 | .build() | ||
34 | } | ||
35 | return INSTANCE | ||
36 | } | ||
37 | |||
38 | fun destroyInstance() { | ||
39 | INSTANCE = null | ||
40 | } | ||
41 | } | ||
42 | } |
app/src/main/java/com/focasoftware/deboinventariov20/MainActivity.kt
File was created | 1 | package com.focasoftware.deboinventariov20 | |
2 | |||
3 | import android.os.Bundle | ||
4 | import android.view.Menu | ||
5 | import com.google.android.material.floatingactionbutton.FloatingActionButton | ||
6 | import com.google.android.material.snackbar.Snackbar | ||
7 | import com.google.android.material.navigation.NavigationView | ||
8 | import androidx.navigation.findNavController | ||
9 | import androidx.navigation.ui.AppBarConfiguration | ||
10 | import androidx.navigation.ui.navigateUp | ||
11 | import androidx.navigation.ui.setupActionBarWithNavController | ||
12 | import androidx.navigation.ui.setupWithNavController | ||
13 | import androidx.drawerlayout.widget.DrawerLayout | ||
14 | import androidx.appcompat.app.AppCompatActivity | ||
15 | import androidx.appcompat.widget.Toolbar | ||
16 | |||
17 | class MainActivity : AppCompatActivity() { | ||
18 | |||
19 | private lateinit var appBarConfiguration: AppBarConfiguration | ||
20 | |||
21 | override fun onCreate(savedInstanceState: Bundle?) { | ||
22 | super.onCreate(savedInstanceState) | ||
23 | setContentView(R.layout.activity_main) | ||
24 | val toolbar: Toolbar = findViewById(R.id.toolbar) | ||
25 | setSupportActionBar(toolbar) | ||
26 | |||
27 | |||
28 | val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) | ||
29 | val navView: NavigationView = findViewById(R.id.nav_view) | ||
30 | val navController = findNavController(R.id.nav_host_fragment) | ||
31 | |||
32 | appBarConfiguration = AppBarConfiguration(setOf( | ||
33 | R.id.mainFragment2,R.id.inventarioFragment, R.id.actuaMaestrosFragment, R.id.configuracionFragment), drawerLayout) | ||
34 | setupActionBarWithNavController(navController, appBarConfiguration) | ||
35 | navView.setupWithNavController(navController) | ||
36 | } | ||
37 | |||
38 | override fun onCreateOptionsMenu(menu: Menu): Boolean { | ||
39 | // Inflate the menu; this adds items to the action bar if it is present. | ||
40 | menuInflater.inflate(R.menu.main, menu) | ||
41 | return true | ||
42 | } | ||
43 | |||
44 | override fun onSupportNavigateUp(): Boolean { | ||
45 | val navController = findNavController(R.id.nav_host_fragment) | ||
46 | return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp() | ||
47 | } | ||
48 | } |
app/src/main/java/com/focasoftware/deboinventariov20/Model/ProductosApi.kt
File was created | 1 | package com.focasoftware.deboinventariov20.Model | |
2 | |||
3 | import retrofit2.Response | ||
4 | import retrofit2.http.GET | ||
5 | |||
6 | interface ProductosApi { | ||
7 | |||
8 | @GET("api/articulos") | ||
9 | suspend fun getProductos(): Response<List<Productos>> | ||
10 | |||
11 | } |
app/src/main/java/com/focasoftware/deboinventariov20/Model/ProductosService.kt
File was created | 1 | package com.focasoftware.deboinventariov20.Model | |
2 | |||
3 | import retrofit2.Retrofit | ||
4 | import retrofit2.converter.gson.GsonConverterFactory | ||
5 | |||
6 | object ProductosService { | ||
7 | private val BASE_URL ="http://10.0.2.2:3000/" | ||
8 | //"http://10.231.45.83:3000/" | ||
9 | |||
10 | |||
11 | fun getProductosService(): ProductosApi { | ||
12 | return Retrofit.Builder() | ||
13 | .baseUrl(BASE_URL) | ||
14 | .addConverterFactory(GsonConverterFactory.create()) | ||
15 | .build() | ||
16 | .create(ProductosApi::class.java) | ||
17 | } | ||
18 | } |
app/src/main/java/com/focasoftware/deboinventariov20/Model/Tablas.kt
File was created | 1 | package com.focasoftware.deboinventariov20.Model | |
2 | |||
3 | import androidx.room.ColumnInfo | ||
4 | import androidx.room.Entity | ||
5 | import androidx.room.PrimaryKey | ||
6 | import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans.Companion.TABLA_ART | ||
7 | import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans.Companion.TABLA_INV_B | ||
8 | import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans.Companion.TABLA_INV_H | ||
9 | import com.focasoftware.deboinventario.ui.actualizacionMaestros.Constans.Companion.TABLA_SERV_INV | ||
10 | import com.google.gson.annotations.SerializedName | ||
11 | import java.io.Serializable | ||
12 | |||
13 | data class Productos( | ||
14 | @SerializedName("SEC")var sector: String?, | ||
15 | @SerializedName("COD") var codigo: String?, | ||
16 | @SerializedName("DESC") var descripcion: String?, | ||
17 | @SerializedName("CB") var codBar: String?, | ||
18 | @SerializedName("CBC") var codOrigen: String?, | ||
19 | @SerializedName("PRE_VTA") var precio: String?, | ||
20 | @SerializedName("PRE_COS") var costo: String?, | ||
21 | @SerializedName("BAL") var balanza: Int?, | ||
22 | @SerializedName("DEPSN") var depSn: Int?, | ||
23 | @SerializedName("FOTO") var imagen: String?) | ||
24 | |||
25 | @Entity(tableName = TABLA_ART) | ||
26 | data class Articles( | ||
27 | @ColumnInfo(name = "SEC") var sector: String?, | ||
28 | @ColumnInfo(name = "COD") var codigo: String?, | ||
29 | @ColumnInfo(name = "DES") var descripcion: String?, | ||
30 | @ColumnInfo(name = "CB") var codBar: String?, | ||
31 | @ColumnInfo(name = "CBC") var codOrigen: String?, | ||
32 | @ColumnInfo(name = "PRE_VTA") var precio: String?, | ||
33 | @ColumnInfo(name = "PRE_COS") var costo: String?, | ||
34 | @ColumnInfo(name = "BAL") var balanza: Int?, | ||
35 | @ColumnInfo(name = "DEPSN") var depSn: Int?, | ||
36 | @ColumnInfo(name = "FOTO") var imagen: String?) : Serializable { | ||
37 | @PrimaryKey(autoGenerate = true) | ||
38 | @ColumnInfo(name = "id") var id: Long = 0 | ||
39 | } | ||
40 | |||
41 | |||
42 | @Entity(tableName = TABLA_INV_H) | ||
43 | data class InvHead(@PrimaryKey(autoGenerate = true) @ColumnInfo(name = "INV_NUM") var invNum: Int, | ||
44 | @ColumnInfo(name = "INV_DESC") var descripcion: String?, | ||
45 | @ColumnInfo(name = "ESTADO") var estado: Int?, | ||
46 | @ColumnInfo(name = "INV_FEI") var fechaInicio: String?, | ||
47 | @ColumnInfo(name = "INV_FEF") var fechaFinal: String?, | ||
48 | // productos contados en el inventario | ||
49 | @ColumnInfo(name = "INV_PRODCONT") var prodContados: Long?, | ||
50 | @ColumnInfo(name = "INV_LUG") var lugar: Int?, | ||
51 | // Solo se ajustan los productos incluidos en el conteo=0 | ||
52 | // Ajusta productos no incluidos en el conteo con stock en cero=1 | ||
53 | @ColumnInfo(name = "PRO_NO_CONTA") var stDesc: Int?, | ||
54 | // Mostror stock en el sistema al momento de la descarga del maestro. | ||
55 | @ColumnInfo(name = "MOSTRAR_STOCK") var proNoCont: Int?) | ||
56 | |||
57 | |||
58 | @Entity(tableName = TABLA_INV_B) | ||
59 | data class InvBody( | ||
60 | @ColumnInfo(name = "INV_NUM") var invNum: Int, | ||
61 | @ColumnInfo(name = "SEC") var sector: String?, | ||
62 | @ColumnInfo(name = "COD") var codigo: String?, | ||
63 | @ColumnInfo(name = "DES") var descripcion: String?, | ||
64 | @ColumnInfo(name = "CANT") var cantTomada: String?, | ||
65 | @ColumnInfo(name = "CB") var codBar: String?, | ||
66 | @ColumnInfo(name = "CBC") var codOrigen: String?, | ||
67 | @ColumnInfo(name = "PRE_VTA") var precio: String?, | ||
68 | @ColumnInfo(name = "PRE_COS") var costo: String?, | ||
69 | @ColumnInfo(name = "BAL") var balanza: Int?, | ||
70 | @ColumnInfo(name = "DSN") var depSn: Int?, | ||
71 | @ColumnInfo(name = "INV_FEI") var fechaInicio: String?, | ||
72 | @ColumnInfo(name = "INV_FEF") var fechaFinal: String?):Serializable{ | ||
73 | @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") var id: Long = 0 | ||
74 | } | ||
75 | |||
76 | @Entity(tableName = TABLA_SERV_INV) | ||
77 | data class ServeInv( | ||
78 | |||
79 | @ColumnInfo(name = "SER_DESC") var descripcion: String?, @ColumnInfo(name = "SER_DIR") var direccion: String?, @ColumnInfo(name = "SER_PRE") var predeterminado: String?) : Serializable { | ||
80 | @PrimaryKey(autoGenerate = true) | ||
81 | @ColumnInfo(name = "SER_NUM") | ||
82 | var ID: Int = 0 | ||
83 | } | ||
84 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/actualizacionMaestros/ActuaMaestrosFragment.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.actualizacionMaestros | |
2 | |||
3 | import android.os.Bundle | ||
4 | import android.view.LayoutInflater | ||
5 | import android.view.View | ||
6 | import android.view.ViewGroup | ||
7 | import android.widget.Button | ||
8 | import androidx.fragment.app.Fragment | ||
9 | import com.focasoftware.deboinventariov20.DB.DataBase.AppDb | ||
10 | import com.focasoftware.deboinventariov20.Model.Articles | ||
11 | import com.focasoftware.deboinventariov20.Model.Productos | ||
12 | import com.focasoftware.deboinventariov20.Model.ProductosService | ||
13 | import com.focasoftware.deboinventariov20.R | ||
14 | import kotlinx.android.synthetic.main.fragment_actua_maestros.* | ||
15 | import kotlinx.coroutines.* | ||
16 | |||
17 | class ActuaMaestrosFragment : Fragment() { | ||
18 | |||
19 | var job: Job? = null | ||
20 | |||
21 | |||
22 | override fun onCreate(savedInstanceState: Bundle?) { | ||
23 | super.onCreate(savedInstanceState) | ||
24 | |||
25 | |||
26 | //mostrarArticulos() | ||
27 | } | ||
28 | |||
29 | |||
30 | override fun onCreateView( | ||
31 | inflater: LayoutInflater, container: ViewGroup?, | ||
32 | savedInstanceState: Bundle? | ||
33 | ): View? { | ||
34 | // Inflate the layout for this fragment | ||
35 | val v = inflater.inflate(R.layout.fragment_actua_maestros, container, false) | ||
36 | val bConfirmarAct = v.findViewById<Button>(R.id.btnConfirmarAct) | ||
37 | bConfirmarAct.setOnClickListener { | ||
38 | loading_view.visibility = View.VISIBLE | ||
39 | countriesList.text = "Obteniendo Maestros Aguarde,por favor." | ||
40 | obtenerArticulos() | ||
41 | } | ||
42 | return v | ||
43 | } | ||
44 | |||
45 | |||
46 | private fun obtenerArticulos() { | ||
47 | |||
48 | val productosService = ProductosService.getProductosService() | ||
49 | var index: Long = 1 | ||
50 | job = CoroutineScope(Dispatchers.IO).launch { | ||
51 | AppDb.getAppDb(requireActivity())!!.ArticulosDAO()!! | ||
52 | .deleteAllArticulos() | ||
53 | val response = productosService.getProductos() | ||
54 | if (response.isSuccessful) { | ||
55 | for (pro in response.body()!!) { | ||
56 | val artiAcargar = Articles( | ||
57 | pro.sector, | ||
58 | pro.codigo, | ||
59 | pro.descripcion, | ||
60 | pro.codBar, | ||
61 | pro.codOrigen, | ||
62 | pro.precio, | ||
63 | pro.costo, | ||
64 | pro.balanza, | ||
65 | pro.depSn, | ||
66 | pro.imagen | ||
67 | ) | ||
68 | index += index | ||
69 | |||
70 | AppDb.getAppDb(requireActivity())!!.ArticulosDAO()!! | ||
71 | .insertArticulos(artiAcargar) | ||
72 | } | ||
73 | withContext(Dispatchers.Main) { | ||
74 | countriesList.visibility = View.VISIBLE | ||
75 | countriesList.text = "¡Datos Importados Correctamente!" | ||
76 | loading_view.visibility = View.GONE | ||
77 | } | ||
78 | // | ||
79 | } else { | ||
80 | countriesList.text = "Error: ${response.message()}" | ||
81 | } | ||
82 | } | ||
83 | |||
84 | // withContext(Dispatchers.Main) { | ||
85 | // if (response.isSuccessful) { | ||
86 | // val call = WebService | ||
87 | // .instance | ||
88 | // ?.createService(WebServiceApi::class.java) | ||
89 | // ?.articulos | ||
90 | // call?.enqueue(object : Callback<List<productos?>?> { | ||
91 | // override fun onResponse( | ||
92 | // call: Call<List<productos?>?>, | ||
93 | // response: Response<List<productos?>?> | ||
94 | // ) { | ||
95 | // if (response.code() == 200) { | ||
96 | // for (i in response.body()!!.indices) { | ||
97 | // //AppDb.getAppDb(requireActivity())!!.ArticulosDAO()?.insertArticulos(response.body()!![i]) | ||
98 | // cargarArticulos(2, 500, "sfas", "66666","2,2", "2,2", false, false, "") | ||
99 | //// Log.d( | ||
100 | //// "TAG1", "Nombre Curso: " + response.body()!![i]?.sector | ||
101 | //// + "Codigo Profesor: " + response.body()!![i]?.descripcion | ||
102 | //// ) | ||
103 | // mostrarArticulos() | ||
104 | // } | ||
105 | // } else if (response.code() == 404) { | ||
106 | // Log.d("TAG1", "No hay cursos") | ||
107 | // } | ||
108 | // | ||
109 | // } | ||
110 | // | ||
111 | // override fun onFailure(call: Call<List<productos?>?>, t: Throwable) {} | ||
112 | // }) | ||
113 | } | ||
114 | |||
115 | fun mostrarArticulos() { | ||
116 | val Job = GlobalScope.launch { | ||
117 | var listArticulos: List<Articles>? = null | ||
118 | var temp: String = "" | ||
119 | listArticulos = | ||
120 | AppDb.getAppDb(requireActivity())?.ArticulosDAO()?.findAllArticulos() | ||
121 | if (listArticulos != null) { | ||
122 | |||
123 | for (i in listArticulos.indices) | ||
124 | temp += listArticulos[i].codigo.toString() | ||
125 | } | ||
126 | withContext(Dispatchers.Main) { | ||
127 | countriesList.visibility = View.VISIBLE | ||
128 | loading_view.visibility = View.GONE | ||
129 | countriesList?.text = temp | ||
130 | } | ||
131 | } | ||
132 | // for (professor in listArticulos!!) { | ||
133 | // editT.text= professor.id.toString() | ||
134 | // } | ||
135 | } | ||
136 | |||
137 | |||
138 | // fun observeViewModel() { | ||
139 | // | ||
140 | // val productosService = ProductosService.getProductosService() | ||
141 | // var job: Job? = null | ||
142 | // | ||
143 | // | ||
144 | // //countriesList.text="Procesando..." | ||
145 | // //countriesList.visibility = View.VISIBLE | ||
146 | // // GlobalScope1.launch(Dispatchers.IO) { | ||
147 | // val response = productosService.getProductos() | ||
148 | // if (response.isSuccessful) { | ||
149 | //// countriesList.layoutManager = LinearLayoutManager(context) | ||
150 | //// countriesList.itemAnimator = DefaultItemAnimator() | ||
151 | // | ||
152 | //// ProductAdapter.updateCountries(it) | ||
153 | // // cargarArticulos(response.body()) | ||
154 | // | ||
155 | // | ||
156 | // val artiAcargar: Articulos? = null | ||
157 | // var index: Long = 1 | ||
158 | // | ||
159 | // for (pro in response.body()!!) { | ||
160 | // //artiAcargar.id =index+1 | ||
161 | // artiAcargar!!.sector = pro.sector | ||
162 | // artiAcargar.codigo = pro.codigo | ||
163 | // artiAcargar.descripcion = pro.descripcion | ||
164 | // artiAcargar.codBar = pro.codBar | ||
165 | // artiAcargar.precio = pro.precio | ||
166 | // artiAcargar.costo = pro.costo | ||
167 | // artiAcargar.balanza = pro.balanza | ||
168 | // artiAcargar.depSn = pro.depSn | ||
169 | // artiAcargar.imagen = pro.imagen | ||
170 | // index += index | ||
171 | // | ||
172 | // AppDb.getAppDb(requireActivity())!!.ArticulosDAO()!! | ||
173 | // .insertArticulos(artiAcargar) | ||
174 | // } | ||
175 | // } | ||
176 | // // } | ||
177 | // | ||
178 | // //job.cancel() | ||
179 | // | ||
180 | // | ||
181 | // } | ||
182 | |||
183 | // fun cargarArticulos(Productos: List<Productos>?) { | ||
184 | // val artiAcargar: Articulos? = null | ||
185 | // var index: Long = 1 | ||
186 | // //val job4 = CoroutineScope(Dispatchers.Default).launch { | ||
187 | // for (pro in Productos!!) { | ||
188 | // //artiAcargar.id =index+1 | ||
189 | // artiAcargar!!.sector = pro.sector | ||
190 | // artiAcargar.codigo = pro.codigo | ||
191 | // artiAcargar.descripcion = pro.descripcion | ||
192 | // artiAcargar.codBar = pro.codBar | ||
193 | // artiAcargar.precio = pro.precio | ||
194 | // artiAcargar.costo = pro.costo | ||
195 | // artiAcargar.balanza = pro.balanza | ||
196 | // artiAcargar.depSn = pro.depSn | ||
197 | // artiAcargar.imagen = pro.imagen | ||
198 | // index += index | ||
199 | // | ||
200 | // AppDb.getAppDb(requireActivity())!!.ArticulosDAO()!! | ||
201 | // .insertArticulos(artiAcargar) | ||
202 | // } | ||
203 | // } | ||
204 | } | ||
205 | |||
206 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/configuracion/ConfiguracionFragment.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.configuracion | |
2 | |||
3 | import android.content.Context | ||
4 | import android.content.SharedPreferences | ||
5 | import android.os.Bundle | ||
6 | import androidx.fragment.app.Fragment | ||
7 | import android.view.LayoutInflater | ||
8 | import android.view.View | ||
9 | import android.view.ViewGroup | ||
10 | import android.widget.* | ||
11 | import androidx.navigation.fragment.findNavController | ||
12 | import com.focasoftware.deboinventariov20.R | ||
13 | import kotlinx.android.synthetic.main.fragment_configuracion.* | ||
14 | |||
15 | class ConfiguracionFragment : Fragment() { | ||
16 | |||
17 | lateinit var sharedPreferences: SharedPreferences | ||
18 | |||
19 | override fun onCreate(savedInstanceState: Bundle?) { | ||
20 | super.onCreate(savedInstanceState) | ||
21 | sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE) | ||
22 | } | ||
23 | |||
24 | override fun onCreateView( | ||
25 | inflater: LayoutInflater, container: ViewGroup?, | ||
26 | savedInstanceState: Bundle? | ||
27 | ): View? { | ||
28 | val v = inflater.inflate(R.layout.fragment_configuracion, container, false) | ||
29 | |||
30 | val etRuta = v.findViewById<EditText>(R.id.etRuta) | ||
31 | val btnGuardar = v.findViewById<Button>(R.id.btnGuardar) | ||
32 | val rbProInclu = v.findViewById<RadioButton>(R.id.rbProInclu) | ||
33 | val rbProNoInclu = v.findViewById<RadioButton>(R.id.rbProNoInclu) | ||
34 | val cbHabiLectura = v.findViewById<CheckBox>(R.id.cbHabiLectura) | ||
35 | val cbMostrarStock = v.findViewById<CheckBox>(R.id.cbMostrarStock) | ||
36 | val rbCodigoBarras = v.findViewById<RadioButton>(R.id.rbCodigoBarras) | ||
37 | val rbCodigoDebo = v.findViewById<RadioButton>(R.id.rbCodigoDebo) | ||
38 | val rbCodigoOrigen = v.findViewById<RadioButton>(R.id.rbCodigoOrigen) | ||
39 | val rbDeposito = v.findViewById<RadioButton>(R.id.rbDeposito) | ||
40 | val rbVentas = v.findViewById<RadioButton>(R.id.rbVentas) | ||
41 | val cbMostrarExistencia = v.findViewById<CheckBox>(R.id.cbMostrarExistencia) | ||
42 | val cbMostrarPrecio = v.findViewById<CheckBox>(R.id.cbMostrarPrecio) | ||
43 | val btnAgregarServidor = v.findViewById<Button>(R.id.btnAgregarServidor) | ||
44 | |||
45 | if (sharedPreferences.contains("etRuta")) etRuta.setText( | ||
46 | sharedPreferences.getString("etRuta", "").toString() | ||
47 | ) | ||
48 | |||
49 | if (sharedPreferences.contains("rbProInclu")) { | ||
50 | if (sharedPreferences.getString("rbProInclu", "").toString() == "0") { | ||
51 | rbProInclu.isChecked=false | ||
52 | rbProNoInclu.isChecked = true | ||
53 | } else if (sharedPreferences.getString("rbProInclu", "").toString() == "1") { | ||
54 | rbProInclu.isChecked = true | ||
55 | rbProNoInclu.isChecked = false | ||
56 | } | ||
57 | } else (sharedPreferences.getString("rbProInclu", "").toString() == "") | ||
58 | |||
59 | if (sharedPreferences.contains("rbProNoInclu")) { | ||
60 | if (sharedPreferences.getString("rbProNoInclu", "").toString() == "0") { | ||
61 | rbProNoInclu.isChecked = false | ||
62 | rbProInclu.isChecked = true | ||
63 | } else if (sharedPreferences.getString("rbProNoInclu", "").toString() == "1") { | ||
64 | rbProNoInclu.isChecked = true | ||
65 | rbProInclu.isChecked=false | ||
66 | } | ||
67 | } else (sharedPreferences.getString("rbProNoInclu", "").toString() == "") | ||
68 | |||
69 | |||
70 | if (sharedPreferences.contains("cbHabiLectura")) { | ||
71 | if (sharedPreferences.getString("cbHabiLectura", "").toString() == "0") { | ||
72 | cbHabiLectura.isChecked=false | ||
73 | } else if (sharedPreferences.getString("cbHabiLectura", "").toString() == "1") { | ||
74 | cbHabiLectura.isChecked = true | ||
75 | } | ||
76 | } else (sharedPreferences.getString("cbHabiLectura", "").toString() == "") | ||
77 | |||
78 | |||
79 | if (sharedPreferences.contains("cbMostrarStock")) { | ||
80 | if (sharedPreferences.getString("cbMostrarStock", "").toString() == "0") { | ||
81 | cbMostrarStock.isChecked = false | ||
82 | } else if (sharedPreferences.getString("cbMostrarStock", "").toString() == "1") { | ||
83 | cbMostrarStock.isChecked = true | ||
84 | } | ||
85 | } else (sharedPreferences.getString("cbMostrarStock", "").toString() == "") | ||
86 | |||
87 | |||
88 | if (sharedPreferences.contains("rbVentas")) { | ||
89 | if (sharedPreferences.getString("rbVentas", "").toString() == "0") { | ||
90 | rbVentas.isChecked=false | ||
91 | rbDeposito.isChecked = true | ||
92 | } else if (sharedPreferences.getString("rbVentas", "").toString() == "1") { | ||
93 | rbVentas.isChecked = true | ||
94 | rbDeposito.isChecked = false | ||
95 | } | ||
96 | } else (sharedPreferences.getString("rbVentas", "").toString() == "") | ||
97 | |||
98 | if (sharedPreferences.contains("rbDeposito")) { | ||
99 | if (sharedPreferences.getString("rbDeposito", "").toString() == "0") { | ||
100 | rbDeposito.isChecked = false | ||
101 | rbVentas.isChecked = true | ||
102 | } else if (sharedPreferences.getString("rbDeposito", "").toString() == "1") { | ||
103 | rbDeposito.isChecked = true | ||
104 | rbVentas.isChecked=false | ||
105 | } | ||
106 | } else (sharedPreferences.getString("rbDeposito", "").toString() == "") | ||
107 | |||
108 | |||
109 | |||
110 | if (sharedPreferences.contains("rbCodigoDebo")) { | ||
111 | if (sharedPreferences.getString("rbCodigoDebo", "").toString() == "0") { | ||
112 | rbCodigoDebo.isChecked=false | ||
113 | rbCodigoOrigen.isChecked = false | ||
114 | rbCodigoBarras.isChecked = false | ||
115 | } else if (sharedPreferences.getString("rbCodigoDebo", "").toString() == "1") { | ||
116 | rbCodigoDebo.isChecked = true | ||
117 | rbCodigoOrigen.isChecked = false | ||
118 | rbCodigoBarras.isChecked = false | ||
119 | } | ||
120 | } else (sharedPreferences.getString("rbCodigoDebo", "").toString() == "") | ||
121 | |||
122 | if (sharedPreferences.contains("rbCodigoOrigen")) { | ||
123 | if (sharedPreferences.getString("rbCodigoOrigen", "").toString() == "0") { | ||
124 | rbCodigoOrigen.isChecked = false | ||
125 | } else if (sharedPreferences.getString("rbCodigoOrigen", "").toString() == "1") { | ||
126 | rbCodigoOrigen.isChecked = true | ||
127 | } | ||
128 | } else (sharedPreferences.getString("rbCodigoOrigen", "").toString() == "") | ||
129 | if (sharedPreferences.contains("rbCodigoBarras")) { | ||
130 | if (sharedPreferences.getString("rbCodigoBarras", "").toString() == "0") { | ||
131 | rbCodigoBarras.isChecked = false | ||
132 | } else if (sharedPreferences.getString("rbCodigoBarras", "").toString() == "1") { | ||
133 | rbCodigoBarras.isChecked = true | ||
134 | } | ||
135 | } else (sharedPreferences.getString("rbCodigoBarras", "").toString() == "") | ||
136 | |||
137 | |||
138 | if (sharedPreferences.contains("cbMostrarExistencia")) { | ||
139 | if (sharedPreferences.getString("cbMostrarExistencia", "").toString() == "0") { | ||
140 | cbMostrarExistencia.isChecked=false | ||
141 | } else if (sharedPreferences.getString("cbMostrarExistencia", "").toString() == "1") { | ||
142 | cbMostrarExistencia.isChecked = true | ||
143 | } | ||
144 | } else (sharedPreferences.getString("cbMostrarExistencia", "").toString() == "") | ||
145 | |||
146 | |||
147 | if (sharedPreferences.contains("cbMostrarPrecio")) { | ||
148 | if (sharedPreferences.getString("cbMostrarPrecio", "").toString() == "0") { | ||
149 | cbMostrarPrecio.isChecked = false | ||
150 | } else if (sharedPreferences.getString("cbMostrarPrecio", "").toString() == "1") { | ||
151 | cbMostrarPrecio.isChecked = true | ||
152 | } | ||
153 | } else (sharedPreferences.getString("cbMostrarPrecio", "").toString() == "") | ||
154 | |||
155 | btnGuardar.setOnClickListener { | ||
156 | guardarPreferencias() | ||
157 | Toast.makeText(v.context, "Los Datos se guardaron correctamente", Toast.LENGTH_LONG) | ||
158 | .show() | ||
159 | } | ||
160 | btnAgregarServidor.setOnClickListener { | ||
161 | |||
162 | findNavController().navigate(R.id.servidoresFragment) | ||
163 | } | ||
164 | |||
165 | return v | ||
166 | } | ||
167 | |||
168 | fun guardarPreferencias() { | ||
169 | try { | ||
170 | val editor = sharedPreferences.edit() | ||
171 | |||
172 | if (etRuta.text.isNotEmpty()) editor?.putString("etRuta", etRuta.text.toString()) | ||
173 | |||
174 | if (rbProInclu.isChecked) editor?.putString("rbProInclu", "1") else editor?.putString("rbProInclu", "0") | ||
175 | if (rbProNoInclu.isChecked) editor?.putString("rbProNoInclu", "1") else editor?.putString("rbProNoInclu", "0") | ||
176 | |||
177 | if (cbHabiLectura.isChecked) editor?.putString( | ||
178 | "cbHabiLectura", "1" | ||
179 | ) else editor?.putString("cbHabiLectura", "0") | ||
180 | if (cbMostrarStock.isChecked) editor?.putString( | ||
181 | "cbMostrarStock", "1" | ||
182 | ) else editor?.putString("cbMostrarStock", "0") | ||
183 | if (rbVentas.isChecked) editor?.putString( | ||
184 | "rbVentas", "1" | ||
185 | ) else editor?.putString("rbVentas", "0") | ||
186 | if (rbDeposito.isChecked) editor?.putString( | ||
187 | "rbDeposito", "1" | ||
188 | ) else editor?.putString("rbDeposito", "0") | ||
189 | if (rbCodigoDebo.isChecked) editor?.putString( | ||
190 | "rbCodigoDebo", "1" | ||
191 | ) else editor?.putString("rbCodigoDebo", "0") | ||
192 | if (rbCodigoOrigen.isChecked) editor?.putString( | ||
193 | "rbCodigoOrigen", "1" | ||
194 | ) else editor?.putString("rbCodigoOrigen", "0") | ||
195 | if (rbCodigoBarras.isChecked) editor?.putString( | ||
196 | "rbCodigoBarras", "1" | ||
197 | ) else editor?.putString("rbCodigoBarras", "0") | ||
198 | if (cbMostrarExistencia.isChecked) editor?.putString( | ||
199 | "cbMostrarExistencia", "1" | ||
200 | ) else editor?.putString("cbMostrarExistencia", "0") | ||
201 | if (cbMostrarPrecio.isChecked) editor?.putString( | ||
202 | "cbMostrarPrecio", "1" | ||
203 | ) else editor?.putString("cbMostrarPrecio", "0") | ||
204 | |||
205 | editor?.apply() | ||
206 | editor.commit() | ||
207 | } catch (e: Exception) { | ||
208 | e.printStackTrace() | ||
209 | } | ||
210 | } | ||
211 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/dialogos/SingleChoiceAlertDialog.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.dialogos | |
2 | |||
3 | import android.app.AlertDialog | ||
4 | import android.app.Dialog | ||
5 | import android.os.Bundle | ||
6 | import androidx.fragment.app.DialogFragment | ||
7 | |||
8 | class SingleChoiceAlertDialog : DialogFragment() { | ||
9 | |||
10 | interface OnDialogSelectorListener { | ||
11 | fun onSelectedOption(dialogId: Int) | ||
12 | } | ||
13 | |||
14 | |||
15 | var mDialogSelectorCallback: OnDialogSelectorListener? = null | ||
16 | |||
17 | fun newInstance(title: String, values: Array<String>, selected: Int = -1): SingleChoiceAlertDialog? { | ||
18 | val dialog = SingleChoiceAlertDialog() | ||
19 | |||
20 | val args = Bundle() | ||
21 | args.putString("title", title) | ||
22 | args.putStringArray("values", values) | ||
23 | args.putInt("selected", selected) | ||
24 | dialog.arguments = args | ||
25 | |||
26 | return dialog | ||
27 | |||
28 | } | ||
29 | |||
30 | override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | ||
31 | |||
32 | return activity?.let { | ||
33 | |||
34 | val args = requireArguments() | ||
35 | val title = args.getString("title") | ||
36 | val values = args.getStringArray("values") | ||
37 | val selectedIndex = args.getInt("selected") | ||
38 | |||
39 | val builder: AlertDialog.Builder = AlertDialog.Builder(requireActivity()) | ||
40 | |||
41 | builder.setSingleChoiceItems(values, selectedIndex) { _, which -> | ||
42 | //val item = values?.get(which) | ||
43 | mDialogSelectorCallback?.onSelectedOption(which) | ||
44 | dialog?.dismiss() | ||
45 | } | ||
46 | builder.setTitle(title) | ||
47 | |||
48 | return builder.create() | ||
49 | } ?: throw IllegalStateException("Activity cannot be null") | ||
50 | } | ||
51 | |||
52 | |||
53 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/dialogos/dialogoLogin.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.dialogos | |
2 | |||
3 | import android.app.AlertDialog | ||
4 | import android.app.Dialog | ||
5 | import android.content.Context | ||
6 | import android.content.DialogInterface | ||
7 | import android.content.SharedPreferences | ||
8 | import android.os.Bundle | ||
9 | import androidx.fragment.app.DialogFragment | ||
10 | import com.focasoftware.deboinventariov20.R | ||
11 | |||
12 | class dialogoLogin() : DialogFragment() { | ||
13 | private lateinit var sharedPreferences: SharedPreferences | ||
14 | interface OnContinueCancelClickListener { | ||
15 | fun onPositiveClick() | ||
16 | fun onCancelClick() | ||
17 | } | ||
18 | // interface onDialogPositiveClick { | ||
19 | // abstract fun onDialogPositiveClick() | ||
20 | // | ||
21 | //// fun onDialogNegativeClick(dialog: DialogFragment) | ||
22 | // } | ||
23 | // var mDialogSelectorCallback: dialogoLogin.onDialogPositiveClick? = null | ||
24 | fun newInstance(s: String): dialogoLogin? { | ||
25 | val dialog = dialogoLogin() | ||
26 | |||
27 | val args = Bundle() | ||
28 | args.putString("title", s) | ||
29 | dialog.arguments = args | ||
30 | |||
31 | return dialog | ||
32 | } | ||
33 | override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { | ||
34 | return activity?.let { | ||
35 | val builder = AlertDialog.Builder(it) | ||
36 | // val args = requireArguments() | ||
37 | // val title = args.getString("title") | ||
38 | val inflater = requireActivity().layoutInflater; | ||
39 | |||
40 | builder.setView(inflater.inflate(R.layout.dialog_signin, null)) | ||
41 | .setTitle("El producto ya fue escaneado") | ||
42 | // .setMessage("La cantidad cargada es $title") | ||
43 | .setPositiveButton(android.R.string.ok) { _, _ -> | ||
44 | val listener = activity as OnContinueCancelClickListener? | ||
45 | listener!!.onPositiveClick() | ||
46 | } | ||
47 | .setNegativeButton(android.R.string.cancel) { _, _ -> | ||
48 | val listener = activity as OnContinueCancelClickListener? | ||
49 | listener!!.onCancelClick() | ||
50 | } | ||
51 | // builder.setPositiveButton(android.R.string.ok) { _, _ -> | ||
52 | // mDialogSelectorCallback!!.onDialogPositiveClick() | ||
53 | // } | ||
54 | // .setPositiveButton(R.string.btnOk, | ||
55 | // DialogInterface.OnClickListener { dialog, id -> | ||
56 | // mDialogSelectorCallback!!.onDialogPositiveClick() | ||
57 | // sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE) | ||
58 | // val editor = sharedPreferences.edit() | ||
59 | // editor?.putString("cantArtIng", R.id.username.toString()) | ||
60 | //// editor?.putString("TitArtIng", "") | ||
61 | // editor?.apply() | ||
62 | // editor.commit() | ||
63 | // }) | ||
64 | // .setNegativeButton(R.string.btnCancela, | ||
65 | // DialogInterface.OnClickListener { dialog, id -> | ||
66 | // getDialog()!!.cancel() | ||
67 | // }) | ||
68 | builder.create() | ||
69 | } ?: throw IllegalStateException("Activity cannot be null") | ||
70 | } | ||
71 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/BaseFragment.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | import android.os.Bundle | ||
4 | import androidx.fragment.app.Fragment | ||
5 | import kotlinx.coroutines.CoroutineScope | ||
6 | import kotlinx.coroutines.Dispatchers | ||
7 | import kotlinx.coroutines.Job | ||
8 | import kotlin.coroutines.CoroutineContext | ||
9 | |||
10 | abstract class BaseFragment : Fragment(), CoroutineScope { | ||
11 | |||
12 | |||
13 | lateinit var job: Job | ||
14 | |||
15 | override val coroutineContext: CoroutineContext | ||
16 | get() = job + Dispatchers.Main | ||
17 | |||
18 | override fun onCreate(savedInstanceState: Bundle?) { | ||
19 | super.onCreate(savedInstanceState) | ||
20 | job = Job() | ||
21 | } | ||
22 | |||
23 | override fun onDestroy() { | ||
24 | super.onDestroy() | ||
25 | job.cancel() | ||
26 | } | ||
27 | |||
28 | |||
29 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/DescripcionFragment.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | import android.content.Context | ||
4 | import android.content.SharedPreferences | ||
5 | import android.graphics.Canvas | ||
6 | import android.graphics.Color | ||
7 | import android.graphics.drawable.ColorDrawable | ||
8 | import android.os.Bundle | ||
9 | import android.view.LayoutInflater | ||
10 | import android.view.View | ||
11 | import android.view.ViewGroup | ||
12 | import android.widget.Button | ||
13 | import androidx.fragment.app.Fragment | ||
14 | import androidx.lifecycle.lifecycleScope | ||
15 | import androidx.navigation.NavController | ||
16 | import androidx.navigation.Navigation | ||
17 | import androidx.recyclerview.widget.ItemTouchHelper | ||
18 | import androidx.recyclerview.widget.LinearLayoutManager | ||
19 | import androidx.recyclerview.widget.RecyclerView | ||
20 | import com.afollestad.materialdialogs.MaterialDialog | ||
21 | import com.afollestad.materialdialogs.input.input | ||
22 | import com.focasoftware.deboinventariov20.DB.DataBase.AppDb | ||
23 | import com.focasoftware.deboinventariov20.Model.Articles | ||
24 | import com.focasoftware.deboinventariov20.Model.InvBody | ||
25 | import com.focasoftware.deboinventariov20.R | ||
26 | import kotlinx.coroutines.Dispatchers | ||
27 | import kotlinx.coroutines.launch | ||
28 | import kotlinx.coroutines.withContext | ||
29 | |||
30 | class DescripcionFragment : Fragment() { | ||
31 | private var artAcargar2: List<Articles>? = null | ||
32 | private var listArticulos2: List<Articles>? = null | ||
33 | lateinit var viewAdapter2: RecyclerView.Adapter<*> | ||
34 | private lateinit var viewManager2: RecyclerView.LayoutManager | ||
35 | private lateinit var rcDescripcion: RecyclerView | ||
36 | private var swipeBackground: ColorDrawable = ColorDrawable(Color.YELLOW) | ||
37 | private var cantidad = 0F | ||
38 | private var numeroInventario = 0 | ||
39 | lateinit var navController: NavController | ||
40 | lateinit var sharedPreferences: SharedPreferences | ||
41 | |||
42 | override fun onCreate(savedInstanceState: Bundle?) { | ||
43 | super.onCreate(savedInstanceState) | ||
44 | sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE) | ||
45 | arguments.apply { | ||
46 | artAcargar2 = requireArguments().getSerializable("ArrayDesc") as List<Articles> | ||
47 | numeroInventario = requireArguments().getInt("numeroInv") | ||
48 | } | ||
49 | } | ||
50 | |||
51 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
52 | super.onViewCreated(view, savedInstanceState) | ||
53 | navController = Navigation.findNavController(view) | ||
54 | } | ||
55 | |||
56 | override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { | ||
57 | // Inflate the layout for this fragment | ||
58 | val v = inflater.inflate(R.layout.fragment_descripcion, container, false) | ||
59 | rcDescripcion = v.findViewById(R.id.rcDescripcion) | ||
60 | val btnSalir = v.findViewById<Button>(R.id.btnSalir) | ||
61 | |||
62 | IngresarRecicler(artAcargar2) | ||
63 | |||
64 | btnSalir.setOnClickListener { | ||
65 | requireActivity().onBackPressed() | ||
66 | } | ||
67 | return v | ||
68 | } | ||
69 | |||
70 | fun IngresarRecicler(articulos: List<Articles>?) { | ||
71 | |||
72 | viewAdapter2 = DescripcionListAdapter(articulos) | ||
73 | viewManager2 = LinearLayoutManager(requireContext()) | ||
74 | |||
75 | rcDescripcion.apply { | ||
76 | adapter = viewAdapter2 | ||
77 | layoutManager = viewManager2 | ||
78 | } | ||
79 | val itemTouchHelperCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) { | ||
80 | override fun onMove(p0: RecyclerView, p1: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean { | ||
81 | return false | ||
82 | } | ||
83 | |||
84 | override fun onSwiped(viewHolder: RecyclerView.ViewHolder, position: Int) { | ||
85 | MaterialDialog(requireContext()).show { | ||
86 | title(R.string.sTitulo) | ||
87 | message(R.string.sMensajeEncontrado) | ||
88 | input { materialDialog, charSequence -> | ||
89 | cantidad = 0F | ||
90 | cantidad = charSequence.toString().toFloat() | ||
91 | } | ||
92 | // .input("Cantidad",1,,1,0,InputType.TYPE_CLASS_NUMBER,0,waitForPositiveButton = true,false,positiveButton ()) | ||
93 | positiveButton(R.string.btnOk) { | ||
94 | dismiss() | ||
95 | var indice = 0 | ||
96 | indice=viewHolder.layoutPosition | ||
97 | |||
98 | val body = InvBody(numeroInventario, | ||
99 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.sector, | ||
100 | // TODO PREPARO PARA MANDAR A CARGAR EN LA BD | ||
101 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codigo, | ||
102 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.descripcion, | ||
103 | cantidad.toString(), | ||
104 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codBar, | ||
105 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codOrigen, | ||
106 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.precio, | ||
107 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.precio, | ||
108 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.balanza, | ||
109 | (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.depSn, | ||
110 | InventarioFragment().ObtenerFechaActual(), | ||
111 | InventarioFragment().ObtenerFechaActual()) | ||
112 | InsertarArtEnDB(body)// TODO: MANDO A CARGAR A LA BASE DE DATOS | ||
113 | val editor = sharedPreferences.edit() | ||
114 | editor?.putString("Inventario", numeroInventario.toString()) | ||
115 | editor?.apply() | ||
116 | editor.commit() | ||
117 | navController.navigate(R.id.action_descripcionFragment_to_inventarioFragment) | ||
118 | } | ||
119 | }.cancelOnTouchOutside(false).cornerRadius(10F) | ||
120 | } | ||
121 | |||
122 | override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) { | ||
123 | super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive) | ||
124 | val itemView = viewHolder.itemView | ||
125 | |||
126 | c.clipRect(0f, itemView.top.toFloat(), dX, itemView.bottom.toFloat()) | ||
127 | |||
128 | if (dX > 0) { | ||
129 | |||
130 | c.drawColor(Color.RED) | ||
131 | } else if (dX < 0) { | ||
132 | // swipeBackground.setBounds(itemView.right+dX.toInt(),itemView.top,itemView.right,itemView.bottom) | ||
133 | c.drawColor(Color.YELLOW) | ||
134 | } | ||
135 | swipeBackground.draw(c) | ||
136 | super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive) | ||
137 | } | ||
138 | } | ||
139 | val itemTouchHelper2 = ItemTouchHelper(itemTouchHelperCallback) | ||
140 | itemTouchHelper2.attachToRecyclerView(rcDescripcion) | ||
141 | |||
142 | } | ||
143 | |||
144 | fun InsertarArtEnDB(cuarpoInventario: InvBody) { | ||
145 | lifecycleScope.launch { | ||
146 | withContext(Dispatchers.IO) { | ||
147 | AppDb.getAppDb(requireActivity())!!.InvBodyDAO()!!.insertInvBody(cuarpoInventario) | ||
148 | } | ||
149 | } | ||
150 | } | ||
151 | } | ||
152 | |||
153 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/DescripcionListAdapter.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | import android.view.LayoutInflater | ||
4 | import android.view.View | ||
5 | import android.view.ViewGroup | ||
6 | import androidx.recyclerview.widget.RecyclerView | ||
7 | import com.focasoftware.deboinventariov20.Model.Articles | ||
8 | import com.focasoftware.deboinventariov20.R | ||
9 | import kotlinx.android.synthetic.main.item.view.* | ||
10 | |||
11 | class DescripcionListAdapter(private val productos: List<Articles>?) : | ||
12 | RecyclerView.Adapter<DescripcionListAdapter.ItemsViewHolder>() { | ||
13 | internal var items2: List<Articles>? = null | ||
14 | |||
15 | init { | ||
16 | this.items2 = productos | ||
17 | } | ||
18 | |||
19 | override fun onCreateViewHolder(parent: ViewGroup, p1: Int) = ItemsViewHolder( | ||
20 | LayoutInflater.from(parent.context).inflate(R.layout.item_descripcion, parent, false) | ||
21 | ) | ||
22 | |||
23 | override fun getItemCount() = productos!!.size | ||
24 | |||
25 | override fun onBindViewHolder(holder: ItemsViewHolder, position: Int) { | ||
26 | when (holder) { | ||
27 | is ItemsViewHolder -> { | ||
28 | holder.bind(items2!![position]) | ||
29 | } | ||
30 | } | ||
31 | } | ||
32 | |||
33 | |||
34 | class ItemsViewHolder constructor(view: View) : RecyclerView.ViewHolder(view) { | ||
35 | |||
36 | val sector = view.tvSector | ||
37 | val codigo = view.tvCodigo | ||
38 | val descripcion = view.tvDescripcion | ||
39 | val codigoBarras = view.tvCodigoBarras | ||
40 | |||
41 | fun bind(pro: Articles) { | ||
42 | sector.text = pro.sector | ||
43 | codigo.text = pro.codigo | ||
44 | descripcion.text = pro.descripcion | ||
45 | codigoBarras.text = pro.codBar | ||
46 | } | ||
47 | } | ||
48 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/DialogPersoComplexCantidadModificacion.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | import android.app.AlertDialog | ||
4 | import android.app.Dialog | ||
5 | import android.content.Context | ||
6 | import android.text.Editable | ||
7 | import android.text.TextWatcher | ||
8 | import android.view.View | ||
9 | import android.view.View.OnFocusChangeListener | ||
10 | import android.widget.Button | ||
11 | import android.widget.EditText | ||
12 | import android.widget.ImageView | ||
13 | import android.widget.TextView | ||
14 | import com.focasoftware.deboinventariov20.R | ||
15 | |||
16 | /** | ||
17 | * Dialogo que permite mostrar una UI para modificar la cantidad de un articulo | ||
18 | * en las BD | ||
19 | * @author GuillermoR | ||
20 | */ | ||
21 | class DialogPersoComplexCantidadModificacion(context: Context?, | ||
22 | tipo_operacion: Int, | ||
23 | valor_inicial: Float, | ||
24 | listenerValidar: View.OnClickListener?, | ||
25 | listenerCancelar: View.OnClickListener?, | ||
26 | listenerReset: View.OnClickListener?) : Dialog(context!!), GestionarioTecladoVirtual { | ||
27 | /** | ||
28 | * TextView para mostrar el valor incical | ||
29 | */ | ||
30 | private val textV_valor_inicial: TextView | ||
31 | |||
32 | /** | ||
33 | * Text view para mostrar el valor previsional luego de modificar su cantidad | ||
34 | */ | ||
35 | private val textV_valor_previsional: TextView | ||
36 | |||
37 | /** | ||
38 | * EditText para almacenar el nuevo valor a ingresar | ||
39 | */ | ||
40 | private val editT_nuevo_valor: EditText | ||
41 | |||
42 | /** | ||
43 | * Boton para resetear la cantidad | ||
44 | */ | ||
45 | private val boton_reset: Button? = null | ||
46 | |||
47 | /** | ||
48 | * Variables accesorias | ||
49 | */ | ||
50 | private var VALOR_INICIO = 0f | ||
51 | private var TIPO_OPERACION = -1 | ||
52 | |||
53 | /** | ||
54 | * Devuleve el nuevo valor | ||
55 | * | ||
56 | * 1 Test para ver si el valor tiene formato a nombre, sino 0 | ||
57 | * | ||
58 | * 2 Para provocar la excepcion si s no es del tipo Integer | ||
59 | * | ||
60 | * 3 En caso de error, devolvemos 0 si se trata de "sumar" o "restar". | ||
61 | * En el caso del "modificar", devolvemos "" para poder | ||
62 | * restablecer un "No Tomado", o valor inicial sino | ||
63 | * | ||
64 | * @return | ||
65 | */ | ||
66 | fun get_nuevo_valor(): String { | ||
67 | //1 Test para ver si el valor tiene formato a nombre, sino 0: | ||
68 | val s = editT_nuevo_valor.text.toString() | ||
69 | return try { | ||
70 | //2 Para provocar la excepcion si s no es del tipo Integer | ||
71 | s.toFloat() | ||
72 | s | ||
73 | } catch (ex: Exception) { | ||
74 | VALOR_INICIO.toString() | ||
75 | } | ||
76 | } | ||
77 | |||
78 | fun valor_incorrecto(context: Context?) { | ||
79 | val show = AlertDialog.Builder(context).setTitle("Debo Inventario").setMessage("Valor ingresado incorrecto").show() | ||
80 | } | ||
81 | |||
82 | override fun showKeyboard(edit_text: EditText?) { | ||
83 | // TODO Auto-generated method stub | ||
84 | } | ||
85 | |||
86 | override fun hideKeyboard(edit_text: EditText?) { | ||
87 | // TODO Auto-generated method stub | ||
88 | } | ||
89 | |||
90 | /** | ||
91 | * Constructor completo, setea las UI y carga los handlers | ||
92 | * | ||
93 | * 1 Construccin del ttulo | ||
94 | * | ||
95 | * 2 Cargamos el layout y main layout | ||
96 | * | ||
97 | * 3 Actualizacin de los textos | ||
98 | * | ||
99 | * 4 Si estamos en el modo "MODIFICAR", | ||
100 | * se habilita la posibilidad de reestablecer el valor a No Tomado | ||
101 | * | ||
102 | * 5 EditTexts y handlers de los mismos | ||
103 | * | ||
104 | * 6 Botones y sus handlers | ||
105 | * | ||
106 | * @param context | ||
107 | * @param tipo_operacion | ||
108 | * @param valor_inicial | ||
109 | * @param listenerValidar | ||
110 | * @param listenerCancelar | ||
111 | * @param listenerReset | ||
112 | */ | ||
113 | init { | ||
114 | super.setTitle("Nuevo valor") | ||
115 | |||
116 | |||
117 | // System.out.println("::: DialogComple modificacion antes del switch"); | ||
118 | super.setContentView(R.layout.z_dialogpersocomplexcantidad_modificacion) | ||
119 | |||
120 | //3 Actualizacin de los textos: | ||
121 | textV_valor_inicial = super.findViewById<View>(R.id.Z_DIALOG_cantidad_actual) as TextView | ||
122 | textV_valor_inicial.text = valor_inicial.toString() | ||
123 | VALOR_INICIO = valor_inicial | ||
124 | TIPO_OPERACION = tipo_operacion | ||
125 | textV_valor_previsional = super.findViewById<View>(R.id.Z_DIALOG_cantidad_final) as TextView | ||
126 | textV_valor_previsional.text = valor_inicial.toString() | ||
127 | |||
128 | |||
129 | //5 EditTexts y handlers de los mismos | ||
130 | editT_nuevo_valor = super.findViewById<View>(R.id.Z_DIALOG_cantidad_nueva) as EditText | ||
131 | editT_nuevo_valor.onFocusChangeListener = OnFocusChangeListener { v, hasFocus -> showKeyboard(editT_nuevo_valor) } | ||
132 | editT_nuevo_valor.addTextChangedListener(object : TextWatcher { | ||
133 | override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} | ||
134 | override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} | ||
135 | override fun afterTextChanged(s: Editable) { | ||
136 | val new_val = 0f | ||
137 | var val_temp = 0f | ||
138 | val_temp = s.toString().toFloat() | ||
139 | textV_valor_previsional.text = val_temp.toString() | ||
140 | } | ||
141 | }) | ||
142 | val textV_operacion = super.findViewById<View>(R.id.Z_DIALOG_tipo_operacion) as TextView | ||
143 | var miTexto = "" | ||
144 | miTexto = "NUEVO VALOR: " | ||
145 | textV_operacion.text = miTexto | ||
146 | |||
147 | //6 Botones y sus handlers: | ||
148 | val boton_validar = super.findViewById<View>(R.id.Z_DIALOG_validar) as ImageView | ||
149 | val boton_cancelar = super.findViewById<View>(R.id.Z_DIALOG_cancelar) as ImageView | ||
150 | boton_validar.setOnClickListener(listenerValidar) | ||
151 | boton_cancelar.setOnClickListener(listenerCancelar) | ||
152 | } | ||
153 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/GestionarioTecladoVirtual.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | import android.widget.EditText | ||
4 | |||
5 | /** | ||
6 | * Interface que representa metodos para administrar (Mostrar u ocultar) el teclado | ||
7 | * virtual | ||
8 | * @author GuillermoR | ||
9 | */ | ||
10 | interface GestionarioTecladoVirtual { | ||
11 | /** | ||
12 | * Funcion a implementar para mostrar el teclado virtual sobre el editText parametro | ||
13 | * @param edit_text | ||
14 | */ | ||
15 | fun showKeyboard(edit_text: EditText?) | ||
16 | |||
17 | /** | ||
18 | * Funcion a implementar para ocultar el teclado virtual sobre el editText parametro | ||
19 | * @param edit_text | ||
20 | */ | ||
21 | fun hideKeyboard(edit_text: EditText?) | ||
22 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/InsertCant.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | import android.app.Dialog | ||
4 | import android.content.Context | ||
5 | import android.view.View | ||
6 | import android.widget.EditText | ||
7 | import com.focasoftware.deboinventariov20.R | ||
8 | |||
9 | class InsertCant(ctxt: Context) : Dialog(ctxt) { | ||
10 | |||
11 | private val editT: EditText | ||
12 | fun get_text(): String { | ||
13 | return editT.text.toString() | ||
14 | } | ||
15 | init { | ||
16 | super.setContentView(R.layout.ingresar_cantidad) | ||
17 | editT = super.findViewById<View>(R.id.etCantidad) as EditText | ||
18 | } | ||
19 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/InventarioFragment.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | import android.content.Context | ||
4 | import android.content.SharedPreferences | ||
5 | import android.graphics.Canvas | ||
6 | import android.graphics.Color | ||
7 | import android.graphics.drawable.Drawable | ||
8 | import android.os.Bundle | ||
9 | import android.view.KeyEvent | ||
10 | import android.view.LayoutInflater | ||
11 | import android.view.View | ||
12 | import android.view.ViewGroup | ||
13 | import android.widget.* | ||
14 | import androidx.core.content.ContextCompat | ||
15 | import androidx.core.os.bundleOf | ||
16 | import androidx.fragment.app.Fragment | ||
17 | import androidx.lifecycle.lifecycleScope | ||
18 | import androidx.navigation.NavController | ||
19 | import androidx.navigation.Navigation | ||
20 | import androidx.recyclerview.widget.ItemTouchHelper | ||
21 | import androidx.recyclerview.widget.LinearLayoutManager | ||
22 | import androidx.recyclerview.widget.RecyclerView | ||
23 | import com.afollestad.materialdialogs.MaterialDialog | ||
24 | import com.afollestad.materialdialogs.input.input | ||
25 | import com.focasoftware.deboinventariov20.DB.DataBase.AppDb | ||
26 | import com.focasoftware.deboinventariov20.Model.Articles | ||
27 | import com.focasoftware.deboinventariov20.Model.InvBody | ||
28 | import com.focasoftware.deboinventariov20.Model.InvHead | ||
29 | import com.focasoftware.deboinventariov20.R | ||
30 | import kotlinx.android.synthetic.main.fragment_inventario.* | ||
31 | import kotlinx.coroutines.* | ||
32 | import java.time.LocalDateTime | ||
33 | import java.time.format.DateTimeFormatter | ||
34 | import java.util.* | ||
35 | |||
36 | |||
37 | class InventarioFragment : Fragment() { | ||
38 | |||
39 | private lateinit var sharedPreferences: SharedPreferences | ||
40 | private var iArea: Int = 0 | ||
41 | private lateinit var invHead: InvHead | ||
42 | private lateinit var rcInventarios: RecyclerView | ||
43 | lateinit var viewAdapter: RecyclerView.Adapter<*> | ||
44 | private lateinit var viewManager: RecyclerView.LayoutManager | ||
45 | private lateinit var sChangeUpper: String | ||
46 | private var listArticulos = ArrayList<ItemsRecycler>() | ||
47 | lateinit var navController: NavController | ||
48 | var InventarioNuevo: Int = 0 | ||
49 | var fCant = 0F | ||
50 | private lateinit var deleteIcon: Drawable | ||
51 | // private var editTT: EditText? = null | ||
52 | // private var dialogoModificacion: DialogPersoComplexCantidadModificacion? = null | ||
53 | |||
54 | override fun onCreate(savedInstanceState: Bundle?) { | ||
55 | super.onCreate(savedInstanceState) | ||
56 | |||
57 | sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE) | ||
58 | if (sharedPreferences.contains("Inventario")) if (sharedPreferences.getString("Inventario", "").toString() != "-1") { | ||
59 | InventarioNuevo = sharedPreferences.getString("Inventario", "").toString().toInt() | ||
60 | val editor = sharedPreferences.edit() | ||
61 | editor?.putString("Inventario", "-1") | ||
62 | editor?.apply() | ||
63 | editor.commit() | ||
64 | } | ||
65 | } | ||
66 | |||
67 | override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { | ||
68 | val v = inflater.inflate(R.layout.fragment_inventario, container, false) | ||
69 | sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE) | ||
70 | val tCodigoBarras = v.findViewById<EditText>(R.id.etCodigoBarras) | ||
71 | rcInventarios = v.findViewById(R.id.rcInventarios) | ||
72 | val tvTitulo = v.findViewById<TextView>(R.id.tvTitulo) | ||
73 | val toggleButton = v.findViewById<ToggleButton>(R.id.toggleButton) | ||
74 | |||
75 | |||
76 | if (InventarioNuevo == 0) {// TODO: SI INVETNARIO NUEVO | ||
77 | GlobalScope.launch(Dispatchers.Main) { | ||
78 | //TODO: BUSCO EL ULTIMO INVENTARIO EN LA BD PARA PODER CREAR EL PROXIMO | ||
79 | InventarioNuevo = AppDb.getAppDb(requireActivity())!!.InvHeadDAO()!!.findLastInv() + 1 | ||
80 | SerchArea() | ||
81 | val descripInv: String = if (iArea == 0) "Inventario Ventas" else "Inventario Deposito" | ||
82 | //TODO: CREAMOS EL INVENTARIO EN LA CABECERA DEL INVENTARIO | ||
83 | invHead = InvHead(InventarioNuevo, descripInv, 1, ObtenerFechaActual(), ObtenerFechaActual(), 0L, iArea, AjusteProductos(), ProdNoCont()) | ||
84 | AppDb.getAppDb(requireActivity())!!.InvHeadDAO()!!.insertInvHead(invHead) | ||
85 | tvTitulo.text = "Inventario Dinamico" + " N° $InventarioNuevo" | ||
86 | } | ||
87 | } else {// TODO: SI VENGO DE FRAGMENT DESCRIPCION | ||
88 | CargarDeBdInventario(InventarioNuevo) | ||
89 | tvTitulo.text = "Inventario Dinamico" + " N° $InventarioNuevo" | ||
90 | } | ||
91 | |||
92 | tCodigoBarras.setOnKeyListener { _, keyCode, keyEvent -> | ||
93 | if (keyCode == KeyEvent.KEYCODE_ENTER && keyEvent.action == KeyEvent.ACTION_UP) { | ||
94 | sChangeUpper = tCodigoBarras.text.toString() | ||
95 | |||
96 | var indiceDelArtEncontrado = 0 | ||
97 | |||
98 | //TODO COMIENZA LA BUSQUEDA POR CODIGO DE BARRAS | ||
99 | if (toggleButton.isChecked) { | ||
100 | indiceDelArtEncontrado = buscoArtEnRv(sChangeUpper.toUpperCase(Locale.ROOT), 0)//TODO Si encuentra el articulo en el RV devuelve el indice | ||
101 | //TODO Si no lo encuentra devuelve -1 | ||
102 | if (indiceDelArtEncontrado != -1) { | ||
103 | if (swSumaUno!!.isChecked) { | ||
104 | fCant = 0F | ||
105 | fCant = listArticulos[indiceDelArtEncontrado].cantTomada | ||
106 | fCant += 1F | ||
107 | //TODO ACTUALIZO LA CANTIDAD EN LA BD | ||
108 | updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), fCant) | ||
109 | //TODO ACTUALIZO LA CANTIDAD EN EL RV | ||
110 | listArticulos[indiceDelArtEncontrado].cantTomada = fCant | ||
111 | viewAdapter.notifyDataSetChanged() | ||
112 | } else { | ||
113 | // val mDialogView = LayoutInflater.from(context).inflate(R.layout.login_dialog, null) | ||
114 | // val mBuilder = AlertDialog.Builder(context).setView(mDialogView).setTitle("Login Form").setCancelable(false) | ||
115 | // val mAlertDialog = mBuilder.show() | ||
116 | // mDialogView.dialogLoginBtn.setOnClickListener { | ||
117 | // mAlertDialog.dismiss() | ||
118 | // //get text from EditTexts of custom layout | ||
119 | // val name = mDialogView.dialogNameEt.text.toString() | ||
120 | // val email = mDialogView.dialogEmailEt.text.toString() | ||
121 | // val password = mDialogView.dialogPasswEt.text.toString() | ||
122 | // fCant = 0F | ||
123 | // fCant = name.toFloat() | ||
124 | // } | ||
125 | // mDialogView.dialogCancelBtn.setOnClickListener { | ||
126 | // mAlertDialog.dismiss() | ||
127 | // } | ||
128 | fCant = listArticulos[indiceDelArtEncontrado].cantTomada | ||
129 | MaterialDialog(requireContext()).show { | ||
130 | title(R.string.sTituloNueva) | ||
131 | message(R.string.sCantidadNueva) | ||
132 | input { materialDialog, charSequence -> | ||
133 | fCant = 0F | ||
134 | fCant = charSequence.toString().toFloat() | ||
135 | } | ||
136 | positiveButton(R.string.btnOk) { | ||
137 | //TODO ACTUALIZO CANTIADAD EN BD | ||
138 | updateCantidad(listArticulos[indiceDelArtEncontrado].sector.toString(), listArticulos[indiceDelArtEncontrado].codigo.toString(), fCant) | ||
139 | //TODO ACTUALIZO CANTIDAD EN RV | ||
140 | listArticulos[indiceDelArtEncontrado].cantTomada = fCant | ||
141 | viewAdapter.notifyDataSetChanged() | ||
142 | dismiss() | ||
143 | } | ||
144 | }.cancelOnTouchOutside(false).cornerRadius(10F) | ||
145 | } | ||
146 | |||
147 | } else if (indiceDelArtEncontrado == -1) {// no lo encontro en el RV, lo va a buscar en al BD | ||
148 | |||
149 | GlobalScope.launch(Dispatchers.Main) { | ||
150 | //TODO BUSCO EN BASE DE DATOS | ||
151 | val artEncontrado = buscarCBEnBD(sChangeUpper.toUpperCase(Locale.ROOT)) | ||
152 | ContinuarCargaCB(artEncontrado) | ||
153 | } | ||
154 | } | ||
155 | |||
156 | tCodigoBarras.focusable = View.FOCUSABLE | ||
157 | tCodigoBarras.setText("") | ||
158 | tCodigoBarras.selectAll() | ||
159 | return@setOnKeyListener true | ||
160 | |||
161 | |||
162 | } else {//TODO BUSQUEDA POR DESCRIPCION************************************************************************** | ||
163 | |||
164 | indiceDelArtEncontrado = buscoArtEnRv(sChangeUpper.toUpperCase(Locale.ROOT), 1) //TODO :Si encuentra el articulo en el RV devuelve el indice | ||
165 | //TODO Si no lo encuentra devuelve -1 | ||
166 | if (indiceDelArtEncontrado != -1) { | ||
167 | // if (swSumaUno!!.isChecked) { | ||
168 | // fCant = 0F | ||
169 | // fCant = listArticulos[indiceDelArtEncontrado].cantTomada | ||
170 | // fCant += 1F | ||
171 | // listArticulos[indiceDelArtEncontrado].cantTomada = fCant | ||
172 | // viewAdapter.notifyDataSetChanged() | ||
173 | // } else { | ||
174 | fCant = listArticulos[indiceDelArtEncontrado].cantTomada | ||
175 | MaterialDialog(requireContext()).show { | ||
176 | title(R.string.sTituloNueva) | ||
177 | message(R.string.sCantidadNueva) | ||
178 | input { materialDialog, charSequence -> | ||
179 | fCant = 0F | ||
180 | fCant = charSequence.toString().toFloat() | ||
181 | } | ||
182 | positiveButton(R.string.btnOk) { | ||
183 | listArticulos[indiceDelArtEncontrado].cantTomada = fCant | ||
184 | viewAdapter.notifyDataSetChanged() | ||
185 | dismiss() | ||
186 | } | ||
187 | }.cancelOnTouchOutside(false).cornerRadius(10F) | ||
188 | // } | ||
189 | |||
190 | } else if (indiceDelArtEncontrado == -1) {// TODO: no lo encontro en el RV, lo va a buscar en al BD | ||
191 | GlobalScope.launch(Dispatchers.Main) { | ||
192 | val artEncontrado = buscarDescEnBD(sChangeUpper.toUpperCase(Locale.ROOT)) | ||
193 | ContinuarCargaDesc(artEncontrado as ArrayList<Articles>) | ||
194 | } | ||
195 | } | ||
196 | tCodigoBarras.focusable = View.FOCUSABLE | ||
197 | tCodigoBarras.setText("") | ||
198 | tCodigoBarras.selectAll() | ||
199 | return@setOnKeyListener true | ||
200 | } | ||
201 | } | ||
202 | return@setOnKeyListener false | ||
203 | } | ||
204 | return v | ||
205 | } | ||
206 | |||
207 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
208 | super.onViewCreated(view, savedInstanceState) | ||
209 | navController = Navigation.findNavController(view) | ||
210 | etCodigoBarras.requestFocus() | ||
211 | |||
212 | btnBorrarInv.setOnClickListener { | ||
213 | MaterialDialog(requireContext()).show { | ||
214 | title(R.string.sTituloBorrarInv) | ||
215 | message(R.string.sMensajeBorrarInv) | ||
216 | positiveButton(R.string.btnOk) { | ||
217 | BorrarInvActual() | ||
218 | Toast.makeText(requireContext(), "El inventario $InventarioNuevo fue Borrado", Toast.LENGTH_LONG).show() | ||
219 | navController.navigate(R.id.action_inventarioFragment_to_mainFragment2) | ||
220 | InventarioNuevo = 0 | ||
221 | dismiss() | ||
222 | } | ||
223 | negativeButton { | ||
224 | dismiss() | ||
225 | } | ||
226 | }.cancelOnTouchOutside(false).cornerRadius(10F) | ||
227 | } | ||
228 | |||
229 | btnExportarInv.setOnClickListener { | ||
230 | MaterialDialog(requireContext()).show { | ||
231 | title(R.string.sTituloExportar) | ||
232 | message(R.string.sMensajeExportar) | ||
233 | positiveButton(R.string.btnOk) { | ||
234 | BorrarInvActual() | ||
235 | Toast.makeText(requireContext(), "El inventario $InventarioNuevo fue Exportado al Servidor", Toast.LENGTH_LONG).show() | ||
236 | navController.navigate(R.id.action_inventarioFragment_to_mainFragment2) | ||
237 | InventarioNuevo = 0 | ||
238 | dismiss() | ||
239 | } | ||
240 | negativeButton { | ||
241 | dismiss() | ||
242 | } | ||
243 | }.cancelOnTouchOutside(false).cornerRadius(10F) | ||
244 | } | ||
245 | } | ||
246 | |||
247 | private fun BorrarInvActual() { | ||
248 | lifecycleScope.launch { | ||
249 | withContext(Dispatchers.IO) { | ||
250 | AppDb.getAppDb(requireActivity())!!.InvHeadDAO()!!.deleteinvHead(InventarioNuevo) | ||
251 | AppDb.getAppDb(requireActivity())!!.InvBodyDAO()!!.deleteInvBody(InventarioNuevo) | ||
252 | } | ||
253 | } | ||
254 | } | ||
255 | |||
256 | private fun CargarDeBdInventario(ultimoInv: Int) { | ||
257 | GlobalScope.launch(Dispatchers.Main) { | ||
258 | val invbody = cargarInventario(ultimoInv) | ||
259 | for ((i, item) in invbody!!.withIndex()) { | ||
260 | val art = Articles(invbody[i].sector, | ||
261 | invbody[i].codigo, | ||
262 | invbody[i].descripcion, | ||
263 | invbody[i].codBar, | ||
264 | invbody[i].codOrigen, | ||
265 | invbody[i].precio, | ||
266 | invbody[i].costo, | ||
267 | invbody[i].balanza, | ||
268 | invbody[i].depSn, | ||
269 | invbody[i].costo) | ||
270 | cargarRecicler(art, invbody[i].cantTomada!!.toFloat()) | ||
271 | } | ||
272 | } | ||
273 | |||
274 | } | ||
275 | |||
276 | private fun ContinuarCargaDesc(artAcargar: ArrayList<Articles>) { | ||
277 | //TODO DESPUES DE INGRESAR LA DESCRIPCION Y DE BUSCAR LOS CAINCIDENCIAS EN LA BASE SE VA A MOSTRAR LAS MISMAS | ||
278 | //TODO SI LA CANTIDAD ENCONTRADA ES UNO, LO CARGO DIRECTAMENTE EN EL RV | ||
279 | |||
280 | if (artAcargar.isNotEmpty() || !artAcargar.isNullOrEmpty()) {// TODO: Si lo encuentra en la BD | ||
281 | // if (swSumaUno!!.isChecked) {// TODO: SI ESTA +1, PONE CANTIDAD 1 | ||
282 | if (artAcargar.size == 1) { // TODO: SI EN EL ARRAY SOLO HAY UN ITEM LO METE DIRECTAMENTE AL RV | ||
283 | fCant = 0F | ||
284 | fCant += 1F | ||
285 | // TODO PASO DEL ARRAY A UN ITEM PARA QUE LO CARGUE EN EL RV | ||
286 | val acargarPorDesc = Articles(artAcargar[0].sector, | ||
287 | artAcargar[0].codigo, | ||
288 | artAcargar[0].descripcion, | ||
289 | artAcargar[0].codBar, | ||
290 | artAcargar[0].codOrigen, | ||
291 | artAcargar[0].precio, | ||
292 | artAcargar[0].costo, | ||
293 | artAcargar[0].balanza, | ||
294 | artAcargar[0].depSn, | ||
295 | "") | ||
296 | // TODO LO ENVIO A CARGAR EN EL RV Y EN LA BD | ||
297 | cargarArtEnBd(acargarPorDesc, fCant) | ||
298 | cargarRecicler(acargarPorDesc, fCant) | ||
299 | } else { | ||
300 | var bundle = Bundle() | ||
301 | bundle = bundleOf("ArrayDesc" to artAcargar) | ||
302 | bundle.putInt("numeroInv", InventarioNuevo) | ||
303 | navController.navigate(R.id.action_inventarioFragment_to_descripcionFragment, bundle) | ||
304 | } | ||
305 | // } else {//SI NO ESTA +1 | ||
306 | // if (artAcargar.size == 1) { // TODO: SI EN EL ARRAY SOLO HAY UN ITEM LO METE DIRECTAMENTE AL RV | ||
307 | // fCant = listArticulos[0].cantTomada | ||
308 | // MaterialDialog(requireContext()).show { | ||
309 | // title(R.string.sTituloNueva) | ||
310 | // message(R.string.sCantidadNueva) | ||
311 | // input { materialDialog, charSequence -> | ||
312 | // fCant = 0F | ||
313 | // fCant = charSequence.toString().toFloat() | ||
314 | // } | ||
315 | // positiveButton(R.string.btnOk) { | ||
316 | // listArticulos[0].cantTomada = fCant | ||
317 | // viewAdapter.notifyDataSetChanged() | ||
318 | // dismiss() | ||
319 | // } | ||
320 | // }.cancelOnTouchOutside(false).cornerRadius(10F) | ||
321 | // // TODO PASO DEL ARRAY A UN ITEM PARA QUE LO CARGUE EN EL RV | ||
322 | // val acargarPorDesc = Articles(artAcargar[0].sector, | ||
323 | // artAcargar[0].codigo, | ||
324 | // artAcargar[0].descripcion, | ||
325 | // artAcargar[0].codBar, | ||
326 | // artAcargar[0].codOrigen, | ||
327 | // artAcargar[0].precio, | ||
328 | // artAcargar[0].costo, | ||
329 | // artAcargar[0].balanza, | ||
330 | // artAcargar[0].depSn, | ||
331 | // "") | ||
332 | // // TODO LO ENVIO A CARGAR EN EL RV Y EN LA BD | ||
333 | // cargarArtEnBd(acargarPorDesc, fCant) | ||
334 | // cargarRecicler(acargarPorDesc, fCant) | ||
335 | // } else { | ||
336 | // var bundle = Bundle() | ||
337 | // bundle = bundleOf("ArrayDesc" to artAcargar) | ||
338 | // bundle.putInt("numeroInv", InventarioNuevo) | ||
339 | // navController.navigate(R.id.action_inventarioFragment_to_descripcionFragment, bundle) | ||
340 | // } | ||
341 | // } | ||
342 | } else {//TODO si no lo encuentra en la BD | ||
343 | MaterialDialog(requireContext()).show { | ||
344 | title(R.string.sTitulo) | ||
345 | message(R.string.sMensaje) | ||
346 | positiveButton(R.string.btnOk) { | ||
347 | dismiss() | ||
348 | } | ||
349 | }.cancelOnTouchOutside(false).cornerRadius(10F) | ||
350 | } | ||
351 | |||
352 | } | ||
353 | |||
354 | private fun ContinuarCargaCB(artAcargar: Articles?) { | ||
355 | |||
356 | if (artAcargar != null) {//Si lo encuentra en la BD | ||
357 | |||
358 | if (swSumaUno!!.isChecked) {// SI ESTA +1, PONE CANTIDAD 1 | ||
359 | fCant = 0F | ||
360 | fCant += 1F | ||
361 | cargarArtEnBd(artAcargar, fCant) | ||
362 | cargarRecicler(artAcargar, fCant) | ||
363 | } else {//SI NO ESTA +1 PREGUNTA CANTIDAD | ||
364 | MaterialDialog(requireContext()).show { | ||
365 | title(R.string.sTitulo) | ||
366 | message(R.string.sMensajeEncontrado) | ||
367 | input { materialDialog, charSequence -> | ||
368 | fCant = 0F | ||
369 | fCant = charSequence.toString().toFloat() | ||
370 | } | ||
371 | // .input("Cantidad",1,,1,0,InputType.TYPE_CLASS_NUMBER,0,waitForPositiveButton = true,false,positiveButton ()) | ||
372 | positiveButton(R.string.btnOk) { | ||
373 | dismiss() | ||
374 | cargarArtEnBd(artAcargar, fCant) | ||
375 | cargarRecicler(artAcargar, fCant) | ||
376 | |||
377 | } | ||
378 | }.cancelOnTouchOutside(false).cornerRadius(10F) | ||
379 | } | ||
380 | } else {// TODO si no lo encuentra en la BD | ||
381 | MaterialDialog(requireContext()).show { | ||
382 | title(R.string.sTitulo) | ||
383 | message(R.string.sMensaje) | ||
384 | positiveButton(R.string.btnOk) { | ||
385 | // if (this.swSumaUno.isChecked) { | ||
386 | // swSumaUno.isChecked=false | ||
387 | // } | ||
388 | dismiss() | ||
389 | } | ||
390 | }.cancelOnTouchOutside(false).cornerRadius(10F) | ||
391 | } | ||
392 | } | ||
393 | |||
394 | suspend fun buscarCBEnBD(CodigoBarras: String): Articles? { | ||
395 | //TODO BUSQUEDA POR CODIGO DE BARRAS | ||
396 | var busqueda: Articles? = null | ||
397 | return GlobalScope.async(Dispatchers.IO) { | ||
398 | busqueda = AppDb.getAppDb(requireContext())!!.ArticulosDAO()!!.findArticuloByCodBar(CodigoBarras, iArea) | ||
399 | return@async busqueda | ||
400 | }.await() | ||
401 | } | ||
402 | |||
403 | suspend fun buscarDescEnBD(descripcion: String): List<Articles>? { | ||
404 | //TODO BUSQUEDA POR DESCRIPCION | ||
405 | var busqueda: List<Articles>? = null | ||
406 | return GlobalScope.async(Dispatchers.IO) { | ||
407 | busqueda = AppDb.getAppDb(requireContext())!!.ArticulosDAO()!!.findArticuloByDesc(descripcion, iArea) | ||
408 | return@async busqueda | ||
409 | }.await() | ||
410 | } | ||
411 | |||
412 | private fun buscoArtEnRv(codigoBarras: String, sTipoBusqueda: Int): Int { | ||
413 | var indice = 0 | ||
414 | var bEncontrado = false | ||
415 | if (sTipoBusqueda == 0) {//TODO BUSQUEDA POR CODIGO DE BARRAS | ||
416 | for (item in listArticulos) { | ||
417 | if (item.codigoBarras!!.toUpperCase(Locale.ROOT).contains(codigoBarras)) { | ||
418 | bEncontrado = true | ||
419 | break | ||
420 | } | ||
421 | indice += 1 | ||
422 | } | ||
423 | } else {//TODO BUSQUEDA POR DESCRIPCION | ||
424 | for (item in listArticulos) { | ||
425 | if (item.descripcion!!.toUpperCase(Locale.ROOT).contains(codigoBarras)) { | ||
426 | bEncontrado = true | ||
427 | break | ||
428 | } | ||
429 | indice += 1 | ||
430 | } | ||
431 | } | ||
432 | return if (bEncontrado) indice | ||
433 | else -1 | ||
434 | } | ||
435 | |||
436 | private fun cargarArtEnBd(articulos: Articles, cant: Float) { | ||
437 | val body = InvBody(InventarioNuevo,// TODO PREPARO PARA MANDAR A CARGAR EN LA BD | ||
438 | articulos.sector, | ||
439 | articulos.codigo, | ||
440 | articulos.descripcion, | ||
441 | cant.toString(), | ||
442 | articulos.codBar, | ||
443 | articulos.codOrigen, | ||
444 | articulos.precio, | ||
445 | articulos.precio, | ||
446 | articulos.balanza, | ||
447 | articulos.depSn, | ||
448 | ObtenerFechaActual(), | ||
449 | ObtenerFechaActual()) | ||
450 | InsertarArtEnDB(body)// TODO MANDO A CARGAR A LA BASE DE DATOS | ||
451 | } | ||
452 | |||
453 | fun cargarRecicler(articulos: Articles, cant: Float) { | ||
454 | |||
455 | //TODO CARGO EN LE RV | ||
456 | val item = ItemsRecycler(articulos.sector, articulos.codigo, articulos.descripcion, cant, articulos.codBar) | ||
457 | listArticulos.add(item) | ||
458 | |||
459 | viewAdapter = ProductosListAdapter(listArticulos) | ||
460 | viewManager =LinearLayoutManager(requireContext()) | ||
461 | deleteIcon = ContextCompat.getDrawable(requireContext(), R.drawable.borrar)!! | ||
462 | rcInventarios.apply { | ||
463 | adapter = viewAdapter | ||
464 | layoutManager = viewManager | ||
465 | } | ||
466 | val itemTouchHelperCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) { | ||
467 | override fun onMove(p0: RecyclerView, p1: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean { | ||
468 | return false | ||
469 | } | ||
470 | |||
471 | override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { | ||
472 | (viewAdapter as ProductosListAdapter).removeItem(viewHolder) | ||
473 | viewAdapter.notifyDataSetChanged() | ||
474 | } | ||
475 | |||
476 | override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) { | ||
477 | val itemView = viewHolder.itemView | ||
478 | val iconMargin = (itemView.height - deleteIcon.intrinsicHeight) / 2 | ||
479 | c.clipRect(0f, itemView.top.toFloat(), dX, itemView.bottom.toFloat()) | ||
480 | |||
481 | if (dX > 0) { | ||
482 | |||
483 | if (dX < c.width / 2) c.drawColor(Color.GREEN) | ||
484 | else c.drawColor(Color.RED) | ||
485 | deleteIcon.setBounds(itemView.left + iconMargin, itemView.top + iconMargin, itemView.left + iconMargin + deleteIcon.intrinsicWidth, itemView.bottom-iconMargin) | ||
486 | } else { | ||
487 | |||
488 | } | ||
489 | |||
490 | super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive) | ||
491 | deleteIcon.draw(c) | ||
492 | } | ||
493 | } | ||
494 | |||
495 | val itemTouchHelper = ItemTouchHelper(itemTouchHelperCallback) | ||
496 | itemTouchHelper.attachToRecyclerView(rcInventarios) | ||
497 | } | ||
498 | |||
499 | private fun ProdNoCont(): Int? { | ||
500 | var mostrarStock = 0 | ||
501 | if (sharedPreferences.contains("cbMostrarStock")) if (sharedPreferences.getString("cbMostrarStock", "").toString() == "1") mostrarStock = 1 | ||
502 | return mostrarStock | ||
503 | } | ||
504 | |||
505 | private fun AjusteProductos(): Int? { | ||
506 | var prodInclu = 0 | ||
507 | if (sharedPreferences.contains("rbProInclu")) if (sharedPreferences.getString("rbProInclu", "").toString() == "1") prodInclu = 1 | ||
508 | |||
509 | if (sharedPreferences.contains("rbProNoInclu")) if (sharedPreferences.getString("rbProNoInclu", "").toString() == "0") prodInclu = 0 | ||
510 | return prodInclu | ||
511 | } | ||
512 | |||
513 | private fun SerchArea() { | ||
514 | |||
515 | if (sharedPreferences.contains("rbVentas")) if (sharedPreferences.getString("rbVentas", "").toString() == "1") iArea = 0 | ||
516 | if (sharedPreferences.contains("rbDeposito")) if (sharedPreferences.getString("rbDeposito", "").toString() == "1") iArea = 1 | ||
517 | } | ||
518 | |||
519 | fun ObtenerFechaActual(): String? { | ||
520 | //TODO OBTENGO FECHA Y HORA ACTUAL PARA LA CABECERA DEL INVENTARIO Y PARA CADA ITEM QUE SE INSERTA EN LA BD | ||
521 | val current = LocalDateTime.now() | ||
522 | val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") | ||
523 | val dFechaHora = current.format(formatter) | ||
524 | return dFechaHora.toString() | ||
525 | } | ||
526 | |||
527 | fun InsertarArtEnDB(cuarpoInventario: InvBody) { | ||
528 | lifecycleScope.launch { | ||
529 | withContext(Dispatchers.IO) { | ||
530 | AppDb.getAppDb(requireActivity())!!.InvBodyDAO()!!.insertInvBody(cuarpoInventario) | ||
531 | } | ||
532 | } | ||
533 | } | ||
534 | |||
535 | fun updateCantidad(sector: String, codigo: String, cantidad: Float) { | ||
536 | lifecycleScope.launch { | ||
537 | withContext(Dispatchers.IO) { | ||
538 | AppDb.getAppDb(requireActivity())!!.InvBodyDAO()!!.UpdateInvBody(cantidad, sector, codigo) | ||
539 | } | ||
540 | } | ||
541 | } | ||
542 | |||
543 | suspend fun cargarInventario(inventario: Int): List<InvBody>? { | ||
544 | // var inventarios: List<InvBody>? = null | ||
545 | return GlobalScope.async(Dispatchers.IO) { | ||
546 | return@async AppDb.getAppDb(requireActivity())!!.InvBodyDAO()!!.fetchAllInvBody(inventario) | ||
547 | }.await() | ||
548 | } | ||
549 | } | ||
550 | |||
551 | |||
552 | |||
553 | |||
554 | |||
555 | |||
556 | |||
557 | |||
558 | |||
559 | |||
560 | |||
561 | |||
562 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/ItemDescripcion.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | data class ItemDescripcion(val sector: String?,val codigo: String?, val descripcion: String?, val codigoBarras: String?) |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/ItemsRecycler.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | data class ItemsRecycler(val sector: String?,val codigo: String?, val descripcion: String?, var cantTomada: Float, val codigoBarras: String?) |
app/src/main/java/com/focasoftware/deboinventariov20/ui/inventario/ProductosListAdapter.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.inventario | |
2 | |||
3 | import android.view.LayoutInflater | ||
4 | import android.view.View | ||
5 | import android.view.ViewGroup | ||
6 | import androidx.recyclerview.widget.RecyclerView | ||
7 | import com.focasoftware.deboinventariov20.R | ||
8 | import com.google.android.material.snackbar.Snackbar | ||
9 | import kotlinx.android.synthetic.main.item.view.* | ||
10 | |||
11 | |||
12 | class ProductosListAdapter(private val productos: ArrayList<ItemsRecycler>) : RecyclerView.Adapter<ProductosListAdapter.ItemsViewHolder>() { | ||
13 | private var removePosition: Int = 0 | ||
14 | private var removedItem: ItemsRecycler? = null | ||
15 | internal var items2: ArrayList<ItemsRecycler>? = null | ||
16 | |||
17 | init { | ||
18 | this.items2 = productos | ||
19 | } | ||
20 | |||
21 | override fun onCreateViewHolder(parent: ViewGroup, p1: Int) = ItemsViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item, parent, false)) | ||
22 | |||
23 | override fun getItemCount() = productos.size | ||
24 | |||
25 | override fun onBindViewHolder(holder: ItemsViewHolder, position: Int) { | ||
26 | when (holder) { | ||
27 | is ItemsViewHolder -> { | ||
28 | holder.bind(items2!![position]) | ||
29 | } | ||
30 | } | ||
31 | } | ||
32 | |||
33 | |||
34 | class ItemsViewHolder constructor(view: View) : RecyclerView.ViewHolder(view) { | ||
35 | |||
36 | val sector = view.tvSector | ||
37 | val codigo = view.tvCodigo | ||
38 | val descripcion = view.tvDescripcion | ||
39 | val cantCont = view.tvCantidad | ||
40 | val codigoBarras = view.tvCodigoBarras | ||
41 | |||
42 | fun bind(pro: ItemsRecycler) { | ||
43 | sector.text = pro.sector | ||
44 | codigo.text = pro.codigo | ||
45 | descripcion.text = pro.descripcion | ||
46 | cantCont.text = pro.cantTomada.toString() | ||
47 | codigoBarras.text = pro.codigoBarras | ||
48 | } | ||
49 | } | ||
50 | |||
51 | fun removeItem(viewHolder: RecyclerView.ViewHolder) { | ||
52 | removePosition = viewHolder.adapterPosition | ||
53 | removedItem = productos[viewHolder.adapterPosition] | ||
54 | |||
55 | productos.removeAt(viewHolder.adapterPosition) | ||
56 | notifyItemRemoved(viewHolder.adapterPosition) | ||
57 | |||
58 | Snackbar.make(viewHolder.itemView, "El articulo fue ${removedItem!!.descripcion} eliminado", Snackbar.LENGTH_LONG).setAction("Rehacer") { | ||
59 | productos.add(removePosition, removedItem!!) | ||
60 | notifyItemInserted(removePosition) | ||
61 | }.show() | ||
62 | } | ||
63 | // interface OnItemClickListener{ | ||
64 | // fun OnImageClick(position: Int) | ||
65 | // } | ||
66 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/main/InventarioListAdapter.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.main | |
2 | |||
3 | import android.view.LayoutInflater | ||
4 | import android.view.View | ||
5 | import android.view.ViewGroup | ||
6 | import androidx.recyclerview.widget.RecyclerView | ||
7 | import com.focasoftware.deboinventariov20.R | ||
8 | import com.google.android.material.snackbar.Snackbar | ||
9 | import kotlinx.android.synthetic.main.item.view.* | ||
10 | import kotlinx.android.synthetic.main.item_principal.view.* | ||
11 | import javax.sql.ConnectionEventListener | ||
12 | |||
13 | |||
14 | class InventarioListAdapter(private val productos: ArrayList<ItemInventario>, private val listener: OnItemClickListener) : RecyclerView.Adapter<InventarioListAdapter.ItemsViewHolder>() { | ||
15 | |||
16 | internal var items2: ArrayList<ItemInventario>? = null | ||
17 | |||
18 | init { | ||
19 | this.items2 = productos | ||
20 | } | ||
21 | |||
22 | override fun onCreateViewHolder(parent: ViewGroup, p1: Int) = ItemsViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_principal, parent, false)) | ||
23 | |||
24 | override fun getItemCount() = productos.size | ||
25 | |||
26 | override fun onBindViewHolder(holder: ItemsViewHolder, position: Int) { | ||
27 | val currentItem=productos[position] | ||
28 | holder.inventario.text=currentItem.inventario | ||
29 | } | ||
30 | |||
31 | inner class ItemsViewHolder constructor(view: View) : RecyclerView.ViewHolder(view),View.OnClickListener { | ||
32 | |||
33 | |||
34 | val inventario = view.inventario | ||
35 | init { | ||
36 | itemView.setOnClickListener(this) | ||
37 | } | ||
38 | override fun onClick(p0: View?) { | ||
39 | val position=adapterPosition | ||
40 | if (position!=RecyclerView.NO_POSITION) { | ||
41 | listener.OnItemClick(position) | ||
42 | } | ||
43 | } | ||
44 | } | ||
45 | |||
46 | interface OnItemClickListener{ | ||
47 | fun OnItemClick(position: Int) | ||
48 | } | ||
49 | } | ||
50 | |||
51 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/main/ItemPrincipal.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.main | |
2 | |||
3 | data class ItemInventario(val inventario: String?) |
app/src/main/java/com/focasoftware/deboinventariov20/ui/main/MainFragment.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.main | |
2 | |||
3 | import android.content.Context | ||
4 | import android.content.SharedPreferences | ||
5 | import android.os.Bundle | ||
6 | import android.view.LayoutInflater | ||
7 | import android.view.View | ||
8 | import android.view.ViewGroup | ||
9 | import androidx.core.view.get | ||
10 | import androidx.fragment.app.Fragment | ||
11 | import androidx.navigation.NavController | ||
12 | import androidx.navigation.Navigation | ||
13 | import androidx.recyclerview.widget.LinearLayoutManager | ||
14 | import androidx.recyclerview.widget.RecyclerView | ||
15 | import com.focasoftware.deboinventariov20.DB.DataBase.AppDb | ||
16 | import com.focasoftware.deboinventariov20.Model.InvHead | ||
17 | import com.focasoftware.deboinventariov20.R | ||
18 | import kotlinx.coroutines.Dispatchers | ||
19 | import kotlinx.coroutines.GlobalScope | ||
20 | import kotlinx.coroutines.async | ||
21 | import kotlinx.coroutines.launch | ||
22 | import java.util.* | ||
23 | |||
24 | class MainFragment : Fragment(), InventarioListAdapter.OnItemClickListener { | ||
25 | private lateinit var inventarios: List<InvHead> | ||
26 | private lateinit var rcInventario: RecyclerView | ||
27 | private lateinit var viewAdapter: RecyclerView.Adapter<*> | ||
28 | private lateinit var viewManager: RecyclerView.LayoutManager | ||
29 | private var listIvn = ArrayList<ItemInventario>() | ||
30 | private lateinit var navController: NavController | ||
31 | private lateinit var sharedPreferences: SharedPreferences | ||
32 | |||
33 | override fun onCreate(savedInstanceState: Bundle?) { | ||
34 | super.onCreate(savedInstanceState) | ||
35 | sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE) | ||
36 | |||
37 | |||
38 | } | ||
39 | |||
40 | override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { | ||
41 | val v = inflater.inflate(R.layout.fragment_main, container, false) | ||
42 | GlobalScope.launch(Dispatchers.Main) { | ||
43 | inventarios = buscarEnBDInvHead() | ||
44 | for ((i, item) in inventarios.withIndex()) { | ||
45 | val inv = InvHead(inventarios[i].invNum, | ||
46 | inventarios[i].descripcion, | ||
47 | inventarios[i].estado, | ||
48 | inventarios[i].fechaInicio, | ||
49 | inventarios[i].fechaFinal, | ||
50 | inventarios[i].prodContados, | ||
51 | inventarios[i].lugar, | ||
52 | inventarios[i].stDesc, | ||
53 | inventarios[i].proNoCont) | ||
54 | cargarRecicler(inv) | ||
55 | } | ||
56 | } | ||
57 | rcInventario = v.findViewById(R.id.rcInventario) | ||
58 | return v | ||
59 | } | ||
60 | |||
61 | suspend fun buscarEnBDInvHead(): List<InvHead> { | ||
62 | //TODO BUSQUEDA POR DESCRIPCION | ||
63 | var busqueda: List<InvHead> | ||
64 | return GlobalScope.async(Dispatchers.IO) { | ||
65 | busqueda = AppDb.getAppDb(requireContext())!!.InvHeadDAO()!!.fetchAllInvHead() | ||
66 | return@async busqueda | ||
67 | }.await() | ||
68 | } | ||
69 | |||
70 | fun cargarRecicler(inv: InvHead) { | ||
71 | var numero="" | ||
72 | //TODO CARGO EN LE RV | ||
73 | if (inv.invNum.toLong()<10) numero="0${inv.invNum.toLong()}" else numero=inv.invNum.toString() | ||
74 | val item = ItemInventario("Inventeario: ${numero} ${inv.descripcion} Fecha:${inv.fechaFinal} ") | ||
75 | //(articulos.sector, articulos.codigo, articulos.descripcion, cant, articulos.codBar) | ||
76 | listIvn.add(item) | ||
77 | |||
78 | viewAdapter = InventarioListAdapter(listIvn, this) | ||
79 | viewManager = LinearLayoutManager(requireContext()) | ||
80 | |||
81 | rcInventario.apply { | ||
82 | adapter = viewAdapter | ||
83 | layoutManager = viewManager | ||
84 | } | ||
85 | } | ||
86 | |||
87 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
88 | super.onViewCreated(view, savedInstanceState) | ||
89 | navController = Navigation.findNavController(view) | ||
90 | } | ||
91 | |||
92 | override fun OnItemClick(position: Int) { | ||
93 | val editor = sharedPreferences.edit() | ||
94 | var invSel:String = listIvn[position].inventario.toString() | ||
95 | invSel=invSel.substring(13, 15) | ||
96 | editor?.putString("Inventario", invSel) | ||
97 | editor?.apply() | ||
98 | editor.commit() | ||
99 | navController.navigate(R.id.action_mainFragment2_to_inventarioFragment) | ||
100 | |||
101 | } | ||
102 | } | ||
103 | |||
104 |
app/src/main/java/com/focasoftware/deboinventariov20/ui/servidores/AdapterServidores.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.servidores | |
2 | |||
3 | import android.content.Context | ||
4 | import android.view.LayoutInflater | ||
5 | import android.view.View | ||
6 | import android.view.ViewGroup | ||
7 | import androidx.recyclerview.widget.RecyclerView | ||
8 | import com.focasoftware.deboinventariov20.R | ||
9 | import kotlinx.android.synthetic.main.item_servidores.view.* | ||
10 | |||
11 | class AdapterServidores( | ||
12 | private val servidor: ArrayList<ItemsServidores>, | ||
13 | private var contexto: Context | ||
14 | ) : | ||
15 | RecyclerView.Adapter<AdapterServidores.ViewHolder>() { | ||
16 | |||
17 | |||
18 | class ViewHolder(var vista: View) : RecyclerView.ViewHolder(vista) { | ||
19 | fun bind(itemsServidores: ItemsServidores) { | ||
20 | vista.tvDescServidor.text = itemsServidores.descripcion | ||
21 | vista.tvDireccionServidor.text = itemsServidores.direccion | ||
22 | |||
23 | } | ||
24 | } | ||
25 | |||
26 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { | ||
27 | return ViewHolder( | ||
28 | LayoutInflater.from(parent.context).inflate(R.layout.item_servidores, parent, false) | ||
29 | ) | ||
30 | } | ||
31 | |||
32 | override fun getItemCount(): Int { | ||
33 | return servidor.size | ||
34 | } | ||
35 | |||
36 | override fun onBindViewHolder(holder: ViewHolder, position: Int) { | ||
37 | holder.bind(servidor[position]) | ||
38 | } | ||
39 | |||
40 | } |
app/src/main/java/com/focasoftware/deboinventariov20/ui/servidores/ItemsServidores.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.servidores | |
2 | |||
3 | data class ItemsServidores (val descripcion: String?, var direccion: String?, var predeterminado: String?) |
app/src/main/java/com/focasoftware/deboinventariov20/ui/servidores/ServidoresFragment.kt
File was created | 1 | package com.focasoftware.deboinventariov20.ui.servidores | |
2 | |||
3 | import android.os.Bundle | ||
4 | import androidx.fragment.app.Fragment | ||
5 | import android.view.LayoutInflater | ||
6 | import android.view.View | ||
7 | import android.view.ViewGroup | ||
8 | import android.widget.Button | ||
9 | import androidx.recyclerview.widget.DefaultItemAnimator | ||
10 | import androidx.recyclerview.widget.LinearLayoutManager | ||
11 | import androidx.recyclerview.widget.RecyclerView | ||
12 | import com.focasoftware.deboinventariov20.DB.DataBase.AppDb | ||
13 | import com.focasoftware.deboinventariov20.Model.ServeInv | ||
14 | import com.focasoftware.deboinventariov20.R | ||
15 | import kotlinx.android.synthetic.main.fragment_servidores.* | ||
16 | import kotlinx.coroutines.GlobalScope | ||
17 | import kotlinx.coroutines.launch | ||
18 | |||
19 | class ServidoresFragment : Fragment() { | ||
20 | val servidorNuevo = ArrayList<ItemsServidores>() | ||
21 | var index=0 | ||
22 | |||
23 | override fun onCreateView( | ||
24 | inflater: LayoutInflater, | ||
25 | container: ViewGroup?, | ||
26 | savedInstanceState: Bundle? | ||
27 | ): View? { | ||
28 | val v = inflater.inflate(R.layout.fragment_servidores, container, false) | ||
29 | |||
30 | val btnGuardarServidores = v.findViewById<Button>(R.id.btnGuardarServidores) | ||
31 | val rvServidores = v.findViewById<RecyclerView>(R.id.rvServidores) | ||
32 | |||
33 | rvServidores.layoutManager = LinearLayoutManager(context) | ||
34 | rvServidores.itemAnimator = DefaultItemAnimator() | ||
35 | |||
36 | btnGuardarServidores.setOnClickListener { | ||
37 | rvServidores.adapter = AdapterServidores(ingregarDatos(), requireContext()) | ||
38 | } | ||
39 | return v | ||
40 | } | ||
41 | |||
42 | fun ingregarDatos(): ArrayList<ItemsServidores> { | ||
43 | |||
44 | val item=ItemsServidores(etNombreServidor.text.toString(),etDireccionServidor.text.toString(),"0") | ||
45 | |||
46 | val servidor = ServeInv( | ||
47 | etNombreServidor.text.toString(), | ||
48 | etDireccionServidor.text.toString(), | ||
49 | "0") | ||
50 | index+=index | ||
51 | servidorNuevo.add(item) | ||
52 | val Job = GlobalScope.launch { | ||
53 | AppDb.getAppDb(requireActivity())!!.ServeInvDao()!!.insertServer(servidor) | ||
54 | } | ||
55 | |||
56 | return servidorNuevo | ||
57 | } | ||
58 | } |
app/src/main/res/anim/slide_in_left.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <set xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | |||
4 | </set> |
app/src/main/res/anim/slide_in_right.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <set xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | |||
4 | </set> |
app/src/main/res/anim/slide_out_left.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <set xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | |||
4 | </set> |
app/src/main/res/anim/slide_out_right.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <set xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | |||
4 | </set> |
app/src/main/res/drawable-v24/camera.xml
File was created | 1 | <vector android:height="50dp" android:tint="?attr/colorControlNormal" | |
2 | android:viewportHeight="24" android:viewportWidth="24" | ||
3 | android:width="50dp" xmlns:android="http://schemas.android.com/apk/res/android"> | ||
4 | <path android:fillColor="@android:color/white" android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0"/> | ||
5 | <path android:fillColor="@android:color/white" android:pathData="M9,2L7.17,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2L9,2zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z"/> | ||
6 | </vector> | ||
7 |
app/src/main/res/drawable-v24/configuracion.xml
File was created | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:width="24dp" | ||
3 | android:height="24dp" | ||
4 | android:viewportWidth="24" | ||
5 | android:viewportHeight="24" | ||
6 | android:tint="?attr/colorControlNormal"> | ||
7 | <path | ||
8 | android:fillColor="@android:color/white" | ||
9 | android:pathData="M10.82,12.49c0.02,-0.16 0.04,-0.32 0.04,-0.49 0,-0.17 -0.02,-0.33 -0.04,-0.49l1.08,-0.82c0.1,-0.07 0.12,-0.21 0.06,-0.32l-1.03,-1.73c-0.06,-0.11 -0.2,-0.15 -0.31,-0.11l-1.28,0.5c-0.27,-0.2 -0.56,-0.36 -0.87,-0.49l-0.2,-1.33c0,-0.12 -0.11,-0.21 -0.24,-0.21H5.98c-0.13,0 -0.24,0.09 -0.26,0.21l-0.2,1.32c-0.31,0.12 -0.6,0.3 -0.87,0.49l-1.28,-0.5c-0.12,-0.05 -0.25,0 -0.31,0.11l-1.03,1.73c-0.06,0.12 -0.03,0.25 0.07,0.33l1.08,0.82c-0.02,0.16 -0.03,0.33 -0.03,0.49 0,0.17 0.02,0.33 0.04,0.49l-1.09,0.83c-0.1,0.07 -0.12,0.21 -0.06,0.32l1.03,1.73c0.06,0.11 0.2,0.15 0.31,0.11l1.28,-0.5c0.27,0.2 0.56,0.36 0.87,0.49l0.2,1.32c0.01,0.12 0.12,0.21 0.25,0.21h2.06c0.13,0 0.24,-0.09 0.25,-0.21l0.2,-1.32c0.31,-0.12 0.6,-0.3 0.87,-0.49l1.28,0.5c0.12,0.05 0.25,0 0.31,-0.11l1.03,-1.73c0.06,-0.11 0.04,-0.24 -0.06,-0.32l-1.1,-0.83zM7,13.75c-0.99,0 -1.8,-0.78 -1.8,-1.75s0.81,-1.75 1.8,-1.75 1.8,0.78 1.8,1.75S8,13.75 7,13.75zM18,1.01L8,1c-1.1,0 -2,0.9 -2,2v3h2V5h10v14H8v-1H6v3c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2V3c0,-1.1 -0.9,-1.99 -2,-1.99z"/> | ||
10 | </vector> | ||
11 |
app/src/main/res/drawable-v24/ic_launcher_foreground.xml
File was created | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | xmlns:aapt="http://schemas.android.com/aapt" | ||
3 | android:width="108dp" | ||
4 | android:height="108dp" | ||
5 | android:viewportWidth="108" | ||
6 | android:viewportHeight="108"> | ||
7 | <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"> | ||
8 | <aapt:attr name="android:fillColor"> | ||
9 | <gradient | ||
10 | android:endX="85.84757" | ||
11 | android:endY="92.4963" | ||
12 | android:startX="42.9492" | ||
13 | android:startY="49.59793" | ||
14 | android:type="linear"> | ||
15 | <item | ||
16 | android:color="#44000000" | ||
17 | android:offset="0.0" /> | ||
18 | <item | ||
19 | android:color="#00000000" | ||
20 | android:offset="1.0" /> | ||
21 | </gradient> | ||
22 | </aapt:attr> | ||
23 | </path> | ||
24 | <path | ||
25 | android:fillColor="#FFFFFF" | ||
26 | android:fillType="nonZero" | ||
27 | android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z" | ||
28 | android:strokeWidth="1" | ||
29 | android:strokeColor="#00000000" /> | ||
30 | </vector> |
app/src/main/res/drawable-v24/inicio.xml
File was created | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:width="30dp" | ||
3 | android:height="30dp" | ||
4 | android:viewportWidth="30" | ||
5 | android:viewportHeight="30" | ||
6 | android:tint="?attr/colorControlNormal"> | ||
7 | <path | ||
8 | android:fillColor="@android:color/white" | ||
9 | android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/> | ||
10 | </vector> | ||
11 |
app/src/main/res/drawable-v24/inventario.xml
File was created | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:width="24dp" | ||
3 | android:height="24dp" | ||
4 | android:viewportWidth="24" | ||
5 | android:viewportHeight="24" | ||
6 | android:tint="?attr/colorControlNormal"> | ||
7 | <path | ||
8 | android:fillColor="@android:color/white" | ||
9 | android:pathData="M11,9h2L13,6h3L16,4h-3L13,1h-2v3L8,4v2h3v3zM7,18c-1.1,0 -1.99,0.9 -1.99,2S5.9,22 7,22s2,-0.9 2,-2 -0.9,-2 -2,-2zM17,18c-1.1,0 -1.99,0.9 -1.99,2s0.89,2 1.99,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM7.17,14.75l0.03,-0.12 0.9,-1.63h7.45c0.75,0 1.41,-0.41 1.75,-1.03l3.86,-7.01L19.42,4h-0.01l-1.1,2 -2.76,5L8.53,11l-0.13,-0.27L6.16,6l-0.95,-2 -0.94,-2L1,2v2h2l3.6,7.59 -1.35,2.45c-0.16,0.28 -0.25,0.61 -0.25,0.96 0,1.1 0.9,2 2,2h12v-2L7.42,15c-0.13,0 -0.25,-0.11 -0.25,-0.25z"/> | ||
10 | </vector> | ||
11 |
app/src/main/res/drawable-v24/logo.png
10.5 KB
app/src/main/res/drawable-v24/maestros.xml
File was created | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:width="24dp" | ||
3 | android:height="24dp" | ||
4 | android:viewportWidth="24" | ||
5 | android:viewportHeight="24" | ||
6 | android:tint="?attr/colorControlNormal"> | ||
7 | <path | ||
8 | android:fillColor="@android:color/white" | ||
9 | android:pathData="M17,1.01L7,1c-1.1,0 -2,0.9 -2,2v18c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2L19,3c0,-1.1 -0.9,-1.99 -2,-1.99zM17,19L7,19L7,5h10v14zM16,13h-3L13,8h-2v5L8,13l4,4 4,-4z"/> | ||
10 | </vector> | ||
11 |
app/src/main/res/drawable-v24/more.xml
File was created | 1 | <vector android:height="30dp" android:tint="?attr/colorControlNormal" | |
2 | android:viewportHeight="24" android:viewportWidth="24" | ||
3 | android:width="30dp" xmlns:android="http://schemas.android.com/apk/res/android"> | ||
4 | <path android:fillColor="@android:color/white" android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/> | ||
5 | </vector> | ||
6 |
app/src/main/res/drawable-v24/search.xml
File was created | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:width="24dp" | ||
3 | android:height="24dp" | ||
4 | android:viewportWidth="24" | ||
5 | android:viewportHeight="24" | ||
6 | android:tint="?attr/colorControlNormal"> | ||
7 | <path | ||
8 | android:fillColor="@android:color/white" | ||
9 | android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/> | ||
10 | </vector> | ||
11 |
app/src/main/res/drawable/borrar.xml
File was created | 1 | <vector android:height="40dp" android:tint="?attr/colorControlNormal" | |
2 | android:viewportHeight="24" android:viewportWidth="24" | ||
3 | android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android"> | ||
4 | <path android:fillColor="@android:color/white" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/> | ||
5 | </vector> | ||
6 |
app/src/main/res/drawable/ic_launcher_background.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | android:width="108dp" | ||
4 | android:height="108dp" | ||
5 | android:viewportWidth="108" | ||
6 | android:viewportHeight="108"> | ||
7 | <path | ||
8 | android:fillColor="#3DDC84" | ||
9 | android:pathData="M0,0h108v108h-108z" /> | ||
10 | <path | ||
11 | android:fillColor="#00000000" | ||
12 | android:pathData="M9,0L9,108" | ||
13 | android:strokeWidth="0.8" | ||
14 | android:strokeColor="#33FFFFFF" /> | ||
15 | <path | ||
16 | android:fillColor="#00000000" | ||
17 | android:pathData="M19,0L19,108" | ||
18 | android:strokeWidth="0.8" | ||
19 | android:strokeColor="#33FFFFFF" /> | ||
20 | <path | ||
21 | android:fillColor="#00000000" | ||
22 | android:pathData="M29,0L29,108" | ||
23 | android:strokeWidth="0.8" | ||
24 | android:strokeColor="#33FFFFFF" /> | ||
25 | <path | ||
26 | android:fillColor="#00000000" | ||
27 | android:pathData="M39,0L39,108" | ||
28 | android:strokeWidth="0.8" | ||
29 | android:strokeColor="#33FFFFFF" /> | ||
30 | <path | ||
31 | android:fillColor="#00000000" | ||
32 | android:pathData="M49,0L49,108" | ||
33 | android:strokeWidth="0.8" | ||
34 | android:strokeColor="#33FFFFFF" /> | ||
35 | <path | ||
36 | android:fillColor="#00000000" | ||
37 | android:pathData="M59,0L59,108" | ||
38 | android:strokeWidth="0.8" | ||
39 | android:strokeColor="#33FFFFFF" /> | ||
40 | <path | ||
41 | android:fillColor="#00000000" | ||
42 | android:pathData="M69,0L69,108" | ||
43 | android:strokeWidth="0.8" | ||
44 | android:strokeColor="#33FFFFFF" /> | ||
45 | <path | ||
46 | android:fillColor="#00000000" | ||
47 | android:pathData="M79,0L79,108" | ||
48 | android:strokeWidth="0.8" | ||
49 | android:strokeColor="#33FFFFFF" /> | ||
50 | <path | ||
51 | android:fillColor="#00000000" | ||
52 | android:pathData="M89,0L89,108" | ||
53 | android:strokeWidth="0.8" | ||
54 | android:strokeColor="#33FFFFFF" /> | ||
55 | <path | ||
56 | android:fillColor="#00000000" | ||
57 | android:pathData="M99,0L99,108" | ||
58 | android:strokeWidth="0.8" | ||
59 | android:strokeColor="#33FFFFFF" /> | ||
60 | <path | ||
61 | android:fillColor="#00000000" | ||
62 | android:pathData="M0,9L108,9" | ||
63 | android:strokeWidth="0.8" | ||
64 | android:strokeColor="#33FFFFFF" /> | ||
65 | <path | ||
66 | android:fillColor="#00000000" | ||
67 | android:pathData="M0,19L108,19" | ||
68 | android:strokeWidth="0.8" | ||
69 | android:strokeColor="#33FFFFFF" /> | ||
70 | <path | ||
71 | android:fillColor="#00000000" | ||
72 | android:pathData="M0,29L108,29" | ||
73 | android:strokeWidth="0.8" | ||
74 | android:strokeColor="#33FFFFFF" /> | ||
75 | <path | ||
76 | android:fillColor="#00000000" | ||
77 | android:pathData="M0,39L108,39" | ||
78 | android:strokeWidth="0.8" | ||
79 | android:strokeColor="#33FFFFFF" /> | ||
80 | <path | ||
81 | android:fillColor="#00000000" | ||
82 | android:pathData="M0,49L108,49" | ||
83 | android:strokeWidth="0.8" | ||
84 | android:strokeColor="#33FFFFFF" /> | ||
85 | <path | ||
86 | android:fillColor="#00000000" | ||
87 | android:pathData="M0,59L108,59" | ||
88 | android:strokeWidth="0.8" | ||
89 | android:strokeColor="#33FFFFFF" /> | ||
90 | <path | ||
91 | android:fillColor="#00000000" | ||
92 | android:pathData="M0,69L108,69" | ||
93 | android:strokeWidth="0.8" | ||
94 | android:strokeColor="#33FFFFFF" /> | ||
95 | <path | ||
96 | android:fillColor="#00000000" | ||
97 | android:pathData="M0,79L108,79" | ||
98 | android:strokeWidth="0.8" | ||
99 | android:strokeColor="#33FFFFFF" /> | ||
100 | <path | ||
101 | android:fillColor="#00000000" | ||
102 | android:pathData="M0,89L108,89" | ||
103 | android:strokeWidth="0.8" | ||
104 | android:strokeColor="#33FFFFFF" /> | ||
105 | <path | ||
106 | android:fillColor="#00000000" | ||
107 | android:pathData="M0,99L108,99" | ||
108 | android:strokeWidth="0.8" | ||
109 | android:strokeColor="#33FFFFFF" /> | ||
110 | <path | ||
111 | android:fillColor="#00000000" | ||
112 | android:pathData="M19,29L89,29" | ||
113 | android:strokeWidth="0.8" | ||
114 | android:strokeColor="#33FFFFFF" /> | ||
115 | <path | ||
116 | android:fillColor="#00000000" | ||
117 | android:pathData="M19,39L89,39" | ||
118 | android:strokeWidth="0.8" | ||
119 | android:strokeColor="#33FFFFFF" /> | ||
120 | <path | ||
121 | android:fillColor="#00000000" | ||
122 | android:pathData="M19,49L89,49" | ||
123 | android:strokeWidth="0.8" | ||
124 | android:strokeColor="#33FFFFFF" /> | ||
125 | <path | ||
126 | android:fillColor="#00000000" | ||
127 | android:pathData="M19,59L89,59" | ||
128 | android:strokeWidth="0.8" | ||
129 | android:strokeColor="#33FFFFFF" /> | ||
130 | <path | ||
131 | android:fillColor="#00000000" | ||
132 | android:pathData="M19,69L89,69" | ||
133 | android:strokeWidth="0.8" | ||
134 | android:strokeColor="#33FFFFFF" /> | ||
135 | <path | ||
136 | android:fillColor="#00000000" | ||
137 | android:pathData="M19,79L89,79" | ||
138 | android:strokeWidth="0.8" | ||
139 | android:strokeColor="#33FFFFFF" /> | ||
140 | <path | ||
141 | android:fillColor="#00000000" | ||
142 | android:pathData="M29,19L29,89" | ||
143 | android:strokeWidth="0.8" | ||
144 | android:strokeColor="#33FFFFFF" /> | ||
145 | <path | ||
146 | android:fillColor="#00000000" | ||
147 | android:pathData="M39,19L39,89" | ||
148 | android:strokeWidth="0.8" | ||
149 | android:strokeColor="#33FFFFFF" /> | ||
150 | <path | ||
151 | android:fillColor="#00000000" | ||
152 | android:pathData="M49,19L49,89" | ||
153 | android:strokeWidth="0.8" | ||
154 | android:strokeColor="#33FFFFFF" /> | ||
155 | <path | ||
156 | android:fillColor="#00000000" | ||
157 | android:pathData="M59,19L59,89" | ||
158 | android:strokeWidth="0.8" | ||
159 | android:strokeColor="#33FFFFFF" /> | ||
160 | <path | ||
161 | android:fillColor="#00000000" | ||
162 | android:pathData="M69,19L69,89" | ||
163 | android:strokeWidth="0.8" | ||
164 | android:strokeColor="#33FFFFFF" /> | ||
165 | <path | ||
166 | android:fillColor="#00000000" | ||
167 | android:pathData="M79,19L79,89" | ||
168 | android:strokeWidth="0.8" | ||
169 | android:strokeColor="#33FFFFFF" /> | ||
170 | </vector> | ||
171 |
app/src/main/res/drawable/ic_menu_camera.xml
File was created | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:width="24dp" | ||
3 | android:height="24dp" | ||
4 | android:viewportWidth="24.0" | ||
5 | android:viewportHeight="24.0"> | ||
6 | <path | ||
7 | android:fillColor="#FF000000" | ||
8 | android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0" /> | ||
9 | <path | ||
10 | android:fillColor="#FF000000" | ||
11 | android:pathData="M9,2L7.17,4H4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2H9zm3,15c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z" /> | ||
12 | </vector> | ||
13 |
app/src/main/res/drawable/ic_menu_gallery.xml
File was created | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:width="24dp" | ||
3 | android:height="24dp" | ||
4 | android:viewportWidth="24.0" | ||
5 | android:viewportHeight="24.0"> | ||
6 | <path | ||
7 | android:fillColor="#FF000000" | ||
8 | android:pathData="M22,16V4c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2zm-11,-4l2.03,2.71L16,11l4,5H8l3,-4zM2,6v14c0,1.1 0.9,2 2,2h14v-2H4V6H2z" /> | ||
9 | </vector> | ||
10 |
app/src/main/res/drawable/ic_menu_slideshow.xml
File was created | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:width="24dp" | ||
3 | android:height="24dp" | ||
4 | android:viewportWidth="24.0" | ||
5 | android:viewportHeight="24.0"> | ||
6 | <path | ||
7 | android:fillColor="#FF000000" | ||
8 | android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6zm16,-4H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zm-8,12.5v-9l6,4.5 -6,4.5z" /> | ||
9 | </vector> | ||
10 |
app/src/main/res/drawable/side_nav_bar.xml
File was created | 1 | <shape xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:shape="rectangle"> | ||
3 | <gradient | ||
4 | android:angle="135" | ||
5 | android:centerColor="#009688" | ||
6 | android:endColor="#00695C" | ||
7 | android:startColor="#4DB6AC" | ||
8 | android:type="linear" /> | ||
9 | </shape> |
app/src/main/res/layout/activity_main.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:id="@+id/drawer_layout" | ||
6 | android:layout_width="match_parent" | ||
7 | android:layout_height="match_parent" | ||
8 | android:fitsSystemWindows="true" | ||
9 | tools:openDrawer="start"> | ||
10 | |||
11 | <include | ||
12 | layout="@layout/app_bar_main" | ||
13 | android:layout_width="match_parent" | ||
14 | android:layout_height="match_parent" /> | ||
15 | |||
16 | <com.google.android.material.navigation.NavigationView | ||
17 | android:id="@+id/nav_view" | ||
18 | android:layout_width="wrap_content" | ||
19 | android:layout_height="match_parent" | ||
20 | android:layout_gravity="start" | ||
21 | android:fitsSystemWindows="true" | ||
22 | app:headerLayout="@layout/nav_header_main" | ||
23 | app:menu="@menu/activity_main_drawer" /> | ||
24 | |||
25 | </androidx.drawerlayout.widget.DrawerLayout> |
app/src/main/res/layout/activity_mensaje.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="match_parent" | ||
7 | tools:context=".ui.MensajeActivity"> | ||
8 | |||
9 | </androidx.constraintlayout.widget.ConstraintLayout> |
app/src/main/res/layout/app_bar_main.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="match_parent" | ||
7 | tools:context=".MainActivity"> | ||
8 | |||
9 | <com.google.android.material.appbar.AppBarLayout | ||
10 | android:layout_width="match_parent" | ||
11 | android:layout_height="wrap_content" | ||
12 | android:theme="@style/AppTheme.AppBarOverlay"> | ||
13 | |||
14 | <androidx.appcompat.widget.Toolbar | ||
15 | android:id="@+id/toolbar" | ||
16 | android:layout_width="match_parent" | ||
17 | android:layout_height="?attr/actionBarSize" | ||
18 | android:background="?attr/colorPrimary" | ||
19 | app:popupTheme="@style/AppTheme.PopupOverlay" /> | ||
20 | |||
21 | </com.google.android.material.appbar.AppBarLayout> | ||
22 | |||
23 | <include layout="@layout/content_main" /> | ||
24 | |||
25 | |||
26 | </androidx.coordinatorlayout.widget.CoordinatorLayout> |
app/src/main/res/layout/content_main.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="match_parent" | ||
7 | app:layout_behavior="@string/appbar_scrolling_view_behavior" | ||
8 | tools:showIn="@layout/app_bar_main"> | ||
9 | |||
10 | <fragment | ||
11 | android:id="@+id/nav_host_fragment" | ||
12 | android:name="androidx.navigation.fragment.NavHostFragment" | ||
13 | android:layout_width="match_parent" | ||
14 | android:layout_height="match_parent" | ||
15 | app:defaultNavHost="true" | ||
16 | app:layout_constraintLeft_toLeftOf="parent" | ||
17 | app:layout_constraintRight_toRightOf="parent" | ||
18 | app:layout_constraintTop_toTopOf="parent" | ||
19 | app:navGraph="@navigation/mobile_navigation" /> | ||
20 | |||
21 | <!-- <fragment--> | ||
22 | <!-- android:id="@+id/fragmentoSecundario"--> | ||
23 | <!-- android:name="androidx.navigation.fragment.NavHostFragment"--> | ||
24 | <!-- android:layout_width="289dp"--> | ||
25 | <!-- android:layout_height="335dp"--> | ||
26 | <!-- app:layout_constraintBottom_toBottomOf="parent"--> | ||
27 | <!-- app:layout_constraintHorizontal_bias="0.497"--> | ||
28 | <!-- app:layout_constraintLeft_toLeftOf="parent"--> | ||
29 | <!-- app:layout_constraintRight_toRightOf="parent"--> | ||
30 | <!-- app:layout_constraintTop_toTopOf="parent"--> | ||
31 | <!-- app:layout_constraintVertical_bias="0.597" />--> | ||
32 | </androidx.constraintlayout.widget.ConstraintLayout> |
app/src/main/res/layout/dialog_signin.xml
File was created | 1 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
2 | android:orientation="vertical" | ||
3 | android:layout_width="wrap_content" | ||
4 | android:layout_height="wrap_content"> | ||
5 | |||
6 | <EditText | ||
7 | android:id="@+id/username" | ||
8 | android:inputType="textEmailAddress" | ||
9 | android:layout_width="match_parent" | ||
10 | android:layout_height="wrap_content" | ||
11 | android:layout_marginTop="16dp" | ||
12 | android:layout_marginLeft="4dp" | ||
13 | android:layout_marginRight="4dp" | ||
14 | android:layout_marginBottom="4dp" | ||
15 | android:hint="" /> | ||
16 | <EditText | ||
17 | android:id="@+id/password" | ||
18 | android:inputType="textPassword" | ||
19 | android:layout_width="match_parent" | ||
20 | android:layout_height="wrap_content" | ||
21 | android:layout_marginTop="4dp" | ||
22 | android:layout_marginLeft="4dp" | ||
23 | android:layout_marginRight="4dp" | ||
24 | android:layout_marginBottom="16dp" | ||
25 | android:fontFamily="sans-serif" | ||
26 | android:hint=""/> | ||
27 | </LinearLayout> |
app/src/main/res/layout/fragment_actua_maestros.xml
File was created | 1 | <?xml version="1.0" encoding="UTF-8"?> | |
2 | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="match_parent" | ||
7 | tools:context=".ui.actualizacionMaestros.ActuaMaestrosFragment"> | ||
8 | |||
9 | |||
10 | <androidx.appcompat.widget.AppCompatTextView | ||
11 | android:id="@+id/tvActMaestros" | ||
12 | android:layout_width="match_parent" | ||
13 | android:layout_height="wrap_content" | ||
14 | android:layout_marginTop="@dimen/MarginTopTitulos" | ||
15 | android:gravity="center" | ||
16 | |||
17 | android:text="@string/tvActMaestros" | ||
18 | android:textColor="@color/colorAccent" | ||
19 | android:textSize="@dimen/Titulos" | ||
20 | app:fontFamily="sans-serif-condensed" | ||
21 | app:layout_constraintBottom_toTopOf="@+id/tvSeleccioneServidor" | ||
22 | app:layout_constraintEnd_toEndOf="parent" | ||
23 | app:layout_constraintStart_toStartOf="parent" | ||
24 | app:layout_constraintTop_toTopOf="parent" /> | ||
25 | |||
26 | <TextView | ||
27 | android:id="@+id/tvSeleccioneServidor" | ||
28 | android:layout_width="0dp" | ||
29 | android:layout_height="wrap_content" | ||
30 | android:layout_margin="30dp" | ||
31 | android:gravity="center" | ||
32 | android:lines="2" | ||
33 | android:text="@string/tvMedio" | ||
34 | android:textColor="@android:color/black" | ||
35 | android:textSize="@dimen/SubTitulos" | ||
36 | app:fontFamily="sans-serif-condensed" | ||
37 | app:layout_constraintEnd_toEndOf="parent" | ||
38 | app:layout_constraintStart_toStartOf="parent" | ||
39 | app:layout_constraintTop_toBottomOf="@+id/tvActMaestros" /> | ||
40 | |||
41 | <RadioGroup | ||
42 | android:id="@+id/rgTipoActualizacion" | ||
43 | android:layout_width="0dp" | ||
44 | android:layout_height="wrap_content" | ||
45 | android:layout_margin="25dp" | ||
46 | android:gravity="center" | ||
47 | android:orientation="horizontal" | ||
48 | app:layout_constraintEnd_toEndOf="parent" | ||
49 | app:layout_constraintStart_toStartOf="parent" | ||
50 | app:layout_constraintTop_toBottomOf="@+id/tvSeleccioneServidor"> | ||
51 | |||
52 | <RadioButton | ||
53 | android:id="@+id/obPorWifi" | ||
54 | android:layout_width="wrap_content" | ||
55 | android:layout_height="wrap_content" | ||
56 | android:layout_margin="5dp" | ||
57 | android:checked="true" | ||
58 | android:padding="5dp" | ||
59 | android:text="@string/obPorWifi" | ||
60 | android:textSize="@dimen/NormalText" /> | ||
61 | |||
62 | <RadioButton | ||
63 | android:id="@+id/obViaArchivo" | ||
64 | android:layout_width="wrap_content" | ||
65 | android:layout_height="wrap_content" | ||
66 | android:layout_margin="5dp" | ||
67 | android:checked="false" | ||
68 | android:padding="5dp" | ||
69 | android:text="@string/obViaArchivo" | ||
70 | android:textSize="@dimen/NormalText" /> | ||
71 | |||
72 | |||
73 | </RadioGroup> | ||
74 | |||
75 | |||
76 | <TextView | ||
77 | android:id="@+id/countriesList" | ||
78 | android:layout_width="0dp" | ||
79 | android:layout_height="wrap_content" | ||
80 | android:layout_marginTop="@dimen/MarginTopTitulos" | ||
81 | android:gravity="center" | ||
82 | android:text="" | ||
83 | android:textColor="@android:color/black" | ||
84 | android:textSize="@dimen/SubTitulos" | ||
85 | android:visibility="visible" | ||
86 | app:fontFamily="sans-serif-condensed" | ||
87 | app:layout_constraintBottom_toTopOf="@+id/btnConfirmarAct" | ||
88 | app:layout_constraintEnd_toEndOf="parent" | ||
89 | app:layout_constraintHorizontal_bias="0.0" | ||
90 | app:layout_constraintStart_toStartOf="parent" | ||
91 | app:layout_constraintTop_toBottomOf="@+id/rgTipoActualizacion" | ||
92 | app:layout_constraintVertical_bias="0.0" /> | ||
93 | |||
94 | <Button | ||
95 | android:id="@+id/btnConfirmarAct" | ||
96 | android:layout_width="0dp" | ||
97 | android:layout_height="wrap_content" | ||
98 | android:layout_margin="20dp" | ||
99 | android:text="@string/btnConfirmarAct" | ||
100 | android:textSize="@dimen/NormalText" | ||
101 | app:layout_constraintBottom_toBottomOf="parent" | ||
102 | app:layout_constraintEnd_toEndOf="parent" | ||
103 | app:layout_constraintStart_toStartOf="parent" /> | ||
104 | |||
105 | |||
106 | <ProgressBar | ||
107 | android:id="@+id/loading_view" | ||
108 | android:layout_width="wrap_content" | ||
109 | android:layout_height="wrap_content" | ||
110 | android:layout_marginStart="8dp" | ||
111 | android:layout_marginLeft="8dp" | ||
112 | android:layout_marginTop="8dp" | ||
113 | android:layout_marginEnd="8dp" | ||
114 | android:layout_marginRight="8dp" | ||
115 | android:layout_marginBottom="8dp" | ||
116 | android:visibility="gone" | ||
117 | app:layout_constraintBottom_toBottomOf="parent" | ||
118 | app:layout_constraintEnd_toEndOf="parent" | ||
119 | app:layout_constraintStart_toStartOf="parent" | ||
120 | app:layout_constraintTop_toTopOf="parent" /> | ||
121 | </androidx.constraintlayout.widget.ConstraintLayout> | ||
122 |
app/src/main/res/layout/fragment_configuracion.xml
File was created | 1 | <?xml version="1.0" encoding="UTF-8"?> | |
2 | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="wrap_content" | ||
7 | tools:context=".ui.configuracion.ConfiguracionFragment"> | ||
8 | |||
9 | |||
10 | <androidx.appcompat.widget.AppCompatTextView | ||
11 | android:id="@+id/textView2" | ||
12 | android:layout_width="match_parent" | ||
13 | android:layout_height="wrap_content" | ||
14 | |||
15 | android:layout_marginTop="@dimen/MarginTopTitulos" | ||
16 | android:gravity="center" | ||
17 | |||
18 | android:lines="1" | ||
19 | android:text="@string/tvTituloConf" | ||
20 | android:textColor="@color/colorAccent" | ||
21 | android:textSize="@dimen/Titulos" | ||
22 | app:fontFamily="sans-serif-condensed" | ||
23 | app:layout_constraintBottom_toTopOf="@+id/tvSeleccioneServidor" | ||
24 | app:layout_constraintEnd_toEndOf="parent" | ||
25 | app:layout_constraintStart_toStartOf="parent" | ||
26 | app:layout_constraintTop_toTopOf="parent" /> | ||
27 | |||
28 | <TextView | ||
29 | android:id="@+id/tvSeleccioneServidor" | ||
30 | android:layout_width="0dp" | ||
31 | android:layout_height="wrap_content" | ||
32 | |||
33 | android:layout_marginStart="@dimen/MarginBotAgreSer" | ||
34 | android:layout_marginTop="@dimen/MarginTopSubTitulos" | ||
35 | android:gravity="start" | ||
36 | android:lines="1" | ||
37 | android:text="@string/tvSeleccioneServidor" | ||
38 | android:textColor="@android:color/black" | ||
39 | android:textSize="@dimen/SubTitulos" | ||
40 | app:fontFamily="sans-serif-condensed" | ||
41 | app:layout_constraintBottom_toTopOf="@+id/spServidor" | ||
42 | app:layout_constraintEnd_toEndOf="parent" | ||
43 | app:layout_constraintStart_toStartOf="parent" | ||
44 | app:layout_constraintTop_toBottomOf="@+id/textView2" /> | ||
45 | |||
46 | <Spinner | ||
47 | android:id="@+id/spServidor" | ||
48 | android:layout_width="0dp" | ||
49 | android:layout_height="wrap_content" | ||
50 | android:backgroundTint="@color/LightGray" | ||
51 | android:elevation="5dp" | ||
52 | android:fadeScrollbars="true" | ||
53 | android:foregroundTint="@android:color/holo_orange_dark" | ||
54 | android:soundEffectsEnabled="true" | ||
55 | android:spinnerMode="dialog" | ||
56 | android:splitMotionEvents="false" | ||
57 | android:textAlignment="center" | ||
58 | android:textSize="@dimen/NormalText" | ||
59 | app:layout_constraintBottom_toTopOf="@+id/btnAgregarServidor" | ||
60 | app:layout_constraintEnd_toStartOf="@+id/btnValidarServidor" | ||
61 | app:layout_constraintHorizontal_chainStyle="packed" | ||
62 | app:layout_constraintStart_toStartOf="parent" | ||
63 | app:layout_constraintTop_toBottomOf="@+id/tvSeleccioneServidor" | ||
64 | android:entries="@array/spinnerServidor" | ||
65 | android:prompt="@string/leyendaSpinner"/> | ||
66 | |||
67 | <Button | ||
68 | android:id="@+id/btnValidarServidor" | ||
69 | android:layout_width="wrap_content" | ||
70 | android:layout_height="wrap_content" | ||
71 | |||
72 | android:text="@string/btnValidarServidor" | ||
73 | android:textSize="@dimen/NormalText" | ||
74 | app:layout_constraintBottom_toTopOf="@+id/btnAgregarServidor" | ||
75 | app:layout_constraintEnd_toEndOf="parent" | ||
76 | app:layout_constraintHorizontal_chainStyle="packed" | ||
77 | app:layout_constraintStart_toEndOf="@id/spServidor" | ||
78 | app:layout_constraintTop_toBottomOf="@+id/tvSeleccioneServidor" /> | ||
79 | |||
80 | <Button | ||
81 | android:id="@+id/btnAgregarServidor" | ||
82 | android:layout_width="0dp" | ||
83 | android:layout_height="wrap_content" | ||
84 | android:layout_marginStart="@dimen/MarginBotAgreSer" | ||
85 | android:layout_marginEnd="@dimen/MarginBotAgreSer" | ||
86 | android:text="@string/btnAgregarServidor" | ||
87 | android:textSize="@dimen/NormalText" | ||
88 | app:layout_constraintBottom_toTopOf="@+id/tvUbicacionCarpetas" | ||
89 | app:layout_constraintEnd_toEndOf="parent" | ||
90 | app:layout_constraintStart_toStartOf="parent" | ||
91 | app:layout_constraintTop_toBottomOf="@+id/btnValidarServidor" /> | ||
92 | |||
93 | |||
94 | <TextView | ||
95 | android:id="@+id/tvUbicacionCarpetas" | ||
96 | android:layout_width="0dp" | ||
97 | android:layout_height="wrap_content" | ||
98 | |||
99 | android:layout_marginStart="@dimen/MarginBotAgreSer" | ||
100 | android:layout_marginTop="@dimen/MarginTopSubTitulos" | ||
101 | android:gravity="start" | ||
102 | android:lines="1" | ||
103 | android:text="@string/tvUbicacionCarpetas" | ||
104 | android:textColor="@android:color/black" | ||
105 | android:textSize="@dimen/SubTitulos" | ||
106 | app:fontFamily="sans-serif-condensed" | ||
107 | app:layout_constraintBottom_toTopOf="@+id/ibSearch" | ||
108 | app:layout_constraintEnd_toEndOf="parent" | ||
109 | app:layout_constraintStart_toStartOf="parent" | ||
110 | app:layout_constraintTop_toBottomOf="@+id/btnAgregarServidor" /> | ||
111 | |||
112 | <ImageButton | ||
113 | android:id="@+id/ibSearch" | ||
114 | android:layout_width="36dp" | ||
115 | android:layout_height="37dp" | ||
116 | android:layout_margin="10dp" | ||
117 | android:src="@drawable/search" | ||
118 | app:layout_constraintEnd_toStartOf="@+id/etRuta" | ||
119 | app:layout_constraintStart_toStartOf="parent" | ||
120 | app:layout_constraintTop_toBottomOf="@+id/tvUbicacionCarpetas" /> | ||
121 | |||
122 | <EditText | ||
123 | android:id="@+id/etRuta" | ||
124 | android:layout_width="0dp" | ||
125 | android:layout_height="wrap_content" | ||
126 | android:layout_marginTop="10dp" | ||
127 | android:layout_marginEnd="10dp" | ||
128 | android:clickable="true" | ||
129 | android:ems="10" | ||
130 | android:focusable="true" | ||
131 | android:inputType="textPersonName" | ||
132 | android:lines="1" | ||
133 | android:text="" | ||
134 | android:textSize="@dimen/NormalText" | ||
135 | app:layout_constraintEnd_toEndOf="parent" | ||
136 | app:layout_constraintStart_toEndOf="@id/ibSearch" | ||
137 | app:layout_constraintTop_toBottomOf="@+id/tvUbicacionCarpetas" /> | ||
138 | |||
139 | <TextView | ||
140 | android:id="@+id/tvActuFecha" | ||
141 | android:layout_width="0dp" | ||
142 | android:layout_height="wrap_content" | ||
143 | android:layout_marginStart="@dimen/MarginBotAgreSer" | ||
144 | android:layout_marginTop="@dimen/MarginTopSubTitulos" | ||
145 | android:gravity="start" | ||
146 | android:lines="1" | ||
147 | android:text="@string/tvTituloArea" | ||
148 | android:textColor="@android:color/black" | ||
149 | android:textSize="@dimen/SubTitulos" | ||
150 | app:fontFamily="sans-serif-condensed" | ||
151 | app:layout_constraintEnd_toEndOf="parent" | ||
152 | app:layout_constraintStart_toStartOf="parent" | ||
153 | app:layout_constraintTop_toBottomOf="@+id/etRuta" /> | ||
154 | |||
155 | <RadioGroup | ||
156 | android:id="@+id/rgFechaHora" | ||
157 | android:layout_width="0dp" | ||
158 | android:layout_height="wrap_content" | ||
159 | |||
160 | android:gravity="center" | ||
161 | android:orientation="horizontal" | ||
162 | app:layout_constraintEnd_toEndOf="parent" | ||
163 | app:layout_constraintStart_toStartOf="parent" | ||
164 | app:layout_constraintTop_toBottomOf="@+id/tvActuFecha"> | ||
165 | |||
166 | <RadioButton | ||
167 | android:id="@+id/rbVentas" | ||
168 | android:layout_width="wrap_content" | ||
169 | android:layout_height="wrap_content" | ||
170 | android:layout_margin="5dp" | ||
171 | android:checked="true" | ||
172 | android:padding="5dp" | ||
173 | android:text="@string/rbVentas" | ||
174 | android:textSize="@dimen/NormalText" /> | ||
175 | |||
176 | <RadioButton | ||
177 | android:id="@+id/rbDeposito" | ||
178 | android:layout_width="wrap_content" | ||
179 | android:layout_height="wrap_content" | ||
180 | android:layout_margin="5dp" | ||
181 | android:checked="false" | ||
182 | android:padding="5dp" | ||
183 | android:text="@string/rbDeposito" | ||
184 | android:textSize="@dimen/NormalText" /> | ||
185 | |||
186 | </RadioGroup> | ||
187 | |||
188 | <TextView | ||
189 | android:id="@+id/tvLosProductos" | ||
190 | android:layout_width="0dp" | ||
191 | android:layout_height="wrap_content" | ||
192 | |||
193 | android:layout_marginStart="@dimen/MarginBotAgreSer" | ||
194 | android:layout_marginEnd="@dimen/MarginTopSubTitulos" | ||
195 | android:gravity="start" | ||
196 | android:lines="1" | ||
197 | android:text="@string/tvLosProductos" | ||
198 | android:textColor="@android:color/black" | ||
199 | android:textSize="@dimen/SubTitulos" | ||
200 | app:fontFamily="sans-serif-condensed" | ||
201 | app:layout_constraintEnd_toEndOf="parent" | ||
202 | app:layout_constraintStart_toStartOf="parent" | ||
203 | app:layout_constraintTop_toBottomOf="@+id/rgFechaHora" /> | ||
204 | |||
205 | <RadioGroup | ||
206 | android:id="@+id/rgLosProductos" | ||
207 | android:layout_width="0dp" | ||
208 | android:layout_height="wrap_content" | ||
209 | |||
210 | android:gravity="center" | ||
211 | android:orientation="vertical" | ||
212 | app:layout_constraintEnd_toEndOf="parent" | ||
213 | app:layout_constraintStart_toStartOf="parent" | ||
214 | app:layout_constraintTop_toBottomOf="@+id/tvLosProductos"> | ||
215 | |||
216 | <RadioButton | ||
217 | android:id="@+id/rbProInclu" | ||
218 | android:layout_width="match_parent" | ||
219 | android:layout_height="wrap_content" | ||
220 | |||
221 | android:layout_margin="@dimen/PadingCbyRb" | ||
222 | android:checked="true" | ||
223 | android:padding="@dimen/PadingCbyRb" | ||
224 | android:text="@string/rbProInclu" | ||
225 | android:textSize="@dimen/NormalText" /> | ||
226 | |||
227 | <RadioButton | ||
228 | android:id="@+id/rbProNoInclu" | ||
229 | android:layout_width="match_parent" | ||
230 | android:layout_height="wrap_content" | ||
231 | android:layout_margin="@dimen/PadingCbyRb" | ||
232 | android:checked="false" | ||
233 | android:padding="@dimen/PadingCbyRb" | ||
234 | android:text="@string/rbProNoInclu" | ||
235 | android:textSize="@dimen/NormalText" /> | ||
236 | |||
237 | </RadioGroup> | ||
238 | |||
239 | <CheckBox | ||
240 | android:id="@+id/cbHabiLectura" | ||
241 | android:layout_width="0dp" | ||
242 | android:layout_height="wrap_content" | ||
243 | android:layout_margin="@dimen/PadingCbyRb" | ||
244 | android:padding="@dimen/PadingCbyRb" | ||
245 | android:text="@string/cbHabiLectura" | ||
246 | android:textSize="@dimen/NormalText" | ||
247 | app:layout_constraintEnd_toEndOf="parent" | ||
248 | app:layout_constraintStart_toStartOf="parent" | ||
249 | app:layout_constraintTop_toBottomOf="@+id/rgLosProductos" /> | ||
250 | |||
251 | <CheckBox | ||
252 | android:id="@+id/cbMostrarStock" | ||
253 | android:layout_width="0dp" | ||
254 | android:layout_height="wrap_content" | ||
255 | android:layout_margin="@dimen/PadingCbyRb" | ||
256 | android:padding="@dimen/PadingCbyRb" | ||
257 | android:text="@string/cbMostrarStock" | ||
258 | android:textSize="@dimen/NormalText" | ||
259 | app:layout_constraintEnd_toEndOf="parent" | ||
260 | app:layout_constraintStart_toStartOf="parent" | ||
261 | app:layout_constraintTop_toBottomOf="@+id/cbHabiLectura" /> | ||
262 | |||
263 | <TextView | ||
264 | android:id="@+id/tvColumMostrar" | ||
265 | android:layout_width="0dp" | ||
266 | android:layout_height="wrap_content" | ||
267 | |||
268 | android:layout_marginStart="@dimen/MarginBotAgreSer" | ||
269 | android:layout_marginEnd="@dimen/MarginTopSubTitulos" | ||
270 | android:gravity="start" | ||
271 | android:lines="1" | ||
272 | android:text="@string/tvColumMostrar" | ||
273 | android:textColor="@android:color/black" | ||
274 | android:textSize="@dimen/SubTitulos" | ||
275 | app:fontFamily="sans-serif-condensed" | ||
276 | app:layout_constraintEnd_toEndOf="parent" | ||
277 | app:layout_constraintStart_toStartOf="parent" | ||
278 | app:layout_constraintTop_toBottomOf="@+id/cbMostrarStock" /> | ||
279 | |||
280 | <RadioGroup | ||
281 | android:id="@+id/rgCodigosMostrar" | ||
282 | android:layout_width="0dp" | ||
283 | android:layout_height="wrap_content" | ||
284 | |||
285 | android:gravity="center" | ||
286 | android:orientation="horizontal" | ||
287 | app:layout_constraintEnd_toEndOf="parent" | ||
288 | app:layout_constraintStart_toStartOf="parent" | ||
289 | app:layout_constraintTop_toBottomOf="@+id/tvColumMostrar"> | ||
290 | |||
291 | <RadioButton | ||
292 | android:id="@+id/rbCodigoDebo" | ||
293 | android:layout_width="wrap_content" | ||
294 | android:layout_height="wrap_content" | ||
295 | android:layout_margin="5dp" | ||
296 | android:checked="true" | ||
297 | android:padding="5dp" | ||
298 | android:text="@string/rbCodigoDebo" | ||
299 | android:textSize="@dimen/NormalText" /> | ||
300 | |||
301 | <RadioButton | ||
302 | android:id="@+id/rbCodigoOrigen" | ||
303 | android:layout_width="wrap_content" | ||
304 | android:layout_height="wrap_content" | ||
305 | android:layout_margin="5dp" | ||
306 | android:checked="false" | ||
307 | android:padding="5dp" | ||
308 | android:text="@string/rbCodigoOrigen" | ||
309 | android:textSize="@dimen/NormalText" /> | ||
310 | |||
311 | <RadioButton | ||
312 | android:id="@+id/rbCodigoBarras" | ||
313 | android:layout_width="wrap_content" | ||
314 | android:layout_height="wrap_content" | ||
315 | android:layout_margin="5dp" | ||
316 | android:padding="5dp" | ||
317 | android:text="@string/rbCodigoBarras" | ||
318 | android:textSize="@dimen/NormalText" /> | ||
319 | </RadioGroup> | ||
320 | |||
321 | <CheckBox | ||
322 | android:id="@+id/cbMostrarExistencia" | ||
323 | android:layout_width="wrap_content" | ||
324 | android:layout_height="wrap_content" | ||
325 | android:layout_margin="@dimen/PadingCbyRb" | ||
326 | android:padding="@dimen/PadingCbyRb" | ||
327 | android:text="@string/cbMostrarExistencia" | ||
328 | android:textSize="@dimen/NormalText" | ||
329 | android:checked="false" | ||
330 | app:layout_constraintEnd_toStartOf="@+id/cbMostrarPrecio" | ||
331 | app:layout_constraintStart_toStartOf="parent" | ||
332 | app:layout_constraintTop_toBottomOf="@+id/rgCodigosMostrar" /> | ||
333 | |||
334 | <CheckBox | ||
335 | android:id="@+id/cbMostrarPrecio" | ||
336 | android:layout_width="wrap_content" | ||
337 | android:layout_height="wrap_content" | ||
338 | android:layout_margin="@dimen/PadingCbyRb" | ||
339 | android:padding="@dimen/PadingCbyRb" | ||
340 | android:text="@string/cbMostrarPrecio" | ||
341 | android:textSize="@dimen/NormalText" | ||
342 | android:checked="false" | ||
343 | app:layout_constraintEnd_toEndOf="parent" | ||
344 | app:layout_constraintStart_toEndOf="@+id/cbMostrarExistencia" | ||
345 | app:layout_constraintTop_toBottomOf="@+id/rgCodigosMostrar" /> | ||
346 | |||
347 | <Button | ||
348 | android:id="@+id/btnGuardar" | ||
349 | android:layout_width="wrap_content" | ||
350 | android:layout_height="wrap_content" | ||
351 | android:text="@string/btnGuardar" | ||
352 | android:textSize="@dimen/NormalText" | ||
353 | app:layout_constraintEnd_toEndOf="parent" | ||
354 | |||
355 | app:layout_constraintStart_toStartOf="parent" | ||
356 | app:layout_constraintTop_toBottomOf="@+id/cbMostrarPrecio" /> | ||
357 | </androidx.constraintlayout.widget.ConstraintLayout> | ||
358 | |||
359 |
app/src/main/res/layout/fragment_descripcion.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | |||
3 | |||
4 | <androidx.constraintlayout.widget.ConstraintLayout | ||
5 | xmlns:android="http://schemas.android.com/apk/res/android" | ||
6 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
7 | xmlns:tools="http://schemas.android.com/tools" | ||
8 | android:layout_width="match_parent" | ||
9 | android:layout_height="match_parent" | ||
10 | tools:context=".ui.inventario.DescripcionFragment"> | ||
11 | |||
12 | |||
13 | <androidx.recyclerview.widget.RecyclerView | ||
14 | android:id="@+id/rcDescripcion" | ||
15 | android:layout_width="match_parent" | ||
16 | android:layout_height="0dp" | ||
17 | android:background="@android:color/darker_gray" | ||
18 | android:scrollbars="vertical" | ||
19 | app:layout_constraintTop_toBottomOf="@id/guideline4" | ||
20 | app:layout_constraintBottom_toTopOf="@+id/guideline5" | ||
21 | app:layout_constraintEnd_toEndOf="parent" | ||
22 | app:layout_constraintStart_toStartOf="parent" | ||
23 | tools:listitem="@layout/item" /> | ||
24 | |||
25 | <Button | ||
26 | android:id="@+id/btnSalir" | ||
27 | android:layout_width="0dp" | ||
28 | android:layout_height="wrap_content" | ||
29 | android:text="@string/btnCancelar" | ||
30 | app:layout_constraintBottom_toBottomOf="@+id/guideline6" | ||
31 | app:layout_constraintEnd_toEndOf="parent" | ||
32 | app:layout_constraintHorizontal_chainStyle="spread" | ||
33 | app:layout_constraintStart_toStartOf="parent" | ||
34 | app:layout_constraintTop_toBottomOf="@+id/rcInventarios" /> | ||
35 | |||
36 | <androidx.constraintlayout.widget.Guideline | ||
37 | android:id="@+id/guideline4" | ||
38 | android:layout_width="wrap_content" | ||
39 | android:layout_height="wrap_content" | ||
40 | android:orientation="horizontal" | ||
41 | app:layout_constraintGuide_percent="0.06" /> | ||
42 | |||
43 | <androidx.constraintlayout.widget.Guideline | ||
44 | android:id="@+id/guideline5" | ||
45 | android:layout_width="wrap_content" | ||
46 | android:layout_height="wrap_content" | ||
47 | android:orientation="horizontal" | ||
48 | app:layout_constraintGuide_percent="0.88" /> | ||
49 | |||
50 | <androidx.constraintlayout.widget.Guideline | ||
51 | android:id="@+id/guideline6" | ||
52 | android:layout_width="wrap_content" | ||
53 | android:layout_height="wrap_content" | ||
54 | android:orientation="horizontal" | ||
55 | app:layout_constraintGuide_percent="0.97" /> | ||
56 | </androidx.constraintlayout.widget.ConstraintLayout> | ||
57 |
app/src/main/res/layout/fragment_inventario.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.constraintlayout.widget.ConstraintLayout | ||
3 | xmlns:android="http://schemas.android.com/apk/res/android" | ||
4 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
5 | xmlns:tools="http://schemas.android.com/tools" | ||
6 | android:id="@+id/frameLayout" | ||
7 | android:layout_width="match_parent" | ||
8 | android:layout_height="match_parent" | ||
9 | tools:context=".ui.inventario.InventarioFragment"> | ||
10 | |||
11 | |||
12 | <androidx.appcompat.widget.AppCompatTextView | ||
13 | android:id="@+id/tvTitulo" | ||
14 | android:layout_width="match_parent" | ||
15 | android:layout_height="90dp" | ||
16 | android:layout_marginStart="8dp" | ||
17 | android:layout_marginTop="15dp" | ||
18 | android:layout_marginEnd="8dp" | ||
19 | android:autoSizeMaxTextSize="100sp" | ||
20 | android:autoSizeMinTextSize="20sp" | ||
21 | android:autoSizeStepGranularity="5sp" | ||
22 | android:autoSizeTextType="uniform" | ||
23 | android:gravity="center" | ||
24 | android:lines="1" | ||
25 | android:text="@string/invTitulo" | ||
26 | android:textColor="@color/colorAccent" | ||
27 | app:fontFamily="sans-serif-condensed" | ||
28 | app:layout_constraintBottom_toTopOf="@id/guideline2" | ||
29 | app:layout_constraintEnd_toEndOf="parent" | ||
30 | app:layout_constraintStart_toStartOf="parent" | ||
31 | app:layout_constraintTop_toTopOf="@id/guideline" /> | ||
32 | |||
33 | |||
34 | <androidx.appcompat.widget.AppCompatTextView | ||
35 | android:id="@+id/tvCodigoBarras" | ||
36 | android:layout_width="wrap_content" | ||
37 | android:layout_height="wrap_content" | ||
38 | android:layout_marginStart="5dp" | ||
39 | android:text="@string/invCodigoBarras" | ||
40 | android:textColor="@color/colorAccent" | ||
41 | android:textSize="@dimen/subTitulos" | ||
42 | app:fontFamily="sans-serif-condensed" | ||
43 | app:layout_constraintBottom_toTopOf="@+id/guideline3" | ||
44 | app:layout_constraintEnd_toStartOf="@+id/etCodigoBarras" | ||
45 | app:layout_constraintHorizontal_bias="0.0" | ||
46 | app:layout_constraintHorizontal_chainStyle="packed" | ||
47 | app:layout_constraintStart_toStartOf="parent" | ||
48 | app:layout_constraintTop_toTopOf="@id/guideline2" /> | ||
49 | |||
50 | <EditText | ||
51 | android:id="@+id/etCodigoBarras" | ||
52 | android:layout_width="wrap_content" | ||
53 | android:layout_height="wrap_content" | ||
54 | android:clickable="true" | ||
55 | android:ems="10" | ||
56 | android:focusable="true" | ||
57 | android:textAllCaps="true" | ||
58 | android:inputType="textPersonName" | ||
59 | android:lines="1" | ||
60 | android:text="" | ||
61 | android:textSize="20sp" | ||
62 | app:layout_constraintBaseline_toBaselineOf="@+id/tvCodigoBarras" | ||
63 | app:layout_constraintEnd_toEndOf="parent" | ||
64 | app:layout_constraintHorizontal_chainStyle="packed" | ||
65 | app:layout_constraintStart_toEndOf="@id/tvCodigoBarras" | ||
66 | android:autofillHints="" /> | ||
67 | |||
68 | <Switch | ||
69 | android:id="@+id/swSumaUno" | ||
70 | android:layout_width="wrap_content" | ||
71 | android:layout_height="wrap_content" | ||
72 | android:layout_marginStart="5dp" | ||
73 | android:text="@string/switch_1" | ||
74 | app:layout_constraintBottom_toTopOf="@+id/guideline3" | ||
75 | app:layout_constraintEnd_toEndOf="parent" | ||
76 | app:layout_constraintStart_toEndOf="@id/etCodigoBarras" | ||
77 | app:layout_constraintTop_toTopOf="@id/guideline2" | ||
78 | tools:ignore="UseSwitchCompatOrMaterialXml" /> | ||
79 | |||
80 | <ImageButton | ||
81 | android:id="@+id/ivCamara" | ||
82 | android:layout_width="74dp" | ||
83 | android:layout_height="wrap_content" | ||
84 | android:layout_margin="10dp" | ||
85 | android:clickable="true" | ||
86 | android:contentDescription="TODO" | ||
87 | android:src="@drawable/camera" | ||
88 | app:layout_constraintBottom_toTopOf="@+id/guideline4" | ||
89 | app:layout_constraintStart_toStartOf="parent" | ||
90 | app:layout_constraintTop_toTopOf="@id/guideline3" /> | ||
91 | |||
92 | <androidx.recyclerview.widget.RecyclerView | ||
93 | android:id="@+id/rcInventarios" | ||
94 | android:layout_width="match_parent" | ||
95 | android:layout_height="0dp" | ||
96 | android:background="@android:color/darker_gray" | ||
97 | app:layout_constraintBottom_toBottomOf="@+id/guideline5" | ||
98 | app:layout_constraintEnd_toEndOf="parent" | ||
99 | app:layout_constraintStart_toStartOf="parent" | ||
100 | tools:listitem="@layout/item" | ||
101 | app:layout_constraintTop_toBottomOf="@+id/guideline4" /> | ||
102 | |||
103 | |||
104 | <Button | ||
105 | android:id="@+id/btnExportarInv" | ||
106 | android:layout_width="wrap_content" | ||
107 | android:layout_height="wrap_content" | ||
108 | android:text="@string/btnExportarInv" | ||
109 | app:layout_constraintBottom_toBottomOf="@+id/guideline6" | ||
110 | app:layout_constraintEnd_toEndOf="parent" | ||
111 | app:layout_constraintHorizontal_chainStyle="spread" | ||
112 | app:layout_constraintStart_toEndOf="@+id/btnBorrarInv" | ||
113 | app:layout_constraintTop_toBottomOf="@+id/guideline5" /> | ||
114 | |||
115 | <Button | ||
116 | android:id="@+id/btnBorrarInv" | ||
117 | android:layout_width="wrap_content" | ||
118 | android:layout_height="wrap_content" | ||
119 | android:text="@string/btnBorrarInv" | ||
120 | app:layout_constraintBottom_toBottomOf="@+id/guideline6" | ||
121 | app:layout_constraintEnd_toStartOf="@id/btnExportarInv" | ||
122 | app:layout_constraintHorizontal_chainStyle="spread" | ||
123 | app:layout_constraintStart_toStartOf="parent" | ||
124 | app:layout_constraintTop_toBottomOf="@+id/guideline5" /> | ||
125 | |||
126 | <androidx.constraintlayout.widget.Guideline | ||
127 | android:id="@+id/guideline" | ||
128 | android:layout_width="wrap_content" | ||
129 | android:layout_height="wrap_content" | ||
130 | android:orientation="horizontal" | ||
131 | app:layout_constraintGuide_percent="0.05" /> | ||
132 | |||
133 | <androidx.constraintlayout.widget.Guideline | ||
134 | android:id="@+id/guideline2" | ||
135 | android:layout_width="wrap_content" | ||
136 | android:layout_height="wrap_content" | ||
137 | android:orientation="horizontal" | ||
138 | app:layout_constraintGuide_percent="0.15" /> | ||
139 | |||
140 | <androidx.constraintlayout.widget.Guideline | ||
141 | android:id="@+id/guideline3" | ||
142 | android:layout_width="wrap_content" | ||
143 | android:layout_height="wrap_content" | ||
144 | android:orientation="horizontal" | ||
145 | app:layout_constraintGuide_percent="0.25" /> | ||
146 | |||
147 | <androidx.constraintlayout.widget.Guideline | ||
148 | android:id="@+id/guideline4" | ||
149 | android:layout_width="wrap_content" | ||
150 | android:layout_height="wrap_content" | ||
151 | android:orientation="horizontal" | ||
152 | app:layout_constraintGuide_percent="0.35" /> | ||
153 | |||
154 | <androidx.constraintlayout.widget.Guideline | ||
155 | android:id="@+id/guideline5" | ||
156 | android:layout_width="wrap_content" | ||
157 | android:layout_height="wrap_content" | ||
158 | android:orientation="horizontal" | ||
159 | app:layout_constraintGuide_percent="0.88" /> | ||
160 | |||
161 | <androidx.constraintlayout.widget.Guideline | ||
162 | android:id="@+id/guideline6" | ||
163 | android:layout_width="wrap_content" | ||
164 | android:layout_height="wrap_content" | ||
165 | android:orientation="horizontal" | ||
166 | app:layout_constraintGuide_percent="0.97" /> | ||
167 | |||
168 | <ToggleButton | ||
169 | android:id="@+id/toggleButton" | ||
170 | android:layout_width="wrap_content" | ||
171 | android:layout_height="wrap_content" | ||
172 | android:text="ToggleButton" | ||
173 | app:layout_constraintBottom_toTopOf="@+id/rcInventarios" | ||
174 | app:layout_constraintEnd_toEndOf="parent" | ||
175 | app:layout_constraintStart_toEndOf="@+id/ivCamara" /> | ||
176 | |||
177 | |||
178 | </androidx.constraintlayout.widget.ConstraintLayout> |
app/src/main/res/layout/fragment_main.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="match_parent" | ||
7 | tools:context=".ui.main.MainFragment"> | ||
8 | |||
9 | <androidx.appcompat.widget.AppCompatTextView | ||
10 | android:id="@+id/txtVentas" | ||
11 | android:layout_width="match_parent" | ||
12 | android:layout_height="90dp" | ||
13 | android:autoSizeMaxTextSize="150sp" | ||
14 | android:autoSizeMinTextSize="25sp" | ||
15 | android:autoSizeStepGranularity="5sp" | ||
16 | android:autoSizeTextType="uniform" | ||
17 | android:gravity="center" | ||
18 | android:padding="10dp" | ||
19 | android:text="@string/invDinamicoVenta" | ||
20 | android:textColor="@color/colorAccent" | ||
21 | app:fontFamily="sans-serif" | ||
22 | app:layout_constraintBottom_toTopOf="@+id/guideline" | ||
23 | app:layout_constraintEnd_toEndOf="parent" | ||
24 | app:layout_constraintStart_toStartOf="parent" | ||
25 | app:layout_constraintTop_toTopOf="@+id/guideline0" /> | ||
26 | |||
27 | <ScrollView | ||
28 | android:id="@+id/scrollView" | ||
29 | android:layout_width="match_parent" | ||
30 | android:layout_height="0dp" | ||
31 | android:layout_margin="10dp" | ||
32 | android:layout_marginTop="4dp" | ||
33 | android:background="@android:color/darker_gray" | ||
34 | android:elevation="10dp" | ||
35 | android:scrollbarStyle="insideOverlay" | ||
36 | app:layout_constraintBottom_toTopOf="@+id/guideline2" | ||
37 | app:layout_constraintCircleRadius="10dp" | ||
38 | app:layout_constraintEnd_toEndOf="parent" | ||
39 | app:layout_constraintStart_toStartOf="parent" | ||
40 | app:layout_constraintTop_toTopOf="@+id/guideline" | ||
41 | app:layout_constraintVertical_bias="0.512"> | ||
42 | |||
43 | <GridLayout | ||
44 | android:id="@+id/tableLayout" | ||
45 | android:layout_width="match_parent" | ||
46 | android:layout_height="wrap_content" | ||
47 | android:alignmentMode="alignMargins" | ||
48 | android:columnCount="2" | ||
49 | android:padding="15dp" | ||
50 | android:rowCount="2"> | ||
51 | |||
52 | <androidx.recyclerview.widget.RecyclerView | ||
53 | android:id="@+id/rcInventario" | ||
54 | android:layout_width="match_parent" | ||
55 | android:layout_height="wrap_content" | ||
56 | android:background="@android:color/darker_gray" | ||
57 | android:scrollbars="vertical" | ||
58 | app:layout_constraintTop_toBottomOf="@id/guideline4" | ||
59 | app:layout_constraintBottom_toTopOf="@+id/guideline5" | ||
60 | app:layout_constraintEnd_toEndOf="parent" | ||
61 | app:layout_constraintStart_toStartOf="parent" | ||
62 | tools:listitem="@layout/item_principal" /> | ||
63 | </GridLayout> | ||
64 | </ScrollView> | ||
65 | |||
66 | <androidx.appcompat.widget.AppCompatTextView | ||
67 | android:id="@+id/txtDeposito" | ||
68 | android:layout_width="419dp" | ||
69 | android:layout_height="90dp" | ||
70 | android:autoSizeMaxTextSize="150sp" | ||
71 | android:autoSizeMinTextSize="25sp" | ||
72 | android:autoSizeStepGranularity="5sp" | ||
73 | android:autoSizeTextType="uniform" | ||
74 | android:gravity="center" | ||
75 | android:lines="1" | ||
76 | android:padding="10dp" | ||
77 | android:text="@string/invDinamicoCompra" | ||
78 | android:textColor="@color/colorAccent" | ||
79 | |||
80 | app:fontFamily="sans-serif-condensed" | ||
81 | app:layout_constraintBottom_toTopOf="@id/guideline3" | ||
82 | app:layout_constraintEnd_toEndOf="parent" | ||
83 | app:layout_constraintStart_toStartOf="parent" | ||
84 | app:layout_constraintTop_toTopOf="@+id/guideline2" /> | ||
85 | |||
86 | <ScrollView | ||
87 | android:id="@+id/scrollView2" | ||
88 | android:layout_width="match_parent" | ||
89 | android:layout_height="0dp" | ||
90 | android:layout_margin="10dp" | ||
91 | android:background="@android:color/darker_gray" | ||
92 | android:elevation="10dp" | ||
93 | android:scrollbarStyle="insideOverlay" | ||
94 | app:layout_constraintBottom_toTopOf="@+id/guideline4" | ||
95 | app:layout_constraintCircleRadius="10dp" | ||
96 | app:layout_constraintEnd_toEndOf="parent" | ||
97 | app:layout_constraintStart_toStartOf="parent" | ||
98 | app:layout_constraintTop_toBottomOf="@+id/txtDeposito"> | ||
99 | |||
100 | <GridLayout | ||
101 | android:id="@+id/tableLayout2" | ||
102 | android:layout_width="match_parent" | ||
103 | android:layout_height="match_parent" | ||
104 | android:alignmentMode="alignMargins" | ||
105 | android:columnCount="2" | ||
106 | android:padding="15dp" | ||
107 | android:rowCount="2"> | ||
108 | |||
109 | <!-- FILA 1--> | ||
110 | <!-- COLUMNA 1--> | ||
111 | <androidx.cardview.widget.CardView | ||
112 | android:layout_width="0dp" | ||
113 | android:layout_height="match_parent" | ||
114 | android:layout_rowWeight="1" | ||
115 | android:layout_columnWeight="1" | ||
116 | android:layout_margin="15dp" | ||
117 | app:cardCornerRadius="8dp" | ||
118 | app:cardElevation="8dp"> | ||
119 | |||
120 | <LinearLayout | ||
121 | android:layout_width="wrap_content" | ||
122 | android:layout_height="wrap_content" | ||
123 | android:layout_gravity="center_horizontal|center_vertical" | ||
124 | android:layout_margin="15dp" | ||
125 | android:orientation="vertical"> | ||
126 | |||
127 | <androidx.appcompat.widget.AppCompatImageView | ||
128 | android:layout_width="wrap_content" | ||
129 | android:layout_height="wrap_content" | ||
130 | android:layout_gravity="center_horizontal" | ||
131 | android:src="@drawable/inventario" /> | ||
132 | |||
133 | <androidx.appcompat.widget.AppCompatTextView | ||
134 | android:id="@+id/inventario5" | ||
135 | android:layout_width="wrap_content" | ||
136 | android:layout_height="100dp" | ||
137 | |||
138 | android:autoSizeMaxTextSize="150sp" | ||
139 | android:autoSizeMinTextSize="15sp" | ||
140 | android:autoSizeStepGranularity="5sp" | ||
141 | android:autoSizeTextType="uniform" | ||
142 | android:gravity="center" | ||
143 | android:inputType="textMultiLine" | ||
144 | android:text="Inventeario 1 Articulos 100 12/12/2020 12:00" | ||
145 | android:textColor="@android:color/black" | ||
146 | android:textStyle="bold" /> | ||
147 | </LinearLayout> | ||
148 | </androidx.cardview.widget.CardView> | ||
149 | <!-- COLUMNA 2--> | ||
150 | <androidx.cardview.widget.CardView | ||
151 | android:layout_width="0dp" | ||
152 | android:layout_height="0dp" | ||
153 | android:layout_rowWeight="1" | ||
154 | android:layout_columnWeight="1" | ||
155 | android:layout_margin="15dp" | ||
156 | app:cardCornerRadius="8dp" | ||
157 | app:cardElevation="8dp"> | ||
158 | |||
159 | <LinearLayout | ||
160 | android:layout_width="wrap_content" | ||
161 | android:layout_height="wrap_content" | ||
162 | android:layout_gravity="center_horizontal|center_vertical" | ||
163 | android:layout_margin="15dp" | ||
164 | android:orientation="vertical"> | ||
165 | |||
166 | <androidx.appcompat.widget.AppCompatImageView | ||
167 | android:layout_width="wrap_content" | ||
168 | android:layout_height="wrap_content" | ||
169 | android:layout_gravity="center_horizontal" | ||
170 | android:src="@drawable/inventario" /> | ||
171 | |||
172 | <androidx.appcompat.widget.AppCompatTextView | ||
173 | android:id="@+id/inventario6" | ||
174 | android:layout_width="wrap_content" | ||
175 | android:layout_height="100dp" | ||
176 | |||
177 | android:autoSizeMaxTextSize="150sp" | ||
178 | android:autoSizeMinTextSize="15sp" | ||
179 | android:autoSizeStepGranularity="5sp" | ||
180 | android:autoSizeTextType="uniform" | ||
181 | android:gravity="center" | ||
182 | android:text="Inventeario 2 Articulos 100 12/12/2020 12:00" | ||
183 | android:textColor="@android:color/black" | ||
184 | android:textStyle="bold" /> | ||
185 | </LinearLayout> | ||
186 | </androidx.cardview.widget.CardView> | ||
187 | |||
188 | <!-- FILA 2--> | ||
189 | <!-- COLUMNA 1--> | ||
190 | <androidx.cardview.widget.CardView | ||
191 | android:layout_width="0dp" | ||
192 | android:layout_height="match_parent" | ||
193 | android:layout_rowWeight="1" | ||
194 | android:layout_columnWeight="1" | ||
195 | android:layout_margin="15dp" | ||
196 | app:cardCornerRadius="8dp" | ||
197 | app:cardElevation="8dp"> | ||
198 | |||
199 | <LinearLayout | ||
200 | android:layout_width="wrap_content" | ||
201 | android:layout_height="wrap_content" | ||
202 | android:layout_gravity="center_horizontal|center_vertical" | ||
203 | android:layout_margin="15dp" | ||
204 | android:orientation="vertical"> | ||
205 | |||
206 | <androidx.appcompat.widget.AppCompatImageView | ||
207 | android:layout_width="wrap_content" | ||
208 | android:layout_height="wrap_content" | ||
209 | android:layout_gravity="center_horizontal" | ||
210 | android:src="@drawable/inventario" /> | ||
211 | |||
212 | <androidx.appcompat.widget.AppCompatTextView | ||
213 | android:id="@+id/inventario7" | ||
214 | android:layout_width="wrap_content" | ||
215 | android:layout_height="100dp" | ||
216 | |||
217 | android:autoSizeMaxTextSize="150sp" | ||
218 | android:autoSizeMinTextSize="15sp" | ||
219 | android:autoSizeStepGranularity="5sp" | ||
220 | android:autoSizeTextType="uniform" | ||
221 | android:gravity="center" | ||
222 | android:text="Inventeario 4 Cerrado. Articulos 100 12/12/2020 12:00" | ||
223 | android:textColor="@android:color/black" | ||
224 | android:textStyle="bold" /> | ||
225 | </LinearLayout> | ||
226 | </androidx.cardview.widget.CardView> | ||
227 | <!-- COLUMNA 2--> | ||
228 | <androidx.cardview.widget.CardView | ||
229 | android:layout_width="0dp" | ||
230 | android:layout_height="0dp" | ||
231 | android:layout_rowWeight="1" | ||
232 | android:layout_columnWeight="1" | ||
233 | android:layout_margin="15dp" | ||
234 | app:cardCornerRadius="8dp" | ||
235 | app:cardElevation="8dp"> | ||
236 | |||
237 | <LinearLayout | ||
238 | android:layout_width="wrap_content" | ||
239 | android:layout_height="wrap_content" | ||
240 | android:layout_gravity="center_horizontal|center_vertical" | ||
241 | android:layout_margin="15dp" | ||
242 | android:orientation="vertical"> | ||
243 | |||
244 | <androidx.appcompat.widget.AppCompatImageView | ||
245 | android:layout_width="wrap_content" | ||
246 | android:layout_height="wrap_content" | ||
247 | android:layout_gravity="center_horizontal" | ||
248 | android:src="@drawable/inventario" /> | ||
249 | |||
250 | <androidx.appcompat.widget.AppCompatTextView | ||
251 | android:id="@+id/inventario8" | ||
252 | android:layout_width="wrap_content" | ||
253 | android:layout_height="100dp" | ||
254 | |||
255 | android:autoSizeMaxTextSize="150sp" | ||
256 | android:autoSizeMinTextSize="15sp" | ||
257 | android:autoSizeStepGranularity="5sp" | ||
258 | android:autoSizeTextType="uniform" | ||
259 | android:gravity="center" | ||
260 | android:text="Inventeario 4 Cerrado. Articulos 100 12/12/2020 12:00" | ||
261 | android:textColor="@android:color/black" | ||
262 | android:textStyle="bold" /> | ||
263 | </LinearLayout> | ||
264 | </androidx.cardview.widget.CardView> | ||
265 | |||
266 | </GridLayout> | ||
267 | </ScrollView> | ||
268 | |||
269 | <androidx.constraintlayout.widget.Guideline | ||
270 | android:id="@+id/guideline0" | ||
271 | android:layout_width="wrap_content" | ||
272 | android:layout_height="wrap_content" | ||
273 | android:orientation="horizontal" | ||
274 | app:layout_constraintGuide_percent="0.03" /> | ||
275 | |||
276 | <androidx.constraintlayout.widget.Guideline | ||
277 | android:id="@+id/guideline" | ||
278 | android:layout_width="wrap_content" | ||
279 | android:layout_height="wrap_content" | ||
280 | android:orientation="horizontal" | ||
281 | app:layout_constraintGuide_percent="0.15"/> | ||
282 | |||
283 | <androidx.constraintlayout.widget.Guideline | ||
284 | android:id="@+id/guideline2" | ||
285 | android:layout_width="wrap_content" | ||
286 | android:layout_height="wrap_content" | ||
287 | android:orientation="horizontal" | ||
288 | app:layout_constraintGuide_percent="0.55" /> | ||
289 | |||
290 | <androidx.constraintlayout.widget.Guideline | ||
291 | android:id="@+id/guideline3" | ||
292 | android:layout_width="wrap_content" | ||
293 | android:layout_height="wrap_content" | ||
294 | android:orientation="horizontal" | ||
295 | app:layout_constraintGuide_percent="0.62" /> | ||
296 | |||
297 | <androidx.constraintlayout.widget.Guideline | ||
298 | android:id="@+id/guideline4" | ||
299 | android:layout_width="wrap_content" | ||
300 | android:layout_height="wrap_content" | ||
301 | android:orientation="horizontal" | ||
302 | app:layout_constraintGuide_percent="0.95" /> | ||
303 | </androidx.constraintlayout.widget.ConstraintLayout> |
app/src/main/res/layout/fragment_servidores.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="match_parent" | ||
7 | tools:context=".ui.servidores.ServidoresFragment"> | ||
8 | |||
9 | |||
10 | <androidx.appcompat.widget.AppCompatTextView | ||
11 | android:id="@+id/tvTitutloServer" | ||
12 | android:layout_width="match_parent" | ||
13 | android:layout_height="90dp" | ||
14 | android:layout_marginStart="8dp" | ||
15 | android:layout_marginTop="15dp" | ||
16 | android:layout_marginEnd="8dp" | ||
17 | android:autoSizeMaxTextSize="100sp" | ||
18 | android:autoSizeMinTextSize="20sp" | ||
19 | android:autoSizeStepGranularity="5sp" | ||
20 | android:autoSizeTextType="uniform" | ||
21 | android:gravity="center" | ||
22 | android:lines="1" | ||
23 | android:text="@string/tvTitutloServer" | ||
24 | android:textColor="@color/colorAccent" | ||
25 | app:fontFamily="sans-serif-condensed" | ||
26 | app:layout_constraintBottom_toTopOf="@id/guideline2" | ||
27 | app:layout_constraintEnd_toEndOf="parent" | ||
28 | app:layout_constraintStart_toStartOf="parent" | ||
29 | app:layout_constraintTop_toTopOf="parent" /> | ||
30 | |||
31 | <TextView | ||
32 | android:id="@+id/tvDirServer" | ||
33 | android:layout_width="match_parent" | ||
34 | android:layout_height="wrap_content" | ||
35 | android:layout_marginStart="8dp" | ||
36 | android:layout_marginEnd="8dp" | ||
37 | android:gravity="center" | ||
38 | android:lines="1" | ||
39 | android:text="@string/tvDirServer" | ||
40 | android:textColor="@android:color/black" | ||
41 | android:textSize="@dimen/TitulosMedios" | ||
42 | android:textStyle="bold|italic" | ||
43 | app:fontFamily="sans-serif-condensed" | ||
44 | app:layout_constraintBottom_toTopOf="@+id/etDireccionServidor" | ||
45 | app:layout_constraintEnd_toEndOf="parent" | ||
46 | app:layout_constraintStart_toStartOf="parent" | ||
47 | app:layout_constraintTop_toBottomOf="@id/guideline3" | ||
48 | app:layout_constraintVertical_bias="0.451" /> | ||
49 | |||
50 | <TextView | ||
51 | android:id="@+id/tvNomServer" | ||
52 | android:layout_width="match_parent" | ||
53 | android:layout_height="wrap_content" | ||
54 | android:layout_marginStart="8dp" | ||
55 | android:layout_marginEnd="8dp" | ||
56 | android:layout_marginTop="15dp" | ||
57 | android:gravity="center" | ||
58 | android:lines="2" | ||
59 | android:text="@string/tvNomServer" | ||
60 | android:textColor="@android:color/black" | ||
61 | android:textSize="@dimen/TitulosMedios" | ||
62 | android:textStyle="bold|italic" | ||
63 | app:fontFamily="sans-serif-condensed" | ||
64 | app:layout_constraintBottom_toTopOf="@+id/etNombreServidor" | ||
65 | app:layout_constraintEnd_toEndOf="parent" | ||
66 | app:layout_constraintStart_toStartOf="parent" | ||
67 | app:layout_constraintTop_toBottomOf="@id/guideline2" /> | ||
68 | |||
69 | <EditText | ||
70 | android:id="@+id/etNombreServidor" | ||
71 | android:layout_width="match_parent" | ||
72 | android:layout_height="wrap_content" | ||
73 | android:autofillHints="" | ||
74 | android:clickable="true" | ||
75 | android:ems="10" | ||
76 | android:focusable="true" | ||
77 | android:inputType="text" | ||
78 | android:lines="1" | ||
79 | android:text="" | ||
80 | android:textSize="15sp" | ||
81 | app:layout_constraintBottom_toTopOf="@id/guideline3" | ||
82 | app:layout_constraintEnd_toEndOf="parent" | ||
83 | app:layout_constraintHorizontal_bias="0.0" | ||
84 | app:layout_constraintStart_toStartOf="parent" | ||
85 | app:layout_constraintTop_toBottomOf="@+id/tvNomServer" /> | ||
86 | |||
87 | <EditText | ||
88 | android:id="@+id/etDireccionServidor" | ||
89 | android:layout_width="0dp" | ||
90 | android:layout_height="wrap_content" | ||
91 | android:layout_marginStart="8dp" | ||
92 | android:layout_marginEnd="8dp" | ||
93 | android:clickable="true" | ||
94 | android:ems="10" | ||
95 | android:focusable="true" | ||
96 | android:inputType="text" | ||
97 | android:lines="1" | ||
98 | android:text="" | ||
99 | android:textSize="15sp" | ||
100 | app:layout_constraintBottom_toTopOf="@id/guideline4" | ||
101 | app:layout_constraintEnd_toEndOf="parent" | ||
102 | app:layout_constraintStart_toStartOf="parent" | ||
103 | app:layout_constraintTop_toTopOf="@+id/tvDirServer" /> | ||
104 | |||
105 | <androidx.recyclerview.widget.RecyclerView | ||
106 | android:id="@+id/rvServidores" | ||
107 | android:layout_width="match_parent" | ||
108 | android:layout_height="0dp" | ||
109 | android:background="@android:color/darker_gray" | ||
110 | app:layout_constraintBottom_toBottomOf="@+id/guideline5" | ||
111 | app:layout_constraintEnd_toEndOf="parent" | ||
112 | app:layout_constraintStart_toStartOf="parent" | ||
113 | app:layout_constraintTop_toBottomOf="@+id/guideline4" | ||
114 | tools:listitem="@layout/item_servidores" /> | ||
115 | |||
116 | <Button | ||
117 | android:id="@+id/btnGuardarServidores" | ||
118 | android:layout_width="0dp" | ||
119 | android:layout_height="wrap_content" | ||
120 | android:text="@string/btnGuardarServidores" | ||
121 | app:layout_constraintBottom_toBottomOf="@+id/guideline6" | ||
122 | app:layout_constraintEnd_toEndOf="parent" | ||
123 | app:layout_constraintStart_toStartOf="parent" /> | ||
124 | |||
125 | |||
126 | <androidx.constraintlayout.widget.Guideline | ||
127 | android:id="@+id/guideline2" | ||
128 | android:layout_width="wrap_content" | ||
129 | android:layout_height="wrap_content" | ||
130 | android:orientation="horizontal" | ||
131 | app:layout_constraintGuide_percent="0.15" /> | ||
132 | |||
133 | <androidx.constraintlayout.widget.Guideline | ||
134 | android:id="@+id/guideline3" | ||
135 | android:layout_width="wrap_content" | ||
136 | android:layout_height="wrap_content" | ||
137 | android:orientation="horizontal" | ||
138 | app:layout_constraintGuide_percent="0.25" /> | ||
139 | |||
140 | <androidx.constraintlayout.widget.Guideline | ||
141 | android:id="@+id/guideline4" | ||
142 | android:layout_width="wrap_content" | ||
143 | android:layout_height="wrap_content" | ||
144 | android:orientation="horizontal" | ||
145 | app:layout_constraintGuide_percent="0.5" /> | ||
146 | |||
147 | <androidx.constraintlayout.widget.Guideline | ||
148 | android:id="@+id/guideline5" | ||
149 | android:layout_width="wrap_content" | ||
150 | android:layout_height="wrap_content" | ||
151 | android:orientation="horizontal" | ||
152 | app:layout_constraintGuide_percent="0.80" /> | ||
153 | |||
154 | <androidx.constraintlayout.widget.Guideline | ||
155 | android:id="@+id/guideline6" | ||
156 | android:layout_width="wrap_content" | ||
157 | android:layout_height="wrap_content" | ||
158 | android:orientation="horizontal" | ||
159 | app:layout_constraintGuide_percent="0.88" /> | ||
160 | </androidx.constraintlayout.widget.ConstraintLayout> | ||
161 |
app/src/main/res/layout/ingresar_cantidad.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.cardview.widget.CardView | ||
3 | xmlns:android="http://schemas.android.com/apk/res/android" | ||
4 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
5 | xmlns:tools="http://schemas.android.com/tools" | ||
6 | android:layout_width="match_parent" | ||
7 | android:layout_height="wrap_content" | ||
8 | app:cardCornerRadius="10dp" | ||
9 | app:cardElevation="5dp" | ||
10 | android:background="@drawable/md_transparent" | ||
11 | tools:context=".ui.inventario.InsertCant" | ||
12 | tools:ignore="PrivateResource"> | ||
13 | |||
14 | |||
15 | <androidx.constraintlayout.widget.ConstraintLayout | ||
16 | android:layout_width="match_parent" | ||
17 | android:layout_height="match_parent"> | ||
18 | |||
19 | <LinearLayout | ||
20 | android:id="@+id/barraSuperior" | ||
21 | android:layout_width="0dp" | ||
22 | android:layout_height="wrap_content" | ||
23 | android:background="@color/colorPrimaryDark" | ||
24 | android:orientation="horizontal" | ||
25 | app:layout_constraintLeft_toLeftOf="parent" | ||
26 | app:layout_constraintRight_toRightOf="parent" | ||
27 | app:layout_constraintTop_toTopOf="parent" | ||
28 | app:layout_constraintTop_toBottomOf="@+id/lySegundo"> | ||
29 | |||
30 | <androidx.appcompat.widget.AppCompatTextView | ||
31 | android:layout_width="0dp" | ||
32 | android:layout_height="wrap_content" | ||
33 | android:layout_margin="10dp" | ||
34 | android:layout_marginStart="5dp" | ||
35 | android:layout_marginTop="10dp" | ||
36 | android:layout_weight="1" | ||
37 | android:text="@string/adv" | ||
38 | android:textAlignment="center" | ||
39 | android:textColor="@android:color/white" | ||
40 | android:textSize="25sp" | ||
41 | android:textStyle="bold" /> | ||
42 | </LinearLayout> | ||
43 | |||
44 | |||
45 | <LinearLayout | ||
46 | android:id="@+id/lySegundo" | ||
47 | android:layout_width="match_parent" | ||
48 | android:layout_height="wrap_content" | ||
49 | android:orientation="vertical" | ||
50 | android:padding="12dp" | ||
51 | app:layout_constraintLeft_toLeftOf="parent" | ||
52 | app:layout_constraintRight_toRightOf="parent" | ||
53 | app:layout_constraintTop_toBottomOf="@id/barraSuperior"> | ||
54 | |||
55 | |||
56 | |||
57 | <EditText | ||
58 | android:id="@+id/etCantidad" | ||
59 | android:layout_width="match_parent" | ||
60 | android:layout_height="wrap_content" | ||
61 | android:ems="10" | ||
62 | android:gravity="center" | ||
63 | android:textSize="20sp" | ||
64 | android:focusable="true" | ||
65 | android:clickable="true" | ||
66 | android:inputType="numberDecimal" | ||
67 | android:text="" /> | ||
68 | |||
69 | |||
70 | <androidx.appcompat.widget.AppCompatButton | ||
71 | android:id="@+id/btnAceptar" | ||
72 | android:layout_width="match_parent" | ||
73 | android:layout_height="wrap_content" | ||
74 | android:layout_margin="10dp" | ||
75 | android:layout_marginBottom="20dp" | ||
76 | android:clickable="true" | ||
77 | android:focusable="true" | ||
78 | android:text="@string/btnConfirmar" | ||
79 | android:textAlignment="center" | ||
80 | android:textColor="@android:color/black" | ||
81 | android:textSize="20sp" | ||
82 | android:textStyle="bold" | ||
83 | app:cardBackgroundColor="@android:color/darker_gray" | ||
84 | app:cardUseCompatPadding="true" /> | ||
85 | |||
86 | |||
87 | </LinearLayout> | ||
88 | |||
89 | |||
90 | </androidx.constraintlayout.widget.ConstraintLayout> | ||
91 | </androidx.cardview.widget.CardView> |
app/src/main/res/layout/item.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="wrap_content" | ||
7 | android:layout_margin="5dp" | ||
8 | app:cardCornerRadius="2dp" | ||
9 | app:cardElevation="10dp" | ||
10 | app:contentPadding="5dp" | ||
11 | app:cardPreventCornerOverlap="false"> | ||
12 | |||
13 | <androidx.constraintlayout.widget.ConstraintLayout | ||
14 | android:layout_width="match_parent" | ||
15 | android:layout_height="wrap_content"> | ||
16 | |||
17 | <TextView | ||
18 | android:id="@+id/textView2" | ||
19 | android:layout_width="wrap_content" | ||
20 | android:layout_height="wrap_content" | ||
21 | android:layout_marginStart="5dp" | ||
22 | android:text="Código:" | ||
23 | android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Large" | ||
24 | android:textSize="14sp" | ||
25 | app:layout_constraintEnd_toStartOf="@+id/tvSector" | ||
26 | app:layout_constraintHorizontal_bias="0.01" | ||
27 | app:layout_constraintHorizontal_chainStyle="packed" | ||
28 | app:layout_constraintStart_toStartOf="parent" | ||
29 | app:layout_constraintTop_toTopOf="parent" /> | ||
30 | |||
31 | |||
32 | <TextView | ||
33 | android:id="@+id/tvSector" | ||
34 | android:layout_width="wrap_content" | ||
35 | android:layout_height="match_parent" | ||
36 | android:layout_marginStart="8dp" | ||
37 | android:text="9999" | ||
38 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
39 | android:textColorHint="@android:color/black" | ||
40 | android:textSize="14sp" | ||
41 | android:textStyle="bold" | ||
42 | app:layout_constraintHorizontal_chainStyle="packed" | ||
43 | app:layout_constraintBaseline_toBaselineOf="@+id/textView2" | ||
44 | app:layout_constraintEnd_toStartOf="@+id/tvCodigo" | ||
45 | app:layout_constraintStart_toEndOf="@+id/textView2" /> | ||
46 | <TextView | ||
47 | android:id="@+id/tvCodigo" | ||
48 | android:layout_width="wrap_content" | ||
49 | android:layout_height="match_parent" | ||
50 | android:layout_marginStart="8dp" | ||
51 | android:text="99999999" | ||
52 | app:layout_constraintHorizontal_chainStyle="packed" | ||
53 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
54 | android:textColorHint="@android:color/black" | ||
55 | android:textSize="14sp" | ||
56 | android:textStyle="bold" | ||
57 | app:layout_constraintBaseline_toBaselineOf="@+id/tvSector" | ||
58 | app:layout_constraintEnd_toStartOf="@+id/textView5" | ||
59 | app:layout_constraintStart_toEndOf="@+id/tvSector" /> | ||
60 | |||
61 | <TextView | ||
62 | android:id="@+id/textView5" | ||
63 | android:layout_width="wrap_content" | ||
64 | android:layout_height="wrap_content" | ||
65 | android:layout_marginStart="8dp" | ||
66 | android:text="Cantidad:" | ||
67 | android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Large" | ||
68 | android:textSize="14sp" | ||
69 | app:layout_constraintTop_toTopOf="parent" | ||
70 | app:layout_constraintEnd_toStartOf="@+id/tvCodigoBarras" | ||
71 | app:layout_constraintStart_toEndOf="@+id/tvCodigo" /> | ||
72 | |||
73 | <TextView | ||
74 | android:id="@+id/tvCantidad" | ||
75 | android:layout_width="wrap_content" | ||
76 | android:layout_height="match_parent" | ||
77 | android:layout_margin="5dp" | ||
78 | android:text="12345.12" | ||
79 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
80 | android:textSize="14sp" | ||
81 | android:textStyle="bold" | ||
82 | app:layout_constraintBaseline_toBaselineOf="@+id/textView5" | ||
83 | app:layout_constraintEnd_toEndOf="parent" | ||
84 | app:layout_constraintHorizontal_bias="0.0" | ||
85 | app:layout_constraintStart_toEndOf="@id/textView5" | ||
86 | app:layout_constraintTop_toTopOf="parent" /> | ||
87 | |||
88 | <ImageView | ||
89 | android:id="@+id/ivHolder" | ||
90 | android:layout_width="30dp" | ||
91 | android:layout_height="30dp" | ||
92 | android:visibility="visible" | ||
93 | android:src="@drawable/more" | ||
94 | app:layout_constraintBottom_toTopOf="@+id/tvDescripcion" | ||
95 | app:layout_constraintEnd_toEndOf="parent" | ||
96 | app:layout_constraintHorizontal_bias="0.968" | ||
97 | app:layout_constraintStart_toEndOf="@+id/tvCodigoBarras" | ||
98 | app:layout_constraintTop_toTopOf="parent" | ||
99 | app:layout_constraintVertical_bias="0.0" /> | ||
100 | |||
101 | <TextView | ||
102 | android:id="@+id/textView85" | ||
103 | android:layout_width="wrap_content" | ||
104 | android:layout_height="wrap_content" | ||
105 | android:layout_marginStart="5dp" | ||
106 | android:layout_marginTop="8dp" | ||
107 | android:text="Desc:" | ||
108 | android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Large" | ||
109 | android:textSize="14sp" | ||
110 | app:layout_constraintEnd_toStartOf="@+id/tvDescripcion" | ||
111 | app:layout_constraintHorizontal_bias="0.0" | ||
112 | app:layout_constraintHorizontal_chainStyle="packed" | ||
113 | app:layout_constraintStart_toStartOf="parent" | ||
114 | app:layout_constraintTop_toBottomOf="@id/tvCodigo" /> | ||
115 | |||
116 | <TextView | ||
117 | android:id="@+id/tvDescripcion" | ||
118 | android:layout_width="0dp" | ||
119 | android:layout_height="wrap_content" | ||
120 | android:layout_marginStart="3dp" | ||
121 | android:layout_marginTop="8dp" | ||
122 | android:maxLines="2" | ||
123 | android:text="abcdefghijklmnñopqrstuvwxyz0123456789abcdefghijklmnñopqrstuvwxyz" | ||
124 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
125 | android:textSize="14sp" | ||
126 | android:textStyle="bold" | ||
127 | app:layout_constraintBaseline_toBaselineOf="@+id/textView85" | ||
128 | app:layout_constraintEnd_toEndOf="parent" | ||
129 | app:layout_constraintStart_toEndOf="@+id/textView85" | ||
130 | app:layout_constraintTop_toBottomOf="@+id/tvCodigo" /> | ||
131 | |||
132 | <TextView | ||
133 | android:id="@+id/tvCodigoBarras" | ||
134 | android:layout_width="match_parent" | ||
135 | android:layout_height="wrap_content" | ||
136 | android:layout_marginStart="3dp" | ||
137 | android:layout_marginTop="8dp" | ||
138 | android:maxLines="2" | ||
139 | android:text="" | ||
140 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
141 | android:textSize="14sp" | ||
142 | android:visibility="gone" | ||
143 | android:textStyle="bold" | ||
144 | app:layout_constraintBaseline_toBaselineOf="@+id/textView85" | ||
145 | app:layout_constraintEnd_toEndOf="parent" | ||
146 | app:layout_constraintStart_toEndOf="@+id/textView85" | ||
147 | app:layout_constraintTop_toBottomOf="@+id/tvCodigo" /> | ||
148 | |||
149 | </androidx.constraintlayout.widget.ConstraintLayout> | ||
150 | |||
151 | </androidx.cardview.widget.CardView> |
app/src/main/res/layout/item_descripcion.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | android:layout_width="match_parent" | ||
5 | android:layout_height="wrap_content" | ||
6 | android:layout_margin="5dp" | ||
7 | app:cardCornerRadius="2dp" | ||
8 | app:cardElevation="10dp" | ||
9 | app:contentPadding="5dp" | ||
10 | app:cardPreventCornerOverlap="false"> | ||
11 | |||
12 | <androidx.constraintlayout.widget.ConstraintLayout | ||
13 | android:layout_width="match_parent" | ||
14 | android:layout_height="wrap_content"> | ||
15 | |||
16 | <TextView | ||
17 | android:id="@+id/textView2" | ||
18 | android:layout_width="wrap_content" | ||
19 | android:layout_height="wrap_content" | ||
20 | android:layout_marginStart="5dp" | ||
21 | android:text="Código:" | ||
22 | android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Large" | ||
23 | android:textSize="14sp" | ||
24 | app:layout_constraintEnd_toStartOf="@+id/tvSector" | ||
25 | app:layout_constraintHorizontal_bias="0.01" | ||
26 | app:layout_constraintHorizontal_chainStyle="packed" | ||
27 | app:layout_constraintStart_toStartOf="parent" | ||
28 | app:layout_constraintTop_toTopOf="parent" /> | ||
29 | |||
30 | |||
31 | <TextView | ||
32 | android:id="@+id/tvSector" | ||
33 | android:layout_width="wrap_content" | ||
34 | android:layout_height="match_parent" | ||
35 | android:layout_marginStart="8dp" | ||
36 | android:text="9999" | ||
37 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
38 | android:textColorHint="@android:color/black" | ||
39 | android:textSize="14sp" | ||
40 | android:textStyle="bold" | ||
41 | app:layout_constraintHorizontal_chainStyle="packed" | ||
42 | app:layout_constraintBaseline_toBaselineOf="@+id/textView2" | ||
43 | app:layout_constraintEnd_toStartOf="@+id/tvCodigo" | ||
44 | app:layout_constraintStart_toEndOf="@+id/textView2" /> | ||
45 | <TextView | ||
46 | android:id="@+id/tvCodigo" | ||
47 | android:layout_width="wrap_content" | ||
48 | android:layout_height="match_parent" | ||
49 | android:layout_marginStart="8dp" | ||
50 | android:text="99999999" | ||
51 | app:layout_constraintHorizontal_chainStyle="packed" | ||
52 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
53 | android:textColorHint="@android:color/black" | ||
54 | android:textSize="14sp" | ||
55 | android:textStyle="bold" | ||
56 | app:layout_constraintBaseline_toBaselineOf="@+id/tvSector" | ||
57 | app:layout_constraintEnd_toStartOf="@+id/textView5" | ||
58 | app:layout_constraintStart_toEndOf="@+id/tvSector" /> | ||
59 | |||
60 | <TextView | ||
61 | android:id="@+id/textView5" | ||
62 | android:layout_width="wrap_content" | ||
63 | android:layout_height="wrap_content" | ||
64 | android:layout_marginStart="8dp" | ||
65 | android:text="Cantidad:" | ||
66 | android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Large" | ||
67 | android:textSize="14sp" | ||
68 | android:visibility="gone" | ||
69 | app:layout_constraintTop_toTopOf="parent" | ||
70 | app:layout_constraintEnd_toStartOf="@+id/tvCodigoBarras" | ||
71 | app:layout_constraintStart_toEndOf="@+id/tvCodigo" /> | ||
72 | |||
73 | <TextView | ||
74 | android:id="@+id/tvCantidad" | ||
75 | android:layout_width="wrap_content" | ||
76 | android:layout_height="match_parent" | ||
77 | android:layout_marginStart="8dp" | ||
78 | android:text="Otros Códigos:" | ||
79 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
80 | android:textSize="14sp" | ||
81 | android:textStyle="bold" | ||
82 | android:visibility="visible" | ||
83 | app:layout_constraintEnd_toStartOf="@id/tvCodigoBarras" | ||
84 | app:layout_constraintStart_toEndOf="@id/textView5" | ||
85 | app:layout_constraintTop_toTopOf="parent" /> | ||
86 | |||
87 | <TextView | ||
88 | android:id="@+id/tvCodigoBarras" | ||
89 | android:layout_width="0dp" | ||
90 | android:layout_height="wrap_content" | ||
91 | android:layout_marginStart="3dp" | ||
92 | android:maxLines="2" | ||
93 | android:text="" | ||
94 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
95 | android:textSize="14sp" | ||
96 | android:visibility="visible" | ||
97 | android:textStyle="bold" | ||
98 | app:layout_constraintEnd_toEndOf="parent" | ||
99 | app:layout_constraintStart_toEndOf="@+id/tvCantidad" | ||
100 | app:layout_constraintTop_toTopOf="parent"/> | ||
101 | |||
102 | <ImageView | ||
103 | android:id="@+id/ivHolder" | ||
104 | android:layout_width="30dp" | ||
105 | android:layout_height="30dp" | ||
106 | android:visibility="gone" | ||
107 | android:src="@drawable/more" | ||
108 | app:layout_constraintBottom_toTopOf="@+id/tvDescripcion" | ||
109 | app:layout_constraintEnd_toEndOf="parent" | ||
110 | app:layout_constraintHorizontal_bias="0.968" | ||
111 | app:layout_constraintStart_toEndOf="@+id/tvCodigoBarras" | ||
112 | app:layout_constraintTop_toTopOf="parent" | ||
113 | app:layout_constraintVertical_bias="0.0" /> | ||
114 | |||
115 | <TextView | ||
116 | android:id="@+id/textView85" | ||
117 | android:layout_width="wrap_content" | ||
118 | android:layout_height="wrap_content" | ||
119 | android:layout_marginStart="5dp" | ||
120 | android:layout_marginTop="8dp" | ||
121 | android:text="Desc:" | ||
122 | android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Large" | ||
123 | android:textSize="14sp" | ||
124 | app:layout_constraintEnd_toStartOf="@+id/tvDescripcion" | ||
125 | app:layout_constraintHorizontal_bias="0.0" | ||
126 | app:layout_constraintHorizontal_chainStyle="packed" | ||
127 | app:layout_constraintStart_toStartOf="parent" | ||
128 | app:layout_constraintTop_toBottomOf="@id/tvCodigo" /> | ||
129 | |||
130 | <TextView | ||
131 | android:id="@+id/tvDescripcion" | ||
132 | android:layout_width="0dp" | ||
133 | android:layout_height="wrap_content" | ||
134 | android:layout_marginStart="3dp" | ||
135 | android:layout_marginTop="8dp" | ||
136 | android:maxLines="2" | ||
137 | android:text="abcdefghijklmnñopqrstuvwxyz0123456789abcdefghijklmnñopqrstuvwxyz" | ||
138 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
139 | android:textSize="14sp" | ||
140 | android:textStyle="bold" | ||
141 | app:layout_constraintBaseline_toBaselineOf="@+id/textView85" | ||
142 | app:layout_constraintEnd_toEndOf="parent" | ||
143 | app:layout_constraintStart_toEndOf="@+id/textView85" | ||
144 | app:layout_constraintTop_toBottomOf="@+id/tvCodigo" /> | ||
145 | |||
146 | |||
147 | </androidx.constraintlayout.widget.ConstraintLayout> | ||
148 | |||
149 | </androidx.cardview.widget.CardView> |
app/src/main/res/layout/item_principal.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.cardview.widget.CardView | ||
3 | xmlns:android="http://schemas.android.com/apk/res/android" | ||
4 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
5 | android:id="@+id/cvInventario" | ||
6 | android:layout_width="match_parent" | ||
7 | android:layout_height="wrap_content" | ||
8 | android:layout_rowWeight="1" | ||
9 | android:layout_columnWeight="1" | ||
10 | android:layout_margin="15dp" | ||
11 | app:cardCornerRadius="8dp" | ||
12 | app:cardElevation="8dp" | ||
13 | app:layout_constraintBottom_toBottomOf="parent" | ||
14 | app:layout_constraintEnd_toEndOf="parent" | ||
15 | app:layout_constraintStart_toStartOf="parent" | ||
16 | app:layout_constraintTop_toTopOf="parent"> | ||
17 | |||
18 | <LinearLayout | ||
19 | android:layout_width="wrap_content" | ||
20 | android:layout_height="wrap_content" | ||
21 | android:layout_gravity="center_horizontal|center_vertical" | ||
22 | android:layout_margin="15dp" | ||
23 | android:orientation="vertical"> | ||
24 | |||
25 | <androidx.appcompat.widget.AppCompatImageView | ||
26 | android:layout_width="wrap_content" | ||
27 | android:layout_height="wrap_content" | ||
28 | android:layout_gravity="center_horizontal" | ||
29 | android:src="@drawable/inventario" /> | ||
30 | |||
31 | <androidx.appcompat.widget.AppCompatTextView | ||
32 | android:id="@+id/inventario" | ||
33 | android:layout_width="wrap_content" | ||
34 | android:layout_height="60dp" | ||
35 | android:autoSizeMaxTextSize="50sp" | ||
36 | android:autoSizeMinTextSize="15sp" | ||
37 | android:clickable="true" | ||
38 | android:autoSizeStepGranularity="5sp" | ||
39 | android:autoSizeTextType="uniform" | ||
40 | android:gravity="center" | ||
41 | android:inputType="textMultiLine" | ||
42 | android:text="Inventeario 1 Abierto. Articulos 100 12/12/2020 12:00" | ||
43 | android:textColor="@android:color/black" | ||
44 | android:textStyle="bold" /> | ||
45 | </LinearLayout> | ||
46 | </androidx.cardview.widget.CardView> | ||
47 |
app/src/main/res/layout/item_servidores.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:layout_width="match_parent" | ||
6 | android:layout_height="wrap_content" | ||
7 | android:layout_margin="5dp" | ||
8 | app:cardCornerRadius="2dp" | ||
9 | app:cardElevation="10dp" | ||
10 | app:contentPadding="5dp" | ||
11 | app:cardPreventCornerOverlap="false"> | ||
12 | |||
13 | <androidx.constraintlayout.widget.ConstraintLayout | ||
14 | android:layout_width="match_parent" | ||
15 | android:layout_height="wrap_content"> | ||
16 | |||
17 | <TextView | ||
18 | android:id="@+id/textView2" | ||
19 | android:layout_width="wrap_content" | ||
20 | android:layout_height="wrap_content" | ||
21 | android:layout_marginStart="5dp" | ||
22 | android:text="Descripción:" | ||
23 | android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Large" | ||
24 | android:textSize="14sp" | ||
25 | app:layout_constraintEnd_toStartOf="@+id/tvCodigo" | ||
26 | app:layout_constraintHorizontal_bias="0.01" | ||
27 | app:layout_constraintHorizontal_chainStyle="packed" | ||
28 | app:layout_constraintStart_toStartOf="parent" | ||
29 | app:layout_constraintTop_toTopOf="parent" /> | ||
30 | |||
31 | |||
32 | <TextView | ||
33 | android:id="@+id/tvDescServidor" | ||
34 | android:layout_width="0dp" | ||
35 | android:layout_height="match_parent" | ||
36 | android:layout_marginStart="8dp" | ||
37 | android:text="Laboratorio Foca 1" | ||
38 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
39 | android:textColorHint="@android:color/black" | ||
40 | android:textSize="14sp" | ||
41 | android:textStyle="bold" | ||
42 | app:layout_constraintBaseline_toBaselineOf="@+id/textView2" | ||
43 | app:layout_constraintEnd_toEndOf="parent" | ||
44 | app:layout_constraintStart_toEndOf="@+id/textView2" /> | ||
45 | |||
46 | <TextView | ||
47 | android:id="@+id/textView85" | ||
48 | android:layout_width="wrap_content" | ||
49 | android:layout_height="wrap_content" | ||
50 | android:layout_marginStart="5dp" | ||
51 | android:layout_marginTop="8dp" | ||
52 | android:text="Dirección:" | ||
53 | android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Large" | ||
54 | android:textSize="14sp" | ||
55 | app:layout_constraintHorizontal_chainStyle="packed" | ||
56 | app:layout_constraintStart_toStartOf="parent" | ||
57 | app:layout_constraintEnd_toStartOf="@id/tvDireccionServidor" | ||
58 | app:layout_constraintTop_toBottomOf="@id/tvDescServidor" /> | ||
59 | |||
60 | <TextView | ||
61 | android:id="@+id/tvDireccionServidor" | ||
62 | android:layout_width="0dp" | ||
63 | android:layout_height="match_parent" | ||
64 | android:layout_marginStart="8dp" | ||
65 | android:text="http://192.168.0.205:3008" | ||
66 | android:textAppearance="@style/TextAppearance.AppCompat.Large" | ||
67 | android:textColorHint="@android:color/black" | ||
68 | android:textSize="14sp" | ||
69 | android:textStyle="bold" | ||
70 | app:layout_constraintBaseline_toBaselineOf="@+id/textView85" | ||
71 | app:layout_constraintEnd_toEndOf="parent" | ||
72 | app:layout_constraintStart_toEndOf="@+id/textView85" /> | ||
73 | |||
74 | </androidx.constraintlayout.widget.ConstraintLayout> | ||
75 | |||
76 | </androidx.cardview.widget.CardView> |
app/src/main/res/layout/login_dialog.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | android:layout_width="match_parent" | ||
5 | android:layout_height="wrap_content" | ||
6 | android:orientation="vertical" | ||
7 | android:padding="10dp"> | ||
8 | |||
9 | <TextView | ||
10 | android:id="@+id/dialogNameEt" | ||
11 | android:layout_width="wrap_content" | ||
12 | android:layout_height="wrap_content" | ||
13 | android:layout_margin="5dp" | ||
14 | android:text="La cantidad actual es:" | ||
15 | android:textSize="20sp" | ||
16 | app:layout_constraintEnd_toStartOf="@id/tvCantInicial" | ||
17 | app:layout_constraintHorizontal_bias="0.0" | ||
18 | app:layout_constraintHorizontal_chainStyle="packed" | ||
19 | app:layout_constraintStart_toStartOf="parent" | ||
20 | app:layout_constraintTop_toTopOf="parent" /> | ||
21 | |||
22 | <TextView | ||
23 | android:id="@+id/tvCantInicial" | ||
24 | android:layout_width="wrap_content" | ||
25 | android:layout_height="wrap_content" | ||
26 | android:layout_margin="5dp" | ||
27 | android:text="20" | ||
28 | android:textSize="20sp" | ||
29 | app:layout_constraintBaseline_toBaselineOf="@+id/dialogNameEt" | ||
30 | app:layout_constraintEnd_toEndOf="parent" | ||
31 | app:layout_constraintHorizontal_chainStyle="packed" | ||
32 | app:layout_constraintStart_toEndOf="@id/dialogNameEt" /> | ||
33 | |||
34 | <TextView | ||
35 | android:id="@+id/tvgenerico" | ||
36 | android:layout_width="wrap_content" | ||
37 | android:layout_height="wrap_content" | ||
38 | android:layout_margin="5dp" | ||
39 | android:text="Ingrese la nueva cantidad:" | ||
40 | android:textSize="20sp" | ||
41 | app:layout_constraintStart_toStartOf="parent" | ||
42 | app:layout_constraintTop_toBottomOf="@+id/tvCantInicial" /> | ||
43 | |||
44 | <EditText | ||
45 | android:id="@+id/tvNuevaCantidad" | ||
46 | android:layout_width="0dp" | ||
47 | android:layout_height="wrap_content" | ||
48 | android:hint="Nueva Cacntidad" | ||
49 | android:inputType="numberDecimal" | ||
50 | app:layout_constraintBaseline_toBaselineOf="@+id/tvgenerico" | ||
51 | app:layout_constraintEnd_toEndOf="parent" | ||
52 | app:layout_constraintStart_toEndOf="@id/tvgenerico" /> | ||
53 | |||
54 | <TextView | ||
55 | android:id="@+id/tvgenerico2" | ||
56 | android:layout_width="wrap_content" | ||
57 | android:layout_height="wrap_content" | ||
58 | android:layout_margin="5dp" | ||
59 | android:gravity="center" | ||
60 | android:text="@string/tvSeleccion" | ||
61 | android:textSize="20sp" | ||
62 | app:layout_constraintStart_toStartOf="parent" | ||
63 | app:layout_constraintTop_toBottomOf="@+id/tvgenerico" /> | ||
64 | |||
65 | <RadioGroup | ||
66 | android:id="@+id/rgFechaHora" | ||
67 | android:layout_width="wrap_content" | ||
68 | android:layout_height="wrap_content" | ||
69 | android:layout_margin="5dp" | ||
70 | android:gravity="start" | ||
71 | android:orientation="vertical" | ||
72 | app:layout_constraintEnd_toEndOf="parent" | ||
73 | app:layout_constraintHorizontal_bias="0.0" | ||
74 | app:layout_constraintStart_toStartOf="parent" | ||
75 | app:layout_constraintTop_toBottomOf="@+id/tvgenerico2"> | ||
76 | |||
77 | |||
78 | <RadioButton | ||
79 | android:id="@+id/rbMdodificar" | ||
80 | android:layout_width="wrap_content" | ||
81 | android:layout_height="wrap_content" | ||
82 | android:layout_margin="5dp" | ||
83 | android:checked="false" | ||
84 | android:padding="5dp" | ||
85 | android:text="@string/rbModificar" | ||
86 | android:textSize="@dimen/text_size2" /> | ||
87 | |||
88 | <RadioButton | ||
89 | android:id="@+id/rbSumar" | ||
90 | android:layout_width="wrap_content" | ||
91 | android:layout_height="wrap_content" | ||
92 | android:layout_margin="5dp" | ||
93 | android:checked="false" | ||
94 | android:padding="5dp" | ||
95 | android:text="@string/rbSumar" | ||
96 | android:textSize="@dimen/text_size2" /> | ||
97 | |||
98 | <RadioButton | ||
99 | android:id="@+id/rbRestar" | ||
100 | android:layout_width="wrap_content" | ||
101 | android:layout_height="wrap_content" | ||
102 | android:layout_margin="5dp" | ||
103 | android:checked="false" | ||
104 | android:padding="5dp" | ||
105 | android:text="@string/rbRestar" | ||
106 | android:textSize="@dimen/text_size2" /> | ||
107 | </RadioGroup> | ||
108 | |||
109 | <TextView | ||
110 | android:id="@+id/tvgenerico3" | ||
111 | android:layout_width="wrap_content" | ||
112 | android:layout_height="wrap_content" | ||
113 | android:layout_margin="5dp" | ||
114 | android:gravity="center" | ||
115 | android:text="@string/tvResultado" | ||
116 | android:textSize="20sp" | ||
117 | app:layout_constraintEnd_toEndOf="parent" | ||
118 | app:layout_constraintHorizontal_bias="0.0" | ||
119 | app:layout_constraintStart_toStartOf="parent" | ||
120 | app:layout_constraintTop_toBottomOf="@+id/rgFechaHora" /> | ||
121 | |||
122 | <TextView | ||
123 | android:id="@+id/tvgenerico4" | ||
124 | android:layout_width="wrap_content" | ||
125 | android:layout_height="wrap_content" | ||
126 | android:layout_margin="5dp" | ||
127 | android:gravity="center" | ||
128 | android:text="50" | ||
129 | android:textSize="20sp" | ||
130 | app:layout_constraintEnd_toEndOf="parent" | ||
131 | app:layout_constraintHorizontal_bias="0.0" | ||
132 | app:layout_constraintStart_toEndOf="@+id/tvgenerico3" | ||
133 | app:layout_constraintTop_toBottomOf="@+id/rgFechaHora" /> | ||
134 | |||
135 | <LinearLayout | ||
136 | android:layout_width="match_parent" | ||
137 | android:layout_height="wrap_content" | ||
138 | android:orientation="horizontal" | ||
139 | android:gravity="center" | ||
140 | app:layout_constraintStart_toStartOf="parent" | ||
141 | app:layout_constraintEnd_toEndOf="parent" | ||
142 | app:layout_constraintTop_toBottomOf="@+id/tvgenerico4"> | ||
143 | |||
144 | <Button | ||
145 | android:id="@+id/dialogLoginBtn" | ||
146 | style="@style/Base.Widget.AppCompat.Button.Colored" | ||
147 | android:layout_width="wrap_content" | ||
148 | android:padding="20dp" | ||
149 | android:layout_margin="5dp" | ||
150 | android:layout_height="wrap_content" | ||
151 | android:text="@string/btnOk" /> | ||
152 | |||
153 | <Button | ||
154 | android:id="@+id/dialogCancelBtn" | ||
155 | style="@style/Base.Widget.AppCompat.Button.Colored" | ||
156 | android:padding="20dp" | ||
157 | android:layout_margin="5dp" | ||
158 | android:layout_width="wrap_content" | ||
159 | android:layout_height="wrap_content" | ||
160 | android:text="@string/btnCancelar" /> | ||
161 | </LinearLayout> | ||
162 | |||
163 | </androidx.constraintlayout.widget.ConstraintLayout> |
app/src/main/res/layout/nav_header_main.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | android:layout_width="match_parent" | ||
5 | android:layout_height="@dimen/nav_header_height" | ||
6 | android:background="@drawable/side_nav_bar" | ||
7 | android:gravity="bottom" | ||
8 | android:orientation="vertical" | ||
9 | android:paddingLeft="@dimen/activity_horizontal_margin" | ||
10 | android:paddingTop="@dimen/activity_vertical_margin" | ||
11 | android:paddingRight="@dimen/activity_horizontal_margin" | ||
12 | android:paddingBottom="@dimen/activity_vertical_margin" | ||
13 | android:theme="@style/ThemeOverlay.AppCompat.Dark"> | ||
14 | |||
15 | <ImageView | ||
16 | android:id="@+id/imageView" | ||
17 | android:layout_width="141dp" | ||
18 | android:layout_height="wrap_content" | ||
19 | android:contentDescription=" " | ||
20 | android:paddingTop="@dimen/nav_header_vertical_spacing" | ||
21 | app:srcCompat="@drawable/logo" /> | ||
22 | |||
23 | <TextView | ||
24 | android:layout_width="match_parent" | ||
25 | android:layout_height="wrap_content" | ||
26 | android:paddingTop="@dimen/nav_header_vertical_spacing" | ||
27 | android:textSize="@dimen/md_message_textsize" | ||
28 | android:text="Debo Inventario" | ||
29 | android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> | ||
30 | |||
31 | <TextView | ||
32 | android:id="@+id/textView" | ||
33 | android:layout_width="wrap_content" | ||
34 | android:layout_height="wrap_content" | ||
35 | android:text="FocaSoftware SA" /> | ||
36 | </LinearLayout> |
app/src/main/res/layout/z_dialogpersocomplexcantidad_modificacion.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | android:layout_width="match_parent" | ||
4 | android:layout_height="match_parent" | ||
5 | android:gravity="center_horizontal" | ||
6 | android:orientation="vertical"> | ||
7 | |||
8 | <TableLayout | ||
9 | android:layout_width="wrap_content" | ||
10 | android:layout_height="wrap_content"> | ||
11 | |||
12 | <TableRow | ||
13 | android:layout_width="wrap_content" | ||
14 | android:layout_height="wrap_content" | ||
15 | android:gravity="center_vertical"> | ||
16 | |||
17 | <TextView | ||
18 | android:layout_width="200dp" | ||
19 | android:layout_height="wrap_content" | ||
20 | android:gravity="end" | ||
21 | android:text="Cantidad actual: " | ||
22 | android:textSize="20sp" /> | ||
23 | |||
24 | <TextView | ||
25 | android:id="@+id/Z_DIALOG_cantidad_actual" | ||
26 | android:layout_width="50dp" | ||
27 | android:layout_height="wrap_content" | ||
28 | android:gravity="center" | ||
29 | android:text="13" | ||
30 | android:textSize="20sp" /> | ||
31 | </TableRow> | ||
32 | |||
33 | <TableRow | ||
34 | android:layout_width="wrap_content" | ||
35 | android:layout_height="wrap_content" | ||
36 | android:gravity="center_vertical"> | ||
37 | |||
38 | <TextView | ||
39 | android:layout_width="wrap_content" | ||
40 | android:layout_height="wrap_content" | ||
41 | android:gravity="end" | ||
42 | android:text="Cantidad previsional: " | ||
43 | android:textSize="20sp" /> | ||
44 | |||
45 | <TextView | ||
46 | android:id="@+id/Z_DIALOG_cantidad_final" | ||
47 | android:layout_width="wrap_content" | ||
48 | android:layout_height="wrap_content" | ||
49 | android:gravity="center" | ||
50 | android:text="24" | ||
51 | android:textSize="20sp" /> | ||
52 | </TableRow> | ||
53 | </TableLayout> | ||
54 | |||
55 | <LinearLayout | ||
56 | android:layout_width="wrap_content" | ||
57 | android:layout_height="wrap_content" | ||
58 | android:layout_marginTop="10dp" | ||
59 | android:gravity="center_vertical" | ||
60 | android:orientation="horizontal"> | ||
61 | |||
62 | <TextView | ||
63 | android:id="@+id/Z_DIALOG_tipo_operacion" | ||
64 | android:layout_width="wrap_content" | ||
65 | android:layout_height="wrap_content" | ||
66 | android:gravity="end" | ||
67 | android:text="SUMAR: " | ||
68 | android:textSize="20sp" /> | ||
69 | |||
70 | <EditText | ||
71 | android:id="@+id/Z_DIALOG_cantidad_nueva" | ||
72 | android:layout_width="120dp" | ||
73 | android:layout_height="50dp" | ||
74 | android:clickable="true" | ||
75 | android:focusable="true" | ||
76 | android:gravity="center" | ||
77 | android:hint="Cantidad" | ||
78 | android:inputType="numberDecimal" | ||
79 | android:maxLength="6" | ||
80 | android:textColor="@android:color/black" | ||
81 | android:textSize="20sp" /> | ||
82 | |||
83 | <Button | ||
84 | android:id="@+id/Z_DIALOG_boton_reset" | ||
85 | android:layout_width="80dp" | ||
86 | android:layout_height="wrap_content" | ||
87 | android:gravity="center" | ||
88 | android:text="No tomado" | ||
89 | android:visibility="gone" /> | ||
90 | </LinearLayout> | ||
91 | |||
92 | <LinearLayout | ||
93 | android:layout_width="wrap_content" | ||
94 | android:layout_height="wrap_content" | ||
95 | android:layout_gravity="center_horizontal" | ||
96 | android:layout_marginTop="10dp" | ||
97 | android:orientation="horizontal"> | ||
98 | |||
99 | <ImageView | ||
100 | android:id="@+id/Z_DIALOG_validar" | ||
101 | android:layout_width="50dp" | ||
102 | android:layout_height="50dp" | ||
103 | android:layout_marginEnd="60dp" | ||
104 | android:contentDescription=" " | ||
105 | android:scaleType="fitXY" | ||
106 | android:src="@drawable/md_transparent" /> | ||
107 | |||
108 | <ImageView | ||
109 | android:id="@+id/Z_DIALOG_cancelar" | ||
110 | android:layout_width="50dp" | ||
111 | android:layout_height="50dp" | ||
112 | android:contentDescription=" " | ||
113 | android:scaleType="fitXY" | ||
114 | android:src="@drawable/md_btn_selected_dark" /> | ||
115 | |||
116 | |||
117 | </LinearLayout> | ||
118 | |||
119 | </LinearLayout> |
app/src/main/res/menu/activity_main_drawer.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:tools="http://schemas.android.com/tools" | ||
4 | tools:showIn="navigation_view"> | ||
5 | |||
6 | <group android:checkableBehavior="single"> | ||
7 | <item | ||
8 | android:id="@+id/mainFragment2" | ||
9 | android:checkable="true" | ||
10 | android:checked="true" | ||
11 | android:icon="@drawable/inicio" | ||
12 | android:title="@string/menuInicio" /> | ||
13 | <item | ||
14 | android:id="@+id/mnuInicio2" | ||
15 | android:checkable="false" | ||
16 | android:checked="false" | ||
17 | |||
18 | android:title="" /> | ||
19 | <item | ||
20 | android:id="@+id/inventarioFragment" | ||
21 | android:icon="@drawable/inventario" | ||
22 | android:title="@string/menuNueInv" /> | ||
23 | <item | ||
24 | android:id="@+id/mnuInicio3" | ||
25 | android:checkable="false" | ||
26 | android:checked="false" | ||
27 | android:title="" /> | ||
28 | <item | ||
29 | android:id="@+id/actuaMaestrosFragment" | ||
30 | android:icon="@drawable/maestros" | ||
31 | android:title="@string/menuActMae" /> | ||
32 | <item | ||
33 | android:id="@+id/mnuInicio4" | ||
34 | android:checkable="false" | ||
35 | android:checked="false" | ||
36 | android:title="" /> | ||
37 | <item | ||
38 | android:id="@+id/configuracionFragment" | ||
39 | android:icon="@drawable/configuracion" | ||
40 | android:title="@string/menuConf" /> | ||
41 | </group> | ||
42 | </menu> |
app/src/main/res/menu/main.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto"> | ||
4 | <item | ||
5 | android:id="@+id/action_settings" | ||
6 | android:orderInCategory="100" | ||
7 | android:title="@string/action_settings" | ||
8 | app:showAsAction="never" /> | ||
9 | </menu> |
app/src/main/res/menu/prueba.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <menu xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | <group android:checkableBehavior="single"> | ||
4 | <item | ||
5 | android:id="@+id/mainFragment2" | ||
6 | android:checkable="true" | ||
7 | android:checked="true" | ||
8 | android:icon="@drawable/inicio" | ||
9 | android:title="@string/menuInicio" /> | ||
10 | <item | ||
11 | android:id="@+id/configuracionFragment" | ||
12 | android:icon="@drawable/configuracion" | ||
13 | android:title="@string/menuConf" /> | ||
14 | </group> | ||
15 | </menu> |
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | <background android:drawable="@drawable/ic_launcher_background" /> | ||
4 | <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
5 | </adaptive-icon> |
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
3 | <background android:drawable="@drawable/ic_launcher_background" /> | ||
4 | <foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
5 | </adaptive-icon> |
app/src/main/res/mipmap-hdpi/ic_launcher.png
3.51 KB
app/src/main/res/mipmap-hdpi/ic_launcher_round.png
5.21 KB
app/src/main/res/mipmap-mdpi/ic_launcher.png
2.57 KB
app/src/main/res/mipmap-mdpi/ic_launcher_round.png
3.31 KB
app/src/main/res/mipmap-xhdpi/ic_launcher.png
4.81 KB
app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
7.3 KB
app/src/main/res/mipmap-xxhdpi/ic_launcher.png
7.72 KB
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
11.6 KB
app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
10.4 KB
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
16.2 KB
app/src/main/res/navigation/mobile_navigation.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <navigation xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | xmlns:tools="http://schemas.android.com/tools" | ||
5 | android:id="@+id/mobile_navigation" | ||
6 | app:startDestination="@id/mainFragment2"> | ||
7 | |||
8 | <activity | ||
9 | android:id="@+id/mainActivity" | ||
10 | android:name="com.focasoftware.deboinventariov20.MainActivity" | ||
11 | android:label="app_bar_main" | ||
12 | tools:layout="@layout/app_bar_main" /> | ||
13 | <fragment | ||
14 | android:id="@+id/mainFragment2" | ||
15 | android:name="com.focasoftware.deboinventariov20.ui.main.MainFragment" | ||
16 | android:label="Principal" | ||
17 | tools:layout="@layout/fragment_main" > | ||
18 | <action | ||
19 | android:id="@+id/action_mainFragment2_to_configuracionFragment" | ||
20 | app:destination="@id/configuracionFragment" | ||
21 | app:popEnterAnim="@anim/slide_in_left" | ||
22 | app:popExitAnim="@anim/slide_out_right" | ||
23 | app:enterAnim="@anim/slide_in_right" | ||
24 | app:exitAnim="@anim/slide_out_left" /> | ||
25 | <action | ||
26 | android:id="@+id/action_mainFragment2_to_actuaMaestrosFragment" | ||
27 | app:destination="@id/actuaMaestrosFragment" | ||
28 | app:popEnterAnim="@anim/slide_in_left" | ||
29 | app:popExitAnim="@anim/slide_out_right" | ||
30 | app:enterAnim="@anim/slide_in_right" | ||
31 | app:exitAnim="@anim/slide_out_left" /> | ||
32 | <action | ||
33 | android:id="@+id/action_mainFragment2_to_inventarioFragment" | ||
34 | app:destination="@id/inventarioFragment" | ||
35 | app:popEnterAnim="@anim/slide_in_left" | ||
36 | app:popExitAnim="@anim/slide_out_right" | ||
37 | app:enterAnim="@anim/slide_in_right" | ||
38 | app:exitAnim="@anim/slide_out_left" /> | ||
39 | </fragment> | ||
40 | <fragment | ||
41 | android:id="@+id/actuaMaestrosFragment" | ||
42 | android:name="com.focasoftware.deboinventariov20.ui.actualizacionMaestros.ActuaMaestrosFragment" | ||
43 | android:label="Actualización de Maestros" | ||
44 | tools:layout="@layout/fragment_actua_maestros" /> | ||
45 | <fragment | ||
46 | android:id="@+id/servidoresFragment" | ||
47 | android:name="com.focasoftware.deboinventariov20.ui.servidores.ServidoresFragment" | ||
48 | android:label="Alta Servidores" | ||
49 | tools:layout="@layout/fragment_servidores"> | ||
50 | <action | ||
51 | android:id="@+id/action_servidoresFragment_to_configuracionFragment" | ||
52 | app:destination="@id/configuracionFragment" | ||
53 | app:enterAnim="@anim/slide_in_right" | ||
54 | app:exitAnim="@anim/slide_out_left" | ||
55 | app:popEnterAnim="@anim/slide_in_left" | ||
56 | app:popExitAnim="@anim/slide_out_right" /> | ||
57 | </fragment> | ||
58 | <fragment | ||
59 | android:id="@+id/inventarioFragment" | ||
60 | android:name="com.focasoftware.deboinventariov20.ui.inventario.InventarioFragment" | ||
61 | android:label="Inventario Dinamico" | ||
62 | tools:layout="@layout/fragment_inventario" > | ||
63 | <action | ||
64 | android:id="@+id/action_inventarioFragment_to_descripcionFragment" | ||
65 | app:destination="@id/descripcionFragment" | ||
66 | app:popEnterAnim="@anim/slide_in_left" | ||
67 | app:popExitAnim="@anim/slide_out_right" | ||
68 | app:enterAnim="@anim/slide_in_right" | ||
69 | app:exitAnim="@anim/slide_out_left" /> | ||
70 | <action | ||
71 | android:id="@+id/action_inventarioFragment_to_mainFragment2" | ||
72 | app:destination="@id/mainFragment2" | ||
73 | app:popEnterAnim="@anim/slide_in_left" | ||
74 | app:popExitAnim="@anim/slide_out_right" | ||
75 | app:enterAnim="@anim/slide_in_right" | ||
76 | app:exitAnim="@anim/slide_out_left"/> | ||
77 | |||
78 | </fragment> | ||
79 | <fragment | ||
80 | android:id="@+id/configuracionFragment" | ||
81 | android:name="com.focasoftware.deboinventariov20.ui.configuracion.ConfiguracionFragment" | ||
82 | android:label="Configuraciones" | ||
83 | tools:layout="@layout/fragment_configuracion" > | ||
84 | <action | ||
85 | android:id="@+id/action_configuracionFragment_to_servidoresFragment" | ||
86 | app:destination="@id/servidoresFragment" | ||
87 | app:popEnterAnim="@anim/slide_in_left" | ||
88 | app:popExitAnim="@anim/slide_out_right" | ||
89 | app:enterAnim="@anim/slide_in_right" | ||
90 | app:exitAnim="@anim/slide_out_left" /> | ||
91 | </fragment> | ||
92 | <fragment | ||
93 | android:id="@+id/descripcionFragment" | ||
94 | android:name="com.focasoftware.deboinventariov20.ui.inventario.DescripcionFragment" | ||
95 | android:label="Productos Encontrados"> | ||
96 | |||
97 | <action | ||
98 | android:id="@+id/action_descripcionFragment_to_inventarioFragment" | ||
99 | app:destination="@id/inventarioFragment" | ||
100 | app:popEnterAnim="@anim/slide_in_left" | ||
101 | app:popExitAnim="@anim/slide_out_right" | ||
102 | app:enterAnim="@anim/slide_in_right" | ||
103 | app:exitAnim="@anim/slide_out_left" | ||
104 | app:popUpTo="@+id/descripcionFragment" | ||
105 | app:popUpToInclusive="true"/> | ||
106 | </fragment> | ||
107 | </navigation> |
app/src/main/res/values/arrays.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <resources> | ||
3 | <string-array name="sort_array"> | ||
4 | <item>Suma</item> | ||
5 | <item>Resta</item> | ||
6 | <item>Modifica</item> | ||
7 | </string-array> | ||
8 | </resources> |
app/src/main/res/values/colors.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <resources> | ||
3 | <color name="colorPrimaryDark">#3700B3</color> | ||
4 | <color name="colorAccent">#03DAC5</color> | ||
5 | <color name="colorPrimary">#085394</color> | ||
6 | <color name="backMenu">#dddddd</color> | ||
7 | <color name="LightGray">#E0E0E0</color> | ||
8 | </resources> |
app/src/main/res/values/dimens.xml
File was created | 1 | <resources> | |
2 | <!-- Default screen margins, per the Android Design guidelines. --> | ||
3 | <dimen name="activity_horizontal_margin">16dp</dimen> | ||
4 | <dimen name="activity_vertical_margin">16dp</dimen> | ||
5 | <dimen name="nav_header_vertical_spacing">8dp</dimen> | ||
6 | <dimen name="nav_header_height">176dp</dimen> | ||
7 | <dimen name="fab_margin">16dp</dimen> | ||
8 | |||
9 | <!-- // Tamaño de los iconos--> | ||
10 | <dimen name="icon_dim">80dp</dimen> | ||
11 | <dimen name="icon_top">20dp</dimen> | ||
12 | <dimen name="text_size">12sp</dimen> | ||
13 | |||
14 | <!-- //fragment inventario--> | ||
15 | <dimen name="subTitulos">20sp</dimen> | ||
16 | |||
17 | <!-- //Normal Size--> | ||
18 | <dimen name="Titulos">40sp</dimen> | ||
19 | <dimen name="TitulosMedios">25sp</dimen> | ||
20 | <dimen name="SubTitulos">15sp</dimen> | ||
21 | |||
22 | <dimen name="MarginTopSubTitulos">5dp</dimen> | ||
23 | <dimen name="MarginTopTitulos">30dp</dimen> | ||
24 | |||
25 | <dimen name="MarginBotAgreSer">10dp</dimen> | ||
26 | <dimen name="NormalText">10sp</dimen> | ||
27 | |||
28 | <dimen name="PadingCbyRb">5dp</dimen> | ||
29 | |||
30 | <!-- //fragemnt Actualizacion de Maestros--> | ||
31 | <dimen name="TitulosActMa">20sp</dimen> | ||
32 | |||
33 | |||
34 | <dimen name="md_message_textsize">20sp</dimen> | ||
35 | <dimen name="text_size2">16sp</dimen> | ||
36 | <dimen name="list_item_spacing">16dp</dimen> | ||
37 | <dimen name="list_item_spacing_half">8dp</dimen> | ||
38 | </resources> |
app/src/main/res/values/strings.xml
File was created | 1 | <resources> | |
2 | |||
3 | <string name="nav_header_title">Android Studio</string> | ||
4 | <string name="nav_header_subtitle">android.studio@android.com</string> | ||
5 | <string name="nav_header_desc">Navigation header</string> | ||
6 | <string name="action_settings">Settings</string> | ||
7 | |||
8 | <string name="menu_home">Home</string> | ||
9 | <string name="menu_gallery">Gallery</string> | ||
10 | <string name="menu_slideshow">Slideshow</string> | ||
11 | |||
12 | <string name="app_name">Inventario Dinamicos</string> | ||
13 | |||
14 | <!-- menu--> | ||
15 | <string name="menuInicio">Inicio</string> | ||
16 | <string name="menuNueInv">Nuevo Inventario</string> | ||
17 | <string name="menuActMae">Actualizar Maestros</string> | ||
18 | <string name="menuConf">Configuraciones</string> | ||
19 | <string name="menuSal">Salir</string> | ||
20 | |||
21 | <!-- Menu header--> | ||
22 | <string name="menuLeyenda">Debo Inventario</string> | ||
23 | |||
24 | <string name="navigation_drawer_open">Open navigation drawer</string> | ||
25 | <string name="navigation_drawer_close">Close navigation drawer</string> | ||
26 | |||
27 | <!-- Pantalla de inicio--> | ||
28 | <string name="bien">Bienvenido</string> | ||
29 | <string name="debo">DEBO®</string> | ||
30 | <string name="inventario">Inventario</string> | ||
31 | <string name="todo">TODO</string> | ||
32 | <string name="hello_blank_fragment">Hello blank fragment</string> | ||
33 | |||
34 | <!-- inventarios dinamicos--> | ||
35 | <string name="invDinamicoVenta">Inventarios Dinamicos</string> | ||
36 | <string name="invDinamicoCompra">Inventarios Sectorizados</string> | ||
37 | |||
38 | <!-- ventana emergente--> | ||
39 | <string name="adv">Ingrese la cantidad contada</string> | ||
40 | <string name="invVentas">Inventarios Dinamicos de Ventas</string> | ||
41 | <string name="btnConfirmar">Confirmar</string> | ||
42 | <string name="btnCancela">Cancelar</string> | ||
43 | |||
44 | |||
45 | <!-- Fragment Inventario--> | ||
46 | <string name="invTitulo">Inventarios Dinamicos</string> | ||
47 | <string name="invTituloV">Inventarios de Ventas</string> | ||
48 | <string name="invTituloD">Inventarios de Depositos</string> | ||
49 | <string name="invCodigoBarras">Código Barras:</string> | ||
50 | <string name="btnExportarInv">Exportar Inventario</string> | ||
51 | <string name="btnBorrarInv">Borrar Inventario</string> | ||
52 | <string name="switch_1">+ 1</string> | ||
53 | |||
54 | <!-- Fragmento Configuraciones--> | ||
55 | <string name="tvTituloConf">Configuraciones</string> | ||
56 | <string name="tvSeleccioneServidor">Seleccione un Servidor</string> | ||
57 | <string name="btnValidarServidor">Validar</string> | ||
58 | <string name="btnAgregarServidor">Agregar un nuevo servidor</string> | ||
59 | <string name="tvUbicacionCarpetas">Ubicación de las carpetas de uso interno</string> | ||
60 | <string name="tvTituloArea">Area de Invetnario</string> | ||
61 | <string name="rbVentas">Inventarios de Ventas</string> | ||
62 | <string name="rbDeposito">Inventarios de Depositos</string> | ||
63 | <string name="tvLosProductos">Los productos no contabilizados en Inventarios</string> | ||
64 | <string name="tvColumnas">Columnas a Visualizar</string> | ||
65 | |||
66 | <string name="rbProInclu">Solo se ajustan los productos incluidos en el conteo.</string> | ||
67 | <string name="rbProNoInclu">Ajusta productos no incluidos en el conteo con stock en cero.</string> | ||
68 | |||
69 | <string name="cbMostrarStock">Mostror stock en el sistema al momento de la descarga del maestro.</string> | ||
70 | <string name="cbHabiLectura">Habilitar Lectura de codigo de barras en balanza.</string> | ||
71 | |||
72 | <string name="tvColumMostrar">Columnas a mostrar en inventario</string> | ||
73 | |||
74 | <string name="rbCodigoDebo">Código DEBO</string> | ||
75 | <string name="rbCodigoOrigen">Código Origen</string> | ||
76 | <string name="rbCodigoBarras">Código de Barras</string> | ||
77 | |||
78 | |||
79 | <!-- Spinner servidor--> | ||
80 | <string-array name="spinnerServidor"> | ||
81 | <item>Servidor Laboratorio 1</item> | ||
82 | <item>Servidor Laboratorio 2</item> | ||
83 | <item>Servidor Laboratorio 3</item> | ||
84 | </string-array> | ||
85 | <string name="leyendaSpinner">Seleccione Servidor Predeterminado</string> | ||
86 | |||
87 | <string name="cbMostrarExistencia">Existencia</string> | ||
88 | <string name="cbMostrarPrecio">Precio</string> | ||
89 | |||
90 | <string name="btnGuardar">Guardar Cambios</string> | ||
91 | |||
92 | <!-- fragment Actualizacion de Maestros--> | ||
93 | <string name="tvActMaestros">Actualización de Maestros</string> | ||
94 | <string name="tvMedio">Seleccione el medio por el cual desea realizar la importación de maestros</string> | ||
95 | <string name="obPorWifi">Via Wifi</string> | ||
96 | <string name="obViaArchivo">Via Archivos MaeTable</string> | ||
97 | |||
98 | <string name="btnConfirmarAct">Confirmar Actualización</string> | ||
99 | |||
100 | <!-- Fragment Save--> | ||
101 | <string name="tvConfServi">Configuración de Servidores</string> | ||
102 | <string name="server">Ingrese la direccion del servidor</string> | ||
103 | <string name="etNomServer">Ingrese una descripción para la conexión</string> | ||
104 | <string name="btnGuardarConfServ">Guardar Conexión</string> | ||
105 | |||
106 | <!-- Dialog--> | ||
107 | <string name="sTitulo">Producto Buscado</string> | ||
108 | <string name="btnOk">Aceptar</string> | ||
109 | <string name="btnCancelar">Cancelar</string> | ||
110 | <string name="sMensaje">¡No se encontro el producto ingresado!</string> | ||
111 | <string name="sMensajeEncontrado">¡Ingrese la cantidad contada!</string> | ||
112 | <string name="sTituloNueva">Producto ingresado esta cargado</string> | ||
113 | <string name="sCantidadNueva">¡Por favor ingrese la nueva Cantidad!</string> | ||
114 | <string name="sMensajeBorrarInv">¡Seguro que desea Borrar el inventario!</string> | ||
115 | <string name="sTituloBorrarInv">Borrar Inventario</string> | ||
116 | |||
117 | <string name="sMensajeExportar">¡Confirma que exporta el Inventario!</string> | ||
118 | <string name="sTituloExportar">Exportación de Inventarios</string> | ||
119 | |||
120 | <!-- FRAGMENT SERVIDOR--> | ||
121 | <string name="tvTitutloServer">Alta de Servidores</string> | ||
122 | <string name="tvNomServer">Ingrese un nombre para identificar al servidor</string> | ||
123 | <string name="tvDirServer">Ingrese la dirección del servidor</string> | ||
124 | <string name="btnGuardarServidores">Guardar Servidor</string> | ||
125 | |||
126 | <string name="tvSeleccion">Toque sobre la operación que desea realizar</string> | ||
127 | <string name="rbSumar">Sumar</string> | ||
128 | <string name="rbRestar">Restar</string> | ||
129 | <string name="rbModificar">Reemplazar</string> | ||
130 | <string name="tvTotal">Cantidad Final</string>tvTotal | ||
131 | <string name="tvResultado">La cantidad final es:</string>tvTotal | ||
132 | |||
133 | <string name="large_text"> | ||
134 | "Material is the metaphor.\n\n" | ||
135 | |||
136 | "A material metaphor is the unifying theory of a rationalized space and a system of motion." | ||
137 | "The material is grounded in tactile reality, inspired by the study of paper and ink, yet " | ||
138 | "technologically advanced and open to imagination and magic.\n" | ||
139 | "Surfaces and edges of the material provide visual cues that are grounded in reality. The " | ||
140 | "use of familiar tactile attributes helps users quickly understand affordances. Yet the " | ||
141 | "flexibility of the material creates new affordances that supercede those in the physical " | ||
142 | "world, without breaking the rules of physics.\n" | ||
143 | "The fundamentals of light, surface, and movement are key to conveying how objects move, " | ||
144 | "interact, and exist in space and in relation to each other. Realistic lighting shows " | ||
145 | "seams, divides space, and indicates moving parts.\n\n" | ||
146 | |||
147 | "Bold, graphic, intentional.\n\n" | ||
148 | |||
149 | "The foundational elements of print based design typography, grids, space, scale, color, " | ||
150 | "and use of imagery guide visual treatments. These elements do far more than please the " | ||
151 | "eye. They create hierarchy, meaning, and focus. Deliberate color choices, edge to edge " | ||
152 | "imagery, large scale typography, and intentional white space create a bold and graphic " | ||
153 | "interface that immerse the user in the experience.\n" | ||
154 | "An emphasis on user actions makes core functionality immediately apparent and provides " | ||
155 | "waypoints for the user.\n\n" | ||
156 | |||
157 | "Motion provides meaning.\n\n" | ||
158 | |||
159 | "Motion respects and reinforces the user as the prime mover. Primary user actions are " | ||
160 | "inflection points that initiate motion, transforming the whole design.\n" | ||
161 | "All action takes place in a single environment. Objects are presented to the user without " | ||
162 | "breaking the continuity of experience even as they transform and reorganize.\n" | ||
163 | "Motion is meaningful and appropriate, serving to focus attention and maintain continuity. " | ||
164 | "Feedback is subtle yet clear. Transitions are efficient yet coherent.\n\n" | ||
165 | |||
166 | "3D world.\n\n" | ||
167 | |||
168 | "The material environment is a 3D space, which means all objects have x, y, and z " | ||
169 | "dimensions. The z-axis is perpendicularly aligned to the plane of the display, with the " | ||
170 | "positive z-axis extending towards the viewer. Every sheet of material occupies a single " | ||
171 | "position along the z-axis and has a standard 1dp thickness.\n" | ||
172 | "On the web, the z-axis is used for layering and not for perspective. The 3D world is " | ||
173 | "emulated by manipulating the y-axis.\n\n" | ||
174 | |||
175 | "Light and shadow.\n\n" | ||
176 | |||
177 | "Within the material environment, virtual lights illuminate the scene. Key lights create " | ||
178 | "directional shadows, while ambient light creates soft shadows from all angles.\n" | ||
179 | "Shadows in the material environment are cast by these two light sources. In Android " | ||
180 | "development, shadows occur when light sources are blocked by sheets of material at " | ||
181 | "various positions along the z-axis. On the web, shadows are depicted by manipulating the " | ||
182 | "y-axis only. The following example shows the card with a height of 6dp.\n\n" | ||
183 | |||
184 | "Resting elevation.\n\n" | ||
185 | |||
186 | "All material objects, regardless of size, have a resting elevation, or default elevation " | ||
187 | "that does not change. If an object changes elevation, it should return to its resting " | ||
188 | "elevation as soon as possible.\n\n" | ||
189 | |||
190 | "Component elevations.\n\n" | ||
191 | |||
192 | "The resting elevation for a component type is consistent across apps (e.g., FAB elevation " | ||
193 | "does not vary from 6dp in one app to 16dp in another app).\n" | ||
194 | "Components may have different resting elevations across platforms, depending on the depth " | ||
195 | "of the environment (e.g., TV has a greater depth than mobile or desktop).\n\n" | ||
196 | |||
197 | "Responsive elevation and dynamic elevation offsets.\n\n" | ||
198 | |||
199 | "Some component types have responsive elevation, meaning they change elevation in response " | ||
200 | "to user input (e.g., normal, focused, and pressed) or system events. These elevation " | ||
201 | "changes are consistently implemented using dynamic elevation offsets.\n" | ||
202 | "Dynamic elevation offsets are the goal elevation that a component moves towards, relative " | ||
203 | "to the component’s resting state. They ensure that elevation changes are consistent " | ||
204 | "across actions and component types. For example, all components that lift on press have " | ||
205 | "the same elevation change relative to their resting elevation.\n" | ||
206 | "Once the input event is completed or cancelled, the component will return to its resting " | ||
207 | "elevation.\n\n" | ||
208 | |||
209 | "Avoiding elevation interference.\n\n" | ||
210 | |||
211 | "Components with responsive elevations may encounter other components as they move between " | ||
212 | "their resting elevations and dynamic elevation offsets. Because material cannot pass " | ||
213 | "through other material, components avoid interfering with one another any number of ways, " | ||
214 | "whether on a per component basis or using the entire app layout.\n" | ||
215 | "On a component level, components can move or be removed before they cause interference. " | ||
216 | "For example, a floating action button (FAB) can disappear or move off screen before a " | ||
217 | "user picks up a card, or it can move if a snackbar appears.\n" | ||
218 | "On the layout level, design your app layout to minimize opportunities for interference. " | ||
219 | "For example, position the FAB to one side of stream of a cards so the FAB won’t interfere " | ||
220 | "when a user tries to pick up one of cards.\n\n" | ||
221 | </string> | ||
222 | </resources> |