Finish v1_9_0(94)

This commit is contained in:
Giuseppe Scorrano 2019-11-11 15:44:31 +01:00
commit e6bfadeb26
175 changed files with 6609 additions and 1235 deletions

156
.gitignore vendored
View File

@ -1,9 +1,151 @@
### Android ###
# Built application files
*.apk
*.ap_
*.aab
# Files for the ART/Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
out/
release/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# IntelliJ
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml
# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore
# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
# Google Services (e.g. APIs or Firebase)
# google-services.json
# Freeline
freeline.py
freeline/
freeline_project_description.json
# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
# Version control
vcs.xml
# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/
### Android Patch ###
gen-external-apklibs
output.json
# Replacement of .externalNativeBuild directories introduced
# with Android Studio 3.5.
.cxx/
### AndroidStudio ###
# Covers files to be ignored for android development using Android Studio.
# Built application files
# Files for the ART/Dalvik VM
# Java class files
# Generated files
# Gradle files
.gradle
# Signing files
.signing/
# Local configuration file (sdk path, etc)
# Proguard folder generated by Eclipse
# Log Files
# Android Studio
/*/build/
/*/local.properties
/*/out
/*/*/build
/*/*/production
*.ipr
*~
*.swp
# Android Patch
# External native build folder generated in Android Studio 2.2 and later
# NDK
obj/
# IntelliJ IDEA
*.iws
/out/
# User-specific configurations
.idea/caches/
.idea/libraries/
.idea/shelf/
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/scopes/scope_settings.xml
.idea/vcs.xml
.idea/jsLibraryMappings.xml
.idea/datasources.xml
.idea/dataSources.ids
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
# OS-specific files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Legacy Eclipse project files
.classpath
.project
.cproject
.settings/
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.war
*.ear
# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
hs_err_pid*
## Plugin-specific files:
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Mongo Explorer plugin
.idea/mongoSettings.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
### AndroidStudio Patch ###
!/gradle/wrapper/gradle-wrapper.jar

View File

@ -1,165 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="WizardSettings">
<option name="children">
<map>
<entry key="imageWizard">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="imageAssetPanel">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="actionbar">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="clipArt">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="color" value="000000" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
<option name="values">
<map>
<entry key="theme" value="HOLO_DARK" />
<entry key="themeColor" value="ffffff" />
</map>
</option>
</PersistentState>
</value>
</entry>
<entry key="launcher">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="foregroundImage">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="color" value="000000" />
<entry key="trimmed" value="true" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
<option name="values">
<map>
<entry key="backgroundAssetType" value="COLOR" />
<entry key="backgroundColor" value="ffffff" />
<entry key="foregroundImage" value="C:\Work\Prod_Android\WMS_Native\ext_sources\RoundLogoWithText.png" />
</map>
</option>
</PersistentState>
</value>
</entry>
<entry key="launcherLegacy">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="clipArt">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="color" value="000000" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
<entry key="notification">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="clipArt">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="color" value="000000" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
<entry key="vectorWizard">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="vectorAssetStep">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="clipartAsset">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="url" value="jar:file:/C:/Program%20Files/Android/Android%20Studio/plugins/android/lib/android.jar!/images/material_design_icons/file/ic_file_upload_black_24dp.xml" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
<option name="values">
<map>
<entry key="assetSourceType" value="FILE" />
<entry key="outputName" value="ic_icons8_deliver_food_reverse" />
<entry key="sourceFile" value="C:\Work\Prod_Android\WMS_Native\ext_sources\ICONS\icons8-deliver-food-reverse.svg" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</component>
</project>

Binary file not shown.

View File

@ -1,33 +1,6 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<DBN-PSQL>
<case-options enabled="true">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false" />
</DBN-PSQL>
<DBN-SQL>
<case-options enabled="true">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false">
<option name="STATEMENT_SPACING" value="one_line" />
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
</formatting-settings>
</DBN-SQL>
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>

456
.idea/dbnavigator.xml generated
View File

@ -1,456 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DBNavigator.Project.DataEditorManager">
<record-view-column-sorting-type value="BY_INDEX" />
<value-preview-text-wrapping value="false" />
<value-preview-pinned value="false" />
</component>
<component name="DBNavigator.Project.DataExportManager">
<export-instructions>
<create-header value="true" />
<quote-values-containing-separator value="true" />
<quote-all-values value="false" />
<value-separator value="" />
<file-name value="" />
<file-location value="" />
<scope value="GLOBAL" />
<destination value="FILE" />
<format value="EXCEL" />
<charset value="windows-1252" />
</export-instructions>
</component>
<component name="DBNavigator.Project.DatabaseBrowserManager">
<autoscroll-to-editor value="false" />
<autoscroll-from-editor value="true" />
<show-object-properties value="true" />
<loaded-nodes />
</component>
<component name="DBNavigator.Project.DatabaseFileManager">
<open-files />
</component>
<component name="DBNavigator.Project.EditorStateManager">
<last-used-providers />
</component>
<component name="DBNavigator.Project.MethodExecutionManager">
<method-browser />
<execution-history>
<group-entries value="true" />
<execution-inputs />
</execution-history>
<argument-values-cache />
</component>
<component name="DBNavigator.Project.ObjectDependencyManager">
<last-used-dependency-type value="INCOMING" />
</component>
<component name="DBNavigator.Project.ObjectQuickFilterManager">
<last-used-operator value="EQUAL" />
<filters />
</component>
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
<recently-used-interfaces />
</component>
<component name="DBNavigator.Project.Settings">
<connections />
<browser-settings>
<general>
<display-mode value="TABBED" />
<navigation-history-size value="100" />
<show-object-details value="false" />
</general>
<filters>
<object-type-filter>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="true" />
<object-type name="ROLE" enabled="true" />
<object-type name="PRIVILEGE" enabled="true" />
<object-type name="CHARSET" enabled="true" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED_VIEW" enabled="true" />
<object-type name="NESTED_TABLE" enabled="true" />
<object-type name="COLUMN" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET_TRIGGER" enabled="true" />
<object-type name="DATABASE_TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="true" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
<object-type name="ARGUMENT" enabled="true" />
<object-type name="DIMENSION" enabled="true" />
<object-type name="CLUSTER" enabled="true" />
<object-type name="DBLINK" enabled="true" />
</object-type-filter>
</filters>
<sorting>
<object-type name="COLUMN" sorting-type="NAME" />
<object-type name="FUNCTION" sorting-type="NAME" />
<object-type name="PROCEDURE" sorting-type="NAME" />
<object-type name="ARGUMENT" sorting-type="POSITION" />
</sorting>
<default-editors>
<object-type name="VIEW" editor-type="SELECTION" />
<object-type name="PACKAGE" editor-type="SELECTION" />
<object-type name="TYPE" editor-type="SELECTION" />
</default-editors>
</browser-settings>
<navigation-settings>
<lookup-filters>
<lookup-objects>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="false" />
<object-type name="ROLE" enabled="false" />
<object-type name="PRIVILEGE" enabled="false" />
<object-type name="CHARSET" enabled="false" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED VIEW" enabled="true" />
<object-type name="NESTED TABLE" enabled="false" />
<object-type name="COLUMN" enabled="false" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET TRIGGER" enabled="true" />
<object-type name="DATABASE TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="false" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE ATTRIBUTE" enabled="false" />
<object-type name="ARGUMENT" enabled="false" />
<object-type name="DIMENSION" enabled="false" />
<object-type name="CLUSTER" enabled="false" />
<object-type name="DBLINK" enabled="true" />
</lookup-objects>
<force-database-load value="false" />
<prompt-connection-selection value="true" />
<prompt-schema-selection value="true" />
</lookup-filters>
</navigation-settings>
<dataset-grid-settings>
<general>
<enable-zooming value="true" />
<enable-column-tooltip value="true" />
</general>
<sorting>
<nulls-first value="true" />
<max-sorting-columns value="4" />
</sorting>
<tracking-columns>
<columnNames value="" />
<visible value="true" />
<editable value="false" />
</tracking-columns>
</dataset-grid-settings>
<dataset-editor-settings>
<text-editor-popup>
<active value="false" />
<active-if-empty value="false" />
<data-length-threshold value="100" />
<popup-delay value="1000" />
</text-editor-popup>
<values-actions-popup>
<show-popup-button value="true" />
<element-count-threshold value="1000" />
<data-length-threshold value="250" />
</values-actions-popup>
<general>
<fetch-block-size value="100" />
<fetch-timeout value="30" />
<trim-whitespaces value="true" />
<convert-empty-strings-to-null value="true" />
<select-content-on-cell-edit value="true" />
<large-value-preview-active value="true" />
</general>
<filters>
<prompt-filter-dialog value="true" />
<default-filter-type value="BASIC" />
</filters>
<qualified-text-editor text-length-threshold="300">
<content-types>
<content-type name="Text" enabled="true" />
<content-type name="Properties" enabled="true" />
<content-type name="XML" enabled="true" />
<content-type name="DTD" enabled="true" />
<content-type name="HTML" enabled="true" />
<content-type name="XHTML" enabled="true" />
<content-type name="Java" enabled="true" />
<content-type name="SQL" enabled="true" />
<content-type name="PL/SQL" enabled="true" />
<content-type name="Groovy" enabled="true" />
<content-type name="AIDL" enabled="true" />
<content-type name="YAML" enabled="true" />
<content-type name="Manifest" enabled="true" />
</content-types>
</qualified-text-editor>
<record-navigation>
<navigation-target value="VIEWER" />
</record-navigation>
</dataset-editor-settings>
<code-editor-settings>
<general>
<show-object-navigation-gutter value="false" />
<show-spec-declaration-navigation-gutter value="true" />
<enable-spellchecking value="true" />
<enable-reference-spellchecking value="false" />
</general>
<confirmations>
<save-changes value="false" />
<revert-changes value="true" />
</confirmations>
</code-editor-settings>
<code-completion-settings>
<filters>
<basic-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="false" />
<filter-element type="OBJECT" id="view" selected="false" />
<filter-element type="OBJECT" id="materialized view" selected="false" />
<filter-element type="OBJECT" id="index" selected="false" />
<filter-element type="OBJECT" id="constraint" selected="false" />
<filter-element type="OBJECT" id="trigger" selected="false" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="false" />
<filter-element type="OBJECT" id="procedure" selected="false" />
<filter-element type="OBJECT" id="function" selected="false" />
<filter-element type="OBJECT" id="package" selected="false" />
<filter-element type="OBJECT" id="type" selected="false" />
<filter-element type="OBJECT" id="dimension" selected="false" />
<filter-element type="OBJECT" id="cluster" selected="false" />
<filter-element type="OBJECT" id="dblink" selected="false" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</basic-filter>
<extended-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</extended-filter>
</filters>
<sorting enabled="true">
<sorting-element type="RESERVED_WORD" id="keyword" />
<sorting-element type="RESERVED_WORD" id="datatype" />
<sorting-element type="OBJECT" id="column" />
<sorting-element type="OBJECT" id="table" />
<sorting-element type="OBJECT" id="view" />
<sorting-element type="OBJECT" id="materialized view" />
<sorting-element type="OBJECT" id="index" />
<sorting-element type="OBJECT" id="constraint" />
<sorting-element type="OBJECT" id="trigger" />
<sorting-element type="OBJECT" id="synonym" />
<sorting-element type="OBJECT" id="sequence" />
<sorting-element type="OBJECT" id="procedure" />
<sorting-element type="OBJECT" id="function" />
<sorting-element type="OBJECT" id="package" />
<sorting-element type="OBJECT" id="type" />
<sorting-element type="OBJECT" id="dimension" />
<sorting-element type="OBJECT" id="cluster" />
<sorting-element type="OBJECT" id="dblink" />
<sorting-element type="OBJECT" id="schema" />
<sorting-element type="OBJECT" id="role" />
<sorting-element type="OBJECT" id="user" />
<sorting-element type="RESERVED_WORD" id="function" />
<sorting-element type="RESERVED_WORD" id="parameter" />
</sorting>
<format>
<enforce-code-style-case value="true" />
</format>
</code-completion-settings>
<execution-engine-settings>
<statement-execution>
<fetch-block-size value="100" />
<execution-timeout value="20" />
<debug-execution-timeout value="600" />
<focus-result value="false" />
<prompt-execution value="false" />
</statement-execution>
<script-execution>
<command-line-interfaces />
<execution-timeout value="300" />
</script-execution>
<method-execution>
<execution-timeout value="30" />
<debug-execution-timeout value="600" />
<parameter-history-size value="10" />
</method-execution>
</execution-engine-settings>
<operation-settings>
<transactions>
<uncommitted-changes>
<on-project-close value="ASK" />
<on-disconnect value="ASK" />
<on-autocommit-toggle value="ASK" />
</uncommitted-changes>
<multiple-uncommitted-changes>
<on-commit value="ASK" />
<on-rollback value="ASK" />
</multiple-uncommitted-changes>
</transactions>
<session-browser>
<disconnect-session value="ASK" />
<kill-session value="ASK" />
<reload-on-filter-change value="false" />
</session-browser>
<compiler>
<compile-type value="KEEP" />
<compile-dependencies value="ASK" />
<always-show-controls value="false" />
</compiler>
<debugger>
<debugger-type value="ASK" />
<use-generic-runners value="true" />
</debugger>
</operation-settings>
<ddl-file-settings>
<extensions>
<mapping file-type-id="VIEW" extensions="vw" />
<mapping file-type-id="TRIGGER" extensions="trg" />
<mapping file-type-id="PROCEDURE" extensions="prc" />
<mapping file-type-id="FUNCTION" extensions="fnc" />
<mapping file-type-id="PACKAGE" extensions="pkg" />
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
<mapping file-type-id="TYPE" extensions="tpe" />
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
</extensions>
<general>
<lookup-ddl-files value="true" />
<create-ddl-files value="false" />
<synchronize-ddl-files value="true" />
<use-qualified-names value="false" />
<make-scripts-rerunnable value="true" />
</general>
</ddl-file-settings>
<general-settings>
<regional-settings>
<date-format value="MEDIUM" />
<number-format value="UNGROUPED" />
<locale value="SYSTEM_DEFAULT" />
<use-custom-formats value="false" />
</regional-settings>
<environment>
<environment-types>
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
</environment-types>
<visibility-settings>
<connection-tabs value="true" />
<dialog-headers value="true" />
<object-editor-tabs value="true" />
<script-editor-tabs value="false" />
<execution-result-tabs value="true" />
</visibility-settings>
</environment>
</general-settings>
</component>
<component name="DBNavigator.Project.StatementExecutionManager">
<execution-variables />
</component>
</project>

4
.idea/encodings.xml generated
View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>

27
.idea/gradle.xml generated
View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/barcode_base_library" />
<option value="$PROJECT_DIR$/dynamic__base" />
<option value="$PROJECT_DIR$/dynamic_frudis" />
<option value="$PROJECT_DIR$/dynamic_ime" />
<option value="$PROJECT_DIR$/dynamic_vgalimenti" />
<option value="$PROJECT_DIR$/honeywellscannerlibrary" />
<option value="$PROJECT_DIR$/pointmobilescannerlibrary" />
<option value="$PROJECT_DIR$/zebrascannerlibrary" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="testRunner" value="PLATFORM" />
</GradleProjectSettings>
</option>
</component>
</project>

48
.idea/misc.xml generated
View File

@ -1,48 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="NullableNotNullManager">
<option name="myDefaultNullable" value="android.support.annotation.Nullable" />
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
<option name="myNullables">
<value>
<list size="12">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
<item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
<item index="3" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
<item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
<item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
<item index="7" class="java.lang.String" itemvalue="android.annotation.Nullable" />
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
<item index="10" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
<item index="11" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="11">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
<item index="4" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
<item index="6" class="java.lang.String" itemvalue="android.annotation.NonNull" />
<item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
<item index="10" class="java.lang.String" itemvalue="com.android.annotations.NonNull" />
</list>
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

18
.idea/modules.xml generated
View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/WMS.iml" filepath="$PROJECT_DIR$/WMS.iml" />
<module fileurl="file://$PROJECT_DIR$/WMS_Native.iml" filepath="$PROJECT_DIR$/WMS_Native.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
<module fileurl="file://$PROJECT_DIR$/barcode_base_library/barcode_base_library.iml" filepath="$PROJECT_DIR$/barcode_base_library/barcode_base_library.iml" />
<module fileurl="file://$PROJECT_DIR$/dynamic__base/dynamic__base.iml" filepath="$PROJECT_DIR$/dynamic__base/dynamic__base.iml" />
<module fileurl="file://$PROJECT_DIR$/dynamic_frudis/dynamic_frudis.iml" filepath="$PROJECT_DIR$/dynamic_frudis/dynamic_frudis.iml" />
<module fileurl="file://$PROJECT_DIR$/dynamic_ime/dynamic_ime.iml" filepath="$PROJECT_DIR$/dynamic_ime/dynamic_ime.iml" />
<module fileurl="file://$PROJECT_DIR$/dynamic_vgalimenti/dynamic_vgalimenti.iml" filepath="$PROJECT_DIR$/dynamic_vgalimenti/dynamic_vgalimenti.iml" />
<module fileurl="file://$PROJECT_DIR$/honeywellscannerlibrary/honeywellscannerlibrary.iml" filepath="$PROJECT_DIR$/honeywellscannerlibrary/honeywellscannerlibrary.iml" />
<module fileurl="file://$PROJECT_DIR$/pointmobilescannerlibrary/pointmobilescannerlibrary.iml" filepath="$PROJECT_DIR$/pointmobilescannerlibrary/pointmobilescannerlibrary.iml" />
<module fileurl="file://$PROJECT_DIR$/zebrascannerlibrary/zebrascannerlibrary.iml" filepath="$PROJECT_DIR$/zebrascannerlibrary/zebrascannerlibrary.iml" />
</modules>
</component>
</project>

View File

@ -6,7 +6,7 @@
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="dynamic_frudis,dynamic_ime,dynamic_vgalimenti" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="dynamic_frudis,dynamic_ime,dynamic_saporiveri_pv,dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
@ -14,7 +14,7 @@
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="USE_LAST_SELECTED_DEVICE" value="true" />
<option name="USE_LAST_SELECTED_DEVICE" value="false" />
<option name="PREFERRED_AVD" value="" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
@ -43,7 +43,7 @@
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="true" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sample Java Methods" />
</Profilers>
<option name="DEEP_LINK" value="" />

View File

@ -0,0 +1,55 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_saporiveri_pv" type="AndroidRunConfigurationType" factoryName="Android App">
<module name="app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="dynamic__base,dynamic_frudis,dynamic_ime,dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="USE_LAST_SELECTED_DEVICE" value="false" />
<option name="PREFERRED_AVD" value="" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Hybrid>
<Java />
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sample Java Methods" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

6
.idea/vcs.xml generated
View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 93
def appVersionName = '1.8.6'
def appVersionCode = 94
def appVersionName = '1.9.0'
signingConfigs {
release {
@ -83,7 +83,7 @@ android {
abortOnError false
}
dynamicFeatures = [":dynamic__base",":dynamic_vgalimenti",":dynamic_ime",":dynamic_frudis"]
dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv"]
}
@ -95,16 +95,16 @@ dependencies {
})
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.orhanobut:logger:2.2.0'
implementation 'com.google.firebase:firebase-core:17.2.0'
implementation 'com.google.firebase:firebase-core:17.2.1'
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation 'com.google.firebase:firebase-perf:19.0.1'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-beta01'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta3'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0-beta05'
implementation 'androidx.recyclerview:recyclerview:1.1.0-rc01'
implementation 'androidx.preference:preference:1.1.0'
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
@ -113,6 +113,7 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-runtime:2.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.1.0'
implementation 'org.apache.commons:commons-text:1.6'
//kapt "androidx.lifecycle:lifecycle-compiler:2.0.0"
implementation 'com.danielpuiu:ghostfish:2.0.0'
annotationProcessor "com.danielpuiu:ghostfish-compiler:2.0.0"
@ -141,14 +142,21 @@ dependencies {
implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3'
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
//SQLite ROOM
def room_version = "2.2.1"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
//AppUpdate
implementation 'com.github.javiersantos:AppUpdater:2.7'
//Barcode
implementation project(':pointmobilescannerlibrary')
implementation project(':zebrascannerlibrary')
implementation project(path: ':barcode_base_library')
implementation project(path: ':barcode_base_android_library')
implementation project(path: ':honeywellscannerlibrary')
implementation project(':keyobardemulatorscannerlibrary')
}
repositories {
mavenCentral()

View File

@ -18,6 +18,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<activity android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity"></activity>
<activity
android:name=".gest.picking_resi.PickingResiActivity"
android:label="@string/activity_ultime_consegne_title"

View File

@ -15,14 +15,15 @@ import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Toast;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.GridLayoutManager;
import java.util.List;
@ -31,6 +32,7 @@ import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
@ -41,25 +43,12 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.update.UpdatesManager;
import it.integry.integrywmsnative.core.utility.UtilitySettings;
import it.integry.integrywmsnative.databinding.ActivityMainBinding;
import it.integry.integrywmsnative.databinding.FragmentMainMenuGroupLayoutBinding;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.gest.main.MainFragment;
import it.integry.integrywmsnative.gest.main.MenuListAdapter;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavorazioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
public class MainActivity extends AppCompatActivity
public class MainActivity extends BaseActivity
implements NavigationView.OnNavigationItemSelectedListener, IPoppableActivity {
private ActivityMainBinding mBinding;

View File

@ -5,12 +5,20 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
public class MainApplication extends Application {
public static Resources res;
private AppContext appContext = new AppContext(this);
private static AppDatabase appDb;
// Called when the application is starting, before any other application objects have been created.
// Overriding this method is totally optional!
@ -20,6 +28,7 @@ public class MainApplication extends Application {
appContext.init();
appDb = AppDatabase.getDatabase(this);
//Stash.init(this);
res = getResources();
@ -39,4 +48,26 @@ public class MainApplication extends Application {
public void onLowMemory() {
super.onLowMemory();
}
// DATABASE REPOSITORY FUNCTIONS
public static GrigliaDao getGrigliaRepository() {
return appDb.grigliaDao();
}
public static ArticoloGrigliaDao getArticoliGrigliaRepository() {
return appDb.articoloGrigliaDao();
}
public static OrdineDao getOrdiniRepository() {
return appDb.ordineDao();
}
public static ArticoloOrdineDao getArticoliOrdineRepository() {
return appDb.articoloOrdineDao();
}
public static void clearDB() {
new Thread(() -> appDb.clearAllTables()).start();
}
}

View File

@ -15,6 +15,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.PermissionsHelper;
@ -22,7 +23,7 @@ import it.integry.integrywmsnative.databinding.ActivitySplashBinding;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class SplashActivity extends AppCompatActivity {
public class SplashActivity extends BaseActivity {
private ActivitySplashBinding mBinding;

View File

@ -26,7 +26,8 @@ public class CommonConst {
public static class Mail {
public static String[] forErrorsDebug = {
"g.scorrano@integry.it"
"g.scorrano@integry.it",
"v.castellana@integry.it"
};
public static String[] forErrors = {

View File

@ -1,7 +1,7 @@
package it.integry.integrywmsnative.core.barcode_reader;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
public class BarcodeCallbackDTO {

View File

@ -1,6 +1,6 @@
package it.integry.integrywmsnative.core.barcode_reader;
import android.content.Context;
import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
@ -8,11 +8,12 @@ import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.plugins.barcode_base_library.exception.BarcodeAdapterNotFoundException;
import it.integry.plugins.barcode_base_library.interfaces.BarcodeReaderInterface;
import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader;
import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader;
import it.integry.zebrascannerlibrary.ZebraBarcodeReader;
@ -29,7 +30,8 @@ public class BarcodeManager {
private static Class<? extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{
PointMobileBarcodeReader.class,
ZebraBarcodeReader.class,
HoneyWellBarcodeReader.class
HoneyWellBarcodeReader.class,
KeyboardEmulatorBarcodeReader.class
};
@ -55,7 +57,7 @@ public class BarcodeManager {
} catch (Exception e) {
UtilityLogger.errorMe(e);
UtilityExceptions.defaultException(context,e);
}
}
@ -97,6 +99,11 @@ public class BarcodeManager {
}
public static boolean onKeyDown(int keyCode, KeyEvent keyEvent){
mCurrentBarcodeInterface.onKeyEvent(keyEvent);
return true;
}
public static BarcodeReaderInterface getCurrentBarcodeInterface() {
return mCurrentBarcodeInterface;
}
@ -146,4 +153,5 @@ public class BarcodeManager {
}

View File

@ -8,7 +8,7 @@ import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavo
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;

View File

@ -0,0 +1,51 @@
package it.integry.integrywmsnative.core.data_store.db;
import android.content.Context;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.room.TypeConverters;
import it.integry.integrywmsnative.core.data_store.db.converter.DateConverter;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 1, exportSchema = false)
@TypeConverters({
DateConverter.class
})
public abstract class AppDatabase extends RoomDatabase {
private static volatile AppDatabase INSTANCE;
public abstract ArticoloGrigliaDao articoloGrigliaDao();
public abstract GrigliaDao grigliaDao();
public abstract OrdineDao ordineDao();
public abstract ArticoloOrdineDao articoloOrdineDao();
public static AppDatabase getDatabase(final Context context) {
if (INSTANCE == null) {
synchronized (AppDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, "integry_wms")
.fallbackToDestructiveMigration()
.build();
}
}
}
return INSTANCE;
}
}

View File

@ -0,0 +1,17 @@
package it.integry.integrywmsnative.core.data_store.db.converter;
import androidx.room.TypeConverter;
import java.util.Date;
public class DateConverter {
@TypeConverter
public static Date fromTimestamp(Long value) {
return value == null ? null : new Date(value);
}
@TypeConverter
public static Long dateToTimestamp(Date date) {
return date == null ? null : date.getTime();
}
}

View File

@ -0,0 +1,36 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
@Dao
public interface ArticoloGrigliaDao {
@Query("SELECT * from articoli_griglia")
List<ArticoloGriglia> getAll();
@Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia")
Integer getIdArticoloByGrigliaAndCodMart(int idGriglia, String codMart);
@Insert
void insertAll(List<ArticoloGriglia> articoli);
@Insert
Long insert(ArticoloGriglia articolo);
@Update
void updateAll(List<ArticoloGriglia> articoli);
@Update
void update(ArticoloGriglia articolo);
@Query("SELECT * FROM articoli_griglia WHERE bar_code = :barcode AND id_griglia = :idGriglia LIMIT 1")
ArticoloGriglia findArticoloByBarcodeAndGriglia(String barcode, int idGriglia);
@Query("SELECT * FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia LIMIT 1")
ArticoloGriglia findArticoloByCodMartAndGriglia(String codMart, int idGriglia);
@Query("SELECT * FROM articoli_griglia WHERE (cod_mart = :scan OR bar_code =:scan )AND id_griglia = :idGriglia LIMIT 1")
ArticoloGriglia findArticoloByScanAndGriglia(String scan, int idGriglia);
}

View File

@ -0,0 +1,53 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
@Dao
public interface ArticoloOrdineDao {
@Query("SELECT * from articoli_ordine")
List<ArticoloOrdine> getAll();
@Insert
void insertAll(List<ArticoloOrdine> toInsert);
@Insert
void insert(ArticoloOrdine articolo);
@Query("SELECT * FROM articoli_ordine where bar_code = :barcode and id_ordine = :ordine LIMIT 1")
ArticoloOrdine findArticoloByOrdineAndBarcode(int ordine, String barcode);
@Update
void updateAll(List<ArticoloOrdine> toUpdate);
@Update
void update(ArticoloOrdine articolo);
@Query("SELECT * FROM articoli_ordine where id_ordine = :ordineId")
List<ArticoloOrdine> findArticoliByOrdine(int ordineId);
@Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1")
ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart);
@Query( " SELECT articoli_ordine.* " +
" FROM articoli_ordine " +
" LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " +
" WHERE " +
" (" +
" articoli_ordine.bar_code = :barcode" +
" OR articoli_griglia.bar_code = :barcode" +
" )" +
" AND articoli_ordine.id_ordine = :ordineId " +
" LIMIT 1")
ArticoloOrdine findArticoloByBarcodeAndOrdine(int ordineId, String barcode);
}

View File

@ -0,0 +1,40 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
@Dao
public interface GrigliaDao {
@Query("SELECT * from griglie")
List<Griglia> getAll();
@Query("SELECT *, COUNT(articoli_griglia.articolo_griglia_id) as countArticoli from griglie LEFT JOIN articoli_griglia ON (griglie.griglia_id = articoli_griglia.id_griglia) where cod_alis = :codAlis GROUP BY griglie.griglia_id")
GrigliaWrapper findByCodAlis(String codAlis);
@Insert
long insert(Griglia griglia);
@Update
void update(Griglia griglia);
@Insert
void insertAll(Griglia... griglie);
@Update
void updateAll(Griglia... griglie);
@Delete
void delete(Griglia griglia);
@Query("SELECT * from griglie where griglia_id = :idGriglia")
Griglia findGrigliaById(int idGriglia);
}

View File

@ -0,0 +1,30 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
@Dao
public interface OrdineDao {
@Query("SELECT * from ordini ")
List<Ordine> getAll();
@Query("SELECT ordini.*, griglie.* from ordini inner join griglie ON id_griglia = griglie.griglia_id where ordini.transmitted = 1")
List<OrdineWithGriglia> getAllTrasnmitted();
@Query("SELECT ordini.*, count(articolo_ordine_id) as countArticoli from ordini left join articoli_ordine ON ordini.ordine_id = articoli_ordine.id_ordine where ordini.transmitted = 0 and ordini.id_griglia = :idGriglia group by ordini.ordine_id")
List<OrdineWrapper> getAllOpenOrdersByGriglia(int idGriglia);
@Insert
Long insert(Ordine ordine);
@Update
void update(Ordine ordine);
}

View File

@ -0,0 +1,167 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import java.util.Date;
@Entity(
tableName = "articoli_griglia",
indices = {
@Index(value = "id_griglia"),
},
foreignKeys = {
@ForeignKey(
entity = Griglia.class,
parentColumns = "griglia_id",
childColumns = "id_griglia",
onDelete = ForeignKey.CASCADE
)
}
)
public class ArticoloGriglia {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "articolo_griglia_id")
private int articoloGrigliaId;
@ColumnInfo(name = "cod_mart")
private String codMart;
@ColumnInfo(name = "descrizione")
private String descrizione;
@ColumnInfo(name = "unt_mis")
private String untMis;
@ColumnInfo(name = "qta_cnf")
private float qtaCnf;
@ColumnInfo(name = "bar_code")
private String barCode;
@ColumnInfo(name = "merce_da_ric")
private float merceDaRic;
@ColumnInfo(name = "media_sett")
private float mediaSett;
@ColumnInfo(name = "flag_qta_multipla")
private String flagQtaMultipla;
@ColumnInfo(name = "qta_min_ordinabile")
private float qtaMinOrdinabile;
@ColumnInfo(name = "id_griglia")
private int idGriglia;
public int getArticoloGrigliaId() {
return articoloGrigliaId;
}
public void setArticoloGrigliaId(int articoloGrigliaId) {
this.articoloGrigliaId = articoloGrigliaId;
}
public String getCodMart() {
return codMart;
}
public void setCodMart(String codMart) {
this.codMart = codMart;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public String getUntMis() {
return untMis;
}
public void setUntMis(String untMis) {
this.untMis = untMis;
}
public float getQtaCnf() {
return qtaCnf;
}
public void setQtaCnf(float qtaCnf) {
this.qtaCnf = qtaCnf;
}
public String getBarCode() {
return barCode;
}
public void setBarCode(String barCode) {
this.barCode = barCode;
}
public float getMerceDaRic() {
return merceDaRic;
}
public void setMerceDaRic(float merceDaRic) {
this.merceDaRic = merceDaRic;
}
public float getMediaSett() {
return mediaSett;
}
public void setMediaSett(float mediaSett) {
this.mediaSett = mediaSett;
}
public String getFlagQtaMultipla() {
return flagQtaMultipla;
}
public void setFlagQtaMultipla(String flagQtaMultipla) {
this.flagQtaMultipla = flagQtaMultipla;
}
public float getQtaMinOrdinabile() {
return qtaMinOrdinabile;
}
public void setQtaMinOrdinabile(float qtaMinOrdinabile) {
this.qtaMinOrdinabile = qtaMinOrdinabile;
}
public int getIdGriglia() {
return idGriglia;
}
public void setIdGriglia(int idGriglia) {
this.idGriglia = idGriglia;
}
public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
ArticoloOrdine articolo = new ArticoloOrdine();
articolo.setIdOrdine(ordine.getOrdineId());
articolo.setBarCode(this.getBarCode());
articolo.setCodMart(this.getCodMart());
articolo.setMediaSett(this.getMediaSett());
articolo.setFlagQtaMultipla(this.getFlagQtaMultipla());
articolo.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
articolo.setMerceDaRic(this.getMerceDaRic());
articolo.setQtaCnf(this.getQtaCnf());
articolo.setUntMis(this.getUntMis());
articolo.setDescrizione(this.getDescrizione());
articolo.setDataIns(new Date());
articolo.setQtaOrd(0);
return articolo;
}
}

View File

@ -0,0 +1,170 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import java.util.Date;
@Entity(
tableName = "articoli_ordine",
indices = {
@Index(value = "id_ordine"),
@Index(value = {"id_ordine","cod_mart"}, unique = true)
},
foreignKeys = {
@ForeignKey(
entity = Ordine.class,
parentColumns = "ordine_id",
childColumns = "id_ordine",
onDelete = ForeignKey.CASCADE
)
}
)
public class ArticoloOrdine {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "articolo_ordine_id")
private int articoloOrdineId;
@ColumnInfo(name = "cod_mart")
private String codMart;
@ColumnInfo(name = "descrizione")
private String descrizione;
@ColumnInfo(name = "unt_mis")
private String untMis;
@ColumnInfo(name = "qta_cnf")
private float qtaCnf;
@ColumnInfo(name = "bar_code")
private String barCode;
@ColumnInfo(name = "merce_da_ric")
private float merceDaRic;
@ColumnInfo(name = "media_sett")
private float mediaSett;
@ColumnInfo(name = "flag_qta_multipla")
private String flagQtaMultipla;
@ColumnInfo(name = "qta_min_ordinabile")
private float qtaMinOrdinabile;
@ColumnInfo(name = "id_ordine")
private int idOrdine;
@ColumnInfo(name = "qta_ord")
private float qtaOrd;
@ColumnInfo(name = "data_ins")
private Date dataIns;
public int getArticoloOrdineId() {
return articoloOrdineId;
}
public void setArticoloOrdineId(int articoloOrdineId) {
this.articoloOrdineId = articoloOrdineId;
}
public String getCodMart() {
return codMart;
}
public void setCodMart(String codMart) {
this.codMart = codMart;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public String getUntMis() {
return untMis;
}
public void setUntMis(String untMis) {
this.untMis = untMis;
}
public float getQtaCnf() {
return qtaCnf;
}
public void setQtaCnf(float qtaCnf) {
this.qtaCnf = qtaCnf;
}
public String getBarCode() {
return barCode;
}
public void setBarCode(String barCode) {
this.barCode = barCode;
}
public float getMerceDaRic() {
return merceDaRic;
}
public void setMerceDaRic(float merceDaRic) {
this.merceDaRic = merceDaRic;
}
public float getMediaSett() {
return mediaSett;
}
public void setMediaSett(float mediaSett) {
this.mediaSett = mediaSett;
}
public String getFlagQtaMultipla() {
return flagQtaMultipla;
}
public void setFlagQtaMultipla(String flagQtaMultipla) {
this.flagQtaMultipla = flagQtaMultipla;
}
public float getQtaMinOrdinabile() {
return qtaMinOrdinabile;
}
public void setQtaMinOrdinabile(float qtaMinOrdinabile) {
this.qtaMinOrdinabile = qtaMinOrdinabile;
}
public int getIdOrdine() {
return idOrdine;
}
public void setIdOrdine(int idOrdine) {
this.idOrdine = idOrdine;
}
public float getQtaOrd() {
return qtaOrd;
}
public void setQtaOrd(float qtaOrd) {
this.qtaOrd = qtaOrd;
}
public Date getDataIns() {
return dataIns;
}
public void setDataIns(Date dataIns) {
this.dataIns = dataIns;
}
}

View File

@ -0,0 +1,67 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.Index;
import androidx.room.PrimaryKey;
@Entity(tableName ="griglie",
indices = {
@Index(value = "cod_alis", unique = true)
}
)
public class Griglia {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "griglia_id")
private int grigliaId;
@ColumnInfo(name = "cod_alis")
private String codAlis;
@ColumnInfo(name = "descr_lisa")
private String descrLisa;
@ColumnInfo(name = "descr_depo")
private String descrDepo;
@Ignore
private int countArticoli = 0;
public int getGrigliaId() {
return grigliaId;
}
public void setGrigliaId(int grigliaId) {
this.grigliaId = grigliaId;
}
public String getCodAlis() {
return codAlis;
}
public void setCodAlis(String codAlis) {
this.codAlis = codAlis;
}
public String getDescrLisa() {
return descrLisa;
}
public void setDescrLisa(String descrLisa) {
this.descrLisa = descrLisa;
}
public String getDescrDepo() {
return descrDepo;
}
public void setDescrDepo(String descrDepo) {
this.descrDepo = descrDepo;
}
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
}

View File

@ -0,0 +1,151 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.annotation.Nullable;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@Entity(tableName = "ordini")
public class Ordine {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "ordine_id")
private int ordineId;
@ColumnInfo(name = "data_ins")
private Date dataIns;
@ColumnInfo(name = "annotazioni")
private String annotazioni;
@ColumnInfo(name = "transmitted")
private boolean transmitted = false;
@ColumnInfo(name = "transmission_date")
@Nullable
private Date transmissionDate;
@ColumnInfo(name = "gestione")
@Nullable
private String gestione;
@ColumnInfo(name = "data_ord")
@Nullable
private Date dataOrd;
@ColumnInfo(name = "num_ord")
@Nullable
private Integer numOrd;
@ColumnInfo(name = "cod_mdep")
@Nullable
private String codMdep;
@Ignore
private int countArticoli = 0;
@ColumnInfo(name = "id_griglia")
private int idGriglia;
public int getOrdineId() {
return ordineId;
}
public void setOrdineId(int ordineId) {
this.ordineId = ordineId;
}
public Date getDataIns() {
return dataIns;
}
public void setDataIns(Date dataIns) {
this.dataIns = dataIns;
}
public String getAnnotazioni() {
return annotazioni;
}
public void setAnnotazioni(String annotazioni) {
this.annotazioni = annotazioni;
}
public int getIdGriglia() {
return idGriglia;
}
public void setIdGriglia(int idGriglia) {
this.idGriglia = idGriglia;
}
public boolean isTransmitted() {
return transmitted;
}
public void setTransmitted(boolean transmitted) {
this.transmitted = transmitted;
}
@Nullable
public Date getTransmissionDate() {
return transmissionDate;
}
public void setTransmissionDate(@Nullable Date transmissionDate) {
this.transmissionDate = transmissionDate;
}
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
@Nullable
public String getGestione() {
return gestione;
}
public void setGestione(@Nullable String gestione) {
this.gestione = gestione;
}
@Nullable
public Date getDataOrd() {
return dataOrd;
}
public void setDataOrd(@Nullable Date dataOrd) {
this.dataOrd = dataOrd;
}
@Nullable
public Integer getNumOrd() {
return numOrd;
}
public void setNumOrd(@Nullable Integer numOrd) {
this.numOrd = numOrd;
}
@Nullable
public String getCodMdep() {
return codMdep;
}
public void setCodMdep(@Nullable String codMdep) {
this.codMdep = codMdep; }
public void setDataOrdS(String dataOrd) {
setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd));
}
}

View File

@ -0,0 +1,79 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class ArticoliGrigliaRepository extends Repository{
ArticoloGrigliaDao mRepository;
public ArticoliGrigliaRepository() {
this.mRepository = MainApplication.getArticoliGrigliaRepository();
}
public void saveArticoliToGriglia(List<ArticoloGriglia> articoli, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(()->{
try{
List<ArticoloGriglia> toUpdate = new ArrayList<>();
List<ArticoloGriglia> toInsert = new ArrayList<>();
for (ArticoloGriglia art : articoli){
Integer id = mRepository.getIdArticoloByGrigliaAndCodMart(art.getIdGriglia(),art.getCodMart());
if (id != null){
art.setArticoloGrigliaId(id);
toUpdate.add(art);
}else{
toInsert.add(art);
}
}
mRepository.insertAll(toInsert);
mRepository.updateAll(toUpdate);
onSuccess.run();
}catch (Exception e){
onFail.run(e);
}
});
}
public void findArticoloByBarcodeAndGriglia(String barcode, int idGriglia,RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail ){
execute(()->{
try{
onSuccess.run(mRepository.findArticoloByBarcodeAndGriglia(barcode, idGriglia));
}catch (Exception e){
onFail.run(e);
}
});
}
public void findArticoloByCodMartAndGriglia(String codMart, int idGriglia,RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail ){
execute(()->{
try{
onSuccess.run(mRepository.findArticoloByCodMartAndGriglia(codMart, idGriglia));
}catch (Exception e){
onFail.run(e);
}
});
}
public void findArticoloByScanAndGriglia(String scan, int idGriglia,RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail ){
execute(()->{
try{
ArticoloGriglia articolo = mRepository.findArticoloByCodMartAndGriglia(scan, idGriglia);
if (articolo == null){
articolo = mRepository.findArticoloByBarcodeAndGriglia(scan,idGriglia);
if (articolo==null){
String barcode= StringUtils.leftPad(scan,13,"0");
articolo = mRepository.findArticoloByBarcodeAndGriglia(barcode,idGriglia);
}
}
onSuccess.run(articolo);
}catch (Exception e){
onFail.run(e);
}
});
}
}

View File

@ -0,0 +1,97 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class ArticoliOrdineRepository extends Repository {
ArticoloOrdineDao mRepository;
public ArticoliOrdineRepository() {
this.mRepository = MainApplication.getArticoliOrdineRepository();
}
public void saveArticoliToOrdine(List<ArticoloOrdine> articoli, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
List<ArticoloOrdine> toUpdate = new ArrayList<>();
List<ArticoloOrdine> toInsert = new ArrayList<>();
for (ArticoloOrdine art : articoli) {
if (art.getArticoloOrdineId() > 0) {
toUpdate.add(art);
} else {
toInsert.add(art);
}
}
mRepository.insertAll(toInsert);
mRepository.updateAll(toUpdate);
onSuccess.run();
} catch (Exception e) {
onFail.run(e);
}
});
}
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
if (articolo.getArticoloOrdineId() > 0) {
mRepository.update(articolo);
} else {
mRepository.insert(articolo);
}
onSuccess.run();
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findArticoloByOrdineAndBarcode(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
ArticoloOrdine articolo = mRepository.findArticoloByOrdineAndBarcode(ordine.getOrdineId(), barcode);
onSuccess.run(articolo);
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
String scannedCode = barcode;
ArticoloOrdine articolo = mRepository.findArticoloByCodMartAndOrdine(ordine.getOrdineId(), scannedCode);
if (articolo == null){
articolo = mRepository.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
if (articolo == null){
scannedCode= StringUtils.leftPad(scannedCode,13,'0');
articolo = mRepository.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
}
}
onSuccess.run(articolo);
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findArticoliByOrdine(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad, RunnableArgs<Exception> onError) {
execute(() -> {
try {
onLoad.run(mRepository.findArticoliByOrdine(ordine.getOrdineId()));
} catch (Exception e) {
onError.run(e);
}
});
}
}

View File

@ -0,0 +1,67 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.List;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class GrigliaRepository extends Repository{
private GrigliaDao mRepository;
public GrigliaRepository() {
this.mRepository = MainApplication.getGrigliaRepository();
}
public void selectAll(RunnableArgs<List<Griglia>> onSuccess, RunnableArgs<Exception> onError){
Runnable query = ()->{
try{
onSuccess.run(mRepository.getAll());
}catch (Exception e){
onError.run(e);
}
};
execute(query);
}
public void findByCodAlis(String codAlis , RunnableArgs<GrigliaWrapper> onSuccess, RunnableArgs<Exception> onError){
Runnable query = ()->{
try{
onSuccess.run(mRepository.findByCodAlis(codAlis));
}catch (Exception e){
onError.run(e);
}
};
execute(query);
}
public void saveGriglia(Griglia griglia, RunnableArgs<Integer> onSuccess,RunnableArgs<Exception> onFail) {
execute(()->{
try{
if (griglia.getGrigliaId() <= 0){
griglia.setGrigliaId((int) mRepository.insert(griglia));
}else{
mRepository.update(griglia);
}
onSuccess.run(griglia.getGrigliaId());
}catch (Exception e){
onFail.run(e);
}
});
}
public void findGrigliaById(int idGriglia, RunnableArgs<Griglia> onLoad, RunnableArgs<Exception> onFail) {
execute(()->{
try{
onLoad.run(mRepository.findGrigliaById(idGriglia));
}catch (Exception e){
onFail.run(e);
}
});
}
}

View File

@ -0,0 +1,75 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.List;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class OrdineRepository extends Repository{
private OrdineDao mRepository;
public OrdineRepository() {
this.mRepository = MainApplication.getOrdiniRepository();
}
public void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError){
Runnable query = ()->{
try{
onSuccess.run(mRepository.getAll());
}catch (Exception e){
onError.run(e);
}
};
execute(query);
}
public void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError){
Runnable query = ()->{
try{
onSuccess.run(mRepository.getAllTrasnmitted());
}catch (Exception e){
onError.run(e);
}
};
execute(query);
}
public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError){
Runnable query = ()->{
try{
onSuccess.run(mRepository.getAllOpenOrdersByGriglia(griglia.getGrigliaId()));
}catch (Exception e){
onError.run(e);
}
};
execute(query);
}
public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError){
execute(()->{
try{
Long id = mRepository.insert(ordine);
onSuccess.run(id.intValue());
}catch (Exception e){
onError.run(e);
}
});
}
public void updateOrder(Ordine ordine, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
execute(()->{
try{
mRepository.update(ordine);
onSuccess.run(ordine);
}catch (Exception e){
onError.run(e);
}
});
}
}

View File

@ -0,0 +1,9 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
public class Repository {
public void execute(Runnable query){
new Thread(query).start();
}
}

View File

@ -0,0 +1,119 @@
package it.integry.integrywmsnative.core.data_store.db.view_model;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
public class ArticoloDTO {
private String codMart;
private String descrizione;
private String untMis;
private float qtaCnf;
private String barcode;
private float merceDaRic;
private float mediaSett;
private String flagQtaMultipla;
private float qtaMinOrdinabile;
public String getCodMart() {
return codMart;
}
public void setCodMart(String codMart) {
this.codMart = codMart;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public String getUntMis() {
return untMis;
}
public void setUntMis(String untMis) {
this.untMis = untMis;
}
public float getQtaCnf() {
return qtaCnf;
}
public void setQtaCnf(float qtaCnf) {
this.qtaCnf = qtaCnf;
}
public String getBarCode() {
return barcode;
}
public void setBarCode(String barCode) {
this.barcode = barCode;
}
public float getMerceDaRic() {
return merceDaRic;
}
public void setMerceDaRic(float merceDaRic) {
this.merceDaRic = merceDaRic;
}
public float getMediaSett() {
return mediaSett;
}
public void setMediaSett(float mediaSett) {
this.mediaSett = mediaSett;
}
public String getFlagQtaMultipla() {
return flagQtaMultipla;
}
public void setFlagQtaMultipla(String flagQtaMultipla) {
this.flagQtaMultipla = flagQtaMultipla;
}
public float getQtaMinOrdinabile() {
return qtaMinOrdinabile;
}
public void setQtaMinOrdinabile(float qtaMinOrdinabile) {
this.qtaMinOrdinabile = qtaMinOrdinabile;
}
public ArticoloGriglia toArticoloGriglia(){
ArticoloGriglia result = new ArticoloGriglia();
result.setBarCode(this.getBarCode());
result.setDescrizione(this.getDescrizione());
result.setCodMart(this.getCodMart());
result.setUntMis(this.getUntMis());
result.setQtaCnf(this.getQtaCnf());
result.setMerceDaRic(this.getMerceDaRic());
result.setMediaSett(this.getMediaSett());
result.setFlagQtaMultipla(this.getFlagQtaMultipla());
result.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
return result;
}
}

View File

@ -0,0 +1,36 @@
package it.integry.integrywmsnative.core.data_store.db.view_model;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
public class GrigliaDTO {
private String descrLisa;
private String descrDepo;
private List<ArticoloDTO> grigliaAcquistiChild;
public String getDescrLisa() {
return descrLisa;
}
public void setDescrLisa(String descrLisa) {
this.descrLisa = descrLisa;
}
public String getDescrDepo() {
return descrDepo;
}
public void setDescrDepo(String descrDepo) {
this.descrDepo = descrDepo;
}
public List<ArticoloDTO> getGrigliaAcquistiChild() {
return grigliaAcquistiChild;
}
public void setGrigliaAcquistiChild(List<ArticoloDTO> grigliaAcquistiChild) {
this.grigliaAcquistiChild = grigliaAcquistiChild;
}
}

View File

@ -0,0 +1,33 @@
package it.integry.integrywmsnative.core.data_store.db.view_model;
import androidx.room.Embedded;
import androidx.room.Ignore;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.di.BindableBoolean;
public class OrdineWithGriglia {
@Embedded
private Ordine ordine;
@Embedded
private Griglia griglia;
public Ordine getOrdine() {
return ordine;
}
public void setOrdine(Ordine ordine) {
this.ordine = ordine;
}
public Griglia getGriglia() {
return griglia;
}
public void setGriglia(Griglia griglia) {
this.griglia = griglia;
}
}

View File

@ -0,0 +1,28 @@
package it.integry.integrywmsnative.core.data_store.db.wrappers;
import androidx.room.Embedded;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
public class GrigliaWrapper {
@Embedded
private Griglia griglia;
private int countArticoli = 0;
public Griglia getGriglia() {
return griglia;
}
public void setGriglia(Griglia griglia) {
this.griglia = griglia;
}
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
}

View File

@ -0,0 +1,29 @@
package it.integry.integrywmsnative.core.data_store.db.wrappers;
import androidx.room.Embedded;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
public class OrdineWrapper {
@Embedded
private Ordine ordine;
private int countArticoli = 0;
public Ordine getOrdine() {
return ordine;
}
public void setOrdine(Ordine ordine) {
this.ordine = ordine;
}
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
}

View File

@ -0,0 +1,20 @@
package it.integry.integrywmsnative.core.expansion;
import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
public class BaseActivity extends AppCompatActivity {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getDeviceId() != -1 && event.getDeviceId() != 0 && event.getAction() == KeyEvent.ACTION_DOWN){
BarcodeManager.onKeyDown(event.getKeyCode(),event);
return false;
}
return super.dispatchKeyEvent(event);
}
}

View File

@ -0,0 +1,27 @@
package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog;
import android.content.Context;
import android.view.KeyEvent;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
public class BaseDialog extends Dialog {
public BaseDialog(@NonNull Context context) {
super(context);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getDeviceId() != -1 && event.getDeviceId() != 0 && event.getAction() == KeyEvent.ACTION_DOWN){
BarcodeManager.onKeyDown(event.getKeyCode(),event);
return false;
}
return super.dispatchKeyEvent(event);
}
}

View File

@ -1,10 +1,10 @@
package it.integry.integrywmsnative.core.rest.consumers;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

View File

@ -1,7 +1,6 @@
package it.integry.integrywmsnative.core.rest.consumers;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import com.annimon.stream.Stream;
@ -15,10 +14,8 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbAart;
@ -26,11 +23,13 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

View File

@ -0,0 +1,146 @@
package it.integry.integrywmsnative.core.rest.consumers;
import android.util.Log;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.OrdineDTO;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.SaveDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import static br.com.zbra.androidlinq.Linq.stream;
public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
public static void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
ordiniARestService
.getArticoliListino(codAlis, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password)
.enqueue(new Callback<ServiceRESTResponse<GrigliaDTO>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<GrigliaDTO>> call, Response<ServiceRESTResponse<GrigliaDTO>> response) {
analyzeAnswer(response, "getArticoliListino", griglia -> {
List<ArticoloDTO> listaArticoli = new ArrayList<>();
Stream.of(griglia.getGrigliaAcquistiChild())
.map(ArticoloDTO::getCodMart)
.distinct()
.withoutNulls()
.forEach(art -> {
List<ArticoloDTO> inList = Stream.of(griglia.getGrigliaAcquistiChild()).filter(x -> x.getCodMart().equalsIgnoreCase(art)).toList();
if (inList.size() > 1) {
for (ArticoloDTO articolo : inList) {
if (!articolo.getBarCode().endsWith(articolo.getCodMart())) {
listaArticoli.add(articolo);
}
}
} else {
listaArticoli.add(inList.get(0));
}
});
griglia.setGrigliaAcquistiChild(listaArticoli);
onSuccess.run(griglia);
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<GrigliaDTO>> call, Throwable t) {
Log.e("getArticoliListino_pv", t.toString());
UtilityLogger.errorMe(new Exception(t));
onFailed.run(new Exception(t));
}
});
}
public static void saveOrdine(Ordine ordine, List<ArticoloOrdine> articoli, Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onFailed) {
SaveDTO saveDTO = new SaveDTO();
OrdineDTO ordineDTO = new OrdineDTO();
List<ArtDTO> artRows = new ArrayList<>();
int i = 0;
for (ArticoloOrdine art : articoli) {
i++;
artRows.add(convertArtToDTO(art,i));
}
ordineDTO.setChiaveGriglia(griglia.getCodAlis());
ordineDTO.setDataConsD(new Date());
ordineDTO.setArtRows(artRows);
saveDTO.setGestione("O");
saveDTO.setOrdineDTO(ordineDTO);
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
ordiniARestService
.saveOrdine(saveDTO, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password)
.enqueue(new Callback<List<ServiceRESTResponse<DtbOrdt>>>() {
@Override
public void onResponse(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Response<List<ServiceRESTResponse<DtbOrdt>>> response) {
if (response.body() != null && response.body().size() > 0){
analyzeListOfAnswers(response, "getArticoliListino", dtoList-> {
if (dtoList.size() > 0){
DtbOrdt dto = dtoList.get(0);
ordine.setTransmitted(true);
ordine.setTransmissionDate(new Date());
ordine.setGestione(dto.getGestione());
ordine.setDataOrdS(dto.getDataOrd());
ordine.setCodMdep(dto.getCodMdep());
ordine.setNumOrd(dto.getNumOrd());
OrdineRepository repository = new OrdineRepository();
repository.updateOrder(ordine,onSuccess,onFailed);
}else{
onFailed.run(new Exception("Nessun ordine generato"));
}
}, onFailed);
}
}
@Override
public void onFailure(Call<List<ServiceRESTResponse<DtbOrdt>>>call, Throwable t) {
Log.e("saveOrdineTerminale_pv", t.toString());
UtilityLogger.errorMe(new Exception(t));
onFailed.run(new Exception(t));
}
});
}
private static ArtDTO convertArtToDTO(ArticoloOrdine art, int rigaOrd) {
ArtDTO dto = new ArtDTO();
dto.setRigaOrd(rigaOrd);
dto.setCodMart(art.getCodMart());
dto.setBarcode(art.getBarCode());
dto.setDescrizione(art.getDescrizione());
dto.setDataInsD(art.getDataIns());
dto.setUntMis(art.getUntMis());
dto.setQta(BigDecimal.valueOf(art.getQtaOrd()));
dto.setQtaCnf(BigDecimal.valueOf(art.getQtaCnf()));
dto.setColli(BigDecimal.ZERO);
return dto;
}
}

View File

@ -0,0 +1,22 @@
package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.SaveDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface PVOrdiniAcquistoRESTConsumerService {
@POST("SM2GetElencoArticoli")
Call<ServiceRESTResponse<GrigliaDTO>> getArticoliListino(@Query("chiaveGriglia") String codAlis, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password);
@POST("SM2SaveTerminalino")
Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password);
}

View File

@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.rest.CommonRESTException;
@ -98,4 +99,35 @@ public class _BaseRESTConsumer {
});
}
public static <T> void analyzeListOfAnswers(Response<List<ServiceRESTResponse<T>>> responseList, String logTitle, RunnableArgs<List<T>> onComplete, RunnableArgs<Exception> onFailed) {
if (responseList.isSuccessful()) {
if (responseList.body() != null) {
List<T> analyzedList = new ArrayList<>();
for (ServiceRESTResponse<T> response : responseList.body()){
if (response.getEsito() == EsitoType.OK) {
if (!UtilityString.isNullOrEmpty(response.getErrorMessage())) {
onFailed.run(new Exception(response.getErrorMessage()));
} else {
T dataObj = response.getDto() != null ?
response.getDto() :
response.getEntity();
if (dataObj !=null ) analyzedList.add(dataObj);
}
} else {
Log.e(logTitle, response.getErrorMessage());
onFailed.run(CommonRESTException.tryRecognizeException(response.getErrorMessage()));
return;
}
}
onComplete.run(analyzedList);
} else {
Log.e(logTitle, responseList.message());
onFailed.run(new Exception(responseList.message()));
}
} else {
Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message());
onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message()));
}
}
}

View File

@ -4,10 +4,10 @@ import com.annimon.stream.Stream;
import java.util.Calendar;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeType;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeType;
public class UtilityBarcode {

View File

@ -20,6 +20,11 @@ public class UtilityProgress {
progress.show();
return progress;
}
public static Dialog createDefaultProgressDialog(Context mContext,String subtitle) {
Dialog progress = DialogProgress.make(mContext,subtitle);
progress.show();
return progress;
}
public static Thread makeProgressBarIndeterminate(ProgressBar progressBar) {

View File

@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.utility;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.settings.SettingsModel;
@ -9,7 +10,7 @@ public class UtilitySettings {
public static void logout(){
SettingsManager.i().user = null;
SettingsManager.i().userSession = null;
MainApplication.clearDB();
SettingsManager.update();
}

View File

@ -11,6 +11,7 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
@ -26,7 +27,7 @@ import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.viewmodel.Ac
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
public class AccettazioneOrdineInevasoActivity extends AppCompatActivity {
public class AccettazioneOrdineInevasoActivity extends BaseActivity {
public ActivityAccettazioneOrdineInevasoBinding bindings;
private AccettazioneOrdineAccettazioneInevasoViewModel mAccettazioneOrdineInevasoViewModel;

View File

@ -9,7 +9,7 @@ public class AccettazioneOrdineInevasoOrderBy {
public static String[] descriptions = new String[] {
"Cod articolo fornitore",
"Descrizione articolo",
"Commessa - Articolo"
"Commessa - ArticoloGriglia"
};
public enum Enum {

View File

@ -54,7 +54,7 @@ import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBot
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import static br.com.zbra.androidlinq.Linq.stream;

View File

@ -8,13 +8,14 @@ import android.content.Intent;
import android.os.Bundle;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.databinding.ActivityContenutoBancaleBinding;
import it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel.ContenutoBancaleViewModel;
public class ContenutoBancaleActivity extends AppCompatActivity {
public class ContenutoBancaleActivity extends BaseActivity {
public ActivityContenutoBancaleBinding bindings;

View File

@ -10,6 +10,7 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.model.MtbColt;
@ -17,7 +18,7 @@ import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel;
public class ListaBancaliActivity extends AppCompatActivity {
public class ListaBancaliActivity extends BaseActivity {
private static class Key {
private static final String MtbColtsKey = "mtbColtsKey";

View File

@ -6,11 +6,12 @@ import android.os.Bundle;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.utility.UtilityWindow;
import it.integry.integrywmsnative.databinding.ActivityLoginBinding;
import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel;
public class LoginActivity extends AppCompatActivity {
public class LoginActivity extends BaseActivity {
private MainContext mainContext = new MainContext(this);

View File

@ -58,7 +58,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {

View File

@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
@ -48,9 +49,9 @@ import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShould
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class PickingResiActivity extends AppCompatActivity implements IOnColloClosedCallback {
public class PickingResiActivity extends BaseActivity implements IOnColloClosedCallback {
private List<DocumentoResoDTO> mDocumentiResiList;
public ObservableList<WithdrawableDtbDocr> mDtbDocrList;
@ -281,47 +282,6 @@ public class PickingResiActivity extends AppCompatActivity implements IOnColloC
.setCanPartitaMagBeChanged(false)
.setMaxQta(qtaDaEvadere);
// if(item.getTempPickData() != null) {
// PickingObjectDTO.PickData tmpPickData = item.getTempPickData();
//
// if(!UtilityString.isNullOrEmpty(tmpPickData.getBatchLot())) {
// dto.setBatchLot(tmpPickData.getBatchLot());
// }
//
// if(tmpPickData.getDataScad() != null){
// dto.setDataScad(tmpPickData.getDataScad());
// dto.setShouldAskDataScad(true);
// }
//
// boolean useQtaDaEvadere;
//
// if(tmpPickData.getQtaTot() != null) {
// useQtaDaEvadere = qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue() && item.getMtbAart().isFlagQtaCnfFissa();
// if(useQtaDaEvadere){
// dto.setQtaTot(qtaDaEvadere);
// dto.setMaxQta(qtaDaEvadere);
// } else {
// dto.setQtaTot(tmpPickData.getQtaTot());
// dto.setMaxQta(tmpPickData.getQtaTot());
// dto.setQtaCnf(tmpPickData.getQtaTot());
// }
//
//
// if (tmpPickData.getQtaCnf() != null && useQtaDaEvadere) {
// dto.setQtaCnf(tmpPickData.getQtaCnf());
// }
// }
//
//
// if(dto.getQtaTot() != null && dto.getQtaTot().floatValue() > 0 && dto.getQtaCnf() != null && dto.getQtaCnf().floatValue() > 0) {
// dto.setNumCnf(dto.getQtaTot().divide(dto.getQtaCnf()).intValue());
// }
//
//
// dto.setCanPartitaMagBeChanged(false);
// dto.setCanDataScadBeChanged(false);
//
// }
DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> {
onOrdineRowDispatched(item, quantityDTO, closeUL);
@ -350,7 +310,8 @@ public class PickingResiActivity extends AppCompatActivity implements IOnColloC
.setSerDoc(item.getSerDoc())
.setNumDoc(item.getNumDoc())
.setDataDoc(item.getDataDocS())
.setIdRigaDoc(item.getIdRiga());
.setIdRigaDoc(item.getIdRiga())
.setCodJcom(item.getCodJcom());

View File

@ -1,6 +1,6 @@
package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog;
import android.app.AlertDialog;
import androidx.appcompat.app.AlertDialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
@ -111,6 +111,7 @@ public class DialogOrdineProduzioneFiltroAvanzato {
viewModel.numOrds.refresh();
viewModel.codJcoms.refresh();
}

View File

@ -151,7 +151,7 @@ public class ProdOrdineLavorazioneElencoFragment extends Fragment implements ITi
public void refreshOrdini(List<OrdineVenditaInevasoDTO> ordini) {
mRenderedOrderList.clear();
mRenderedOrderList.addAll(ordini);
if (ordini != null && ordini.size() > 0) mRenderedOrderList.addAll(ordini);
}
private void initRecyclerView() {

View File

@ -49,7 +49,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class ProdRecuperoMaterialeViewModel {

View File

@ -0,0 +1,179 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit;
import android.app.Dialog;
import android.os.Bundle;
import android.text.Html;
import android.text.SpannableString;
import android.view.View;
import android.widget.Toast;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList;
import java.util.List;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.ActivityPvordineAcquistoEditBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter.OrdineAcquistoArtListAdapter;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdineAcquistoEditActivity extends BaseActivity {
private Ordine mOrdine;
private Griglia mGriglia;
private List<ArticoloOrdine> mArticoli = new ArrayList<>();
private PVEditOrderHelper mhelper;
private ActivityPvordineAcquistoEditBinding mBinding;
private int mBarcodeScannerIstanceID;
private OrdineAcquistoArtListAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mhelper = new PVEditOrderHelper(this);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pvordine_acquisto_edit);
mBinding.setViewModel(this);
mOrdine = DataCache.retrieveItem(getIntent().getStringExtra("keyOrdine"));
if (mOrdine.isTransmitted()){
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
closeEdit();
}
String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
initRecyclerView();
fetchDetails();
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(this::onScanSuccessful)
.setOnScanFailed(this::handleException));
}
private void initRecyclerView() {
mBinding.articoliOrdineList.setHasFixedSize(true);
mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this));
DividerItemDecoration itemDecorator = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::addArticolo);
mBinding.articoliOrdineList.setAdapter(mAdapter);
}
private void handleException(Exception ex) {
runOnUiThread(()->{
BarcodeManager.enable();
UtilityExceptions.defaultException(this, ex, false);
});
}
private void onScanSuccessful(BarcodeScanDTO dto) {
BarcodeManager.disable();
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
mhelper.checkArticolo(
mOrdine,
dto.getStringValue(),
articoloOrdine -> {
progress.dismiss();
addArticolo(articoloOrdine);
},
e -> {
progress.dismiss();
handleException(e);
}
);
}
private void addArticolo(ArticoloOrdine articoloOrdine) {
runOnUiThread(()->{
EditArticoloDialog.make(this, articoloOrdine, articolo -> {
BarcodeManager.enable();
if (articolo == null) {
Toast.makeText(this, "Inserimento articolo annullato", Toast.LENGTH_SHORT).show();
} else {
fetchArticoli();
}
}).show();
});
}
private void fetchDetails() {
fetchGriglia();
fetchArticoli();
}
private void fetchGriglia() {
mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> {
runOnUiThread(()->{
mGriglia = griglia;
mBinding.codAlis.setText(mGriglia.getCodAlis());
});
}, this::handleException);
}
private void fetchArticoli() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
mhelper.loadArticoli(mOrdine, articoli -> {
progress.dismiss();
mArticoli = articoli;
runOnUiThread(()->{
mAdapter.updateItems(mArticoli);
mBinding.countArtOrd.setText(String.valueOf(mArticoli.size()));
mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.VISIBLE : View.GONE);
});
}, this::handleException);
}
public void closeEdit() {
onBackPressed();
}
public void exportOrdine() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine , mArticoli,mGriglia,(ordine)->{
progress.dismiss();
runOnUiThread(()-> {
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
onBackPressed();
});
},e-> runOnUiThread(()-> {
progress.dismiss();
UtilityExceptions.defaultException(this,e);
}));
}
@Override
public void onBackPressed() {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
super.onBackPressed();
}
private void showDataSavedDialog() {
DialogSimpleMessageHelper.makeSuccessDialog(
this,
getString(R.string.completed),
new SpannableString(getString(R.string.data_saved)),
null, null).show();
}
}

View File

@ -0,0 +1,125 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter<OrdineAcquistoArtListAdapter.SubheaderHolder, OrdineAcquistoArtListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
private Context mContext;
private List<ArticoloOrdine> mDataset;
RunnableArgs<ArticoloOrdine> mOnItemSelect;
static class SubheaderHolder extends RecyclerView.ViewHolder {
FragmentPvOrdiniAcquistoListHeaderBinding binding;
SubheaderHolder(FragmentPvOrdiniAcquistoListHeaderBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding;
SingleItemViewHolder(FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
public OrdineAcquistoArtListAdapter(Context context, List<ArticoloOrdine> myDataset, RunnableArgs<ArticoloOrdine> onItemSelect) {
mContext = context;
mDataset = orderItems(myDataset);
mOnItemSelect = onItemSelect;
}
public void updateItems(List<ArticoloOrdine> updatedDataset) {
mDataset.clear();
mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<ArticoloOrdine> orderItems(List<ArticoloOrdine> dataset) {
return Stream.of(dataset)
.distinctBy(ArticoloOrdine::getArticoloOrdineId)
.sortBy(x -> UtilityDate.formatDate(x.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.toList();
}
@Override
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
FragmentPvOrdiniAcquistoListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_header, parent, false);
return new SubheaderHolder(binding);
}
@Override
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_articoli_ordine_acquisto__list_single_item, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public void onBindSubheaderViewHolder(OrdineAcquistoArtListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
subheaderHolder.binding.title.setText(mContext.getString(R.string.ordini_a_aperti));
}
@Override
public void onBindItemViewHolder(OrdineAcquistoArtListAdapter.SingleItemViewHolder h, int itemPosition) {
final ArticoloOrdine articoloOrdine = mDataset.get(itemPosition);
final OrdineAcquistoArtListAdapter.SingleItemViewHolder holder = h;
holder.binding.setArticolo(articoloOrdine);
holder.binding.getRoot().setOnClickListener(v -> mOnItemSelect.run(articoloOrdine));
}
@Override
public boolean onPlaceSubheaderBetweenItems(int position) {
return false;
}
@Override
public int getItemSize() {
return mDataset.size();
}
@Override
public String getSectionTitle(int position) {
return null;
}
}

View File

@ -0,0 +1,149 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.expansion.BaseDialog;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
public class EditArticoloDialog {
private Activity mContext;
private Dialog mDialog;
private DialogPvEditArticoloBinding mBinding;
private PVEditOrderHelper mHelper;
private ArticoloOrdine mArticolo;
private ArticoloOrdine mSavedArt;
private boolean mLockedInput = false;
private EditArticoloDialog(Activity context, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) {
mContext = context;
mArticolo = articolo;
mHelper = new PVEditOrderHelper(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false);
mBinding.setViewmodel(this);
mDialog = new BaseDialog(context);
mDialog.setContentView(mBinding.getRoot());
UtilityDialog.setTo90PercentSize(mContext, mDialog);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mBinding.qtaTot.setText(String.valueOf(mArticolo.getQtaOrd()));
mSavedArt = null;
mDialog.setOnDismissListener(dialog -> {
onDialogDismiss.run(mSavedArt);
});
setListeners();
}
private void setListeners() {
mBinding.qtaTot.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
setQtaOrd(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0);
}
@Override
public void afterTextChanged(Editable s) {
}
});
mBinding.qtaCnf.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
setQtaCnf(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
public void setQtaCnf(float qtaCnf){
if (mLockedInput){
mLockedInput = false;
}else{
mLockedInput = true;
float qtaTot = qtaCnf * mArticolo.getQtaCnf();
mBinding.qtaTot.setText(String.valueOf(qtaTot));
}
}
public void setQtaOrd(float qtaOrd){
mArticolo.setQtaOrd(qtaOrd);
if (mLockedInput){
mLockedInput = false;
}else{
mLockedInput = true;
float qtaCnf = qtaOrd / mArticolo.getQtaCnf();
mBinding.qtaCnf.setText(String.valueOf(qtaCnf));
}
}
public static Dialog make(Activity context, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) {
return new EditArticoloDialog(context, articolo, onDialogDismiss).mDialog;
}
public void saveAndExit(){
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
try{
float qtaOrd = Float.parseFloat(mBinding.qtaTot.getText().toString());
if (qtaOrd <= 0){
throw new Exception("La quantità ordinata deve essere maggiore di 0");
}
mArticolo.setQtaOrd(qtaOrd);
}catch (Exception e){
mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e));
}
mHelper.saveArticoloToOrdine(mArticolo, ()->{
mSavedArt = mArticolo;
progress.dismiss();
mDialog.dismiss();
},e-> mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e)));
}
public ArticoloOrdine getArticolo() {
return mArticolo;
}
public void cancel() {
mArticolo = null;
mDialog.dismiss();
}
}

View File

@ -0,0 +1,134 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto;
import java.math.BigDecimal;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class ArtDTO {
private Integer rigaOrd;
private String codMart;
private String barcode;
private String descrizione;
private String dataIns;
private String untMis;
private BigDecimal qta;
private BigDecimal qtaCnf;
private BigDecimal colli;
private String partitaMag;
private String dataScad;
public Integer getRigaOrd() {
return rigaOrd;
}
public void setRigaOrd(Integer rigaOrd) {
this.rigaOrd = rigaOrd;
}
public String getCodMart() {
return codMart;
}
public void setCodMart(String codMart) {
this.codMart = codMart;
}
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public String getDataIns() {
return dataIns;
}
public Date getDataInsD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataIns());
}
public void setDataIns(String dataIns) {
this.dataIns = dataIns;
}
public void setDataInsD(Date dataIns) {
setDataIns(UtilityDate.formatDate(dataIns, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
}
public String getUntMis() {
return untMis;
}
public void setUntMis(String untMis) {
this.untMis = untMis;
}
public BigDecimal getQta() {
return qta;
}
public void setQta(BigDecimal qta) {
this.qta = qta;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public void setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
}
public BigDecimal getColli() {
return colli;
}
public void setColli(BigDecimal colli) {
this.colli = colli;
}
public String getPartitaMag() {
return partitaMag;
}
public void setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
}
public String getDataScad() {
return dataScad;
}
public void setDataScad(String dataScad) {
this.dataScad = dataScad;
}
public Date getDataScadD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataScad());
}
public void setDataScadD(Date dataScad) {
setDataScad(UtilityDate.formatDate(dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
}
}

View File

@ -0,0 +1,46 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class OrdineDTO {
private String chiaveGriglia;
private String dataCons;
private List<ArtDTO> artRows;
public String getChiaveGriglia() {
return chiaveGriglia;
}
public void setChiaveGriglia(String chiaveGriglia) {
this.chiaveGriglia = chiaveGriglia;
}
public String getDataCons() {
return dataCons;
}
public void setDataCons(String dataCons) {
this.dataCons = dataCons;
}
public List<ArtDTO> getArtRows() {
return artRows;
}
public void setArtRows(List<ArtDTO> artRows) {
this.artRows = artRows;
}
public Date getDataConsD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataCons());
}
public void setDataConsD(Date dataCons) {
setDataCons(UtilityDate.formatDate(dataCons, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
}
}

View File

@ -0,0 +1,24 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto;
public class SaveDTO {
private String gestione = "O";
private OrdineDTO ordineDTO;
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
}
public OrdineDTO getOrdineDTO() {
return ordineDTO;
}
public void setOrdineDTO(OrdineDTO ordineDTO) {
this.ordineDTO = ordineDTO;
}
}

View File

@ -0,0 +1,70 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper;
import android.content.Context;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
public class PVEditOrderHelper {
private Context mContext;
private GrigliaRepository mGrigliaRepository;
private ArticoliOrdineRepository mArticoliOrdineRepository;
private ArticoliGrigliaRepository mArticoliGrigliaRepository;
public PVEditOrderHelper(Context mContext) {
this.mContext = mContext;
mGrigliaRepository = new GrigliaRepository();
mArticoliOrdineRepository = new ArticoliOrdineRepository();
mArticoliGrigliaRepository = new ArticoliGrigliaRepository();
}
public void checkArticolo(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
try {
mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> {
if (articolo != null) {
onSuccess.run(articolo);
} else {
mArticoliGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> {
if (artGrid != null) {
onSuccess.run(artGrid.convertToArticoloOrdine(ordine));
} else {
onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia"));
}
}, onFail);
}
}, onFail);
} catch (Exception e) {
onFail.run(e);
}
}
public void loadGriglia(int idGriglia, RunnableArgs<Griglia> onLoad, RunnableArgs<Exception> onError) {
try {
mGrigliaRepository.findGrigliaById(idGriglia, onLoad, onError);
} catch (Exception e) {
onError.run(e);
}
}
public void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad, RunnableArgs<Exception> onError) {
try {
mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, onError);
} catch (Exception e) {
onError.run(e);
}
}
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onFail) {
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail);
}
}

View File

@ -0,0 +1,182 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvOpenListAdapter;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisA;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment {
private FragmentPvOrdiniAcquistoBinding mBinding;
private OrdineAcquistoPvHelper mHelper;
private Griglia mGriglia;
private OrdineAcquistoPvOpenListAdapter mAdapter;
private List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
public PVOrdiniAcquistoGrigliaFragment() {
mHelper = new OrdineAcquistoPvHelper(getActivity());
}
public static PVOrdiniAcquistoGrigliaFragment newInstance() {
PVOrdiniAcquistoGrigliaFragment fragment = new PVOrdiniAcquistoGrigliaFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_acquisto, container, false);
mBinding.setViewmodel(this);
init();
initRecyclerView();
return mBinding.getRoot();
}
private void init() {
BarcodeManager.enable();
DialogScanLisA.make(getActivity(), griglia -> {
if (griglia == null) {
((IPoppableActivity) getActivity()).pop();
} else {
setGriglia(griglia);
}
}).show();
}
@Override
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString());
}
private void setGriglia(Griglia griglia) {
mGriglia = griglia;
mBinding.fabNewOrder.setVisibility(View.VISIBLE);
mBinding.codAlis.setText(griglia.getCodAlis());
mBinding.descrLis.setText(griglia.getDescrLisa());
mBinding.descrDepo.setText(griglia.getDescrDepo());
mBinding.countArtLis.setText(String.valueOf(griglia.getCountArticoli()));
fetchOrders();
}
private void fetchOrders() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress));
OrdineRepository repository = new OrdineRepository();
repository.selectAllOpenOrders(mGriglia, (ordini) -> getActivity().runOnUiThread(() -> {
progress.dismiss();
setOrdini(ordini);
}), (e) -> {
progress.dismiss();
String errorMessage = e.getMessage();
getActivity().runOnUiThread(() -> DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show());
});
}
private void setOrdini(List<OrdineWrapper> ordini) {
mBinding.ordiniAApertiMainList.setVisibility(ordini != null && ordini.size() > 0 ? View.VISIBLE : View.GONE);
mBinding.ordiniAEmptyView.setVisibility(ordini == null || ordini.size() <= 0 ? View.VISIBLE : View.GONE);
refreshRenderedOrdini(ordini);
mAdapter.updateItems(mRenderedOrderList);
}
public Griglia getGriglia() {
return mGriglia;
}
private void initRecyclerView() {
mBinding.ordiniAApertiMainList.setHasFixedSize(true);
mBinding.ordiniAApertiMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
mBinding.ordiniAApertiMainList.addItemDecoration(itemDecorator);
mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, selectOrdine);
mBinding.ordiniAApertiMainList.setAdapter(mAdapter);
}
private RunnableArgs<Ordine> selectOrdine = ordine -> {
Intent myIntent = new Intent(getActivity(), PVOrdineAcquistoEditActivity.class);
String keyOrdine = DataCache.addItem(ordine);
myIntent.putExtra("keyOrdine", keyOrdine);
getActivity().startActivity(myIntent);
};
private void refreshRenderedOrdini(List<OrdineWrapper> ordini) {
mRenderedOrderList.clear();
if (ordini != null) mRenderedOrderList.addAll(ordini);
}
public void createNewOrder() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress));
mHelper.createNewOrder(mGriglia, order -> {
progress.dismiss();
getActivity().runOnUiThread(()-> selectOrdine.run(order));
}, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress)));
}
@Override
public void setScrollToolbar(ElevatedToolbar toolbar) {
}
@Override
public void setOnPreDestroy(Runnable onPreDestroy) {
}
@Override
public void onResume() {
super.onResume();
if (mGriglia != null){
fetchOrders();
}
}
}

View File

@ -0,0 +1,112 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniATrasmessiElencoBinding;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvTransmittedListAdapter;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdiniAcquistoTransmittedListFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
private FragmentPvOrdiniATrasmessiElencoBinding mBinding;
private OrdineAcquistoPvTransmittedListAdapter mAdapter;
private List<OrdineWithGriglia> mOriginalOrderList;
private List<OrdineWithGriglia> mRenderedOrderList = new ArrayList<>();
private DialogOrdineProduzioneFiltroAvanzato.DialogOrdineProduzioneFiltroAvanzatoViewModel mAppliedFilterViewModel;
public PVOrdiniAcquistoTransmittedListFragment() {
// Required empty public constructor
}
public static PVOrdiniAcquistoTransmittedListFragment newInstance() {
PVOrdiniAcquistoTransmittedListFragment fragment = new PVOrdiniAcquistoTransmittedListFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_a_trasmessi_elenco, container, false);
mBinding.setView(this);
//init();
return mBinding.getRoot();
}
@Override
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString());
}
@Override
public void setScrollToolbar(ElevatedToolbar toolbar) {
}
@Override
public void setOnPreDestroy(Runnable onPreDestroy) {
}
@Override
public void onFilterClick() {
}
private void init(){
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
OrdineRepository repository = new OrdineRepository();
repository.selectAllTransmitted((ordini)->{
mOriginalOrderList = ordini;
mBinding.ordiniAEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE);
refreshRenderedOrdini(ordini);
initRecyclerView();
progress.dismiss();
},(e)->{
progress.dismiss();
String errorMessage = e.getMessage();
DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show();
});
}
private void initRecyclerView() {
mAdapter = new OrdineAcquistoPvTransmittedListAdapter(getActivity(), mRenderedOrderList);
mBinding.ordineAMainList.setAdapter(mAdapter);
}
private void refreshRenderedOrdini(List<OrdineWithGriglia> ordini) {
mRenderedOrderList.clear();
if(ordini != null) mRenderedOrderList.addAll(ordini);
}
}

View File

@ -0,0 +1,132 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapter<OrdineAcquistoPvOpenListAdapter.SubheaderHolder, OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
private Context mContext;
private List<OrdineWrapper> mDataset;
RunnableArgs<Ordine> mOnItemSelect;
static class SubheaderHolder extends RecyclerView.ViewHolder {
FragmentPvOrdiniAcquistoListHeaderBinding binding;
SubheaderHolder(FragmentPvOrdiniAcquistoListHeaderBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
FragmentPvOrdiniAcquistoListSingleItemBinding binding;
SingleItemViewHolder(FragmentPvOrdiniAcquistoListSingleItemBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
public OrdineAcquistoPvOpenListAdapter(Context context, List<OrdineWrapper> myDataset, RunnableArgs<Ordine> onItemSelect) {
mContext = context;
mDataset = orderItems(myDataset);
mOnItemSelect = onItemSelect;
}
public void updateItems(List<OrdineWrapper> updatedDataset) {
mDataset.clear();
mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<OrdineWrapper> orderItems(List<OrdineWrapper> dataset) {
return Stream.of(dataset)
.distinctBy(OrdineWrapper::getOrdine)
.sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.toList();
}
@Override
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
FragmentPvOrdiniAcquistoListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_header, parent, false);
return new SubheaderHolder(binding);
}
@Override
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
FragmentPvOrdiniAcquistoListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_single_item, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public void onBindSubheaderViewHolder(OrdineAcquistoPvOpenListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
subheaderHolder.binding.title.setText(mContext.getString(R.string.ordini_a_aperti));
}
@Override
public void onBindItemViewHolder(OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder h, int itemPosition) {
final OrdineWrapper ordineWrapper = mDataset.get(itemPosition);
final Ordine ordine = ordineWrapper.getOrdine();
final OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder holder = h;
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
holder.binding.numArts.setText(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli())));
holder.binding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
holder.binding.getRoot().setOnClickListener(v -> {
mOnItemSelect.run(ordine);
});
}
@Override
public boolean onPlaceSubheaderBetweenItems(int position) {
return false;
}
@Override
public int getItemSize() {
return mDataset.size();
}
@Override
public String getSectionTitle(int position) {
return null;
}
}

View File

@ -0,0 +1,133 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentOrdineAPvTransmittedListModelBinding;
import it.integry.integrywmsnative.databinding.FragmentOrdiniAPvListSingleItemBinding;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
public class OrdineAcquistoPvTransmittedListAdapter extends SectionedRecyclerViewAdapter<OrdineAcquistoPvTransmittedListAdapter.SubheaderHolder, OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
private Context mContext;
private List<OrdineWithGriglia> mOriginalDataset;
private List<OrdineWithGriglia> mDataset;
static class SubheaderHolder extends RecyclerView.ViewHolder {
FragmentOrdineAPvTransmittedListModelBinding binding;
SubheaderHolder(FragmentOrdineAPvTransmittedListModelBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
FragmentOrdiniAPvListSingleItemBinding binding;
SingleItemViewHolder(FragmentOrdiniAPvListSingleItemBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
public OrdineAcquistoPvTransmittedListAdapter(Context context, List<OrdineWithGriglia> myDataset) {
mContext = context;
mOriginalDataset = myDataset;
mDataset = orderItems(myDataset);
}
public void updateItems(List<OrdineWithGriglia> updatedDataset) {
mDataset.clear();
mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<OrdineWithGriglia> orderItems(List<OrdineWithGriglia> dataset) {
return Stream.of(dataset)
.distinctBy(OrdineWithGriglia::getGriglia)
.sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.toList();
}
@Override
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
FragmentOrdineAPvTransmittedListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ordine_a_pv_transmitted__list_model, parent, false);
return new SubheaderHolder(binding);
}
@Override
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
FragmentOrdiniAPvListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ordini_a_pv__list_single_item, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public void onBindSubheaderViewHolder(OrdineAcquistoPvTransmittedListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
subheaderHolder.binding.ordineAPvMainListGroupHeader.setText(mDataset.get(nextItemPosition).getGriglia().getCodAlis());
}
@Override
public void onBindItemViewHolder(OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder h, int itemPosition) {
final OrdineWithGriglia ordine = mDataset.get(itemPosition);
final OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder holder = h;
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdine().getOrdineId()), UtilityDate.formatDate(ordine.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
holder.binding.badge1.setText(ordine.getOrdine().isTransmitted() ? "TRASMESSO" : "NON TRASMESSO");
holder.binding.descriptionMain.setText(Html.fromHtml(testataOrdString));
holder.binding.getRoot().setOnClickListener(v -> {
//TODO: aprire descrizione Ordine
});
}
@Override
public boolean onPlaceSubheaderBetweenItems(int position) {
return !(this.mDataset.get(position).getGriglia().getGrigliaId() == this.mDataset.get(position + 1).getGriglia().getGrigliaId());
}
@Override
public int getItemSize() {
return mDataset.size();
}
@Override
public String getSectionTitle(int position) {
return null;
}
}

View File

@ -0,0 +1,111 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.expansion.BaseDialog;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
public class DialogScanLisA {
private Activity mContext;
private Dialog mDialog;
private DialogScanCodiceGrigliaBinding mBinding;
private RunnableArgs<Griglia> mOnDialogDismiss;
private OrdineAcquistoPvHelper mHelper;
private Griglia mGriglia;
private DialogScanLisA(Activity context, RunnableArgs<Griglia> onDialogDismiss) {
mOnDialogDismiss = null;
mContext = context;
mHelper = new OrdineAcquistoPvHelper(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
mGriglia = null;
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_codice_griglia, null, false);
mDialog = new BaseDialog(context);
mDialog.setContentView(mBinding.getRoot());
mDialog.setCanceledOnTouchOutside(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mOnDialogDismiss = onDialogDismiss;
initBarcode();
}
public static Dialog make(Activity context, RunnableArgs<Griglia> onDialogDismiss) {
return new DialogScanLisA(context, onDialogDismiss).mDialog;
}
private void initBarcode() {
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
mDialog.setOnDismissListener(dialog -> {
BarcodeManager.removeCallback(barcodeIstanceID);
BarcodeManager.enable();
mOnDialogDismiss.run(mGriglia);
});
}
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable();
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
Context context = mContext;
RunnableArgs<Exception> mOnError = exception -> {
mContext.runOnUiThread(()->{
progressDialog.dismiss();
UtilityExceptions.defaultException(context,exception);
BarcodeManager.enable();
});
};
RunnableArgs<Griglia> onGrigliaAvaialable = griglia->{
mContext.runOnUiThread(()->{
progressDialog.dismiss();
mGriglia = griglia;
mDialog.dismiss();
});
};
GrigliaRepository repository = new GrigliaRepository();
repository.findByCodAlis(data.getStringValue(),griglia->{
if (griglia != null){
griglia.getGriglia().setCountArticoli(griglia.getCountArticoli());
if (griglia.getCountArticoli() >0){
onGrigliaAvaialable.run(griglia.getGriglia());
}else{
mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvaialable,mOnError);
}
}else{
mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvaialable,mOnError);
}
},mOnError);
};
}

View File

@ -0,0 +1,75 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper;
import android.content.Context;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
public class OrdineAcquistoPvHelper {
private Context mContext;
private GrigliaRepository mGrigliaRepository;
private ArticoliGrigliaRepository mArticoliGrigliaRepository;
private OrdineRepository mOrdineRepository;
public OrdineAcquistoPvHelper(Context mContext) {
this.mContext = mContext;
this.mGrigliaRepository = new GrigliaRepository();
this.mArticoliGrigliaRepository = new ArticoliGrigliaRepository();
this.mOrdineRepository = new OrdineRepository();
}
public void downloadAndSaveLisA(String codAlis, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFail) {
Griglia griglia = new Griglia();
griglia.setCodAlis(codAlis);
updateGriglia(griglia, onSave, onFail);
}
public void updateGriglia(Griglia griglia, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFail) {
PVOrdiniAcquistoRESTConsumer.getArticoliListino(griglia.getCodAlis(), dto -> {
if (dto.getGrigliaAcquistiChild().size() <= 0) {
Exception e = new Exception("La griglia selezionata (" + griglia.getCodAlis() + ") non esiste o non presenta articoli");
onFail.run(e);
return;
}
griglia.setDescrLisa(dto.getDescrLisa());
griglia.setDescrDepo(dto.getDescrDepo());
griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size());
mGrigliaRepository.saveGriglia(griglia, id -> {
saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSave, onFail);
}, onFail);
}, onFail);
}
private void saveLisAToGriglia(List<ArticoloDTO> articoli, Griglia griglia, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFail) {
List<ArticoloGriglia> articoliGriglia = new ArrayList<>();
for (ArticoloDTO articolo : articoli) {
ArticoloGriglia toSave = articolo.toArticoloGriglia();
toSave.setIdGriglia(griglia.getGrigliaId());
articoliGriglia.add(toSave);
}
mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia, () -> onSave.run(griglia), onFail);
}
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
Ordine ordine = new Ordine();
ordine.setDataIns(new Date());
ordine.setIdGriglia(griglia.getGrigliaId());
mOrdineRepository.insert(ordine,id->{
ordine.setOrdineId(id);
onSuccess.run(ordine);
},onError);
}
}

View File

@ -64,8 +64,8 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuanti
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeType;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeType;
public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr> {

View File

@ -11,17 +11,22 @@ import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel.UltimeConsegneClienteViewModel;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment {
public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
private Runnable mOnPreDestroy;
private ElevatedToolbar mToolbar;
private UltimeConsegneClienteViewModel mViewModel;
public UltimeConsegneClienteFragment() {
// Required empty public constructor
}
@ -41,7 +46,9 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr
FragmentMainUltimeConsegneClienteBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false);
mBinding.setViewmodel(new UltimeConsegneClienteViewModel(getActivity(), mBinding));
mViewModel = new UltimeConsegneClienteViewModel(getActivity(), mBinding);
mBinding.setViewmodel(mViewModel);
mToolbar.setRecyclerView(mBinding.recyclerView);
@ -69,4 +76,9 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr
public void setOnPreDestroy(Runnable onPreDestroy) {
mOnPreDestroy = onPreDestroy;
}
@Override
public void onFilterClick() {
mViewModel.openFilterDialog();
}
}

View File

@ -0,0 +1,203 @@
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog;
import androidx.appcompat.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogUltimeConsegneFiltroAvanzatoBinding;
public class DialogUltimeConsegneFiltroAvanzato {
private AlertDialog mAlert;
private Context mContext;
private DialogUltimeConsegneFiltroAvanzatoViewModel mBaseViewModel;
private RunnableArgss<List<DocumentoResoDTO>, DialogUltimeConsegneFiltroAvanzatoViewModel> mOnDismiss;
private ArrayAdapter<String> arrayAdapterRagSoc;
private List<DocumentoResoDTO> mItems;
private List<DocumentoResoDTO> mFilteredItems;
private Predicate<DocumentoResoDTO> currentRagSocPredicate = null;
private Predicate<DocumentoResoDTO> currentDataDocPredicate = null;
public static AlertDialog make(final Context context,
final List<DocumentoResoDTO> items,
DialogUltimeConsegneFiltroAvanzatoViewModel baseViewModel,
RunnableArgss<List<DocumentoResoDTO>, DialogUltimeConsegneFiltroAvanzatoViewModel> onDismiss) {
return new DialogUltimeConsegneFiltroAvanzato(context, items, baseViewModel, onDismiss).mAlert;
}
public DialogUltimeConsegneFiltroAvanzato(final Context context,
final List<DocumentoResoDTO> items,
DialogUltimeConsegneFiltroAvanzatoViewModel baseViewModel,
RunnableArgss<List<DocumentoResoDTO>, DialogUltimeConsegneFiltroAvanzatoViewModel> onDismiss) {
mContext = context;
mItems = items;
mBaseViewModel = baseViewModel;
mOnDismiss = onDismiss;
DialogUltimeConsegneFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogUltimeConsegneFiltroAvanzatoViewModel();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogUltimeConsegneFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_ultime_consegne_filtro_avanzato, null, false);
final AlertDialog.Builder dialog = new AlertDialog.Builder(context)
.setView(binding.getRoot());
binding.setViewmodel(viewModel);
initViewModelNew(viewModel);
initView(binding, viewModel);
mAlert = dialog.create();
mAlert.setCanceledOnTouchOutside(false);
mAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
mAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
binding.positiveBtn.setOnClickListener(view -> {
mAlert.dismiss();
});
binding.neutralBtn.setOnClickListener(view -> {
resetAll(viewModel);
});
mAlert.setOnDismissListener(dialogInterface -> {
if(mOnDismiss != null) mOnDismiss.run(mFilteredItems, viewModel);
});
refreshList();
}
private void resetAll(DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) {
viewModel.ragSoc.set(null);
viewModel.dataDoc.set(null);
}
private void initView(DialogUltimeConsegneFiltroAvanzatoBinding bindings, DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) {
arrayAdapterRagSoc = new ArrayAdapter(mContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterRagSoc.addAll(getAvailableRagSocs(false));
bindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc);
bindings.filledExposedDropdownDataDoc.setOnClickListener(view -> {
Calendar c = UtilityDate.getCalendarInstance();
if(viewModel.dataDocDate != null) {
c.setTime(viewModel.dataDocDate);
}
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
(view2, year, month, day) -> {
viewModel.dataDocDate = new GregorianCalendar(year, month, day).getTime();
viewModel.dataDoc.set(UtilityDate.formatDate(viewModel.dataDocDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
}, mYear, mMonth, mDay);
datePickerDialog.show();
});
viewModel.ragSoc.refresh();
viewModel.dataDoc.refresh();
}
private void initViewModelNew(DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) {
BindableString.resetListeners(viewModel.ragSoc);
BindableString.registerListener(viewModel.ragSoc, value -> {
if (UtilityString.isNullOrEmpty(value)) currentRagSocPredicate = null;
else {
currentRagSocPredicate = o -> o.getRagSoc().equalsIgnoreCase(viewModel.ragSoc.get());
}
refreshList();
});
BindableString.resetListeners(viewModel.dataDoc);
BindableString.registerListener(viewModel.dataDoc, value -> {
if (UtilityString.isNullOrEmpty(value)) currentDataDocPredicate = null;
else {
currentDataDocPredicate = o -> o.getDataDocD().equals(viewModel.dataDocDate);
}
refreshList();
arrayAdapterRagSoc.clear();
arrayAdapterRagSoc.addAll(getAvailableRagSocs(true));
});
}
private List<String> getAvailableRagSocs(boolean skipRecalc) {
if(currentDataDocPredicate == null){
mFilteredItems = mItems;
} else if(!skipRecalc){
Stream<DocumentoResoDTO> tmpStream = Stream.of(mItems)
.filter(x ->
(currentDataDocPredicate == null || (currentDataDocPredicate.test(x)))
);
mFilteredItems = tmpStream.toList();
}
return Stream.of(mFilteredItems).map(DocumentoResoDTO::getRagSoc).distinct().withoutNulls().toList();
}
private void refreshList() {
if(currentRagSocPredicate == null && currentDataDocPredicate == null){
mFilteredItems = mItems;
} else {
Stream<DocumentoResoDTO> tmpStream = Stream.of(mItems)
.filter(x ->
(currentRagSocPredicate == null || (currentRagSocPredicate.test(x))) &&
(currentDataDocPredicate== null || (currentDataDocPredicate.test(x)))
);
mFilteredItems = tmpStream.toList();
}
}
public class DialogUltimeConsegneFiltroAvanzatoViewModel {
public BindableString ragSoc = new BindableString();
public BindableString dataDoc = new BindableString();
public Date dataDocDate;
}
}

View File

@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -16,6 +17,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
@ -25,7 +27,11 @@ public class UltimeConsegneClienteViewModel {
private Context mContext;
private FragmentMainUltimeConsegneClienteBinding mBinding;
private UltimeConsegneMainListAdapter mAdapter;
private List<DocumentoResoDTO> mItems;
private List<DocumentoResoDTO> mRenderedItems = new ArrayList<>();
private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel;
public UltimeConsegneClienteViewModel(Context context, FragmentMainUltimeConsegneClienteBinding binding) {
this.mContext = context;
@ -39,6 +45,17 @@ public class UltimeConsegneClienteViewModel {
});
}
public void openFilterDialog() {
DialogUltimeConsegneFiltroAvanzato.make(mContext, mItems, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
mAppliedFilterViewModel = filter;
if(filteredOrderList != null){
refreshItems(filteredOrderList);
}
}).show();
}
private void initList() {
@ -50,7 +67,9 @@ public class UltimeConsegneClienteViewModel {
null,
consegne -> {
this.mItems = consegne;
this.initDataAdapter(consegne);
refreshItems(consegne);
progressDialog.dismiss();
}, ex -> {
@ -59,16 +78,23 @@ public class UltimeConsegneClienteViewModel {
}
private void initDataAdapter(ArrayList<DocumentoResoDTO> dataset) {
UltimeConsegneMainListAdapter adapter = new UltimeConsegneMainListAdapter(mContext, dataset);
adapter.setOnSelectionChanged(this::onSingleSelectionChanged);
mAdapter = new UltimeConsegneMainListAdapter(mContext, dataset);
mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
mBinding.recyclerView.setHasFixedSize(true);
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
mBinding.recyclerView.setAdapter(adapter);
mBinding.recyclerView.setAdapter(mAdapter);
mBinding.fastscroll.setRecyclerView(mBinding.recyclerView);
}
private void refreshItems(List<DocumentoResoDTO> items){
mBinding.emptyView.setVisibility((items != null && items.size() > 0) ? View.GONE : View.VISIBLE);
mRenderedItems.clear();
if(items != null) mRenderedItems.addAll(items);
mAdapter.updateItems(mRenderedItems);
}
private void onSingleSelectionChanged(DocumentoResoDTO dto) {
List<DocumentoResoDTO> selectedOrders = getSelectedItems();

View File

@ -36,10 +36,6 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
private RunnableArgs<DocumentoResoDTO> mOnSelectionChanged;
private TextDrawable.IShapeBuilder smallIconBuilder;
private TextDrawable.IShapeBuilder mediumIconBuilder;
private TextDrawable.IShapeBuilder largeIconBuilder;
@Override
public String getSectionTitle(int position) {
return mSectionTitleItems.get(position);
@ -74,56 +70,8 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
super();
this.mContext = context;
this.mDataset = new ArrayList<>();
this.mSectionTitleItems = new ArrayList<>();
this.mDataset = Stream.of(dataset)
.sortBy(DocumentoResoDTO::getRagSoc)
.toList();
Stream.of(mDataset)
.map(DocumentoResoDTO::getRagSoc)
.distinct()
.forEach(x -> {
this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
long count = Stream.of(dataset)
.filter(y -> y.getRagSoc().equalsIgnoreCase(x))
.count();
for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
});
long count = Stream.of(dataset)
.filter(x -> UtilityString.isNullOrEmpty(x.getRagSoc()))
.count();
smallIconBuilder = TextDrawable.builder()
.beginConfig()
.width(40)
.height(40)
.fontSize(24)
.useFont(ResourcesCompat.getFont(mContext, R.font.google_sans_regular))
.endConfig();
mediumIconBuilder = TextDrawable.builder()
.beginConfig()
.width(40)
.height(40)
.fontSize(20)
.useFont(ResourcesCompat.getFont(mContext, R.font.google_sans_regular))
.endConfig();
largeIconBuilder = TextDrawable.builder()
.beginConfig()
.width(40)
.height(40)
.fontSize(16)
.useFont(ResourcesCompat.getFont(mContext, R.font.google_sans_regular))
.endConfig();
updateItems(sort(dataset));
}
@ -151,15 +99,7 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
holder.mBinding.subDescriptionMain.setText(String.format(mContext.getText(R.string.shipped_on).toString(), UtilityDate.formatDate(consegna.getDataInizTraspD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
}
String numDoc = "" + consegna.getNumDoc();
if(numDoc.length() <= 2) {
holder.mBinding.startIcon.setImageDrawable(smallIconBuilder.buildRound(numDoc, ContextCompat.getColor(mContext, R.color.colorPrimary)));
} else if(numDoc.length() == 3) {
holder.mBinding.startIcon.setImageDrawable(mediumIconBuilder.buildRound(numDoc, ContextCompat.getColor(mContext, R.color.colorPrimary)));
} else if(numDoc.length() == 4) {
holder.mBinding.startIcon.setImageDrawable(largeIconBuilder.buildRound(numDoc, ContextCompat.getColor(mContext, R.color.colorPrimary)));
}
holder.mBinding.badge1.setText(String.valueOf(consegna.getNumDoc()));
try {
Calendar calendarNow = UtilityDate.getCalendarInstance();
@ -213,6 +153,40 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
}
public void updateItems(List<DocumentoResoDTO> updatedDataset) {
mDataset.clear();
mDataset.addAll(sort(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<DocumentoResoDTO> sort(List<DocumentoResoDTO> dataset) {
this.mSectionTitleItems = new ArrayList<>();
List<DocumentoResoDTO> sortedDataset = Stream.of(dataset)
.sortBy(DocumentoResoDTO::getRagSoc)
.toList();
Stream.of(sortedDataset)
.map(DocumentoResoDTO::getRagSoc)
.distinct()
.forEach(x -> {
this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
long count = Stream.of(dataset)
.filter(y -> y.getRagSoc().equalsIgnoreCase(x))
.count();
for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
});
return sortedDataset;
}
public void setOnSelectionChanged(RunnableArgs<DocumentoResoDTO> mSelectionChanged) {
this.mOnSelectionChanged = mSelectionChanged;
}

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.ultime_arrivi_fornitore;
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore;
import android.app.Dialog;
@ -20,29 +20,36 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentUltimeConsegneFornitoreBinding;
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter;
import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
/**
* A simple {@link Fragment} subclass.
*/
public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFragment, IScrollableFragment {
public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
private Runnable mOnPreDestroy;
private ElevatedToolbar mToolbar;
private FragmentUltimeConsegneFornitoreBinding mBinding;
private FragmentUltimiArriviFornitoreBinding mBinding;
private List<DocumentoResoDTO> mItems;
private List<DocumentoResoDTO> mRenderedItems = new ArrayList<>();
private UltimiArriviFornitoreListAdapter mAdapter;
private DialogUltimiArriviFornitoreFiltroAvanzato.DialogUltimiArriviFiltroAvanzatoViewModel mAppliedFilterViewModel;
public UltimiArriviFornitoreFragment() {
// Required empty public constructor
@ -61,7 +68,7 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultime_consegne_fornitore, container, false);
mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultimi_arrivi_fornitore, container, false);
mBinding.setViewmodel(this);
@ -116,7 +123,9 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
null,
consegne -> {
this.mItems = consegne;
this.initDataAdapter(consegne);
refreshItems(consegne);
progressDialog.dismiss();
}, ex -> {
@ -124,13 +133,15 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
});
}
private void initDataAdapter(ArrayList<DocumentoResoDTO> dataset) {
UltimiArriviFornitoreListAdapter adapter = new UltimiArriviFornitoreListAdapter(getActivity(), dataset);
adapter.setOnSelectionChanged(this::onSingleSelectionChanged);
mAdapter = new UltimiArriviFornitoreListAdapter(getActivity(), dataset);
mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
mBinding.recyclerView.setHasFixedSize(true);
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mBinding.recyclerView.setAdapter(adapter);
mBinding.recyclerView.setAdapter(mAdapter);
mBinding.fastscroll.setRecyclerView(mBinding.recyclerView);
}
@ -166,4 +177,25 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
PickingResiActivity.startActivity(getActivity(), getText(R.string.ultime_arrivi_fornitore_title).toString(), selectedConsegne, -1);
}
@Override
public void onFilterClick() {
DialogUltimiArriviFornitoreFiltroAvanzato.make(getActivity(), mItems, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
mAppliedFilterViewModel = filter;
if(filteredOrderList != null){
refreshItems(filteredOrderList);
}
}).show();
}
private void refreshItems(List<DocumentoResoDTO> items){
mBinding.emptyView.setVisibility((items != null && items.size() > 0) ? View.GONE : View.VISIBLE);
mRenderedItems.clear();
if(items != null) mRenderedItems.addAll(items);
mAdapter.updateItems(mRenderedItems);
}
}

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.core;
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core;
import android.content.Context;
import android.view.LayoutInflater;
@ -21,8 +21,8 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentUltimeConsegneFornitoreListHeaderBinding;
import it.integry.integrywmsnative.databinding.FragmentUltimeConsegneFornitoreListSingleItemBinding;
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreListHeaderBinding;
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreListSingleItemBinding;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapter<UltimiArriviFornitoreListAdapter.SubheaderHolder, UltimiArriviFornitoreListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
@ -41,9 +41,9 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
static class SubheaderHolder extends RecyclerView.ViewHolder {
FragmentUltimeConsegneFornitoreListHeaderBinding mBinding;
FragmentUltimiArriviFornitoreListHeaderBinding mBinding;
SubheaderHolder(FragmentUltimeConsegneFornitoreListHeaderBinding binding) {
SubheaderHolder(FragmentUltimiArriviFornitoreListHeaderBinding binding) {
super(binding.getRoot());
this.mBinding = binding;
}
@ -52,9 +52,9 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
FragmentUltimeConsegneFornitoreListSingleItemBinding mBinding;
FragmentUltimiArriviFornitoreListSingleItemBinding mBinding;
SingleItemViewHolder(FragmentUltimeConsegneFornitoreListSingleItemBinding binding) {
SingleItemViewHolder(FragmentUltimiArriviFornitoreListSingleItemBinding binding) {
super(binding.getRoot());
this.mBinding = binding;
}
@ -70,41 +70,19 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
this.mDataset = new ArrayList<>();
this.mSectionTitleItems = new ArrayList<>();
this.mDataset = Stream.of(dataset)
.sortBy(DocumentoResoDTO::getRagSoc)
.toList();
Stream.of(mDataset)
.map(DocumentoResoDTO::getRagSoc)
.distinct()
.forEach(x -> {
this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
long count = Stream.of(dataset)
.filter(y -> y.getRagSoc().equalsIgnoreCase(x))
.count();
for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
});
long count = Stream.of(dataset)
.filter(x -> UtilityString.isNullOrEmpty(x.getRagSoc()))
.count();
mDataset.addAll(sort(dataset));
}
@Override
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
FragmentUltimeConsegneFornitoreListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ultime_consegne_fornitore__list_single_item, parent, false);
FragmentUltimiArriviFornitoreListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ultimi_arrivi_fornitore__list_single_item, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
FragmentUltimeConsegneFornitoreListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ultime_consegne_fornitore__list_header, parent, false);
FragmentUltimiArriviFornitoreListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ultimi_arrivi_fornitore__list_header, parent, false);
return new SubheaderHolder(binding);
}
@ -171,9 +149,42 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
}
public void updateItems(List<DocumentoResoDTO> updatedDataset) {
mDataset.clear();
mDataset.addAll(sort(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
public void setOnSelectionChanged(RunnableArgs<DocumentoResoDTO> mSelectionChanged) {
this.mOnSelectionChanged = mSelectionChanged;
}
private List<DocumentoResoDTO> sort(List<DocumentoResoDTO> dataset) {
List<DocumentoResoDTO> items = Stream.of(dataset)
.sortBy(DocumentoResoDTO::getRagSoc)
.toList();
Stream.of(items)
.map(DocumentoResoDTO::getRagSoc)
.distinct()
.forEach(x -> {
this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
long count = Stream.of(dataset)
.filter(y -> y.getRagSoc().equalsIgnoreCase(x))
.count();
for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
});
return items;
}
}

View File

@ -0,0 +1,206 @@
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog;
import android.app.DatePickerDialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import androidx.appcompat.app.AlertDialog;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogUltimeConsegneFiltroAvanzatoBinding;
import it.integry.integrywmsnative.databinding.DialogUltimiArriviFornitoreFiltroAvanzatoBinding;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
public class DialogUltimiArriviFornitoreFiltroAvanzato {
private AlertDialog mAlert;
private Context mContext;
private DialogUltimiArriviFiltroAvanzatoViewModel mBaseViewModel;
private RunnableArgss<List<DocumentoResoDTO>, DialogUltimiArriviFiltroAvanzatoViewModel> mOnDismiss;
private ArrayAdapter<String> arrayAdapterRagSoc;
private List<DocumentoResoDTO> mItems;
private List<DocumentoResoDTO> mFilteredItems;
private Predicate<DocumentoResoDTO> currentRagSocPredicate = null;
private Predicate<DocumentoResoDTO> currentDataDocPredicate = null;
public static AlertDialog make(final Context context,
final List<DocumentoResoDTO> items,
DialogUltimiArriviFiltroAvanzatoViewModel baseViewModel,
RunnableArgss<List<DocumentoResoDTO>, DialogUltimiArriviFiltroAvanzatoViewModel> onDismiss) {
return new DialogUltimiArriviFornitoreFiltroAvanzato(context, items, baseViewModel, onDismiss).mAlert;
}
public DialogUltimiArriviFornitoreFiltroAvanzato(final Context context,
final List<DocumentoResoDTO> items,
DialogUltimiArriviFiltroAvanzatoViewModel baseViewModel,
RunnableArgss<List<DocumentoResoDTO>, DialogUltimiArriviFiltroAvanzatoViewModel> onDismiss) {
mContext = context;
mItems = items;
mBaseViewModel = baseViewModel;
mOnDismiss = onDismiss;
DialogUltimiArriviFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogUltimiArriviFiltroAvanzatoViewModel();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogUltimiArriviFornitoreFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_ultimi_arrivi_fornitore_filtro_avanzato, null, false);
final AlertDialog.Builder dialog = new AlertDialog.Builder(context)
.setView(binding.getRoot());
binding.setViewmodel(viewModel);
initViewModelNew(viewModel);
initView(binding, viewModel);
mAlert = dialog.create();
mAlert.setCanceledOnTouchOutside(false);
mAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
mAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
binding.positiveBtn.setOnClickListener(view -> {
mAlert.dismiss();
});
binding.neutralBtn.setOnClickListener(view -> {
resetAll(viewModel);
});
mAlert.setOnDismissListener(dialogInterface -> {
if(mOnDismiss != null) mOnDismiss.run(mFilteredItems, viewModel);
});
refreshList();
}
private void resetAll(DialogUltimiArriviFiltroAvanzatoViewModel viewModel) {
viewModel.ragSoc.set(null);
viewModel.dataDoc.set(null);
}
private void initView(DialogUltimiArriviFornitoreFiltroAvanzatoBinding bindings, DialogUltimiArriviFiltroAvanzatoViewModel viewModel) {
arrayAdapterRagSoc = new ArrayAdapter(mContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterRagSoc.addAll(getAvailableRagSocs(false));
bindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc);
bindings.filledExposedDropdownDataDoc.setOnClickListener(view -> {
Calendar c = UtilityDate.getCalendarInstance();
if(viewModel.dataDocDate != null) {
c.setTime(viewModel.dataDocDate);
}
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
(view2, year, month, day) -> {
viewModel.dataDocDate = new GregorianCalendar(year, month, day).getTime();
viewModel.dataDoc.set(UtilityDate.formatDate(viewModel.dataDocDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
}, mYear, mMonth, mDay);
datePickerDialog.show();
});
viewModel.ragSoc.refresh();
viewModel.dataDoc.refresh();
}
private void initViewModelNew(DialogUltimiArriviFiltroAvanzatoViewModel viewModel) {
BindableString.resetListeners(viewModel.ragSoc);
BindableString.registerListener(viewModel.ragSoc, value -> {
if (UtilityString.isNullOrEmpty(value)) currentRagSocPredicate = null;
else {
currentRagSocPredicate = o -> o.getRagSoc().equalsIgnoreCase(viewModel.ragSoc.get());
}
refreshList();
});
BindableString.resetListeners(viewModel.dataDoc);
BindableString.registerListener(viewModel.dataDoc, value -> {
if (UtilityString.isNullOrEmpty(value)) currentDataDocPredicate = null;
else {
currentDataDocPredicate = o -> o.getDataDocD().equals(viewModel.dataDocDate);
}
refreshList();
arrayAdapterRagSoc.clear();
arrayAdapterRagSoc.addAll(getAvailableRagSocs(true));
});
}
private List<String> getAvailableRagSocs(boolean skipRecalc) {
if(currentDataDocPredicate == null){
mFilteredItems = mItems;
} else if(!skipRecalc){
Stream<DocumentoResoDTO> tmpStream = Stream.of(mItems)
.filter(x ->
(currentDataDocPredicate == null || (currentDataDocPredicate.test(x)))
);
mFilteredItems = tmpStream.toList();
}
return Stream.of(mFilteredItems).map(DocumentoResoDTO::getRagSoc).distinct().withoutNulls().toList();
}
private void refreshList() {
if(currentRagSocPredicate == null && currentDataDocPredicate == null){
mFilteredItems = mItems;
} else {
Stream<DocumentoResoDTO> tmpStream = Stream.of(mItems)
.filter(x ->
(currentRagSocPredicate == null || (currentRagSocPredicate.test(x))) &&
(currentDataDocPredicate== null || (currentDataDocPredicate.test(x)))
);
mFilteredItems = tmpStream.toList();
}
}
public class DialogUltimiArriviFiltroAvanzatoViewModel {
public BindableString ragSoc = new BindableString();
public BindableString dataDoc = new BindableString();
public Date dataDocDate;
}
}

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.rest;
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest;
import com.google.gson.reflect.TypeToken;

View File

@ -1,6 +1,6 @@
package it.integry.integrywmsnative.gest.vendita.dialogs;
import android.app.AlertDialog;
import androidx.appcompat.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.Context;
@ -91,7 +91,7 @@ public class DialogVenditaFiltroAvanzato {
.setView(binding.getRoot());
binding.setViewmodel(viewModel);
initViewModelNew(viewModel, binding);
initViewModelNew(viewModel);
initView(binding, viewModel);
currentAlert = alertDialog.create();
@ -209,7 +209,7 @@ public class DialogVenditaFiltroAvanzato {
}
private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel, DialogVenditaFiltroAvanzatoBinding bindings) {
private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel) {
BindableString.registerListener(viewModel.idViaggio, value -> {
if(UtilityString.isNullOrEmpty(value)) currentIdViaggioPredicate = null;
else {

View File

@ -28,7 +28,7 @@ import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper;
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class VenditaViewModel {

View File

@ -10,6 +10,7 @@ import android.view.MenuItem;
import java.util.ArrayList;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
@ -24,7 +25,7 @@ import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO;
import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel.VenditaOrdineInevasoViewModel;
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
public class VenditaOrdineInevasoActivity extends AppCompatActivity {
public class VenditaOrdineInevasoActivity extends BaseActivity {
private ActivityVenditaOrdineInevasoBinding mBindings;

View File

@ -69,7 +69,7 @@ import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShould
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IOnOrdineVenditaRowDispatched {

View File

@ -2,13 +2,13 @@ package it.integry.integrywmsnative.gest.versamento_merce.viewmodel;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import android.text.Html;
import android.text.SpannableString;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
@ -16,10 +16,9 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeType;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
@ -28,6 +27,9 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@ -42,8 +44,6 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeType;
public class VersamentoMerceViewModel {
@ -72,6 +72,8 @@ public class VersamentoMerceViewModel {
((IPoppableActivity)mContext).pop();
} else if((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColt.getSegno().equals(+1)){
setMtbColt(mtbColt);
} else if(mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno().equals(+1)){
setMtbColt(mtbColt);
} else {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(Html.fromHtml("Sono accettate solamente UL di <b>Acquisto</b> o <b>Lavorazione</b> di <b>CARICO</b>")),
@ -305,6 +307,10 @@ public class VersamentoMerceViewModel {
.setDataColloRif(cloneMtbColr.getDataColloS());
}
if(sourceMtbColt.getGestioneEnum() == GestioneEnum.VENDITA && sourceMtbColt.getSegno() == +1){
cloneMtbColr.setCodJcom(null);
}
cloneMtbColr
.setGestione((String) null)
.setSerCollo(null)

View File

@ -9,39 +9,48 @@ import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogProgressBinding;
public class DialogProgress {
private Context mContext;
private DialogProgressBinding mBinding;
private Dialog mDialog;
public static Dialog make(Context context,String subtitle) {
DialogProgress progress = new DialogProgress(context);
progress.setSubtitle(subtitle);
return progress.mDialog;
}
public static Dialog make(Context context) {
return new DialogProgress(context).mDialog;
}
public DialogProgress(Context context) {
private DialogProgress(Context context) {
mContext = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View currentView = inflater.inflate(R.layout.dialog_progress, null, false);
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, null, false);
final Thread[] progressBarThread = new Thread[1];
mDialog = new Dialog(mContext);
mDialog.setContentView(currentView);
mDialog.setContentView(mBinding.getRoot());
mDialog.setCanceledOnTouchOutside(false);
mDialog.setCancelable(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mDialog.setOnShowListener(dialog -> {
// ((ProgressBar) currentView.findViewById(R.id.progressBar)).setIndeterminate(true);
progressBarThread[0] = UtilityProgress.makeProgressBarIndeterminate(currentView.findViewById(R.id.progressBar));
progressBarThread[0] = UtilityProgress.makeProgressBarIndeterminate(mBinding.progressBar);
});
mDialog.setOnDismissListener(dialog -> {
@ -49,4 +58,8 @@ public class DialogProgress {
});
}
private void setSubtitle(String subtitle){
mBinding.subtitleText.setText(subtitle);
}
}

View File

@ -32,7 +32,7 @@ import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogAskPositionOfLuBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class DialogAskPositionOfLU {

View File

@ -1,7 +1,7 @@
package it.integry.integrywmsnative.view.dialogs.base;
import android.app.Activity;
import android.app.AlertDialog;
import androidx.appcompat.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.res.ColorStateList;

View File

@ -34,7 +34,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsLayoutBinding;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class DialogChooseArtsFromListaArts {

View File

@ -1,6 +1,6 @@
package it.integry.integrywmsnative.view.dialogs.input_quantity;
import android.app.AlertDialog;
import androidx.appcompat.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
@ -47,7 +47,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogInputQuantityArticoloBinding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class DialogInputQuantity {

View File

@ -27,7 +27,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogScanArtBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class DialogScanArt {

View File

@ -1,28 +1,28 @@
package it.integry.integrywmsnative.view.dialogs.scan_or_create_lu;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import androidx.databinding.DataBindingUtil;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Stream;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
@ -30,7 +30,6 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
public class DialogScanOrCreateLU {

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M7,18c-1.1,0 -1.99,0.9 -1.99,2S5.9,22 7,22s2,-0.9 2,-2 -0.9,-2 -2,-2zM1,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.14,0 -0.25,-0.11 -0.25,-0.25l0.03,-0.12 0.9,-1.63h7.45c0.75,0 1.41,-0.41 1.75,-1.03l3.58,-6.49c0.08,-0.14 0.12,-0.31 0.12,-0.48 0,-0.55 -0.45,-1 -1,-1L5.21,4l-0.94,-2L1,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,-2z"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M17,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7l-4,-4zM12,19c-1.66,0 -3,-1.34 -3,-3s1.34,-3 3,-3 3,1.34 3,3 -1.34,3 -3,3zM15,9L5,9L5,5h10v4z"/>
</vector>

Some files were not shown because too many files have changed in this diff Show More