Finish v1_0_26(29)
This commit is contained in:
commit
70269642ce
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
@ -9,7 +9,7 @@ buildscript {
|
|||||||
}
|
}
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'com.google.firebase.firebase-perf'
|
apply plugin: 'com.google.firebase.firebase-perf'
|
||||||
//apply plugin: 'io.fabric'
|
apply plugin: 'io.fabric'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
apply plugin: 'kotlin-android-extensions'
|
||||||
apply plugin: 'com.google.gms.google-services'
|
apply plugin: 'com.google.gms.google-services'
|
||||||
@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
||||||
def appVersionCode = 28
|
def appVersionCode = 29
|
||||||
def appVersionName = '1.0.25'
|
def appVersionName = '1.0.26'
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
|
|||||||
@ -13,21 +13,17 @@ import androidx.drawerlayout.widget.DrawerLayout;
|
|||||||
import androidx.appcompat.app.ActionBarDrawerToggle;
|
import androidx.appcompat.app.ActionBarDrawerToggle;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.appcompat.widget.SearchView;
|
import androidx.appcompat.widget.SearchView;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
|
||||||
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.LinearLayout;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
import androidx.fragment.app.FragmentTransaction;
|
||||||
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
|
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
|
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
@ -207,8 +203,8 @@ public class MainActivity extends AppCompatActivity
|
|||||||
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.GONE);
|
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fragment instanceof IRecyclerFragment) {
|
if(fragment instanceof IScrollableFragment) {
|
||||||
((IRecyclerFragment) fragment).setWaterfallToolbar(mBinding.appBarMain.waterfallToolbar);
|
((IScrollableFragment) fragment).setWaterfallToolbar(mBinding.appBarMain.waterfallToolbar);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isEnabled()) {
|
if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isEnabled()) {
|
||||||
|
|||||||
@ -8,12 +8,16 @@ import com.orhanobut.logger.Logger;
|
|||||||
|
|
||||||
import io.fabric.sdk.android.Fabric;
|
import io.fabric.sdk.android.Fabric;
|
||||||
import it.integry.integrywmsnative.BuildConfig;
|
import it.integry.integrywmsnative.BuildConfig;
|
||||||
|
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
|
||||||
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
|
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
|
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
|
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.settings.Stash;
|
import it.integry.integrywmsnative.core.settings.Stash;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||||
@ -84,12 +88,6 @@ public class AppContext {
|
|||||||
|
|
||||||
private void initRecoverColli() {
|
private void initRecoverColli() {
|
||||||
ColliDataRecover.init(mContext);
|
ColliDataRecover.init(mContext);
|
||||||
|
|
||||||
if(ColliDataRecover.thereIsAnExistantSession()){
|
|
||||||
MtbColt recoveredMtbColt = ColliDataRecover.getFirstSession();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,43 @@
|
|||||||
|
package it.integry.integrywmsnative.core.data_cache;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class DataCache {
|
||||||
|
|
||||||
|
private static List<DataCacheDTO> dataCacheList = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
|
public static String addItem(Object item) {
|
||||||
|
String uniqueID = UUID.randomUUID().toString();
|
||||||
|
|
||||||
|
DataCacheDTO dataCacheDTO = new DataCacheDTO()
|
||||||
|
.setItem(item)
|
||||||
|
.setUUID(uniqueID);
|
||||||
|
|
||||||
|
dataCacheList.add(dataCacheDTO);
|
||||||
|
|
||||||
|
return uniqueID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T>T retrieveItem(String uuid) {
|
||||||
|
|
||||||
|
List<DataCacheDTO> dataCacheTemp = Stream.of(dataCacheList)
|
||||||
|
.filter(x -> x.getUUID().equals(uuid)).toList();
|
||||||
|
|
||||||
|
Object foundDataCache = null;
|
||||||
|
|
||||||
|
if(dataCacheTemp != null && dataCacheTemp.size() > 0) {
|
||||||
|
foundDataCache = dataCacheTemp.get(0).getItem();
|
||||||
|
dataCacheList.remove(dataCacheTemp.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
return (T)foundDataCache;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package it.integry.integrywmsnative.core.data_cache;
|
||||||
|
|
||||||
|
public class DataCacheDTO {
|
||||||
|
|
||||||
|
private String UUID;
|
||||||
|
private Object item;
|
||||||
|
|
||||||
|
public String getUUID() {
|
||||||
|
return UUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataCacheDTO setUUID(String UUID) {
|
||||||
|
this.UUID = UUID;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getItem() {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataCacheDTO setItem(Object item) {
|
||||||
|
this.item = item;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,9 +2,18 @@ package it.integry.integrywmsnative.core.data_recover;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.google.android.gms.common.util.IOUtils;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.DataInputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.lang.reflect.Type;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -19,6 +28,7 @@ public class ColliDataRecover {
|
|||||||
private String serCollo;
|
private String serCollo;
|
||||||
private String dataCollo;
|
private String dataCollo;
|
||||||
private String gestioneCollo;
|
private String gestioneCollo;
|
||||||
|
private String filtro;
|
||||||
|
|
||||||
public int getNumCollo() {
|
public int getNumCollo() {
|
||||||
return numCollo;
|
return numCollo;
|
||||||
@ -55,6 +65,15 @@ public class ColliDataRecover {
|
|||||||
this.gestioneCollo = gestioneCollo;
|
this.gestioneCollo = gestioneCollo;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFiltro() {
|
||||||
|
return filtro;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RecoverDTO setFiltro(String filtro) {
|
||||||
|
this.filtro = filtro;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Context mContext;
|
private static Context mContext;
|
||||||
@ -63,36 +82,48 @@ public class ColliDataRecover {
|
|||||||
|
|
||||||
public static void init(Context context) {
|
public static void init(Context context) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
|
|
||||||
|
if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) {
|
||||||
|
loadLocalFile();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean thereIsAnExistantSession() {
|
public static boolean thereIsAnExistantSession() {
|
||||||
return mtbColtsSessions.size() > 0;
|
return mtbColtsSessions.size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MtbColt getFirstSession() {
|
public static Integer getFirstSessionID() {
|
||||||
|
|
||||||
if(thereIsAnExistantSession()){
|
if(thereIsAnExistantSession()){
|
||||||
RecoverDTO dto = mtbColtsSessions.get(0);
|
return 0;
|
||||||
mtbColtsSessions.remove(dto);
|
|
||||||
|
|
||||||
return new MtbColt()
|
|
||||||
.setNumCollo(dto.getNumCollo())
|
|
||||||
.setSerCollo(dto.getSerCollo())
|
|
||||||
.setGestione(dto.getGestioneCollo())
|
|
||||||
.setDataCollo(dto.getDataCollo());
|
|
||||||
|
|
||||||
|
|
||||||
} else return null;
|
} else return null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static MtbColt getSession(Integer sessionID) {
|
||||||
|
|
||||||
|
if(sessionID == null) return null;
|
||||||
|
|
||||||
|
RecoverDTO dto = mtbColtsSessions.get(sessionID);
|
||||||
|
|
||||||
|
return new MtbColt()
|
||||||
|
.setNumCollo(dto.getNumCollo())
|
||||||
|
.setSerCollo(dto.getSerCollo())
|
||||||
|
.setGestione(dto.getGestioneCollo())
|
||||||
|
.setDataCollo(dto.getDataCollo())
|
||||||
|
.setFiltroOrdini(dto.getFiltro());
|
||||||
|
}
|
||||||
|
|
||||||
public static int startNewSession(MtbColt mtbColtSession) {
|
public static int startNewSession(MtbColt mtbColtSession) {
|
||||||
|
|
||||||
RecoverDTO recoverDTO = new RecoverDTO()
|
RecoverDTO recoverDTO = new RecoverDTO()
|
||||||
.setDataCollo(mtbColtSession.getDataColloS())
|
.setDataCollo(mtbColtSession.getDataColloS())
|
||||||
.setNumCollo(mtbColtSession.getNumCollo())
|
.setNumCollo(mtbColtSession.getNumCollo())
|
||||||
.setSerCollo(mtbColtSession.getSerCollo())
|
.setSerCollo(mtbColtSession.getSerCollo())
|
||||||
.setGestioneCollo(mtbColtSession.getGestione());
|
.setGestioneCollo(mtbColtSession.getGestione())
|
||||||
|
.setFiltro(mtbColtSession.getFiltroOrdini());
|
||||||
|
|
||||||
mtbColtsSessions.add(recoverDTO);
|
mtbColtsSessions.add(recoverDTO);
|
||||||
updateLocalFile();
|
updateLocalFile();
|
||||||
@ -105,6 +136,28 @@ public class ColliDataRecover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static void loadLocalFile() {
|
||||||
|
InputStream inputStream;
|
||||||
|
|
||||||
|
Gson gson = new Gson();
|
||||||
|
|
||||||
|
try {
|
||||||
|
inputStream = mContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE);
|
||||||
|
|
||||||
|
byte[] bytes = IOUtils.readInputStreamFully(inputStream);
|
||||||
|
String jsonString = new String(bytes);
|
||||||
|
|
||||||
|
Type listType = new TypeToken<ArrayList<RecoverDTO>>(){}.getType();
|
||||||
|
mtbColtsSessions = gson.fromJson(jsonString, listType);
|
||||||
|
|
||||||
|
inputStream.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
UtilityExceptions.defaultException(mContext, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void updateLocalFile() {
|
private static void updateLocalFile() {
|
||||||
FileOutputStream outputStream;
|
FileOutputStream outputStream;
|
||||||
|
|
||||||
@ -119,7 +172,13 @@ public class ColliDataRecover {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
UtilityExceptions.defaultException(mContext, e);
|
UtilityExceptions.defaultException(mContext, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isFilePresent(String fileName) {
|
||||||
|
String path = mContext.getFilesDir().getAbsolutePath() + "/" + fileName;
|
||||||
|
File file = new File(path);
|
||||||
|
return file.exists();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.interfaces;
|
|||||||
|
|
||||||
import it.integry.plugins.waterfalltoolbar.WaterfallToolbar;
|
import it.integry.plugins.waterfalltoolbar.WaterfallToolbar;
|
||||||
|
|
||||||
public interface IRecyclerFragment {
|
public interface IScrollableFragment {
|
||||||
|
|
||||||
void setWaterfallToolbar(WaterfallToolbar waterfallToolbar);
|
void setWaterfallToolbar(WaterfallToolbar waterfallToolbar);
|
||||||
|
|
||||||
@ -7,7 +7,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
|||||||
public class ReportManager {
|
public class ReportManager {
|
||||||
|
|
||||||
|
|
||||||
public static void getRightReportNameByMtbColt(MtbColt mtbColt, RunnableArgs<String> onComplete, RunnableArgs<Exception> onFailed) throws Exception{
|
public static void getRightReportNameByMtbColt(MtbColt mtbColt, RunnableArgs<String> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
|
||||||
if(mtbColt != null){
|
if(mtbColt != null){
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ public class ReportManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
throw new Exception("mtbColt cannot be NULL");
|
onFailed.run(new Exception("mtbColt cannot be NULL"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.settings;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
|
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
|
||||||
|
import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
|
||||||
import it.integry.integrywmsnative.core.model.Azienda;
|
import it.integry.integrywmsnative.core.model.Azienda;
|
||||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||||
@ -19,6 +20,7 @@ public class DBSettingsModel {
|
|||||||
private boolean flagMultiClienteOrdV;
|
private boolean flagMultiClienteOrdV;
|
||||||
private String defaultCodAnag;
|
private String defaultCodAnag;
|
||||||
private String defaultCausaleRettificaGiacenze;
|
private String defaultCausaleRettificaGiacenze;
|
||||||
|
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
|
||||||
|
|
||||||
public List<String> getAvailableProfiles() {
|
public List<String> getAvailableProfiles() {
|
||||||
return availableProfiles;
|
return availableProfiles;
|
||||||
@ -88,4 +90,13 @@ public class DBSettingsModel {
|
|||||||
this.defaultCausaleRettificaGiacenze = defaultCausaleRettificaGiacenze;
|
this.defaultCausaleRettificaGiacenze = defaultCausaleRettificaGiacenze;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DistribuzioneColloDTO.CriterioDistribuzione getDefaultCriterioDistribuzione() {
|
||||||
|
return defaultCriterioDistribuzione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setDefaultCriterioDistribuzione(String defaultCriterioDistribuzione) {
|
||||||
|
this.defaultCriterioDistribuzione = DistribuzioneColloDTO.CriterioDistribuzione.fromString(defaultCriterioDistribuzione);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -184,7 +184,15 @@ public class SettingsManager {
|
|||||||
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "COD_ANAG_DEFAULT", valueCodAnagDefault -> {
|
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "COD_ANAG_DEFAULT", valueCodAnagDefault -> {
|
||||||
dbSettingsModelIstance.setDefaultCodAnag(valueCodAnagDefault.value);
|
dbSettingsModelIstance.setDefaultCodAnag(valueCodAnagDefault.value);
|
||||||
|
|
||||||
if(onComplete != null) onComplete.run();
|
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", valueDefaultCriterioDistribuzione -> {
|
||||||
|
dbSettingsModelIstance.setDefaultCriterioDistribuzione(valueDefaultCriterioDistribuzione.value);
|
||||||
|
|
||||||
|
if(onComplete != null) onComplete.run();
|
||||||
|
|
||||||
|
}, ex -> {
|
||||||
|
if(onFailed != null) onFailed.run(ex);
|
||||||
|
});
|
||||||
|
|
||||||
}, ex -> {
|
}, ex -> {
|
||||||
if(onFailed != null) onFailed.run(ex);
|
if(onFailed != null) onFailed.run(ex);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -5,13 +5,12 @@ import android.app.ProgressDialog;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
||||||
import androidx.appcompat.app.ActionBar;
|
|
||||||
import androidx.appcompat.widget.AppCompatTextView;
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.appcompat.widget.SearchView;
|
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
@ -31,6 +30,7 @@ import it.integry.integrywmsnative.R;
|
|||||||
import it.integry.integrywmsnative.core.CommonConst;
|
import it.integry.integrywmsnative.core.CommonConst;
|
||||||
import it.integry.integrywmsnative.core.REST.CommonRESTException;
|
import it.integry.integrywmsnative.core.REST.CommonRESTException;
|
||||||
import it.integry.integrywmsnative.core.coollection.Coollection;
|
import it.integry.integrywmsnative.core.coollection.Coollection;
|
||||||
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
|
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
@ -39,7 +39,7 @@ import it.integry.integrywmsnative.gest.accettazione.core.AccettazioneHelper;
|
|||||||
import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapter;
|
import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapter;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadOrdiniCallback;
|
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadOrdiniCallback;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback;
|
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
|
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO;
|
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO;
|
||||||
@ -48,7 +48,7 @@ import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.Accettazione
|
|||||||
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
|
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
|
||||||
import it.integry.plugins.waterfalltoolbar.WaterfallToolbar;
|
import it.integry.plugins.waterfalltoolbar.WaterfallToolbar;
|
||||||
|
|
||||||
public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IRecyclerFragment {
|
public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IScrollableFragment {
|
||||||
|
|
||||||
private static WaterfallToolbar mWaterfallToolbar;
|
private static WaterfallToolbar mWaterfallToolbar;
|
||||||
|
|
||||||
@ -212,12 +212,12 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
|||||||
.and("data", Coollection.eq(filteredByCodAnagOrders.get(j).data)).all();
|
.and("data", Coollection.eq(filteredByCodAnagOrders.get(j).data)).all();
|
||||||
|
|
||||||
|
|
||||||
String prevCodJcom = "";
|
String prevCodJcomAndDataCons = "";
|
||||||
|
|
||||||
//Splitto gli ordini per codJcom
|
//Splitto gli ordini per codJcom e dataCons
|
||||||
for(int k = 0; k < filteredByCodAnagAndDateAndNumberOrders.size(); k++) {
|
for(int k = 0; k < filteredByCodAnagAndDateAndNumberOrders.size(); k++) {
|
||||||
if(prevCodJcom.equalsIgnoreCase(filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom)) continue;
|
if(prevCodJcomAndDataCons.equalsIgnoreCase(filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom + "_" + filteredByCodAnagAndDateAndNumberOrders.get(k).dataCons)) continue;
|
||||||
else prevCodJcom = filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom;
|
else prevCodJcomAndDataCons = filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom + "_" + filteredByCodAnagAndDateAndNumberOrders.get(k).dataCons;
|
||||||
|
|
||||||
OrdineAccettazioneGroupedInevasoDTO.Cliente cliente = new OrdineAccettazioneGroupedInevasoDTO.Cliente();
|
OrdineAccettazioneGroupedInevasoDTO.Cliente cliente = new OrdineAccettazioneGroupedInevasoDTO.Cliente();
|
||||||
|
|
||||||
@ -239,9 +239,7 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
|||||||
}
|
}
|
||||||
|
|
||||||
mAdapter = new MainListAccettazioneAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged);
|
mAdapter = new MainListAccettazioneAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged);
|
||||||
// mAdapter.setHasStableIds(true);
|
|
||||||
mBinding.accettazioneMainList.setAdapter(mAdapter);
|
mBinding.accettazioneMainList.setAdapter(mAdapter);
|
||||||
//mRecyclerView.setAdapter(mAdapter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnClick(R.id.accettazione_main_fab)
|
@OnClick(R.id.accettazione_main_fab)
|
||||||
@ -286,8 +284,10 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
|||||||
null,
|
null,
|
||||||
() -> {
|
() -> {
|
||||||
|
|
||||||
|
String cacheItemID = DataCache.addItem(ordini);
|
||||||
|
|
||||||
Intent myIntent = new Intent(getActivity(), AccettazioneOrdineInevasoActivity.class);
|
Intent myIntent = new Intent(getActivity(), AccettazioneOrdineInevasoActivity.class);
|
||||||
myIntent.putExtra("key", (ArrayList<OrdineAccettazioneDTO>) ordini); //Optional parameters
|
myIntent.putExtra("key", cacheItemID);
|
||||||
getActivity().startActivity(myIntent);
|
getActivity().startActivity(myIntent);
|
||||||
|
|
||||||
}).show();
|
}).show();
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import it.integry.integrywmsnative.R;
|
|||||||
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
|
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
|
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
|
||||||
@ -41,7 +42,7 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity {
|
|||||||
FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude;
|
FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude;
|
||||||
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings);
|
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings);
|
||||||
|
|
||||||
List<OrdineAccettazioneDTO> orders = (ArrayList<OrdineAccettazioneDTO>)getIntent().getSerializableExtra("key");
|
List<OrdineAccettazioneDTO> orders = DataCache.retrieveItem(getIntent().getStringExtra("key"));
|
||||||
mAccettazioneOrdineInevasoViewModel = new AccettazioneOnOrdineAccettazioneInevasoViewModel(
|
mAccettazioneOrdineInevasoViewModel = new AccettazioneOnOrdineAccettazioneInevasoViewModel(
|
||||||
this, mArticoliInColloBottomSheetViewModel, orders);
|
this, mArticoliInColloBottomSheetViewModel, orders);
|
||||||
|
|
||||||
|
|||||||
@ -748,7 +748,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
|
|||||||
dto.setShouldAskDataScad(true);
|
dto.setShouldAskDataScad(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(mActivity, dto, true, value -> onOrdineRowDispatched(item, value)).show();
|
DialogInputQuantity.makeBase(mActivity, dto, true, value -> onOrdineRowDispatched(item, value), null).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import android.os.Bundle;
|
|||||||
|
|
||||||
import androidx.appcompat.app.ActionBar;
|
import androidx.appcompat.app.ActionBar;
|
||||||
import androidx.appcompat.widget.AppCompatTextView;
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
|
import androidx.databinding.DataBindingUtil;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -22,25 +23,31 @@ import butterknife.OnClick;
|
|||||||
import de.hdodenhof.circleimageview.CircleImageView;
|
import de.hdodenhof.circleimageview.CircleImageView;
|
||||||
import it.integry.integrywmsnative.MainActivity;
|
import it.integry.integrywmsnative.MainActivity;
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
|
||||||
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
|
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
|
||||||
|
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
|
||||||
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
|
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.core.wifi.WiFiCheckerViewHolder;
|
import it.integry.integrywmsnative.core.wifi.WiFiCheckerViewHolder;
|
||||||
|
import it.integry.integrywmsnative.databinding.FragmentMainBinding;
|
||||||
|
import it.integry.plugins.waterfalltoolbar.WaterfallToolbar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A simple {@link Fragment} subclass.
|
* A simple {@link Fragment} subclass.
|
||||||
* Use the {@link MainFragment#newInstance} factory method to
|
* Use the {@link MainFragment#newInstance} factory method to
|
||||||
* create an instance of this fragment.
|
* create an instance of this fragment.
|
||||||
*/
|
*/
|
||||||
public class MainFragment extends Fragment implements ITitledFragment {
|
public class MainFragment extends Fragment implements ITitledFragment, IScrollableFragment {
|
||||||
|
|
||||||
|
private FragmentMainBinding mBindings;
|
||||||
|
|
||||||
@BindView(R.id.no_connection_top_layout) ExpandableLayout mNoConnectionLayout;
|
private WaterfallToolbar mWaterfallToolbar;
|
||||||
@BindView(R.id.current_user_name) TextView currentUsername;
|
|
||||||
@BindView(R.id.current_deposito) TextView currentDeposito;
|
|
||||||
// @BindView(R.id.drawer_logoAzienda) CircleImageView currentLogoAzienda;
|
|
||||||
|
|
||||||
private View mView;
|
|
||||||
|
|
||||||
public MainFragment() {
|
public MainFragment() {
|
||||||
}
|
}
|
||||||
@ -61,24 +68,26 @@ public class MainFragment extends Fragment implements ITitledFragment {
|
|||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
// Inflate the layout for this fragment
|
|
||||||
mView = inflater.inflate(R.layout.fragment_main, container, false);
|
|
||||||
|
|
||||||
ButterKnife.bind(this, mView);
|
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false);
|
||||||
|
|
||||||
|
ButterKnife.bind(this, mBindings.getRoot());
|
||||||
|
|
||||||
|
mWaterfallToolbar.setNestedScrollView(mBindings.fragmentMainScrollview);
|
||||||
|
|
||||||
init();
|
init();
|
||||||
return mView;
|
return mBindings.getRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void init(){
|
private void init(){
|
||||||
ServerStatusChecker.getIstance().addCallback(value -> {
|
ServerStatusChecker.getIstance().addCallback(value -> {
|
||||||
if(value && mNoConnectionLayout.isExpanded()){
|
if(value && mBindings.noConnectionTopLayout.isExpanded()){
|
||||||
|
|
||||||
collapseNoConnectionLayout();
|
collapseNoConnectionLayout();
|
||||||
|
|
||||||
|
|
||||||
} else if(!value && !mNoConnectionLayout.isExpanded()){
|
} else if(!value && !mBindings.noConnectionTopLayout.isExpanded()){
|
||||||
expandNoConnectionLayout();
|
expandNoConnectionLayout();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -88,26 +97,57 @@ public class MainFragment extends Fragment implements ITitledFragment {
|
|||||||
|
|
||||||
initSessionData();
|
initSessionData();
|
||||||
|
|
||||||
|
initRecuperoCollo();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initSessionData() {
|
private void initSessionData() {
|
||||||
currentUsername.setText(SettingsManager.i().user.fullname);
|
mBindings.currentUserName.setText(SettingsManager.i().user.fullname);
|
||||||
currentDeposito.setText(String.format("%s - %s", SettingsManager.i().userSession.depo.getCodMdep(), SettingsManager.i().userSession.depo.getDescrizione()));
|
mBindings.currentDeposito.setText(String.format("Deposito: %s • %s", SettingsManager.i().userSession.depo.getCodMdep(), SettingsManager.i().userSession.depo.getDescrizione()));
|
||||||
|
|
||||||
if(SettingsManager.iDB().getDatiAzienda() != null && SettingsManager.iDB().getDatiAzienda().isLogoAvailable()) {
|
if(SettingsManager.iDB().getDatiAzienda() != null && SettingsManager.iDB().getDatiAzienda().isLogoAvailable()) {
|
||||||
// currentLogoAzienda.setImageBitmap(SettingsManager.iDB().getDatiAzienda().getLogo());
|
// currentLogoAzienda.setImageBitmap(SettingsManager.iDB().getDatiAzienda().getLogo());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initRecuperoCollo() {
|
||||||
|
if(ColliDataRecover.thereIsAnExistantSession()){
|
||||||
|
startRecoverMode();
|
||||||
|
|
||||||
|
Integer recoveredMtbColtID = ColliDataRecover.getFirstSessionID();
|
||||||
|
MtbColt recoveredMtbColt = ColliDataRecover.getSession(recoveredMtbColtID);
|
||||||
|
|
||||||
|
if(recoveredMtbColt != null && recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) {
|
||||||
|
ColliMagazzinoRESTConsumer.distribuisciCollo(recoveredMtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
|
||||||
|
mtbColts -> {
|
||||||
|
ColliDataRecover.closeSession(recoveredMtbColtID);
|
||||||
|
endRecoverMode();
|
||||||
|
},
|
||||||
|
ex -> {
|
||||||
|
UtilityExceptions.defaultException(getActivity(), ex);
|
||||||
|
endRecoverMode();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
ColliDataRecover.closeSession(recoveredMtbColtID);
|
||||||
|
endRecoverMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void collapseNoConnectionLayout(){
|
private void collapseNoConnectionLayout(){
|
||||||
if(getActivity() != null) getActivity().runOnUiThread(() -> mNoConnectionLayout.collapse(true));
|
if(getActivity() != null) getActivity().runOnUiThread(() -> mBindings.noConnectionTopLayout.collapse(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void expandNoConnectionLayout(){
|
private void expandNoConnectionLayout(){
|
||||||
if(getActivity() != null) getActivity().runOnUiThread(() -> mNoConnectionLayout.expand(true));
|
if(getActivity() != null) getActivity().runOnUiThread(() -> mBindings.noConnectionTopLayout.expand(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void startRecoverMode() {
|
||||||
|
mBindings.recoverDataExpandableLayout.expand(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void endRecoverMode() {
|
||||||
|
mBindings.recoverDataExpandableLayout.collapse(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||||
@ -139,4 +179,8 @@ public class MainFragment extends Fragment implements ITitledFragment {
|
|||||||
((MainActivity) getActivity()).setItem(R.id.nav_free_picking);
|
((MainActivity) getActivity()).setItem(R.id.nav_free_picking);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setWaterfallToolbar(WaterfallToolbar waterfallToolbar) {
|
||||||
|
mWaterfallToolbar = waterfallToolbar;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -217,7 +217,22 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
|
|
||||||
|
if(!thereIsAnOpenedUL.get()) {
|
||||||
|
createNewLU(null, null, progressDialog, () -> {
|
||||||
|
executeEtichetteBehaviour(data, progressDialog);
|
||||||
|
}, () -> {
|
||||||
|
progressDialog.dismiss();
|
||||||
|
BarcodeManager.enable();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
executeEtichetteBehaviour(data, progressDialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
private void executeEtichetteBehaviour(BarcodeScanDTO data, ProgressDialog progressDialog){
|
||||||
if(UtilityBarcode.isEtichettaAnonima(data)){
|
if(UtilityBarcode.isEtichettaAnonima(data)){
|
||||||
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
|
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
|
||||||
this.executeEtichettaLU(data.getStringValue(), progressDialog);
|
this.executeEtichettaLU(data.getStringValue(), progressDialog);
|
||||||
@ -229,8 +244,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
progressDialog.dismiss();
|
progressDialog.dismiss();
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
private void executeEtichettaLU(String sscc, ProgressDialog progressDialog) {
|
private void executeEtichettaLU(String sscc, ProgressDialog progressDialog) {
|
||||||
@ -341,6 +355,9 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
saveLU(clonedTestata);
|
saveLU(clonedTestata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}, () -> {
|
||||||
|
progressDialog.dismiss();
|
||||||
|
BarcodeManager.enable();
|
||||||
});
|
});
|
||||||
|
|
||||||
}, () -> {
|
}, () -> {
|
||||||
@ -350,21 +367,19 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void askQuantities(Iterator<MtbColr> sourceMtbColrs, List<MtbColr> destMtbColr, Runnable onComplete){
|
private void askQuantities(Iterator<MtbColr> sourceMtbColrs, List<MtbColr> destMtbColr, Runnable onComplete, Runnable onAbort){
|
||||||
|
|
||||||
if(sourceMtbColrs.hasNext()){
|
if(sourceMtbColrs.hasNext()){
|
||||||
|
|
||||||
askSingleQuantity(sourceMtbColrs.next(), mtbColr -> {
|
askSingleQuantity(sourceMtbColrs.next(), mtbColr -> {
|
||||||
destMtbColr.add(mtbColr);
|
destMtbColr.add(mtbColr);
|
||||||
askQuantities(sourceMtbColrs, destMtbColr, onComplete);
|
askQuantities(sourceMtbColrs, destMtbColr, onComplete, onAbort);
|
||||||
});
|
}, onAbort);
|
||||||
} else {
|
} else {
|
||||||
onComplete.run();
|
onComplete.run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void askSingleQuantity(MtbColr mtbColr, RunnableArgs<MtbColr> onComplete) {
|
private void askSingleQuantity(MtbColr mtbColr, RunnableArgs<MtbColr> onComplete, Runnable onAbort) {
|
||||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||||
.setBatchLot(mtbColr.getPartitaMag())
|
.setBatchLot(mtbColr.getPartitaMag())
|
||||||
.setDataScad(mtbColr.getDataScadPartitaD())
|
.setDataScad(mtbColr.getDataScadPartitaD())
|
||||||
@ -378,14 +393,14 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
.setMaxQta(mtbColr.getQtaCol());
|
.setMaxQta(mtbColr.getQtaCol());
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
|
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
|
||||||
mtbColr
|
mtbColr
|
||||||
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
|
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
|
||||||
.setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get()))
|
.setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get()))
|
||||||
.setNumCnf(new BigDecimal(quantityDTO.numCnf.get()))
|
.setNumCnf(new BigDecimal(quantityDTO.numCnf.get()))
|
||||||
.setDatetimeRow(new Date());
|
.setDatetimeRow(new Date());
|
||||||
|
|
||||||
onComplete.run(mtbColr);
|
onComplete.run(mtbColr);
|
||||||
}).show();
|
}, onAbort).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -438,12 +453,13 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
|
|
||||||
|
|
||||||
public void createNewLU() {
|
public void createNewLU() {
|
||||||
createNewLU(null, null, null);
|
createNewLU(null, null, null, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
private void createNewLU(Integer customNumCollo, String customSerCollo, ProgressDialog progressDialog, Runnable onComplete, Runnable onFailed) {
|
||||||
|
|
||||||
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
boolean shouldCloseProgress = progressDialog == null;
|
||||||
|
final ProgressDialog progressDialogFinal = progressDialog == null ? UtilityProgress.createDefaultProgressDialog(mContext) : progressDialog;
|
||||||
|
|
||||||
MtbColt mtbColt = new MtbColt();
|
MtbColt mtbColt = new MtbColt();
|
||||||
mtbColt .setGestione(GestioneEnum.VENDITA)
|
mtbColt .setGestione(GestioneEnum.VENDITA)
|
||||||
@ -462,7 +478,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
savedMtbColt.setMtbColr(new ObservableArrayList<>());
|
savedMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||||
setULToCurrentContext(savedMtbColt);
|
setULToCurrentContext(savedMtbColt);
|
||||||
|
|
||||||
progressDialog.dismiss();
|
if(shouldCloseProgress) progressDialogFinal.dismiss();
|
||||||
|
|
||||||
new StatusBarAlert.Builder(mContext)
|
new StatusBarAlert.Builder(mContext)
|
||||||
.autoHide(true)
|
.autoHide(true)
|
||||||
@ -474,7 +490,10 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
|
|
||||||
if(onComplete != null) onComplete.run();
|
if(onComplete != null) onComplete.run();
|
||||||
|
|
||||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progressDialog));
|
}, ex -> {
|
||||||
|
UtilityExceptions.defaultException(mContext, ex, progressDialogFinal);
|
||||||
|
if(onFailed != null) onFailed.run();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -485,13 +504,15 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
this.mtbColt.set(mtbColt);
|
this.mtbColt.set(mtbColt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void closeLU() {
|
public void closeLU() {
|
||||||
if(thereIsAnOpenedUL.get()) {
|
if(thereIsAnOpenedUL.get()) {
|
||||||
final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||||
|
|
||||||
if(thereIsAnyRowInUL.get()) {
|
if(thereIsAnyRowInUL.get()) {
|
||||||
updateDataFine(progress, null); //() -> distribuisciCollo(progress, () -> printCollo(progress)));
|
updateDataFine(progress, () -> {
|
||||||
|
progress.dismiss();
|
||||||
|
setULToCurrentContext(null);
|
||||||
|
}); //() -> distribuisciCollo(progress, () -> printCollo(progress)));
|
||||||
} else {
|
} else {
|
||||||
deleteCollo(progress);
|
deleteCollo(progress);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -301,7 +301,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|||||||
|
|
||||||
DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> {
|
DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> {
|
||||||
onPostDispatch(mtbAart, quantityDTO);
|
onPostDispatch(mtbAart, quantityDTO);
|
||||||
}).show();
|
}, null).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -520,7 +520,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|||||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||||
});
|
});
|
||||||
|
|
||||||
}).show();
|
}, null).show();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import android.app.ProgressDialog;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
||||||
import androidx.appcompat.app.ActionBar;
|
|
||||||
import androidx.appcompat.widget.AppCompatTextView;
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@ -30,9 +29,10 @@ import it.integry.integrywmsnative.R;
|
|||||||
import it.integry.integrywmsnative.core.REST.CommonRESTException;
|
import it.integry.integrywmsnative.core.REST.CommonRESTException;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
@ -52,7 +52,7 @@ import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInev
|
|||||||
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
|
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
|
||||||
import it.integry.plugins.waterfalltoolbar.WaterfallToolbar;
|
import it.integry.plugins.waterfalltoolbar.WaterfallToolbar;
|
||||||
|
|
||||||
public class MainVenditaFragment extends Fragment implements ITitledFragment, IRecyclerFragment, ISelectAllFragment, IFilterableFragment {
|
public class MainVenditaFragment extends Fragment implements ITitledFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment {
|
||||||
|
|
||||||
private static WaterfallToolbar mWaterfallToolbar;
|
private static WaterfallToolbar mWaterfallToolbar;
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
|
|||||||
.forEach(anagOrd -> {
|
.forEach(anagOrd -> {
|
||||||
|
|
||||||
String codAnagOrd = anagOrd.substring(0, anagOrd.indexOf("#_#"));
|
String codAnagOrd = anagOrd.substring(0, anagOrd.indexOf("#_#"));
|
||||||
String ragSocOrd = anagOrd.substring(anagOrd.indexOf("#_#") + 3, anagOrd.length());
|
String ragSocOrd = anagOrd.substring(anagOrd.indexOf("#_#") + 3);
|
||||||
|
|
||||||
OrdineVenditaGroupedInevasoDTO groupedOrdine = new OrdineVenditaGroupedInevasoDTO();
|
OrdineVenditaGroupedInevasoDTO groupedOrdine = new OrdineVenditaGroupedInevasoDTO();
|
||||||
|
|
||||||
@ -354,11 +354,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
|
|||||||
null,
|
null,
|
||||||
() -> {
|
() -> {
|
||||||
|
|
||||||
Intent myIntent = new Intent(getActivity(), VenditaOrdineInevasoActivity.class);
|
startVenditaActivity(ordini, selectedOrders, mtbColtList);
|
||||||
myIntent.putExtra("keyPickingList", (ArrayList<PickingObjectDTO>) ordini); //Optional parameters
|
|
||||||
myIntent.putExtra("keyTestateOrdini", (ArrayList<OrdineVenditaGroupedInevasoDTO>)selectedOrders);
|
|
||||||
myIntent.putExtra("keyColliRegistrati", (ArrayList<MtbColt>)mtbColtList);
|
|
||||||
getActivity().startActivity(myIntent);
|
|
||||||
|
|
||||||
}).show();
|
}).show();
|
||||||
|
|
||||||
@ -404,7 +400,6 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
|
|||||||
public void onFilterClick() {
|
public void onFilterClick() {
|
||||||
|
|
||||||
DialogVenditaFiltroAvanzato.make(getActivity(), mOriginalOrderList, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
|
DialogVenditaFiltroAvanzato.make(getActivity(), mOriginalOrderList, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
|
||||||
|
|
||||||
mAppliedFilterViewModel = filter;
|
mAppliedFilterViewModel = filter;
|
||||||
|
|
||||||
if(filteredOrderList != null){
|
if(filteredOrderList != null){
|
||||||
@ -414,6 +409,25 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
|
|||||||
}
|
}
|
||||||
|
|
||||||
}).show();
|
}).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startVenditaActivity(List<PickingObjectDTO> ordini, List<OrdineVenditaGroupedInevasoDTO> selectedOrders, List<MtbColt> mtbColtList) {
|
||||||
|
|
||||||
|
Intent myIntent = new Intent(getActivity(), VenditaOrdineInevasoActivity.class);
|
||||||
|
|
||||||
|
String keyPickingList = DataCache.addItem(ordini);
|
||||||
|
myIntent.putExtra("keyPickingList", keyPickingList);
|
||||||
|
|
||||||
|
String keyTestateOrdini = DataCache.addItem(selectedOrders);
|
||||||
|
myIntent.putExtra("keyTestateOrdini", keyTestateOrdini);
|
||||||
|
|
||||||
|
String keyColliRegistrati = DataCache.addItem(mtbColtList);
|
||||||
|
myIntent.putExtra("keyColliRegistrati", keyColliRegistrati);
|
||||||
|
|
||||||
|
getActivity().startActivity(myIntent);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,7 +47,7 @@ public class PickingObjectDTO implements Parcelable {
|
|||||||
private Boolean tempHidden = null;
|
private Boolean tempHidden = null;
|
||||||
private PickData tempPickData = null;
|
private PickData tempPickData = null;
|
||||||
|
|
||||||
private List<MtbColr> withdrawRows = new ArrayList<>();
|
private ArrayList<MtbColr> withdrawRows = new ArrayList<>();
|
||||||
|
|
||||||
protected PickingObjectDTO(Parcel in) {
|
protected PickingObjectDTO(Parcel in) {
|
||||||
if (in.readByte() == 0) {
|
if (in.readByte() == 0) {
|
||||||
@ -423,11 +423,12 @@ public class PickingObjectDTO implements Parcelable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MtbColr> getWithdrawRows() {
|
public ArrayList<MtbColr> getWithdrawRows() {
|
||||||
|
if(withdrawRows == null) withdrawRows = new ArrayList<>();
|
||||||
return withdrawRows;
|
return withdrawRows;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PickingObjectDTO setWithdrawRows(List<MtbColr> withdrawRows) {
|
public PickingObjectDTO setWithdrawRows(ArrayList<MtbColr> withdrawRows) {
|
||||||
this.withdrawRows = withdrawRows;
|
this.withdrawRows = withdrawRows;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import it.integry.integrywmsnative.R;
|
|||||||
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
|
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding;
|
import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding;
|
||||||
@ -44,9 +45,9 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity {
|
|||||||
FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude;
|
FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude;
|
||||||
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings);
|
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings);
|
||||||
|
|
||||||
List<PickingObjectDTO> pickingList = (ArrayList<PickingObjectDTO>)getIntent().getSerializableExtra("keyPickingList");
|
ArrayList<PickingObjectDTO> pickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList"));
|
||||||
List<OrdineVenditaGroupedInevasoDTO> testateOrdini = (ArrayList<OrdineVenditaGroupedInevasoDTO>)getIntent().getSerializableExtra("keyTestateOrdini");
|
ArrayList<OrdineVenditaGroupedInevasoDTO> testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini"));
|
||||||
List<MtbColt> colliRegistrati = (ArrayList<MtbColt>) getIntent().getSerializableExtra("keyColliRegistrati");
|
ArrayList<MtbColt> colliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati"));
|
||||||
mVenditaOrdineInevasoViewModel = new VenditaOrdineInevasoViewModel(
|
mVenditaOrdineInevasoViewModel = new VenditaOrdineInevasoViewModel(
|
||||||
this, mArticoliInColloBottomSheetViewModel, pickingList, testateOrdini, colliRegistrati);
|
this, mArticoliInColloBottomSheetViewModel, pickingList, testateOrdini, colliRegistrati);
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import com.annimon.stream.Stream;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -707,7 +708,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
progress.show();
|
progress.show();
|
||||||
|
|
||||||
if(thereIsAnyRowInUL()) {
|
if(thereIsAnyRowInUL()) {
|
||||||
updateDataFine(progress, () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress)));
|
updateDataFine(progress, () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress, generatedMtbColts)));
|
||||||
} else {
|
} else {
|
||||||
ColliDataRecover.closeSession(mtbColtSessionID);
|
ColliDataRecover.closeSession(mtbColtSessionID);
|
||||||
deleteCollo(progress);
|
deleteCollo(progress);
|
||||||
@ -742,7 +743,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
|
|
||||||
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
|
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.distribuisciCollo(cloneMtbColt, DistribuzioneColloDTO.CriterioDistribuzione.UPDATE,
|
ColliMagazzinoRESTConsumer.distribuisciCollo(cloneMtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
|
||||||
mtbColts -> {
|
mtbColts -> {
|
||||||
ColliDataRecover.closeSession(mtbColtSessionID);
|
ColliDataRecover.closeSession(mtbColtSessionID);
|
||||||
onComplete.run(mtbColts);
|
onComplete.run(mtbColts);
|
||||||
@ -750,7 +751,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
ex -> UtilityExceptions.defaultException(mActivity, ex, progress));
|
ex -> UtilityExceptions.defaultException(mActivity, ex, progress));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void printCollo(ProgressDialog progress) {
|
private void printCollo(ProgressDialog progress, List<MtbColt> mtbColtsToPrint) {
|
||||||
DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> {
|
DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> {
|
||||||
|
|
||||||
if(shouldPrint) {
|
if(shouldPrint) {
|
||||||
@ -760,41 +761,29 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
|
|
||||||
if (value.size() > 0) {
|
if (value.size() > 0) {
|
||||||
try {
|
try {
|
||||||
MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
|
cyclicPrint(mtbColtsToPrint.iterator(), value.get(0), () -> {
|
||||||
|
postCloseOperations(mtbColtsToPrint);
|
||||||
|
progress.dismiss();
|
||||||
|
}, ex -> {
|
||||||
|
progress.dismiss();
|
||||||
|
String errorMessage = ex.getMessage();
|
||||||
|
DialogSimpleMessageHelper.makeErrorDialog(
|
||||||
|
mActivity,
|
||||||
|
new SpannableString(errorMessage),
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
R.string.button_ignore_print,
|
||||||
|
() -> postCloseOperations(mtbColtsToPrint)).show();
|
||||||
|
});
|
||||||
|
|
||||||
ReportManager.getRightReportNameByMtbColt(currentMtbColt, reportName -> {
|
|
||||||
|
|
||||||
PrinterRESTConsumer.printCollo(
|
|
||||||
value.get(0),
|
|
||||||
currentMtbColt,
|
|
||||||
1, reportName, () -> {
|
|
||||||
|
|
||||||
postCloseOperations();
|
|
||||||
progress.dismiss();
|
|
||||||
|
|
||||||
}, ex -> {
|
|
||||||
|
|
||||||
progress.dismiss();
|
|
||||||
String errorMessage = ex.getMessage();
|
|
||||||
DialogSimpleMessageHelper.makeErrorDialog(
|
|
||||||
mActivity,
|
|
||||||
new SpannableString(errorMessage),
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
R.string.button_ignore_print,
|
|
||||||
() -> postCloseOperations()).show();
|
|
||||||
});
|
|
||||||
|
|
||||||
}, ex -> UtilityExceptions.defaultException(mActivity, ex, progress)
|
|
||||||
);
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
UtilityExceptions.defaultException(mActivity, ex, progress);
|
UtilityExceptions.defaultException(mActivity, ex, progress);
|
||||||
postCloseOperations();
|
postCloseOperations(mtbColtsToPrint);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
progress.dismiss();
|
progress.dismiss();
|
||||||
String errorMessage = "Nessuna stampante configurata";
|
String errorMessage = "Nessuna stampante configurata";
|
||||||
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations()).show();
|
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtsToPrint)).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -804,12 +793,36 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
postCloseOperations();
|
postCloseOperations(mtbColtsToPrint);
|
||||||
progress.dismiss();
|
progress.dismiss();
|
||||||
}
|
}
|
||||||
}).show();
|
}).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void cyclicPrint(Iterator<MtbColt> sourceMtbColts, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||||
|
if(sourceMtbColts.hasNext()){
|
||||||
|
singlePrint(sourceMtbColts.next(), printerName, () -> {
|
||||||
|
cyclicPrint(sourceMtbColts, printerName, onComplete, onAbort);
|
||||||
|
}, onAbort);
|
||||||
|
} else {
|
||||||
|
onComplete.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||||
|
ReportManager.getRightReportNameByMtbColt(mtbColtToPrint, reportName -> {
|
||||||
|
|
||||||
|
PrinterRESTConsumer.printCollo(
|
||||||
|
printerName,
|
||||||
|
mtbColtToPrint,
|
||||||
|
1,
|
||||||
|
reportName, onComplete, onAbort);
|
||||||
|
|
||||||
|
}, onAbort);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void deleteCollo(ProgressDialog progress) {
|
private void deleteCollo(ProgressDialog progress) {
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> {
|
ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> {
|
||||||
@ -833,11 +846,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void postCloseOperations() {
|
private void postCloseOperations(List<MtbColt> generatedMtbColt) {
|
||||||
|
|
||||||
MtbColt mtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
|
MtbColt mtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
|
||||||
|
|
||||||
this.mColliRegistrati.add(mtbColt);
|
this.mColliRegistrati.addAll(generatedMtbColt);
|
||||||
|
|
||||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
|
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
|
||||||
isFabVisible.set(true);
|
isFabVisible.set(true);
|
||||||
@ -965,7 +978,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(mActivity, dto, false, value -> onOrdineRowDispatched(item, value)).show();
|
DialogInputQuantity.makeBase(mActivity, dto, false, value -> onOrdineRowDispatched(item, value), null).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -333,7 +333,7 @@ public class VersamentoMerceViewModel {
|
|||||||
.setDatetimeRow(new Date());
|
.setDatetimeRow(new Date());
|
||||||
|
|
||||||
onComplete.run(mtbColr);
|
onComplete.run(mtbColr);
|
||||||
}).show();
|
}, null).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -188,7 +188,7 @@ public class ArticoliInColloBottomSheetViewModel {
|
|||||||
},
|
},
|
||||||
ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
||||||
|
|
||||||
}).show();
|
}, null).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onItemDelete(int position) {
|
private void onItemDelete(int position) {
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import android.app.AlertDialog;
|
|||||||
import android.app.DatePickerDialog;
|
import android.app.DatePickerDialog;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import androidx.databinding.Observable;
|
import androidx.databinding.Observable;
|
||||||
@ -213,11 +214,11 @@ public class DialogInputQuantity {
|
|||||||
private QuantityDTO currentQuantityDto;
|
private QuantityDTO currentQuantityDto;
|
||||||
private DTO currentDTO;
|
private DTO currentDTO;
|
||||||
|
|
||||||
public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
|
public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback, final Runnable onAbort) {
|
||||||
return new DialogInputQuantity(context, dto, canOverflowQuantity, dialogCallback).currentAlert;
|
return new DialogInputQuantity(context, dto, canOverflowQuantity, dialogCallback, onAbort).currentAlert;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DialogInputQuantity(Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
|
public DialogInputQuantity(Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback, final Runnable onAbort) {
|
||||||
currentContext = context;
|
currentContext = context;
|
||||||
currentMtbAart = dto.getMtbAart();
|
currentMtbAart = dto.getMtbAart();
|
||||||
currentDTO = dto;
|
currentDTO = dto;
|
||||||
@ -251,7 +252,9 @@ public class DialogInputQuantity {
|
|||||||
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
|
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
|
||||||
.setView(currentBinding.getRoot())
|
.setView(currentBinding.getRoot())
|
||||||
.setPositiveButton(context.getText(R.string.confirm), null)
|
.setPositiveButton(context.getText(R.string.confirm), null)
|
||||||
.setNegativeButton(context.getText(R.string.abort), null);
|
.setNegativeButton(context.getText(R.string.abort), (dialog, which) -> {
|
||||||
|
if(onAbort != null) onAbort.run();
|
||||||
|
});
|
||||||
|
|
||||||
currentAlert = alertDialog.create();
|
currentAlert = alertDialog.create();
|
||||||
currentAlert.setCanceledOnTouchOutside(false);
|
currentAlert.setCanceledOnTouchOutside(false);
|
||||||
@ -275,8 +278,8 @@ public class DialogInputQuantity {
|
|||||||
}, 100);
|
}, 100);
|
||||||
|
|
||||||
Button positiveButton = currentAlert.getButton(AlertDialog.BUTTON_POSITIVE);
|
Button positiveButton = currentAlert.getButton(AlertDialog.BUTTON_POSITIVE);
|
||||||
|
|
||||||
positiveButton.setOnClickListener(view -> onConfirm(context, currentQuantityDto, dialogCallback));
|
positiveButton.setOnClickListener(view -> onConfirm(context, currentQuantityDto, dialogCallback));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
19
app/src/main/res/drawable/curved_progress_bar.xml
Normal file
19
app/src/main/res/drawable/curved_progress_bar.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item android:id="@android:id/background">
|
||||||
|
<shape>
|
||||||
|
<corners android:radius="16dp" />
|
||||||
|
<solid android:color="@color/colorPrimaryDark" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item android:id="@android:id/progress">
|
||||||
|
<clip>
|
||||||
|
<shape>
|
||||||
|
<corners android:radius="16dp" />
|
||||||
|
<solid android:color="@color/white" />
|
||||||
|
</shape>
|
||||||
|
</clip>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
BIN
app/src/main/res/drawable/ic_recover_96.png
Normal file
BIN
app/src/main/res/drawable/ic_recover_96.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
16
app/src/main/res/drawable/progress_bar_background.xml
Normal file
16
app/src/main/res/drawable/progress_bar_background.xml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item android:id="@android:id/background">
|
||||||
|
<shape>
|
||||||
|
<corners android:radius="6.5dp" />
|
||||||
|
|
||||||
|
<solid android:color="@android:color/white" />
|
||||||
|
|
||||||
|
<stroke
|
||||||
|
android:width="1dp"
|
||||||
|
android:color="@android:color/darker_gray" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
</layer-list>
|
||||||
@ -52,10 +52,10 @@
|
|||||||
android:id="@+id/progressBar2"
|
android:id="@+id/progressBar2"
|
||||||
style="?android:attr/progressBarStyleHorizontal"
|
style="?android:attr/progressBarStyleHorizontal"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="8dp"
|
||||||
android:layout_marginTop="24dp"
|
android:layout_marginTop="24dp"
|
||||||
android:indeterminate="true"
|
android:indeterminate="true"
|
||||||
android:indeterminateTint="@android:color/white"
|
android:indeterminateDrawable="@drawable/curved_progress_bar"
|
||||||
app:layout_constraintLeft_toRightOf="@+id/guideline_left_progress"
|
app:layout_constraintLeft_toRightOf="@+id/guideline_left_progress"
|
||||||
app:layout_constraintRight_toLeftOf="@+id/guideline_right_progress"
|
app:layout_constraintRight_toLeftOf="@+id/guideline_right_progress"
|
||||||
app:layout_constraintTop_toBottomOf="@id/imageView" />
|
app:layout_constraintTop_toBottomOf="@id/imageView" />
|
||||||
|
|||||||
@ -27,7 +27,8 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:padding="16dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -39,11 +40,12 @@
|
|||||||
android:id="@+id/print_message"
|
android:id="@+id/print_message"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_margin="16dp"
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
style="@style/TextInputLayout.OutlinePrimary"
|
style="@style/TextInputLayout.OutlinePrimary"
|
||||||
android:textColor="#5F6368"
|
android:textColor="#5F6368"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
tools:text="La procedura stamperà una packing list"/>
|
tools:text="La procedura stamperà una packing list"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/qta_box"
|
app:layout_constraintEnd_toStartOf="@+id/qta_box"
|
||||||
app:layout_constraintStart_toStartOf="parent">
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
@ -37,6 +38,18 @@
|
|||||||
tools:text="COD MART" />
|
tools:text="COD MART" />
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:text='@{!UtilityString.isNullOrEmpty(mtbColr.mtbAart.diacod) ? mtbColr.mtbAart.diacod : ""}'
|
||||||
|
android:textColor="@color/red_600"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.mtbAart.diacod) ? View.GONE : View.VISIBLE}"
|
||||||
|
tools:text="DIACOD HERE"/>
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
@ -178,4 +178,7 @@
|
|||||||
<string name="free_picking_suggestion_2">Scansiona un articolo per iniziare</string>
|
<string name="free_picking_suggestion_2">Scansiona un articolo per iniziare</string>
|
||||||
<string name="free_picking_title_fragment">Picking libero</string>
|
<string name="free_picking_title_fragment">Picking libero</string>
|
||||||
|
|
||||||
|
<string name="recovering_data">Recupero dati</string>
|
||||||
|
<string name="wait_a_moment">Attendi qualche istante</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@ -179,5 +179,7 @@
|
|||||||
<string name="free_picking_suggestion_1">Please press + button to start with picking</string>
|
<string name="free_picking_suggestion_1">Please press + button to start with picking</string>
|
||||||
<string name="free_picking_suggestion_2">Scan an item to start</string>
|
<string name="free_picking_suggestion_2">Scan an item to start</string>
|
||||||
|
|
||||||
|
<string name="recovering_data">Recovering data</string>
|
||||||
|
<string name="wait_a_moment">Wait a moment</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@ -21,26 +21,24 @@
|
|||||||
<item name="android:fontFamily">@font/open_sans_regular</item>
|
<item name="android:fontFamily">@font/open_sans_regular</item>
|
||||||
</style>
|
</style>
|
||||||
<style name="AppTheme.NewMaterial.Text" parent = "AppTheme.NewMaterial">
|
<style name="AppTheme.NewMaterial.Text" parent = "AppTheme.NewMaterial">
|
||||||
|
<item name="android:fontFamily">@font/open_sans_regular</item>
|
||||||
|
<item name="android:textStyle">normal</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppTheme.NewMaterial.Text.ToolbarTitle" parent="AppTheme.NewMaterial.Text">
|
<style name="AppTheme.NewMaterial.Text.ToolbarTitle" parent="AppTheme.NewMaterial.Text">
|
||||||
|
<item name="android:textSize">20sp</item>
|
||||||
<item name="android:textColor">#5F6368</item>
|
<item name="android:textColor">#5F6368</item>
|
||||||
<item name="android:textStyle">normal</item>
|
|
||||||
<item name="android:textSize">20sp</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<style name="AppTheme.NewMaterial.Text.TextBoxDashboard" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
|
<style name="AppTheme.NewMaterial.Text.TextBoxDashboard" parent="AppTheme.NewMaterial.Text">
|
||||||
<item name="android:textColor">@android:color/white</item>
|
<item name="android:textColor">@android:color/white</item>
|
||||||
<item name="android:textStyle">normal</item>
|
<item name="android:textSize">18sp</item>
|
||||||
<item name="android:textSize">20sp</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppTheme.NewMaterial.Text.TextBoxLittleDashboard" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
|
<style name="AppTheme.NewMaterial.Text.TextBoxLittleDashboard" parent="AppTheme.NewMaterial.Text">
|
||||||
<item name="android:textColor">@android:color/white</item>
|
<item name="android:textColor">@android:color/white</item>
|
||||||
<item name="android:fontFamily">@font/open_sans_regular</item>
|
<item name="android:textSize">14sp</item>
|
||||||
<item name="android:textStyle">normal</item>
|
|
||||||
<item name="android:textSize">16sp</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="SplashTheme" parent="AppTheme.NoActionBar">
|
<style name="SplashTheme" parent="AppTheme.NoActionBar">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user