Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
This commit is contained in:
@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
android {
|
||||
|
||||
def appVersionCode = 519
|
||||
def appVersionName = '1.47.06'
|
||||
def appVersionCode = 522
|
||||
def appVersionName = '1.47.09'
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
@@ -34,7 +34,7 @@ android {
|
||||
defaultConfig {
|
||||
applicationId "it.integry.integrywmsnative"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 36
|
||||
targetSdk 36
|
||||
versionCode appVersionCode
|
||||
versionName appVersionName
|
||||
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
@@ -157,7 +157,7 @@ dependencies {
|
||||
implementation 'com.github.pedromassango:doubleClick:3.0'
|
||||
|
||||
//SQLite ROOM
|
||||
def room_version = "2.7.1"
|
||||
def room_version = "2.7.2"
|
||||
|
||||
implementation "androidx.room:room-runtime:$room_version"
|
||||
annotationProcessor "androidx.room:room-compiler:$room_version"
|
||||
|
||||
@@ -24,19 +24,4 @@ public class CommonConst {
|
||||
public static String RECOVER_COLLO_FILE = "recover_ul.json";
|
||||
}
|
||||
|
||||
public static class Mail {
|
||||
|
||||
public static String[] forErrorsDebug = {
|
||||
"g.scorrano@integry.it",
|
||||
"v.castellana@integry.it"
|
||||
};
|
||||
|
||||
public static String[] forErrors = {
|
||||
// "syslogs@integry.it",
|
||||
"g.scorrano@integry.it",
|
||||
"v.castellana@integry.it"
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -90,10 +90,10 @@ public class AppContext {
|
||||
Logger.addLogAdapter(new AndroidLogAdapter());
|
||||
|
||||
logsFolder = new File(mApplicationContext.getExternalFilesDir(null).getAbsolutePath());
|
||||
removeOldLogs(logsFolder);
|
||||
|
||||
int maxBytesSize = 5 * 1024 * 1024;
|
||||
Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize));
|
||||
|
||||
removeOldLogs(logsFolder);
|
||||
}
|
||||
|
||||
private void removeOldLogs(File logsFolder) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.google.gson.annotations.SerializedName;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
public class MtbPartitaMag extends EntityBase {
|
||||
@SerializedName("codMart")
|
||||
@@ -300,4 +301,17 @@ public class MtbPartitaMag extends EntityBase {
|
||||
this.qtaAttesa = qtaAttesa;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
MtbPartitaMag that = (MtbPartitaMag) o;
|
||||
return Objects.equals(getCodMart(), that.getCodMart()) && Objects.equals(getPartitaMag(), that.getPartitaMag()) && Objects.equals(getDescrizione(), that.getDescrizione()) && Objects.equals(getDataIns(), that.getDataIns()) && Objects.equals(getDataScad(), that.getDataScad()) && Objects.equals(getScelta(), that.getScelta()) && Objects.equals(getCostoUntUmMag(), that.getCostoUntUmMag()) && Objects.equals(getValUntUmMag(), that.getValUntUmMag()) && Objects.equals(getTaraCnfKg(), that.getTaraCnfKg()) && Objects.equals(getQtaCnf(), that.getQtaCnf()) && Objects.equals(getFlagImballoArendere(), that.getFlagImballoArendere()) && Objects.equals(getFlagStato(), that.getFlagStato()) && Objects.equals(getCodDiviCont(), that.getCodDiviCont()) && Objects.equals(getCambioDiviCont(), that.getCambioDiviCont()) && Objects.equals(getBarcode(), that.getBarcode()) && Objects.equals(getNote(), that.getNote()) && Objects.equals(getRapConv2(), that.getRapConv2()) && Objects.equals(getRapConv3(), that.getRapConv3()) && Objects.equals(getPosizione(), that.getPosizione()) && Objects.equals(getDataAggPrz(), that.getDataAggPrz()) && Objects.equals(getPartitaMagSec(), that.getPartitaMagSec()) && Objects.equals(getQtaAttesa(), that.getQtaAttesa());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getCodMart(), getPartitaMag(), getDescrizione(), getDataIns(), getDataScad(), getScelta(), getCostoUntUmMag(), getValUntUmMag(), getTaraCnfKg(), getQtaCnf(), getFlagImballoArendere(), getFlagStato(), getCodDiviCont(), getCambioDiviCont(), getBarcode(), getNote(), getRapConv2(), getRapConv3(), getPosizione(), getDataAggPrz(), getPartitaMagSec(), getQtaAttesa());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package it.integry.integrywmsnative.core.model.dto;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class PartitaCommessaDTO {
|
||||
|
||||
private String partitaMag;
|
||||
private LocalDate dataScad;
|
||||
private String codJcom;
|
||||
private String descrizione;
|
||||
|
||||
public String getPartitaMag() {
|
||||
return partitaMag;
|
||||
}
|
||||
|
||||
public void setPartitaMag(String partitaMag) {
|
||||
this.partitaMag = partitaMag;
|
||||
}
|
||||
|
||||
public LocalDate getDataScad() {
|
||||
return dataScad;
|
||||
}
|
||||
|
||||
public void setDataScad(LocalDate dataScad) {
|
||||
this.dataScad = dataScad;
|
||||
}
|
||||
|
||||
public String getCodJcom() {
|
||||
return codJcom;
|
||||
}
|
||||
|
||||
public void setCodJcom(String codJcom) {
|
||||
this.codJcom = codJcom;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public void setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,5 @@
|
||||
package it.integry.integrywmsnative.core.rest.consumers;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
@@ -17,8 +14,6 @@ import java.util.concurrent.ExecutorService;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.BuildConfig;
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
@@ -27,9 +22,7 @@ import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.rest.model.system.LatestAppVersionInfoDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityGson;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Response;
|
||||
|
||||
@@ -110,36 +103,6 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void sendErrorLogMail(String message, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().getUserSession().getProfileDB()) ? "" : " [" + SettingsManager.i().getUserSession().getProfileDB() + "]";
|
||||
|
||||
String dest = "";
|
||||
if (BuildConfig.DEBUG) {
|
||||
dest = TextUtils.join(";", CommonConst.Mail.forErrorsDebug);
|
||||
} else {
|
||||
dest = TextUtils.join(";", CommonConst.Mail.forErrors);
|
||||
}
|
||||
|
||||
|
||||
MailRequestDTO mailDTO = new MailRequestDTO()
|
||||
.setFrom("sender@integry.it")
|
||||
.setFromName((BuildConfig.DEBUG ? "[DEBUG] " : "") + "WMS Android")
|
||||
.setTo(dest)
|
||||
.setSubject("Bug notification" + currentAzienda)
|
||||
.setMsgText(message)
|
||||
.setHtml(true);
|
||||
|
||||
sendMail(mailDTO, () -> {
|
||||
if (onComplete != null) onComplete.run();
|
||||
}, ex -> {
|
||||
Log.e(SystemRESTConsumer.class.getName(), "", ex);
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void sendMailSynchronized(MailRequestDTO mailDTO) throws Exception {
|
||||
SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class);
|
||||
var response = service.sendMail(mailDTO).execute();
|
||||
|
||||
@@ -78,7 +78,7 @@ public class UtilityBarcode {
|
||||
|
||||
|
||||
public static boolean isEanPeso(BarcodeScanDTO barcodeScanDTO) {
|
||||
return (isEtichetta128(barcodeScanDTO) || isEan13(barcodeScanDTO)) && barcodeScanDTO.getStringValue().startsWith("2");
|
||||
return (isEtichetta128(barcodeScanDTO) || isEan13(barcodeScanDTO)) && barcodeScanDTO.getStringValue().length() == 13 && barcodeScanDTO.getStringValue().startsWith("2");
|
||||
}
|
||||
|
||||
public static boolean isEan8(BarcodeScanDTO barcodeScanDTO) {
|
||||
|
||||
@@ -45,9 +45,7 @@ public class DialogSelectDocInfo_FornitoreAdapter extends ArrayAdapter<DialogSel
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.getOriginalModel().getCodAnag() +
|
||||
(this.getOriginalModel().getCodVdes() != null ? " - " + this.getOriginalModel().getCodVdes() : "") +
|
||||
" ( " + this.getOriginalModel().getDescrizione() + " )";
|
||||
return this.getOriginalModel().getDescrizione();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ public class LoginViewModel {
|
||||
|
||||
FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> {
|
||||
|
||||
SettingsManager.i().createUserSession();
|
||||
retrieveAvailableProfiles(protocol, host, port, username, password, selectedProfile -> {
|
||||
if(selectedProfile == null) {
|
||||
this.sendOnLoadingEnded();
|
||||
@@ -56,8 +57,6 @@ public class LoginViewModel {
|
||||
return;
|
||||
}
|
||||
|
||||
SettingsManager.i().createUserSession();
|
||||
|
||||
authenticate(protocol, host, port, username, password, selectedProfile, fid.getResult(), fullName -> {
|
||||
|
||||
SettingsManager.i().getUser()
|
||||
|
||||
@@ -33,7 +33,9 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -327,35 +329,38 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
|
||||
private void exportLog() {
|
||||
|
||||
DialogYesNoView.newInstance("Esportazione log", "Vuoi inviare il log degli eventi al supporto?", result -> {
|
||||
if (result == DialogConsts.Results.NO || result == DialogConsts.Results.ABORT)
|
||||
return;
|
||||
executorService.execute(() -> {
|
||||
|
||||
if(!askConfirmToExportLog()) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.openProgress();
|
||||
|
||||
|
||||
this.openProgress();
|
||||
|
||||
executorService.execute(() -> {
|
||||
|
||||
File logFilePath = appContext.getLogFilePath();
|
||||
var files = logFilePath.listFiles();
|
||||
|
||||
var fileToShare = Arrays.stream(files)
|
||||
.sorted(Comparator.reverseOrder())
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
try {
|
||||
List<MailAttachmentDTO> attachmentDTOList = new ArrayList<>();
|
||||
var fileToShare = Arrays.stream(files)
|
||||
.sorted(Comparator.reverseOrder())
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
try {
|
||||
List<MailAttachmentDTO> attachmentDTOList = new ArrayList<>();
|
||||
|
||||
if (fileToShare != null) {
|
||||
var htmlContent = createAppLogAttachment(fileToShare);
|
||||
if (fileToShare != null) {
|
||||
var htmlContent = createAppLogAttachment(fileToShare);
|
||||
|
||||
byte[] buffer = htmlContent.getBytes();//specify the size to allow.
|
||||
String base64 = Base64.encodeToString(buffer, Base64.NO_WRAP);
|
||||
byte[] buffer = htmlContent.getBytes();//specify the size to allow.
|
||||
String base64 = Base64.encodeToString(buffer, Base64.NO_WRAP);
|
||||
|
||||
var logAttachment = new MailAttachmentDTO()
|
||||
.setFileName("wms_log.html")
|
||||
.setFileb64Content(base64);
|
||||
attachmentDTOList.add(logAttachment);
|
||||
}
|
||||
var logAttachment = new MailAttachmentDTO()
|
||||
.setFileName("wms_log.html")
|
||||
.setFileb64Content(base64);
|
||||
attachmentDTOList.add(logAttachment);
|
||||
}
|
||||
|
||||
|
||||
rawDao.vacuumDb(new SimpleSQLiteQuery("pragma wal_checkpoint(full)"));
|
||||
@@ -365,43 +370,59 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
dbFiles[1] = requireContext().getDatabasePath("integry_wms-shm");
|
||||
dbFiles[2] = requireContext().getDatabasePath("integry_wms-wal");
|
||||
|
||||
for (int i = 0; i < dbFiles.length; i++) {
|
||||
byte[] dbFileBytes = new byte[(int) dbFiles[i].length()];
|
||||
FileInputStream inputStream = new FileInputStream(dbFiles[i]);
|
||||
final int read = inputStream.read(dbFileBytes);
|
||||
inputStream.close();
|
||||
for (int i = 0; i < dbFiles.length; i++) {
|
||||
byte[] dbFileBytes = new byte[(int) dbFiles[i].length()];
|
||||
FileInputStream inputStream = new FileInputStream(dbFiles[i]);
|
||||
final int read = inputStream.read(dbFileBytes);
|
||||
inputStream.close();
|
||||
|
||||
var dbAttachment = new MailAttachmentDTO()
|
||||
.setFileName(dbFiles[i].getName())
|
||||
.setFileb64Content(Base64.encodeToString(dbFileBytes, Base64.NO_WRAP));
|
||||
attachmentDTOList.add(dbAttachment);
|
||||
}
|
||||
var dbAttachment = new MailAttachmentDTO()
|
||||
.setFileName(dbFiles[i].getName())
|
||||
.setFileb64Content(Base64.encodeToString(dbFileBytes, Base64.NO_WRAP));
|
||||
attachmentDTOList.add(dbAttachment);
|
||||
}
|
||||
|
||||
var mailRequest = new MailRequestDTO()
|
||||
.setTo("developer@integry.it")
|
||||
.setMsgText("Questa è una mail contenente il log del WMS")
|
||||
.setSubject("Internal WMS log")
|
||||
.setAttachments(attachmentDTOList);
|
||||
var mailRequest = new MailRequestDTO()
|
||||
.setTo("developer@integry.it")
|
||||
.setMsgText("Questa è una mail contenente il log del WMS")
|
||||
.setSubject("Internal WMS log")
|
||||
.setAttachments(attachmentDTOList);
|
||||
|
||||
|
||||
systemRESTConsumer.sendMailSynchronized(mailRequest);
|
||||
systemRESTConsumer.sendMailSynchronized(mailRequest);
|
||||
|
||||
this.closeProgress();
|
||||
} catch (Exception ex) {
|
||||
handler.post(() -> {
|
||||
FirebaseCrashlytics.getInstance().recordException(ex, new CustomKeysAndValues.Builder() {{
|
||||
putString("ExportLog", "Error while exporting log");
|
||||
}}.build());
|
||||
this.closeProgress();
|
||||
UtilityExceptions.defaultException(requireContext(), ex);
|
||||
});
|
||||
}
|
||||
});
|
||||
})
|
||||
.show(getParentFragmentManager(), "tag");
|
||||
this.closeProgress();
|
||||
} catch (Exception ex) {
|
||||
handler.post(() -> {
|
||||
FirebaseCrashlytics.getInstance().recordException(ex, new CustomKeysAndValues.Builder() {{
|
||||
putString("ExportLog", "Error while exporting log");
|
||||
}}.build());
|
||||
this.closeProgress();
|
||||
UtilityExceptions.defaultException(requireContext(), ex);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private boolean askConfirmToExportLog() {
|
||||
CountDownLatch countDownLatch = new CountDownLatch(1);
|
||||
AtomicBoolean userConfirmed = new AtomicBoolean(false);
|
||||
|
||||
DialogYesNoView.newInstance("Esportazione log", "Vuoi inviare il log degli eventi al supporto?", result -> {
|
||||
userConfirmed.set(result != DialogConsts.Results.NO && result != DialogConsts.Results.ABORT);
|
||||
countDownLatch.countDown();
|
||||
}).show(getParentFragmentManager(), "tag");
|
||||
|
||||
try {
|
||||
countDownLatch.await();
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
return userConfirmed.get();
|
||||
}
|
||||
|
||||
private void openProgress() {
|
||||
// executorService.execute(() -> {
|
||||
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager());
|
||||
|
||||
@@ -52,6 +52,7 @@ import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
||||
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUlDTO;
|
||||
import it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO;
|
||||
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||
@@ -1156,9 +1157,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBatchLotSelectionRequest(List<MtbPartitaMag> availableBatchLots, RunnableArgs<MtbPartitaMag> onComplete) {
|
||||
public void onBatchLotSelectionRequest(List<PartitaCommessaDTO> availableBatchLotsCodJcoms, RunnableArgs<PartitaCommessaDTO> onComplete) {
|
||||
handler.post(() -> {
|
||||
DialogChooseBatchLotView.newInstance(availableBatchLots, onComplete)
|
||||
DialogChooseBatchLotView.newInstance(availableBatchLotsCodJcoms, onComplete)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
});
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import org.apache.commons.lang3.NotImplementedException;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -51,6 +50,7 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
||||
import it.integry.integrywmsnative.core.model.VtbVett;
|
||||
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUlDTO;
|
||||
import it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO;
|
||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
|
||||
@@ -88,12 +88,12 @@ import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.uds.PrintULRequestDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.data.UntMisUtils;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.core.utility.data.UntMisUtils;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.CurrentMonoLUPositionIsNotCorrectException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidMagazzinoAutomaticoMovementException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||
@@ -527,11 +527,11 @@ public class SpedizioneViewModel {
|
||||
return null;
|
||||
}
|
||||
|
||||
private MtbPartitaMag sendBatchLotSelectionRequest(List<MtbPartitaMag> availableBatchLots) {
|
||||
private PartitaCommessaDTO sendBatchLotSelectionRequest(List<PartitaCommessaDTO> availableBatchLotsCodJcoms) {
|
||||
final CountDownLatch latch = new CountDownLatch(1);
|
||||
AtomicReference<MtbPartitaMag> result = new AtomicReference<>();
|
||||
AtomicReference<PartitaCommessaDTO> result = new AtomicReference<>();
|
||||
|
||||
mListener.onBatchLotSelectionRequest(availableBatchLots, item -> {
|
||||
mListener.onBatchLotSelectionRequest(availableBatchLotsCodJcoms, item -> {
|
||||
result.set(item);
|
||||
latch.countDown();
|
||||
});
|
||||
@@ -995,19 +995,46 @@ public class SpedizioneViewModel {
|
||||
|
||||
|
||||
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, boolean canPartitaMagBeChanged, boolean executeImmediately) throws Exception {
|
||||
|
||||
|
||||
if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null) {
|
||||
|
||||
List<MtbColr> scannedMtbColrs = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr();
|
||||
|
||||
List<MtbPartitaMag> availableBatchLots = scannedMtbColrs.stream()
|
||||
List<PartitaCommessaDTO> availableBatchLotsAndCodJcoms = scannedMtbColrs.stream()
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
|
||||
(x.getPartitaMag() == null || x.getMtbPartitaMag().getDataScad() == null ||
|
||||
UtilityDate.getNow().isBefore(x.getMtbPartitaMag().getDataScad())))
|
||||
|
||||
.map(x -> x.getPartitaMag() == null ? new MtbPartitaMag().setCodMart(x.getMtbAart().getCodMart()) : x.getMtbPartitaMag())
|
||||
.map(x -> new PartitaCommessaDTO() {{
|
||||
setCodJcom(x.getCodJcom());
|
||||
setPartitaMag(x.getPartitaMag());
|
||||
setDataScad(x.getMtbPartitaMag() != null ? x.getMtbPartitaMag().getDataScad() : null);
|
||||
setDescrizione(x.getDescrizione());
|
||||
}
|
||||
})
|
||||
.distinct()
|
||||
.sorted((a, b) -> {
|
||||
// 1) Prima la riga con codJcom uguale a refMtbColr.codJcom
|
||||
if (refMtbColr != null && refMtbColr.getCodJcom() != null) {
|
||||
boolean aMatchesCodJcom = Objects.equals(a.getCodJcom(), refMtbColr.getCodJcom());
|
||||
boolean bMatchesCodJcom = Objects.equals(b.getCodJcom(), refMtbColr.getCodJcom());
|
||||
if (aMatchesCodJcom && !bMatchesCodJcom) return -1;
|
||||
if (!aMatchesCodJcom && bMatchesCodJcom) return 1;
|
||||
}
|
||||
|
||||
// 2) Poi la riga con partitaMag uguale a refMtbColr.partitaMag
|
||||
if (refMtbColr != null && refMtbColr.getPartitaMag() != null) {
|
||||
boolean aMatchesPartitaMag = Objects.equals(a.getPartitaMag(), refMtbColr.getPartitaMag());
|
||||
boolean bMatchesPartitaMag = Objects.equals(b.getPartitaMag(), refMtbColr.getPartitaMag());
|
||||
if (aMatchesPartitaMag && !bMatchesPartitaMag) return -1;
|
||||
if (!aMatchesPartitaMag && bMatchesPartitaMag) return 1;
|
||||
}
|
||||
|
||||
// 3) Infine ordina per dataScad ascendente
|
||||
if (a.getDataScad() == null && b.getDataScad() == null) return 0;
|
||||
if (a.getDataScad() == null) return 1;
|
||||
if (b.getDataScad() == null) return -1;
|
||||
return a.getDataScad().compareTo(b.getDataScad());
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//Controllo se una delle partite combacia con quella che voglio evadere
|
||||
@@ -1022,33 +1049,23 @@ public class SpedizioneViewModel {
|
||||
// }
|
||||
// }
|
||||
|
||||
if (availableBatchLots.size() > 1) {
|
||||
if (availableBatchLotsAndCodJcoms.size() > 1) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
List<MtbPartitaMag> tmp = new ArrayList<>();
|
||||
|
||||
if (availableBatchLots.stream().anyMatch(x -> x.getDataScad() != null)) {
|
||||
tmp.addAll(availableBatchLots.stream()
|
||||
.filter(x -> x.getDataScad() != null && UtilityDate.getNow().isBefore(x.getDataScad()))
|
||||
.sorted(Comparator.comparing(MtbPartitaMag::getDataScad))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
if (availableBatchLots.stream().anyMatch(x -> x.getDataScad() == null)) {
|
||||
tmp.addAll(availableBatchLots.stream()
|
||||
.filter(x -> x.getDataScad() == null)
|
||||
.sorted(Comparator.comparing(x -> UtilityString.isNull(x.getPartitaMag(), "")))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
var selected = this.sendBatchLotSelectionRequest(tmp);
|
||||
var selected = this.sendBatchLotSelectionRequest(availableBatchLotsAndCodJcoms);
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
if (selected != null) {
|
||||
MtbColr scannedMtbColr = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().stream()
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
|
||||
.filter(x ->
|
||||
x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
|
||||
|
||||
((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag()))
|
||||
|| (x.getPartitaMag() == null && selected.getPartitaMag() == null)))
|
||||
|| (x.getPartitaMag() == null && selected.getPartitaMag() == null)) &&
|
||||
|
||||
((x.getCodJcom() != null && selected.getCodJcom() != null && x.getCodJcom().equalsIgnoreCase(selected.getCodJcom()))
|
||||
|| (x.getCodJcom() == null && selected.getCodJcom() == null)))
|
||||
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
@@ -1543,9 +1560,6 @@ public class SpedizioneViewModel {
|
||||
.setMtbAart(null);
|
||||
}
|
||||
|
||||
var clonedTargetMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
||||
clonedTargetMtbColt.setMtbColr(null);
|
||||
|
||||
var insertUDSRowRequestDto = new InsertUDSRowRequestDTO()
|
||||
.setSourceMtbColr(clonedSourceMtbColr)
|
||||
.setCodMart(pickingObjectDTO.getMtbAart().getCodMart())
|
||||
@@ -1553,7 +1567,7 @@ public class SpedizioneViewModel {
|
||||
.setQtaCnf(qtaCnf)
|
||||
.setNumCnf(numCnf)
|
||||
.setPartitaMag(partitaMag)
|
||||
.setTargetMtbColt(clonedTargetMtbColt);
|
||||
.setTargetMtbColt(mCurrentMtbColt.clone(false));
|
||||
|
||||
if (dataScad != null)
|
||||
insertUDSRowRequestDto
|
||||
@@ -1568,6 +1582,7 @@ public class SpedizioneViewModel {
|
||||
createdMtbColr = this.mColliScaricoRESTConsumer.insertUDSRowSynchronized(insertUDSRowRequestDto);
|
||||
} catch (Exception ex) {
|
||||
this.sendError(ex);
|
||||
return;
|
||||
}
|
||||
|
||||
MtbColr finalCreatedMtbColr = createdMtbColr;
|
||||
@@ -2299,7 +2314,7 @@ public class SpedizioneViewModel {
|
||||
|
||||
void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete);
|
||||
|
||||
void onBatchLotSelectionRequest(List<MtbPartitaMag> availableBatchLots, RunnableArgs<MtbPartitaMag> onComplete);
|
||||
void onBatchLotSelectionRequest(List<PartitaCommessaDTO> availableBatchLotsCodJcoms, RunnableArgs<PartitaCommessaDTO> onComplete);
|
||||
|
||||
PrintOrderCloseDTO onCloseOrderPrintRequest();
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupHeaderBinding;
|
||||
import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupItemBinding;
|
||||
@@ -129,9 +130,17 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
|
||||
}
|
||||
|
||||
holder.mBinding.deactivatedOverBg.setVisibility(!pickingObjectDTO.isActive() ? View.VISIBLE : View.GONE);
|
||||
|
||||
holder.mBinding.getRoot().setAlpha(!pickingObjectDTO.isActive() ? 0.8f : 1);
|
||||
holder.mBinding.badge1.setBackground(ResourcesCompat.getDrawable(mContext.getResources(), !pickingObjectDTO.isActive() ? R.drawable.badge_round_corner : R.drawable.badge1_round_corner, null));
|
||||
holder.mBinding.badge1.setTextColor(ResourcesCompat.getColor(mContext.getResources(), !pickingObjectDTO.isActive() ? R.color.gray_600 : R.color.white, null));
|
||||
|
||||
holder.mBinding.badge1.setBackgroundTintList(UtilityResources.getColorStateListFromAttr(mContext,
|
||||
!pickingObjectDTO.isActive() ? R.color.gray_400 : com.google.android.material.R.attr.colorPrimaryContainer));
|
||||
|
||||
if (!pickingObjectDTO.isActive())
|
||||
holder.mBinding.badge1.setTextColor(ResourcesCompat.getColor(mContext.getResources(), R.color.gray_600, null));
|
||||
else
|
||||
holder.mBinding.badge1.setTextColor(UtilityResources.getColorStateListFromAttr(mContext, com.google.android.material.R.attr.colorOnPrimaryContainer));
|
||||
|
||||
holder.mBinding.qtaEvasa.setTextColor(ResourcesCompat.getColor(mContext.getResources(), !pickingObjectDTO.isActive() ? R.color.gray_600 : R.color.green_700, null));
|
||||
|
||||
holder.mBinding.descrizione.setText(pickingObjectDTO.getDescrizione());
|
||||
@@ -163,7 +172,8 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
|
||||
|
||||
var mtbUntMis = pickingObjectDTO.getOriginalModel().getMtbAart().getMtbUntMis().get(0);
|
||||
if (mtbUntMis.isFlagDig()) cifreDec = 0;
|
||||
else cifreDec = Math.min(mtbUntMis.getCifreDec().intValue(), CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS);
|
||||
else
|
||||
cifreDec = Math.min(mtbUntMis.getCifreDec().intValue(), CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS);
|
||||
}
|
||||
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaEvasa(), cifreDec));
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.choose_batch_lot.choose_art_from_lista_mtb_colr;
|
||||
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.choose_batch_lot.choose_art_from_lista_mtb_colr;
|
||||
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
@@ -11,15 +11,15 @@ import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
|
||||
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
||||
import it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO;
|
||||
import it.integry.integrywmsnative.databinding.DialogChooseBatchLotItemModelBinding;
|
||||
|
||||
public class DialogChooseBatchLotAdapter extends RecyclerView.Adapter<DialogChooseBatchLotAdapter.ViewHolder> {
|
||||
|
||||
protected Context mContext;
|
||||
|
||||
private final List<MtbPartitaMag> mDataset;
|
||||
private final IRecyclerItemClicked<MtbPartitaMag> mOnItemClickListener;
|
||||
private final List<PartitaCommessaDTO> mDataset;
|
||||
private final IRecyclerItemClicked<PartitaCommessaDTO> mOnItemClickListener;
|
||||
|
||||
|
||||
public static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
@@ -31,13 +31,13 @@ public class DialogChooseBatchLotAdapter extends RecyclerView.Adapter<DialogChoo
|
||||
mViewDataBinding = v;
|
||||
}
|
||||
|
||||
public void bind(MtbPartitaMag mtbPartitaMag) {
|
||||
mViewDataBinding.setMtbPartitaMag(mtbPartitaMag);
|
||||
public void bind(PartitaCommessaDTO partitaCommessa) {
|
||||
mViewDataBinding.setInputData(partitaCommessa);
|
||||
mViewDataBinding.executePendingBindings();
|
||||
}
|
||||
}
|
||||
|
||||
public DialogChooseBatchLotAdapter(List<MtbPartitaMag> myDataset, IRecyclerItemClicked<MtbPartitaMag> onItemClickListener) {
|
||||
public DialogChooseBatchLotAdapter(List<PartitaCommessaDTO> myDataset, IRecyclerItemClicked<PartitaCommessaDTO> onItemClickListener) {
|
||||
mDataset = myDataset;
|
||||
mOnItemClickListener = onItemClickListener;
|
||||
}
|
||||
@@ -51,7 +51,7 @@ public class DialogChooseBatchLotAdapter extends RecyclerView.Adapter<DialogChoo
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(DialogChooseBatchLotAdapter.ViewHolder holder, int position) {
|
||||
MtbPartitaMag item = mDataset.get(position);
|
||||
PartitaCommessaDTO item = mDataset.get(position);
|
||||
holder.bind(item);
|
||||
|
||||
holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
|
||||
|
||||
@@ -22,7 +22,7 @@ import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
|
||||
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
||||
import it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO;
|
||||
import it.integry.integrywmsnative.databinding.DialogChooseBatchLotBinding;
|
||||
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
||||
|
||||
@@ -31,22 +31,22 @@ public class DialogChooseBatchLotView extends BaseDialogFragment {
|
||||
@Inject
|
||||
DialogChooseBatchLotViewModel mViewModel;
|
||||
|
||||
private final List<MtbPartitaMag> mAvailableBatchLot;
|
||||
private final RunnableArgs<MtbPartitaMag> mOnItemSelected;
|
||||
private final List<PartitaCommessaDTO> mAvailableBatchLotCodJcom;
|
||||
private final RunnableArgs<PartitaCommessaDTO> mOnItemSelected;
|
||||
|
||||
private Context mContext;
|
||||
private DialogChooseBatchLotBinding mBindings;
|
||||
|
||||
private MtbPartitaMag mSelectedItem;
|
||||
private PartitaCommessaDTO mSelectedItem;
|
||||
|
||||
public static DialogChooseBatchLotView newInstance(List<MtbPartitaMag> availableBatchLot, RunnableArgs<MtbPartitaMag> onItemSelected) {
|
||||
return new DialogChooseBatchLotView(availableBatchLot, onItemSelected);
|
||||
public static DialogChooseBatchLotView newInstance(List<PartitaCommessaDTO> availableBatchLotCodJcom, RunnableArgs<PartitaCommessaDTO> onItemSelected) {
|
||||
return new DialogChooseBatchLotView(availableBatchLotCodJcom, onItemSelected);
|
||||
}
|
||||
|
||||
private DialogChooseBatchLotView(List<MtbPartitaMag> availableBatchLot, RunnableArgs<MtbPartitaMag> onItemSelected) {
|
||||
private DialogChooseBatchLotView(List<PartitaCommessaDTO> availableBatchLotCodJcom, RunnableArgs<PartitaCommessaDTO> onItemSelected) {
|
||||
super();
|
||||
|
||||
this.mAvailableBatchLot = availableBatchLot;
|
||||
this.mAvailableBatchLotCodJcom = availableBatchLotCodJcom;
|
||||
this.mOnItemSelected = onItemSelected;
|
||||
}
|
||||
|
||||
@@ -103,11 +103,11 @@ public class DialogChooseBatchLotView extends BaseDialogFragment {
|
||||
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
|
||||
mBindings.mainList.addItemDecoration(itemDecorator);
|
||||
|
||||
DialogChooseBatchLotAdapter mAdapter = new DialogChooseBatchLotAdapter(mAvailableBatchLot, onItemClicked);
|
||||
DialogChooseBatchLotAdapter mAdapter = new DialogChooseBatchLotAdapter(mAvailableBatchLotCodJcom, onItemClicked);
|
||||
mBindings.mainList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
private final IRecyclerItemClicked<MtbPartitaMag> onItemClicked = (item, position) -> {
|
||||
private final IRecyclerItemClicked<PartitaCommessaDTO> onItemClicked = (item, position) -> {
|
||||
mSelectedItem = item;
|
||||
dismiss();
|
||||
};
|
||||
|
||||
@@ -31,7 +31,7 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.databinding.DialogScanArtBinding;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.choose_art_from_lista_mtb_colr.DialogChooseArtFromListaMtbColrView;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.DialogChooseArtFromListaMtbColrView;
|
||||
|
||||
public class DialogScanArtView extends BaseDialogFragment implements DialogScanArtViewModel.Listener {
|
||||
|
||||
|
||||
@@ -41,13 +41,14 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/select_batch_lot" />
|
||||
android:text="@string/select_batch_lot_dialog_title" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/main_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp" />
|
||||
android:layout_marginTop="16dp"
|
||||
tools:listitem="@layout/dialog_choose_batch_lot_item_model"/>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
|
||||
@@ -12,77 +12,79 @@
|
||||
<import type="android.view.View" />
|
||||
|
||||
<variable
|
||||
name="mtbPartitaMag"
|
||||
type="it.integry.integrywmsnative.core.model.MtbPartitaMag" />
|
||||
name="inputData"
|
||||
type="it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO" />
|
||||
</data>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp">
|
||||
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
<TextView
|
||||
android:id="@+id/partita_mag"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:text="@{UtilityString.isNull(inputData.partitaMag, "Nessun lotto")}"
|
||||
style="@style/TextAppearance.Material3.LabelLarge"
|
||||
android:textColor="?colorPrimary"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:text="Nessun lotto" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cod_jcom"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{inputData.codJcom}"
|
||||
style="@style/TextAppearance.Material3.LabelLarge"
|
||||
android:background="@drawable/badge_round_corner"
|
||||
android:backgroundTint="?colorPrimaryContainer"
|
||||
android:textColor="?colorOnPrimaryContainer"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
app:visibilityWhenNotNull="@{inputData.codJcom}"
|
||||
tools:text="Nessuna commessa" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/data_scad_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Scadenza: "
|
||||
android:layout_marginEnd="4dp"
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/partita_mag"
|
||||
app:visibilityWhenNotNull="@{inputData.dataScad}" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/data_scad"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{UtilityDate.formatDate(inputData.dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
app:layout_constraintBaseline_toBaselineOf="@id/data_scad_label"
|
||||
app:layout_constraintStart_toEndOf="@id/data_scad_label"
|
||||
app:visibilityWhenNotNull="@{inputData.dataScad}"
|
||||
tools:text="02/05/2025" />
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:text="@{UtilityString.isNull(inputData.descrizione, "Nessuna descrizione")}"
|
||||
android:textColor="@android:color/black"
|
||||
style="@style/TextAppearance.Material3.BodyLarge"
|
||||
app:layout_constraintTop_toBottomOf="@id/data_scad_label"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
tools:text="Descrizione lunga articolo" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{UtilityString.isNull(mtbPartitaMag.partitaMag, "Nessun lotto")}"
|
||||
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||
android:textColor="?colorPrimary"
|
||||
android:textStyle="bold"
|
||||
tools:text="PARTITA MAG" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Data scad: "
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_toStartOf="@id/data_scad"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:visibility="@{mtbPartitaMag.dataScad == null ? View.GONE : View.VISIBLE}" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/data_scad"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@{UtilityDate.formatDate(mtbPartitaMag.dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:visibility="@{mtbPartitaMag.dataScad == null ? View.GONE : View.VISIBLE}"
|
||||
tools:text="Data scad" />
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:text="@{UtilityString.isNull(mtbPartitaMag.descrizione, "Nessuna descrizione")}"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="16sp"
|
||||
tools:text="Descrizione lunga articolo" />
|
||||
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</layout>
|
||||
@@ -25,8 +25,9 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="BADGE 1"
|
||||
tools:backgroundTint="?attr/colorPrimaryContainer"
|
||||
tools:textColor="?attr/colorOnPrimaryContainer"
|
||||
android:background="@drawable/badge_round_corner"
|
||||
android:textColor="@android:color/white"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingBottom="2dp"
|
||||
android:paddingLeft="6dp"
|
||||
@@ -41,14 +42,6 @@
|
||||
android:orientation="horizontal"
|
||||
android:gravity="end">
|
||||
|
||||
<!--<TextView-->
|
||||
<!--android:layout_width="wrap_content"-->
|
||||
<!--android:layout_height="wrap_content"-->
|
||||
<!--android:textStyle="bold"-->
|
||||
<!--android:textColor="@color/green_700"-->
|
||||
<!--style="@android:style/TextAppearance.Medium"-->
|
||||
<!--android:text="@string/dispatched"/>-->
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/qta_evasa"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -358,7 +358,7 @@
|
||||
<string name="manufacture">Produzione</string>
|
||||
<string name="production">Produzione</string>
|
||||
<string name="production_line">Linea di produzione</string>
|
||||
<string name="select_batch_lot">Seleziona un lotto</string>
|
||||
<string name="select_batch_lot_dialog_title">Seleziona un lotto/commessa</string>
|
||||
<string name="internal_handling">Movimentazione interna</string>
|
||||
<string name="prod_ordine_produzione_title_fragment">Accettazione da ordine</string>
|
||||
<string name="prod_ordine_lavorazione_title_fragment">Picking da ordine</string>
|
||||
|
||||
@@ -361,7 +361,7 @@
|
||||
<string name="manufacture">Manufacture</string>
|
||||
<string name="production">Production</string>
|
||||
<string name="production_line">Production line</string>
|
||||
<string name="select_batch_lot">Select a batch lot</string>
|
||||
<string name="select_batch_lot_dialog_title">Select a batch lot/job</string>
|
||||
<string name="internal_handling">Internal handling</string>
|
||||
<string name="prod_ordine_produzione_title_fragment">Production picking</string>
|
||||
<string name="prod_ordine_lavorazione_title_fragment">Manufacture picking</string>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdk 35
|
||||
compileSdk 36
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
@@ -38,5 +38,5 @@ configurations {
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.1'
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
buildscript {
|
||||
ext {
|
||||
kotlin_version = '2.1.0'
|
||||
agp_version = '8.11.1'
|
||||
agp_version = '8.12.2'
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdk 35
|
||||
compileSdk 36
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdk 35
|
||||
targetSdk 36
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
@@ -41,6 +41,6 @@ dependencies {
|
||||
// implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||
|
||||
implementation project(":honeywellsdk")
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.1'
|
||||
implementation project(path: ':barcode_base_android_library')
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdk 35
|
||||
compileSdk 36
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdk 35
|
||||
targetSdk 36
|
||||
|
||||
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles 'consumer-rules.pro'
|
||||
@@ -40,6 +40,6 @@ configurations {
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.1'
|
||||
implementation project(':barcode_base_android_library')
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdk 35
|
||||
compileSdk 36
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdk 35
|
||||
targetSdk 36
|
||||
|
||||
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@@ -38,6 +38,6 @@ configurations {
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.1'
|
||||
implementation project(':barcode_base_android_library')
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdk 35
|
||||
compileSdk 36
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdk 35
|
||||
targetSdk 36
|
||||
|
||||
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@@ -40,7 +40,7 @@ dependencies {
|
||||
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.7.1'
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
implementation project(path: ':barcode_base_android_library')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user